:root {
  --gold: #daa520;
  --taupe: #988f87;
  --taupe-dark: #6b645d;
  --sand: #b49f84;
  --text: #595959;
  --white: #fff;
  --gutter: 25px;
  --font: "Oswald", "Arial Narrow", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font);
  color: var(--text);
  background: var(--white);
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }

.container { max-width: 1390px; margin: 0 auto; }

/* ---------- Кнопки ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font);
  font-size: 16px;
  letter-spacing: .5px;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .95);
  background: var(--gold);
  border: 0;
  border-radius: 2px;
  padding: 11px 15px;
  cursor: pointer;
  transition: background-color .25s, box-shadow .25s;
}
.btn:hover { background: #c4931a; }
.btn--dark { background: var(--taupe-dark); font-size: 18px; padding: 15px 25px; min-width: 240px; }
.btn--dark:hover { background: #57514b; box-shadow: 0 6px 14px rgba(0, 0, 0, .15); }

/* ---------- Ссылка WhatsApp (значок + номер) ---------- */
.wa { display: inline-flex; align-items: center; gap: 6px; }
.wa__ico { width: 1.2em; height: 1.2em; flex-shrink: 0; fill: #25d366; }
.btn .wa__ico, .btn.wa .wa__ico { fill: currentColor; }

/* ---------- Логотип ---------- */
.logo { display: flex; align-items: center; gap: 10px; height: 56px; }
.logo img { height: 56px; width: auto; }
.logo__mark {
  font-size: 46px; font-weight: 300; line-height: 1;
  color: var(--white); position: relative; padding: 0 4px;
}
.logo__name {
  font-size: 15px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold);
  line-height: 1.1; max-width: 110px;
}

/* ---------- Верхнее меню на первом экране ---------- */
.topbar {
  position: relative; z-index: 5;
  background: var(--taupe);
  padding: 0 var(--gutter);
}
.topbar__contacts {
  display: flex; gap: 15px; padding: 14px 0 0;
  font-size: 12px; color: var(--white);
}
.topbar__row {
  display: flex; align-items: center; justify-content: space-between;
  min-height: 72px;
}
.nav { display: flex; align-items: center; }
.nav__link {
  font-size: 16px; color: var(--white); padding: 20px 15px;
  border-bottom: 1px solid transparent; transition: border-color .25s, color .25s;
}
.nav__link:hover, .nav__link.is-current { border-bottom-color: var(--white); }
.nav .btn { margin-left: 15px; font-size: 15px; }

.lang { position: relative; margin-left: 12px; color: var(--white); font-size: 14px; }
.lang__toggle {
  background: none; border: 0; color: inherit; font: inherit; cursor: pointer;
  display: flex; align-items: center; gap: 6px; padding: 6px;
}
.lang__toggle::after { content: ""; width: 6px; height: 6px; border: solid currentColor; border-width: 0 1.5px 1.5px 0; transform: rotate(45deg) translateY(-2px); }
.lang__list {
  position: absolute; right: 0; top: 100%; min-width: 120px;
  background: var(--white); box-shadow: 0 8px 20px rgba(0, 0, 0, .15);
  display: none; flex-direction: column; padding: 6px 0;
}
.lang.is-open .lang__list { display: flex; }
.lang__toggle img, .lang__list img { width: 18px; height: 12px; object-fit: cover; box-shadow: 0 0 0 1px rgba(0, 0, 0, .1); }
.lang__list { min-width: 140px; }
.lang__list a { color: var(--text); padding: 6px 14px; display: flex; align-items: center; gap: 8px; }
.lang__list a:hover, .lang__list a.is-active { color: var(--gold); }

.burger {
  display: none; width: 44px; height: 44px; background: none; border: 0; cursor: pointer;
  position: relative;
}
.burger span, .burger::before, .burger::after {
  content: ""; position: absolute; left: 10px; right: 10px; height: 2px; background: currentColor;
}
.burger span { top: 21px; }
.burger::before { top: 14px; }
.burger::after { top: 28px; }

/* ---------- Фиксированное меню при прокрутке ---------- */
.fixedbar {
  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
  height: 70px; padding: 0 var(--gutter);
  background: var(--white);
  box-shadow: 0 20px 25px -10px rgba(0, 0, 0, .2);
  transform: translateY(-100%); transition: transform .35s ease;
}
.fixedbar.is-visible { transform: translateY(0); }
.fixedbar .container { height: 100%; display: flex; align-items: center; justify-content: space-between; }
.fixedbar .logo { height: 50px; }
.fixedbar .logo__mark { color: var(--taupe-dark); font-size: 40px; }
.fixedbar .nav__link { color: var(--text); padding: 12px 15px; }
.fixedbar .nav__link:hover { color: var(--gold); border-bottom-color: transparent; }
.fixedbar .nav__link.is-current { color: var(--gold); border-bottom-color: var(--gold); }
.fixedbar .burger { color: var(--taupe-dark); }

/* ---------- Бегущая строка с акцией (все страницы) ---------- */
:root { --promo-h: 54px; } /* высота строки — от неё же отступы меню и первого экрана */
.promo {
  position: sticky; top: 0; z-index: 55; /* всегда видна вверху экрана при прокрутке */
  display: flex; align-items: center; height: var(--promo-h); overflow: hidden;
  background: #7a1c1c; color: #f6ead2;
  border-bottom: 1px solid var(--gold);
  font-size: 20px; letter-spacing: .7px; text-transform: uppercase; white-space: nowrap;
}
.promo__track { display: flex; width: max-content; animation: promo-run 45s linear infinite; }
.promo:hover .promo__track, .promo:focus-visible .promo__track { animation-play-state: paused; }
.promo__run { display: flex; align-items: center; }
.promo__item { padding: 0 24px; }
.promo b { color: #e8b84a; font-weight: 500; }
.promo__hms { display: inline-block; width: 4.2em; font-variant-numeric: tabular-nums; }
.promo__ico { width: 18px; height: 18px; flex-shrink: 0; color: #e8b84a; }
.promo__cta { margin: 0 24px; padding: 5px 16px; border-radius: 2px; background: var(--gold); color: var(--white); }
.promo ~ .hero { min-height: calc(100vh - var(--promo-h)); }
/* Белое меню при прокрутке выезжает под строкой, а не поверх неё */
.promo ~ .fixedbar { top: var(--promo-h); }
.promo ~ .fixedbar:not(.is-visible) { transform: translateY(calc(-100% - var(--promo-h))); }
@keyframes promo-run { to { transform: translateX(-50%); } }
@media (max-width: 767px) {
  :root { --promo-h: 46px; }
  .promo { font-size: 17px; }
  .promo__item { padding: 0 16px; }
  .promo__ico { width: 16px; height: 16px; }
  .promo__cta { margin: 0 16px; padding: 4px 12px; }
}
/* Кому движение мешает (настройка системы) — строка стоит на месте */
@media (prefers-reduced-motion: reduce) {
  .promo { position: static; height: auto; padding: 10px var(--gutter); white-space: normal; justify-content: center; }
  .promo ~ .fixedbar { top: 0; }
  .promo ~ .fixedbar:not(.is-visible) { transform: translateY(-100%); }
  .promo__track { animation: none; width: auto; }
  .promo__run { flex-wrap: wrap; justify-content: center; row-gap: 8px; }
  .promo__run[aria-hidden] { display: none; }
}

/* ---------- Первый экран ---------- */
.hero {
  position: relative;
  min-height: 100vh;
  display: flex; flex-direction: column;
  background: var(--taupe-dark) center / cover no-repeat;
}
.hero__heading {
  margin-top: auto;
  text-align: center; color: var(--white);
  padding: 20px var(--gutter) 10px;
  background: linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .5));
}
.hero__title { font-size: 56px; line-height: 1; font-weight: 400; text-transform: uppercase; margin: 0; }
.hero__subtitle { font-size: 28px; line-height: 40px; font-weight: 400; margin: 10px 0; }

/* ---------- Форма бронирования ---------- */
.booking {
  padding: 15px var(--gutter) 0;
}
.hero .booking { background: linear-gradient(rgba(0, 0, 0, .5), rgba(0, 0, 0, .5)); padding-bottom: 15px; }
.booking__row {
  max-width: 1000px; margin: 0 auto;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; align-items: end;
  text-align: left;
}
.booking__label {
  display: block; font-size: 14px; font-weight: 500; text-transform: uppercase;
  color: var(--white); margin-bottom: 5px;
}
.booking__field { position: relative; display: block; cursor: pointer; }
.booking__value {
  display: block; font-size: 17px; font-weight: 500; line-height: 19px;
  color: var(--white);
  border-top: 1px solid rgba(255, 255, 255, .9);
  padding: 9px 0 10px; margin-bottom: 10px;
}
.booking__value small { font-size: 12px; text-transform: uppercase; }
.booking__date {
  position: absolute; inset: 0; width: 100%; height: 100%;
  opacity: 0; cursor: pointer; border: 0; padding: 0; color-scheme: light;
}
.booking__date::-webkit-calendar-picker-indicator { position: absolute; inset: 0; width: 100%; height: 100%; cursor: pointer; }
.booking__field:focus-within .booking__value { border-top-color: var(--gold); }
.booking .btn { width: 100%; min-height: 50px; box-shadow: 1px 1px 7px rgba(0, 0, 0, .15); margin-bottom: 10px; }

/* ---------- Заголовки секций ---------- */
.section { padding: 60px var(--gutter) 20px; }
.section-title {
  font-size: 30px; font-weight: 300; letter-spacing: -.6px; line-height: 1.35;
  text-transform: uppercase; color: var(--text); margin: 0 0 10px;
}
.separator { width: 300px; max-width: 100%; border-bottom: .5px solid var(--taupe-dark); margin: 0 0 15px; }
.center { text-align: center; }
.center .separator { margin-left: auto; margin-right: auto; }
.intro { margin-bottom: 60px; }
.intro__text {
  max-width: 900px; margin: 0 auto; padding-top: 10px;
  font-size: 18px; font-weight: 300; line-height: 28px;
}
.intro__text strong { font-weight: 500; }

/* ---------- Карточки объектов ---------- */
.item {
  display: grid; grid-template-columns: 7fr 5fr;
  margin-bottom: 40px;
}
.item__img {
  height: 450px; overflow: hidden;
  background: linear-gradient(135deg, var(--taupe), var(--taupe-dark));
}
.item__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.item:hover .item__img img { transform: scale(1.04); }
.item__body { padding: 25px 20px; display: flex; flex-direction: column; justify-content: center; }
.item__body .separator { border-bottom-color: var(--sand); }
.item__text { font-size: 18px; font-weight: 300; line-height: 28px; margin: 0 0 10px; }
.item__body .btn { align-self: flex-start; }
.img-fallback {
  width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;
  color: rgba(255, 255, 255, .85); font-size: 18px; letter-spacing: 1px; text-transform: uppercase;
}

/* ---------- Полоса со скидкой ---------- */
.cta {
  padding: 60px var(--gutter);
  background: linear-gradient(var(--taupe), var(--taupe-dark));
  color: var(--white);
}
.cta .section-title { color: var(--white); }
.cta .separator { border-bottom-color: var(--white); }
.cta__subtitle { font-size: 18px; font-weight: 400; margin: 0 0 10px; }
.cta .booking .btn { min-height: 45px; }

/* ---------- Подвал ---------- */
.footer { background: var(--taupe-dark); color: var(--white); padding: 60px var(--gutter) 0; }
.footer__row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; padding-bottom: 20px; }
.footer__info { font-size: 14px; font-weight: 300; line-height: 26px; margin-top: 15px; }
.footer__info a:hover { color: var(--gold); }
.footer__social { display: flex; justify-content: center; align-items: center; gap: 10px; }
.social-ico {
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--white); color: var(--taupe-dark);
  display: flex; align-items: center; justify-content: center;
  transition: background-color .25s;
}
.social-ico:hover { background: var(--gold); color: var(--white); }
.social-ico svg { width: 16px; height: 16px; fill: currentColor; }
.footer__menu { display: flex; flex-direction: column; align-items: flex-end; }
.footer__menu a {
  font-size: 14px; font-weight: 300; line-height: 26px; margin-bottom: 3px;
  border-bottom: .5px solid transparent;
}
.footer__menu a:hover { border-bottom-color: var(--white); }
.footer__bottom {
  display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px;
  border-top: .5px solid rgba(255, 255, 255, .25);
  padding: 12px 0; font-size: 12px;
}
.footer__bottom a { margin-left: 6px; }
.footer__bottom a:hover { color: var(--gold); }

/* ---------- Нижняя панель на телефоне ---------- */
.toolbar {
  display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
  height: 40px; background: var(--taupe-dark); box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, .15);
}
.toolbar__link {
  width: 20%; display: flex; align-items: center; justify-content: center;
  border-right: .5px solid rgba(255, 255, 255, .2);
}
.toolbar__link img { width: 17px; height: 17px; }
.toolbar__link svg { width: 19px; height: 19px; fill: var(--white); }
.toolbar__btn { flex: 1; border-radius: 0; font-size: 14px; }

/* ---------- Мобильное меню ---------- */
.mobile-menu {
  position: fixed; inset: 0; z-index: 60;
  background: rgba(107, 100, 93, .98);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px;
  opacity: 0; pointer-events: none; transition: opacity .3s;
}
.mobile-menu.is-open { opacity: 1; pointer-events: auto; }
.mobile-menu__links { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.mobile-menu__langs { display: flex; gap: 14px; margin-top: 22px; }
.mobile-menu__langs a { padding: 6px; opacity: .6; }
.mobile-menu__langs a.is-active { opacity: 1; }
.mobile-menu__langs img { width: 30px; height: 20px; object-fit: cover; }
.mobile-menu a { color: var(--white); font-size: 22px; padding: 8px 16px; }
.mobile-menu a.is-current { color: var(--gold); }
.mobile-menu .btn { margin-top: 14px; }
.mobile-menu__close {
  position: absolute; top: 16px; right: 16px; width: 44px; height: 44px;
  background: none; border: 0; color: var(--white); font-size: 34px; cursor: pointer;
}

/* ---------- Адаптив ---------- */
@media (max-width: 991px) {
  .topbar__contacts { display: none; }
  .nav { display: none; }
  .burger { display: block; color: var(--white); }
  .topbar__row { min-height: 80px; }
  .item { grid-template-columns: 1fr; }
  .item__img { height: 380px; }
  .item__body { align-items: center; text-align: center; }
  .item__body .separator { margin-left: auto; margin-right: auto; }
  .item__body .btn { align-self: center; }
  .footer__row { grid-template-columns: 1fr; text-align: center; }
  .footer__row .logo { justify-content: center; }
  .footer__menu { align-items: center; }
}

@media (max-width: 767px) {
  :root { --gutter: 16px; }
  .hero__title { font-size: 40px; }
  .hero__subtitle { font-size: 22px; line-height: 30px; }
  .booking__row { grid-template-columns: 1fr 1fr; gap: 12px; }
  .booking__row > :last-child { grid-column: 1 / -1; }
  .section-title { font-size: 26px; }
  .item__img { height: 240px; }
  .btn--dark { min-width: 0; width: 100%; }
  .toolbar { display: flex; }
  body { padding-bottom: 40px; }
  .footer__bottom { justify-content: center; text-align: center; }
}

/* =====================================================================
   БЛОКИ ДЛЯ ВСЕХ СТРАНИЦ
   ===================================================================== */
.section--soft { background: rgba(0, 0, 0, .01); }
.section--grey { background: #f7f7f7; }
.section + .section--grey, .section--grey + .section { padding-top: 60px; }
.section--grey { padding-bottom: 60px; }
.separator--sand { border-bottom-color: var(--sand); }
.intro--tight { margin-bottom: 20px; }
.lead { max-width: 900px; margin: 0 auto 40px; font-size: 18px; font-weight: 300; line-height: 28px; }
.text { font-size: 18px; font-weight: 300; line-height: 28px; margin: 0 0 20px; }
.small-title { font-size: 18px; font-weight: 400; text-transform: uppercase; margin: 0 0 10px; color: var(--text); }
.small-title--lg { font-size: 24px; margin-bottom: 26px; }

.btn--lg { min-width: 200px; min-height: 50px; padding: 14px 25px; }
.btn--sm { font-size: 18px; padding: 8px 18px; }
.btn--block { display: flex; width: 100%; min-height: 54px; font-size: 18px; box-shadow: 0 6px 14px rgba(0, 0, 0, .12); }

.ico { width: 24px; height: 24px; flex: none; }
.ico--sm { width: 20px; height: 20px; }
.ico--lg { width: 40px; height: 40px; color: var(--taupe-dark); }
.ico--xl { width: 72px; height: 72px; color: var(--gold); }

/* ---------- Иконки преимуществ (главная) ---------- */
.features { display: flex; justify-content: center; max-width: 900px; margin: 50px auto 40px; }
.feature { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 30px; padding: 5px 10px; }
.feature__label { font-size: 16px; text-transform: uppercase; color: var(--text); }

/* ---------- Слайдер ---------- */
.slider { position: relative; }
.slider__viewport { overflow: hidden; }
.slider__track { display: flex; transition: transform .6s ease; }
.slider__slide { flex: 0 0 100%; min-width: 0; }
.slider__arrow {
  position: absolute; top: 0; bottom: 40px; width: 80px; border: 0; background: none; cursor: pointer; z-index: 2;
}
.slider__arrow::before {
  content: ""; position: absolute; top: 50%; left: 50%; width: 16px; height: 16px;
  border: solid #fff; border-width: 0 2px 2px 0; filter: drop-shadow(0 0 3px rgba(0, 0, 0, .6));
}
.slider__arrow--prev { left: 0; }
.slider__arrow--prev::before { transform: translate(-30%, -50%) rotate(135deg); }
.slider__arrow--next { right: 0; }
.slider__arrow--next::before { transform: translate(-70%, -50%) rotate(-45deg); }
.slider__dots { display: flex; justify-content: center; gap: 6px; height: 40px; align-items: center; }
.slider__dots button { width: 14px; height: 14px; border-radius: 50%; border: 0; padding: 0; cursor: pointer; background: rgba(255, 255, 255, .5); }
.slider__dots button.is-active { background: #fff; }
.slider__dots--dark button { background: rgba(34, 34, 34, .4); }
.slider__dots--dark button.is-active { background: #222; }

/* Слайдер номеров на главной */
.slider--home .slider__viewport { margin: 0 55px; }
.slider--home .slider__arrow::before { border-color: var(--taupe-dark); filter: none; }
.room-slide {
  height: 500px; margin: 0 11px; padding: 11px 0;
  background: var(--taupe) center / cover no-repeat; background-clip: content-box;
  position: relative; display: flex; align-items: flex-end;
}
.room-slide__band {
  width: 100%; min-height: 221px; padding: 20px 20px 20px;
  background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, .55) 35%);
  text-align: center; color: #fff;
}
.room-slide__title { font-size: 30px; font-weight: 400; text-transform: uppercase; margin: 0; text-shadow: 0 1px 6px rgba(0, 0, 0, .5); }
.room-slide__meta { font-size: 18px; font-weight: 300; margin: 2px 0 6px; }
.room-slide__msg { font-size: 14px; margin-bottom: 18px; color: rgba(255, 255, 255, .85); }
.room-slide__btns { display: flex; gap: 10px; justify-content: center; }
.room-slide__btns .btn { min-width: 200px; min-height: 50px; font-size: 18px; }
.room-slide__btns .btn--dark { padding: 9px 15px; }

/* ---------- Фото + текст в две колонки ---------- */
.split { display: grid; grid-template-columns: 1fr 1fr; align-items: center; min-height: 500px; }
.split__img { height: 100%; min-height: 430px; background: var(--taupe) center / cover no-repeat; }
.framed { border: 11px solid #fff; box-shadow: 0 0 0 1px #e6e6e6; }
.split__body { padding: 30px 40px; }
.split--reverse .split__img { order: 2; }
.split--reverse .split__body { padding-left: 0; }
.split:not(.split--reverse) .split__body { padding-right: 0; }

/* ---------- Превью страниц (главная) ---------- */
.previews { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.preview {
  position: relative; height: 380px; margin: 10px;
  background: var(--taupe) center / cover no-repeat;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px;
}
.preview::before { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .35); transition: background .3s; }
.preview:hover::before { background: rgba(0, 0, 0, .5); }
.preview > * { position: relative; }
.preview h2 { color: #fff; font-size: 24px; font-weight: 400; text-transform: uppercase; margin: 0; }

/* ---------- Ссылки «адрес / координаты / маршрут» + карта ---------- */
.link-blocks { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin: 0 10px 30px; }
.link-block {
  height: 90px; display: flex; align-items: center; justify-content: center; gap: 12px; padding: 0 15px;
  background: #f0eeec; color: var(--taupe-dark); font-size: 16px; text-transform: uppercase; text-align: center;
  transition: background-color .25s, color .25s;
}
.link-block:hover { background: var(--taupe-dark); color: #fff; }
.map { height: 500px; background: #e5e3df; }
.map iframe { width: 100%; height: 100%; border: 0; display: block; }

/* ---------- Номера ---------- */
.room { border-bottom: 1px solid #ddd; padding-bottom: 40px; margin-bottom: 40px; }
.room:last-child { border-bottom: 0; }
.room__title { font-size: 40px; font-weight: 300; text-transform: uppercase; margin: 0 0 15px; line-height: 1.3; }
.room-meta { display: flex; gap: 30px; margin-bottom: 25px; font-size: 18px; font-weight: 300; }
.room-meta span { display: inline-flex; align-items: center; gap: 12px; }
.room-meta .ico { color: var(--gold); }
.slider--room { background: #ddd; }
.slider--room .slider__dots { background: #fff; }
.room-photo { display: block; height: 500px; background: #ddd center / cover no-repeat; cursor: zoom-in; }
.room__msg { max-width: 600px; margin: 20px auto; text-align: center; font-size: 14px; letter-spacing: .5px; text-transform: uppercase; }

/* ---------- Услуги ---------- */
.services { display: grid; grid-template-columns: 1fr 1fr; max-width: 900px; margin: 40px auto 100px; }
.services__col { padding: 10px 20px; }
.services__col:first-child { border-right: 1px solid var(--sand); }
.services__item { font-size: 16px; text-transform: uppercase; margin-bottom: 20px; }
.staggered { display: grid; grid-template-columns: 1fr 1fr; max-width: 1000px; margin: 0 auto; padding-bottom: 100px; }
.staggered__img { height: 400px; background: var(--taupe) center / cover no-repeat; border: 1px solid #fff; }
.staggered__img:nth-child(2) { transform: translateY(100px); }

/* ---------- Галерея ---------- */
.gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.gallery__item {
  height: 320px; background: var(--taupe) center / cover no-repeat; cursor: zoom-in;
  position: relative; overflow: hidden;
}
.gallery__item::after { content: ""; position: absolute; inset: 0; background: rgba(255, 255, 255, 0); transition: background .3s; }
.gallery__item:hover::after { background: rgba(255, 255, 255, .2); }
.gallery__text { margin-top: 40px; }
.gallery__text .lead { margin-bottom: 0; }

/* ---------- Расстояния ---------- */
.distances { list-style: none; margin: 10px 0 0; padding: 0; max-width: 420px; }
.distances li {
  display: flex; justify-content: space-between; gap: 20px; align-items: center;
  min-height: 40px; font-size: 16px; font-weight: 300; border-bottom: .5px solid #ddd;
  padding-left: 22px; position: relative;
}
.distances li::before { content: ""; position: absolute; left: 4px; top: 50%; width: 7px; height: 7px; border-radius: 50%; background: var(--gold); transform: translateY(-50%); }
.distances b { font-weight: 500; white-space: nowrap; }

/* ---------- Контакты ---------- */
.contacts { display: grid; grid-template-columns: 1fr 1fr; min-height: 400px; align-items: center; }
.contacts__col { padding: 10px; }
.contacts__col--center { display: flex; flex-direction: column; align-items: center; text-align: center; }
.contacts__col--center .small-title { margin: 15px 0 20px; }
.contacts__col--center .text { max-width: 450px; }
.contacts__label { font-size: 18px; font-weight: 300; margin: 0 0 8px; }
.contacts__value { display: block; font-size: 16px; font-weight: 500; margin-bottom: 20px; color: var(--taupe-dark); }
a.contacts__value:hover { color: var(--gold); }
.contacts__value.wa { display: block; }
.contacts__value .wa__ico { display: inline-block; vertical-align: -.25em; margin-right: 6px; }

/* ---------- Юридические страницы ---------- */
.legal { max-width: 900px; min-height: 240px; }
.legal__text { font-size: 16px; font-weight: 300; line-height: 26px; }
.legal__text h4 { font-size: 18px; font-weight: 500; text-transform: uppercase; margin: 30px 0 10px; }
.legal__text p { margin: 0 0 14px; }
.legal__text ul { margin: 0 0 14px; padding-left: 22px; }
.legal__text li { margin-bottom: 6px; }
.legal__text strong { font-weight: 500; }
.legal__text a { color: var(--taupe-dark); text-decoration: underline; word-break: break-word; }

/* ---------- Лайтбокс ---------- */
.lightbox {
  position: fixed; inset: 0; z-index: 100; background: rgba(0, 0, 0, .9);
  display: flex; align-items: center; justify-content: center;
  opacity: 0; pointer-events: none; transition: opacity .25s;
}
.lightbox.is-open { opacity: 1; pointer-events: auto; }
.lightbox__img { max-width: calc(100vw - 160px); max-height: calc(100vh - 100px); object-fit: contain; box-shadow: 0 10px 40px rgba(0, 0, 0, .5); }
.lightbox__close { position: absolute; top: 14px; right: 18px; width: 44px; height: 44px; background: none; border: 0; color: #fff; font-size: 40px; line-height: 1; cursor: pointer; }
.lightbox__arrow { position: absolute; top: 50%; width: 60px; height: 80px; margin-top: -40px; background: none; border: 0; cursor: pointer; }
.lightbox__arrow::before { content: ""; position: absolute; top: 50%; left: 50%; width: 20px; height: 20px; border: solid #fff; border-width: 0 2px 2px 0; }
.lightbox__arrow--prev { left: 10px; }
.lightbox__arrow--prev::before { transform: translate(-30%, -50%) rotate(135deg); }
.lightbox__arrow--next { right: 10px; }
.lightbox__arrow--next::before { transform: translate(-70%, -50%) rotate(-45deg); }
.lightbox.is-single .lightbox__arrow, .lightbox.is-single .lightbox__count { display: none; }
.lightbox__count { position: absolute; bottom: 18px; left: 0; right: 0; text-align: center; color: rgba(255, 255, 255, .8); font-size: 14px; }

/* ---------- Адаптив новых блоков ---------- */
@media (max-width: 991px) {
  .split, .contacts { grid-template-columns: 1fr; }
  .split__img { min-height: 320px; }
  .split--reverse .split__img { order: 0; }
  .split__body, .split--reverse .split__body, .split:not(.split--reverse) .split__body { padding: 30px 0 0; text-align: center; }
  .distances { margin: 10px auto 0; text-align: left; }
  .contacts__col { text-align: center; }
  .contacts__col + .contacts__col { margin-top: 40px; }
  .gallery { grid-template-columns: repeat(2, 1fr); }
  .room__title { text-align: center; }
  .room-meta { justify-content: center; }
  .room .text { text-align: center; }
  .slider--home .slider__viewport { margin: 0; }
  .slider--home .slider__arrow::before { border-color: #fff; filter: drop-shadow(0 0 3px rgba(0, 0, 0, .6)); }
}

@media (max-width: 767px) {
  .features { flex-direction: column; gap: 30px; margin: 30px auto; }
  .feature { gap: 14px; }
  .room-slide { height: 440px; margin: 0; }
  .room-slide__title { font-size: 24px; }
  .room-slide__btns { flex-direction: column; align-items: center; }
  .room-slide__btns .btn { width: 100%; min-width: 0; min-height: 44px; }
  .previews { grid-template-columns: 1fr; gap: 0; }
  .preview { height: 260px; margin: 8px 0; }
  .link-blocks { grid-template-columns: 1fr; gap: 10px; margin: 0 0 20px; }
  .link-block { height: 64px; }
  .map { height: 360px; }
  .room__title { font-size: 28px; }
  .room-photo { height: 280px; }
  .slider__arrow { width: 56px; }
  .services { grid-template-columns: 1fr; margin-bottom: 40px; }
  .services__col:first-child { border-right: 0; }
  .staggered { grid-template-columns: 1fr; gap: 12px; padding-bottom: 20px; }
  .staggered__img { height: 260px; }
  .staggered__img:nth-child(2) { transform: none; }
  .gallery { grid-template-columns: 1fr 1fr; gap: 8px; }
  .gallery__item { height: 160px; }
  .lightbox__img { max-width: 100vw; max-height: calc(100vh - 120px); }
  .lightbox__arrow { top: auto; bottom: 0; margin-top: 0; }
}

/* =====================================================================
   ФОРМА БРОНИ (окно)
   ===================================================================== */
[hidden] { display: none !important; }

/* =====================================================================
   ОКНО БРОНИРОВАНИЯ ПО ШАГАМ
   ===================================================================== */
.bk {
  position: fixed; inset: 0; z-index: 90;
  background: var(--taupe-dark) center / cover no-repeat;
  visibility: hidden; opacity: 0; transition: opacity .25s, visibility 0s .25s;
}
.bk.is-open { visibility: visible; opacity: 1; transition: opacity .25s; }
.bk__box { height: 100%; overflow-y: auto; overscroll-behavior: contain; padding: 56px var(--gutter) 40px; }
.bk__box:focus { outline: none; }
.bk__close {
  position: fixed; top: 6px; right: 12px; z-index: 2; width: 48px; height: 48px;
  background: none; border: 0; font-size: 42px; line-height: 1; color: var(--white); cursor: pointer;
}
.bk__close:hover { color: var(--gold); }
.bk__layout {
  max-width: 1260px; margin: 0 auto;
  display: grid; grid-template-columns: 350px minmax(0, 1fr); gap: 22px; align-items: start;
}
.bk__side, .bk__main { background: var(--white); box-shadow: 0 12px 34px rgba(0, 0, 0, .3); }
.bk__side { padding: 22px; position: sticky; top: 0; }
.bk__main { padding: 26px 30px 30px; }
.bk[data-step="3"] .bk__layout { grid-template-columns: minmax(0, 1fr); max-width: 820px; }
.bk[data-step="3"] .bk__side { display: none; }

/* Даты и календарь */
.bk__tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 18px; }
.bk__tile {
  font: inherit; text-align: center; line-height: 1.35; cursor: pointer;
  padding: 10px 6px; border: 1px solid var(--taupe-dark); border-radius: 2px;
  background: var(--white); color: var(--taupe-dark); transition: background-color .2s, color .2s;
}
.bk__tile span { display: block; font-size: 16px; }
.bk__tile b { display: block; font-size: 19px; font-weight: 400; }
.bk__tile.is-active { background: var(--taupe-dark); color: var(--white); }
.bk__calnav { display: flex; justify-content: space-between; margin-bottom: 12px; }
.bk__nav { display: flex; align-items: center; }
.bk__nav span { min-width: 96px; text-align: center; font-size: 20px; color: var(--taupe-dark); }
.bk__nav button {
  width: 32px; height: 32px; padding: 0; border: 0; background: none; cursor: pointer;
  font: 300 28px/1 var(--font); color: var(--taupe-dark);
}
.bk__nav button:disabled { opacity: .25; cursor: default; }
.bk__week, .bk__days { display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; }
.bk__week { font-size: 15px; text-transform: uppercase; color: var(--taupe); padding-bottom: 8px; border-bottom: 1px solid var(--taupe-dark); margin-bottom: 6px; }
.bk__day {
  position: relative; height: 40px; padding: 0; border: 0; background: none; cursor: pointer;
  font: 300 17px var(--font); color: var(--text);
}
.bk__day:hover:not(:disabled) { background: #f1ece5; }
.bk__day.is-other { color: #c4beb7; }
.bk__day:disabled { color: #ddd8d2; cursor: default; }
.bk__day.is-today { font-weight: 500; }
.bk__day.is-range { background: #efe6d6; }
.bk__day.is-start, .bk__day.is-end { background: var(--taupe-dark); color: var(--white); font-weight: 500; }
.bk__day.is-start { border-radius: 8px 0 0 8px; }
.bk__day.is-end { border-radius: 0 8px 8px 0; }
.bk__day small { position: absolute; right: 3px; bottom: 1px; font-size: 10px; font-weight: 400; }
.bk__nights {
  margin: 12px 0 16px; padding-bottom: 14px; border-bottom: 1px solid var(--taupe-dark);
  text-align: center; font-size: 22px; color: var(--taupe-dark);
}
.bk__guests { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 18px; }
.bk__show { width: 100%; min-width: 0; }

/* Шаги */
.bk__steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); text-align: center; font-size: 17px; color: var(--taupe); }
.bk__steps li.is-current { color: var(--taupe-dark); font-weight: 500; }
.bk__steps li.is-done { color: var(--gold); }
.bk__bar { height: 12px; margin: 12px 0 18px; border-radius: 6px; background: #ece8e3; overflow: hidden; }
.bk__bar span { display: block; height: 100%; width: 0; border-radius: 6px; background: var(--taupe-dark); transition: width .35s; }
.bk__summary { margin: 0 0 12px; text-align: center; font-size: 17px; font-weight: 300; }
.bk__banner {
  margin: 0 0 24px; padding: 12px 18px; text-align: center;
  font-size: 17px; line-height: 1.4; color: var(--white); background: #3f7a4c; border-radius: 2px;
}

/* Карточка номера */
.bk__room { border: 1px solid #e3ded8; margin-bottom: 24px; transition: box-shadow .25s; }
.bk__room.is-highlight { box-shadow: 0 0 0 2px var(--gold); }
.bk__ribbon { display: flex; min-height: 46px; font-size: 16px; }
.bk__rb {
  position: relative; display: flex; align-items: center; gap: 16px;
  padding: 6px 30px 6px 18px; text-transform: uppercase;
  clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 50%, calc(100% - 16px) 100%, 0 100%);
}
.bk__rb + .bk__rb { margin-left: -16px; padding-left: 32px; }
.bk__rb:nth-child(1) { z-index: 2; background: var(--gold); color: var(--white); }
.bk__rb--mid { z-index: 1; flex: 1; justify-content: center; background: #f1ece5; color: var(--text); text-transform: none; }
.bk__rb--end { background: var(--taupe-dark); color: var(--white); clip-path: none; padding-right: 18px; }
.bk__cmp { display: flex; flex-direction: column; align-items: center; line-height: 1.2; }
.bk__cmp small { font-size: 13px; text-transform: uppercase; color: var(--taupe); }
.bk__cmp s { font-size: 19px; color: var(--taupe); text-decoration-color: #c0392b; text-decoration-thickness: 2px; }
.bk__cmp b { font-size: 19px; font-weight: 500; color: #3f7a4c; }
.bk__cmp--ok small { color: #3f7a4c; }
.bk__name { margin: 16px 18px 0; font-size: 28px; font-weight: 400; color: var(--text); }
.bk__sub { margin: 2px 18px 16px; font-size: 16px; font-weight: 300; color: var(--taupe); }
.bk__body {
  display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) 190px; gap: 22px;
  padding: 0 18px 18px; align-items: start;
}
.bk__photo { border: 1px solid #e3ded8; padding: 6px; }
.bk__photo a { display: block; aspect-ratio: 4 / 3; background: center / cover no-repeat; cursor: zoom-in; }
.bk__photobar { display: flex; justify-content: space-between; align-items: center; padding: 6px 2px 0; color: var(--taupe-dark); }
.bk__people { display: flex; }
.bk__people .ico { width: 17px; height: 17px; margin-right: -3px; }
.bk__zoom { padding: 2px; border: 0; background: none; color: var(--taupe-dark); cursor: pointer; }
.bk__zoom:hover { color: var(--gold); }
.bk__perks { list-style: none; margin: 4px 0 0; padding: 0; }
.bk__perks li { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; font-size: 17px; color: #3f7a4c; }
.bk__perks li:last-child { color: var(--text); }
.bk__buy { display: flex; flex-direction: column; align-items: stretch; gap: 6px; text-align: center; }
.bk__save { padding: 6px 8px; font-size: 16px; color: var(--white); background: var(--gold); }
.bk__old { font-size: 17px; color: var(--taupe); text-decoration-color: #c0392b; }
.bk__price { font-size: 36px; font-weight: 500; line-height: 1.05; color: var(--gold); }
.bk__best { font-size: 26px; line-height: 1.1; color: var(--gold); margin-top: 4px; }
.bk__per { font-size: 15px; color: var(--taupe-dark); margin-bottom: 8px; }
.bk__buy .btn { min-width: 0; width: 100%; }
.bk__info {
  padding: 8px; border: 0; border-radius: 2px; cursor: pointer;
  font: 400 15px var(--font); text-transform: uppercase; color: var(--taupe-dark); background: #f4f1ed;
}
.bk__info:hover { background: #ebe5dd; }
.bk__full { margin: 6px 0; font-size: 15px; line-height: 1.35; color: #b3261e; }
.bk__room.is-full .bk__photo, .bk__room.is-full .bk__perks { opacity: .5; }
.bk__desc { padding: 0 18px 18px; font-size: 16px; font-weight: 300; line-height: 1.6; }
.bk__groups { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; }

/* Шаг 2: реквизиты для оплаты (заглушки) */
.bk__pay { margin-top: 26px; padding: 20px 22px; background: #f7f4ef; border-left: 3px solid var(--gold); }
.bk__pay .bform__legend { margin-bottom: 10px; }
.bk__pay-intro { margin: 0 0 14px; font-size: 16px; font-weight: 300; line-height: 1.5; }
.bk__pay-rows { margin: 0; }
.bk__pay-rows > div { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 4px 16px; padding: 7px 0; border-top: 1px solid #e5ded3; }
.bk__pay-rows dt { margin: 0; font-size: 14px; text-transform: uppercase; letter-spacing: .3px; color: var(--taupe-dark); }
.bk__pay-rows dd { margin: 0; font-size: 17px; font-weight: 400; word-break: break-word; }
.bk__pay-note { margin: 14px 0 0; font-size: 15px; font-weight: 300; line-height: 1.5; color: var(--taupe-dark); }
.bk__pay { margin: 0 0 24px; }
.bk__receipt { margin-top: 18px; padding-top: 16px; border-top: 1px solid #e5ded3; }
.bk__file {
  position: relative; display: flex; align-items: center; gap: 12px; min-height: 46px; padding: 6px;
  border: 1px solid #d6d1cb; border-radius: 2px; background: var(--white); cursor: pointer;
}
.bk__file input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.bk__file:focus-within { border-color: var(--gold); box-shadow: 0 0 0 3px rgba(218, 165, 32, .2); }
.bk__file-btn {
  flex: none; padding: 7px 14px; border-radius: 2px;
  font-size: 15px; text-transform: uppercase; color: var(--white); background: var(--taupe-dark);
}
.bk__file:hover .bk__file-btn { background: #57514b; }
.bk__file-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 15px; font-weight: 300; }
@media (max-width: 767px) {
  .bk__pay { padding: 16px var(--gutter); }
  .bk__pay-rows > div { grid-template-columns: 1fr; gap: 0; }
  .bk__pay-rows dd { margin-bottom: 2px; }
}

/* Шаг 2: выбранный номер */
.bk__chosen {
  display: grid; grid-template-columns: 130px minmax(0, 1fr) auto; gap: 18px; align-items: center;
  padding: 12px; margin-bottom: 26px; border: 1px solid #e3ded8;
}
.bk__chosen-img { aspect-ratio: 4 / 3; background: center / cover no-repeat; }
.bk__chosen h3 { margin: 0 0 4px; font-size: 21px; font-weight: 400; }
.bk__chosen p { margin: 0; font-size: 16px; font-weight: 300; line-height: 1.5; }
.bk__chosen b { font-weight: 500; color: var(--gold); }
.bk__back {
  padding: 8px 12px; border: 1px solid var(--taupe-dark); border-radius: 2px; background: none; cursor: pointer;
  font: 400 15px var(--font); color: var(--taupe-dark); white-space: nowrap;
}
.bk__back:hover { background: var(--taupe-dark); color: var(--white); }

@media (max-width: 1100px) {
  .bk__body { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .bk__buy { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, 1fr); align-items: center; }
  .bk__buy > :not(.btn):not(.bk__info) { grid-column: 1 / -1; }
}
@media (max-width: 991px) {
  .bk__layout { grid-template-columns: minmax(0, 1fr); max-width: 680px; }
  .bk__side { position: static; }
  .bk[data-step="2"] .bk__side { display: none; }
}
@media (max-width: 767px) {
  .bk__box { padding: 54px 0 30px; }
  .bk__close { top: 4px; right: 4px; }
  .bk__side, .bk__main { box-shadow: none; }
  .bk__layout { gap: 10px; }
  .bk__main { padding: 20px var(--gutter) 26px; }
  .bk__side { padding: 18px var(--gutter); }
  .bk__steps { font-size: 14px; }
  .bk__ribbon { font-size: 13px; min-height: 40px; }
  .bk__rb { padding: 5px 22px 5px 12px; }
  .bk__rb + .bk__rb { padding-left: 26px; }
  .bk__rb--end { display: none; }
  .bk__rb--mid { clip-path: none; }
  .bk__cmp s, .bk__cmp b { font-size: 16px; }
  .bk__name { margin: 12px 12px 0; font-size: 24px; }
  .bk__sub { margin: 2px 12px 12px; }
  .bk__body { grid-template-columns: minmax(0, 1fr); padding: 0 12px 14px; gap: 14px; }
  .bk__buy { grid-template-columns: minmax(0, 1fr); }
  .bk__desc { padding: 0 12px 14px; }
  .bk__chosen { grid-template-columns: 90px minmax(0, 1fr); }
  .bk__back { grid-column: 1 / -1; justify-self: start; }
}

.bform__lead { font-size: 17px; font-weight: 300; line-height: 26px; margin: 0 0 26px; }
.bform__group { border: 0; padding: 0; margin: 0 0 28px; min-width: 0; }
.bform__legend { font-size: 18px; text-transform: uppercase; color: var(--taupe-dark); padding: 0; margin-bottom: 14px; }
.bform__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px 20px; }
.bform__field { display: block; min-width: 0; }
.bform__field--wide { grid-column: 1 / -1; }
.bform__label {
  display: block; font-size: 13px; font-weight: 500; letter-spacing: .3px;
  text-transform: uppercase; margin-bottom: 6px;
}
.bform__label small { font-size: 13px; font-weight: 300; text-transform: none; color: var(--taupe); }
.bform__sub { margin-top: 18px; }
.bform__input {
  display: block; width: 100%; min-height: 46px; margin: 0;
  font: 400 17px var(--font); color: var(--text); background: var(--white);
  border: 1px solid #d6d1cb; border-radius: 2px; padding: 10px 12px;
  transition: border-color .2s, box-shadow .2s; color-scheme: light;
}
.bform__input::placeholder { color: #aaa49d; font-weight: 300; }
.bform__input:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(218, 165, 32, .2); }
.bform__input:user-invalid { border-color: #b3261e; }
select.bform__input {
  appearance: none; -webkit-appearance: none; padding-right: 36px; cursor: pointer;
  background: var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%236b645d' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 12px center / 12px 8px;
}
input[type=date].bform__input { -webkit-appearance: none; appearance: none; cursor: pointer; }
input[type=date].bform__input::-webkit-date-and-time-value { text-align: left; }
textarea.bform__input { min-height: 110px; resize: vertical; line-height: 1.5; }
.bform__hint { display: block; font-size: 13px; font-weight: 300; color: var(--taupe); margin-top: 5px; }
.bform__note { font-size: 15px; font-weight: 300; margin: 12px 0 0; }
.bform__warn {
  font-size: 15px; font-weight: 300; line-height: 1.45; margin: 12px 0 0;
  padding: 9px 12px; background: #fbf4e2; border-left: 3px solid var(--gold);
}


.bform__check {
  display: flex; gap: 10px; align-items: flex-start; margin-bottom: 10px;
  font-size: 16px; font-weight: 300; line-height: 1.4; cursor: pointer;
}
.bform__check input { width: 18px; height: 18px; margin: 2px 0 0; flex: none; accent-color: var(--taupe-dark); cursor: pointer; }
.bform__check a { color: var(--taupe-dark); text-decoration: underline; }
.bform__trap { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

.bform__error {
  margin: 16px 0 0; padding: 14px 16px; font-size: 16px; font-weight: 300;
  background: #fbeceb; border-left: 3px solid #b3261e;
}
.bform__error p { margin: 0 0 12px; }
.bform__error-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.btn--outline { background: transparent; color: var(--taupe-dark); box-shadow: inset 0 0 0 1px var(--taupe-dark); }
.btn--outline:hover { background: var(--taupe-dark); color: var(--white); }
.bform .btn--block { margin-top: 20px; }
.bform .btn--block:disabled { opacity: .7; cursor: progress; }
.bform__foot { font-size: 14px; font-weight: 300; text-align: center; color: var(--taupe); margin: 12px 0 0; }

.bform__done { text-align: center; padding: 30px 0 10px; }
.bform__done .ico { width: 64px; height: 64px; color: var(--gold); margin: 0 auto 16px; }
.bform__done .separator { margin-left: auto; margin-right: auto; }
.bform__done .text { max-width: 480px; margin: 0 auto 26px; }

@media (max-width: 767px) {
  .bform__grid { gap: 12px; }
  .bform__grid--stack { grid-template-columns: 1fr; }
  .bform__done { padding-top: 60px; }
}
