/* Точечные правки поверх стилей Framer. Подключается на всех страницах после них.
   Всё делается через CSS, а не через правку DOM из скрипта: React при гидратации
   сверяет разметку, и любое изменение атрибутов до неё даёт ошибки в консоли. */

/* Формы. Декоративные слои со световыми лучами в блоке «Протестируйте бесплатно»
   (Lights / Light Rays) лежат с z-index: 1 поверх контента и перехватывали клики:
   в поле телефона нельзя было ничего ввести, кнопка «Связаться» не нажималась.
   Слои остаются видимыми, но клики пропускают сквозь себя. */
[data-framer-name="Lights"],
[data-framer-name="Light Rays"] { pointer-events: none !important; }

/* Карточки авторов в блоге: пилюля соцсети без ссылки. */
.framer-j38k30-container { display: none !important; }

/* Соцсети. Пока адреса профилей не заполнены в js/nk-app.js (SOCIAL), блоки
   с иконками скрыты: ссылка «в никуда» хуже, чем её отсутствие. Скрипт ставит
   на <html> атрибуты data-social-any / data-social-x / -instagram / -linkedin,
   и соответствующие иконки появляются сами. */
html:not([data-social-any]) [data-framer-name="Socials Container"],
html:not([data-social-any]) [data-framer-name="Side Nav"] [data-framer-name="Socials"] { display: none !important; }
html:not([data-social-x]) a[href="https://twitter.com"],
html:not([data-social-x]) a[href="https://x.com/"] { display: none !important; }
html:not([data-social-instagram]) a[href="https://instagram.com"],
html:not([data-social-instagram]) a[href="https://www.instagram.com/"] { display: none !important; }
html:not([data-social-linkedin]) a[href="https://linkedin.com"] { display: none !important; }

/* ── Подвал ──────────────────────────────────────────────────────────────────
   Родного подвала Framer (с чужими реквизитами шаблона) в разметке нет:
   компонент Footer в js/chunk-LRESPAWV.mjs ничего не рисует. Вместо него
   js/nk-app.js ставит <footer class="nk-footer"> после #main: логотип с
   подписью, три колонки ссылок и строка реквизитов ИП. Цвета и шрифт –
   из токенов сайта (Montserrat, белые заголовки, серые ссылки). */

.nk-footer {
  --nk-fg: rgb(255, 255, 255);
  --nk-link: rgb(173, 176, 183);
  --nk-muted: rgb(146, 150, 159);
  --nk-dim: rgb(107, 112, 122);
  --nk-line: rgb(28, 30, 32);
  box-sizing: border-box;
  width: 100%;
  background: transparent;              /* фон страницы: чёрный на Framer-страницах, rgb(12,12,13) на 404 */
  border-top: 1px solid var(--nk-line);
  color: var(--nk-link);
  font-family: Montserrat, "Segoe UI", Helvetica, Arial, sans-serif;
  font-size: 16px;
  line-height: 1.5;
  text-align: left;
}
.nk-footer *, .nk-footer *::before, .nk-footer *::after { box-sizing: border-box; }
.nk-footer__inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 64px 24px 32px;
}
.nk-footer__grid {
  display: grid;
  grid-template-columns: 1.5fr 1fr 1fr 1.5fr;
  gap: 40px;
}
.nk-footer__logo { display: inline-block; line-height: 0; margin-bottom: 20px; }
.nk-footer__logo img { display: block; width: 155px; height: 50px; }
.nk-footer__tagline { margin: 0; max-width: 300px; font-size: 16px; line-height: 1.5; color: var(--nk-muted); }
.nk-footer__title {
  margin: 0 0 20px;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--nk-fg);
}
.nk-footer__links { list-style: none; margin: 0; padding: 0; }
.nk-footer__links li { margin: 0 0 14px; }
.nk-footer__links li:last-child { margin-bottom: 0; }
.nk-footer a {
  color: inherit;
  text-decoration: none;
  transition: color .2s ease;
}
.nk-footer__links a:hover, .nk-footer__links a:focus-visible { color: var(--nk-fg); }
.nk-footer__bottom {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px 40px;
  flex-wrap: wrap;
  margin-top: 56px;
  padding-top: 24px;
  border-top: 1px solid var(--nk-line);
  font-size: 14px;
  color: var(--nk-dim);
}
/* размер, цвет и ширина заданы явно: на 404 есть глобальное правило для p */
.nk-footer__copy, .nk-footer__legal { margin: 0; max-width: none; font-size: 14px; line-height: 1.5; }
.nk-footer__copy { flex: 0 0 auto; color: var(--nk-link); }
.nk-footer__legal { flex: 1 1 320px; text-align: right; color: var(--nk-dim); }
.nk-footer__legal a { white-space: nowrap; }
.nk-footer__legal a:hover, .nk-footer__legal a:focus-visible { color: var(--nk-link); }

@media (max-width: 1199px) {
  .nk-footer__grid { grid-template-columns: 1fr 1fr; gap: 40px 32px; }
  .nk-footer__inner { padding: 56px 24px 28px; }
  .nk-footer__bottom { flex-direction: column; align-items: flex-start; gap: 10px; }
  .nk-footer__legal { flex: none; text-align: left; }
}
@media (max-width: 809px) {
  .nk-footer__grid { grid-template-columns: 1fr; gap: 36px; }
  .nk-footer__inner { padding: 48px 20px 24px; }
  .nk-footer__bottom { margin-top: 40px; }
}

/* Шапка: «Вход» в ряду ссылок вместо «Ранний доступ», кнопка «Регистрация»
   вместо «Контакты» (02.09.2026). Разметка добавлена в компонент Navbar в
   js/chunk-LRESPAWV.mjs (адреса кабинета там же, константы nkAppUrl / nkLoginUrl /
   nkRegisterUrl). Стили лежат здесь, а не в чанке: Framer не инжектит CSS
   компонента, когда в странице уже есть его серверный <style>, а он запечён
   в каждом HTML. */
/* Мобильная шапка: пилюля «Вход» прижата к бургеру. */
.framer-JNcZY .framer-nklogin-m-container { flex: none; height: 54px; position: relative; width: auto; }
.framer-JNcZY.framer-v-18it3nv .framer-o51wab > .framer-nklogin-m-container { margin-left: auto; margin-right: 8px; }

/* Блок «Протестируйте бесплатно» (главная, блог, «Что нового»): карточка
   «100+ отделов в работе» удалена из скриптов страниц (02.09.2026), осталось три.
   На планшете Framer раскладывал четыре карточки сеткой 2×2, с тремя третья
   висела одна во втором ряду, поэтому здесь три колонки в один ряд. */
@media (min-width: 810px) and (max-width: 1199px) {
  .framer-cLVzK .framer-5ftwif,
  .framer-nd4L9 .framer-1jiww74,
  .framer-Nd6D2 .framer-bgb9a3 {
    grid-template-columns: repeat(3, minmax(50px, 1fr)) !important;
    grid-template-rows: auto !important;
  }
  /* В узких карточках «10+ млн» переносится на две строки, соседи ниже
     ростом: содержимое центрируем по вертикали, чтобы не было пустого дна. */
  .framer-cLVzK .framer-5ftwif > [data-border="true"],
  .framer-nd4L9 .framer-1jiww74 > [data-border="true"],
  .framer-Nd6D2 .framer-bgb9a3 > [data-border="true"] {
    justify-content: center !important;
  }
}

/* Страница «Тарифы» (/pricing, 02.09.2026): собрана из скрипта главной
   (js/nk-pricing.mjs, маршрут SubI5NfBy в script_main), на ней остались секции
   Plans, FAQ и «Протестируйте бесплатно». Секция тарифов идёт первой и без
   отступа упирается в шапку, на главной воздух давала предыдущая секция. */
body.nk-pricing .framer-l82qfz { padding-top: 80px !important; }
@media (min-width: 810px) and (max-width: 1199px) {
  body.nk-pricing .framer-l82qfz { padding-top: 90px !important; }
}
@media (max-width: 809px) {
  body.nk-pricing .framer-l82qfz { padding-top: 120px !important; }
}

/* Статья: строка «автор · дата · категория» на телефоне переносится – с длинной датой
   («17 октября 2026») и подписью категории она выходила за экран на 1px. */
@media (max-width: 809px) {
  .framer-v7ciev { flex-wrap: wrap !important; row-gap: 4px; }
}

/* ── «Что нового» (/changelog), ревью 22.10. Классы встречаются только на этой странице. ── */

/* 1.6: «Попробовать бесплатно · Мы в Telegram» – две кнопки без точки-разделителя.
   Основная – как «Регистрация» в шапке, вторая – с обводкой. */
.framer-9erenz { width: auto !important; max-width: 100%; gap: 12px !important; flex-wrap: wrap !important; justify-content: center !important; }
.framer-imynvt, .framer-1cmht42 { width: auto !important; height: auto !important; }
.framer-9erenz .framer-hlfjin { display: none !important; }
.framer-imynvt a, .framer-1cmht42 a {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 16px 30px; border-radius: 12px; box-sizing: border-box;
  font-size: 18px; font-weight: 600; line-height: 1.4; text-decoration: none !important;
  transition: background-color .2s ease, opacity .2s ease;
}
.framer-imynvt a { background: #fff; color: #000 !important; }
.framer-imynvt a:hover { opacity: .85; }
.framer-1cmht42 a { border: 1px solid rgba(255, 255, 255, .24); color: #fff !important; }
.framer-1cmht42 a:hover { background: rgba(255, 255, 255, .08); }

/* 1.5: подзаголовок без висячего слова. */
.framer-1vq57t9 .framer-text { text-wrap: balance; }

/* 1.3: меток над заголовком записи нет – заголовок встаёт на уровень даты. */
.framer-50vl00 .framer-9wwzgi-container { display: none !important; }

/* 1.2: отступ под записью – по содержимому, одинаковый у записей с картинкой и без
   (было 100px снизу плюс промежуток ленты: под короткой записью зияла пустота). */
.framer-50vl00 { padding-bottom: 48px !important; }

/* 1.4: «Подробнее ↗» под записью – белая ссылка на статью (блок more в nk-content.mjs). */
.nk-more {
  display: inline-flex; align-items: center; gap: 6px;
  color: #fff !important; font-weight: 600; text-decoration: none !important;
  text-underline-offset: 4px;
}
.nk-more svg { width: 16px; height: 16px; flex: none; transition: transform .2s ease; }
.nk-more:hover { text-decoration: underline !important; }
.nk-more:hover svg { transform: translate(2px, -2px); }

/* 1.1: треугольник у даты упирается в кружок ленты. Он стоит сразу после даты, и его место
   зависело от длины даты, а по высоте он был ниже центра кружка. На десктопе ставим его
   вплотную к кружку (кружок – 15px с отступом 4px, слева в 174px от начала записи). */
@media (min-width: 810px) {
  .framer-k2cv51 { position: relative !important; }
  .framer-ev33o4 { position: absolute !important; left: 166px !important; top: 3px !important; }
}
/* На телефоне кружок слева от даты, а треугольник справа от неё – указывать ему не на что.
   Дата там же не прилипает при прокрутке: в одну колонку она наезжала на заголовок записи. */
@media (max-width: 809px) {
  .framer-ev33o4 { display: none !important; }
  .framer-1rxgikg { position: relative !important; top: auto !important; }
}

/* ── Статья блога (/blog/<slug>), ревью 22.10 ── */

/* 2.1: кнопки «К статьям» нет – мета статьи поднимается на её место; путь в блог –
   «Блог» в шапке и «Все статьи» внизу. */
.framer-w7x5zt { display: none !important; }

/* 2.2: подзаголовок под заголовком (поле subtitle) – синий, как категория в мете. */
/* Блоки колонки статьи разделены промежутком 46px (24px на телефоне) – подзаголовок
   подтягивается к заголовку на 12px от него. */
.nk-article-subtitle {
  margin: -34px 0 0; color: rgb(96, 165, 250);
  font: 500 20px/1.5 Montserrat, sans-serif; text-wrap: pretty;
}

/* 2.4: форма в конце текста – как карточка формы в сайдбаре. */
/* order: на планшете и телефоне Framer переставляет блоки колонки через order (текст – 3),
   форма должна остаться последней. */
.nk-article-lead {
  order: 10; width: 100%; box-sizing: border-box; padding: 30px;
  background: rgb(12, 12, 13); border-radius: 16px;
  font-family: Montserrat, sans-serif;
}
.nk-article-lead__title { margin: 0; color: #fff; font-size: 20px; font-weight: 500; line-height: 30px; }
.nk-article-lead__text { margin: 8px 0 0; color: rgb(146, 150, 159); font-size: 18px; font-weight: 500; line-height: 27px; }
.nk-article-lead__row { display: flex; gap: 12px; margin-top: 24px; }
.nk-article-lead__input {
  flex: 1 1 auto; min-width: 0; height: 58px; box-sizing: border-box; padding: 18px 16px;
  background: rgb(19, 19, 21); color: #fff; border: 1px solid transparent; border-radius: 10px;
  font: 400 18px Montserrat, sans-serif; outline: none;
}
.nk-article-lead__input::placeholder { color: rgb(102, 106, 115); }
.nk-article-lead__input:focus { border-color: rgba(255, 255, 255, .24); }
.nk-article-lead__submit {
  flex: none; height: 58px; padding: 16px 32px; border: 0; border-radius: 10px; cursor: pointer;
  background: #fff; color: #000; font: 600 18px Montserrat, sans-serif;
}
.nk-article-lead__submit:hover { opacity: .85; }
.nk-article-lead__submit:disabled { opacity: .6; cursor: default; }
@media (max-width: 809px) {
  .nk-article-subtitle { margin-top: -12px; font-size: 18px; }
  .nk-article-lead { padding: 20px; }
  .nk-article-lead__row { flex-direction: column; }
}

/* На планшете и телефоне сайдбар уходит под текст статьи, и его форма вставала сразу
   за формой в конце текста – две одинаковые подряд. Есть форма в конце – карточка
   формы сайдбара на узких экранах скрыта (на десктопе – обе, как в ТЗ 2.4). */
@media (max-width: 1199px) {
  body:has(.nk-article-lead) .framer-11mz08o { display: none !important; }
}

/* ── Заявки из статей (nk-app.js, «заявки из статей»): согласие, капча, ошибка, «Спасибо» ── */
.nk-consent { margin-top: 14px; font-family: Montserrat, sans-serif; }
.nk-check { display: flex; gap: 10px; align-items: flex-start; cursor: pointer; }
.nk-check input { flex: none; width: 18px; height: 18px; margin: 2px 0 0; accent-color: #fff; cursor: pointer; }
.nk-check__text { color: rgb(146, 150, 159); font-size: 13px; line-height: 1.45; }
.nk-check__text a { color: #fff; text-decoration: underline; text-underline-offset: 2px; }
.nk-captcha { margin-top: 12px; min-height: 0; }
.nk-lead-error { margin-top: 12px; color: rgb(248, 113, 113); font-size: 14px; line-height: 1.45; }
.nk-lead-error p { margin: 0; }
.nk-lead-error__links { display: flex; gap: 16px; margin-top: 6px !important; }
.nk-lead-error__links a { color: #fff; }
.nk-thanks { margin: 0; color: rgb(146, 150, 159); font: 500 16px/1.5 Montserrat, sans-serif; }
.nk-thanks strong { color: #fff; font-weight: 600; }
.nk-consent--thanks { margin-top: 0; }
.nk-article-lead--sent .nk-article-lead__row,
.nk-article-lead--sent .nk-consent { display: none; }
.nk-article-lead--sent .nk-thanks { margin-top: 16px; }
