/* Страницы бань /bani/<баня>/ (кадры Figma «Дубовая · 1920 / 768 / 390», «Кедровая · 1920», «Скандинавия · 1920 / 390», «Галерея · просмотр · 1920 / 390»).
   Блоки «О бане», «Галерея», «К бане», «Другие бани» и просмотр фото — здесь; первый экран, отзывы, вопросы и форма — общие (hero, otzyvy, wave2, bron).
   Точки перехода: 768 (планшет), 1200 (десктоп, как у остальных страниц), 1366 (чек-уравнение в одну строку), 1480 (шесть карточек услуг в ряд — карточка 220
   как в кадре 1920). Ширины между кадрами 768 и 1920 в макете не нарисованы: до ответа дизайнера там раскладка 768 для карточек услуг и чека (см. сдачу). */

/* первый экран: кнопка «Забронировать <баня>» только на 390 (кадр «Первый экран · страница» с «Кнопка» = Да) */
.hero__btn-m { --btn-x: 24px; max-width: 100%; } /* F10: в кадре «Кнопка на странице» L 64: поля 20/24, текст 18/24 (Дубовая 301, Скандинавия 344) */
/* уже 390 «Забронировать Скандинавию» не помещается в 280–350: значок скрыт (как у кнопок первого экрана главной), поля 20 */
@media (max-width: 389px) { .hero__btn-m { --btn-x: 20px; white-space: normal; text-align: center; } .hero__btn-m .icon { display: none; } }
/* 320–374: кадра нет — текст 16, как было до F10 (при 18 «Забронировать Скандинавию» не помещается в одну строку и кнопка вырастает до 88) */
@media (max-width: 374px) { .hero__btn-m { font-size: 16px; } }
@media (min-width: 768px) { .hero__btn-m { display: none; } }

/* картинка заполняет рамку целиком (заливка Fill в Figma) */
.babout__photo, .gtile, .gitem__photo, .kcard__photo, .ocard__photo { position: relative; overflow: hidden; border-radius: var(--r-l); background: var(--c-line); }
.babout__photo picture, .gtile picture, .gitem__photo picture, .ocard__photo picture { position: absolute; inset: 0; display: block; }
.babout__photo img, .gtile img, .gitem__photo img, .kcard__photo img, .ocard__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ocard__photo { border-radius: 0; }

/* ===== «О бане» ===== */
.babout__in { display: flex; flex-direction: column; gap: 24px; padding-block: 48px; }
.babout__top { display: flex; flex-direction: column; gap: 24px; }
.babout__headrow { display: flex; flex-direction: column; gap: 12px; }
.babout__head { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.babout__text { font: 400 17px/25px var(--f-sans); color: var(--c-text-2); }
.babout__text a { color: var(--c-sage); text-underline-offset: 3px; } /* ссылка в тексте — как в статьях блога */
.babout__steps { display: flex; flex-direction: column; gap: 12px; }
/* «Ступень цены»: 390 — строки по 64: число слева, подпись справа, между ними линия */
.steps { display: flex; flex-direction: column; align-items: stretch; }
.step { display: flex; align-items: center; justify-content: space-between; gap: 12px; height: 64px; }
.step__num { font: 400 34px/34px var(--f-digits); color: var(--c-text); white-space: nowrap; }
.step__cap { font: 500 14px/19px var(--f-sans); color: var(--c-text-2); text-align: right; }
.steps__sep { flex: none; height: 1px; background: var(--c-line); }
.babout__note { font: 400 13px/18px var(--f-sans); color: var(--c-text-2); }
.babout__media { display: flex; flex-direction: column; gap: 24px; }
.babout__photos { display: flex; flex-direction: column; gap: 12px; }
.babout__photo--1 { height: 240px; }
.babout__photo--2 { height: 200px; }

/* «Декор · баня» (ТЗ-гравюры-внутренние, п. 1–3): дуб / шишка / ель, прозрачность .45; на 390 и 1200–1869 скрыта (поля нет, справа лид и цена),
   на скрытых ширинах <picture> отдаёт заглушку — файл не грузится. 768–1199: под рядом цен справа, верх на 8 выше низа сноски; ≥1870: в правом поле */
.babout { position: relative; isolation: isolate; }
.babout__decor { display: none; position: absolute; z-index: -1; opacity: .45; pointer-events: none; }
.babout__decor img { width: 100%; height: auto; }
/* 21.10.2026 (ТЗ-гравюры-21-10, пп. 2, 5, 7): и на телефоне — в правом верхнем углу блока над надзаголовком; Скандинавия — окно вместо ели */
@media (max-width: 767px) {
  .babout__decor { display: block; right: 12px; top: 2px; }
  .babout__decor--dub { width: 80px; }
  .babout__decor--kedr { width: 80px; }
  .babout__decor--okno { width: 72px; }
}
@media (min-width: 768px) and (max-width: 1199px) {
  .babout__steps { position: relative; }
  /* низ гравюры — на 28 ниже низа сноски, верх фото на 4 ниже низа гравюры: гравюра целиком в промежутке между сноской и фото */
  .babout__decor { display: block; right: calc(8px - var(--pad)); top: auto; bottom: -28px; }
  .babout__decor--dub { width: 112px; }
  .babout__decor--kedr, .babout__decor--okno { width: 100px; }
}
@media (min-width: 1870px) {
  .babout__decor { display: block; right: 30px; top: 200px; }
  .babout__decor--dub { width: min(200px, calc(50% - 740px)); }
  .babout__decor--kedr, .babout__decor--okno { width: min(220px, calc(50% - 740px)); }
}
/* «Факт с иконкой / Светлая»: значок 32 шалфей, значение 17/21 жирным, подпись 14/19 */
.bfacts { display: flex; flex-direction: column; gap: 16px; }
.bfacts__sep { display: none; }
.bfact { display: flex; align-items: center; gap: 12px; min-width: 0; }
.bfact .icon { width: 32px; height: 32px; color: var(--c-sage); stroke-width: 1.75; }
.bfact__text { display: flex; flex-direction: column; gap: 2px; }
.bfact__value { font: 700 17px/21px var(--f-sans); color: var(--c-text); }
.bfact__note { font: 400 14px/19px var(--f-sans); color: var(--c-text-2); }

/* ===== «Галерея»: мозаика ≥768, лента 390 ===== */
.bgal__in { display: flex; flex-direction: column; gap: 24px; padding-block: 48px; }
.bgal__head { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.bgal__titles { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.bgal__all { display: none; }
.bgal__mosaic { display: none; }
.gtile { display: block; color: inherit; text-decoration: none; }
.gtile img { transition: transform .4s ease; }
.gtile:hover img { transform: scale(1.03); }
.gtile:focus-visible { outline-offset: -3px; outline-color: var(--c-text-light); }
.gtile__plate { position: absolute; inset: 0; align-items: center; justify-content: center; background: rgba(31, 45, 34, .55); color: var(--c-text-light); font: 400 36px/42px var(--f-serif); }
.gtile__plate--t { display: flex; }
.gtile__plate--d { display: none; }
/* лента 390: кадры 290 с подписями, уходят за правый край экрана; пока подпись в одну строку, кадр выше (в кадре 218 против 200) */
.bgal__lent { display: flex; flex-direction: column; gap: 16px; }
.bgal__strip { margin-right: calc(var(--pad) * -1); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
.bgal__strip::-webkit-scrollbar { display: none; }
.bgal__list { display: flex; gap: 12px; padding-right: var(--pad); }
.gitem { display: flex; flex: 0 0 290px; scroll-snap-align: start; }
.gitem__link { display: flex; flex-direction: column; gap: 8px; width: 100%; min-height: 244px; color: inherit; text-decoration: none; }
.gitem__photo { flex: 1 0 200px; }
.gitem__cap { font: 400 13px/18px var(--f-sans); color: var(--c-text-2); }
.bgal__foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.bgal__count { font: 400 15px/21px var(--f-sans); color: var(--c-text-2); }

/* ===== Просмотр фото (оверлей): 390 — кадр 390×292, подпись и счётчик, стрелки под ним; 1920 — кадр 1280×720 между стрелками ===== */
.gview { position: fixed; inset: 0; z-index: 1000; display: grid; grid-template-columns: auto auto; justify-content: center; align-content: center; gap: 16px; padding: 48px 0; }
.gview[hidden] { display: none; }
.gview__bg { position: absolute; inset: 0; background: rgba(31, 45, 34, .94); }
.gview__fig { position: relative; grid-column: 1 / -1; grid-row: 1; width: 100vw; margin: 0; display: flex; flex-direction: column; gap: 16px; }
.gview__frame { aspect-ratio: 390 / 292; overflow: hidden; background: rgba(255, 255, 255, .06); }
.gview__pic, .gview__pic img { display: block; width: 100%; height: 100%; }
.gview__pic img { object-fit: cover; }
.gview__cap { display: flex; flex-direction: column; gap: 8px; padding: 0 20px; color: var(--c-text-light); }
.gview__text { font: 400 18px/26px var(--f-sans); }
.gview__count { font: 400 15px/21px var(--f-sans); color: rgba(255, 255, 255, .8); }
.gview__nav, .gview__x { position: relative; display: grid; place-items: center; width: 48px; height: 48px; padding: 0; border: 0; border-radius: var(--r-pill); background: transparent; color: var(--c-text-light); box-shadow: inset 0 0 0 1.5px var(--c-text-light); cursor: pointer; transition: background-color .15s; }
.gview__nav:hover, .gview__x:hover { background: rgba(255, 255, 255, .14); }
.gview__nav .icon { width: 20px; height: 20px; stroke-width: 1.75; }
.gview__nav--prev { grid-row: 2; grid-column: 1; justify-self: end; }
.gview__nav--prev .icon { transform: scaleX(-1); }
.gview__nav--next { grid-row: 2; grid-column: 2; justify-self: start; }
.gview__x { position: absolute; top: 16px; right: 16px; z-index: 1; }
.gview__x .icon { width: 24px; height: 24px; stroke-width: 1.75; }
.gview :focus-visible { outline-color: var(--c-text-light); outline-offset: 3px; }
body.is-gal { overflow: hidden; }

/* ===== «К бане» ===== */
.kbane__in { display: flex; flex-direction: column; gap: 24px; padding-block: 48px; }
.kbane__head { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.kbane__titles { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.kbane__lead { font: 400 18px/26px var(--f-sans); color: var(--c-text-2); }
/* «Услуга · карточка», вид «Узкая»: фото 200, название в две строки (60), цена под ним; без кнопки. 390 — лента 240 за правый край экрана */
.kbane__strip { margin-right: calc(var(--pad) * -1); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
.kbane__strip::-webkit-scrollbar { display: none; }
.kbane__cards { display: flex; gap: 12px; padding-right: var(--pad); }
.kcard { flex: 0 0 240px; min-width: 0; scroll-snap-align: start; }
.kcard__link { display: flex; flex-direction: column; gap: 12px; color: inherit; text-decoration: none; }
.kcard__photo { display: block; height: 200px; }
.kcard__body { display: flex; flex-direction: column; gap: 8px; }
.kcard__name { display: block; min-height: 60px; font: 400 24px/30px var(--f-serif); color: var(--c-text); }
.kcard__price { display: block; font: 600 24px/30px var(--f-sans); color: var(--c-text); white-space: nowrap; }
.kcard__link:hover .kcard__name { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }

/* «Чек · полоса» (молочная, r24): 390 — ведомость столбиком; 768 — слагаемые 2×2 со знаком «+», линия, итог и кнопка; 1440+ — уравнение в строку */
.kchek > * { min-width: 0; }
.kchek { display: grid; grid-template-columns: minmax(0, 1fr); row-gap: 16px; padding: 24px 20px; border-radius: var(--r-l); background: var(--c-bg-milk); }
.kchek__title { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.kchek__title .icon { width: 24px; height: 24px; color: var(--c-sage); stroke-width: 1.75; }
.kchek__name { font: 400 20px/24px var(--f-serif); color: var(--c-text); }
.kchek__note { flex: 1 0 100%; font: 400 13px/18px var(--f-sans); color: var(--c-text-2); }
.kchek__eq { display: flex; flex-direction: column; }
.ksign, .kchek__rule { display: none; }
.kterm { display: flex; flex-direction: row-reverse; align-items: center; justify-content: space-between; gap: 16px; min-height: 48px; padding-block: 12px; } /* «Прайс · строка» (19.10): промежуток 16, высота по содержимому, не меньше 48; подпись переносится, цена нет */
.kterm__cap { flex: 1; min-width: 0; }
.kterm:not(.kterm--total) { border-bottom: 1px solid var(--c-line); } /* 390: под каждой строкой ведомости линия, в том числе под последней */
.kterm__num { font: 600 15px/20px var(--f-sans); color: var(--c-text); white-space: nowrap; }
.kterm__cap { font: 400 16px/22px var(--f-sans); color: var(--c-text); }
.kterm--total { margin-top: 16px; padding-block: 0; min-height: 34px; }
.kterm--total .kterm__num { font: 400 34px/34px var(--f-digits); color: var(--c-sage-dark); }
.kterm--total .kterm__cap { font: 600 18px/26px var(--f-sans); }
.kchek__btn { align-self: stretch; }
/* 320–341: «Забронировать Скандинавию →» (262) шире кнопки (вьюпорт − 80) — текст переносится, кнопка не вылезает; с 342 помещается */
@media (max-width: 341px) { .kchek__btn { white-space: normal; padding-inline: 16px; text-align: center; } }

/* ===== «Другие бани» (блок без заливки: сквозь него видна гравюра «Отзывов») ===== */
.obani__in { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-areas: "t" "c" "l"; gap: 24px; padding-block: 48px; }
.obani__titles { grid-area: t; display: flex; flex-direction: column; align-items: flex-start; gap: 12px; }
.obani__cards { grid-area: c; display: flex; flex-direction: column; gap: 12px; }
.obani__cmp { grid-area: l; justify-self: start; }
.ocard { display: flex; min-width: 0; }
.ocard__link { display: flex; flex-direction: column; flex: 1; border-radius: var(--r-l); overflow: hidden; background: var(--c-bg-milk); color: inherit; text-decoration: none; }
.ocard__photo { flex: none; height: 220px; }
.ocard__body { display: flex; flex-direction: column; flex: 1; gap: 8px; padding: 20px; }
.ocard__name { font: 400 24px/30px var(--f-serif); color: var(--c-text); }
.ocard__feature { font: 400 15px/21px var(--f-sans); color: var(--c-text-2); }
.ocard__foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ocard__price { font: 600 20px/24px var(--f-sans); color: var(--c-text); }
.ocard__go { display: grid; flex: none; place-items: center; width: 48px; height: 48px; border-radius: var(--r-pill); background: var(--c-sage); color: var(--c-text-light); transition: background-color .15s; }
.ocard__go .icon { width: 20px; height: 20px; stroke-width: 1.75; }
.ocard__link:hover .ocard__go { background: var(--c-sage-dark); }
.ocard__link:focus-visible { outline-offset: 3px; }

/* ===== отзывы страниц бань: карточки без фото, гравюра «Горы ели» на 390 ниже блока (в кадре 270 от верха); карточки ленты одной высоты (макет 19.10) ===== */
.otz--bare { min-width: 0; }
@media (max-width: 767px) {
  .otzyvy--banya .otzyvy__decor { top: 270px; bottom: auto; height: 223px; }
}

/* ============================ 768 ============================ */
@media (min-width: 768px) {
  .babout__in { gap: 32px; padding-block: 64px; }
  .babout__top { gap: 32px; }
  .babout__text { font-size: 18px; line-height: 26px; }
  .steps { flex-direction: row; align-items: center; }
  .step { flex: 1 1 0; flex-direction: column; justify-content: center; gap: 8px; height: auto; text-align: center; }
  .step__num { font-size: 44px; line-height: 44px; }
  .step__cap { font-size: 15px; line-height: 20px; text-align: center; }
  .steps__sep { width: 1px; height: 80px; }
  .babout__note { font-size: 15px; line-height: 21px; text-align: center; }
  .babout__media { gap: 24px; }
  .babout__photos { gap: 16px; }
  .babout__photo--1 { height: 360px; }
  .babout__photo--2 { height: 260px; }
  .bfacts { flex-direction: row; gap: 16px; }
  .bfact { flex: 1 1 0; flex-direction: column; justify-content: flex-start; gap: 8px; text-align: center; }
  .bfact .icon { width: 20px; height: 20px; }
  .bfact__text { align-items: center; }
  .bfact__value { font-size: 14px; line-height: 18px; }
  .bfact__note { font-size: 13px; line-height: 17px; }

  .bgal__in { padding-block: 64px; }
  .bgal__all { display: inline-flex; background: none; border: 0; padding: 0; }
  .bgal__mosaic { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
  .gtile--big { grid-column: 1 / -1; aspect-ratio: 704 / 396; }
  .gtile--s1, .gtile--s2, .gtile--s3 { aspect-ratio: 224 / 150; }
  .gtile--s4 { display: none; }
  .bgal__lent { display: none; }

  .kbane__in { padding-block: 64px; }
  .kbane__strip { margin-right: 0; overflow: visible; }
  .kbane__cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px 16px; padding-right: 0; }
  .kcard { flex: none; }
  .kchek { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); column-gap: 24px; padding: 24px; }
  .kchek__head { grid-column: 1 / -1; margin-bottom: 4px; }
  .kchek__note { font-size: 15px; line-height: 21px; }
  .kchek__eq { display: contents; }
  .kterm, .kterm:not(.kterm--total) { flex-direction: column; align-items: flex-start; justify-content: flex-start; gap: 8px; min-height: 0; padding-block: 0; border: 0; }
  .kterm__num { font: 400 40px/40px var(--f-digits); }
  .kterm__cap { flex: none; max-width: 160px; font: 400 15px/21px var(--f-sans); color: var(--c-text-2); }
  .ksign { display: block; align-self: start; font: 400 40px/40px var(--f-digits); color: var(--c-text-muted); }
  .ksign--1, .ksign--eq { display: none; }
  .kchek__rule { display: block; grid-column: 1 / -1; height: 1px; background: var(--c-line); }
  .kterm--total { grid-column: 1 / 3; margin-top: 0; gap: 8px; min-height: 0; }
  .kterm--total .kterm__num { font-size: 44px; line-height: 44px; }
  .kterm--total .kterm__cap { font: 400 15px/21px var(--f-sans); color: var(--c-text-2); max-width: none; }
  .kchek__btn { align-self: center; justify-self: end; grid-column: 3; }

  .obani__in { grid-template-areas: "t" "l" "c"; row-gap: 0; padding-block: 64px; }
  .obani__cmp { margin-top: 12px; }
  .obani__cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 32px; }
  .ocard__photo { height: 360px; }
  .ocard__body { padding: 24px; }
  .ocard__price { font-size: 24px; line-height: 28px; }
}

/* ============================ 1200 ============================ */
@media (min-width: 1200px) {
  .babout__in { gap: 40px; padding-block: 96px; }
  .babout__top { gap: 48px; }
  .babout__headrow { flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 24px; }
  /* H2 «О бане» не шире 680 (правка макета 12.10): «Просторная парная, светлое дерево» переносится после запятой, «Баня-бочка на дровах» — одна строка */
  .babout__head { flex: 0 1 680px; max-width: 680px; }
  .babout__text { flex: 0 1 520px; }
  .step__num { font-size: 54px; line-height: 54px; }
  .step__cap { font-size: 17px; line-height: 23px; }
  .steps__sep { height: 96px; }
  .babout__photos { display: grid; grid-template-columns: 864fr 520fr; gap: 16px; }
  .babout__photo--1 { height: auto; aspect-ratio: 864 / 400; }
  .babout__photo--2 { height: auto; }
  .babout__media { gap: 32px; }
  .bfacts { align-items: center; gap: 0; }
  .bfacts__sep { display: block; flex: none; width: 1px; height: 42px; background: var(--c-line); }
  .bfact { flex-direction: row; text-align: left; gap: 12px; }
  .bfact .icon { width: 32px; height: 32px; }
  .bfact__text { align-items: flex-start; }
  .bfact__value { font-size: 17px; line-height: 21px; }
  .bfact__note { font-size: 14px; line-height: 19px; }

  .bgal__in { gap: 32px; padding-block: 96px; }
  .bgal__head { flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 24px; }
  .bgal__mosaic { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); aspect-ratio: 1400 / 560; }
  .gtile--big { grid-column: 1 / 3; grid-row: 1 / 3; aspect-ratio: auto; }
  .gtile--s1, .gtile--s2, .gtile--s3, .gtile--s4 { aspect-ratio: auto; }
  .gtile--s4 { display: block; }
  .gtile__plate--t { display: none; }
  .gtile__plate--d { display: flex; }

  .kbane__in { gap: 32px; padding-block: 96px; }
  .kbane__head { flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 24px; }
  .kbane__titles { max-width: 900px; }
  .kbane__lead { max-width: 700px; }
  .kchek { margin-top: -8px; } /* «Карточки и чек» в кадре 1920 — свой столбец с промежутком 24, у блока 32 */

  .obani__in { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "t l" "c c"; gap: 32px; padding-block: 96px; }
  .obani__cmp { align-self: end; margin-top: 0; }
  .obani__cards { margin-top: 0; }
}

/* ============================ 1366: кадр 1920 — уравнение чека в строку (самое длинное — Скандинавия, 1115; от 1366 заголовок чека и пометка помещаются в одну строку с кнопкой) ============================ */
/* шесть карточек в ряд — с 1480: контейнер 1400 даёт карточку 220, в ней «Парение дубовыми» умещается в строку (в 213 при 1440 — три строки, цены разъезжаются) */
@media (min-width: 1480px) {
  .kbane__cards { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 16px; }
}
/* 1200–1479: три карточки в ряд, названия в одну или две строки — высота строки названий по самому длинному в ряду (subgrid), без пустой строки под коротким;
   на 768 и с 1480 название держит 60 (две строки), как в кадрах. Без subgrid в браузере — min-height 0, цены стоят по названию */
@media (min-width: 1200px) and (max-width: 1479px) {
  .kcard__name { min-height: 0; }
  @supports (grid-template-rows: subgrid) {
    .kcard, .kcard__link { display: grid; grid-row: span 3; grid-template-rows: subgrid; row-gap: 12px; }
    .kcard__body { display: contents; }
    .kcard__price { margin-top: -4px; } /* название→цена 8, а не 12 */
  }
}
@media (min-width: 1366px) {
  .kchek { grid-template-columns: minmax(0, 1fr) auto; column-gap: 24px; row-gap: 24px; padding: 32px 40px; }
  .kchek__head { grid-column: 1; grid-row: 1; margin-bottom: 0; }
  .kchek__head { align-self: center; } /* F9: в кадре 1920 название «Пример итогового чека» по центру строки с кнопкой (56), а не у верха */
  .kchek__title { flex-wrap: nowrap; }
  .kchek__note { flex: 0 1 auto; }
  .kchek__btn { grid-column: 2; grid-row: 1; justify-self: end; align-self: center; }
  .kchek__eq { display: flex; flex-direction: row; align-items: baseline; gap: 24px; grid-column: 1 / -1; grid-row: 2; }
  .ksign--1, .ksign--eq { display: block; }
  /* F9: знаки «+» и «=» на одной базовой линии с числами (в кадре y 3232 у обоих); ширина знаков — рамки кадра (22 и 25), иначе метрика Prata копит сдвиг до «Итого» */
  .ksign { align-self: baseline; min-width: 22px; }
  .ksign--eq { min-width: 25px; }
  .kchek__rule { display: none; }
  .kterm--total { grid-column: auto; }
  .kterm--total .kterm__num { font-size: 54px; line-height: 54px; }
}

/* ============================ отзывы страниц бань (≥768 / ≥1200) ============================ */
@media (min-width: 768px) and (max-width: 1199px) {
  .otz--bare { min-height: 154px; } /* фото в этой раскладке держит высоту 130 + поля 24 */
}
@media (min-width: 1200px) {
  .otz--bare { min-height: 198px; }
  .otz--bare .otz__body { flex: 1 1 auto; }
  .otzyvy--two .otz { flex: 0 0 calc((100% - 24px) / 2); } /* Кедровая: два отзыва по 688 */
}
/* карточка на пол-ширины (Кедровая) — имя и звёзды в строку, как в кадре, а не столбиком (столбик — для трёх узких карточек 1200–1365) */
@media (min-width: 1200px) and (max-width: 1365px) {
  .otzyvy--two .otz__foot { flex-direction: row; align-items: center; }
}

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

/* ============================ просмотр фото ≥1200 ============================ */
/* 768–1199: кадр 4:3 по высоте экрана (запас 232 = поля 96 + подпись 55 + стрелки 48 + промежутки 32), по центру; уже экрана — со скруглением (альбомная ориентация) */
@media (min-width: 768px) and (max-width: 1199px) {
  .gview__fig { width: min(100vw, calc(min(75vw, 100vh - 232px) * 4 / 3)); }
  .gview__frame { width: 100%; }
}
@supports (height: 100dvh) {
  @media (min-width: 768px) and (max-width: 1199px) {
    .gview__fig { width: min(100vw, calc(min(75vw, 100dvh - 232px) * 4 / 3)); }
  }
}
@media (min-width: 768px) and (max-width: 1199px) and (orientation: landscape) {
  .gview__frame { border-radius: var(--r-m); }
  .gview__cap { padding: 0; }
}

@media (min-width: 1200px) {
  /* ширина кадра ограничена и высотой экрана: кадр 16:9 + подпись + поля всегда в окне (запас 128 по высоте) */
  .gview { grid-template-columns: auto min(1280px, calc(100vw - 224px), calc((100vh - 128px) * 16 / 9)) auto; column-gap: 32px; row-gap: 0; padding: 0; }
  .gview__fig { grid-column: 2; grid-row: 1; width: auto; }
  .gview__frame { aspect-ratio: 16 / 9; border-radius: var(--r-m); }
  .gview__cap { flex-direction: row; align-items: center; justify-content: space-between; gap: 24px; padding: 0; }
  .gview__nav--prev { grid-column: 1; grid-row: 1; justify-self: end; align-self: center; }
  .gview__nav--next { grid-column: 3; grid-row: 1; justify-self: start; align-self: center; }
  .gview__x { top: 32px; right: 32px; }
}
@supports (height: 100dvh) {
  @media (min-width: 1200px) {
    .gview { grid-template-columns: auto min(1280px, calc(100vw - 224px), calc((100dvh - 128px) * 16 / 9)) auto; }
  }
}
