/* ============================================================
   АКАДЕМИЧЕСКИЙ САЛОН — ХРОМ «Переплётная рама»
   Один слой обвязки для ВСЕХ страниц: колонтитул (шапка),
   полноэкранное «Оглавление», переключатель темы с чернильной
   заливкой, тёмный колофон-подвал, плавающие CTA, тосты.
   Подключается ПОСЛЕ базового css (styles.css / pereplet.css)
   и использует их токены. Здесь ничего страничного нет.
   ============================================================ */

/* ============================================================
   MOTION-ЯЗЫК «ОТТИСК»
   Один ритм для листа, чернил, печати и пометок. В JS
   data-motion реактивно учитывает reduced motion,
   «Спокойный режим», Save-Data и слабое устройство.
   ============================================================ */
:root{
  --motion-instant:80ms;--motion-tap:110ms;--motion-fast:150ms;
  --motion-ui:220ms;--motion-sheet:300ms;--motion-stamp:340ms;--motion-page:420ms;
  --ease-ink:cubic-bezier(.2,.72,.25,1);
  --ease-paper:cubic-bezier(.22,1,.36,1);
  --ease-press:cubic-bezier(.18,.88,.28,1.16);
  --ease-exit:cubic-bezier(.4,0,1,1);
}
@media(max-width:920px),(hover:none) and (pointer:coarse){
  :root{--motion-ui:180ms;--motion-sheet:230ms;--motion-stamp:280ms;--motion-page:220ms}
}
html[data-motion="lite"]{--motion-sheet:220ms;--motion-stamp:260ms;--motion-page:200ms}

/* Native cross-document transition — основной. JS-вуаль
   в extras.js остаётся только fallback, поэтому двойного
   fade и задержки больше нет. */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vt-out var(--motion-fast) var(--ease-exit) both}
::view-transition-new(root){animation:vt-in var(--motion-page) var(--ease-paper) both}
::view-transition-old(site-header),::view-transition-new(site-header),
::view-transition-old(mobile-dock),::view-transition-new(mobile-dock){animation:none;mix-blend-mode:normal}
@keyframes vt-out{to{opacity:.88;transform:translateX(-6px)}}
@keyframes vt-in{from{opacity:.58;transform:translateX(7px);clip-path:inset(0 0 0 2.5%)}to{opacity:1;transform:none;clip-path:inset(0)}}
@media(max-width:920px),(hover:none) and (pointer:coarse){
  @keyframes vt-out{to{opacity:.9;transform:none}}
  @keyframes vt-in{from{opacity:.72;transform:translateY(2px)}to{opacity:1;transform:none}}
}

/* ---------- Смена темы: чернила растекаются от кнопки ----------
   Класс html.vt-theme ставит app.js на время startViewTransition:
   гасим навигационные анимации и цветовые transition, чтобы
   новый снимок был готов мгновенно, а раскрывает его клип-круг. */
html.vt-theme::view-transition-old(root),
html.vt-theme::view-transition-new(root){animation:none!important;mix-blend-mode:normal}
html.vt-theme::view-transition-old(root){z-index:1}
html.vt-theme::view-transition-new(root){z-index:2}
html.vt-theme *,html.vt-theme *::before,html.vt-theme *::after{transition:none!important}

/* плавная смена темы без view-transition (фолбэк) */
@media(prefers-reduced-motion:no-preference){
  html:not(.vt-theme) body,
  html:not(.vt-theme) .site-header,
  html:not(.vt-theme) .sheet,
  html:not(.vt-theme) .toc,
  html:not(.vt-theme) .mobile-cta{transition:background-color .35s ease,border-color .35s ease,color .35s ease}
}

/* ---------- Скип-линк ---------- */
.skip-link{position:fixed;top:-72px;left:14px;z-index:300;padding:12px 18px;border-radius:0 0 var(--r) var(--r);background:var(--ink);color:var(--paper);font-weight:500;font-size:14px;transition:top .2s}
html[data-input-modality="keyboard"] .skip-link:focus{top:0}

/* Логотип — интерактивная ссылка, но не выделяемый фрагмент документа:
   двойной клик и системный tap highlight не должны выглядеть как поломка. */
.site-header .brand,
.mobile-appbar__brand,
.admin-sidebar__brand{
  -webkit-user-select:none;
  user-select:none;
  -webkit-tap-highlight-color:transparent;
}
.site-header .brand img,
.mobile-appbar__brand img,
.admin-sidebar__brand img{
  pointer-events:none;
  -webkit-user-drag:none;
}

/* ============================================================
   КОЛОНТИТУЛ (шапка) — ОДНО МЕСТО ПРАВКИ
   Геометрия, цвет и вся ступенчатая адаптация шапки живут
   в блоке «Общая шапка финального концепта» в конце файла
   (эталон style-lab/full). Прежние генерации правил отсюда
   удалены: они не переопределялись, а мешали — прятали подпись
   «Кабинет», гасили золотой обрез и снимали фокус с бренда.
   Здесь остались только крохи, за которые держится JS.
   ============================================================ */
/* Защитное правило: шапка не должна исчезать, даже если старый
   закешированный скрипт успел добавить прежний класс hide. */
.site-header.hide{transform:none}
/* чернильный прогресс чтения — тонкая линия по нижней кромке шапки */
.hdr-ink{
  position:absolute;left:0;bottom:-1px;height:2px;width:0;z-index:1;pointer-events:none;
  background:linear-gradient(90deg,var(--wax) 0%,var(--wax-deep,#8C2D18) 100%);
}
/* точка-перо на конце линии: видно, где остановилось чтение */
.hdr-ink .hi-tip{
  position:absolute;right:0;top:50%;width:5px;height:5px;border-radius:50%;
  background:var(--wax-deep,#8C2D18);transform:translate(50%,-50%);
  box-shadow:0 0 0 2px color-mix(in srgb, var(--wax) 28%, transparent);
  opacity:0;transition:opacity .25s;
}
.site-header.scrolled .hdr-ink .hi-tip{opacity:1}

/* ============================================================
   ПЕРЕКЛЮЧАТЕЛЬ ТЕМЫ — солнце ⇄ луна, литой из чернил
   ============================================================ */
.theme-toggle{
  position:relative;display:inline-grid;place-items:center;
  width:42px;height:42px;flex:0 0 auto;
  border:1px solid var(--hairline-strong);background:transparent;border-radius:var(--r);
  cursor:pointer;color:var(--ink);overflow:hidden;
  transition:background .15s,border-color .15s;
}
.theme-toggle:hover{background:var(--mark);border-color:var(--ink-soft)}
.theme-toggle:active .tt-svg{transform:scale(.86)}
.theme-toggle .tt-svg{display:block;transition:transform .5s cubic-bezier(.34,1.56,.5,1)}
/* ядро: солнце → полная луна */
.theme-toggle .tt-core{transition:r .45s cubic-bezier(.4,0,.2,1)}
/* дырка маски: выезжает и выкусывает месяц */
.theme-toggle .tt-hole{transition:cx .45s cubic-bezier(.4,0,.2,1),cy .45s cubic-bezier(.4,0,.2,1),r .45s cubic-bezier(.4,0,.2,1)}
/* лучи: сворачиваются в ночи */
.theme-toggle .tt-rays{transform-origin:12px 12px;transition:transform .45s cubic-bezier(.4,0,.2,1),opacity .35s ease}
:root[data-theme="dark"] .theme-toggle .tt-svg{transform:rotate(-16deg)}
:root[data-theme="dark"] .theme-toggle .tt-core{r:7.2px}
:root[data-theme="dark"] .theme-toggle .tt-hole{cx:16.5px;cy:7.5px;r:6.4px}
:root[data-theme="dark"] .theme-toggle .tt-rays{transform:rotate(-60deg) scale(.35);opacity:0}
/* звёздочки-искры вокруг луны */
.theme-toggle .tt-stars{opacity:0;transition:opacity .4s ease .1s}
:root[data-theme="dark"] .theme-toggle .tt-stars{opacity:.9}

/* строка темы в меню */
.toc-theme-row{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:13px 0;border-bottom:1px solid var(--hairline);
}
.toc-theme-row .ttr-lbl{font-size:14.5px;color:var(--ink-soft)}

/* ============================================================
   ПУТЕВОДИТЕЛЬ — короткий выбор вместо стены ссылок
   ============================================================ */
.toc{position:fixed;inset:0;z-index:200;background:var(--paper);overflow-y:auto;
  opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s}
.toc::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.42;
  background:linear-gradient(90deg,transparent 0 49.9%,var(--hairline) 50%,transparent 50.1%),
    repeating-linear-gradient(0deg,transparent 0 35px,color-mix(in srgb,var(--hairline) 42%,transparent) 36px)}
.toc.open{opacity:1;visibility:visible}
.toc-inner{position:relative;z-index:1;max-width:1080px;margin:0 auto;padding:clamp(24px,4vh,42px) clamp(20px,5vw,58px) 44px}
.toc-head{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:clamp(18px,2.8vh,28px)}
.toc-kicker,.toc-grp-t{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-faint)}
.toc-kicker{margin-bottom:7px}
.toc-title{font-family:var(--serif);font-size:clamp(30px,4.2vw,47px);font-weight:400;line-height:1;margin:0;color:var(--ink);letter-spacing:-.02em}
.toc-head p{margin:8px 0 0;color:var(--ink-soft);font-size:16px}
.toc-close{width:46px;height:46px;flex:0 0 46px;border:1px solid var(--hairline-strong);background:var(--sheet);border-radius:50%;
  cursor:pointer;color:var(--ink-soft);font:26px/1 var(--serif);display:grid;place-items:center;transition:transform .2s,border-color .15s,color .15s}
.toc-close:hover{transform:rotate(8deg);border-color:var(--wax);color:var(--wax-text,var(--wax))}
.toc-search{position:relative;margin-bottom:clamp(14px,2.4vh,22px)}
.toc-search input{width:100%;height:56px;border:1px solid var(--hairline-strong);background:var(--sheet);border-radius:4px;
  padding:0 70px 0 48px;font:inherit;font-size:15px;color:var(--ink);box-shadow:0 2px 0 var(--hairline)}
.toc-search input:focus{outline:2px solid color-mix(in srgb,var(--stamp) 34%,transparent);outline-offset:1px;border-color:var(--stamp)}
.toc-search input::placeholder{color:var(--ink-faint)}
.tcs-mark{position:absolute;left:17px;top:50%;transform:translateY(-54%);font:24px/1 var(--serif);color:var(--stamp);z-index:1}
.toc-search kbd{position:absolute;right:14px;top:50%;transform:translateY(-50%);border:1px solid var(--hairline);border-bottom-color:var(--hairline-strong);
  background:var(--paper-2);padding:4px 7px;border-radius:3px;font:10px/1 var(--mono);color:var(--ink-faint)}
.toc-sr{margin-top:10px;padding:8px 12px;background:var(--sheet);border:1px solid var(--hairline);box-shadow:0 10px 30px rgba(34,32,27,.08)}
.toc-sr[hidden]{display:none}
.toc-sr .dotrow{font-family:var(--serif);font-size:clamp(16px,2vw,20px);padding:10px 6px;display:flex;gap:12px;align-items:baseline;border-bottom:1px solid var(--hairline)}
.toc-sr .dotrow:last-child{border-bottom:0}.toc-sr .dotrow:hover{background:var(--mark)}
.toc-sr .dots{flex:1;border-bottom:1px dotted var(--hairline-strong)}
.toc-sr .dr-val{color:var(--wax-text,var(--wax))}.toc-sr-none{font-size:14px;color:var(--ink-soft);padding:8px;line-height:1.6}

.toc-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:clamp(16px,2.6vh,24px)}
.toc-choice{min-width:0;min-height:82px;display:grid;grid-template-columns:30px minmax(0,1fr) 22px;align-items:center;gap:11px;
  padding:14px 16px;background:color-mix(in srgb,var(--sheet) 90%,transparent);border:1px solid var(--hairline);border-radius:4px;color:var(--ink);
  transition:background .15s,border-color .15s,transform .18s,box-shadow .18s}
.toc-choice:hover{background:var(--sheet);border-color:var(--hairline-strong);transform:translateY(-2px);box-shadow:0 8px 20px rgba(34,32,27,.08)}
.toc-choice.is-main{border-color:color-mix(in srgb,var(--wax) 55%,var(--hairline));background:linear-gradient(100deg,var(--wax-soft),var(--sheet) 78%)}
.tch-no{font:10px/1 var(--mono);color:var(--ink-faint);align-self:start;padding-top:4px}.is-main .tch-no{color:var(--wax-text,var(--wax))}
.tch-copy{min-width:0;display:grid;gap:4px}.tch-copy b{font-family:var(--serif);font-size:clamp(17px,2vw,21px);font-weight:500;line-height:1.18}
.tch-copy small{font-size:12px;color:var(--ink-soft);line-height:1.3}.tch-go{font-family:var(--serif);font-size:20px;color:var(--wax-text,var(--wax))}

.toc-route{margin:0 0 clamp(14px,2.2vh,20px);padding:12px 14px 14px;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);background:color-mix(in srgb,var(--paper) 80%,transparent)}
.tr-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:9px}.tr-head .toc-grp-t{margin:0}.tr-head>a{font-size:12px;color:var(--ink-soft)}
.tr-head>a:hover{color:var(--wax-text,var(--wax))}.tr-steps{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:center;gap:8px}
.tr-step{min-width:0;display:flex;align-items:center;gap:10px;color:var(--ink);padding:7px 8px;border-radius:3px;transition:background .15s}
.tr-step:hover{background:var(--mark)}.tr-step i{width:24px;height:24px;flex:0 0 24px;display:grid;place-items:center;border:1px solid var(--hairline-strong);
  border-radius:50%;font:10px/1 var(--mono);font-style:normal;color:var(--wax-text,var(--wax))}
.tr-step span{min-width:0;display:grid;gap:2px}.tr-step b{font-size:13px;font-weight:600;white-space:nowrap}.tr-step small{font-size:10.5px;color:var(--ink-faint)}
.tr-arr{color:var(--hairline-strong);font-family:var(--serif)}

.toc-directory{border:1px solid var(--hairline);background:var(--sheet);border-radius:4px;margin-bottom:14px}
.toc-directory>summary{list-style:none;min-height:58px;padding:10px 15px;display:flex;align-items:center;justify-content:space-between;gap:18px;cursor:pointer}
.toc-directory>summary::-webkit-details-marker{display:none}.toc-directory>summary span{display:grid;gap:2px}.toc-directory>summary b{font-family:var(--serif);font-size:17px;font-weight:500}
.toc-directory>summary small{font-size:11.5px;color:var(--ink-soft)}.toc-directory>summary i{font:24px/1 var(--serif);font-style:normal;color:var(--wax-text,var(--wax));transition:transform .2s}
.toc-directory[open]>summary{border-bottom:1px solid var(--hairline)}.toc-directory[open]>summary i{transform:rotate(45deg)}
.toc-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:clamp(28px,5vw,64px);padding:20px}
.toc-grp-t{margin:0 0 6px}.toc-grp{margin-bottom:16px}.toc-primary a.dotrow{display:flex;align-items:baseline;gap:10px;padding:8px 4px;font-family:var(--serif);font-size:18px;border-radius:3px}
.toc-primary .dotrow:hover{background:var(--mark)}.toc-primary .dotrow[aria-current="page"]{color:var(--wax-text,var(--wax))}
.toc-primary .dots{flex:1;min-width:20px;border-bottom:1px dotted var(--hairline-strong)}.toc-primary .dr-val{max-width:44%;font:11px/1.35 var(--mono);color:var(--ink-faint);text-align:right}
.toc-side{display:flex;flex-direction:column;gap:18px}.toc-docs{display:flex;flex-direction:column}.toc-docs a{padding:7px 0;border-bottom:1px solid var(--hairline);font-size:13px;color:var(--ink-soft)}
.toc-docs a:hover{color:var(--wax-text,var(--wax))}.toc-theme-row{padding:10px 0}.toc-theme-row .ttr-lbl{font-size:13px}
.toc-footbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 4px}.toc-footbar button{display:flex;align-items:baseline;gap:9px;border:0;background:none;padding:9px 0;cursor:pointer;color:var(--ink)}
.toc-footbar button span,.toc-footbar>span{font-size:11.5px;color:var(--ink-faint)}.toc-footbar button b{font-family:var(--serif);font-size:15px;font-weight:500;color:var(--wax-text,var(--wax))}

@media(prefers-reduced-motion:no-preference){
  .toc .toc-head,.toc .toc-search,.toc .toc-choices,.toc .toc-route,.toc .toc-directory,.toc .toc-footbar{opacity:0;transform:translateY(10px)}
  .toc.open .toc-head,.toc.open .toc-search,.toc.open .toc-choices,.toc.open .toc-route,.toc.open .toc-directory,.toc.open .toc-footbar{opacity:1;transform:none;transition:opacity .35s ease,transform .35s ease}
  .toc.open .toc-search{transition-delay:.03s}.toc.open .toc-choices{transition-delay:.06s}.toc.open .toc-route{transition-delay:.09s}.toc.open .toc-directory{transition-delay:.12s}.toc.open .toc-footbar{transition-delay:.15s}
}
body.toc-lock{overflow:hidden}

/* ============================================================
   КОЛОФОН v6 «Развёрнутая полоса» — последняя страница издания.
   Десктоп ≥921px: реестр раскрыт пятью наборными колонками,
   гербовая плита выходных данных на виду (app.js ставит open
   на details[data-cf-fold] по matchMedia). Телефон: рубрики
   складываются в строки-заголовки со счётчиками.
   Золото зашито хексами: --foil объявлен только в pereplet.css,
   который подключён на одной index.html.
   Контраст проверен на САМОЙ СВЕТЛОЙ полосе градиента (#262319):
   #F0EADB 12.5:1 · #CFC8B8 9.4:1 · #B5AE9C 7.1:1 · #A79F87 5.9:1
   · #9C9580 5.3:1 · #E9C972 9.8:1 · #CDA455 6.8:1 — всё ≥ AA.
   #6A6350 (отточия) и #3A362B (линейки) — декор, aria-hidden,
   информации не несут: 1.4.11 к ним не применяется.
   ============================================================ */
.site-footer{
  background:linear-gradient(180deg,#262319 0%,#22201B 30%,#1D1B16 100%);
  color:#CFC8B8;margin-top:clamp(72px,10vw,120px);
  padding:clamp(46px,6.6vw,78px) 0 40px;position:relative;overflow:hidden;
  font-size:14px;border-top:0;
}
.site-footer::before{ /* золотой обрез сверху — фирменный мотив */
  content:"";position:absolute;top:0;left:0;right:0;height:3px;z-index:2;
  background:linear-gradient(90deg,transparent,#B98A2F 30%,#E9C972 50%,#B98A2F 70%,transparent);
  opacity:.75;
}
/* Зеркальный ¶ в правом поле: печатная форма зеркальна, оттиск — нет. */
.site-footer::after{
  content:"¶";position:absolute;right:-.04em;bottom:-.2em;z-index:0;
  pointer-events:none;user-select:none;-webkit-user-select:none;
  font-family:var(--serif);font-size:min(42vh,380px);line-height:1;
  color:#F0EADB;opacity:.05;transform:scaleX(-1);
}
.site-footer > .wrap{position:relative;z-index:1}

/* ---------- отточие: фактура один в один с .dotrow (styles.css) ---------- */
.cf-dots{
  flex:1 1 auto;min-width:14px;height:.9em;align-self:baseline;
  background-image:radial-gradient(circle,#6A6350 1px,transparent 1.4px);
  background-size:9px 3px;background-repeat:repeat-x;background-position:0 100%;
  transition:background-image .15s;
}

/* ---------- шапка колофона: манифест | стол связи ---------- */
.cf6-head{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);
  gap:26px clamp(30px,5.4vw,76px);align-items:start;
  padding-bottom:clamp(24px,3.6vw,38px)}
.cf6-brand{min-width:0}
.cf6-brand .brand{color:#F0EADB;display:inline-flex;margin-bottom:16px}
.cf6-brand .brand .b-para{
  color:#E9C972;background:rgba(233,201,114,.07);
  border-color:rgba(205,164,85,.45);
  box-shadow:inset 0 1px 2px rgba(0,0,0,.5),inset 0 -1px 0 rgba(233,201,114,.14);
}
.cf6-motto{font-family:var(--serif);font-weight:340;font-size:clamp(20px,2.5vw,27px);
  line-height:1.34;letter-spacing:-.005em;color:#F0EADB;margin:0 0 12px;max-width:26ch;
  text-shadow:0 1px 0 rgba(0,0,0,.5);text-wrap:balance}
.cf6-facts{margin:0;font-family:var(--mono);font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;color:#9C9580;font-variant-numeric:tabular-nums;line-height:1.9}
/* стол связи: часы приёмной + формулярные строки каналов */
.cf6-desk{min-width:0;border-left:2px solid rgba(205,164,85,.5);
  padding-left:clamp(16px,2.2vw,26px)}
.cf-clock{display:flex;align-items:center;gap:9px;margin:2px 0 4px;white-space:nowrap}
.cf-lamp{width:8px;height:8px;border-radius:50%;flex:none;background:#74BA90;
  box-shadow:0 0 0 3px rgba(116,186,144,.16)}
.cf-lamp.night{background:#CDA455;box-shadow:0 0 0 3px rgba(205,164,85,.16)}
.cf-cl-s{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:#A79F87}
.cf-cl-t{font-family:var(--mono);font-size:15px;color:#F0EADB;
  font-variant-numeric:tabular-nums;letter-spacing:.02em}
.cf-cl-t .cf-tz{font-size:10.5px;letter-spacing:.16em;color:#A79F87;margin-left:5px}
/* двоеточие мигает: «движется только то, что считается» */
.cf-cn{animation:cf-blink 1.8s steps(1) infinite}
@keyframes cf-blink{0%,58%{opacity:1}59%,100%{opacity:.25}}
.cf-live{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#A79F87;margin:0 0 6px}
.fcl-dot{width:7px;height:7px;border-radius:50%;flex:none;background:#74BA90}
.fcl-dot.night{background:#CDA455}
/* формулярная строка канала. flex-wrap — страховка от text-only zoom:
   при 200% кегля значение уходит на вторую строку, а не за край */
.cf-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 10px;
  min-height:44px;padding:10px 0;border-bottom:1px solid #3A362B;
  color:#CFC8B8;transition:color .15s}
.cf6-ch .cf-line:first-child{border-top:1px solid #3A362B}
.cf-line .cf-l-k{font-size:13.5px;white-space:nowrap}
.cf-line .cf-l-v{font-family:var(--mono);font-size:12px;color:#B5AE9C;
  white-space:nowrap;margin-left:auto;transition:color .15s}
.cf-line:hover,.cf-line:focus-visible{color:#F0EADB}
.cf-line:hover .cf-l-v{color:#E9C972}
.cf-line:hover .cf-dots{background-image:radial-gradient(circle,#A79F87 1px,transparent 1.4px)}

/* ---------- реестр: наборная касса из пяти колонок / складные рубрики ---------- */
.cf-reestr{border-top:1px solid #3A362B}
.cf-r-row{display:block}
.cf-r-row>summary{list-style:none}
.cf-r-row>summary::-webkit-details-marker{display:none}
.cf-r-k{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:#A79F87}
.cf-r-set{display:block;min-width:0}
.cf-r-set a{
  display:inline-block;font-size:14.5px;line-height:1.45;color:#B5AE9C;
  background-image:linear-gradient(90deg,#B98A2F,#E9C972);
  background-repeat:no-repeat;background-position:0 calc(100% - 6px);background-size:0 1.5px;
  transition:color .16s,background-size .32s cubic-bezier(.22,1,.36,1);
}
.cf-r-set a:hover,.cf-r-set a:focus-visible{color:#F0EADB;background-size:100% 1.5px}
.cf-r-set a[aria-current="page"]{color:#E9C972;background-size:100% 1.5px}
.cf-r-n{display:inline-block;margin-left:auto;font-family:var(--mono);font-size:10px;
  color:#7E7763;border:1px solid #3A362B;border-radius:999px;padding:2px 8px;letter-spacing:.06em}
.cf-r-ar{display:inline-block;font-family:var(--serif);font-style:normal;color:#A79F87;
  transform:rotate(90deg);transition:transform .2s ease}
.cf-r-row[open] .cf-r-ar{transform:rotate(-90deg)}
@media(min-width:921px){
  /* наборная касса: рубрики всегда раскрыты колонками (open ставит app.js) */
  .cf-reestr{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
    gap:0 clamp(18px,2.6vw,34px);padding:clamp(20px,3vw,28px) 0 clamp(14px,2.2vw,22px)}
  .cf-reestr>.cf-r-row>summary{pointer-events:none}
  .cf-reestr .cf-r-n,.cf-reestr .cf-r-ar{display:none}
  .cf-reestr .cf-r-k{display:flex;align-items:center;gap:10px;padding:0 0 10px;margin:0}
  .cf-reestr .cf-r-k::after{content:"";flex:1 1 14px;height:1px;
    background:linear-gradient(90deg,rgba(185,138,47,.5),rgba(185,138,47,0))}
  .cf-reestr .cf-r-set a{display:block;padding:6px 0;margin:0;font-size:14px;white-space:normal}
}
@media(max-width:920px){
  /* рубрики-складки: подвал не съедает полстраницы телефона */
  .cf-reestr .cf-r-row{border-bottom:1px solid #3A362B}
  .cf-r-row>summary.cf-r-k{display:flex;align-items:center;gap:10px;cursor:pointer;
    padding:15px 2px;margin:0;font-size:11px}
  .cf-r-set{padding:0 2px 14px}
  .cf-r-set a{padding:8px 0;margin-right:18px;white-space:nowrap}
}

/* ---------- выходные данные: гербовая плита ---------- */
.cf6-impfold{border-top:1px solid #3A362B}
.cf6-impfold>summary.cf-r-k{display:flex;align-items:center;gap:10px;cursor:pointer;
  padding:15px 2px;margin:0;font-size:11px}
.cf6-impfold .cf-r-set{padding:0 0 16px}
@media(min-width:921px){
  .cf6-impfold{border-top:0}
  /* summary.cf-r-k (0,2,1) сильнее .cf6-impfold>summary — прячем той же силой */
  .cf6-impfold>summary.cf-r-k{display:none}
  .cf6-impfold .cf-r-set{padding:0 0 6px}
}
.cf-imprint{position:relative;display:flex;gap:0 clamp(18px,3.4vw,44px);
  align-items:flex-start;flex-wrap:wrap;
  margin:clamp(6px,1.2vw,10px) 0 clamp(16px,2.2vw,22px);
  padding:clamp(15px,2.2vw,20px) clamp(16px,2.4vw,24px);
  border:1px solid #3A362B;border-radius:var(--r);background:rgba(255,253,246,.025)}
.cf-imprint::after{ /* внутренняя рамка бланка */
  content:"";position:absolute;inset:5px;border:1px solid #2F2C22;border-radius:1px;pointer-events:none}
.cf-imprint::before{ /* нижний лист гербовой стопки выглядывает из-под документа */
  content:"";position:absolute;left:9px;right:-6px;top:8px;bottom:-8px;z-index:-1;
  border:1px solid #322E24;border-radius:var(--r);background:#201D17;transform:rotate(.7deg)}
.cf-imp-h{flex:0 0 100%;margin:0 0 12px;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.22em;text-transform:uppercase;font-weight:500;color:#A79F87}
.cf-imp-rows{flex:1 1 340px;min-width:0;margin:0;display:flex;flex-direction:column;gap:9px;max-width:78ch}
/* minmax(min-content,…) — колонка ключа растёт, если пользователь
   поднял минимальный кегль шрифта: наезда на значение не будет */
.cf-imp-row{display:grid;grid-template-columns:minmax(min-content,180px) minmax(0,1fr);
  gap:3px 18px;align-items:baseline}
.cf-imp-k{display:flex;align-items:baseline;gap:8px;margin:0;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:#A79F87}
.cf-imp-k > span{white-space:nowrap}
.cf-imp-k .cf-dots{min-width:8px;height:.7em}
.cf-imp-v{margin:0;font-size:12.8px;line-height:1.65;color:#B5AE9C}
.cf-imp-v b{font-weight:500;color:#F0EADB}
.cf-imp-v a{color:#CFC8B8;border-bottom:1px solid #6A6350;transition:color .15s,border-color .15s}
.cf-imp-v a:hover{color:#F0EADB;border-color:#A79F87}
.cf-inn{font-variant-numeric:tabular-nums;letter-spacing:.03em;color:#F0EADB;
  user-select:all;-webkit-user-select:all}
/* Проверка в ФНС: ровная золотая плашка — язык честности, не «состаренный» штамп */
.cf-check{flex:0 0 auto;align-self:center;display:flex;flex-direction:column;gap:3px;
  min-height:48px;justify-content:center;padding:11px 15px;border-radius:3px;
  border:1.5px solid #B98A2F;color:#CDA455;
  transition:border-color .18s,color .18s,background .18s}
.cf-check-k{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;
  text-transform:uppercase;color:#A79F87;transition:color .18s}
.cf-check-t{font-size:13px;line-height:1.35;color:#E9C972;transition:color .18s}
.cf-check .ar{font-family:var(--serif);display:inline-block;transition:transform .18s}
.cf-check:hover{border-color:#E9C972;background:rgba(233,201,114,.07)}
.cf-check:hover .cf-check-k{color:#CDA455}
.cf-check:hover .ar{transform:translateX(3px)}

/* ---------- мостик к Путеводителю ---------- */
.cf-guide{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 12px;width:100%;
  min-height:52px;padding:15px 0;border-top:1px solid #3A362B;
  font-family:var(--serif);font-size:clamp(15px,1.9vw,18px);color:#CFC8B8;
  transition:color .15s}
.cf-guide .cf-g-t{min-width:0}
.cf-guide .cf-val{font-family:var(--mono);font-size:12px;letter-spacing:.12em;
  text-transform:uppercase;color:#B5AE9C;white-space:nowrap;margin-left:auto;transition:color .15s}
.cf-guide .cf-val .ar{font-family:var(--serif);display:inline-block;transition:transform .18s}
.cf-guide:hover{color:#F0EADB}
.cf-guide:hover .cf-val{color:#E9C972}
.cf-guide:hover .cf-val .ar{transform:translateX(3px)}
.cf-guide:hover .cf-dots{background-image:radial-gradient(circle,#A79F87 1px,transparent 1.4px)}

/* ---------- концевая полоса-воронка ----------
   Меры сужаются 56ch → 32ch → печать → «Наверх», как концовка
   книжной главы, и печать издания встаёт в вершину воронки. */
.cf-finis{margin-top:0;padding-top:clamp(18px,2.6vw,24px);
  border-top:1px solid #3A362B;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:10px}
.cf-fin-copy{max-width:56ch;margin:0;font-family:var(--mono);font-size:16px;
  letter-spacing:.14em;color:#A79F87;font-variant-numeric:tabular-nums;
  line-height:1.85;text-wrap:balance}
.cf-fin-line{max-width:32ch;margin:0;font-family:var(--serif);font-style:italic;
  font-size:14px;color:#9C9580}
.fl-seal{display:block;color:#CDA455;margin-top:4px}
/* Печать обязана быть видимой в тёмном колофоне: гасим reveal-механику
   (.has-js .seal.press ждёт класса .in от IntersectionObserver, который сюда
   не доходит) и multiply, тонущий на тёмном. Двухселекторная формула (0,4,0)
   бьёт :root[data-theme="dark"] .seal (0,3,0) — НЕ УПРОЩАТЬ и не убирать .fl-seal. */
.fl-seal .seal,.has-js .fl-seal .seal.press{
  opacity:.5;transform:rotate(-8deg);mix-blend-mode:normal;transition:none;
}
.fc-top{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:#B5AE9C;border-bottom:1px solid #6A6350;padding:4px 2px 3px;white-space:nowrap;
  transition:color .15s,border-color .15s}
.fc-top:hover{color:#F0EADB;border-color:#A79F87}

/* ---------- фокус на тёмном: сургуч #B23B22 даёт ~2.3:1, нужна светлая кость ---------- */
.site-footer :focus-visible{outline:2px solid #F0EADB;outline-offset:3px;border-radius:1px}

/* ============================ 920px ============================ */
@media(max-width:920px){
  .cf6-head{grid-template-columns:1fr;gap:20px}
  .cf6-desk{border-left:0;padding-left:0;border-top:1px solid #3A362B;padding-top:14px}
  .cf6-motto{max-width:30ch}
  /* каналы — визитница 2×2 вместо четырёх формулярных строк */
  .cf6-ch{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
  .cf6-ch .cf-line{flex-direction:column;align-items:flex-start;justify-content:center;
    gap:2px;min-height:50px;padding:8px 11px;border:1px solid #3A362B;border-radius:3px}
  .cf6-ch .cf-line:first-child{border-top:1px solid #3A362B}
  .cf6-ch .cf-line .cf-dots{display:none}
  .cf6-ch .cf-line .cf-l-v{margin-left:0;font-size:12px}
  .cf-imprint{gap:20px}
  .cf-check{align-self:stretch;align-items:flex-start}
  .site-footer::after{font-size:min(30vh,250px)}
  /* .mobile-cta: 96px даёт правило ниже по файлу (оно выигрывает).
     Там, где панель не монтируется (configurator.html, 404.html),
     app.js ставит body.no-mcta и мёртвые 96px уходят. */
  body.no-mcta .site-footer{padding-bottom:44px}
}

/* ============================ 760px ============================ */
@media(max-width:760px){
  .cf-imp-row{grid-template-columns:1fr;gap:2px}
  .cf-imp-k .cf-dots{display:none}
  .cf-imprint{padding:18px 16px}
  .cf-imprint::before{left:7px;right:-4px}
  .cf-guide{font-size:16px}
  .cf-guide .cf-dots{display:none}
}

/* ============================ 480px ============================ */
@media(max-width:480px){
  .site-footer{padding-top:40px;font-size:14px}
  .site-footer::after{display:none}
  .cf6-motto{font-size:18px;max-width:none}
  .cf-cl-t{font-size:16px}
  .cf-r-set a{font-size:16px;margin-right:16px}
  .cf-fin-copy{letter-spacing:.1em;line-height:2}
  .fl-seal .seal{width:104px;height:104px}
  .cf-line .cf-dots{display:none}
}

/* ==================== PREFERS-REDUCED-MOTION ====================
   Глобальный молот styles.css:313 схлопывает длительности, но
   бесконечная анимация двоеточия при duration .001ms начнёт
   мерцать — гасим её явно и оставляем двоеточие видимым. */
@media(prefers-reduced-motion:reduce){
  .cf-cn{animation:none!important;opacity:1!important}
  .site-footer *,.site-footer *::before,.site-footer *::after{
    transition-duration:.001ms!important;
  }
  .cf-check:hover .ar,.cf-guide:hover .cf-val .ar{transform:none}
}

/* ============================ ПЕЧАТЬ ============================
   Расширяет общий print-блок ниже по файлу: background:none нужен и
   потомкам, иначе плита выходных данных и плашка ФНС лягут чёрными
   прямоугольниками. padding-bottom с !important — потому что
   @media(max-width:920px) без квалификатора screen матчится и на A4
   (~794px при 96dpi), а его padding-bottom:100px стоит ПОЗЖЕ по файлу. */
@media print{
  .site-footer,.site-footer *{
    background:none!important;background-image:none!important;
    color:#000!important;text-shadow:none!important;box-shadow:none!important;
  }
  .site-footer{border-top:1px solid #000;padding:18px 0 0!important;
    margin-top:24px!important;overflow:visible}
  /* стол связи и мостик на бумаге бессмысленны; часы не тикают */
  .site-footer::before,.site-footer::after,
  .cf6-desk,.cf-guide,.fc-top,.cf-r-n,.cf-r-ar{display:none!important}
  .cf-imprint{border:1px solid #000;padding:12px;break-inside:avoid}
  .cf-imprint::before,.cf-imprint::after{display:none!important}
  /* на бумаге плашка ФНС — обычная строка со ссылкой: рамка растягивалась
     во всю высоту плиты и печаталась пустым прямоугольником */
  .cf-check{border:0!important;min-height:0;padding:6px 0;align-self:flex-start}
  .cf-r-row{break-inside:avoid;border-color:#000!important}
  .cf-dots{background-image:none!important;border-bottom:1px dotted #666!important;height:0}
  .cf-finis,.cf6-head{border-color:#000!important}
  .fl-seal .seal{opacity:.75!important}
  .cf-r-set a{padding:0 12px 2px 0!important;margin-right:0!important}
  body{padding-bottom:0!important}
}

/* ============================================================
   КОЛОФОН v7 «ПУЛЬТ МАСТЕРСКОЙ»
   Компактная концевая полоса: вместо длинного каталога —
   один сильный тезис, живой статус, три канала и складной legal.
   ============================================================ */
.site-footer{
  margin-top:clamp(68px,9vw,112px);padding:clamp(38px,5vw,58px) 0 24px;
  background:
    radial-gradient(circle at 72% 0,rgba(213,168,70,.09),transparent 32%),
    linear-gradient(155deg,#272319 0%,#1E1C17 54%,#181713 100%);
}
.site-footer::after{
  content:"¶";right:clamp(-38px,-2.5vw,-16px);bottom:auto;top:-42px;
  font-size:clamp(190px,24vw,330px);opacity:.035;transform:rotate(8deg) scaleX(-1);
}
.cf7-top{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(330px,.82fr);
  gap:clamp(30px,6vw,76px);align-items:end;padding-bottom:clamp(26px,4vw,38px)}
.cf7-brand{min-width:0}
.cf7-brand .brand{display:inline-flex;color:#F0EADB;margin-bottom:clamp(22px,3vw,32px)}
.cf7-brand .brand .b-para{color:#E9C972;background:rgba(233,201,114,.07);
  border-color:rgba(205,164,85,.42);box-shadow:inset 0 1px 2px rgba(0,0,0,.5)}
.cf7-kicker{margin:0 0 9px;font-family:var(--mono);font-size:10px;line-height:1.4;
  letter-spacing:.24em;text-transform:uppercase;color:#CDA455}
.cf7-title{margin:0;color:#F0EADB;font-family:var(--serif);font-size:clamp(31px,4.6vw,52px);
  font-weight:330;line-height:1.03;letter-spacing:-.025em;text-wrap:balance}
.cf7-title em{font-weight:330;color:#E9C972}
.cf7-copy{max-width:56ch;margin:17px 0 0;color:#AFA895;font-size:16px;line-height:1.65}
.cf7-action{min-width:0;padding:20px;border:1px solid #403A2C;border-radius:3px;
  background:rgba(255,253,246,.025);box-shadow:9px 9px 0 rgba(0,0,0,.12)}
.cf7-status{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding-bottom:14px;margin-bottom:14px;border-bottom:1px solid #3A362B}
.cf7-status .cf-clock{margin:0}
.cf7-status .cf-live{margin:0;text-align:right}
.cf7-status .fcl-dot{display:none}
.cf7-cta{display:grid;grid-template-columns:1.25fr .9fr;gap:8px}
.cf7-btn{min-height:45px;display:flex;align-items:center;justify-content:center;gap:9px;
  padding:10px 14px;border-radius:2px;border:1px solid transparent;font-size:13px;
  font-weight:500;line-height:1.25;text-align:center;cursor:pointer;transition:.18s ease;
  background:none;font-family:var(--sans)}
.cf7-btn--gold{color:#201D17;background:#E4C36B;border-color:#E4C36B}
.cf7-btn--gold:hover{background:#F0D787;border-color:#F0D787;transform:translateY(-1px)}
.cf7-btn--gold span{font-family:var(--serif);font-size:18px;transition:transform .18s ease}
.cf7-btn--gold:hover span{transform:translateX(3px)}
.cf7-btn--ghost{color:#D8D1C0;border-color:#514A39}
.cf7-btn--ghost:hover{color:#F0EADB;border-color:#8F846A;background:rgba(255,255,255,.035)}
.cf7-facts{display:flex;flex-wrap:wrap;gap:7px 14px;margin:13px 0 0;color:#89816D;
  font-family:var(--mono);font-size:9px;line-height:1.5;letter-spacing:.11em;text-transform:uppercase}
.cf7-facts span{display:inline-flex;align-items:center;gap:14px}
.cf7-facts span+span::before{content:"\00b7";color:#B98A2F}

.cf7-board{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(255px,.55fr);
  border:1px solid #3A362B;border-left:0;border-right:0}
.cf7-channels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));min-width:0}
.cf7-channels>a{position:relative;min-width:0;min-height:106px;display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;gap:13px;align-items:center;padding:17px;
  border-right:1px solid #3A362B;color:#CFC8B8;transition:background .18s,color .18s}
.cf7-channels>a:hover{color:#F0EADB;background:rgba(233,201,114,.055)}
.cf7-no{align-self:start;padding-top:3px;color:#77705E;font-family:var(--mono);font-size:9px;letter-spacing:.12em}
.cf7-channels b,.cf7-guide b{display:block;font-size:13.5px;font-weight:500;line-height:1.25;color:inherit}
.cf7-channels small,.cf7-guide small{display:block;margin-top:5px;color:#8F8876;font-size:11px;line-height:1.35}
.cf7-channels i{align-self:start;font-family:var(--serif);font-size:16px;font-style:normal;color:#CDA455;
  transition:transform .2s ease}
.cf7-channels>a:hover i{transform:translate(2px,-2px)}
.cf7-route{display:flex;flex-direction:column;min-width:0;padding:13px 0 10px 18px}
.cf7-guide{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px;
  min-height:61px;color:#CFC8B8;padding:8px 10px;transition:background .18s,color .18s}
.cf7-guide:hover{color:#F0EADB;background:rgba(255,255,255,.03)}
.cf7-guide-mark{width:31px;height:31px;display:grid;place-items:center;border:1px solid #6B5A34;
  border-radius:50%;font-family:var(--serif);font-size:19px;color:#E9C972;transition:transform .35s ease}
.cf7-guide:hover .cf7-guide-mark{transform:rotate(-15deg)}
.cf7-guide>i{font-family:var(--serif);font-style:normal;color:#CDA455;transition:transform .18s}
.cf7-guide:hover>i{transform:translateX(3px)}
.cf7-quick{display:flex;flex-wrap:wrap;gap:4px 6px;margin-top:auto;padding:7px 10px 0}
.cf7-quick a{color:#9D9582;font-family:var(--mono);font-size:9.5px;line-height:1.4;
  letter-spacing:.06em;text-transform:uppercase;padding:4px 0;border-bottom:1px solid transparent}
.cf7-quick a:not(:last-child)::after{content:"/";margin-left:6px;color:#514A3A}
.cf7-quick a:hover,.cf7-quick a[aria-current="page"]{color:#E9C972;border-color:#6B5A34}

.cf7-legal{border-bottom:1px solid #3A362B;color:#AAA28F}
.cf7-legal>summary{list-style:none;display:grid;grid-template-columns:1fr auto auto;align-items:center;
  gap:18px;min-height:49px;padding:10px 2px;cursor:pointer;font-family:var(--mono);font-size:10px;
  letter-spacing:.14em;text-transform:uppercase;color:#AAA28F}
.cf7-legal>summary::-webkit-details-marker{display:none}
.cf7-legal>summary small{font-size:9px;letter-spacing:.08em;color:#716A59;text-transform:none}
.cf7-legal>summary i{width:24px;height:24px;display:grid;place-items:center;font-family:var(--serif);
  font-size:18px;font-style:normal;color:#CDA455;transition:transform .2s ease}
.cf7-legal[open]>summary i{transform:rotate(45deg)}
.cf7-legal-in{display:grid;grid-template-columns:minmax(260px,1fr) minmax(300px,1.45fr) auto;
  gap:18px 28px;align-items:start;padding:5px 2px 20px;color:#918A78;font-size:11.5px;line-height:1.65}
.cf7-legal-in p{margin:0}
.cf7-legal-in p b{font-weight:500;color:#D4CCBA}
.cf7-legal-in nav{display:flex;flex-wrap:wrap;gap:5px 16px}
.cf7-legal-in nav a{color:#BEB6A5;border-bottom:1px solid #514A3A}
.cf7-legal-in nav a:hover{color:#F0EADB;border-color:#A79F87}
.cf7-fns{white-space:nowrap;color:#E0BE64;border:1px solid #6B5524;border-radius:2px;padding:7px 10px;
  font-family:var(--mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase}
.cf7-fns:hover{color:#F0D787;border-color:#A88636;background:rgba(233,201,114,.05)}

.cf7-finis{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:16px;
  padding-top:20px;color:#807966;font-family:var(--mono);font-size:9.5px;line-height:1.6;
  letter-spacing:.1em;text-transform:uppercase}
.cf7-finis p{margin:0}
.cf7-finis p span{color:#B98A2F;margin:0 5px}
.cf7-made{font-family:var(--serif)!important;font-style:italic;letter-spacing:.02em!important;
  text-transform:none!important;color:#77705F}
.cf7-finis .fc-top{font-size:9.5px;color:#AFA795;border-color:#57503F}

@media(max-width:980px){
  .cf7-top{grid-template-columns:1fr minmax(310px,.8fr);gap:30px}
  .cf7-title{font-size:clamp(30px,4.6vw,42px)}
  .cf7-board{grid-template-columns:1fr}
  .cf7-channels>a:last-child{border-right:0}
  .cf7-route{padding:9px 0;display:grid;grid-template-columns:minmax(260px,.85fr) 1.15fr;align-items:center}
  .cf7-quick{margin:0;padding:7px 14px;border-left:1px solid #3A362B}
  .cf7-legal-in{grid-template-columns:1fr 1.3fr}.cf7-fns{justify-self:start}
  .cf7-finis{grid-template-columns:1fr auto}.cf7-made{display:none}
}
@media(max-width:760px){
  .cf7-top{grid-template-columns:1fr;gap:23px;align-items:start}
  .cf7-brand .brand{margin-bottom:22px}
  .cf7-copy{font-size:16px}
  .cf7-action{padding:16px;box-shadow:6px 6px 0 rgba(0,0,0,.1)}
  .cf7-route{grid-template-columns:1fr}.cf7-quick{border-left:0;border-top:1px solid #332F26;padding-top:10px}
  .cf7-legal-in{grid-template-columns:1fr;gap:14px}
  .cf7-legal>summary{grid-template-columns:1fr auto}.cf7-legal>summary small{display:none}
}
@media(max-width:580px){
  .site-footer{padding-top:34px}.site-footer::after{display:block;top:-22px;right:-30px;font-size:190px}
  .cf7-title{font-size:31px}.cf7-copy{max-width:34ch}
  .cf7-status{align-items:flex-start}.cf7-status .cf-live{max-width:145px;line-height:1.35}
  .cf7-cta{grid-template-columns:1fr}.cf7-btn{min-height:44px}
  .cf7-facts{gap:5px 10px}.cf7-facts span+span::before{margin-right:-4px}
  .cf7-channels{grid-template-columns:1fr 1fr}
  .cf7-channels>a{min-height:78px;padding:12px;gap:9px}
  .cf7-channels>a:nth-child(2){border-right:0}.cf7-channels>a:nth-child(3){grid-column:1/-1;
    border-right:0;border-top:1px solid #3A362B;min-height:66px}
  .cf7-channels small{font-size:12px}.cf7-route{padding:8px 0}
  .cf7-guide{padding:8px 4px}.cf7-quick{padding-left:4px;padding-right:4px}
  .cf7-finis{grid-template-columns:1fr auto;gap:10px}.cf7-finis p{max-width:30ch}
}
@media(prefers-reduced-motion:reduce){
  .cf7-btn,.cf7-btn span,.cf7-channels i,.cf7-guide-mark,.cf7-guide>i,.cf7-legal>summary i{transition:none!important}
}
@media print{
  .cf7-action,.cf7-board,.cf7-finis .fc-top{display:none!important}
  .cf7-top{display:block;padding-bottom:12px}.cf7-brand .brand{margin-bottom:10px}
  .cf7-title{font-size:26px!important}.cf7-copy{color:#000!important}
  .cf7-legal>summary{display:none}.cf7-legal-in{display:block!important;padding:8px 0}
  .cf7-legal-in nav,.cf7-fns{display:none}.cf7-finis{display:block;padding-top:10px}
}

/* ============================================================
   КОЛОФОН v8 «ОБОРОТ ФОРМУЛЯРА»
   Тот же язык, что у книги-сметы: тёплая бумага, графит,
   сургуч, формулярные линии и издательский знак ¶.
   Токены автоматически переводят его в «Переплёт ночью».
   ============================================================ */
.site-footer{
  color:var(--ink-soft);background:var(--paper-2);
  border-top:0;padding:clamp(32px,4vw,44px) 0 18px;overflow:hidden;
  box-shadow:inset 0 16px 34px -30px color-mix(in srgb,var(--ink) 38%,transparent);
}
.site-footer::before{
  height:3px;opacity:.82;
  background:linear-gradient(90deg,transparent,var(--wax) 20%,var(--wax) 80%,transparent);
}
.site-footer::after{
  content:"";inset:0;z-index:0;opacity:.32;transform:none;
  background:repeating-linear-gradient(180deg,transparent 0 39px,
    color-mix(in srgb,var(--hairline) 58%,transparent) 39px 40px);
}
.cf7-top{align-items:end;padding-bottom:clamp(20px,2.6vw,28px)}
.cf7-brand{position:relative;padding-right:96px}
.cf7-brand .brand{color:var(--ink);margin-bottom:clamp(16px,2vw,20px)}
.cf7-brand .brand .b-para{
  color:var(--wax-text,var(--wax));background:var(--sheet);border-color:var(--hairline-strong);
  box-shadow:inset 0 1px 2px color-mix(in srgb,var(--ink) 18%,transparent),
    inset 0 -1px 0 color-mix(in srgb,var(--sheet) 55%,white);
}
.cf7-kicker{color:var(--ink-faint);font-size:10px;letter-spacing:.22em}
.cf7-title{color:var(--ink);font-size:clamp(32px,3.7vw,42px);font-weight:400;text-shadow:none}
.cf7-title em{color:var(--ink);font-weight:400;text-decoration:underline;
  text-decoration-color:color-mix(in srgb,var(--wax) 62%,transparent);
  text-decoration-thickness:2px;text-underline-offset:7px}
.cf7-copy{color:var(--ink-soft);font-size:16px;margin-top:12px}
.cf7-stamp{position:absolute;right:2px;bottom:-2px;width:80px;height:80px;color:var(--wax-text,var(--wax));opacity:.74}
.cf7-stamp .seal{width:80px;height:80px;transform:rotate(-9deg);opacity:1}

.cf7-action{
  position:relative;padding:16px;background:var(--sheet);border-color:var(--hairline-strong);
  box-shadow:6px 6px 0 var(--shadow);color:var(--ink);
}
.cf7-action::before{
  content:"ПРИЁМНАЯ · ФОРМУЛЯР";display:block;margin:0 0 10px;
  color:var(--ink-faint);font-family:var(--mono);font-size:9px;letter-spacing:.22em;
}
.cf7-status{border-color:var(--hairline);padding-bottom:10px;margin-bottom:10px}
.cf-lamp,.fcl-dot{background:var(--verify);box-shadow:0 0 0 3px color-mix(in srgb,var(--verify) 16%,transparent)}
.cf-lamp.night,.fcl-dot.night{background:var(--wax);box-shadow:0 0 0 3px var(--wax-soft)}
.cf-cl-s,.cf-live{color:var(--ink-soft)}
.cf-cl-t{color:var(--ink);font-size:14px}
.cf-cl-t .cf-tz{color:var(--ink-faint)}
.cf7-btn--gold{background:var(--wax-cta,var(--wax));border-color:var(--wax-cta,var(--wax));color:#FFFEF9}
.cf7-btn--gold:hover{background:var(--wax-deep);border-color:var(--wax-deep)}
.cf7-btn--ghost{color:var(--ink);border-color:var(--hairline-strong);background:var(--paper)}
.cf7-btn--ghost:hover{color:var(--ink);border-color:var(--ink-soft);background:var(--mark)}
.cf7-facts{color:var(--ink-faint);font-size:9px;letter-spacing:.13em;margin-top:10px}
.cf7-facts span+span::before{color:var(--wax-text,var(--wax))}

.cf7-board{background:var(--sheet);border-color:var(--hairline-strong);
  box-shadow:0 5px 0 color-mix(in srgb,var(--shadow) 72%,transparent)}
.cf7-channels>a{min-height:90px;padding:13px 14px;color:var(--ink);
  border-color:var(--hairline);background:transparent}
.cf7-channels>a:hover{color:var(--ink);background:var(--mark)}
.cf7-no{color:var(--wax-text,var(--wax))}
.cf7-channels small,.cf7-guide small{color:var(--ink-soft)}
.cf7-channels i,.cf7-guide>i{color:var(--wax-text,var(--wax))}
.cf7-route{border-left:1px solid var(--hairline);padding:7px 0 6px 12px}
.cf7-guide{min-height:49px;padding:6px 8px;color:var(--ink)}
.cf7-guide:hover{color:var(--ink);background:var(--mark)}
.cf7-guide-mark{border-radius:3px;color:var(--wax-text,var(--wax));background:var(--paper);
  border-color:var(--hairline-strong);box-shadow:inset 0 1px 2px color-mix(in srgb,var(--ink) 14%,transparent)}
.cf7-quick{border-top:1px solid var(--hairline);padding:4px 8px 0}
.cf7-quick a{color:var(--ink-soft)}
.cf7-quick a:not(:last-child)::after{color:var(--hairline-strong)}
.cf7-quick a:hover,.cf7-quick a[aria-current="page"]{color:var(--wax-text,var(--wax));border-color:var(--wax)}

.cf7-legal{margin-top:10px;background:color-mix(in srgb,var(--sheet) 64%,transparent);
  border:1px solid var(--hairline);border-left:0;border-right:0;color:var(--ink-soft)}
.cf7-legal>summary{min-height:43px;color:var(--ink-soft);padding:7px 8px}
.cf7-legal>summary small{color:var(--ink-faint)}
.cf7-legal>summary i{color:var(--wax-text,var(--wax))}
.cf7-legal-in{color:var(--ink-soft);padding:7px 8px 20px}
.cf7-legal-in p b{color:var(--ink)}
.cf7-legal-in nav a{color:var(--ink);border-color:var(--hairline-strong)}
.cf7-legal-in nav a:hover{color:var(--wax-text,var(--wax));border-color:var(--wax)}
.cf7-fns{color:var(--wax-text,var(--wax));border-color:var(--wax);background:var(--sheet)}
.cf7-fns:hover{color:var(--wax-deep);border-color:var(--wax-deep);background:var(--wax-soft)}
.cf7-finis{color:var(--ink-faint);padding-top:12px}
.cf7-finis p span{color:var(--wax-text,var(--wax))}
.cf7-made{color:var(--ink-faint)}
.cf7-finis .fc-top{color:var(--ink-soft);border-color:var(--hairline-strong)}
.cf7-finis .fc-top:hover{color:var(--wax-text,var(--wax));border-color:var(--wax)}
.site-footer :focus-visible{outline-color:var(--wax)}

@media(max-width:980px){
  .cf7-route{border-left:0;border-top:1px solid var(--hairline);padding-left:0}
  .cf7-quick{border-top:0;border-left:1px solid var(--hairline)}
}
@media(max-width:760px){
  .cf7-brand{padding-right:104px}
  .cf7-route{border-top:1px solid var(--hairline)}
  .cf7-quick{border-left:0;border-top:1px solid var(--hairline)}
}
@media(max-width:580px){
  .site-footer::after{display:block}
  .cf7-brand{padding-right:0;padding-bottom:0}
  .cf7-copy{max-width:245px}
  .cf7-stamp{left:auto;right:2px;bottom:0;width:76px;height:76px}
  .cf7-stamp .seal{width:76px;height:76px}
  .cf7-action{box-shadow:5px 5px 0 var(--shadow)}
  .cf7-cta{grid-template-columns:1.2fr .9fr}
  .cf7-btn{padding-left:9px;padding-right:9px;font-size:14px}
  .cf7-channels>a,.cf7-channels>a:nth-child(3){border-color:var(--hairline)}
}
@media print{
  .site-footer{background:#fff!important;color:#000!important;border-top:2px solid #000!important}
  .site-footer::before,.site-footer::after,.cf7-stamp{display:none!important}
}
main[tabindex="-1"]:focus{outline:none}

/* ============================================================
   ПЛАВАЮЩИЕ CTA
   ============================================================ */
/* «Telegram» справа — бумажная закладка, пара к .helpfab слева (extras.css) */
.tg-pill{
  /* нижнюю кромку делит только мобильный док — её отдаёт --floor
     (extras.css), пока пилюля не переехала в .mrail */
  position:fixed;right:clamp(18px,2.5vw,34px);bottom:26px;z-index:95;
  display:inline-flex;align-items:center;gap:10px;
  background:var(--sheet);color:var(--ink);border:1px solid var(--hairline-strong);
  font-size:14.5px;font-weight:500;padding:12px 20px;border-radius:999px;min-height:46px;
  box-shadow:0 2px 0 var(--hairline),0 12px 28px rgba(34,32,27,.22);
  transition:transform .15s,border-color .15s,color .15s;
}
.tg-pill:hover{transform:translateY(-2px);border-color:var(--wax);color:var(--wax-text,var(--wax))}
.tg-pill .tp-dot{
  width:8px;height:8px;border-radius:50%;background:var(--verify);
  box-shadow:0 0 0 0 rgba(61,107,80,.4);animation:tp-live 2.8s ease-out infinite;
}
@keyframes tp-live{
  0%{box-shadow:0 0 0 0 rgba(61,107,80,.4)}
  70%,100%{box-shadow:0 0 0 7px rgba(61,107,80,0)}
}
@media(prefers-reduced-motion:reduce){.tg-pill .tp-dot{animation:none}}
@media(max-width:920px){.tg-pill{display:none}}

.mobile-cta{
  view-transition-name:mobile-dock;
  position:fixed;left:0;right:0;bottom:0;z-index:95;display:none;
  padding:10px max(12px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));
  background:color-mix(in srgb, var(--paper) 92%, transparent);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border-top:1px solid var(--hairline);gap:10px;
}
.mobile-cta .btn{flex:1;min-height:50px;font-size:15px;padding:10px 12px}
@media(max-width:920px){
  .mobile-cta{display:flex}
  body{padding-bottom:84px}
  .site-footer{padding-bottom:100px}
}

/* нижний док-навигация (вариант .mobile-cta, который монтирует app.js):
   Главная · Цены · [Рассчитать — сургучная печать] · Кабинет (бейдж) · Связь.
   Печать выступает над кромкой панели, как сургуч над краем конверта. */
.mnav{padding:5px max(8px,env(safe-area-inset-right)) max(7px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}
@media(max-width:920px){.mnav{display:grid;grid-template-columns:repeat(5,1fr);gap:2px}}
.mnav .mn-i{
  position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
  gap:3px;padding:6px 2px 6px;min-height:54px;border-radius:var(--r);border:0;background:none;
  color:var(--ink-soft);font-size:10px;letter-spacing:.04em;font-weight:500;text-decoration:none;
  cursor:pointer;transition:color .15s,background .15s;-webkit-tap-highlight-color:transparent;
}
.mnav .mn-i .mn-ic{font-family:var(--serif);font-size:17px;line-height:1;display:inline-flex;align-items:center;justify-content:center;height:20px}
.mnav .mn-i:active{background:var(--mark)}
.mnav .mn-i[aria-current="page"]{color:var(--wax-text,var(--wax))}
.mnav .mn-i[aria-current="page"]::after{
  content:"";position:absolute;bottom:2px;left:50%;transform:translateX(-50%);
  width:14px;height:2px;border-radius:2px;background:var(--wax);
}
/* «Рассчитать» — сургучная печать, приподнятая над панелью */
.mnav .mn-calc .mn-ic{
  width:46px;height:46px;margin-top:-22px;border-radius:50%;
  background:var(--wax);color:#FFFEF9;font-size:20px;
  border:3px solid var(--paper);
  box-shadow:0 2px 0 var(--wax-deep,#6E2312),0 10px 22px -8px rgba(178,59,34,.55);
  transition:transform .15s,box-shadow .15s;
}
.mnav .mn-calc:active{background:none}
.mnav .mn-calc:active .mn-ic{transform:translateY(2px);box-shadow:0 0 0 var(--wax-deep,#6E2312),inset 0 2px 4px rgba(0,0,0,.25)}
.mnav .mn-calc[aria-current="page"]::after{display:none}
.mnav .mn-badge{
  position:absolute;top:2px;right:calc(50% - 24px);min-width:16px;height:16px;border-radius:999px;
  background:var(--wax-cta,var(--wax));color:#FFFEF9;font-family:var(--mono);font-size:9.5px;font-weight:600;
  display:inline-flex;align-items:center;justify-content:center;padding:0 4px;
  border:2px solid var(--paper);
}
.mnav .mn-badge[hidden]{display:none}
.mnav .mn-badge.calm{background:var(--stamp,#3A4E7A)}
@media(max-width:390px){
  .mnav{padding-left:max(4px,env(safe-area-inset-left));padding-right:max(4px,env(safe-area-inset-right));gap:0}
  .mnav .mn-i{font-size:11px;letter-spacing:0;padding-left:1px;padding-right:1px}
  .mnav .mn-calc .mn-ic{width:43px;height:43px}
}

/* Тосты и .onote заменены слоем «Пометки на полях» — extras.css, конец файла */

/* ============================================================
   ЛИСТ «СПРОСИТЬ МАСТЕРА» — язык «Оттиск-15»

   Было прошлое поколение: коробки-карточки со своими рамками
   внутри карточки-листа, тяжёлая тень 0 -16px 50px, четыре разных
   радиуса (3/6/8/10px) и стиль, который app.js вставлял тегом
   <style> на каждое открытие.

   Стало по мерке эталона (style-lab/full/style.css §.overlay,
   .overlay__header, .overlay--sheet, .support-card,
   .sheet-action-list): плоская бумага с волосяной рамкой,
   радиусы листа 4px и органов управления 7px, надзаголовок
   набором, сургуч — ровно на одном действии в блоке,
   состояние — словами, не цветом.
   ============================================================ */
.contact-sheet{
  position:fixed;
  inset:0;
  z-index:240;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  visibility:hidden;
  opacity:0;
  /* visibility переключаем СТУПЕНЬКОЙ, а не переходом. Было
     `visibility .24s`: пока переход не начался, вычисленное значение
     оставалось hidden, и focus() по крестику в Salon.contact уходил
     в пустоту — лист открывался без фокуса. Показ — мгновенно (0s),
     скрытие — с задержкой на время затухания, чтобы лист не исчезал
     рывком до конца анимации. */
  transition:opacity .24s,visibility 0s linear .24s;
}
.contact-sheet.open{
  visibility:visible;
  opacity:1;
  transition:opacity .24s,visibility 0s;
}
.contact-sheet .cs-backdrop{
  position:absolute;
  inset:0;
  background:rgba(20,18,14,.5);
  -webkit-backdrop-filter:blur(6px);
  backdrop-filter:blur(6px);
}
:root[data-theme="dark"] .contact-sheet .cs-backdrop{background:rgba(0,0,0,.62)}
/* Лист. Тень — только чтобы отделить бумагу от шторки; рисует
   границу волосяная рамка, как во всех листах эталона. */
.contact-sheet .cs-card{
  position:relative;
  width:min(100%,520px);
  max-height:88svh;
  overflow:auto;
  padding:26px 26px 22px;
  background:var(--paper);
  border:1px solid var(--hairline);
  /* 14px — та же мерка, что у мобильной шторки в mobile.css: если
     этот запас когда-нибудь окажется главным, скругление не прыгнет. */
  border-radius:14px 14px 0 0;
  box-shadow:0 -18px 46px rgba(28,25,20,.14);
  transform:translateY(14px);
  transition:transform .28s cubic-bezier(.22,1,.36,1);
}
:root[data-theme="dark"] .contact-sheet .cs-card{box-shadow:0 -18px 46px rgba(0,0,0,.5)}
.contact-sheet.open .cs-card{transform:none}
@media(min-width:560px){
  .contact-sheet{align-items:center}
  /* Радиус листа эталона — 4px. Снизу лист больше не «приклеен»
     к кромке экрана, поэтому скругление одинаковое со всех сторон. */
  .contact-sheet .cs-card{border-radius:4px;box-shadow:0 24px 64px rgba(28,25,20,.18)}
  :root[data-theme="dark"] .contact-sheet .cs-card{box-shadow:0 24px 64px rgba(0,0,0,.55)}
}

/* ---- Шапка листа: мерка .overlay__header ---- */
.contact-sheet .cs-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  padding-bottom:18px;
  border-bottom:1px solid var(--hairline);
}
.contact-sheet .cs-kicker{
  display:block;
  margin-bottom:6px;
  color:var(--ink-faint);
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.2em;
  text-transform:uppercase;
}
.contact-sheet .cs-title{
  margin:0;
  color:var(--ink);
  font-family:var(--serif);
  font-size:28px;
  font-weight:400;
  line-height:1.05;
  letter-spacing:-.02em;
}
/* Крестик закрытия оверлея: две полоски внутри пустого <i>.
   Меню и поиск несут ОДНУ разметку (polish15-chrome.js:89 и :123), но полоски
   были заданы только для `.overlay--search .search-close i`. Меню оставалось
   кругом 50×50 с пустым <i> 0×0 — «белое ничто» вместо крестика на index,
   services, knowledge, dashboard и tariffs. Правило поиска лежит позже по
   каскаду, с теми же значениями, поэтому его вид не меняется. */
.overlay .icon-button--close > i,
.overlay .icon-button--close > i::after,
.overlay__close > i,
.overlay__close > i::after{
  display:block;
  width:14px;
  height:1.5px;
  border-radius:2px;
  background:currentColor;
  content:"";
}
.overlay .icon-button--close > i,
.overlay__close > i{transform:rotate(45deg)}
.overlay .icon-button--close > i::after,
.overlay__close > i::after{transform:rotate(90deg)}

/* Крестик по мерке .overlay .icon-button--close. */
.contact-sheet .cs-x{
  display:grid;
  flex:0 0 46px;
  width:46px;
  height:46px;
  min-height:46px;
  place-items:center;
  padding:0;
  color:var(--ink-soft);
  background:var(--sheet);
  border:1px solid var(--hairline-strong);
  border-radius:50%;
  font:400 24px/1 var(--serif);
  cursor:pointer;
  transition:color .17s ease,border-color .17s ease,transform .17s cubic-bezier(.22,1,.36,1);
}
.contact-sheet .cs-x:hover{color:var(--wax-text,var(--wax));border-color:var(--wax);transform:rotate(8deg)}

.contact-sheet .cs-body{display:grid;gap:16px;padding-top:20px}
.contact-sheet .cs-lead{
  margin:0;
  max-width:44ch;
  color:var(--ink-soft);
  font-size:16px;
  line-height:1.5;
}

/* ---- Состояние мастерской ----
   Смысл несёт слово в .cs-live-tag; цвет только поддерживает его,
   поэтому правило §3 «не цветом единственным» соблюдено. */
.contact-sheet .cs-live{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:38px;
  margin:0;
  padding:7px 11px;
  border:1px solid var(--hairline);
  border-radius:7px;
  color:var(--ink-soft);
  font-size:12.5px;
  line-height:1.35;
}
.contact-sheet .cs-live-tag{
  flex:0 0 auto;
  color:var(--verify);
  font-family:var(--mono);
  font-size:10px;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.contact-sheet .cs-live.night .cs-live-tag{color:var(--foil)}

/* ---- Список действий: мерка .sheet-action-list ----
   Строки разделены волосяной линией, а не обведены каждая в рамку. */
.contact-sheet .cs-routes{
  display:grid;
  border-top:1px solid var(--hairline);
}
.contact-sheet .cs-route{
  display:grid;
  min-height:56px;
  align-items:center;
  gap:12px;
  grid-template-columns:22px minmax(0,1fr) 18px;
  padding:12px 10px;
  border-bottom:1px solid var(--hairline);
  border-radius:7px;
  color:var(--ink);
  text-decoration:none;
  transition:background-color .17s ease,color .17s ease;
}
.contact-sheet .cs-route:hover{background:var(--mark)}
/* Сургуч — на одном действии в блоке, как велит язык эталона. */
.contact-sheet .cs-route--main{
  color:var(--wax-text,var(--wax));
  background:var(--wax-soft);
}
.contact-sheet .cs-route--main .cs-route-copy small{color:var(--ink-soft)}
.contact-sheet .cs-route--main:hover{background:color-mix(in srgb,var(--wax) 12%,transparent)}
.contact-sheet .cs-num{
  color:var(--ink-faint);
  font-family:var(--mono);
  font-size:10px;
  letter-spacing:.08em;
}
.contact-sheet .cs-route--main .cs-num{color:var(--wax-text,var(--wax))}
.contact-sheet .cs-route-copy{display:grid;min-width:0;gap:2px}
.contact-sheet .cs-route-copy b{font-size:16px;font-weight:600}
.contact-sheet .cs-route-copy small{color:var(--ink-soft);font-size:12px;line-height:1.3}
.contact-sheet .cs-arrow{
  color:currentColor;
  font-family:var(--serif);
  font-size:18px;
  line-height:1;
  text-align:right;
}

/* ---- Другой путь ---- */
.contact-sheet .cs-alt{display:grid;gap:8px}
.contact-sheet .cs-alt-label{
  color:var(--ink-faint);
  font-family:var(--mono);
  font-size:10px;
  letter-spacing:.14em;
  text-transform:uppercase;
}
.contact-sheet .cs-alt-grid{
  display:grid;
  gap:7px;
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.contact-sheet .cs-alt-grid a{
  display:grid;
  min-height:44px;
  place-items:center;
  padding:7px 4px;
  color:var(--ink-soft);
  background:var(--sheet);
  border:1px solid var(--hairline);
  border-radius:7px;
  font-size:12px;
  text-align:center;
  text-decoration:none;
  transition:color .17s ease,border-color .17s ease;
}
.contact-sheet .cs-alt-grid a:hover{color:var(--wax-text,var(--wax));border-color:var(--wax)}

.contact-sheet .cs-foot{
  margin:0;
  padding-top:14px;
  border-top:1px solid var(--hairline);
  color:var(--ink-faint);
  font-size:12px;
  line-height:1.4;
}
.contact-sheet .cs-foot b{color:var(--ink-soft);font-weight:600}

/* Ширину, поля и верхний радиус мобильной шторки задаёт mobile.css
   (@media max-width:920px, там же !important) — он грузится последним
   и остаётся единственным хозяином её геометрии. Здесь только то,
   чего он не трогает. */
@media(max-width:559px){
  .contact-sheet .cs-title{font-size:26px}
  .contact-sheet .cs-alt-grid{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){
  /* Без затухания задержка на visibility не нужна: лист должен
     пропадать сразу, а не висеть прозрачным ещё 240мс. */
  .contact-sheet,
  .contact-sheet.open{transition:none}
  .contact-sheet .cs-card{transform:none;transition:none}
  .contact-sheet .cs-x:hover{transform:none}
}

/* ---------- Reduced motion ---------- */
@media(prefers-reduced-motion:reduce){
  .toc,.toc .toc-head,.toc .toc-primary>*,.toc .toc-side>*{transition:none!important;opacity:1;transform:none}
  .theme-toggle .tt-svg,.theme-toggle .tt-core,.theme-toggle .tt-hole,.theme-toggle .tt-rays{transition:none!important}
  ::view-transition-old(root),::view-transition-new(root){animation:none!important}
}

/* ---------- Печать ---------- */
@media print{
  /* .toast-stack не существует с 21.07.2026 — вместо него рельсы «Пометок
     на полях». Их обязательно гасить: .tg-pill, куки-плашка и закладка
     помощи теперь ДЕТИ рельсов, и без этой строки они печатались бы. */
  .site-header,.toc,.mobile-cta,.contact-sheet,.skip-link,
  .mrail,.lrail,.mledger{display:none!important}
  .site-footer{background:none!important;color:#000}
  .site-footer *{color:#000!important}
  body{padding-bottom:0!important}
}


/* ============ «СПОКОЙНЫЙ РЕЖИМ» (тумблер в шапке) ============
   Ручной аналог prefers-reduced-motion, осознанный выбор человека:
   глушит движение всего сайта, слегка поднимает контраст текста и
   линеек; главную-«Пресс» press.js раскладывает потоком. */
.calm-toggle{
  display:inline-grid;place-items:center;width:38px;height:38px;
  border:1px solid var(--hairline-strong);border-radius:50%;
  background:none;color:var(--ink-soft);cursor:pointer;
  transition:color .15s ease,border-color .15s ease;
}
.calm-toggle:hover{color:var(--ink);border-color:var(--ink)}
.calm-toggle[aria-pressed="true"]{color:var(--wax-text,var(--wax));border-color:var(--wax)}
html[data-calm] *,html[data-calm] *::before,html[data-calm] *::after{
  animation-duration:.001ms!important;animation-iteration-count:1!important;
  transition-duration:.001ms!important;
}
html[data-calm]{scroll-behavior:auto!important}
html[data-calm]{
  --ink-soft:#57523F;--ink-faint:#6E6754;
  --hairline:#C9C0AC;--hairline-strong:#A99D80;
}
html[data-calm][data-theme="dark"]{
  --ink-soft:#C8C2B2;--ink-faint:#A39C8A;
  --hairline:#4A453B;--hairline-strong:#645E50;
}
html[data-calm] .cf-cn{animation:none!important;opacity:1!important}

/* ---------- Микрожесты: чернила, набор, редакторская пометка ---------- */
.btn-wax,.mn-calc,[data-motion-press]{position:relative;overflow:hidden;isolation:isolate}
.motion-ink-drop{
  position:absolute;z-index:3;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;
  pointer-events:none;background:color-mix(in srgb,var(--sheen,#fff) 42%,transparent);
  transform:scale(0);opacity:.72;animation:motion-ink-drop 480ms var(--ease-ink) forwards;
}
@keyframes motion-ink-drop{70%{opacity:.16}to{transform:scale(13);opacity:0}}

.motion-loader{display:inline-flex;align-items:center;gap:4px;min-width:24px;height:1em}
.motion-loader i{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.26;animation:motion-typeset 960ms steps(2,end) infinite}
.motion-loader i:nth-child(2){animation-delay:160ms}.motion-loader i:nth-child(3){animation-delay:320ms}
@keyframes motion-typeset{0%,70%,100%{opacity:.22;transform:translateY(0)}35%{opacity:1;transform:translateY(-2px)}}
.btn.is-loading{cursor:wait}

input.motion-field-error,textarea.motion-field-error,select.motion-field-error,
input.invalid,textarea.invalid,select.invalid{
  border-color:var(--wax)!important;
  box-shadow:inset 3px 0 0 var(--wax),0 0 0 1px color-mix(in srgb,var(--wax) 16%,transparent)!important;
}
html[data-motion]:not([data-motion="off"]) .motion-field-kick,
html[data-motion]:not([data-motion="off"]) input.invalid,
html[data-motion]:not([data-motion="off"]) textarea.invalid{
  animation:motion-proofmark 170ms var(--ease-ink) both;
}
.motion-payment-note{animation:motion-proofmark 170ms var(--ease-ink) both}
@keyframes motion-proofmark{0%,100%{transform:none}35%{transform:translateX(-3px)}68%{transform:translateX(2px)}}
.motion-field-ok{animation:motion-field-ok 420ms var(--ease-paper)}
@keyframes motion-field-ok{0%{box-shadow:inset 0 0 0 var(--verify)}45%{box-shadow:inset 3px 0 0 var(--verify)}100%{box-shadow:inset 0 0 0 var(--verify)}}

/* Обычный текст не «вылетает»: лист только мягко ложится. */
html.has-js[data-motion] .reveal{transform:translateY(7px);transition:opacity var(--motion-sheet) ease,transform var(--motion-sheet) var(--ease-paper)}
html.has-js[data-motion] .reveal.in{transform:none}
html[data-motion="off"] .reveal,html[data-motion="off"] .rule.draw,
html[data-motion="off"] .seal.press,html[data-motion="off"] .paysteps{opacity:1!important;transform:none!important}

@media(hover:hover) and (pointer:fine){
  .btn:not(:disabled):active{transform:translateY(1px) scale(.99)}
}
@media(max-width:920px),(hover:none) and (pointer:coarse){
  /* На телефоне нет фонового «театра»: движение только в ответ на tap. */
  .pr-light,.b-sway,.cf-cn,.tg-pill .tp-dot,.plus-card .pc-seal{animation:none!important}
  .btn:not(:disabled):active,.mn-i:active{transform:translateY(1px) scale(.99);transition-duration:var(--motion-tap)}
}
html[data-motion="lite"] .pr-light,html[data-motion="lite"] .b-sway,
html[data-motion="lite"] .cf-cn,html[data-motion="lite"] .tg-pill .tp-dot{animation:none!important}
html[data-motion="off"] .motion-ink-drop{display:none!important}
html[data-motion="off"] .motion-loader i{animation:none!important;opacity:.65!important;transform:none!important}
@media(max-width:640px){
  /* на телефоне шапка тесная: тумблер живёт в путеводителе */
  .site-header .calm-toggle{display:none}
}

/* ============================================================
   MOBILE v1 «КАРМАННЫЙ ФОРМУЛЯР»
   Телефон — основной продукт: крупные цели, короткие листы,
   контекстный док и один ритм на маркетинге, расчёте и документах.
   ============================================================ */
:root{
  --mobile-gutter:clamp(16px,4.7vw,20px);
  --tap:48px;
  --dock-floor:calc(70px + env(safe-area-inset-bottom));
}
@media(max-width:920px){
  html{scroll-padding-top:72px;scroll-padding-bottom:var(--dock-floor)}
  body{padding-bottom:var(--dock-floor)}
  .wrap{padding-left:var(--mobile-gutter);padding-right:var(--mobile-gutter)}
  section[id],main[id],[id].chapter{scroll-margin-top:72px}
  input,textarea,select,.sdlg input,.sdlg textarea,.nf-form input,.nf-form textarea{font-size:16px!important}
  button,a,input,textarea,select{-webkit-tap-highlight-color:rgba(178,59,34,.12)}
  .btn{min-height:50px;padding-left:18px;padding-right:18px;white-space:normal;text-align:center}
  .chapter{padding-top:52px}
  .chapter .ch-rule{margin-bottom:24px;gap:10px}
  .chapter .ch-no{font-size:11px;letter-spacing:.12em;white-space:normal}
  .h-display{font-size:clamp(31px,9vw,38px);line-height:1.04}
  h2{font-size:clamp(26px,7vw,31px)}
  .lead{font-size:18px;line-height:1.58}

  /* шапка на телефоне скрыта целиком — работает .mobile-appbar */

  /* док: фактический safe-area участвует и в резерве страницы */
  .mobile-cta{padding:6px max(7px,env(safe-area-inset-right)) max(7px,env(safe-area-inset-bottom)) max(7px,env(safe-area-inset-left));
    background:color-mix(in srgb,var(--paper) 96%,transparent);box-shadow:0 -10px 30px -24px rgba(34,32,27,.55);
    transition:transform .2s ease,background-color .2s ease}
  html.keyboard-open .mobile-cta{transform:translateY(110%)}
  .mnav{min-height:var(--dock-floor)}
  .mnav .mn-i{min-height:56px;font-size:11px;gap:4px}
  .mnav .mn-i .mn-ic{height:21px}
  .mnav .mn-calc .mn-ic{width:48px;height:48px;margin-top:-23px}
  .site-footer{padding-bottom:calc(var(--dock-floor) + 14px)}

  /* путеводитель: один короткий поток, полный индекс остаётся свёрнутым */
  .toc::before{background:repeating-linear-gradient(0deg,transparent 0 35px,color-mix(in srgb,var(--hairline) 35%,transparent) 36px)}
  .toc-inner{padding:0 var(--mobile-gutter) calc(var(--dock-floor) + 20px)}
  .toc-head{position:sticky;top:0;z-index:4;margin:0 calc(var(--mobile-gutter) * -1) 12px;
    padding:calc(11px + env(safe-area-inset-top)) var(--mobile-gutter) 10px;align-items:center;
    background:color-mix(in srgb,var(--paper) 96%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--hairline)}
  .toc-kicker{font-size:11px;margin-bottom:4px}.toc-title{font-size:26px}.toc-head p{display:none}
  .toc-close{width:44px;height:44px;flex-basis:44px}
  .toc-search{margin-bottom:10px}.toc-search input{height:50px;padding-left:44px;padding-right:16px;font-size:16px}.toc-search kbd{display:none}.tcs-mark{left:15px}
  .toc-choices{grid-template-columns:1fr;gap:6px;margin-bottom:12px}
  .toc-choice{min-height:64px;grid-template-columns:24px minmax(0,1fr) 18px;gap:9px;padding:9px 11px}
  .tch-no{font-size:11px}.tch-copy{gap:2px}.tch-copy b{font-size:16px}.tch-copy small{font-size:12px}.tch-go{font-size:16px}
  .toc-route{margin:0 0 10px;padding:10px 4px 8px}.tr-head{padding:0 4px;margin-bottom:5px}.tr-head>a{font-size:12px}
  .tr-steps{grid-template-columns:1fr;gap:0}.tr-arr{display:none}.tr-step{min-height:46px;padding:5px 4px}.tr-step i{width:23px;height:23px;flex-basis:23px}
  .tr-step b{font-size:14px}.tr-step small{font-size:12px}
  .toc-directory{margin-bottom:10px}.toc-directory>summary{min-height:54px;padding:8px 11px}.toc-directory>summary b{font-size:16px}.toc-directory>summary small{font-size:12px}
  .toc-grid{grid-template-columns:1fr;gap:20px;padding:14px 12px}.toc-primary .toc-grp{margin-bottom:10px}
  .toc-primary .toc-grp a.dotrow{min-height:44px;padding:10px 4px;font-size:16px}.toc-primary .dr-val{display:none}
  .toc-docs a{min-height:44px;display:flex;align-items:center}
  .toc-footbar{padding:0 4px}.toc-footbar button{display:grid;gap:1px;text-align:left;min-height:44px}.toc-footbar>span{display:none}

  /* Лист связи: на телефоне это шторка от нижней кромки, поэтому
     хватка-полоска сверху. Остальные мерки — в основном блоке
     .contact-sheet выше по файлу; правила прошлого поколения
     (.cs-opt / .cs-o-txt / .cs-more*) удалены вместе с разметкой,
     которая их использовала. */
  .contact-sheet .cs-card{max-height:min(88svh,720px);padding-top:26px}
  .contact-sheet .cs-card::before{content:"";position:absolute;top:8px;left:50%;width:42px;height:4px;border-radius:4px;background:var(--hairline-strong);transform:translateX(-50%)}

  /* контентные страницы читаются как короткие листы */
  .doc-wrap{padding-top:88px;padding-bottom:48px}
  .doc h1{font-size:clamp(30px,8.5vw,36px)}
  .doc h2{font-size:26px;margin-top:30px}
  .doc p,.doc li{line-height:1.62}
  .doc table{margin-left:calc(var(--mobile-gutter) * -1);width:calc(100% + var(--mobile-gutter) * 2);padding:0 var(--mobile-gutter);scroll-padding-left:var(--mobile-gutter)}
  .doc .btn{width:100%}

  /* цены: фильтр под рукой, карточка — краткий паспорт, не статья */
  main.tariffs .tar-hero{padding-top:92px}
  main.tariffs .tar-hero .caps{margin-bottom:10px}
  main.tariffs .tar-hero .lead{font-size:18px}
  main.tariffs .tar-hero>.petit{font-size:14px!important;line-height:1.55}
  main.tariffs .tar-strip{display:grid;gap:6px;margin-top:17px;font-size:12px}
  main.tariffs .tar-strip .sep{display:none}
  main.tariffs .cc-filters{position:sticky;top:58px;z-index:24;display:flex;flex-wrap:nowrap;overflow-x:auto;
    gap:7px;margin:0 calc(var(--mobile-gutter) * -1) 14px;padding:9px var(--mobile-gutter);
    background:var(--paper);border-bottom:1px solid var(--hairline);scrollbar-width:none;
    transition:top .35s cubic-bezier(.22,1,.36,1)}
  main.tariffs .cc-filters::-webkit-scrollbar{display:none}
  main.tariffs .cc-filters button{flex:0 0 auto;min-height:44px;padding:9px 13px}
  main.tariffs .cc-grid{gap:10px}
  main.tariffs .cc{padding:22px 15px 14px;min-height:0}
  main.tariffs .cc-head{margin-bottom:6px}
  main.tariffs .cc-title{font-size:18px;margin-bottom:5px}
  main.tariffs .cc-desc{font-size:16px;line-height:1.45;margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  main.tariffs .cc-more{min-height:42px;margin:0 0 5px;align-items:center}
  main.tariffs .cc-price{margin-bottom:4px}
  main.tariffs .cc-price .cc-val{font-size:21px}
  main.tariffs .cc-range{display:none}
  main.tariffs .cc-cta{min-height:44px;margin-top:4px;padding:10px 2px}
  main.tariffs .dossier-stack{margin-top:22px}
  main.tariffs .tier,main.tariffs .svc-card,main.tariffs .pay-plate{padding:16px}
  main.tariffs .svc-card p{font-size:16px;line-height:1.45}
  main.tariffs .eq{gap:8px}
  main.tariffs .eq-t{padding:12px}
  main.tariffs .nf-form input,main.tariffs .nf-form textarea{min-height:48px}

  /* конфигуратор: выбор категории, три действия в зоне большого пальца */
  main .chapter.conf-chapter{padding-top:86px}
  .conf-chapter .split{grid-template-columns:minmax(0,1fr)}
  .conf-chapter .split,.conf-chapter .conf-steps{min-width:0}
  .conf-head{margin-bottom:18px}
  .conf-head h1{font-size:31px}
  .wprog{position:sticky;top:58px;z-index:18;margin:0 calc(var(--mobile-gutter) * -1) 18px;padding:10px var(--mobile-gutter);
    background:color-mix(in srgb,var(--paper) 96%,transparent);backdrop-filter:blur(10px)}
  .conf-type-tabs{display:flex;gap:7px;overflow-x:auto;margin:0 calc(var(--mobile-gutter) * -1) 14px;padding:0 var(--mobile-gutter) 6px;scrollbar-width:none}
  .conf-type-tabs::-webkit-scrollbar{display:none}
  .conf-type-tabs button{flex:0 0 auto;min-height:44px;padding:8px 12px;border:1px solid var(--hairline-strong);border-radius:999px;background:var(--sheet);font-size:14px;color:var(--ink-soft)}
  .conf-type-tabs button.on{color:var(--ink);border-color:var(--wax);background:var(--wax-soft)}
  #typeGroup.has-mobile-tabs .opt-group{display:none}
  #typeGroup.has-mobile-tabs .opt-group.mobile-active{display:block}
  .optrow{min-height:50px;padding-top:11px;padding-bottom:11px}
  .seg-term button,.ct-chip{min-height:44px}
  .conf-mcta{gap:7px}
  .conf-mcta .mq-panel{max-height:min(48svh,420px);overscroll-behavior:contain;border-radius:6px;padding:12px 14px}
  .conf-mcta .mq-bar{display:grid;grid-template-columns:48px minmax(0,1fr) minmax(92px,.72fr);gap:7px}
  .conf-mcta .mq-back[hidden] + .mq-total{grid-column:1 / 3}
  .mq-back{width:48px;min-height:50px;border:1px solid var(--hairline-strong);border-radius:3px;background:var(--sheet);font:20px/1 var(--serif)}
  .mq-total{min-width:0;white-space:normal;line-height:1.25;padding:6px 8px}
  .mq-more{display:block;font-size:12px}
  #mNext{min-width:0;padding:8px 10px}

  /* Мобильный колофон — тихая выходная полоса. Связь и заявка уже живут
     в нижнем доке и листе мастера, поэтому здесь не повторяем воронку. */
  .site-footer{
    margin-top:54px;padding:24px 0 calc(var(--dock-floor) + 12px);
    box-shadow:none;
  }
  .site-footer::before{height:1px;opacity:.42}
  .site-footer::after{display:none}
  .site-footer .cf7-board{display:none}
  .site-footer .cf7-top{display:block;padding-bottom:12px}
  .site-footer .cf7-brand{padding:0}
  .site-footer .cf7-brand .brand{margin:0}
  .site-footer .cf7-kicker{margin:9px 0 0;font-size:11px;letter-spacing:.18em}
  .site-footer .cf7-title,.site-footer .cf7-copy,.site-footer .cf7-stamp,
  .site-footer .cf7-action{display:none}
  .site-footer .cf7-legal{margin-top:0;background:transparent}
  .site-footer .cf7-legal>summary{min-height:46px;padding:7px 0}
  .site-footer .cf7-legal-in{padding-left:0;padding-right:0}
  .site-footer .cf7-finis{padding-top:12px}
}

@media(max-width:420px){
  .mnav .mn-i{font-size:11px;letter-spacing:0}
  .conf-mcta .mq-bar{grid-template-columns:46px minmax(0,1fr) minmax(86px,.72fr)}
}

@media(max-height:700px) and (max-width:920px){
  .contact-sheet .cs-card{max-height:94svh}
  .cs-lead{margin-bottom:9px}
  .cs-opt{min-height:58px}
}

@media(hover:none) and (pointer:coarse){
  .site-header,.mobile-cta,.toc-head,main.tariffs .cc-filters,.wprog{backdrop-filter:none;-webkit-backdrop-filter:none}
  body::before{position:absolute}
}

/* ============================================================
   PRODUCTION CHROME · ФИРМЕННАЯ ГЕОМЕТРИЯ
   Здесь остался только спокойный пятисекционный mobile dock.
   Шапка целиком (знак, навигация, пульт, адаптация) переехала
   в блок «Общая шапка финального концепта» в конце файла —
   он повторяет эталон style-lab/full. Прежние правила шапки
   удалены: они не переопределялись новыми, а спорили с ними.
   ============================================================ */

/* Знак мастерской в спокойном колофоне. */
.cf7-brand .brand .b-mark{
  width:40px;
  height:40px;
  flex-basis:40px;
}
.cf7-brand .brand .b-lockup strong{color:var(--ink)}
.cf7-brand .brand .b-lockup small{color:var(--ink-faint)}

@media(max-width:920px){
  :root{
    --chrome-header-h:calc(58px + env(safe-area-inset-top));
    --chrome-dock-h:calc(70px + env(safe-area-inset-bottom));
  }
  /* Настольный колонтитул на телефоне не показывается вовсе:
     его место занимает .mobile-appbar (см. конец файла). */
  .mobile-cta.mnav{
    min-height:var(--chrome-dock-h);
    grid-template-columns:repeat(5,minmax(0,1fr));
    align-items:stretch;
    gap:2px;
    padding:6px max(8px,env(safe-area-inset-right))
      max(5px,env(safe-area-inset-bottom))
      max(8px,env(safe-area-inset-left));
    background:color-mix(in srgb,var(--paper) 96%,transparent);
    border-top:1px solid color-mix(in srgb,var(--ink) 14%,transparent);
    box-shadow:0 -12px 34px -26px color-mix(in srgb,var(--ink) 52%,transparent);
    -webkit-backdrop-filter:blur(18px) saturate(1.1);
    backdrop-filter:blur(18px) saturate(1.1);
  }
  :root[data-theme="dark"] .mobile-cta.mnav{
    background:color-mix(in srgb,var(--paper) 97%,transparent);
    border-top-color:color-mix(in srgb,var(--ink) 18%,transparent);
    box-shadow:0 -12px 36px -25px rgba(0,0,0,.78);
  }
  .mnav .mn-i{
    min-width:0;
    min-height:54px;
    justify-content:center;
    gap:4px;
    padding:5px 2px 4px;
    border-radius:4px;
    color:var(--ink-soft);
    font-size:11px;
    font-weight:520;
    letter-spacing:0;
  }
  .mnav .mn-i::before{
    content:"";
    position:absolute;
    top:-7px;
    left:50%;
    width:24px;
    height:2px;
    border-radius:2px;
    background:var(--wax);
    opacity:0;
    transform:translateX(-50%);
  }
  .mnav .mn-i[aria-current="page"]{color:var(--ink)}
  .mnav .mn-i[aria-current="page"]::before{opacity:1}
  .mnav .mn-i[aria-current="page"]::after{display:none}
  .mnav .mn-i .mn-ic{
    width:22px;
    height:22px;
    flex:0 0 22px;
    font-size:16px;
    line-height:1;
  }
  .mnav .mn-i .mn-ic svg{width:18px;height:18px}
  .mnav .mn-l{
    display:block;
    overflow:hidden;
    width:100%;
    text-align:center;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .mnav .mn-calc{
    z-index:1;
    color:var(--wax-text,var(--wax));
  }
  .mnav .mn-calc .mn-ic{
    width:48px;
    height:48px;
    flex-basis:48px;
    margin-top:-20px;
    color:#FFFEF9;
    background:var(--wax);
    border:2px solid var(--paper);
    border-radius:50%;
    box-shadow:0 8px 22px color-mix(in srgb,var(--wax-deep) 30%,transparent),
      inset 0 0 0 3px rgba(255,255,255,.08);
  }
  .mnav .mn-calc .mn-ic svg{width:20px;height:20px}
  .mnav .mn-calc:active .mn-ic{
    transform:translateY(1px) scale(.97);
    box-shadow:0 5px 14px color-mix(in srgb,var(--wax-deep) 28%,transparent),
      inset 0 0 0 3px rgba(255,255,255,.08);
  }
  .mnav .mn-calc[aria-current="page"]::before{display:none}
  .mnav .mn-badge{
    top:1px;
    right:calc(50% - 24px);
    border-color:var(--paper);
  }
}

@media(prefers-reduced-motion:reduce){
  .site-header .primary-nav a::after,
  .mnav .mn-i,
  .mnav .mn-i::before,
  .mnav .mn-calc .mn-ic{
    transition:none!important;
  }
  .site-header .site-header__actions .button:hover{transform:none}
}

/* ============================================================
   PRODUCTION FOOTER · РЕДАКЦИОННАЯ ПОЛОСА
   Визуальная модель style-lab/full: тёмное поле, ясная сетка,
   короткие рубрики. Старые декоративные слои footer намеренно
   обнулены; рабочие ссылки и действия остаются в разметке.
   ============================================================ */
.site-footer{
  position:relative;
  overflow:hidden;
  margin-top:clamp(64px,8vw,104px);
  padding:0;
  color:#D4CCBD;
  background:#1D1C18;
  border-top:0;
  box-shadow:none;
  font-size:13px;
}
:root[data-theme="dark"] .site-footer{color:#D4CCBD;background:#151512}
.site-footer::before,
.site-footer::after{
  display:none;
  content:none;
}
.site-footer>.pf-footer{
  position:relative;
  z-index:1;
}
.pf-footer__main{
  display:grid;
  grid-template-columns:minmax(280px,1.6fr) repeat(3,minmax(128px,1fr));
  gap:clamp(30px,4.5vw,66px);
  padding:clamp(48px,5.6vw,64px) 0 clamp(38px,4.8vw,52px);
}
.pf-footer__brand{
  min-width:0;
}
.pf-footer__brand .brand{
  margin:0 0 21px;
  color:#F5EFE2;
}
.pf-footer__brand .brand .b-mark{
  width:43px;
  height:43px;
  flex-basis:43px;
  box-shadow:0 7px 22px rgba(0,0,0,.22);
}
.pf-footer__brand .brand .b-lockup strong{color:#F5EFE2}
.pf-footer__brand .brand .b-lockup small{color:#8F897E}
.pf-footer__brand h2{
  max-width:25ch;
  margin:0;
  color:#F5EFE2;
  font:400 clamp(19px,1.65vw,23px)/1.25 var(--serif);
  letter-spacing:-.012em;
  text-wrap:balance;
}
.pf-footer__brand>p{
  max-width:34ch;
  margin:10px 0 0;
  color:#9E978A;
  font-size:12.5px;
  line-height:1.6;
}
.pf-footer__actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:21px;
}
.pf-footer__actions>a,
.pf-footer__actions>button{
  display:inline-flex;
  min-height:42px;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:9px 13px;
  color:#F5EFE2;
  background:transparent;
  border:1px solid #4A473F;
  border-radius:2px;
  font:500 12px/1.25 var(--sans);
  cursor:pointer;
  transition:color .18s ease,background .18s ease,border-color .18s ease,transform .18s ease;
}
.pf-footer__actions>a:first-child{
  color:#211F1A;
  background:#D2B15F;
  border-color:#D2B15F;
}
.pf-footer__actions>a:hover,
.pf-footer__actions>button:hover{
  color:#1D1C18;
  background:#E6C870;
  border-color:#E6C870;
  transform:translateY(-1px);
}
.pf-footer__actions>a span{font:18px/1 var(--serif)}
.pf-footer__channels{
  display:flex;
  flex-wrap:wrap;
  gap:5px 14px;
  margin-top:16px;
}
.site-footer .pf-footer__channels a{
  display:inline-flex;
  align-items:center;
  gap:5px;
  color:#8F897E;
  font:500 10px/1.4 var(--mono);
  letter-spacing:.03em;
}
.site-footer .pf-footer__channels a:hover{color:#F5EFE2}
.pf-footer__nav{
  display:grid;
  min-width:0;
  align-content:start;
  gap:9px;
}
.pf-footer__nav>strong{
  display:block;
  margin:1px 0 7px;
  color:#F5EFE2;
  font:500 14px/1.25 var(--serif);
}
.site-footer .pf-footer__nav>a{
  width:fit-content;
  max-width:100%;
  color:#9E978A;
  font-size:12px;
  line-height:1.35;
  text-underline-offset:4px;
  transition:color .18s ease;
}
.site-footer .pf-footer__nav>a:hover,
.site-footer .pf-footer__nav>a[aria-current="page"]{
  color:#F5EFE2;
}

.pf-footer__legal{
  color:#9E978A;
  border-top:1px solid #35332D;
  border-bottom:1px solid #35332D;
}
.pf-footer__legal>summary{
  display:grid;
  min-height:50px;
  grid-template-columns:minmax(0,1fr) auto 24px;
  align-items:center;
  gap:18px;
  padding:9px 0;
  color:#B9B0A1;
  list-style:none;
  cursor:pointer;
  font:550 10px/1.4 var(--mono);
  letter-spacing:.09em;
  text-transform:uppercase;
}
.pf-footer__legal>summary::-webkit-details-marker{display:none}
.pf-footer__legal>summary small{
  color:#777166;
  font:500 9px/1.4 var(--mono);
  letter-spacing:.04em;
  text-transform:none;
}
.pf-footer__legal>summary i{
  display:grid;
  width:24px;
  height:24px;
  place-items:center;
  color:#B9B0A1;
  font:18px/1 var(--serif);
  font-style:normal;
  transition:transform .18s ease,color .18s ease;
}
.pf-footer__legal>summary:hover,
.pf-footer__legal>summary:hover i{color:#F5EFE2}
.pf-footer__legal[open]>summary i{transform:rotate(45deg)}
.pf-footer__legal-body{
  display:grid;
  grid-template-columns:minmax(220px,.82fr) minmax(360px,1.5fr) auto;
  gap:18px 34px;
  align-items:start;
  padding:2px 0 22px;
  color:#8F897E;
  font-size:11.5px;
  line-height:1.65;
}
.pf-footer__legal-body>p{margin:0}
.pf-footer__legal-body>p b{color:#D4CCBD;font-weight:550}
.pf-footer__legal-body nav{
  display:flex;
  flex-wrap:wrap;
  gap:6px 16px;
}
.site-footer .pf-footer__legal-body nav a,
.pf-footer__legal-body nav button{
  padding:0;
  color:#B9B0A1;
  background:none;
  border:0;
  border-bottom:1px solid #4A473F;
  font:inherit;
  cursor:pointer;
}
.site-footer .pf-footer__legal-body nav a:hover,
.pf-footer__legal-body nav button:hover{
  color:#F5EFE2;
  border-color:#8F897E;
}
.site-footer .pf-footer__fns{
  display:inline-flex;
  min-height:40px;
  align-items:center;
  padding:8px 11px;
  color:#D2B15F;
  border:1px solid #685A35;
  border-radius:2px;
  font:550 9px/1.35 var(--mono);
  letter-spacing:.04em;
  text-transform:uppercase;
  white-space:nowrap;
}
.site-footer .pf-footer__fns:hover{
  color:#F0D787;
  border-color:#A98A45;
}

.pf-footer__bottom{
  display:grid;
  min-height:68px;
  grid-template-columns:1fr auto auto;
  align-items:center;
  gap:18px 28px;
  padding:12px 0 16px;
  color:#777166;
  font:550 9px/1.45 var(--mono);
  letter-spacing:.05em;
  text-transform:uppercase;
}
@media(min-width:921px){
  /* Правая плавающая приёмная остаётся доступной поверх страницы.
     Резерв сужается вместе с ростом viewport и не перекрывает controls. */
  .pf-footer__bottom{
    padding-right:clamp(24px,calc(742px - 50vw),300px);
  }
}
.pf-footer__settings{
  display:flex;
  align-items:center;
  gap:7px;
}
.pf-footer__settings>span{
  color:#8F897E;
  font-size:9px;
  letter-spacing:.04em;
  text-transform:none;
}
.pf-footer__settings>span[data-calm-label]{margin-left:5px}
.pf-footer__settings .theme-toggle,
.pf-footer__settings .calm-toggle{
  width:36px;
  height:36px;
  min-width:36px;
  min-height:36px;
  color:#D4CCBD;
  background:transparent;
  border-color:#4A473F;
}
.pf-footer__settings .theme-toggle:hover,
.pf-footer__settings .calm-toggle:hover{
  color:#F5EFE2;
  background:#292821;
  border-color:#777166;
}
.pf-footer__settings .fc-top{
  display:inline-flex;
  min-height:36px;
  align-items:center;
  margin-left:5px;
  padding:6px 1px;
  color:#B9B0A1;
  border-bottom:1px solid #4A473F;
  font:550 9px/1.2 var(--mono);
  letter-spacing:.08em;
}
.pf-footer__settings .fc-top:hover{color:#F5EFE2;border-color:#8F897E}
.site-footer :focus-visible{
  outline:2px solid #F5EFE2;
  outline-offset:3px;
  border-radius:2px;
}

/* Переключатели оформления находятся в основной, всегда видимой части
   путеводителя — больше не зависят от раскрытия полного каталога. */
.toc-appearance{
  display:flex;
  justify-content:flex-end;
  gap:8px;
  margin:-7px 0 14px;
}
.toc-appearance .toc-theme-row{
  min-width:190px;
  padding:5px 5px 5px 13px;
  background:color-mix(in srgb,var(--sheet) 88%,transparent);
  border:1px solid var(--hairline);
  border-radius:3px;
}
.toc-appearance .theme-toggle,
.toc-appearance .calm-toggle{
  width:38px;
  height:38px;
  min-height:38px;
}

@media(max-width:1040px){
  .pf-footer__main{
    grid-template-columns:minmax(250px,1.35fr) repeat(3,minmax(116px,1fr));
    gap:30px;
  }
  .pf-footer__legal-body{grid-template-columns:1fr 1.35fr}
  .pf-footer__fns{justify-self:start}
  .pf-footer__bottom{grid-template-columns:1fr auto}
  .pf-footer__bottom>span:nth-child(2){display:none}
}
@media(min-width:921px) and (max-width:1100px){
  .pf-footer__settings>span{display:none}
}
@media(max-width:760px){
  .pf-footer__main{grid-template-columns:1fr 1fr}
  .pf-footer__brand{grid-column:1/-1}
  .pf-footer__nav:last-child{grid-column:1/-1}
  .pf-footer__nav:last-child{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:9px 16px;
  }
  .pf-footer__nav:last-child>strong{grid-column:1/-1}
  .pf-footer__legal-body{grid-template-columns:1fr}
  .pf-footer__bottom{grid-template-columns:1fr}
  .pf-footer__settings{justify-content:flex-start}
}
@media(max-width:560px){
  .pf-footer__main{
    gap:32px 24px;
    padding-top:42px;
    padding-bottom:36px;
  }
  .pf-footer__brand h2{font-size:21px}
  .pf-footer__actions>a,
  .pf-footer__actions>button{min-height:44px}
  .site-footer .pf-footer__nav>a{
    display:flex;
    min-height:34px;
    align-items:center;
  }
  .pf-footer__nav:last-child{grid-template-columns:1fr 1fr}
  .pf-footer__legal>summary{grid-template-columns:1fr 24px}
  .pf-footer__legal>summary small{display:none}
  .pf-footer__bottom{gap:12px;padding-top:17px}
  .pf-footer__settings{
    display:grid;
    grid-template-columns:1fr 44px;
    gap:6px 10px;
    width:100%;
  }
  .pf-footer__settings>span[data-calm-label]{margin-left:0}
  .pf-footer__settings .theme-toggle,
  .pf-footer__settings .calm-toggle{
    width:44px;
    height:44px;
  }
  .pf-footer__settings .fc-top{
    grid-column:1/-1;
    width:fit-content;
    min-height:44px;
    margin:2px 0 0;
  }
  .toc-appearance{
    display:grid;
    grid-template-columns:1fr 1fr;
    margin:0 0 14px;
  }
  .toc-appearance .toc-theme-row{
    min-width:0;
    padding-left:10px;
  }
  .toc-appearance .toc-theme-row .ttr-lbl{font-size:12px}
}
@media(prefers-reduced-motion:reduce){
  .pf-footer__actions>a,
  .pf-footer__actions>button,
  .pf-footer__legal>summary i{transition:none!important}
  .pf-footer__actions>a:hover,
  .pf-footer__actions>button:hover{transform:none}
}
@media print{
  .site-footer{
    margin-top:24px!important;
    padding:14px 0 0!important;
    color:#000!important;
    background:#fff!important;
    border-top:1px solid #000!important;
  }
  .site-footer *{color:#000!important}
  .pf-footer__main{display:block;padding:0 0 12px}
  .pf-footer__brand .brand{margin-bottom:8px}
  .pf-footer__brand h2{font-size:18px}
  .pf-footer__actions,.pf-footer__channels,.pf-footer__nav,
  .pf-footer__legal,.pf-footer__settings{display:none!important}
  .pf-footer__bottom{display:block;min-height:0;padding:8px 0;border-top:1px solid #000}
}

/* Финальный footer из style-lab/full: состав и геометрия без добавочных секций. */
.site-footer{
  margin:0;
  padding:0;
  color:#D4CCBD;
  background:#1D1C18;
  border:0;
  box-shadow:none;
}
.site-footer::before,
.site-footer::after{content:none!important;display:none!important}
.site-footer__main{
  display:grid;
  width:min(100%,calc(1320px + clamp(24px,4.25vw,72px) * 2));
  grid-template-columns:1.6fr repeat(3,1fr);
  gap:clamp(34px,5vw,72px);
  margin-inline:auto;
  padding:64px clamp(24px,4.25vw,72px) 54px;
}
.site-footer__brand{
  display:flex;
  align-items:flex-start;
  gap:14px;
}
.site-footer__brand img{
  width:43px;
  height:43px;
  flex:0 0 43px;
  border-radius:50%;
}
.site-footer__brand strong,
.site-footer nav>strong{
  display:block;
  color:#F5EFE2;
  font:500 16px/1.25 var(--serif);
}
.site-footer__brand p{
  max-width:290px;
  margin-top:8px;
  color:#9E978A;
  font-size:12px;
}
.site-footer nav{
  display:grid;
  align-content:start;
  gap:9px;
}
.site-footer nav>strong{
  margin-bottom:6px;
  font-size:14px;
}
.site-footer nav a{
  color:#9E978A;
  font-size:12px;
  text-decoration:none;
  transition:color .18s ease;
}
.site-footer nav a:hover,
.site-footer nav a[aria-current="page"]{color:#F5EFE2}
.site-footer__bottom{
  display:flex;
  width:min(100%,calc(1320px + clamp(24px,4.25vw,72px) * 2));
  align-items:center;
  justify-content:space-between;
  gap:24px;
  margin-inline:auto;
  padding:20px clamp(24px,4.25vw,72px) 24px;
  color:#9a9387;
  border-top:1px solid #35332D;
  font:500 9px/1.4 var(--mono);
  letter-spacing:.05em;
  text-transform:uppercase;
}
.site-footer__bottom .theme-toggle{
  display:inline-block;
  width:auto;
  height:auto;
  min-height:0;
  padding:2px 6px 3px;
  color:#B9B0A1;
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
  font:inherit;
  text-transform:inherit;
}
.site-footer__bottom .theme-toggle:hover{color:#F5EFE2;background:transparent}

@media(max-width:920px){
  .site-footer__main{
    grid-template-columns:1fr 1fr;
    padding:44px max(18px,env(safe-area-inset-left)) 38px;
  }
  .site-footer__brand{grid-column:1/-1}
  .site-footer nav:last-child{display:none}
  .site-footer__bottom{
    flex-wrap:wrap;
    justify-content:flex-start;
    padding-inline:max(18px,env(safe-area-inset-left));
    padding-bottom:calc(24px + 74px + env(safe-area-inset-bottom));
  }
}
@media(max-width:620px){
  .site-footer__main{
    grid-template-columns:1fr;
    padding-inline:max(16px,env(safe-area-inset-left));
  }
  .site-footer nav,
  .site-footer__brand{grid-column:auto}
  .site-footer nav:nth-of-type(2){display:none}
  .site-footer__bottom{
    align-items:flex-start;
    flex-direction:column;
    gap:8px;
    padding-inline:max(16px,env(safe-area-inset-left));
  }
}
@media print{
  .site-footer__main{display:block;padding:0 0 12px}
  .site-footer__main nav{display:none}
  .site-footer__bottom{display:block;padding:8px 0}
  .site-footer__bottom .theme-toggle{display:none}
}

/* ============================================================
   ОБЩАЯ ШАПКА ФИНАЛЬНОГО КОНЦЕПТА (эталон style-lab/full)
   Единственное место, где живёт колонтитул.

   ПОЧЕМУ СТУПЕНИ НЕ СОВПАДАЮТ С ЭТАЛОННЫМИ. В эталоне тот же
   набор — знак, пять пунктов, четыре органа управления — влезает
   в 1041 ровно в ноль (замерено: свободно 0,4px). Его пульт
   занимает 326px, потому что кнопки там 27/38/85px без рамок.
   У нас тот же пульт — 367px: каждая вспомогательная кнопка
   поднята до 44px (пол размера цели, DESIGN-STANDARDS) и носит
   волосяную рамку. Эти лишние 41px и есть причина, по которой
   каждую ступень пришлось сдвинуть вверх, а не скопировать.

   Ступени (в скобках — свободное место в строке на нижней кромке
   полосы, замерено на index.html после загрузки шрифтов):
     • шире 1280 — знак с подписью · навигация · «Найти» пилюлей
       с клавишей «/» · тема · «Кабинет» · «Описать задачу».
       Шаг навигации 22px вместо эталонных 26px: пятый пункт
       «Выгоды» иначе не оставляет запаса (47px);
     • 1241–1280 — «Найти» сжимается до значка лупы (88px);
     • 1181–1240 — шаг навигации 18px, как у эталона (73px);
     • 1101–1180 — поджимаются поля, шаг строки и шаг
       навигации (37px);
     • 941–1100 — уходят подпись знака, «Найти», «Кабинет» и тема;
       вместо них появляется «Меню». Это ступень эталона (у него
       1040), сдвинутая вверх на те самые 41px. Всё убранное живёт
       в «Меню»: «Кабинет» — первым в списке разделов, поиск — по
       той же кнопке, а тема — СЛОВАМИ («Светлая» / «Тёмная»)
       в подвале диалога, то есть понятнее, чем значком (153px);
     • 881–940 — шаг навигации 10px: последняя настольная полоса,
       у эталона её нет — он ниже 920 уже отдаёт экран
       мобильному доку (29px);
     • 880 и уже — колонтитул скрыт, работает .mobile-appbar.
   ============================================================ */
.site-header{
  --header-line:var(--hairline,#d8cebd);
  --header-muted:var(--ink-soft,#68635a);
  --header-quiet:var(--ink-faint,#8b8375);
  position:sticky;
  z-index:80;
  top:0;
  /* Снимок шапки в переходе между страницами не анимируем:
     иначе колонтитул «уезжает» вместе с содержимым. */
  view-transition-name:site-header;
  height:76px;
  padding:0;
  border:0;
  border-bottom:1px solid transparent;
  /* Не отдельная полоса поверх страницы, а матовое стекло: оттенок берёт
     от текущего листа под собой, но навигация остаётся читаемой. */
  background:color-mix(in srgb,var(--sheet) 18%,transparent);
  box-shadow:none;
  transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease;
  -webkit-backdrop-filter:blur(18px) saturate(1.1);
  backdrop-filter:blur(18px) saturate(1.1);
}
:root[data-theme="dark"] .site-header{background:rgba(17,15,12,.24)}
.site-header::after{content:none!important;display:none!important}
.site-header::before{
  position:absolute;
  inset:0 0 auto;
  display:block!important;
  height:2px;
  background:linear-gradient(90deg,var(--wax),#BB9250 36%,transparent 76%);
  content:""!important;
}
.site-header.scrolled,
.site-header.is-scrolled{
  background:color-mix(in srgb,var(--sheet) 68%,transparent);
  border-bottom-color:color-mix(in srgb,var(--header-line) 60%,transparent);
  box-shadow:0 12px 38px rgba(42,34,23,.06);
}
:root[data-theme="dark"] .site-header.scrolled,
:root[data-theme="dark"] .site-header.is-scrolled{background:rgba(17,15,12,.72)}
.site-header__inner{
  display:flex;
  width:min(100%,calc(1320px + clamp(24px,4.25vw,72px) * 2));
  height:100%;
  align-items:center;
  gap:32px;
  margin-inline:auto;
  padding-inline:clamp(24px,4.25vw,72px);
}
.site-header .brand{
  display:inline-flex;
  flex:0 0 auto;
  align-items:center;
  gap:11px;
  color:var(--ink);
  text-decoration:none;
}
.site-header .brand__mark{
  width:39px;
  height:39px;
  flex:0 0 39px;
  border-radius:50%;
  box-shadow:0 6px 18px rgba(129,48,29,.18);
}
.site-header .brand__name{
  display:flex;
  min-width:0;
  flex-direction:column;
}
.site-header .brand__name strong{
  color:var(--ink);
  font:530 16px/1.2 var(--serif);
  letter-spacing:-.02em;
  white-space:nowrap;
}
.site-header .brand__name .b-short{display:none}
.site-header .brand__name small{
  position:relative;
  display:block;
  min-width:184px;
  min-height:13px;
  margin-top:3px;
  color:var(--header-quiet);
  font:600 9px/1.2 var(--mono);
  letter-spacing:.12em;
  text-transform:uppercase;
  white-space:nowrap;
}
.site-header .brand__motto-default,
.site-header .brand__motto-hover{
  position:absolute;
  top:0;
  left:0;
  display:block;
  white-space:nowrap;
  transition:clip-path .32s cubic-bezier(.65,0,.35,1),opacity .24s ease;
}
.site-header .brand__motto-hover{
  color:var(--story-red,#a63f29);
  font:italic 520 12px/1.05 var(--serif);
  letter-spacing:-.025em;
  opacity:0;
  clip-path:inset(0 100% 0 0);
}
.site-header .brand:hover .brand__motto-default,
.site-header .brand:focus-visible .brand__motto-default{
  opacity:0;
  clip-path:inset(0 0 0 100%);
}
.site-header .brand:hover .brand__motto-hover,
.site-header .brand:focus-visible .brand__motto-hover{
  opacity:1;
  clip-path:inset(0 0 0 0);
}
/* Никогда не обводим весь логотип прямоугольником: браузер может считать
   программно восстановленный фокус ``focus-visible`` даже после указателя.
   Для клавиатуры ниже остаются кольцо на марке и подчёркивание имени. */
.site-header .brand:focus-visible{outline:none;box-shadow:none}
html[data-input-modality="keyboard"] .site-header .brand:focus-visible .brand__mark{
  outline:2px solid var(--wax);
  outline-offset:3px;
}
html[data-input-modality="keyboard"] .site-header .brand:focus-visible .brand__name strong{
  text-decoration:underline;
  text-decoration-color:var(--wax);
  text-decoration-thickness:1px;
  text-underline-offset:4px;
}
.site-header .primary-nav{
  display:flex;
  align-items:center;
  /* Эталонные 26px — при четырёх пунктах. С пятым («Выгоды») на
     кромке 1241 они не оставляют запаса, поэтому шаг 22px. */
  gap:22px;
  margin-left:auto;
}
.site-header .primary-nav a{
  position:relative;
  /* Эталонный отступ 10px даёт 33px; на сайте держим 44px —
     иначе пункт не дотягивает до размера цели §DESIGN-STANDARDS. */
  display:inline-flex;
  min-height:44px;
  align-items:center;
  padding:10px 0;
  color:var(--header-muted);
  font-size:13px;
  font-weight:500;
  white-space:nowrap;
  text-decoration:none;
  transition:color .18s ease;
}
.site-header .primary-nav a::after{
  position:absolute;
  right:0;
  bottom:10px;
  left:0;
  height:1px;
  background:var(--wax);
  content:"";
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .22s cubic-bezier(.22,1,.36,1);
}
.site-header .primary-nav a:hover,
.site-header .primary-nav a:focus-visible,
.site-header .primary-nav a[aria-current="page"]{color:var(--ink)}
.site-header .primary-nav a:hover::after,
.site-header .primary-nav a:focus-visible::after,
.site-header .primary-nav a[aria-current="page"]::after{transform:scaleX(1)}
.site-header__actions{
  display:flex;
  align-items:center;
  gap:10px;
  margin-left:0;
}
.site-header .header-action{
  display:inline-flex;
  min-height:38px;
  align-items:center;
  gap:8px;
  padding:8px 10px;
  color:var(--header-muted);
  background:transparent;
  border:0;
  border-radius:7px;
  font-size:12px;
  font-weight:500;
  letter-spacing:0;
  text-transform:none;
  transition:color .18s ease,background-color .18s ease;
}
.site-header .header-action:hover{
  color:var(--ink);
  background:color-mix(in srgb,var(--sheet) 68%,transparent);
}
.site-header .header-action kbd{
  display:grid;
  min-width:20px;
  height:20px;
  place-items:center;
  color:var(--header-quiet);
  background:var(--paper);
  border:1px solid var(--header-line);
  border-radius:4px;
  font:500 10px/1 var(--mono);
}
.site-header .header-action__dot{
  width:7px;
  height:7px;
  background:var(--verify,#3c644c);
  border-radius:50%;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--verify,#3c644c) 16%,transparent);
}
/* «Кабинет» — всегда с подписью: §3 запрещает состояние одним
   значком. Точка и счётчик стоят РЯДОМ со словом, а не вместо него. */
.site-header .nav-cab{
  position:relative;
  width:auto;
  min-width:0;
  border:0;
  white-space:nowrap;
}
.site-header .nav-cab .nc-txt{display:inline}
.site-header .nav-cab .nc-badge{
  position:absolute;
  top:-4px;
  right:-4px;
  display:inline-flex;
  min-width:18px;
  height:18px;
  align-items:center;
  justify-content:center;
  padding:0 5px;
  border-radius:999px;
  font-family:var(--mono);
  font-weight:600;
  line-height:1;
}
.site-header .nav-cab .nc-badge[hidden]{display:none}
.site-header .header-theme-toggle,
.site-header .theme-toggle{
  display:grid;
  width:38px;
  height:38px;
  min-height:38px;
  flex:0 0 38px;
  place-items:center;
  padding:0;
  color:var(--header-muted);
  background:transparent;
  border:1px solid transparent;
  border-radius:50%;
  font:500 17px/1 var(--serif);
}
.site-header .header-theme-toggle:hover,
.site-header .theme-toggle:hover{
  color:var(--ink);
  background:var(--paper);
  border-color:var(--header-line);
}
/* Мера через .site-header__actions, а не просто `.site-header .button`:
   страничные слои (polish15-library.css: `body.polish15-library .button`
   = 48px) иначе перебивают шапку, и «Описать задачу» вырастает на 6px
   выше соседей — строка перестаёт читаться одной. */
.site-header .site-header__actions .button{
  display:inline-flex;
  /* Эталонный .button--compact — 42px по внешней кромке при соседях в 38px:
     первичное действие там ВЫШЕ вспомогательных. У нас вспомогательные
     подняты до 44px (пол тапа), поэтому 42px делали «Описать задачу» самой
     низкой в строке — иерархия переворачивалась. Выравниваем по 44px. */
  min-height:44px;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:9px 15px;
  color:#FFFAF3;
  background:var(--wax-cta,var(--wax));
  border:1px solid var(--wax-cta,var(--wax));
  border-radius:7px;
  box-shadow:0 10px 24px rgba(146,54,35,.17);
  font-size:13px;
  font-weight:560;
  line-height:1.2;
  letter-spacing:.005em;
  text-decoration:none;
  transition:transform .2s cubic-bezier(.22,1,.36,1),background-color .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.site-header .site-header__actions .button:hover{
  background:var(--wax-deep);
  border-color:var(--wax-deep);
  box-shadow:0 14px 30px rgba(113,39,25,.24);
  transform:translateY(-2px);
}
.site-header .site-header__actions .button span{font:400 18px/1 var(--serif)}

/* «Меню» — круглая кнопка эталонного .icon-button. На широком
   столе её нет: там всё уводит «Найти» и сама навигация. Она
   включается ниже 1040, когда «Найти» и «Кабинет» уходят. */
.site-header .header-menu-button{
  display:none;
  place-items:center;
  color:var(--ink);
  background:transparent;
  border:1px solid var(--header-line);
  border-radius:50%;
  cursor:pointer;
  transition:background-color .18s ease,border-color .18s ease;
}
.site-header .header-menu-button:hover{
  background:var(--paper);
  border-color:var(--ink-soft);
}
.site-header .header-menu-button i,
.site-header .header-menu-button i::before,
.site-header .header-menu-button i::after{
  display:block;
  width:17px;
  height:1px;
  border:0;
  background:currentColor;
  content:"";
}
.site-header .header-menu-button i::before{transform:translateY(-5px)}
.site-header .header-menu-button i::after{transform:translateY(4px)}

.mobile-appbar{display:none}
.sr-only,
.visually-hidden{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}
/* «Найти» сжимается до лупы — но остаётся кнопкой с именем
   в aria-label и подсказкой в title, а не безымянным кружком.
   Лупа — знак условный и однозначный, в отличие от «кабинета»
   значком. Круглую меру ей задаёт polish15-chrome.css:
   там же живёт общая мера пульта.
   У эталона эта ступень на 1240. У нас на 1280: пилюля «Найти»
   с клавишей «/» занимает 121px против эталонных 27px, и на
   кромке 1241 в строке оставалось 11px — замерено. */
@media(max-width:1280px){
  .site-header .header-action--search .ha-txt,
  .site-header .header-action--search kbd{display:none}
}
@media(max-width:1240px){
  /* Эталон здесь меняет только --gutter, шаг строки остаётся 32px. */
  .site-header__inner{padding-inline:clamp(22px,3.2vw,42px)}
  .site-header .primary-nav{gap:18px}
}
/* Промежуточная ступень, которой у эталона нет: пятый пункт
   навигации съедает запас раньше, чем доходит дело до ступени
   «Меню». Поджимаем поля и шаги, ничего не убирая. */
@media(max-width:1180px){
  .site-header__inner{gap:22px;padding-inline:clamp(22px,3vw,34px)}
  .site-header .primary-nav{gap:14px}
}
@media(max-width:1100px){
  .site-header__inner{gap:18px;padding-inline:26px}
  /* Эталон на этой ступени (у него 1040) убирает подпись знака,
     «Найти» и «Кабинет» целиком — не превращает их в безымянные
     кружки. Вместе с ними уводим и тему: в диалоге она подписана
     словами «Светлая»/«Тёмная», а значок вместо слова — ровно то,
     чего просили не делать. Тема остаётся одним нажатием
     в .mobile-appbar ниже 880. */
  .site-header .brand__name small,
  .site-header .header-action--search,
  .site-header .header-theme-toggle,
  .site-header__actions>.header-action:not(.header-action--search){display:none}
  /* …а вместо них показывает вход в путеводитель: там и «Кабинет»
     первым пунктом, и поиск по сайту (PRIMARY в polish15-chrome.js),
     и выбор темы в подвале диалога. */
  .site-header .header-menu-button{display:grid}
}
/* Последняя настольная ступень. У эталона её нет: ниже 920 он уже
   отдаёт экран мобильному доку. У сайта колонтитул работает до 881,
   поэтому на «хвосте» диапазона поджимаем шаги — иначе знак,
   навигация и пульт перестают помещаться в одну строку. */
@media(max-width:940px){
  .site-header__inner{gap:14px;padding-inline:22px}
  .site-header .primary-nav{gap:10px}
}

/* ============================================================
   Сквозной компонент «Следующий шаг дела»
   ============================================================ */
.case-bridge{
  --cb-line:color-mix(in srgb,var(--hairline-strong) 78%,transparent);
  position:relative;
  z-index:2;
  padding:clamp(54px,6vw,84px) clamp(22px,4.25vw,72px);
  border-top:1px solid var(--ink);
  background:
    linear-gradient(100deg,color-mix(in srgb,var(--mark) 38%,transparent),transparent 68%),
    var(--paper);
}
.case-bridge::before{
  position:absolute;
  top:-4px;
  left:clamp(22px,4.25vw,72px);
  width:84px;
  height:4px;
  background:var(--wax);
  content:"";
}
.case-bridge__inner{
  display:grid;
  width:min(100%,1320px);
  margin-inline:auto;
  grid-template-columns:minmax(0,.58fr) minmax(330px,1fr) minmax(250px,.54fr);
  align-items:center;
  gap:clamp(38px,6vw,92px);
}
.case-bridge__stages{
  display:grid;
  border-top:2px solid var(--ink);
}
.case-bridge__stages>span{
  display:grid;
  min-height:47px;
  padding:8px 5px;
  border-bottom:1px solid var(--cb-line);
  grid-template-columns:29px 1fr;
  align-items:center;
  gap:9px;
  color:var(--ink-soft);
}
.case-bridge__stages i{
  color:var(--ink-faint);
  font:normal 9px/1 var(--mono);
}
.case-bridge__stages b{
  font-family:var(--serif);
  font-size:13px;
  font-weight:500;
}
.case-bridge__stages>span.is-current{
  color:var(--ink);
  background:var(--wax-soft);
}
.case-bridge__stages>span.is-current i{color:var(--wax-text,var(--wax))}
.case-bridge__stages>span.is-current b::after{
  margin-left:8px;
  color:var(--wax-text,var(--wax));
  content:"сейчас";
  font:8px/1 var(--mono);
  letter-spacing:.08em;
  text-transform:uppercase;
}
.case-bridge__copy>p{
  margin:0 0 9px;
  color:var(--wax-text,var(--wax));
  font:600 9.5px/1.35 var(--mono);
  letter-spacing:.12em;
  text-transform:uppercase;
}
.case-bridge__copy h2{
  max-width:19ch;
  margin:0 0 14px;
  color:var(--ink);
  font-family:var(--serif);
  font-size:clamp(28px,3vw,43px);
  font-weight:430;
  line-height:1.08;
  letter-spacing:-.035em;
}
.case-bridge__copy>span{
  display:block;
  max-width:58ch;
  color:var(--ink-soft);
  font-size:16px;
  line-height:1.62;
}
.case-bridge__actions{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:9px;
}
.case-bridge__actions .button{
  display:inline-flex;
  min-height:50px;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:12px 17px;
  border:1px solid var(--wax-cta,var(--wax));
  border-radius:5px;
  color:#fffaf3;
  background:var(--wax-cta,var(--wax));
  box-shadow:0 10px 24px color-mix(in srgb,var(--wax) 18%,transparent);
  font-size:13px;
  font-weight:560;
  line-height:1.25;
  text-align:center;
  transition:background .16s,border-color .16s,transform .18s;
}
.case-bridge__actions .button:hover{
  border-color:var(--wax-deep);
  background:var(--wax-deep);
  transform:translateY(-2px);
}
.case-bridge__self{
  display:flex;
  min-height:45px;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:9px 12px;
  border:1px solid var(--cb-line);
  border-radius:4px;
  color:var(--ink);
  background:color-mix(in srgb,var(--sheet) 82%,transparent);
  font-size:11px;
  font-weight:540;
  text-align:center;
  transition:border-color .16s,background .16s;
}
.case-bridge__self:hover{
  border-color:var(--verify);
  background:var(--verify-soft);
}
.case-bridge__actions small{
  color:var(--ink-soft);
  font-size:9px;
  line-height:1.45;
  text-align:center;
}
@media(max-width:980px){
  .case-bridge__inner{
    grid-template-columns:minmax(180px,.45fr) minmax(0,1fr);
    gap:38px 54px;
  }
  .case-bridge__actions{
    grid-column:2;
    width:min(100%,390px);
  }
}
@media(max-width:620px){
  .case-bridge{
    padding:46px max(16px,env(safe-area-inset-left));
  }
  .case-bridge::before{left:max(16px,env(safe-area-inset-left));width:58px}
  .case-bridge__inner{
    grid-template-columns:1fr;
    gap:27px;
  }
  .case-bridge__stages{
    grid-template-columns:repeat(4,1fr);
    border-top:1px solid var(--ink);
    border-bottom:1px solid var(--ink);
  }
  .case-bridge__stages>span{
    min-height:62px;
    padding:8px 5px;
    border-right:1px solid var(--cb-line);
    border-bottom:0;
    grid-template-columns:1fr;
    align-content:center;
    gap:5px;
    text-align:center;
  }
  .case-bridge__stages>span:first-child{border-left:1px solid var(--cb-line)}
  .case-bridge__stages b{font-size:11px}
  .case-bridge__stages>span.is-current b::after{display:none}
  .case-bridge__copy h2{font-size:31px}
  .case-bridge__copy>span{font-size:16px}
  .case-bridge__actions{
    grid-column:auto;
    width:100%;
  }
  /* Контекстное первичное действие уже стоит в центре нижнего дока. */
  .case-bridge__actions .button{display:none}
  .case-bridge__self{min-height:46px}
}

/* ============================================================
   ПРИЁМНАЯ · окно «Спросить мастера»
   Прежде окно называлось «спросить», обещало «опишите задачу
   своими словами» — и не давало ничего описать: пять ссылок
   наружу и выбор канала за клиента. Теперь спрашивают здесь,
   а каналы убраны под раскрытие.
   ============================================================ */

.cs-ask{
  display:grid;
  gap:10px;
  margin:18px 0 0;
  padding:16px 16px 18px;
  background:var(--sheet);
  border:1px solid var(--line);
  border-radius:10px;
}

.cs-ask__label{
  color:var(--quiet);
  font:600 9.5px/1.4 var(--mono);
  letter-spacing:.09em;
  text-transform:uppercase;
}

.cs-ask__field{
  width:100%;
  min-height:84px;
  padding:12px 13px;
  color:var(--ink);
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:8px;
  font:400 15px/1.5 var(--sans);
  resize:vertical;
  transition:border-color .18s ease,box-shadow .18s ease;
}

.cs-ask__field::placeholder{color:var(--quiet)}

.cs-ask__field:focus-visible{
  border-color:var(--wax);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--wax) 16%,transparent);
  outline:none;
}

.cs-ask__send{
  width:100%;
  min-height:48px;
  justify-content:center;
}

.cs-ask__how{
  margin:0;
  color:var(--muted);
  font-size:12.5px;
  line-height:1.45;
}

.cs-ask__free{
  margin:2px 0 0;
  padding-top:11px;
  border-top:1px solid var(--line);
  color:var(--muted);
  font-size:13px;
  line-height:1.45;
}

.cs-ask__free b{color:var(--ink)}

.cs-alt2{
  margin-top:16px;
  border-top:1px solid var(--line);
}

.cs-alt2>summary{
  padding:14px 0 12px;
  color:var(--muted);
  cursor:pointer;
  font:500 13.5px/1.3 var(--sans);
  list-style:none;
}

.cs-alt2>summary::-webkit-details-marker{display:none}

.cs-alt2>summary::after{
  margin-left:8px;
  color:var(--quiet);
  content:"▾";
  font-size:11px;
}

.cs-alt2[open]>summary::after{content:"▴"}

.cs-alt2>summary:hover{color:var(--ink)}

/* Список каналов — именно список, а не стопка плит. Прежде строки
   лежали отдельными белыми блоками (приём «gap:1px по фону контейнера»),
   текст упирался в край, а нажать было не за что: ни стрелки, ни
   подсветки строки целиком. */
.cs-alt2__list{
  display:grid;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:10px;
}

.cs-alt2__list>a{
  display:grid;
  gap:3px 14px;
  padding:13px 15px 14px;
  border-bottom:1px solid var(--line);
  color:inherit;
  text-decoration:none;
  grid-template-columns:minmax(0,1fr) 18px;
  align-items:center;
  transition:background-color .16s ease;
}

.cs-alt2__list>a:last-child{border-bottom:0}

.cs-alt2__list>a b{
  grid-column:1;
  color:var(--ink);
  font-size:14.5px;
  font-weight:600;
}

.cs-alt2__list>a small{
  grid-column:1;
  color:var(--muted);
  font-size:12.5px;
  line-height:1.45;
}

.cs-alt2__list>a::after{
  grid-column:2;
  grid-row:1 / -1;
  justify-self:end;
  color:var(--quiet);
  content:"→";
  font-size:15px;
  transition:transform .18s cubic-bezier(.22,1,.36,1),color .16s ease;
}

.cs-alt2__list>a:hover,
.cs-alt2__list>a:focus-visible{background:var(--paper)}

.cs-alt2__list>a:hover b,
.cs-alt2__list>a:focus-visible b{color:var(--wax-text,var(--wax))}

.cs-alt2__list>a:hover::after,
.cs-alt2__list>a:focus-visible::after{
  color:var(--wax-text,var(--wax));
  transform:translateX(3px);
}

@media (max-width:520px){
  .cs-ask{padding:14px}
  .cs-ask__field{min-height:96px}
}

/* MOBILE-FIRST · десктопный откат кеглей основного текста (OUT-008) */
/* База выше теперь мобильная: основной текст 16px. Здесь десктоп
   получает прежние кегли обратно. Блок стоит последним в файле,
   поэтому выигрывает по порядку при равной специфичности. */
@media (min-width:921px){
  .toc-head p{font-size:14px}
  .cf-fin-copy{font-size:11px}
  .cf7-copy{font-size:14px}
  .contact-sheet .cs-lead{font-size:14px}
  .contact-sheet .cs-route-copy b{font-size:14.5px}
  .case-bridge__copy>span{font-size:12.5px}
}
