/* slides.css (v0.9) — раскладка «страница = слайды», только под html.k-slides (ставит head-скрипт; без JS — обычная страница).
   Каждый слайд ровно 100svh и целиком помещается: размеры по ВЫСОТЕ тоже (clamp/min со svh, @media (max-height), container units).
   Под фиксированной шапкой — отступ --top; на телефоне в портрете снизу капсула — отступ --bot.
   Телефон в ландшафте (≤899 × ≤500): капсулы нет, в шапке ссылки и «Reservá» (как на ПК), раскладки — «широкие».
   Минимальный размер текста 14 px; цели касания ≥44 px. Проверка — scratchpad q2-fit.mjs (матрица размеров). */

html.k-slides { --top: var(--hdr); --bot: 0px; --sh: 100vh; --sh: 100svh; }
/* ПК: справа стеклянная колонка точек (44 + 8 px) — поле страницы шире, чтобы она ничего не закрывала (цены меню, кадры La casa) */
@media (min-width: 1200px) { html.k-slides { --gut: 64px; } }
@media (max-width: 899px) and (min-height: 501px) { html.k-slides { --bot: calc(72px + env(safe-area-inset-bottom)); } }
html.k-snap { scroll-snap-type: y mandatory; }
/* v2.0 оболочка телефона (html.k-shell, ставит head-скрипт на сенсорных): документ не прокручивается — html/body высотой в окно
   без прокрутки, слайды в фиксированном .k-scroller со своей прокруткой. Safari прячет адресную строку только при прокрутке
   документа: здесь её нет, высота окна постоянна, капсула (fixed, от низа окна + safe-area) не прыгает. --sh = высота
   контейнера в px (head-скрипт и slides.js по resize), а не svh/dvh */
html.k-shell, html.k-shell body { height: 100%; overflow: hidden; overscroll-behavior: none; }
html.k-shell .k-scroller { position: fixed; inset: 0; overflow-x: hidden; overflow-y: auto; overscroll-behavior: none; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
html.k-shell .k-scroller::-webkit-scrollbar { display: none; }
html.k-shell.k-snap .k-scroller { scroll-snap-type: y mandatory; }
html.k-shell.intro .k-scroller { overflow: hidden; }
html.k-cv main > section, html.k-cv main > .r-escena, html.k-cv .r-fin { content-visibility: auto; contain-intrinsic-size: auto 100vh; }   /* замер ?cv=1 */
html.k-tstep { touch-action: pinch-zoom; overscroll-behavior-y: none; }
html.k-tstep .k-scroller { touch-action: pinch-zoom; }   /* v2.0: контейнер — свой скролл-контейнер (touch-action считается до него): только щипок, без двойного тапа */   /* касание — шаг жестом: вертикальную прокрутку пальцем ведёт slides.js */
html.k-slides main section[id], html.k-slides [data-slide], html.k-slides [data-slide-m] { scroll-margin-top: 0; }   /* слайд встаёт верхом к верху экрана (шапка поверх его отступа) */
html.k-snap [data-slide] { scroll-snap-align: start; scroll-snap-stop: always; }
@media (max-width: 899px) { html.k-snap [data-slide-m] { scroll-snap-align: start; scroll-snap-stop: always; } }

/* телефон в ландшафте: шапка как на ПК, капсулы нет */
@media (max-width: 899px) and (max-height: 500px) {
  html.k-slides { --hdr: 48px; }
  html.k-slides .r-bar__nav { display: block; position: absolute; left: 50%; translate: -50% 0; }
  html.k-slides .r-bar__nav ul { gap: 16px; margin: 0; }
  html.k-slides .r-pill { display: inline-flex; }
  html.k-slides .r-logo--bar { width: 120px; }   /* шапка 48 px: знак 120 × 43 */
  html.k-slides .r-bar__brand:has(.r-logo--bar) { height: 46px; }
  html.k-slides .capsule { display: none !important; }
}

/* общие: слайд = экран */
html.k-slides .r-hero { position: relative; height: var(--sh); }
html.k-slides .r-carta, html.k-slides .r-fuego, html.k-slides .r-cocina, html.k-slides .r-historia, html.k-slides .r-casa {
  height: var(--sh); padding: calc(var(--top) + clamp(8px, 2.5svh, 32px)) var(--gut) calc(var(--bot) + clamp(8px, 2.5svh, 32px)); overflow: clip; }
html.k-slides .r-fuego { padding: 0; min-height: 0; }

/* ---------- La carta (Pulcinella): вкладка режется на страницы «‹ 1 / 4 ›» (js/kit/menu-pages.js) — слайд целиком в экране,
   внутри ничего не прокручивается и ничего не прячется (описания, метки, вторая цена — всегда; было: line-clamp, .is-tight).
   Без .is-paged (reduced-motion) — вкладка списком, слайд растёт по содержимому (.r-carta.is-long), прокрутка нативная.
   Число колонок — --m-cols (menu-pages.js читает columnCount списка). Отступы между блоками — padding (margin у верха колонки съедается) ---------- */
html.k-slides .r-carta { display: flex; flex-direction: column; }
html.k-slides .r-carta__img { display: none; }   /* в слайде меню важнее фото */
html.k-slides .r-carta__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 20px; max-width: 1360px; width: 100%; margin: 0 auto; }
html.k-slides .r-carta__intro { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 20px; }
html.k-slides #carta-h { font-size: clamp(1.75rem, 6svh, 3.5rem); }
html.k-slides .r-carta__intro .r-mute { margin: 0; font-size: 14px; }
html.k-slides .r-menu { --m-cols: 3; --m-gx: 40px; --m-iy: clamp(6px, 1.3svh, 14px); --m-fsp: clamp(.9375rem, 2svh, 1.0625rem); --m-pw: calc(var(--m-fsp) * var(--m-pwx, 5.9));
  flex: 1 1 auto; min-height: 0; width: 100%; margin: clamp(6px, 1.6svh, 20px) auto 0; display: flex; flex-direction: column; }
html.k-slides .r-filter { padding-bottom: clamp(6px, 1.4svh, 14px); }
html.k-slides .r-menu__list { flex: 1 1 auto; min-height: 0; columns: var(--m-cols); column-gap: var(--m-gx); }
html.k-slides .m-group { padding-top: clamp(6px, 1.6svh, 18px); }
html.k-slides .m-group__h { font-size: clamp(1.125rem, 2.8svh, 1.5rem); }
html.k-slides .m-group ul { margin-top: clamp(2px, .6svh, 8px); }
html.k-slides .m-group li + li { margin-top: var(--m-iy); }
html.k-slides .m-item__n { font-size: clamp(1rem, 2.2svh, 1.1875rem); }
html.k-slides .m-item__p { font-size: var(--m-fsp); }
html.k-slides .m-item__d { font-size: 14px; line-height: 1.3; margin-top: 2px; }
html.k-slides .m-lead, html.k-slides .m-note { font-size: 14px; line-height: 1.3; }
html.k-slides .m-note { padding-top: calc(var(--m-iy) + 4px); }
html.k-slides .m-sub { padding-top: calc(var(--m-iy) * 2 + 2px); }
html.k-slides .r-menu__foot { margin-top: clamp(6px, 1.4svh, 16px); max-width: 1360px; width: 100%; margin-inline: auto; }
html.k-slides .r-carta__cta .btn { height: 48px; }
/* страницы (menu-pages.js): высота списка задана раскладкой слайда; блоки вкладки стоят абсолютно по колонкам (left/top ставит
   модуль), чужие страницы — display: none; на время замера (.is-measure) — обычный поток той же ширины колонки */
html.k-slides .r-menu.is-paged .r-menu__list { position: relative; columns: auto; overflow: hidden; contain: strict; }   /* strict: размер задаёт слайд */
html.k-slides .r-menu.is-paged :is(.m-lead, .m-sub, .m-item, .m-note) { width: calc((100% - (var(--m-cols) - 1) * var(--m-gx)) / var(--m-cols)); }
html.k-slides .r-menu.is-paged .r-menu__list:not(.is-measure) :is(.m-lead, .m-sub, .m-item, .m-note) { position: absolute; }
html.k-slides .r-menu.is-paged .r-menu__list.is-measure :is(.m-lead, .m-sub, .m-item, .m-note) { left: auto !important; top: auto !important; }
html.k-slides .r-menu.is-paged .m-group, html.k-slides .r-menu.is-paged .m-group ul { padding: 0; margin: 0; }
html.k-slides .r-menu.is-paged .m-group__h { display: none; }   /* раздел уже назван активной вкладкой */
html.k-slides .r-menu.is-paged .m-group li + li { margin-top: 0; }
html.k-slides .r-menu.is-paged .m-item { padding-top: var(--m-iy); }
html.k-slides .r-menu.is-paged .m-lead { padding-top: 0; }
html.k-slides .r-menu.is-paged .is-top { padding-top: 0; }   /* первый блок колонки — без верхнего отступа (модуль учёл это в высоте) */
html.k-slides .r-menu .is-off { display: none !important; }
/* reduced: всё списком (страниц нет), слайд по содержимому */
html.k-slides .r-carta.is-long { height: auto; min-height: var(--sh); overflow: visible; }
html.k-slides .r-carta.is-long .r-menu__list { flex: none; }
/* Pulcinella 06.10: цены ровной колонкой. Колонка цен справа — одной ширины у всех строк вкладки (--m-pw: «Gs. 000.000» цифрами
   одной ширины, tabular-nums; у вин — под «Gs. 1.170.000»), цена по правому краю, базовая линия — с названием (baseline);
   описание и метка — под названием, той же ширины (колонка цен под ними пустая). Пиццы на телефоне: «Personal Gs. …» —
   одной строкой под ценой, по тому же правому краю (было: entera по левому краю блока цены — правые края скакали на 46 px) */
html.k-slides .r-menu[data-f="vinos"] { --m-pwx: 6.9; }
html.k-slides .m-item { display: grid; grid-template-columns: minmax(0, 1fr) var(--m-pw); grid-template-areas: "n p" "pp pp" "t ." "d ."; column-gap: 12px; align-items: baseline; }
html.k-slides .m-item__top { display: contents; }
html.k-slides .m-item__n { grid-area: n; } html.k-slides .m-item__p { grid-area: p; text-align: right; } html.k-slides .m-item__d { grid-area: d; }
html.k-slides .m-item__tag { grid-area: t; justify-self: start; }
html.k-slides .m-item--2p .m-item__p { display: contents; }
html.k-slides .m-item--2p .m-item__e { grid-area: p; }
html.k-slides .m-item--2p .m-item__pp { grid-area: pp; justify-self: end; margin-top: 1px; }
@media (min-width: 900px) {
  html.k-slides .m-item__tag { margin: 1px 0 0; font-size: 14px; letter-spacing: .02em; white-space: nowrap; }
  /* пиццы: две колонки цен справа (entera · personal), шапка «Entera · Personal» — один раз над каждой колонкой страницы */
  html.k-slides .r-menu.is-paged .m-item--2p { grid-template-columns: minmax(0, 1fr) calc(2 * var(--m-pw) + 12px); }
  html.k-slides .r-menu.is-paged .m-item--2p .m-item__p { display: grid; grid-template-columns: var(--m-pw) var(--m-pw); column-gap: 12px; text-align: right; }
  html.k-slides .r-menu.is-paged .m-item--2p :is(.m-item__e, .m-item__pp) { grid-area: auto; justify-self: auto; margin: 0; }
  html.k-slides .r-menu.is-paged .m-item--2p .m-item__pp { font: inherit; color: inherit; }
  html.k-slides .r-menu.is-paged .m-item--2p .m-item__pp:empty { display: block; }
  html.k-slides .r-menu.is-paged .m-item__pl { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  html.k-slides .r-menu.is-paged[data-f="pizzas"] .m-colh { display: grid; grid-template-columns: repeat(var(--m-cols), minmax(0, 1fr)); column-gap: var(--m-gx); margin-bottom: 2px; }
  html.k-slides .m-colh span { display: flex; justify-content: flex-end; gap: 12px; color: var(--mute); font-size: 14px; line-height: 1.2; }
  html.k-slides .m-colh span[hidden] { display: none; }
  html.k-slides .m-colh .is-empty { visibility: hidden; }
  html.k-slides .m-colh b { width: var(--m-pw); text-align: right; font-weight: 500; }
}
@media (min-width: 900px) and (max-width: 1099px) { html.k-slides .r-menu { --m-gx: 28px; } }
@media (min-width: 1500px) and (max-height: 900px) { html.k-slides .r-menu { --m-cols: 4; } }
/* пиццы — две цены справа: колонке нужно место под название (≥ ~150 px), поэтому на ПК колонок меньше: 2 до 1279 px, 3 шире */
@media (min-width: 900px) { html.k-slides .r-menu[data-f="pizzas"] { --m-cols: 2; } }
@media (min-width: 1280px) { html.k-slides .r-menu[data-f="pizzas"] { --m-cols: 3; } }
/* телефон и планшет в портрете: одна колонка (две от 560 px), заголовка раздела нет — его называет вкладка; бронь — в капсуле */
@media (max-width: 899px) {
  html.k-slides #carta-h { font-size: clamp(1.5rem, 4.6svh, 2.5rem); }
  html.k-slides .r-filter { gap: 6px; }
  html.k-slides .r-count { display: none; }
  html.k-slides .r-menu { --m-cols: 1; }
  html.k-slides .m-group { padding-top: clamp(4px, 1.2svh, 14px); }
  html.k-slides .m-group__h { display: none; }
  html.k-slides .m-item__tag { font-size: 14px; margin-top: 2px; }
  html.k-slides .r-carta__cta { display: none; }
  html.k-slides .r-menu__foot { justify-content: center; }
  /* 7 вкладок всегда 4 + 3 в две строки (и на 320 px): доли ширины заданы (сумма строки 92 % + зазоры ≤ 100 %, пятая уже не влезает),
     длинные подписи («Entradas y ensaladas», «Carnes y premium») — в две строки внутри пилюли 44 px (было 3 строки вкладок = −50 px списку).
     Замер Work Sans 500 14 px: «Entradas y» 73 px, «Risottos» 56, «Pastas» 46 */
  html.k-slides .r-menu .r-tab { flex: 1 1 19%; min-width: min-content; }
  html.k-slides .r-menu .r-tab:has(#f-risottos) { flex-basis: 24%; }
  html.k-slides .r-menu .r-tab:has(#f-entradas) { flex-basis: 30%; }
  html.k-slides .r-menu .r-tab:has(#f-carnes) { flex-basis: 38%; }
  html.k-slides .r-menu .r-tab:has(#f-bebidas) { flex-basis: 28%; }
  html.k-slides .r-menu .r-tab:has(#f-vinos) { flex-basis: 26%; }
  html.k-slides .r-menu .r-tab span { padding: 0 4px; white-space: normal; line-height: 1.1; text-align: center; }
}
@media (min-width: 560px) and (max-width: 899px) { html.k-slides .r-menu { --m-cols: 2; --m-gx: 28px; } }
/* низкий телефон в портрете: поля слайда у шапки и капсулы и зазор над вкладками — плотнее */
@media (max-width: 899px) and (max-height: 700px) and (min-height: 501px) {
  html.k-slides .r-carta { padding-top: calc(var(--top) + 6px); padding-bottom: calc(var(--bot) + 4px); }
  html.k-slides .r-menu { margin-top: 4px; }
  html.k-slides .r-filter { padding-bottom: 4px; }
}
@media (max-width: 899px) and (max-height: 500px) {
  /* Pulcinella 06.10: в низком ландшафте (3 колонки по ≈270 px, список ≈230 px высотой) описание под названием шириной
     ≈160 px не помещало самую длинную позицию («Tabla premium…») в колонку — здесь описание на всю ширину позиции */
  html.k-slides .m-item { grid-template-areas: "n p" "pp pp" "t t" "d d"; }
  html.k-slides .r-carta__head { flex-wrap: nowrap; }
  html.k-slides #carta-h { font-size: 1.5rem; }
  html.k-slides .r-filter__tabs { flex-wrap: nowrap; }
  html.k-slides .r-tab { flex: 1 1 auto; }
  html.k-slides .r-menu { --m-cols: 3; --m-gx: 24px; }
  /* низкий ландшафт (896×331): «‹ 1 / 4 ›» — справа в строке заголовка (строка «La carta» короткая), списку +50 px */
  html.k-slides .r-carta { position: relative; }
  html.k-slides .r-menu__foot { position: absolute; top: calc(var(--top) + clamp(8px, 2.5svh, 32px) - 8px); right: var(--gut); width: auto; margin: 0; }
}

/* ---------- Fuego: шрифт строк по высоте ---------- */
html.k-slides .r-fuego__l { font-size: min(var(--fs-fire), 7.5svh); }
html.k-slides .r-fuego__p { font-size: max(14px, min(1.125rem, 2.4svh)); }
@media (max-width: 899px) { html.k-slides .r-fuego__txt { bottom: calc(var(--bot) + 16px); } html.k-slides .r-fuego__pause { bottom: calc(var(--bot) + 16px); } }

/* ---------- Cocina: три кадра; высота кадра по экрану ---------- */
html.k-slides .r-cocina { display: flex; flex-direction: column; padding-left: 0; padding-right: 0; }
html.k-slides .r-cocina__h { font-size: clamp(1.75rem, 6svh, 3.5rem); flex: none; width: 100%; }
html.k-slides .r-cocina__lead { flex: none; width: 100%; margin-top: clamp(4px, 1svh, 14px); font-size: max(14px, min(1.0625rem, 2.2svh)); line-height: 1.4; }
html.k-slides .r-swap { flex: 1 1 auto; min-height: 0; margin-top: clamp(8px, 2svh, 28px); }
html.k-slides .r-step__h { font-size: clamp(1.375rem, 4.4svh, 2.75rem); }
html.k-slides .r-step p { font-size: max(14px, min(1.0625rem, 2.2svh)); margin-top: 6px; }
@media (min-width: 900px), (max-height: 500px) {
  html.k-slides .r-swap { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: minmax(0, 1fr) auto; column-gap: clamp(16px, 2.2vw, 32px); max-width: calc(1360px + 2 * var(--gut)); width: 100%; margin-inline: auto; padding: 0 var(--gut); }
  html.k-slides .r-swap__frame { display: contents; }
  html.k-slides .r-shot { grid-row: 1; grid-column: var(--rs); margin: 0; aspect-ratio: auto; height: 100%; max-height: 48svh; min-height: 0; align-self: end; }
  html.k-slides .r-step { grid-row: 2; grid-column: var(--rs); padding: clamp(8px, 1.8svh, 20px) 0 0; }
}
@media (max-height: 500px) { html.k-slides .r-step p { font-size: 14px; } html.k-slides .r-step__h { font-size: 1.25rem; } }
/* телефон в портрете: три строки «кадр | текст» */
@media (max-width: 899px) and (min-height: 501px) {
  html.k-slides .r-swap { display: grid; grid-template-columns: minmax(0, 38%) minmax(0, 1fr); grid-template-rows: repeat(3, minmax(0, 1fr)); gap: clamp(8px, 1.6svh, 16px) 14px; padding: 0 var(--gut); }
  html.k-slides .r-swap__frame { display: contents; }
  html.k-slides .r-shot { grid-column: 1; grid-row: var(--rs); margin: 0; aspect-ratio: auto; height: 100%; min-height: 0; border-radius: 14px; }
  html.k-slides .r-step { grid-column: 2; grid-row: var(--rs); padding: 0; align-self: center; }
}
/* Pulcinella: низкий телефон в портрете — у шагов Cocina текст длиннее шаблонного («Parmigiano Reggiano» в 2 строки + 3–4 строки):
   колонка текста шире, заголовок шага и строки плотнее, иначе текст шага вылезал из своей строки сетки на соседний */
@media (max-width: 899px) and (min-height: 501px) and (max-height: 700px) {
  html.k-slides .r-swap { grid-template-columns: minmax(0, 30%) minmax(0, 1fr); }
  html.k-slides .r-step__h { font-size: clamp(1.125rem, 3.6svh, 1.5rem); line-height: 1; }
  html.k-slides .r-step p { line-height: 1.3; margin-top: 4px; }
}

/* ---------- Письмо ---------- */
html.k-slides .r-historia { display: flex; flex-direction: column; justify-content: center; }
html.k-slides .r-letter { width: 100%; height: 100%; align-items: center; }
html.k-slides .r-letter__h { font-size: clamp(1.5rem, 5.2svh, 3.25rem); margin-bottom: clamp(6px, 1.8svh, 24px); }
html.k-slides .r-letter__p { font-size: max(16px, min(var(--fs-letter), 3.8svh, 5.2vw)); }
html.k-slides .r-letter__by { margin-top: clamp(8px, 2svh, 28px); }
@media (min-width: 900px), (max-height: 500px) {
  html.k-slides .r-letter { grid-template-columns: 7fr 5fr; gap: clamp(20px, 4vw, 64px); }
  html.k-slides .r-letter__img { order: 0; position: static; aspect-ratio: auto; height: 100%; max-height: calc(var(--sh) - var(--top) - var(--bot) - 5svh); }
  html.k-slides .r-letter__p { font-size: max(16px, min(var(--fs-letter), 4.2svh, 2.6vw)); }
}
@media (max-width: 899px) and (min-height: 501px) {
  html.k-slides .r-letter { display: grid; grid-template-rows: minmax(0, 1fr) auto; gap: clamp(10px, 2svh, 24px); }
  html.k-slides .r-letter__img { aspect-ratio: auto; height: 100%; min-height: 0; max-height: 34svh; order: -1; }
  html.k-slides .r-letter__p { max-width: none; }
}

/* ---------- La casa: знак, поле кадров (container units), подпись ---------- */
html.k-slides .r-casa { display: flex; flex-direction: column; padding-left: 0; padding-right: 0; }
html.k-slides .r-casa__wm { flex: none; }
html.k-slides .r-casa .wm__t { font-size: min(var(--wm-size, 12vw), 20svh); }
/* Pulcinella: знак — картинка 1147 × 536; размер по месту: не выше 20svh и не шире поля */
html.k-slides .r-casa .wm__logo { width: auto; max-width: min(100%, 720px); max-height: 20svh; }
html.k-slides .r-casa__field { flex: 1 1 auto; min-height: 0; height: auto; margin: clamp(6px, 1.6svh, 20px) 0; container-type: size; }
html.k-slides .r-it { position: absolute; display: block; top: calc(var(--sy) * 1cqh); height: calc(var(--sh) * 1cqh); width: auto;
  left: min(calc(var(--sx) * 1cqw), calc(100cqw - var(--sh) * var(--r) * 1cqh - 2 * var(--gut))); margin-left: var(--gut); }
html.k-slides .r-it figure, html.k-slides .r-it img { height: 100%; width: auto; aspect-ratio: var(--r); }
html.k-slides .r-it img { object-fit: cover; }
html.k-slides .r-casa__cap { flex: none; margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 0 20px; max-width: 1360px; font-size: max(14px, min(1rem, 2.1svh)); }
@media (min-width: 900px) { html.k-slides .r-casa__cap { margin-inline: auto; width: 100%; padding: 0 var(--gut); } html.k-slides .r-casa__cap p { max-width: 70ch; } }
/* телефон в портрете: 4 кадра сеткой 2 × 2 */
@media (max-width: 899px) and (min-height: 501px) {
  html.k-slides .r-casa__field { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 10px; padding: 0 var(--gut); container-type: normal; }
  html.k-slides .r-it { position: static; height: auto; min-height: 0; margin: 0; }
  html.k-slides .r-it:nth-child(n + 5) { display: none; }
  html.k-slides .r-it figure { width: 100%; height: 100%; aspect-ratio: auto; }
  html.k-slides .r-it img { width: 100%; height: 100%; aspect-ratio: auto; }
}
@media (max-width: 899px) and (max-height: 500px) { html.k-slides .r-it[data-pc-only] { display: block; } }

/* ---------- Pulcinella 06.10: лист Visitanos — два слайда, на телефоне и на ПК одинаково ----------
   «Reservá» (section.r-reserva, после «La carta» на телефоне, после «El horno» на ПК): форма брони + «Dónde» (адрес, cómo llegar
   и телефон, доставка, para llevar). ПК — две колонки, телефон — стопкой, всё в один экран. «Horario» (.r-fin, последний):
   статус «Abierto / Cerrado ahora», таблица часов, понедельник, feriados + подвал. Было (v2.0): .r-fin = 3 слайда телефона
   ([data-slide-m] «Dónde», «Reservá»), лист и форма — ячейки его сетки */
html.k-slides .r-reserva { height: var(--sh); padding: calc(var(--top) + clamp(8px, 3svh, 40px)) var(--gut) calc(var(--bot) + clamp(8px, 2svh, 24px));
  overflow: clip; display: flex; flex-direction: column; justify-content: center; }
html.k-slides .r-reserva .r-sheet__g { width: 100%; }
html.k-slides .r-res__f { gap: clamp(8px, 1.4svh, 16px); }
html.k-slides .r-res select, html.k-slides .r-seg span { height: 44px; }
html.k-slides .r-res__go { margin-top: clamp(10px, 2svh, 24px); height: 48px; }
html.k-slides .r-fin { height: var(--sh); display: grid; grid-template-rows: minmax(0, 1fr) auto; background: var(--paper); border-radius: var(--r-sheet) var(--r-sheet) 0 0; }
html.k-slides .r-sheet { border-radius: 0; background: none; overflow: clip; display: flex; flex-direction: column; justify-content: center;
  padding: calc(var(--top) + clamp(8px, 3svh, 40px)) var(--gut) clamp(8px, 2svh, 24px); }
html.k-slides .r-sheet .r-sheet__g { width: 100%; }
html.k-slides .r-foot__g > div:not(.r-foot__contact) { display: none; }   /* часы — на листе выше, адрес — на слайде «Reservá» */
html.k-slides .r-foot { border-radius: 0; }
html.k-slides .r-status__t { font-size: clamp(2rem, 7svh, 4.5rem); }
html.k-slides .r-status__d { font-size: clamp(1.25rem, 3.6svh, 2rem); }
html.k-slides .r-hours li { padding: clamp(2px, .5svh, 5px) 0; }
@media (min-width: 900px) {
  html.k-slides .r-status { margin-bottom: clamp(10px, 2.4svh, 32px); }
  html.k-slides .r-foot { padding: clamp(12px, 2.4svh, 28px) var(--gut); display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 4px 40px; }
  html.k-slides .r-foot__g { display: block; margin: 0; }
  html.k-slides .r-foot__contact { display: flex; align-items: center; gap: 4px 24px; flex-wrap: wrap; }
  html.k-slides .r-foot__contact .r-foot__h { display: none; }
  html.k-slides .r-foot__nav { margin: 0; justify-self: end; }
  html.k-slides .r-foot__small { grid-column: 1 / -1; margin: 0; max-width: none; }
}
/* телефон и планшет в портрете: «Reservá» — форма, под ней «Dónde» компактно (строки ссылок по 44 px — цели касания не перекрываются) */
@media (max-width: 899px) {
  html.k-slides .r-reserva { justify-content: center; padding-top: calc(var(--top) + clamp(4px, 1.6svh, 24px)); padding-bottom: calc(var(--bot) + 4px); }
  html.k-slides .r-reserva .r-sheet__g { gap: clamp(10px, 2.4svh, 32px); }
  html.k-slides .r-res label, html.k-slides .r-res legend { margin-bottom: clamp(2px, .8svh, 8px); font-size: 14px; }
  html.k-slides .r-res__f { gap: clamp(4px, 1.2svh, 16px); }
  html.k-slides .r-res .r-h3, html.k-slides .r-sheet__where .r-h3 { margin-bottom: clamp(4px, 1svh, 14px); }
  html.k-slides .r-res__go { margin-top: clamp(8px, 1.8svh, 24px); }
  html.k-slides .r-where { font-size: 1.125rem; }
  html.k-slides .r-sheet__where .r-mute { font-size: 14px; }
  html.k-slides .r-sheet__p { margin: 0; padding: 10px 0; font-size: 14px; line-height: 24px; max-width: none; }   /* строка 44 px = цель касания ссылки (padding 10 + margin −10, sections.css) */
  html.k-slides .r-where__go { font-size: 14px; }
  html.k-slides .r-where__go .r-link { font-size: 1rem; }
  html.k-slides .r-where__tel a { padding: 0; min-height: 44px; display: inline-flex; align-items: center; }
  html.k-slides .r-sheet { justify-content: center; padding: calc(var(--top) + clamp(8px, 2.4svh, 28px)) var(--gut) 8px; }
  html.k-slides .r-foot { padding: 10px var(--gut) calc(var(--bot) + 6px); }
  html.k-slides .r-foot__g { gap: 0; }
  html.k-slides .r-foot__contact .r-foot__h { display: none; }
  html.k-slides .r-foot__contact p { margin: 0; }
  html.k-slides .r-foot__contact { display: flex; flex-wrap: wrap; column-gap: 20px; }   /* WhatsApp · Instagram · Facebook в строку (переносятся) */
  html.k-slides .r-foot__nav { display: none; }   /* на телефоне навигация — капсула и шапка */
  html.k-slides .r-foot__small { margin: 0; font-size: 14px; }
}
/* низкий телефон в портрете: «Dónde» без своей метки (адрес говорит сам), поля плотнее */
@media (max-width: 899px) and (max-height: 700px) and (min-height: 501px) {
  html.k-slides .r-sheet__where .r-h3 { display: none; }
  html.k-slides .r-res__f { gap: 4px; }
  html.k-slides .r-res__go { margin-top: 10px; }
}
/* телефон в портрете: «¿Mediodía o noche?» — слева в строке кнопок (legend с float — обычный флекс-элемент), подписи полей плотнее */
@media (max-width: 899px) and (min-height: 501px) {
  html.k-slides .r-seg { align-items: center; column-gap: 6px; }
  html.k-slides .r-seg legend { float: left; width: auto; margin: 0; padding-right: 4px; }
  html.k-slides .r-seg span { padding: 0 16px; }
  html.k-slides .r-res label, html.k-slides .r-res legend { line-height: 1.2; }
}
@media (max-width: 359px) and (min-height: 501px) { html.k-slides .r-seg span { padding: 0 12px; } html.k-slides .r-where { font-size: 1rem; } }
/* очень низкий телефон (320×568): без метки «Armá tu reserva» и строки «o llamanos al …» (номер для связи — WhatsApp в подвале
   последнего слайда, как в шаблоне); ссылки подвала мельче — в 2 строки, а не в 3 */
@media (max-width: 899px) and (max-height: 600px) and (min-height: 501px) {
  html.k-slides .r-res .r-h3, html.k-slides .r-where__tel { display: none; }
  /* подписи полей — только для чтения экрана: значения говорят сами («2 personas», «Hoy, martes 6», «Mediodía · Noche») */
  html.k-slides .r-res__row:not(.r-seg) > label, html.k-slides .r-seg legend { position: absolute; width: 1px; height: 1px; padding: 0; margin: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  html.k-slides .r-res__f { gap: 2px; }
  html.k-slides .r-reserva .r-sheet__g { gap: 6px; }
  html.k-slides .r-foot__contact a { font-size: 14px; }
}
/* ландшафт телефона: «Reservá» — две колонки (форма | «Dónde»), поля формы в один ряд; «Horario» — статус | часы */
@media (max-width: 899px) and (max-height: 500px) {
  html.k-slides .r-reserva .r-sheet__g { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; align-items: center; }
  html.k-slides .r-res__f { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); gap: 4px 12px; }   /* «cuántos» и «día» в ряд (у дня место под «Mañana, miércoles 30»), «mediodía / noche» под ними */
  html.k-slides .r-res__f .r-seg { grid-column: 1 / -1; align-items: center; column-gap: 6px; }
  html.k-slides .r-seg legend { float: left; width: auto; margin: 0; padding-right: 4px; }
  html.k-slides .r-seg span { padding: 0 14px; }
  html.k-slides .r-res select { padding: 0 34px 0 12px; background-position: right 12px center; }
  html.k-slides .r-res .r-h3 { margin-bottom: 4px; }
  html.k-slides .r-res label, html.k-slides .r-res legend { margin-bottom: 0; }
  html.k-slides .r-reserva { padding-top: calc(var(--top) + 6px); padding-bottom: 6px; }
  html.k-slides .r-sheet .r-sheet__c { display: grid; grid-template-columns: 1fr 1fr; column-gap: 24px; align-content: start; }
  html.k-slides .r-sheet .r-status { grid-column: 1; grid-row: 1 / span 3; }
  html.k-slides .r-sheet .r-sheet__c > :not(.r-status) { grid-column: 2; }
  html.k-slides .r-sheet { padding-top: calc(var(--top) + 6px); }
  html.k-slides .r-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 0 24px; padding-top: 2px; padding-bottom: 2px; }
}

/* индикатор слайдов (ПК): точки справа, кликабельные; телефон: «3 / 8» в шапке */
.r-dots { position: fixed; z-index: 65; right: 8px; top: 50%; translate: 0 -50%; display: flex; flex-direction: column; border-radius: 999px; padding: 4px 0; }   /* стекло — base.css */
.r-dots button { width: 44px; height: 44px; display: grid; place-items: center; }
.r-dots button::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; opacity: .55; }
.r-dots button[aria-current="true"]::before { opacity: 1; height: 20px; border-radius: 4px; }

.r-num { font-size: 14px; font-weight: 500; font-variant-numeric: tabular-nums; white-space: nowrap; margin-left: auto; padding: 0 14px; min-height: 44px; display: inline-flex; align-items: center; border-radius: 999px; }   /* стекло — base.css */
/* точки — от 1200 px (уже — номер «n / N» в шапке, как на телефоне: колонке точек не хватает поля) */
@media (max-width: 1199px) { .r-dots { display: none !important; } }
@media (min-width: 1200px) { .r-num { display: none; } }
@media (max-width: 899px) and (max-height: 500px) { .r-num { display: none; } }
/* v2.4: 320 px — «n / N» рядом со знаком и меткой шаблона не помещался (уходил за правый край); номер — второстепенное, капсула внизу есть */
@media (max-width: 359px) { .r-num { display: none; } }
@media (max-width: 899px) and (max-height: 500px) { html.k-slides .r-casa .wm__t { font-size: min(var(--wm-size, 12vw), 13svh); } html.k-slides .r-casa .wm__logo { max-height: 13svh; } }
/* v2.0: очень низкий ландшафт телефона (iPhone 11 в Safari с панелями — 896×331, 812×330): герой и бронь влезают под шапку 48 px */
@media (max-width: 899px) and (max-height: 360px) {
  html.k-slides .hero__title { font-size: 2.25rem; }
  html.k-slides .r-hero__status { min-height: 0; margin-top: 10px; }   /* при ширине ≥812 статус в одну строку */
  html.k-slides .hero__cta { margin-top: 14px; }
  html.k-slides .r-res__go { margin-top: 8px; }
}
/* v2.3: в узкой колонке (на любых ширинах от 900 px: 2–4 колонки) метка «Para compartir» в строке «название · метка · цена» наезжала на название и
   выталкивала цену за край — там метка уходит под название: строка 1 «название · цена», строка 2 метка, строка 3 описание */
@media (min-width: 900px) {
  .m-item { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "n p" "t t" "d d"; }   /* Pulcinella 06.10: в слайдах — своя сетка выше (колонка цен) */
  .m-item__tag, html.k-slides .m-item__tag { justify-self: start; margin-top: 1px; }
}
