/*
 * Тема блога — в гамме витрины (src/landing/landing.css).
 *
 * Цвета и шрифты повторены значениями, а не подключением того файла: блог
 * отдаёт Ghost, а витрину собирает наш скрипт, и общего конвейера у них нет.
 * Поменяли гамму витрины — поменяйте и здесь; расхождение читается как два
 * разных сайта под одним доменом.
 *
 * Шрифты берутся с того же домена (/fonts/…): блог живёт подкаталогом, и
 * подсеты уже лежат рядом.
 */

@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/Manrope-400-c9a5f1.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/Manrope-400-814019.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/Manrope-600-c9a5f1.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/Manrope-600-814019.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/Manrope-800-c9a5f1.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'Manrope';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/Manrope-800-814019.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/JetBrainsMono-600-ffa6bb.woff2') format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/JetBrainsMono-600-1cd702.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD;}

:root {
  --bg: #f2f2ee;
  --surface: #fbfbf8;
  --surface-2: #e8e8e1;
  --border: #e0dfd6;
  --border-strong: #c9c8bc;
  --text: #23231f;
  --text-2: #5c5c53;
  --text-3: #6b6b60;
  --steel: #85857a;
  --accent: #c9f24d;
  --accent-ink: #46620a;
  --accent-soft: rgba(140, 190, 20, 0.14);
  --on-accent: #1b2405;
  --shadow-2: 0 1px 2px rgba(40, 40, 30, .05), 0 10px 30px -14px rgba(40, 40, 30, .22);
  --font-ui: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-num: 'JetBrains Mono', ui-monospace, 'SF Mono', monospace;
  --page: 1120px;
  color-scheme: light;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 400 17px/1.6 var(--font-ui);
  -webkit-font-smoothing: antialiased;
}

.wrap { max-width: var(--page); margin: 0 auto; padding: 0 20px; }
.wrap.narrow { max-width: 720px; }

a { color: var(--accent-ink); }
img { max-width: 100%; height: auto; }

/* ------------------------------- шапка ------------------------------- */

.top {
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  position: sticky;
  top: 0;
  z-index: 10;
}

.top-row { display: flex; align-items: center; gap: 16px; height: 64px; }

.brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font: 800 19px/1 var(--font-ui);
  color: var(--text);
  text-decoration: none;
  letter-spacing: -0.01em;
}

/* Тот же знак, что в шапке приложения и на витрине. */
.brand-mark {
  width: 52px;
  height: 34px;
  background: url('/brand/svx-mark-ink.svg') center / contain no-repeat;
}

.top-nav { margin-left: auto; display: flex; align-items: center; gap: 8px; }

.top-nav a {
  color: var(--text-2);
  text-decoration: none;
  font-size: 15px;
  padding: 8px 10px;
  border-radius: 10px;
}

.top-nav a:hover { background: var(--surface-2); color: var(--text); }

.top-nav .enter {
  background: var(--accent);
  color: var(--on-accent);
  font-weight: 600;
}

.top-nav .enter:hover { background: var(--accent); filter: brightness(.96); }

/* ------------------------------- первый экран ------------------------ */

.hero { padding: 56px 0 28px; }

.eyebrow {
  margin: 0 0 12px;
  font: 600 13px/1.2 var(--font-num);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--steel);
}

.eyebrow a { color: var(--steel); text-decoration: none; }
.eyebrow a:hover { color: var(--accent-ink); }

.hero h1 {
  margin: 0;
  max-width: 18ch;
  font: 800 clamp(32px, 5vw, 54px)/1.08 var(--font-ui);
  letter-spacing: -0.03em;
}

/* ------------------------------- список статей ----------------------- */

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 20px;
  padding: 20px 0 56px;
}

.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 18px;
  overflow: hidden;
  transition: box-shadow .18s ease, transform .18s ease;
}

.card:hover { box-shadow: var(--shadow-2); transform: translateY(-2px); }
.card-link { color: inherit; text-decoration: none; display: block; }
.card-image { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.card-body { padding: 18px 20px 20px; }

.card-title {
  margin: 0 0 8px;
  font: 800 21px/1.25 var(--font-ui);
  letter-spacing: -0.02em;
}

.card-excerpt { margin: 0 0 12px; color: var(--text-2); font-size: 15.5px; }

.card-meta {
  margin: 0;
  color: var(--text-3);
  font: 600 13px/1.3 var(--font-num);
}

/* ------------------------------- статья ------------------------------ */

.post { padding: 44px 0 0; }

.post-title {
  margin: 0 0 16px;
  font: 800 clamp(30px, 4.4vw, 46px)/1.1 var(--font-ui);
  letter-spacing: -0.03em;
}

.post-lead { margin: 0 0 8px; font-size: 20px; line-height: 1.5; color: var(--text-2); }

.post-image {
  display: block;
  width: 100%;
  border-radius: 20px;
  border: 1px solid var(--border);
  margin: 24px 0 8px;
}

.content { padding: 8px 0 24px; font-size: 18px; }
.content > * { margin: 0 0 20px; }

.content h2 {
  margin: 44px 0 14px;
  font: 800 30px/1.2 var(--font-ui);
  letter-spacing: -0.025em;
}

.content h3 {
  margin: 32px 0 10px;
  font: 700 22px/1.3 var(--font-ui);
  letter-spacing: -0.015em;
}

.content ul, .content ol { padding-left: 22px; }
.content li { margin: 0 0 8px; }
.content strong { font-weight: 700; }

.content blockquote {
  margin: 24px 0;
  padding: 14px 20px;
  border-left: 3px solid var(--accent);
  background: var(--accent-soft);
  border-radius: 0 14px 14px 0;
  color: var(--text);
}

.content figure { margin: 28px 0; }
.content figure img { border-radius: 16px; border: 1px solid var(--border); }

.content figcaption {
  margin-top: 10px;
  color: var(--text-3);
  font-size: 14.5px;
  text-align: center;
}

/* Таблицы сравнения — главный формат обзорных статей, поэтому им своя
   разметка, а не тема по умолчанию: на телефоне таблица прокручивается
   внутри себя, а не растягивает страницу. */
.content table {
  width: 100%;
  border-collapse: collapse;
  font-size: 15.5px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  overflow: hidden;
}

.content th, .content td {
  padding: 11px 14px;
  border-bottom: 1px solid var(--border);
  text-align: left;
  vertical-align: top;
}

.content th { background: var(--surface-2); font-weight: 700; }
.content tr:last-child td { border-bottom: none; }

/*
 * Таблица на телефоне.
 *
 * Обёртку с прокруткой редактор Ghost не сохраняет — вставленный div из
 * html он выбрасывает, и широкая таблица растягивала всю страницу: на
 * телефоне появлялась горизонтальная прокрутка всей статьи. Поэтому
 * прокручивается сама таблица: `display: block` делает её собственным
 * контейнером прокрутки, а `max-width: 100%` не даёт ей раздвинуть колонку.
 */
.content .table-wrap, .content .kg-table-wrapper { overflow-x: auto; }

.content table {
  display: block;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

/* Внутри прокручиваемой таблицы ячейки не должны рвать слова по буквам. */
.content table th, .content table td { white-space: nowrap; }
.content table td:first-child, .content table th:first-child { white-space: normal; min-width: 150px; }

/* Страница целиком горизонтально не ездит ни при каких условиях. */
html, body { overflow-x: hidden; }

.content code {
  font: 600 15px var(--font-num);
  background: var(--surface-2);
  padding: 2px 6px;
  border-radius: 6px;
}

/* ------------------------------- врезка с призывом -------------------- */

.promo {
  margin: 40px 0 56px;
  padding: 24px;
  border: 1px solid var(--border-strong);
  border-radius: 20px;
  background: var(--surface);
}

.promo-title { margin: 0 0 8px; font: 800 21px/1.25 var(--font-ui); letter-spacing: -0.02em; }
.promo-text { margin: 0 0 16px; color: var(--text-2); font-size: 16px; }
.promo-cta, .foot-cta { display: flex; flex-wrap: wrap; gap: 10px; margin: 0; }

.btn {
  display: inline-block;
  padding: 12px 18px;
  border-radius: 12px;
  background: var(--accent);
  color: var(--on-accent);
  font-weight: 700;
  text-decoration: none;
  border: 1px solid transparent;
}

.btn:hover { filter: brightness(.96); }

.btn.ghost {
  background: transparent;
  color: var(--text);
  border-color: var(--border-strong);
}

.btn.ghost:hover { background: var(--surface-2); filter: none; }

.section-title { margin: 8px 0 4px; font: 800 26px/1.2 var(--font-ui); letter-spacing: -0.02em; }

/* ------------------------------- страницы списка ---------------------- */

.pagination {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: center;
  padding: 0 0 56px;
  color: var(--text-3);
  font-size: 15px;
}

.pagination a { text-decoration: none; font-weight: 600; }

/* ------------------------------- подвал ------------------------------- */

.foot {
  border-top: 1px solid var(--border);
  background: var(--surface);
  padding: 40px 0 48px;
  margin-top: 40px;
}

.foot-lead { margin: 0 0 16px; max-width: 60ch; color: var(--text-2); }
.foot-nav { display: flex; flex-wrap: wrap; gap: 14px; margin: 24px 0 12px; }
.foot-nav a { color: var(--text-2); text-decoration: none; font-size: 15px; }
.foot-nav a:hover { color: var(--accent-ink); }
.foot-copy { margin: 0; color: var(--text-3); font-size: 14px; }

@media (max-width: 640px) {
  body { font-size: 16px; }
  .hero { padding: 36px 0 20px; }
  .top-nav a:not(.enter) { display: none; }
  .content { font-size: 17px; }
}

/* ------------------------------- подписка ----------------------------- */

/*
 * Единственная форма во всём блоге. Регистрации здесь нет намеренно: читать
 * можно без всего, а аккаунт заводится в приложении — иначе человек дважды
 * отвечает на вопрос «кто вы» ради одной статьи.
 */
.subscribe { margin: 8px 0 4px; max-width: 520px; }

.subscribe-label {
  display: block;
  margin-bottom: 10px;
  font-weight: 700;
  font-size: 16px;
}

.subscribe-row { display: flex; gap: 10px; flex-wrap: wrap; }

.subscribe-input {
  flex: 1 1 240px;
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid var(--border-strong);
  border-radius: 12px;
  background: var(--bg);
  color: var(--text);
  font: 400 16px var(--font-ui);
}

.subscribe-input:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }

.subscribe-note { margin: 8px 0 0; color: #a33; font-size: 14px; min-height: 0; }

/* Ghost вешает на форму класс success после отправки письма. */
.subscribe-done { display: none; margin: 8px 0 0; color: var(--accent-ink); font-size: 14px; }
.subscribe.success .subscribe-done { display: block; }
.subscribe.success .subscribe-row { display: none; }

/* ------------------------------- карточки редактора ------------------- */

/*
 * Ghost требует от темы эти два класса: редактор ими помечает картинки и
 * врезки шире колонки текста. Без них тема не проходит проверку при
 * установке — «.kg-width-wide is required to appear styled in your theme».
 */
.kg-width-wide { max-width: 1040px; margin-left: 50%; transform: translateX(-50%); }
.kg-width-full { max-width: 100vw; margin-left: 50%; transform: translateX(-50%); }
.kg-width-full img { border-radius: 0; }

.kg-image { display: block; margin: 0 auto; border-radius: 16px; }
.kg-card { margin: 28px 0; }
.kg-image-card figcaption, .kg-embed-card figcaption { text-align: center; }

.kg-callout-card {
  display: flex;
  gap: 12px;
  padding: 16px 18px;
  border-radius: 16px;
  background: var(--accent-soft);
  border: 1px solid var(--border);
}

.kg-callout-card .kg-callout-text { margin: 0; }

.kg-button-card { text-align: center; }

.kg-btn {
  display: inline-block;
  padding: 12px 20px;
  border-radius: 12px;
  background: var(--accent);
  color: var(--on-accent);
  font-weight: 700;
  text-decoration: none;
}

.kg-bookmark-card a { text-decoration: none; }

@media (max-width: 1100px) {
  .kg-width-wide { max-width: 100%; margin-left: 0; transform: none; }
}

/* ------------------------------- первый экран с демо ------------------- */

/*
 * Рамка телефона и живое демо — тем же приёмом, что на витрине
 * (src/landing/landing.css). Числа повторены, а не подключены: у блога и
 * витрины разные сборки, общего файла стилей нет.
 */
.hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 40px;
  align-items: center;
}

.hero-lead {
  margin: 16px 0 0;
  max-width: 46ch;
  font-size: 19px;
  color: var(--text-2);
}

.demo-frame { width: 340px; max-width: 100%; margin: 0 auto; --demo-scale: calc(318 / 390); }

/* Подпись пузырём: она объясняет, что это не картинка, а продукт. */
.bubble {
  position: relative;
  margin: 0 0 16px;
  padding: 12px 16px;
  background: var(--accent);
  color: var(--on-accent);
  border-radius: 16px;
  font-weight: 700;
  font-size: 15px;
  line-height: 1.35;
  box-shadow: var(--shadow-2);
}

.bubble::after {
  content: '';
  position: absolute;
  left: 28px;
  bottom: -8px;
  width: 16px;
  height: 16px;
  background: var(--accent);
  border-radius: 3px;
  transform: rotate(45deg);
}

.phone {
  --bezel: 11px;
  --screen-r: 31px;
  position: relative;
  width: 100%;
  max-width: 100%;
  margin: 0 auto;
  padding: var(--bezel);
  background: linear-gradient(165deg, #45453c 0%, #26261f 46%, #17170f 100%);
  border-radius: calc(var(--screen-r) + var(--bezel));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.14), 0 26px 50px -26px rgba(23,23,15,.55);
}

.phone > :not(.demo-start) {
  border-radius: var(--screen-r);
  overflow: hidden;
  display: block;
  background: #fff;
}

.phone img { width: 100%; display: block; }

.demo-start {
  position: absolute;
  inset: var(--bezel);
  border: 0;
  border-radius: var(--screen-r);
  background: rgba(23, 23, 15, .42);
  color: #fff;
  font: 700 16px var(--font-ui);
  cursor: pointer;
  display: grid;
  place-items: center;
}

.demo-start span {
  padding: 12px 18px;
  border-radius: 12px;
  background: var(--accent);
  color: var(--on-accent);
}

.demo-start:hover span { filter: brightness(.96); }

.demo-frame .phone > div:has(iframe) {
  width: calc(390px * var(--demo-scale));
  height: calc(780px * var(--demo-scale));
  overflow: hidden;
}

.demo-frame iframe {
  width: 390px;
  height: 780px;
  border: 0;
  display: block;
  transform: scale(var(--demo-scale));
  transform-origin: top left;
}

.demo-note {
  margin: 14px 0 0;
  color: var(--text-3);
  font-size: 13.5px;
  text-align: center;
}

@media (max-width: 900px) {
  .hero-grid { grid-template-columns: 1fr; gap: 28px; }
  .hero h1 { max-width: none; }
}

.brand-blog {
  font: 800 19px/1 var(--font-ui);
  color: var(--text);
  text-decoration: none;
  letter-spacing: -0.01em;
  margin-left: -4px;
}

.brand-blog:hover { color: var(--accent-ink); }

/*
 * Снимок телефона внутри статьи: колонка текста шире экрана телефона, и
 * растянутый на неё скриншот выглядит как увеличенная картинка, а не как
 * приложение. Горизонтальные снимки чужих сайтов ограничения не получают.
 *
 * Отбор по адресу файла, а не по классу: редактор Ghost переводит вставленный
 * HTML в свой формат и классы у figure при этом теряются. Имя файла он не
 * трогает, и «наши» снимки узнаются по префиксу svx- в пути.
 */
.content img[src*="/09/svx-"] {
  max-width: 320px;
  margin: 0 auto;
  display: block;
}

/* ------------------------------- оглавление --------------------------- */

/*
 * Оглавление в начале обзора. Десять приложений подряд читать сверху вниз
 * никто не станет — человек ищет своё, и список даёт ему прыгнуть сразу
 * туда. Наше приложение стоит первым и помечено: не «лучшее по мнению
 * редакции», а честно — «наш продукт», раз статья на нашем же сайте.
 */
.toc {
  margin: 8px 0 36px;
  padding: 22px 24px 18px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 20px;
}

.toc-title {
  margin: 0 0 14px;
  font: 600 13px/1.2 var(--font-num);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--steel);
}

.toc-list { margin: 0; padding-left: 20px; font-size: 16.5px; }
.toc-list > li { margin-bottom: 10px; }
.toc-list a { text-decoration: none; font-weight: 600; }
.toc-list a:hover { text-decoration: underline; }

.toc-apps {
  margin: 10px 0 4px;
  padding-left: 18px;
  display: grid;
  gap: 7px;
  font-size: 15.5px;
}

.toc-apps li { color: var(--text-3); }
.toc-apps a { font-weight: 600; }
.toc-note { margin-left: 8px; color: var(--text-3); font-size: 14.5px; }

/* Наша строка: лаймовая подложка вместо восклицаний в тексте. */
/* Подложка не должна сдвигать номер: `list-style-position: inside` уводил
   маркер внутрь плашки, и первая строка вставала правее остальных. */
.toc-mine {
  padding: 6px 10px;
  margin: -6px -10px;
  border-radius: 12px;
  background: var(--accent-soft);
}

.toc-badge {
  margin-left: 8px;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--accent);
  color: var(--on-accent);
  font: 700 11.5px/1.6 var(--font-ui);
  white-space: nowrap;
}

/* ------------------------------- галерея экранов ---------------------- */

/*
 * Девять снимков подряд в столбик — это девять экранов прокрутки, после
 * которых читатель уходит. Поэтому лента вбок: видно два-три телефона, а
 * остальные листаются пальцем, с прилипанием к краю карточки.
 *
 * Лента выходит за колонку текста и упирается в края экрана: так видно, что
 * её можно листать, а обрезанный третий телефон сам приглашает это сделать.
 */
.gallery {
  margin: 40px 0 44px;
  padding: 26px 0 22px;
  background: var(--surface-2);
  border-radius: 24px;
}

.gal-head { padding: 0 24px; }
.gal-eyebrow {
  margin: 0 0 6px;
  font: 600 12.5px/1.2 var(--font-num);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--steel);
}
.gal-title { margin: 0 0 6px; font: 800 24px/1.25 var(--font-ui); letter-spacing: -0.02em; }
.gal-note { margin: 0 0 18px; color: var(--text-2); font-size: 15px; }

.gal-strip {
  display: flex;
  gap: 18px;
  padding: 4px 24px 8px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  /* Полосу прокрутки прячем: она проходила ровно под подписями и читалась
     как чужой элемент. Листание пальцем и колесом остаётся, а что ленту
     можно двигать, подсказывает обрезанный край следующего телефона. */
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.gal-strip::-webkit-scrollbar { display: none; }

.gal-item {
  margin: 0;
  flex: 0 0 216px;
  scroll-snap-align: start;
}

/* Оправа телефона — та же, что на витрине: снимок в рамке читается как
   приложение, а не как картинка в статье. */
.gal-phone {
  --bezel: 8px;
  --screen-r: 22px;
  padding: var(--bezel);
  background: linear-gradient(165deg, #45453c 0%, #26261f 46%, #17170f 100%);
  border-radius: calc(var(--screen-r) + var(--bezel));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.14), 0 18px 34px -22px rgba(23,23,15,.5);
}

.gal-phone img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--screen-r);
  /* Правило для снимков в тексте сюда не лезет: здесь своя ширина. */
  max-width: none;
  margin: 0;
  border: 0;
}

.gal-item figcaption {
  margin-top: 12px;
  text-align: left;
  color: var(--text-2);
  font-size: 13.5px;
  line-height: 1.35;
}

.gal-item figcaption strong { display: block; color: var(--text); font-size: 15px; margin-bottom: 2px; }

.gal-cta { margin: 16px 0 0; padding: 0 24px; }

.gal-btn {
  display: inline-block;
  padding: 11px 18px;
  border-radius: 12px;
  background: var(--accent);
  color: var(--on-accent);
  font-weight: 700;
  text-decoration: none;
}

.gal-btn:hover { filter: brightness(.96); }

@media (max-width: 720px) {
  .gallery { border-radius: 20px; margin-inline: -20px; }
  .gal-head, .gal-cta { padding-inline: 20px; }
  .gal-strip { padding-inline: 20px; }
  .gal-item { flex-basis: 190px; }
  .toc-apps { padding-left: 14px; }
}

/* ------------------------------- якоря разделов ----------------------- */

/*
 * Пустой якорь перед заголовком: собственные id у заголовков Ghost заменяет
 * своими, собранными из текста, и ссылки из оглавления вели в никуда.
 *
 * Отступ сверху — под липкую шапку: без него заголовок, к которому прыгнули,
 * оказывался под ней.
 */
.anchor {
  display: block;
  height: 0;
  scroll-margin-top: 84px;
}

/* Плавный переход вместо мгновенного скачка — так видно, что страница
   переместилась, а не подменилась. */
html { scroll-behavior: smooth; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
