/* Общие стили страниц /formats/<формат>.
   Перенесены из встроенного <style> в views/format-detail.ejs (2026-09-26). Подключаются только на этой
   странице, тем же местом в <head>, где стоял блок, — порядок каскада прежний.
   Правки внешнего вида этой страницы — здесь, не в шаблоне. */

/* ROOT & RESET */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; font-size: 20px; scroll-padding-top: 72px; /* якоря не ныряют под fixed-шапку 60px */ }

/* токены — public/css/tokens.css (подключён выше) */

body {
  font-family: 'Jost', sans-serif;
  font-weight: 400;
  background: var(--cream);
  background-image: radial-gradient(circle at 1px 1px, rgba(28,26,22,0.022) 1px, transparent 0);
  background-size: 28px 28px;
  color: var(--dark);
  line-height: 1.6;
  font-size: 15px;
}
a { text-decoration: none; color: inherit; }
img { max-width: 100%; display: block; }
ul { list-style: none; }
h1,h2,h3,h4 {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 400;
  line-height: 1.1;
}

/* NAV — своя шапка страницы формата снята (Босс 2026-09-24): общая шапка сайта views/partials/nav.ejs, стили — v3.css */

/* HERO */
.fmt-hero {
  padding-top: 64px; /* высота общей шапки .nav (v3.css) */
  min-height: 52vh;
  display: flex; align-items: flex-end;
  /* background — градиент формата из data/formats.json: строка в views/format-detail.ejs прямо перед этим файлом
     (выше в файле фон этому блоку никто не задаёт — порядок каскада тот же, что был у встроенного стиля) */
  position: relative; overflow: hidden;
}
.fmt-hero::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to bottom, transparent 40%, rgba(0,0,0,0.32) 100%);
}
/* фото-hero без светлой темы: боковая вуаль как у свадьбы (текст слева на залитой стороне,
   справа кадр чистый), но тёмная — белый титул должен читаться на любом фото */
.fmt-hero--photo::after {
  background: linear-gradient(to right, rgba(12,10,8,0.88) 0%, rgba(12,10,8,0.74) 30%, rgba(12,10,8,0.32) 62%, rgba(12,10,8,0.06) 100%);
}
.fmt-hero-inner {
  position: relative; z-index: 1;
  width: 100%; max-width: 1200px; margin: 0 auto;
  padding: 60px 40px 56px;
}
/* Крошки — размер и разрядка как у .fa-crumbs каталога /formats (px: корень тут 20px);
   на тёмном hero ссылки светлым золотом (--gold-text на тёмном не читается), текущий — белый приглушённый. */
.fmt-crumbs {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px;
  font-size: 12px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; line-height: 1.5;
  color: rgba(255,255,255,0.7); margin-bottom: 28px;
}
.fmt-crumbs a { color: var(--gold-mid); text-decoration: none; transition: color 0.2s; }
.fmt-crumbs a:hover { color: var(--white); }
.fmt-crumbs [aria-hidden] { color: rgba(255,255,255,0.4); }
/* Подпись авторства hero (f.heroCredit — фото с Wikimedia Commons под CC BY / CC BY-SA:
   лицензия требует автора, источник, лицензию и пометку об изменениях). Угол над вуалью. */
.fmt-hero-credit {
  position: absolute; right: 16px; bottom: 10px; z-index: 1;
  max-width: min(72vw, 640px);
  font-size: 0.6rem; line-height: 1.4; letter-spacing: 0.02em; text-align: right;
  color: rgba(255,255,255,0.5);
}
.fmt-hero-credit a { color: inherit; text-decoration: underline; text-decoration-color: rgba(255,255,255,0.3); text-underline-offset: 2px; }
.fmt-hero-credit a:hover { color: rgba(255,255,255,0.85); }
.fmt-label {
  font-size: 0.62rem; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(255,255,255,0.5); margin-bottom: 14px;
}
.fmt-title {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: clamp(3rem, 7vw, 6rem); color: #fff; line-height: 1;
  margin-bottom: 18px;
}
.fmt-tagline {
  font-size: 1rem; color: rgba(255,255,255,0.72); max-width: 560px; line-height: 1.7;
}
/* H1 с запросом («Ведущий на свадьбу в Сочи») длиннее названия формата: кегль меньше,
   чтобы заголовок укладывался в две строки и не выталкивал подзаголовок из шапки. */
.fmt-title--query { font-size: clamp(2.1rem, 4.6vw, 3.9rem); line-height: 1.06; max-width: 15em; text-wrap: balance; }

/* WRAP */
.wrap { max-width: 1200px; margin: 0 auto; padding: 0 40px; }

/* SECTION */
.section { padding: 80px 0; }

/* LABEL & HEADING */
.label {
  display: block; font-size: 0.6rem; font-weight: 600; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--gold-text); margin-bottom: 12px;
}
.section h2 {
  font-size: clamp(2rem, 4vw, 3.2rem); margin-bottom: 40px;
}
.section h3 { font-size: 1.5rem; margin-bottom: 16px; }

/* DIVIDER */
/* 1px, а не 0.5px: полупиксельная линия на обычных (не-ретина, DPR=1) мониторах
   попадает между физическими пикселями и почти не прорисовывается — на 16:10 Босс
   видел пропажу разделителей, на 21:9 они случайно попадали в пиксель и были видны.
   1px рисуется всегда; на ретине это всё тот же тонкий хайрлайн. Градиент-вид сохранён. */
.divider-gold {
  height: 1px; background: linear-gradient(to right, transparent, var(--gold-mid), transparent);
}

/* DESCRIPTION */
.desc-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: start;
}
.desc-text p {
  font-size: 0.95rem; color: var(--mid); line-height: 1.9; margin-bottom: 22px;
}
.desc-text p:last-child { margin-bottom: 0; }
.features-list { margin-top: 8px; }
.features-list li {
  font-size: 0.88rem; color: var(--mid); padding: 10px 0 10px 20px;
  border-bottom: 0.5px solid var(--border); position: relative; line-height: 1.5;
}
.features-list li:first-child { border-top: 0.5px solid var(--border); }
.features-list li::before {
  content: ''; position: absolute; left: 0; top: 50%;
  transform: translateY(-50%); width: 6px; height: 6px;
  background: var(--gold); border-radius: 50%;
}
.fmt-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 24px; }
.fmt-tag {
  font-size: 0.6rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase;
  padding: 5px 10px; border: 0.5px solid var(--border); color: var(--mid);
}

/* Развёрнутая программа: отдельные смысловые блоки, а не сплошной SEO-текст. */
.fmt-details { background: var(--white); }
.fmt-details-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 64px;
}
.fmt-details-item { border-top: 1px solid var(--gold-mid); padding-top: 28px; }
.fmt-details .fmt-details-item h2 { font-size: clamp(1.8rem, 3vw, 2.6rem); margin-bottom: 24px; }
.fmt-details-item p { font-size: 0.88rem; line-height: 1.85; color: var(--mid); margin-bottom: 18px; }
.fmt-details-item p:last-child { margin-bottom: 0; }
.fmt-details-item:last-child:nth-child(odd) {
  grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 64px;
}
.fmt-details-item:last-child:nth-child(odd) h2 { grid-row: 1 / 3; }
.fmt-details-item:last-child:nth-child(odd) p { grid-column: 2; }

/* PACKAGES — экран цен страницы формата ТОТ ЖЕ, что на главной (Босс 2026-10-21): разметка и классы
   .pk / .pk-grid / .pkg из home.ejs (#packages), стили — v3.css, раздел «ЭКРАН ПАКЕТЫ И ЦЕНЫ».
   ⚠️ Своих правил .pkg* здесь НЕТ и не возвращать: этот файл грузится ПОСЛЕ v3.css, и прежние правила
   (.pkg { padding: 36px 28px 32px }, свой кегль, «таблица» .pkg-grid) перебивали главную — карточки
   раздувало, и они вылезали из кадра 16:9 (заходы 0ea4e6e / a94213e / 583254f). Вырезаны 2026-10-21.
   Подзаголовка .pk-sub (и пояснения priceLead на его месте) нет — как на главной (Босс 2026-10-21). */
/* Трекинг заголовков экрана — как на главной (v3.css: h1–h4 letter-spacing −0.01em). Ниже в этом файле стоит
   h1, h2, h3 { letter-spacing: normal } для остальной страницы — внутри экрана цен он не должен действовать
   (сверено вычисленными стилями: на главной у .pk-heading −0.437px при 1680, без этой строки было normal). */
.pk h2, .pk h3 { letter-spacing: -0.01em; }

/* PHOTO STRIP */
.fmt-strip-outer {
  margin-top: 40px; position: relative;
}
.fmt-strip-wrap {
  overflow: hidden;
}
.fmt-strip-track {
  display: flex; gap: 3px;
  transition: transform 0.42s cubic-bezier(0.4,0,0.2,1);
  width: max-content;
}
.fmt-strip-slide {
  flex: 0 0 auto; height: 520px;
}
.photo-slot-fmt {
  width: 520px; height: 520px; background: var(--cream-dark);
  border: 1.5px dashed var(--border-gold);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 8px; color: var(--soft);
}
.photo-slot-fmt img { width: 100%; height: 100%; object-fit: cover; display: block; }
.photo-slot-fmt .ps-icon { font-size: 1.6rem; opacity: 0.35; }
.photo-slot-fmt .ps-label {
  font-size: 0.58rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase;
}
/* Arrows */
.fmt-strip-arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  z-index: 10; width: 48px; height: 48px; border-radius: 50%;
  background: rgba(28,26,22,0.52); backdrop-filter: blur(4px);
  border: 1px solid rgba(255,255,255,0.18); color: #fff;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; font-size: 1.25rem; line-height: 1;
  transition: background 0.2s, transform 0.2s;
  user-select: none;
}
.fmt-strip-arrow:hover { background: rgba(154,122,50,0.8); transform: translateY(-50%) scale(1.07); }
.fmt-strip-prev { left: 16px; }
.fmt-strip-next { right: 16px; }
@media (max-width: 768px) {
  .fmt-strip-slide { height: 320px; }
  .photo-slot-fmt { width: 320px; height: 320px; }
  .fmt-strip-arrow { width: 38px; height: 38px; font-size: 1rem; }
}
@media (max-width: 480px) {
  .fmt-strip-slide { height: 260px; }
  .photo-slot-fmt { width: 260px; height: 260px; }
}

/* FAQ */
.faq-list-fmt { margin-top: 40px; }
.faq-item-fmt { border-bottom: 0.5px solid var(--border); }
.faq-btn-fmt {
  width: 100%; background: none; border: none; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 0; text-align: left; font-family: 'Jost', sans-serif;
  font-size: 0.95rem; color: var(--dark); font-weight: 400;
  gap: 16px;
}
.faq-btn-fmt:hover { color: var(--gold); }
.faq-icon-fmt {
  flex-shrink: 0; width: 22px; height: 22px; border: 0.5px solid var(--border-gold);
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 1rem; color: var(--gold); transition: transform 0.3s;
  line-height: 1;
}
.faq-btn-fmt.open .faq-icon-fmt { transform: rotate(45deg); }
.faq-answer-fmt {
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows 0.35s ease;
}
.faq-answer-fmt.open { grid-template-rows: 1fr; }
.faq-answer-content-fmt { min-height: 0; overflow: hidden; }
.faq-answer-inner-fmt {
  font-size: 0.88rem; color: var(--mid); line-height: 1.8; padding-bottom: 20px;
}

/* REVIEWS */
.reviews-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1px;
  background: var(--border); border: 0.5px solid var(--border); margin-top: 40px;
}
.review { background: var(--white); padding: 32px 28px; }
.review-text {
  font-size: 0.92rem; color: var(--mid); line-height: 1.85;
  margin-bottom: 18px; font-style: italic;
}
.review-text::before { content: '«'; color: var(--gold); font-family: serif; font-size: 1.2em; }
.review-text::after  { content: '»'; color: var(--gold); font-family: serif; font-size: 1.2em; }
.review-name { font-size: 0.78rem; font-weight: 600; margin-bottom: 3px; }
.review-role { font-size: 0.72rem; color: var(--soft); }

/* CONTACT CTA */
.cta-band {
  background: var(--dark);
  padding: 80px 40px;
  text-align: center;
}
.cta-band h2 { color: var(--white); margin-bottom: 14px; font-size: clamp(2rem, 4vw, 3rem); }
.cta-band p { color: rgba(255,255,255,0.55); font-size: 0.92rem; max-width: 500px; margin: 0 auto 36px; }
.cta-btns { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
/* ── КНОПКИ: тот же канон, что на главной (раздел BUTTONS в v3.css) ─────────
   (Этот блок писался, когда v3.css сюда НЕ подключался; с 2026-09-24 он подключён
   ради общей шапки и подвала — см. правило размера ниже.) Связь держится через ОБЩИЕ ТОКЕНЫ
   (tokens.css подключён выше): геометрия и цвета берутся оттуда, поэтому
   кнопки форматов совпадают с кнопками главной до пикселя.

   Светлая кнопка на тёмной полосе раньше звалась .btn-outline — тем же именем,
   каким в v3.css названа ТЁМНАЯ рамка для СВЕТЛОГО фона. Смыслы были взаимно
   исключающими: подключи кто-нибудь потом v3.css — и вторичная кнопка на
   тёмной полосе стала бы тёмной на тёмном, то есть невидимой. Теперь имя
   канонное: .btn-outline-light. */
.btn-gold, .btn-outline-light, .fmt-hero-cta, .form-submit, .wed-related-cta {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font-family: 'Jost', sans-serif; font-weight: var(--btn-weight); text-transform: uppercase;
  border: var(--btn-bw) solid transparent; border-radius: var(--radius);
  cursor: pointer; text-decoration: none;
  transition: background var(--btn-ease), color var(--btn-ease), border-color var(--btn-ease), transform var(--btn-ease), box-shadow var(--btn-ease);
}
/* ⚠️ Размер — только кнопкам СТРАНИЦЫ (без класса .btn). С 2026-09-24 здесь подключён v3.css и общая шапка:
   её «Обсудить мероприятие» — канонная .btn.btn-gold.btn-sm, и это правило, стоя ПОСЛЕ v3.css, перебивало
   ей .btn-sm — в шапке форматов она выходила 374×69 и 17px против 313×53 и 14.4px на главной (Босс 2026-09-25:
   «здоровая, некрасивая, не соответствует главной»). Канонным кнопкам размер задаёт v3.css. */
.btn-gold:not(.btn), .btn-outline-light:not(.btn) { padding: var(--btn-py) var(--btn-px); font-size: var(--btn-font); letter-spacing: var(--btn-ls); }
.fmt-hero-cta, .form-submit, .wed-related-cta { padding: var(--btn-py-md) var(--btn-px-md); font-size: var(--btn-font-md); letter-spacing: var(--btn-ls-sm); }

.btn-gold, .fmt-hero-cta, .form-submit { background: var(--gold-btn); color: var(--white); border-color: var(--gold-btn); }
.btn-gold:hover, .fmt-hero-cta:hover, .form-submit:hover { background: var(--gold-text); border-color: var(--gold-text); transform: translateY(var(--btn-lift)); box-shadow: var(--btn-shadow); }

/* Вторичная на светлом: контур золотом, БЕЗ заливки (заливка сделала бы её
   неотличимой от главной). Цвет надписи --gold-text: --gold на кремовом даёт
   3.3:1 и не проходит AA для мелкого текста. */
.wed-related-cta { background: transparent; color: var(--gold-text); border-color: var(--gold); }
.wed-related-cta:hover { border-color: var(--gold-text); color: var(--gold-text); background: transparent; }

.btn-outline-light { background: transparent; color: var(--white); border-color: rgba(255,255,255,0.45); }
.btn-outline-light:hover { border-color: var(--white); background: rgba(255,255,255,0.08); }

.fmt-hero-cta { margin-top: 30px; }
/* Кнопку пакета (.pkg-cta) стилизует v3.css (экран цен — тот же, что на главной); своих правил здесь нет. */

/* Нажатие и фокус. До 2026-09-18 на этой странице не было НИ ОДНОГО
   focus-visible — с клавиатуры кнопки помечались дефолтной рамкой браузера. */
.btn-gold:active, .btn-outline-light:active, .fmt-hero-cta:active,
.form-submit:active, .wed-related-cta:active { transform: translateY(var(--btn-press)); box-shadow: none; }
a:focus-visible, button:focus-visible, [tabindex]:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }
.cta-band a:focus-visible { outline-color: var(--gold-mid); } /* на тёмном золото светлее — иначе рамка тонет */
@media (prefers-reduced-motion: reduce) {
  .btn-gold, .btn-outline-light, .fmt-hero-cta, .form-submit, .wed-related-cta,
  .btn-gold:hover, .btn-outline-light:hover, .fmt-hero-cta:hover, .form-submit:hover,
  .btn-gold:active, .btn-outline-light:active, .fmt-hero-cta:active,
  .form-submit:active, .wed-related-cta:active,
  .fmt-strip-arrow:hover { transform: none; box-shadow: none; }
}

/* Подвал и форма заявки страницы сняты (Босс 2026-09-24): подвал — общий partials/site-footer (стили в v3.css),
   заявка — на главной (/#contact). Разметка, стили и lead-form.js формы: git show 1d25979:views/format-detail.ejs */

/* RESPONSIVE */
@media (max-width: 900px) {
  .desc-grid { grid-template-columns: 1fr; gap: 40px; }
  .fmt-details-grid { grid-template-columns: 1fr; gap: 48px; }
  .fmt-details-item:last-child:nth-child(odd) { grid-column: auto; display: block; }
  .reviews-grid { grid-template-columns: 1fr; }
  .wrap { padding: 0 20px; }
  .fmt-hero-inner { padding: 48px 20px 44px; }
  /* подпись авторства на мобиле занимает 2–3 строки — освободить под неё низ hero */
  .fmt-hero--credited .fmt-hero-inner { padding-bottom: 84px; }
  .fmt-hero-credit { right: 20px; left: 20px; max-width: none; }
  /* моб: фото сверху дышит, тёмная вуаль под текстом снизу — зеркало свадебной */
  .fmt-hero--photo::after {
    background: linear-gradient(to bottom, rgba(12,10,8,0.10) 0%, rgba(12,10,8,0.32) 42%, rgba(12,10,8,0.80) 74%, rgba(12,10,8,0.92) 100%);
  }
}
@media (max-width: 600px) {
  .cta-band { padding: 60px 20px; }
  .cta-btns { flex-direction: column; align-items: center; }
}

/* ===== Критерии выбора (f.criteria — сейчас только wedding): слайды инста-карусели
   Феликса как есть (текст запечён в кадрах). Десктоп — 4 в ряд, мобайл — свайп-лента ===== */
.wed-crit-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 3px; margin-top: 40px; padding: 0 40px; }
.wed-crit-slide { aspect-ratio: 4 / 5; overflow: hidden; border-radius: var(--radius); }
.wed-crit-slide img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  filter: brightness(0.96);
  transition: transform 0.9s cubic-bezier(0.22, 1, 0.36, 1), filter 0.9s ease;
}
/* последовательная подсветка (класс ставит JS-модуль внизу): кадр чуть ярче и ближе */
.wed-crit-slide.crit-lit img { transform: scale(1.05); filter: brightness(1.07); }
@media (max-width: 960px) {
  .wed-crit-grid { grid-template-columns: 1fr 1fr; padding: 0 24px; }
}
@media (max-width: 640px) {
  .wed-crit-grid {
    display: flex; overflow-x: auto; scroll-snap-type: x mandatory;
    gap: 10px; padding: 0 16px; scroll-padding: 0 16px; scrollbar-width: none;
  }
  .wed-crit-grid::-webkit-scrollbar { display: none; }
  .wed-crit-slide { flex: 0 0 84%; scroll-snap-align: center; border-radius: var(--radius); }
}

/* ===== Свадебная тема (f.theme === 'wedding'): светлый фото-hero, курсив, виньетки ===== */
.theme-wedding .fmt-hero { min-height: 72vh; background: #efe9e2; }
.fmt-hero-photo { position: absolute; inset: 0; background-size: cover; background-position: center 42%; }
.theme-wedding .fmt-hero::after {
  background: linear-gradient(to right, rgba(248,245,240,0.96) 0%, rgba(248,245,240,0.82) 30%, rgba(248,245,240,0.35) 62%, rgba(248,245,240,0.05) 100%);
}
/* на телефоне крошки ложатся на фото купола (вуаль светлеет только ниже) — светлый ореол держит читаемость */
.theme-wedding .fmt-crumbs { color: var(--soft); text-shadow: 0 0 2px rgba(248,245,240,0.95), 0 0 8px rgba(248,245,240,0.9); }
.theme-wedding .fmt-crumbs a { color: var(--gold-text); }
.theme-wedding .fmt-crumbs a:hover { color: var(--dark); }
.theme-wedding .fmt-crumbs [aria-hidden] { color: rgba(28,26,22,0.35); }
.theme-wedding .fmt-label { color: var(--gold-text); }
.theme-wedding .fmt-title { color: var(--dark); font-style: italic; }
/* Светлая свадебная шапка: строка не должна заходить на фигуру в кадре — переносим «в Сочи». */
.theme-wedding .fmt-title--query { max-width: 9.5em; }
.theme-wedding .fmt-tagline { color: var(--mid); }
/* .fmt-hero-cta — вид описан выше, в общем блоке кнопок страницы. */
.theme-wedding .divider-gold { position: relative; overflow: visible; }
.theme-wedding .divider-gold::after {
  content: ''; position: absolute; left: 50%; top: 50%;
  width: 7px; height: 7px; transform: translate(-50%, -50%) rotate(45deg);
  background: var(--cream); border: 0.5px solid var(--gold-mid);
}

/* Таймлайн дня свадьбы */
.wed-timeline { max-width: 760px; margin-top: 40px; }
.wed-step { display: grid; grid-template-columns: 74px 24px 1fr; gap: 0 18px; }
.wed-step-time {
  font-size: 0.72rem; font-weight: 600; letter-spacing: 0.08em;
  color: var(--gold-text); padding-top: 6px; text-align: right;
}
.wed-step-rail { position: relative; }
.wed-step-rail::before {
  content: ''; position: absolute; left: 50%; top: 0; bottom: 0;
  width: 0.5px; background: var(--border-gold);
}
.wed-step:first-child .wed-step-rail::before { top: 12px; }
.wed-step:last-child .wed-step-rail::before { bottom: auto; height: 12px; }
.wed-step-rail::after {
  content: ''; position: absolute; left: 50%; top: 13px; /* оптический центр первой строки Cormorant */
  width: 7px; height: 7px; transform: translateX(-50%) rotate(45deg);
  background: var(--gold);
}
.wed-step-body { padding-bottom: 30px; }
.wed-step:last-child .wed-step-body { padding-bottom: 0; }
.wed-step-title { font-family: 'Cormorant Garamond', serif; font-size: 1.35rem; margin-bottom: 4px; }
.wed-step-text { font-size: 0.85rem; color: var(--mid); line-height: 1.7; max-width: 560px; }
.wed-timeline-note { margin-top: 26px; font-size: 0.78rem; color: var(--soft); font-style: italic; }

/* Связка «церемония + банкет» */
.wed-related {
  background: var(--white); border: 0.5px solid var(--border-gold);
  padding: 40px 44px; margin-top: 44px;
  display: flex; align-items: center; justify-content: space-between; gap: 32px;
}
.wed-related h3 { font-size: 1.6rem; margin: 6px 0 10px; }
.wed-related p { font-size: 0.88rem; color: var(--mid); line-height: 1.7; max-width: 640px; }
/* .wed-related-cta — вид и размер в общем блоке кнопок страницы. */
.wed-related-cta { flex-shrink: 0; white-space: nowrap; }
/* Несколько связок подряд и связки без шагов над ними (страница без таймлайна). */
.wed-related + .wed-related { margin-top: 16px; }
/* кнопки связок одной ширины — иначе в столбик они стоят лесенкой */
@media (min-width: 901px) { .wed-related-cta { min-width: 392px; text-align: center; } }
.wrap > .wed-related:first-child { margin-top: 0; }
/* Ссылки на форматы — плашки, как метки под описанием, но кликабельные и на сплошном фоне. */
.fmt-links-text { max-width: 720px; margin-top: 16px; font-size: 0.88rem; line-height: 1.8; color: var(--mid); }
.fmt-links-list { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 28px 0 0; padding: 0; }
.fmt-link {
  display: block; padding: 11px 18px; background: var(--white); border: 0.5px solid var(--border-gold);
  font-size: 0.68rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--dark); text-decoration: none; transition: border-color 0.2s ease, color 0.2s ease;
}
.fmt-link:hover, .fmt-link:focus-visible { border-color: var(--gold-text); color: var(--gold-text); }
.wed-timeline-note + .fmt-links, .wed-timeline + .fmt-links { margin-top: 64px; }
@media (max-width: 900px) {
  .theme-wedding .fmt-hero { min-height: 62vh; }
  /* фото сверху дышит, вуаль — только под текстовой зоной снизу */
  .theme-wedding .fmt-hero::after {
    background: linear-gradient(to bottom, rgba(248,245,240,0.08) 0%, rgba(248,245,240,0.30) 42%, rgba(248,245,240,0.88) 74%, rgba(248,245,240,0.97) 100%);
  }
  .wed-step { grid-template-columns: 52px 20px 1fr; gap: 0 12px; }
  .wed-related { flex-direction: column; align-items: flex-start; padding: 28px 24px; }
  .wed-related-cta { width: 100%; white-space: normal; text-align: center; box-sizing: border-box; }
}

/* ===== классы вместо инлайн-атрибутов style (CSP без 'unsafe-inline') ===== */
.fmt-strip-img { height: 100%; width: auto; display: block; }
.fmt-included-h3 { margin-bottom: 24px; margin-top: 0; }
.review--summary { background: var(--cream-dark); display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 12px; }
.rs-stars { font-family: 'Cormorant Garamond', serif; font-size: 2rem; color: var(--gold); line-height: 1; }
.rs-text { font-size: 0.88rem; color: var(--mid); }
.rs-link { font-size: 0.65rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gold); border-bottom: 0.5px solid var(--border-gold); padding-bottom: 2px; }

/* ===== v3.css подключён ради общей шапки и подвала (Босс 2026-09-24) =====
   Его одноимённые правила отзывов главной не должны менять вид этой страницы:
   возвращаем значения, какие были до подключения (сверено покомпонентным diff
   вычисленных стилей до/после). Пакеты здесь больше не «возвращаем»: с 2026-10-21
   экран цен формата — тот же, что на главной, и берёт стили v3.css как есть. */
h1, h2, h3 { letter-spacing: normal; }
.reviews-grid .review-text { font-family: 'Jost', sans-serif; flex: 0 1 auto; }
@media (max-width: 960px) {
  /* v3 резервирует низ под нижнюю панель «Позвонить / Telegram / Заявка» — здесь её нет */
  body { padding-bottom: 0; }
}
@media (max-width: 640px) {
  /* на главной отзывы на телефоне — свайп-лента; здесь остаются столбиком */
  .reviews-grid {
    overflow-x: visible; scroll-snap-type: none; margin-left: 0; margin-right: 0;
    padding: 0; scroll-padding-left: auto; scrollbar-width: auto; scrollbar-color: auto;
  }
  .reviews-grid > * { flex: 0 1 auto; scroll-snap-align: none; min-width: auto; }
}
