/* Home composition: one route owner at every viewport. */
@media(width < 1024px){
 /* 17.09.2026, волна 6. Плитка витрины держала вертикальный отступ числом 9px —
   это не «отступ карточки», а запас вокруг фиксированного медиа: плитка
   минимальной высоты 150px и кадр 130px дают (150 − 130 − 2×1px рамки) / 2 = 9px.
   Роль объявлена токеном, чтобы значение читалось как рассчитанное, а не как
   магическое число: инструмент ритма видит имя роли через var().
   Объявление стоит в правиле :root: голые пользовательские свойства внутри
   @media невалидны и молча теряются — эту ошибку поймал
   scripts/test-home-mobile-cards.cjs (плитка на 320px съезжала с 150 на 132px). */
 :root{--home-tile-h:150px;--home-tile-media-h:130px;--home-tile-media-radius:12px;
   --home-tile-inset:calc((var(--home-tile-h) - var(--home-tile-media-h) - 2px) / 2)}
 .home-hero{padding-top:12px;padding-bottom:0}.home-hero-copy{text-align:center}.home-hero h1{max-width:900px;margin-inline:auto}.home-hero .lead{margin-inline:auto}
 /* Форк главной — следующая секция после героя: на планшете несёт
   секционную ступень 48 (--v7-section: 24 mobile / 48 tablet). Десктопная
   половина (ширина >=1024) этим правилом не затронута. */
.hm-fork{margin-top:var(--v7-section);padding-top:0}.fork{display:grid;gap:14px}
 .mst-i{display:grid;grid-template-columns:clamp(104px,34vw,144px) minmax(0,1fr);align-items:center;gap:12px;min-width:0;min-height:var(--home-tile-h);height:auto;padding:var(--home-tile-inset) 12px;border:1px solid var(--v7-line);border-radius:var(--v7-surface-radius);background:var(--v7-surface)}
 .mst-i>.hb-ring{display:none}.home-route-media{display:block;width:clamp(104px,34vw,144px);height:var(--home-tile-media-h);border-radius:var(--home-tile-media-radius);background-color:var(--v7-surface);background-size:cover;background-repeat:no-repeat}
 .home-route-media--massage{background-image:url('/assets/photos/tile-massage-400w.webp');background-position:58% top}
 .home-route-media--space{background-image:url('/assets/photos/tile-space-home-400w.webp');background-position:center 58%}
 .home-route-media--pro{background-image:url('/assets/photos/editorial-20260910/home-pro-square-400w.webp');background-position:center}
 .home-route-media--school{background-image:url('/assets/photos/school/massage-training-600w.webp');background-position:center 45%}
 .mst-t{display:flex;min-width:0;flex-direction:column;gap:8px}.mst-t b{order:1;color:var(--v7-gold);font-size:14px;font-weight:400;line-height:19px;letter-spacing:.08em}.mst-t>span{font-size:20px;font-weight:500;line-height:26px;overflow-wrap:break-word}
 .mst-ar{display:none}
 @media(pointer:coarse){.mst-i:active{border-color:var(--v7-gold);background:var(--v7-surface2)}}
 .eco-trust{margin-top:24px}
  #about-club>div:first-child{min-width:0}#about-club p{margin-top:14px;color:var(--v7-muted);font-size:14.5px;line-height:1.6}#about-club p a{color:var(--v7-gold);text-decoration:underline;text-underline-offset:3px}
 .founder-brief{margin-top:20px;padding-top:18px;border-top:1px solid var(--v7-line)}.fb-row{display:flex;align-items:center;gap:12px}.fb-vis{width:48px;height:48px;flex:none;border-radius:50%;background:url('/assets/photos/dmitry-400w.webp') center 22%/cover}.fb-who{font-size:13.5px}.fb-who b,.fb-who span{display:block}.fb-who span{color:var(--v7-muted)}
 .home-about-action{margin-top:18px}.sp-vis{position:relative;width:100%;aspect-ratio:4/3.2;margin-top:24px;overflow:hidden;border:1px solid var(--v7-line);border-radius:var(--v7-media-radius)}.sp-vis img{width:100%;height:100%;object-fit:cover}.sp-vis::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgb(18 11 7 / .9))}.sp-vis .cap{position:absolute;z-index:1;bottom:18px;left:20px;color:var(--v7-text);font-size:11.5px;letter-spacing:.2em;text-transform:uppercase}
 .faq-2col .col-flow{display:block}.faq-2col details+details{margin-top:0}
 .home-related-all{margin-top:16px}.home-related-all a{color:var(--v7-gold);font-size:13.5px}
 /* ── Волна 7.1 (18.09.2026, решения владельца, вечер) ───────────────────────
    Матрица: «Вопросы о клубе» и «Из блога» на мобильной ветке (<1024).
    Обе правки живут только здесь и не касаются десктопной композиции
    (>=1024 — как было, решение владельца «как было оставь»). */

 /* 1) «Вопросы о клубе» (макет k1-mobile), уточнено волной 7.3 (M1).
    Волна 7.1 выправила ось заголовка, но добилась этого полосой во всю ширину:
    у поверхности были сняты боковые рамки и радиус, а её содержимое читало
    --v7-gutter. Правило M1 отменяет это исключение — одноуровневая поверхность
    обязана быть карточкой на поле страницы (border 1px, radius
    --v7-surface-radius, padding --card-pad), как остальные восемь
    FAQ-маршрутов. Поэтому здесь больше нет ни `padding-inline:0` у .wrap, ни
    снятия рамки/радиуса у поверхности: их держит общий владелец
    styles/v7/faq.css. Замыкающее звено группы — один выход на /contacts;
    ступень 20 (--rhythm-cluster) от содержимого, сам контроль читает роль 44. */
 #faq .faq-surface-exit{margin-top:var(--rhythm-cluster,20px);padding-top:var(--rhythm-heading-body,16px);border-top:1px solid var(--v7-line)}
 #faq .faq-surface-exit span{display:block;margin-bottom:4px;color:var(--v7-muted);font-size:13.5px;line-height:20px}
 #faq .faq-surface-exit a{display:flex;align-items:center;min-height:var(--shell-control-tertiary);color:var(--v7-gold);font-size:14.5px;line-height:20px;text-decoration:none}

 /* 2) «Из блога» (макет blog-B-390, вариант B): вместо карусели из одной
    карточки — карточки статей с явным «Читать статью», ссылка «Все статьи
    блога» в шапке блока и одно замыкающее звено «Не нашли ответ в статьях?» на
    /contacts. Стрелки ленты скрыты, строка больше не скроллится по горизонтали.
    Внутренний шаг карточки — 16px (компонентная ступень «заголовок → текст»):
    на маршруте «/» карточные роли (--rhythm-card-row и соседи) не объявлены, а
    инструмент ритма принимает внутри карточки только 10/16/24 — 14 из макета
    было бы числом вне ролей (найдено `audit-mobile-rhythm.cjs`). На мобильной
    ширине показываются два материала (как в утверждённом макете); третий
    остаётся в разметке и доступен через «Все статьи блога». */
 .related{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--rhythm-inline,14px);row-gap:var(--related-head-gap)}
 .pg-home .related-head{grid-row:1;grid-column:1;margin-bottom:0}
 .related .hs-nav{display:none}
 .home-related-all{grid-row:1;grid-column:2;margin:0}
 .related .rel-grid.h-swipe{grid-row:2;grid-column:1/-1;display:flex;flex-direction:column;gap:var(--rhythm-inline,14px);overflow:visible;padding-bottom:0}
 .related .rel-grid.h-swipe>*{flex:0 0 auto;scroll-snap-align:none}
 /* Клоны ленты (первый и последний ребёнок сетки) остаются скрытыми: правило
    отрисовки карточки ниже по файлу подняло бы им display до flex, поэтому
    селектор клона специфичнее (.related .rel-grid > .rel-card--clone). */
 .related .rel-grid.h-swipe>.rel-card--clone{display:none}
 /* Третий и следующие материалы показываются только в десктопной композиции:
    на мобильной ветке блок держит два материала, как в утверждённом макете. */
 .related .rel-grid.h-swipe>.rel-card:not(.rel-card--clone)~.rel-card:not(.rel-card--clone)~.rel-card:not(.rel-card--clone){display:none}
 .related .rel-card{display:flex;flex-direction:column;padding:var(--card-pad)}
 .related .rel-cat{margin-bottom:var(--rhythm-heading-body,16px);font-size:12.5px;letter-spacing:.08em}
 .related .rel-card h3,.related .rel-card h2{font-size:16px;font-weight:500;line-height:24px}
 .home-related-exit{grid-row:3;grid-column:1/-1;margin-top:var(--rhythm-transition);padding:var(--card-pad);border:1px solid var(--v7-line);border-radius:var(--v7-surface-radius)}
 .home-related-exit h3{font-size:18px;font-weight:500;line-height:26px}
 .home-related-exit p{margin-top:8px;color:var(--v7-muted);font-size:14px;line-height:21px}
 .home-related-exit .btn{margin-top:var(--rhythm-heading-body,16px)}
 #contacts .c7{min-width:0}.home-contact-copy{margin-top:14px;color:var(--v7-muted);font-size:14.5px}.home-contact-action{margin-top:18px}.home-contact-image{width:100%;height:auto;aspect-ratio:16/10;margin-top:24px;border:1px solid var(--v7-line);border-radius:var(--v7-media-radius);object-fit:cover}
}
@media(768px <= width < 1024px){.fork{grid-template-columns:repeat(2,minmax(0,1fr))}#about-club,#contacts{display:grid;grid-template-columns:7fr 5fr;gap:var(--rhythm-component);align-items:start}.sp-vis,.home-contact-image{margin-top:0}.faq-2col{display:grid;grid-template-columns:1fr 1fr;gap:24px}}
@media(min-width:1024px){
#about-club,#faq,#contacts{margin-top:var(--v7-section)}
/* Волна 7.1: замыкающие звенья мобильной ветки (вопросы → /contacts, статьи →
   /contacts) на десктопе не показываются — композиция прежняя по решению
   владельца («на пк версии как было оставь»). Разметка остаётся в документе,
   поэтому ссылка на /contacts не теряется на уровне HTML. */
.faq-surface-exit,.home-related-exit{display:none}
.home-hero{padding-block:48px}
.home-hero-copy{display:grid;grid-template-columns:minmax(0,824fr) minmax(0,392fr);gap:64px;align-items:end}
.home-hero .lead{border-inline-start:1px solid var(--v7-gold);padding-inline-start:24px}
.fork{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.mst-i{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;column-gap:12px;row-gap:16px;align-content:start;border-radius:var(--v7-radius);transition:box-shadow .2s ease}
.mst-i:focus-visible{box-shadow:0 0 0 2px var(--v7-gold)}
.home-route-media{grid-column:1/-1;display:block;height:var(--v7-photo-height);border-radius:var(--v7-radius);background-color:var(--v7-surface);background-size:cover;background-repeat:no-repeat}
.home-route-media--massage{background-image:url('/assets/photos/tile-massage-700w.webp');background-position:58% top}
.home-route-media--space{background-image:url('/assets/photos/tile-space-home-700w.webp');background-position:center 58%}
.home-route-media--pro{background-image:url('/assets/photos/editorial-20260910/home-pro-square-700w.webp');background-position:center}
.home-route-media--school{background-image:url('/assets/photos/school/massage-training-960w.webp');background-position:center}
.mst-i>.hb-ring{display:none}
.mst-t{display:flex;flex-direction:column;gap:8px}.mst-t b{font-size:16px;line-height:22px;font-weight:400;letter-spacing:.08em;color:var(--v7-gold)}.mst-t>span{order:-1;min-height:34px;font-size:26px;line-height:34px;font-weight:500;color:var(--v7-text)}
.mst-ar{display:none}
.eco-trust{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));column-gap:32px;row-gap:16px;padding-top:48px}
.eco-facts,.tw,.tw-top{display:contents}
.ef-i,.tw-score,.tw-meta{display:flex;flex-direction:column;gap:8px;padding-block:24px;border-block:1px solid var(--v7-line)}
.ef-i b,.tw-score b,.tw-meta b{font-size:40px;line-height:48px;white-space:nowrap}
.ef-i span,.tw-meta span{font-size:14px;line-height:22px;color:var(--v7-muted)}
.tw-stars{font-size:14px;line-height:22px;color:var(--v7-gold);letter-spacing:2px}
.tw-badge{grid-column:1/5;display:flex;gap:16px;align-items:center;font-size:14px;line-height:22px;color:var(--v7-muted)}
.tw-badge img{width:32px;height:auto}.tw-badge-t{display:flex;gap:8px;flex-wrap:wrap}.tw-badge-t>span::before{content:'· ';}.tw-action{justify-self:end;grid-column:5}
.tw-action .btn{padding:0;border:0;font-size:14px}
#about-club{display:grid;grid-template-columns:minmax(0,584fr) minmax(0,632fr);gap:64px;align-items:stretch}
#about-club>div:first-child{grid-column:2;grid-row:1;display:flex;flex-direction:column;gap:16px}
#about-club p,.home-contact-copy{color:var(--v7-muted)}
#about-club p a{color:var(--v7-gold);text-decoration:underline;text-underline-offset:4px}
.sp-vis{grid-column:1;grid-row:1;position:relative;display:flex;flex-direction:column;justify-content:end;min-height:480px;padding-top:34px}
.sp-vis img{position:absolute;inset:0;width:100%;height:calc(100% - 34px);object-fit:cover;border-radius:var(--v7-radius)}
.founder-brief{display:flex;flex-direction:column;gap:16px}.fb-row{display:flex;align-items:center;gap:16px}
.fb-vis{width:48px;height:48px;flex:none;border-radius:50%;background:url('/assets/photos/dmitry-400w.webp') center 22%/cover}
.fb-who{font-size:14px;line-height:22px}.fb-who b,.fb-who span{display:block}.fb-who span{color:var(--v7-muted)}
.founder-brief p{font-size:14px;line-height:22px}
.faq-2col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,auto);grid-auto-flow:column;column-gap:48px}
.faq-2col>.col-flow{display:contents}
.faq-2col p{margin-top:12px;color:var(--v7-muted)}
.home-related-all{grid-row:1;grid-column:2;font-size:14px;line-height:22px;color:var(--v7-gold)}
#contacts{display:grid;grid-template-columns:minmax(0,520fr) minmax(0,696fr);gap:64px;align-items:center}
#contacts>.c7{display:flex;flex-direction:column;align-items:start;gap:16px}
.home-contact-image{width:100%;height:400px;object-fit:cover;border-radius:var(--v7-radius)}
@media (hover:hover){
  .mst-i:hover{box-shadow:0 0 0 2px var(--v7-gold)}
  .home-related-all a:hover{color:var(--v7-gold)}
  .mst-i:hover .mst-t b{color:var(--v7-gold)}
}
@media(prefers-reduced-motion:reduce){.mst-i{transition:none}}
/* Existing compact-desktop boundary: retain full navigation as a second row. */
@media (width < 1280px){
  .home-hero-copy{gap:32px;grid-template-columns:1.65fr 1fr}.home-hero{padding-block:24px}
  .fork{gap:16px}.mst-t b{font-size:18px;line-height:26px}
  #about-club,#contacts{gap:32px}.faq-2col{column-gap:32px}
  .eco-trust{column-gap:24px}.ef-i b,.tw-score b,.tw-meta b{font-size:36px;line-height:44px}
}
}
