/* ============================================================
   Luna СПА — свой CSS поверх Elementor.

   Порядок правил важен: база -> медиазапрос 1040 -> медиазапрос 680.
   На первом этапе проекта обратный порядок трижды ломал вёрстку
   (подробности в site-v3/_README_v3.md). База всегда идёт до медиазапросов.
   ============================================================ */

:root{
  /* фоны */
  --luna-cream:#FBF8F2;
  --luna-cream-2:#F5EFE4;
  --luna-cream-3:#F0E7D8;
  /* тёмные */
  --luna-dark:#3B322A;
  --luna-ink:#2E2A24;
  /* акценты */
  --luna-brown:#8A5F30;
  --luna-brown-dark:#664524;
  --luna-gold:#E0B877;
  /* оливково-фисташковый */
  --luna-olive:#4F5A34;
  --luna-olive-2:#5A6539;
  --luna-pistachio:#DCE3C4;
  /* текст */
  --luna-muted:#6E6255;
  --luna-muted-2:#736546;
}

/* ------------------------------------------------------------
   Запасной отступ под фиксированную шапку.

   В эталоне первый блок каждой внутренней страницы сам держит
   padding-top:clamp(120px,16vw,150px). Страницы, собранные в Elementor,
   получают этот отступ из своей вёрстки — у них класс .elementor-page,
   и правило их не касается. Здесь подстраховка для обычных страниц
   WordPress, чтобы контент не уезжал под шапку.
   ------------------------------------------------------------ */
body.luna.luna-no-hero:not(.elementor-page) .site-main{padding-top:110px}

/* ------------------------------------------------------------
   Админ-панель WordPress и фиксированная шапка.

   Админ-бар сдвигает страницу через html{margin-top}, но элементы
   с position:fixed этого сдвига не видят и уезжают под него.
   Залогиненный заказчик видел бы шапку наполовину перекрытой.
   Высоты admin bar заданы самим WordPress: 32px и 46px на узких экранах.
   ------------------------------------------------------------ */
body.luna.admin-bar #hdr{top:32px}
@media (max-width:782px){body.luna.admin-bar #hdr{top:46px}}


/* ------------------------------------------------------------
   Базовый межстрочный интервал.

   Hello Elementor ставит на body line-height:1.5. В эталоне на body
   межстрочный не задан вообще — он наследует browser default «normal».
   Разница вылезает везде, где дизайн не указал line-height явно:
   строка длительности в карточке становится 20px вместо 18, строка
   с ценой 45 вместо 43, и каждая карточка каталога выше эталонной
   на 12px. По отдельности мелочь, но это ровно та систематическая
   дрейфующая типографика, из-за которой перенос «почти похож».

   Возвращаем normal. Элементы, где дизайн задал line-height явно
   (1.5 / 1.6 / 1.7 инлайном), не затрагиваются — у них своё значение.
   ------------------------------------------------------------ */
body.luna{line-height:normal}

/* ------------------------------------------------------------
   Сброс отступов у заголовков и абзацев.

   В эталоне всё держится на `*{margin:0}`, а расстояния заданы инлайном
   у каждого блока. Hello Elementor добавляет собственные правила вида
   h1…h6{margin-top:.5rem;margin-bottom:1rem} — селектор по тегу сильнее
   звёздочки, поэтому сброс эталона проигрывает.

   Полное правило темы:
       h1…h6 { color:inherit; font-family:inherit; font-weight:500;
                line-height:1.2; margin-block-end:1rem; margin-block-start:.5rem }

   Отсюда сразу три расхождения: лишние 8px сверху у каждого заголовка,
   межстрочный 1.2 вместо browser default (имя мастера в карточке — 31px
   вместо 36) и насильственный вес 500. В эталоне ничего этого нет:
   `*{margin:0}` плюс значения по умолчанию браузера.

   Селекторы намеренно такой же специфичности (0,0,1), как у темы:
   luna.css грузится после неё и выигрывает при равенстве, а правила
   макета по классам (`.h2` задаёт свои line-height и font-weight)
   остаются сильнее и работают как задумано.
   ------------------------------------------------------------ */
h1,h2,h3,h4,h5,h6{margin:0;line-height:normal;font-weight:bold}
p,ul,ol,figure{margin:0}

/* Текст, который заказчик пишет в админке, — единственное место, где нужен
   свой ритм: там нет инлайновых отступов. Шаг взят из макета (16px между
   абзацами на странице программы). */
body.luna .luna-prose p{margin:0 0 16px}
body.luna .luna-prose p:last-child{margin-bottom:0}
body.luna .luna-prose h2,body.luna .luna-prose h3{margin:28px 0 12px}
body.luna .luna-prose ul,body.luna .luna-prose ol{margin:0 0 16px 22px}

/* ------------------------------------------------------------
   УТВЕРЖДЁННОЕ ОТКЛОНЕНИЕ ОТ ЭТАЛОНА — Q19, решение от 22.09.2026.

   Страницы эталона расходились в акцентном коричневом:
     index.html    — кнопки и ссылки #8A5F30, наведение #664524
     program.html  — кнопки и ссылки #A6763E, наведение #8A5F30

   Заказчик свёл к #A6763E — это охра из ТЗ («ключевой акцент ≈ #A6763E»).
   Тёмный #8A5F30 остаётся состоянием наведения, как было в program.html.

   Сведение сделано здесь, а не правкой luna-base.css: тот файл — дословная
   копия принятого дизайна, и он должен оставаться сверяемым с эталоном.
   Все осознанные расхождения — в этом блоке, чтобы их было видно одним
   взглядом и можно было откатить.
   ------------------------------------------------------------ */
/*
 * Селекторы намеренно те же, что в эталоне, без префикса body.luna.
 *
 * Первая версия этого блока была написана как `body.luna a{color:#A6763E}` —
 * и перекрасила текст на кнопках в коричневый. Причина в специфичности:
 * `body.luna a` — это (0,1,2), а `.btn-book` и `.btn-primary`, задающие
 * белый и кремовый текст, всего (0,1,0). Правило про ссылки выиграло
 * у правил про кнопки, хотя речь шла о разных вещах.
 *
 * В эталоне то же правило записано как `a{...}` — (0,0,1), и кнопкам оно
 * не мешает. Повторяем эту запись: luna.css грузится после luna-base.css,
 * поэтому при равной специфичности побеждает он, а компонентные классы
 * остаются сильнее и сохраняют свой цвет текста.
 */
a{color:#A6763E}
a:hover{color:#8A5F30}
.btn-primary{background:#A6763E}
.btn-book{background:#A6763E}
.tab.active{background:#A6763E;border-color:#A6763E}
:focus-visible{outline-color:#A6763E}

/* ------------------------------------------------------------
   Hello Elementor перекрашивает любые <button> при наведении.

   В reset.css темы лежит:
       button:focus, button:hover { background-color:#c36; color:#fff }

   #c36 — это розовый #CC3366. Табы каталога и бургер в макете сделаны
   обычными <button> со своими классами, а `button:hover` (0,1,1)
   специфичнее, чем `.tab` (0,1,0), — поэтому при наведении таб
   становился розовым. В эталоне наведение на таб не меняет ничего:
   правила :hover там нет вовсе.

   Возвращаем это поведение. Значения — из `.tab` эталона, не новые.
   ------------------------------------------------------------ */
.tab:hover,.tab:focus{background:transparent;color:#4A4038}
.tab.active:hover,.tab.active:focus{background:#A6763E;color:#fff}
.burger:hover,.burger:focus{background:none}

/*
   То же для вопросов FAQ: в эталоне у .faq-q фон none и никакого :hover,
   поэтому при наведении вопрос заливался розовым.

   У кнопок конструктора :hover в эталоне есть, а :focus нет — после клика
   кнопка оставалась бы розовой. :not(:hover) — чтобы под курсором
   по-прежнему работала подсветка эталона.

   Плитки галереи и крестик лайтбокса защищены сами: у плиток фон задан
   в style="", у крестика селектор с #lightbox.
*/
.faq-q:hover,.faq-q:focus{background:none}
.cbtn:focus:not(:hover){background:#fff;color:#3B322A}

/* ------------------------------------------------------------
   Базовый стиль <button> из того же reset.css Hello Elementor.

   Кроме наведения Hello задаёт всем кнопкам:
       white-space:nowrap; border-radius:3px; padding:.5rem 1rem;
       font-size:1rem; line-height (через body); color/border #c36

   Эталон свёрстан без этого. Заметнее всего white-space:nowrap:
   длинный вопрос FAQ на телефоне не переносится, а .faq-item
   с overflow:hidden молча обрезает хвост — горизонтального скролла
   при этом нет, и проверка ширины страницы такого не ловит.
   Из-за line-height табы каталога были выше эталона на 1,7px.

   Возвращаем базу эталона тем же селектором `button` (0,0,1):
   правило грузится после reset.css и побеждает его по порядку,
   но проигрывает любому классу из эталона — .faq-q, .tab, .gcell
   и прочие по-прежнему задают своё.

   padding:0 — из сброса эталона `*{padding:0}`; остальное — значения
   браузера по умолчанию, на которых эталон и собран (revert).
   Сверено по вычисленным стилям всех кнопок на пяти страницах
   против /v3 на 375 и 1440px — совпадают.

   Одно отличие оставлено намеренно — шрифт. Кнопки по умолчанию
   не наследуют шрифт страницы, и в эталоне текст вопросов FAQ
   набран Arial. Это ошибка прототипа, а не решение: табам каталога
   дизайнер прописал Manrope явно. Здесь font-family наследуется,
   вопросы идут Manrope, и на телефоне блок вопроса из двух строк
   выше эталона на 6px — Manrope выше Arial по метрикам.
   ------------------------------------------------------------ */
button,[type=button],[type=submit]{
	white-space:revert;
	border-radius:revert;
	border-color:revert;
	padding:0;
	font-size:revert;
	line-height:revert;
	color:revert;
}

/* ------------------------------------------------------------
   Логотип в шапке.

   Elementor объявляет `.elementor img{height:auto;max-width:100%}` —
   специфичность (0,1,1). Правило макета `.logo-img{height:42px}` — (0,1,0),
   и оно проигрывает: высота логотипа начинала считаться от ширины,
   которую ему выдавал флекс. Логотип «плавал» — 59px, 52px, — вместо
   фиксированных 42px эталона.

   Поднимаем специфичность через #hdr. Значения — из эталона:
   42px на десктопе, 36px на экранах до 680px.

   То же касается любого <img>, которому дизайн задаёт высоту в CSS:
   внутри Elementor нужен селектор сильнее, чем `.elementor img`.
   ------------------------------------------------------------ */
#hdr .logo-img{height:42px;width:auto}
@media (max-width:680px){#hdr .logo-img{height:36px}}

/* ------------------------------------------------------------
   Коллизия имён между страницами эталона.

   В макете у каждой страницы свой изолированный <style>, поэтому одно
   и то же имя класса спокойно значит разное:

     index.html / about.html — `.step-num` это крупная цифра в карточке
                               «Как проходит визит»: position:absolute,
                               top:26px, left:28px, 34px;
     program.html            — `.step-num` это кружок 54px в списке
                               «Как проходит сеанс», обычный флекс-элемент.

   У нас CSS главной лежит в глобальном luna-base.css, поэтому на странице
   программы правило страницы переопределяло размер, фон и шрифт, но
   position:absolute от главной оставалось — и кружок с номером уезжал
   на left:28px, за пределы своего блока. Визуально номера просто исчезали.

   Сбрасываем позиционирование там, где кружок: селектор с классом тела
   страницы бьёт правило главной по специфичности и не задевает саму главную.

   Проверка на будущее: сравнить селекторы страниц эталона с index.html
   и посмотреть, какие свойства базового правила НЕ переобъявлены
   страничным. Сейчас так протекает только `.step-num`; у `.g-footer`,
   `.btn-book`, `.btn-outline`, `.g-agg`, `.tab.active` правила страниц
   перекрывают базовые целиком.
   ------------------------------------------------------------ */
body.single-luna_program .step-num{position:static;top:auto;left:auto;z-index:auto;transition:none}

/* ------------------------------------------------------------
   Конструктор: недоступная строка.

   Состояния, которого в эталоне нет: программы 21 и 22 выбираются
   только вместе с другой программой (Q13, п. 3), до этого галочка
   отключена. Строку приглушаем и убираем «руку» и подсветку наведения,
   иначе она выглядит кликабельной и не отвечает — это читается как поломка.
   ------------------------------------------------------------ */
.bld-item.is-off{opacity:.5;cursor:default}
.bld-item.is-off:hover{background:none}
.bld-item.is-off input{cursor:default}

/* ------------------------------------------------------------
   Конструктор: предупреждение о 150 минутах (Q13, п. 4).

   Строка стоит под подвалом с итогом и кнопкой, на всю ширину карточки.
   Боковые отступы — как у .bld-foot в эталоне: 20px, а до 680px — 10px.
   Внутри подвала её держать нельзя: она расширяла левую колонку,
   и кнопка «Записаться» сжималась так, что стрелка наезжала на текст.
   ------------------------------------------------------------ */
.bld-warn{margin:12px 20px 6px;font-size:14px;line-height:1.45;font-weight:600;color:#8A5F30}
@media (max-width:680px){.bld-warn{margin-left:10px;margin-right:10px}}

/* ------------------------------------------------------------
   Конструктор: форма заявки (inc/leads.php, Q14).

   В эталоне полей нет — это дополнение к макету. Цвета и скругления —
   из палитры эталона: поля как карточки (#fff, тонкая рамка), акцент
   #A6763E, подписи #736546. Отступы по бокам — как у подвала: 20px,
   до 680px — 10px.

   Кнопка «Отправить заявку» — это <button>, а не ссылка, как остальные
   .btn-primary. Hello Elementor даёт всем кнопкам рамку и розовый фон
   при наведении и фокусе (button:hover, 0,1,1) — у .btn-primary
   в эталоне своего фона при наведении нет, поэтому задаём явно.
   ------------------------------------------------------------ */
.bld-form{display:grid;gap:12px;margin:14px 20px 8px;padding-top:18px;border-top:1px solid rgba(59,50,42,0.12)}
.bld-form[hidden]{display:none}
.bld-form-title{font-size:15px;line-height:1.45;font-weight:600;color:#3B322A}
.bld-form input[type=text],.bld-form input[type=tel]{width:100%;height:52px;padding:0 18px;border:1px solid rgba(59,50,42,0.18);border-radius:14px;background:#fff;font-family:'Manrope',sans-serif;font-size:16px;color:#3B322A;transition:border-color .2s ease,box-shadow .2s ease}
.bld-form input[type=text]:focus,.bld-form input[type=tel]:focus{outline:none;border-color:#A6763E;box-shadow:0 0 0 3px rgba(166,118,62,0.15)}
.bld-form input::placeholder{color:#9A8D78}
.bld-form .bld-hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.bld-consent{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;line-height:1.45;color:#736546;cursor:pointer}
.bld-consent input{width:18px;height:18px;margin:1px 0 0;flex-shrink:0;accent-color:#5A6539;cursor:pointer}
.bld-consent a{color:#8A5F30;text-decoration:underline}
/*
   Возврат значений .btn-primary из эталона. Правило сброса кнопок выше
   (`button,[type=button],[type=submit]{…revert}`) для <button type="submit">
   весит столько же, сколько .btn-primary (0,1,0), и стоит в файле позже —
   поэтому без этой строки кнопка теряла скругление, отступы и цвет текста.
   У ссылок .btn-primary атрибута type нет, их это не касается.
*/
.bld-form .btn-primary{border:none;border-radius:999px;padding:7px 7px 7px 28px;color:#FBF8F2;white-space:nowrap;cursor:pointer;justify-content:space-between;width:100%}
.bld-form .btn-primary:hover,.bld-form .btn-primary:focus{background:#A6763E;color:#FBF8F2}
.bld-form .btn-primary:disabled{opacity:.6;cursor:default}
.bld-form-msg{font-size:14px;line-height:1.45;color:#736546}
.bld-form-msg:empty{display:none}
.bld-form-msg.is-err{color:#9A4A32;font-weight:600}
.bld-form-done{display:grid;gap:4px;padding:6px 0 4px;font-size:15px;line-height:1.5;color:#736546}
.bld-form-done strong{font-size:18px;color:#3B322A}
@media (max-width:680px){.bld-form{margin-left:10px;margin-right:10px}.bld-form .btn-primary{padding-left:24px}}
/* Пока форма заявки открыта, липкая панель итога на телефоне не нужна: она
   закрывала кнопку «Отправить заявку», а сама умеет только открыть эту форму. */
.luna-form-open #sticky.on{display:none}

/* Название программы без пробела — «Заземление(массаж швз)» — браузер считает
   одним словом и не переносит: на телефоне заголовок уезжал за край и срезался.
   Перенос внутри слова — только когда слово не влезает в строку целиком,
   остальные заголовки набираются как в эталоне. */
h1,h2,.cta-title,.prog-inline-name{overflow-wrap:anywhere}

/* ---------- Окно «Получить консультацию» (inc/consult.php) ----------
   Сверх макета, просьба заказчика 25.09.2026. Поля и кнопка — те же, что
   у формы конструктора (.bld-form), чтобы формы сайта выглядели одинаково. */
.lc{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:16px}
.lc[hidden]{display:none}
.lc-backdrop{position:absolute;inset:0;background:rgba(46,42,36,0.62)}
.lc-box{position:relative;width:100%;max-width:480px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow:auto;background:#FBF8F2;border-radius:24px;padding:38px 34px 30px;box-shadow:0 24px 60px rgba(30,25,21,0.28)}
.lc-x{position:absolute;top:14px;right:14px;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#736546}
.lc-x:hover,.lc-x:focus{background:#F0E7D8;color:#3B322A}
.lc-title{font-weight:700;font-size:30px;line-height:1.12;letter-spacing:-0.02em;color:#3B322A;margin:0 36px 10px 0}
.lc-text{font-size:16px;line-height:1.55;color:#6E6255;margin-bottom:20px}
.lc-form.bld-form{margin:0;padding-top:0;border-top:0}
.lc-form textarea{width:100%;min-height:88px;padding:14px 18px;border:1px solid rgba(59,50,42,0.18);border-radius:14px;background:#fff;font-family:'Manrope',sans-serif;font-size:16px;line-height:1.45;color:#3B322A;resize:vertical;transition:border-color .2s ease,box-shadow .2s ease}
.lc-form textarea:focus{outline:none;border-color:#A6763E;box-shadow:0 0 0 3px rgba(166,118,62,0.15)}
.lc-form textarea::placeholder{color:#9A8D78}
.lc-open,.lc-open body{overflow:hidden}
.lc-open #sticky{display:none}
@media (max-width:680px){.lc-box{padding:34px 20px 22px;border-radius:20px}.lc-title{font-size:26px}.lc-form.bld-form{margin:0}}

/* Кнопка «Получить консультацию»: вторичная, обводкой — рядом с «Записаться».
   Высота и скругление — как у .btn-primary / .btn-ghost эталона. */
.btn-consult{display:inline-flex;align-items:center;justify-content:center;height:62px;padding:0 30px;border-radius:999px;border:1px solid rgba(59,50,42,0.28);background:transparent;color:#3B322A;font-weight:600;font-size:17px;white-space:nowrap;transition:background .2s ease,border-color .2s ease;-webkit-tap-highlight-color:transparent}
.btn-consult:hover,.btn-consult:focus{color:#3B322A;border-color:rgba(59,50,42,0.55);background:rgba(59,50,42,0.04)}
.btn-consult.on-dark{border-color:rgba(251,248,242,0.6);color:#FBF8F2}
.btn-consult.on-dark:hover,.btn-consult.on-dark:focus{color:#FBF8F2;border-color:#FBF8F2;background:rgba(251,248,242,0.1)}
@media (max-width:680px){.btn-consult{width:100%;height:56px;font-size:16px}}

/* «Атмосфера студии»: на телефоне подпись — под заголовком, а не сбоку
   (просьба заказчика 25.09.2026; класс ставит генератор, bc.put_studio_photos). */
@media (max-width:680px){.gal-head{flex-direction:column;align-items:flex-start !important;gap:8px !important}}

/* Главная, блок «Тихое место»: в столбик (до 1040px) фото стоит под текстом
   и относится к нему, а в макете от текста до фото было 68px (32 отступ абзаца
   + 36 сетка), от фото до «Атмосферы студии» — 40px: фото «висело» ближе
   к следующему блоку. Заказчик 25.09.2026: к тексту ближе, от галереи дальше. */
@media (max-width:1040px){
  #about .g-about{gap:28px}
  #about .g-about>div:last-child>p:last-child{margin-bottom:0 !important}
  #about>.g-about+div{padding-top:56px !important}
}

/* «О студии», «Философия заботы» в столбик (до 1040px): фото над текстом
   и относится к нему. Отступы — как у «Тихого места» на главной:
   фото → текст 28px, текст → «Атмосфера студии» 56px (было 36 и 40).
   Заказчик 25.09.2026. Класс .g-philo ставит генератор (bc.put_studio_photos). */
@media (max-width:1040px){
  .g-split.g-philo{gap:28px}
  .g-philo+div{padding-top:56px !important}
}

/* Страница политики обработки персональных данных (inc/legal.php).
   Юридический текст длинный — кегль мельче, чем у статьи блога, колонка та же. */
.legal{max-width:760px;margin:0 auto;font-size:16.5px;line-height:1.7;color:#4A4038}
.legal p{margin:0 0 14px}
.legal h2{font-family:'Manrope',sans-serif;font-weight:700;font-size:23px;line-height:1.25;letter-spacing:-0.01em;color:#3B322A;margin:40px 0 14px}
.legal h3{font-family:'Manrope',sans-serif;font-weight:700;font-size:18px;line-height:1.35;color:#3B322A;margin:26px 0 10px}
.legal strong{color:#3B322A;font-weight:700}
.legal ul{margin:0 0 16px;padding-left:22px;list-style:disc}
.legal li{margin:0 0 6px;padding-left:4px}
.legal li::marker{color:#A6763E}
.legal>p:first-child{font-size:17px}
@media (max-width:680px){.legal{font-size:15.5px}.legal h2{font-size:20px;margin-top:32px}}

/* Блок «Акции» на главной (inc/promos.php) — сверх макета, заказчик 25.09.2026.
   Карточка — .card макета, плашка — как категория на карточке программы. */
.promo-grid{max-width:980px;margin:0 auto}
.promo-card{display:flex;flex-direction:column;align-items:flex-start;padding:30px 32px 32px}
.promo-tag{background:#F0E7D8;color:#4F5A34;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:5px 11px;border-radius:999px}
.promo-big{font-size:58px;font-weight:800;line-height:1;letter-spacing:-0.03em;margin:22px 0 12px}
.promo-title{font-weight:700;font-size:23px;line-height:1.2;color:#3B322A;letter-spacing:-0.01em;margin-bottom:8px}
.promo-text{font-size:16px;line-height:1.6;color:#6E6255;margin-bottom:24px;flex:1}
.promo-note{text-align:center;font-size:14px;color:#736546;margin-top:24px}
@media (max-width:680px){.promo-grid{grid-template-columns:1fr}.promo-card{padding:26px 24px 26px}.promo-big{font-size:50px}}

/* Блоки «Luna СПА» в Elementor (inc/blocks.php): контейнер и обёртка элемента
   не должны добавлять отступов — блок во всю ширину, как секция макета. */
.e-con:has(> [class*="elementor-widget-luna_"]){--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;--gap:0px;--row-gap:0px;--column-gap:0px;padding:0;gap:0}
[class*="elementor-widget-luna_"]{width:100%;max-width:100%;margin:0 !important}
[class*="elementor-widget-luna_"] > .elementor-widget-container{margin:0;padding:0}
/* Страница начинается не с блока-заголовка (у тех свой отступ под меню):
   первому блоку — отступ на высоту закреплённого меню (--luna-hdr-h ставит
   скрипт в inc/blocks.php), иначе верх блока уходит под меню. */
body.luna-no-hero .elementor > .e-con:first-child > [class*="elementor-widget-luna_"]:first-child:not([class*="_hero"]):not([class*="_head"]){padding-top:var(--luna-hdr-h,99px)}
/* «Отзывы»: плашки площадок и сами отзывы — два блока (в эталоне одна секция).
   Стоят рядом — между ними 26px, как в эталоне; порознь — обычные отступы. */
.elementor-widget-luna_reviews_agg:has(+ .elementor-widget-luna_reviews_list) .container{padding-bottom:0}
.elementor-widget-luna_reviews_agg + .elementor-widget-luna_reviews_list .container{padding-top:0 !important}

/* ------------------------------------------------------------
   Конструктор: кнопка (i) с анонсом программы (решение 28.09.2026).
   С мышью — подсказка .bld-tip, без мыши — плашка .bld-sheet снизу
   (assets/luna-home.js). Обе живут в <body>, вне списка со скроллом.
   Селекторы кнопок через родителя: сброс [type=button] выше весит как класс,
   а Hello красит button:hover/:focus в розовый.
   ------------------------------------------------------------ */
.bld-item .bld-info{
	display:inline-flex;align-items:center;justify-content:center;
	width:20px;height:20px;margin-left:8px;vertical-align:2px;
	border:1px solid rgba(59,50,42,0.3);border-radius:50%;background:transparent;
	color:#736546;font-family:inherit;font-size:12px;font-weight:700;line-height:1;
	cursor:help;position:relative;-webkit-tap-highlight-color:transparent;
	transition:background .2s,color .2s,border-color .2s
}
/* зона нажатия 40px, сам кружок 20px */
.bld-item .bld-info::before{content:"";position:absolute;inset:-10px}
.bld-item .bld-info:hover,.bld-item .bld-info:focus-visible{background:#3B322A;border-color:#3B322A;color:#FBF8F2}
.bld-item .bld-info:focus{outline:none}
.bld-item .bld-info:focus-visible{outline:2px solid #A6763E;outline-offset:2px}
@media (hover:none),(pointer:coarse){
	.bld-item .bld-info{cursor:pointer}
	.bld-item .bld-info:hover{background:transparent;border-color:rgba(59,50,42,0.3);color:#736546}
}

.bld-tip{
	position:fixed;z-index:95;max-width:300px;padding:12px 14px;border-radius:12px;
	background:#3B322A;color:#FBF8F2;font-size:14px;line-height:1.5;
	box-shadow:0 14px 34px rgba(30,26,22,0.28);pointer-events:none;
	opacity:0;transform:translateY(4px);transition:opacity .15s,transform .15s;visibility:hidden
}
.bld-tip.show{opacity:1;transform:none;visibility:visible}
.bld-tip::after{
	content:"";position:absolute;left:var(--arrow,50%);top:100%;margin-left:-7px;
	border:7px solid transparent;border-top-color:#3B322A
}
.bld-tip.below::after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:#3B322A}

html.bld-sheet-lock,html.bld-sheet-lock body{overflow:hidden}
.bld-sheet{position:fixed;inset:0;z-index:100;visibility:hidden;transition:visibility 0s .3s}
.bld-sheet.open{visibility:visible;transition:none}
.bld-sheet-back{position:absolute;inset:0;background:rgba(30,26,22,0.5);opacity:0;transition:opacity .3s}
.bld-sheet.open .bld-sheet-back{opacity:1}
.bld-sheet-box{
	position:absolute;left:0;right:0;bottom:0;max-height:85vh;overflow-y:auto;
	background:#FBF8F2;border-radius:24px 24px 0 0;
	padding:12px 24px calc(24px + env(safe-area-inset-bottom));
	transform:translateY(100%);transition:transform .3s cubic-bezier(.2,.8,.2,1)
}
.bld-sheet.open .bld-sheet-box{transform:none}
.bld-sheet-grip{width:44px;height:4px;border-radius:2px;background:rgba(59,50,42,0.18);margin:0 auto 18px}
.bld-sheet .bld-sheet-x{
	position:absolute;top:16px;right:14px;width:44px;height:44px;padding:0;border:0;border-radius:50%;
	display:flex;align-items:center;justify-content:center;background:transparent;color:#3B322A;cursor:pointer
}
.bld-sheet .bld-sheet-x:hover,.bld-sheet .bld-sheet-x:focus{background:transparent;color:#3B322A;outline:none}
.bld-sheet .bld-sheet-x:focus-visible{outline:2px solid #A6763E;outline-offset:2px}
.bld-sheet-title{font-size:22px;font-weight:700;line-height:1.2;color:#3B322A;padding-right:48px}
.bld-sheet-meta{font-size:15px;color:#736546;margin-top:8px}
.bld-sheet-text{font-size:16px;line-height:1.6;color:#6E6255;margin:16px 0 24px}
.bld-sheet .bld-sheet-add{width:100%;justify-content:space-between;border:0;border-radius:999px;height:56px;padding:7px 7px 7px 24px;background:#A6763E;color:#FBF8F2}
.bld-sheet .bld-sheet-add:hover,.bld-sheet .bld-sheet-add:focus{background:#A6763E;color:#FBF8F2}
.bld-sheet.is-on .bld-sheet-add,.bld-sheet.is-on .bld-sheet-add:hover,.bld-sheet.is-on .bld-sheet-add:focus{background:#3B322A}
.bld-sheet.is-on .bld-sheet-add .disc{background:#A6763E}
@media (min-width:681px){
	.bld-sheet-box{left:50%;right:auto;width:560px;margin-left:-280px}
}

/* ------------------------------------------------------------
   Видео программы (inc/video.php, assets/luna-video.js, 28.09.2026).
   Кнопка play — на обложке карточки и страницы программы.
   Селекторы с родителем: сброс [type=button] и розовый button:hover у Hello.
   ------------------------------------------------------------ */
/* Карточки программ и мастеров: круглая кнопка видео в строке кнопок
   (у программы — слева от «Подробнее», у мастера — вместо «Записаться»). */
.svc-card .luna-play{margin-right:auto}
.card .luna-play.luna-play--modal{
	box-sizing:border-box;width:48px;height:48px;padding:0;flex-shrink:0;
	display:flex;align-items:center;justify-content:center;border:0;border-radius:50%;
	background:#F0E7D8;color:#3B322A;cursor:pointer;transition:background .2s ease,transform .2s ease;
	-webkit-tap-highlight-color:transparent
}
.card .luna-play.luna-play--modal svg{width:22px;height:22px}
.card .luna-play.luna-play--modal:hover,.card .luna-play.luna-play--modal:focus{background:#E6D9C3;color:#3B322A;outline:none}
/* Страница программы: кнопка в левом нижнем углу обложки. */
.hero-img .luna-play,.portrait .luna-play{
	box-sizing:border-box;position:absolute;left:18px;bottom:18px;z-index:2;width:60px;height:60px;padding:0;
	display:flex;align-items:center;justify-content:center;border:0;border-radius:50%;
	background:rgba(251,248,242,0.92);color:#3B322A;cursor:pointer;
	box-shadow:0 10px 30px rgba(30,26,22,0.28);transition:transform .2s ease,background .2s ease;
	-webkit-tap-highlight-color:transparent
}
.hero-img .luna-play svg,.portrait .luna-play svg{width:28px;height:28px}
.hero-img .luna-play:hover,.hero-img .luna-play:focus,.portrait .luna-play:hover,.portrait .luna-play:focus{background:#FBF8F2;color:#3B322A;transform:scale(1.06);outline:none}
.card .luna-play.luna-play--modal:focus-visible,.hero-img .luna-play:focus-visible,.portrait .luna-play:focus-visible{outline:2px solid #A6763E;outline-offset:3px}
/* Треугольник в значке уже сдвинут вправо по центру тяжести (оптический центр).
   Раньше ещё и padding-left:4px у кнопки — и play уезжал вправо (Алексей, 28.09.2026). */
.hero-img{position:relative}
.hero-img:not([style]),.portrait:not([style]){background:#3B322A}
.hero-img.is-playing{background:#1E1A16 !important}
.portrait{position:relative}
.portrait.is-playing{background:#1E1A16 !important}
.hero-img .luna-player,.portrait .luna-player{position:absolute;inset:0;width:100%;height:100%;border:0;background:#1E1A16;object-fit:contain}

html.luna-vmodal-lock,html.luna-vmodal-lock body{overflow:hidden}
.luna-vmodal{position:fixed;inset:0;z-index:110;display:none;align-items:center;justify-content:center;padding:56px 16px 24px}
.luna-vmodal.open{display:flex}
.luna-vmodal-back{position:absolute;inset:0;background:rgba(20,17,14,0.88);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.luna-vmodal-stage{position:relative;line-height:0;border-radius:16px;overflow:hidden;background:#000;box-shadow:0 30px 80px rgba(0,0,0,0.45)}
/* файл: размер по самому видео (горизонтальное или вертикальное) */
.luna-vmodal-stage.is-file .luna-player{display:block;max-width:min(1100px,calc(100vw - 32px));max-height:calc(100vh - 100px);width:auto;height:auto}
/* ВК: размер кадра заранее не известен — 16:9, у клипов 9:16 */
.luna-vmodal-stage.is-vk{width:min(1100px,calc(100vw - 32px),calc((100vh - 100px) * 16 / 9));aspect-ratio:16/9}
.luna-vmodal-stage.is-vk.is-vertical{width:min(420px,calc(100vw - 32px),calc((100vh - 100px) * 9 / 16));aspect-ratio:9/16}
.luna-vmodal-stage.is-vk .luna-player{width:100%;height:100%;border:0}
.luna-vmodal .luna-vmodal-x{
	position:absolute;top:10px;right:10px;z-index:2;width:44px;height:44px;padding:0;border:0;border-radius:50%;
	display:flex;align-items:center;justify-content:center;background:rgba(251,248,242,0.12);color:#FBF8F2;cursor:pointer
}
.luna-vmodal .luna-vmodal-x:hover,.luna-vmodal .luna-vmodal-x:focus{background:rgba(251,248,242,0.22);color:#FBF8F2;outline:none}
.luna-vmodal .luna-vmodal-x:focus-visible{outline:2px solid #E0B877;outline-offset:2px}
/* Видео-файл на обложке программы: во всю плашку, само, без звука (28.09.2026). */
.hero-img .luna-hero-video,.portrait .luna-hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;background:transparent}
.hero-img .luna-hero-ctrl,.portrait .luna-hero-ctrl{position:absolute;left:18px;bottom:18px;z-index:2;display:flex;gap:10px}
.hero-img .luna-hero-ctrl button,.portrait .luna-hero-ctrl button{
	position:relative;width:44px;height:44px;padding:0;border:0;border-radius:50%;
	display:flex;align-items:center;justify-content:center;cursor:pointer;
	background:rgba(30,26,22,0.55);color:#FBF8F2;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
	transition:background .2s;-webkit-tap-highlight-color:transparent
}
.hero-img .luna-hero-ctrl button:hover,.hero-img .luna-hero-ctrl button:focus,.portrait .luna-hero-ctrl button:hover,.portrait .luna-hero-ctrl button:focus{background:rgba(30,26,22,0.75);color:#FBF8F2;outline:none}
.hero-img .luna-hero-ctrl button:focus-visible,.portrait .luna-hero-ctrl button:focus-visible{outline:2px solid #E0B877;outline-offset:2px}
/* в кнопке две иконки: первая — обычное состояние, вторая — нажатое */
.hero-img .luna-hero-ctrl button svg:last-child,.portrait .luna-hero-ctrl button svg:last-child{display:none}
.hero-img .luna-hero-ctrl button[aria-pressed="true"] svg:first-child,.portrait .luna-hero-ctrl button[aria-pressed="true"] svg:first-child{display:none}
.hero-img .luna-hero-ctrl button[aria-pressed="true"] svg:last-child,.portrait .luna-hero-ctrl button[aria-pressed="true"] svg:last-child{display:block}

/* Страница мастера: «Записаться к Динаре Насыбуллиной» длиннее «к Ли Вэй» из макета.
   Надпись .btn-primary не переносится (nowrap) и на телефоне распирала колонку
   .g-hero, а за ней и всю страницу (+18px вбок, 29.09.2026). Колонке — min-width:0,
   надписи — перенос в две строки внутри той же высоты кнопки. */
.g-hero>*{min-width:0}
.g-hero .btn-primary{max-width:100%}
.g-hero .btn-primary .lbl{white-space:normal;line-height:1.2}
.bld-sheet .bld-sheet-add:disabled,.bld-sheet .bld-sheet-add:disabled:hover{background:#CDBFAE;cursor:default}
.bld-sheet .bld-sheet-add:disabled .disc,.bld-sheet .bld-sheet-add:disabled .ic{display:none}
