.nvk-catalog-page{padding:clamp(52px,7vw,108px) var(--nvk-content-gutter) 0}.nvk-catalog-page__intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.7fr);align-items:end;gap:18px 32px;margin-bottom:clamp(28px,4vw,54px)}.nvk-catalog-page__intro>.nvk-eyebrow{grid-column:1/-1}.nvk-catalog-page h1{margin:8px 0 0;font-size:clamp(42px,7vw,100px);font-weight:800;line-height:.98;letter-spacing:-.07em}.nvk-catalog-page h1 span{color:var(--nvk-color-primary)}.nvk-catalog-page__intro>p:not(.nvk-eyebrow){max-width:550px;margin:0;color:var(--nvk-color-text-muted);font-size:clamp(14px,1.3vw,17px)}.nvk-catalog-page__search{grid-column:1/-1;display:flex;align-items:center;gap:12px;max-width:100%;height:52px;padding:0 16px;border:1px solid var(--nvk-color-border);border-radius:999px;background:var(--nvk-color-surface);color:var(--nvk-color-text-muted)}.nvk-catalog-page__search svg{width:18px;height:18px}.nvk-catalog-page__search input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--nvk-color-text);font-size:13px}.nvk-catalog-page__search span{white-space:nowrap;font-size:10px}.nvk-catalog-page__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.nvk-product-card{min-width:0;border:1px solid var(--nvk-color-border);border-radius:20px;overflow:hidden;background:var(--nvk-color-surface);transition:transform 200ms ease,border-color 200ms ease,box-shadow 200ms ease}.nvk-product-card[hidden]{display:none}.nvk-product-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--nvk-color-primary) 40%,var(--nvk-color-border));box-shadow:var(--nvk-shadow-md)}.nvk-product-card__visual{position:relative;display:grid;place-items:center;min-height:clamp(140px,17vw,250px);overflow:hidden;border-bottom:1px solid var(--nvk-color-border);background:radial-gradient(circle at 50% 48%,var(--nvk-color-primary-soft),transparent 57%),var(--nvk-color-surface-muted)}.nvk-product-card__visual>span{position:absolute;top:14px;left:15px;color:var(--nvk-color-text-soft);font-size:10px;font-weight:800}.nvk-product-card__visual>svg{width:clamp(38px,5vw,62px);height:clamp(38px,5vw,62px);color:var(--nvk-color-primary);stroke-width:1.1}.nvk-product-card__visual>b{position:absolute;right:14px;bottom:12px;color:var(--nvk-color-text-soft);font-size:8px;letter-spacing:.14em}.nvk-product-card__body{padding:clamp(14px,1.7vw,23px)}.nvk-product-card__body h2{margin:7px 0 8px;font-family:var(--nvk-font-body);font-size:clamp(14px,1.35vw,18px);font-weight:800;line-height:1.3;letter-spacing:-.03em}.nvk-product-card__body>p:not(.nvk-eyebrow){margin:0;color:var(--nvk-color-text-muted);font-size:11px;line-height:1.65}.nvk-product-card__more{display:flex;align-items:center;justify-content:space-between;margin-top:20px;padding-top:12px;border-top:none;color:var(--nvk-color-primary);font-size:11px;font-weight:800}.nvk-product-card__more svg{width:15px;height:15px}.nvk-catalog-page__empty{padding:40px;text-align:center;color:var(--nvk-color-text-muted)}@media(max-width:1100px){.nvk-catalog-page__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.nvk-catalog-page__intro{grid-template-columns:1fr}.nvk-catalog-page__intro>.nvk-eyebrow,.nvk-catalog-page__search{grid-column:auto}.nvk-catalog-page__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:420px){.nvk-catalog-page__grid{grid-template-columns:1fr}.nvk-product-card__visual{min-height:190px}}

/* ---------------------------------------------------------
   Дополнения для каталога, вариантов и оформления заявки
   Базовые стили предыдущей версии сохранены выше.
   --------------------------------------------------------- */

/* Карточки получают данные из базы; изображения не обрезаем. */
.nvk-product-card__link {
    display: block;
    color: inherit;
}

.nvk-product-card__visual > img {
    display: block;
    width: 100%;
    height: 100%;
    min-height: inherit;
    padding: 18px;
    object-fit: contain;
    object-position: center;
}

.nvk-product-card__actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 8px;
    padding: 0 clamp(14px, 1.7vw, 23px) clamp(14px, 1.7vw, 23px);
}

.nvk-product-card__actions > a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-height: 40px;
    padding: 8px 10px;
    border: 1px solid var(--nvk-color-border);
    border-radius: 999px;
    color: var(--nvk-color-text);
    text-align: center;
    font-size: 10px;
    font-weight: 800;
    transition: border-color 180ms ease, background-color 180ms ease, color 180ms ease;
}

.nvk-product-card__actions > a:hover {
    border-color: var(--nvk-color-primary);
    color: var(--nvk-color-primary);
}

.nvk-product-card__actions > .nvk-product-card__order {
    border-color: var(--nvk-color-text);
    background: var(--nvk-color-text);
    color: var(--nvk-color-bg);
}

.nvk-product-card__actions > .nvk-product-card__order:hover {
    border-color: var(--nvk-color-primary);
    background: var(--nvk-color-primary);
    color: #fff;
}

.nvk-product-card__actions svg {
    width: 14px;
    height: 14px;
    flex: 0 0 auto;
}

@media (max-width: 420px) {
    .nvk-product-card__actions {
        grid-template-columns: 1fr;
    }
}

/* =========================================================
   КАТАЛОГ — ВЫРАВНИВАНИЕ ОТСТУПОВ И КАРТОЧЕК
   Локальные переопределения для публичного каталога.
   Основные стили выше сохранены.
   ========================================================= */

/* Убираем излишний воздух между фиксированной шапкой и каталогом. */
.nvk-catalog-page {
    padding-top: clamp(32px, 3.5vw, 56px);
}

.nvk-catalog-page__intro {
    margin-bottom: clamp(24px, 3vw, 40px);
}

.nvk-catalog-page__grid {
    display: grid;
    grid-template-columns: repeat(
        auto-fit,
        minmax(min(100%, 300px), 1fr)
    );
    align-items: stretch;
    justify-content: stretch;
    gap: 14px;
}

.nvk-product-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-width: 0;
}

.nvk-product-card__link {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-width: 0;
}

/* Фиксированная область изображения не зависит от исходных размеров файла. */
.nvk-product-card__visual {
    display: grid;
    flex: 0 0 230px;
    place-items: center;
    width: 100%;
    height: 230px;
    min-height: 0;
    overflow: hidden;
}

.nvk-product-card__visual > img {
    display: block;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    max-width: 100%;
    max-height: 100%;
    padding: 20px;
    object-fit: contain;
    object-position: center;
}

/* Внутренние блоки занимают одинаковую высоту и не растягивают картинку. */
.nvk-product-card__body {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-width: 0;
}

.nvk-product-card__body h2 {
    min-height: 2.6em;
}

.nvk-product-card__body > p:not(.nvk-eyebrow) {
    min-height: 4.95em;
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
}

.nvk-product-card__more {
    margin-top: auto;
}

.nvk-product-card__actions {
    margin-top: auto;
}

@media (max-width: 760px) {
    .nvk-catalog-page {
        padding-top: 28px;
    }

    .nvk-catalog-page__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
    }

    .nvk-product-card__visual {
        flex-basis: 200px;
        height: 200px;
    }

    .nvk-product-card__visual > img {
        padding: 16px;
    }
}

@media (max-width: 520px) {
    .nvk-catalog-page__grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .nvk-product-card__visual {
        flex-basis: 220px;
        height: 220px;
    }
}

/* Адаптивная сетка планшетов: не оставляем карточки в одиночном столбце. */
@media (min-width: 761px) and (max-width: 900px) {
    .nvk-catalog-page__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        justify-content: stretch;
    }
}

@media (min-width: 901px) and (max-width: 1100px) {
    .nvk-catalog-page__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
        justify-content: stretch;
    }
}
