/* Responsive owner for individual master profiles. The shared shell owns
   header, footer and button appearance; this sheet owns their placement. */
/* П3b (15.09.2026): вертикальный ритм анкеты — одна шкала на 4px-базе.
   Роли повторяют логику глобальных семейств V7 (inline → text → row → card →
   block → module → section) и объявлены владельцем маршрута: анкета грузит
   base + master-profile + shell, а foundation.css подключён только с media
   (min-width:1024px) и на /massage/<slug> не приходит вовсе — держать в нём
   мобильную половину шкалы значило бы объявить токены, которых маршрут не
   видит. Значения ниже 1024px — собственный компактный набор; выше — тот же
   набор с расширенными внешними шагами (module/section/block/card), а не
   сжатый десктоп. Правила ниже не содержат чисел ритма: только эти токены. */
:root{
  color-scheme:dark;
  --bg:var(--shell-bg);--panel:var(--shell-surface);--text:var(--shell-text);
  --muted:var(--shell-muted);--line:var(--shell-line);--gold:var(--shell-accent);
  --gold-dim:var(--shell-accent-dim);--accent:var(--shell-accent);
  --accent-text:var(--shell-accent-text);--r:22px;--r-md:14px;
  --fs-meta:12.5px;
  --mp-ry-unit:4px;--mp-ry-inline:8px;--mp-ry-text:12px;--mp-ry-row:16px;
  --mp-ry-card:20px;--mp-ry-block:24px;--mp-ry-module:24px;--mp-ry-section:32px;
}
@media(width >= 1024px){
  :root{--mp-ry-card:24px;--mp-ry-block:32px;--mp-ry-module:40px;--mp-ry-section:64px}
}
*{box-sizing:border-box}
html{scroll-padding-top:calc(var(--shell-header-height) + 20px);-webkit-text-size-adjust:100%}
body.pg-master{display:flex;min-height:100vh;flex-direction:column;margin:0;background:var(--bg);color:var(--text);font:400 16px/1.55 Manrope,'Manrope Fallback',sans-serif}
body.pg-master main{flex:1 0 auto;min-width:0}
/* Ширина и ось контента анкеты совпадают с общей оболочкой: до рефакторинга
   d0ce0170 desktop-гуттер был 32px (foundation), а собственный
   clamp(20px,3vw,56px) разводил ось main с header/footer на 1024–1919
   (30.72–43.2px против 32px). --shell-gutter даёт тот же clamp на мобильных
   и 32px на ≥1024, как у шапки и футера. */
body.pg-master main.wrap{width:min(100%,calc(1440px + 2 * var(--shell-gutter)));margin-inline:auto;padding-inline:var(--shell-gutter)}
/* A-022: тот же сброс, что был, но ограниченный контентом анкеты (main).
   Прежняя запись `body.pg-master p{margin:0}` со специфичностью (0,1,2)
   глушила margin у <p> общего футера (.fclub/.faddr/.fcol-label) на всех
   анкетах — footer .wrap терял 22px. Правила shell для футера/панелей
   (классовая специфичность) снова выигрывают, как на остальных маршрутах. */
body.pg-master :where(main) :is(h1,h2,h3,p,blockquote){margin:0}
footer :is(h1,h2,h3,p,blockquote){margin:0}
.cp-overlay :is(h1,h2,h3,p,blockquote){margin:0}
body.pg-master h1,body.pg-master h2,body.pg-master h3{font-weight:500}
body.pg-master h2{font-size:clamp(24px,3vw,30px);line-height:1.22}
body.pg-master h3{font-size:18px;line-height:1.35}
body.pg-master img{display:block;max-width:100%}
body.pg-master a:not(.btn){color:inherit}
body.pg-master a:focus-visible,body.pg-master button:focus-visible,body.pg-master summary:focus-visible,body.pg-master input:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
body.pg-master [hidden]{display:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.price-nowrap{white-space:nowrap;font-variant-numeric:tabular-nums}
.pg-master .fld{width:100%;min-height:44px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);color:var(--text);font:inherit}
.pg-master textarea.fld{min-height:88px;resize:vertical}
.pg-master .consent{display:flex;align-items:flex-start;gap:9px;color:var(--muted);font-size:12.5px}.pg-master .consent input{margin-top:3px;accent-color:var(--gold)}.pg-master .consent a{color:var(--accent-text);text-decoration:underline}
.pg-master .fld-error{display:none;color:#e37b6b;font-size:12.5px}.pg-master .fld-error.show{display:block}.pg-master .fld-invalid{border-color:#e37b6b}
.pg-master .crumbs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:var(--mp-ry-card);color:var(--muted);font-size:12.5px}
.pg-master .crumbs a{display:inline-flex;align-items:center;min-height:24px;margin-block:-3px;text-decoration:none}
.pg-master .crumbs a:hover{color:var(--accent-text)}

.mp-grid{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;margin-top:var(--mp-ry-card)}
.mp-media,.mp-side,.mp-grid>section{min-width:0}
.mp-gallery{position:relative;overflow:hidden;width:100%;aspect-ratio:3/4;border:1px solid var(--line);border-radius:var(--r) var(--r) 0 0;background:var(--panel);touch-action:pan-y}
.mp-gallery .cslides{position:absolute;inset:0;display:flex;height:100%;transition:transform .3s ease}
.mp-gallery .cslide{position:relative;flex:0 0 100%;height:100%;background-size:cover;background-position:center}
.mp-gallery .cslide img,.mp-gallery .cvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 18%}
.mp-gallery .cnav{position:absolute;top:50%;z-index:4;display:grid;place-items:center;width:44px;height:44px;padding:0;transform:translateY(-50%);border:1px solid rgb(255 255 255 / .3);border-radius:50%;background:rgb(16 10 7 / .55);color:#fff;font:inherit;font-size:24px;cursor:pointer}
.mp-gallery .cnav.prev{left:6px}.mp-gallery .cnav.next{right:6px}
.mp-gallery .cnav:disabled{opacity:.35;cursor:default}
.mp-gallery .cdots{position:absolute;bottom:16px;left:0;right:0;z-index:2;display:flex;justify-content:center;gap:5px}
.mp-gallery .cdots span{width:5px;height:5px;border-radius:50%;background:rgb(255 255 255 / .4)}
.mp-gallery .cdots span.on{background:#fff}
.mp-gallery .cplay{position:absolute;top:50%;left:50%;z-index:3;display:flex;align-items:center;justify-content:center;min-width:52px;min-height:52px;padding:10px 18px;transform:translate(-50%,-50%);border:1px solid rgb(255 255 255 / .45);border-radius:999px;background:rgb(16 10 7 / .7);color:#fff;font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.mp-gallery .cplay svg{flex:none}.mp-gallery .cplay span{margin-left:8px}
.mp-gallery .cplay.playing{opacity:0;pointer-events:none}
.mp-video-error{position:absolute;left:16px;right:16px;bottom:32px;z-index:4;padding:12px;border-radius:12px;background:rgb(16 10 7 / .88);color:#fff;font-size:13px}
.mp-side{min-width:0}
.mp-card{padding:var(--mp-ry-card);border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
.mp-side>.mp-card:first-child{border-top:0;border-radius:0 0 var(--r) var(--r)}
.mp-h1{font-size:clamp(26px,5vw,32px);line-height:1.17;overflow-wrap:anywhere}
.pg-master p.mp-pos{margin-top:var(--mp-ry-text);color:var(--muted);font-size:14.5px}
.pg-master p.mp-price{margin-top:var(--mp-ry-row);font-size:15px}.mp-price b{color:var(--gold);font-weight:600}
.pg-master p.mp-loc{margin-top:var(--mp-ry-inline);color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.pg-master p.mp-addr{margin-top:var(--mp-ry-unit);color:var(--muted);font-size:12.5px;line-height:1.45;overflow-wrap:anywhere}
/* Цикл 2 15.09.2026: выезд — свойство мастера, и он виден сразу в шапке
   анкеты, без раскрытия «Места встречи». Строка короткая: та же роль, что у
   бейджа «Выезд» в каталоге, детали остаются в блоке выезда. */
.pg-master p.mp-outcall-line{margin-top:var(--mp-ry-inline);color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.pg-master p.mp-outcall-line b{color:var(--gold);font-weight:600}
/* П5/п.5 приёмки: «Принимает: мужчин» — ограничение аудитории из suitedFor. */
.pg-master p.mp-audience{margin-top:var(--mp-ry-inline);color:var(--muted);font-size:13px;overflow-wrap:anywhere}
/* П3 (16.09.2026): статус омовения с мастером виден в шапке анкеты, без
   раскрытия программы. Та же muted-шкала, что у строки аудитории: это ещё
   одна строка условий, а не новый акцент. */
.pg-master p.mp-washing{margin-top:var(--mp-ry-inline);color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.mp-cta{display:grid;gap:var(--mp-ry-text);margin-top:var(--mp-ry-block)}
/* П4 (16.09.2026): что произойдёт после нажатия «Связаться с мастером».
   Строка стоит после кнопок, тем же muted-кеглем, что и остальные условия
   шапки, и не спорит с кнопкой за внимание. */
.pg-master p.mp-cta-note{margin-top:var(--mp-ry-inline);color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.mp-cta .btn,.mp-sticky .btn,.p-cta{min-width:0;min-height:var(--shell-control-primary);white-space:normal;line-height:1.25;overflow-wrap:anywhere}
.mp-panel{min-width:0;margin-top:var(--mp-ry-module);padding:var(--mp-ry-block);border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
/* A-022 сбрасывает margin у h1/h2/h3/p/blockquote внутри main со
   специфичностью (0,1,2). Три правила анкеты были записаны как «класс + элемент»
   (ниже сброса) и молча не работали: заголовок секции прилипал к тексту (0px
   вместо 14), примечание об аренде касалось последней строки программы, а интро
   выбора площадки — списка площадок. Отбивку заголовка и примечания возвращаем
   префиксом .pg-master (перекрытие сброса вместо надежды на порядок в файле);
   отбивки внутри тела выбора и внутри блока «где» теперь держат gap'ы их
   собственных сеток, где margin не нужен вовсе. */
.pg-master .mp-panel h2{margin-bottom:var(--mp-ry-block)}
.mp-panel p{max-width:720px;color:var(--muted);font-size:14.5px;line-height:1.65}
.mp-panel .mp-program-intro{margin:0 0 var(--mp-ry-block);color:var(--muted);font-size:14px}
/* Решение владельца 15.09.2026: у мастера без часовой программы анкета прямо
   говорит, что часового формата нет. Строка — часть блока программ: тот же
   кегль, что у интро, и один объявленный шаг шкалы до аккордеона. */
.mp-panel .mp-format-note{margin:0 0 var(--mp-ry-block);color:var(--muted);font-size:14px}
/* Плоский модуль анкеты не платит собственный вертикальный отступ: расстояние
   до соседа владеет ровно один шаг шкалы (module), иначе «О себе» отъезжает от
   панели программ на module + отступ. */
.mp-flat{padding:0 var(--mp-ry-unit);border:0;border-radius:0;background:none}
.pg-master blockquote.mp-quote{max-width:640px;margin:var(--mp-ry-block) 0;padding:var(--mp-ry-unit) 0 var(--mp-ry-unit) var(--mp-ry-row);border-left:1px solid var(--gold-dim);color:var(--text);font-size:16px;line-height:1.6}
.mp-about-section>p+p{margin-top:var(--mp-ry-text)}
.mp-about-more{margin-top:var(--mp-ry-row);border-top:1px solid var(--line)}
.mp-about-more>summary{display:flex;align-items:center;justify-content:space-between;min-height:48px;cursor:pointer;list-style:none;color:var(--accent-text);font-size:14px;font-weight:600}
.mp-about-more>summary::-webkit-details-marker,.mp-location-picker>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:var(--mp-ry-inline)}.pg-master .mp-about-more-body>*+*{margin-top:var(--mp-ry-text)}
.pg-master p.mp-scope{margin-top:var(--mp-ry-block);color:var(--muted);font-size:12.5px}

/* Venue block is a native details. Площадок несколько — fieldset с выбором,
   площадка одна — карточка фактов без радиокнопок (Р5 15.09.2026). */
.mp-location-picker{margin-top:var(--mp-ry-block);border:1px solid var(--line);border-radius:var(--r);background:var(--panel)}
.mp-location-picker>summary{display:flex;align-items:center;justify-content:space-between;gap:var(--mp-ry-text);min-height:58px;padding:var(--mp-ry-text) var(--mp-ry-card);cursor:pointer;list-style:none;font-weight:600}
.mp-location-picker>summary small{color:var(--accent-text);font-size:13px;font-weight:500;text-align:right}
.mp-location-picker[open]>summary{border-bottom:1px solid var(--line)}
/* Один владелец разрыва между блоками тела выбора: сначала здесь стояли четыре
   разные отбивки (0/12/14/18) у соседних пар одного уровня, а отбивка интро
   терялась под сбросом A-022. */
.mp-location-picker-body{display:grid;gap:var(--mp-ry-row);padding:var(--mp-ry-card)}
.mp-location-picker-body>p{margin:0;color:var(--muted);font-size:14px}
.mp-venue-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:var(--mp-ry-text);margin:0;padding:0;border:0}
.mp-venue{position:relative;display:flex;gap:var(--mp-ry-text);min-height:88px;padding:var(--mp-ry-row);border:1px solid var(--line);border-radius:16px;cursor:pointer;background:var(--bg)}
.mp-venue:hover,.mp-venue:has(input:focus-visible){border-color:var(--gold-dim)}
.mp-venue:has(input:checked){border-color:var(--gold);background:var(--panel)}
.mp-venue input{position:absolute;width:1px;height:1px;opacity:0}
.mp-venue-copy{display:grid;gap:var(--mp-ry-unit);min-width:0}.mp-venue-copy b{font-size:15px;font-weight:600;overflow-wrap:anywhere}.mp-venue-copy small{color:var(--muted);font-size:12.5px;line-height:1.45}.mp-venue-copy em{font-style:normal;color:var(--accent-text);font-size:11px;text-transform:uppercase;letter-spacing:.08em}
/* Одинаковое условие кабинета — одна метка на весь блок площадок, а не строка
   в каждой карточке (П3a). */
.mp-location-picker-body>p.mp-venue-rental{margin:0;font-size:12.5px;line-height:1.45}
.mp-venue-check{flex:0 0 18px;width:18px;height:18px;margin-left:auto;border:1px solid var(--muted);border-radius:50%}
.mp-venue:has(input:checked) .mp-venue-check{border:5px solid var(--gold)}
.mp-venue--offer{border-style:dashed}
/* Одна площадка (Р5 15.09.2026): не вариант выбора, а факт о месте — карточка
   без радиокнопки и без курсора-указателя. Метро из каталога (?metro=)
   подсвечивает именно это место, а не выдумывает выбор. */
.mp-venue--single{cursor:default}
.mp-venue--single:hover{border-color:var(--line)}
[data-venue-metro-match] .mp-venue--single{border-color:var(--gold);background:var(--panel)}
.mp-venue-metro{color:var(--accent-text);font-size:13px;font-weight:600}
.mp-venue-addr{color:var(--text)}
.mp-venue-space a{color:var(--accent-text);text-decoration:none}
.mp-venue-space a:hover{text-decoration:underline}
.mp-venue-map{display:grid;gap:var(--mp-ry-text);align-items:center;justify-items:center;min-height:64px;padding-top:var(--mp-ry-row);border-top:1px solid var(--line)}
.mp-venue-map__canvas{width:100%;height:340px;overflow:hidden;border-radius:14px}
.mp-venue-map__fallback{width:100%;margin:0;padding:var(--mp-ry-row);border:1px solid var(--line);border-radius:14px;color:var(--muted);text-align:center}
.mp-location-picker .mp-where-body{margin-top:0;padding-top:var(--mp-ry-row);border-top:1px solid var(--line)}
/* Блоки «где» — соседи одного уровня внутри .mp-where-body, а внутри блока
   подпись/адрес/описание/список стоят на одном шаге подписи. И то и другое —
   один владелец-сетка вместо отдельных margin у каждого следующего элемента. */
.mp-where-body{display:grid;gap:var(--mp-ry-block)}
.mp-where-block{display:grid;gap:var(--mp-ry-inline)}
.mp-where-body h3{color:var(--accent-text);font-size:14px;font-weight:600}
.mp-where-body p{color:var(--muted);font-size:14px}.pg-master .mp-where-body a{color:var(--accent-text)}
/* Р6 15.09.2026: условия выезда — отдельный блок с числами из data/pricing.js,
   а не абзац в описании места. */
.mp-outcall-list{display:grid;gap:var(--mp-ry-unit);margin:0;padding:0;list-style:none}
.mp-outcall-list li{color:var(--muted);font-size:13.5px}
.mp-outcall-list b{color:var(--text);font-weight:600}

.p-acc{display:grid;gap:var(--mp-ry-block)}.p-cat{min-width:0;border-top:1px solid var(--line)}.p-cat:first-child{border-top:0}
.p-cat-head{display:flex;align-items:center;gap:var(--mp-ry-text);min-height:52px;padding:var(--mp-ry-row) var(--mp-ry-unit);font-size:15px;font-weight:600}
.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-acc, а не «18 у группы + 24 у сетки». */
.p-cat-body{padding:0 var(--mp-ry-unit)}
.p-prog{border-top:1px solid var(--line)}.p-prog:first-child{border-top:0}
.p-prog>summary{position:relative;display:block;min-height:44px;padding:var(--mp-ry-row) var(--mp-ry-unit);cursor:pointer;list-style:none}
.p-prog>summary::-webkit-details-marker{display:none}.p-prog-name{display:block;padding-right:30px;color:var(--gold);font-size:16px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}
/* Цикл 2 15.09.2026: у мастера с одноимёнными программами длительность стоит
   в основной строке — авторское название остаётся, различие не прячется во
   вторую мелкую строку. Тот же кегль, что у названия, но спокойнее по цвету:
   имя мастера весомее служебной длительности. */
.p-prog-name-dur{color:var(--muted);font-weight:500}
.p-prog-meta{display:block;margin-top:var(--mp-ry-unit);color:var(--muted);font-size:13.5px}.p-reco{display:block;margin-top:var(--mp-ry-unit);color:var(--gold);font-size:11.5px;font-weight:600;font-style:normal}
.p-chev--plus{position:absolute;top:var(--mp-ry-row);right:var(--mp-ry-unit);color:var(--gold);font-size:20px;line-height:1}.p-chev--plus::before{content:'+'}.p-prog[open]>summary .p-chev--plus::before{content:'−'}
.p-prog-body{padding:var(--mp-ry-unit) var(--mp-ry-unit) var(--mp-ry-row)}.p-desc{color:var(--muted);font-size:13px;line-height:1.55}.p-features{display:grid;gap:var(--mp-ry-unit);margin:var(--mp-ry-text) 0 0;padding:0;list-style:none}.p-features li{position:relative;padding-left:14px;color:var(--muted);font-size:12px}.p-features li::before{content:'◆';position:absolute;left:0;top:1px;color:var(--gold-dim);font-size:6px}
.p-cta{width:100%;margin-top:var(--mp-ry-row);font-size:13px}
/* Р7 15.09.2026: общее условие аренды — один раз на анкету, под блоком
   программ, а не в каждой строке программы. Префикс .pg-master нужен, чтобы
   отбивка не терялась под сбросом A-022 (см. примечание у .mp-panel h2). */
.pg-master .p-note{margin-top:var(--mp-ry-block);padding-left:var(--mp-ry-row);border-left:1px solid var(--gold-dim);color:var(--muted);font-size:13px;line-height:1.55}
/* «Другие мастера» — модуль из самих карточек, а не карточка вокруг карточек:
   собственная рамка/фон/внутренний отступ снимаются на всех ширинах, а не
   только на мобильной и десктопной (в диапазоне 768–1023 блок оставался
   карточкой и выбивался из ритма соседей). */
.mp-others-card{margin-top:var(--mp-ry-section);padding:0;border:0;background:transparent}
.mp-others-head{display:flex;align-items:center;justify-content:space-between;gap:var(--mp-ry-text);margin-bottom:var(--mp-ry-row)}.mp-others-head h2{margin:0;font-size:24px}
/* Лента показывает не больше MASTER_OTHERS_LIMIT карточек, поэтому при
   большом каталоге рядом с заголовком стоит переход в каталог. Адрес — тот же
   /massage, что у кластерной навигации ниже: это тот же вход, не второй URL. */
.mp-others-all{margin-right:auto;color:var(--muted);font-size:13.5px;text-decoration:none;white-space:nowrap}.mp-others-all:hover{color:var(--text)}
/* Лента карточек: вертикальный шаг между рядами принадлежит анкете и равен шагу
   строки. Горизонтальный разрыв ниже 1024px остаётся у общего владельца
   карточки — его flex-basis на 768–1023 (calc((100% - 20px)/2)) рассчитан ровно
   на один разрыв, поэтому пересчёт колонок здесь ломал бы перенос ряда. */
.mp-others.master-grid--swipe-mobile{row-gap:var(--mp-ry-row)}
.hs-nav{display:flex;gap:var(--mp-ry-inline);flex:none}.hs-arrow{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--panel);color:var(--text);font:inherit;font-size:23px;cursor:pointer}.hs-arrow::before{content:'‹'}.hs-arrow.next::before{content:'›'}.hs-arrow:disabled{opacity:.35}
.mp-cluster-nav{display:grid;margin-top:var(--mp-ry-section);border-block:1px solid var(--line)}
.pg-master .mp-cluster-nav a{display:flex;align-items:center;justify-content:space-between;gap:var(--mp-ry-text);min-height:44px;border-top:1px solid var(--line);color:var(--muted);font-size:13.5px;text-decoration:none}.mp-cluster-nav a:first-child{border-top:0}.mp-cluster-nav a::after{content:'→';color:var(--accent-text)}
.mp-sticky{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;gap:var(--mp-ry-text);padding:var(--mp-ry-text) var(--mp-ry-row) calc(var(--mp-ry-text) + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg)}
.mp-sticky .btn{flex:1;padding-inline:var(--mp-ry-inline);font-size:13px}
@media(width < 768px){.pg-master .crumbs{display:none}.pg-master main.wrap{padding-bottom:calc(66px + env(safe-area-inset-bottom))}.pg-master main.wrap.mp-tail{padding-bottom:0}.mp-venue-list{grid-template-columns:1fr}}
@media(width >= 768px){.mp-grid{gap:var(--mp-ry-module)}.mp-gallery{width:min(100%,520px);aspect-ratio:4/5;margin-inline:auto;border-radius:var(--r)}.mp-side>.mp-card:first-child{border:1px solid var(--line);border-radius:var(--r)}.mp-grid>#programs,.mp-about-section{margin-top:0}.mp-cluster-nav{grid-template-columns:repeat(3,minmax(0,1fr))}.mp-cluster-nav a{padding-inline:var(--mp-ry-row);border-top:0;border-left:1px solid var(--line)}.mp-cluster-nav a:first-child{border-left:0}.mp-sticky,.mp-others-head .hs-nav{display:none}}
@media(width >= 1024px){.mp-grid{grid-template-columns:minmax(320px,400px) minmax(0,1fr);grid-template-areas:'gallery side' 'programs programs' 'about about';gap:var(--mp-ry-module);align-items:center}.mp-media{grid-area:gallery}.mp-side{grid-area:side}.mp-side>.mp-card:first-child{max-width:640px;padding:0;border:0;background:none}.mp-grid>#programs{grid-area:programs}.mp-about-section{grid-area:about;justify-self:start;max-width:720px}.mp-about-more-body{columns:2;column-gap:48px}.mp-about-more-body>*{break-inside:avoid}.mp-h1{font-size:40px;letter-spacing:-.025em}.pg-master p.mp-pos{max-width:52ch;margin-top:var(--mp-ry-row);font-size:17px;line-height:1.7}.mp-cta{grid-template-columns:repeat(2,minmax(0,max-content))}.p-acc{grid-template-columns:repeat(2,minmax(0,1fr))}.p-acc--single{grid-template-columns:minmax(0,1fr)}.p-cat{border-top:0}/* Колонки ленты совпадают с внутренним отступом карточки (24) — ровно то, что уже предполагает общий владелец карточки в flex-раскладке: calc(100% - 48px)/3 и calc(100% - 72px)/4 считают те же два и три разрыва по 24. */.mp-others.master-grid--swipe-mobile{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--mp-ry-row) var(--mp-ry-card)}.mp-others.master-grid--swipe-mobile>.master-card{width:auto;max-width:none;min-width:0}}
@media(prefers-reduced-motion:reduce){.mp-gallery .cslides,.mp-about-more>summary::after{transition:none}}
