/* css/blocks/182-lead-block.css */
/* =================== lead-block.css =================== */
/* lead-block — final CTA "Нужна консультация по проекту?". Used on /about,
 * /contacts, /delivery as the closing conversion block. Premium two-column
 * card: editorial copy on the left, phone-input + manager CTA + Telegram
 * pill on the right. Ink-tinted card so it stands out from the cream page
 * background. Strictly .lead-block / .lead-block__*. */

.lead-block {
  padding: clamp(44px, 5vw, 72px) 0;
}

.lead-block__card {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: clamp(28px, 3vw, 48px);
  align-items: center;
  padding: clamp(36px, 3.6vw, 56px) clamp(28px, 3.2vw, 64px);
  background:
    radial-gradient(900px 540px at 0% 0%, rgba(var(--hc-gold-rgb), 0.18), transparent 58%),
    radial-gradient(700px 460px at 100% 100%, rgba(184, 154, 111, 0.12), transparent 62%),
    linear-gradient(160deg, #1f1a16 0%, #14110e 100%);
  border: 0.5px solid rgba(var(--hc-gold-rgb), 0.32);
  border-radius: clamp(20px, 1.8vw, 28px);
  box-shadow:
    0 2px 4px rgba(0, 0, 0, 0.14),
    0 36px 80px -26px rgba(20, 14, 8, 0.55),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
  overflow: hidden;
  isolation: isolate;
  color: rgba(252, 248, 240, 0.92);
}
.lead-block__card::before {
  content: "";
  position: absolute;
  top: 0;
  left: clamp(28px, 3.2vw, 64px);
  right: clamp(28px, 3.2vw, 64px);
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--hc-gold-1, var(--hc-gold, var(--hc-gold))) 30%, var(--hc-gold-2, #b89a6f) 50%, var(--hc-gold-1, var(--hc-gold, var(--hc-gold))) 70%, transparent);
  opacity: 0.72;
  pointer-events: none;
}
.lead-block__card::after {
  content: "";
  position: absolute;
  bottom: -50%;
  right: -10%;
  width: 60%;
  height: 200%;
  background: radial-gradient(circle, rgba(var(--hc-gold-rgb), 0.10), transparent 60%);
  pointer-events: none;
  z-index: 0;
}

.lead-block__body {
  position: relative;
  z-index: 1;
  min-width: 0;
}

.lead-block__eyebrow {
  display: inline-block;
  padding: 6px 12px;
  margin-bottom: 18px;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--hc-gold-1, var(--hc-gold, var(--hc-gold)));
  background: rgba(var(--hc-gold-rgb), 0.08);
  border: 0.5px solid rgba(var(--hc-gold-rgb), 0.28);
  border-radius: 999px;
}

.lead-block__title {
  margin: 0 0 16px;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(28px, 3.4vw, 44px);
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -0.018em;
  color: var(--hc-paper);
}

.lead-block__desc {
  margin: 0;
  max-width: 48ch;
  font-size: clamp(14px, 1.05vw, 16px);
  line-height: 1.6;
  color: rgba(252, 248, 240, 0.68);
}

.lead-block__ctas {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
}

.lead-block__form {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}

/* `input.hc-input` in 101-hc-input.css carries a tag in the selector, so it
   outranks a plain class no matter which file lands later — the dark card
   kept the light .hc-input background while only `color` came from here.
   Match that weight to win back the component's own field. */
input.lead-block__phone {
  width: 100%;
  height: 56px;
  padding: 16px 20px;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 15px;
  letter-spacing: 0.02em;
  color: var(--hc-paper);
  background: rgba(255, 252, 247, 0.06);
  border: 0.5px solid rgba(var(--hc-gold-rgb), 0.32);
  border-radius: 14px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
  transition: border-color 0.2s ease, background 0.2s ease, box-shadow 0.2s ease;
}
input.lead-block__phone::placeholder {
  /* was 0.36 — a hint that faint is unreadable on the dark card */
  color: rgba(252, 248, 240, 0.62);
}
input.lead-block__phone:focus {
  outline: none;
  border-color: var(--hc-gold-1, var(--hc-gold, var(--hc-gold)));
  background: rgba(255, 252, 247, 0.10);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 0 0 3px rgba(var(--hc-gold-rgb), 0.22);
}

.lead-block__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  height: 56px;
  padding: 0 24px;
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 14.5px;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: #2a2018;
  background: linear-gradient(135deg, #e8c896 0%, #c9a878 100%);
  border: 0.5px solid rgba(var(--hc-gold-rgb), 0.55);
  border-radius: 14px;
  cursor: pointer;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.32),
    0 12px 28px -10px rgba(var(--hc-gold-rgb), 0.45),
    0 1px 2px rgba(0, 0, 0, 0.14);
  transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;
}
.lead-block__btn:hover {
  transform: translateY(-2px);
  background: linear-gradient(135deg, #f0d4a8 0%, var(--hc-gold, var(--hc-gold)) 100%);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.45),
    0 18px 38px -10px rgba(var(--hc-gold-rgb), 0.60),
    0 2px 4px rgba(0, 0, 0, 0.18);
}

/* The consent line sits on the same dark card. Left to the browser default
   the box rendered as a bright system square with body-coloured text beside
   it — the one unstyled control in the block. */
.lead-block__consent {
  display: flex;
  align-items: center;
  gap: 10px;
  color: rgba(252, 248, 240, 0.72);
}
.lead-block__consent a {
  color: var(--hc-gold-1, var(--hc-gold));
  text-underline-offset: 3px;
}
.lead-block__check {
  flex: none;
  width: 18px;
  height: 18px;
  margin: 0;
  accent-color: var(--hc-gold-1, var(--hc-gold));
}

@media (max-width: 920px) {
  .lead-block__card {
    grid-template-columns: 1fr;
    gap: 28px;
  }
}

/* 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;
  /* `1fr` here sized *every* row to the tallest row in the whole grid, not just
     the cards within one row. Cards look the same either way — align-items
     below already stretches them to their own row — but an in-grid banner,
     260px tall in a 490px row, left a 230px hole under itself. `auto` gives
     each row its own height and stretch still equalises the cards inside it. */
  grid-auto-rows: auto;
  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)); } }
/* The catalog used to fall to a single column below 480px. Two columns hold on
   a 320px screen and let a visitor compare decors by scrolling instead of by
   memory; the row gap tightens to pay for it. */
@media (max-width: 479px) { .page-catalog #cat-results .hc-pgrid { gap: 10px; } }

/* List view toggle. Single column → rows must be content-height. (The base
   used to be `grid-auto-rows: 1fr`, which stretched each row to an equal slice
   of the tall results column and blew every card up into an empty panel; the
   base is `auto` now, so this repeats it only to stay explicit.) */
.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%;
  transition: transform 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);
}

.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;
}

.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:
    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%;
  transition: transform 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);
}

.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;
}

/* The base pill is an inline-flex box centred with justify-content, and
   text-overflow is ignored on a flex container — a long property value was cut
   mid-word on BOTH sides ("ilent System, петли SlideOn, Петля для складны").
   Fall back to inline-block + left-aligned text so the ellipsis actually
   renders; line-height keeps the 23px pill height that flex centring gave. */
.pcard[data-pcard-variant="a"] .pcard-a__props .pcard-c__pill {
  flex: 0 1 auto;
  display: inline-block;
  max-width: 100%;
  line-height: 13px;
  text-align: left;
  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%;
  transition: transform 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);
}

.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%;
  transition: transform 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);
}

.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;
}

.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%;
  transition: transform 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);
}

.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; }
/* One treatment for every card. The fit used to be chosen by product type:
   texture swatches filled the tile while hardware, furniture, finishes and
   tools were contained, padded and scaled up to compensate for supplier
   packshots with white margins. Side by side in the same rail — and they always
   are, these rails mix types — that reads as two different card designs, and
   the type is the wrong signal anyway: a photograph of a fitted kitchen is
   filed under "furniture" and got packshot treatment. */
.pcard-sc__img { object-fit: cover; transform: scale(1); }
.pcard-sc:hover .pcard-sc__ph { transform: scale(1.04); filter: brightness(1.03); }
.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, minmax(18px, auto));
  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: normal;
  overflow-wrap: anywhere;
  line-height: 1.25;
}
.pcard-row__specs i b {
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.25;
  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;
  /* 90px fitted «В НАЛИЧИИ» and nothing longer: «НАЛИЧИЕ ПОДТВЕРЖДЕНО» and
     «СНЯТ С ПРОИЗВОДСТВА» are twice that, and with nowrap they ran straight
     out of the column and over the price. Wider column, and the badge is
     allowed to wrap instead of escaping. */
  grid-template-columns: 112px minmax(0, 1fr) 38px;
  align-items: center;
  gap: 12px;
  min-width: 0;
}
.pcard-row__st {
  min-width: 0;
  max-width: 100%;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.04em;
  line-height: 1.25;
  text-transform: uppercase;
  text-align: center;
  padding: 4px 9px;
  border-radius: var(--hc-r-xs);
  background: var(--hc-success-soft);
  color: var(--hc-accent-dark);
  overflow: hidden;
  overflow-wrap: anywhere;
}
.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;
}
/* A 230px minimum fits exactly once in the 358px a phone leaves, so the whole
   catalogue came down one card per screen: a 358x358 photograph, a name, and
   scroll again for the next. This rule carries two classes and quietly beat the
   two-column default in hc-pgrid.css, which is why raising that default did
   nothing here. Two columns, and the gap comes down to pay for them. */
@media (max-width: 560px) {
  .page-catalog--pro .hc-pgrid--cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
}
/* 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/306-product-media-outline.css */
/* Real light/solid decors can look like empty placeholders on warm cards, so a
   faint contour keeps white HPL, paint and swatch images readable.
   It used to be drawn 8-20px INSIDE the media box. On a flat swatch that is a
   frame; on a photograph — a kitchen interior, a packshot — it is a rounded
   rectangle ruled across the picture, which is what it looked like. It now
   traces the edge of the tile, where a frame belongs. */
.pcard-a__media.is-has-img::after,
.pcard-b__media.is-has-img::after,
.pcard-c__media.pcard-media--has-img::after,
.pcard-d__media.is-has-img::after,
.pcard-ind__media:has(.pcard-ind__img)::after,
.pcard-mini__media:has(.pcard-mini__img)::after,
.pcard-sc__media:has(.pcard-sc__img)::after,
.pcard-row__thumb:has(.pcard-row__img)::after,
.hc-pdp-gallery__thumb:has(img)::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  border: 1px solid rgba(74, 58, 38, 0.12);
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.34);
}

/* css/blocks/307-pcard-stability.css */
/* Stable product interactions.
 *
 * Product tiles are reading surfaces, not floating controls.  Moving the
 * card, image, chip or CTA on hover makes the grid shimmer and causes nearby
 * controls to jump under the pointer.  Keep the premium colour/shadow states
 * from the component modules, but pin their geometry.
 */
.pcard[data-pcard-variant="a"]:hover,
.pcard[data-pcard-variant="a"]:focus-within,
.pcard[data-pcard-variant="b"]:hover,
.pcard[data-pcard-variant="b"]:focus-within,
.pcard[data-pcard-variant="c"]:hover .pcard-shell,
.pcard[data-pcard-variant="c"]:focus-within .pcard-shell,
.pcard[data-pcard-variant="d"]:hover,
.pcard[data-pcard-variant="d"]:focus-within,
.pcard[data-pcard-variant="mini"]:hover,
.pcard[data-pcard-variant="mini"]:focus-within,
.pcard-ind:hover { transform: none; }

.pcard[data-pcard-variant="a"]:hover .pcard-a__media img,
.pcard[data-pcard-variant="a"]:focus-within .pcard-a__media img,
.pcard[data-pcard-variant="b"]:hover .pcard-b__media img,
.pcard[data-pcard-variant="b"]:focus-within .pcard-b__media img,
.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,
.pcard[data-pcard-variant="d"]:hover .pcard-d__media img,
.pcard[data-pcard-variant="d"]:focus-within .pcard-d__media img,
.pcard[data-pcard-variant="mini"]:hover .pcard-mini__img,
.pcard[data-pcard-variant="mini"]:focus-within .pcard-mini__img,
.pcard--type-veneer_panel:hover .pcard-a__media picture img { transform: none; }

/* Packshots keep their static compensation for white inner margins; only the
 * hover zoom is removed. */
.pcard-sc:hover .pcard-sc__ph { transform: none; }
.pcard-sc:hover .pcard-sc__img { transform: scale(1); }

/* The vertical action rail used to slide two pixels on hover.  That is enough
 * to make an icon evade a pointer on small cards, so retain the opacity state
 * only. */
.pcard[data-pcard-variant="c"]:hover .pcard-overlay__actions,
.pcard[data-pcard-variant="c"]:focus-within .pcard-overlay__actions { transform: none; }

.pcard-act:hover,
.pcard-c__pill:hover,
.pcard[data-pcard-variant="a"] .pcard-a__cta:hover,
.pcard[data-pcard-variant="b"] .pcard-b__prop:hover,
.pcard[data-pcard-variant="c"] .pcard-c__cta:hover,
.pcard[data-pcard-variant="d"] .pcard-d__cta:hover,
.pcard[data-pcard-variant="mini"] .pcard-mini__cart:hover,
.pcard-ind__cart:hover,
.pcard-sc__cart:hover,
.pcard-sc__act:hover,
.pcard-row__add:hover,
.pcard-type-actions__btn:hover,
.pcard-type-actions__btn:focus-visible { transform: none; }

.pcard-sc__quick { transform: none; transition: opacity .28s ease, background .15s ease; }
.pcard-sc__quick:focus-visible,
.pcard-sc:hover .pcard-sc__quick { transform: none; }
.pcard-sc__acts,
.pcard-sc__props { transform: none; }
.pcard-sc__media:hover .pcard-sc__acts,
.pcard-sc__acts:focus-within,
.pcard-sc__media:hover .pcard-sc__props { transform: none; }

/* ── Narrow cards ───────────────────────────────────────────────────────────
   The catalogue keeps two columns on a phone, which leaves each card about
   175px of body width. At that size the type badge ("ЛИСТОВЫЕ МАТЕРИАЛЫ") and
   the article number run past the card edge, the price and the stock chip
   fight over one nowrap row, and the price breaks after the digits leaving a
   lone "₽" on its own line. Give the card a narrow reading: identity and price
   stay, the redundant taxonomy goes — the visitor is standing in that
   category already. */
@media (max-width: 479px) {
  /* The variant modules set these with `.pcard[data-pcard-variant=...]`, which
     outranks a two-class selector — match their specificity to win. */
  .hc-pgrid .pcard[data-pcard-variant] .pcard-type-head,
  .hc-pgrid .pcard[data-pcard-variant] .pcard-d__top-row,
  .hc-pgrid .pcard[data-pcard-variant] .pcard-a__sku,
  .hc-pgrid .pcard[data-pcard-variant] .pcard-d__sku {
    display: none;
  }
  .hc-pgrid .pcard[data-pcard-variant] .pcard-a__price,
  .hc-pgrid .pcard[data-pcard-variant] .pcard-a__price-old,
  .hc-pgrid .pcard[data-pcard-variant] .pcard-d__price {
    white-space: nowrap;
    font-size: 19px;
  }
  .hc-pgrid .pcard[data-pcard-variant] .pcard-a__row {
    flex-wrap: wrap;
  }
  .hc-pgrid .pcard[data-pcard-variant] .pcard-a__stock {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}

/* 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(1100px, 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(300px, 0.78fr) minmax(0, 1fr);
  gap: clamp(20px, 2.4vw, 34px);
  max-height: inherit;
  padding: clamp(22px, 2.8vw, 42px);
}

.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: cover;
  object-position: center;
}

.hc-qv__gallery picture {
  display: block;
  width: 100%;
  height: 100%;
}

.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__title {
  margin: 0;
  color: var(--sf-ink, #1a1714);
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(28px, 2.35vw, 40px);
  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-red, #c7442e);
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(32px, 3vw, 46px);
  font-weight: 500;
  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__desc {
  margin: 0;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.68));
  font-size: 15px;
  line-height: 1.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;
}

.hc-qv__actions {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 12px;
  align-items: stretch;
}

.hc-qv__secondary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
}

.hc-qv__secondary .hc-btn {
  min-width: 0;
}

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

.hc-qv__oneclick {
  display: grid;
  gap: 10px;
  padding: 14px;
  border-radius: 16px;
  border: 1px solid rgba(54, 45, 34, 0.12);
  background: rgba(255, 255, 255, 0.74);
}

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

@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 {
    --hc-qv-pad: 18px;
    grid-template-columns: 1fr;
    gap: 20px;
    padding: var(--hc-qv-pad);
    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__specs {
    order: 7;
  }

  .hc-qv__assurance {
    order: 5;
  }

  /* On a phone the sheet fills the screen and looks complete, while the only
     action sits below the fold: measured on an iPhone 13 viewport of 664px,
     "В корзину" was at 758px. It was reachable — by scrolling inside a sheet
     that gives no hint it scrolls — so from the customer's seat the quick order
     button did nothing. The row is pinned to the bottom and the card scrolls
     behind it. Only the primary row: pinning the one-click and details buttons
     too took more than half the screen and hid the product name, so those were
     lifted out of this block in the template. */
  .hc-qv__buy {
    order: 8;
    position: sticky;
    bottom: calc(-1 * var(--hc-qv-pad, 18px));
    z-index: 3;
    margin: 0 calc(-1 * var(--hc-qv-pad, 18px));
    padding: 10px var(--hc-qv-pad, 18px) calc(10px + env(safe-area-inset-bottom, 0px));
    background: var(--hc-paper, #fffaf2);
    border-top: 1px solid rgba(224, 210, 190, 0.9);
    box-shadow: 0 -14px 26px -22px rgba(26, 23, 20, 0.5);
  }

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

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

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

/* 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;
}
.hc-qty__btn {
  width: 36px;
  height: 36px;
  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/057-hc-cat-filter-aside.css */
/* =================== hc-cat-filter-aside.css =================== */
/* hc-cat-filter-aside — обёртка вокруг формы фильтров (.hc-cat-filters)
 * на странице каталога /shop.
 *
 * Desktop (>1024px): sticky-aside в левой колонке .hc-cat-page.
 * Mobile/tablet (<=1024px): fixed slide-in drawer слева, открывается
 * по клику на кнопку "ОТКРЫТЬ ФИЛЬТР" (Alpine `filtersOpen` → `.is-open`).
 *
 * Strict isolation: .hc-cat-filter-aside / .hc-cat-filter-aside__*.
 * Содержимое (.hc-cat-filters) живёт отдельным block-файлом. */

/* The desktop sidebar used to be sticky with its own scrollbar: measured on
   /catalog/ldsp, 1800px of filters inside an 808px box. A sticky element taller
   than the viewport never scrolls up, so its lower half was reachable only by
   finding the inner scrollbar — a scroll trap, and the mouse wheel fought over
   which of the two scrollers should move. The column now flows with the page,
   which is the only scroller, and the apply button ends the form instead of
   floating over the facets. */
.hc-cat-filter-aside {
  align-self: start;
  z-index: 1;
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
}

/* Все дочерние элементы внутри aside никогда не превышают его ширину. */
.hc-cat-filter-aside > *,
.hc-cat-filter-aside *:not(svg):not(path):not(g):not(rect):not(circle):not(line) {
  max-width: 100%;
  box-sizing: border-box;
}

/* Длинные слова/SKU/категории переносятся, не вылезают за edge. */
.hc-cat-filter-aside a,
.hc-cat-filter-aside span,
.hc-cat-filter-aside label,
.hc-cat-filter-aside button,
.hc-cat-filter-aside h4,
.hc-cat-filter-aside p {
  word-break: break-word;
  overflow-wrap: anywhere;
  hyphens: auto;
}

@media (max-width: 1024px) {
  .hc-cat-filter-aside {
    position: fixed;
    inset: 0 auto 0 0;
    width: min(360px, 92vw);
    max-width: 92vw;
    max-height: 100vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding: 0;
    background: var(--hc-paper, #ffffff);
    box-shadow: 0 30px 80px -30px rgba(27, 20, 13, 0.5);
    z-index: var(--hc-z-drawer, 80);
    transform: translateX(-100%);
    transition: transform 0.25s cubic-bezier(0.22, 0.61, 0.36, 1);
  }
  .hc-cat-filter-aside.is-open {
    transform: translateX(0);
  }
  /* Inner .hc-cat-filters в drawer-mode уже имеет padding 16px — этого достаточно */
}

/* css/blocks/058-hc-cat-filter-backdrop.css */
/* =================== hc-cat-filter-backdrop.css =================== */
/* hc-cat-filter-backdrop — full-screen dimmer behind the catalog filter
   drawer. Visible only on ≤1024px while the drawer is open. Display is
   toggled by Alpine `x-show="filtersOpen"`; CSS just provides the visual
   surface and ensures the layer stacks below the drawer. */

.hc-cat-filter-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  z-index: calc(var(--hc-z-drawer, 80) - 1);
  background: rgba(27, 20, 13, 0.5);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

@media (max-width: 1024px) {
  .hc-cat-filter-backdrop {
    display: block;
  }
}

/* css/blocks/061-hc-cat-filters.css */
/* =================== hc-cat-filters.css =================== */
/* hc-cat-filters — форма фильтров на /shop. Размещается внутри
 * .hc-cat-filter-aside (desktop sticky / mobile drawer — отдельный block).
 * Только normal flow, без negative margins, без overflow-hacks.
 * Strict isolation: .hc-cat-filters / .hc-cat-filters__*. */

/* ─── root ─── */
.hc-cat-filters {
  display: block;
  width: 100%;
  max-width: 100%;
  padding: 16px;
  box-sizing: border-box;
  background: var(--hc-paper, #ffffff);
  border: 0.5px solid rgba(141, 109, 71, 0.16);
  border-radius: 14px;
}
.hc-cat-filters::before {
  content: "";
  display: block;
  width: 28px;
  height: 2px;
  margin: 0 0 12px;
  background: linear-gradient(90deg, var(--hc-gold-1, var(--hc-gold)), var(--hc-accent, var(--hc-accent)));
  border-radius: 1px;
}
.hc-cat-filters__form {
  display: grid;
  gap: 14px;
  width: 100%;
  box-sizing: border-box;
}

/* ─── head ─── */
.hc-cat-filters__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  padding-bottom: 12px;
  border-bottom: 0.5px solid rgba(141, 109, 71, 0.20);
}
.hc-cat-filters__head h4 {
  margin: 0;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: 18px;
  font-weight: 500;
  line-height: 1;
  color: var(--hc-ink, #1a1714);
}
/* "Закрыть" closes the mobile drawer. On desktop the aside is permanently in
   the page, so the button had nothing to close and only added noise. */
.hc-cat-filters__close {
  display: none;
}
@media (max-width: 1024px) {
  .hc-cat-filters__close {
    display: inline-flex;
  }
}

/* ─── section ─── */
.hc-cat-filters__section {
  padding: 8px 0 12px;
  border-bottom: 0.5px dashed rgba(141, 109, 71, 0.20);
}
.hc-cat-filters__section:last-of-type {
  border-bottom: 0;
  padding-bottom: 0;
}
.hc-cat-filters__section-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}

/* v8.6 — collapsible-вариант (<details>) для facet'ов с >5 значениями. */
.hc-cat-filters__section--collapsible {
  list-style: none;
}
.hc-cat-filters__section--collapsible > .hc-cat-filters__section-head {
  cursor: pointer;
  user-select: none;
  list-style: none;
  position: relative;
  padding-right: 24px;
}
.hc-cat-filters__section--collapsible > .hc-cat-filters__section-head::-webkit-details-marker {
  display: none;
}
.hc-cat-filters__section--collapsible > .hc-cat-filters__section-head::after {
  content: "";
  position: absolute;
  right: 4px;
  top: 50%;
  width: 8px;
  height: 8px;
  border-right: 1.4px solid var(--hc-ink-mid, rgba(26, 23, 20, 0.45));
  border-bottom: 1.4px solid var(--hc-ink-mid, rgba(26, 23, 20, 0.45));
  transform: translateY(-70%) rotate(45deg);
  transition: transform 0.18s ease;
}
.hc-cat-filters__section--collapsible[open] > .hc-cat-filters__section-head::after {
  transform: translateY(-30%) rotate(225deg);
}
.hc-cat-filters__section-count {
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 500;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.45));
  margin-left: auto;
}
.hc-cat-filters__section-head h4,
.hc-cat-filters h4 {
  margin: 0;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.55));
}
.hc-cat-filters__section-head h4::before {
  content: "";
  display: inline-block;
  width: 5px;
  height: 5px;
  margin-right: 8px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--hc-gold-1, var(--hc-gold)), var(--hc-accent, var(--hc-accent)));
  vertical-align: middle;
}

/* ─── categories stack ─── */
.hc-cat-filters__category-stack,
.hc-cat-filters__category-scroll {
  display: grid;
  gap: 2px;
  width: 100%;
  max-width: 100%;
}
.hc-cat-filters__category-scroll {
  max-height: 320px;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(141, 109, 71, 0.3) transparent;
}
.hc-cat-filters__cat {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  padding: 8px 12px;
  background: transparent;
  border: 0;
  border-radius: 8px;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.72));
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 13px;
  font-weight: 500;
  line-height: 1.3;
  text-decoration: none;
  cursor: pointer;
  word-break: break-word;
  overflow-wrap: anywhere;
  transition: background 0.16s ease, color 0.16s ease;
}
.hc-cat-filters__cat:hover {
  background: rgba(var(--hc-gold-rgb), 0.14);
  color: var(--hc-ink, #1a1714);
}
.hc-cat-filters__cat.hc-chip--active,
.hc-cat-filters__cat[aria-current="true"] {
  background: rgba(var(--hc-gold-rgb), 0.22);
  color: var(--hc-ink, #1a1714);
  font-weight: 600;
}
.hc-cat-filters__cat .hc-chip__count {
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 500;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.45));
}

/* ─── quick grid (В наличии / Со скидкой / Новинки / Хиты) ─── */
.hc-cat-filters__quick-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 6px;
  width: 100%;
}

/* ─── facet (checkbox row) ─── */
.hc-cat-filters__facet {
  display: grid;
  grid-template-columns: 16px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 6px 8px;
  border-radius: 8px;
  font-size: 12.5px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--hc-ink, #1a1714);
  cursor: pointer;
  word-break: break-word;
  overflow-wrap: anywhere;
  transition: background 0.16s ease;
}
.hc-cat-filters__facet:hover {
  background: rgba(var(--hc-gold-rgb), 0.14);
}
.hc-cat-filters__facet-label {
  min-width: 0;
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  word-break: normal;
  overflow-wrap: normal;
}
.hc-cat-filters__facet--tile {
  flex-wrap: wrap;
  border: 0.5px solid rgba(141, 109, 71, 0.18);
  padding: 9px 11px;
  background: var(--hc-paper, #ffffff);
}
.hc-cat-filters__facet input[type="checkbox"],
.hc-cat-filters__facet .hc-checkbox {
  appearance: none;
  -webkit-appearance: none;
  width: 16px;
  height: 16px;
  margin: 0;
  background: var(--hc-paper, #ffffff);
  border: 1.4px solid rgba(141, 109, 71, 0.42);
  border-radius: 4px;
  cursor: pointer;
  flex-shrink: 0;
  position: relative;
  transition: background 0.18s ease, border-color 0.18s ease;
}
.hc-cat-filters__facet input[type="checkbox"]:hover,
.hc-cat-filters__facet .hc-checkbox:hover {
  border-color: var(--hc-accent-dark, var(--hc-accent-dark));
}
.hc-cat-filters__facet input[type="checkbox"]:checked,
.hc-cat-filters__facet .hc-checkbox:checked {
  background: linear-gradient(135deg, var(--hc-gold-1, var(--hc-gold)), var(--hc-accent, var(--hc-accent)));
  border-color: var(--hc-accent-dark, var(--hc-accent-dark));
}
.hc-cat-filters__facet input[type="checkbox"]:checked::after,
.hc-cat-filters__facet .hc-checkbox:checked::after {
  content: "";
  position: absolute;
  inset: 0;
  background-color: var(--hc-paper, #ffffff);
  -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='3.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='3.6' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>");
  -webkit-mask-size: 12px 12px;
  mask-size: 12px 12px;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
}
.hc-cat-filters__facet small {
  margin-left: auto;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 500;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.45));
  flex-shrink: 0;
}

/* ─── facet-stack (vertical list of facets для group) ─── */
.hc-cat-filters__facet-stack {
  display: grid;
  gap: 2px;
  width: 100%;
}

/* ─── price ─── */
.hc-cat-filters__price-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.hc-cat-filters__price-input {
  height: 36px;
  padding: 8px 12px;
  background: var(--hc-paper, #ffffff);
  border: 0.5px solid rgba(141, 109, 71, 0.22);
  border-radius: 10px;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 13px;
  color: var(--hc-ink, #1a1714);
}
.hc-cat-filters__price-input:focus {
  outline: none;
  border-color: var(--hc-accent, var(--hc-accent));
  box-shadow: 0 0 0 3px rgba(var(--hc-gold-rgb), 0.20);
}

/* ─── actions ─── */
/* The apply CTA used to be rendered twice — once sticky at the top of the form
   and once sticky at the bottom — so on a desktop listing BOTH floated over the
   facet list at the same time, and the bottom one sat across a half-visible
   checkbox row. On desktop the aside flows with the page (see
   hc-cat-filter-aside.css): there is no inner scroller to escape, so the
   actions simply end the form. Only the mobile drawer, which does scroll
   inside itself, keeps a sticky footer. */
.hc-cat-filters__actions {
  display: grid;
  gap: 8px;
  width: 100%;
  margin-top: 12px;
  padding: 14px 0 12px;
  background: var(--hc-paper, #fffaf2);
  border-top: 0.5px solid rgba(141, 109, 71, 0.22);
}
@media (max-width: 1024px) {
  .hc-cat-filters__actions {
    position: sticky;
    bottom: 0;
    z-index: 2;
    /* Facets scroll under this bar, and with a barely-there shadow the row
       passing beneath it looked cut in half rather than covered. A real edge
       and a real shadow make it read as a bar the list runs behind. */
    margin-inline: -16px;
    padding-inline: 16px;
    border-top: 1px solid rgba(141, 109, 71, 0.30);
    box-shadow: 0 -14px 22px -10px rgba(26, 23, 20, 0.22);
  }
  /* …and the list ends above it instead of behind it at the foot of the scroll. */
  .hc-cat-filters__form {
    padding-bottom: 4px;
  }
}

/* ─── applied chips strip ─── */
.hc-cat-filters__applied {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  width: 100%;
  padding: 12px;
  margin: 0 0 12px;
  background: linear-gradient(180deg, rgba(var(--hc-gold-rgb), 0.14), rgba(184, 154, 111, 0.06));
  border: 0.5px solid var(--hc-gold-border, rgba(var(--hc-gold-rgb), 0.42));
  border-radius: 12px;
  box-sizing: border-box;
}
.hc-cat-filters__applied-label {
  font-family: var(--hc-mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--hc-accent-dark, var(--hc-accent-dark));
}
.hc-cat-filters__applied-clear {
  margin-left: auto;
  background: transparent;
  border: 0;
  font-family: var(--hc-mono);
  font-size: 10px;
  color: var(--hc-accent-dark, var(--hc-accent-dark));
  cursor: pointer;
}

/* ── Applied-filters bar above results (was unstyled) ─────────────────────── */
.hc-applied-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0 0 16px;
}
.hc-applied-filters__clear {
  margin-left: 4px;
  color: var(--hc-accent-dark, #6a573f);
  text-decoration: underline;
  text-underline-offset: 2px;
  white-space: nowrap;
}
.hc-applied-filters__clear:hover {
  color: var(--hc-ink, #1a1714);
}

/* long-facet collapse toggle */
.hc-cat-filters__more {
  display: block;
  margin: 4px 0 10px;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--hc-accent, #2e7d46);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.hc-cat-filters__more:hover { text-decoration: none; }

/* Facet groups collapse. Without this the aside stacked every group expanded and
   reached 2 688px inside an 808px scroller — a scroll trap between the visitor
   and the "Показать товары" button at the bottom of the form. */
.hc-cat-filters__group {
  border-top: 1px solid var(--hc-line, rgba(26, 23, 20, 0.1));
  padding-top: 10px;
  margin-top: 10px;
}
.hc-cat-filters__group > summary {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  list-style: none;
  padding: 2px 0;
}
.hc-cat-filters__group > summary::-webkit-details-marker { display: none; }
.hc-cat-filters__group > summary::after {
  content: "";
  margin-left: auto;
  width: 7px;
  height: 7px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translate(-2px, -2px);
  opacity: 0.5;
  transition: transform 0.18s ease;
}
.hc-cat-filters__group[open] > summary::after {
  transform: rotate(-135deg) translate(-2px, -2px);
}
.hc-cat-filters__group > summary:focus-visible {
  outline: 2px solid var(--hc-accent);
  outline-offset: 2px;
}
.hc-cat-filters__group-mark {
  color: var(--hc-accent, #0e8b52);
  font-size: 15px;
  line-height: 1;
}

/* ─── Side promo: admin banners in the empty stripe under the filters ───
 * The filter column ends well above the grid on long listings, leaving a
 * tall blank beside the products. Strictly .hc-cat-side-promo / __*. */
.hc-cat-side-promo {
  display: grid;
  gap: 12px;
  margin-top: 16px;
}
.hc-cat-side-promo__item {
  position: relative;
  display: block;
  overflow: hidden;
  border-radius: 14px;
  border: 0.5px solid rgba(185, 154, 111, 0.22);
  background: var(--hc-paper, #fff);
  box-shadow: 0 10px 26px -20px rgba(40, 30, 15, 0.35);
  text-decoration: none;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.hc-cat-side-promo__item:hover {
  transform: translateY(-2px);
  box-shadow: 0 16px 34px -20px rgba(40, 30, 15, 0.45);
}
.hc-cat-side-promo__img {
  display: block;
  width: 100%;
  height: 150px;
  object-fit: cover;
}
.hc-cat-side-promo__body {
  display: grid;
  gap: 5px;
  padding: 12px 14px 14px;
}
.hc-cat-side-promo__title {
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 14.5px;
  font-weight: 700;
  line-height: 1.25;
  color: var(--hc-ink, #1a1714);
}
.hc-cat-side-promo__sub {
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.72));
}
.hc-cat-side-promo__cta {
  font-size: 12.5px;
  font-weight: 650;
  color: var(--hc-accent, #0e8b52);
}
/* Banners that ship a dark image carry their copy on top of it. */
.hc-cat-side-promo__item--light .hc-cat-side-promo__body {
  position: absolute;
  inset: auto 0 0 0;
  background: linear-gradient(to top, rgba(18, 14, 11, 0.82), transparent);
}
.hc-cat-side-promo__item--light .hc-cat-side-promo__title,
.hc-cat-side-promo__item--light .hc-cat-side-promo__sub { color: #fff; }
.hc-cat-side-promo__item--light .hc-cat-side-promo__img { height: 210px; }

@media (max-width: 1024px) {
  .hc-cat-side-promo { display: none; }
}

/* css/blocks/063-hc-cat-head.css */
/* =================== hc-cat-head.css =================== */
/* hc-cat-head - premium catalog page header. Owns breadcrumbs slot, eyebrow,
 * editorial title, lede, big serif stats, quick-filter chip row, and the 3-up
 * guide grid (How to choose / What to look for / If in doubt). Strictly
 * .hc-cat-head / .hc-cat-head__*. */

.hc-cat-head {
position: relative;
  overflow: hidden;
  isolation: isolate;
  margin-bottom: 14px;
  padding: 20px 26px 16px;
  background:
    radial-gradient(700px 360px at 100% -20%, rgba(var(--hc-gold-rgb), 0.18), transparent 55%),
    linear-gradient(150deg, var(--hc-paper, #ffffff) 0%, rgba(247, 241, 230, 0.92) 100%);
  border: 0.5px solid rgba(185, 154, 111, 0.22);
  border-radius: 16px;
  box-shadow:
    0 1px 2px rgba(40, 30, 15, 0.03),
    0 12px 32px -22px rgba(40, 30, 15, 0.14);

  /* 2-col grid: title+lede left, stats top-right, chips full-width below.
     Eliminates the empty top-right whitespace the user flagged. */
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: clamp(20px, 2vw, 36px);
  row-gap: 6px;
  align-items: start;
}
.hc-cat-head > .hc-crumbs {
grid-column: 1 / -1;
z-index: 20;
}
.hc-cat-head__title {
grid-column: 1; grid-row: 2;
}
.hc-cat-head__desc {
grid-column: 1; grid-row: 3;
}
.hc-cat-head__stats {
grid-column: 2; grid-row: 2 / span 2; align-self: end; margin-top: 0;
}
.hc-cat-head > .hc-cat-head__guide {
grid-column: 1 / -1; grid-row: 4;
}
.hc-cat-head::before {
content: "";
  position: absolute;
  right: -8%;
  top: -40%;
  width: 420px;
  height: 420px;
  z-index: 0;
  pointer-events: none;
  background: radial-gradient(circle, rgba(199, 155, 96, 0.24), transparent 64%);
  border-radius: 50%;
  filter: blur(20px);
}
.hc-cat-head > * {
position: relative; z-index: 1;
}

.hc-cat-head__title {
font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(30px, 3.6vw, 46px);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--hc-ink, #1a1714);
  margin: 0 0 var(--hc-sp-1);
}
.hc-cat-head__desc {
max-width: 56ch;
  margin: 0 0 var(--hc-sp-3);
  font-size: clamp(14px, 1.1vw, 16px);
  line-height: 1.55;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.7));
}

.hc-cat-head__stats {
display: inline-flex;
  flex-wrap: wrap;
  gap: clamp(16px, 2vw, 24px);
  margin-top: 0;
  padding: 12px 18px;
  background: rgba(255, 252, 247, 0.78);
  border: 0.5px solid rgba(141, 109, 71, 0.18);
  border-radius: 12px;
}
.hc-cat-head__stat {
display: flex;
  flex-direction: column;
  gap: 3px;
}
.hc-cat-head__stat b {
display: block;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(22px, 2vw, 28px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: -0.01em;
  color: var(--hc-ink, #1a1714);
  font-variant-numeric: tabular-nums;
}
.hc-cat-head__stat span {
display: block;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.55));
}

/* "Быстрый фильтр:" chip row — tightly packed below stats */
.hc-cat-head__quick-row {
display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 0;
  margin-bottom: var(--hc-sp-3);
}
.hc-cat-head__quick-label {
display: inline-flex;
  align-items: center;
  margin-right: 8px;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--hc-accent-dark, #7a6548);
}
.hc-cat-head__filter-btn {
  display: none;
  align-items: center;
  gap: 7px;
  min-height: 31px;
  padding: 7px 13px;
  border: 1px solid rgba(47, 111, 78, 0.24);
  border-radius: var(--hc-r-pill, 999px);
  background: rgba(47, 111, 78, 0.08);
  color: var(--hc-accent-dark, #2f6f4e);
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 6px 14px -12px rgba(47, 111, 78, 0.45);
  transition: background-color 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
}
.hc-cat-head__filter-btn::before {
  content: "";
  width: 13px;
  height: 13px;
  background: currentColor;
  mask: linear-gradient(#000 0 0) 1px 2px / 11px 2px no-repeat,
        linear-gradient(#000 0 0) 3px 6px / 7px 2px no-repeat,
        linear-gradient(#000 0 0) 5px 10px / 3px 2px no-repeat;
  -webkit-mask: linear-gradient(#000 0 0) 1px 2px / 11px 2px no-repeat,
                linear-gradient(#000 0 0) 3px 6px / 7px 2px no-repeat,
                linear-gradient(#000 0 0) 5px 10px / 3px 2px no-repeat;
}
.hc-cat-head__filter-btn:hover {
  border-color: rgba(47, 111, 78, 0.38);
  background: rgba(47, 111, 78, 0.12);
  transform: translateY(-1px);
}

/* guide block — HIDDEN by default. The 3 "How to choose / What to watch /
   If in doubt" tips were eating vertical space in the hero. They live in
   the catalog FAQ section instead. The container's chip row stays visible
   (we lift the .hc-cat-head__quick-row out of the visual frame below). */
.hc-cat-head__guide {
margin: 0;
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
  backdrop-filter: none;
}
.hc-cat-head__guide-grid {
display: none;
}
.hc-cat-head__guide-cell {
position: relative;
  display: grid;
  grid-template-columns: 28px 1fr;
  column-gap: 12px;
  row-gap: 6px;
  padding-left: 0;
  transition: transform 0.22s ease;
}
.hc-cat-head__guide-cell:hover {
transform: translateY(-2px);
}

.hc-cat-head__guide-ico {
grid-row: 1 / span 2;
  align-self: start;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  background: rgba(var(--hc-gold-rgb), 0.18);
  color: var(--hc-accent-dark, #7a6548);
  border-radius: 8px;
  transition: background 0.22s ease, color 0.22s ease, transform 0.22s ease;
}
.hc-cat-head__guide-ico svg {
width: 18px;
  height: 18px;
}
.hc-cat-head__guide-cell strong, .hc-cat-head__guide-grid strong {
display: block;
  font-family: var(--hc-sans);
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.005em;
  color: var(--hc-ink, #1a1714);
}
.hc-cat-head__guide-text {
margin: 0;
  max-width: 38ch;
  font-size: 12px;
  line-height: 1.5;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.62));
  overflow-wrap: anywhere;
}

@media (max-width: 768px) {
  .hc-cat-head {
    padding: var(--hc-sp-5) var(--hc-sp-4);
    grid-template-columns: 1fr;
    row-gap: 10px;
  }
  .hc-cat-head__stats {
    gap: var(--hc-sp-3);
    grid-column: 1;
    grid-row: auto;
    justify-self: start;
    align-self: start;
    width: fit-content;
    max-width: 100%;
  }
  .hc-cat-head__guide-grid {
    grid-template-columns: 1fr;
    gap: var(--hc-sp-3);
  }
  .hc-cat-head__title {
    font-size: clamp(28px, 8vw, 38px);
  }
  .hc-cat-head__filter-btn {
    display: inline-flex;
  }
  .hc-cat-head__quick-label {
    flex-basis: 100%;
  }
}

@media (min-width: 769px) and (max-width: 1024px) {
  .hc-cat-head__filter-btn {
    display: inline-flex;
  }
}

@media (max-width: 480px) {
  .hc-cat-head {
    padding: var(--hc-sp-4) var(--hc-sp-3);
    border-radius: 14px;
  }
}

.hc-cat-head__guide-cell:hover .hc-cat-head__guide-ico {
background: linear-gradient(135deg, var(--hc-gold, var(--hc-gold)), #b89a6f);
  color: #2a2018;
  transform: rotate(-6deg) scale(1.08);
}

/* v7.66 — editable search box on results head */
.hc-cat-head__search { grid-column: 1 / -1; grid-row: auto; display: flex; gap: 10px; margin: 14px 0 4px; max-width: 540px; }
.hc-cat-head__search .hc-input { flex: 1; min-width: 0; }

/* «Все разделы каталога» — back to the full catalog from any category/landing hero */
.hc-cat-head__allcats {
  display: inline-flex;
  /* It is a grid item, and a grid item stretches by default — so this pill ran
     1 146px wide across the whole head panel for the sake of one short link. */
  justify-self: start;
  align-items: center;
  gap: 8px;
  margin-top: 14px;
  padding: 9px 16px;
  border: 1px solid var(--hc-line, rgba(141,109,71,.28));
  border-radius: 999px;
  background: var(--hc-paper, #fff);
  color: var(--hc-ink, #1a1714);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  transition: border-color .2s ease, background .2s ease, transform .2s ease;
}
.hc-cat-head__allcats:hover { border-color: var(--hc-accent, #9a7b4f); transform: translateY(-1px); }
.hc-cat-head__allcats-ic { flex: 0 0 auto; opacity: .7; }

/* SEO-landing: rich SEO body (tiles/FAQ/CTA) now renders below the product grid,
   so keep the landing hero compact — drop the generic how-to guide grid. */
.hc-cat-head--landing .hc-cat-head__guide-grid { display: none; }
.hc-cat-head--landing .hc-cat-head__guide { padding-block: 14px; }

/* css/blocks/065-hc-cat-page.css */
/* =================== hc-cat-page.css =================== */
/* hc-cat-page — catalog page outer grid (aside + main). Owns the layout that
   wraps the filter sidebar and the results column. Below 1024px it collapses
   to a single column; the sidebar then becomes a slide-in drawer (rules in
   hc-cat-filter-aside.css). Strictly .hc-cat-page*. */

.hc-cat-page {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: clamp(18px, 2.1vw, 30px);
  align-items: start;
}

.hc-cat-results-wrap {
  position: relative;
  min-height: 200px;
}

.hc-cat-grid > *,
.g4 > *,
.products-grid > *,
.hc-cat-grid__item {
  height: 100%;
}

@media (max-width: 1024px) {
  .hc-cat-page {
    grid-template-columns: 1fr;
    gap: var(--hc-sp-4);
  }
}

/* css/blocks/066-hc-cat-postgrid.css */
/* =================== hc-cat-postgrid.css =================== */
.hc-cat-postgrid--premium {margin-top: var(--hc-sp-5); padding: var(--hc-sp-4); overflow: hidden; background: linear-gradient(135deg,var(--hc-paper),var(--hc-paper-2))}
.hc-cat-postgrid__grid {display: grid; grid-template-columns: minmax(260px,1.15fr) minmax(220px,.85fr) minmax(210px,.7fr); align-items: center; gap: var(--hc-sp-3)}
.hc-cat-postgrid__copy {min-width: 0}
.hc-cat-postgrid__title {margin-top: var(--hc-sp-1)}
.hc-cat-postgrid__muted {margin-top: 6px}
.hc-cat-postgrid__visual {display: flex; justify-content: center; align-items: center; min-height: 116px}
.hc-cat-postgrid__svg {width: min(260px,100%); height: auto; overflow: visible}
.hc-cat-postgrid__orbit {fill: none; stroke: rgba(var(--hc-accent-rgb),.28); stroke-width: 1.5; stroke-dasharray: 5 9; animation: hcPostgridOrbit 11s linear infinite}
.hc-cat-postgrid__line {fill: none; stroke: url(#kitLine); stroke-width: 3; stroke-linecap: round; stroke-dasharray: 120; animation: hcPostgridLine 2.8s ease-in-out infinite}
.hc-cat-postgrid__line--b {animation-delay: .35s}
.hc-cat-postgrid__node {fill: #fffaf1; stroke: rgba(var(--hc-accent-rgb),.35); stroke-width: 1.4; filter: drop-shadow(0 10px 16px rgba(28,24,20,.12))}
.hc-cat-postgrid__node--top, .hc-cat-postgrid__node--bottom {fill: #f7fbf5}
.hc-cat-postgrid__dot {fill: #2f6f4e; transform-origin: center; animation: hcPostgridPulse 2s ease-in-out infinite}
.hc-cat-postgrid__dot--b {animation-delay: .28s}
.hc-cat-postgrid__dot--c {animation-delay: .56s}
.hc-cat-postgrid__check {fill: none; stroke: #2f6f4e; stroke-width: 5; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 46; animation: hcPostgridCheck 2.6s ease-in-out infinite}
.hc-cat-postgrid__cta-wrap {display: flex; align-items: center; justify-content: center}
.hc-cat-postgrid__cta {min-width: 210px; justify-content: center}
@keyframes hcPostgridOrbit {to {stroke-dashoffset: -140}}
@keyframes hcPostgridLine {0%,100% {stroke-dashoffset: 120; opacity: .38} 45%,70% {stroke-dashoffset: 0; opacity: 1}}
@keyframes hcPostgridPulse {0%,100% {transform: scale(1); opacity: .75} 50% {transform: scale(1.35); opacity: 1}}
@keyframes hcPostgridCheck {0%,20% {stroke-dashoffset: 46} 48%,100% {stroke-dashoffset: 0}}
@media (max-width: 900px) {
  .hc-cat-postgrid__grid {grid-template-columns: 1fr; text-align: center}
  .hc-cat-postgrid__cta-wrap {justify-content: center}
}

/* css/blocks/067-hc-cat-results-loading.css */
/* =================== hc-cat-results-loading.css =================== */
.hc-cat-results-shell {position: relative; min-height: 200px}
.hc-cat-results-loading {display: none; position: absolute; top: 0; left: 0; right: 0; z-index: 2; background: var(--hc-paper, #ffffff); padding: 12px 0; border-radius: 12px}

/* css/blocks/071-hc-cat-toolbar.css */
/* =================== hc-cat-toolbar.css =================== */
/* hc-cat-toolbar — sticky horizontal bar above the catalog grid. Owns count,
   trust-signal chips, filter-trigger button, view switcher, and sort select.
   Trust signals + view switcher are hidden on small viewports to keep the
   bar reachable; the filter-trigger button is shown only ≤1024px since the
   sidebar is always visible above that. */

.hc-cat-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: rgba(255, 252, 247, 0.86);
  border: 0.5px solid rgba(141, 109, 71, 0.18);
  border-radius: 12px;
  margin-bottom: var(--hc-sp-3);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.hc-cat-toolbar__count {
  font-size: var(--hc-fs-sm);
}
.hc-cat-toolbar__count b {
  font-family: var(--hc-serif);
  font-size: var(--hc-fs-lg);
  font-weight: 500;
}
.hc-cat-toolbar__signals {
  display: flex;
  gap: var(--hc-sp-1);
  flex-wrap: wrap;
}
.hc-cat-toolbar__filter-trigger {
  display: none;
}
.hc-cat-toolbar__view {
  display: inline-flex;
  gap: 2px;
  padding: 3px;
  margin-left: auto;
  background: var(--hc-paper-3);
  border-radius: var(--hc-r-pill);
}
.hc-cat-toolbar__view-btn {
  position: relative;
  padding: 5px 9px;
  border-radius: var(--hc-r-pill);
  font-size: var(--hc-fs-xs);
  color: var(--hc-ink-mid);
  cursor: pointer;
  transition: background var(--hc-dur-fast), color var(--hc-dur-fast);
}
.hc-cat-toolbar__view-btn:hover {
  color: var(--hc-ink);
}
.hc-cat-toolbar__view-btn.is-active {
  background: var(--hc-ink);
  color: var(--hc-paper, #ffffff);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.16), 0 6px 12px -7px rgba(26, 23, 20, 0.48);
}
.hc-cat-toolbar__view-btn.is-active::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -6px;
  width: 16px;
  height: 2px;
  border-radius: 2px;
  background: var(--hc-ink, #1a1714);
  transform: translateX(-50%);
}
.hc-cat-toolbar__sort {
  width: auto;
  padding: 7px 30px 7px 12px;
  font-size: var(--hc-fs-sm);
}

.hc-sortseg {
  display: none;
  gap: 6px;
}

.hc-sortseg__pill {
  padding: 7px 14px;
  border: 1px solid var(--hc-line, #e7e4df);
  border-radius: 999px;
  background: var(--hc-paper, #fff);
  color: var(--hc-ink-mid, #55524c);
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
  transition: border-color .13s ease, color .13s ease, background .13s ease;
}
.hc-sortseg__pill:hover { border-color: var(--hc-accent, #2e7d46); color: var(--hc-ink, #1d1d1b); }
.hc-sortseg__pill.is-on { background: var(--hc-ink, #1d1d1b); border-color: var(--hc-ink, #1d1d1b); color: #fff; }

@media (min-width: 901px) {
  .hc-sortseg { display: inline-flex; }
  .hc-cat-toolbar__sort { display: none; }
}

@media (max-width: 1024px) {
  .hc-cat-toolbar__filter-trigger { display: inline-flex; }
  .hc-cat-toolbar__signals        { display: none; }
}

@media (max-width: 480px) {
  .hc-cat-toolbar {
    padding: var(--hc-sp-2) var(--hc-sp-3);
    gap: var(--hc-sp-2);
  }
  .hc-cat-toolbar__view { display: none; }
}

/* css/blocks/072-hc-cats.css */
/* =================== hc-cats.css =================== */
.hc-cats {display: grid; grid-template-columns: 1.2fr 1fr 1fr; grid-template-rows: auto auto; gap: clamp(14px, 1.6vw, 22px); margin-top: 20px}

/* ─── folded from hc-cats-sec.css ─── */
.hc-cats-sec {padding: clamp(48px, 6vw, 88px) 0}

/* css/blocks/092-hc-filter-help.css */
/* =================== hc-filter-help.css =================== */
.hc-filter-help {margin-top: var(--hc-sp-4); padding: var(--hc-sp-3); background: var(--hc-paper-2)}
.hc-filter-help__text {margin-top: 6px}
.hc-filter-help__cta {margin-top: var(--hc-sp-2)}

.hc-filter-help {
  margin-top: 16px;
  padding: 14px 14px;
  background: linear-gradient(180deg, rgba(var(--hc-gold-rgb), 0.14), rgba(var(--hc-gold-rgb), 0.04));
  border: 1px solid rgba(141, 109, 71, 0.22);
  border-radius: 12px;
}
.hc-filter-help strong {
  display: block;
  font-size: 13px;
  letter-spacing: 0.005em;
  margin-bottom: 4px;
}
.hc-filter-help__text {
  margin: 0 0 10px;
  font-size: 12px;
  line-height: 1.4;
  color: rgba(26, 23, 20, 0.60);
}
.hc-filter-help__cta {
  font-size: 12px;
  height: 36px;
}

/* css/blocks/143-hc-price-slider.css */
/* =================== hc-price-slider.css =================== */
/* Single-source range slider styles for catalog filters (no internal overrides). */

.hc-price-slider {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 6px 0;
}

.hc-price-slider__track {
  position: relative;
  height: 28px;
  margin: 8px 0 12px;
}

.hc-price-slider__track::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  height: 4px;
  transform: translateY(-50%);
  background: rgba(141, 109, 71, 0.16);
  border-radius: 999px;
}

.hc-price-slider__fill {
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  height: 4px;
  transform: translateY(-50%);
  background: linear-gradient(90deg, var(--hc-gold, var(--hc-gold)), var(--hc-accent, var(--hc-accent)));
  border-radius: 999px;
  pointer-events: none;
}

.hc-price-slider__thumb {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 28px;
  margin: 0;
  background: transparent;
  border: 0;
  outline: none;
  pointer-events: none;
  -webkit-appearance: none;
  appearance: none;
}

.hc-price-slider__thumb::-webkit-slider-thumb {
  width: 14px;
  height: 14px;
  border: 2px solid var(--hc-paper, #ffffff);
  border-radius: 50%;
  background: var(--hc-ink, #1a1714);
  box-shadow: 0 2px 6px rgba(20, 17, 14, 0.18);
  cursor: pointer;
  pointer-events: auto;
  -webkit-appearance: none;
  appearance: none;
}

.hc-price-slider__thumb::-moz-range-thumb {
  width: 14px;
  height: 14px;
  border: 2px solid var(--hc-paper, #ffffff);
  border-radius: 50%;
  background: var(--hc-ink, #1a1714);
  box-shadow: 0 2px 6px rgba(20, 17, 14, 0.18);
  cursor: pointer;
  pointer-events: auto;
}

.hc-price-slider__bounds {
  display: flex;
  justify-content: space-between;
  margin-top: 4px;
  color: rgba(26, 23, 20, 0.50);
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
}

.hc-cat-filters .hc-price-slider {
  padding: 8px 4px 0;
}

.hc-cat-filters--premium .hc-price-slider__track::before {
  height: 3px;
  border-radius: 2px;
  background: rgba(180, 151, 115, 0.20);
}

.hc-cat-filters--premium .hc-price-slider__fill {
  height: 3px;
  border-radius: 2px;
}

.hc-cat-filters--premium .hc-price-slider__thumb::-webkit-slider-thumb {
  width: 18px;
  height: 18px;
  border: 2px solid var(--hc-ink, #1a1714);
  background: var(--hc-paper, #ffffff);
}

.hc-cat-filters--premium .hc-price-slider__thumb::-moz-range-thumb {
  width: 18px;
  height: 18px;
  border: 2px solid var(--hc-ink, #1a1714);
  background: var(--hc-paper, #ffffff);
}

/* css/blocks/185-page-catalog.css */
/* =================== page-catalog.css =================== */
.page-catalog .hc-cat-head__guide-grid > div {
  min-width: 0;
  display: grid;
  gap: 6px;
}
.page-catalog .hc-cat-head__guide-grid strong {
  display: block;
  line-height: 1.22;
}

.page-catalog .pcard.pcard-mini .pcard-mini__ph svg {
width: 100%;
  height: 100%;
  display: block;
}
.page-catalog .hc-cat-main {min-width: 0}
.page-catalog #cat-results .pcard-body,
.page-catalog #cat-results .pcard-c__body {
  min-height: 0;
}
.page-catalog #cat-results .pcard-footer,
.page-catalog #cat-results .pcard-c__bottom {
  margin-top: 10px;
}

@media (max-width: 920px) {
  .page-catalog .hc-cat-head,
  .page-catalog .hc-cat-head__row,
  .page-catalog .hc-cat-head__meta {
    min-width: 0;
  }

  .page-catalog .hc-cat-head__title,
  .page-catalog .hc-cat-head h1 {
    overflow-wrap: anywhere;
  }
}

/* css/blocks/299-catalog-ind.css */
/* ===== 299-catalog-ind.css — INDUSTRIAL catalog view =====
   Activated by body class .page-catalog--ind (app_settings layout.catalog='industrial').
   Light structural layer on top of the industrial theme: denser grid, sharp tiles,
   flat filter rail. Scoped → inert on classic. */

/* category tiles: sharp + flat */
.page-catalog--ind .hc-cat-sm {
  border-radius: var(--hc-r-xs);
  box-shadow: none;
  border: 1px solid var(--hc-line-2);
}
.page-catalog--ind .hc-cat-sm:hover {
  border-color: var(--hc-accent);
  box-shadow: 0 12px 30px -22px rgba(var(--hc-accent-rgb), 0.5);
}
.page-catalog--ind .hc-cat-sm__media { border-radius: var(--hc-r-xs) var(--hc-r-xs) 0 0; }

/* product grid: denser */
.page-catalog--ind .hc-cat-grid,
.page-catalog--ind [data-catalog-grid] {
  gap: 14px;
}

/* filters rail: flat, hairline */
.page-catalog--ind .hc-filters,
.page-catalog--ind [data-filters] {
  border-radius: var(--hc-r-xs);
  box-shadow: none;
}

/* generic cards inside catalog get sharp corners */
.page-catalog--ind .hc-card { border-radius: var(--hc-r-sm); box-shadow: none; }

/* css/blocks/246-hc-mkt-banner.css */
/* =================== hc-mkt-banner.css =================== */
/* Marketing banners (top + inline grid) isolated block.
 * Owns only .hc-mkt-banner* selectors and does not cascade into cards. */

.hc-mkt-banner-row {
  display: grid;
  gap: clamp(10px, 1.15vw, 16px);
  margin: 0 0 var(--hc-sp-4, 18px);
}

.hc-mkt-banner-row--top {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

.hc-mkt-banner-row--grid {
  grid-template-columns: 1fr;
}

.hc-mkt-banner {
  position: relative;
  display: block;
  min-width: 0;
  overflow: hidden;
  isolation: isolate;
  border: 0.5px solid rgba(141, 109, 71, 0.18);
  border-radius: 16px;
  background: #171410;
  color: #fff;
  text-decoration: none;
  box-shadow: 0 16px 36px -24px rgba(26, 23, 20, 0.42);
  transition: transform 0.24s ease, box-shadow 0.24s ease, border-color 0.24s ease;
}

.hc-mkt-banner:hover,
.hc-mkt-banner:focus-visible {
  transform: translateY(-2px);
  border-color: rgba(var(--hc-gold-rgb), 0.5);
  box-shadow: 0 22px 48px -24px rgba(26, 23, 20, 0.52);
}

.hc-mkt-banner__mesh {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  color: rgba(255, 255, 255, 0.74);
}

.hc-mkt-banner__mesh svg {
  width: 100%;
  height: 100%;
  display: block;
}

.hc-mkt-banner__media {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: block;
}

.hc-mkt-banner__media img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  object-position: center;
  filter: saturate(1.04) contrast(1.04) brightness(0.82);
  transform: scale(1.001);
  transition: transform 0.45s cubic-bezier(0.22, 1, 0.36, 1), filter 0.35s ease;
}

.hc-mkt-banner:hover .hc-mkt-banner__media img,
.hc-mkt-banner:focus-visible .hc-mkt-banner__media img {
  transform: scale(1.06);
  filter: saturate(1.08) contrast(1.05) brightness(0.9);
}

.hc-mkt-banner::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(15, 13, 10, 0.05) 0%, rgba(15, 13, 10, 0.46) 55%, rgba(15, 13, 10, 0.82) 100%);
}

.hc-mkt-banner__body {
  position: relative;
  z-index: 3;
  display: grid;
  align-content: end;
  gap: 8px;
  min-height: clamp(176px, 20vw, 280px);
  padding: clamp(14px, 1.3vw, 18px);
}

.hc-mkt-banner__body strong {
  margin: 0;
  color: #fff;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(22px, 2vw, 32px);
  font-weight: 500;
  line-height: 1.03;
  letter-spacing: 0;
  text-wrap: balance;
}

.hc-mkt-banner__body p {
  margin: 0;
  max-width: 44ch;
  color: rgba(255, 255, 255, 0.86);
  font-size: 14px;
  line-height: 1.38;
}

.hc-mkt-banner__cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.96);
}

.hc-mkt-banner--light {
  color: #1a1714;
}

.hc-mkt-banner--light::after {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.04) 0%, rgba(255, 255, 255, 0.28) 58%, rgba(255, 255, 255, 0.58) 100%);
}

.hc-mkt-banner--light .hc-mkt-banner__mesh {
  color: rgba(26, 23, 20, 0.55);
}

.hc-mkt-banner--light .hc-mkt-banner__body strong {
  color: #15120f;
}

.hc-mkt-banner--light .hc-mkt-banner__body p,
.hc-mkt-banner--light .hc-mkt-banner__cta {
  color: rgba(26, 23, 20, 0.78);
}

.hc-mkt-banner--grid {
  min-height: 0;
}

.hc-mkt-banner--grid .hc-mkt-banner__body {
  min-height: clamp(140px, 18vw, 220px);
}

@media (max-width: 920px) {
  .hc-mkt-banner-row--top {
    grid-template-columns: 1fr;
  }

  .hc-mkt-banner__body strong {
    font-size: clamp(20px, 6.2vw, 28px);
  }

  .hc-mkt-banner__body p {
    font-size: 13px;
  }
}

/* css/blocks/245-hc-cat-sections.css */
/* =================== hc-cat-sections.css =================== */
/* Category section cards on /catalog (root only). Isolated block:
 * .hc-cat-sections-* — LIGHT framed style, consistent with the home
 * category cards (.hc-cat-sm): white card, framed media panel (contained
 * animated SVG cover) on top, body (title + desc) below. */

.hc-cat-sections-card__count {
  display: block;
  margin-top: 4px;
  color: var(--hc-ink-soft, #6f6b64);
  font-size: 12.5px;
  font-variant-numeric: tabular-nums;
}

.hc-cat-sections-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: clamp(14px, 1.4vw, 22px);
}

.hc-cat-sections-card {
  position: relative;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  min-width: 0;
  height: 100%;
  text-decoration: none;
  color: #1a1714;
  background: #fff;
  border: 1px solid rgba(var(--hc-accent-rgb), 0.18);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 8px 24px -20px rgba(24, 18, 12, 0.5);
  transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}

.hc-cat-sections-card:hover,
.hc-cat-sections-card:focus-visible {
  transform: translateY(-6px);
  border-color: rgba(185, 154, 111, 0.62);
  box-shadow: 0 28px 52px -24px rgba(24, 18, 12, 0.55), 0 0 0 1px rgba(185, 154, 111, 0.16);
}

.hc-cat-sections-card__media {
  position: relative;
  display: block;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background:
    radial-gradient(circle at 70% 18%, rgba(196, 158, 103, 0.14), transparent 42%),
    linear-gradient(160deg, #fbf6ec 0%, #ece0cc 100%);
  /* The caption used to be fenced off from the illustration by a full-width
     rule, so each tile read as two stacked strips — a table row rather than a
     card. The tint change is enough of a boundary. */
  transition: background 0.3s ease;
}

.hc-cat-sections-card:hover .hc-cat-sections-card__media,
.hc-cat-sections-card:focus-visible .hc-cat-sections-card__media {
  background:
    radial-gradient(circle at 70% 18%, rgba(196, 158, 103, 0.28), transparent 48%),
    linear-gradient(160deg, #fdf9f0 0%, #e6d6bc 100%);
}

.hc-cat-sections-card__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
  padding: clamp(4px, 0.6vw, 10px);
  transform: scale(1);
  transition: transform 0.45s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.hc-cat-sections-card:hover .hc-cat-sections-card__img,
.hc-cat-sections-card:focus-visible .hc-cat-sections-card__img {
  transform: scale(1.08);
}

.hc-cat-scene {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

.hc-cat-scene__bg {
  fill: #f4e3c2;
  opacity: 0.2;
}

.hc-cat-scene__orb {
  fill: rgba(185, 154, 111, 0.2);
  transform-box: fill-box;
  transform-origin: center;
  animation: hc-cat-orb 7s ease-in-out infinite;
}

.hc-cat-scene__orb--b {
  animation-delay: -2.5s;
}

.hc-cat-scene__shadow {
  fill: rgba(51, 39, 27, 0.14);
}

.hc-cat-scene__panel {
  stroke: rgba(85, 62, 36, 0.42);
  stroke-width: 2;
}

.hc-cat-scene__panel--one { fill: #f4dfb7; }
.hc-cat-scene__panel--two { fill: #e4c48f; }
.hc-cat-scene__panel--three { fill: #c99b5a; }

.hc-cat-scene__board-stack {
  transform-box: fill-box;
  transform-origin: center;
  animation: hc-cat-float 5s ease-in-out infinite;
}

.hc-cat-scene__edge,
.hc-cat-scene__grain,
.hc-cat-scene__measure {
  fill: none;
  stroke: rgba(69, 48, 27, 0.58);
  stroke-width: 2;
  stroke-linecap: round;
}

.hc-cat-scene__grain {
  stroke-dasharray: 22 12;
  animation: hc-cat-dash 5.5s linear infinite;
}

.hc-cat-scene__measure {
  stroke: rgba(69, 48, 27, 0.42);
}

.hc-cat-scene__rail,
.hc-cat-scene__drawer,
.hc-cat-scene__sample,
.hc-cat-scene__shelf {
  fill: rgba(61, 51, 40, 0.86);
}

.hc-cat-scene__blade {
  fill: #efe4d0;
  stroke: rgba(61, 51, 40, 0.86);
  stroke-width: 3;
  transform-box: fill-box;
  transform-origin: center;
  animation: hc-cat-spin 9s linear infinite;
}

.hc-cat-scene__blade-hole {
  fill: #c99b5a;
  stroke: none;
}

.hc-cat-scene__spark {
  fill: none;
  stroke: #c99b5a;
  stroke-width: 4;
  stroke-linecap: round;
  opacity: 0;
  animation: hc-cat-spark 2.4s ease-in-out infinite;
}

.hc-cat-scene__spark--b { animation-delay: 0.35s; }
.hc-cat-scene__spark--c { animation-delay: 0.7s; }

.hc-cat-scene__drawer-front,
.hc-cat-scene__box {
  fill: #ead6b4;
  stroke: rgba(61, 51, 40, 0.34);
  stroke-width: 2;
}

.hc-cat-scene__runner,
.hc-cat-scene__hinge path {
  fill: none;
  stroke: #c99b5a;
  stroke-width: 8;
  stroke-linecap: round;
}

.hc-cat-scene__runner--one {
  animation: hc-cat-runner 3.8s ease-in-out infinite;
}

.hc-cat-scene__runner--two {
  animation: hc-cat-runner 3.8s ease-in-out infinite;
  animation-delay: -1.1s;
}

.hc-cat-scene__hinge circle {
  fill: #efe4d0;
  stroke: rgba(61, 51, 40, 0.78);
  stroke-width: 3;
}

.hc-cat-scene__hinge {
  transform-box: fill-box;
  transform-origin: 242px 70px;
  animation: hc-cat-hinge 4.5s ease-in-out infinite;
}

.hc-cat-scene__sample {
  fill: #efe4d0;
}

.hc-cat-scene__coating {
  fill: none;
  stroke: #c99b5a;
  stroke-width: 11;
  stroke-linecap: round;
  stroke-dasharray: 260;
  stroke-dashoffset: 260;
  animation: hc-cat-coat 4s ease-in-out infinite;
}

.hc-cat-scene__brush {
  fill: #3d3328;
  transform-box: fill-box;
  transform-origin: center;
  animation: hc-cat-brush 4s ease-in-out infinite;
}

.hc-cat-scene__brush path {
  fill: #d9b06e;
}

.hc-cat-scene__drop {
  fill: rgba(185, 154, 111, 0.52);
  transform-box: fill-box;
  transform-origin: center;
  animation: hc-cat-drop 4s ease-in-out infinite;
}

.hc-cat-scene__route {
  fill: none;
  stroke: #c99b5a;
  stroke-width: 5;
  stroke-linecap: round;
  stroke-dasharray: 14 12;
  animation: hc-cat-dash 5s linear infinite;
}

@keyframes hc-cat-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

@keyframes hc-cat-orb {
  0%, 100% { transform: scale(1); opacity: 0.22; }
  50% { transform: scale(1.18); opacity: 0.34; }
}

@keyframes hc-cat-dash {
  to { stroke-dashoffset: -68; }
}

@keyframes hc-cat-spin {
  to { transform: rotate(360deg); }
}

@keyframes hc-cat-spark {
  0%, 100% { opacity: 0; transform: translateX(0); }
  45% { opacity: 1; transform: translateX(6px); }
}

@keyframes hc-cat-runner {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(18px); }
}

@keyframes hc-cat-hinge {
  0%, 100% { transform: rotate(-4deg); }
  50% { transform: rotate(8deg); }
}

@keyframes hc-cat-coat {
  0% { stroke-dashoffset: 260; }
  50%, 100% { stroke-dashoffset: 0; }
}

@keyframes hc-cat-brush {
  0%, 100% { transform: translate(-8px, -6px) rotate(-5deg); }
  50% { transform: translate(16px, 8px) rotate(4deg); }
}

@keyframes hc-cat-drop {
  0%, 100% { transform: translateY(-4px) scale(0.92); opacity: 0.45; }
  50% { transform: translateY(8px) scale(1.05); opacity: 0.78; }
}

@media (prefers-reduced-motion: reduce) {
  .hc-cat-scene *,
  .hc-cat-scene {
    animation: none !important;
  }
}

.hc-cat-sections-card__body {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
  padding: 11px 12px 13px;
}

.hc-cat-sections-card__title {
  margin: 0;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(14px, 1.05vw, 17px);
  line-height: 1.15;
  font-weight: 500;
  letter-spacing: 0;
  color: #1a1714;
}

.hc-cat-sections-card__desc {
  margin: 0;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
  color: rgba(94, 75, 48, 0.72);
  font-size: 11px;
  line-height: 1.3;
}

@media (max-width: 1280px) {
  .hc-cat-sections-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 920px) {
  .hc-cat-sections-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .hc-cat-sections-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 460px) {
  .hc-cat-sections-grid {
    grid-template-columns: 1fr;
  }
}

/* ─── hardware sub-scenes (runners / hinges / handles / fasteners) ─── */
.hc-cat-scene__roller,
.hc-cat-scene__bolt-head {
  fill: #efe4d0;
  stroke: rgba(61, 51, 40, 0.78);
  stroke-width: 3;
}
.hc-cat-scene__bolt-pin { fill: #c99b5a; stroke: none; }
.hc-cat-scene__bolt-slot {
  fill: none;
  stroke: rgba(61, 51, 40, 0.7);
  stroke-width: 5;
  stroke-linecap: round;
}
.hc-cat-scene__handle-bar { fill: rgba(61, 51, 40, 0.86); }
.hc-cat-scene__handle-foot { fill: rgba(61, 51, 40, 0.55); }

/* Hinge rotation pivots — moved off inline style= (per-instance transform-origin). */
.hc-cat-scene__hinge--p1 { transform-origin: 176px 84px; }
.hc-cat-scene__hinge--p2 { transform-origin: 188px 150px; }

/* css/blocks/287-hc-subcat-chips.css */
/* =================== hc-subcat-chips.css =================== */
/* Subcategory chips on a category page (above the toolbar): a wrapping row of
 * pills, each = round animated-SVG icon dot + name, linking to the child
 * category. Strictly .hc-subcat*. WDL tokens, no !important. */

.hc-subcat {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0 0 clamp(14px, 2vw, 22px);
}

.hc-subcat__chip {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  max-width: 100%;
  min-width: 0;
  padding: 5px 14px 5px 5px;
  border: 1px solid rgba(var(--hc-accent-rgb), 0.2);
  border-radius: 999px;
  background: #fff;
  color: var(--hc-ink, #1a1714);
  text-decoration: none;
  box-shadow: 0 6px 18px -16px rgba(24, 18, 12, 0.5);
  transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.hc-subcat__chip:hover,
.hc-subcat__chip:focus-visible {
  transform: translateY(-2px);
  border-color: rgba(185, 154, 111, 0.55);
  background: linear-gradient(180deg, #fffdf9, #f7f0e3);
  box-shadow: 0 14px 26px -20px rgba(24, 18, 12, 0.55);
}

.hc-subcat__ic {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  flex-shrink: 0;
  border-radius: 50%;
  overflow: hidden;
  background:
    radial-gradient(circle at 70% 18%, rgba(196, 158, 103, 0.16), transparent 45%),
    linear-gradient(160deg, #fbf6ec, #ece0cc);
  /* Several ЛДСП decors are white, so their swatch photographs as a white
     disc and read as a missing image. The rim is what makes it a swatch. */
  border: 1px solid rgba(var(--hc-accent-rgb), 0.34);
}

.hc-subcat__ic-fb {
  grid-area: 1 / 1;
  width: 19px;
  height: 19px;
  color: var(--hc-accent, var(--hc-accent));
}

.hc-subcat__ic img {
  grid-area: 1 / 1;
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* covers are drawn at 55% inner-scale for the big cards; zoom the icon in the
     small chip dot so it reads (transparent margins are clipped by the dot). */
  transform: scale(1.6);
}

.hc-subcat__ic img.hc-img-broken {
  display: none;
}

.hc-subcat__name {
  font-size: 14px;
  line-height: 1.1;
  font-weight: 500;
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
}

@media (max-width: 600px) {
  .hc-subcat__name { font-size: 13px; }
  .hc-subcat__ic { width: 28px; height: 28px; }
}

/* css/blocks/290-hc-seo-links.css */
/* SEO quick-links — themed facet chip blocks on a category page. Internal
   cross-links to the category's SEO landing pages (/catalog/l/<slug>). Premium
   panel: gold top accent, serif eyebrow, gold-dot group labels, gradient pills. */
.hc-seo-links {
  position: relative;
  display: grid;
  gap: 10px;
  margin: 0 0 22px;
  padding: 18px 22px 16px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 18px;
  background:
    radial-gradient(130% 150% at 0% 0%, rgba(var(--hc-gold-rgb), 0.14), transparent 55%),
    linear-gradient(180deg, rgba(255, 253, 250, 0.92), rgba(250, 246, 240, 0.6));
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.7) inset,
    0 18px 44px -34px rgba(60, 46, 30, 0.5);
}

/* thin gold accent line along the top edge */
.hc-seo-links::before {
  content: "";
  position: absolute;
  left: 22px;
  right: 22px;
  top: 0;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, transparent, var(--hc-accent, #b8895a), transparent);
  opacity: 0.55;
}

.hc-seo-links__head {
  display: flex;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 2px;
}

.hc-seo-links__eyebrow {
  font-family: var(--hc-serif, Georgia, serif);
  font-size: 15px;
  font-weight: 500;
  color: var(--hc-ink, #1a1714);
  letter-spacing: 0.01em;
}

.hc-seo-links__hint {
  font-family: var(--hc-mono, ui-monospace, monospace);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.45));
}

.hc-seo-links__row {
  display: grid;
  grid-template-columns: minmax(96px, max-content) 1fr;
  gap: 8px 18px;
  align-items: baseline;
  padding-top: 9px;
  border-top: 1px solid rgba(141, 109, 71, 0.1);
}

.hc-seo-links__row:first-of-type {
  padding-top: 3px;
  border-top: none;
}

.hc-seo-links__label {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding-top: 6px;
  font-family: var(--hc-mono, ui-monospace, monospace);
  font-size: 11px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.55));
}

.hc-seo-links__label::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  flex: none;
  background: var(--hc-accent, #b8895a);
  opacity: 0.7;
}

.hc-seo-links__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.hc-seo-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 13px;
  border: 1px solid rgba(141, 109, 71, 0.22);
  border-radius: 999px;
  background: linear-gradient(180deg, #ffffff, rgba(250, 246, 240, 0.7));
  color: var(--hc-ink, #1a1714);
  font-size: 13px;
  line-height: 1.2;
  text-decoration: none;
  white-space: nowrap;
  transition: transform 0.16s ease, border-color 0.16s ease,
    box-shadow 0.16s ease, background 0.16s ease, color 0.16s ease;
}

.hc-seo-link:hover {
  transform: translateY(-1px);
  border-color: var(--hc-accent, #b8895a);
  background: #ffffff;
  box-shadow: 0 7px 18px -11px rgba(141, 109, 71, 0.65);
  color: var(--hc-accent-dark, var(--hc-accent-dark));
}

.hc-seo-link.is-active {
  border-color: var(--hc-ink, #1a1714);
  background: linear-gradient(180deg, #2a2521, var(--hc-ink, #1a1714));
  color: var(--hc-paper, #ffffff);
  box-shadow: 0 7px 18px -11px rgba(26, 23, 20, 0.7);
}

.hc-seo-link__n {
  font-family: var(--hc-mono, ui-monospace, monospace);
  font-size: 10px;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.45));
}

.hc-seo-link:hover .hc-seo-link__n {
  color: inherit;
}

.hc-seo-link.is-active .hc-seo-link__n {
  color: rgba(255, 255, 255, 0.65);
}

@media (max-width: 640px) {
  .hc-seo-links {
    padding: 15px 16px;
    max-height: 320px;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
  }

  .hc-seo-links::before {
    left: 16px;
    right: 16px;
  }

  .hc-seo-links__row {
    grid-template-columns: 1fr;
    gap: 5px;
  }

  /* The row scrolls sideways on a phone, and it used to be cut off dead flat at
     the viewport edge mid-word ("25 м", "ЛДСП для шкафов-куп") with nothing to
     say more was there. A fade at the right edge plus room after the last chip
     makes the overflow legible as overflow. */
  .hc-seo-links__chips {
    flex-wrap: nowrap;
    overflow-x: auto;
    padding: 2px 22px 8px 2px;
    scrollbar-width: thin;
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent 100%);
    mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent 100%);
  }

  .hc-seo-links__label {
    padding-top: 0;
  }
}

/* SEO landing body text (shop_seo_landings.body_html) — bottom prose block. */
.hc-cat-seo-body {
  margin-top: 22px;
  padding: 24px 26px;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.74));
  font-size: 15px;
  line-height: 1.7;
}

.hc-cat-seo-body :where(h2, h3) {
  font-family: var(--hc-serif, Georgia, serif);
  font-weight: 500;
  color: var(--hc-ink, #1a1714);
  margin: 18px 0 8px;
}

.hc-cat-seo-body :where(h2, h3):first-child {
  margin-top: 0;
}

.hc-cat-seo-body p {
  margin: 0 0 12px;
}

.hc-cat-seo-body :where(ul, ol) {
  margin: 0 0 12px;
  padding-left: 20px;
}

.hc-cat-seo-body li {
  margin: 4px 0;
}

.hc-cat-seo-body a {
  color: var(--hc-accent-dark, var(--hc-accent-dark));
  text-decoration: underline;
  text-underline-offset: 2px;
}
.hc-cat-seo-body .hc-btn--primary,
.hc-cat-seo-body .hc-btn--primary:hover,
.hc-cat-seo-body .hc-btn--primary:focus-visible {
  color: var(--hc-paper, #ffffff);
  text-decoration: none;
}

.hc-cat-seo-body .lead {
  font-size: 17px;
  line-height: 1.6;
  color: var(--hc-ink, #1a1714);
}

/* Infographic — spec cards (icon + key fact). */
.hc-cat-seo-body .hc-info {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(148px, 1fr));
  gap: 12px;
  margin: 20px 0 24px;
}

.hc-cat-seo-body .hc-info__card {
  display: grid;
  gap: 5px;
  justify-items: start;
  padding: 16px 18px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 14px;
  background:
    radial-gradient(120% 130% at 0% 0%, rgba(var(--hc-gold-rgb), 0.12), transparent 60%),
    linear-gradient(180deg, rgba(255, 253, 250, 0.9), rgba(250, 246, 240, 0.5));
}

.hc-cat-seo-body .hc-info__ic {
  width: 26px;
  height: 26px;
  color: var(--hc-accent-dark, var(--hc-accent-dark));
}

.hc-cat-seo-body .hc-info__v {
  font-family: var(--hc-serif, Georgia, serif);
  font-size: 21px;
  font-weight: 500;
  line-height: 1.1;
  color: var(--hc-ink, #1a1714);
}

.hc-cat-seo-body .hc-info__l {
  font-size: 12px;
  letter-spacing: 0.02em;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.55));
}

/* FAQ — native accordion, premium styling + FAQPage JSON-LD alongside. */
.hc-cat-seo-body .hc-faq {
  display: grid;
  gap: 8px;
  margin: 10px 0 6px;
}

.hc-cat-seo-body .hc-faq__item {
  padding: 0 16px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 12px;
  background: rgba(255, 253, 250, 0.6);
}

.hc-cat-seo-body .hc-faq__item summary {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 13px 0;
  cursor: pointer;
  list-style: none;
  font-family: var(--hc-sans, system-ui, sans-serif);
  font-size: 15px;
  font-weight: 500;
  color: var(--hc-ink, #1a1714);
}

.hc-cat-seo-body .hc-faq__item summary::-webkit-details-marker {
  display: none;
}

.hc-cat-seo-body .hc-faq__item summary::after {
  content: "+";
  flex: none;
  font-size: 20px;
  line-height: 1;
  color: var(--hc-accent, #b8895a);
}

.hc-cat-seo-body .hc-faq__item[open] summary::after {
  content: "\2212";
}

.hc-cat-seo-body .hc-faq__item > div {
  padding: 0 0 14px;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.72));
  font-size: 14px;
  line-height: 1.6;
}


/* Direct landing editorial blocks rendered from shop_seo_landings.body_html. */
.hc-cat-seo-body--landing {
  margin: 18px 0 22px;
}
.hc-cat-seo-body .ld-hero {
  display: grid;
  gap: 16px;
  padding: 22px 24px;
  margin: 0 0 22px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 18px;
  background:
    radial-gradient(110% 140% at 0% 0%, rgba(var(--hc-gold-rgb), 0.18), transparent 62%),
    linear-gradient(180deg, rgba(255, 253, 250, 0.94), rgba(250, 246, 240, 0.56));
}
.hc-cat-seo-body .ld-lead {
  max-width: 860px;
  margin: 0;
  font-size: clamp(17px, 1.5vw, 21px);
  line-height: 1.55;
  color: var(--hc-ink, #1a1714);
}
.hc-cat-seo-body .ld-usp {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 0;
  margin: 0;
  list-style: none;
}
.hc-cat-seo-body .ld-usp li,
.hc-cat-seo-body .ld-tiles a {
  display: inline-flex;
  align-items: center;
  min-height: 34px;
  padding: 8px 12px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.72);
  color: var(--hc-ink, #1a1714);
  text-decoration: none;
}
.hc-cat-seo-body .ld-cta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 2px 0 0;
}
.hc-cat-seo-body table {
  width: 100%;
  border-collapse: collapse;
  margin: 12px 0 20px;
  overflow: hidden;
  border-radius: 14px;
  box-shadow: inset 0 0 0 1px rgba(141, 109, 71, 0.14);
}
.hc-cat-seo-body :where(th, td) {
  padding: 12px 14px;
  border-bottom: 1px solid rgba(141, 109, 71, 0.12);
  text-align: left;
  vertical-align: top;
}
.hc-cat-seo-body th {
  background: rgba(var(--hc-gold-rgb), 0.13);
  color: var(--hc-ink, #1a1714);
  font-weight: 650;
}
.hc-cat-seo-body tr:last-child td { border-bottom: 0; }
.hc-cat-seo-body .ld-tiles {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 14px;
}
.hc-cat-seo-body .ld-links {
  padding-top: 12px;
  border-top: 1px solid rgba(141, 109, 71, 0.14);
}
@media (max-width: 760px) {
  .hc-cat-seo-body--landing {
    padding: 18px 16px;
  }
  .hc-cat-seo-body .ld-hero {
    padding: 18px 16px;
    border-radius: 14px;
  }
  .hc-cat-seo-body table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
  }
}


/* Keep ad landing copy above catalog controls in the catalog head grid. */
.hc-cat-head--landing > .hc-cat-seo-body--landing {
  grid-column: 1 / -1;
  grid-row: 4;
}
.hc-cat-head--landing > .hc-cat-head__search {
  grid-column: 1;
  grid-row: 5;
}
.hc-cat-head--landing > .hc-cat-head__allcats {
  grid-column: 2;
  grid-row: 5;
  justify-self: end;
  align-self: center;
}
.hc-cat-head--landing > .hc-cat-head__guide {
  grid-column: 1 / -1;
  grid-row: 6;
}
.hc-cat-head--landing > * {
  min-width: 0;
}
.hc-cat-head--landing .hc-cat-head__title,
.hc-cat-head--landing .ld-lead,
.hc-cat-head--landing .ld-usp li,
.hc-cat-head--landing .ld-tiles a {
  overflow-wrap: anywhere;
}
@media (max-width: 768px) {
  .hc-cat-head--landing > .hc-cat-seo-body--landing,
  .hc-cat-head--landing > .hc-cat-head__search,
  .hc-cat-head--landing > .hc-cat-head__allcats,
  .hc-cat-head--landing > .hc-cat-head__guide {
    grid-column: 1;
    grid-row: auto;
    justify-self: stretch;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
  }
}

/* css/blocks/280-pdp-lkm.css */
/* =================== pdp-lkm.css — ЛКМ развес/тара переключатель =================== */
.pdp-lkm__tabs{display:inline-flex;gap:4px;background:rgba(var(--hc-gold-rgb),.12);border:1px solid rgba(141,109,71,.16);border-radius:999px;padding:3px;margin-bottom:8px}
.pdp-lkm__tab{appearance:none;border:0;background:transparent;cursor:pointer;font:600 12px/1 var(--hc-sans,"Outfit",sans-serif);color:var(--hc-ink-soft,rgba(26,23,20,.6));padding:7px 14px;border-radius:999px;transition:background .18s ease,color .18s ease}
.pdp-lkm__tab--on{background:var(--hc-paper,#fff);color:var(--hc-ink,#1a1714);box-shadow:0 1px 2px rgba(27,20,13,.1)}
.pdp-lkm__u{font-size:13px;color:var(--hc-ink-soft,rgba(26,23,20,.5));margin-left:4px;font-weight:400}

/* css/blocks/281-hettich-cfg.css */
/* =================== hettich-cfg.css — узел-конфигуратор Hettich (scoped .htcfg) =================== */
.htcfg{margin:22px 0;padding:22px;border:1px solid var(--hc-line-2,rgba(180,151,115,.22));border-radius:18px;background:linear-gradient(180deg,#fff,#fbf7ec)}
.htcfg .cfg__head{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.htcfg .cfg__head svg{width:22px;height:22px;color:var(--hc-accent-dark,#7a6548)}
.htcfg .cfg__head h2{margin:0;font:600 19px/1.2 var(--hc-serif,"Playfair Display",Georgia,serif);color:var(--hc-ink,#1a1714)}
.htcfg .compat{margin-left:auto;font:600 11px/1 var(--hc-mono,monospace);color:#2e7d4f;background:rgba(46,125,79,.1);padding:6px 10px;border-radius:999px}
.htcfg .cfg__sub{font-size:13px;color:var(--hc-ink-soft,rgba(26,23,20,.62));margin-bottom:16px;max-width:62ch}
.htcfg .cfg__bar{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:16px;padding:14px 16px;background:rgba(var(--hc-gold-rgb),.1);border-radius:12px;margin-bottom:16px}
.htcfg .qty-wrap small,.htcfg .tot small{display:block;font:600 10px/1 var(--hc-mono,monospace);letter-spacing:.06em;text-transform:uppercase;color:var(--hc-ink-soft,rgba(26,23,20,.5));margin-bottom:5px}
.htcfg .qty{display:inline-flex;align-items:center;border:1px solid var(--hc-line-2,rgba(180,151,115,.3));border-radius:10px;overflow:hidden;background:#fff}
.htcfg .qty button{appearance:none;border:0;background:transparent;width:34px;height:36px;font-size:18px;cursor:pointer;color:var(--hc-ink,#1a1714)}
.htcfg .qty input{width:46px;height:36px;border:0;text-align:center;font:600 15px/1 var(--hc-sans,"Outfit",sans-serif);-moz-appearance:textfield}
.htcfg .qty input::-webkit-outer-spin-button,.htcfg .qty input::-webkit-inner-spin-button{-webkit-appearance:none}
.htcfg .qty__u{padding:0 8px 0 2px;font-size:12px;color:var(--hc-ink-soft,rgba(26,23,20,.5))}
.htcfg .note{font-size:12px;color:var(--hc-ink-soft,rgba(26,23,20,.6));line-height:1.4}
.htcfg .tot{text-align:right}.htcfg .tot b{font:600 22px/1 var(--hc-serif,"Playfair Display",Georgia,serif);color:var(--hc-ink,#1a1714)}
.htcfg .btn--gold{appearance:none;border:0;cursor:pointer;background:linear-gradient(180deg,#caa86a,#b4925f);color:#2a2113;font:600 13px/1 var(--hc-sans,"Outfit",sans-serif);padding:13px 20px;border-radius:10px;white-space:nowrap}
.htcfg .selrow{display:grid;grid-template-columns:160px 1fr;align-items:center;gap:14px;padding:11px 0;border-bottom:1px dashed var(--hc-line-2,rgba(180,151,115,.2))}
.htcfg .selrow .l{font:600 13px/1.3 var(--hc-sans,"Outfit",sans-serif);color:var(--hc-ink,#1a1714)}
.htcfg .selbox{width:100%;padding:10px 12px;border:1px solid var(--hc-line-2,rgba(180,151,115,.3));border-radius:9px;background:#fff;font-size:13px;color:var(--hc-ink,#1a1714)}
.htcfg .dchips{display:flex;flex-wrap:wrap;gap:6px}
.htcfg .dchip{cursor:pointer;padding:8px 12px;border:1px solid var(--hc-line-2,rgba(180,151,115,.3));border-radius:8px;background:#fff;font:600 13px/1 var(--hc-sans,"Outfit",sans-serif);color:var(--hc-ink,#1a1714)}
.htcfg .dchip small{font-weight:400;color:var(--hc-ink-soft,rgba(26,23,20,.5))}
.htcfg .dchip.sel{background:var(--hc-ink,#1a1714);color:#fff;border-color:var(--hc-ink,#1a1714)}
.htcfg .dchip.sel small{color:rgba(255,255,255,.7)}
.htcfg .dchip.na{opacity:.35;cursor:not-allowed;text-decoration:line-through}
.htcfg .warnmp{font-size:11px;color:#b4502a;margin-left:8px}
.htcfg .kit{margin-top:16px}
.htcfg .kit__t{font:600 11px/1 var(--hc-mono,monospace);letter-spacing:.08em;text-transform:uppercase;color:var(--hc-accent-dark,#7a6548);margin-bottom:8px}
.htcfg .kit__row{display:grid;grid-template-columns:44px 1fr auto auto;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed var(--hc-line-2,rgba(180,151,115,.18))}
.htcfg .kit__row .nm b{display:block;font-size:13px;font-weight:600;line-height:1.25;color:var(--hc-ink,#1a1714)}
.htcfg .kit__row .nm small{font-size:11px;color:var(--hc-ink-soft,rgba(26,23,20,.5))}
.htcfg .role{font:600 9.5px/1 var(--hc-mono,monospace);letter-spacing:.05em;text-transform:uppercase;color:var(--hc-accent-dark,#7a6548);border:1px solid var(--hc-line-2,rgba(180,151,115,.3));padding:4px 8px;border-radius:999px;white-space:nowrap}
.htcfg .kit__row .q{font:600 13px/1 var(--hc-mono,monospace);color:var(--hc-ink,#1a1714);white-space:nowrap}
.htcfg .addon{display:grid;grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:10px;padding:10px 0;border-bottom:1px dashed var(--hc-line-2,rgba(180,151,115,.18))}
.htcfg .addon .nm b{display:block;font-size:13px;font-weight:600;color:var(--hc-ink,#1a1714)}
.htcfg .addon .nm small{font-size:11px;color:var(--hc-ink-soft,rgba(26,23,20,.5))}
.htcfg .mini{padding:7px 9px;border:1px solid var(--hc-line-2,rgba(180,151,115,.3));border-radius:8px;background:#fff;font-size:12px}
.htcfg .pr{font:600 13px/1 var(--hc-mono,monospace);color:var(--hc-accent-dark,#7a6548);white-space:nowrap}
@media(max-width:720px){
  .htcfg{padding:16px}
  .htcfg .cfg__bar{grid-template-columns:1fr}
  .htcfg .selrow{grid-template-columns:1fr}
  .htcfg .kit__row{grid-template-columns:44px minmax(0,1fr);align-items:start}
  .htcfg .kit__row .nm{min-width:0}
  .htcfg .role,
  .htcfg .kit__row .q{grid-column:2;justify-self:start;max-width:100%;white-space:normal;overflow-wrap:anywhere}
  .htcfg .btn--gold{width:100%;white-space:normal;line-height:1.2}
}
.htcfg .swatches{display:flex;gap:10px;flex-wrap:wrap}
.htcfg .sw{display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;padding:6px 8px;border:1.5px solid transparent;border-radius:10px}
.htcfg .sw i{width:30px;height:30px;border-radius:50%;border:1px solid rgba(0,0,0,.1);display:block}
.htcfg .sw span{font:600 11px/1 var(--hc-sans,"Outfit",sans-serif);color:var(--hc-ink-soft,rgba(26,23,20,.65))}
.htcfg .sw.sel{border-color:var(--hc-accent-dark,#7a6548);background:rgba(var(--hc-gold-rgb),.12)}
.htcfg .hchip{cursor:pointer;padding:8px 12px;border:1px solid var(--hc-line-2,rgba(180,151,115,.3));border-radius:8px;background:#fff;font:600 13px/1 var(--hc-sans,"Outfit",sans-serif);color:var(--hc-ink,#1a1714)}
.htcfg .hchip small{font-weight:400;color:var(--hc-ink-soft,rgba(26,23,20,.5))}
.htcfg .hchip.sel{background:var(--hc-ink,#1a1714);color:#fff;border-color:var(--hc-ink,#1a1714)}
.htcfg .hchip.sel small{color:rgba(255,255,255,.7)}

/* bundle-graph: миниатюра товара в строках комплекта + чипы выбора (вместо дропдаунов) */
.htcfg .kit__img{width:44px;height:44px;border-radius:8px;border:1px solid var(--hc-line-2,rgba(180,151,115,.2));background:#fff;overflow:hidden;display:flex;align-items:center;justify-content:center}
.htcfg .kit__img img{width:100%;height:100%;object-fit:contain}
.htcfg .bg-chips{display:flex;flex-wrap:wrap;gap:6px}
.htcfg .bg-chip{cursor:pointer;padding:8px 12px;border:1px solid var(--hc-line-2,rgba(180,151,115,.3));border-radius:8px;background:#fff;font:600 13px/1 var(--hc-sans,"Outfit",sans-serif);color:var(--hc-ink,#1a1714);transition:background .15s ease,border-color .15s ease,color .15s ease}
.htcfg .bg-chip:hover{border-color:var(--hc-accent-dark,#7a6548)}
.htcfg .bg-chip.is-on{background:var(--hc-ink,#1a1714);color:#fff;border-color:var(--hc-ink,#1a1714)}
.htcfg .bg-selpair{display:flex;gap:10px;flex-wrap:wrap;min-width:0}
.htcfg .bg-selpair .selbox{flex:1 1 200px;min-width:0;cursor:pointer}

/* drawer side-color swatches (moved from inline template) */
.htcfg .sw[data-c="Антрацит"] i{background:linear-gradient(145deg,#54585c,#2c2f33)}
.htcfg .sw[data-c="Серебристый"] i{background:linear-gradient(145deg,#cfd2d4,#a9adb0)}
.htcfg .sw[data-c="Белый"] i{background:linear-gradient(145deg,#fff,#e9e6df)}

/* [hidden]-строки конфигуратора должны прятаться: .selrow display:grid перебивал атрибут → пустой «Вариант» при <2 вариантах */
.htcfg [hidden],
.htcfg .selrow[hidden]{display:none}

/* css/blocks/283-lkm-cfg.css */
/* =================== lkm-cfg.css — ЛКМ комплектатор по рецептуре (scoped .lkmcfg) =================== */
.lkmcfg{margin:22px 0;padding:22px;border:1px solid var(--hc-line-2,rgba(180,151,115,.22));border-radius:18px;background:linear-gradient(180deg,#fff,#fbf7ec)}
.lkmcfg__head{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.lkmcfg__head svg{width:22px;height:22px;color:var(--hc-accent-dark,#7a6548);flex:none}
.lkmcfg__head h2{margin:0;font:600 19px/1.2 var(--hc-serif,"Playfair Display",Georgia,serif);color:var(--hc-ink,#1a1714)}
.lkmcfg__compat{margin-left:auto;font:600 11px/1 var(--hc-mono,monospace);color:#2e7d4f;background:rgba(46,125,79,.1);padding:6px 10px;border-radius:999px;white-space:nowrap}
.lkmcfg__sub{font-size:13px;line-height:1.5;color:var(--hc-ink-soft,rgba(26,23,20,.62));margin:0 0 16px;max-width:64ch}

.lkmcfg__kit{margin-bottom:16px}
.lkmcfg__kit-t{font:600 11px/1 var(--hc-mono,monospace);letter-spacing:.08em;text-transform:uppercase;color:var(--hc-accent-dark,#7a6548);margin-bottom:8px}
.lkmcfg__row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:10px 0;border-bottom:1px dashed var(--hc-line-2,rgba(180,151,115,.18))}
.lkmcfg__nm b{display:block;font-size:13px;font-weight:600;line-height:1.25;color:var(--hc-ink,#1a1714)}
.lkmcfg__nm a{text-decoration:none}
.lkmcfg__nm a:hover b{color:var(--hc-accent-dark,#7a6548)}
.lkmcfg__nm small{font-size:11px;color:var(--hc-ink-soft,rgba(26,23,20,.5))}
.lkmcfg__role{font:600 9.5px/1 var(--hc-mono,monospace);letter-spacing:.05em;text-transform:uppercase;color:var(--hc-accent-dark,#7a6548);border:1px solid var(--hc-line-2,rgba(180,151,115,.3));padding:4px 8px;border-radius:999px;white-space:nowrap}
.lkmcfg__row--base .lkmcfg__role{color:var(--hc-ink,#1a1714);border-color:var(--hc-ink,#1a1714)}
.lkmcfg__q{font:600 13px/1 var(--hc-mono,monospace);color:var(--hc-ink,#1a1714);white-space:nowrap;text-align:right;min-width:78px}

.lkmcfg__bar{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding:14px 16px;background:rgba(var(--hc-gold-rgb),.1);border-radius:12px}
.lkmcfg__qty-wrap{margin-right:auto}
.lkmcfg__qty-wrap small,.lkmcfg__tot small{display:block;font:600 10px/1 var(--hc-mono,monospace);letter-spacing:.06em;text-transform:uppercase;color:var(--hc-ink-soft,rgba(26,23,20,.5));margin-bottom:5px}
.lkmcfg__qty{display:inline-flex;align-items:center;border:1px solid var(--hc-line-2,rgba(180,151,115,.3));border-radius:10px;overflow:hidden;background:#fff}
.lkmcfg__qty button{appearance:none;border:0;background:transparent;width:34px;height:36px;font-size:18px;cursor:pointer;color:var(--hc-ink,#1a1714)}
.lkmcfg__qty input{width:46px;height:36px;border:0;text-align:center;font:600 15px/1 var(--hc-sans,"Outfit",sans-serif);-moz-appearance:textfield}
.lkmcfg__qty input::-webkit-outer-spin-button,.lkmcfg__qty input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.lkmcfg__tot{text-align:right}
.lkmcfg__tot b{font:600 22px/1 var(--hc-serif,"Playfair Display",Georgia,serif);color:var(--hc-ink,#1a1714)}
.lkmcfg__btn{appearance:none;border:0;cursor:pointer;background:linear-gradient(180deg,#caa86a,#b4925f);color:#2a2113;font:600 13px/1 var(--hc-sans,"Outfit",sans-serif);padding:13px 20px;border-radius:10px;white-space:nowrap}
.lkmcfg__btn:hover{background:linear-gradient(180deg,#d3b27a,#b89a63)}
.lkmcfg__btn:disabled{opacity:.6;cursor:default}
.lkmcfg__note{margin:12px 0 0;font-size:11.5px;line-height:1.45;color:var(--hc-ink-soft,rgba(26,23,20,.55))}

@media(max-width:720px){
  .lkmcfg__qty-wrap{margin-right:0}
  .lkmcfg__tot{margin-left:auto}
  .lkmcfg__btn{flex:1 1 100%;width:100%}
}

/* css/blocks/118-hc-pdp-bc-signals.css */
/* =================== hc-pdp-bc-signals.css =================== */
.hc-pdp-bc-signals {display: flex; flex-wrap: wrap; align-items: center; gap: var(--hc-sp-2); margin-bottom: var(--hc-sp-3)}
.hc-pdp-bc-signals__dot {color: var(--hc-accent)}
.hc-pdp-bc-signals__badges {display: flex; flex-wrap: wrap; gap: 6px}


/* css/blocks/120-hc-pdp-delivery.css */
/* =================== hc-pdp-delivery.css =================== */
/* hc-pdp-delivery — premium PDP delivery section. 3 method tiles (Самовывоз
 * / Курьер / Транспортная компания) + payment-pills strip + small ETA hint.
 * Strictly .hc-pdp-delivery / .hc-pdp-delivery__*. */

.hc-pdp-delivery__methods {
display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(12px, 1.4vw, 18px);
  margin-bottom: 22px;
}
.hc-pdp-delivery { width: 100%; }
@media (max-width: 920px) {
  .hc-pdp-delivery__methods { grid-template-columns: 1fr; }
}

.hc-pdp-delivery__tile {
position: relative;
  display: grid;
  grid-template-rows: auto auto 1fr auto;
  gap: 8px;
  min-height: 210px;
  padding: clamp(20px, 2.4vw, 32px);
  background: linear-gradient(180deg, var(--hc-paper, #ffffff) 0%, rgba(252, 248, 240, 0.94) 100%);
  border: 0.5px solid rgba(141, 109, 71, 0.22);
  border-radius: 16px;
  isolation: isolate;
  overflow: hidden;
  box-shadow:
    0 1px 2px rgba(40, 30, 15, 0.03),
    0 14px 32px -22px rgba(40, 30, 15, 0.14);
  transition: transform 0.28s cubic-bezier(0.2, 0.84, 0.3, 1), border-color 0.22s, box-shadow 0.28s;
}
.hc-pdp-delivery__tile::before {
content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background: radial-gradient(360px 200px at 80% -10%, rgba(var(--hc-gold-rgb), 0.18), transparent 60%);
  opacity: 0;
  transition: opacity 0.32s ease;
}
.hc-pdp-delivery__tile:hover {
transform: translateY(-4px);
  border-color: var(--hc-gold-border, rgba(var(--hc-gold-rgb), 0.55));
  box-shadow: 0 28px 56px -22px rgba(184, 154, 111, 0.32);
}
.hc-pdp-delivery__tile:hover::before {
opacity: 1;
}

.hc-pdp-delivery__tile-title {
font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-weight: 500;
  font-size: 18px;
  line-height: 1.2;
  letter-spacing: -0.005em;
  color: var(--hc-ink, #1a1714);
  margin: 4px 0 0;
}
.hc-pdp-delivery__tile-desc {
margin: 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.62));
}
.hc-pdp-delivery__tile-eta {
font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--hc-accent-dark, #7a6548);
}
.hc-pdp-delivery__tile-price {
font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: 16px;
  font-weight: 500;
  color: var(--hc-ink, #1a1714);
  letter-spacing: -0.01em;
}
.hc-pdp-delivery__tile-price--free {
font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--hc-success, #3d6b4f);
}

.hc-pdp-delivery__tile:hover .hc-pdp-delivery__tile-ico {
background: linear-gradient(135deg, var(--hc-gold, var(--hc-gold)), #b89a6f);
  color: #2a2018;
  transform: rotate(-6deg) scale(1.06);
}

/* css/blocks/121-hc-pdp-desc.css */
/* =================== hc-pdp-desc.css =================== */
/* hc-pdp-desc — premium description panel for PDP "Описание" tab/chapter.
 * Composed of: hero lede paragraph, key-features icon grid (3-up), and a
 * checked spec list with gold accent. Replaces flat <p>/<ul> markup.
 * Strictly .hc-pdp-desc / .hc-pdp-desc__*. */

.hc-pdp-desc {
display: grid;
  gap: clamp(14px, 1.8vw, 22px);
  min-width: 0;
  max-width: 100%;
  width: min(100%, 1120px);
  margin-inline: auto;
  padding: clamp(22px, 3vw, 42px);
  border: 1px solid rgba(141, 109, 71, 0.14);
  border-radius: 20px;
  background: linear-gradient(135deg, rgba(252, 248, 240, 0.66), rgba(255, 255, 255, 0.96) 58%);
}

/* ─── Lede: oversized editorial paragraph ─── */
.hc-pdp-desc__lede {
position: relative;
  margin: 0;
  padding: 12px 0 12px 24px;
  min-width: 0;
  max-width: 100%;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-weight: 400;
  font-size: clamp(18px, 1.5vw, 21px);
  line-height: 1.45;
  letter-spacing: -0.005em;
  color: var(--hc-ink, #1a1714);
  overflow-wrap: anywhere;
  word-break: normal;
}
.hc-pdp-desc__lede::before {
content: "";
  position: absolute;
  left: 0;
  top: 14px;
  bottom: 14px;
  width: 3px;
  border-radius: 2px;
  background: linear-gradient(180deg, var(--hc-gold, var(--hc-gold)), var(--hc-accent, var(--hc-accent)));
}
.hc-pdp-desc__lede em {
color: var(--hc-accent-dark, #7a6548);
  font-style: italic;
}

/* ─── Feature grid: 3-up cards на всю ширину panel с большими tiles ─── */
.hc-pdp-desc__features {
display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(16px, 1.8vw, 24px);
  width: 100%;
  min-width: 0;
  max-width: 100%;
}
.hc-pdp-desc__feature {
position: relative;
  display: grid;
  grid-template-rows: auto auto 1fr;
  gap: 12px;
  padding: clamp(24px, 2.4vw, 36px) clamp(22px, 2.2vw, 32px);
  background: linear-gradient(180deg, var(--hc-paper, #ffffff) 0%, rgba(252, 248, 240, 0.92) 100%);
  border: 0.5px solid rgba(141, 109, 71, 0.20);
  border-radius: clamp(14px, 1.2vw, 18px);
  min-height: 190px;
  min-width: 0;
  max-width: 100%;
  isolation: isolate;
  transition: transform 0.28s cubic-bezier(0.2, 0.84, 0.3, 1), border-color 0.22s, box-shadow 0.28s;
}
@media (max-width: 720px) {
  .hc-pdp-desc__features { grid-template-columns: 1fr; gap: 12px; }
  .hc-pdp-desc__feature { min-height: 0; padding: 22px; }
}
.hc-pdp-desc__feature::before {
content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background: radial-gradient(280px 160px at 80% -10%, rgba(var(--hc-gold-rgb), 0.18), transparent 60%);
  opacity: 0;
  transition: opacity 0.32s ease;
}
.hc-pdp-desc__feature:hover {
transform: translateY(-3px);
  border-color: var(--hc-gold-border, rgba(var(--hc-gold-rgb), 0.55));
  box-shadow: 0 18px 36px -22px rgba(184, 154, 111, 0.32);
}
.hc-pdp-desc__feature:hover::before {
opacity: 1;
}

.hc-pdp-desc__feature-title {
margin: 4px 0 0;
  min-width: 0;
  max-width: 100%;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-weight: 500;
  font-size: 16px;
  line-height: 1.2;
  letter-spacing: -0.005em;
  color: var(--hc-ink, #1a1714);
  overflow-wrap: anywhere;
}
.hc-pdp-desc__feature-text {
margin: 0;
  min-width: 0;
  max-width: 100%;
  font-size: 13px;
  line-height: 1.5;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.62));
  overflow-wrap: anywhere;
}
.hc-pdp-desc__feature-num {
position: absolute;
  top: 14px;
  right: 16px;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.10em;
  color: rgba(141, 109, 71, 0.35);
}

.hc-pdp-desc__feature-ico {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  color: var(--hc-accent-dark, #7a6548);
  background: rgba(var(--hc-gold-rgb), 0.16);
  transition: transform 0.28s cubic-bezier(0.2,0.84,0.3,1), background 0.22s, color 0.22s;
}
.hc-pdp-desc__feature:hover .hc-pdp-desc__feature-ico {
transform: rotate(-5deg) scale(1.06);
  background: linear-gradient(135deg, var(--hc-gold, var(--hc-gold)), #b89a6f);
  color: #2a2018;
}

/* ─── Rich formatted body (format_description filter): p / h4 / ul ─── */
.hc-pdp-desc__rich {
  min-width: 0;
  width: 100%;
  max-width: 86ch;
  margin-inline: auto;
}
.hc-pdp-desc__rich > :first-child { margin-top: 0; }
.hc-pdp-desc__rich > :last-child { margin-bottom: 0; }
.hc-pdp-desc__rich p {
  margin: 0 0 14px;
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 15px;
  line-height: 1.7;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.82));
  overflow-wrap: anywhere;
}
.hc-pdp-desc__h {
  margin: 26px 0 12px;
  padding-bottom: 8px;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-weight: 500;
  font-size: clamp(17px, 1.4vw, 20px);
  line-height: 1.2;
  letter-spacing: -0.005em;
  color: var(--hc-ink, #1a1714);
  border-bottom: 0.5px solid rgba(141, 109, 71, 0.18);
  overflow-wrap: anywhere;
}
.hc-pdp-desc__h:first-child { margin-top: 0; }
.hc-pdp-desc__ul {
  margin: 0 0 16px;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 8px;
}
.hc-pdp-desc__ul li {
  position: relative;
  padding-left: 26px;
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.82));
  overflow-wrap: anywhere;
}
.hc-pdp-desc__ul li::before {
  content: "";
  position: absolute;
  left: 5px;
  top: 9px;
  width: 7px;
  height: 7px;
  border-radius: 2px;
  background: linear-gradient(135deg, var(--hc-gold, var(--hc-gold)), var(--hc-accent, var(--hc-accent)));
}

/* Donor-imported descriptions arrive as clean HTML and are rendered as-is
   (templating._product_description_html), so they carry bare h2/h3/ul/li —
   never the __h / __ul classes above. Without these rules a heading inside
   the description read as one more paragraph and the whole tab was a wall
   of text. Same visual language, applied to the raw tags, scoped to the
   rich container so nothing leaks out of the block. */
.hc-pdp-desc__rich h2,
.hc-pdp-desc__rich h3,
.hc-pdp-desc__rich h4 {
  margin: 26px 0 12px;
  padding-bottom: 8px;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-weight: 500;
  font-size: clamp(17px, 1.4vw, 20px);
  line-height: 1.2;
  letter-spacing: -0.005em;
  color: var(--hc-ink, #1a1714);
  border-bottom: 0.5px solid rgba(141, 109, 71, 0.18);
  overflow-wrap: anywhere;
}
.hc-pdp-desc__rich h4 {
  font-size: clamp(15px, 1.1vw, 17px);
  border-bottom: 0;
  padding-bottom: 0;
}
.hc-pdp-desc__rich > :first-child { margin-top: 0; }

.hc-pdp-desc__rich ul,
.hc-pdp-desc__rich ol {
  margin: 0 0 16px;
  padding: 0;
  display: grid;
  gap: 8px;
}
.hc-pdp-desc__rich ul { list-style: none; }
.hc-pdp-desc__rich ol { padding-left: 22px; }
.hc-pdp-desc__rich li {
  position: relative;
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.82));
  overflow-wrap: anywhere;
}
.hc-pdp-desc__rich ul > li { padding-left: 26px; }
.hc-pdp-desc__rich ul > li::before {
  content: "";
  position: absolute;
  left: 5px;
  top: 9px;
  width: 7px;
  height: 7px;
  border-radius: 2px;
  background: linear-gradient(135deg, var(--hc-gold, var(--hc-gold)), var(--hc-accent, var(--hc-accent)));
}
.hc-pdp-desc__rich strong,
.hc-pdp-desc__rich b { color: var(--hc-ink, #1a1714); font-weight: 600; }
.hc-pdp-desc__rich table {
  width: 100%;
  margin: 0 0 16px;
  border-collapse: collapse;
  font-size: 14.5px;
}
.hc-pdp-desc__rich th,
.hc-pdp-desc__rich td {
  padding: 8px 12px;
  text-align: left;
  border-bottom: 0.5px solid rgba(141, 109, 71, 0.16);
}
.hc-pdp-desc__rich th { font-weight: 600; color: var(--hc-ink, #1a1714); }

/* ─── Рецептура смешивания: технологическая связка ЛКМ (v7.65) ───
 * Rebuilt from the legacy flat-text grid: component / purpose / mix-ratio
 * by weight & volume, with each component code linking to its product.
 * Strictly .hc-recipe / .hc-recipe__*. */
.hc-recipe-wrap {
  margin: 4px 0 2px;
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.hc-recipe__cap {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 10px;
  padding-left: 16px;
  position: relative;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--hc-accent-dark, #7a6548);
}
.hc-recipe__cap::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 8px;
  height: 8px;
  transform: translateY(-50%) rotate(45deg);
  border-radius: 1.5px;
  background: linear-gradient(135deg, var(--hc-gold, var(--hc-gold)), var(--hc-accent, var(--hc-accent)));
}
.hc-recipe {
  width: 100%;
  border-collapse: collapse;
  font-size: 14.5px;
  color: var(--hc-ink, #1a1714);
  background: linear-gradient(180deg, var(--hc-paper, #fff) 0%, rgba(252, 248, 240, 0.55) 100%);
  border: 0.5px solid rgba(141, 109, 71, 0.20);
  border-radius: 14px;
  overflow: hidden;
}
.hc-recipe thead th {
  padding: 12px 16px;
  text-align: left;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--hc-accent-dark, #7a6548);
  background: rgba(var(--hc-gold-rgb), 0.12);
  border-bottom: 0.5px solid rgba(141, 109, 71, 0.22);
  white-space: nowrap;
}
.hc-recipe thead th:nth-child(3),
.hc-recipe thead th:nth-child(4),
.hc-recipe tbody td:nth-child(3),
.hc-recipe tbody td:nth-child(4) {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.hc-recipe tbody td {
  padding: 13px 16px;
  vertical-align: middle;
  border-bottom: 0.5px solid rgba(141, 109, 71, 0.12);
}
.hc-recipe tbody tr:last-child td { border-bottom: 0; }
.hc-recipe tbody tr { transition: background 0.18s ease; }
.hc-recipe tbody tr:hover { background: rgba(var(--hc-gold-rgb), 0.08); }
.hc-recipe tbody td:nth-child(2) {
  color: var(--hc-muted, #6b5d4d);
  line-height: 1.4;
}
.hc-recipe tbody td:nth-child(3),
.hc-recipe tbody td:nth-child(4) {
  font-weight: 600;
  color: var(--hc-accent-dark, #7a6548);
  white-space: nowrap;
}
/* component code — chip; clickable when the отвердитель/разбавитель is in stock */
.hc-recipe__code {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.01em;
  color: var(--hc-accent-dark, #7a6548);
  border: 0.5px solid rgba(141, 109, 71, 0.30);
  background: var(--hc-paper, #fff);
  white-space: nowrap;
}
a.hc-recipe__code {
  text-decoration: none;
  transition: background 0.2s, border-color 0.2s, color 0.2s, transform 0.2s;
}
a.hc-recipe__code:hover {
  color: #fff;
  background: linear-gradient(135deg, var(--hc-gold, var(--hc-gold)), var(--hc-accent, var(--hc-accent)));
  border-color: transparent;
  transform: translateY(-1px);
}
@media (max-width: 560px) {
  .hc-recipe { font-size: 13.5px; min-width: 460px; }
  .hc-recipe thead th, .hc-recipe tbody td { padding: 10px 12px; }
}

/* css/blocks/123-hc-pdp-gallery.css */
/* =================== hc-pdp-gallery.css =================== */
/* hc-pdp-gallery - premium PDP gallery: tabs (Фото/360/Видео), big main image
 * with subtle gold-tinted bg and zoom-on-hover, thumbnail grid below with
 * gold-accent active state, and empty-state SVG placeholder when no images.
 * Strictly .hc-pdp-gallery / .hc-pdp-gallery__*. */

.hc-pdp-gallery {
position: relative;
  min-width: 0;
}

/* tabs (Фото / 360° / Видео / Схема) */
.hc-pdp-gallery__tabs {
display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 16px;
}
.hc-pdp-gallery__tab {
display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 16px;
  background: rgba(255, 252, 247, 0.86);
  border: 0.5px solid rgba(141, 109, 71, 0.18);
  border-radius: var(--hc-r-pill, 999px);
  font: inherit;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.62));
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease, transform 0.18s ease;
}
.hc-pdp-gallery__tab:hover {
background: rgba(var(--hc-gold-rgb), 0.16);
  border-color: var(--hc-gold-border, rgba(var(--hc-gold-rgb), 0.4));
  color: var(--hc-ink, #1a1714);
}
.hc-pdp-gallery__tab.is-active {
background: linear-gradient(180deg, rgba(28, 24, 20, 0.98), rgba(17, 14, 12, 1));
  color: var(--hc-paper, #ffffff);
  border-color: rgba(0, 0, 0, 0.5);
  box-shadow: 0 4px 10px -2px rgba(0, 0, 0, 0.28);
}

/* main image — large, premium gold-tinted bg, smooth hover zoom */
.hc-pdp-gallery__main {
position: relative;
  aspect-ratio: 1 / 1;
  padding: 0;
  background: var(--hc-paper, #fff);
  border: 0;
  border-radius: 18px;
  overflow: hidden;
  isolation: isolate;
  cursor: zoom-in;
  box-shadow: 0 24px 60px -42px rgba(40, 30, 15, 0.32);
}
.hc-pdp-gallery__main::before { display: none; }
.hc-pdp-gallery__main--empty {
cursor: default;
}
.hc-pdp-gallery__main--zoomable {
--hc-zoom-x: 50%;
  --hc-zoom-y: 50%;
}
.hc-pdp-gallery__main img, .hc-pdp-gallery__img {
  position: relative;
  z-index: 1;
  width: 100%;
  height: 100%;
  object-fit: contain;
  transform-origin: var(--hc-zoom-x, 50%) var(--hc-zoom-y, 50%);
  transition:
    transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.25s ease,
    filter 0.55s ease;
}
/* Decor swatches are portrait photographs of a repeating texture (573×800 is
   typical) shown in a landscape frame, so `contain` left wide empty bands down
   both sides — measured 343×276 frame against a 0.72 source ratio. Cropping a
   repeating texture costs nothing, so flat materials fill the frame instead.
   Only those types: a hinge or a handle must never be cropped. */
.hc-pdp-gallery__main--texture .hc-pdp-gallery__img:not(.hc-img-lowres):not(.hc-img-broken) {
  object-fit: cover;
}

.hc-pdp-gallery__img.hc-img-lowres {
  position: absolute;
  inset: 0;
  width: min(calc(100% - 40px), var(--hc-img-source-width, 480px));
  height: min(calc(100% - 40px), var(--hc-img-source-height, 360px));
  margin: auto;
  object-fit: contain;
}
.hc-pdp-gallery__main:hover img {
transform: scale(1.06);
  filter: drop-shadow(0 28px 50px rgba(40, 30, 15, 0.22));
}


.hc-pdp-gallery__zoom {
position: absolute;
  top: 16px;
  right: 16px;
  z-index: 2;
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.96);
  border: 0.5px solid rgba(141, 109, 71, 0.18);
  border-radius: 50%;
  color: var(--hc-ink, #1a1714);
  pointer-events: none;
  box-shadow: 0 6px 14px -4px rgba(40, 30, 15, 0.18);
  opacity: 0.85;
  transition: opacity 0.22s ease;
}

.hc-pdp-gallery__counter {
position: absolute;
  right: 16px;
  bottom: 16px;
  z-index: 2;
  padding: 6px 12px;
  background: rgba(26, 23, 20, 0.84);
  color: var(--hc-paper, #ffffff);
  border-radius: var(--hc-r-pill);
  font-family: var(--hc-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.06em;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.hc-pdp-gallery__sale {
position: absolute;
  top: 16px;
  left: 16px;
  z-index: 2;
}


/* thumbnails grid — tight 7-column row под gallery, по mock M1.
   Лишние превью (>7) скрываются вместо переноса во вторую строку. */
.hc-pdp-gallery__thumbs {
display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 8px;
  margin-top: 14px;
  padding-bottom: 0;
}
.hc-pdp-gallery__thumbs > :nth-child(n+8) {
display: none;
}
.hc-pdp-gallery__thumb {
aspect-ratio: 1;
  padding: 6px;
  background: var(--hc-paper-3, var(--hc-paper-3));
  border: 1px solid rgba(141, 109, 71, 0.14);
  border-radius: 10px;
  overflow: hidden;
  cursor: pointer;
  transition:
    border-color 0.22s ease,
    transform 0.22s ease,
    box-shadow 0.22s ease;
}
.hc-pdp-gallery__thumb img {
width: 100%;
  height: 100%;
  object-fit: contain;
}
.hc-pdp-gallery__thumb:hover {
transform: translateY(-2px);
  border-color: var(--hc-gold-border, rgba(var(--hc-gold-rgb), 0.55));
  box-shadow: 0 8px 18px -8px rgba(184, 154, 111, 0.32);
}
.hc-pdp-gallery__thumb.is-active {
border-color: var(--hc-accent, var(--hc-accent));
  background: rgba(var(--hc-gold-rgb), 0.18);
  box-shadow: 0 8px 22px -6px rgba(var(--hc-accent-rgb), 0.32);
}

/* empty state — no images, SVG placeholder + CTA */
.hc-pdp-gallery__empty {
display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 18px;
  width: 100%;
  min-height: 420px;
  padding: clamp(24px, 4vw, 48px);
  background: linear-gradient(160deg, var(--hc-paper-2) 0%, var(--hc-bg-warm) 100%);
  border: 0.5px solid rgba(141, 109, 71, 0.18);
  border-radius: clamp(20px, 2vw, 28px);
  color: var(--hc-ink-mid);
  text-align: center;
}
.hc-pdp-gallery__empty-art {
width: 100%;
  max-width: 420px;
  margin: 0 auto;
  opacity: 0.85;
}
.hc-pdp-gallery__empty-msg {
display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: center;
  padding: 8px 16px;
  text-align: center;
}
.hc-pdp-gallery__empty-msg strong {
display: block;
  font-family: var(--hc-serif, "Playfair Display", serif);
  font-weight: 500;
  font-size: 17px;
  color: var(--hc-ink, #1a1714);
  margin-bottom: 4px;
}
.hc-pdp-gallery__empty-msg span {
display: block;
  max-width: 44ch;
  font-size: 13px;
  line-height: 1.55;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.62));
  margin-bottom: 10px;
}

.hc-pdp-gallery__content[hidden] {
  display: none;
}

.hc-pdp-gallery__empty--runtime[hidden] {
  display: none;
}

@media (max-width: 920px) {
  .hc-pdp-gallery__img.hc-img-broken { display: none; }
  .hc-pdp-gallery__thumbs {
    grid-template-columns: repeat(5, 1fr);
    gap: 6px;
  }
  .hc-pdp-gallery__thumbs > :nth-child(n+6) {
    display: none;
  }
}

@media (max-width: 480px) {
  .hc-pdp-gallery__main { padding: 0; }
  .hc-pdp-gallery__zoom { width: 32px; height: 32px; top: 12px; right: 12px; }
}

.hc-pdp-gallery__main:hover .hc-pdp-gallery__img {
  transform: scale(1.06);
  filter: drop-shadow(0 28px 50px rgba(40, 30, 15, 0.22));
}
.hc-pdp-gallery__main.is-zooming .hc-pdp-gallery__img {
  transform: scale(2.2);
}
.hc-pdp-gallery__main:hover .hc-pdp-gallery__zoom {
  opacity: 1;
}

/* css/blocks/125-hc-pdp-m1.css */
/* =================== hc-pdp-m1.css =================== */
/* Canonical PDP M1 layout. Single source of truth for hero/buy/tabs rhythm. */

.hc-pdp-m1__hero {
  display: grid;
  grid-template-columns: minmax(0, 1.28fr) minmax(360px, 0.92fr);
  align-items: start;
  gap: clamp(18px, 2vw, 30px);
  max-width: 100%;
  margin: 16px 0 26px;
}

.hc-pdp-m1__gallery {
  min-width: 0;
}

.hc-pdp-m1__aside {
  min-width: 0;
  max-width: 100%;
  display: grid;
  gap: 10px;
  align-content: start;
}

.hc-pdp-m1__eyebrow {
  margin: 0;
  max-width: 100%;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px; /* was 10px */
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #7a6548;
  overflow-wrap: anywhere;
}

.hc-pdp-m1__title {
  margin: 0;
  max-width: 100%;
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(33px, 2.75vw, 48px);
  line-height: 1.05;
  letter-spacing: 0;
  text-wrap: balance;
  overflow-wrap: anywhere;
}

.hc-pdp-m1__buy {
  position: sticky;
  top: calc(var(--hc-hdr-h, 72px) + 10px);
  min-width: 0;
  max-width: 100%;
  padding: 16px;
  border: 1px solid rgba(141, 109, 71, 0.2);
  border-radius: 14px;
  background: linear-gradient(180deg, var(--hc-paper) 0%, var(--hc-paper-2) 100%);
  box-shadow: 0 18px 40px -28px rgba(40, 30, 15, 0.28);
}

.hc-pdp-m1__sku-row {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  max-width: 100%;
  padding: 4px 4px 4px 10px;
  margin: 0 0 12px;
  border: 1px solid rgba(var(--hc-gold-rgb), 0.42);
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(var(--hc-gold-rgb), 0.2), rgba(var(--hc-gold-rgb), 0.08));
}

.hc-pdp-m1__sku-key {
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  /* was 9px — the smallest text on the page, and it labels the article
     number a customer reads out to a manager */
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(26, 23, 20, 0.56);
}

.hc-pdp-m1__sku-val {
  min-width: 0;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #1a1714;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  overflow-wrap: anywhere;
}

.hc-pdp-m1__sku-copy {
  width: 24px;
  height: 24px;
  border: 1px solid rgba(141, 109, 71, 0.22);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  color: #7a6548;
  cursor: pointer;
  transition: transform 0.18s ease, background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}

.hc-pdp-m1__sku-copy:hover {
  transform: scale(1.08);
  background: #1a1714;
  border-color: #1a1714;
  color: #fff;
}

.hc-pdp-m1__sku-copy svg {
  width: 11px;
  height: 11px;
}

.hc-pdp-m1__sku-copy-label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
}

.hc-pdp-m1__price-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 12px;
}

.hc-pdp-m1__price {
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(34px, 2.75vw, 46px);
  line-height: 0.98;
  letter-spacing: 0;
}

.hc-pdp-m1__price-old {
  color: rgba(26, 23, 20, 0.42);
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 14px;
  text-decoration: line-through;
}

.hc-pdp-m1__sale-chip {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 4px 9px;
  border-radius: 8px;
  background: #8b3f32;
  color: #fff;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.hc-pdp-m1__stock {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 30px;
  margin: 10px 0 14px;
  padding: 5px 10px;
  border: 1px solid rgba(61, 107, 79, 0.26);
  border-radius: 999px;
  background: rgba(61, 107, 79, 0.1);
  color: #3d6b4f;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.hc-pdp-m1__stock-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}

.hc-pdp-m1__ctas {
  display: grid;
  grid-template-columns: 124px 1fr;
  gap: 10px;
  align-items: stretch;
}
/* Compact qty (col 1) sits inline with the primary «В корзину» (col 2);
   secondary CTAs span the full width below. Keeps the buy action dominant. */
.hc-pdp-m1__cta-primary {
  grid-column: 2;
}
.hc-pdp-m1__cta-outline,
.hc-pdp-m1__cta-kit {
  grid-column: 1 / -1;
}

.hc-pdp-m1__cta-kit {
  border-color: rgba(47, 111, 76, 0.30);
  background: rgba(47, 111, 76, 0.08);
  color: #2f6f4c;
  text-decoration: none;
}

.hc-pdp-m1__cta-kit:hover {
  background: #2f6f4c;
  color: #fff;
}

.hc-pdp-m1__qty {
  grid-column: 1;
  display: grid;
  /* Fixed-min middle column: an <input type=number> has ~34px of intrinsic
     width, so minmax(0,1fr) let flex parents collapse the column to 0 and the
     input visually overlapped the "+" button. min-width guards the whole box
     in flex rows (.hc-pdp-m1__bar-buy). */
  grid-template-columns: 40px minmax(46px, 1fr) 40px;
  flex: 0 0 auto;
  min-width: 132px;
  min-height: 52px;
  border: 1px solid rgba(141, 109, 71, 0.24);
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.74);
  overflow: hidden;
}

.hc-pdp-m1__qty-btn {
  border: 0;
  background: transparent;
  color: rgba(26, 23, 20, 0.72);
  font-size: 19px;
  line-height: 1;
  cursor: pointer;
  transition: background-color 0.18s ease, color 0.18s ease;
}

.hc-pdp-m1__qty-btn:hover {
  background: rgba(var(--hc-gold-rgb), 0.18);
  color: #1a1714;
}

.hc-pdp-m1__qty-input {
  width: 100%;
  min-width: 46px;
  height: 100%;
  border: 0;
  border-inline: 1px solid rgba(141, 109, 71, 0.14);
  background: transparent;
  text-align: center;
  color: #1a1714;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 15px;
  font-weight: 700;
  appearance: textfield;
}

.hc-pdp-m1__qty-input::-webkit-inner-spin-button,
.hc-pdp-m1__qty-input::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.hc-pdp-m1__qty-input:focus {
  outline: none;
}

.hc-pdp-m1__atc-form {
  display: contents;
}

/* The stack held three actions at one weight — buy, one-click, watch price
   all 52px and 15/700 — so nothing led and the column read as a list of
   equals. Give each tier its own size and let the primary carry the block. */
.hc-pdp-m1__cta-primary,
.hc-pdp-m1__cta-outline {
  width: 100%;
  border-radius: 12px;
  font-family: var(--hc-sans, "Outfit", sans-serif);
  letter-spacing: 0.01em;
}

.hc-pdp-m1__cta-primary {
  min-height: 58px;
  font-size: 16px;
  font-weight: 700;
}

.hc-pdp-m1__cta-outline {
  min-height: 48px;
  font-size: 14.5px;
  font-weight: 650;
}

.hc-pdp-m1__cta-primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #1a1714;
  background: #1a1714;
  color: #fff;
  cursor: pointer;
  box-shadow: 0 8px 20px -14px rgba(26, 23, 20, 0.55);
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.hc-pdp-m1__cta-primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 22px -14px rgba(40, 30, 15, 0.48);
}

.hc-pdp-m1__cta-outline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(26, 23, 20, 0.14);
  background: #fff;
  color: rgba(26, 23, 20, 0.86);
  cursor: pointer;
  transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}
.hc-pdp-m1__cta-outline:hover {
  border-color: rgba(26, 23, 20, 0.4);
  color: #1a1714;
}

/* Type-specific service tools (раскрой / подбор / …) — modal triggers. */
.hc-pdp-m1__tools {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid rgba(141, 109, 71, 0.12);
}
.hc-pdp-m1__tools-label {
  display: block;
  margin-bottom: 9px;
  font: 700 10px/1 var(--hc-mono, "JetBrains Mono", monospace);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(94, 75, 48, 0.7);
}
.hc-pdp-m1__tools-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 8px;
}
.hc-pdp-m1__tool {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 42px;
  padding: 0 14px;
  border: 1px solid rgba(141, 109, 71, 0.22);
  border-radius: 11px;
  background: #fff;
  color: rgba(26, 23, 20, 0.82);
  font: 600 12.5px/1.15 var(--hc-sans, "Outfit", sans-serif);
  text-align: center;
  cursor: pointer;
  transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
}
.hc-pdp-m1__tool:hover {
  border-color: #1a1714;
  background: #1a1714;
  color: #fff;
  transform: translateY(-1px);
}

/* Plates: single link to the online cut service (cut.holzcom-mebel.ru) */
.hc-pdp-m1__tool--cut {
  grid-column: 1 / -1;
  border-color: rgba(176, 138, 79, 0.5);
  background: linear-gradient(135deg, var(--hc-paper) 0%, #fbf3e4 100%);
  color: #6b5526;
  text-decoration: none;
}
.hc-pdp-m1__tool--cut:hover {
  border-color: #b08a4f;
  background: linear-gradient(135deg, #1f1a12 0%, #342817 100%);
  color: #f6e9cf;
}
.hc-pdp-m1__tool-ext {
  width: 15px;
  height: 15px;
  transition: transform 0.2s ease;
}
.hc-pdp-m1__tool--cut:hover .hc-pdp-m1__tool-ext {
  transform: translate(2px, -2px);
}

.hc-pdp-m1__cta-outline:hover {
  border-color: #1a1714;
  background: #1a1714;
  color: #fff;
}

.hc-pdp-m1__acts {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid rgba(141, 109, 71, 0.16);
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.hc-pdp-m1__act {
  position: relative;
  min-height: 50px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 11px;
  border: 1px solid rgba(141, 109, 71, 0.22);
  border-radius: 10px;
  background: #fff;
  color: rgba(26, 23, 20, 0.76);
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.22;
  text-decoration: none;
  cursor: pointer;
  transition: transform 0.18s ease, border-color 0.18s ease, background-color 0.18s ease;
}

.hc-pdp-m1__act:hover {
  transform: translateY(-1px);
  border-color: rgba(141, 109, 71, 0.38);
  background: rgba(252, 248, 240, 0.94);
}

.hc-pdp-m1__act-ico {
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border-radius: 6px;
  background: rgba(var(--hc-gold-rgb), 0.16);
  color: #7a6548;
}

.hc-pdp-m1__act-ico svg {
  width: 13px;
  height: 13px;
}

/* Tabs */
.hc-pdp-m1__tabs {
  margin-top: 20px;
}

.hc-pdp-m1__tabs-bar {
  position: sticky;
  top: calc(var(--hc-hdr-h, 72px) + 6px);
  z-index: 18;
  margin: 0;
  padding: 9px 0;
  border-top: 1px solid rgba(141, 109, 71, 0.18);
  border-bottom: 1px solid rgba(141, 109, 71, 0.18);
  background: rgba(245, 242, 236, 0.95);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.hc-pdp-m1__tabs-inner {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.hc-pdp-m1__tab {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid rgba(141, 109, 71, 0.2);
  border-radius: 999px;
  background: #fff;
  color: rgba(26, 23, 20, 0.78);
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: border-color 0.18s ease, background-color 0.18s ease, color 0.18s ease;
}

.hc-pdp-m1__tab:hover {
  border-color: rgba(141, 109, 71, 0.42);
  background: rgba(var(--hc-gold-rgb), 0.14);
  color: #1a1714;
}

.hc-pdp-m1__tab.is-active {
  border-color: #1a1714;
  background: linear-gradient(180deg, #1f1a15, #14110d);
  color: #fff;
}

.hc-pdp-m1__tab__c {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(var(--hc-gold-rgb), 0.22);
  color: #7a6548;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
}

.hc-pdp-m1__tab.is-active .hc-pdp-m1__tab__c {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}

.hc-pdp-m1__panel {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: clamp(24px, 3vw, 42px) 0 clamp(30px, 4vw, 54px);
}

.hc-pdp-desc { max-width: none; }
.hc-pdp-desc__body { max-width: 86ch; }

.hc-pdp-m1__panel > h3,
.hc-pdp-m1__panel h2 {
  margin: 0 0 12px;
  color: #1a1714;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(21px, 1.6vw, 25px);
  font-weight: 500;
  letter-spacing: 0;
  line-height: 1.25;
}

.hc-pdp-m1__panel h2 { margin-top: 28px; }
.hc-pdp-m1__panel h2:first-child { margin-top: 0; }

.hc-pdp-m1__panel h3:not(:first-child) { margin-top: 22px; }

.hc-pdp-m1__panel p,
.hc-pdp-m1__panel li {
  color: rgba(26, 23, 20, 0.78);
  font-size: 15px;
  line-height: 1.65;
}

.hc-pdp-m1__panel p { margin: 0 0 14px; }
.hc-pdp-m1__panel li { margin: 5px 0; }
.hc-pdp-m1__panel li::marker { color: var(--hc-accent, #2f6f4c); }

.hc-pdp-m1__panel ul {
  margin: 0 0 18px;
  padding-left: 20px;
}

/* The gallery column used to take 1.28fr of a 1344px row — a 765x765 stage for
   a 17 ₽ hinge cap, taller than the viewport, while the buy box was squeezed
   into the narrower half. Even columns and a cap on the picture put the price
   and the CTA at a sane distance from the photograph. */
@media (min-width: 961px) {
  .hc-pdp-m1__hero {
    grid-template-columns: minmax(0, 1fr) minmax(380px, 1fr);
  }
  .hc-pdp-m1__gallery .hc-pdp-gallery__main,
  .hc-pdp-m1__gallery .hc-pdp-gallery__empty,
  .hc-pdp-m1__gallery .hc-pdp-gallery__thumbs {
    max-width: 600px;
    margin-inline: auto;
  }
}

@media (max-width: 960px) {
  .hc-pdp-m1__hero {
    grid-template-columns: minmax(0, 1fr);
  }
  .hc-pdp-m1__buy {
    position: static;
    top: auto;
  }
}

/* On a phone the photo came first and pushed everything that identifies the
   product out of the first screen: measured at 390x664, the gallery ran
   381-820, the title landed at 862, the price at 1136 and the buy button at
   1247. A visitor arriving from search saw a picture and nothing else — no
   name, no price, no way to buy — and the sticky dock only appears once the
   buy box has scrolled away, so at the top of the page there was no purchase
   affordance at all.

   `display: contents` lets the aside's own children join the hero grid, so the
   name and price can be ordered above the gallery without moving any markup
   and without touching the desktop layout. */
@media (max-width: 860px) {
  .hc-pdp-m1__hero {
    display: flex;
    flex-direction: column;
    gap: 12px;
    /* The base rule is `align-items: start`, which in a column flex means the
       *horizontal* axis: every child shrinks to its content. The text blocks
       have content so they filled the row anyway, and the gallery got its
       width from the 7-column thumbnail grid underneath the picture — by
       accident. The moment the thumbnail strip stopped rendering for
       single-photo products, `.hc-pdp-m1__gallery` measured 0x21 on a phone
       and the photograph vanished from the page. Say what the column layout
       actually wants. */
    align-items: stretch;
  }

  .hc-pdp-m1__gallery {
    width: 100%;
  }

  .hc-pdp-m1__aside {
    display: contents;
  }

  /* The buy column is flattened as well, because only part of it belongs near
     the top. Its 724px held 195px of price-and-button and 529px of secondary
     actions, price watch, "подобрать под задачу" and delivery assurances —
     moving the whole thing above the photo pushed the photograph off the first
     screen entirely, which is worse than the problem it fixed. */
  .hc-pdp-m1__buy {
    display: contents;
  }

  .hc-pdp-m1__eyebrow { order: 1; }
  .hc-pdp-m1__title   { order: 2; margin: 0; }
  /* The photograph sits directly under the name: a decor is chosen by eye, and
     it has to be visible without scrolling. */
  .hc-pdp-m1__gallery { order: 3; }
  /* Price, quantity and «В корзину» immediately after it. */
  .hc-pdp-m1__bar     { order: 4; }
  /* The article number is reference material, not a reason to buy. */
  .hc-pdp-m1__topline { order: 5; }
  /* Everything else — one-click, price watch, task picker, assurances. */
  .hc-pdp-m1__secondary { order: 6; }
  .hc-pdp-m1__tools     { order: 7; }
  .hc-pdp-m1__trust     { order: 8; }
  .hc-pdp-m1__aside > *:not(.hc-pdp-m1__eyebrow):not(.hc-pdp-m1__title):not(.hc-pdp-m1__buy) {
    order: 9;
  }

  /* Three service badges wrapped onto three rows between the header and the
     product — roughly 80px of a 664px screen spent saying things that matter
     after the visitor knows what they are looking at. They are a sibling of the
     hero, not a child, so `order` cannot move them; one scrollable row keeps
     them in place and gives the height back. */
  .hc-pdp-bc-signals {
    margin-bottom: 8px;
  }

  /* A deliberate swipe rail — but it was cut dead flat at the viewport edge
     mid-word ("Со склада в Долгопрудно"), with the scrollbar hidden, so there
     was nothing to say the row continued. Same fade the catalogue chip rails
     use, plus room after the last chip. */
  .hc-pdp-bc-signals__badges {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    max-width: 100%;
    padding-right: 22px;
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent 100%);
    mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent 100%);
  }

  .hc-pdp-bc-signals__badges::-webkit-scrollbar {
    display: none;
  }

  .hc-pdp-bc-signals__badges .hc-badge {
    flex: 0 0 auto;
    white-space: nowrap;
  }

  /* The last crumb repeats the H1 word for word and wrapped onto two lines. */
  .hc-pdp .hc-crumbs__here {
    display: none;
  }
  /* Neither of these ever matched. The separator sits *before* the current
     crumb, not after it, so the sibling combinator found nothing; and
     :last-of-type looks at the last <span> child, which is .hc-crumbs__here
     itself and never carries .hc-crumbs__sep. The trail therefore ended on a
     dangling "›" with nothing after it — visible on any screen under 861px.
     :has() is the combinator that can look backwards. */
  .hc-pdp .hc-crumbs__sep:has(+ .hc-crumbs__here) {
    display: none;
  }

  /* A PDP title is the product identity, not a card label. Truncating it lost
     the material/finish on real long Hettich names, even though the complete
     string remained in the DOM. Keep the image directly after the name, but
     let the name itself finish on a phone. */
  .hc-pdp-m1__title {
    font-size: clamp(21px, 6vw, 26px);
    line-height: 1.22;
    display: block;
    overflow: visible;
  }

  /* The smallest phones still in use are 320px wide, and there a long product
     name runs to five lines while the region chip and the badges wrap onto two
     rows. Both are given a single line so the price clears the fold there too. */
  @media (max-width: 360px) {
    .hc-pdp-m1__hero {
      gap: 8px;
      margin-top: 8px;
    }

    .hc-pdp-m1__title {
      font-size: 19px;
      line-height: 1.2;
    }

    .hc-pdp-m1__eyebrow {
      margin-bottom: 0;
    }

    .hc-pdp-bc-signals {
      flex-wrap: nowrap;
      overflow-x: auto;
      scrollbar-width: none;
    }

    /* The trail is a wrapping flex row, so it needs nowrap rather than
       white-space; one scrollable line keeps every level reachable and returns
       the second row to the price. */
    .hc-pdp .hc-crumbs {
      flex-wrap: nowrap;
      overflow-x: auto;
      scrollbar-width: none;
    }

    .hc-pdp .hc-crumbs > * {
      flex: 0 0 auto;
    }

    .hc-pdp .hc-crumbs::-webkit-scrollbar {
      display: none;
    }

    .hc-pdp-bc-signals > * {
      flex: 0 0 auto;
    }

    .hc-pdp-bc-signals::-webkit-scrollbar {
      display: none;
    }
  }

  /* The photo is still the reason people scroll, but it does not need the whole
     screen: capping it keeps the price within reach of the first swipe. */
  /* Cap the picture, never the column. Capping .hc-pdp-m1__gallery left its
     overflow visible, so the thumbnail strip kept its natural position and
     spilled 150px past the box — straight over the price bar, where it
     intercepted pointer events and made «В корзину» unclickable on a phone.
     Measured: gallery 423-649, thumbs 800-867, bar 661-855. */
  .hc-pdp-m1__gallery .hc-pdp-gallery__main {
    max-height: 34vh;
  }

  .hc-pdp-m1__gallery .hc-pdp-gallery__img {
    max-height: 34vh;
    object-fit: contain;
  }
}

/* .hc-pdp-m1__ctas is the desktop buy grid. On a phone the same two controls
   are flex children of .hc-pdp-m1__bar-buy instead — see
   hc-pdp-buybox-bar.css, which is where their phone layout is set. */
@media (max-width: 420px) {
  .hc-pdp-m1__ctas {
    grid-template-columns: 1fr;
  }
  .hc-pdp-m1__qty,
  .hc-pdp-m1__cta-primary {
    grid-column: 1 / -1;
  }
}

@media (max-width: 920px) {
  .hc-pdp-m1__title {
    font-size: clamp(28px, 8.8vw, 38px);
  }
  .hc-pdp-m1__acts {
    grid-template-columns: 1fr;
  }
  .hc-pdp-m1__tabs-inner {
    flex-wrap: nowrap;
    gap: 6px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    scroll-snap-type: x proximity;
    padding-inline: 12px;
  }
  .hc-pdp-m1__tabs-inner::-webkit-scrollbar { display: none; }
  .hc-pdp-m1__tab {
    flex: 0 0 auto;
    min-height: 40px;
    padding: 0 12px;
    font-size: 13px;
    scroll-snap-align: start;
  }
}

@media (max-width: 640px) {
  .hc-pdp-m1__panel {
    padding: 24px 16px 16px;
  }
}


/* The gallery opener is a <button> now, so it needs the browser's button chrome
   removed — it must still read as a photograph, not as a control with a border.
   The focus ring is kept deliberately: it is the only thing that tells a
   keyboard user the image can be opened. */
button.hc-pdp-gallery__main {
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  color: inherit;
  text-align: inherit;
  cursor: zoom-in;
}

button.hc-pdp-gallery__main:focus-visible {
  outline: 2px solid var(--hc-accent);
  outline-offset: 3px;
}

/* Says what is on the shelf when the customer asks for more than that. Not a
   warning — over-ordering is normal for sheet goods — so it reads as a note,
   not an error. */
.hc-pdp-m1__backorder {
  margin: 8px 0 0;
  padding: 8px 12px;
  border-radius: 10px;
  background: rgba(var(--hc-gold-rgb), 0.14);
  color: #7a6548;
  font-size: 12px;
  line-height: 1.35;
}

/* css/blocks/279-hc-pdp-m1-motion.css */
/* =================== hc-pdp-m1-motion.css =================== */
/* Extracted from 125-hc-pdp-m1.css: icon and interaction animation layer. */

@keyframes hc-pdp-m1-shake {
  0%,
  100% {
    transform: rotate(0);
  }

  20% {
    transform: rotate(-14deg);
  }

  40% {
    transform: rotate(12deg);
  }

  60% {
    transform: rotate(-8deg);
  }

  80% {
    transform: rotate(6deg);
  }
}

.hc-pdp-m1__act:hover .hc-pdp-m1__act-ico {
  background: linear-gradient(135deg, var(--hc-gold, var(--hc-gold)), #b89a6f);
  color: #2a2018;
}

.hc-pdp-m1__act[data-modal-open="telegram"]:hover .hc-pdp-m1__act-ico {
  transform: rotate(-12deg);
}

.hc-pdp-m1__act[data-modal-open="project"]:hover .hc-pdp-m1__act-ico {
  transform: translateY(-2px);
}

.hc-pdp-m1__act[data-modal-open="cheaper"]:hover .hc-pdp-m1__act-ico {
  transform: rotate(360deg);
  transition-duration: 0.8s;
}

.hc-pdp-m1__act[data-modal-open="stock"]:hover .hc-pdp-m1__act-ico {
  animation: hc-pdp-m1-shake 0.55s ease;
}

.hc-pdp-m1__act[data-modal-open="price"]:hover .hc-pdp-m1__act-ico {
  transform: translateY(2px);
}

.hc-pdp-m1__act[data-modal-open="engineer"]:hover .hc-pdp-m1__act-ico {
  transform: scale(1.18);
}

.hc-pdp-m1__act[data-modal-open="favorite"]:hover .hc-pdp-m1__act-ico {
  background: linear-gradient(135deg, #ff6b6b, #c0392b);
  color: var(--hc-paper, #ffffff);
  transform: scale(1.16);
}

.hc-pdp-m1__act[data-modal-open="docs"]:hover .hc-pdp-m1__act-ico {
  transform: translateY(-2px) rotate(-4deg);
}

/* css/blocks/269-hc-pdp-specs.css */
/* =================== hc-pdp-specs.css =================== */
/* Extracted from 125-hc-pdp-m1.css. */

/* ---- folded from 130-hc-pdp-specs.css ---- */
/* =================== hc-pdp-specs.css =================== */
/* hc-pdp-specs — premium clickable specification list. Each value is a
 * pill-link that filters the catalog on click (e.g. "Накладная" →
 * /shop?overlay=overlay-full). Used inside PDP tab panel "Характеристики"
 * across all PDP layouts (M1/M2/M3). Strict isolation: .hc-pdp-specs / *. */

.hc-pdp-specs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin: 0;
  width: 100%;
  background: rgba(141, 109, 71, 0.16);
  border: 0.5px solid rgba(141, 109, 71, 0.20);
  border-radius: 16px;
  overflow: hidden;
  max-width: 1440px;
  margin-inline: auto;
}

.hc-pdp-specs__row {
  display: grid;
  grid-template-columns: minmax(170px, 42%) minmax(0, 58%);
  align-items: center;
  gap: 14px;
  /* Labels sat 18px from the tile edge while the rows themselves are 14px
     tall — the text read as pressed against the frame. Give the plate the
     same breathing room it gives its rows. */
  min-height: 72px;
  padding: 16px clamp(18px, 2.2vw, 32px);
  margin: 0;
  background: var(--hc-paper, #ffffff);
  transition: background 0.18s ease;
}
.hc-pdp-specs__row:hover { background: rgba(252, 248, 240, 0.96); }

.hc-pdp-specs__key {
  margin: 0;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--hc-ink-soft, rgba(26, 23, 20, 0.78));
}

.hc-pdp-specs__val {
  margin: 0;
  min-width: 0;
  display: flex;
  align-items: center;
}

.hc-pdp-specs__chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  padding: 5px 12px;
  background: rgba(var(--hc-gold-rgb), 0.16);
  border: 0.5px solid rgba(141, 109, 71, 0.22);
  min-width: min(100%, 150px);
  border-radius: 10px;
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: -0.005em;
  color: var(--hc-ink, #1a1714);
  text-decoration: none;
  white-space: normal;
  word-break: break-word;
  overflow-wrap: anywhere;
  transition:
    background 0.18s ease,
    border-color 0.18s ease,
    color 0.18s ease,
    transform 0.18s ease;
  cursor: pointer;
  justify-content: flex-start;
}
.hc-pdp-specs__chip:hover {
  background: linear-gradient(135deg, rgba(var(--hc-gold-rgb), 0.42), rgba(184, 154, 111, 0.22));
  border-color: var(--hc-gold-border, rgba(var(--hc-gold-rgb), 0.62));
  color: var(--hc-ink, #1a1714);
  transform: translateY(-1px);
}
.hc-pdp-specs__chip::after {
  content: "→";
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  font-weight: 400;
  opacity: 0;
  transform: translateX(-4px);
  margin-left: -4px;
  color: var(--hc-accent-dark, #7a6548);
  transition: opacity 0.20s ease, transform 0.20s ease, margin 0.20s ease;
}
.hc-pdp-specs__chip:hover::after {
  opacity: 1;
  transform: translateX(0);
  margin-left: 0;
}

/* Static value (not filterable — e.g. proprietary numbers, manufacturer name) */
.hc-pdp-specs__static {
  font-family: var(--hc-sans, "Outfit", sans-serif);
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: -0.005em;
  color: var(--hc-ink, #1a1714);
  padding-left: 12px;
}

/* Tone variants for special values */
.hc-pdp-specs__chip--num {
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 12px;
  letter-spacing: 0.02em;
}
/* Brand chip: same light palette as every other chip (consistent), with a
   subtle accent dot + bold weight instead of a jarring dark fill. */
.hc-pdp-specs__chip--brand {
  font-weight: 700;
}
.hc-pdp-specs__chip--brand::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--hc-accent, var(--hc-accent));
  flex: 0 0 auto;
}

.hc-pdp-specs__row--wide {
  grid-column: 1 / -1;
  grid-template-columns: minmax(170px, 21%) minmax(0, 79%);
}

@media (max-width: 920px) {
  .hc-pdp-specs {
    grid-template-columns: 1fr;
  }
  .hc-pdp-specs__row {
    grid-template-columns: 1fr;
    gap: 6px;
    padding: 12px 16px;
  }
  .hc-pdp-specs__row--wide { grid-template-columns: 1fr; }
}

/* css/blocks/270-hc-pdp-base.css */
/* =================== hc-pdp-base.css =================== */
/* Extracted from 125-hc-pdp-m1.css: shared PDP layout primitives. */

/* ---- folded from 136-hc-pdp.css ---- */
/* PDP base layout primitives. Variants own visual skin in 125/126/127. */

.hc-pdp {
  padding-top: var(--hc-sp-5);
}

.hc-pdp__main,
.hc-pdp__grid {
  display: grid;
  gap: clamp(14px, 1.3vw, 22px);
  align-items: start;
}

.page-pdp .hc-pdp__grid {
  grid-template-columns: minmax(360px, 1.05fr) minmax(360px, 1fr) minmax(320px, 0.95fr);
  margin-top: var(--hc-sp-4, 20px);
  margin-bottom: clamp(40px, 4vw, 64px);
  max-width: 1280px;
  margin-left: auto;
  margin-right: auto;
}

.hc-pdp__title-col,
.hc-pdp__info,
.hc-pdp__main {
  min-width: 0;
}

.hc-pdp__title {
  font-size: clamp(26px, 2.4vw, 36px);
  line-height: 1.12;
  letter-spacing: -0.015em;
  max-width: 100%;
  overflow-wrap: break-word;
  word-break: break-word;
  hyphens: auto;
}

.hc-pdp__related {
  margin: 32px 0 12px;
}

.hc-pdp__related-title {
  font-size: 18px;
  margin: 0 0 12px;
  font-weight: 500;
}

@media (max-width: 1360px) {
  .page-pdp .hc-pdp__grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
}

@media (max-width: 920px) {
  .hc-pdp__title-col,
  .hc-pdp__info {
    min-width: 0;
  }
}

@media (max-width: 760px) {
  .page-pdp .hc-pdp__grid {
    grid-template-columns: 1fr;
  }
}

/* css/blocks/129-hc-pdp-region.css */
/* =================== hc-pdp-region.css =================== */
.hc-pdp-region { position: relative; display: inline-block; }
.hc-pdp-region__btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.hc-pdp-region__chev {
  transition: transform 0.2s ease;
  margin-left: 2px;
  color: var(--hc-accent-dark, var(--hc-accent-dark));
}
.hc-pdp-region__chev.is-open { transform: rotate(180deg); }
.hc-pdp-region__menu {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 30;
  min-width: 220px;
  padding: 10px;
  background: var(--hc-paper, #ffffff);
  border: 0.5px solid rgba(26, 23, 20, 0.14);
  border-radius: 14px;
  box-shadow: 0 18px 40px rgba(26, 23, 20, 0.12), 0 2px 8px rgba(26, 23, 20, 0.06);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.hc-pdp-region__hint {
  display: block;
  padding: 4px 10px 8px;
  font: 400 11px/1.3 var(--hc-sans, 'Outfit', sans-serif);
  color: rgba(26, 23, 20, 0.55);
  letter-spacing: 0.02em;
  text-transform: uppercase;
  border-bottom: 0.5px solid rgba(26, 23, 20, 0.08);
  margin-bottom: 6px;
}
.hc-pdp-region__opt {
  display: block;
  width: 100%;
  padding: 8px 12px;
  font: 500 13px/1.2 var(--hc-sans, 'Outfit', sans-serif);
  text-align: left;
  background: transparent;
  border: 0;
  border-radius: 8px;
  color: var(--hc-ink, #1a1714);
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.hc-pdp-region__opt:hover {
  background: rgba(193, 159, 104, 0.10);
}
.hc-pdp-region__opt.is-active {
  background: var(--hc-ink, #1a1714);
  color: var(--hc-paper, #ffffff);
}

/* css/blocks/159-hc-tabs.css */
/* =================== hc-tabs.css =================== */
.hc-tabs__nav {
display: flex; gap: 2px; overflow-x: auto; border-bottom: 1px solid var(--hc-line); scrollbar-width: none
}
.hc-tabs__btn.is-active {
color: var(--hc-ink); border-bottom-color: var(--hc-ink)
}

.hc-tabs__panel {
padding-top: var(--hc-sp-5)
}
.hc-tabs__loader {
margin: var(--hc-sp-5) auto
}

.hc-tabs {
display: flex;
  border-bottom: 1px solid var(--hc-line);
  gap: var(--hc-sp-2);
  overflow-x: auto;
}
.hc-tabs__tab {
position: relative;
  padding: var(--hc-sp-3) var(--hc-sp-5);
  background: transparent;
  border: none;
  cursor: pointer;
  font-size: var(--hc-fs-md);
  font-weight: 500;
  color: var(--hc-ink-soft);
  transition: color var(--hc-dur-base) var(--hc-ease);
  white-space: nowrap;
  flex-shrink: 0;
}
.hc-tabs__tab:hover {
color: var(--hc-ink);
}
.hc-tabs__tab.is-active {
color: var(--hc-ink);
}
.hc-tabs__tab.is-active::after {
content: "";
  position: absolute;
  bottom: -1px;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--hc-ink);
  animation: hcTabSlide var(--hc-dur-base) var(--hc-ease);
}
.hc-tabs__panel {
display: none;
  animation: hcFadeIn var(--hc-dur-base) var(--hc-ease);
}
.hc-tabs__panel.is-active {
display: block;
}
.hc-tabs.hc-tabs--premium {
border-bottom: 1px solid rgba(141, 109, 71, 0.16);
}
.hc-tabs__btn.is-active {
color: var(--hc-ink, #1a1714);
  border-bottom-color: var(--hc-accent, var(--hc-accent));
  font-weight: 500;
}

.hc-tabs__btn.is-active .hc-tabs__count {
background: var(--hc-ink); color: var(--hc-paper, #ffffff)
}

/* css/blocks/200-pdp-kit-products.css */
/* =================== pdp-kit-products.css =================== */
/* pdp-kit-products — grid container for the "Для этого фасада обычно нужно"
 * bundle. Each tile is a standard .pcard.pcard--c (same template as catalog,
 * cross-sell, recently-viewed). The only kit-specific addition is the count
 * badge (×1 / ×4 / опц.) placed inside .pcard-overlay__badges using
 * .pcard-badge--count (a gold-gradient variant). Strictly .pdp-kit-* */

.pdp-kit-section {
  margin: clamp(28px, 3.4vw, 44px) 0 clamp(20px, 2.4vw, 32px);
}
.pdp-kit-section > .hc-sec-h {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 18px;
}

.pdp-kit-products {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(12px, 1.4vw, 18px);
  align-items: stretch;
}
@media (max-width: 1280px) { .pdp-kit-products { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 920px)  { .pdp-kit-products { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px)  { .pdp-kit-products { grid-template-columns: 1fr; } }

/* Count badge — kit-specific extension of .pcard-badge.
   Lives inside .pcard-overlay__badges; gold-gradient pill with crisp number. */
.pcard-badge--count {
  background: linear-gradient(135deg, var(--hc-gold, var(--hc-gold)), #b89a6f);
  color: #2a2018;
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  box-shadow: 0 2px 6px -1px rgba(184, 154, 111, 0.42);
}

/* css/blocks/201-pdp-product-rail.css */
/* =================== pdp-product-rail.css =================== */
/* pdp-product-rail - compact 5-column grid of related products on wide PDPs
 * ("С этим товаром покупают", "Совместимые", "Похожие"). Each child is a
 * .pcard (variant typically forced to "c"). Maintains consistent card
 * heights and tight gaps. Strictly .pdp-product-rail. */

.pdp-product-rail {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(12px, 1.2vw, 18px);
  align-items: stretch;
  min-width: 0;
  max-width: 100%;
  margin: clamp(20px, 2.4vw, 36px) 0;
}

.pdp-product-rail--premium {
  padding: clamp(12px, 1.4vw, 20px);
  background: linear-gradient(180deg, rgba(255, 252, 247, 0.6) 0%, transparent 100%);
  border-radius: clamp(14px, 1.4vw, 20px);
}

.pdp-product-rail > .pcard {
  min-width: 0;
  max-width: 100%;
  height: 100%;
}

.pdp-product-rail .pcard[data-pcard-variant="c"],
.pdp-product-rail .pcard[data-pcard-variant="c"] .pcard-c__body,
.pdp-product-rail .pcard[data-pcard-variant="c"] .pcard-meta-row,
.pdp-product-rail .pcard[data-pcard-variant="c"] .pcard-title,
.pdp-product-rail .pcard[data-pcard-variant="c"] .pcard-caption,
.pdp-product-rail .pcard[data-pcard-variant="c"] .pcard-props,
.pdp-product-rail .pcard[data-pcard-variant="c"] .pcard-footer {
  min-width: 0;
  max-width: 100%;
}

.pdp-product-rail .pcard[data-pcard-variant="c"] .pcard-meta-row > * {
  min-width: 0;
}

.pdp-product-rail .pcard[data-pcard-variant="c"] .pcard-sku {
  flex: 1 1 auto;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.pdp-product-rail .pcard[data-pcard-variant="c"] .pcard-title,
.pdp-product-rail .pcard[data-pcard-variant="c"] .pcard-caption {
  overflow-wrap: anywhere;
}

.pdp-product-rail:has(> .pcard:only-child) {
  grid-template-columns: minmax(260px, 360px);
  justify-content: start;
}

@media (max-width: 1280px) {
  .pdp-product-rail { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 920px) {
  .pdp-product-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
  .pdp-product-rail { grid-template-columns: 1fr; }
}

/* css/blocks/205-pdp-variants.css */
/* =================== pdp-variants.css =================== */
/* pdp-variants — visual differences between three PDP layouts (M1/M2/M3)
 * driven by [data-pdp-variant] attribute on .hc-pdp and `pdp-variant-{m1,m2,m3}
[data-pdp-variant="m2"] .hc-pdp__grid {
  gap: clamp(20px, 1.6vw, 28px);
}
[data-pdp-variant="m2"] .pdp-trust-strip {
  display: grid;
  /* Was a hard repeat(3): the strip is admin-authored now and may hold four,
     which wrapped one lonely tile onto a second row. */
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 8px;
  padding: 14px;
  background: linear-gradient(180deg, var(--hc-paper, #ffffff) 0%, rgba(247, 240, 226, 0.86) 100%);
  border: 0.5px solid rgba(141, 109, 71, 0.18);
  border-radius: 12px;
  margin: 16px 0;
}
[data-pdp-variant="m2"] .pdp-trust-strip__item {
  padding: 8px 12px;
  background: transparent;
  border: 0;
  font-size: 12px;
}
[data-pdp-variant="m2"] .pdp-trust-strip__item b {
  font-family: var(--hc-mono, "JetBrains Mono", monospace);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
[data-pdp-variant="m2"] .pdp-trust-strip__item span {
  font-size: 11px;
}

/* ===================== M3 — Chapters + Jump-nav ===================== */
[data-pdp-variant="m3"] {
  position: relative;
}
[data-pdp-variant="m3"] .pdp-anchor-nav a:hover,
[data-pdp-variant="m3"] .pdp-anchor-nav a.is-active {
  background: rgba(var(--hc-gold-rgb), 0.16);
  color: var(--hc-ink, #1a1714);
}
[data-pdp-variant="m3"] .pdp-anchor-nav a:hover::before,
[data-pdp-variant="m3"] .pdp-anchor-nav a.is-active::before {
  background: linear-gradient(135deg, var(--hc-gold-1, var(--hc-gold, var(--hc-gold))), var(--hc-gold-2, #b89a6f));
  transform: translateY(-50%) scale(1.4);
}
[data-pdp-variant="m3"] .hc-pdp .hc-wrap > :not(.pdp-anchor-nav):not(:first-child) {
  padding-left: clamp(0px, 14vw, 200px);
}

/* css/blocks/240-pdp-qa.css */
/* PDP Q&A list + ask form */

.qa-list-wrap {
  display: grid;
  grid-template-columns: minmax(0, .72fr) minmax(520px, 1.28fr);
  align-items: start;
  gap: 18px;
}

.qa-list-wrap > .hc-muted:first-child { padding-top: 12px; }

.qa-list {
  display: grid;
  gap: 12px;
}

.qa-item {
  border: 1px solid var(--sf-line, rgba(120, 102, 80, 0.22));
  border-radius: 12px;
  padding: 14px;
  background: rgba(255, 255, 255, 0.84);
}

.qa-item__head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}

.qa-item__avatar {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 600;
  background: rgba(31, 25, 19, 0.1);
}

.qa-item__meta time {
  display: block;
  font-size: 12px;
  color: rgba(26, 23, 20, 0.62);
}

.qa-item__q {
  margin: 0 0 8px;
}

.qa-item__a {
  border-top: 1px solid rgba(120, 102, 80, 0.18);
  padding-top: 8px;
}

.qa-item__a-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: rgba(26, 23, 20, 0.72);
  margin-bottom: 6px;
}

.qa-item__a p {
  margin: 0;
}

.qa-item__pending {
  font-size: 13px;
  color: rgba(26, 23, 20, 0.6);
}

.qa-ask-form {
  display: grid;
  gap: 16px;
  padding: clamp(18px, 2.2vw, 28px);
  border: 1px solid rgba(120, 102, 80, 0.16);
  border-radius: 18px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(250, 247, 242, 0.82)),
    var(--hc-paper, #fff);
  box-shadow: 0 18px 46px -34px rgba(42, 32, 24, 0.34);
}

.qa-ask-form__head {
  display: grid;
  gap: 5px;
  width: min(100%, 760px);
  overflow-wrap: anywhere;
}

.qa-ask-form__head strong {
  font-family: var(--hc-serif, inherit);
  font-size: clamp(24px, 2.2vw, 34px);
  font-weight: 500;
  line-height: 1.12;
  color: var(--hc-ink, #1a1714);
}

.qa-ask-form__head span {
  font-size: 15px;
  line-height: 1.45;
  color: rgba(26, 23, 20, 0.62);
}

.qa-ask-form__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}

.qa-ask-form .hc-field {
  display: grid;
  gap: 7px;
}

.qa-ask-form .hc-label {
  display: inline-flex;
  width: fit-content;
  padding: 0;
  background: transparent;
  color: rgba(26, 23, 20, 0.58);
  border-radius: 0;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1.2;
}

.qa-ask-form .hc-input,
.qa-ask-form .hc-textarea {
  min-height: 50px;
  padding: 13px 15px;
  border: 1px solid rgba(120, 102, 80, 0.20);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.86);
  font-size: 16px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.62);
}

.qa-ask-form .hc-input:focus,
.qa-ask-form .hc-textarea:focus {
  border-color: rgba(93, 77, 58, 0.62);
  box-shadow: 0 0 0 4px rgba(184, 154, 111, 0.16);
  outline: none;
}

.qa-ask-form .hc-textarea {
  min-height: 132px;
  resize: vertical;
}

.qa-ask-form .hc-btn {
  justify-self: start;
  min-width: 220px;
  height: 48px;
  padding: 0 28px;
  border-radius: 999px;
}

@media (max-width: 760px) {
  .qa-list-wrap { grid-template-columns: 1fr; }
  .qa-ask-form__grid {
    grid-template-columns: 1fr;
  }

  .qa-ask-form .hc-btn {
    width: 100%;
  }
}

/* css/blocks/241-pdp-bundles.css */
/* PDP bundles rail — premium cards, unified vertical rhythm */

.hc-bundles__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.hc-bundles__grid:has(> .hc-bundle-card:only-child) {
  grid-template-columns: 1fr;
}

.hc-bundle-card {
  display: grid;
  grid-template-rows: auto auto 1fr auto;
  gap: 10px;
  min-height: 100%;
  padding: 16px;
  border: 1px solid rgba(141, 109, 71, 0.22);
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(250, 246, 238, 0.96));
}

.hc-bundle-card__head {
  display: grid;
  gap: 4px;
}

.hc-bundle-card__title {
  margin: 0;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-size: clamp(24px, 2.1vw, 30px);
  line-height: 1.1;
  font-weight: 500;
  letter-spacing: -0.01em;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.hc-bundle-card__price {
  margin: 0;
  font-size: 28px;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
}

.hc-bundle-card__items {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.hc-bundle-card__item {
  position: relative;
  display: block;
}

.hc-bundle-card__thumb {
  aspect-ratio: 1;
  border-radius: 10px;
  border: 1px solid rgba(141, 109, 71, 0.18);
  background: #f1f0f0;
  display: grid;
  place-items: center;
  overflow: hidden;
}

.hc-bundle-card__thumb img,
.hc-bundle-card__thumb svg {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.hc-bundle-card__qty {
  position: absolute;
  left: -4px;
  bottom: -4px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 6px;
  border-radius: 999px;
  background: #111;
  color: #fff;
  font-size: 12px;
}

.hc-bundle-card__foot {
  margin-top: auto;
}

.hc-bundle-card__foot .hc-btn {
  width: 100%;
}

.hc-bundles__grid:has(> .hc-bundle-card:only-child) .hc-bundle-card {
  grid-template-columns: minmax(220px, 0.55fr) minmax(280px, 1fr) minmax(220px, 0.42fr);
  grid-template-rows: auto auto;
  align-items: center;
  gap: clamp(16px, 2.4vw, 30px);
  padding: clamp(20px, 2.4vw, 30px);
}

.hc-bundles__grid:has(> .hc-bundle-card:only-child) .hc-bundle-card__head {
  align-self: start;
}

.hc-bundles__grid:has(> .hc-bundle-card:only-child) .hc-bundle-card__items {
  grid-row: 1 / span 2;
  grid-column: 2;
  align-self: center;
}

.hc-bundles__grid:has(> .hc-bundle-card:only-child) .hc-bundle-card__foot {
  grid-column: 3;
  grid-row: 1 / span 2;
  width: 100%;
  align-self: center;
}

.hc-bundles__grid:has(> .hc-bundle-card:only-child) .hc-small {
  grid-column: 1;
}

@media (max-width: 1180px) {
  .hc-bundles__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .hc-bundles__grid {
    grid-template-columns: 1fr;
  }
  .hc-bundles__grid:has(> .hc-bundle-card:only-child) .hc-bundle-card {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }
  .hc-bundles__grid:has(> .hc-bundle-card:only-child) .hc-bundle-card__items,
  .hc-bundles__grid:has(> .hc-bundle-card:only-child) .hc-bundle-card__foot,
  .hc-bundles__grid:has(> .hc-bundle-card:only-child) .hc-small {
    grid-column: auto;
    grid-row: auto;
  }
}

/* css/blocks/249-pdp-benefits.css */
/* =================== pdp-benefits.css =================== */
/* PDP clickable advantages: animated SVG + category-aware teaser cards. */

.pdp-benefits {
  margin: 16px 0 20px;
}

.pdp-benefits__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.pdp-benefit-card {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  min-height: 128px;
  padding: 14px;
  border-radius: 14px;
  border: 1px solid rgba(141, 109, 71, 0.2);
  background:
    radial-gradient(140px 80px at 100% 100%, rgba(199, 155, 96, 0.15), transparent 60%),
    linear-gradient(180deg, var(--hc-paper) 0%, #f8f2e7 100%);
  color: var(--hc-ink, #1a1714);
  text-decoration: none;
  transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1),
              box-shadow 0.28s cubic-bezier(0.22, 1, 0.36, 1),
              border-color 0.28s cubic-bezier(0.22, 1, 0.36, 1);
}

.pdp-benefit-card:hover {
  transform: translateY(-2px);
  border-color: rgba(120, 88, 56, 0.48);
  box-shadow: 0 14px 32px -24px rgba(23, 18, 12, 0.48);
}

.pdp-benefit-card__icon {
  display: inline-grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.88);
  border: 1px solid rgba(141, 109, 71, 0.25);
  overflow: hidden;
}

/* The four cards carry two, three and four lines of copy, so their links sat
   at four different heights across one row (372 / 372 / 389 / 409 px measured
   on a 1440 viewport). Push the CTA to the bottom of whichever card it is in
   and the row reads as a row. */
.pdp-benefit-card__body {
  display: grid;
  grid-template-rows: auto auto 1fr;
  gap: 6px;
  min-width: 0;
  align-self: stretch;
}
.pdp-benefit-card__cta {
  align-self: end;
}

.pdp-benefit-card__title {
  display: block;
  font-family: var(--hc-serif, Georgia, serif);
  font-size: 18px;
  font-weight: 600;
  line-height: 1.1;
}

.pdp-benefit-card__text {
  display: block;
  color: rgba(26, 23, 20, 0.72);
  font-size: 13px;
  line-height: 1.35;
}

.pdp-benefit-card__cta {
  display: inline-block;
  margin-top: 2px;
  color: #74563a;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.pdp-benefit-ico {
  width: 30px;
  height: 30px;
  fill: none;
  stroke: #5e4730;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.pdp-benefit-ico path,
.pdp-benefit-ico circle,
.pdp-benefit-ico rect {
  stroke-dasharray: 60;
  stroke-dashoffset: 0;
  transition: stroke-dashoffset 0.45s ease, transform 0.45s ease, opacity 0.3s ease;
  transform-origin: center;
}

.pdp-benefit-card:hover .pdp-benefit-ico path,
.pdp-benefit-card:hover .pdp-benefit-ico circle,
.pdp-benefit-card:hover .pdp-benefit-ico rect {
  stroke-dashoffset: 60;
  animation: pdp-benefit-draw 0.9s ease forwards;
}

.pdp-benefit-card:hover .pdp-benefit-ico {
  animation: pdp-benefit-float 0.9s ease;
}

@keyframes pdp-benefit-draw {
  0% { stroke-dashoffset: 60; opacity: 0.4; }
  100% { stroke-dashoffset: 0; opacity: 1; }
}

@keyframes pdp-benefit-float {
  0% { transform: translateY(0) scale(1); }
  35% { transform: translateY(-1px) scale(1.04); }
  100% { transform: translateY(0) scale(1); }
}

@media (max-width: 1100px) {
  .pdp-benefits__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .pdp-benefits__grid {
    grid-template-columns: 1fr;
  }
  .pdp-benefit-card {
    min-height: 0;
  }
}

/* css/blocks/251-pdp-type-profiles.css */
/* =================== pdp-type-profiles.css =================== */
/* Isolated PDP visual profiles by product type.
 * Scope: .page-pdp .hc-pdp[data-product-type="..."] only. */

.page-pdp .hc-pdp[data-product-type="lacquer_kit"] .hc-pdp-m1__eyebrow {
  color: #2f6f4c;
}

.page-pdp .hc-pdp[data-product-type="lacquer_kit"] .hc-pdp-m1__stock {
  background: rgba(47, 111, 76, 0.11);
  color: #2f6f4c;
  border-color: rgba(47, 111, 76, 0.22);
}

.page-pdp .hc-pdp[data-product-type="lacquer_kit"] .hc-pdp-m1__cta-kit {
  border-color: rgba(47, 111, 76, 0.34);
  color: #2f6f4c;
}

.page-pdp .hc-pdp[data-product-type="sheet_material"] .hc-pdp-m1__price-row {
  align-items: baseline;
}

.page-pdp .hc-pdp[data-product-type="sheet_material"] .hc-pdp-m1__price::after {
  content: " / лист";
  font-size: 15px;
  color: rgba(26, 23, 20, 0.52);
  margin-left: 5px;
}

.page-pdp .hc-pdp[data-product-type="material"] .hc-pdp-bc-signals__badges .hc-badge:first-child {
  background: rgba(var(--hc-accent-rgb), 0.15);
}

.page-pdp .hc-pdp[data-product-type="hardware"] .hc-pdp-m1__acts {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.page-pdp .hc-pdp[data-product-type="service"] .hc-pdp-m1__cta-primary {
  background: linear-gradient(135deg, #2b2218, #3f3022);
}

.page-pdp .hc-pdp[data-product-type="service"] .hc-pdp-m1__cta-outline {
  border-color: rgba(59, 45, 30, 0.26);
}

/* css/blocks/254-pdp-type-veneer.css */
/* =================== 254-pdp-type-veneer.css =================== */
/* Premium product page for «Шпонированный МДФ» (natural wood veneer): species-led
 * serif hero, warm-paper photo mount, natural-veneer narrative. Scoped strictly to
 * the veneer product type via the PDP root [data-product-type] — no leakage. */

/* ---- hero: eyebrow ---- */
.hc-pdp[data-product-type="veneer_panel"] .hc-pdp-vn__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--hc-accent, var(--hc-accent));
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.hc-pdp[data-product-type="veneer_panel"] .hc-pdp-vn__leaf {
  width: 14px;
  height: 14px;
  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;
}

/* ---- hero: species title + descriptor ---- */
.hc-pdp[data-product-type="veneer_panel"] .hc-pdp-vn__species {
  margin: 7px 0 0;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-weight: 600;
  font-size: clamp(28px, 3.4vw, 40px);
  line-height: 1.08;
  letter-spacing: 0.005em;
  color: var(--hc-ink, #1a1714);
}
.hc-pdp[data-product-type="veneer_panel"] .hc-pdp-vn__descriptor {
  margin: 9px 0 0;
  font-size: 14.5px;
  line-height: 1.4;
  letter-spacing: 0.01em;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.55));
}

/* ---- gallery: warm paper mount so white-bg veneer shots blend ---- */
.hc-pdp[data-product-type="veneer_panel"] .hc-pdp-gallery__main,
.hc-pdp[data-product-type="veneer_panel"] .hc-pdp-gallery__thumb {
  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%);
}
.hc-pdp[data-product-type="veneer_panel"] .hc-pdp-vn__gallery-note {
  margin: 12px 4px 0;
  font-family: var(--hc-serif, "Playfair Display", Georgia, serif);
  font-style: italic;
  font-size: 13px;
  line-height: 1.5;
  color: var(--hc-ink-mid, rgba(26, 23, 20, 0.55));
}

/* ---- description lede: premium narrative ---- */
.hc-pdp[data-product-type="veneer_panel"] .hc-pdp-desc__lede {
  font-size: 16px;
  line-height: 1.66;
  color: var(--hc-ink-2, #3a3128);
}

@media (max-width: 600px) {
  .hc-pdp[data-product-type="veneer_panel"] .hc-pdp-vn__descriptor { font-size: 13.5px; }
}

/* css/blocks/248-services-crosslinks.css */
/* =================== services-crosslinks.css =================== */
/* Services pages and PDP/blog cross-link blocks. */

.services-hero,
.service-detail-hero {
  padding: 28px 0 18px;
  background: linear-gradient(180deg, var(--hc-paper) 0%, #f8f4ec 100%);
}

.services-hero__grid,
.service-detail-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
  gap: 28px;
  align-items: stretch;
  margin-top: 18px;
}

.services-hero__copy,
.service-detail-hero__copy {
  display: grid;
  align-content: center;
  gap: 16px;
  min-width: 0;
  padding: 34px;
  border: 1px solid rgba(141, 109, 71, 0.14);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.82);
  box-shadow: 0 24px 60px -44px rgba(26, 23, 20, 0.28);
}

.services-hero__title,
.service-detail-hero__title {
  margin: 0;
  color: var(--hc-ink, #1a1714);
  font-family: var(--hc-serif, Georgia, serif);
  font-size: 48px;
  font-weight: 500;
  line-height: 1.02;
}

.services-hero__text,
.service-detail-hero__text,
.service-card__text {
  margin: 0;
  color: rgba(26, 23, 20, 0.68);
  font-size: 16px;
  line-height: 1.55;
}

.services-hero__actions,
.service-detail-hero__actions,
.service-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}

.services-hero__img,
.service-detail-hero__img {
  width: 100%;
  height: 100%;
  min-height: 280px;
  object-fit: cover;
  object-position: center;
  padding: 0;
  border-radius: 18px;
  border: 1px solid rgba(141, 109, 71, 0.22);
  background: #f8f4ec;
  box-shadow: 0 24px 60px -44px rgba(26, 23, 20, 0.28);
  filter: saturate(1.18) contrast(1.1);
}

.services-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.service-card {
  position: relative;
  display: grid;
  grid-template-columns: 210px minmax(0, 1fr);
  gap: 18px;
  padding: 18px;
  border: 1px solid rgba(141, 109, 71, 0.14);
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 18px 44px -34px rgba(26, 23, 20, 0.24);
  overflow: hidden;
  transition: transform 0.26s ease, box-shadow 0.26s ease, border-color 0.26s ease, background 0.26s ease;
  transform: translateZ(0);
}
/* premium hover: lift + warm glow (diz-grade) */
.service-card::before {
  content: "";
  position: absolute;
  inset: auto -10% -45% auto;
  width: 220px;
  height: 220px;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(199, 155, 96, 0.14), transparent 65%);
  pointer-events: none;
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.28s ease, transform 0.28s ease;
}
.service-card:hover {
  transform: translateY(-6px);
  border-color: rgba(141, 109, 71, 0.30);
  box-shadow: 0 30px 56px -32px rgba(26, 23, 20, 0.36);
  background: linear-gradient(180deg, #fff, #faf7f1);
}
.service-card:hover::before { opacity: 1; transform: translateY(0); }

.service-card__media {
  position: relative;
  overflow: hidden;
  border-radius: 13px;
  background: #f5efe5;
}
/* animated icon badge on the media corner */
.service-card__iconbadge {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 2;
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  border-radius: 13px;
  color: var(--hc-accent, var(--hc-accent));
  background: rgba(255, 252, 247, 0.92);
  border: 1px solid rgba(141, 109, 71, 0.18);
  box-shadow: 0 8px 22px -14px rgba(26, 23, 20, 0.4);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  transition: transform 0.26s ease, background 0.26s ease;
}
.service-card:hover .service-card__iconbadge {
  transform: translateY(-2px) scale(1.06);
  background: var(--hc-paper);
}

.service-card__img {
  width: 100%;
  height: 100%;
  min-height: 220px;
  object-fit: cover;
  object-position: center;
  padding: 0;
  transition: transform 0.3s ease;
}

.service-card:hover .service-card__img {
  transform: scale(1.04);
}

.service-card__body {
  display: grid;
  gap: 10px;
  min-width: 0;
}

.service-card__eyebrow,
.pdp-service-card__eyebrow,
.pdp-blog-card__eyebrow {
  color: #8d6d47;
  font-family: var(--hc-mono, monospace);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.service-card__title {
  margin: 0;
  font-family: var(--hc-serif, Georgia, serif);
  font-size: 28px;
  font-weight: 500;
  line-height: 1.1;
}

.service-card__steps {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.service-card__steps span {
  padding: 6px 9px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 999px;
  background: #fbf7ef;
  color: rgba(26, 23, 20, 0.68);
  font-size: 12px;
}

.service-card__products {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  padding-top: 12px;
  border-top: 1px dashed rgba(141, 109, 71, 0.18);
}

.service-card__product {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  min-width: 0;
  color: inherit;
  text-decoration: none;
}

.service-card__product img {
  width: 46px;
  height: 46px;
  object-fit: contain;
  border-radius: 8px;
  background: #fbf7ef;
}

.service-card__product span {
  overflow: hidden;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.service-detail {
  display: grid;
  gap: 28px;
}

.service-detail__article {
  display: grid;
  gap: 18px;
  max-width: 980px;
}

.service-detail__body {
  color: rgba(26, 23, 20, 0.72);
  font-size: 19px;
  line-height: 1.65;
}

.service-detail__section {
  display: grid;
  gap: 16px;
}

.service-detail__proof {
  display: grid;
  gap: 8px;
  padding: clamp(20px, 3vw, 30px);
  border: 1px solid rgba(141, 109, 71, 0.2);
  border-radius: 18px;
  background: linear-gradient(135deg, #1f1b17, #342b23);
  color: #fff;
  box-shadow: 0 24px 50px -34px rgba(26, 23, 20, 0.55);
}

.service-detail__proof .hc-eyebrow { color: #d8bd91; }
.service-detail__proof strong { font-size: clamp(20px, 2vw, 28px); line-height: 1.18; }
.service-detail__proof p { max-width: 780px; margin: 0; color: rgba(255, 255, 255, 0.72); line-height: 1.55; }

.service-detail__facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.service-detail__fact {
  display: grid;
  align-content: start;
  gap: 18px;
  min-height: 150px;
  padding: 20px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 18px 42px -34px rgba(26, 23, 20, 0.32);
}

.service-detail__fact span { color: #8d6d47; font: 600 12px/1 var(--hc-mono, monospace); letter-spacing: 0.14em; }
.service-detail__fact strong { font-size: 18px; line-height: 1.32; }
.service-detail__facts--result .service-detail__fact span { font-size: 20px; }

.service-detail__faq {
  display: grid;
  gap: 10px;
}

.service-detail__faq details {
  padding: 18px 20px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 14px;
  background: #fff;
}

.service-detail__faq summary { cursor: pointer; font-weight: 650; }
.service-detail__faq p { max-width: 820px; margin: 12px 0 0; color: rgba(26, 23, 20, 0.68); line-height: 1.55; }

.service-detail__embed {
  width: 100%;
  min-height: 78vh;
  border: 1px solid var(--hc-line-2, rgba(141, 109, 71, 0.24));
  border-radius: 16px;
  background: #fff;
}

/* auto-fit collapses the empty tracks, so a section holding one service card
   stretched it across the full row: a 186px-tall image smeared over ~1900px,
   showing a sliver of the photograph and a large washed-out band. auto-fill
   keeps the track grid, so one card stays card-sized. */
.service-detail__steps,
.pdp-service-links__grid,
.pdp-blog-links__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
  gap: 14px;
}

.service-detail__step,
.pdp-service-card,
.pdp-blog-card {
  display: grid;
  grid-template-rows: auto auto auto 1fr;
  gap: 10px;
  min-width: 0;
  padding: 16px;
  border: 1px solid rgba(141, 109, 71, 0.14);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 16px 38px -32px rgba(26, 23, 20, 0.24);
  color: inherit;
  text-decoration: none;
}

.service-detail__step span {
  color: #8d6d47;
  font-family: var(--hc-mono, monospace);
  letter-spacing: 0.12em;
}

.pdp-service-card__img,
.pdp-blog-card__img {
  display: block;
  width: 100%;
  height: 186px;
  min-height: 186px;
  max-height: 186px;
  object-fit: cover;
  border-radius: 10px;
  background: #f8f4ec;
  overflow: hidden;
}

.pdp-service-card__title,
.pdp-blog-card__title {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
  font-family: var(--hc-serif, Georgia, serif);
  font-size: 22px;
  font-weight: 500;
  line-height: 1.15;
}

.pdp-service-card__text {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  overflow: hidden;
  color: rgba(26, 23, 20, 0.66);
  font-size: 14px;
  line-height: 1.45;
}

.pdp-tag-products__grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

@media (max-width: 1100px) {
  .services-hero__grid,
  .service-detail-hero__grid,
  .services-grid {
    grid-template-columns: 1fr;
  }

  .service-card {
    grid-template-columns: 180px minmax(0, 1fr);
  }

  .pdp-tag-products__grid,
  .pdp-service-links__grid,
  .pdp-blog-links__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 680px) {
  .services-hero__copy,
  .service-detail-hero__copy {
    padding: 22px;
  }

  .services-hero__title,
  .service-detail-hero__title {
    font-size: 34px;
  }

  .services-hero__img,
  .service-detail-hero__img {
    min-height: 220px;
  }

  .service-card,
  .service-card__products,
  .service-detail__steps,
  .pdp-tag-products__grid,
  .pdp-service-links__grid,
  .pdp-blog-links__grid {
    grid-template-columns: 1fr;
  }

  .service-detail__facts { grid-template-columns: 1fr; }
  .service-detail__fact { min-height: 0; }
}

/* ─── External service card (онлайн-раскрой → cut.holzcom-mebel.ru) ─── */
.service-card--external {
  position: relative;
  border-color: rgba(201, 169, 97, 0.5);
  box-shadow: 0 2px 6px rgba(40, 30, 15, 0.05), 0 26px 50px -30px rgba(184, 154, 111, 0.45);
}
.service-card--external:hover {
  border-color: rgba(201, 169, 97, 0.78);
  transform: translateY(-4px);
}
/* This sat on top of .service-card__iconbadge — same corner, 46x46 at 12,12
   against a pill at 14,14 with a higher z-index — so on "Раскрой ЛДСП" the
   service's own icon was covered by the label. Opposite corner: both read. */
.service-card__ext-badge {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--hc-gold), #b89a6f);
  color: #2a2018;
  font: 600 10.5px/1 var(--hc-sans, "Outfit", sans-serif);
  letter-spacing: 0.09em;
  text-transform: uppercase;
  box-shadow: 0 6px 16px -6px rgba(184, 154, 111, 0.7);
}
.service-card__ext-badge::before {
  content: "";
  width: 11px;
  height: 11px;
  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' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3h7v7M21 3l-9 9M19 14v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5'/%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' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3h7v7M21 3l-9 9M19 14v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5'/%3E%3C/svg%3E") center/contain no-repeat;
}
a.service-card__ext-cta {
  background: linear-gradient(135deg, var(--hc-accent-dark, var(--hc-accent-dark)), #2a2018);
  color: #fff;
  border-color: transparent;
}
a.service-card__ext-cta:hover {
  background: linear-gradient(135deg, #6b5944, #1f1813);
}

/* css/blocks/271-page-pdp.css */
/* =================== page-pdp.css =================== */
/* Extracted from 125-hc-pdp-m1.css: page-level PDP helpers. */

/* ---- folded from 189-page-pdp.css ---- */
/* =================== page-pdp.css =================== */
.page-pdp .hc-pdp-engineer__grid a,
.page-pdp .hc-pdp-engineer__grid button {
  min-height: 76px;
  padding: 10px;
  border-radius: 12px;
  border: 1px solid var(--sf-line);
  background: rgba(255, 255, 255, 0.96);
  display: grid;
  gap: 2px;
  text-align: left;
}

.page-pdp .hc-pdp-engineer__grid b {
  font-size: 13px;
  line-height: 1.35;
  white-space: normal;
  overflow-wrap: break-word;
  word-break: normal;
  font-weight: 500;
  color: var(--sf-ink, var(--hc-ink, #1a1714));
}

.page-pdp .hc-pdp-engineer__grid span,
.page-pdp .hc-pdp-engineer__grid b {
  display: block;
  white-space: normal;
  overflow-wrap: anywhere;
}

.page-pdp .pdp-anchor-nav a {
  display: inline-flex;
  align-items: center;
  padding: 12px 16px;
  font-size: 13px;
  font-weight: 500;
  color: rgba(26, 23, 20, 0.62);
  text-decoration: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color .18s ease, border-color .18s ease;
  white-space: nowrap;
}
.page-pdp .pdp-anchor-nav a:hover {
  color: var(--sf-ink, var(--hc-ink, #1a1714));
  border-bottom-color: rgba(180, 151, 115, 0.45);
}
.page-pdp .pdp-trust-strip__ico {
  width: 42px;
  height: 42px;
  border-radius: 11px;
  display: grid;
  place-items: center;
  margin-bottom: 8px;
  color: var(--hc-accent-dark, #7a6548);
  background: rgba(var(--hc-gold-rgb), 0.16);
  transition: transform 0.24s ease, background 0.22s ease;
}
.page-pdp .pdp-trust-strip__item:hover .pdp-trust-strip__ico {
  transform: translateY(-1px) scale(1.05);
  background: rgba(var(--hc-gold-rgb), 0.26);
}
.page-pdp .pdp-trust-strip__item b {
  font-family: var(--hc-serif, 'Playfair Display', Georgia, serif);
  font-size: 16px;
  font-weight: 500;
  color: var(--sf-ink, var(--hc-ink, #1a1714));
  line-height: 1.25;
}
.page-pdp .pdp-trust-strip__item span {
  font-size: 12px;
  color: rgba(26, 23, 20, 0.60);
  line-height: 1.45;
}

/* folded from 198-pdp-anchor-nav.css */
.page-pdp .pdp-anchor-nav {
  display: flex;
  flex-wrap: nowrap;
  gap: 4px;
  padding: 8px 0;
  margin: 0 0 22px;
  border-bottom: 1px solid rgba(180, 151, 115, 0.22);
  position: sticky;
  top: var(--hc-hdr-h, 72px);
  z-index: 8;
  background: rgba(248, 246, 243, 0.92);
  backdrop-filter: saturate(160%) blur(12px);
  -webkit-backdrop-filter: saturate(160%) blur(12px);
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
}
.page-pdp .pdp-anchor-nav a.is-active,
.page-pdp .pdp-anchor-nav a:target {
  color: var(--sf-ink, var(--hc-ink, #1a1714));
  border-bottom-color: var(--hc-accent, var(--hc-accent));
}

/* folded from 199-pdp-cta-row.css (page-scoped part only) */
.page-pdp .pdp-cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0 0 32px;
}

/* folded from 203-pdp-sec-title.css */
.page-pdp .pdp-sec-title {
  max-width: 16ch;
  margin-top: var(--hc-sp-1);
}

/* folded from 202-pdp-sec-block.css */
.page-pdp .pdp-sec-block { margin-top: clamp(42px, 5vw, 78px); }
.page-pdp .pdp-sec-block + .pdp-sec-block { margin-top: clamp(54px, 6.2vw, 96px); }
.page-pdp .pdp-sec-block--spacious { margin-top: clamp(62px, 7vw, 112px); }

/* Lazy fragments return an explicit empty sentinel. Hide the complete section
   so a failed/empty recommendation does not leave a heading and a large gap. */
.page-pdp .pdp-sec-block:has([data-empty]) { display: none; }

.page-pdp .hc-pdp__grid > .pdp-anchor-nav { margin-bottom: 16px; }
.page-pdp .pdp-trust-strip { margin-top: clamp(32px, 4vw, 56px); }
.page-pdp .hc-pdp-m1__desc { margin-top: 12px; }
.page-pdp .hc-pdp-m1__why { margin-top: 16px; }
.page-pdp .hc-pdp-m1__why + .pdp-sec-block { margin-top: 20px; }

.page-pdp .pdp-analogs__grid,
.page-pdp .pdp-tag-products__grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.page-pdp .pdp-analogs__grid > .pcard,
.page-pdp .pdp-tag-products__grid > .pcard {
  min-width: 0;
  max-width: 100%;
}

.page-pdp .pdp-analogs__grid .pcard[data-pcard-variant="c"] .pcard-shell,
.page-pdp .pdp-analogs__grid .pcard[data-pcard-variant="c"] .pcard-c__body,
.page-pdp .pdp-analogs__grid .pcard[data-pcard-variant="c"] .pcard-meta-row,
.page-pdp .pdp-analogs__grid .pcard[data-pcard-variant="c"] .pcard-title,
.page-pdp .pdp-analogs__grid .pcard[data-pcard-variant="c"] .pcard-caption,
.page-pdp .pdp-analogs__grid .pcard[data-pcard-variant="c"] .pcard-footer,
.page-pdp .pdp-tag-products__grid .pcard[data-pcard-variant="c"] .pcard-shell,
.page-pdp .pdp-tag-products__grid .pcard[data-pcard-variant="c"] .pcard-c__body,
.page-pdp .pdp-tag-products__grid .pcard[data-pcard-variant="c"] .pcard-meta-row,
.page-pdp .pdp-tag-products__grid .pcard[data-pcard-variant="c"] .pcard-title,
.page-pdp .pdp-tag-products__grid .pcard[data-pcard-variant="c"] .pcard-caption,
.page-pdp .pdp-tag-products__grid .pcard[data-pcard-variant="c"] .pcard-footer {
  min-width: 0;
  max-width: 100%;
}

@media (max-width: 920px) {
  .page-pdp .hc-pdp__grid > .pdp-anchor-nav { margin-bottom: 12px; }

  .page-pdp .pdp-analogs__grid,
  .page-pdp .pdp-tag-products__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 680px) {
  .page-pdp .pdp-analogs__grid,
  .page-pdp .pdp-tag-products__grid {
    grid-template-columns: 1fr;
  }
}

/* folded from 204-pdp-trust-strip.css */
.page-pdp .pdp-trust-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(14px, 1.7vw, 24px);
  padding: clamp(18px, 2.3vw, 28px);
  margin: clamp(34px, 4vw, 58px) 0 clamp(34px, 4vw, 58px);
  background: linear-gradient(135deg, rgba(255, 252, 247, 0.95), rgba(248, 244, 237, 0.86));
  border: 1px solid rgba(180, 151, 115, 0.22);
  border-radius: 18px;
}
@media (max-width: 760px)  {
  .page-pdp .pdp-trust-strip {
    grid-template-columns: 1fr;
    gap: 16px;
  }

  .page-pdp .pdp-anchor-nav a {
    padding: 10px 12px;
    font-size: 12px;
  }
}
.page-pdp .pdp-trust-strip__item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  text-decoration: none;
  color: inherit;
  min-height: 88px;
  padding: 16px 18px;
  border-radius: 16px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  background: rgba(255, 255, 255, 0.62);
  box-shadow: 0 12px 28px -26px rgba(24, 18, 12, 0.42);
  transition: transform .2s ease, border-color .2s ease, background .2s ease, box-shadow .2s ease;
}
.page-pdp .pdp-trust-strip__item:hover,
.page-pdp .pdp-trust-strip__item:focus-visible {
  transform: translateY(-2px);
  border-color: rgba(141, 109, 71, 0.34);
  background: rgba(255, 255, 255, 0.75);
  box-shadow: 0 24px 38px -28px rgba(24, 18, 12, 0.56);
}

.page-pdp .hc-recently-block {
  margin-bottom: clamp(54px, 7vw, 110px);
  min-width: 0;
  max-width: 100%;
}

.page-pdp .hc-recent {
  display: grid;
  gap: 16px;
  min-width: 0;
  max-width: 100%;
}

.page-pdp .hc-recent__grid {
  min-width: 0;
  max-width: 100%;
}

.page-pdp .hc-recent__grid > .pcard[data-pcard-variant="mini"] {
  min-width: 0;
  max-width: 100%;
}

.page-pdp .hc-recent__head {
  display: flex;
  justify-content: flex-end;
  min-height: 32px;
}

.page-pdp .hc-recent__clear {
  min-height: 32px;
  padding: 7px 12px;
  border: 1px solid rgba(141, 109, 71, 0.24);
  border-radius: 999px;
  background: rgba(255, 253, 248, 0.78);
  color: rgba(26, 23, 20, 0.72);
  font: 650 12px/1 var(--hc-sans, "Outfit", sans-serif);
  cursor: pointer;
  transition: transform .18s ease, border-color .18s ease, background .18s ease, color .18s ease;
}

.page-pdp .hc-recent__clear:hover,
.page-pdp .hc-recent__clear:focus-visible {
  transform: translateY(-1px);
  border-color: rgba(141, 109, 71, 0.42);
  background: #fff;
  color: var(--hc-ink, #1a1714);
}

.page-pdp .pdp-product-rail--recent {
  margin-top: 0;
  margin-bottom: 0;
}

.page-pdp .pdp-product-rail--recent .pcard[data-pcard-variant="mini"] {
  min-height: 100%;
}

/* Leroy-style sticky bar: appears at the top once the buy-box scrolls away. */
.hc-pdp-sticky-dock {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 70;
  background: rgba(255, 252, 247, 0.97);
  border-bottom: 1px solid rgba(141, 109, 71, 0.2);
  box-shadow: 0 12px 34px -26px rgba(40, 30, 15, 0.5);
  opacity: 0;
  transform: translateY(-100%);
  pointer-events: none;
  transition: opacity .22s ease, transform .22s ease;
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
.hc-pdp-sticky-dock.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.hc-pdp-sticky-dock__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding-top: 10px;
  padding-bottom: 10px;
}
.hc-pdp-sticky-dock__lead {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}
.hc-pdp-sticky-dock__thumb {
  flex: none;
  width: 46px;
  height: 46px;
  border-radius: 10px;
  overflow: hidden;
  background: linear-gradient(160deg, #fbf6ec, #ece0cc);
  border: 1px solid rgba(141, 109, 71, 0.16);
}
.hc-pdp-sticky-dock__thumb img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  padding: 4px;
}
.hc-pdp-sticky-dock__meta {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.hc-pdp-sticky-dock__name {
  font: 600 15px/1.2 var(--hc-sans, "Outfit", sans-serif);
  color: var(--hc-ink, #1a1714);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 52vw;
}
.hc-pdp-sticky-dock__sku {
  font: 600 10px/1.1 var(--hc-mono, "JetBrains Mono", monospace);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: rgba(26, 23, 20, 0.56);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.hc-pdp-sticky-dock__nav {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 1 1 auto;
  justify-content: center;
}
.hc-pdp-sticky-dock__nav a,
.hc-pdp-sticky-dock__nav button {
  border: 0;
  background: transparent;
  padding: 8px 12px;
  border-radius: 8px;
  color: rgba(26, 23, 20, 0.7);
  font: 600 13px/1 var(--hc-sans, "Outfit", sans-serif);
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: background .16s ease, color .16s ease;
}
.hc-pdp-sticky-dock__nav a:hover,
.hc-pdp-sticky-dock__nav button:hover {
  background: rgba(141, 109, 71, 0.1);
  color: #1a1714;
}
.hc-pdp-sticky-dock__buy {
  display: flex;
  align-items: center;
  gap: 16px;
  flex: none;
}
@media (max-width: 1080px) {
  .hc-pdp-sticky-dock__nav { display: none; }
}
.hc-pdp-sticky-dock__price {
  font: 700 20px/1 var(--hc-serif, "Playfair Display", Georgia, serif);
  color: var(--hc-ink, #1a1714);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.hc-pdp-sticky-dock__cta {
  min-height: 42px;
  padding: 0 22px;
  border-radius: 10px;
  border: 0;
  background: #15120f;
  color: #fff;
  font: 600 14px/1 var(--hc-sans, "Outfit", sans-serif);
  cursor: pointer;
  white-space: nowrap;
  transition: background .18s ease, transform .18s ease;
}
.hc-pdp-sticky-dock__cta:hover { background: #000; transform: translateY(-1px); }
@media (max-width: 720px) {
  .hc-pdp-sticky-dock__sku { display: none; }
  .hc-pdp-sticky-dock__name { max-width: 40vw; font-size: 13px; }
  .hc-pdp-sticky-dock__thumb { width: 38px; height: 38px; }
  .hc-pdp-sticky-dock__price { font-size: 17px; }
  .hc-pdp-sticky-dock__cta { padding: 0 14px; min-height: 40px; }
  .hc-pdp-sticky-dock__buy { gap: 10px; }
}

/* The dock used to be hidden outright below 640px, on the grounds that the PDP
   had its own mobile purchase flow. Measured on a 390px viewport: it does not —
   nothing purchase-related is pinned, the price sits 1.35 viewports down and the
   buy button 1.12, so buying means scrolling back up past a screenful of page.
   The dock stays, restyled as a slim bottom bar: price and one action, no
   thumbnail and no section nav, which is what made it too tall for a phone. */
@media (max-width: 640px) {
  .hc-pdp-sticky-dock {
    top: auto;
    bottom: 0;
    transform: translateY(100%);
    border-top: 1px solid rgba(141, 109, 71, 0.2);
    border-bottom: 0;
    box-shadow: 0 -12px 34px -26px rgba(40, 30, 15, 0.5);
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }
  .hc-pdp-sticky-dock.is-visible {
    transform: translateY(0);
  }
  .hc-pdp-sticky-dock__inner {
    gap: 10px;
    padding-top: 8px;
    padding-bottom: 8px;
  }
  .hc-pdp-sticky-dock__nav,
  .hc-pdp-sticky-dock__thumb {
    display: none;
  }
  .hc-pdp-sticky-dock__lead {
    min-width: 0;
    flex: 1 1 auto;
  }
  .hc-pdp-sticky-dock__name {
    max-width: none;
    font-size: 12px;
  }
  .hc-pdp-sticky-dock__buy {
    flex: 0 0 auto;
    gap: 8px;
  }
  .hc-pdp-sticky-dock__cta {
    min-height: 44px;
    padding: 0 18px;
  }
}

/* css/blocks/272-hc-pdp-buybox-bar.css */
/* =================== hc-pdp-buybox-bar.css =================== */
/* PDP purchase composition V4: a quiet commercial column, not a card stack. */

.hc-pdp-m1__buy--atelier {
  display: flex;
  flex-direction: column;
  gap: 0;
  min-width: 0;
  max-width: 100%;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.hc-pdp-m1__topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
  padding: 2px 0 13px;
  border-bottom: 1px solid rgba(31, 45, 35, .12);
}
.hc-pdp-m1__topline,
.hc-pdp-m1__bar,
.pdp-sheet-calc,
.hc-pdp-m1__secondary,
.hc-pdp-m1__tools--chips,
.hc-pdp-m1__trust {
  transition: border-color .24s ease, background-color .24s ease;
}
.hc-pdp-m1__topline:hover,
.hc-pdp-m1__bar:hover,
.pdp-sheet-calc:hover,
.hc-pdp-m1__secondary:hover,
.hc-pdp-m1__tools--chips:hover,
.hc-pdp-m1__trust:hover {
  border-color: rgba(47, 111, 76, .34);
  background: linear-gradient(90deg, rgba(47, 111, 76, .045), transparent 72%);
}

.hc-pdp-m1__buy--atelier .hc-pdp-m1__sku-copy:hover {
  transform: rotate(-7deg) scale(1.05);
}
.hc-pdp-m1__buy--atelier .hc-pdp-m1__stock-dot {
  animation: pdp-stock-breathe 2.4s ease-in-out infinite;
}
@keyframes pdp-stock-breathe {
  0%, 100% { box-shadow: 0 0 0 0 rgba(47, 111, 76, 0); }
  50% { box-shadow: 0 0 0 5px rgba(47, 111, 76, .11); }
}

.hc-pdp-m1__buy--atelier .hc-pdp-m1__sku-row {
  gap: 6px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.hc-pdp-m1__buy--atelier .hc-pdp-m1__sku-key {
  font-size: 9px;
  color: rgba(26, 23, 20, .45);
}
.hc-pdp-m1__buy--atelier .hc-pdp-m1__sku-val {
  font-size: 11px;
  font-weight: 650;
}
.hc-pdp-m1__buy--atelier .hc-pdp-m1__sku-copy {
  width: 26px;
  height: 26px;
  border: 0;
  background: rgba(47, 111, 76, .07);
  color: var(--hc-accent-dark, #245a3d);
}
.hc-pdp-m1__buy--atelier .hc-pdp-m1__stock {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--hc-accent-dark, #245a3d);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.hc-pdp-viewers { display: none; }

.hc-pdp-m1__bar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 18px;
  min-width: 0;
  padding: 22px 0 18px;
  border: 0;
  border-bottom: 1px solid rgba(31, 45, 35, .12);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.hc-pdp-m1__bar-price {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 5px 10px;
  min-width: 0;
}
.hc-pdp-m1__bar-price .hc-pdp-m1__price {
  font-size: clamp(34px, 3.1vw, 48px);
  font-weight: 450;
  line-height: .95;
  letter-spacing: -.035em;
}
.hc-pdp-m1__bar-price .pdp-sheet-price {
  flex-basis: 100%;
  margin: 3px 0 0;
  font-size: 11px;
  line-height: 1.4;
}
.hc-pdp-m1__bar-buy {
  display: flex;
  align-items: stretch;
  gap: 8px;
  min-width: 0;
}
.hc-pdp-m1__bar-buy .hc-pdp-m1__qty {
  flex: 0 0 112px;
  min-width: 0;
  grid-template-columns: 32px minmax(0, 1fr) 32px;
  min-height: 48px;
  border-radius: 12px;
}
.hc-pdp-m1__bar-buy .hc-pdp-m1__qty-input { min-width: 0; padding: 0; }
.hc-pdp-m1__bar-buy .hc-pdp-m1__atc-form { flex: 0 0 auto; margin: 0; }
.hc-pdp-m1__bar-buy .hc-pdp-m1__cta-primary {
  min-width: 152px;
  min-height: 48px;
  padding: 0 24px;
  border-radius: 12px;
  white-space: nowrap;
  box-shadow: 0 13px 28px -20px rgba(20, 20, 16, .8);
  transition: box-shadow .22s ease, background-color .22s ease, letter-spacing .22s ease;
}
.hc-pdp-m1__bar-buy .hc-pdp-m1__cta-primary:hover {
  letter-spacing: .035em;
  box-shadow: 0 18px 34px -18px rgba(20, 20, 16, .82);
}
.hc-pdp-m1__backorder { grid-column: 1 / -1; }

/* Calculator becomes an optional tool in the information rhythm. */
.pdp-sheet-calc {
  margin: 0;
  border: 0;
  border-bottom: 1px solid rgba(31, 45, 35, .12);
  background: transparent;
}
.pdp-sheet-calc summary {
  min-height: 46px;
  padding: 0;
}
.pdp-sheet-calc summary span:first-child { gap: 7px; }
.pdp-sheet-calc summary b { font-size: 12px; font-weight: 650; }
.pdp-sheet-calc summary small { font-size: 10px; }
.pdp-sheet-calc__body {
  grid-template-columns: minmax(0, 1fr) 92px;
  padding: 0 0 14px;
}
.pdp-sheet-calc output,
.pdp-sheet-calc button { grid-column: auto; }

/* Secondary actions are a utility strip, not another CTA tier. */
.hc-pdp-m1__secondary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 42px;
  align-items: center;
  gap: 8px;
  min-width: 0;
  padding: 12px 0 0;
}
.hc-pdp-m1__secondary .hc-pdp-m1__cta-outline {
  grid-column: auto;
  width: auto;
  min-height: 40px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: rgba(26, 23, 20, .72);
  font-size: 13px;
  justify-content: flex-start;
}
.hc-pdp-m1__secondary .hc-pdp-m1__cta-outline:hover {
  color: var(--hc-accent-dark, #245a3d);
  background: transparent;
  transform: none;
}
.hc-pdp-m1__fav {
  grid-column: auto;
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(31, 45, 35, .14);
  border-radius: 50%;
  background: transparent;
  color: var(--hc-accent-dark, #245a3d);
  cursor: pointer;
}
.hc-pdp-m1__fav svg { width: 18px; height: 18px; }
.hc-pdp-m1__fav:hover { border-color: rgba(47, 111, 76, .42); }
.hc-pdp-m1__fav.is-active,
.hc-pdp-m1__fav[aria-pressed="true"] { background: var(--hc-accent, #2f6f4c); color: #fff; }

.hc-pdp-m1__tools--chips {
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding-top: 10px;
}
.hc-pdp-m1__tools--chips .hc-pdp-m1__tools-label {
  margin: 0;
  font-size: 9px;
  letter-spacing: .15em;
  color: rgba(26, 23, 20, .45);
}
.hc-pdp-m1__tools--chips .hc-pdp-m1__tools-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
}
.hc-pdp-m1__tools--chips .hc-pdp-m1__tools-row > * { flex: 0 1 auto; }
.hc-pdp-m1__tools--chips .hc-pdp-m1__tool {
  min-height: 30px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: rgba(26, 23, 20, .66);
  font-size: 12px;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-color: rgba(47, 111, 76, .24);
  text-underline-offset: 4px;
  cursor: pointer;
}
.hc-pdp-m1__tools--chips .hc-pdp-m1__tool:hover {
  color: var(--hc-accent-dark, #245a3d);
  background: transparent;
  transform: none;
  box-shadow: none;
}

.hc-pdp-m1__trust {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 11px;
  padding: 12px 0 0;
  border-top: 1px solid rgba(31, 45, 35, .12);
}
.hc-pdp-m1__buy--atelier .hc-trust {
  align-items: flex-start;
  gap: 6px;
  min-width: 0;
  color: rgba(26, 23, 20, .57);
  font-size: 10px;
  line-height: 1.32;
}
.hc-pdp-m1__buy--atelier .hc-trust svg { flex: 0 0 16px; width: 16px; height: 16px; }

.hc-pdp-microtrust { margin: 6px 0 0; color: rgba(26, 23, 20, .55); font-size: 11px; }

.hc-pdp-m1__notify {
  min-height: 40px;
  border: 0;
  border-bottom: 1px solid rgba(31, 45, 35, .12);
  border-radius: 0;
  background: transparent;
}

@media (min-width: 1100px) {
  .hc-pdp-m1__hero { grid-template-columns: minmax(0, 1.16fr) minmax(420px, .84fr); align-items: stretch; gap: clamp(34px, 4vw, 64px); }
  .hc-pdp-m1__gallery .hc-pdp-gallery__main,
  .hc-pdp-m1__gallery .hc-pdp-gallery__empty,
  .hc-pdp-m1__gallery .hc-pdp-gallery__thumbs {
    width: 100%;
    max-width: none;
    margin-inline: 0;
  }
  .hc-pdp-m1__aside {
    grid-template-rows: auto auto minmax(0, 1fr);
    height: 100%;
    padding-top: 8px;
  }
  .hc-pdp-m1__buy--atelier {
    height: 100%;
    min-height: 0;
    justify-content: space-between;
  }
}

@media (max-width: 1099px) and (min-width: 861px) {
  .hc-pdp-m1__bar { grid-template-columns: 1fr; }
  .hc-pdp-m1__bar-buy { width: 100%; }
  .hc-pdp-m1__bar-buy .hc-pdp-m1__atc-form { flex: 1; }
  .hc-pdp-m1__bar-buy .hc-pdp-m1__cta-primary { width: 100%; }
}

@media (max-width: 860px) {
  .hc-pdp-m1__buy--atelier { display: contents; }
  .hc-pdp-m1__topline { padding: 4px 0 10px; }
  .hc-pdp-m1__bar {
    grid-template-columns: 1fr;
    gap: 14px;
    padding: 16px 0;
  }
  .hc-pdp-m1__bar-buy { width: 100%; }
  .hc-pdp-m1__bar-buy .hc-pdp-m1__atc-form { flex: 1; }
  .hc-pdp-m1__bar-buy .hc-pdp-m1__cta-primary { width: 100%; min-width: 0; }
  .pdp-sheet-calc { order: 5; }
  .hc-pdp-m1__secondary { order: 6; }
  .hc-pdp-m1__tools { order: 7; }
  .hc-pdp-m1__trust { order: 8; }
}

@media (max-width: 480px) {
  .hc-pdp-m1__bar-price .hc-pdp-m1__price { font-size: 36px; }
  .hc-pdp-m1__bar-buy .hc-pdp-m1__qty { flex-basis: 108px; }
  .hc-pdp-m1__topline { align-items: flex-start; }
  .hc-pdp-m1__stock { text-align: right; }
  .pdp-sheet-calc__body { grid-template-columns: 1fr 82px; }
  .pdp-sheet-calc output,
  .pdp-sheet-calc button { grid-column: 1 / -1; }
  .hc-pdp-m1__trust { grid-template-columns: 1fr; }
}

@media (max-width: 340px) {
  .hc-pdp-m1__bar-buy { flex-direction: column; }
  .hc-pdp-m1__bar-buy .hc-pdp-m1__qty { flex: 0 0 auto; }
}

/* Discontinued state remains an explicit, self-contained exception. */
.pdp-discont { display:flex;flex-direction:column;gap:12px;padding:20px;border:1px solid rgba(150,90,60,.22);border-radius:14px;background:#fbf6ef }
.pdp-discont__badge { align-self:flex-start;padding:4px 10px;border-radius:999px;background:rgba(150,90,60,.12);color:#8a4b2f;font-size:11px;font-weight:700;text-transform:uppercase }
.pdp-discont__title { font-size:24px }.pdp-discont__text{margin:0;color:rgba(26,23,20,.68)}.pdp-discont__cta{align-self:flex-start}.pdp-analogs{margin-top:clamp(20px,3vw,34px)}

/* css/blocks/295-pdp-service-upsell.css */
/* =================== 295-pdp-service-upsell.css =================== */
/* Inline buy-box "Добавить услугу" upsell — checkbox rows whose values are
   carried into the /cart/add form via hx-include="#pdp-upsell".
   Extends 125-hc-pdp-m1.css / 272-hc-pdp-buybox-bar.css. WDL tokens, no !important. */

.hc-pdp-upsell {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 14px 16px;
  border: 1px solid rgba(141, 109, 71, 0.18);
  border-radius: 16px;
  background: linear-gradient(180deg, #fffdf9, #f8f1e6);
}
.hc-pdp-upsell__eyebrow {
  margin-bottom: 2px;
  font: 650 11px/1 var(--hc-sans, "Outfit", sans-serif);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--hc-accent, var(--hc-accent));
}

.hc-pdp-upsell__row {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 44px;
  padding: 7px 12px;
  border: 1px solid rgba(141, 109, 71, 0.16);
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  transition: border-color 0.18s ease, background 0.18s ease, transform 0.18s ease;
}
.hc-pdp-upsell__row:hover {
  border-color: rgba(199, 155, 96, 0.5);
  transform: translateY(-1px);
}
.hc-pdp-upsell__row:has(.hc-pdp-upsell__cb:checked) {
  border-color: var(--hc-accent, var(--hc-accent));
  background: linear-gradient(180deg, #fff, rgba(246, 239, 226, 0.7));
}

/* real checkbox: visually hidden, kept accessible + focusable */
.hc-pdp-upsell__cb {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
.hc-pdp-upsell__box {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  display: inline-grid;
  place-items: center;
  border: 1.6px solid rgba(141, 109, 71, 0.4);
  border-radius: 6px;
  background: #fff;
  transition: background 0.16s ease, border-color 0.16s ease;
}
.hc-pdp-upsell__box::after {
  content: "";
  width: 10px;
  height: 6px;
  border-left: 2px solid #fff;
  border-bottom: 2px solid #fff;
  transform: rotate(-45deg) translate(0, -1px);
  opacity: 0;
  transition: opacity 0.16s ease;
}
.hc-pdp-upsell__cb:checked + .hc-pdp-upsell__box {
  background: var(--hc-accent, var(--hc-accent));
  border-color: var(--hc-accent, var(--hc-accent));
}
.hc-pdp-upsell__cb:checked + .hc-pdp-upsell__box::after { opacity: 1; }
.hc-pdp-upsell__cb:focus-visible + .hc-pdp-upsell__box {
  outline: 2px solid rgba(199, 155, 96, 0.7);
  outline-offset: 2px;
}

.hc-pdp-upsell__name {
  flex: 1 1 auto;
  min-width: 0;
  font: 600 14px/1.25 var(--hc-sans, "Outfit", sans-serif);
  color: var(--hc-ink, #1a1714);
}
.hc-pdp-upsell__price {
  flex: 0 0 auto;
  font: 700 14px/1 var(--hc-sans, "Outfit", sans-serif);
  color: var(--hc-accent, var(--hc-accent));
  white-space: nowrap;
}

@media (max-width: 560px) {
  .hc-pdp-upsell { padding: 12px; }
  .hc-pdp-upsell__name { font-size: 13.5px; }
}

/* css/blocks/306-pdp-media-extra.css */
.hc-pdp-media-extra{margin-top:16px;padding:18px;border:1px solid var(--line,#dedbd4);border-radius:18px;background:#fff}
.hc-pdp-media-extra h2{margin:0 0 12px;font-size:18px}
.hc-pdp-media-extra__stage{aspect-ratio:1;display:grid;place-items:center;overflow:hidden;border-radius:12px;background:#f7f6f3}
.hc-pdp-media-extra__stage img{grid-area:1/1;width:100%;height:100%;object-fit:contain}
.hc-pdp-media-extra input[type=range]{width:100%;margin-top:12px;accent-color:#2d8649}
.hc-pdp-media-extra__videos{display:grid;gap:10px}
.hc-pdp-media-extra__videos a{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid var(--line,#dedbd4);border-radius:12px;color:inherit;text-decoration:none}
.hc-pdp-media-extra__videos img{width:88px;height:56px;object-fit:cover;border-radius:8px}
.hc-pdp-media-extra__video{margin:0}
.hc-pdp-media-extra__video video{display:block;width:100%;max-height:520px;border-radius:12px;background:#111}
.hc-pdp-media-extra__video figcaption{margin-top:8px;font-weight:600}
@media(max-width:640px){.hc-pdp-media-extra{padding:14px;border-radius:14px}}
