

/* Start:/local/templates/arkhyz_royal/template_styles.css?1791832493147783*/
/* ==========================================================================
   Arkhyz Royal Resort & SPA — template_styles.css
   Подключается Битриксом автоматически через $APPLICATION->ShowHead()

   Брейкпоинты макета: 393 / 834 / 1440 / 1920
   Mobile First: базовые стили = 393, расширение через min-width:
     52.125em  = 834px
     90em      = 1440px
     120em     = 1920px
   Промежуточные размеры шрифтов и отступов считаются через clamp()
   от 393px (24.5625rem) до 1920px (120rem).
   ========================================================================== */


/* ==========================================================================
   1. Шрифт: Manrope Variable (один файл на все начертания 200–800)
   Файлы лежат в корне сайта: /fonts/manrope-400|500|600.woff2.
   ========================================================================== */
@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/manrope-400.woff2") format("woff2");
}

@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/fonts/manrope-500.woff2") format("woff2");
}

@font-face {
  font-family: "Manrope";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/fonts/manrope-600.woff2") format("woff2");
}


/* ==========================================================================
   2. Reset
   ========================================================================== */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  min-height: 100vh;
  line-height: 1.5;
}

img,
picture,
video,
svg {
  display: block;
  max-width: 100%;
  height: auto;
}

button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}

h1,
h2,
h3,
h4,
p,
ul,
ol,
figure,
blockquote,
dl,
dd {
  margin: 0;
}

ul[class],
ol[class] {
  padding: 0;
  list-style: none;
}


/* ==========================================================================
   3. Токены (из Figma: стили текста + Selection colors)
   ========================================================================== */
:root {
  /* --- Цвета: основа --- */
  --color-bg: #f3f2ef;              /* фон страницы */
  --color-surface: #ffffff;         /* карточки, поля */
  --color-text: #1b1810;            /* основной текст */
  --color-text-inverse: #ffffff;    /* текст на фото и тёмном фоне */

  /* --- Цвета: акцент (золото) --- */
  --color-accent: #b49464;
  --color-accent-hover: #9c7d4f;    /* в макете нет, подобран темнее на ~10% */

  /* --- Цвета: зелёная гамма (тёмные секции) --- */
  --color-green-900: #0d150b;
  --color-green-800: #384435;       /* фон тёмных панелей (СПА, услуги) */
  --color-green-700: #455042;

  /* --- Цвета: нейтральные бежевые/серые --- */
  --color-neutral-100: #f1f1f1;
  --color-neutral-200: #ece9e4;
  --color-neutral-300: #e0dcd6;
  --color-neutral-400: #d3cdc3;
  --color-neutral-500: #d9d9d9;

  /* --- Цвета: прозрачности --- */
  --color-border: rgb(27 24 16 / 0.2);          /* 1B1810 / 20% */
  --color-white-15: rgb(255 255 255 / 0.15);
  --color-white-35: rgb(255 255 255 / 0.35);
  --color-white-55: rgb(255 255 255 / 0.55);

  /* --- Шрифт --- */
  --font-base: "Manrope", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --tracking-tight: -0.03em;        /* letter-spacing -3% у всех заголовков */

  /* --- Типографика: fluid 393 → 1920 ---
     Значения 1920 из Figma (стили *desc).
     Мобильные значения — предварительные, уточним по макету 393. */
  --fs-display: clamp(2.0625rem, 0.781rem + 5.215vw, 3.5rem);  /* 33 → 56 до 834, дальше см. медиа ниже */
  --fs-lead:    clamp(1.25rem, 0.928rem + 1.31vw, 2.5rem);     /* 20 → 40  Body2 desc, крупный абзац */
  --fs-h2:      clamp(1.5rem, 1.307rem + 0.786vw, 2.25rem);    /* 24 → 36  H2 desc */
  --fs-h3:      clamp(1.25rem, 1.121rem + 0.524vw, 1.75rem);   /* 20 → 28  FAQ desc, заголовки карточек */
  --fs-accent:  clamp(1.0625rem, 0.998rem + 0.262vw, 1.3125rem); /* 17 → 21  H3 desc gold */
  --fs-body:    clamp(0.9375rem, 0.889rem + 0.196vw, 1.125rem); /* 15 → 18  Body desc */
  --fs-small:   0.875rem;                                      /* 14  подписи, метки */
  --fs-title:   1.875rem;                                         /* заголовки секций: 30 (393) → 44 (834) → 56 (1440) → 64 (1920), по макетам */

  --lh-heading: 1.2;
  --lh-lead: 1.32;
  --lh-body: 1.53;

  /* --- Отступы --- */
  --space-2xs: 0.25rem;
  --space-xs: 0.5rem;
  --space-s: 1rem;
  --space-m: 1.5rem;
  --space-l: 2.5rem;
  --space-xl: 4rem;
  --section-gap: clamp(3.75rem, 2.785rem + 3.929vw, 7.5rem);   /* 60 → 120 между секциями */

  /* --- Сетка ---
     Контент 1700px + поля 110px = 1920.
     Широкие панели (тёмные секции, фото-баннеры) стоят с отступом 25px от края. */
  --container-width: 106.25rem;                                  /* 1700px */
  --container-gutter: clamp(1rem, -0.512rem + 6.156vw, 6.875rem); /* 16 → 110 */
  --panel-inset: clamp(0.5rem, 1.3vw, 1.5625rem);               /* 8 → 25 */

  /* --- Скругления (уточним по первым блокам) --- */
  --radius-s: 0.5rem;
  --radius-m: 1rem;
  --radius-l: 1.25rem;
  --radius-xl: 2rem;
  --radius-pill: 62.5rem;

  /* --- Кнопки (высота 44 → 51 и 48 → 65, текст 13 → 16) --- */
  --button-height: clamp(2.75rem, 2.6375rem + 0.458vw, 3.1875rem);
  --button-height-l: clamp(3rem, 2.725rem + 1.113vw, 4.0625rem);
  --fs-button: clamp(0.8125rem, 0.764rem + 0.196vw, 1rem);

  /* --- Анимации --- */
  --transition-fast: 0.35s ease;                       /* плавно: отель премиум-класса */
  --transition-smooth: 0.9s cubic-bezier(0.33, 0, 0.2, 1); /* появление блоков, крупные движения */
  --transition-smooth-duration: 0.9s;
  --transition-slide: 0.9s cubic-bezier(0.65, 0, 0.35, 1);

  /* --- Состояния и формы --- */
  --color-error: #a4322a;
  --radius-panel: 1.5625rem;
  --radius-field: 1.25rem;
}

/* Крупный заголовок растёт быстро до планшета и медленно дальше:
   393 → 33px, 834 → 56px, 1440 → 64px, 1920 → 72px */
@media (min-width: 52.125em) {
  :root {
    --fs-display: clamp(3.5rem, 2.732rem + 1.473vw, 4.5rem);
  }
}

@media (width > 24.5625em) {
  :root {
    --fs-title: calc(1.09rem + 3.17vw);
  }
}

@media (width > 52.125em) {
  :root {
    --fs-title: calc(1.72rem + 1.98vw);
  }
}

@media (width > 90em) {
  :root {
    --fs-title: min(calc(2rem + 1.667vw), 4rem);
  }
}


/* Тексты страниц «Развлечения»/главной: размер плавно растёт между макетами 393 → 834 → 1440 → 1920 */
:root {
  --pt-title: 2.0312rem;
  --pt-tile: 1.5625rem;
  --pt-card-title: 1.25rem;
  --pt-card-text: 0.8375rem;
  --pt-slide-title: 1.1375rem;
  --pt-slide-text: 0.7875rem;
}
@media (width > 24.5625em) {
 :root {
    --pt-title: calc(2.0312rem + (100vw - 24.5625rem) * 0.03741);
    --pt-tile: calc(1.5625rem + (100vw - 24.5625rem) * 0.00680);
    --pt-card-title: calc(1.25rem + (100vw - 24.5625rem) * 0.00907);
    --pt-card-text: calc(0.8375rem + (100vw - 24.5625rem) * 0.00136);
    --pt-slide-title: calc(1.1375rem + (100vw - 24.5625rem) * 0.01315);
    --pt-slide-text: calc(0.7875rem + (100vw - 24.5625rem) * 0.00476);
 }
}
@media (width > 52.125em) {
 :root {
    --pt-title: calc(3.0625rem + (100vw - 52.125rem) * 0.02310);
    --pt-tile: calc(1.75rem + (100vw - 52.125rem) * 0.00660);
    --pt-card-title: calc(1.5rem + (100vw - 52.125rem) * 0.01320);
    --pt-card-text: calc(0.875rem + (100vw - 52.125rem) * 0.00330);
    --pt-slide-title: calc(1.5rem + (100vw - 52.125rem) * 0.06436);
    --pt-slide-text: calc(0.9187rem + (100vw - 52.125rem) * 0.00215);
 }
}
@media (width > 90em) {
 :root {
    --pt-title: min(calc(3.9375rem + (100vw - 90rem) * 0.01979), 4.5312rem);
    --pt-tile: min(calc(2rem + (100vw - 90rem) * 0.00000), 2rem);
    --pt-card-title: min(calc(2rem + (100vw - 90rem) * 0.00833), 2.25rem);
    --pt-card-text: min(calc(1rem + (100vw - 90rem) * 0.00417), 1.125rem);
    --pt-slide-title: min(calc(3.9375rem + (100vw - 90rem) * 0.01875), 4.5rem);
    --pt-slide-text: min(calc(1rem + (100vw - 90rem) * 0.00667), 1.2rem);
 }
}

/* ==========================================================================
   4. Base
   ========================================================================== */
html {
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-base);
  font-size: var(--fs-body);
  font-weight: 400;
  line-height: var(--lh-body);
  color: var(--color-text);
  background-color: var(--color-bg);
  -webkit-font-smoothing: antialiased;
}

h1,
h2,
h3,
h4 {
  font-weight: 500;
  line-height: var(--lh-heading);
  letter-spacing: var(--tracking-tight);
}

a {
  color: inherit;
  text-decoration: none;
}

:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    transition-duration: 0.01ms;
    animation-duration: 0.01ms;
    animation-iteration-count: 1;
  }
}


/* ==========================================================================
   5. Утилиты
   ========================================================================== */

/* Контентная ширина: 1700px + боковые поля */
.container {
  width: 100%;
  max-width: calc(var(--container-width) + var(--container-gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--container-gutter);
}

/* Широкая панель почти во всю ширину (тёмные секции, баннеры) */
.panel {
  margin-inline: var(--panel-inset);
}

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}


/* ==========================================================================
   Блок: skip-link
   ========================================================================== */
.skip-link {
  position: absolute;
  top: var(--space-s);
  left: var(--space-s);
  z-index: 1000;
  padding: var(--space-xs) var(--space-s);
  font-size: var(--fs-small);
  font-weight: 500;
  color: var(--color-text-inverse);
  background-color: var(--color-text);
  border-radius: var(--radius-pill);
  transform: translateY(-200%);
  transition: transform var(--transition-fast);
}

.skip-link:focus-visible {
  transform: translateY(0);
}


/* ==========================================================================
   Блок: page
   ========================================================================== */
.page {
  overflow-x: clip;
}

/* Открыто меню или окно: страница под ним не прокручивается */
.page--locked {
  padding-inline-end: var(--scrollbar-width, 0);
  overflow: hidden;
}

/* Ширину пропавшего скроллбара JS кладёт в --scrollbar-width, чтобы ничего не прыгало */
.page--locked .site-header {
  inset-inline-end: var(--scrollbar-width, 0);
}

.page__main {
  display: flex;
  flex-direction: column;
  gap: var(--section-gap);
  padding-block-end: var(--section-gap);
}


/* ==========================================================================
   Блоки сайта — добавляются ниже в порядке появления на странице
   ========================================================================== */


/* ==========================================================================
   Блок: icon (иконки из спрайта в header.php: <svg class="icon"><use href="#icon-..."></svg>)
   ========================================================================== */
.icon {
  flex-shrink: 0;
  width: 1.25rem;
  height: 1.25rem;
}


/* ==========================================================================
   Блок: button (общий для всего сайта)
   Цвета задаются переменными --button-*, у каждого модификатора своя пара
   «обычное / при наведении» из макета. Родитель может переопределить
   переменные (см. site-header--sticky), не трогая сам блок.
   Модификаторы: --light, --accent, --outline, --outline-light, --close,
                 --l (крупная), --icon (круглая, только иконка)
   ========================================================================== */
.button {
  --button-bg: transparent;
  --button-color: inherit;
  --button-border: transparent;
  --button-icon-bg: var(--color-accent);
  --button-icon-color: var(--color-text);
  --button-bg-hover: var(--button-bg);
  --button-color-hover: var(--button-color);
  --button-border-hover: var(--button-border);
  --button-icon-bg-hover: var(--button-icon-bg);

  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.9375rem;
  min-height: var(--button-height);
  padding-inline: 1.5rem;
  border: 1px solid var(--button-border);
  font-family: inherit;
  font-size: var(--fs-button);
  font-weight: 600;
  line-height: 1.2;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  white-space: nowrap;
  color: var(--button-color);
  background-color: var(--button-bg);
  border-radius: var(--radius-pill);
  cursor: pointer;
  transition:
    color var(--transition-fast),
    background-color var(--transition-fast),
    border-color var(--transition-fast);
}

.button:disabled {
  opacity: 0.6;
  cursor: progress;
}

/* Кружок со стрелкой внутри кнопки */
.button__icon {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  width: 2rem;
  height: 2rem;
  color: var(--button-icon-color);
  background-color: var(--button-icon-bg);
  border-radius: 50%;
  transition: background-color var(--transition-fast);
}

/* Иконка в круглой кнопке без текста */
.button__glyph {
  width: 1.5rem;
  height: 1.5rem;
}

@media (hover: hover) {
  .button:hover:not(:disabled) {
    color: var(--button-color-hover);
    background-color: var(--button-bg-hover);
    border-color: var(--button-border-hover);
  }

  .button:hover:not(:disabled) .button__icon {
    background-color: var(--button-icon-bg-hover);
  }
}

/* Белая заливка → золотая */
.button--light {
  --button-bg: var(--color-surface);
  --button-color: var(--color-text);
  --button-bg-hover: var(--color-accent);
  --button-color-hover: var(--color-text-inverse);
  --button-icon-bg-hover: var(--color-surface);
}

/* Золотая заливка → почти чёрная */
.button--accent {
  --button-bg: var(--color-accent);
  --button-color: var(--color-text);
  --button-icon-bg: var(--color-surface);
  --button-bg-hover: var(--color-text);
  --button-color-hover: var(--color-text-inverse);
  --button-icon-bg-hover: var(--color-accent);
}

/* Золотая обводка (светлый фон) → золотая заливка */
.button--outline {
  --button-border: var(--color-accent);
  --button-color: var(--color-text);
  --button-bg-hover: var(--color-accent);
  --button-border-hover: var(--color-accent);
  --button-icon-bg-hover: var(--color-surface);
}

/* Белая обводка (на фото и тёмном фоне) → золотая заливка */
.button--outline-light {
  --button-border: var(--color-text-inverse);
  --button-color: var(--color-text-inverse);
  --button-bg-hover: var(--color-accent);
  --button-border-hover: var(--color-accent);
  --button-icon-bg-hover: var(--color-surface);
}

/* Кнопка закрытия: золотой круг с белым крестиком */
.button--close {
  --button-bg: var(--color-accent);
  --button-color: var(--color-text-inverse);
  --button-bg-hover: var(--color-text);
}

/* Тёмно-зелёная («Наверх» в подвале) → золотая */
.button--green {
  --button-bg: var(--color-green-800);
  --button-color: var(--color-text-inverse);
  --button-icon-bg: var(--color-surface);
  --button-bg-hover: var(--color-accent);
  --button-color-hover: var(--color-text);
}

/* Подпись обычным регистром (по умолчанию капслок) */
.button--sentence {
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}

/* Крупная кнопка */
.button--l {
  min-height: var(--button-height-l);
  padding-inline: 2rem 1rem;
}

/* Круглая кнопка-иконка */
.button--icon {
  width: var(--button-height);
  padding: 0;
}

.button--close.button--icon {
  width: var(--button-close-size, var(--button-height));
  min-height: var(--button-close-size, var(--button-height));
}


/* ==========================================================================
   Блок: site-header
   Всегда fixed. Вверху страницы прозрачная, белый текст поверх фото.
   После прокрутки (JS ставит site-header--sticky) превращается в
   «плавающую» полупрозрачную плашку с тёмным текстом.
   ========================================================================== */
.site-header {
  --header-top: clamp(1rem, 0.6rem + 1.572vw, 2.5rem);
  --logo-width: clamp(8.375rem, 6.15rem + 9.07vw, 10.875rem); /* 134 → 174px на 393 → 834 */

  position: fixed;
  inset-block-start: 0;
  inset-inline: 0;
  z-index: 20;
  padding-block-start: var(--header-top);
  color: var(--color-text-inverse);
}

.site-header--sticky {
  --header-top: clamp(0.5rem, 0.3rem + 0.8vw, 1rem);

  color: var(--color-text);
}

.site-header__inner {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-s);
  max-width: calc(var(--container-width) + var(--container-gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--container-gutter);
}

/* Фон плашки: появляется через opacity, чтобы не анимировать раскладку */
.site-header__inner::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background-color: var(--color-white-55);
  border-radius: var(--radius-pill);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  opacity: 0;
  transition: opacity 0.3s ease;
}

.site-header--sticky .site-header__inner {
  max-width: none;
  margin-inline: var(--panel-inset);
  padding-block: 0.375rem;
  padding-inline: 1.5rem;
  animation: site-header-in 0.4s ease-out;
}

.site-header--sticky .site-header__inner::before {
  opacity: 1;
}

@keyframes site-header-in {
  from {
    transform: translateY(-130%);
  }
}

.site-header__logo {
  display: block;
  flex-shrink: 0;
}

.site-header__logo-image {
  width: var(--logo-width);
}

/* На плашке логотип чуть меньше */
.site-header--sticky .site-header__logo-image {
  width: calc(var(--logo-width) * 0.72);
}

/* Светлый логотип вверху страницы, тёмный на плашке */
.site-header__logo-image--dark,
.site-header--sticky .site-header__logo-image--light {
  display: none;
}

.site-header--sticky .site-header__logo-image--dark {
  display: block;
}

.site-header__actions {
  display: flex;
  align-items: center;
  gap: 0.4375rem;
}

.site-header__phone {
  display: none;
  margin-inline-end: clamp(0.5rem, 0.2rem + 0.8vw, 1.1875rem);
  font-size: clamp(1rem, 0.871rem + 0.524vw, 1.5rem);
  font-weight: 500;
  line-height: 1.32;
  letter-spacing: var(--tracking-tight);
  white-space: nowrap;
}

/* На экранах уже 360px кнопка не помещается;
   форма бронирования и так стоит на первом экране */
.site-header__book {
  display: none;
}

@media (min-width: 22.5em) {
  .site-header__book {
    display: inline-flex;
  }
}

/* Узкие телефоны (до 393): кнопки и логотип компактнее, чтобы бургер не уходил за край */
@media (width <= 24.5625em) {
  .site-header {
    --logo-width: clamp(7.5rem, 42.4vw - 2.04rem, 8.375rem); /* 120 → 134px на 360 → 393 */
  }

  .site-header__inner {
    gap: 0.5rem;
  }

  .site-header__actions {
    gap: 0.3125rem;
  }

  .site-header__book {
    --button-height: 2.5rem;

    padding-inline: 0.875rem;
    font-size: 0.75rem;
    letter-spacing: 0.02em;
  }

  .site-header__burger {
    --button-height: 2.5rem;
  }

  .site-header--sticky .site-header__inner {
    padding-inline: 1rem;
  }
}

@media (min-width: 52.125em) {
  .site-header {
    --logo-width: clamp(10.875rem, 2.875rem + 15.35vw, 16.6875rem); /* 174 → 267px на 834 → 1440 */
  }

  .site-header__phone {
    display: block;
  }
}

/* Кнопки на плашке: золотая «Забронировать» и тёмная обводка у бургера */
.site-header--sticky .site-header__book {
  --button-bg: var(--color-accent);
  --button-color: var(--color-text-inverse);
  --button-border: var(--color-accent);
  --button-bg-hover: var(--color-text);
  --button-border-hover: var(--color-text);
}

.site-header--sticky .site-header__burger {
  --button-color: var(--color-text);
  --button-border: var(--color-text);
  --button-bg-hover: var(--color-accent);
  --button-color-hover: var(--color-text);
  --button-border-hover: var(--color-accent);
}


/* ==========================================================================
   Блок: phone-link (ссылка-телефон из включаемой области)
   ========================================================================== */
.phone-link {
  transition: opacity var(--transition-fast);
}

.phone-link:hover {
  opacity: 0.75;
}


/* ==========================================================================
   Блок: rating-badge (рейтинг в Яндексе)
   Плашку целиком (рамка, фон, иконка, «5,0», подпись) рисует
   images/rating.svg, CSS добавляет только blur под ней. Размеры в em: плашка масштабируется одним font-size
   (9px → 16px = 80 → 142px по ширине).
   ========================================================================== */
.rating-badge {
  display: block;
  width: 8.875em;
  font-size: clamp(0.5625rem, 0.45rem + 0.458vw, 1rem);
  border-radius: 1.125em;
  overflow: hidden;
  -webkit-backdrop-filter: blur(11.5px);
  backdrop-filter: blur(11.5px);
}

.rating-badge__image {
  display: block;
  width: 100%;
  height: auto;
}


/* ==========================================================================
   Блок: hero (первый экран главной)
   Mobile: фото сверху, форма бронирования на зелёной плашке заходит на фото.
   От 834: фото на весь экран, форма в строку внизу, точки справа вертикально.
   ========================================================================== */
.hero {
  --hero-radius: 1.5625rem;
  --hero-overlap: 3.5625rem;

  position: relative;
  display: grid;
  grid-template-rows: 1fr auto auto;
  isolation: isolate;
  color: var(--color-text-inverse);
}

.hero__media {
  position: relative;
  grid-row: 1 / 3;
  grid-column: 1;
  min-height: clamp(34.375rem, 28.75rem + 22.9vw, 56.25rem);
  overflow: hidden;
  background-color: var(--color-green-900);
  border-end-start-radius: var(--hero-radius);
  border-end-end-radius: var(--hero-radius);
}

/* Затемнение снизу для читаемости текста */
.hero__media::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background-image: linear-gradient(180deg, rgb(27 24 16 / 0.09) 0%, rgb(0 0 0 / 0.81) 100%);
  pointer-events: none;
}

.hero__body {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: flex-start;
  grid-row: 1;
  grid-column: 1;
  z-index: 2;
  gap: clamp(2.125rem, 5.27rem - 2.62vw, 4.625rem);
  padding-block: 8rem 1.5rem;
}

.hero__title {
  max-width: 13.75em;
  text-wrap: pretty; /* без одиночных слов в последней строке */
  font-size: var(--fs-display);
}

/* Длинный заголовок внутренней страницы: на большом экране в две строки */
.hero__title--wide {
  max-width: 15em;
}

.hero__pagination {
  display: flex;
  justify-content: center;
  grid-row: 2;
  grid-column: 1;
  z-index: 2;
  padding-block: 1.5rem calc(var(--hero-overlap) + 1.5rem);
}

.hero__booking {
  grid-row: 3;
  grid-column: 1;
  z-index: 3;
  margin-block-start: calc(var(--hero-overlap) * -1);
}

@media (min-width: 52.125em) {
  .hero__media {
    grid-row: 1 / 4;
  }

  .hero__body {
    padding-block-end: clamp(2rem, 1.3rem + 0.8vw, 2.875rem);
  }

  .hero__pagination {
    position: absolute;
    grid-area: 1 / 1 / -1 / -1; /* иначе absolute позиционируется от своей ячейки сетки */
    top: 50%;
    right: clamp(1.5rem, -1.75rem + 6.72vw, 6.3125rem);
    padding: 0;
    transform: translateY(-50%);
  }

  .hero__booking {
    margin-block-start: 0;
    padding-block-end: clamp(2.5rem, 1.6rem + 1.7vw, 4.125rem);
  }
}


/* ==========================================================================
   Блок: hero-slider (смена фото первого экрана)
   Mobile листает слева направо, от 834 снизу вверх.
   Индекс слайда JS кладёт в --slider-index.
   ========================================================================== */
.hero-slider {
  --slider-index: 0;

  position: absolute;
  inset: 0;
}

.hero-slider__track {
  display: flex;
  height: 100%;
  transform: translate3d(calc(var(--slider-index) * -100%), 0, 0);
  transition: transform var(--transition-slide);
}

.hero-slider__slide {
  flex: 0 0 100%;
  height: 100%;
}

.hero-slider__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (min-width: 52.125em) {
  .hero-slider__track {
    flex-direction: column;
    transform: translate3d(0, calc(var(--slider-index) * -100%), 0);
  }
}


/* ==========================================================================
   Блок: slider-dots (точки-переключатели, активная вытянута в тире)
   ========================================================================== */
.slider-dots {
  display: flex;
  align-items: center;
}

.slider-dots__button {
  display: grid;
  place-items: center;
  min-width: 1.5rem;
  min-height: 1.5rem;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
}

.slider-dots__button::before {
  content: "";
  width: 0.4375rem;
  height: 0.4375rem;
  background-color: var(--color-text-inverse);
  border-radius: var(--radius-pill);
  transition:
    width var(--transition-fast),
    height var(--transition-fast),
    background-color var(--transition-fast);
}

.slider-dots__button--active::before {
  width: 2.25rem;
  background-color: var(--color-accent);
}

/* Вертикальная раскладка: точки столбиком, тире вертикальное */
@media (min-width: 52.125em) {
  .slider-dots--vertical {
    flex-direction: column;
  }

  .slider-dots--vertical .slider-dots__button--active::before {
    width: 0.4375rem;
    height: 1.5rem;
  }
}


/* ==========================================================================
   Блок: booking-form (макет формы бронирования)
   Временная разметка: сюда встанет виджет сервиса бронирования,
   эти же стили потом перенесём на его классы.
   ========================================================================== */
.booking-form {
  display: grid;
  gap: var(--space-xs);
  padding: 1.5rem 1.5rem 1.25rem;
  color: var(--color-text-inverse);
  background-color: var(--color-green-800);
  border-radius: var(--radius-l);
}

.booking-form__field {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  column-gap: var(--space-s);
  width: 100%;
  min-height: 3.625rem;
  padding: 0 0 0.375rem 0.875rem;
  border: 0;
  border-bottom: 1px solid var(--color-text-inverse);
  text-align: start;
  color: inherit;
  background: none;
  cursor: pointer;
}

.booking-form__label {
  grid-column: 1;
  min-width: 0;
  font-size: 0.875rem;
  line-height: 1.52;
}

.booking-form__value {
  grid-column: 1;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.52;
}

.booking-form__icon {
  grid-column: 2;
  grid-row: 1 / 3;
  width: 1.5625rem;
  height: 1.5625rem;
}

.booking-form__submit {
  width: 100%;
  margin-block-start: var(--space-m);
}

@media (min-width: 52.125em) {
  .booking-form {
    grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
    align-items: end;
    gap: 1.375rem;
    padding: 0;
    background-color: transparent;
    border-radius: 0;
  }

  .booking-form__submit {
    width: auto;
    margin-block-start: 0;
  }
}


/* ==========================================================================
   Блок: site-menu (выезжающее меню справа, <dialog>)
   <dialog> даёт из коробки: ловушку фокуса, Esc, возврат фокуса на бургер.
   Сам диалог растянут на весь экран и прозрачный, панель внутри него:
   клик мимо панели (по подложке) закрывает меню.
   ========================================================================== */
.site-menu {
  position: fixed;
  inset: 0;
  width: 100%;
  max-width: none;
  height: 100%;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  overflow: hidden;
  color: var(--color-text);
  background: transparent;
}

.site-menu::backdrop {
  background-color: rgb(27 24 16 / 0.35);
}

.site-menu[open]::backdrop {
  animation: dialog-fade-in 0.8s ease-out;
}

.site-menu--closing::backdrop {
  opacity: 0;
  transition: opacity 0.7s ease-in-out;
}

.site-menu__panel {
  --menu-pad-start: clamp(2.5rem, 0.2rem + 9.4vw, 7.5rem);
  --menu-pad-end: clamp(1.5rem, -2.0625rem + 14.5vw, 7.5rem);
  --menu-ease: cubic-bezier(0.4, 0, 0.15, 1);

  position: absolute;
  inset-block: 0;
  inset-inline-end: 0;
  display: flex;
  flex-direction: column;
  width: min(calc(100% - 1.25rem), 41.5rem);
  padding-block: clamp(1.75rem, 1.2rem + 1.5vw, 3.25rem) clamp(1.5rem, 1rem + 2vw, 3.5rem);
  padding-inline: var(--menu-pad-start) var(--menu-pad-end);
  overflow-y: auto;
  background-color: var(--color-neutral-400);
  border-start-start-radius: var(--radius-panel);
  border-end-start-radius: var(--radius-panel);
  box-shadow: -1.5rem 0 4rem rgb(27 24 16 / 0.18);
  will-change: transform;
}

/* Фокус при открытии ставится на панель (не на логотип), рамка вокруг неё не нужна */
.site-menu__panel:focus {
  outline: 0;
}

.site-menu[open] .site-menu__panel {
  animation: site-menu-in 1.2s var(--menu-ease);
}

.site-menu--closing .site-menu__panel {
  opacity: 0;
  transform: translateX(6rem);
  transition:
    transform 0.7s cubic-bezier(0.4, 0, 0.6, 1),
    opacity 0.6s ease-in-out;
}

/* Содержимое проявляется следом за панелью: сначала шапка, потом пункты по очереди, в конце телефон */
.site-menu[open] .site-menu__head,
.site-menu[open] .site-menu__item,
.site-menu[open] .site-menu__foot {
  animation: site-menu-content-in 0.9s var(--menu-ease) backwards;
}

.site-menu[open] .site-menu__head {
  animation-delay: 0.5s;
}

.site-menu[open] .site-menu__item {
  animation-delay: calc(0.6s + var(--item-index, 0) * 0.08s);
}

.site-menu[open] .site-menu__foot {
  animation-delay: 1.2s;
}

.site-menu__item:nth-child(1) { --item-index: 0; }
.site-menu__item:nth-child(2) { --item-index: 1; }
.site-menu__item:nth-child(3) { --item-index: 2; }
.site-menu__item:nth-child(4) { --item-index: 3; }
.site-menu__item:nth-child(5) { --item-index: 4; }
.site-menu__item:nth-child(6) { --item-index: 5; }
.site-menu__item:nth-child(7) { --item-index: 6; }
.site-menu__item:nth-child(8) { --item-index: 7; }
.site-menu__item:nth-child(n + 9) { --item-index: 8; }

@keyframes site-menu-in {
  from {
    opacity: 0;
    transform: translateX(6rem);
  }
}

@keyframes site-menu-content-in {
  from {
    opacity: 0;
    transform: translateX(1.5rem);
  }
}

@keyframes dialog-fade-in {
  from {
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .site-menu[open] .site-menu__panel,
  .site-menu[open] .site-menu__head,
  .site-menu[open] .site-menu__item,
  .site-menu[open] .site-menu__foot {
    animation: none;
  }
}

.site-menu__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-s);
}

.site-menu__logo {
  display: block;
}

.site-menu__logo-image {
  width: clamp(8.2rem, 5.2rem + 12.2vw, 16.1rem);
}

.site-menu__close {
  --button-close-size: clamp(2.75rem, 2.2rem + 2.2vw, 4.0625rem);
}

.site-menu__list {
  margin-block-start: clamp(3rem, 2.5rem + 2vw, 4.75rem);
}

.site-menu__empty {
  margin-block-start: 3rem;
  font-size: var(--fs-small);
  color: var(--color-error);
}

.site-menu__item {
  border-block-end: 1px solid rgb(180 148 100 / 0.6);
}

.site-menu__link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-s);
  padding-block: 0.35em;
  font-size: clamp(1.125rem, 0.95rem + 0.7vw, 1.5rem);
  line-height: 1.2;
  letter-spacing: var(--tracking-tight);
  text-transform: uppercase;
  transition: color var(--transition-fast);
}

.site-menu__link:hover,
.site-menu__link--active {
  color: var(--color-accent);
}

.site-menu__icon {
  color: var(--color-accent);
}

.site-menu__foot {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem var(--space-s);
  margin-block-start: auto;
  padding-block-start: 2.5rem;
}

.site-menu__foot .button {
  flex: 1 1 auto;
  justify-content: center;
  max-width: 100%;
}

.site-menu__phone {
  font-size: clamp(1.125rem, 0.95rem + 0.7vw, 1.5rem);
  font-weight: 500;
  letter-spacing: var(--tracking-tight);
  white-space: nowrap;
}


/* ==========================================================================
   Блок: modal (всплывающее окно, <dialog>)
   Всё остальное на странице размывается через ::backdrop (blur 12.5px из макета).
   ========================================================================== */
.modal {
  position: fixed;
  inset: 0;
  width: 100%;
  max-width: none;
  height: 100%;
  max-height: none;
  margin: 0;
  padding: clamp(1rem, 0.5rem + 1.5vw, 1.5rem);
  border: 0;
  overflow-y: auto;
  color: var(--color-text);
  background: transparent;
}

.modal[open] {
  display: grid;
}

.modal::backdrop {
  background-color: rgb(27 24 16 / 0.25);
  -webkit-backdrop-filter: blur(12.5px);
  backdrop-filter: blur(12.5px);
}

.modal[open]::backdrop {
  animation: dialog-fade-in 0.3s ease-out;
}

.modal--closing::backdrop {
  opacity: 0;
  transition: opacity 0.25s ease-in;
}

.modal__panel {
  position: relative;
  display: grid;
  gap: clamp(1.25rem, 0.8rem + 1.8vw, 2.5rem);
  width: 100%;
  max-width: 88rem;
  margin: auto;
  padding: clamp(1.375rem, 0.25rem + 5.2vw, 4.75rem);
  background-color: var(--color-neutral-400);
  border-radius: clamp(1.25rem, 0.8rem + 1.9vw, 2.5rem);
}

.modal[open] .modal__panel {
  animation: modal-in 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

.modal--closing .modal__panel {
  opacity: 0;
  transform: translateY(0.75rem) scale(0.98);
  transition:
    opacity 0.25s ease-in,
    transform 0.25s ease-in;
}

@keyframes modal-in {
  from {
    opacity: 0;
    transform: translateY(1rem) scale(0.98);
  }
}

.modal__close {
  --button-close-size: clamp(2.75rem, 2rem + 2.2vw, 4.125rem);

  position: absolute;
  inset-block-start: clamp(0.75rem, 0.4rem + 1.2vw, 1.5rem);
  inset-inline-end: clamp(0.75rem, 0.4rem + 1.2vw, 1.5rem);
}

.modal__intro {
  display: grid;
  align-content: center;
  gap: clamp(0.75rem, 0.4rem + 1.5vw, 1.5rem);
}

.modal__title {
  padding-inline-end: 3.5rem;
  font-size: 1.75rem;
}

.modal__text {
  max-width: 28rem;
  font-size: clamp(0.875rem, 0.7rem + 0.75vw, 1.25rem);
}

@media (min-width: 52.125em) {
  .modal__panel {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: center;
    column-gap: clamp(2rem, -1rem + 6.5vw, 5rem);
  }

  .modal__title {
    padding-inline-end: 0;
    font-size: var(--fs-display);
  }
}


/* ==========================================================================
   Блок: callback-form (форма заявки; в окне и в блоке на странице)
   ========================================================================== */
.callback-form {
  --field-height: clamp(2.75rem, 2.2rem + 2.2vw, 4rem);

  display: grid;
  gap: 0.75rem;
}

/* Поле-ловушка для ботов: за пределами экрана, а не display:none */
.callback-form__trap {
  position: absolute;
  inset-inline-start: -10000px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.callback-form__item {
  display: grid;
  gap: 0.375rem;
}

.callback-form__field {
  display: block;
}

.callback-form__input {
  display: block;
  width: 100%;
  min-height: var(--field-height);
  padding-inline: clamp(1rem, 0.7rem + 1vw, 1.5rem);
  border: 1px solid var(--field-border, rgb(180 148 100 / 0.35));
  font-size: var(--fs-body);
  color: var(--color-text);
  background-color: var(--field-bg, var(--color-neutral-300));
  border-radius: var(--radius-field);
  transition: border-color var(--transition-fast);
}

.callback-form__input::placeholder {
  color: rgb(27 24 16 / 0.7);
  opacity: 1;
}

.callback-form__input[aria-invalid="true"] {
  border-color: var(--color-error);
}

.callback-form__error {
  padding-inline: 0.25rem;
  font-size: var(--fs-small);
  color: var(--color-error);
}

.callback-form__consent {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.75rem;
  align-items: start;
  font-size: 0.8125rem;
  line-height: 1.5;
  cursor: pointer;
}

.callback-form__checkbox {
  -webkit-appearance: none;
  appearance: none;
  width: 1.5rem;
  height: 1.5rem;
  margin: 0;
  border: 1px solid var(--color-accent);
  background-color: var(--color-surface);
  background-repeat: no-repeat;
  background-position: center;
  border-radius: 0.375rem;
  cursor: pointer;
  transition: background-color var(--transition-fast);
}

.callback-form__checkbox:checked {
  background-color: var(--color-accent);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12.5 4 4 8-9'/%3E%3C/svg%3E");
}

.callback-form__checkbox[aria-invalid="true"] {
  border-color: var(--color-error);
}

.callback-form__link {
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.callback-form__submit {
  width: 100%;
  margin-block-start: 0.5rem;
}

.callback-form__status {
  padding: 0.75rem 1rem;
  font-size: var(--fs-small);
  line-height: 1.5;
  border-radius: var(--radius-field);
}

.callback-form__status--success {
  color: var(--color-text-inverse);
  background-color: var(--color-green-800);
}

.callback-form__status--error {
  color: var(--color-error);
  background-color: var(--color-neutral-300);
  border: 1px solid var(--color-error);
}


/* ==========================================================================
   Блок: tag (метка раздела: контур, точка и подпись)
   ========================================================================== */
.tag {
  display: inline-flex;
  align-items: center;
  gap: 0.625em;
  min-height: 2.5em;
  padding-inline: 1.0625em;
  border: 1px solid var(--color-text);
  font-size: clamp(0.875rem, 0.82rem + 0.2vw, 1rem);
  line-height: 1.2;
  border-radius: var(--radius-pill);
}

.tag__dot {
  flex-shrink: 0;
  width: 0.625em;
  height: 0.625em;
  background: radial-gradient(circle, var(--color-text) 38%, var(--color-neutral-400) 42%);
  border-radius: 50%;
}


/* ==========================================================================
   Блок: slider-arrow (стрелка-«таблетка» для листания; prev — контур, next — золото)
   ========================================================================== */
.slider-arrow {
  display: grid;
  place-items: center;
  width: 4.5rem;
  height: 1.8125rem;
  padding: 0;
  color: var(--color-text);
  background-color: transparent;
  border: 1px solid var(--color-accent);
  border-radius: var(--radius-pill);
  cursor: pointer;
  transition:
    color var(--transition-fast),
    background-color var(--transition-fast),
    border-color var(--transition-fast),
    opacity var(--transition-fast);
}

.slider-arrow__icon {
  width: 2.875rem;
  height: 0.5rem;
}

.slider-arrow--prev .slider-arrow__icon {
  transform: scaleX(-1);
}

.slider-arrow:disabled {
  opacity: 0.4;
  cursor: default;
}

/* «Вперёд» залита золотом на всех экранах, кроме мобильного (там обе — контур) */
@media (min-width: 52.125em) {
  .slider-arrow--next {
    background-color: var(--color-accent);
  }
}

/* «Вперёд» залита золотом на всех экранах */
.slider-arrow--solid {
  background-color: var(--color-accent);
}

@media (hover: hover) {
  .slider-arrow:hover:not(:disabled) {
    background-color: var(--color-accent);
  }

  .slider-arrow--next:hover:not(:disabled) {
    color: var(--color-text-inverse);
    background-color: var(--color-text);
    border-color: var(--color-text);
  }
}


/* ==========================================================================
   Блок: about-slider (горизонтальная лента фото; шаблон news.list «about_gallery»)
   Листает нативный scroll с прилипанием, стрелки двигают ленту плавно (JS).
   ========================================================================== */
.about-slider {
  --about-gap: clamp(0.5rem, 0.3rem + 0.55vw, 0.8125rem);
  --about-slide-width: 41vw; /* mobile: две карточки и «выглядывающая» третья */
}

.about-slider__viewport {
  position: relative;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}

.about-slider__viewport::-webkit-scrollbar {
  display: none;
}

/* Пока JS плавно двигает ленту, прилипание отключено */
.about-slider__viewport--animating {
  scroll-snap-type: none;
}

.about-slider__track {
  display: flex;
  gap: var(--about-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

.about-slider__slide {
  flex: 0 0 var(--about-slide-width);
  scroll-snap-align: start;
}

.about-slider__image {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 0.73;
  object-fit: cover;
  border-radius: clamp(0.9375rem, 0.45rem + 1.25vw, 2.25rem);
}

@media (min-width: 52.125em) {
  .about-slider {
    --about-slide-width: calc((100% - var(--about-gap) * 2) / 3);
  }
}

@media (min-width: 100em) {
  .about-slider__image {
    aspect-ratio: 0.86;
  }
}


/* ==========================================================================
   Блок: about (Об отеле)
   Mobile: метка, текст, [цифра | стрелки], лента, кнопка.
   От 834: слева метка / цифра / кнопка, справа текст / стрелки / лента.
   ========================================================================== */
.about__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "tag tag"
    "text text"
    "stats arrows"
    "slider slider"
    "link link";
  align-items: start;
}

.about__tag {
  grid-area: tag;
  justify-self: start;
  margin-block-end: 1.5rem;
}

.about__text {
  grid-area: text;
  margin-block-end: 1.5rem;
  font-size: var(--fs-lead);
  font-weight: 500;
  line-height: var(--lh-lead);
  letter-spacing: var(--tracking-tight);
}

.about__stats {
  grid-area: stats;
}

.about__number {
  font-size: clamp(3.0625rem, 2rem + 4.3vw, 6.5rem);
  font-weight: 400;
  line-height: 1;
  letter-spacing: var(--tracking-tight);
}

.about__caption {
  max-width: 12em;
  margin-block-start: 0.5rem;
  font-size: var(--fs-body);
  line-height: 1.3;
}

.about__arrows {
  grid-area: arrows;
  align-self: end;
  display: flex;
  gap: 0.625rem;
}

.about__slider {
  grid-area: slider;
  min-width: 0;
  margin-block-start: 1rem;
  margin-inline-end: calc(var(--container-gutter) * -1); /* mobile: лента уходит за край экрана */
}

.about__link {
  grid-area: link;
  justify-self: stretch;
  margin-block-start: 0.875rem;
}

@media (min-width: 52.125em) {
  .about__inner {
    grid-template-columns: minmax(0, 0.49fr) minmax(0, 1fr);
    grid-template-areas:
      "tag text"
      "stats arrows"
      "stats slider"
      "link slider";
    grid-template-rows: auto auto auto 1fr;
    column-gap: 0.75rem;
  }

  .about__tag {
    margin-block-end: 0;
  }

  .about__text {
    margin-block-end: clamp(1rem, 0.7rem + 0.7vw, 1.5rem);
  }

  .about__arrows {
    align-self: start;
    justify-self: start;
    margin-block-end: clamp(1rem, 0.3rem + 1.3vw, 2rem);
  }

  .about__slider {
    margin-block-start: 0;
    margin-inline-end: 0;
  }

  .about__link {
    align-self: end;
    justify-self: start;
    margin-block-start: 2rem;
  }
}

@media (min-width: 90em) {
  .about__inner {
    grid-template-columns: minmax(0, 0.47fr) minmax(0, 1fr);
    column-gap: 0;
  }

  .about__arrows {
    justify-self: end;
  }
}


/* ==========================================================================
   Появление блоков при прокрутке (JS добавляет .reveal, затем .reveal--visible)
   ========================================================================== */
@media (prefers-reduced-motion: no-preference) {
  .reveal {
    opacity: 0;
    transform: translateY(1.5rem);
    transition:
      opacity var(--transition-smooth),
      transform var(--transition-smooth);
  }

  .reveal--visible {
    opacity: 1;
    transform: none;
  }

  .about__text.reveal { transition-delay: 0.1s; }
  .about__stats.reveal,
  .about__arrows.reveal { transition-delay: 0.2s; }
  .about__slider.reveal { transition-delay: 0.3s; }
  .about__link.reveal { transition-delay: 0.4s; }
}


/* ==========================================================================
   Блок: room-card (карточка номера; слайдер главной и страница «Номера»)
   ========================================================================== */
.room-card {
  --card-radius: var(--radius-panel);

  display: flex;
  flex: 1;
  flex-direction: column;
  min-width: 0;
  background-color: var(--color-surface);
  border-radius: var(--card-radius);
}

.room-card__media {
  position: relative;
  overflow: hidden;
  border-radius: var(--card-radius);
}

/* Благородное свечение: золотая подсветка карточки, фото медленно приближается */
.room-card {
  transition: box-shadow var(--transition-smooth);
}

.room-card__image {
  transition: transform 1.6s cubic-bezier(0.22, 0.61, 0.36, 1);
}

.room-card__media::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(180deg, rgb(180 148 100 / 0) 55%, rgb(180 148 100 / 0.32) 100%);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--transition-smooth);
}

@media (hover: hover) {
  .room-card:hover {
    box-shadow:
      0 0 0 1px rgb(180 148 100 / 0.4),
      0 0.5rem 2.25rem rgb(180 148 100 / 0.28);
  }

  .room-card:hover .room-card__image {
    transform: scale(1.045);
  }

  .room-card:hover .room-card__media::after {
    opacity: 1;
  }
}

.room-card__image {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1.5;
  object-fit: cover;
  border-radius: var(--card-radius);
}

/* Плашка на фото (свойство BADGE): стекло с размытием */
.room-card__badge {
  position: absolute;
  z-index: 1;
  inset-block-start: clamp(0.75rem, 0.6rem + 0.5vw, 1rem);
  inset-inline-start: clamp(0.75rem, 0.6rem + 0.5vw, 1rem);
  max-width: calc(100% - 1.5rem);
  margin: 0;
  padding: 0.5em 1em;
  font-size: clamp(0.8125rem, 0.78rem + 0.15vw, 0.9375rem);
  line-height: 1.2;
  color: var(--color-text);
  background-color: var(--color-white-55);
  border: 1px solid var(--color-white-35);
  border-radius: var(--radius-pill);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
}

.room-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  padding: clamp(1.125rem, 0.9rem + 0.9vw, 1.5rem);
  padding-block-start: clamp(1.125rem, 0.9rem + 0.7vw, 1.5rem);
}

.room-card__title {
  margin: 0;
  font-size: var(--fs-h3);
  font-weight: 500;
}

.room-card__text {
  flex: 1;
  min-height: 4.5em; /* три строки: кнопки у всех карточек на одной линии */
  margin: 0.75rem 0 1.5rem;
  font-size: var(--fs-small);
  line-height: 1.5;
}

.room-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
}

/* Mobile: две кнопки делят ширину карточки */
.room-card__button {
  flex: 1 1 auto;
}

/* Раскладка макета 834 действует от 394 до 834, макета 1440 — до 1440, макета 1920 — до 1920 */
@media (width > 24.5625em) {
  .room-card__button {
    flex: 0 0 auto;
  }
}


/* ==========================================================================
   Блок: rooms-slider (лента карточек номеров; шаблон news.list «rooms»)
   Видно 1 / 2 / 3 / 4 карточки: до 393 / до 834 / до 1440 / до 1920 (и шире).
   ========================================================================== */
.rooms-slider {
  --rooms-gap: clamp(0.5rem, 0.4rem + 0.2vw, 0.625rem);
  --rooms-count: 1;
}

.rooms-slider {
  position: relative;
  margin-block: -1.75rem;
  padding-block: 1.75rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}

.rooms-slider::-webkit-scrollbar {
  display: none;
}

/* Пока JS плавно двигает ленту, прилипание отключено */
.rooms-slider__viewport--animating {
  scroll-snap-type: none;
}

.rooms-slider__track {
  display: flex;
  gap: var(--rooms-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

.rooms-slider__slide {
  display: flex;
  flex: 0 0 calc((100% - var(--rooms-gap) * (var(--rooms-count) - 1)) / var(--rooms-count));
  scroll-snap-align: start;
}

@media (width > 24.5625em) {
  .rooms-slider {
    --rooms-count: 2;
  }

  .room-card__image {
    aspect-ratio: 1.38;
  }
}

@media (width > 52.125em) {
  .rooms-slider {
    --rooms-count: 3;
  }
}

@media (width > 90em) {
  .rooms-slider {
    --rooms-count: 4;
  }
}


/* ==========================================================================
   Блок: rooms (секция «Стильные номера и альпийские коттеджи»)
   Заголовок в контейнере, лента шире — почти на весь экран (как панели).
   Стрелки: справа от заголовка шире 393, на мобильном под лентой.
   ========================================================================== */
.rooms__head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-m);
  margin-block-end: clamp(1.25rem, 0.9rem + 1.4vw, 2.5rem);
}

.rooms__title {
  font-size: var(--fs-title);
  line-height: 1.05;
}

.rooms__slider {
  margin-inline: var(--panel-inset);
}

.rooms__arrows {
  display: flex;
  gap: 0.625rem;
}

.rooms__arrows--head {
  display: none;
}

/* Листать нечего (JS ставит hidden): класс с display не должен это перебивать */
.about__arrows[hidden],
.rooms__arrows[hidden] {
  display: none;
}

.rooms__foot {
  margin-block-start: 1.25rem;
}

@media (width > 24.5625em) {
  .rooms__arrows--head {
    display: flex;
    flex-shrink: 0;
    margin-block-end: 0.5rem;
  }

  .rooms__foot {
    display: none;
  }
}


/* ==========================================================================
   Блок: section-title (крупный заголовок секции, 33 → 72px)
   ========================================================================== */
.section-title {
  font-size: var(--fs-title);
  line-height: 1.1;
}


/* ==========================================================================
   Блок: intro (вступление страницы «Номера»: метка, цифра и абзац)
   ========================================================================== */
.intro__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.5rem;
  align-items: start;
}

.intro__tag {
  justify-self: start;
}

.intro__text {
  font-size: var(--fs-lead);
  font-weight: 500;
  line-height: var(--lh-lead);
  letter-spacing: var(--tracking-tight);
}

.intro__number {
  font-size: clamp(3.0625rem, 2rem + 4.3vw, 6.5rem);
  line-height: 1;
  letter-spacing: var(--tracking-tight);
}

.intro__caption {
  max-width: 12em;
  margin-block-start: 0.5rem;
  font-size: var(--fs-body);
  line-height: 1.3;
}

@media (width > 24.5625em) {
  .intro__inner {
    grid-template-columns: minmax(0, 0.49fr) minmax(0, 1fr);
    grid-template-areas:
      "tag text"
      "stats text";
    column-gap: 0.75rem;
  }

  .intro__tag {
    grid-area: tag;
  }

  .intro__text {
    grid-area: text;
  }

  .intro__stats {
    grid-area: stats;
    align-self: end;
  }
}

@media (width > 90em) {
  .intro__inner {
    grid-template-columns: minmax(0, 0.47fr) minmax(0, 1fr);
    column-gap: 0;
  }
}


/* ==========================================================================
   Блок: rooms-list (сетка карточек на странице «Номера»)
   Колонок: 1 до 393, 2 до 834, 3 до 1440, 4 до 1920 и шире.
   ========================================================================== */
.rooms-list__inner {
  --rooms-gap: clamp(0.5rem, 0.4rem + 0.2vw, 0.625rem);
  --room-columns: 1;

  margin-inline: var(--panel-inset);
}

.room-list {
  display: grid;
  grid-template-columns: repeat(var(--room-columns), minmax(0, 1fr));
  gap: var(--rooms-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

.room-list__item {
  display: flex;
}

@media (width > 24.5625em) {
  .rooms-list__inner {
    --room-columns: 2;
  }
}

@media (width > 52.125em) {
  .rooms-list__inner {
    --room-columns: 3;
  }
}

@media (width > 90em) {
  .rooms-list__inner {
    --room-columns: 4;
  }
}


/* ==========================================================================
   Блок: faq (популярные вопросы, спойлеры)
   Две независимые колонки: раскрытие одного ответа сдвигает только свою колонку.
   Колонок: 2 шире 834, 1 до 834.
   ========================================================================== */
.faq__tag {
  margin-block-end: 1.5rem;
}

.faq__title {
  margin-block-end: clamp(1.5rem, 0.9rem + 2.4vw, 3.5rem);
}

.faq__columns {
  display: flex;
  flex-direction: column;
  gap: clamp(0.625rem, 0.3rem + 1vw, 1.25rem);
}

.faq__column {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: clamp(0.625rem, 0.3rem + 1vw, 1.25rem);
  min-width: 0;
}

@media (width > 52.125em) {
  .faq__columns {
    flex-direction: row;
    align-items: flex-start;
    gap: clamp(1rem, 0.5rem + 1.4vw, 1.6875rem);
  }
}

.faq__item {
  background-color: var(--color-surface);
  border-radius: var(--radius-panel);
}

.faq__heading {
  margin: 0;
  font-size: inherit;
}

.faq__trigger {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-s);
  width: 100%;
  min-height: clamp(5.5rem, 4.71rem + 3.2vw, 8.5625rem);
  padding: clamp(1.125rem, 0.9rem + 0.8vw, 1.5625rem) clamp(1.125rem, 0.8rem + 1.2vw, 2rem);
  border: 0;
  font-family: inherit;
  font-size: var(--fs-h3);
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: var(--tracking-tight);
  text-align: start;
  color: inherit;
  background: none;
  cursor: pointer;
}

.faq__question {
  max-width: 17.5em;
}

/* Золотой круг: плюс превращается в минус (вертикальная черта сворачивается) */
.faq__icon {
  position: relative;
  flex-shrink: 0;
  width: clamp(1.75rem, 1.35rem + 1.1vw, 2.625rem);
  height: clamp(1.75rem, 1.35rem + 1.1vw, 2.625rem);
  background-color: var(--color-accent);
  border-radius: 50%;
  transition: background-color var(--transition-fast);
}

.faq__icon::before,
.faq__icon::after {
  content: "";
  position: absolute;
  inset: 50% auto auto 50%;
  width: 40%;
  height: 1.5px;
  background-color: var(--color-text-inverse);
  transform: translate(-50%, -50%);
  transition: transform var(--transition-smooth);
}

.faq__icon::after {
  transform: translate(-50%, -50%) rotate(90deg);
}

.faq__item--open .faq__icon::after {
  transform: translate(-50%, -50%) rotate(0deg);
}

@media (hover: hover) {
  .faq__trigger:hover .faq__icon {
    background-color: var(--color-text);
  }
}

/* Плавное раскрытие: высота 0fr → 1fr */
.faq__answer {
  display: grid;
  grid-template-rows: 0fr;
  visibility: hidden;
  transition:
    grid-template-rows var(--transition-smooth),
    visibility 0s linear var(--transition-smooth-duration, 0.9s);
}

.faq__item--open .faq__answer {
  grid-template-rows: 1fr;
  visibility: visible;
  transition-delay: 0s;
}

.faq__answer-inner {
  min-height: 0;
  overflow: hidden;
}

.faq__answer-text {
  max-width: 62em;
  padding: 0 clamp(1.125rem, 0.8rem + 1.2vw, 2rem) clamp(1.25rem, 0.9rem + 1.1vw, 2rem);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
}


/* ==========================================================================
   Блок: location (удобное расположение: тёмная панель и карта)
   Макеты: 1920/1440 — две колонки (текст слева, карта справа), от 1200px;
   834 — заголовок и текст слева, адрес и телефон справа, кнопки и карта ниже;
   393 — всё в одну колонку.
   ========================================================================== */
.location__panel {
  --map-inset: clamp(0.3125rem, 2.5vw - 0.3rem, 1.25rem); /* 5px (393) → 16px (834) → 20px */

  display: grid;
  grid-template-columns: minmax(0, 1fr);
  margin-inline: var(--panel-inset);
  color: var(--color-text-inverse);
  background-color: var(--color-green-800);
  border-radius: var(--radius-panel);
}

/* --- Текстовая часть: 393 — колонка --- */
.location__body {
  display: flex;
  flex-direction: column;
  padding: 2.5rem 1rem 2.75rem;
}

.location__title {
  font-size: clamp(2.0625rem, 1.12rem + 3.85vw, 3.6rem);
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: -0.03em;
}

.location__text {
  max-width: 19rem;
  margin-block-start: 1.5rem;
  font-size: 0.875rem;
  line-height: 1.52;
}

.location__info {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
  margin-block-start: 1.875rem;
}

.location__contact {
  display: flex;
  gap: 0.9375rem;
  align-items: flex-start;
}

.location__icon {
  flex-shrink: 0;
  width: 1.25rem;
  height: 1.25rem;
  margin-block-start: 0.1875rem;
}

.location__address {
  max-width: 13rem;
  font-size: 0.875rem;
  line-height: 1.52;
}

.location__phone {
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.52;
}

.location__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-block-start: 2.5rem;
}

/* Кнопки: круг со стрелкой (34px, на 393 — 27px) с отступом от правого края */
.location__actions .button {
  --button-height: 2.75rem;

  flex-shrink: 1;
  gap: 0.75rem;
  min-height: var(--button-height);
  padding-inline: 1.375rem 0.5rem;
  font-size: 0.875rem;
  font-weight: 600;
}

.location__actions .button--outline-light {
  --button-border: var(--color-accent);

  padding-inline: 1rem 0.25rem;
}

.location__actions .button__icon {
  width: 1.6875rem;
  height: 1.6875rem;
}

.location__map {
  min-height: calc(16.8rem + 21.3vw);
  margin: 0 var(--map-inset) var(--map-inset);
  overflow: hidden;
  background-color: var(--color-green-700);
  border-radius: var(--radius-panel);
}

.location__map iframe {
  display: block;
  width: 100%;
  height: 100%;
  min-height: inherit;
  border: 0;
}

/* --- Макет 834: заголовок и текст слева, адрес и телефон справа, кнопки на всю ширину --- */
@media (width > 24.5625em) {
  .location__body {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr);
    grid-template-areas:
      "title title"
      "text info"
      "actions actions";
    align-items: start;
    padding: 2.5rem clamp(1rem, 7.26vw - 0.78rem, 3.25rem) 2.5rem;
  }

  .location__title {
    grid-area: title;
  }

  .location__text {
    grid-area: text;
    margin-block-start: 1.25rem;
    font-size: 1rem;
  }

  .location__info {
    grid-area: info;
    margin-block-start: 1.25rem;
    gap: 1.5rem;
  }

  .location__address {
    font-size: 1rem;
  }

  .location__actions {
    grid-area: actions;
    margin-block-start: clamp(2rem, 8vw - 2.5rem, 6rem);
    gap: 1.25rem;
  }

  .location__actions .button {
    --button-height: 3rem;

    gap: 0.9375rem;
    padding-inline: 3.375rem 2.0625rem;
    font-size: 1rem;
  }

  .location__actions .button--outline-light {
    padding-inline: 2.0625rem 0.875rem;
  }

  .location__actions .button__icon {
    width: 2.125rem;
    height: 2.125rem;
  }

  .location__map {
    min-height: calc(16.8rem + 21.3vw);
  }
}

/* --- Макеты 1440 и 1920: две колонки (с 1200px, ниже — раскладка 834) --- */
@media (width > 75em) {
  .location__panel {
    grid-template-columns: minmax(0, 0.81fr) minmax(0, 1fr);
  }

  .location__body {
    display: flex;
    flex-direction: column;
    padding: 2.8125rem 3rem clamp(2.5rem, 7.9vw - 4.4rem, 5.125rem) clamp(2.25rem, 6vw - 2.25rem, 5rem);
  }

  .location__title {
    max-width: 8.5em;
    font-size: var(--fs-title);
  }

  .location__text {
    max-width: 31rem;
    margin-block-start: clamp(1.25rem, 4vw - 1.7rem, 3.125rem);
    font-size: 1rem;
  }

  .location__info {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 1.25rem 2.4375rem;
    margin-block-start: auto;
  }

  .location__actions {
    margin-block-start: 3.25rem;
  }

  .location__actions .button {
    --button-height: 3rem;
  }

  .location__map {
    min-height: calc(26.25rem + 12.5vw);
    margin: var(--map-inset);
    margin-inline-start: 0;
  }
}

/* --- Только 1920 и шире: крупнее текст и кнопки --- */
@media (width > 90em) {
  .location__text,
  .location__address {
    font-size: 1.125rem;
  }

  .location__actions .button {
    --button-height: 4.0625rem;
  }
}


/* ==========================================================================
   Блок: social (иконки соцсетей)
   ========================================================================== */
.social {
  display: flex;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.social__link {
  display: block;
  color: var(--color-text);
  transition: opacity var(--transition-fast);
}

.social__icon {
  display: block;
  object-fit: contain;
  width: 1.5rem;
  height: 1.5rem;
}

@media (hover: hover) {
  .social__link:hover {
    opacity: 0.6;
  }
}


/* ==========================================================================
   Блок: footer-menu (списки ссылок подвала)
   ========================================================================== */
.footer-menu {
  display: grid;
  gap: 0.6875rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.footer-menu__link {
  font-size: clamp(0.75rem, 0.0625rem + 0.833vw, 1.0625rem);
  line-height: 1.25;
  transition: color var(--transition-fast);
}

@media (hover: hover) {
  .footer-menu__link:hover {
    color: var(--color-accent-hover);
  }
}


/* ==========================================================================
   Блок: ask («Остались вопросы?» с формой в подвале)
   Шире 834 заголовок слева, форма справа; до 834 друг под другом; до 393 поля столбиком.
   ========================================================================== */
.ask__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.5rem;
  padding-block-start: clamp(3.5rem, 2.7rem + 4.2vw, 6.5rem);
}

.ask__text {
  max-width: none;
  margin-block-start: 0;
  font-size: var(--fs-body);
  line-height: 1.35;
}

.ask__form {
  --field-bg: var(--color-white-35);
  --field-border: var(--color-white-55);
}

/* Заголовок до 834 — в одну строку (макеты 834 и 393) */
.ask__title {
  font-size: var(--fs-title);
  white-space: nowrap;
}

@media (width > 52.125em) {
  .ask__title {
    font-size: var(--fs-title);
  }

  .ask__form {
    margin-block-start: 0.5rem;
  }
}

/* Две колонки (заголовок слева, форма справа) только от 1200px: уже форме не хватает места */
@media (width > 75em) {
  .ask__title {
    white-space: normal;
  }

  .ask__text {
    max-width: 21em;
  }

  .ask__inner {
    padding-block-end: 6rem;
    grid-template-columns: minmax(0, 0.476fr) minmax(0, 1fr);
    grid-template-areas:
      "title form"
      "text form";
    grid-template-rows: auto 1fr;
    column-gap: 2rem;
  }

  .ask__title {
    grid-area: title;
  }

  .ask__text {
    grid-area: text;
    margin-block-start: 1.25rem;
  }

  .ask__form {
    grid-area: form;
    align-self: start;
    margin-block-start: clamp(1rem, 0.3rem + 2.7vw, 3.25rem);
  }
}


/* Форма «в строку»: имя, почта, телефон и кнопка; согласие строкой ниже */
.callback-form--inline {
  --field-height: clamp(2.75rem, 2.6rem + 0.9vw, 3.4375rem);

  gap: 0.5rem;
}

.callback-form--inline .callback-form__consent {
  font-size: clamp(0.6875rem, 0.62rem + 0.17vw, 0.75rem);
}

.callback-form--inline .callback-form__submit {
  width: 100%;
  min-height: var(--button-height);
  margin-block-start: 0;
  justify-content: space-between;
  padding-inline: 1.75rem 0.625rem; /* круг со стрелкой прижат к правому краю */
}

@media (width > 40em) {
  .callback-form--inline {
    grid-template-columns: minmax(0, 0.87fr) minmax(0, 1fr) minmax(0, 1fr) auto;
    column-gap: 0.375rem;
    row-gap: 1.125rem;
    align-items: start;
  }

  .callback-form--inline .callback-form__item--consent {
    grid-column: 1 / -1;
    grid-row: 2;
  }

  .callback-form--inline .callback-form__submit {
    grid-column: 4;
    grid-row: 1;
    align-self: center;
    width: auto;
    min-width: max(11.5rem, 12.8vw);
    margin-inline-start: 0.375rem;
  }

  .callback-form--inline .callback-form__status {
    grid-column: 1 / -1;
  }
}


/* ==========================================================================
   Блок: site-footer (подвал: форма «Остались вопросы?», меню, контакты)
   Фон — силуэт гор (images/footer-mountains.svg, 1920×447 с бежевой заливкой под вершинами)
   поверх бежевой плашки. Колонки в ряд шире 393, столбиком до 393.
   ========================================================================== */
.site-footer {
  /* Горы тянутся строго пропорционально ширине экрана (1920 → 447px), края не режутся */
  container-type: inline-size;
  --mountains-height: calc(100cqw * 0.2328);

  position: relative;
  isolation: isolate;
}

.site-footer::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  z-index: -1;
  height: var(--mountains-height);
  background: url("/local/templates/arkhyz_royal/images/footer-mountains.svg") center top / 100% 100% no-repeat;
}

/* Бежевая заливка ниже гор, с нахлёстом 3px, чтобы не было шва */
.site-footer::after {
  content: "";
  position: absolute;
  inset: calc(var(--mountains-height) - 3px) 0 0;
  z-index: -1;
  background-color: var(--color-neutral-400);
}

.ask {
  min-height: var(--mountains-height);
}

.site-footer__inner {
  /* до 40em (макет 393): логотип и соцсети в строку, «Контакты», «Услуги» и «Номера» в два столбца */
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-template-areas:
    "logo social"
    "contacts contacts"
    "services rooms"
    "copyright copyright"
    "legal legal";
  gap: 2.5rem 1rem;
  align-items: start;
  padding-block: 4.5rem 1.5rem;
}

.site-footer__top {
  grid-area: legal;
  justify-self: end;
  align-self: end;
}

/* Обёртка бренда нужна только на широких экранах, ниже её дети раскладываются по сетке подвала */
.site-footer__brand {
  display: contents;
}

.site-footer__logo {
  grid-area: logo;
  justify-self: start;
}

.site-footer__brand > .social {
  grid-area: social;
  justify-self: end;
}

.site-footer__copyright {
  grid-area: copyright;
  font-size: 0.75rem;
  line-height: 1.5;
}

.site-footer__logo-image {
  display: block;
  width: clamp(8.75rem, 6rem + 6.5vw, 12.1875rem);
  height: auto;
}

.site-footer__column--services {
  grid-area: services;
}

.site-footer__column--rooms {
  grid-area: rooms;
}

.site-footer__column--contacts {
  grid-area: contacts;
}

.site-footer__heading {
  margin-block-end: clamp(1rem, 0.7rem + 1.2vw, 2rem);
  font-size: clamp(1rem, 0.9rem + 0.4vw, 1.25rem);
  font-weight: 600;
  line-height: 1.25;
}

.site-footer__heading--large {
  margin-block-end: 0.75rem;
  font-size: clamp(1.5rem, 1.1rem + 1.4vw, 2rem);
  font-weight: 500;
  letter-spacing: var(--tracking-tight);
}

.site-footer__copyright a {
  text-decoration: underline;
  text-underline-offset: 0.2em;
  transition: color var(--transition-fast);
}

@media (hover: hover) {
  .site-footer__copyright a:hover {
    color: var(--color-accent-hover);
  }
}

.site-footer__line {
  margin: 0 0 0.625rem;
  font-size: clamp(0.8125rem, 0.1rem + 0.9vw, 1.125rem);
  line-height: 1.4;
}

.site-footer__phone {
  transition: color var(--transition-fast);
}

@media (hover: hover) {
  .site-footer__phone:hover {
    color: var(--color-accent-hover);
  }
}

.site-footer__legal {
  grid-area: legal;
}

.site-footer__legal .footer-menu {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

@media (width > 40em) {
  .site-footer__legal .footer-menu {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.75rem clamp(1.5rem, 0.2rem + 4vw, 6.8rem);
  }
}

.site-footer__legal .footer-menu__link {
  text-decoration: underline;
  text-underline-offset: 0.2em;
  font-size: clamp(0.75rem, 0.0625rem + 0.833vw, 1.0625rem);
  color: var(--color-accent);
}

/* Макет 834: три колонки, ниже — копирайт с кнопкой «Наверх» и ссылки документов */
@media (width > 40em) {
  .site-footer__inner {
    grid-template-columns: minmax(0, 0.8fr) minmax(0, 1fr) minmax(0, 1.4fr);
    grid-template-areas:
      "logo logo social"
      "services rooms contacts"
      "copyright copyright top"
      "legal legal legal";
    gap: 3.5rem 1.5rem;
    padding-block-start: 4.5rem;
  }

  .site-footer__top {
    grid-area: top;
  }
}

/* Макет 1440 и 1920 (от 1200px; ниже — раскладка 834): бренд, «Услуги», «Номера», «Контакты» в ряд; ниже ссылки документов и «Наверх» */
@media (width > 75em) {
  .site-footer__inner {
    --contacts-width: clamp(19rem, 25.8vw - 3.4rem, 27.5rem);

    grid-template-columns: minmax(0, 1fr) auto auto var(--contacts-width);
    grid-template-areas:
      "brand services rooms contacts"
      "legal legal legal top";
    gap: clamp(2.5rem, 1rem + 4vw, 5.8125rem) clamp(1.5rem, 0.2rem + 4vw, 4.5rem);
    padding-block-start: clamp(1.5rem, 0.7rem + 1.6vw, 3rem);
  }

  .site-footer__brand {
    grid-area: brand;
    display: grid;
    gap: 2rem;
    justify-items: start;
  }

  .site-footer__logo,
  .site-footer__brand > .social,
  .site-footer__copyright {
    grid-area: auto;
    justify-self: start;
  }

  .site-footer__copyright {
    max-width: clamp(20rem, 51vw - 25.75rem, 36rem);
    font-size: clamp(0.6875rem, 0.64rem + 0.17vw, 0.8125rem);
  }

  .site-footer__legal {
    align-self: center;
  }
}

/* «Наверх»: подпись слева, круг со стрелкой прижат к правому краю (отступ 5px) */
.site-footer__top {
  justify-content: space-between;
  gap: 1.5rem;
  padding-inline: 1.5rem 0.3125rem;
}

/* «Наверх»: стрелка смотрит вверх */
.site-footer__top .icon {
  transform: rotate(-45deg);
}


/* ==========================================================================
   Блок: button--block (кнопка на всю ширину) и slider-arrow--light (светлая «назад»)
   ========================================================================== */
.button--block {
  display: flex;
  width: 100%;
}

.slider-arrow--light {
  background-color: var(--color-surface);
  border-color: var(--color-surface);
}


/* Общий зазор секций у <main> на странице номера отключаем: отступы здесь заданы макетом */
.page__main:has(> .room) {
  gap: 0;
}

.page__main:has(> .room) > :is(.faq, .location) {
  margin-block-start: var(--section-gap);
}

/* ==========================================================================
   Страница номера: общий отступ от краёв (по макетам: 15 на 393, 21 на 834, 25 на 1440)
   На 1920 всё встаёт в контейнер 1700.
   ========================================================================== */
:root {
  --room-inset: clamp(0.9375rem, 0.6rem + 1.36vw, 1.5625rem);
}

.hero--room .hero__media {
  min-height: calc(31.375rem + (100vw - 24.5625rem) * 0.331);
}

.hero--room .hero__body {
  padding-block-end: clamp(2.875rem, 1.6rem + 3.8vw, 6rem);
}

@media (width > 52.125em) {
  .hero--room .hero__media {
    min-height: calc(40.5rem + (100vw - 52.125rem) * 0.168);
  }
}

@media (width > 90em) {
  .hero--room .hero__media {
    min-height: min(calc(46.875rem + (100vw - 90rem) * 0.3125), 56.25rem);
  }
}


/* ==========================================================================
   Блок: breadcrumbs (хлебные крошки)
   Отступы по макетам: сверху 15 / 40 / 32 / 57, снизу до слайдера 29 / 24 / 70 / 92 (393 / 834 / 1440 / 1920).
   ========================================================================== */
.breadcrumbs {
  padding-block: 0.9375rem 1.8125rem;
  font-size: 0.75rem;
  line-height: 1.3;
}

.breadcrumbs__inner {
  max-width: calc(var(--container-width) + var(--container-gutter) * 2);
  margin-inline: auto;
  padding-inline: calc(var(--room-inset) + 0.5625rem);
}

.breadcrumbs__list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25em;
  margin: 0;
  padding: 0;
  list-style: none;
}

.breadcrumbs__item + .breadcrumbs__item::before {
  content: "/";
  margin-inline-end: 0.25em;
}

.breadcrumbs__current {
  font-weight: 600;
}

@media (hover: hover) {
  .breadcrumbs__link {
    transition: color var(--transition-fast);
  }

  .breadcrumbs__link:hover {
    color: var(--color-accent-hover);
  }
}

@media (width > 40em) {
  .breadcrumbs {
    padding-block: 2.5rem 1.5rem;
    font-size: 0.875rem;
    line-height: 1.5;
  }

  .breadcrumbs__inner {
    padding-inline: calc(var(--room-inset) + 0.0625rem);
  }
}

@media (width > 75em) {
  .breadcrumbs {
    padding-block: 2rem 4.375rem;
  }

  .breadcrumbs__inner {
    padding-inline: var(--container-gutter);
  }
}

@media (width > 90em) {
  .breadcrumbs {
    padding-block: 3.5625rem 5.75rem;
    font-size: 1.125rem;
    line-height: 1.55;
  }

  .breadcrumbs__inner {
    padding-inline: calc(var(--container-gutter) + 0.8125rem);
  }
}


/* ==========================================================================
   Блок: room (описание номера: заголовок, описание, характеристики, слайдер с фото)
   Макеты:
     393  (до 40em)      — слайдер сверху, под ним заголовок, описание и характеристики друг под другом;
     834  (до 75em)      — слайдер сверху, под ним слева заголовок, справа характеристики;
     1440 (до 90em)      — слева текст, справа слайдер на 845×620, края: слева контейнер, справа 25;
     1920 (шире 90em)    — слева текст, справа слайдер 1068×800 в контейнере 1700.
   Кнопка «Забронировать» и карточки параметров лежат в тех же краях.
   ========================================================================== */
.room {
  --room-radius: 0.9375rem;
  --room-gallery-ratio: 1.07;
  --room-lead-size: clamp(1.125rem, 0.68rem + 1.81vw, 1.625rem);
  --room-text-size: clamp(0.75rem, 0.64rem + 0.45vw, 0.875rem);
  --room-spec-name-size: clamp(0.75rem, 0.416rem + 1.36vw, 1.125rem);
  --room-spec-value-size: clamp(0.75rem, 0.64rem + 0.45vw, 0.875rem);
  --room-spec-name-width: 10.1875rem;      /* 163 на 393 */
  --room-spec-pad: 0.53125rem;             /* от текста до линии */
  --room-spec-gap: 0.675rem;               /* от линии до следующей строки */
  --room-dot: 0;
  --room-dot-active: 0;
}

.room__inner,
.room__book-row {
  max-width: calc(var(--container-width) + var(--container-gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--room-inset);
}

.room__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.375rem;
}

.room__book-row {
  margin-block-start: 1.3125rem;
}

/* --- Слайдер --- */
.room__gallery {
  position: relative;
  order: -1;
  min-width: 0;
  overflow: hidden;
  border-radius: var(--room-radius);
  background-color: var(--color-neutral-400);
}

.room-gallery {
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}

.room-gallery::-webkit-scrollbar {
  display: none;
}

.room-gallery--animating {
  scroll-snap-type: none;
}

.room-gallery__track {
  display: flex;
  margin: 0;
  padding: 0;
  list-style: none;
}

.room-gallery__slide {
  flex: 0 0 100%;
  scroll-snap-align: start;
}

.room-gallery__image {
  display: block;
  width: 100%;
  aspect-ratio: var(--room-gallery-ratio);
  object-fit: cover;
}

/* Плашки поверх фото */
.room__tags {
  position: absolute;
  inset: 1.125rem auto auto 0.5625rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4375rem;
  max-width: calc(100% - 1.125rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

.room__tag {
  display: flex;
  align-items: center;
  min-height: 1.75rem;
  padding-inline: 0.875rem;
  font-size: 0.625rem;
  font-weight: 600;
  line-height: 1.2;
  white-space: nowrap;
  background-color: var(--color-white, #fff);
  border-radius: var(--radius-pill);
}

/* Точки: на 393 в макете их нет */
.room__dots {
  display: none;
  position: absolute;
  inset: auto 0 1.125rem;
  justify-content: center;
  pointer-events: none;
}

.room__dots[hidden] {
  display: none;
}

.room__dots .slider-dots__button {
  min-width: 0.875rem;
  min-height: 1.125rem;
  pointer-events: auto;
}

.room__dots .slider-dots__button::before {
  width: var(--room-dot);
  height: var(--room-dot);
  background-color: #d9d9d9;
}

.room__dots .slider-dots__button--active::before {
  width: var(--room-dot-active);
  background-color: var(--color-accent);
}

/* Стрелки: «таблетки» 75×30 */
.room__arrows {
  position: absolute;
  inset: auto 0.625rem 0.8125rem auto;
  display: flex;
  gap: 0.625rem;
}

.room__arrows[hidden] {
  display: none;
}

.room__arrows .slider-arrow {
  width: 4.6875rem;
  height: 1.875rem;
}

.room__arrows .slider-arrow__icon {
  width: 2.875rem;
  height: 0.5rem;
}

/* --- Текст и характеристики --- */
.room__summary {
  display: grid;
  gap: 1rem;
  min-width: 0;
}

.room__intro {
  padding-inline: 0.5625rem;
}

.room__lead {
  font-size: var(--room-lead-size);
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: -0.03em;
}

.room__text {
  max-width: 28.5em;
  margin-block: 0.75rem 0;
  font-size: var(--room-text-size);
  line-height: 1.52;
}

.room__specs {
  margin: 0;
  padding-inline: 0.5625rem;
}

.room__spec {
  display: grid;
  grid-template-columns: var(--room-spec-name-width) minmax(0, 1fr);
  align-items: center;
  padding-block-end: var(--room-spec-pad);
  margin-block-end: var(--room-spec-gap);
  border-block-end: 1px solid var(--color-accent);
}

.room__spec:last-child {
  margin-block-end: 0;
}

.room__spec-name {
  font-size: var(--room-spec-name-size);
  font-weight: 600;
  line-height: 1.32;
  letter-spacing: -0.03em;
}

.room__spec-value {
  margin: 0;
  font-size: var(--room-spec-value-size);
  line-height: 1.52;
}

/* --- Кнопка «Забронировать» на всю ширину --- */
.room__book {
  --button-icon-bg: var(--color-accent);
  --button-icon-color: var(--color-text-inverse);

  justify-content: center;
  gap: 0.6875rem;
  min-height: 2.8125rem;
  padding-inline: 2.3125rem 1.4375rem;
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0;
}

.room__book .button__icon {
  width: 1.375rem;
  height: 1.375rem;
}

/* --- 393…640: плавный переход к планшетной раскладке по размеру слайдера --- */
@media (width > 30em) {
  .room {
    --room-gallery-ratio: 1.586;
  }
}

/* --- Макет 834: слайдер сверху, заголовок слева, характеристики справа --- */
@media (width > 40em) {
  .room {
    --room-radius: 1.46875rem;
    --room-spec-name-width: 10.75rem;      /* 172 */
    --room-spec-pad: 0.75rem;
    --room-spec-gap: 0.984375rem;
    --room-dot: 0.4125rem;
    --room-dot-active: 2rem;
  }

  .room__inner {
    gap: 1.6875rem;
  }

  .room__summary {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 0;
    align-items: start;
  }

  .room__intro {
    padding-inline: 0.625rem 1.375rem;
  }

  .room__text {
    max-width: 19.7em;
    margin-block-start: 1.25rem;
  }

  .room__specs {
    padding-inline: 0.625rem 1.3rem;
  }

  .room__tags {
    inset: 1.5625rem auto auto 2rem;
    gap: 0.6875rem;
    max-width: calc(100% - 4rem);
  }

  .room__tag {
    min-height: 2.5rem;
    padding-inline: 1.46875rem;
    font-size: 0.875rem;
  }

  .room__dots {
    display: flex;
    inset-block-end: 1.125rem;
  }

  .room__dots .slider-dots__button {
    min-width: 0.9375rem;
  }

  .room__arrows {
    inset: auto 1.125rem 1.125rem auto;
  }

  .room__book-row {
    margin-block-start: 2.625rem;
  }

  .room__book {
    min-height: 3.75rem;
    gap: 0.9375rem;
    padding-inline: 3.375rem 2.0625rem;
    font-size: 1.25rem;
  }

  .room__book .button__icon {
    width: 2rem;
    height: 2rem;
  }
}

/* --- Макет 1440: слева текст, справа слайдер (от 1200px) --- */
@media (width > 75em) {
  .room {
    --room-radius: 1.5625rem;
    --room-gallery-ratio: 1.363;
    /* от 1200 до 1440 плавно: заголовок 26 → 32, текст 14 → 16, названия 17 → 20, колонка названий 150 → 204 */
    --room-lead-size: clamp(1.625rem, 2.5vw - 0.25rem, 2rem);
    --room-text-size: clamp(0.875rem, 0.833vw + 0.25rem, 1rem);
    --room-spec-name-size: clamp(1.0625rem, 1.25vw + 0.125rem, 1.25rem);
    --room-spec-value-size: clamp(0.875rem, 0.833vw + 0.25rem, 1rem);
    --room-spec-name-width: clamp(9.375rem, 22.5vw - 7.5rem, 12.75rem);
    --room-spec-pad: 0.65625rem;
    --room-spec-gap: 0.625rem;
    --room-dot: 0.4375rem;
    --room-dot-active: 2.125rem;
  }

  .room__inner {
    grid-template-columns: minmax(0, 0.5527fr) minmax(0, 1fr);
    column-gap: 1.5rem;
    padding-inline: var(--container-gutter) var(--room-inset);
  }

  .room__book-row {
    padding-inline: var(--room-inset);
    margin-block-start: 3.125rem;
  }

  .room__gallery {
    order: 0;
    align-self: start;
  }

  /* Колонка текста по высоте слайдера: заголовок сверху, характеристики внизу */
  .room__summary {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: space-between;
    gap: 2rem;
    padding-block-end: 1.25rem;
  }

  .room__intro,
  .room__specs {
    padding-inline: 0;
  }

  .room__lead {
    letter-spacing: -0.03em;
    line-height: 1.2;
  }

  .room__text {
    max-width: 24.3em;
    margin-block-start: 1.375rem;
    line-height: 1.54;
  }

  .room__spec-name {
    line-height: 1.54;
  }

  .room__spec-value {
    line-height: 1.54;
  }

  .room__tags {
    inset: 1.6875rem auto auto 2.125rem;
    gap: 0.625rem;
  }

  .room__tag {
    min-height: 2.625rem;
    padding-inline: 1.6875rem;
    font-size: 1rem;
  }

  .room__dots {
    inset-block-end: 1rem;
  }

  .room__arrows {
    inset: auto 1.1875rem 1.0625rem auto;
  }

  .room__book {
    font-size: 1.5rem;
  }
}

/* --- Макет 1920: контейнер 1700, слайдер 1068×800 --- */
@media (width > 90em) {
  .room {
    --room-radius: 2rem;
    --room-gallery-ratio: 1.335;
    /* от 1440 до 1920 плавно: заголовок 32 → 40, текст 16 → 18, названия 20 → 24, колонка названий 204 → 258 */
    --room-lead-size: clamp(2rem, 1.667vw + 0.5rem, 2.5rem);
    --room-text-size: clamp(1rem, 0.4167vw + 0.625rem, 1.125rem);
    --room-spec-name-size: clamp(1.25rem, 0.833vw + 0.5rem, 1.5rem);
    --room-spec-value-size: clamp(1rem, 0.4167vw + 0.625rem, 1.125rem);
    --room-spec-name-width: clamp(12.75rem, 11.25vw + 2.625rem, 16.125rem);
    --room-spec-pad: 1.125rem;
    --room-spec-gap: 0.8125rem;
    --room-dot: 0.54375rem;
    --room-dot-active: 2.65rem;
  }

  .room__inner {
    grid-template-columns: minmax(0, 603fr) minmax(0, 1068fr);
    column-gap: 1.8125rem;
    padding-inline: var(--container-gutter);
  }

  .room__book-row {
    padding-inline: var(--container-gutter);
    margin-block-start: 2.5625rem;
  }

  .room__summary {
    padding-block-end: 1.125rem;
  }

  .room__intro,
  .room__specs {
    padding-inline-start: 0.8125rem;
  }

  .room__lead {
    margin-inline-end: -1.5rem;
    line-height: 1.32;
  }

  .room__text {
    max-width: 28.3em;
    line-height: 1.52;
  }

  .room__spec-name,
  .room__spec-value {
    line-height: 1.53;
  }

  .room__tags {
    inset: clamp(1.6875rem, 1.667vw + 0.1875rem, 2.1875rem) auto auto clamp(2.125rem, 7.5vw - 4.625rem, 4.375rem);
    gap: clamp(0.625rem, 0.625vw + 0.0625rem, 0.8125rem);
  }

  .room__tag {
    min-height: clamp(2.625rem, 2.917vw, 3.5rem);
    padding-inline: clamp(1.6875rem, 2.917vw - 0.9375rem, 2.5625rem);
    font-size: clamp(1rem, 0.833vw + 0.25rem, 1.25rem);
  }

  .room__dots {
    inset-block-end: 1.0625rem;
  }

  .room__arrows {
    inset: auto 2.625rem 1.625rem auto;
  }

  .room__book {
    min-height: 4.8125rem;
    font-size: 1.75rem;
    gap: 1.125rem;
  }

  .room__book .button__icon {
    width: 2.5rem;
    height: 2.5rem;
  }
}


/* ==========================================================================
   Блок: room-features (карточки параметров номера)
   Колонок: 3 в макетах 1920 и 1440 (шире 75em), 2 в 834 (шире 40em), 1 в 393.
   Края как у блока room: 15 / 21 / 25 от края экрана, на 1920 контейнер 1700.
   ========================================================================== */
.room-features-section {
  margin-block-start: 1.5625rem;
}

.room-features-section__inner {
  max-width: calc(var(--container-width) + var(--container-gutter) * 2);
  margin-inline: auto;
  padding-inline: var(--room-inset);
}

.room-features {
  --features-columns: 1;

  display: grid;
  grid-template-columns: repeat(var(--features-columns), minmax(0, 1fr));
  gap: 1.3125rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

@media (width > 40em) {
  .room-features-section {
    margin-block-start: 2.5rem;
  }

  .room-features {
    --features-columns: 2;

    gap: 1.5rem;
  }
}

@media (width > 75em) {
  .room-features-section {
    margin-block-start: 3.125rem;
  }

  .room-features {
    --features-columns: 3;
  }
}

@media (width > 90em) {
  .room-features-section {
    margin-block-start: 2.0625rem;
  }

  .room-features-section__inner {
    padding-inline: var(--container-gutter);
  }
}

.room-features__item {
  display: flex;
}

.feature-card {
  display: flex;
  flex: 1;
  flex-direction: column;
  padding: clamp(1.25rem, 0.7rem + 1.8vw, 2.1875rem);
  background-color: var(--color-surface);
  border-radius: var(--radius-panel);
}

.feature-card__icon {
  display: grid;
  flex-shrink: 0;
  place-items: center;
  width: 3.1875rem;
  height: 3.1875rem;
  background-color: var(--color-accent);
  border-radius: 50%;
}

.feature-card__icon-image {
  display: block;
  width: 1.75rem;
  height: 1.75rem;
  object-fit: contain;
}

.feature-card__title {
  margin-block-start: clamp(1.5rem, 1rem + 1.7vw, 2.5rem);
  font-size: clamp(1.375rem, 0.6rem + 1.4vw, 2rem);
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: -0.02em;
}

.feature-card__list {
  display: grid;
  margin: clamp(1.25rem, 1rem + 1vw, 1.75rem) 0 0;
  padding: 0;
  list-style: none;
}

.feature-card__line {
  position: relative;
  padding-inline-start: 1rem;
  font-size: clamp(0.8125rem, 0.7rem + 0.3vw, 0.9375rem);
  line-height: 1.55;
}

.feature-card__line::before {
  content: "";
  position: absolute;
  inset: 0.65em auto auto 0.25rem;
  width: 0.25rem;
  height: 0.25rem;
  background-color: currentColor;
  border-radius: 50%;
}


/* ==========================================================================
   Блок: reviews (отзывы гостей: тёмная панель, слайдер карточек, награды)
   ========================================================================== */
.reviews {
  margin-block-start: clamp(2.5rem, 1.5rem + 3.5vw, 5.5rem);
}

.reviews__panel {
  --reviews-pad: clamp(1.25rem, 0.5rem + 2.6vw, 3.125rem);

  margin-inline: var(--panel-inset);
  padding: var(--reviews-pad);
  overflow: hidden;
  color: var(--color-text-inverse);
  background-color: var(--color-green-800);
  border-radius: var(--radius-panel);
}

.reviews__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.5rem;
}

.reviews__title {
  max-width: 9em;
  font-size: var(--fs-title);
  font-weight: 500;
  line-height: 1.1;
  letter-spacing: var(--tracking-tight);
}

.reviews__awards {
  display: none;
  flex-shrink: 0;
  align-items: flex-start;
  gap: clamp(0.25rem, 0.1rem + 0.6vw, 0.875rem);
}

.reviews__awards img {
  display: block;
  width: clamp(3.5rem, 1.5rem + 4.2vw, 6.875rem);
  height: auto;
}

@media (width > 24.5625em) {
  .reviews__awards {
    display: flex;
  }
}

.reviews-slider {
  margin-block-start: clamp(1.5rem, 1rem + 2vw, 3rem);
  margin-inline-end: calc(var(--reviews-pad) * -1); /* лента уходит под край панели */
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}

.reviews-slider::-webkit-scrollbar {
  display: none;
}

.reviews-slider--animating {
  scroll-snap-type: none;
}

.reviews-slider__track {
  display: flex;
  gap: clamp(0.625rem, 0.4rem + 0.8vw, 1.25rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

.reviews-slider__slide {
  display: flex;
  flex: 0 0 min(31rem, 100% - var(--reviews-pad) - 1rem);
  scroll-snap-align: start;
}

.review-card {
  display: flex;
  flex: 1;
  flex-direction: column;
  padding: clamp(1.25rem, 0.9rem + 1.1vw, 2rem);
  background-color: var(--color-green-700);
  border-radius: 1.25rem;
}

.review-card__head {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.review-card__source {
  flex-shrink: 0;
  width: 1.5rem;
  height: 1.5rem;
}

.review-card__author {
  font-size: clamp(1rem, 0.85rem + 0.4vw, 1.25rem);
  font-weight: 600;
  line-height: 1.25;
}

.review-card__text {
  margin: 1.25rem 0 0;
  font-size: clamp(0.875rem, 0.8rem + 0.2vw, 1rem);
  line-height: 1.52;
}

.review-card__more {
  align-self: flex-start;
  margin-block-start: auto;
  padding-block-start: 1rem;
  font-size: 0.8125rem;
  text-decoration: underline;
  text-underline-offset: 0.2em;
  opacity: 0.6;
  transition: opacity var(--transition-fast);
}

@media (hover: hover) {
  .review-card__more:hover {
    opacity: 1;
  }
}

.reviews__arrows {
  display: flex;
  gap: 0.625rem;
  margin-block-start: clamp(1.25rem, 1rem + 1vw, 2rem);
}

.reviews__arrows[hidden] {
  display: none;
}


/* ==========================================================================
   Доп.: метка над заголовком слайдера «Другие номера»
   ========================================================================== */
.rooms__heading {
  display: grid;
  gap: clamp(0.75rem, 0.5rem + 1vw, 1.5rem);
  justify-items: start;
}

.room-card__media-link {
  display: block;
}

.room-card__title-link {
  color: inherit;
  text-decoration: none;
}

.rooms--other {
  margin-block-start: clamp(2.5rem, 1.5rem + 3.5vw, 5.5rem);
}


/* ==========================================================================
   Блок: services (главная: вкладки услуг и слайд-панель)
   Широкий (>75em): три колонки — текст, фото, список. 40–75em: фото сверху, под ним текст и список.
   До 40em: всё столбиком. Ряд вкладок прокручивается: края затухают, есть стрелки (мышь),
   перетаскивание, активная вкладка подъезжает в видимую область, при показе блока лента чуть «подмигивает».
   ========================================================================== */
@property --services-fade-start {
  syntax: "<length>";
  inherits: false;
  initial-value: 0px;
}

@property --services-fade-end {
  syntax: "<length>";
  inherits: false;
  initial-value: 0px;
}

.services {
  /* База — макет 393 (держится до 40em); выше переопределяется */
  --services-tab-height: 2.25rem;
  --services-tab-font: 0.875rem;
  --services-tab-pad: 1.4em;
  --services-pad: clamp(0.625rem, -0.1rem + 2.7vw, 1.5rem);
  --services-ratio: 345 / 319;
  --services-radius: clamp(0.875rem, 0.6rem + 0.9vw, 1.25rem);
  --services-dot: 0.4375rem;
  --services-dot-active: 2.125rem;
  --services-top: 1.375rem;   /* над вкладками */
  --services-gap: 1.25rem;    /* от вкладок до фото */
  --services-bottom: 1.25rem;
  --services-edge-pad: var(--services-pad);
  --services-photo-h: auto;
  --services-inset: 0.875rem;   /* поля панели: 14 / 22 / 25 по макетам 393 / 834 / 1440+ */
}

.services__tag {
  margin-block-end: 1.5rem;
}

.services__title {
  margin-block-end: clamp(1.5rem, 0.9rem + 2.4vw, 3.5rem);
}

/* --- Вкладки --- */
.services__tabs-box {
  position: relative;
  margin-block: var(--services-top) 0;
}

.services__tabs-viewport {
  --services-edge: var(--services-edge-pad);
  --services-fade-start: 0px;
  --services-fade-end: 0px;
  overflow-x: auto;
  padding-inline: var(--services-edge);
  scroll-padding-inline: var(--services-edge);
  scrollbar-width: none;
  overscroll-behavior-x: contain;
  cursor: grab;
  -webkit-mask-image: linear-gradient(to right, transparent 0, #000 var(--services-fade-start), #000 calc(100% - var(--services-fade-end)), transparent 100%);
  mask-image: linear-gradient(to right, transparent 0, #000 var(--services-fade-start), #000 calc(100% - var(--services-fade-end)), transparent 100%);
  transition:
    --services-fade-start var(--transition-smooth),
    --services-fade-end var(--transition-smooth);
}

.services__tabs-viewport::-webkit-scrollbar {
  display: none;
}

.services__tabs-viewport--dragging {
  cursor: grabbing;
  user-select: none;
}

.services__tabs-box--can-prev .services__tabs-viewport {
  --services-fade-start: clamp(2rem, 8vw, 6rem);
}

.services__tabs-box--can-next .services__tabs-viewport {
  --services-fade-end: clamp(2.5rem, 10vw, 8rem);
}

.services__tabs {
  display: flex;
  gap: 0.3125rem;
  width: max-content;
}

.services-tab {
  flex-shrink: 0;
  min-height: var(--services-tab-height);
  padding-inline: var(--services-tab-pad);
  border: 1px solid var(--color-white-55);
  border-radius: var(--radius-pill);
  background: transparent;
  color: var(--color-text-inverse);
  font-size: var(--services-tab-font);
  line-height: 1.2;
  white-space: nowrap;
  cursor: pointer;
  transition:
    color var(--transition-fast),
    background-color var(--transition-fast),
    border-color var(--transition-fast);
}

.services-tab--active {
  border-color: var(--color-accent);
  background-color: var(--color-accent);
  color: var(--color-text);
}

@media (hover: hover) {
  .services-tab:not(.services-tab--active):hover {
    background-color: var(--color-white-15);
  }
}

/* Стрелки вкладок — только там, где есть мышь */
.services__tabs-arrow {
  display: none;
}

@media (hover: hover) and (pointer: fine) {
  .services__tabs-arrow {
    position: absolute;
    inset-block: 0;
    z-index: 1;
    display: grid;
    place-items: center;
    width: var(--services-tab-height);
    height: var(--services-tab-height);
    padding: 0;
    border: 1px solid var(--color-white-55);
    border-radius: 50%;
    background: var(--color-green-800);
    color: var(--color-text-inverse);
    cursor: pointer;
    transition:
      color var(--transition-fast),
      background-color var(--transition-fast),
      opacity var(--transition-fast);
  }

  .services__tabs-arrow[hidden] {
    display: none;
  }

  .services__tabs-arrow:hover {
    background: var(--color-accent);
    border-color: var(--color-accent);
  }

  .services__tabs-arrow--prev {
    inset-inline-start: var(--services-pad);
  }

  .services__tabs-arrow--next {
    inset-inline-end: var(--services-pad);
  }

  .services__tabs-arrow--prev .icon {
    transform: scaleX(-1);
  }

  .services__tabs-arrow .icon {
    width: 1.5rem;
    height: 0.5rem;
  }
}

/* --- Панель --- */
.services__slides {
  display: grid;
}

.services__panel {
  margin-inline: var(--services-inset);
  border-radius: var(--radius-panel);
  background-color: var(--color-green-800);
  color: var(--color-text-inverse);
  overflow: hidden;
}

.service {
  grid-area: 1 / 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "media" "body" "list" "actions";
  align-content: start;
  gap: 1.25rem 0;
  padding: var(--services-gap) var(--services-pad) var(--services-bottom);
  opacity: 0;
  visibility: hidden;
  transform: translateY(0.75rem);
  transition:
    opacity 0.5s ease,
    transform 0.5s ease,
    visibility 0s linear 0.5s;
}

.service--active {
  opacity: 1;
  visibility: visible;
  transform: none;
  transition:
    opacity var(--transition-smooth) 0.25s,
    transform var(--transition-smooth) 0.25s,
    visibility 0s;
}

.service__body {
  grid-area: body;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.625rem;
  padding: 0 0.1875rem;
}

.service__title {
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.03em;
  text-transform: uppercase;
}

.service__text {
  max-width: 28rem;
  font-size: 0.75rem;
  line-height: 1.4;
  color: rgb(255 255 255 / 0.85);
}

/* Кнопки «Подробнее» и «Все услуги отеля» */
.service__actions {
  grid-area: actions;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.5rem;
}

.service__button {
  --button-bg-hover: var(--color-accent);
  flex: 1 1 0;
  justify-content: space-between;
  gap: 0.5rem;
  min-height: 2.875rem;
  padding-inline: 1.5rem 0.5625rem;
  font-size: 0.8125rem;
}

.service__button .button__icon {
  width: 1.75rem;
  height: 1.75rem;
}

.service__button--all {
  --button-border: var(--color-accent);
  --button-border-hover: var(--color-accent);
  --button-bg-hover: var(--color-accent);
  --button-color-hover: var(--color-text);
}

.service__media {
  grid-area: media;
  position: relative;
}

.service-gallery {
  aspect-ratio: var(--services-ratio);
  height: var(--services-photo-h);
  overflow-x: auto;
  border-radius: var(--services-radius);
  background-color: var(--color-green-700);
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}

.service-gallery::-webkit-scrollbar {
  display: none;
}

.service-gallery--animating {
  scroll-snap-type: none;
}

.service-gallery__track {
  display: flex;
  height: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
}

.service-gallery__slide {
  flex: 0 0 100%;
  height: 100%;
  scroll-snap-align: start;
}

.service-gallery__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.service__dots {
  position: absolute;
  inset: auto 0 0.75rem;
  display: none;
  justify-content: center;
  pointer-events: none;
}

.service__dots[hidden] {
  display: none;
}

.service__dots:not([hidden]) {
  display: flex;
}

.service__dots .slider-dots__button {
  min-width: 0.875rem;
  min-height: 1.125rem;
  pointer-events: auto;
}

.service__dots .slider-dots__button::before {
  width: var(--services-dot);
  height: var(--services-dot);
  background-color: var(--color-neutral-500);
}

.service__dots .slider-dots__button--active::before {
  width: var(--services-dot-active);
  background-color: var(--color-accent);
}

.services .service__list {
  grid-area: list;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: start;
  gap: 0.6875rem 1rem;
  margin: 0;
  padding: 0 0.1875rem;
  list-style: none;
  font-size: 0.75rem;
  line-height: 1.4;
}

.service__list-item {
  position: relative;
  padding-inline-start: 1.75em;
}

.service__list-item::before {
  /* Иконка-галочка в круге: положить images/icons/check.webp (24×24 и больше, квадрат) */
  content: "";
  position: absolute;
  inset: 0.05em auto auto 0;
  width: 1.3em;
  height: 1.3em;
  background: url("/local/templates/arkhyz_royal/images/icons/check.webp") center / contain no-repeat;
}

/* Макет 834 (до 75em, от 40em): фото сверху 746×380; под ним текст и кнопки слева, список справа */
@media (width > 40em) {
  .services {
    --services-tab-height: 2.75rem;
    --services-tab-font: 0.9375rem;
    --services-tab-pad: 2.05em;
    --services-ratio: 746 / 380;
    --services-top: 2.25rem;
    --services-gap: 1.5625rem;
    --services-bottom: 2.8rem;
    --services-pad: 1.1875rem;
    --services-inset: 1.375rem;
  }

  .service {
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    grid-template-areas: "media media" "body list" "actions list";
    grid-template-rows: auto 1fr auto;
    gap: 3.2rem 1.5rem;
  }

  .service__body {
    gap: 1.25rem;
    padding: 0 0 0 1.375rem;
  }

  .service__title {
    font-size: 1.5rem;
  }

  .service__text {
    font-size: 0.9375rem;
    line-height: 1.45;
  }

  .services .service__list {
    grid-template-columns: minmax(0, 1fr);
    gap: 0.75rem;
    padding-block-start: 0.5rem;
    font-size: 0.875rem;
  }

  .service__actions {
    align-self: end;
    padding-inline-start: 1.375rem;
    gap: 0.5rem;
  }

  .service__button {
    flex: 0 0 auto;
    min-height: 3rem;
    padding-inline: 2.125rem 0.875rem;
    font-size: 0.9375rem;
  }

  .service__button--all {
    padding-inline-start: 1.5rem;
  }
}

/* Макеты 1440 и 1920: текст | фото | список. Всё плавно тянется между 1440 и 1920, дальше — макет 1920 */
@media (width > 75em) {
  .services {
    --d: clamp(0rem, calc(100vw - 90rem), 30rem);   /* 0 на 1440, 30rem на 1920 */
    --services-tab-height: 3.125rem;
    --services-tab-font: 1rem;
    --services-top: calc(3.4375rem - var(--d) * 0.0213);
    --services-gap: calc(3.375rem + var(--d) * 0.0229);
    --services-bottom: 2.5rem;
    --services-edge-pad: calc(3rem - var(--d) * 0.0563);
    --services-photo-h: calc(33.4375rem + var(--d) * 0.2417);
    --services-ratio: auto;
    --services-inset: 1.5625rem;
  }

  .services__panel {
    max-width: 116.875rem;
    margin-inline: max(var(--services-inset), calc((100% - 116.875rem) / 2));
  }

  .service {
    grid-template-columns: 26rem minmax(0, 1fr) calc(17.9% + var(--d) * 0.05);
    grid-template-areas: "body media list" "actions media list";
    grid-template-rows: 1fr auto;
    gap: 0;
    padding-inline: 0;
  }

  .service__body {
    gap: calc(1.25rem + var(--d) * 0.0167);
    padding: calc(0.75rem + var(--d) * 0) 3rem 0 calc(3rem + var(--d) * 0.0625);
  }

  .service__title {
    font-size: calc(1.375rem + var(--d) * 0.0208);
  }

  .service__text {
    font-size: calc(1rem + var(--d) * 0.0042);
    line-height: 1.55;
  }

  .services .service__list {
    gap: 1.5625rem;
    padding: 0.5rem calc(1.5rem + var(--d) * 0.0729) 0 calc(1.5625rem + var(--d) * 0.0563);
    font-size: calc(1rem + var(--d) * 0.0042);
    line-height: 1.5;
  }

  .service__actions {
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: flex-start;
    gap: calc(0.9375rem - var(--d) * 0.0167);
    padding: 0 0 0 calc(3rem + var(--d) * 0.0625);
  }

  .service__button {
    justify-content: space-between;
    gap: 0.9375rem;
    min-width: 12.5rem;
    min-height: calc(3.4375rem + var(--d) * 0.0208);
    padding-inline: 2.5rem 0.625rem;
    font-size: 1rem;
  }

  .service__button--all {
    gap: 0.625rem;
    min-width: 14.125rem;
    padding-inline-start: 2rem;
  }

  .service__button .button__icon {
    width: calc(2.125rem + var(--d) * 0.0083);
    height: calc(2.125rem + var(--d) * 0.0083);
  }
}

@media (prefers-reduced-motion: reduce) {
  .service,
  .service--active {
    transform: none;
    transition: none;
  }
}


/* ==========================================================================
   Блок: offers (спецпредложения: слайдер на главной; шаблон news.list «offers»)
   Ширина карточек одинаковая, высота фото считается от его пропорций, карточки выровнены по верху.
   Видно 1,15 / 2,45 / 3,7 / 4,7 карточки: до 393 / до 834 / до 1440 / до 1920 (и шире) — следующая выглядывает.
   Стрелки: справа от заголовка шире 393, на мобильном под лентой.
   ========================================================================== */
.offers__head {
  margin-block-end: clamp(1.25rem, 0.7rem + 2.2vw, 3.25rem);
}

.offers__tag {
  margin-block-end: 1.5rem;
}

.offers__heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-m);
}

.offers__slider {
  margin-inline: var(--panel-inset);
}

.offers__arrows {
  display: flex;
  gap: 0.625rem;
}

.offers__arrows[hidden] {
  display: none;
}

.offers__arrows--head {
  display: none;
}

.offers__foot {
  margin-block-start: 1.25rem;
}

.offers-slider {
  --offers-gap: clamp(0.625rem, 0.5rem + 0.3vw, 0.9375rem);
  --offers-count: 1.15;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}

.offers-slider::-webkit-scrollbar {
  display: none;
}

.offers-slider--animating {
  scroll-snap-type: none;
}

.offers-slider__track {
  display: flex;
  align-items: flex-start;
  gap: var(--offers-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

.offers-slider__slide {
  flex: 0 0 calc((100% - var(--offers-gap) * (var(--offers-count) - 1)) / var(--offers-count));
  scroll-snap-align: start;
}

.offer-card__image {
  display: block;
  width: 100%;
  height: auto;
  border-radius: clamp(0.875rem, 0.7rem + 0.45vw, 1.25rem);
}

.offer-card__title {
  margin: 0.75rem 0 0.5rem;
  font-size: clamp(1.125rem, 1rem + 0.3vw, 1.25rem);
  font-weight: 500;
  line-height: 1.2;
  color: var(--color-accent);
}

.offer-card__text {
  margin: 0;
  font-size: clamp(0.875rem, 0.8rem + 0.2vw, 1rem);
  line-height: 1.4;
}

@media (width > 24.5625em) {
  .offers-slider {
    --offers-count: 2.45;
  }

  .offers__arrows--head {
    display: flex;
    flex-shrink: 0;
    margin-block-end: 0.5rem;
  }

  .offers__foot {
    display: none;
  }
}

@media (width > 52.125em) {
  .offers-slider {
    --offers-count: 3.7;
  }
}

@media (width > 90em) {
  .offers-slider {
    --offers-count: 4.7;
  }
}


/* ==========================================================================
   Страница «Спецпредложения»: сетка карточек (offers--page) и баннер feedback
   Сетка: 1 / 2 / 3 / 3 колонки и пропорции фото 1.44 / 1.3 / 1.12 / 1.55 по макетам 393 / 834 / 1440 / 1920.
   ========================================================================== */
.offers--page .offers__title {
  margin-block-end: clamp(1.5rem, 1rem + 1.8vw, 2.5rem);
}

.offers-grid {
  --offer-ratio: 1.44;
  --offer-cols: 1;
  display: grid;
  grid-template-columns: repeat(var(--offer-cols), minmax(0, 1fr));
  gap: 1.5rem clamp(0.625rem, 0.4rem + 0.5vw, 1.5625rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

.offer-card--grid .offer-card__image {
  aspect-ratio: var(--offer-ratio);
  object-fit: cover;
  border-radius: clamp(1rem, 0.55rem + 1vw, 1.5625rem);
}

.offer-card--grid .offer-card__title {
  margin-block: 0.875rem 0.625rem;
  font-size: 1.0625rem;
}

.offer-card--grid .offer-card__text {
  font-size: 0.875rem;
}

@media (width > 24.5625em) {
  .offers-grid {
    --offer-ratio: 1.3;
    --offer-cols: 2;
    row-gap: 3.5rem;
  }

  .offer-card--grid .offer-card__title {
    font-size: 1.5rem;
  }

  .offer-card--grid .offer-card__text {
    font-size: 0.9375rem;
  }
}

@media (width > 52.125em) {
  .offers-grid {
    --offer-ratio: 1.12;
    --offer-cols: 3;
    row-gap: 3.75rem;
  }

  .offer-card--grid .offer-card__title {
    font-size: 1.9375rem;
  }

  .offer-card--grid .offer-card__text {
    font-size: 1rem;
  }
}

@media (width > 90em) {
  .offers-grid {
    --offer-ratio: 1.55;
    row-gap: 4.375rem;
  }

  .offer-card--grid .offer-card__title {
    font-size: 2rem;
  }

  .offer-card--grid .offer-card__text {
    font-size: 1.25rem;
  }
}


/* --- Баннер «Поделитесь впечатлениями об отдыхе» --- */
.feedback__panel {
  --feedback-pad: 1.25rem;
  --feedback-button-height: 3rem;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: auto 1fr auto auto;
  grid-template-areas: "rating" "." "title" "button";
  gap: 1rem;
  aspect-ratio: 366 / 537;
  margin-inline: var(--panel-inset);
  padding: var(--feedback-pad);
  overflow: clip; /* не hidden: иначе aspect-ratio не растёт под длинный заголовок */
  isolation: isolate;
  border-radius: var(--radius-panel);
  background-color: var(--color-green-900);
  color: var(--color-text-inverse);
}

.feedback__image {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.feedback__panel::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background-image: linear-gradient(180deg, rgb(27 24 16 / 0.09) 0%, rgb(0 0 0 / 0.81) 100%);
  pointer-events: none;
}

.feedback__rating {
  grid-area: rating;
  justify-self: start;
}

.feedback__title {
  grid-area: title;
  align-self: end;
  max-width: 8.5em;
  font-size: 1.96rem;   /* 31,4 px по макету 393 */
  line-height: 1.15;
}

.feedback__button {
  grid-area: button;
  --button-bg-hover: var(--color-accent);
  --fb-pl: 1rem;
  --fb-pr: 1rem;
  --fb-circle: 2.1875rem;
  justify-content: center;
  gap: 1rem;
  min-height: var(--feedback-button-height);
  padding-inline: var(--fb-pl) var(--fb-pr);
  font-size: 0.9375rem;
}

.feedback__button .button__icon {
  width: var(--fb-circle);
  height: var(--fb-circle);
}

/* Раскладка 834 (заголовок слева, кнопка справа) держится от 834 до 448 и плавно уменьшается;
   уже 448 заголовок с кнопкой не помещаются в ряд — столбиком, как на 393 */
@media (width > 28em) {
  .feedback__panel {
    --s: calc(100vw / 834);
    --feedback-pad: clamp(1.25rem, 5.75vw, 3rem);
    --feedback-button-height: clamp(2.5rem, var(--s) * 51, 3.1875rem);
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "rating rating" ". ." "title button";
    aspect-ratio: 803 / 537;
  }

  .feedback__title {
    max-width: 12.5em;
    font-size: clamp(1.5rem, 5.67vw, 2.96rem);   /* 47,3 px на 834 */
  }

  .feedback__button {
    --fb-pl: clamp(1.25rem, var(--s) * 32, 2rem);
    --fb-pr: clamp(0.375rem, var(--s) * 9, 0.5625rem);
    --fb-circle: clamp(1.75rem, var(--s) * 35, 2.1875rem);
    gap: clamp(0.625rem, var(--s) * 16, 1rem);
    align-self: end;
    font-size: clamp(0.75rem, var(--s) * 15, 0.9375rem);
  }
}

@media (width > 52.125em) {
  .feedback__title {
    font-size: min(calc(1.71rem + 2.39vw), 3.89rem);   /* 47 → 62 px: 834 → 1440, дальше 62 */
  }

  .feedback__panel {
    --feedback-pad: 3.125rem;
    --feedback-button-height: 3.25rem;
    aspect-ratio: 1390 / 537;
  }

  .feedback__button {
    --fb-pl: 2.125rem;
    --fb-pr: 0.8125rem;
    font-size: 1rem;
  }
}

@media (width > 90em) {
  .feedback__panel {
    --feedback-pad: 4rem;
    --feedback-button-height: 4.125rem;
    aspect-ratio: 1870 / 722;
  }

  .feedback__button {
    --fb-pl: 2.875rem;
    --fb-pr: 1.5rem;
    --fb-circle: 2.375rem;
  }
}


/* Стрелка в кнопке баннера белая на золотом кружке */
.feedback__button .button__icon {
  color: var(--color-text-inverse);
}

/* Карточка без заголовка: текст сразу под фото */
.offer-card__image + .offer-card__text {
  margin-block-start: 0.75rem;
}


/* ==========================================================================
   Блок: leisure (главная: «Развлечения и отдых» — слайдер карточек на фоне гор)
   Шаблон news.list «leisure», фон — images/feedback.webp.
   Макеты: 393 (1 карточка, держится до 40em), 834 (2 карточки), 1440 (2 карточки, заголовок слева),
   1920 (3 карточки). Размеры макетов 834/1440/1920 считаются через --u = «1 px макета»
   и плавно сжимаются вместе с экраном, шрифты не мельче 14 px.
   ========================================================================== */
.leisure__panel {
  --u: 1px;
  --leisure-radius: 1.375rem;
  --leisure-n: 1;
  --leisure-gap: 0.75rem;
  --leisure-ratio: 335 / 201;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "title" "slider" "arrows" "button";
  margin-inline: 0.875rem;
  padding: 2.25rem 0.8125rem 0.875rem;
  isolation: isolate;
  overflow: clip;
  border-radius: var(--radius-panel);
  background-color: var(--color-green-700);
  color: var(--color-text);
}

.leisure__image {
  position: absolute;
  inset: 0;
  z-index: -1;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center bottom;
}

.leisure__title {
  grid-area: title;
  margin: 0 0 2.55rem;
  padding-inline: 0.3125rem;
  font-size: var(--pt-title);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: var(--tracking-tight);
  text-wrap: balance;
}

.leisure__slider {
  grid-area: slider;
  min-width: 0;
}

.leisure__arrows {
  grid-area: arrows;
  display: flex;
  justify-self: start;
  gap: 0.3125rem;
  margin: 0.9375rem 0 0 0.25rem;
}

.leisure__arrows[hidden] {
  display: none;
}

.leisure__button {
  grid-area: button;
  --button-bg-hover: var(--color-accent);
  justify-content: center;
  gap: 1.125rem;
  min-height: 2.875rem;
  margin-block-start: 2.4rem;
  padding-inline: 1.5rem 0.5625rem;
  font-size: 0.9375rem;
}

.leisure__button .button__icon {
  width: 1.75rem;
  height: 1.75rem;
  color: var(--color-text-inverse);   /* стрелка белая на золотом кружке */
}

/* «Назад» на фото — белая таблетка */
.leisure .slider-arrow--prev {
  background-color: var(--color-surface);
  border-color: var(--color-surface);
}

.leisure .slider-arrow:disabled {
  opacity: 0.6;
}

@media (hover: hover) {
  .leisure .slider-arrow--prev:hover:not(:disabled) {
    background-color: var(--color-accent);
    border-color: var(--color-accent);
  }
}

/* --- Лента --- */
.leisure-slider {
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}

.leisure-slider::-webkit-scrollbar {
  display: none;
}

.leisure-slider--animating {
  scroll-snap-type: none;
}

.leisure-slider__track {
  display: flex;
  gap: var(--leisure-gap);
  margin: 0;
  padding: 0;
  list-style: none;
}

.leisure-slider__slide {
  display: flex;
  flex: 0 0 calc((100% - var(--leisure-gap) * (var(--leisure-n) - 1)) / var(--leisure-n));
  scroll-snap-align: start;
}

/* --- Карточка --- */
.leisure-card {
  display: flex;
  flex: 1;
  flex-direction: column;
  overflow: clip;
  border-radius: var(--leisure-radius);
  background-color: var(--color-bg);
}

.leisure-card__media {
  position: relative;
  aspect-ratio: var(--leisure-ratio);
  overflow: clip;
  border-radius: var(--leisure-radius);
  background-color: var(--color-neutral-300);
}

.leisure-card__image {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  user-select: none;
}

.leisure-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 0.5rem;
  padding: 1.4375rem 1.4375rem 1.5rem;
}

.leisure-card__title {
  margin: 0;
  font-size: var(--pt-card-title);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: var(--tracking-tight);
}

.leisure-card__text {
  margin: 0;
  font-size: var(--pt-card-text);
  line-height: 1.5;
}

/* --- Макет 834: заголовок в одну строку, 2 карточки, кнопка слева и стрелки справа под лентой --- */
@media (width > 40em) {
  .leisure__panel {
    --u: min(0.1199vw, 1px);
    --leisure-n: 2;
    --leisure-gap: calc(10 * var(--u));
    --leisure-radius: max(0.875rem, calc(25 * var(--u)));
    --leisure-ratio: 360 / 235;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "title title" "slider slider" "button arrows";
    margin-inline: 1.375rem;
    padding: calc(46 * var(--u)) calc(27 * var(--u)) calc(148 * var(--u));
  }

  .leisure__title {
    margin: 0 0 calc(22 * var(--u));
    padding-inline: calc(7 * var(--u));
    font-size: var(--pt-title);
  }

  /* По макету 834 стрелок нет (листается пальцем), а «Подробнее» лежит поверх ленты слева */
  .leisure__arrows {
    display: none;
  }

  .leisure__button {
    position: absolute;
    grid-area: 1 / 1 / -1 / -1;
    inset: calc(386 * var(--u)) auto auto 0;
    z-index: 1;
    min-height: max(2.75rem, calc(48 * var(--u)));
    margin: 0;
    padding-inline: 2rem 0.5625rem;
  }

  .leisure-card__body {
    gap: max(0.5rem, calc(12 * var(--u)));
    padding: calc(31 * var(--u)) calc(25 * var(--u)) calc(38 * var(--u));
  }

  .leisure-card__title {
    font-size: var(--pt-card-title);
  }

  .leisure-card__text {
    font-size: var(--pt-card-text);
  }
}

/* --- Макет 1440: заголовок и кнопка слева, 2 карточки справа, стрелки под лентой --- */
@media (width > 52.125em) {
  .leisure__panel {
    --u: min(0.06944vw, 1px);
    --leisure-gap: calc(23 * var(--u));
    --leisure-radius: max(1rem, calc(28 * var(--u)));
    --leisure-ratio: 394 / 273;
    grid-template-columns: calc(549 * var(--u)) minmax(0, 1fr);
    grid-template-areas: "title slider" "button arrows";
    grid-template-rows: auto auto;
    margin-inline: 1.5625rem;
    padding: calc(50 * var(--u)) calc(30 * var(--u)) calc(46 * var(--u)) 0;
  }

  .leisure__title {
    align-self: start;
    margin: calc(40 * var(--u)) 0 0;
    padding-inline: calc(48 * var(--u)) calc(20 * var(--u));
    font-size: var(--pt-title);
  }

  .leisure__arrows {
    display: flex;
    align-self: start;
    justify-self: end;
    margin: calc(24 * var(--u)) 0 0;
  }

  .leisure__button {
    position: static;
    grid-area: button;
    align-self: start;
    justify-self: start;
    gap: 0.9375rem;
    min-width: calc(200 * var(--u));
    min-height: max(3rem, calc(55 * var(--u)));
    margin: 0 0 0 calc(48 * var(--u));
    padding-inline: calc(41 * var(--u)) calc(10 * var(--u));
    font-size: 1rem;
    justify-content: space-between;
  }

  .leisure__button .button__icon {
    width: calc(34 * var(--u));
    height: calc(34 * var(--u));
    min-width: 1.75rem;
    min-height: 1.75rem;
  }

  .leisure-card__body {
    gap: max(0.5rem, calc(13 * var(--u)));
    padding: calc(30 * var(--u)) calc(27 * var(--u)) calc(43 * var(--u));
  }

  .leisure-card__title {
    font-size: var(--pt-card-title);
  }

  .leisure-card__text {
    font-size: var(--pt-card-text);
  }
}

/* --- Макет 1920: те же места, 3 карточки; панель не шире 1870 и по центру --- */
@media (width > 90em) {
  .leisure__panel {
    --u: min(0.052083vw, 1px);
    --leisure-n: 3;
    --leisure-gap: calc(17 * var(--u));
    --leisure-ratio: 397 / 276;
    max-width: 116.875rem;
    margin-inline: max(1.5625rem, calc((100% - 116.875rem) / 2));
    grid-template-columns: calc(570 * var(--u)) minmax(0, 1fr);
    padding: calc(67 * var(--u)) calc(70 * var(--u)) calc(78 * var(--u)) 0;
  }

  .leisure__title {
    margin: calc(-19 * var(--u)) 0 0;
    padding-inline: calc(93 * var(--u)) calc(20 * var(--u));
    font-size: var(--pt-title);
  }

  .leisure__arrows {
    margin-block-start: calc(26 * var(--u));
  }

  .leisure__button {
    min-height: max(3rem, calc(65 * var(--u)));
    margin-inline-start: calc(100 * var(--u));
    padding-inline: calc(41 * var(--u)) calc(14 * var(--u));
  }

  .leisure__button .button__icon {
    width: calc(38 * var(--u));
    height: calc(38 * var(--u));
  }

  .leisure-card__body {
    gap: max(0.5rem, calc(14 * var(--u)));
    padding: calc(32 * var(--u)) calc(28 * var(--u)) calc(38 * var(--u));
  }

  .leisure-card__title {
    font-size: var(--pt-card-title);
  }

  .leisure-card__text {
    font-size: var(--pt-card-text);
  }
}


/* ==========================================================================
   Страница «Развлечения и отдых»
   leisure-intro — метка и два текстовых столбца; excursions — белая панель с плитками.
   Макеты: 393 / 834 (держится от 40em) / 1440 / 1920.
   ========================================================================== */
.leisure-intro__inner {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.5rem;
}

.leisure-intro__tag {
  justify-self: start;
}

.leisure-intro__text {
  font-size: 0.875rem;
  line-height: 1.5;
}

.leisure-intro__text > * {
  margin: 0;
}

.leisure-intro__text > * + * {
  margin-block-start: 1.3em;
}

/* 834: метка слева, оба текста друг под другом справа */
@media (width > 40em) {
  .leisure-intro__inner {
    grid-template-columns: 32.75fr 67.25fr;
    align-items: start;
    gap: 1.75rem 0;
  }

  .leisure-intro__tag {
    grid-row: 1 / span 2;
  }

  .leisure-intro__text {
    grid-column: 2;
    font-size: 1rem;
    line-height: 1.55;
  }
}

/* 1440: метка | текст | текст */
@media (width > 52.125em) {
  .leisure-intro__inner {
    grid-template-columns: 20fr 43fr 37fr;
    gap: 0;
  }

  .leisure-intro__tag {
    grid-row: auto;
  }

  .leisure-intro__text--first {
    padding-inline-end: 3.25rem;
  }

  .leisure-intro__text--second {
    grid-column: 3;
  }
}

/* 1920 */
@media (width > 90em) {
  .leisure-intro__inner {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: 1.75rem;
  }

  .leisure-intro__text {
    font-size: 1.125rem;
  }

  .leisure-intro__text--first {
    max-width: 30.25rem;
    padding-inline-end: 0;
  }
}

/* --- Экскурсионные программы --- */
.excursions__panel {
  --excursion-radius: 1.375rem;
  --excursion-ratio: 342 / 244;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "title" "list" "button";
  margin-inline: 0.875rem;
  padding: 1.75rem 0.625rem 0.9375rem;
  border-radius: var(--radius-panel);
  background-color: var(--color-surface);
}

.excursions__title {
  grid-area: title;
  margin: 0 0 1.5rem;
  padding-inline: 0.75rem;
  font-size: var(--pt-title);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: var(--tracking-tight);
}

.excursions__button {
  grid-area: button;
  --button-icon-color: var(--color-text);
  justify-content: center;
  gap: 1.125rem;
  min-height: 3.125rem;
  margin-block-start: 0.75rem;
  font-size: 0.9375rem;
}

.excursions__list {
  grid-area: list;
  min-width: 0;
}

.excursions-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0.6875rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.excursion {
  position: relative;
  display: flex;
  aspect-ratio: var(--excursion-ratio);
  overflow: clip;
  isolation: isolate;
  padding: 1.4375rem 1.3125rem;
  border-radius: var(--excursion-radius);
  background-color: var(--color-green-800);
  color: var(--color-text-inverse);
}

.excursion__image {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.excursion__title {
  align-self: flex-start;
  max-width: 10em;
  text-wrap: balance;
  margin: 0;
  font-size: var(--pt-tile);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: -0.02em;
}

/* 834: две колонки, кнопка справа от заголовка */
@media (width > 40em) {
  .excursions__panel {
    --excursion-radius: 1.5625rem;
    --excursion-ratio: 372 / 274;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "title button" "list list";
    align-items: end;
    margin-inline: 0.9375rem;
    padding: 2rem 0.9375rem 3.1875rem;
  }

  .excursions__title {
    margin: 0 0 2.9375rem;
    padding-inline: 0.4375rem;
    font-size: var(--pt-title);
  }

  .excursions__button {
    min-width: 12.5rem;
    min-height: 3.125rem;
    margin: 0 0.75rem 2.9375rem 1rem;
    justify-content: space-between;
    padding-inline: 1.875rem 0.5625rem;
  }

  .excursions-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem 1.875rem;
  }

  .excursion {
    padding: 1.6875rem 1.4375rem;
  }

  .excursion__title {
    font-size: var(--pt-tile);
  }
}

/* 1440: три колонки */
@media (width > 52.125em) {
  .excursions__panel {
    --excursion-radius: 1.75rem;
    --excursion-ratio: 424 / 346;
    margin-inline: 1.5625rem;
    padding: 3.1875rem 2.8125rem 5.625rem;
  }

  .excursions__title {
    max-width: 10em;
    padding-inline: 0.25rem 1rem;
    font-size: var(--pt-title);
  }

  .excursions__button {
    margin: 0 0.4375rem 1.8125rem 1rem;
  }

  .excursions-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
  }

  .excursion {
    padding: 1.9375rem 1.625rem;
  }

  .excursion__title {
    font-size: var(--pt-tile);
  }
}

/* 1920: панель не шире 1870 и по центру */
@media (width > 90em) {
  .excursions__panel {
    --excursion-ratio: 582 / 381;
    max-width: 116.875rem;
    margin-inline: max(1.5625rem, calc((100% - 116.875rem) / 2));
    padding: 5.75rem 2.8125rem 4.0625rem;
  }

  .excursions__title {
    max-width: none;
    margin-block-end: 2.1875rem;
    padding-inline: 0.1875rem;
    font-size: var(--pt-title);
  }

  .excursions__button {
    min-width: 12.5rem;
    min-height: 4.0625rem;
    margin: 0 0 2.1875rem 1rem;
    padding-inline: 2.5rem 0.875rem;
    font-size: 1rem;
  }

  .excursions-grid {
    gap: 1rem 0.9375rem;
  }

  .excursion {
    padding: 2.1875rem;
  }
}


/* ==========================================================================
   Страница «Развлечения и отдых»: большой слайдер (ent-slider), «Кинотеатр» (cinema), баннер «Запланируйте свой отдых»
   Слайдер: слайд = один элемент инфоблока, стрелки и точки лежат на фото внутри слайда.
   Макеты: 393 (до 40em) / 834 / 1440 (текст слева, фото справа) / 1920 (размеры считаются через --u).
   ========================================================================== */
.ent-slider {
  --ent-duration: 1.4s;
  --ent-ease: cubic-bezier(0.76, 0, 0.24, 1);
  --ent-ease-text: cubic-bezier(0.22, 0.61, 0.36, 1);
  position: relative;
  overflow: clip;
  touch-action: pan-y;
}

/* Слайды лежат друг на друге в одной ячейке; видим активный и уходящий */
.ent-slider__track {
  display: grid;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ent-slider__slide {
  grid-area: 1 / 1;
  min-width: 0;
  visibility: hidden;
  pointer-events: none;
}

.ent-slider__slide.is-active {
  z-index: 2;
  visibility: visible;
  pointer-events: auto;
}

.ent-slider__slide.is-leaving {
  z-index: 1;
  visibility: visible;
}

.ent-slide {
  --u: 1px;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "media" "title" "text" "button";
  grid-template-rows: auto;
  padding-inline: max(var(--container-gutter), calc((100% - var(--container-width)) / 2));
}

.ent-slide__tag {
  display: none;
  grid-area: tag;
  justify-self: start;
}

.ent-slide__title {
  grid-area: title;
  margin: 1.6rem 0 0;
  font-size: var(--pt-slide-title);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: var(--tracking-tight);
  text-transform: uppercase;
}

.ent-slide__text {
  grid-area: text;
  margin-block-start: 1.2rem;
  font-size: var(--pt-slide-text);
  line-height: 1.5;
}

.ent-slide__text > * {
  margin: 0;
}

.ent-slide__text > * + * {
  margin-block-start: 1em;
}

/* Телефон: на 834 и уже — золотая обводка, шире — золотая заливка */
.ent-slide__button {
  --button-bg: transparent;
  --button-border: var(--color-accent);
  --button-bg-hover: var(--color-accent);
  --button-icon-bg: var(--color-accent);
  --button-icon-color: var(--color-text-inverse);
  --button-icon-bg-hover: var(--color-surface);
  grid-area: button;
  justify-content: center;
  gap: 1rem;
  min-height: 3.125rem;
  margin-block-start: 1.75rem;
  font-size: 1rem;
}

.ent-slide__button .button__icon {
  width: 1.5rem;
  height: 1.5rem;
}

.ent-slide__media {
  position: relative;
  grid-area: media;
  aspect-ratio: 363 / 406;
  overflow: clip;
  border-radius: var(--radius-panel);
  background-color: var(--color-neutral-300);
}

.ent-slide__image {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  user-select: none;
}

.ent-slide__controls {
  position: absolute;
  inset: auto 1.5625rem 0.6875rem 1.5625rem;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  pointer-events: none;
}

.ent-slide__arrows {
  display: flex;
  gap: 0.3125rem;
  pointer-events: auto;
}

.ent-slide__arrows[hidden] {
  display: none;
}

.ent-slide__arrows .slider-arrow--prev {
  background-color: var(--color-surface);
  border-color: var(--color-surface);
}

.ent-slide__arrows .slider-arrow:disabled {
  opacity: 0.6;
}

.ent-slide__dots {
  display: none;
  pointer-events: none;
}

.ent-slide__dots .slider-dots__button {
  min-width: 0.875rem;
  min-height: 1.125rem;
  pointer-events: auto;
}

.ent-slide__dots .slider-dots__button::before {
  width: 0.4375rem;
  height: 0.4375rem;
  background-color: var(--color-neutral-500);
}

.ent-slide__dots .slider-dots__button--active::before {
  width: 2.125rem;
  background-color: var(--color-accent);
}

/* --- Макет 834: фото сверху, заголовок и кнопка слева, текст справа --- */
@media (width > 40em) {
  .ent-slide {
    grid-template-columns: 55fr 45fr;
    grid-template-areas: "media media" "title text" "button text";
    grid-template-rows: auto auto 1fr;
    column-gap: 1.5rem;
  }

  .ent-slide__media {
    aspect-ratio: 775 / 550;
  }

  .ent-slide__title {
    margin-block-start: 3rem;
    padding-inline-end: 1.5rem;
    font-size: var(--pt-slide-title);
  }

  .ent-slide__text {
    margin-block-start: 3.1rem;
    font-size: var(--pt-slide-text);
    line-height: 1.4;
  }

  .ent-slide__button {
    justify-self: start;
    align-self: end;
    min-width: 15.75rem;
    min-height: 3rem;
    margin-block-start: 1.5rem;
    padding-inline: 2.25rem 0.5625rem;
    justify-content: space-between;
  }

  .ent-slide__button .button__icon {
    width: 2.25rem;
    height: 2.25rem;
  }

  .ent-slide__controls {
    inset: auto 1.5625rem 1.75rem 3.25rem;
    justify-content: space-between;
  }

  .ent-slide__dots {
    display: flex;
  }
}

/* --- Макет 1440: текст слева, фото справа до края панели --- */
@media (width > 52.125em) {
  .ent-slide {
    --u: min(0.069444vw, 1px);
    --ent-btn-pad: 2.1875rem;
    grid-template-columns: calc(584 * var(--u)) minmax(0, 1fr);
    grid-template-areas: "tag media" "title media" "text media" "button media";
    grid-template-rows: auto auto 1fr auto;
    column-gap: 0;
    padding-inline: max(var(--container-gutter), calc((100% - var(--container-width)) / 2)) var(--panel-inset);
  }

  .ent-slide__tag {
    display: inline-flex;
    margin-block-end: 1.75rem;
  }

  .ent-slide__title {
    max-width: 7em;
    margin: 0;
    padding-inline-end: 0;
    font-size: var(--pt-slide-title);
    line-height: 1.24;
    text-transform: none;
  }

  .ent-slide__text {
    max-width: 32rem;
    margin-block-start: 1.5rem;
    font-size: var(--pt-slide-text);
    line-height: 1.55;
  }

  .ent-slide__media {
    aspect-ratio: 763 / 581;
  }

  .ent-slide__button {
    --button-bg: var(--color-accent);
    --button-border: transparent;
    --button-bg-hover: var(--color-text);
    --button-color-hover: var(--color-text-inverse);
    --button-icon-bg: var(--color-surface);
    --button-icon-color: var(--color-text);
    --button-icon-bg-hover: var(--color-accent);
    min-width: 15rem;
    margin-block-start: 1.5rem;
    padding-inline: var(--ent-btn-pad) 0.625rem;
  }

  .ent-slide__button .button__icon {
    width: 2.125rem;
    height: 2.125rem;
  }

  .ent-slide__controls {
    inset: auto 1rem 1.375rem 1.75rem;
  }
}

/* --- Макет 1920 --- */
@media (width > 90em) {
  .ent-slide {
    --u: min(0.052083vw, 1px);
    grid-template-columns: calc(694 * var(--u)) minmax(0, 1fr);
  }

  .ent-slide__tag {
    margin-block-end: 2.75rem;
  }

  .ent-slide__title {
    max-width: none;
    padding-inline-end: 1rem;
    font-size: var(--pt-slide-title);
    line-height: 1.15;
  }

  .ent-slide__text {
    max-width: 37.5rem;
    margin-block-start: 2.1rem;
    font-size: var(--pt-slide-text);
    line-height: 1.46;
  }

  .ent-slide__media {
    aspect-ratio: 1077 / 725;
  }

  .ent-slide__button {
    --ent-btn-pad: 3rem;
    min-width: 19.8125rem;
    min-height: 4.0625rem;
    gap: 1.25rem;
    padding-inline-end: 0.875rem;
    font-size: max(1rem, calc(21.3 * var(--u)));
  }

  .ent-slide__button .button__icon {
    width: 2.8125rem;
    height: 2.8125rem;
  }

  .ent-slide__controls {
    inset: auto 1.6875rem 1.75rem 3rem;
  }

  .ent-slide__arrows {
    gap: 0.75rem;
  }

  .ent-slide__arrows .slider-arrow {
    width: 6.25rem;
    height: 2.5rem;
  }

  .ent-slide__arrows .slider-arrow__icon {
    width: 4.375rem;
  }
}

/* --- Кинотеатр: только от макета 1440, на 834 и уже блока нет --- */
.cinema {
  display: none;
}

@media (width > 52.125em) {
  .cinema {
    display: block;
  }

  .cinema__head {
    display: grid;
    grid-template-columns: 35fr 65fr;
    align-items: start;
    margin-block-end: 2.5rem;
  }

  .cinema__tag {
    grid-row: 1 / span 2;
    justify-self: start;
  }

  .cinema__title {
    grid-column: 2;
    margin: 0;
    font-size: var(--pt-title);
    font-weight: 400;
    line-height: 1.15;
    letter-spacing: var(--tracking-tight);
  }

  .cinema__text {
    grid-column: 2;
    max-width: 48.75rem;
    margin-block-start: 1.75rem;
    font-size: 1rem;
    line-height: 1.55;
  }

  .cinema__text > * {
    margin: 0;
  }

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

  .cinema-card {
    height: 100%;
    padding: 1.25rem 1.25rem 2rem;
    border-radius: 1.75rem;
    background-color: var(--color-surface);
  }

  .cinema-card__media {
    position: relative;
    aspect-ratio: 384 / 235;
    overflow: clip;
    border-radius: 1.375rem;
    background-color: var(--color-neutral-300);
  }

  .cinema-card__image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  .cinema-card__title {
    margin: 2.0625rem 0 0;
    padding-inline: 0;
    font-size: 2rem;
    font-weight: 400;
    line-height: 1.1;
    letter-spacing: var(--tracking-tight);
    text-transform: uppercase;
  }
}

@media (width > 90em) {
  .cinema__title {
    font-size: var(--pt-title);
  }

  .cinema__text {
    font-size: 1.125rem;
  }

  .cinema-card__media {
    aspect-ratio: 533 / 350;
  }
}

/* --- Баннер «Запланируйте свой отдых»: рейтинг только на самом узком макете --- */
@media (width > 28em) {
  .feedback--call .feedback__rating {
    display: none;
  }
}


/* ==========================================================================
   Тексты внутри колонок/карточек масштабируются вместе с самой карточкой
   (в пределах макета: --u = ширина экрана / ширина макета, не больше 1px)
   ========================================================================== */
.leisure-card__title { font-size: 1.25rem; }
.leisure-card__text { font-size: 0.8375rem; }
.ent-slide__title { font-size: 1.125rem; }
.ent-slide__text { font-size: 0.7875rem; }
.excursion__title,
.cinema-card__title,
.leisure-card__title { overflow-wrap: break-word; }

@media (width > 40em) {
  .leisure, .excursions, .cinema, .ent-slider { --u: min(0.1199vw, 1px); }

  .leisure-card__title { font-size: max(1.0625rem, calc(24 * var(--u))); }
  .leisure-card__text { font-size: max(0.75rem, calc(14 * var(--u))); }
  .excursion__title { font-size: max(1.0625rem, calc(28 * var(--u))); }
  .ent-slide__title { font-size: max(1.125rem, calc(24 * var(--u))); }
  .ent-slide__text { font-size: max(0.75rem, calc(14.7 * var(--u))); }
}

@media (width > 52.125em) {
  .leisure, .excursions, .cinema, .ent-slider { --u: min(0.069444vw, 1px); }

  .leisure-card__title { font-size: max(1.0625rem, calc(32 * var(--u))); }
  .leisure-card__text { font-size: max(0.75rem, calc(16 * var(--u))); }
  .excursion { padding: calc(31 * var(--u)) calc(26 * var(--u)); }
  .excursion__title { font-size: max(1.0625rem, calc(32 * var(--u))); }
  .ent-slide__title { font-size: max(1.5rem, calc(63 * var(--u))); }
  .ent-slide__text { font-size: max(0.75rem, calc(16 * var(--u))); }
  .cinema-card { padding: calc(20 * var(--u)) calc(20 * var(--u)) calc(32 * var(--u)); border-radius: calc(28 * var(--u)); }
  .cinema-card__media { border-radius: calc(22 * var(--u)); }
  .cinema-card__title { margin-block-start: calc(33 * var(--u)); font-size: max(1.0625rem, calc(32 * var(--u))); }
}

@media (width > 90em) {
  .leisure, .excursions, .cinema, .ent-slider { --u: min(0.052083vw, 1px); }

  .leisure-card__title { font-size: max(1.0625rem, calc(36 * var(--u))); }
  .leisure-card__text { font-size: max(0.75rem, calc(18 * var(--u))); }
  .excursion { padding: calc(31 * var(--u)) calc(26 * var(--u)); }
  .excursion__title { font-size: max(1.0625rem, calc(32 * var(--u))); }
  .ent-slide__title { font-size: max(1.5rem, calc(72 * var(--u))); }
  .ent-slide__text { font-size: max(0.75rem, calc(19.2 * var(--u))); }
  .cinema-card { padding: calc(20 * var(--u)) calc(20 * var(--u)) calc(32 * var(--u)); border-radius: calc(28 * var(--u)); }
  .cinema-card__media { border-radius: calc(22 * var(--u)); }
  .cinema-card__title { margin-block-start: calc(33 * var(--u)); font-size: max(1.0625rem, calc(32 * var(--u))); }
}


/* ==========================================================================
   Слайдер «Развлечения»: «люксовая» смена слайдов.
   Фото выезжает шторкой (медленно, с параллаксом), текст слева гаснет
   и проявляется заново по очереди: метка → заголовок → текст → кнопка.
   Классы ставит script.js (initEntSlider): is-entering / is-leaving, направление — data-dir.
   ========================================================================== */
.ent-slide__tag { --i: 0; }
.ent-slide__title { --i: 1; }
.ent-slide__text { --i: 2; }
.ent-slide__button { --i: 3; }

@keyframes ent-rise {
  from { opacity: 0; transform: translateY(1.75rem); }
  to { opacity: 1; transform: none; }
}

@keyframes ent-fade-out {
  from { opacity: 1; transform: none; }
  to { opacity: 0; transform: translateY(-1rem); }
}

@keyframes ent-curtain-next {
  from { clip-path: inset(0 0 0 100%); }
  to { clip-path: inset(0 0 0 0); }
}

@keyframes ent-curtain-prev {
  from { clip-path: inset(0 100% 0 0); }
  to { clip-path: inset(0 0 0 0); }
}

@keyframes ent-image-in-next {
  from { transform: translateX(14%) scale(1.18); }
  to { transform: none; }
}

@keyframes ent-image-in-prev {
  from { transform: translateX(-14%) scale(1.18); }
  to { transform: none; }
}

@keyframes ent-image-out-next {
  from { transform: none; }
  to { transform: translateX(-14%) scale(1.04); }
}

@keyframes ent-image-out-prev {
  from { transform: none; }
  to { transform: translateX(14%) scale(1.04); }
}

@media (prefers-reduced-motion: no-preference) {
  .ent-slide__tag,
  .ent-slide__title,
  .ent-slide__text,
  .ent-slide__button {
    animation-fill-mode: both;
  }

  /* уходящий слайд: текст мягко гаснет */
  .is-leaving .ent-slide__tag,
  .is-leaving .ent-slide__title,
  .is-leaving .ent-slide__text,
  .is-leaving .ent-slide__button {
    animation: ent-fade-out 0.6s var(--ent-ease-text) both;
  }

  /* новый слайд: текст проявляется после того, как шторка пошла */
  .is-entering .ent-slide__tag,
  .is-entering .ent-slide__title,
  .is-entering .ent-slide__text,
  .is-entering .ent-slide__button {
    animation: ent-rise 1.1s var(--ent-ease-text) both;
    animation-delay: calc(0.5s + var(--i) * 0.13s);
  }

  [data-dir="next"] .is-entering .ent-slide__media { animation: ent-curtain-next var(--ent-duration) var(--ent-ease) both; }
  [data-dir="prev"] .is-entering .ent-slide__media { animation: ent-curtain-prev var(--ent-duration) var(--ent-ease) both; }
  [data-dir="next"] .is-entering .ent-slide__image { animation: ent-image-in-next calc(var(--ent-duration) * 1.2) var(--ent-ease) both; }
  [data-dir="prev"] .is-entering .ent-slide__image { animation: ent-image-in-prev calc(var(--ent-duration) * 1.2) var(--ent-ease) both; }
  [data-dir="next"] .is-leaving .ent-slide__image { animation: ent-image-out-next var(--ent-duration) var(--ent-ease) both; }
  [data-dir="prev"] .is-leaving .ent-slide__image { animation: ent-image-out-prev var(--ent-duration) var(--ent-ease) both; }
}
/* End */
/* /local/templates/arkhyz_royal/template_styles.css?1791832493147783 */
