/* Contacts composition: natural mobile flow and reviewed desktop editorial grid. */
.c-route-link{display:inline-flex;min-height:44px;align-self:flex-start;align-items:center;gap:8px;color:var(--v7-gold);font-size:14px;font-weight:600;text-decoration:none}.c-route-link:focus-visible{outline:2px solid var(--v7-gold);outline-offset:3px;border-radius:4px}
@media(width < 1024px){
 main>.hero{margin-top:12px}.hero>.c7{min-width:0}
 .contacts-hours{margin-top:16px;color:var(--v7-muted);font-size:13.5px;line-height:1.7}
 .contacts-hero-photo{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;object-position:center;margin-top:16px;border-radius:20px}
 .contacts-hero-address{margin-top:12px;color:var(--v7-muted);font-size:13.5px;line-height:22px}
 .contacts-hero-action{display:grid;gap:12px;margin-top:24px}.contacts-hero-action .btn{width:100%;padding-block:0}
/* Шаг самостоятельных секций /contacts задаёт общее editorial-правило
   main>section+div / main>div+section (36px). Локальные 24px дублировали его
   значением ниже ступени; внутренняя группа .c-pairs сохраняет 24px. */
 .contacts-trust .tw{max-width:none}
 /* Заголовок по центру, отступы сверху/снизу равны: и верх, и низ читают
    --v7-section (решение владельца 18.09.2026; было 24/16 снизу). Десктопная
    половина заголовка — следующая волна. */
 .c-find-title{text-align:center;margin-bottom:var(--v7-section)}.c-card{padding:var(--card-pad-lg);border:1px solid var(--v7-line);border-radius:var(--v7-radius);background:var(--v7-surface)}
 /* 17.09.2026, волна 6. Расстояние между блоками внутри адресной карточки было
   числом 22px. Геометрия героя /contacts закреплена контрактом (не меньше 20px
   на мобильном и планшете), поэтому значение сохраняется, но читается
   объявленной ролью компонента — как и плотный шаг карточки отзыва. */
 :root{--c-addr-block-gap:22px}
.c-addr-card,.c-addr-main{display:flex;flex-direction:column}.c-addr-card>*+*,.c-addr-main>*+*{margin-top:var(--c-addr-block-gap)}.c-addr-main .crumb+p{margin-top:10px}.c-address{font-size:16px}.c-transit-list,.c-panel-copy{color:var(--v7-muted);font-size:13.5px;line-height:1.8}
 .c-visit{padding-top:18px;border-top:1px solid var(--v7-line)}.c-visit-note{color:var(--v7-muted);font-size:13px;line-height:1.55}.c-visit-actions{display:flex;flex-direction:column;margin-top:8px}.c-visit-actions a{display:flex;min-height:44px;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--v7-line);color:var(--v7-gold);font-size:13.5px;font-weight:600}.c-visit-actions a:first-child{border-top:0}.c-visit-actions a::after{content:'→';flex:none;font-size:18px;font-weight:400}
 .c-pairs{display:flex;flex-direction:column;gap:24px;margin-top:24px}.c-contact-panel{padding:10px 20px;border:1px solid var(--v7-line);border-radius:var(--v7-radius);background:var(--v7-surface)}
 .c-contact-panel>summary{display:flex;min-height:44px;align-items:center;justify-content:space-between;gap:16px;list-style:none;cursor:pointer}.c-contact-panel>summary::after{content:'›';flex:none;color:var(--v7-gold);font-size:22px}.c-contact-panel[open]>summary::after{transform:rotate(90deg)}
 .c-contact-body{margin-top:16px}.c-acc-summary{display:flex;min-width:0;flex-direction:column;gap:3px}.c-acc-title{font-size:16.5px;line-height:1.35}.c-acc-teaser{color:var(--v7-muted);font-size:12.5px;line-height:1.45}
 .c-stations{display:flex;flex-direction:column;gap:16px}.c-station b,.c-flow>b{display:block;margin-bottom:3px;color:var(--v7-gold);font-size:13.5px;font-weight:600}.c-station span{display:block;color:var(--v7-muted);font-size:13.5px;line-height:1.6}.c-flow{margin-top:18px}.c-flow ul{margin:0;padding-left:18px;color:var(--v7-muted);font-size:13.5px;line-height:1.7}.c-flow li{margin-top:3px}.c-panel-copy+.c-panel-copy{margin-top:10px}.c-panel-copy b{color:var(--v7-gold)}
 .c-pair-photo{display:none;margin-top:16px;overflow:hidden;border:1px solid var(--v7-line);border-radius:var(--v7-radius);background:var(--v7-surface2)}.c-contact-panel[open]+.c-pair-photo{display:block}.c-pair-photo img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
}
/* Планшет: пара «крошки → герой» держит 0 (вариант владельца 0); мобильные
   12px (строки выше) и десктопная половина не затрагиваются. */
@media(768px <= width < 1024px){main>.hero{margin-top:0}.hero{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:20px}.hero>.c7{grid-column:span 7;width:100%}.c-pair:has(>.c-contact-panel[open]){display:grid;grid-template-columns:7fr 5fr;gap:20px}.c-pair-photo{margin-top:0}}
/* Проектная ширина колонки героя — единственный источник величины: ею задан и
   потолок ширины колонки, и высота фото первого экрана (полоса 3:2 этой ширины).
   Пока величина была записана числом в двух местах, узкие экраны получали кадр
   ниже проектного и главное действие уезжало вверх (волна 7.2). */
body.pg-contacts{--c-hero-column-cap:350px}
@media(width < 1024px){
  .hero>.c7{width:100%;max-width:var(--c-hero-column-cap)}
}
@media(width < 768px){
  /* Округление текстовой стопки героя: она даёт .27px сверх целого, и без этой
     поправки действие встаёт на 539.27 — вне окна эталона 538 ±0.5. Поправка
     действует на всех высотах: иначе короткие экраны (640, 700) давали 539. */
  main>.hero{margin-top:11px}
  /* Первый экран (решение владельца 17.09.2026, подтверждено 19.09.2026):
     главное действие стоит на общей отметке 538px от верха — как на /space,
     на любой мобильной ширине и высоте. Носитель высоты в герое /contacts —
     фото: «текст → фото → адрес → действие» даёт ровно 538.27px. Кадр 3:2 на
     экране уже своего проектного потолка (320px на 360, 317px на 349, 288px
     на 320) короче, и вместе с ним короче весь блок. Поэтому на мобильном фото
     идёт полосой одной проектной высоты (350 / 1.5 = 233.33px), а недобравшую
     ширину кадр добирает обрезкой полей снимка: object-fit:cover уже объявлен
     выше. Так ритм героя не зависит от ширины телефона.
     Прежняя компенсация тем же недобором (padding-top у колонки) снята: она
     добавляла пустой воздух над героем и включалась только с высоты 740px, из-за
     чего на коротких экранах (667/671) действие стояло на 22px выше эталона. */
  .contacts-hero-photo{height:calc(var(--c-hero-column-cap) / 1.5)}
}
@media(min-width:1024px){
.c-address{text-wrap:balance;font-size:24px;line-height:32px;max-width:440px}
.contacts-hero-action{display:flex;flex-direction:column;align-items:stretch;gap:12px;margin-top:16px;max-width:440px}.contacts-hero-address{display:none}
.hero{display:block}.hero .lead{max-width:660px}
.hero>.c7{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:48px;align-items:start}.hero>.c7>.subbrand-mark,.hero h1,.hero .lead,.contacts-hours,.contacts-hero-action{grid-column:1;grid-row:auto}
.contacts-hours{align-self:start;margin-top:24px;font-size:14px;line-height:22px;color:var(--v7-muted)}
.contacts-hero-photo{display:block;width:100%;height:100%;max-height:420px;object-fit:cover;border-radius:20px;grid-column:2;grid-row:1/6}
.contacts-trust{margin-top:var(--v7-section);padding:24px 32px;border:1px solid var(--v7-line);border-radius:var(--v7-radius);background:var(--v7-surface)}
.contacts-trust .tw{display:flex;flex-direction:row;width:100%;max-width:none;align-items:center;justify-content:space-between;gap:32px}
.contacts-trust .tw-top{display:flex;align-items:center;gap:32px}
.contacts-trust .tw-score,.contacts-trust .tw-meta{display:flex;flex-direction:column;gap:6px}
.contacts-trust .tw-score>b{font-size:32px;line-height:40px}.contacts-trust .tw-meta>b{font-size:24px;line-height:32px}
.contacts-trust .tw-badge{display:flex;align-items:center;gap:16px;margin:0}.contacts-trust .tw-badge-t{display:flex;flex-direction:column;gap:6px}
.contacts-trust .tw-badge-t>span,.contacts-trust .tw-meta>span{color:var(--v7-muted);font-size:14px}.contacts-trust .tw-action{margin:0}
main>.c-find{margin-top:var(--v7-section)}.c-find-title{margin-bottom:24px}.c-addr-card{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:64px;align-items:start;padding-block:24px;border-block:1px solid var(--v7-line)}.c-addr-main{display:flex;flex-direction:column;align-items:start;gap:16px}.c-transit-list{font-size:14px;line-height:22px;color:var(--v7-muted)}.c-visit{width:100%;min-width:0}.c-visit-note{font-size:12px;line-height:18px;color:var(--v7-muted)}.c-visit-actions{display:flex;flex-direction:column;margin-top:8px}.c-visit-actions a{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:14px;line-height:22px;color:var(--v7-gold)}.c-visit-actions a::after{content:'→'}
.c-pairs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;margin-top:48px;align-items:start}.c-pair{display:flex;flex-direction:column;gap:24px;min-width:0}.c-contact-panel{width:100%}.c-acc-summary{display:flex;flex-direction:column;gap:12px;min-width:0}.c-acc-title{font-size:20px;line-height:28px;min-height:56px;display:flex;align-items:center}.c-acc-teaser{font-size:14px;line-height:22px;min-height:44px;color:var(--v7-muted)}
.c-contact-body{padding-bottom:24px;font-size:14px;line-height:22px}.c-stations{display:flex;flex-direction:column;gap:24px}.c-station b,.c-flow>b{display:block;font-weight:500;color:var(--v7-text)}.c-station span{display:block;margin-top:8px;color:var(--v7-muted)}.c-panel-copy+.c-panel-copy,.c-flow{margin-top:24px}.c-flow ul{padding-left:20px;margin:12px 0 0}.c-flow li+li{margin-top:12px}.c-pair-photo{order:-1;width:100%}.c-pair-photo img{display:block;width:100%;height:auto;aspect-ratio:2;object-fit:cover;border-radius:var(--v7-radius)}
/* Compact utility-page ending: declare the variant, never restyle the shell.
   18.09.2026: нижняя граница — та же норма, что у оболочки (мобильные 48,
   десктоп 88); max() сохраняет компактные 48 там, где общая граница меньше. */
body.pg-contacts{--footer-top-gap:max(48px,var(--v7-footer-boundary))}
@media(width < 1280px){.hero,.c-addr-card{column-gap:32px}.hero>.c5{padding:24px}.c-address{font-size:20px;line-height:28px}.c-pairs{gap:24px}.c-acc-teaser{min-height:66px}}
}
/* 19.09.2026. Компактный режим узкого короткого экрана (≤359px × ≤660px):
   тот же режим и те же сокращения, что объявлены для героя /space
   (styles/v7/mobile-space.css, @media (max-width:359px) and (max-height:660px)).
   До этого /contacts держал 538.27px там, где /space стоит на 485.8px, —
   разница 52.5px, тогда как правило первого экрана требует совпадения якорей
   в допуске ±4 физических px (DPR 2). Сжимаются те же роли, что у /space:
   воздух шапки героя, марка, заголовок, первый абзац, полоса фото и
   мета-строка; высота кнопки действия (50px) и роль секционной ступени не
   трогаются. Обычные мобильные и планшетные режимы вне этого окна не меняются. */
@media (max-width:359px) and (max-height:660px){
  .hero{padding-top:8px}
  .hero .subbrand-mark{margin-bottom:4px}
  .hero h1{font-size:27px;line-height:1.12}
  .hero .contacts-hours{margin-top:6px;font-size:14px;line-height:1.42}
  .hero .contacts-hero-photo{margin-top:10px}
  .hero .contacts-hero-address{margin-top:8px;font-size:12.5px;line-height:1.4}
  .hero .contacts-hero-action{margin-top:10px}
}
