/*
Theme Name: ТулГУ-хелп
Description: Тёмно-премиальная тема tulgu-help.ru (дизайн v7). Montserrat самохостится.
Version: 2.0
Text Domain: tulgu
*/

/* ============================================================
   ТулГУ-хелп — Design v7 «Тёмный премиум» (эксперимент)
   ------------------------------------------------------------
   Отдельная ветка по референсу владельца (сессия-под-ключ.рф /
   MOZGSTUDENT): тёмный фон, фиолетовый акцент, крупный премиум-герой,
   пилюли-кнопки, круглые иконки, нумерованный процесс, статистика.
   Контент — наш, тексты не копируются (аффилиат-риск).
   v7.1: акцент = БРЕНДОВЫЙ синий #039DFC (по просьбе владельца) + переключатель
   день/ночь. Кнопки — синий + белый + тень (как в v6). Эйбрау/ссылки: на тёмном
   яркий #4FB2FF, на светлом глубокий #0B6FB8 (яркий как текст на белом = 2.90).

   Это НЕ замена светлой концепции v6 — это альтернатива на выбор.
   Тёмная тема одна (переключателя нет — как в референсе).
   Шрифт: системный премиум-стек; при желании можно самохостить
   Montserrat (как в референсе), Google Fonts в РФ нельзя.
   ============================================================ */

/* ===== ШРИФТ: Montserrat (геометрический, ближе всего к логотипу) =====
   САМОХОСТ — Google Fonts в РФ блокируются. Файлы в fonts/ (woff2, subset
   cyrillic+latin, вес 400/600/700/800). font-display:swap — текст виден сразу
   системным, потом подменяется. Кириллица и латиница разнесены по unicode-range,
   чтобы грузить только нужный сабсет. */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/montserrat-cyrillic-400-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/montserrat-latin-400-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+FFFD;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/montserrat-cyrillic-600-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/montserrat-latin-600-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+FFFD;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/montserrat-cyrillic-700-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/montserrat-latin-700-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+FFFD;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:800;font-display:swap;src:url('fonts/montserrat-cyrillic-800-normal.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:800;font-display:swap;src:url('fonts/montserrat-latin-800-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2212,U+FFFD;}

/* ТЁМНАЯ ТЕМА — по умолчанию (концепция тёмно-премиальная).
   Акцент — БРЕНДОВЫЙ синий #039DFC. Переключатель день/ночь ниже. */
:root {
  color-scheme: dark;
  --bg:        #202129;
  --bg-2:      #191A20;
  --surface:   #2A2B37;
  --surface-2: #32333F;
  --line:      #3A3B48;
  --line-soft: #2F3040;

  --ink:    #FFFFFF;   /* заголовки */
  --ink-2:  #A7A9B8;   /* текст 6.62:1 */
  --muted:  #8A8CA0;   /* AA-fix: было #7E8092 (4.11) → 4.84:1 (29.08.2026) */

  --accent:      #039DFC;  /* БРЕНД: заливки, свечения, иконки, глифы */
  --accent-2:    #4FB2FF;  /* эйбрау/ссылки на ТЁМНОМ (яркий, читаем 6.3:1) */
  --accent-deep: #0B6FB8;  /* низ градиента кнопки — где белому нужен контраст */
  --brand-blue:  #039DFC;
  --warm:        #F0A05A;
  --ok:          #0B8A4F;  /* зелёная пилюля «Зачтено» — белый на ней 4.4, обе темы */
  --glow-rgb:    3,157,252;

  /* токены ГЕРОЙ-ИЛЛЮСТРАЦИИ (работают в обеих темах) */
  --il-body:#2E2F3C; --il-screen:#23242D; --il-inner:#191A20; --il-line:#3A3B48;
  --il-soft:#2F3040; --il-accent:#039DFC; --il-base:#2A2B37;
  --il-chip:#2A2B37; --il-chip-line:#3A3B48; --il-cap-a:#3FB6FF; --il-cap-b:#0B6FB8;

  --r-pill: 999px;
  --r-lg: 20px; --r-xl: 28px; --r-2xl: 36px;

  --wrap: 1240px;
  --font: "Montserrat", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;

  --s2:8px; --s3:12px; --s4:16px; --s5:20px; --s6:24px; --s7:32px;
  --s8:40px; --s9:48px; --s10:64px; --s11:80px; --s12:96px;
  --shadow: 0 24px 60px rgba(0,0,0,.45);
  --glow: 0 12px 40px rgba(var(--glow-rgb),.45);
}

/* СВЕТЛАЯ («дневная») ТЕМА */
:root[data-theme="light"] {
  color-scheme: light;
  --bg:        #F6F9FC;
  --bg-2:      #FFFFFF;
  --surface:   #FFFFFF;
  --surface-2: #EEF4FA;
  --line:      #E1EAF2;
  --line-soft: #EAF1F8;

  --ink:    #0A1F2C;   /* 16:1 */
  --ink-2:  #52697A;   /* 5.7:1 */
  --muted:  #657482;   /* AA-fix: было #7E8C99 (3.26) → 4.54:1 (29.08.2026) */

  --accent:      #039DFC;
  --accent-2:    #0B6FB8;  /* эйбрау/ссылки на СВЕТЛОМ (яркий #039DFC как текст = 2.90 ❌) */
  --accent-deep: #0B6FB8;

  --il-body:#FFFFFF; --il-screen:#EAF1F8; --il-inner:#F6F9FC; --il-line:#C9D8E5;
  --il-soft:#DCE7F1; --il-accent:#039DFC; --il-base:#E8F1F8;
  --il-chip:#FFFFFF; --il-chip-line:#E1EAF2; --il-cap-a:#3FB6FF; --il-cap-b:#0B6FB8;

  --shadow: 0 24px 60px rgba(10,31,44,.12);
}

*,*::before,*::after { box-sizing: border-box; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 100px; }
body {
  font-family: var(--font); color: var(--ink-2); background: var(--bg);
  font-size: 17px; line-height: 1.6; overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
img,svg { display:block; max-width:100%; }
a { color: var(--accent-2); text-decoration: none; }
ul,ol { list-style:none; padding:0; }
button,input { font: inherit; color: inherit; }
h1,h2,h3,h4 { color: var(--ink); line-height: 1.1; font-weight: 800; letter-spacing: -0.02em; }
:where(a,button,input,summary):focus-visible { outline: 3px solid var(--accent-2); outline-offset: 3px; border-radius: 8px; }
::selection { background: var(--accent); color:#fff; }

.wrap { width:100%; max-width: var(--wrap); margin-inline:auto; padding-inline: var(--s6); }

/* --- глобальные свечения фона --- */
.bgglow { position: fixed; inset:0; z-index:-1; pointer-events:none; overflow:hidden; }
.bgglow::before, .bgglow::after {
  content:""; position:absolute; border-radius:50%; filter: blur(120px);
}
.bgglow::before { width:60vw; height:60vw; top:-20vw; right:-14vw; background: radial-gradient(circle, rgba(3,157,252,.32), transparent 66%); }
.bgglow::after  { width:46vw; height:46vw; top:44vw; left:-16vw; background: radial-gradient(circle, rgba(63,182,255,.16), transparent 66%); }
:root[data-theme="light"] .bgglow::before { opacity:.5; }
:root[data-theme="light"] .bgglow::after  { opacity:.5; }

/* ============ КНОПКИ ============ */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap: var(--s3);
  min-height: 56px; padding: 0 var(--s8); border-radius: var(--r-pill);
  font-weight: 700; font-size: 16px; cursor:pointer; border: 1.5px solid transparent;
  transition: transform .15s, box-shadow .2s, background-color .2s, border-color .2s;
  white-space: nowrap;
}
.btn:active { transform: translateY(1px); }
/* БРЕНДОВЫЙ синий #039DFC + БЕЛЫЙ текст + тень (как в v6, реш. владельца).
   Верх — логотипный #039DFC, низ — глубже #0B6FB8 (там белый 5.28), тень
   тянет читаемость на светлой части. */
/* ПЛОСКАЯ минималистичная кнопка: сплошная заливка. AA-fix (29.08.2026):
   было #039DFC — белый на нём 2.90:1 ❌. Теперь --accent-deep (#0B6FB8) = 5.28:1.
   Тень у текста — ради читаемости белого, на «объём» кнопки не влияет. */
.btn--primary {
  color:#fff; background: var(--accent-deep); background-image: none;
  box-shadow: none; text-shadow: 0 1px 1px rgba(0,0,0,.20);
}
.btn--primary:hover { background: #0A6099; }
.btn--primary:active { background: #08517F; }
.btn--ghost {
  color: var(--ink); background: transparent; border-color: var(--line);
  padding-left: var(--s5);
}
.btn--ghost:hover { border-color: var(--accent-2); background: rgba(var(--glow-rgb),.10); }
.btn--ghost .btn__dot {
  width: 34px; height:34px; border-radius:50%; border:1.5px solid var(--accent-2);
  display:grid; place-items:center; flex:none;
}
.btn--ghost .btn__dot svg { width:16px; height:16px; }
.btn .ico { width:20px; height:20px; }
.btn--block { width:100%; }

/* круглые иконки-кнопки */
.iconbtn {
  width:44px; height:44px; border-radius:50%; display:grid; place-items:center; flex:none;
  background: var(--surface); border:1px solid var(--line); color: var(--ink);
  transition: background-color .2s, border-color .2s, transform .15s;
}
.iconbtn:hover { border-color: var(--accent-2); background: var(--surface-2); }
.iconbtn:active { transform: scale(.94); }
.iconbtn svg { width:20px; height:20px; }

/* переключатель день/ночь: по умолчанию (тёмная) показываем солнце (→ день) */
.theme-toggle .ico-sun { display:block; }
.theme-toggle .ico-moon { display:none; }
:root[data-theme="light"] .theme-toggle .ico-sun { display:none; }
:root[data-theme="light"] .theme-toggle .ico-moon { display:block; }

/* ============ ШАПКА ============ */
.header {
  position: sticky; top:0; z-index:100;
  background: color-mix(in srgb, var(--bg) 78%, transparent);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--line-soft);
}
.header__inner { display:flex; align-items:center; gap: var(--s6); min-height: 84px; }
.header__right { display:flex; align-items:center; gap: var(--s4); margin-left:auto; }
.logo { display:flex; align-items:center; flex:none; line-height:0; }
.logo img { width:150px; height:auto; aspect-ratio: 581/160; }
.nav { display:none; margin-inline:auto; gap: var(--s6); }
@media (min-width: 1000px){ .nav { display:flex; } }
.nav a { color: var(--ink-2); font-weight:600; font-size:15px; }
.nav a:hover { color: var(--ink); }
.header__socials { display:none; gap: var(--s3); }
@media (min-width: 760px){ .header__socials { display:flex; } }
.header__phone { display:none; text-align:right; flex:none; }
@media (min-width: 1160px){ .header__phone { display:block; } }
.header__phone a { color: var(--ink); font-weight:800; font-size:18px; letter-spacing:.01em; }
.header__phone span { display:block; font-size:12px; color: var(--muted); }
.burger { display:grid; }
@media (min-width:1000px){ .burger{ display:none; } }

/* ============ HERO ============ */
.hero { position:relative; padding: var(--s10) 0 var(--s12); }
.hero__grid { display:grid; gap: var(--s9); align-items:center; }
/* 3 колонки: текст | иллюстрация | статы (у статов свой столбец —
   иначе абсолют улетал за правый край экрана). */
@media (min-width: 1040px){ .hero__grid { grid-template-columns: 1.15fr minmax(0,1fr) auto; gap: var(--s8); } }
@media (min-width: 940px) and (max-width:1039px){ .hero__grid { grid-template-columns: 1fr minmax(0,.9fr); } }

.eyebrow { color: var(--accent-2); font-weight:700; font-size:18px; margin-bottom: var(--s4); }
.hero h1 { font-size: clamp(2.4rem, 1.4rem + 4vw, 4rem); margin-bottom: var(--s5); }
/* градиент от --ink к акценту: в тёмной белый→голубой, в светлой навигацинй→синий —
   читаемо в обеих темах (белый→синий на светлом фоне пропадал). */
.hero h1 .accent { color: transparent; background: linear-gradient(120deg, var(--ink), var(--accent-2)); -webkit-background-clip:text; background-clip:text; }
.hero__lead { color: var(--ink-2); font-size: 18px; max-width: 46ch; }
.hero__lead + .hero__lead { margin-top: var(--s4); }
.hero__cta { display:flex; flex-wrap:wrap; gap: var(--s4); margin-top: var(--s8); }
@media (max-width:520px){ .hero__cta .btn { width:100%; } }

/* герой: правая колонка — картинка + статы поверх */
.hero__art { position:relative; }
.hero__art .heroimg { width:100%; height:auto; filter: drop-shadow(0 30px 60px rgba(0,0,0,.5)); }
.hero__stats {
  display:flex; gap: var(--s8); flex-wrap:wrap; margin-top: var(--s9);
}
@media (min-width: 1040px){
  .hero__stats { flex-direction:column; gap: var(--s8); margin:0; text-align:right; align-self:start; min-width:150px; }
  .hero__stats .stat__lbl { margin-left:auto; }
}
/* на среднем экране статы уходят под сетку в 3 колонки */
@media (min-width: 940px) and (max-width:1039px){ .hero__stats { grid-column: 1 / -1; justify-content:space-between; } }
.stat__num { font-size: 44px; font-weight:800; color: var(--ink); line-height:1; letter-spacing:-.03em; }
.stat__num b { color: var(--accent-2); }
.stat__lbl { color: var(--ink-2); font-size:14px; margin-top:6px; max-width: 15ch; }

/* плавающие круглые кнопки по краям героя (как в референсе) */
.hero__float { display:none; }
@media (min-width: 940px){
  .hero__float { display:grid; position:absolute; z-index:2; }
  .hero__float--l { left:0; bottom: 8%; }
  .hero__float--r { right:0; bottom: 2%; }
  .hero__float .iconbtn { width:56px; height:56px; border-color: var(--accent); box-shadow: var(--glow); }
  .hero__float .iconbtn svg { width:24px; height:24px; color: var(--accent-2); }
}

/* ============ ПОЛОСА-ЛОГОТИПЫ/ТРАСТ ============ */
.trust { border-top:1px solid var(--line-soft); border-bottom:1px solid var(--line-soft); padding: var(--s7) 0; }
.trust__row { display:flex; flex-wrap:wrap; gap: var(--s6) var(--s9); align-items:center; justify-content:space-between; }
/* НЕ flex: внутри — обычный строчный поток, иначе flex обрезает пробелы у текстовых
   узлов и раздаёт одинаковый gap между КАЖДЫМ (пробел перед запятой «50/50 ,»). */
.trust__item { display: block; color: var(--ink-2); font-size:15px; }
.trust__item svg { width:22px; height:22px; color: var(--accent-2); display:inline-block; vertical-align:-6px; margin-right:9px; }
.trust__item b { color: var(--ink); }

/* ============ СЕКЦИИ ============ */
.section { padding: var(--s12) 0; position:relative; }
.section__head { max-width: 640px; margin-bottom: var(--s9); }
.section__head .eyebrow { font-size:15px; }
.section h2 { font-size: clamp(1.8rem, 1.2rem + 2.4vw, 2.8rem); }
.section__head p { color: var(--ink-2); margin-top: var(--s4); }

/* процесс — нумерованный список с коннекторами (референс) */
.proc { display:grid; gap: var(--s4); }
@media (min-width: 760px){ .proc { grid-template-columns: 1fr 1fr; gap: var(--s7) var(--s9); } }
.proc__item { display:grid; grid-template-columns: auto 1fr; gap: var(--s5); }
.proc__n {
  width:52px; height:52px; border-radius:50%; flex:none;
  display:grid; place-items:center; font-weight:800; color: var(--ink); font-size:18px;
  border:1.5px solid var(--accent); background: rgba(var(--glow-rgb),.14);
}
.proc__item h3 { font-size:20px; margin-bottom:6px; }
.proc__item p { color: var(--ink-2); font-size:15px; }

/* карточки услуг */
.cards { display:grid; gap: var(--s5); }
@media (min-width: 640px){ .cards { grid-template-columns: repeat(2,1fr); } }
@media (min-width: 980px){ .cards { grid-template-columns: repeat(3,1fr); } }
.card {
  background: linear-gradient(180deg, var(--surface), var(--bg-2));
  border:1px solid var(--line); border-radius: var(--r-xl); padding: var(--s7);
  display:flex; flex-direction:column; gap: var(--s3); min-height:100%;
  transition: transform .18s, border-color .18s, box-shadow .18s;
}
.card:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: var(--shadow); }
.card__ico {
  width:56px; height:56px; border-radius:15px; display:grid; place-items:center; margin-bottom: var(--s3);
  background: rgba(var(--glow-rgb),.16); color: var(--accent-2); border:1px solid var(--line);
}
.card__ico svg { width:28px; height:28px; }
.card h3 { font-size:21px; }
.card p { color: var(--ink-2); font-size:15px; flex:1; }
.card__price { color: var(--ink); font-weight:800; font-size:22px; margin-top: var(--s3); }
.card__price span { color: var(--muted); font-size:13px; font-weight:600; }
.card--feature { border-color: var(--accent); box-shadow: var(--glow); }
/* на светлой теме карточки нужно приподнять тенью, иначе белое сливается */
:root[data-theme="light"] .card { box-shadow: 0 6px 22px rgba(10,31,44,.06); }
:root[data-theme="light"] .card:hover { box-shadow: 0 16px 40px rgba(10,31,44,.12); }
/* «честная» карточка — пунктир, приглушённая */
.card--honest { border-style: dashed; background: var(--surface-2); }
.card--honest .card__ico { background: var(--surface-2); color: var(--ink-2); }
.chip {
  align-self:flex-start; font-size:12px; font-weight:700; color:#fff;
  background: var(--accent-deep);   /* #0B6FB8 — белый 5.28 в обеих темах */
  padding:5px 12px; border-radius: var(--r-pill);
}

/* ============ CTA + ФОРМА ============ */
.cta {
  background: linear-gradient(135deg, rgba(var(--glow-rgb),.18), rgba(63,182,255,.08));
  border:1px solid var(--line); border-radius: var(--r-2xl); padding: var(--s10);
  position:relative; overflow:hidden;
}
.cta__grid { display:grid; gap: var(--s9); align-items:center; }
@media (min-width: 900px){ .cta__grid { grid-template-columns: 1.1fr .9fr; } }
.cta h2 { font-size: clamp(1.7rem,1.2rem+2vw,2.6rem); }
.cta p { color: var(--ink-2); margin-top: var(--s4); }
.form { display:grid; gap: var(--s4); }
.form input[type=text], .form input[type=tel] {
  width:100%; min-height:56px; padding: 0 var(--s5); border-radius: var(--r-pill);
  background: var(--bg-2); border:1.5px solid var(--line); color: var(--ink); font-size:16px;
}
.form input::placeholder { color: var(--muted); }
.form input:focus { outline:none; border-color: var(--accent-2); box-shadow: 0 0 0 3px rgba(var(--glow-rgb),.25); }
.form__consent { display:flex; gap: var(--s3); align-items:flex-start; color: var(--muted); font-size:12px; }
.form__consent input { width:22px; height:22px; flex:none; accent-color: var(--accent); }

/* ============ ПОДВАЛ + ДИСКЛЕЙМЕР ============ */
.footer { border-top:1px solid var(--line-soft); padding: var(--s10) 0 var(--s7); }
.footer__grid { display:grid; gap: var(--s8); }
@media (min-width: 760px){ .footer__grid { grid-template-columns: 1.5fr 1fr 1fr; } }
.footer h4 { color: var(--ink); font-size:14px; text-transform:uppercase; letter-spacing:.08em; margin-bottom: var(--s4); }
.footer li+li { margin-top: var(--s3); }
.footer a { color: var(--ink-2); }
.footer a:hover { color: var(--ink); }
.footer__legal { margin-top: var(--s8); padding-top: var(--s6); border-top:1px solid var(--line-soft); color: var(--muted); font-size:13px; display:flex; flex-wrap:wrap; gap: var(--s4) var(--s6); }

.disclaimer {
  background: linear-gradient(90deg, #0B6FB8, #0A66A9); color:#fff;  /* deep blue, белый 5.28+ */
  font-size:13px; padding: var(--s3) 0;
}
.disclaimer .wrap { display:flex; gap: var(--s4); align-items:center; justify-content:center; text-align:center; }

/* печать «Зачтено» — единственный зелёный акцент */
.stamp {
  display:inline-flex; align-items:center; gap:6px; padding:8px 14px; border-radius:12px;
  background: var(--ok); color:#fff;   /* сплошная зелёная пилюля, белый 4.4 обе темы */
  font-weight:800; font-size:14px;
}
.stamp svg { width:16px; height:16px; }

/* чередование фона секций для ритма */
.section--alt { background: var(--bg-2); }
:root[data-theme="light"] .section--alt { background: #FFFFFF; }

/* ---- КЕЙСЫ ---- */
.cases { display:grid; gap: var(--s5); }
@media (min-width:640px){ .cases { grid-template-columns: repeat(2,1fr); } }
@media (min-width:980px){ .cases { grid-template-columns: repeat(3,1fr); } }
.case {
  background: var(--surface); border:1px solid var(--line); border-radius: var(--r-xl);
  overflow:hidden; display:flex; flex-direction:column; transition: transform .18s, border-color .18s, box-shadow .18s;
}
.case:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: var(--shadow); }
:root[data-theme="light"] .case { box-shadow: 0 6px 22px rgba(10,31,44,.06); }
.case__cover { aspect-ratio:16/8; background: linear-gradient(135deg, rgba(var(--glow-rgb),.18), var(--surface-2)); position:relative; }
.case__cover svg { position:absolute; inset:0; width:100%; height:100%; }
.case__body { padding: var(--s6); display:flex; flex-direction:column; gap: var(--s3); flex:1; }
.case__meta { display:flex; flex-wrap:wrap; gap: var(--s2); }
.case h3 { font-size:19px; }
.case p { color: var(--ink-2); font-size:14px; }
.chip--soft { background: var(--surface-2); color: var(--ink-2); border:1px solid var(--line); font-weight:600; }
.case__result {
  margin-top:auto; display:flex; align-items:center; gap: var(--s2);
  padding: var(--s3) var(--s4); border-radius:12px; font-weight:700; font-size:14px;
  background: rgba(11,138,79,.14); color: #17b06a; border:1px solid rgba(11,138,79,.35);
}
:root[data-theme="light"] .case__result { color:#0B6B3C; }
.case__result svg { width:18px; height:18px; }

/* ---- КОМАНДА ---- */
.people { display:grid; gap: var(--s6); }
@media (min-width:640px){ .people { grid-template-columns: repeat(3,1fr); } }
.person__photo {
  aspect-ratio:4/5; border-radius: var(--r-lg); overflow:hidden; margin-bottom: var(--s4);
  background: linear-gradient(160deg, rgba(var(--glow-rgb),.20), var(--surface-2));
  display:grid; place-items:center;
}
.person__photo span { font-size:44px; font-weight:800; color: var(--accent-2); }
.person h3 { font-size:19px; }
.person p { color: var(--ink-2); font-size:14px; margin-top:4px; }

/* ---- ОТЗЫВЫ (фасад Яндекс.Карт) ---- */
.reviews {
  background: var(--surface); border:1px solid var(--line); border-radius: var(--r-2xl);
  padding: var(--s11) var(--s7); text-align:center; display:grid; gap: var(--s5); place-items:center;
}
@media (max-width:560px){ .reviews { padding: var(--s9) var(--s5); } }
:root[data-theme="light"] .reviews { box-shadow: 0 10px 30px rgba(10,31,44,.06); }
.reviews > * { max-width:100%; }
.reviews .btn { white-space:normal; }   /* длинная подпись не должна распирать блок */
.reviews__big { display:flex; align-items:center; gap: var(--s5); flex-wrap:wrap; justify-content:center; }
.reviews__num { font-size: clamp(44px, 8vw, 64px); font-weight:800; color: var(--ink); line-height:1; letter-spacing:-.04em; }
.reviews__stars { color:#F0A05A; font-size:24px; letter-spacing:2px; }
.reviews__meter { width:min(320px,100%); height:10px; border-radius:999px; background: var(--surface-2); overflow:hidden; border:1px solid var(--line); }
.reviews__meter span { display:block; height:100%; width:88%; background: linear-gradient(90deg, var(--accent-deep), var(--accent)); }

/* ---- FAQ ---- */
.faq { display:grid; gap: var(--s3); max-width: 860px; margin-inline:auto; }
.faq__item { background: var(--surface); border:1px solid var(--line); border-radius: var(--r-lg); overflow:hidden; }
:root[data-theme="light"] .faq__item { box-shadow: 0 4px 16px rgba(10,31,44,.04); }
.faq__item summary {
  list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap: var(--s4);
  padding: var(--s5) var(--s6); font-weight:700; font-size:17px; color: var(--ink);
}
.faq__item summary::-webkit-details-marker { display:none; }
.faq__item summary::after { content:"+"; color: var(--accent-2); font-size:26px; font-weight:400; line-height:1; flex:none; transition: transform .2s; }
.faq__item[open] summary::after { transform: rotate(45deg); }
.faq__item .faq__body { padding: 0 var(--s6) var(--s6); color: var(--ink-2); font-size:15px; }

.mt-6{margin-top:var(--s6)} .mt-8{margin-top:var(--s8)}

/* ============================================================
   СЛОЙ СОВМЕСТИМОСТИ ДЛЯ WORDPRESS (v7)
   ------------------------------------------------------------
   Внутренние шаблоны (single-service, page-tseny, page-otzyvy,
   page, 404) и хелперы (tulgu_render_form / _messengers / _cta)
   выводят «легаси»-классы. Здесь они получают тёмно-премиальный
   вид v7, чтобы сайт был цельным до полной перевёрстки каждой
   страницы. Токены/темы/кнопки берутся из v7 выше.
   ============================================================ */

.center { text-align:center; }

/* сетки внутренних страниц */
.grid { display:grid; gap: var(--s5); align-items:stretch; }
.grid > * { min-width:0; }
@media (min-width:640px){ .grid--2, .grid--3, .grid--4 { grid-template-columns: repeat(2,1fr); } }
@media (min-width:980px){ .grid--3 { grid-template-columns: repeat(3,1fr); } .grid--4 { grid-template-columns: repeat(4,1fr); } }

/* .card как ссылка (услуги на главной/архиве) */
a.card { text-decoration:none; color:inherit; }
.card h3 { margin-bottom: var(--s2); }
.card > p { color: var(--ink-2); font-size:15px; }
.card__price { color: var(--ink); font-weight:800; font-size:22px; margin-top: var(--s3); }
.card__price span { display:block; color: var(--muted); font-size:13px; font-weight:600; margin-top:2px; }

/* мягкая секция */
.section--soft { background: var(--bg-2); }
:root[data-theme="light"] .section--soft { background:#fff; }

/* теги/чипы кейсов */
.tag { display:inline-flex; align-items:center; padding:5px 12px; border-radius:999px; font-size:12px; font-weight:700;
  background: var(--surface-2); color: var(--ink-2); border:1px solid var(--line); }
.tag--ok { background: rgba(11,138,79,.16); color:#17b06a; border-color: rgba(11,138,79,.4); }
:root[data-theme="light"] .tag--ok { color:#0B6B3C; }
.case__meta { display:flex; flex-wrap:wrap; gap: var(--s2); margin-bottom: var(--s3); }
.case__row { display:flex; gap: var(--s3); font-size:14px; color: var(--ink-2); }
.case__row dt { color: var(--muted); }

/* блок-акцент .notice */
.notice { background: linear-gradient(135deg, rgba(var(--glow-rgb),.14), var(--surface-2));
  border:1px solid var(--line); border-left:4px solid var(--accent); border-radius: var(--r-lg);
  padding: var(--s6); margin: var(--s7) 0; }
.notice p { color: var(--ink-2); }
.notice strong { color: var(--ink); }

/* типографика статей .prose */
.prose { max-width: 780px; }
.prose h2 { font-size: clamp(1.5rem,1.2rem+1.4vw,2rem); margin: var(--s8) 0 var(--s4); }
.prose h3 { font-size:20px; margin: var(--s6) 0 var(--s3); }
.prose p { color: var(--ink-2); margin-bottom: var(--s4); }
.prose ul { display:grid; gap: var(--s3); margin: var(--s4) 0; padding-left: var(--s5); list-style: disc; }
.prose li { color: var(--ink-2); }
.prose li::marker { color: var(--accent-2); }
.prose strong { color: var(--ink); }
.prose a { color: var(--accent-2); text-decoration: underline; text-underline-offset:3px; }

/* хлебные крошки */
.crumbs { padding: var(--s5) 0; font-size:14px; color: var(--muted); }
.crumbs a { color: var(--ink-2); }
.crumbs a:hover { color: var(--ink); }
.crumbs [aria-current="page"] { color: var(--ink); }

/* таблица цен */
.price-table { border:1px solid var(--line); border-radius: var(--r-xl); overflow:hidden; background: var(--surface); }
:root[data-theme="light"] .price-table { box-shadow: 0 6px 22px rgba(10,31,44,.06); }
.price-table__head, .price-table__row {
  display:grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: var(--s4); align-items:center;
  padding: var(--s4) var(--s6);
}
.price-table__head { background: var(--surface-2); font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:.05em; color: var(--muted); }
.price-table__row { border-top:1px solid var(--line); }
.price-table__row:hover { background: var(--surface-2); }
.price-table__name a { color: var(--ink); font-weight:700; text-decoration:none; }
.price-table__name a:hover { color: var(--accent-2); }
.price-table__row span { color: var(--ink-2); font-variant-numeric: tabular-nums; }
.price-table__single { grid-column: 2 / 4; }
@media (max-width:700px){
  .price-table__head { display:none; }
  .price-table__row { grid-template-columns: 1fr 1fr; gap: var(--s2) var(--s4); }
  .price-table__name { grid-column: 1 / -1; margin-bottom: var(--s2); }
  .price-table__row span[data-label]::before { content: attr(data-label) ": "; color: var(--muted); font-size:12px; }
}

/* форма (tulgu_render_form → .form-box + CF7) */
.form-box {
  background: var(--surface); border:1px solid var(--line); border-radius: var(--r-2xl);
  padding: var(--s8); display:grid; gap: var(--s4);
}
:root[data-theme="light"] .form-box { box-shadow: 0 10px 30px rgba(10,31,44,.07); }
.form-box h2 { font-size:24px; }
.form-box__note { color: var(--ink-2); font-size:15px; margin-top:-6px; }
/* убрать пустую «рамку» над полями (CF7 оборачивает скрытые поля в <fieldset>) */
.form-box fieldset, .wpcf7 fieldset { border:0; margin:0; padding:0; min-inline-size:auto; }
.form-box .hidden-fields-container { display:none; }
/* интервал между полями формы + убрать <p> только со скрытыми utm-полями */
.form-box form > p { margin: 0 0 var(--s5); }
.form-box form > p:has(input[type="hidden"]):not(:has(input:not([type="hidden"]))) { display:none; }

/* мобильные статы героя: ровный ряд из трёх, а не 2+1 внахлёст */
@media (max-width: 939px){
  .hero__stats { display:grid; grid-template-columns: repeat(3, 1fr); gap: var(--s4); margin-top: var(--s7); text-align:left; }
  .hero__stats .stat__num { font-size: 28px; }
  .hero__stats .stat__lbl { font-size: 12px; max-width: none; margin-left:0; }
}
@media (max-width: 380px){ .hero__stats .stat__num { font-size: 24px; } }

/* ⚠ :not(.wpcf7-acceptance) обязателен — обёртка чекбокса согласия тоже имеет
   класс wpcf7-form-control и без исключения красилась как поле (чёрная плашка). */
.form-box input[type=text], .form-box input[type=tel], .form-box input[type=email],
.form-box textarea,
.form-box .wpcf7-form-control.wpcf7-text,
.form-box .wpcf7-form-control.wpcf7-tel {
  width:100%; min-height:56px; padding:0 var(--s5); border-radius:999px;
  background: var(--bg-2); border:1.5px solid var(--line); color: var(--ink); font-size:16px;
}
.form-box textarea { min-height:120px; padding: var(--s4) var(--s5); border-radius: var(--r-lg); }
/* обёртки-спаны CF7 не должны иметь фона/бордера */
.form-box .wpcf7-form-control-wrap, .form-box .wpcf7-acceptance, .form-box .wpcf7-list-item { background:none; border:0; }
.form-box input:focus { outline:none; border-color: var(--accent-2); box-shadow:0 0 0 3px rgba(var(--glow-rgb),.25); }
.form-box .wpcf7-submit {
  min-height:56px; padding:0 var(--s8); border:0; border-radius:999px; cursor:pointer;
  color:#fff; font-weight:700; font-size:16px; text-shadow:0 1px 1px rgba(0,0,0,.20);
  background:#039DFC; box-shadow:none;   /* плоская, без градиента и свечения */
}
.form-box .wpcf7-submit:hover { background:#0B90EE; }
.form-box .wpcf7-list-item { margin:0; }
.form-box .wpcf7-acceptance label { display:flex; gap: var(--s3); align-items:flex-start; color: var(--muted); font-size:12px; }
.form-box .wpcf7-acceptance input { width:20px; height:20px; flex:none; accent-color: var(--accent); }
.wpcf7 .wpcf7-response-output { border-radius:12px; border-color: var(--line); color: var(--ink-2); margin: var(--s3) 0 0; }

/* мессенджеры (tulgu_render_messengers → .messengers) */
.messengers { margin-top: var(--s5); padding-top: var(--s5); border-top:1px solid var(--line); }
.messengers__note { color: var(--muted); font-size:14px; text-align:center; margin-bottom: var(--s3); }
.messengers__row { display:grid; grid-template-columns:1fr 1fr; gap: var(--s3); }
.messengers__btn {
  display:flex; align-items:center; justify-content:center; gap: var(--s2); min-height:52px;
  border-radius:999px; text-decoration:none; font-weight:700;
  background: rgba(var(--glow-rgb),.14); color: var(--accent-2); border:1px solid var(--line);
}
.messengers__btn:hover { background: var(--surface-2); border-color: var(--accent); }
.messengers__btn svg { width:22px; height:22px; }

/* компактный CTA (tulgu_render_cta → .cta-strip) */
.cta-strip { display:flex; flex-wrap:wrap; align-items:center; gap: var(--s4);
  background: linear-gradient(135deg, rgba(var(--glow-rgb),.16), var(--surface-2));
  border:1px solid var(--line); border-radius: var(--r-xl); padding: var(--s6) var(--s7); margin: var(--s8) 0; }
.cta-strip__note { color: var(--ink-2); flex:1; min-width:220px; }

/* легаси-кнопки → на v7-первичную/призрачную */
.btn--cta, .btn--brand {
  color:#fff; text-shadow:0 1px 1px rgba(0,0,0,.20);
  background:#039DFC; box-shadow:none;   /* плоская */
}
.btn--cta:hover, .btn--brand:hover { background:#0B90EE; }
.btn--ghost-brand { color: var(--ink); background:transparent; border-color: var(--line); }
.btn--ghost-brand:hover { border-color: var(--accent-2); background: rgba(var(--glow-rgb),.10); }

/* ============ ВНУТРЕННИЕ СТРАНИЦЫ v7 (цены, услуга) ============ */
.pagehead { position:relative; padding: var(--s11) 0 var(--s8); }
.pagehead h1 { font-size: clamp(2.1rem, 1.5rem + 2.4vw, 3.1rem); }
.pagehead__lead { color: var(--ink-2); font-size:18px; max-width: 62ch; margin-top: var(--s5); }

.pagehero { position:relative; padding: var(--s10) 0 var(--s9); }
.pagehero__grid { display:grid; gap: var(--s8); align-items:start; }
@media (min-width:940px){ .pagehero__grid { grid-template-columns: 1.1fr minmax(340px,.9fr); align-items:center; } }
.pagehero h1 { font-size: clamp(2rem, 1.4rem + 2.2vw, 2.9rem); }
.pagehero__lead { color: var(--ink-2); font-size:18px; margin-top: var(--s5); max-width: 52ch; }
.pagehero__points { display:grid; gap: var(--s3); margin: var(--s6) 0; }
.pagehero__points li { display:flex; gap: var(--s3); align-items:flex-start; color: var(--ink-2); font-size:15px; }
.pagehero__points li svg { width:20px; height:20px; flex:none; color: var(--accent-2); margin-top:1px; }

/* тарифы услуги */
.tiers { display:grid; gap: var(--s4); }
@media (min-width:560px){ .tiers { grid-template-columns: repeat(auto-fit, minmax(220px,1fr)); } }
.tier { display:flex; flex-direction:column; gap:4px; padding: var(--s6);
  background: var(--surface); border:1px solid var(--line); border-radius: var(--r-xl); }
:root[data-theme="light"] .tier { box-shadow: 0 6px 22px rgba(10,31,44,.06); }
.tier__name { color: var(--ink-2); font-size:14px; }
.tier__price { color: var(--ink); font-weight:800; font-size:26px; letter-spacing:-.02em; }

/* строка метрик (цена/срок/рейтинг) */
.metrics { display:grid; gap: var(--s4); grid-template-columns: repeat(auto-fit, minmax(160px,1fr)); }
.metric { padding: var(--s6); background: var(--surface); border:1px solid var(--line); border-radius: var(--r-xl); }
:root[data-theme="light"] .metric { box-shadow: 0 6px 22px rgba(10,31,44,.06); }
.metric b { display:block; color: var(--ink); font-size:24px; font-weight:800; letter-spacing:-.02em; }
.metric span { color: var(--ink-2); font-size:14px; }
.metric span a { color: var(--accent-2); }

/* плашка cookie (mu-plugin tulgu-cookie.php) — не было стилей, висела голым текстом */
.cookie-notice {
  position: fixed; left: var(--s5); right: var(--s5); bottom: var(--s5); z-index: 95;
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--s4);
  background: var(--surface); border:1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: var(--shadow); padding: var(--s4) var(--s5); font-size:14px; color: var(--ink-2);
}
@media (min-width:768px){ .cookie-notice { left:auto; max-width: 460px; } }
.cookie-notice__text { flex:1; min-width: 200px; margin:0; line-height:1.5; }
.cookie-notice a { color: var(--accent-2); text-decoration: underline; text-underline-offset:2px; }
.cookie-notice__btn { flex:none; min-height:44px; padding-inline: var(--s6); font-size:15px; }

/* Max нарисован во всю рамку (viewBox 100×100), Telegram ~83% — оптически ужимаем Max */
.messengers__btn svg:has(use[href="#i-max"]),
.person__btn svg:has(use[href="#i-max"]),
.iconbtn svg:has(use[href="#i-max"]) { transform: scale(.86); }

/* skip-link */
.skip-link { position:absolute; left:16px; top:-100px; z-index:200; background: var(--surface); color: var(--ink);
  padding: var(--s3) var(--s5); border-radius:12px; box-shadow: var(--shadow); font-weight:700; }
.skip-link:focus { top:16px; }

/* меню WordPress (wp_nav_menu → ul>li>a) внутри .nav.
   Меню длинное (8 пунктов) → компактный шаг и кегль, чтобы уместить в строку;
   flex-wrap — страховка от переполнения на узких десктопах. */
.nav ul { display:flex; align-items:center; gap: var(--s3); list-style:none; margin:0; padding:0; flex-wrap:wrap; }
.nav li { margin:0; }
.nav a { font-size:14px; white-space:nowrap; }
.nav { min-width:0; }
/* шапка шире контента — вместить длинное меню + телефон. Меню показываем с 1200px. */
.header .wrap { max-width: 1360px; }
@media (min-width:1000px) and (max-width:1199px){ .nav { display:none; } .burger { display:grid; } }
@media (min-width:1000px){ .header__inner { gap: var(--s4); } }

/* фото сотрудников (реальные миниатюры): кадрируем от ВЕРХА — режем снизу,
   чтобы голова была целиком (владелец: не обрезать головы) */
.person__photo img { width:100%; height:100%; object-fit:cover; object-position: top center; }
/* кнопки связи под фото менеджера */
.person__contact { display:flex; gap: var(--s2); margin-top: var(--s4); }
.person__btn {
  display:flex; align-items:center; justify-content:center; gap: 6px; flex:1; min-height:44px;
  border-radius:999px; text-decoration:none; font-weight:700; font-size:14px;
  background: rgba(var(--glow-rgb),.14); color: var(--accent-2); border:1px solid var(--line);
}
.person__btn:hover { background: var(--surface-2); border-color: var(--accent); }
.person__btn svg { width:18px; height:18px; }

/* HERO: иллюстрацию поднять к верху строки (не центрировать по высоте),
   кнопки — уже, чтобы вставали в одну линию */
@media (min-width:940px){ .hero__art { align-self: start; margin-top: var(--s4); } }
.hero__cta .btn { padding-inline: var(--s6); }
/* правый блок статов опустить на уровень H1 (эйбрау над H1 занимает ~45px) */
@media (min-width:1040px){ .hero__stats { margin-top: 45px; } }

/* бургер-панель (details) на мобильном */
.burger { position:relative; }
.burger > summary { list-style:none; }
.burger > summary::-webkit-details-marker { display:none; }
.burger[open] > summary { background: var(--surface-2); border-color: var(--accent); }
.burger__panel { position:absolute; right:0; top:calc(100% + 8px); width:min(84vw,300px);
  background: var(--surface); border:1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: var(--shadow); padding: var(--s3); display:grid; gap:2px; z-index:30; }
.burger__panel ul { list-style:none; margin:0; padding:0; display:grid; gap:2px; }
.burger__panel a { display:flex; align-items:center; min-height:48px; padding:0 var(--s4);
  border-radius:12px; color: var(--ink); text-decoration:none; font-weight:600; }
.burger__panel a:hover { background: var(--surface-2); }
.burger__phone { justify-content:center; gap:8px; background: var(--accent-deep); color:#fff !important; font-weight:700; margin-bottom: var(--s2); }
.burger__phone svg { width:18px; height:18px; }

/* .uhead — визуальный заголовок карточки/шага БЕЗ семантики <h3>.
   Заголовки карточек (выгоды, гарантии, шаги, услуги) — это лейблы, а не подзаголовки
   раздела: держать их в <h3> засоряет структуру заголовков для SEO. Реальные подзаголовки
   в тексте статьи (.prose h3) и заголовки разделов (.section__head h2) остаются как есть. */
.uhead { color: var(--ink); line-height: 1.1; font-weight: 800; letter-spacing: -0.02em; font-size: 21px; margin: 0 0 var(--s2); }
.proc__item .uhead { font-size: 20px; margin-bottom: 6px; }
.case .uhead { font-size: 19px; }
.person .uhead { font-size: 19px; }

/* ═══ Статья: блоки инфо-раздела /articles/ ═══════════════════════════════ */

/* Прогресс чтения */
.readbar { position: fixed; top: 0; left: 0; right: 0; height: 3px; background: transparent; z-index: 60; pointer-events: none; }
.readbar span { display: block; height: 100%; width: 0; background: var(--accent); transition: width .1s linear; }

/* Мета-строка: автор · дата · время чтения */
.article-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s3); margin-top: var(--s5); color: var(--ink-2); font-size: 14px; }
.article-meta__author { display: inline-flex; align-items: center; gap: var(--s2); color: var(--ink); font-weight: 600; }
.article-meta__ava { width: 28px; height: 28px; border-radius: 50%; overflow: hidden; background: var(--surface-2); display: inline-grid; place-items: center; flex: none; }
.article-meta__ava img { width: 100%; height: 100%; object-fit: cover; }
.article-meta__ava b { color: var(--accent-2); font-size: 13px; }
.article-meta__sep { color: var(--muted); }

/* Быстрый ответ (TL;DR) */
.notice--answer { border-left: 4px solid var(--accent); }
.notice__label { text-transform: uppercase; letter-spacing: .08em; font-size: 12px; font-weight: 800; color: var(--accent-2); margin: 0 0 var(--s2); }

/* Сетка: оглавление + тело */
.article-grid { display: block; }
@media (min-width: 1000px) {
  .article-grid { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: var(--s8); align-items: start; }
  .article-grid .toc { position: sticky; top: 96px; }
}

/* Оглавление */
.toc { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: var(--s5) var(--s6); margin-bottom: var(--s6); }
.toc__title { font-weight: 800; color: var(--ink); margin: 0 0 var(--s3); font-size: 15px; }
.toc ol { list-style: none; margin: 0; padding: 0; }
.toc__item { margin: 0 0 var(--s2); font-size: 14px; line-height: 1.4; }
.toc__item--h3 { padding-left: var(--s4); }
.toc__item a { color: var(--ink-2); }
.toc__item a:hover { color: var(--accent-2); }

/* Врезки в тексте (.callout) — вставляются редактором в контент */
.prose .callout { background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--r-lg); padding: var(--s5) var(--s6); margin: var(--s6) 0; }
.prose .callout > *:last-child { margin-bottom: 0; }
.prose .callout--warn { border-color: color-mix(in srgb, #E0A33A 45%, var(--line)); background: color-mix(in srgb, #E0A33A 10%, var(--surface)); }

/* CTA в середине текста */
.article-cta { margin: var(--s7) 0; }

/* Дисклеймер */
.article-disclaimer { display: flex; gap: var(--s3); align-items: flex-start; margin-top: var(--s7); padding: var(--s4) var(--s5); border-radius: var(--r-lg); background: var(--surface-2); color: var(--ink-2); font-size: 14px; }
.article-disclaimer svg { width: 18px; height: 18px; flex: none; margin-top: 2px; fill: var(--muted); }

/* Источники */
.sources { margin-top: var(--s7); padding-top: var(--s6); border-top: 1px solid var(--line); }
.sources__title { font-weight: 800; color: var(--ink); margin: 0 0 var(--s3); font-size: 15px; }
.sources ul { margin: 0; padding-left: var(--s5); color: var(--ink-2); font-size: 14px; }
.sources li { margin-bottom: var(--s2); }

/* Поделиться */
.share { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s3); margin-top: var(--s7); }
.share__label { color: var(--muted); font-size: 14px; }
.share__btn { display: inline-flex; align-items: center; gap: var(--s2); padding: 8px 14px; border-radius: 999px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); font-size: 14px; font-weight: 600; cursor: pointer; font-family: inherit; }
.share__btn svg { width: 16px; height: 16px; fill: currentColor; }
.share__btn:hover { border-color: var(--accent-2); color: var(--accent-2); }
.share__btn.is-copied { border-color: var(--accent); color: var(--accent-2); }

/* Карточка автора (E-E-A-T) */
.author-box { display: flex; gap: var(--s5); align-items: flex-start; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-xl); padding: var(--s6); }
.author-box__ava { width: 72px; height: 72px; border-radius: 50%; overflow: hidden; flex: none; background: var(--surface-2); display: grid; place-items: center; }
.author-box__ava img { width: 100%; height: 100%; object-fit: cover; }
.author-box__ava span { color: var(--accent-2); font-size: 26px; font-weight: 800; }
.author-box__eyebrow { text-transform: uppercase; letter-spacing: .08em; font-size: 11px; font-weight: 800; color: var(--muted); margin: 0 0 4px; }
.author-box__name { color: var(--ink); font-weight: 800; font-size: 18px; margin: 0 0 var(--s2); }
.author-box__name span { color: var(--ink-2); font-weight: 600; }
.author-box__spec { color: var(--ink-2); font-size: 14px; margin: 0 0 var(--s3); }
.author-box__link { display: inline-flex; align-items: center; gap: var(--s2); font-weight: 700; color: var(--accent-2); font-size: 14px; }
.author-box__link svg { width: 16px; height: 16px; fill: currentColor; }
@media (max-width: 560px) { .author-box { flex-direction: column; } }

/* Соц-доказательство у CTA + карточка услуги под статьёй */
.article-proof { margin-top: var(--s6); }
.article-service { max-width: 640px; }

/* ═══ Архив статей /articles/ и рубрики ═══════════════════════════════════ */

/* Навигация по кластерам */
.cluster-nav { display: flex; flex-wrap: wrap; gap: var(--s3); margin-bottom: var(--s7); }
.cluster-nav__chip { display: inline-flex; align-items: center; padding: 9px 18px; border-radius: var(--r-pill); border: 1px solid var(--line); background: var(--surface); color: var(--ink); font-weight: 600; font-size: 14px; }
.cluster-nav__chip:hover { border-color: var(--accent-2); color: var(--accent-2); }
.cluster-nav__chip--active { background: var(--accent); border-color: var(--accent); color: #fff; }
.cluster-nav__chip--active:hover { color: #fff; }

/* Карточка статьи */
.article-card { display: flex; flex-direction: column; }
.article-card__cover { margin-bottom: var(--s5); border-radius: 12px; overflow: hidden; aspect-ratio: 3 / 2; background: var(--surface-2); }
.article-card__cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.article-card .uhead { margin-top: var(--s3); }
.article-card__meta { margin-top: auto; padding-top: var(--s4); color: var(--muted); font-size: 13px; }

/* Пагинация (the_posts_pagination) */
.pagination { margin-top: var(--s8); }
.pagination .nav-links { display: flex; flex-wrap: wrap; gap: var(--s2); justify-content: center; align-items: center; }
.pagination .page-numbers { display: inline-grid; place-items: center; min-width: 44px; height: 44px; padding: 0 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); font-weight: 700; }
.pagination a.page-numbers:hover { border-color: var(--accent-2); color: var(--accent-2); }
.pagination .page-numbers.current { background: var(--accent); border-color: var(--accent); color: #fff; }
.pagination .page-numbers.dots { border: 0; background: transparent; min-width: auto; }

/* Кнопки внутри .prose (мид-CTA в теле статьи) не должны наследовать стиль текстовых
   ссылок (.prose a — синий + подчёркивание), иначе текст кнопки сливается с заливкой. */
.prose a.btn { text-decoration: none; }
.prose a.btn--cta, .prose a.btn--brand, .prose a.btn--primary { color: #fff; }
.prose a.btn--ghost-brand, .prose a.btn--ghost { color: var(--ink); }

/* Мид-CTA статьи: слева текст с иконкой (иконка справа от текста), справа — кнопки в одну линию. */
.cta-strip { gap: var(--s5) var(--s6); }
.cta-strip__lead { display:flex; align-items:center; gap: var(--s5); flex:1 1 280px; min-width:0; }
.cta-strip__note { color: var(--ink-2); flex:1; margin:0; }
.cta-strip__ico { flex:none; width:54px; height:54px; line-height:0; }
.cta-strip__ico svg { width:100%; height:100%; display:block; }
.cta-strip__actions { display:flex; flex-wrap:nowrap; align-items:center; gap: var(--s3); }
@media (max-width:600px){
  .cta-strip__actions { flex-wrap:wrap; width:100%; }
  .cta-strip__actions .btn { flex:1 1 160px; }
}

/* Таблицы в тексте статьи (.prose). display:block+overflow-x — скролл на узких экранах. */
.prose table { display:block; width:100%; overflow-x:auto; border-collapse:collapse; margin: var(--s6) 0; font-size:14px; }
.prose table thead th { background: var(--surface-2); color: var(--ink); font-weight:700; text-align:left; white-space:nowrap; }
.prose table th, .prose table td { border:1px solid var(--line); padding: var(--s3) var(--s4); color: var(--ink-2); vertical-align:top; }
.prose table tbody td:first-child { color: var(--ink); font-weight:600; }

/* Стандартный WP-класс: визуально скрыть, оставив для скринридеров (заголовок пагинации и т.п.). */
.screen-reader-text { border:0; clip:rect(1px,1px,1px,1px); clip-path:inset(50%); height:1px; width:1px; margin:-1px; overflow:hidden; padding:0; position:absolute!important; word-wrap:normal!important; }

/* ═══ FIX (мобайл): CTA-форма и pagehero не влезали — обрезались поля ввода ═══ */
/* Причина: жёсткая auto-колонка грида + .cta padding 64px на узких экранах. */
/* min-width:0 разрешает грид-детям сжиматься; minmax(0,1fr) клампит колонку по контейнеру. */
.form, .form-box, .form-box form, .cta__grid > *, .pagehero__grid > * { min-width: 0; }
@media (max-width: 899px){ .cta__grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 939px){ .pagehero__grid { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 600px){ .cta { padding: var(--s7); } }
/* ═══ Задача: мессенджеры в бургер-меню ═══ */
.burger__socials { display:flex; gap:10px; margin-top:14px; padding-top:14px; border-top:1px solid var(--line); }
.burger__socials a { flex:1; display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:11px 10px; border:1px solid var(--line); border-radius:12px; color:var(--ink); font-weight:700; font-size:14px; }
.burger__socials a:hover { border-color: var(--accent-2); color: var(--accent-2); }
.burger__socials svg { width:18px; height:18px; }

/* ═══ Задача: сворачивание длинного блока «По предметам» ═══ */
.cards--collapsible.is-collapsed > .card:nth-child(n+9) { display:none; }
@media (max-width:600px){ .cards--collapsible.is-collapsed > .card:nth-child(n+5) { display:none; } }
.collapse-toggle { display:inline-flex; align-items:center; gap:8px; }
.collapse-toggle__ico { transition: transform .2s ease; transform: rotate(90deg); }
.collapse-toggle[aria-expanded="true"] .collapse-toggle__ico { transform: rotate(-90deg); }

/* ═══ Задача: cookie-баннер (по образцу dist-help) ═══ */
.cookie-consent { position:fixed; left:0; right:0; bottom:0; z-index:120; background:var(--surface); border-top:1px solid var(--line); box-shadow:0 -8px 30px rgba(10,31,44,.18); transform:translateY(100%); transition:transform .3s ease; }
.cookie-consent.is-visible { transform:translateY(0); }
.cookie-consent__inner { display:flex; align-items:center; gap:20px; padding:16px 24px; }
.cookie-consent__text { margin:0; color:var(--ink-2); font-size:14px; line-height:1.5; flex:1; }
.cookie-consent__text a { color:var(--accent-2); text-decoration:underline; }
.cookie-consent__accept { flex:none; white-space:nowrap; }
@media (max-width:600px){ .cookie-consent__inner { flex-direction:column; align-items:stretch; gap:12px; padding:14px 16px; } .cookie-consent__accept { width:100%; } }

/* ============================================================
   ТулГУ-хелп — HERO v8: анимация фона + панель «Сессия».
   ДОПИСАТЬ В КОНЕЦ themes/tulgu/style.css.
   Всё на существующих токенах (--surface / --line / --accent /
   --ok / --warm / --glow-rgb), поэтому работает в обеих темах.
   ============================================================ */

.hero { overflow: hidden; }
.hero > .wrap { position: relative; z-index: 1; }
.hero__bg { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; }

/* Две колонки: текст+статы слева, панель справа */
@media (min-width: 1040px) {
  .hero__grid { grid-template-columns: 1.02fr 0.98fr; align-items: start; }
  .hero__art { justify-self: end; transform: translateX(28px) scale(1.05); transform-origin: right center; margin-top: 125px; }  /* верх панели — по 2-й строке H1 */
  .hero__art .hrate { bottom: -55px; }   /* спец. выше базовой .hrate (та идёт ниже в CSS): опущен, лёгкий заход на панель */
}

/* Статистика — влево, под текстом, горизонтально */
.hero__stats { display: flex; flex-direction: row; flex-wrap: wrap; gap: var(--s8); margin: var(--s9) 0 0; text-align: left; }
.hero__stats .stat__num { font-size: 40px; }
.hero__stats .stat__lbl { margin-left: 0; max-width: 16ch; }

/* Панель «Сессия · осень 2026» */
.hpanel { position: relative; border-radius: 28px; background: var(--surface); border: 1px solid var(--line); box-shadow: var(--shadow); overflow: hidden; }
.hpanel__bar { display: flex; align-items: center; gap: 8px; padding: 16px 22px; border-bottom: 1px solid var(--line); }
.hpanel__dot { width: 11px; height: 11px; border-radius: 50%; }
.hpanel__title { margin-left: 10px; font-size: 13px; font-weight: 600; color: var(--muted); }
.hpanel__body { padding: 18px; display: flex; flex-direction: column; gap: 11px; }

.hrow { display: flex; align-items: center; gap: 13px; padding: 13px 15px; border-radius: 16px; background: var(--surface-2); border: 1px solid var(--line); }
.hrow__tag { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 10px; font-weight: 800; font-size: 12px; flex: none; }
.hrow__main { flex: 1; min-width: 0; }
.hrow__name { font-size: 14.5px; font-weight: 700; color: var(--ink); }
.hrow__track { height: 5px; border-radius: 99px; background: color-mix(in srgb, var(--ink) 12%, transparent); margin-top: 8px; overflow: hidden; }
.hrow__track span { display: block; height: 100%; border-radius: 99px; }
.hrow__st { font-size: 11.5px; font-weight: 700; padding: 5px 11px; border-radius: 99px; white-space: nowrap; }

.hrow--ok .hrow__tag { background: color-mix(in srgb, var(--ok) 18%, transparent); color: var(--ok); }
.hrow--ok .hrow__track span, .hrow--ok .hrow__st { background: var(--ok); }
.hrow--ok .hrow__st { color: #fff; }
.hrow--go .hrow__tag { background: rgba(var(--glow-rgb), .14); color: var(--accent-2); }
.hrow--go .hrow__track span { background: var(--accent); }
.hrow--go .hrow__st { background: rgba(var(--glow-rgb), .14); color: var(--accent-2); }
.hrow--wait .hrow__tag { background: var(--surface-2); color: var(--muted); border: 1px solid var(--line); }
.hrow--wait .hrow__track span { background: var(--accent-2); }
.hrow--wait .hrow__st { background: var(--surface-2); color: var(--muted); }

/* Плавающие плашки */
.hpill { position: absolute; z-index: 3; display: flex; align-items: center; gap: 9px; padding: 12px 17px; border-radius: 14px; background: var(--accent); color: #fff; font-weight: 700; font-size: 14px; box-shadow: var(--glow); }
.hpill svg { width: 18px; height: 13px; }
.hpill--check { top: -52px; right: -14px; transform: rotate(6deg); animation: hfloatB 6.5s ease-in-out infinite; }

.hrate { position: absolute; bottom: -22px; left: -24px; z-index: 3; display: flex; align-items: center; gap: 12px; padding: 13px 17px; border-radius: 16px; background: var(--surface); border: 1px solid var(--line); box-shadow: var(--shadow); animation: hfloatA 5.5s ease-in-out infinite; }
.hrate__ya { width: 38px; height: 38px; border-radius: 11px; background: #ffdb4d; color: #1a1a1a; font-weight: 800; font-size: 18px; display: grid; place-items: center; flex: none; }
.hrate__num { font-size: 18px; font-weight: 800; line-height: 1; color: var(--ink); }
.hrate__num b { color: var(--warm); }
.hrate__sub { font-size: 11.5px; color: var(--muted); }

@keyframes hfloatA { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-13px); } }
@keyframes hfloatB { 0%, 100% { transform: translateY(0) rotate(6deg); } 50% { transform: translateY(-9px) rotate(6deg); } }
@media (prefers-reduced-motion: reduce) { .hpill--check, .hrate { animation: none; } }

/* На узких экранах панель не уезжает вбок */
@media (max-width: 1039px) { .hero__art { transform: none; } }

/* Мобилка: плашка рейтинга не должна наезжать на панель (на десктопе висит на углу,
   а на full-width панели перекрывала бы нижнюю строку) — выносим под панель по центру. */
@media (max-width: 760px) {
  .hrate { position: static; left: auto; bottom: auto; margin: 18px auto 0; width: max-content; max-width: 100%; }
}

/* ============ ПЛАВАЮЩАЯ МОБИЛЬНАЯ CTA-ПОЛОСА (.mcta) ============
   Только телефоны (<=760px). Появляется классом .is-visible из footer.php JS.
   z-index ниже cookie-consent (120) — при показе баннера полоса не всплывает. */
.mcta {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 110;
  display: none; align-items: center; gap: 10px;
  padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
  background: var(--surface); border-top: 1px solid var(--line);
  box-shadow: 0 -8px 30px rgba(0,0,0,.28);
  transform: translateY(115%); transition: transform .28s ease; will-change: transform;
}
.mcta.is-visible { transform: translateY(0); }
.mcta__txt { display: flex; flex-direction: column; line-height: 1.2; flex: 0 0 auto; }
.mcta__txt b { color: var(--ink); font-size: 13.5px; font-weight: 800; white-space: nowrap; }
.mcta__txt span { color: var(--muted); font-size: 11.5px; white-space: nowrap; }
.mcta__btn {
  flex: 1 1 auto; min-width: 0; min-height: 48px; padding: 0 14px; border-radius: 999px;
  background: #039DFC; color: #fff; font-weight: 700; font-size: 15px;
  display: inline-flex; align-items: center; justify-content: center;
  text-shadow: 0 1px 1px rgba(0,0,0,.20); text-decoration: none; white-space: nowrap;
}
.mcta__btn:active { transform: translateY(1px); }
.mcta__tg {
  flex: none; width: 48px; height: 48px; border-radius: 50%;
  background: rgba(var(--glow-rgb),.16); border: 1px solid var(--line);
  color: var(--accent-2); display: grid; place-items: center;
}
.mcta__tg svg { width: 22px; height: 22px; }
@media (max-width: 760px) { .mcta { display: flex; } }
@media (max-width: 379px) { .mcta__tg { display: none; } }
@media (prefers-reduced-motion: reduce) { .mcta { transition: none; } }

/* ============ ПЛАШКА РЕЙТИНГА В HERO УСЛУГИ (.pagehero__rate) ============
   Данные из tulgu_org() (Настройки → «Рейтинг (Яндекс)»). Ширина .stars__fg
   считается из рейтинга в шаблоне (rating/5*100%), тут не зашита. */
.pagehero__rate {
  display: inline-flex; align-items: center; gap: 11px; margin-top: var(--s6);
  text-decoration: none; background: var(--surface); border: 1px solid var(--line);
  border-radius: 14px; padding: 9px 15px; width: max-content; max-width: 100%;
  transition: border-color .2s;
}
.pagehero__rate:hover { border-color: var(--accent-2); }
.pagehero__rate-ya {
  width: 27px; height: 27px; border-radius: 7px; background: #ffdb4d; color: #1a1a1a;
  font-weight: 800; font-size: 16px; display: grid; place-items: center; flex: none;
}
.pagehero__rate-num { color: var(--ink); font-weight: 800; font-size: 18px; }
.pagehero__rate-cnt { color: var(--ink-2); font-size: 13px; }
.stars { position: relative; display: inline-block; font-size: 16px; letter-spacing: 2px; line-height: 1; }
.stars__bg { color: var(--line); }
.stars__fg { position: absolute; left: 0; top: 0; overflow: hidden; white-space: nowrap; color: var(--warm); }
@media (max-width: 400px) { .pagehero__rate { gap: 8px; padding: 8px 12px; } .pagehero__rate-cnt { font-size: 12px; } }

/* ---- КЕЙСЫ: обложки и страница кейса ---- */
/* Превью кейса заполняет блок 2:1 целиком: исходники грузят разной пропорции,
   без object-fit сетка архива шла «ступеньками». */
.case__cover img {
  position:absolute; inset:0; width:100%; height:100%; display:block;
  /* contain: обложки — скриншоты (оценки, попытки теста) очень разной пропорции.
     cover резал бы их посередине; так блок везде один и тот же, а снимок виден целиком. */
  object-fit:contain; object-position:center; padding:10px;
}
a.case { text-decoration:none; color:inherit; }
/* На странице кейса сетки нет — жёсткая пропорция здесь только резала бы фото,
   поэтому держим исходную и ограничиваем высоту. */
.case__hero {
  border-radius: var(--r-xl); overflow:hidden;
  border:1px solid var(--line); margin-bottom: var(--s7);
  background: linear-gradient(135deg, rgba(var(--glow-rgb),.18), var(--surface-2));
}
/* contain, а не cover: обложки кейсов — это скриншоты-доказательства (оценки,
   попытки теста), и обрезать у них край нельзя. */
.case__hero img { width:100%; height:auto; max-height:560px; object-fit:contain; object-position:center; display:block; }
/* Фактов у кейса бывает один — на всю ширину такая карточка выглядит нелепо. */
.case-facts { grid-template-columns: repeat(auto-fit, minmax(190px, 280px)); justify-content:start; }

/* ============================================================================
   ДИЗАЙН v8 «редакционно-документальный» (29.08.2026)
   Уход от вида «сгенерировано ИИ»: линейки вместо коробок, числа как материал,
   асимметричные шапки секций, резкий контраст кеглей.
   Классы блоков новые (.shead .tband .svc .flow .guar .proof .team .rate .lead),
   старые (.section__head .cards .card .proc .cases .case .people .person)
   оставлены — их используют внутренние страницы.
   ============================================================================ */

/* ---- ДВИЖЕНИЕ: общий словарь ----
   Правило: анимация либо ОБЪЯСНЯЕТ структуру, либо ОТВЕЧАЕТ на действие.
   Декоративного движения нет — оно читается как шаблон. */
:root{ --ease:cubic-bezier(.22,.61,.36,1); --dur-act:.18s; --dur-in:.44s; }

/* Скрываем ТОЛЬКО под .js (флаг ставит инлайн-скрипт в head).
   Без JS текст обязан остаться видимым. */
.js [data-reveal]{ opacity:0; transform:translateY(14px);
  transition:opacity var(--dur-in) var(--ease), transform var(--dur-in) var(--ease);
  transition-delay:calc(var(--i, 0) * 55ms); }
.js [data-reveal].is-in{ opacity:1; transform:none; }

/* ---- ШАПКА СЕКЦИИ ----
   Было: эйбрау / H2 / лид по центру, одинаково во всех секциях.
   Стало: номер + рубрика на линейке, заголовок слева, лид справа. */
.shead{ margin-bottom: var(--s9); }
.shead__rule{ display:flex; align-items:center; gap: var(--s4);
  padding-bottom: var(--s4); border-bottom:1px solid var(--line); margin-bottom: var(--s7); }
.shead__idx{ font-variant-numeric:tabular-nums; font-weight:800; font-size:13px;
  letter-spacing:.04em; color: var(--accent-2); }
.shead__kicker{ font-weight:700; font-size:13px; letter-spacing:.12em;
  text-transform:uppercase; color: var(--ink-2); }
.shead__meta{ margin-left:auto; font-size:13px; color: var(--ink-2);
  font-variant-numeric:tabular-nums; }
.shead__grid{ display:grid; gap: var(--s5); }
.shead h2{ color: var(--ink); font-weight:800; letter-spacing:-.02em; line-height:1.05;
  font-size:clamp(1.9rem, 1.2rem + 2.6vw, 3.1rem); max-width:16ch; }
.shead__lead{ color: var(--ink-2); font-size:17px; max-width:52ch; }
@media(min-width:900px){
  .shead__grid{ grid-template-columns:1.15fr .85fr; align-items:end; gap: var(--s10); }
  .shead__lead{ padding-bottom:.35em; }
}
/* линейка прочерчивается слева направо */
.js .shead__rule{ border-bottom-color:transparent; position:relative; }
.js .shead__rule::after{ content:""; position:absolute; left:0; right:0; bottom:-1px; height:1px;
  background: var(--line); transform:scaleX(0); transform-origin:0 50%;
  transition:transform .65s var(--ease) .08s; }
.js .shead.is-in .shead__rule::after{ transform:scaleX(1); }

/* ---- ТРАСТ-ПОЛОСА ----
   Было: 4 пункта с иконками. Стало: колонтитул, вес держит ключевое слово. */
.tband{ border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  background: var(--bg-2); }
:root[data-theme="light"] .tband{ background:#fff; }
.tband__row{ display:grid; gap:0; }
.tband__item{ padding: var(--s5) 0; border-bottom:1px solid var(--line-soft);
  display:flex; align-items:baseline; gap: var(--s3); font-size:14px; color: var(--ink-2); }
.tband__item:last-child{ border-bottom:0; }
.tband__key{ color: var(--ink); font-weight:800; font-size:15px; letter-spacing:-.01em;
  white-space:nowrap; }
@media(min-width:760px){
  .tband__row{ grid-template-columns:repeat(4,1fr); gap: var(--s7); }
  .tband__item{ border-bottom:0; flex-direction:column; gap:4px; padding: var(--s6) 0; }
  .tband__item + .tband__item{ border-left:1px solid var(--line-soft); padding-left: var(--s7); }
}

/* ---- УСЛУГИ: ПРАЙС-ВЕДОМОСТЬ ----
   Цена — правый столбец табличными цифрами, разряды совпадают по вертикали. */
.svc__list{ border-top:1px solid var(--line); }
.svc__row{ display:grid; grid-template-columns:auto 1fr auto; column-gap: var(--s6);
  align-items:baseline; padding: var(--s6) var(--s4); border-bottom:1px solid var(--line);
  text-decoration:none; color:inherit; position:relative; isolation:isolate;
  transition:background-color var(--dur-act) ease; }
/* background-color, не background: шорткат затирал бы проблеск верхней строки */
.svc__row:hover,.svc__row:focus-visible{ background-color: var(--surface); }
.svc__row:focus-visible{ outline:2px solid var(--accent); outline-offset:-2px; }
.svc__row > *{ position:relative; z-index:1; }
/* подсветка под курсором: координаты в --mx/--my пишет JS */
.svc__row::before{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  opacity:0; background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),
  rgba(var(--glow-rgb),.16), transparent 68%); transition:opacity .3s var(--ease); }
@media(hover:hover) and (pointer:fine){ .svc__row:hover::before{ opacity:1; } }
/* акцентная линейка вырастает сверху вниз */
.svc__row::after{ content:""; position:absolute; left:0; top:-1px; bottom:-1px; width:3px;
  z-index:2; background: var(--accent); transform:scaleY(0); transform-origin:50% 0;
  transition:transform var(--dur-act) var(--ease); }
.svc__row:hover::after,.svc__row:focus-visible::after{ transform:scaleY(1); }
.svc__num{ font-size:13px; font-weight:600; color: var(--ink-2);
  font-variant-numeric:tabular-nums; letter-spacing:.06em; padding-top:6px; min-width:28px; }
.svc__body{ min-width:0; }
.svc__name{ display:block; font-size:clamp(19px, 2.4vw, 26px); font-weight:700;
  line-height:1.2; color: var(--ink); letter-spacing:-.01em; }
/* подчёркивание прорисовывается только под текстом, бейдж в него не попадает */
.svc__nametext{ background-image:linear-gradient(var(--accent),var(--accent));
  background-size:0% 2px; background-position:0 100%; background-repeat:no-repeat;
  padding-bottom:2px; transition:background-size .3s var(--ease); }
.svc__row:hover .svc__nametext,.svc__row:focus-visible .svc__nametext{ background-size:100% 2px; }
.svc__desc{ display:block; font-size:14px; line-height:1.5; color: var(--ink-2);
  margin-top:6px; max-width:52ch; }
.svc__price{ text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums;
  font-size:clamp(22px, 2.8vw, 30px); font-weight:800; color: var(--ink);
  letter-spacing:-.02em; line-height:1.1; transition:transform var(--dur-act) var(--ease); }
.svc__row:hover .svc__price,.svc__row:focus-visible .svc__price{ transform:translateX(-3px); }
.svc__from{ display:block; font-size:11px; font-weight:700; letter-spacing:.14em;
  text-transform:uppercase; color: var(--ink-2); margin-bottom:4px; }
.svc__cur{ font-weight:600; color: var(--ink-2); }
.svc__alt{ display:block; margin-top:6px; font-size:12px; font-weight:600; color: var(--ink-2);
  letter-spacing:0; font-variant-numeric:tabular-nums; }
/* ходовая услуга: постоянная линейка inset-тенью + один проблеск при появлении */
.svc__row--top{ background-color: var(--bg-2);
  background-image:linear-gradient(100deg, transparent 42%,
    rgba(var(--glow-rgb),.14) 50%, transparent 58%);
  background-size:220% 100%; background-repeat:no-repeat; background-position:-60% 0;
  box-shadow:inset 3px 0 0 var(--accent); }
.svc__row--top.is-in{ animation:svcSweep 1.25s var(--ease) .35s 1; }
@keyframes svcSweep{ from{ background-position:-60% 0; } to{ background-position:160% 0; } }
.svc__row--top .svc__num{ color: var(--accent-2); }
.svc__badge{ display:inline-block; margin-left: var(--s3); vertical-align:middle; font-size:11px;
  font-weight:700; letter-spacing:.08em; text-transform:uppercase; color: var(--accent-2);
  border:1px solid var(--accent-deep); border-radius:3px; padding:3px 8px; white-space:nowrap; }
.svc__more{ display:inline-flex; align-items:center; gap: var(--s2); margin-top: var(--s7);
  min-height:44px; padding:0 0 0 var(--s4); font-size:15px; font-weight:700; color: var(--ink);
  text-decoration:none; box-shadow:inset 0 -1px 0 var(--line); }
.svc__more b{ font-variant-numeric:tabular-nums; font-weight:800; }
.svc__more:hover{ color: var(--accent-2); box-shadow:inset 0 -1px 0 var(--accent); }
@media(max-width:720px){
  .svc__row{ grid-template-columns:auto 1fr; column-gap: var(--s4); row-gap: var(--s3);
    padding: var(--s5) var(--s3); }
  .svc__num{ grid-row:1; padding-top:3px; }
  .svc__body{ grid-column:2; }
  .svc__price{ grid-column:2; text-align:left; display:flex; align-items:baseline;
    flex-wrap:wrap; gap: var(--s2); font-size:24px; }
  .svc__from{ margin:0; letter-spacing:.1em; }
  .svc__alt{ width:100%; margin-top:2px; }
  .svc__badge{ margin: var(--s2) 0 0; display:table; }
  .svc__name{ font-size:18px; }
}

/* ---- ПРОЦЕСС: ОСЬ ВРЕМЕНИ ----
   Ось — граница самих шагов: слева на мобильном, сверху на десктопе.
   Последний шаг («Правим до Зачтено») и есть финиш, отдельного узла не нужно. */
.flow{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr; }
.flow__step{ position:relative; padding:0 0 var(--s8) var(--s5);
  border-left:1px solid var(--line); }
.flow__step:last-child{ padding-bottom:0; }
.flow__node{ position:absolute; left:-4px; top:0; width:7px; height:7px; border-radius:50%;
  background: var(--muted); }
.flow__step--end .flow__node{ left:-6px; top:-2px; width:11px; height:11px;
  background: var(--accent-2); box-shadow:0 0 0 5px rgba(var(--glow-rgb),.16); }
/* финиш один раз отмечается кольцом; не циклится — пульсация тянет внимание с прайса */
.js .flow__step--end.is-in .flow__node{ animation:nodePing 1.5s var(--ease) .55s 1; }
@keyframes nodePing{
  0%{ box-shadow:0 0 0 5px rgba(var(--glow-rgb),.16); }
  55%{ box-shadow:0 0 0 17px rgba(var(--glow-rgb),0); }
  100%{ box-shadow:0 0 0 5px rgba(var(--glow-rgb),.16); }
}
.flow__head{ display:flex; align-items:baseline; justify-content:space-between; gap: var(--s3);
  margin:0; padding-bottom: var(--s2); border-bottom:1px solid var(--line-soft); }
.flow__num{ font-size:clamp(2.4rem, 7vw, 3.6rem); font-weight:800; line-height:.85;
  letter-spacing:-.03em; color: var(--ink); font-variant-numeric:tabular-nums; }
.flow__meta{ font-size:.75rem; font-weight:700; line-height:1; letter-spacing:.08em;
  text-transform:uppercase; color: var(--ink-2); white-space:nowrap; }
.flow__title{ margin: var(--s4) 0 var(--s2); font-size:1.0625rem; font-weight:700;
  line-height:1.25; color: var(--ink); }
.flow__text{ margin:0; max-width:34ch; font-size:.9375rem; line-height:1.6; color: var(--ink-2); }
.flow__note{ margin: var(--s7) 0 0; padding-top: var(--s4);
  border-top:1px solid var(--line-soft); font-size:.8125rem; line-height:1.5; color: var(--ink-2); }
@media(min-width:900px){
  .flow{ grid-template-columns:repeat(4,1fr); }
  .flow__step{ padding: var(--s5) var(--s7) 0 0; border-left:0; border-top:1px solid var(--line); }
  .flow__step:last-child{ padding-right:0; }
  .flow__node{ left:0; top:-4px; }
  .flow__step--end .flow__node{ left:0; top:-6px; }
  .flow__title{ margin-top: var(--s5); }
  .flow__note{ margin-top: var(--s8); max-width:46ch; margin-left:auto; text-align:right; }
}
@media(min-width:900px) and (max-width:1180px){ .flow__num{ font-size:2.6rem; } }
@media(prefers-reduced-motion:no-preference){
  .flow__node{ transition:transform .2s ease; }
  .flow__step:hover .flow__node{ transform:scale(1.35); }
}

/* ---- ГАРАНТИИ: «ОБЕЩАЕМ / НЕ ОБЕЩАЕМ» ----
   Оппозиция как ось композиции: честный пункт — не шестая плитка, а врезка. */
.guar{ display:grid; gap: var(--s7); align-items:start; }
.guar__label{ margin:0 0 var(--s4); font-size:.75rem; font-weight:700; line-height:1;
  letter-spacing:.16em; text-transform:uppercase; color: var(--ink-2); }
.guar__label::after{ content:""; display:block; height:1px; margin-top: var(--s3);
  background: var(--line); }
.guar__list{ list-style:none; margin:0; padding:0; }
.guar__item{ display:grid; grid-template-columns:2.25rem 1fr; column-gap: var(--s4);
  padding: var(--s5) 0; border-bottom:1px solid var(--line); position:relative; }
.guar__item::before{ content:""; position:absolute; left:calc(var(--s4) * -1); top: var(--s5);
  bottom: var(--s5); width:2px; background: var(--accent); transform:scaleY(0);
  transform-origin:50% 0; transition:transform var(--dur-act) var(--ease); }
.guar__item:hover::before{ transform:scaleY(1); }
.guar__num{ grid-row:1/3; font-size:.75rem; font-weight:700; line-height:1.9;
  letter-spacing:.06em; font-variant-numeric:tabular-nums; color: var(--ink-2);
  transition:color .18s ease; }
.guar__item:hover .guar__num{ color: var(--ink); }
.guar__term{ margin:0 0 var(--s2); font-size:1.0625rem; font-weight:700; line-height:1.3;
  letter-spacing:-.01em; color: var(--ink); }
.guar__desc{ margin:0; max-width:52ch; font-size:.9375rem; line-height:1.6; color: var(--ink-2); }
.guar__honest{ --guar-mark: var(--warm); padding: var(--s6); background: var(--surface-2);
  border:1px solid var(--line); border-top:4px solid var(--guar-mark); }
:root[data-theme="light"] .guar__honest{ --guar-mark: var(--accent-deep); }
.guar__honest .guar__label::after{ background: var(--guar-mark); }
.guar__no{ margin:0; font-size:clamp(1.5rem, 5.2vw, 2rem); font-weight:800; line-height:1.15;
  letter-spacing:-.02em; color: var(--ink); }
.guar__note{ margin: var(--s4) 0 0; font-size:.9375rem; line-height:1.6; color: var(--ink-2); }
.guar__note b{ font-weight:700; color: var(--ink); }
.guar__split{ margin: var(--s5) 0 0; border:0; border-top:1px solid var(--line); }
.guar__kicker{ display:flex; align-items:center; gap: var(--s3); margin: var(--s5) 0 0;
  font-size:1rem; font-weight:600; line-height:1.35; color: var(--ink); }
.guar__kicker::before{ content:""; flex:0 0 auto; width:1.5rem; height:2px;
  background: var(--guar-mark); }
/* верхняя метка врезки прочерчивается после её появления */
.js .guar__honest{ border-top-color:transparent; position:relative; }
.js .guar__honest::before{ content:""; position:absolute; left:-1px; right:-1px; top:-4px;
  height:4px; background: var(--guar-mark); transform:scaleX(0); transform-origin:0 50%;
  transition:transform .55s var(--ease) .25s; }
.js .guar__honest.is-in::before{ transform:scaleX(1); }
@media(min-width:900px){
  .guar{ grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); column-gap: var(--s9); }
  .guar__item{ grid-template-columns:3rem 1fr; }
  .guar__term{ font-size:1.125rem; }
  .guar__honest{ margin-top: var(--s8); padding: var(--s7); }
}

/* ---- КЕЙСЫ: РЕЕСТР ДОКАЗАТЕЛЬСТВ (.proof) ----
   Имя .proof, а не .case: старые .case-классы заняты страницей кейса.
   Срок и результат читаются первыми, заголовок намеренно мельче. */
.proofs{ list-style:none; margin:0; padding:0; display:grid; gap: var(--s6);
  grid-template-columns:1fr; }
.proof{ padding-top: var(--s5); border-top:1px solid var(--line); }
.proof:first-child{ padding-top:0; border-top:0; }
@media(min-width:760px){
  .proofs{ grid-template-columns:1.1fr .95fr 1fr; gap:0; }
  .proof{ padding:0 var(--s5); border-top:0; }
  .proof:first-child{ padding-left:0; }
  .proof:last-child{ padding-right:0; }
  .proof + .proof{ border-left:1px solid var(--line-soft); }
  .proof--offset{ margin-top: var(--s6); }
}
.proof__kicker{ margin:0 0 var(--s3); font-size:.75rem; font-weight:600; line-height:1.4;
  letter-spacing:.09em; text-transform:uppercase; color: var(--ink-2); }
.proof__index{ font-size:.875rem; font-weight:800; color: var(--ink);
  font-variant-numeric:tabular-nums; letter-spacing:.02em; margin-right:6px; }
/* обложки — скриншоты разной пропорции, поэтому фиксированный блок 2:1 и contain */
.proof__cover{ aspect-ratio:2/1; background: var(--surface-2); overflow:hidden;
  display:flex; align-items:center; justify-content:center; padding: var(--s2); }
.proof__cover img{ display:block; object-fit:contain; max-width:100%; max-height:100%;
  transition:transform .45s var(--ease); }
.proof:hover .proof__cover img{ transform:scale(1.03); }
/* кейс без скриншота: типографическая врезка из его же данных, а не заглушка */
.proof__cover--type{ flex-direction:column; align-items:flex-start;
  justify-content:space-between; padding: var(--s4); border-left:1px solid var(--line); }
.proof__pull{ margin:0; font-size:clamp(1.25rem, 3.2vw, 1.6875rem); font-weight:800;
  line-height:1.06; letter-spacing:-.025em; color: var(--ink); }
.proof__pullnote{ font-size:.6875rem; font-weight:600; letter-spacing:.09em;
  text-transform:uppercase; color: var(--ink-2); }
.proof__ledger{ display:flex; justify-content:space-between; align-items:flex-end;
  gap: var(--s3); margin-top: var(--s4); padding-bottom: var(--s3);
  border-bottom:1px solid var(--line); }
.proof__term{ margin:0; display:flex; flex-wrap:wrap; align-items:baseline; gap:0 6px; }
.proof__label{ width:100%; margin-bottom:6px; font-size:.6875rem; font-weight:600;
  letter-spacing:.11em; text-transform:uppercase; color: var(--ink-2); }
.proof__num{ font-size:clamp(2.75rem, 5.2vw, 3.5rem); font-weight:800; line-height:.82;
  letter-spacing:-.04em; color: var(--ink); font-variant-numeric:tabular-nums; }
.proof__unit{ font-size:.8125rem; font-weight:600; letter-spacing:.08em;
  text-transform:uppercase; color: var(--ink-2); }
.proof__result{ margin:0; max-width:54%; text-align:right; }
.proof__resval{ display:block; font-size:.9375rem; font-weight:700; line-height:1.3;
  color: var(--ink); }
.proof__resval::after{ content:""; display:block; width:22px; height:2px; margin:10px 0 0 auto;
  background: var(--accent-2); transition:width .35s var(--ease); }
.proof:hover .proof__resval::after{ width:44px; }
.proof__title{ margin: var(--s4) 0 var(--s2); font-size:1.0625rem; font-weight:700;
  line-height:1.3; letter-spacing:-.01em; color: var(--ink); }
.proof__link{ color:inherit; text-decoration:none;
  background:linear-gradient(var(--line),var(--line)) 0 100%/100% 1px no-repeat; }
.proof__link:hover{ background-image:linear-gradient(var(--accent-2),var(--accent-2)); }
.proof__link:focus-visible{ outline:2px solid var(--accent-2); outline-offset:3px; }
.proof__task{ margin:0; font-size:.875rem; line-height:1.6; color: var(--ink-2); }
@media(min-width:1200px){
  .proof__num{ font-size:3.75rem; }
  .proof__title{ font-size:1.125rem; }
}
@media(max-width:420px){
  .proof__result{ max-width:50%; }
  .proof__num{ font-size:2.5rem; }
}

/* ---- КОМАНДА: РЕЕСТР ЛЮДЕЙ ----
   Было: три плитки, у каждой своя пара кнопок на один и тот же бот.
   Стало: реестр на линейках, действие одно на секцию. */
.team__intro{ display:grid; gap: var(--s4); margin-bottom: var(--s7); }
.team__count{ display:flex; align-items:flex-end; gap: var(--s3); margin:0; }
.team__count-num{ font-size:clamp(54px, 9vw, 92px); font-weight:800; line-height:.82;
  letter-spacing:-.04em; font-variant-numeric:tabular-nums; color: var(--ink); }
.team__count-cap{ font-size:13px; font-weight:600; line-height:1.25; letter-spacing:.02em;
  color: var(--ink-2); padding-bottom:.35em; }
.team__lead{ margin:0; max-width:54ch; font-size:clamp(15px, 0.6vw + 13px, 19px);
  line-height:1.6; color: var(--ink-2); }
.team__lead b{ font-weight:700; color: var(--ink); }
.team__roster{ list-style:none; margin:0; padding:0; border-top:1px solid var(--line); }
.team__person{ display:grid; grid-template-columns:84px 1fr; column-gap: var(--s4);
  align-items:center; padding: var(--s4) 0; border-bottom:1px solid var(--line); }
.team__photo{ aspect-ratio:4/5; overflow:hidden; background: var(--surface-2);
  display:flex; align-items:center; justify-content:center;
  transition:filter .3s var(--ease); }
.team__person:hover .team__photo{ filter:brightness(1.07); }
.team__photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.team__photo span{ font-size:clamp(30px, 6vw, 56px); font-weight:800; letter-spacing:-.02em;
  line-height:1; color: var(--ink-2); }
.team__meta{ display:grid; grid-template-columns:auto 1fr; column-gap: var(--s3);
  align-items:baseline; }
.team__num{ font-size:clamp(22px, 5vw, 32px); font-weight:800; line-height:1;
  letter-spacing:-.02em; font-variant-numeric:tabular-nums; color: var(--ink-2); }
.team__name{ margin:0; font-size:clamp(17px, 1vw + 14px, 23px); font-weight:700;
  line-height:1.15; letter-spacing:-.01em; color: var(--ink); }
.team__role{ grid-column:2; margin:6px 0 0; font-size:13px; line-height:1.45; color: var(--ink-2); }
.team__action{ display:grid; gap: var(--s5); margin-top: var(--s6); }
.team__note{ margin:0; max-width:48ch; font-size:14px; line-height:1.55; color: var(--ink-2); }
.team__cta{ display:inline-flex; align-items:center; justify-content:center; gap: var(--s2);
  min-height:52px; padding:0 var(--s6); border-radius: var(--r-pill);
  background: var(--accent-2); color: var(--bg-2); font-size:15px; font-weight:700;
  text-decoration:none; transition:opacity .18s ease; }
.team__cta:hover{ opacity:.88; }
.team__cta svg{ width:18px; height:18px; }
/* высота касания 44px: текстовой ссылкой в 26px это была непопадаемая цель */
.team__alt{ display:inline-flex; align-items:center; min-height:44px; padding:0 var(--s2);
  font-size:14px; font-weight:700; color: var(--ink); text-decoration:none;
  box-shadow:inset 0 -1px 0 var(--line); transition:box-shadow .18s ease; }
.team__alt:hover{ box-shadow:inset 0 -1px 0 var(--ink); }
.team__cta-row{ display:flex; flex-wrap:wrap; align-items:center; gap: var(--s4) var(--s5); }
@media(min-width:720px){
  .team__intro{ grid-template-columns:auto 1fr; column-gap: var(--s7); align-items:end;
    margin-bottom: var(--s8); }
  .team__count{ padding-bottom:2px; }
  /* 1.15fr, не больше: на пропорции 4:5 разница ширин умножается на высоту */
  .team__roster{ display:grid; grid-template-columns:1.15fr 1fr 1fr; align-items:end;
    border-bottom:1px solid var(--line); }
  .team__person{ display:block; padding: var(--s5) var(--s5) var(--s6); border-bottom:0;
    border-left:1px solid var(--line-soft); }
  .team__person:first-child{ padding-left:0; border-left:0; }
  .team__meta{ margin-top: var(--s4); }
  .team__role{ margin-top:8px; font-size:14px; }
  .team__action{ grid-template-columns:1fr auto; align-items:center; column-gap: var(--s8);
    margin-top: var(--s7); }
}

/* ---- ОТЗЫВЫ ----
   4,4 работает как плакатная цифра; придуманных данных нет. */
.rate{ display:grid; gap: var(--s8); align-items:start; }
@media(min-width:900px){ .rate{ grid-template-columns:auto 1px 1fr; gap: var(--s10); } }
.rate__figure{ display:flex; align-items:flex-start; gap: var(--s5); }
.rate__num{ font-variant-numeric:tabular-nums; font-weight:800; color: var(--ink);
  font-size:clamp(4.5rem, 3rem + 7vw, 8.5rem); line-height:.82; letter-spacing:-.045em; }
.rate__of{ font-size:15px; color: var(--ink-2); font-weight:700; padding-top:.7em;
  white-space:nowrap; }
.rate__stars{ display:flex; gap:3px; margin-top: var(--s4); }
.rate__stars svg{ width:19px; height:19px; fill: var(--warm); }
.rate__cnt{ margin-top: var(--s3); font-size:14px; color: var(--ink-2);
  font-variant-numeric:tabular-nums; }
.rate__div{ background: var(--line); display:none; }
@media(min-width:900px){ .rate__div{ display:block; } }
.rate__body p{ color: var(--ink-2); max-width:56ch; }
.rate__body p + p{ margin-top: var(--s4); }
.rate__body strong{ color: var(--ink); font-weight:700; }
.rate__act{ display:flex; flex-wrap:wrap; gap: var(--s3); margin-top: var(--s6); }
.rate__note{ margin-top: var(--s6); padding-top: var(--s4);
  border-top:1px solid var(--line-soft); font-size:13px; color: var(--ink-2); max-width:60ch; }
/* звёзды набираются по одной; анимируем только масштаб — у пятой своя прозрачность */
.js .rate.is-in .rate__stars svg{ animation:starIn .38s var(--ease) backwards; }
.js .rate.is-in .rate__stars svg:nth-child(1){ animation-delay:.20s; }
.js .rate.is-in .rate__stars svg:nth-child(2){ animation-delay:.29s; }
.js .rate.is-in .rate__stars svg:nth-child(3){ animation-delay:.38s; }
.js .rate.is-in .rate__stars svg:nth-child(4){ animation-delay:.47s; }
.js .rate.is-in .rate__stars svg:nth-child(5){ animation-delay:.56s; }
@keyframes starIn{ from{ transform:scale(.4); } to{ transform:none; } }

/* ---- ФИНАЛЬНЫЙ CTA ----
   Плашку и карточку заменили две линейки; поля — подчёркивания с подложкой. */
.lead{ border-top:1px solid var(--line); padding: var(--s9) 0 var(--s10); }
.lead-in{ display:grid; grid-template-columns:1fr; gap: var(--s8); align-items:start; }
.lead-top{ order:-2; display:flex; align-items:center; gap: var(--s3); }
.lead-stamp{ white-space:nowrap; font-size:12px; font-weight:700; letter-spacing:.16em;
  text-transform:uppercase; color: var(--accent-2); }
.lead-rule{ flex:1 1 16px; min-width:16px; height:1px; background: var(--line); }
.js .lead-rule{ transform:scaleX(0); transform-origin:0 50%;
  transition:transform .7s var(--ease) .1s; }
.js .lead.is-in .lead-rule{ transform:scaleX(1); }
.lead-geo{ min-width:0; text-align:right; font-size:12px; line-height:1.3; color: var(--ink-2); }
.lead-copy{ min-width:0; }
.lead-h{ margin:0; color: var(--ink); font-weight:800; letter-spacing:-.02em; line-height:1.05;
  font-size:clamp(27px, 4.6vw, 46px); }
.lead-lede{ margin: var(--s5) 0 0; max-width:46ch; color: var(--ink-2); line-height:1.55;
  font-size:clamp(15px, 1.1vw, 17px); }
.lead-facts{ margin: var(--s7) 0 0; border-top:1px solid var(--line-soft); }
.lead-fact{ display:grid; grid-template-columns:118px 1fr; align-items:baseline; gap: var(--s4);
  padding: var(--s4) 0; border-bottom:1px solid var(--line-soft); }
.lead-num{ margin:0; white-space:nowrap; color: var(--ink); font-weight:800; line-height:1;
  letter-spacing:-.02em; font-variant-numeric:tabular-nums lining-nums;
  font-size:clamp(30px, 3.2vw, 38px); }
.lead-num span{ margin-left: var(--s2); font-size:13px; font-weight:600; letter-spacing:.06em;
  text-transform:uppercase; color: var(--ink-2); }
.lead-fact dd{ margin:0; font-size:14px; line-height:1.45; color: var(--ink-2); }
.lead-form{ order:-1; min-width:0; }
.lead-kicker{ display:flex; align-items:center; gap: var(--s3); margin:0; font-size:12px;
  font-weight:700; letter-spacing:.16em; text-transform:uppercase; color: var(--ink); }
.lead-kicker::before{ content:""; flex:none; width:10px; height:10px; background: var(--accent); }
.lead-note{ margin: var(--s3) 0 var(--s7); max-width:40ch; font-size:14px; line-height:1.5;
  color: var(--ink-2); }
@media(min-width:900px){
  .lead{ padding: var(--s11) 0 var(--s12); }
  .lead-in{ grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr); gap: var(--s9) var(--s10); }
  .lead-top,.lead-copy,.lead-form{ order:0; }
  .lead-top{ grid-column:1 / -1; margin-bottom:calc(var(--s4) * -1); }
  .lead-copy{ grid-column:1; grid-row:2; }
  .lead-form{ grid-column:2; grid-row:2; border-left:1px solid var(--line);
    padding-left: var(--s9); }
  .lead-h{ max-width:16ch; }
  .lead-fact{ grid-template-columns:148px 1fr; }
}

/* Мессенджер — заявленная альтернатива форме, а не сноска: возвращаем кнопки
   с полноценной высотой касания вместо ссылки в 17px. */
.lead-msg{ margin: var(--s6) 0 0; display:flex; flex-wrap:wrap; align-items:center;
  gap: var(--s3); font-size:14px; line-height:1.55; color: var(--ink-2); }
.lead-msg__txt{ flex:1 1 100%; }
.lead-msg a{ display:inline-flex; align-items:center; gap: var(--s2); min-height:44px;
  padding:0 var(--s5); border:1px solid var(--line); border-radius: var(--r-pill);
  color: var(--ink); font-weight:700; text-decoration:none; white-space:nowrap;
  transition:border-color var(--dur-act) ease, background-color var(--dur-act) ease; }
.lead-msg a:hover{ border-color: var(--accent); background-color:rgba(var(--glow-rgb),.08); }
.lead-msg a:focus-visible{ outline:2px solid var(--accent-2); outline-offset:3px; }
.lead-msg a svg{ width:18px; height:18px; }

/* Ни одной анимации, если система просит покой; линии сразу на полную длину. */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation:none !important; transition:none !important; }
  .js [data-reveal]{ opacity:1 !important; transform:none !important; }
  .js .shead__rule::after,.js .guar__honest::before,.js .lead-rule{ transform:none !important; }
  .js .shead__rule{ border-bottom-color: var(--line); }
  .js .guar__honest{ border-top-color: var(--guar-mark); }
}

/* ---- CTA: подгонка формы CF7 под новый блок ----
   tulgu_render_form() отдаёт .form-box + разметку Contact Form 7, поэтому
   поля нельзя оформить своими классами — переопределяем в области .lead-form. */
.lead-form .form-box{ background:none; border:0; box-shadow:none; padding:0; border-radius:0; }
:root[data-theme="light"] .lead-form .form-box{ box-shadow:none; }
/* заголовок формы работает как мелкая рубрика с квадратом-маркером */
.lead-form .form-box h2{ display:flex; align-items:center; gap: var(--s3); margin:0;
  font-size:12px; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color: var(--ink); }
.lead-form .form-box h2::before{ content:""; flex:none; width:10px; height:10px;
  background: var(--accent); }
.lead-form .form-box__note{ margin: var(--s3) 0 var(--s7); max-width:40ch; font-size:14px;
  line-height:1.5; color: var(--ink-2); }
/* Поле: подложка + сильный нижний бордер. Подложка к фону даёт всего 1,05:1
   в светлой теме, поэтому границу несёт именно бордер (--ink-2 → 5,2:1). */
.lead-form .form-box input[type=text],
.lead-form .form-box input[type=tel],
.lead-form .form-box input[type=email],
.lead-form .form-box .wpcf7-form-control.wpcf7-text,
.lead-form .form-box .wpcf7-form-control.wpcf7-tel{
  width:100%; min-height:52px; padding: var(--s3) var(--s4); border:0;
  border-bottom:2px solid var(--ink-2); border-radius:8px 8px 0 0;
  background-color: var(--surface-2); color: var(--ink); font-size:17px;
  transition:background-color var(--dur-act) ease, border-color var(--dur-act) ease; }
.lead-form .form-box input::placeholder{ color: var(--ink-2); }
.lead-form .form-box input:hover{ border-bottom-color: var(--ink); }
.lead-form .form-box input:focus{ outline:2px solid var(--accent-2); outline-offset:2px;
  border-bottom-color: var(--accent); background-color: var(--surface); box-shadow:none; }
/* кнопка — пилюля, как все CTA на сайте; сплошной --accent-deep даёт белому 5,28:1
   против 2,90:1 на верху градиента у .btn--primary */
.lead-form .form-box .wpcf7-submit{ width:100%; min-height:58px; margin-top: var(--s6);
  padding:0 var(--s6); border:0; border-radius: var(--r-pill);
  background: var(--accent-deep); color:#fff; font-weight:700; font-size:16px;
  letter-spacing:.02em; cursor:pointer; transition:box-shadow .18s ease; }
.lead-form .form-box .wpcf7-submit:hover{ background: var(--accent-deep);
  box-shadow:0 0 0 3px rgba(var(--glow-rgb),.3); }
/* --muted не проходит контраст ни в одной теме — согласие набираем --ink-2 */
.lead-form .form-box .wpcf7-acceptance label{ color: var(--ink-2); font-size:13px;
  line-height:1.45; }
.lead-form .form-box .wpcf7-acceptance a{ color: var(--accent-2); }
/* блок мессенджеров из tulgu_render_messengers() внутри CTA */
.lead-form .messengers{ margin-top: var(--s6); }
.lead-form .messengers__note{ text-align:left; color: var(--ink-2); font-size:14px; }
.lead-form .messengers__row{ justify-content:flex-start; }
@media(min-width:900px){ .lead-form .form-box .wpcf7-submit{ width:auto; min-width:260px; } }

/* Стрелка в ссылке «весь прайс»: иконка из спрайта без своих размеров
   растягивалась до 300×150 — .ico задан только внутри .btn. */
.svc__more svg{ width:18px; height:18px; flex:none; }

/* На мобильном грид-элементы по умолчанию имеют min-width:auto, и длинная
   кнопка «Читать отзывы на Яндекс.Картах» разгоняла колонку шире экрана. */
.rate > *{ min-width:0; }
.rate__act{ min-width:0; }
.rate__act .btn{ max-width:100%; }


/* ============================================================
   ДИЗАЙН v8 — ВНУТРЕННИЕ СТРАНИЦЫ · Волна 0 + single-service (29.08.2026)
   Примитивы: .phead (+--form/__points/__rate), .speclist, .pledger,
   .choice, .callout, FAQ v8, крошки v8. Токены — из блока v8 выше.
   ============================================================ */

/* ---- Хлебные крошки v8 (перекрываем коробочный вид v7) ---- */
.crumbs{ padding: var(--s6) 0 0; font-size:13px; color: var(--ink-2);
  font-variant-numeric:tabular-nums; }
.crumbs a{ color: var(--ink-2); text-decoration:none;
  box-shadow:inset 0 -1px 0 transparent;
  transition:box-shadow var(--dur-act) ease, color var(--dur-act) ease; }
.crumbs a:hover{ color: var(--ink); box-shadow:inset 0 -1px 0 var(--line); }
.crumbs [aria-current="page"]{ color: var(--ink); font-weight:600; }
.crumbs span[aria-hidden]{ color: var(--line); margin:0 .35em; }

/* ---- .phead — единая шапка внутренней страницы ---- */
.phead{ padding: var(--s7) 0 var(--s9); border-bottom:1px solid var(--line); }
.phead__rule{ display:flex; align-items:center; gap: var(--s4);
  padding-bottom: var(--s4); border-bottom:1px solid var(--line); margin-bottom: var(--s7); }
.phead__idx{ font-variant-numeric:tabular-nums; font-weight:800; font-size:13px;
  letter-spacing:.04em; color: var(--accent-2); text-transform:uppercase; flex:none; }
.phead__kicker{ font-weight:700; font-size:13px; letter-spacing:.12em; text-transform:uppercase;
  color: var(--ink-2); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.phead__meta{ margin-left:auto; padding-left: var(--s4); font-size:13px; color: var(--ink-2);
  font-variant-numeric:tabular-nums; text-align:right; flex:none; }
.phead__grid{ display:grid; gap: var(--s8); min-width:0; }
.phead__main{ min-width:0; }
.phead__side{ min-width:0; }
.phead__h{ margin:0; color: var(--ink); font-weight:800; letter-spacing:-.02em; line-height:1.04;
  font-size:clamp(2.1rem, 1.3rem + 3vw, 3.6rem); }
.phead__lead{ margin: var(--s5) 0 0; color: var(--ink-2);
  font-size:clamp(15px, 0.9rem + 0.4vw, 18px); line-height:1.55; max-width:54ch; }
@media(min-width:900px){
  .phead--form .phead__grid{ grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);
    gap: var(--s10); align-items:start; }
  .phead--form .phead__side{ border-left:1px solid var(--line); padding-left: var(--s9); }
  .phead__h{ max-width:20ch; }
}
.js .phead__rule{ border-bottom-color:transparent; position:relative; }
.js .phead__rule::after{ content:""; position:absolute; left:0; right:0; bottom:-1px; height:1px;
  background: var(--line); transform:scaleX(0); transform-origin:0 50%;
  transition:transform .65s var(--ease) .08s; }
.js .phead.is-in .phead__rule::after{ transform:scaleX(1); }

/* чек-лист доверия на линейках (замена .pagehero__points с галочками) */
.phead__points{ list-style:none; margin: var(--s7) 0 0; padding:0;
  border-top:1px solid var(--line-soft); }
.phead__points li{ padding: var(--s3) 0; border-bottom:1px solid var(--line-soft);
  font-size:14px; line-height:1.5; color: var(--ink-2); display:flex; gap: var(--s3); min-width:0; }
.phead__points b{ color: var(--ink); font-weight:700; }
.phead__points li::before{ content:""; flex:0 0 auto; width:14px; height:2px; margin-top:.65em;
  background: var(--accent); }

/* рейтинг Яндекса компактной строкой (замена .pagehero__rate) */
.phead__rate{ display:inline-flex; align-items:baseline; gap: var(--s3); margin-top: var(--s7);
  text-decoration:none; color: var(--ink-2); font-size:13px; line-height:1.4; }
.phead__rate b{ font-size:clamp(28px,3vw,40px); font-weight:800; color: var(--ink);
  letter-spacing:-.02em; font-variant-numeric:tabular-nums; }
.phead__rate:hover span{ color: var(--ink); }

/* форма в шапке денежных страниц — приём подчёркиваний из .lead-form */
.phead__form .form-box{ background:none; border:0; box-shadow:none; padding:0; border-radius:0; }
:root[data-theme="light"] .phead__form .form-box{ box-shadow:none; }
.phead__form .form-box h2{ display:flex; align-items:center; gap: var(--s3); margin:0;
  font-size:12px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color: var(--ink); }
.phead__form .form-box h2::before{ content:""; flex:none; width:10px; height:10px; background: var(--accent); }
.phead__form .form-box__note{ margin: var(--s3) 0 var(--s6); max-width:40ch; font-size:14px;
  line-height:1.5; color: var(--ink-2); }
.phead__form .form-box input[type=text],
.phead__form .form-box input[type=tel],
.phead__form .form-box input[type=email],
.phead__form .form-box .wpcf7-form-control.wpcf7-text,
.phead__form .form-box .wpcf7-form-control.wpcf7-tel{
  width:100%; min-height:52px; padding: var(--s3) var(--s4); border:0;
  border-bottom:2px solid var(--ink-2); border-radius:8px 8px 0 0;
  background-color: var(--surface-2); color: var(--ink); font-size:17px;
  transition:background-color var(--dur-act) ease, border-color var(--dur-act) ease; }
.phead__form .form-box input::placeholder{ color: var(--ink-2); }
.phead__form .form-box input:hover{ border-bottom-color: var(--ink); }
.phead__form .form-box input:focus{ outline:2px solid var(--accent-2); outline-offset:2px;
  border-bottom-color: var(--accent); background-color: var(--surface); box-shadow:none; }
.phead__form .form-box .wpcf7-submit{ width:100%; min-height:58px; margin-top: var(--s6);
  padding:0 var(--s6); border:0; border-radius: var(--r-pill);
  background: var(--accent-deep); color:#fff; font-weight:700; font-size:16px;
  letter-spacing:.02em; cursor:pointer; transition:box-shadow .18s ease; }
.phead__form .form-box .wpcf7-submit:hover{ background: var(--accent-deep);
  box-shadow:0 0 0 3px rgba(var(--glow-rgb),.3); }
.phead__form .form-box .wpcf7-acceptance label{ color: var(--ink-2); font-size:13px; line-height:1.45; }
.phead__form .form-box .wpcf7-acceptance a{ color: var(--accent-2); }
.phead__form .messengers{ margin-top: var(--s6); }
.phead__form .messengers__note{ text-align:left; color: var(--ink-2); font-size:14px; }
.phead__form .messengers__row{ justify-content:flex-start; }

/* ---- .speclist — «что входит» / «что вы получаете» реестром ---- */
.speclist{ list-style:none; margin:0; padding:0; border-top:1px solid var(--line); }
.speclist__item{ display:grid; grid-template-columns:2.5rem 1fr; column-gap: var(--s5);
  padding: var(--s5) 0 var(--s5) var(--s4); border-bottom:1px solid var(--line);
  position:relative; min-width:0; }
.speclist__item::before{ content:""; position:absolute; left:0; top: var(--s5); bottom: var(--s5);
  width:2px; background: var(--accent); transform:scaleY(0); transform-origin:50% 0;
  transition:transform var(--dur-act) var(--ease); }
.speclist__item:hover::before{ transform:scaleY(1); }
.speclist__idx{ font-size:13px; font-weight:700; color: var(--ink-2);
  font-variant-numeric:tabular-nums; letter-spacing:.04em; padding-top:.25em; }
.speclist__body{ min-width:0; }
.speclist__term{ margin:0 0 var(--s2); font-size:clamp(16px, 0.9rem + 0.5vw, 19px); font-weight:700;
  line-height:1.25; letter-spacing:-.01em; color: var(--ink); }
.speclist__desc{ margin:0; max-width:62ch; font-size:14px; line-height:1.6; color: var(--ink-2); }
.speclist--tight .speclist__item{ padding-top: var(--s4); padding-bottom: var(--s4); }
.speclist--tight .speclist__term{ margin:0; }

/* ---- .pledger — плакатная цена-ведомость ---- */
.pledger{ display:grid; grid-template-columns:1fr; border-top:1px solid var(--line); }
.pledger__tier{ display:flex; flex-direction:column; align-items:flex-start; gap: var(--s2);
  padding: var(--s5) 0; border-bottom:1px solid var(--line); min-width:0; }
.pledger__label{ font-size:12px; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
  color: var(--ink-2); }
.pledger__num{ font-variant-numeric:tabular-nums lining-nums; font-weight:800; color: var(--ink);
  letter-spacing:-.03em; line-height:.95; white-space:nowrap; min-width:0; max-width:100%;
  font-size:clamp(1.9rem, 1.05rem + 3.6vw, 3.8rem); }
.pledger__from{ font-size:.28em; font-weight:700; color: var(--ink-2); margin-right:.35em;
  letter-spacing:.04em; text-transform:uppercase; vertical-align:middle; }
.pledger__cur,.pledger__unit{ font-size:.32em; font-weight:700; color: var(--ink-2);
  margin-left:.3em; letter-spacing:.04em; text-transform:uppercase; vertical-align:baseline; }
@media(min-width:760px){
  .pledger{ grid-template-columns:repeat(auto-fit,minmax(0,1fr)); gap:0; }
  .pledger__tier{ flex-direction:column; align-items:flex-start; gap: var(--s3);
    padding: var(--s6) var(--s6) var(--s6) 0; border-bottom:0; }
  .pledger__tier + .pledger__tier{ border-left:1px solid var(--line-soft); padding-left: var(--s6); }
}

/* ---- .choice — два варианта, ось «или» ---- */
.choice{ display:grid; gap:0; border-top:1px solid var(--line); }
.choice__opt{ padding: var(--s6) 0; border-bottom:1px solid var(--line); min-width:0; }
.choice__idx{ font-size:13px; font-weight:700; color: var(--ink-2); font-variant-numeric:tabular-nums; }
.choice__term{ margin: var(--s2) 0 var(--s3); font-size:clamp(17px, 0.9rem + 0.6vw, 21px);
  font-weight:700; letter-spacing:-.01em; color: var(--ink); }
.choice__opt p{ margin:0; color: var(--ink-2); line-height:1.6; max-width:52ch; }
.choice__or{ display:none; }
.choice__note{ margin: var(--s6) 0 0; color: var(--ink-2); font-size:14px; line-height:1.6; max-width:82ch; }
@media(min-width:760px){
  .choice{ grid-template-columns:1fr auto 1fr; align-items:start; }
  .choice__opt{ padding: var(--s6) var(--s7); border-bottom:0; }
  .choice__opt:first-child{ padding-left:0; }
  .choice__opt:last-child{ padding-right:0; }
  .choice__or{ display:flex; align-items:center; justify-content:center; align-self:stretch;
    padding:0 var(--s4); font-size:12px; font-weight:700; letter-spacing:.1em; text-transform:uppercase;
    color: var(--accent-2); border-left:1px solid var(--line-soft); border-right:1px solid var(--line-soft); }
}

/* ---- .callout — честная врезка (замена .notice) ---- */
.callout{ padding: var(--s6); background: var(--surface-2); border:1px solid var(--line);
  border-left:4px solid var(--accent-deep); }
.callout__label{ font-size:12px; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color: var(--ink-2); margin:0 0 var(--s3); }
.callout h2,.callout h3{ margin:0 0 var(--s3); color: var(--ink); font-weight:800; letter-spacing:-.01em;
  font-size:clamp(18px, 0.9rem + 0.8vw, 24px); }
.callout p{ margin:0 0 var(--s4); color: var(--ink-2); line-height:1.65; max-width:74ch; }
.callout strong{ color: var(--ink); }
.callout > :last-child{ margin-bottom:0; }

/* ---- FAQ v8 (перекрываем коробочный аккордеон v7) ---- */
.faq{ display:block; max-width:none; margin:0; border-top:1px solid var(--line); }
.faq__item{ background:none; border:0; border-bottom:1px solid var(--line); border-radius:0; overflow:visible; }
:root[data-theme="light"] .faq__item{ box-shadow:none; }
.faq__item summary{ display:flex; justify-content:space-between; align-items:baseline; gap: var(--s4);
  padding: var(--s5) 0; cursor:pointer; list-style:none;
  font-size:clamp(16px, 0.9rem + 0.5vw, 19px); font-weight:700; color: var(--ink); letter-spacing:-.01em; }
.faq__item summary::-webkit-details-marker{ display:none; }
.faq__item summary::after{ content:"+"; flex:none; font-weight:400; color: var(--accent-2);
  font-size:26px; line-height:1; transition:transform var(--dur-act) var(--ease); }
.faq__item[open] summary::after{ transform:rotate(45deg); }
.faq__item .faq__body{ padding:0 0 var(--s5); max-width:72ch; color: var(--ink-2);
  font-size:15px; line-height:1.65; }

/* ---- reduced-motion для новых блоков ---- */
@media(prefers-reduced-motion:reduce){
  .js .phead__rule::after{ transform:none !important; }
  .js .phead__rule{ border-bottom-color: var(--line); }
  .speclist__item::before{ transition:none; }
  .faq__item summary::after{ transition:none; }
}


/* single-service: сворачивание списка предметов на .svc + кнопка-ссылка .svc__more */
button.svc__more{ background:none; border:0; font:inherit; cursor:pointer; }
.svc__list--collapsible.is-collapsed .svc__row--extra{ display:none; }


/* ============================================================
   ДИЗАЙН v8 — ВНУТРЕННИЕ СТРАНИЦЫ · примитивы волн 1–4 (29.08.2026)
   .ptable, .svc--nav, .reqs, .channels, .postlist, .cluster-nav, пагинация
   ============================================================ */

/* ---- .ptable — таблица цен-ведомость (page-tseny) ---- */
.ptable{ border-top:1px solid var(--line); }
.ptable__head{ display:none; }
.ptable__row{ display:grid; grid-template-columns:1fr auto; gap: var(--s2) var(--s5);
  padding: var(--s5) var(--s3); border-bottom:1px solid var(--line);
  text-decoration:none; color:inherit; align-items:baseline; transition:background-color var(--dur-act) ease; }
.ptable__name{ grid-column:1; min-width:0; font-size:clamp(17px, 0.9rem + 0.7vw, 22px); font-weight:700;
  color: var(--ink); letter-spacing:-.01em; }
.ptable__name .svc__badge{ margin-left: var(--s3); }
.ptable__val{ font-variant-numeric:tabular-nums; font-weight:700; color: var(--ink); white-space:nowrap; }
.ptable__val::before{ content:attr(data-label) " "; font-size:11px; font-weight:700;
  letter-spacing:.08em; text-transform:uppercase; color: var(--ink-2); margin-right:6px; }
.ptable__val--term{ color: var(--ink-2); }
.ptable__row:focus-visible{ outline:2px solid var(--accent); outline-offset:-2px; }
@media(min-width:820px){
  .ptable__head{ display:grid; grid-template-columns:1.6fr 1fr 1fr .8fr; gap: var(--s5);
    padding: var(--s3) var(--s3); border-bottom:1px solid var(--line);
    font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-2); }
  .ptable__head span:not(:first-child){ text-align:right; }
  .ptable__row{ grid-template-columns:1.6fr 1fr 1fr .8fr; }
  .ptable__val{ text-align:right; font-size:clamp(16px, 0.8rem + 0.6vw, 20px); }
  .ptable__val::before{ display:none; }
  .ptable__row:hover{ background-color: var(--surface); }
}

/* ---- .svc--nav — реестр-ссылки без колонки цены ---- */
.svc--nav .svc__row{ grid-template-columns:auto 1fr; }
.svc--nav .svc__desc{ margin-top:8px; }

/* ---- .reqs — реквизиты (термин / значение) ---- */
.reqs{ margin:0; border-top:1px solid var(--line); }
.reqs__row{ display:grid; grid-template-columns:minmax(120px,180px) 1fr; gap: var(--s4);
  padding: var(--s4) 0; border-bottom:1px solid var(--line); align-items:baseline; min-width:0; }
.reqs dt{ font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color: var(--ink-2); }
.reqs dd{ margin:0; min-width:0; color: var(--ink); font-variant-numeric:tabular-nums; line-height:1.5; }
.reqs a{ color: var(--accent-2); }

/* ---- .channels — каналы связи реестром (контакты) ---- */
.channels{ border-top:1px solid var(--line); }
.channels__row{ display:grid; grid-template-columns:1fr auto; gap: var(--s3) var(--s5);
  align-items:baseline; padding: var(--s5) var(--s3); border-bottom:1px solid var(--line);
  text-decoration:none; color:inherit; position:relative; transition:background-color var(--dur-act) ease; }
.channels__row::after{ content:""; position:absolute; left:0; top:-1px; bottom:-1px; width:3px;
  background: var(--accent); transform:scaleY(0); transform-origin:50% 0;
  transition:transform var(--dur-act) var(--ease); }
.channels__row:hover::after,.channels__row:focus-visible::after{ transform:scaleY(1); }
.channels__row:hover,.channels__row:focus-visible{ background-color: var(--surface); }
.channels__row:focus-visible{ outline:2px solid var(--accent); outline-offset:-2px; }
.channels__name{ min-width:0; font-size:clamp(16px, 0.8rem + 0.6vw, 20px); font-weight:700; color: var(--ink);
  letter-spacing:-.01em; }
.channels__tag{ display:inline-block; margin-left: var(--s3); vertical-align:middle; font-size:11px;
  font-weight:700; letter-spacing:.08em; text-transform:uppercase; color: var(--accent-2);
  border:1px solid var(--accent-deep); border-radius:3px; padding:2px 7px; }
.channels__val{ text-align:right; min-width:0; color: var(--ink-2); font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere; }

/* ---- .postlist — реестр статей (архивы/related) ---- */
.postlist{ border-top:1px solid var(--line); }
.postlist__item{ display:grid; grid-template-columns:1fr; gap: var(--s2);
  padding: var(--s6) var(--s3); border-bottom:1px solid var(--line);
  text-decoration:none; color:inherit; position:relative; transition:background-color var(--dur-act) ease; }
.postlist__item::after{ content:""; position:absolute; left:0; top:-1px; bottom:-1px; width:3px;
  background: var(--accent); transform:scaleY(0); transform-origin:50% 0;
  transition:transform var(--dur-act) var(--ease); }
.postlist__item:hover::after,.postlist__item:focus-visible::after{ transform:scaleY(1); }
.postlist__item:focus-visible{ outline:2px solid var(--accent); outline-offset:-2px; }
.postlist__cover{ display:none; }
.postlist__cat{ font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color: var(--accent-2); }
.postlist__title{ margin:0; font-size:clamp(18px, 0.9rem + 0.8vw, 24px); font-weight:700;
  letter-spacing:-.01em; line-height:1.25; color: var(--ink); min-width:0; }
.postlist__excerpt{ margin:0; max-width:72ch; font-size:14px; line-height:1.6; color: var(--ink-2); min-width:0; }
.postlist__meta{ font-size:13px; color: var(--ink-2); font-variant-numeric:tabular-nums; }
@media(min-width:820px){
  .postlist__item{ grid-template-columns:200px 1fr; column-gap: var(--s7); align-items:start; }
  .postlist__item--nocover{ grid-template-columns:1fr; }
  .postlist__cover{ display:block; aspect-ratio:16/10; overflow:hidden; background: var(--surface-2); }
  .postlist__cover img{ width:100%; height:100%; object-fit:cover; }
  .postlist__body{ min-width:0; display:grid; gap: var(--s2); }
  .postlist__item:hover{ background-color: var(--surface); }
}

/* ---- .cluster-nav — чипы рубрик v8 (прямоугольные, 1px) ---- */
.cluster-nav{ display:flex; flex-wrap:wrap; gap: var(--s3); padding-bottom: var(--s6);
  border-bottom:1px solid var(--line); margin-bottom: var(--s7); }
.cluster-nav__chip{ min-height:40px; display:inline-flex; align-items:center; padding:0 var(--s4);
  border:1px solid var(--line); border-radius:4px; font-size:14px; font-weight:600;
  color: var(--ink-2); text-decoration:none;
  transition:border-color var(--dur-act) ease, color var(--dur-act) ease; }
.cluster-nav__chip:hover{ color: var(--ink); border-color: var(--ink-2); }
.cluster-nav__chip--active{ color:#fff; background: var(--accent-deep); border-color: var(--accent-deep); }

/* ---- Пагинация архивов v8 ---- */
.the_posts_pagination .nav-links,
.pagination .nav-links{ display:flex; flex-wrap:wrap; gap: var(--s3); align-items:center;
  padding-top: var(--s8); }
.the_posts_pagination .page-numbers,
.pagination .page-numbers{ min-width:44px; min-height:44px; display:inline-flex; align-items:center;
  justify-content:center; padding:0 var(--s3); border:1px solid var(--line); border-radius:4px;
  font-weight:700; font-variant-numeric:tabular-nums; color: var(--ink-2); text-decoration:none;
  transition:border-color var(--dur-act) ease, color var(--dur-act) ease; }
.the_posts_pagination a.page-numbers:hover,
.pagination a.page-numbers:hover{ color: var(--ink); border-color: var(--ink-2); }
.the_posts_pagination .page-numbers.current,
.pagination .page-numbers.current{ color:#fff; background: var(--accent-deep); border-color: var(--accent-deep); }
.the_posts_pagination .page-numbers.dots,
.pagination .page-numbers.dots{ border-color:transparent; }

/* ---- reduced-motion для примитивов волн 1–4 ---- */
@media(prefers-reduced-motion:reduce){
  .channels__row::after,.postlist__item::after{ transition:none; }
}


/* ---- Правки по UX-ревью эталона (29.08.2026) ---- */
/* шапка секции без лида: одна колонка, заголовок не «висит» у пустого столбца */
.shead--solo .shead__grid{ grid-template-columns:1fr; }
/* .phead__rate — крупная цифра ведёт на Яндекс.Карты: аффорданс клика */
.phead__rate:hover b,.phead__rate:focus-visible b{ box-shadow:inset 0 -2px 0 var(--accent); }
.phead__rate:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; }


/* page-tseny: цена без деления гум./тех. охватывает обе ценовые колонки на десктопе */
@media(min-width:820px){ .ptable__val--single{ grid-column:2 / 4; text-align:center; } }


/* ---- Форма поиска WP (404) в языке v8 ---- */
.search-form{ display:flex; gap: var(--s3); max-width:38rem; align-items:stretch; }
.search-form label{ flex:1; min-width:0; display:block; }
.search-form .search-field{ width:100%; min-width:0; min-height:52px; padding: var(--s3) var(--s4);
  border:0; border-bottom:2px solid var(--ink-2); border-radius:8px 8px 0 0;
  background: var(--surface-2); color: var(--ink); font-size:16px;
  transition:background-color var(--dur-act) ease, border-color var(--dur-act) ease; }
.search-form .search-field::placeholder{ color: var(--ink-2); }
.search-form .search-field:focus{ outline:2px solid var(--accent-2); outline-offset:2px;
  border-bottom-color: var(--accent); background: var(--surface); }
.search-form .search-submit{ flex:none; min-height:52px; padding:0 var(--s6); border:0;
  border-radius: var(--r-pill); background: var(--accent-deep); color:#fff; font-weight:700;
  font-size:15px; cursor:pointer; transition:box-shadow .18s ease; }
.search-form .search-submit:hover{ box-shadow:0 0 0 3px rgba(var(--glow-rgb),.3); }


/* ---- Полировка статьи по финальному ревью: TOC и автор на линейки, а не коробки ---- */
.toc{ background:none; border:0; border-left:1px solid var(--line); border-radius:0;
  padding: 2px 0 2px var(--s5); }
.toc__title{ font-size:12px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
  color: var(--ink-2); margin:0 0 var(--s4); }
.toc__item a{ color: var(--ink-2); text-decoration:none;
  box-shadow:inset 0 -1px 0 transparent; transition:box-shadow var(--dur-act) ease, color var(--dur-act) ease; }
.toc__item a:hover{ color: var(--ink); box-shadow:inset 0 -1px 0 var(--line); }

.author-box{ background:none; border:0; border-top:1px solid var(--line);
  border-bottom:1px solid var(--line); border-radius:0; padding: var(--s6) 0; }
:root[data-theme="light"] .author-box{ box-shadow:none; }
.author-box__eyebrow{ font-size:12px; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
  color: var(--ink-2); }


/* ---- .svc--compact — компактный справочник предметов/городов ----
   Длинные списки перелинковки в 2–3 колонки мелким кеглем: вторичная навигация,
   визуально отличная от плакатной .svc, чтобы «по предметам/городам» не повторяли
   блок услуг и не занимали пол-экрана. */
.svc--compact .svc__list{ display:grid; grid-template-columns:1fr; border-top:1px solid var(--line); }
@media(min-width:560px){ .svc--compact .svc__list{ grid-template-columns:1fr 1fr; column-gap: var(--s8); } }
@media(min-width:980px){ .svc--compact .svc__list{ grid-template-columns:repeat(3,1fr); } }
.svc--compact .svc__row{ grid-template-columns:1fr auto; column-gap: var(--s4);
  padding: var(--s3) 0 var(--s3) var(--s3); align-items:baseline; }
.svc--compact .svc__row::before{ display:none; }              /* без радиального свечения в мелких ячейках */
.svc--compact .svc__row::after{ top:0; bottom:0; width:2px; } /* акцентная линия по высоте ячейки */
.svc--compact .svc__num{ display:none; }
.svc--compact .svc__name{ font-size:15px; font-weight:600; line-height:1.3; letter-spacing:0; }
.svc--compact .svc__desc{ display:none; }
.svc--compact .svc__price{ font-size:14px; font-weight:700; letter-spacing:0; line-height:1.3;
  color: var(--ink); }
.svc--compact .svc__row:hover .svc__price,
.svc--compact .svc__row:focus-visible .svc__price{ transform:none; }
.svc--compact .svc__from{ display:inline; font-size:11px; font-weight:600; letter-spacing:0;
  text-transform:none; color: var(--ink-2); margin:0 3px 0 0; }


/* ---- Мобильная защита от горизонтальной прокрутки (29.08.2026) ----
   Узкие гриды с непереносимым содержимым распирали строку на телефонах:
   мид-CTA (.cta-strip: заметка min-width:220 + иконка 54px + длинная кнопка),
   реквизиты (.reqs: dt берёт 180px, длинный ИНН/ОГРН не влезает в остаток),
   каналы связи (.channels: длинное значение давит колонку имени).
   Решение — на ≤600px стекать в одну колонку и давать контенту сжиматься. */
@media(max-width:600px){
  .cta-strip{ padding: var(--s5) var(--s5); }
  .cta-strip__lead{ flex-wrap:wrap; }
  .cta-strip__note{ min-width:0; }
  .cta-strip__actions .btn{ flex:1 1 100%; min-width:0; white-space:normal; }
  .reqs__row{ grid-template-columns:1fr; gap:2px; }
  .channels__row{ grid-template-columns:1fr; gap:2px; }
  .channels__val{ text-align:left; }
}
