/* Шрифты локально: внешние CDN запрещены брифом.
   Сабсеты latin + cyrillic со своими unicode-range — иначе
   цифры и латиница уходят в системный фолбэк. */
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400 600;font-display:swap;
  src:url('fonts/plex-sans-cyrillic-ext-400.woff2') format('woff2');
  unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400 600;font-display:swap;
  src:url('fonts/plex-sans-cyrillic-400.woff2') format('woff2');
  unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400 600;font-display:swap;
  src:url('fonts/plex-sans-latin-ext-400.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400 600;font-display:swap;
  src:url('fonts/plex-sans-latin-400.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/plex-mono-cyrillic-ext-400.woff2') format('woff2');
  unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/plex-mono-cyrillic-400.woff2') format('woff2');
  unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/plex-mono-latin-ext-400.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/plex-mono-latin-400.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/plex-mono-cyrillic-ext-500.woff2') format('woff2');
  unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/plex-mono-cyrillic-500.woff2') format('woff2');
  unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/plex-mono-latin-ext-500.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/plex-mono-latin-500.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Fira Sans Condensed';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/fira-cond-cyrillic-ext-500.woff2') format('woff2');
  unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'Fira Sans Condensed';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/fira-cond-cyrillic-500.woff2') format('woff2');
  unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Fira Sans Condensed';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/fira-cond-latin-ext-500.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Fira Sans Condensed';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/fira-cond-latin-500.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Fira Sans Condensed';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/fira-cond-cyrillic-ext-600.woff2') format('woff2');
  unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'Fira Sans Condensed';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/fira-cond-cyrillic-600.woff2') format('woff2');
  unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Fira Sans Condensed';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/fira-cond-latin-ext-600.woff2') format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Fira Sans Condensed';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/fira-cond-latin-600.woff2') format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/* Знак рубля не входит ни в один стандартный сабсет Google.
   Без этого правила ₽ в суммах рисуется системным шрифтом
   и заметно выбивается из набора. Файлы крошечные. */
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/plex-sans-rub-400.woff2') format('woff2');
  unicode-range:U+20BD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/plex-sans-rub-500.woff2') format('woff2');
  unicode-range:U+20BD}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/plex-sans-rub-600.woff2') format('woff2');
  unicode-range:U+20BD}
@font-face{font-family:'Fira Sans Condensed';font-style:normal;font-weight:500;font-display:swap;
  src:url('fonts/fira-cond-rub-500.woff2') format('woff2');
  unicode-range:U+20BD}
@font-face{font-family:'Fira Sans Condensed';font-style:normal;font-weight:600;font-display:swap;
  src:url('fonts/fira-cond-rub-600.woff2') format('woff2');
  unicode-range:U+20BD}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url('fonts/plex-mono-rub-400.woff2') format('woff2');
  unicode-range:U+20BD}

:root{
  /* Цвет. Один акцент — под единственное действие на сайте. */
  --ink:        oklch(22% 0.025 255);
  --ink-soft:   oklch(26% 0.025 255);
  --text:       oklch(40% 0.02 255);
  --text-soft:  oklch(45% 0.02 255);
  --muted:      oklch(47% 0.02 255);
  --faint:      oklch(58% 0.015 255);
  --faint-2:    oklch(62% 0.015 255);

  --accent:       oklch(44% 0.15 257);
  --accent-dark:  oklch(36% 0.14 257);
  --accent-light: oklch(55% 0.16 257);
  --accent-wash:  oklch(96% 0.014 257);
  --error:        oklch(45% 0.16 25);
  --error-line:   oklch(55% 0.16 25);

  --line:        oklch(89% 0.006 255);
  --line-strong: oklch(80% 0.008 255);
  --line-input:  oklch(85% 0.006 255);
  --line-hair:   oklch(91% 0.006 255);

  --bg:      oklch(98.6% 0.002 250);
  --bg-alt:  oklch(96.5% 0.004 255);
  --surface: #fff;

  --dark:        oklch(20% 0.03 256);
  --dark-line:   oklch(32% 0.02 256);
  --dark-text:   oklch(80% 0.015 255);
  --dark-muted:  oklch(68% 0.02 255);
  --dark-faint:  oklch(60% 0.02 255);

  --sans: 'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --display: 'Fira Sans Condensed', 'IBM Plex Sans', system-ui, sans-serif;
  --mono: 'IBM Plex Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;

  --wrap: 1240px;
  --pad: 40px;
}

*{box-sizing:border-box}

/* Атрибут hidden даёт display:none из стиля браузера, а любой авторский
   display (.stack — flex, .err — flex) его перебивает. Без этой строки
   квиз показывает все шесть шагов сразу и все сообщения об ошибках. */
[hidden]{display:none !important}

html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}

/* В макете все блоки — дивы с нулевыми отступами. В реализации они стали
   семантическими p/h/ul, и браузерные margin начали складываться с теми,
   что заданы в классах: лишний воздух между заголовками и текстом.
   Обнуляем базу — нужные отступы классы задают сами. */
h1,h2,h3,h4,h5,h6,p,ul,ol,dl,dd,figure,blockquote,fieldset,legend{margin:0;padding:0}
ul,ol{list-style:none}
.prose ul,.prose ol,.faq__a ul,.faq__a ol{list-style:disc;padding-left:22px;margin:12px 0}

body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:var(--sans);font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--accent-dark);text-decoration:underline;text-underline-offset:3px}
button,input,select,textarea{font-family:inherit;font-size:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
img{max-width:100%;display:block}

.wrap{max-width:var(--wrap);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
/* Шапка липкая и перекрывает верх секции при переходе по якорю —
   отступ прокрутки чуть больше её высоты (82px). */
.section[id],[id="footer"]{scroll-margin-top:96px}
.section{border-bottom:1px solid var(--line)}
.section--white{background:var(--surface)}
.section--alt{background:var(--bg-alt)}
/* Только вертикальные отступы. Сокращённая запись padding здесь
   обнуляла боковые отступы .wrap, и контент всех секций уезжал
   к краю контейнера — на 40px левее футера. */
.section__pad{padding-top:clamp(48px,5vw,80px);padding-bottom:clamp(48px,5vw,80px)}
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* --- Типографика --- */
/* В макете у надзаголовков и служебных строк межстрочный обычный,
   а не 1.6 от body — иначе блоки выше макетных и колонки разъезжаются. */
.eyebrow{font-family:var(--mono);font-size:12px;line-height:normal;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);margin:0 0 14px}
.h1{margin:0 0 24px;font-family:var(--display);font-size:clamp(32px,5vw,60px);font-weight:600;letter-spacing:-.02em;line-height:1.05;color:var(--ink);max-width:22ch;text-wrap:balance}
.h2{margin:0 0 44px;font-family:var(--display);font-size:clamp(26px,3vw,38px);font-weight:600;letter-spacing:-.015em;line-height:1.1;color:var(--ink)}
.h3{font-family:var(--display);font-weight:600;color:var(--ink);line-height:1.2;margin:0}
.lead{margin:0 0 36px;font-size:clamp(16px,1.4vw,19px);line-height:1.6;color:var(--text);max-width:58ch;text-wrap:pretty}
.prose{margin:0;font-size:16px;line-height:1.7;color:var(--text);text-wrap:pretty}

/* --- Кнопки --- */
.btn{display:inline-flex;align-items:center;justify-content:center;border:none;cursor:pointer;
  font-weight:600;letter-spacing:.01em;text-decoration:none;transition:background .15s ease,border-color .15s ease}
.btn:hover{text-decoration:none}
.btn--primary{background:var(--accent);color:#fff}
.btn--primary:hover{background:var(--accent-dark);color:#fff}
.btn--primary[disabled]{background:oklch(62% .06 257);cursor:default}
.btn--ghost{background:transparent;border:1px solid var(--line-strong);color:oklch(35% .02 255)}
.btn--ghost:hover{border-color:var(--accent);color:oklch(35% .02 255)}
.btn--onDark{border:1px solid oklch(55% .02 256);color:#fff;background:transparent}
.btn--onDark:hover{background:oklch(26% .03 256);color:#fff}
.btn--lg{height:60px;padding:0 36px;font-size:17.5px}
.btn--md{height:52px;padding:0 30px;font-size:16.5px}
.btn--sm{height:48px;padding:0 24px;font-size:15px}

/* --- Шапка --- */
.header{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line)}
.header__inner{min-height:82px;display:flex;align-items:center;gap:clamp(16px,2.5vw,40px)}
.logo{display:flex;align-items:center;gap:12px;flex:none;color:inherit}
.logo:hover{text-decoration:none;color:inherit}
.logo__mark{width:auto;height:46px;flex:none;display:block}
.logo__text{display:flex;flex-direction:column;gap:1px}
.logo__name{font-family:var(--display);font-size:20px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}
.logo__tag{font-size:11.5px;color:oklch(52% .02 255)}
.nav{display:flex;gap:clamp(14px,1.6vw,26px);margin-left:auto;font-size:15px;white-space:nowrap}
.nav a{color:oklch(30% .02 255)}
.header .btn{flex:none}

/* --- Первый экран --- */
.hero{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:clamp(32px,4vw,56px);align-items:stretch}
.hero__cta{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-bottom:clamp(40px,5vw,64px)}
.hero__hint{font-size:15px;line-height:1.5;color:var(--muted);max-width:30ch}
.hero__media{display:flex;flex-direction:column;gap:10px;padding-top:34px;min-height:100%}
.hero__slot{position:relative;width:100%;flex:1;min-height:240px;max-height:420px;border:1px solid var(--line-input);
  background:repeating-linear-gradient(135deg,oklch(96% .003 250) 0 8px,oklch(93.5% .004 250) 8px 16px)}
.hero__slot img{width:100%;height:100%;object-fit:cover;display:block}

/* --- Плашки-доказательства --- */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;
  background:var(--line);border:1px solid var(--line-strong);margin-top:clamp(40px,5vw,56px)}
.fact{background:var(--bg);padding:26px}
.fact__num{display:flex;align-items:baseline;gap:8px;margin-bottom:10px;font-family:var(--display);
  font-size:clamp(32px,3vw,42px);font-weight:600;line-height:1;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}
.fact__unit{font-size:clamp(18px,1.6vw,22px);font-weight:500;color:var(--text)}
.fact__txt{font-size:14.5px;line-height:1.45;color:var(--muted)}

/* --- Сетки-карточки --- */
.grid-hair{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.grid-hair--strong{border-color:var(--line-strong)}
.cards-4{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.cards-3{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}

.situation{display:flex;flex-direction:column;gap:12px;background:var(--surface);padding:30px 28px 34px;color:inherit;min-height:210px}
.situation:hover{background:var(--bg);text-decoration:none;color:inherit}
.situation__idx{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--faint)}
.situation__ttl{font-family:var(--display);font-size:23px;font-weight:600;color:var(--ink);line-height:1.2}
.situation__txt{font-size:15px;line-height:1.55;color:var(--text-soft);text-wrap:pretty}
.situation__link{margin-top:auto;font-size:14px;color:var(--accent);font-weight:500}

/* --- Услуги --- */
.svc-major{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;margin-bottom:24px}
.svc-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line-strong);
  padding:34px 32px;color:inherit;min-height:240px;transition:border-color .15s ease}
.svc-card:hover{border-color:var(--accent);text-decoration:none;color:inherit}
.svc-card__kicker{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:16px}
.svc-card__ttl{font-family:var(--display);font-size:clamp(24px,2.2vw,30px);font-weight:600;line-height:1.15;color:var(--ink);margin:0 0 14px}
.svc-card__txt{font-size:15.5px;line-height:1.6;color:var(--text-soft);text-wrap:pretty}
.svc-card__more{margin-top:auto;padding-top:24px;font-size:15px;color:var(--accent);font-weight:500}
.svc-list{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-bottom:40px}
.svc-row{display:flex;align-items:baseline;gap:14px;background:var(--surface);padding:22px 24px;color:inherit}
.svc-row:hover{background:var(--bg);text-decoration:none;color:inherit}
.svc-row__idx{font-family:var(--mono);font-size:11px;color:var(--faint-2)}
.svc-row__ttl{font-size:16.5px;font-weight:500;color:var(--ink-soft)}
.svc-text{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:36px;border-top:1px solid var(--line);padding-top:36px}
.svc-text__col{display:flex;flex-direction:column;gap:20px}

/* --- Кейс --- */
.case{background:var(--dark)}
/* Только вертикальные отступы: сокращённая запись обнуляла боковые
   отступы .wrap, и секция кейса выезжала левее остальной страницы. */
.case__inner{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:clamp(32px,5vw,64px);align-items:start;
  padding-top:clamp(48px,5vw,84px);padding-bottom:clamp(48px,5vw,84px)}
.case__eyebrow{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--dark-muted);margin:0 0 24px}
.case__big{display:flex;align-items:flex-start;gap:16px;margin-bottom:28px}
.case__num{font-family:var(--display);font-size:clamp(88px,13vw,180px);font-weight:600;line-height:.82;letter-spacing:-.04em;color:#fff;font-variant-numeric:tabular-nums}
.case__unit{font-family:var(--display);font-size:clamp(24px,3vw,40px);font-weight:500;color:oklch(72% .015 255);line-height:1;padding-top:.35em}
.case__h2{margin:0;font-family:var(--display);font-size:clamp(24px,2.6vw,34px);font-weight:600;line-height:1.15;color:#fff;max-width:24ch;text-wrap:balance}
.case__side{display:flex;flex-direction:column;gap:28px}
.case__lead{margin:0;font-size:clamp(16px,1.4vw,18px);line-height:1.65;color:var(--dark-text);text-wrap:pretty}
.spec{display:grid;gap:1px;background:var(--dark-line);border:1px solid var(--dark-line);margin:0}
.spec__row{display:flex;justify-content:space-between;gap:20px;background:var(--dark);padding:16px 20px}
.spec__k{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--dark-muted)}
.spec__v{font-size:15px;color:#fff;text-align:right}
.case__disclaimer{margin:0;font-size:14.5px;line-height:1.6;color:oklch(62% .02 255);
  border-left:2px solid oklch(40% .02 256);padding-left:16px;max-width:52ch}

/* --- Текстовая страница (политика, документы) --- */
.doc{max-width:78ch}
.doc h2{font-family:var(--display);font-size:clamp(20px,2vw,26px);font-weight:600;color:var(--ink);
  line-height:1.2;margin:40px 0 14px}
.doc h2:first-of-type{margin-top:0}
.doc h3{font-family:var(--display);font-size:18px;font-weight:600;color:var(--ink-soft);margin:24px 0 10px}
.doc p{margin:0 0 14px;font-size:16.5px;line-height:1.7;color:var(--text);text-wrap:pretty}
.doc ul{list-style:disc;padding-left:22px;margin:0 0 14px}
.doc li{margin:0 0 8px;font-size:16.5px;line-height:1.7;color:var(--text)}
.doc__meta{font-family:var(--mono);font-size:13px;color:var(--muted);margin-bottom:32px}
.doc__note{background:var(--surface);border-left:3px solid var(--accent);padding:16px 20px;margin:24px 0}
.doc__note p{margin:0;font-size:15.5px}
.doc table{width:100%;border-collapse:collapse;border:1px solid var(--line);margin:0 0 20px;background:var(--surface)}
.doc th,.doc td{padding:12px 16px;border-bottom:1px solid var(--line);text-align:left;font-size:15.5px;vertical-align:top}
.doc th{background:var(--bg);font-weight:600;color:var(--ink);width:34%}
.doc tr:last-child td,.doc tr:last-child th{border-bottom:none}
@media(max-width:600px){
  .doc th{width:auto}
  .doc table,.doc thead,.doc tbody,.doc tr,.doc th,.doc td{display:block}
  .doc th{border-bottom:none;padding-bottom:4px}
  .doc td{padding-top:0}
}

/* --- Наши работы --- */
.works__head{display:flex;gap:32px;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;margin-bottom:40px}
.works__lead{margin:0;font-size:16.5px;line-height:1.65;color:oklch(42% .02 255);max-width:56ch;text-wrap:pretty}
.works__all{font-size:16px;font-weight:500;white-space:nowrap}
.works{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:clamp(20px,2.5vw,32px)}
.work{margin:0;display:flex;flex-direction:column;gap:14px}
/* Кадры портретные 3:4. Соотношение задано на рамке, поэтому вёрстка
   не прыгает, пока изображение грузится. */
.work__frame{position:relative;width:100%;aspect-ratio:3/4;border:1px solid var(--line-input);
  background:repeating-linear-gradient(135deg,oklch(96% .003 250) 0 8px,oklch(93.5% .004 250) 8px 16px);overflow:hidden}
.work__frame img{width:100%;height:100%;object-fit:cover;display:block}
.work__cap{font-size:15.5px;line-height:1.5;color:oklch(30% .02 255)}

/* --- Шаги --- */
/* Минимум колонки 320px даёт 3 колонки на широком экране: шагов шесть,
   ложатся ровно в два ряда. При 280px выходило 4 колонки и во втором
   ряду оставались две пустые ячейки, залитые цветом линий сетки.
   min(100%,320px) не даёт переполнения на узких экранах. */
.steps{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));border-color:var(--line-strong)}
.step{background:var(--surface);padding:28px;display:flex;flex-direction:column;gap:12px}
.step--key{background:var(--accent-wash);box-shadow:inset 3px 0 0 var(--accent)}
.step__n{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--faint)}
.step--key .step__n{color:var(--accent)}
.step__ttl{font-family:var(--display);font-size:22px;font-weight:600;color:var(--ink);margin:0}
.step__txt{font-size:15px;line-height:1.55;color:var(--text-soft)}
.step--key .step__txt{color:oklch(38% .02 255)}

/* --- Барьер → ответ --- */
.barriers{border:1px solid var(--line-strong);background:var(--surface)}
.barriers__grid{display:grid;grid-template-columns:minmax(240px,1fr) minmax(280px,1.35fr);gap:1px;background:var(--line)}
.barriers__head{background:var(--bg);padding:14px 24px;font-family:var(--mono);font-size:11px;
  letter-spacing:.1em;text-transform:uppercase;color:oklch(50% .02 255)}
.barriers__q{background:var(--surface);padding:20px 24px;font-size:16px;line-height:1.5;color:oklch(38% .02 255)}
.barriers__a{background:var(--surface);padding:20px 24px;font-size:16px;line-height:1.5;color:oklch(24% .025 255);font-weight:500}

/* --- Стоимость --- */
.two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:clamp(32px,5vw,64px)}
.price__note{margin:0 0 28px;font-size:16.5px;line-height:1.65;color:oklch(42% .02 255);max-width:46ch;text-wrap:pretty}
.price__min{margin:0 0 28px;font-size:15px;line-height:1.6;color:oklch(50% .02 255);max-width:46ch}
.factors__head{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:oklch(50% .02 255);
  padding-bottom:12px;border-bottom:1px solid var(--line-strong)}
.factors li{display:flex;gap:16px;padding:16px 0;border-bottom:1px solid var(--line-hair);list-style:none}
.factors li:last-child{border-bottom:none}
.factors{margin:0;padding:0}
.factors__n{font-family:var(--mono);font-size:12px;color:var(--faint-2);padding-top:3px}
.factors__t{font-size:16px;color:oklch(30% .02 255)}

/* --- География --- */
.geo{display:flex;gap:32px;flex-wrap:wrap;align-items:center;justify-content:space-between;
  padding-top:clamp(40px,4vw,56px);padding-bottom:clamp(40px,4vw,56px)}
.geo__txt{display:flex;flex-direction:column;gap:8px;max-width:52ch}
.geo__ttl{font-family:var(--display);font-size:clamp(22px,2.2vw,28px);font-weight:600;color:var(--ink)}
.geo__links{display:flex;gap:12px;flex-wrap:wrap}
.chip-link{display:inline-flex;align-items:center;height:46px;padding:0 20px;border:1px solid var(--line-strong);
  font-size:15px;color:oklch(28% .02 255)}
.chip-link:hover{border-color:var(--accent);text-decoration:none;color:oklch(28% .02 255)}

/* --- Квиз --- */
.quiz{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:clamp(32px,4vw,56px);align-items:start}
.quiz__aside{position:sticky;top:110px}
.quiz__lead{margin:0 0 28px;font-size:16.5px;line-height:1.65;color:oklch(42% .02 255);max-width:44ch;text-wrap:pretty}
.quiz__promises{display:flex;flex-direction:column;gap:14px;padding-top:24px;border-top:1px solid var(--line-input);margin:0;list-style:none}
.quiz__promises li{display:flex;gap:12px;font-size:15px;line-height:normal;color:oklch(42% .02 255)}
.quiz__promises b{font-family:var(--mono);color:var(--accent);font-weight:400}
/* Тёмная секция квиза: форма белая, поэтому «висит» над фоном —
   акцентная полоса сверху и мягкая тень вместо обычной рамки. */
.section--dark{background:var(--dark);border-bottom-color:var(--dark-line)}
.section--dark .eyebrow{color:var(--dark-muted)}
.section--dark .h2{color:#fff}
.section--dark .quiz__lead{color:var(--dark-text)}
.section--dark .quiz__promises{border-top-color:var(--dark-line)}
.section--dark .quiz__promises li{color:oklch(78% .015 255)}
.section--dark .quiz__promises b{color:oklch(72% .11 257)}

/* Стрелка указывает на форму и не должна свисать ниже её нижнего края.
   Высота колонки зависит от переносов текста, поэтому запас небольшой:
   прижимаем указатель отступом сверху, но не растягиваем колонку. */
.quiz__point{display:flex;align-items:center;gap:14px;margin-top:24px}
.quiz__point span{font-family:var(--mono);font-size:12px;line-height:normal;letter-spacing:.12em;
  text-transform:uppercase;color:oklch(72% .11 257);white-space:nowrap}
.quiz__point i{position:relative;flex:1;min-width:56px;height:2px;background:oklch(72% .11 257)}
.quiz__point i::after{content:"";position:absolute;right:0;top:-5px;width:0;height:0;
  border-left:11px solid oklch(72% .11 257);border-top:6px solid transparent;border-bottom:6px solid transparent}

.quiz__box{background:var(--surface);border-top:4px solid var(--accent-light);
  box-shadow:0 24px 60px -20px oklch(10% .02 256 / .55)}
.quiz__head{padding:24px 28px 20px;border-bottom:1px solid var(--line-hair)}
.quiz__meta{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px;gap:16px}
.quiz__step{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.quiz__left{font-family:var(--mono);font-size:12px;color:var(--faint)}
.quiz__bar{height:4px;background:var(--line-hair)}
.quiz__bar i{display:block;height:4px;background:var(--accent);transition:width .25s ease}
.quiz__body{padding:32px 28px}
.quiz__foot{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:24px 28px;border-top:1px solid var(--line-hair);background:var(--bg)}
.quiz__footnote{font-size:14px;color:oklch(52% .02 255)}
.field{display:flex;flex-direction:column;gap:8px}
.field__label{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.field__label i{text-transform:none;letter-spacing:0;color:var(--faint-2);font-style:normal}
.field__count{font-size:13.5px;color:var(--faint);font-variant-numeric:tabular-nums}
.control{height:56px;padding:0 16px;border:1px solid var(--line-input);background:#fff;font-size:16px;color:oklch(24% .025 255);width:100%}
textarea.control{height:auto;padding:14px 16px;resize:vertical}
.control[aria-invalid="true"]{border-color:var(--error-line)}
.step-title{font-family:var(--display);font-size:26px;font-weight:600;color:var(--ink);line-height:1.2;margin:0}
.step-hint{font-size:15px;color:oklch(50% .02 255);line-height:1.55}
.stack{display:flex;flex-direction:column;gap:18px}
.pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.opt{text-align:left;padding:18px 20px;background:#fff;border:1px solid var(--line-input);font-size:16px;
  font-weight:500;color:oklch(24% .025 255);cursor:pointer;min-height:60px}
.opt[aria-pressed="true"]{background:var(--accent-wash);border-color:var(--accent)}
.checks{display:flex;flex-direction:column;gap:10px}
.check{display:flex;align-items:center;gap:14px;text-align:left;padding:18px 20px;background:#fff;
  border:1px solid var(--line-input);font-size:16px;color:oklch(24% .025 255);cursor:pointer}
.check[aria-pressed="true"]{background:var(--accent-wash);border-color:var(--accent)}
.check__box{width:20px;height:20px;flex:none;border:1px solid oklch(78% .008 255);background:transparent}
.check[aria-pressed="true"] .check__box{border-color:var(--accent);background:var(--accent)}
.err{font-size:14.5px;color:var(--error);display:flex;gap:10px;align-items:center}
.err__dot{width:16px;height:16px;background:var(--error);flex:none;display:inline-block}
.legal{font-size:13.5px;line-height:1.55;color:oklch(55% .02 255)}
.panel{padding:44px 32px}
.panel__ttl{font-family:var(--display);font-size:30px;font-weight:600;line-height:1.15;color:var(--ink);margin:0 0 18px}
.panel p{margin:0 0 14px;font-size:16.5px;line-height:1.65;color:oklch(42% .02 255);max-width:52ch;text-wrap:pretty}
.panel__actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:18px}
.tick{width:44px;height:44px;background:var(--accent);margin-bottom:24px;position:relative}
.tick i{position:absolute;background:#fff;display:block}
.tick i:first-child{left:12px;top:20px;width:8px;height:3px;transform:rotate(45deg)}
.tick i:last-child{left:16px;top:18px;width:18px;height:3px;transform:rotate(-45deg)}
.summary{display:grid;gap:1px;background:var(--line-hair);border:1px solid var(--line-hair);margin:0 0 28px}
.summary__row{display:flex;justify-content:space-between;gap:16px;background:#fff;padding:14px 18px}
.summary__k{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:oklch(50% .02 255)}
.summary__v{font-size:15px;color:var(--ink-soft);text-align:right}

/* --- FAQ --- */
.faq{border-top:1px solid var(--line-strong);max-width:900px}
.faq__item{border-bottom:1px solid var(--line-hair)}
.faq__q{width:100%;display:flex;gap:20px;align-items:baseline;justify-content:space-between;text-align:left;
  padding:22px 4px;background:transparent;border:none;cursor:pointer;font-family:var(--display);
  font-size:clamp(18px,1.8vw,22px);font-weight:600;color:oklch(24% .025 255);line-height:1.25}
.faq__sign{font-family:var(--mono);font-size:20px;color:oklch(50% .02 255);flex:none;line-height:1}
.faq__a{padding:0 4px 26px;font-size:16.5px;line-height:1.65;color:oklch(42% .02 255);max-width:70ch;text-wrap:pretty}
.faq__a[hidden]{display:none}

/* --- Футер --- */
.footer{background:var(--dark);padding:clamp(48px,5vw,72px) 0 32px;color:var(--dark-text)}
.footer a{color:oklch(85% .01 255)}
/* Блок связи и колонки ссылок стоят рядом, а не друг под другом:
   колонки занимают два трека из трёх. Раньше это была колоночная
   флексбокс-раскладка, и справа от блока связи зияла пустота. */
.footer__top{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));
  gap:clamp(28px,3vw,48px);align-items:start;padding-bottom:44px;border-bottom:1px solid var(--dark-line)}
.footer__cta{display:flex;flex-direction:column;gap:20px;max-width:44ch}
.footer__brand{display:flex;align-items:center;gap:14px}
/* Знак тёмно-синий, на тёмном футере он бы утонул — подкладываем светлую плашку */
.footer__mark{width:auto;height:44px;flex:none;display:block;background:#fafafb;padding:6px 8px}
.footer__name{font-family:var(--display);font-size:22px;font-weight:600;color:#fff;letter-spacing:-.01em}
.footer__ttl{font-family:var(--display);font-size:26px;font-weight:600;color:#fff;line-height:1.2}
.footer__txt{margin:0;font-size:15.5px;line-height:1.6;color:oklch(75% .015 255);text-wrap:pretty}
.footer__btn{align-self:flex-start;height:54px;padding:0 30px;background:var(--accent-light);color:#fff;font-size:16.5px;font-weight:600}
.footer__btn:hover{background:oklch(48% .16 257);color:#fff;text-decoration:none}
.footer__cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr));
  gap:clamp(24px,2.5vw,40px);grid-column:span 2}
.footer__col{display:flex;flex-direction:column;gap:12px}
.footer__col h3{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  color:oklch(62% .02 255);margin:0 0 6px;font-weight:400}
.footer__col a{font-size:15px}
.footer__bottom{display:flex;gap:28px;flex-wrap:wrap;justify-content:space-between;padding-top:28px}
.footer__legal{font-family:var(--mono);font-size:12.5px;line-height:1.7;color:var(--dark-faint)}
/* Адрес ведёт на карточку в Картах, телефон — просто текст.
   Ссылка на адресе не выделяется цветом: строка читается сплошной.
   Селектор с .footer__legal, а не одиночный класс: правило .footer a
   выше по весу (класс + тег) и перебивало бы его. */
.footer__legal .footer__addr{color:inherit}
.footer__legal .footer__addr:hover{color:#fff}
.footer__tel{white-space:nowrap}
.footer__meta{display:flex;gap:22px;flex-wrap:wrap;align-items:flex-start;font-family:var(--mono);font-size:12.5px}
.footer__meta a{color:oklch(72% .015 255)}
.footer__meta span{color:oklch(52% .02 255)}

/* --- Мобильная закреплённая кнопка --- */
.sticky-cta{position:sticky;bottom:0;z-index:30;background:#fff;border-top:1px solid var(--line-input);
  padding:12px 16px;align-items:center;gap:14px;display:none}
.sticky-cta a{display:flex;align-items:center;justify-content:center;height:56px;flex:1;
  background:var(--accent);color:#fff;font-size:17px;font-weight:600}
.sticky-cta a:hover{text-decoration:none;color:#fff}
.sticky-cta span{font-size:12.5px;line-height:1.35;color:oklch(50% .02 255);max-width:11ch}

/* --- Адаптив --- */
.only-mobile{display:none}
@media (max-width:1080px){
  :root{--pad:20px}
  .only-mobile{display:flex}
  .only-desktop{display:none!important}
  .sticky-cta{display:flex}
  .quiz__aside{position:static}
  .barriers__grid{grid-template-columns:1fr}
  .barriers__head:nth-of-type(2){display:none}
  .barriers__q{padding-bottom:8px}
  .barriers__a{padding-top:8px;border-bottom:1px solid var(--line)}
}
@media (max-width:600px){
  .quiz__body,.quiz__head,.quiz__foot{padding-left:20px;padding-right:20px}
  .panel{padding:32px 20px}
  .svc-card{padding:26px 22px}
}
@media print{.header,.sticky-cta,.quiz__box,.footer__btn{display:none}}
