/* ==========================================================================
   NIKA GRAN — editorial layer: product page + stone pages
   --------------------------------------------------------------------------
   Direction: luxury / minimal editorial — hairline rules instead of boxes,
   generous space around few elements, one accent (clay), uppercase eyebrows
   with a short rule. Uses the existing brand tokens only: no new colours,
   no new fonts, no shadows beyond the existing panel.

   Why these choices:
   - Long copy gets a 70ch measure: at 1280px the previous full-width text ran
     ~110 characters per line, which is beyond comfortable reading.
   - Section headings stay Prata but drop one step: the product <h1> must stay
     the loudest element on the page.
   - Tables lose the zebra and gain a hairline rhythm, with the source column
     muted and smaller: it is reference material, not the main message.
   - Every state (hover, focus-visible) is defined; motion respects
     prefers-reduced-motion.
   ========================================================================== */

:root {
  --npe-measure: 70ch;
  --npe-rule: rgba(16, 16, 15, .12);
  --npe-rule-soft: rgba(16, 16, 15, .08);
  --npe-rule-strong: rgba(16, 16, 15, .24);
  --npe-muted: rgba(16, 16, 15, .6);
  /* .48 measured 3.1-3.4:1 against white and bone — below WCAG AA for
     small text. .62 composites to ~4.9:1 on both surfaces. */
  --npe-faint: rgba(16, 16, 15, .62);
  --npe-surface: #faf8f3;
}

/* --- shared: eyebrow ----------------------------------------------------- */
.nika-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .7rem;
  margin: 0 0 .9rem;
  color: var(--nika-clay);
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: .2em;
  text-transform: uppercase;
}

.nika-eyebrow::before {
  content: "";
  width: 26px;
  height: 1px;
  background: currentColor;
  opacity: .55;
}

/* --- product page: top panel -------------------------------------------- */
.section-d_shop_id .product-d {
  border: 1px solid var(--npe-rule);
  box-shadow: 0 20px 60px rgba(16, 16, 15, .08);
  /* The specification column is ~1500px tall; the image stays in view while
     it is read, so overflow must stay visible for position: sticky to work. */
  overflow: visible;
}

.section-d_shop_id .product-d__images {
  position: sticky;
  top: 108px;
  align-self: start;
  min-height: 0;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: #f2efe8;
}

/* The "NIKA GRAN" watermark competed with the product; the panel already
   carries the brand in the header. */
.section-d_shop_id .product-d__images::after { content: none; }

.section-d_shop_id .product-d__images img,
.section-d_shop_id .product-d__images picture {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.section-d_shop_id .product-d__details { background: #fff; }

/* --- product page: lead paragraph --------------------------------------- */
.section-d_shop_id .product-d__tabs .product-d__tab_text {
  max-width: 62ch;
  color: rgba(16, 16, 15, .72);
  font-size: 1rem;
  line-height: 1.8;
}

/* --- product page: specification rows ----------------------------------- */
.product-d__tab_params .nika-specs-title {
  margin: 2.25rem 0 1.25rem;
  padding-top: 1.75rem;
  border-top: 1px solid var(--npe-rule);
  font: 400 clamp(1.35rem, 1.7vw, 1.6rem)/1.25 Prata, serif;
  letter-spacing: -.01em;
}

.product-d__tab_params .param-d {
  display: grid;
  grid-template-columns: minmax(0, 38%) minmax(0, 1fr);
  gap: 1.25rem;
  padding: .9rem 0;
  border-bottom: 1px solid var(--npe-rule-soft);
  font-size: .86rem;
}

.product-d__tab_params .param-d:last-child { border-bottom: 0; }
.product-d__tab_params .param-d__name { color: var(--npe-faint); }
.product-d__tab_params .param-d__value { font-weight: 600; }

.product-d__tab_params .param-d__value a {
  color: var(--nika-clay);
  text-decoration: none;
  border-bottom: 1px solid rgba(143, 104, 70, .4);
}

.product-d__tab_params .param-d__value a:hover { border-bottom-color: var(--nika-clay); }

/* --- product page: price note + primary action -------------------------- */
.nika-product-quote {
  margin-top: 2rem;
  padding-top: 1.75rem;
  border-top: 1px solid var(--npe-rule);
}

.nika-product-quote p {
  max-width: 58ch;
  margin: 0 0 1.25rem !important;
  color: var(--npe-muted);
  font-size: .82rem;
  line-height: 1.7;
}

.nika-product-quote a {
  width: 100%;
  box-sizing: border-box;
  justify-content: space-between;
  padding: 1.05rem 1.35rem;
}

/* --- product page: calculator card -------------------------------------- */
.nika-product-calc {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 1.1rem;
  margin-top: 1.75rem;
  padding: 1.35rem;
  border: 1px solid var(--npe-rule);
  background: var(--npe-surface);
}

.nika-product-calc__icon {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border: 1px solid var(--npe-rule);
  color: var(--nika-clay);
}

.nika-product-calc__title {
  display: block;
  margin-bottom: .3rem;
  font-size: .66rem;
  font-weight: 800;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.nika-product-calc__text { display: block; color: var(--npe-muted); font-size: .8rem; line-height: 1.6; }

.nika-product-calc__link {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: .5rem;
  padding: .85rem 0 0;
  border: 0;
  border-top: 1px solid var(--npe-rule);
  background: none;
  color: var(--nika-ink);
  font-size: .66rem;
  font-weight: 800;
  letter-spacing: .14em;
  text-decoration: none !important;
  text-transform: uppercase;
  /* Neutralise the legacy button styling: it kept a dark hover background and
     a 44px min-height, which turned the link into a black bar. */
  min-height: 0;
  flex: none;
  transition: color .2s ease;
}

.nika-product-calc__link:hover,
.nika-product-calc__link:focus { background: none !important; color: var(--nika-clay) !important; }
.nika-product-calc__link span { transition: transform .2s ease; }
.nika-product-calc__link:hover span { transform: translateX(3px); }

/* --- product page: dimension schematic ---------------------------------- */
.nika-product-dims {
  margin-top: 2rem;
  padding: 1.5rem;
  border: 1px solid var(--npe-rule);
  background: #fff;
}

.nika-product-dims h2 {
  margin: 0 0 1.1rem;
  font: 400 clamp(1.25rem, 1.9vw, 1.55rem)/1.25 Prata, serif;
  letter-spacing: -.01em;
}

.nika-product-dims svg { max-width: 420px; height: auto; }

.nika-product-dims__note {
  max-width: 52ch;
  margin: 1rem 0 0 !important;
  color: var(--npe-faint);
  font-size: .78rem;
  line-height: 1.65;
}

/* --- product page: long copy below the panel ---------------------------- */
.nika-product-content { max-width: 1120px; margin-top: 3.5rem; }

.nika-product-content > section + section {
  margin-top: 3.25rem;
  padding-top: 2.75rem;
  border-top: 1px solid var(--npe-rule);
}

.nika-product-content h2 {
  margin: 0 0 1.25rem;
  font: 400 clamp(1.6rem, 2.6vw, 2.15rem)/1.18 Prata, serif;
  letter-spacing: -.015em;
}

.nika-product-about__text { max-width: var(--npe-measure); }
.nika-product-about__text p { margin: 0 0 1.15rem; line-height: 1.85; }
.nika-product-about__text p:last-child { margin-bottom: 0; }

.nika-product-faq h3 {
  margin: 0 0 .5rem;
  padding-top: 1.6rem;
  border-top: 1px solid var(--npe-rule-soft);
  font: 600 1rem/1.5 Manrope, sans-serif;
}

.nika-product-faq h3:first-of-type { padding-top: 0; border-top: 0; }
.nika-product-faq h3 + p { margin: 0 0 1.6rem; }
.nika-product-faq p { max-width: var(--npe-measure); color: rgba(16, 16, 15, .66); line-height: 1.8; }

.nika-product-delivery ul { max-width: var(--npe-measure); }

/* --- shared: lists ------------------------------------------------------ */
.nika-product-delivery ul,
.nika-stone-page ul {
  margin: 0 0 1.4rem;
  padding: 0;
  list-style: none;
}

.nika-product-delivery ul li,
.nika-stone-page ul li {
  position: relative;
  max-width: var(--npe-measure);
  margin-bottom: .7rem;
  padding-left: 1.4rem;
  line-height: 1.75;
}

.nika-product-delivery ul li::before,
.nika-stone-page ul li::before {
  content: "—";
  position: absolute;
  left: 0;
  color: var(--nika-clay);
  opacity: .85;
}

.nika-product-delivery ul li:last-child,
.nika-stone-page ul li:last-child { margin-bottom: 0; }

/* --- stone pages -------------------------------------------------------- */
.nika-stone-page { max-width: 1120px; }

.nika-stone-page h1 {
  margin: 0 0 1.75rem;
  font: 400 clamp(2.4rem, 5.2vw, 4rem)/1.05 Prata, serif;
  letter-spacing: -.03em;
}

.nika-stone-page h2 {
  margin: 3.25rem 0 1.15rem;
  font: 400 clamp(1.6rem, 2.6vw, 2.15rem)/1.18 Prata, serif;
  letter-spacing: -.015em;
}

.nika-stone-page h1 + h2,
.nika-stone-page h1 + figure + h2 { margin-top: 2.25rem; }

.nika-stone-page p { max-width: var(--npe-measure); line-height: 1.85; }
.nika-stone-page p + p { margin-top: 1.15rem; }

.nika-stone-page .nika-stone-photo { max-width: 760px; margin: 0 0 2.5rem; }

.nika-stone-page .nika-stone-photo img {
  width: 100%;
  height: auto;
  border: 1px solid var(--npe-rule-soft);
}

.nika-stone-page .nika-stone-photo figcaption {
  max-width: var(--npe-measure);
  margin-top: .8rem;
  color: var(--npe-faint);
  font-size: .75rem;
  line-height: 1.6;
}

.nika-stone-page .nika-stone-photo__note { color: var(--npe-faint); }

/* --- stone pages: tables ------------------------------------------------ */
.nika-stone-page table {
  width: 100%;
  margin: 1.5rem 0 1.75rem;
  border-collapse: collapse;
  font-size: .86rem;
}

.nika-stone-page table th {
  padding: .6rem 1.25rem .7rem 0;
  border-bottom: 1px solid var(--npe-rule-strong);
  color: var(--npe-faint);
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: .16em;
  text-align: left;
  text-transform: uppercase;
  vertical-align: bottom;
}

.nika-stone-page table th:first-child { width: 26%; }
.nika-stone-page table td {
  padding: .9rem 1.25rem .95rem 0;
  border-bottom: 1px solid var(--npe-rule-soft);
  line-height: 1.65;
  vertical-align: top;
}

.nika-stone-page table td:first-child { font-weight: 600; }
/* The muted "source" treatment belongs to the third column only: in a
   two-column table the second cell is the value the reader came for. */
.nika-stone-page table td:last-child:not(:nth-child(2)),
.nika-stone-page table th:last-child:not(:nth-child(2)) {
  padding-right: 0;
  color: var(--npe-faint);
  font-size: .76rem;
  line-height: 1.6;
}

.nika-stone-page table th:last-child:not(:nth-child(2)) { color: var(--npe-faint); }

.nika-stone-page table tr:last-child td { border-bottom: 1px solid var(--npe-rule); }

/* On narrow screens the tables become stacked definition lists: the row label
   is the field name, so the header row is redundant. */
@media (max-width: 820px) {
  .nika-stone-page table,
  .nika-stone-page table tbody,
  .nika-stone-page table tr,
  .nika-stone-page table td { display: block; width: auto; }

  .nika-stone-page table thead { display: none; }

  .nika-stone-page table tr {
    padding: .95rem 0;
    border-bottom: 1px solid var(--npe-rule-soft);
  }

  .nika-stone-page table td { padding: .3rem 0; border-bottom: 0; }

  .nika-stone-page table td:first-child {
    color: var(--npe-faint);
    font-size: .6rem;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
  }

  .nika-stone-page table td:nth-child(2) { font-size: .92rem; }
}

/* --- shared: focus, motion, rhythm -------------------------------------- */
.nika-product-quote a,
.nika-product-calc__link,
.prevnext-d a { transition: background .2s ease, color .2s ease, border-color .2s ease; }

.prevnext-d a:hover { border-color: var(--npe-rule-strong); background: var(--npe-surface); }

.section-d_shop_id a:focus-visible,
.nika-product-content a:focus-visible,
.nika-stone-page a:focus-visible,
.nika-stone-page button:focus-visible {
  outline: 2px solid var(--nika-clay);
  outline-offset: 3px;
}

@media (max-width: 1023px) {
  .section-d_shop_id .product-d { overflow: hidden; }
  .section-d_shop_id .product-d__images {
    position: static;
    aspect-ratio: 4 / 3;
  }

  /* The details column is a flex column on narrow screens, and the existing
     rule puts the price note first (order: -1). Price before the product is
     explained reads backwards, so the order becomes: description, specs,
     price and CTA, calculator, dimensions. */
  .section-d_shop_id .product-d__details {
    display: flex;
    flex-direction: column;
  }

  .section-d_shop_id .product-d__tabs { order: 1; margin-top: 0; }

  .section-d_shop_id .nika-product-quote {
    order: 2;
    margin: 1.75rem 0 0;
    padding: 1.5rem 0 0;
    border-top: 1px solid var(--npe-rule);
    border-bottom: 0;
  }

  .section-d_shop_id .nika-product-calc { order: 3; }
  .section-d_shop_id .nika-product-dims { order: 4; }
}

@media (max-width: 639px) {
  .nika-product-content,
  .nika-stone-page { margin-top: 2.25rem; }
  .nika-product-content > section + section { margin-top: 2.5rem; padding-top: 2rem; }
  .nika-product-quote a { justify-content: space-between; }
}

@media (prefers-reduced-motion: reduce) {
  .nika-product-calc__link span,
  .prevnext-d a { transition: none; }
  .nika-product-calc__link:hover span { transform: none; }
}

/* --- product page: trust strip ------------------------------------------
   Four facts taken verbatim from the delivery block. No lead times, no
   guarantee, no discounts: those figures do not exist in the source data. */
.nika-trust {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem 1.5rem;
  margin-top: 1.75rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--npe-rule);
}

.nika-trust__item { display: flex; align-items: flex-start; gap: .7rem; }

.nika-trust__icon {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border: 1px solid var(--npe-rule);
  color: var(--nika-clay);
}

.nika-trust__body { display: flex; flex-direction: column; gap: .15rem; }
.nika-trust__body strong { font-size: .78rem; font-weight: 700; }
.nika-trust__body span { color: var(--npe-faint); font-size: .74rem; line-height: 1.5; }

/* --- product page: related products ------------------------------------- */
.nika-product-related {
  margin-top: 3.25rem;
  padding-top: 2.75rem;
  border-top: 1px solid var(--npe-rule);
}

.nika-product-related h2 {
  margin: 0 0 1.5rem;
  font: 400 clamp(1.6rem, 2.6vw, 2.15rem)/1.18 Prata, serif;
  letter-spacing: -.015em;
}

.nika-related-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1.25rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.nika-related-card { display: flex; }

.nika-related-card__link {
  display: flex;
  flex-direction: column;
  width: 100%;
  border: 1px solid var(--npe-rule);
  background: #fff;
  text-decoration: none;
  transition: border-color .2s ease, transform .2s ease;
}

.nika-related-card__link:hover { border-color: var(--npe-rule-strong); transform: translateY(-2px); }
.nika-related-card__link:focus-visible { outline: 2px solid var(--nika-clay); outline-offset: 2px; }

.nika-related-card__media { display: block; aspect-ratio: 4 / 5; overflow: hidden; background: var(--npe-surface); }
.nika-related-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.nika-related-card__link:hover .nika-related-card__media img { transform: scale(1.03); }

.nika-related-card__name {
  padding: 1rem 1.1rem .35rem;
  color: var(--nika-ink);
  font: 400 1rem/1.3 Prata, serif;
}

.nika-related-card__more {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  margin: auto 1.1rem 1.1rem;
  padding-top: .75rem;
  border-top: 1px solid var(--npe-rule-soft);
  color: var(--nika-clay);
  font-size: .62rem;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
}

@media (max-width: 1023px) {
  .nika-related-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 639px) {
  .nika-trust { grid-template-columns: 1fr; }
  .nika-related-grid { gap: .85rem; }
  .nika-related-card__name { padding: .8rem .85rem .3rem; font-size: .92rem; }
  .nika-related-card__more { margin: auto .85rem .85rem; font-size: .58rem; }
}

@media (prefers-reduced-motion: reduce) {
  .nika-related-card__link,
  .nika-related-card__media img { transition: none; }
  .nika-related-card__link:hover { transform: none; }
  .nika-related-card__link:hover .nika-related-card__media img { transform: none; }
}

/* --- category page: FAQ ------------------------------------------------- */
.nika-category-faq {
  max-width: 1120px;
  margin-top: 3.25rem;
  padding-top: 2.75rem;
  border-top: 1px solid var(--npe-rule);
}

.nika-category-faq h2 {
  margin: 0 0 1.25rem;
  font: 400 clamp(1.6rem, 2.6vw, 2.15rem)/1.18 Prata, serif;
  letter-spacing: -.015em;
}

.nika-category-faq h3 {
  margin: 0 0 .5rem;
  padding-top: 1.6rem;
  border-top: 1px solid var(--npe-rule-soft);
  font: 600 1rem/1.5 Manrope, sans-serif;
}

.nika-category-faq__item:first-of-type h3 { padding-top: 0; border-top: 0; }
.nika-category-faq p { max-width: var(--npe-measure); margin: 0 0 1.6rem; color: rgba(16, 16, 15, .66); line-height: 1.8; }

/* --- reading surfaces ---------------------------------------------------
   The editorial rework had stripped the white inner card, so long copy sat
   straight on the bone page background. Body text reads better on white:
   these panels restore it without giving up the bone page canvas. */
.nika-product-content,
.nika-product-related,
.nika-category-faq,
.nika-stone-page,
.nika-articles.nika-article {
  background: #fff;
  border: 1px solid var(--npe-rule-soft);
  box-shadow: 0 12px 40px rgba(16, 16, 15, .05);
  padding: clamp(1.5rem, 3.5vw, 3.25rem);
}

.nika-product-content { margin-top: 2rem; }
.nika-product-content > section + section { margin-top: 2.75rem; padding-top: 2.25rem; }

/* The panel border replaces the hairline that used to separate these blocks. */
.nika-product-related,
.nika-category-faq {
  margin-top: 2rem;
  padding-top: clamp(1.5rem, 3.5vw, 3.25rem);
  border-top: 1px solid var(--npe-rule-soft);
}

.nika-stone-page { padding-top: clamp(1.75rem, 4vw, 3.5rem); }

/* The article hero sits flush inside the panel: the photo is part of the card. */
.nika-articles.nika-article .nika-article__hero,
.nika-articles.nika-article .nika-article__hero-link { border-radius: 0; }

@media (max-width: 639px) {
  .nika-product-content,
  .nika-product-related,
  .nika-category-faq,
  .nika-stone-page,
  .nika-articles.nika-article { padding: 1.25rem; }
}

/* --- floating contact bar ----------------------------------------------
   Competitor pattern (granex): keep a call/Viber action reachable while the
   reader scrolls. We have no messengers, so the bar is phone + quote form. */
.nika-contact-bar { display: none; }

.nika-contact-bar.is-visible { display: flex; }

@media (min-width: 701px) {
  .nika-contact-bar {
    position: fixed;
    right: 1.5rem;
    bottom: 1.5rem;
    z-index: 40;
    flex-direction: column;
    gap: .5rem;
  }

  .nika-contact-bar__action {
    display: inline-flex;
    align-items: center;
    gap: .6rem;
    min-height: 48px;
    padding: .85rem 1.15rem;
    border: 1px solid var(--npe-rule-strong);
    background: #fff;
    box-shadow: 0 10px 30px rgba(16, 16, 15, .12);
    color: var(--nika-ink);
    font-size: .7rem;
    font-weight: 800;
    letter-spacing: .1em;
    text-decoration: none;
    text-transform: uppercase;
    transition: border-color .2s ease, color .2s ease;
  }

  .nika-contact-bar__action:hover { border-color: var(--nika-ink); color: var(--nika-clay); }
  .nika-contact-bar__action:focus-visible { outline: 2px solid var(--nika-clay); outline-offset: 2px; }
  .nika-contact-bar__action_quote { background: var(--nika-sand); border-color: var(--nika-sand); }
  .nika-contact-bar__action_quote:hover { background: var(--nika-ink); border-color: var(--nika-ink); color: #fff; }
  .nika-contact-bar__value { font-weight: 600; letter-spacing: .02em; text-transform: none; }
}

@media (max-width: 700px) {
  .nika-contact-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 40;
    border-top: 1px solid var(--npe-rule);
    background: #fff;
    box-shadow: 0 -6px 24px rgba(16, 16, 15, .1);
  }

  .nika-contact-bar__action {
    display: flex;
    flex: 1;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    min-height: 54px;
    color: var(--nika-ink);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .1em;
    text-decoration: none;
    text-transform: uppercase;
  }

  .nika-contact-bar__action + .nika-contact-bar__action { border-left: 1px solid var(--npe-rule); }
  .nika-contact-bar__action_call { color: var(--nika-clay); }
  .nika-contact-bar__action_quote { background: var(--nika-sand); }
  .nika-contact-bar__value { display: none; }

  /* Reserve room so the bar never covers the last line of content. */
  html.nika-contact-bar-on body { padding-bottom: 54px; }
}

@media (prefers-reduced-motion: reduce) {
  .nika-contact-bar__action { transition: none; }
}

/* --- panels match the card width, copy fills them -----------------------
   The reading panels were pinned to 1120px while the product card is 1184px,
   and paragraphs were capped at 70ch, so the white sheet looked narrower than
   the card and half empty. Both limits are lifted: text now runs the full
   inner width of the panel. */
.nika-product-content,
.nika-product-related,
.nika-category-faq,
.nika-stone-page {
  max-width: none;
}

.nika-product-about__text,
.nika-product-about__text p,
.nika-product-faq p,
.nika-product-delivery ul li,
.nika-stone-page p,
.nika-stone-page ul li,
.nika-stone-page .nika-stone-photo figcaption {
  max-width: none;
}

.nika-category-faq p { max-width: none; }

/* The photo plate was pinned to 760px; with the copy at full width it left a
   bare gap, so the stone photo spans the panel as well. */
.nika-stone-page .nika-stone-photo { max-width: none; display: flex; flex-direction: column; align-items: center; }
.nika-stone-page .nika-stone-photo a,
.nika-stone-page .nika-stone-photo img,
.nika-stone-page .nika-stone-photo figcaption { width: 100%; max-width: 900px; }

/* Four actions in the contact bar now (call, Viber, Telegram, quote). */
@media (max-width: 700px) {
  .nika-contact-bar__action { min-width: 0; padding: 0 .35rem; font-size: .6rem; letter-spacing: .04em; }
  .nika-contact-bar__label { white-space: nowrap; }
  .nika-contact-bar__action_viber { color: #665cac; }
  .nika-contact-bar__action_telegram { color: #2aabee; }
}

@media (min-width: 701px) {
  .nika-contact-bar__action_viber:hover { border-color: #665cac; color: #665cac; }
  .nika-contact-bar__action_telegram:hover { border-color: #2aabee; color: #2aabee; }
}

/* The format table on /calculator/ is wider than a phone screen: let it scroll
   inside its own box instead of pushing the whole page sideways. */
@media (max-width: 820px) {
  .nika-content table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* The calculator page carries the same long explanatory copy as the stone
   pages, so it gets the same white reading surface. */
.nika-calculator-page {
  max-width: none;
  background: #fff;
  border: 1px solid var(--npe-rule-soft);
  box-shadow: 0 12px 40px rgba(16, 16, 15, .05);
  padding: clamp(1.5rem, 3.5vw, 3.25rem);
}

.nika-calculator-page p,
.nika-calculator-page li { max-width: none; }

@media (max-width: 639px) {
  .nika-calculator-page { padding: 1.25rem; }
}

/* --- product page: indicative price ------------------------------------ */
.nika-product-price { margin: 0 0 1rem; }

.nika-product-price__value {
  display: block;
  margin-bottom: .4rem;
  color: var(--nika-ink);
  font: 400 clamp(1.5rem, 2.2vw, 1.95rem)/1.15 Prata, serif;
  letter-spacing: -.02em;
}

.nika-product-price__note { display: block; color: var(--npe-faint); font-size: .78rem; line-height: 1.55; }

.param-d__hint { display: block; margin-top: .35rem; color: var(--npe-faint); font-size: .76rem; font-weight: 400; line-height: 1.5; }

/* --- price page --------------------------------------------------------- */
.nika-info-page {
  max-width: none;
  background: #fff;
  border: 1px solid var(--npe-rule-soft);
  box-shadow: 0 12px 40px rgba(16, 16, 15, .05);
  padding: clamp(1.5rem, 3.5vw, 3.25rem);
}

.nika-info-page h1 {
  margin: 0 0 1.5rem;
  font: 400 clamp(2.2rem, 4.6vw, 3.5rem)/1.08 Prata, serif;
  letter-spacing: -.03em;
}

.nika-info-page h2 {
  margin: 2.75rem 0 1rem;
  font: 400 clamp(1.5rem, 2.4vw, 2rem)/1.2 Prata, serif;
  letter-spacing: -.015em;
}

.nika-info-page p,
.nika-info-page li { max-width: none; line-height: 1.85; }
.nika-info-page ul { margin: 0 0 1.4rem; padding: 0; list-style: none; }
.nika-info-page ul li { position: relative; margin-bottom: .7rem; padding-left: 1.4rem; }
.nika-info-page ul li::before { content: "—"; position: absolute; left: 0; color: var(--nika-clay); opacity: .85; }
.nika-info-page a { color: var(--nika-clay); }

/* The price table uses the same hairline rhythm as the stone pages. */
.nika-price-table { width: 100%; margin: 0 0 2rem; border-collapse: collapse; font-size: .9rem; }
.nika-price-table th {
  padding: .6rem 1.25rem .7rem 0;
  border-bottom: 1px solid var(--npe-rule-strong);
  color: var(--npe-faint);
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: .16em;
  text-align: left;
  text-transform: uppercase;
}
.nika-price-table th:last-child { width: 40%; }
.nika-price-table td { padding: .85rem 1.25rem .9rem 0; border-bottom: 1px solid var(--npe-rule-soft); vertical-align: top; }
.nika-price-table td:last-child { padding-right: 0; white-space: nowrap; }
.nika-price-table tr:last-child td { border-bottom: 1px solid var(--npe-rule); }
.nika-price-table a { color: var(--nika-ink); text-decoration: none; border-bottom: 1px solid var(--npe-rule); }
.nika-price-table a:hover { border-bottom-color: var(--nika-clay); color: var(--nika-clay); }
.nika-price-table__request { color: var(--npe-faint); }

.nika-price-actions { margin: 2.5rem 0 0; padding-top: 2rem; border-top: 1px solid var(--npe-rule); }
.nika-price-actions__pdf,
.nika-price-actions__quote {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  margin: 0 .75rem .75rem 0;
  padding: .95rem 1.3rem;
  border: 1px solid var(--npe-rule-strong);
  color: var(--nika-ink);
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .14em;
  text-decoration: none;
  text-transform: uppercase;
}
.nika-price-actions__quote { background: var(--nika-sand); border-color: var(--nika-sand); }
.nika-price-actions__pdf:hover { border-color: var(--nika-ink); color: var(--nika-clay); }
.nika-price-actions__quote:hover { background: var(--nika-ink); border-color: var(--nika-ink); color: #fff; }
.nika-price-actions__note { max-width: none; margin: 1rem 0 0; color: var(--npe-faint); font-size: .78rem; line-height: 1.6; }
.nika-product-price__all { margin: .6rem 0 0; font-size: .8rem; }
.nika-product-price__all a { color: var(--nika-clay); }

@media (max-width: 639px) {
  .nika-info-page { padding: 1.25rem; }
  .nika-price-table td:last-child { white-space: normal; }
}

@media print {
  .nika-contact-bar,
  .nika-price-actions__quote,
  .nika-breadcrumb,
  #site-header,
  .nika-footer-menu { display: none !important; }
  .nika-info-page { border: 0; box-shadow: none; padding: 0; }
  .nika-price-table { font-size: 11pt; }
  .nika-price-table a { border: 0; color: inherit; }
}

/* --- product page: reviews --------------------------------------------- */
.nika-product-reviews { margin-top: 0; }
.nika-product-reviews__summary { max-width: none; margin: 0 0 1.5rem; color: var(--npe-faint); font-size: .9rem; }
.nika-product-reviews__summary strong { color: var(--nika-ink); font-size: 1.25rem; }

.nika-review { padding: 1.25rem 0; border-top: 1px solid var(--npe-rule-soft); }
.nika-review__head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: .5rem; }
.nika-review__rating { color: var(--nika-clay); letter-spacing: .12em; }
.nika-review p { max-width: none; margin: 0; line-height: 1.75; color: rgba(16, 16, 15, .72); }

.nika-review-form { margin-top: 2.5rem; padding-top: 2rem; border-top: 1px solid var(--npe-rule); }
.nika-review-form h3 { margin: 0 0 1.25rem; font: 400 clamp(1.3rem, 2vw, 1.6rem)/1.25 Prata, serif; }
.nika-review-form__row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.nika-review-form label { display: flex; flex-direction: column; gap: .4rem; font-size: .72rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--npe-faint); }
.nika-review-form input,
.nika-review-form select,
.nika-review-form textarea {
  width: 100%;
  padding: .8rem .9rem;
  border: 1px solid var(--npe-rule);
  background: #fff;
  color: var(--nika-ink);
  font: 400 .95rem/1.5 Manrope, sans-serif;
}
.nika-review-form textarea { resize: vertical; }
.nika-review-form input:focus,
.nika-review-form select:focus,
.nika-review-form textarea:focus { outline: 2px solid var(--nika-clay); outline-offset: 1px; }
.nika-review-form__text { margin-top: 1rem; }
.nika-review-form__trap { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.nika-review-form button {
  margin-top: 1.25rem;
  padding: 1rem 1.6rem;
  border: 0;
  background: var(--nika-sand);
  color: var(--nika-ink);
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .14em;
  text-transform: uppercase;
  cursor: pointer;
}
.nika-review-form button:hover { background: var(--nika-ink); color: #fff; }
.nika-review-form__note { max-width: none; margin: .9rem 0 0; color: var(--npe-faint); font-size: .76rem; }
.nika-product-reviews__message { max-width: none; margin: 0 0 1.5rem; padding: .9rem 1.1rem; border-left: 2px solid var(--nika-clay); background: var(--npe-surface); font-size: .88rem; }

@media (max-width: 639px) {
  .nika-review-form__row { grid-template-columns: 1fr; }
}

/* --- portfolio --------------------------------------------------------- */
.nika-portfolio-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; margin-top: 1.5rem; }
.nika-portfolio-card { border: 1px solid var(--npe-rule-soft); background: #fff; }
.nika-portfolio-card img { display: block; width: 100%; height: auto; }
.nika-portfolio-card h3 { margin: 1rem 1.1rem .35rem; font: 400 1.15rem/1.3 Prata, serif; }
.nika-portfolio-card__meta { margin: 0 1.1rem .5rem; color: var(--npe-faint); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; }
.nika-portfolio-card p:last-child { margin: 0 1.1rem 1.1rem; line-height: 1.7; }

@media (max-width: 767px) {
  .nika-portfolio-grid { grid-template-columns: 1fr; }
}

.nika-portfolio-card__photos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; background: var(--npe-surface); }
.nika-portfolio-card__photos img { width: 100%; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.nika-portfolio-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

@media (max-width: 767px) {
  .nika-portfolio-card__photos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* --- stone page: archive gallery --------------------------------------- */
.nika-stone-gallery { margin: 0 0 2.5rem; }
.nika-stone-gallery h2 { margin: 2.25rem 0 1rem; }
.nika-stone-gallery__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.nika-stone-gallery__grid img { width: 100%; height: 100%; aspect-ratio: 4 / 3; object-fit: cover; border: 1px solid var(--npe-rule-soft); }
.nika-stone-gallery__note { margin: 1rem 0 0; color: var(--npe-faint); font-size: .78rem; line-height: 1.6; }

@media (max-width: 639px) {
  .nika-stone-gallery__grid { grid-template-columns: 1fr; }
}

/* --- footer: колонки ---------------------------------------------------- */
.nika-footer {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.7fr);
  gap: 2.5rem 3rem;
  align-items: start;
  max-width: 1340px;
  margin: 0 auto;
  font-size: .8rem;
}
.nika-footer__brand { display: flex; flex-direction: column; gap: .4rem; }
.nika-footer__logo { margin: 0 0 .35rem; color: #fff; font: 400 1.3rem/1 Prata, serif; letter-spacing: .06em; }
.nika-footer__copy { margin: 0; }
.nika-footer__contacts { display: flex; flex-direction: column; gap: .3rem; margin: .35rem 0 0; }
.nika-footer__contacts a,
.nika-footer__nav a { color: inherit; text-decoration: none; transition: color .2s, border-color .2s; }
.nika-footer__contacts a:hover { color: #fff; }

.nika-footer__nav {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .7rem 2rem;
  align-content: start;
}
.nika-footer__nav a {
  padding-bottom: 2px;
  border-bottom: 1px solid rgba(255, 255, 255, .12);
}
.nika-footer__nav a:hover { color: #fff; border-bottom-color: rgba(199, 170, 122, .75); }

/* Панель связи висит справа внизу: резервируем место, иначе она закрывает ссылки. */
@media (min-width: 701px) {
  .nika-footer { padding-right: 16rem; padding-bottom: 7rem; }
}
@media (max-width: 700px) {
  .nika-footer { padding-bottom: 5rem; }
}
@media (max-width: 1023px) {
  .nika-footer { grid-template-columns: 1fr; gap: 2rem; }
  .nika-footer__nav { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .nika-footer { padding-right: 0; }
}
@media (max-width: 639px) {
  .nika-footer { font-size: .78rem; }
  .nika-footer__nav { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem 1.25rem; }
}

.nika-stone-related {
  margin-top: 1.5rem;
  background: #fff;
  border: 1px solid var(--npe-rule-soft);
  box-shadow: 0 12px 40px rgba(16, 16, 15, .05);
  padding: clamp(1.25rem, 3vw, 2.25rem);
}
.nika-stone-related h2 { margin: 0 0 1rem; }
.nika-stone-related ul { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin: 0 0 1rem; padding: 0; list-style: none; }
.nika-stone-related li { margin: 0; padding: 0; }
.nika-stone-related li::before { content: none; }
.nika-stone-related a { display: flex; flex-direction: column; height: 100%; color: inherit; text-decoration: none; }
.nika-stone-related a:hover span,
.nika-stone-related a:focus-visible span { color: var(--nika-clay); }
.nika-stone-related a:focus-visible { outline: 2px solid var(--nika-clay); outline-offset: 3px; }
.nika-stone-related img,
.nika-stone-related__ph { display: block; width: 100%; aspect-ratio: 4/3; object-fit: cover; background: #292925; }
.nika-stone-related a > span:last-child { display: block; margin-top: .55rem; color: var(--nika-clay); line-height: 1.35; }
.nika-stone-photo a { display: block; }
.nika-stone-photo a:focus-visible { outline: 2px solid var(--nika-clay); outline-offset: 3px; }
@media (min-width: 1000px) {
  .nika-granite-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.nika-granite-card__image a.nika-granite-card__photo { display: block; height: 100%; }
.nika-granite-card__image a.nika-granite-card__photo:focus-visible { outline: 2px solid #fff; outline-offset: -4px; }
.nika-granite-card__index { z-index: 2; }
@media (max-width: 700px) { .nika-stone-related ul { grid-template-columns: 1fr; } }
