/*
 * generic_v2.css — content typography + card treatment для generic_v2 страниц
 * iter-28 Phase B (2026-06-16). Loads AFTER iter-04-homepage.css.
 * Все значения через DESIGN_SYSTEM токены (--ff-display Bitter / --ff-body Onest,
 * --c-text/-2/-3, --c-blue, --sp-*, --r-card, --sh-*).
 *
 * Scope: всё под .v2-page (обёртка generic_v2 страниц в index.html).
 *   .v2-page--{module} модификаторы для точечных правок per page type.
 * ================================================================
 */

/* ════════════════════════════════════════════════════
   PROSE TYPOGRAPHY — общая для всех .v2-page (B1..B3)
   ════════════════════════════════════════════════════ */
.v2-page {
  /* iter-28 B1 fix (2026-06-16, Codex audit): --c-border-soft определён в
     styles.css только scoped к .hv2-cs/#hv2-header, а в iter-04-homepage.css
     :root его нет → на generic-контенте border:1px solid var(--c-border-soft)
     становился невалидным (computed 0px none). Объявляем токен на scope .v2-page
     (тот же приём, что styles.css:15129 для .hv2-cs). Каноническое значение из
     colors_and_type.css. */
  --c-border-soft: #EDF1F4;
  color: var(--c-text);
  font-family: var(--ff-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
}

.v2-page h1 {
  font-family: var(--ff-display);
  font-size: var(--fs-h1);
  line-height: var(--lh-h1);
  letter-spacing: var(--ls-h1);
  font-weight: 700;
  color: var(--c-text);
  margin: 0 0 var(--sp-5);
}
.v2-page h2 {
  font-family: var(--ff-display);
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: var(--ls-h2);
  font-weight: 700;
  color: var(--c-text);
  margin: var(--sp-7) 0 var(--sp-3);
}
.v2-page h3 {
  font-family: var(--ff-display);
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  font-weight: 700;
  color: var(--c-text);
  margin: var(--sp-6) 0 var(--sp-2);
}
.v2-page h4 {
  font-family: var(--ff-display);
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  font-weight: 700;
  color: var(--c-text);
  margin: var(--sp-5) 0 var(--sp-2);
}
/* первый заголовок блока — без верхнего отступа */
.v2-page > .headless-center-block > h1:first-child,
.v2-page > .headless-center-block > h2:first-child,
.v2-page .headless-center-block > *:first-child {
  margin-top: 0;
}

/* Owner 2026-06-29: ВСЕ generic-страницы (включая contacts/dostavka — карточка
   убрана) — крошки на одной линии с «КАТАЛОГ ТОВАРОВ», H1 — с «Взрослые матрасы».
   Сбрасываем легаси-padding/border .headless-center-block (как на каталоге,
   styles.css:417 padding 19/20) и выставляем верхний отступ как у каталога. */
.cat-main > .v2-page > .headless-center-block {
  padding: 0 0 0 25px;   /* Owner 2026-06-29: контент на линию крошек/каталога (content-left+25) */
  border: 0;
  background: none;
  margin: var(--sp-4) 0 0;
}
/* крошки возвращаем на их линию (home-иконка остаётся на +25); .tilda (статьи)
   теряет легаси margin-left 40 → встаёт на ту же линию, что H1/текст. */
.cat-main > .v2-page > .headless-center-block > .bread-crumbs { margin-left: -25px; }
.cat-main .v2-page .headless-center-block .tilda { margin-left: 0; }
/* H1 generic-страниц — визуальный ЦЕНТР H1 на одной линии с центром текста
   «Взрослые матрасы» в левом меню (Owner 2026-06-29). Обычные страницы уже
   центрированы (H1 top≈249, center≈273=center label); H1-статьи (itemprop)
   стоят на ~12px ниже из-за структуры — подтягиваем вверх. */
.cat-main .v2-page .headless-center-block h1.art-headline { margin-top: -12px; } /* 2026-07-10: класс вместо [itemprop] — микроразметка удалена */

.v2-page p {
  margin: 0 0 var(--sp-4);
  color: var(--c-text);
}
.v2-page a {
  color: var(--c-blue);
  text-decoration: none;
  transition: color var(--dur-fast, .15s) var(--ease-out, ease);
}
.v2-page a:hover { color: var(--c-blue-dark); text-decoration: underline; }

.v2-page strong, .v2-page b { font-weight: 600; color: var(--c-text); }

.v2-page ul, .v2-page ol {
  margin: 0 0 var(--sp-4);
  padding-left: var(--sp-5);
}
.v2-page li { margin-bottom: var(--sp-2); }

.v2-page hr {
  border: 0;
  border-top: 1px solid var(--c-border);
  margin: var(--sp-6) 0;
}

.v2-page table {
  border-collapse: collapse;
  width: 100%;
  margin: 0 0 var(--sp-5);
  font-size: var(--fs-sm);
}
.v2-page th, .v2-page td {
  border: 1px solid var(--c-border);
  padding: var(--sp-3) var(--sp-4);
  text-align: left;
  vertical-align: top;
}
.v2-page th { background: var(--c-bg-soft); font-weight: 600; }

/* ════════════════════════════════════════════════════
   ARTICLES / NEWS LIST GRID (B2) — .hv2-art карточки
   ════════════════════════════════════════════════════ */
.hv2-articles-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-5);
  margin-top: var(--sp-5);
}
@media (max-width: 900px) {
  .hv2-articles-grid { grid-template-columns: repeat(2, 1fr); }
}

/* «Показать еще» — v2 outline-pill кнопка (loadmore статей/новостей) */
.v2-page .btn_loadmore {
  display: flex;
  width: fit-content;
  align-items: center;
  justify-content: center;
  margin: var(--sp-6) auto 0;
  padding: 0 var(--sp-6);
  height: 44px;
  border: 1.5px solid var(--c-blue);
  border-radius: var(--r-pill);
  background: transparent;
  color: var(--c-blue);
  font: 600 var(--fs-sm)/1 var(--ff-body);
  cursor: pointer;
  transition: background var(--dur-fast, .15s) var(--ease-out, ease),
              color var(--dur-fast, .15s) var(--ease-out, ease);
}
.v2-page .btn_loadmore:hover { background: var(--c-blue-light); }
.v2-page .btn_loadmore.loading { opacity: .6; pointer-events: none; }
.v2-page .btn_loadmore.hidden { display: none; }

/* ════════════════════════════════════════════════════
   SIDEBAR NEWS (followup) — «Новости и акции» в левом меню
   generic-страниц. Стиль консистентен с .hv2-sidebar-brands.
   ════════════════════════════════════════════════════ */
.hv2-sidebar-news {
  background: var(--c-bg, #fff);
  border: 1px solid var(--c-border);
  border-radius: var(--r-card);
  padding: var(--sp-3);
  margin: var(--sp-3) 0;
}
.hv2-sidebar-news__head {
  font: 700 13px/1.2 var(--ff-body);
  color: var(--c-text-2);
  padding: var(--sp-1) var(--sp-1) var(--sp-2);
  border-bottom: 1px solid var(--c-border-soft, var(--c-border));
  margin-bottom: var(--sp-2);
}
.hv2-sidebar-news__item {
  display: block;
  text-decoration: none;
  padding: var(--sp-2) var(--sp-1);
  border-radius: var(--r-input);
  transition: background var(--dur-fast, .15s) var(--ease-out, ease);
}
.hv2-sidebar-news__item + .hv2-sidebar-news__item {
  border-top: 1px solid var(--c-border-soft, var(--c-border));
}
.hv2-sidebar-news__item:hover { background: var(--c-bg-soft); }
.hv2-sidebar-news__date {
  display: block;
  font: 400 12px/1.3 var(--ff-body);
  color: var(--c-text-3, #8B95A1);
  margin-bottom: 2px;
}
.hv2-sidebar-news__headline {
  display: block;
  font: 500 14px/1.35 var(--ff-body);
  color: var(--c-text);
}
.hv2-sidebar-news__item:hover .hv2-sidebar-news__headline { color: var(--c-blue); }

/* ════════════════════════════════════════════════════
   FORMS (C) — v2-стиль для форм на generic-страницах
   (контактная form-9, dostavka selects, register/login).
   Scoped под .v2-page → ContactCTA (вне .v2-page) и catalog-фильтр
   не затрагиваются.
   ════════════════════════════════════════════════════ */
.v2-page .form__title {
  font-family: var(--ff-display);
  font-size: var(--fs-h3);
  font-weight: 700;
  color: var(--c-text);
  margin: 0 0 var(--sp-4);
}

/* Inputs / textarea — v2 border + radius + focus ring. */
.v2-page .form .input input,
.v2-page .form .input textarea {
  border: 1px solid var(--c-border);
  border-radius: var(--r-input);
  font-family: var(--ff-body);
  font-size: var(--fs-sm);
  color: var(--c-text);
  transition: border-color var(--dur-fast, .15s) var(--ease-out, ease),
              box-shadow var(--dur-fast, .15s) var(--ease-out, ease);
}
.v2-page .form .input input { height: 46px; padding: 0 var(--sp-4); }
.v2-page .form .input textarea { padding: var(--sp-3) var(--sp-4); }
.v2-page .form .input input:focus,
.v2-page .form .input textarea:focus {
  border-color: var(--c-blue);
  box-shadow: 0 0 0 3px rgba(14,148,200,.12);
}
.v2-page .form .input-placeholder {
  color: var(--c-text-3, #8B95A1);
  font-family: var(--ff-body);
  font-size: var(--fs-sm);
  padding-left: var(--sp-4);
}

/* chosen-select (dostavka регион/производитель, contacts тема) — выровнять под input. */
.v2-page .form .chosen-container-single .chosen-single,
.v2-page .chosen-container-single .chosen-single {
  height: 46px;
  line-height: 44px;
  border: 1px solid var(--c-border);
  border-radius: var(--r-input);
  background: var(--c-surface);
  box-shadow: none;
  padding: 0 var(--sp-4);
  color: var(--c-text);
  font-family: var(--ff-body);
  font-size: var(--fs-sm);
}
.v2-page .chosen-container-active .chosen-single {
  border-color: var(--c-blue);
  box-shadow: 0 0 0 3px rgba(14,148,200,.12);
}

/* Buttons — v2 радиус + токены, сохраняя legacy .btn-orange/.btn-blue семантику. */
.v2-page .form .btn {
  height: 46px;
  border-radius: var(--r-pill);
  font-family: var(--ff-body);
  font-weight: 600;
  font-size: var(--fs-sm);
  padding: 0 var(--sp-6);
}
.v2-page .form .btn-orange { background: var(--c-orange); }
.v2-page .form .btn-orange:hover { background: var(--c-orange-dk, #d94f0a); }
.v2-page .form .btn-blue { background: var(--c-blue); }
.v2-page .form .btn-blue:hover { background: var(--c-blue-dark); }

/* Custom checkbox (согласие) — v2 accent. */
.v2-page .form .checkbox-indicator { border-radius: 4px; }
.v2-page .form .checkbox input:checked ~ .checkbox-indicator { background: var(--c-blue); border-color: var(--c-blue); }
.v2-page .form .checkbox-text a { color: var(--c-blue); }

/* ════════════════════════════════════════════════════
   DETAIL PAGES (B3) — article / news single, manufacturer
   ════════════════════════════════════════════════════ */
/* Дата публикации — legacy .fact-date оранжевая (#fe6718, styles.css:351).
   В v2 — приглушённая meta-строка. */
.v2-page .fact-date {
  display: inline-block;
  color: var(--c-text-2);
  font: 400 var(--fs-sm)/1.4 var(--ff-body);
  letter-spacing: .02em;
  margin-bottom: var(--sp-4);
}

/* Картинки в теле статьи/новости — отзывчивые + скруглённые. */
.v2-page .artBody img,
.v2-page .tilda img,
.v2-page .center-block-news img {
  max-width: 100%;
  height: auto;
  border-radius: var(--r-card);
}

/* Share / rating / «Смотрите также» — отделяем верхней линией + дыхание. */
.v2-page .sv-article-share,
.v2-page .v-article-rating-form {
  margin-top: var(--sp-6);
  padding-top: var(--sp-5);
  border-top: 1px solid var(--c-border-soft, var(--c-border));
}
.v2-page .see_also { color: var(--c-blue); }

/* Пустой assortment-grid на странице бренда (нет данных) — не занимать место. */
.v2-page .categories-grid:empty { display: none; }

/* Manufacturer detail: лого + «Условия доставки» строка по центру. */
.v2-page--manufacturers .manuf-img-centerbox {
  float: none;
  display: inline-block;
  vertical-align: middle;
}

/* ════════════════════════════════════════════════════
   BRANDS GRID (B2) — manufacturers list tiles
   ════════════════════════════════════════════════════ */
.hv2-brands-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--sp-4);
  margin-top: var(--sp-5);
}
@media (max-width: 900px) {
  .hv2-brands-grid { grid-template-columns: repeat(3, 1fr); }
}
.hv2-brand-tile {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 120px;
  padding: var(--sp-5);
  background: var(--c-surface);
  border: 1px solid var(--c-border-soft, var(--c-border));
  border-radius: var(--r-card);
  text-decoration: none;
  transition: border-color var(--dur-fast, .15s) var(--ease-out, ease),
              box-shadow var(--dur-fast, .15s) var(--ease-out, ease),
              transform var(--dur-fast, .15s) var(--ease-out, ease);
}
.hv2-brand-tile:hover {
  border-color: var(--c-blue);
  box-shadow: var(--sh-md);
  transform: translateY(-2px);
}
.hv2-brand-tile__logo {
  max-width: 100%;
  max-height: 72px;
  object-fit: contain;
}
.hv2-brand-tile__name {
  font: 700 18px/1.2 var(--ff-display);
  color: var(--c-text);
  text-transform: uppercase;
  letter-spacing: .02em;
  text-align: center;
}
.hv2-brand-tile:hover .hv2-brand-tile__name { color: var(--c-blue); }

/* Owner 2026-06-29: карточка contacts/dostavka УБРАНА — страницы плоские, как
   остальные generic; крошки/H1 выравниваются по сетке (правило ниже без :not). */

/* contacts: телефонные ссылки крупнее (legacy .font-size-20 сохраняем, но в токен) */
.v2-page--contacts .font-size-20 { font-weight: 600; }

/* dostavka: h1 inline-margin от legacy убираем, ведём через токены */
.v2-page--dostavka .dostavka-page > h1[style] {
  margin-top: 0 !important;
  margin-bottom: var(--sp-5) !important;
}

/* карты (Яндекс) — единый радиус + рамка как у карточек */
.v2-page--contacts #YMapsID,
.v2-page--dostavka .content_dostavka [id*="Map"],
.v2-page--dostavka [id="YMapsID"] {
  border-radius: var(--r-card);
  overflow: hidden;
  border: 1px solid var(--c-border-soft, var(--c-border));
}

/* 2026-07-24 (Owner): коммерческий CTA в конце новости (блок «Оцените новость» и RSS убраны как устаревшие). */
.news-cta{display:flex;flex-wrap:wrap;align-items:center;gap:16px 24px;margin:28px 0 8px;padding:20px 24px;background:var(--c-bg-soft,#F7FAFB);border-radius:var(--r-card,16px)}
.news-cta__lead{font-weight:600;color:var(--c-text,#12233a);flex:1 1 240px;line-height:1.4}
.news-cta a.news-cta__btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:12px 24px;border-radius:var(--r-pill,999px);background:var(--c-blue,#0E94C8);color:#fff;font-weight:600;text-decoration:none;transition:background .15s}
.news-cta a.news-cta__btn:hover{background:var(--c-blue-dark,#0B7BA6);color:#fff}
