

/* Start:/local/templates/arkhyz_royal/template_styles.css?179149713894065*/
/* ==========================================================================
   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  подписи, метки */

  --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);
  }
}


/* ==========================================================================
   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;
  font-size: var(--fs-display);
}

.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: clamp(1.75rem, 0.9rem + 3.5vw, 4.5rem);
  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: clamp(2.0625rem, 0.781rem + 3.9vw, 4.5rem);
  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;
  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: clamp(4rem, 4rem + (100vw - 90rem) * 0.0167, 4.5rem);
  }

  .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: clamp(2rem, 1.06rem + 4.08vw, 3.25rem);
  white-space: nowrap;
}

@media (width > 52.125em) {
  .ask__title {
    font-size: clamp(2.0625rem, 0.781rem + 3.9vw, 4.5rem);
  }

  .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: clamp(2.0625rem, 0.781rem + 3.9vw, 4.5rem);
  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);
}
/* End */
/* /local/templates/arkhyz_royal/template_styles.css?179149713894065 */
