/* Sigma Club V4: Massage route-family owner. */

/* компактный хиро */
  .hero{padding:24px 0 0}
  .massage-type-nav{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
  .massage-type-nav a{display:inline-flex;align-items:center;min-height:44px;padding:9px 14px;border:1px solid var(--line);
    border-radius:999px;color:var(--text);font-size:13px;line-height:1.25;text-decoration:none;transition:border-color .2s,color .2s}
  .massage-type-nav a::after{content:"\2192";margin-left:8px;color:var(--gold)}
  .hero .lead{font-size:15px;font-weight:600;color:var(--text)}

  /* Батч 0 (15.08.2026): убрана локальная кривая H1 в обход --fs-h1 —
     дрейф от общего токена (см. docs/SIGMA_IMPLEMENTATION_PLAN.md §0.1).
     H1 наследует стандартный h1{font-size:var(--fs-h1)} из sigma.css. */

  @media(max-width:767px){body.pg-massage .subbrand-mark .sm-desc{display:none}}

  /* §A.10.1: до карточек мастеров — только компактный hero, сразу каталог.
     Якорь #masters — сразу под лидом (id стоит на .grid ниже). Visual system
     17.08.2026, батч 3: было 14px — теснее самого плотного системного шага
     (--sp-block, 24px), без токена и без объяснения именно этого числа.
     Идея «hero и каталог — одна лента» остаётся (переход всё ещё уже
     --sp-section), но выражена через var(--sp-block), а не произвольным
     числом. Desktop-override (22px, ≥1024px) не тронут. */
  body.pg-massage main .grid{margin-top:var(--sp-block)}
  @media(min-width:1024px){body.pg-massage main .grid{margin-top:22px}}

.empty{padding:60px 0;text-align:center;color:var(--muted)}
.mm-copy-note{margin-top:10px;color:var(--muted);font-size:14px;line-height:1.65}

  /* §6.4: блок из 4 аккордеонов + 3 пункта доверия — компактно, без длинных
     объяснений перед каталогом (текст идёт ПОСЛЕ карточек мастеров). */
  /* Visual system 17.08.2026, батч 6 (C1): было margin-bottom:6px — заголовок
     «Перед записью» прилипал к аккордеону почти вплотную. crumb→h2 здесь не
     локальный (общий .crumb{margin-bottom:16px} из sigma.css, не трогаем),
     проблема была именно в отступе head→аккордеон — переведён на общий
     --sp-block, как и другие переходы «заголовок блока → контент блока». */
  /* Микрополировка 18.08.2026: переход .mm-unsure → .mm-info складывал общий
     main>section+section (--sp-section:36px) с высотой crumb+H2 и их
     собственными отступами — в сумме воспринимался как разрыв секции, а не
     просто смена темы. Тот же приём, что и выше (C1): локально сужаем именно
     этот переход до --sp-block, не трогая общий токен --sp-section. */
  .mm-info{margin-top:var(--sp-block)}
  .mm-info-head{margin-bottom:var(--sp-block)}
  .mm-acc{border:1px solid var(--line);border-radius:var(--r);padding:0 20px;background:var(--panel)}
  /* visual-density pass §1.2: раньше .mm-acc details{padding:16px 0} давало
     свой слой воздуха ПОВЕРХ min-height у summary (details был контейнером
     с собственным padding вокруг всей строки) — 16+summary-box+16. Теперь
     details без вертикального padding, и высоту закрытой строки целиком
     задаёт summary через общий --row-min-h/--row-pad-y (sigma.css) — тот же
     принцип, что у bare FAQ. */
  .mm-acc details{padding:0}
  .mm-acc details+details{border-top:1px solid var(--line)}
  /* Дельта-ТЗ 13.08.2026 §10: на десктопе 4 пункта читаются как список во
     всю ширину контейнера — неэкономно. 2 колонки по 2 пункта: слева логистика
     (где принимают/как выбрать программу), справа термины (душ и омовение/
     Sigma Touch) — порядок пунктов в разметке не меняется, только раскладка.
     V11 корректирующее ТЗ, пакет 3: раньше это была ОДНА grid-таблица с
     grid-auto-flow:column и явными 2 строками — 1-й и 3-й пункт делили
     строку 1, 2-й и 4-й — строку 2 (см. .mm-acc details:nth-child(3) ниже
     в истории), и открытие одного растягивало строку целиком, оставляя
     пустоту под закрытым соседом в другой колонке (141,5px @1440, замер
     на production). Разметка теперь — два независимых .col-flow (см.
     массив выше), .mm-acc — просто позиционирующий грид над ними, без
     общих строк между колонками. */
  @media(min-width:1024px){
    /* V9 Пакет 1, §1.1: без align-items:start грид растягивал закрытый
       пункт на высоту открытого соседа (измерено: 58→198px на 1440). */
    .mm-acc{display:grid;grid-template-columns:1fr 1fr;column-gap:40px;padding:0 24px;align-items:start}
  }
  /* Opus-план 24.08.2026 §5.3: лёгкий strip из 3 тезисов вместо карточки
     .mm-trust, которая стояла ПОСЛЕ .mm-acc (замер: цепочка .mm-info→FAQ
     790px @360, сама карточка 341.6px — выше полезного аккордеона рядом)
     и дублировала факты — «Приватное пространство или выезд» повторяло
     disclosure «Где принимают мастера», стоимость уже доказана ценами в
     анкетах. Перенесён сразу после каталога #masters, перед .mm-unsure:
     поддерживает уже идущий выбор мастера, .mm-unsure остаётся чистой
     CTA-панелью. Без описательных подстрочников — только 3 коротких
     тезиса, статичная зона без аккордеона. */
  .mm-strip{border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
  .mm-strip-i{padding:14px 16px;font-size:14px;font-weight:500;text-align:center}
  .mm-strip-i+.mm-strip-i{border-top:1px solid var(--line)}
  @media(min-width:900px){
    .mm-strip{display:flex}
    .mm-strip-i{flex:1 1 0;min-width:0}
    .mm-strip-i+.mm-strip-i{border-top:none;border-left:1px solid var(--line)}
  }

  /* Батч 2 (15.08.2026, §2.6, решение P3): «Статьи по теме» — horizontal-swipe
     на mobile. Стили паттерна (.related-head/.rel-grid.h-swipe) теперь
     sitewide в sigma.css (см. Sitewide-правка 15.08.2026), локальной
     копии здесь больше нет. */

  /* §A.10.6-7: «Нужна помощь с выбором?» — компактный блок с реальным
     действием (открывает общую панель связи из футера), не пустая CTA-плашка. */
  .mm-unsure{margin-top:var(--sp-section);padding:clamp(20px,3vw,28px);border-radius:var(--r);border:1px solid var(--line);background:var(--panel);max-width:720px;
    display:flex;flex-direction:column;gap:6px;align-items:flex-start}
  .mm-unsure h2{font-size:18px;font-weight:500}
  .mm-unsure p{color:var(--muted);font-size:14.5px;max-width:560px}
  .mm-unsure .btn{margin-top:10px}
  /* V9 Пакет 2, §2.6: max-width:720px + вертикальный стек оставляли
     сотни пикселей пустого поля справа на широком компьютере (карточка
     короткая по высоте, а вся правая часть секции — воздух). На
     ≥1024px — горизонтальная полоса: текст (h2+p) слева, кнопка справа,
     во всю ширину секции. На телефоне класс не меняет верстку —
     остаётся прежний компактный вертикальный блок. */
  @media(min-width:1024px){
    .mm-unsure{max-width:none;flex-direction:row;align-items:center;justify-content:space-between;gap:24px}
    .mm-unsure-text{flex:1 1 auto;min-width:0}
    .mm-unsure .btn{margin-top:0;flex:0 0 auto}
  }

  /* Visual system 17.08.2026, батч 4, §4 ТЗ владельца: блок для мастеров
     раньше был просто вторым .mm-unsure с другим текстом — визуально не
     отличался от клиентского блока, хотя это разные аудитории страницы.
     Модификатор поверх базового .mm-unsure: акцентная рамка (--border-
     emphasis — «смена роли/аудитории»), сама и несёт смысловое отделение.
     Addendum 18.08.2026, кейс 06 (правка владельца после ревью): увеличенный
     margin-top (--sp-section + --sp-block = 60px) убран — рамка уже читается
     как граница смены аудитории, отдельный воздушный барьер поверх неё был
     избыточен на мобильных экранах. Один осознанный источник отступа не
     означает автоматически хороший визуальный ритм — 60px по факту выглядел
     растянуто, несмотря на то, что технически не было двойного margin.
     Возвращено к обычной роли --sp-section (36px), как у любого другого
     нового блока. */
  .mm-unsure--pro{border:var(--border-emphasis);margin-top:var(--sp-section)}

  .own-schedule-chip{display:inline-flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;
    color:var(--gold);margin-top:14px}
  .own-schedule-chip::before{content:"◆";font-size:7px;color:var(--gold-dim)}

@media(hover:hover) and (pointer:fine){.massage-type-nav a:hover{border-color:var(--gold-dim);color:var(--gold)}}

.service-hero-note{max-width:68ch;margin-top:16px;color:var(--muted);font-size:14.5px;line-height:1.7}
  .service-depth-intro{max-width:68ch;color:var(--muted);font-size:14.5px;line-height:1.7}
  .service-depth-grid{display:grid;gap:12px;margin-top:22px}
  .service-depth details{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
  .service-depth summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;padding:12px 18px;-webkit-tap-highlight-color:transparent}
  .service-depth summary::-webkit-details-marker{display:none}
  .service-depth summary::after{content:'+';flex:0 0 auto;color:var(--gold);font-size:22px;font-weight:400;line-height:1}
  .service-depth details[open] summary::after{content:'−'}
  .service-depth h3{margin:0;font-size:16px;line-height:1.4;font-weight:600;color:var(--text)}
  .service-depth-body{padding:0 18px 18px;color:var(--muted);font-size:14px;line-height:1.72}
  .service-depth details:not([open])>.service-depth-body{display:none}
  .service-depth-body p+p{margin-top:12px}
  @media(min-width:1024px){
    .service-depth-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
    .service-depth details{padding:24px}
    .service-depth summary{min-height:0;padding:0;cursor:default;pointer-events:none;align-items:flex-start}
    .service-depth summary::after{display:none}
    .service-depth h3{font-size:18px}
    .service-depth-body{padding:16px 0 0;font-size:14.5px}
  }

/* M-01: фото решает, текст подтверждает. Десктоп — фото и карточка раздельно (карточка sticky);
     мобильный — фото на весь первый экран, имя/цена/CTA сразу под ним. */
  .mp-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:0;align-items:start;margin-top:20px}
  .mp-gallery{aspect-ratio:3/4;border-radius:var(--r) var(--r) 0 0;border:1px solid var(--line);overflow:hidden;position:relative}
  .mp-gallery .cslides{position:absolute;inset:0;display:flex;height:100%;transition:transform .3s ease}
  .mp-gallery .cslides--looped{transform:translateX(-100%)}
  .mp-gallery .cslide{position:relative;flex:0 0 100%;height:100%;background-size:cover;background-position:center}
  /* §9: видео ведёт себя как фото — тот же object-fit:cover в тех же
     границах слайда, поэтому вертикальный и горизонтальный ролик кадрируется
     одинаково, без искажений и без сдвига высоты .mp-gallery (она задаётся
     aspect-ratio на контейнере, не содержимым слайда). */
  .mp-gallery .cslide img,.mp-gallery .cslide .cvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
  .mp-gallery .cplay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:3;
    width:52px;height:52px;border-radius:50%;background:rgba(16,10,7,.55);border:1px solid rgba(255,255,255,.3);
    display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent;
    transition:opacity .15s ease,transform .15s ease}
  .mp-gallery .cplay svg{margin-left:2px}
  .mp-gallery .cplay.playing{opacity:0;pointer-events:none}
  .mp-gallery .cdots{position:absolute;bottom:16px;left:0;right:0;z-index:2;display:flex;gap:5px;justify-content:center}
  .mp-gallery .cdots span{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.4)}
  .mp-gallery .cdots span.on{background:#fff}
  /* аудит 09.08.2026 §10.2: кликабельная область была 30×30px — довели до
     44×44 (WCAG 2.5.5), сам символ «‹›» визуально остался тем же размером */
  .mp-gallery .cnav{position:absolute;top:50%;transform:translateY(-50%);z-index:4;width:44px;height:44px;border-radius:50%;
    background:rgba(16,10,7,.55);border:1px solid rgba(255,255,255,.25);color:#fff;font-size:18px;cursor:pointer;
    display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);-webkit-tap-highlight-color:transparent}
  .mp-gallery .cnav.prev{left:6px}.mp-gallery .cnav.next{right:6px}
  /* Глобальная корректировка horizontal-блоков (15.08.2026): галерея больше
     не зацикливается — на первом/последнем фото соответствующая стрелка
     disabled, единая механика со «стрелка ‹ › + свайп» в остальных блоках. */
  .mp-gallery .cnav:disabled{opacity:.35;cursor:default}
  .mp-gallery .cnav:focus-visible{outline:2px solid #fff;outline-offset:2px}
  /* Дельта-ТЗ 13.08.2026 §8: убрана системная синяя/серая рамка тапа на
     мобильных (-webkit-tap-highlight-color) — вместо неё свой нейтральный
     тёмный виньетажный отклик через ::after, без синего и без брендового
     золота (это не акцент выбора, а просто подтверждение тапа). Быстрое
     появление (.1s, в пределах требуемых 80-150ms) и чуть более плавное
     угасание (.18s) при отпускании/скролле мимо. Dots/стрелки/свайп не
     тронуты — только тач-зоны .ctap. */
  .mp-gallery .ctap{position:absolute;inset:0 50% 0 0;z-index:2;cursor:pointer;-webkit-tap-highlight-color:transparent}
  .mp-gallery .ctap.next{inset:0 0 0 50%}
  /* Opus-план 24.08.2026 §11.2: #programs переехал внутрь .mp-side, под
     .mp-card — на 1440 правая колонка была пуста на ~2/3 высоты галереи
     (621.2px). Sticky снят полностью (было на всей .mp-side): план
     предлагал попробовать sticky только на .mp-card и подтвердить
     снимком — снимок при скролле показал реальный дефект: #programs,
     обычный flow-сосед под sticky-карточкой в той же .mp-side, при
     скролле визуально заезжал ПОД карточку (программы прокручивались
     быстрее, чем «прилипшая» карточка, и на part scroll-диапазона их
     боксы перекрывались — карточка с непрозрачным фоном закрывала
     текст программ). Плоский static-поток — единственный вариант без
     перекрытия, когда прилипающий элемент и контент под ним сидят в
     одной колонке, а не в раздельных областях скролла. */
  .mp-side{position:static;display:flex;flex-direction:column;gap:0;margin-top:0}
  /* margin-top:24px у .mp-panel рассчитан на то, что он — прямой child
     main (отступ от предыдущей секции). Внутри .mp-side он больше не
     первый уровень — отступ от .mp-card уже даёт flex gap:16px, второй
     источник не нужен. */
  .mp-side .mp-panel{margin-top:24px}
  .mp-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:22px}
  .mp-side>.mp-card:first-child{border-top:0;border-radius:0 0 var(--r) var(--r)}
  .mp-name{margin-bottom:10px}
  /* Финальное ТЗ 13.08.2026 (вечер) §5: mobile H1 был фиксирован на 32px —
     заметно тяжёл на узких экранах. 26px ≈ −19% от 32px, попадает в целевой
     диапазон 15-20%; ≥768px возвращается к полному размеру. */
  .mp-h1{font-size:26px}
  @media(min-width:768px){.mp-h1{font-size:32px}}
  .mp-pos{color:var(--muted);font-size:14.5px;margin-bottom:10px}
  .mp-price{font-size:15px;margin-bottom:8px}
  .mp-price b{color:var(--gold);font-weight:600}
  .mp-loc{color:var(--muted);font-size:13px;margin-bottom:20px}
  .mp-cta{display:flex;flex-direction:column;gap:10px}
  .mp-panel{margin-top:24px;padding:clamp(24px,3vw,36px);border-radius:var(--r);border:1px solid var(--line);background:var(--panel)}
  .mp-panel h2{margin-bottom:14px}
  .mp-panel p{color:var(--muted);font-size:14.5px;line-height:1.65;max-width:720px}
  .mp-program-intro{margin:-8px 0 18px;color:var(--muted);font-size:14px}
  /* Батч 2 (15.08.2026, §2.8, решение M9): «О себе» и «Где проходит встреча»
     живут на фоне страницы без карточной рамки — контейнер программ (та же
     .mp-panel, id="programs") рамку сохраняет, она оправдана как граница
     интерактивного аккордеона. Отступ 18px 4px — тот же ритм, что у обычных
     плоских <details> сайта (см. details{padding:18px 4px} в sigma.css). */
  .mp-flat{padding:18px 4px;border:none;background:none;border-radius:0}
  /* Mobile polish 18.08.2026, кейс 04/05: «О себе»/«Читать полностью» →
     «Где проходит встреча» измерялся в 64.8px — это 18px нижнего padding
     .mp-flat у «О себе» + 24px margin-top .mp-panel у «Где проходит встреча»
     + 18px верхнего padding .mp-flat самого «Где проходит встреча» —
     три источника подряд для одного визуального перехода между двумя
     соседними плоскими блоками. Когда два .mp-flat стоят подряд, margin-top
     между ними убирается — гэп остаётся только из их же паддингов
     (18+18=36px), что совпадает с --sp-section, уже используемым для
     следующего перехода (mp-scope→«Другие мастера»). Если .mp-flat не
     соседствует с другим .mp-flat (например «О себе» отсутствует у мастера
     и «Где проходит встреча» идёт сразу после карточки «Программы» —
     обычной .mp-panel с рамкой), обычный margin-top:24px остаётся. */
  .mp-panel.mp-flat + .mp-panel.mp-flat{margin-top:0}
  .mp-quote{margin:18px 0;padding:2px 0 2px 16px;border-left:1px solid var(--gold-dim);
    max-width:640px;color:var(--text);font-size:16px;font-weight:300;font-style:normal;line-height:1.6}
  /* §19: закрытый по умолчанию accordion — chevron, не +/− (крупный раздел,
     не отдельная программа, §8 не смешивать системы индикаторов). padding-block:0
     — guard (visual-density pass §1.1): высота строки здесь целиком идёт от
     .mp-flat{padding:18px 4px} на самом <details>, summary не должен добавлять
     сверху ещё --row-pad-y. */
  .mp-where>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;
    cursor:pointer;list-style:none;min-height:44px;padding-block:0;-webkit-tap-highlight-color:transparent}
  .mp-where>summary::-webkit-details-marker{display:none}
  .mp-panel.mp-where>summary::after{content:none}
  .mp-where>summary h2{margin:0}
  .mp-where[open]>summary{margin-bottom:14px}
  .mp-where-body .mp-where-block+.mp-where-block{margin-top:20px}
  .mp-where-body h3{font-size:14px;font-weight:600;color:var(--accent-text);margin-bottom:8px}
  .mp-where-addr{color:var(--text);font-size:15px;margin-bottom:6px}
  /* Visual system 17.08.2026, батч 5: раньше margin-top:28px жил инлайном
     прямо в разметке — единственный источник видимого «разрыва» после
     аккордеона «Где проходит встреча», без роли в системе. Теперь
     var(--sp-block) (продолжение той же темы — уточнение к аккордеону
     выше, не новый раздел). */
  .mp-scope{color:var(--muted);font-size:var(--fs-meta);margin-top:var(--sp-block)}
  /* Desktop V4: категория всегда видна, каждая программа — нативный details
     с тонкой линией-разделителем и единым индикатором «+/−». */
  .p-acc{display:flex;flex-direction:column}
  .p-cat{border-top:1px solid var(--line)}
  .p-cat:first-child{border-top:none}
  .p-cat-title{min-width:0}
  .p-cat-price{margin-left:auto;color:var(--muted);font-size:13.5px;font-weight:400;white-space:nowrap}
  .p-cat-body{padding:0 4px 18px}
  /* §9-10: три пары «характеристика→значение» в одном гриде — общий
     grid-template-columns:auto 1fr выравнивает подписи и значения по
     одной колонке во всех трёх (или четырёх с «Рекомендуемым форматом»)
     строках без литеральной <table>. */
  .p-prog{border-top:1px solid var(--line)}
  .p-prog:first-child{border-top:none}
  /* display:block переопределяет глобальный summary{display:flex} (sigma.css)
     — иначе .p-prog-grid как единственный flex-item не растягивается на
     ширину контейнера (flex-basis:auto без flex-grow), грид внутри сжимается
     до контента и текст программы переносится криво вместе с «+». */
  .p-prog>summary{display:block;position:relative;list-style:none;cursor:pointer;padding:14px 4px;min-height:44px;-webkit-tap-highlight-color:transparent}
  .p-prog>summary::-webkit-details-marker{display:none}
  .p-acc .p-prog>summary::after{content:none}
  /* Батч 2 (15.08.2026, §2.2): название — главный визуальный вес, одной
     колонкой на всю ширину строки (без label-колонки, которой раньше
     задавалась ширина по самой длинной подписи). overflow-wrap:break-word
     остаётся: у односложных названий вроде «Невесомость» нет пробела для
     обычного переноса, и без этого текст молча вылезал бы за карточку —
     свойство переносит по словам всегда, когда это возможно, и только
     непереносимое слово ломает посреди себя как запасной вариант. */
  .p-prog-name{display:block;color:var(--gold);font-weight:600;font-size:16px;line-height:1.3;
    overflow-wrap:break-word;padding-right:30px}
  .p-prog-meta{display:block;margin-top:3px;color:var(--muted);font-size:13.5px}
  .p-reco{display:block;margin-top:4px;color:var(--gold);font-style:normal;font-size:11.5px;font-weight:600}
  .p-chev--plus{position:absolute;top:14px;right:4px;color:var(--gold);font-size:20px;line-height:1;font-weight:400}
  .p-chev--plus::before{content:"+"}
  .p-prog[open]>summary .p-chev--plus::before{content:"−"}
  .p-prog-body{padding:2px 4px 18px}
  .p-desc{color:var(--muted);font-size:13px;line-height:1.55}
  .p-features{list-style:none;margin-top:12px;display:flex;flex-direction:column;gap:5px}
  .p-features li{color:var(--muted);font-size:12px;padding-left:14px;position:relative}
  .p-features li::before{content:"◆";position:absolute;left:0;top:1px;font-size:6px;color:var(--gold-dim)}
  .p-cta{width:100%;margin-top:16px;padding:11px;font-size:13px}
  .mp-card h3{font-size:16px;margin-bottom:8px;font-weight:400}
  .mp-cluster-nav{display:grid;margin-top:var(--sp-section);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
  .mp-cluster-nav a{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;
    color:var(--muted);text-decoration:none;font-size:13.5px;border-top:1px solid var(--line)}
  .mp-cluster-nav a:first-child{border-top:0}
  .mp-cluster-nav a::after{content:'→';color:var(--accent-text);flex-shrink:0}
  @media(min-width:768px){
    .mp-cluster-nav{grid-template-columns:repeat(3,minmax(0,1fr))}
    .mp-cluster-nav a{padding:0 16px;border-top:0;border-left:1px solid var(--line)}
    .mp-cluster-nav a:first-child{border-left:0}
  }

  /* Desktop V4: содержательное вступление и цитата видны сразу, продолжение
     остаётся в SSR и раскрывается нативным details на всех ширинах. */
  .mp-about-more{margin-top:10px;border-top:1px solid var(--line)}
  .mp-about-more>summary{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;
    cursor:pointer;list-style:none;color:var(--accent-text);font-size:14px;font-weight:600}
  .mp-about-more>summary::-webkit-details-marker{display:none}
  .mp-about-more>summary::after{content:"›";color:var(--gold);font-size:20px;transition:transform .2s}
  .mp-about-more[open]>summary::after{transform:rotate(90deg)}
  .mp-about-more-body{padding-top:8px}
  /* Батч 2 (15.08.2026, §2.5, решение M7): sticky CTA только на мобильной
     анкете, появляется после ухода hero-CTA (.mp-cta) из зоны видимости
     (IntersectionObserver ниже). [hidden] на разметке — без JS бар не
     появится вовсе, а не «сломанно открыт». Отступ снизу у main резервирует
     место, чтобы бар не перекрывал последний контент страницы. */
  .mp-sticky{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;gap:10px;
    padding:10px 16px calc(10px + env(safe-area-inset-bottom));
    background:var(--bg);border-top:1px solid var(--line)}
  .mp-sticky .btn{flex:1;padding:11px;font-size:13px;text-align:center;white-space:nowrap;
    overflow:hidden;text-overflow:ellipsis}
  .mp-sticky[hidden]{display:none}
  @media(max-width:767px){main.wrap{padding-bottom:calc(66px + env(safe-area-inset-bottom))}}
  /* Микрополировка 18.08.2026, «старый хвост»: резерв 66px под sticky-бар
     статичен и не схлопывается, когда бар уже скрыт (см. IntersectionObserver
     ниже, footerShown) — у самого конца страницы это давало лишний пустой
     участок перед footer поверх штатного footer{margin-top:22px}. Класс
     .mp-tail (переключается тем же наблюдателем, что прячет бар) обнуляет
     резерв, когда он больше не нужен — единственным источником перехода
     контент→footer снова остаётся footer{margin-top:22px}, как и на
     остальных страницах сайта. */
  @media(max-width:767px){main.wrap.mp-tail{padding-bottom:0}}
  @media(min-width:768px){.mp-sticky{display:none}}

