/* Общие блоки для ВСЕХ отелей и санаториев. Без .rus-*, .andz-* и других имён объектов. */
:where(.landing-content){width:100%;}
/* Базовый full-width <section> с собственным внутренним .container. */
.section--soft{background:var(--soft-surface);}
.section--dark{background:var(--primary);color:var(--primary-contrast);}
.section-lead{max-width:910px;color:var(--muted);font-size:15px;line-height:1.85;margin:0 0 31px;}
.small-note{color:var(--muted);font-size:12px;line-height:1.8;margin:20px 0 0;}
.intro-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(260px,1fr);gap:clamp(24px,5vw,72px);align-items:start;}
.facts-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.facts-grid > div{min-height:110px;border-radius:15px;border:1px solid var(--line);background:var(--surface);padding:20px;}
.facts-grid :is(b,strong){display:block;font:400 clamp(23px,2.8vw,35px)/1.15 var(--serif);color:var(--primary);}
.facts-grid span{display:block;margin-top:12px;font-size:12px;line-height:1.45;color:var(--muted);}
.cards-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;}
.cards-grid--4{grid-template-columns:repeat(4,minmax(0,1fr));}
.cards-grid--2{grid-template-columns:repeat(2,minmax(0,1fr));}
:is(.info-card,.program-card,.room-card,.panel,.callout){background:var(--surface);border:1px solid var(--line);border-radius:17px;min-width:0;}
:is(.info-card,.program-card,.room-card,.panel){padding:24px;}
:is(.info-card,.program-card,.room-card) h3{font-size:16px;line-height:1.4;margin:0 0 12px;color:var(--ink);}
:is(.info-card,.program-card,.room-card) p{font-size:13px;line-height:1.8;margin:0;color:var(--muted);}
/* Оба варианта записи бейджа поддерживаются для удобства менеджера. */
.card-badge,:is(.program-card,.room-card) > span{display:inline-block;font-size:11px;line-height:1.35;font-weight:700;color:var(--primary);background:var(--accent-soft);border-radius:99px;padding:6px 10px;margin-bottom:14px;}
.notice{padding:16px 19px;background:var(--accent-soft);border-left:4px solid var(--accent);border-radius:7px;color:var(--ink);font-size:12px;line-height:1.75;margin:26px 0 0;}
.callout{padding:25px;font-size:13px;line-height:1.85;color:var(--muted);margin:25px 0 0;}
.callout strong,.panel strong{display:block;color:var(--ink);font-size:14px;margin-bottom:10px;}
.callout p{margin:8px 0;}.callout ul,.panel ul{padding-left:20px;}
.panel ul{margin:12px 0 0;font-size:13px;line-height:1.85;color:var(--muted);}
.two-column-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,1fr);gap:clamp(22px,5vw,70px);align-items:start;}
.two-column-grid > div > h3{font-size:20px;margin-top:0;}
.check-list{padding-left:22px;}.check-list li{margin-bottom:13px;}
.definition-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 25px;font-size:13px;}
.definition-grid dt{color:var(--muted);}.definition-grid dd{font-weight:700;margin:0;}
.space-top{margin-top:30px;}.gallery-block{margin-top:28px;}
.text-link{display:inline-block;margin-top:24px;text-decoration:underline;color:var(--primary);}
.section.request-section--soft{background:var(--soft-surface);color:var(--ink);}
.section.request-section--soft p{color:var(--muted);}
.section.request-section--soft .heading{color:var(--ink);}
.request-section--dark{background:var(--primary);color:var(--primary-contrast);}
.request-section--dark :is(.heading,.heading em,.eyebrow){color:var(--primary-contrast);}
.request-section--dark p{line-height:1.9;font-size:15px;color:#e2f0e9;}
.request-section--dark .small-note{color:#d4e7d9;}
.request-section__inner{max-width:830px;margin:auto;text-align:center;}
.split-section--soft,.split-section--soft .split-section__copy{background:var(--split-bg);}
.split-section--soft .split-section__copy p{color:var(--ink);opacity:.83;}
/* Универсальные блоки из первоначального шаблона Victoria. */
.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;}
.gallery-tile{position:relative;display:block;overflow:hidden;border-radius:17px;aspect-ratio:1.3;background:var(--card-image-bg);box-shadow:var(--shadow);}
.gallery-tile img{width:100%;height:100%;object-fit:cover;transition:transform .35s;}
.gallery-tile:hover img{transform:scale(1.06);}
.gallery-tile__label{position:absolute;left:12px;bottom:12px;right:12px;padding:9px 10px;background:rgba(255,255,255,.92);border-radius:8px;font-size:11px;color:var(--ink);}
/* Таблицы цен. Ширина категории адаптивна, периоды компактны.
   Горизонтальная прокрутка возникает только когда столбцы физически не помещаются. */
.table-scroll,
.price-table-wrap {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.price-table {
  width: 100%;
  min-width: 0; /* не заставляем таблицу быть 650px на узком экране */
  table-layout: auto;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  font-size: 12px;
}

.price-table th,
.price-table td {
  padding: 14px;
  border-bottom: 1px solid var(--line);
  border-right: 1px solid #ccd5cc; /* вертикальные разделители */
  text-align: left;
  vertical-align: middle;
}

/* Категория номера занимает доступный остаток ширины.
   Когда периодов больше, текст переносится по словам. */
.price-table tr > :first-child {
  width: auto;
  min-width: 0;
  max-width: none;
  white-space: normal;
  overflow-wrap: break-word;
  word-break: normal;
  text-align: left;
}

/* Периоды и цены не растягиваются сверх длины заголовка/числа. */
.price-table tr > :not(:first-child) {
  width: 1%;
  white-space: nowrap;
  text-align: right;
}

.price-table thead th {
  background: var(--soft-surface);
  color: var(--primary);
}
.price-table thead th:not(:first-child) {
  text-align: center;
}

/* Строка с датами периодов, расположенная под заголовком.
   Нежнее основного заголовка, но визуально выделяется среди цен. */
.price-table tbody tr.pt-period-row > th,
.price-table tbody tr.pt-period-row > td {
  background: #f8f5ef; /* запасной оттенок */
  background: color-mix(in srgb, var(--soft-surface) 50%, var(--surface) 50%);
  color: var(--primary);
  font-weight: 600;
}
.price-table tbody tr.pt-period-row > :not(:first-child) {
  text-align: center;
}

/* Без двойной границы справа и снизу. */
.price-table tr > :last-child { border-right: 0; }
.price-table tbody tr:last-child > * { border-bottom: 0; }

.price-note {
  margin-top: 12px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.7;
}
.prose{max-width:780px;}.prose p{color:var(--muted);line-height:1.95;}
.prose ul{padding-left:24px;}.prose a{text-decoration:underline;}
.stacked-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;}
.info-card__index{font:400 38px/1 var(--serif);color:var(--accent);}
.note{font-size:11px;color:var(--muted);}
@media(max-width:1050px){
  .cards-grid--4{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:900px){
  .intro-grid,.two-column-grid{grid-template-columns:1fr;}
  .cards-grid,.cards-grid--2{grid-template-columns:repeat(2,minmax(0,1fr));}
  .stacked-cards{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:620px){
  .cards-grid,.cards-grid--4,.cards-grid--2,.stacked-cards,.gallery-grid{grid-template-columns:1fr;}
  .gallery-tile{aspect-ratio:1.5;}
  :is(.info-card,.program-card,.room-card,.panel){padding:20px;}
  .facts-grid > div{padding:16px;}
}
@media(max-width:380px){.facts-grid{grid-template-columns:1fr;}}
