Анализ сайта shtats.ru
Основное Готовность: 100%
Домен
shtats.ru
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Домен второго уровня идеален для продвижения.
Отличный запоминающийся домен.
Регистратор домена - REGRU-RU
Дата регистрации домена 30.07.2026 (более 2 недель назад)
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Сервер настроен корректно.
Цепочка редиректов:
http://shtats.ru
301 MovedPermanently
https://shtats.ru/
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
Не настроен HSTS (Strict-Transport-Security) — рекомендуется включить.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 28.10.2026 9:25:37.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
utf-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице utf-8.
Язык
ru
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Указан язык документа ru.
Скорость загрузки
~0,56сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 0,56сек оптимальна.
Объем документа
135Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 135Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 1
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 1 достаточно.
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| stylesheet | https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Onest:wght@400;500;600;700&display=swap |
Серверные заголовки
Кол-во: 7
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 7шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| Server | nginx/1.24.0 |
| Date | Wed, 19 Aug 2026 11:12:40 GMT |
| Transfer-Encoding | chunked |
| Connection | keep-alive |
| X-Content-Type-Options | nosniff |
| Referrer-Policy | strict-origin-when-cross-origin |
| Cache-Control | no-cache |
CMS
Не определена
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
CMS не определена. Вероятно, сайт самописный либо движок надёжно скрыт. Это не ошибка.
Веб-сервер
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
Сайт работает на веб-сервере nginx.
Мета-теги Готовность: 32%
Title
Штат: подбор сотрудников для бизнеса
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Необходимо увеличить число символов в title (текущее значение: 36, оптимально: от 40 до 45)
Дублей словоформ в title не найдено.
Description
Опишите вакансию и получите кандидатов с контактами и обоснованием, почему подходит каждый. Без подписок и доступа к базам резюме. Оплата разово за вакансию.
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Необходимо уменьшить число символов в description (текущее значение: 157, оптимально: от 120 до 130)
Keywords
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Установите мета-тег keywords!
Канонический Url
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
Рекомендуем прописать канонический Url.
Robots
Ошибок нет
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots не указан. Страница свободна для индексации.
Адаптивность
width=device-width, initial-scale=1
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Разметка OpenGraph
Не найдено
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph не задана. Страница не оптимизирована под социальные сети. Мета-теги с разметкой Og помогают социальным роботам лучше структурировать Ваш сайт.
Все мета-теги
Кол-во: 3
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 3шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | viewport | width=device-width, initial-scale=1 |
| name | theme-color | #0a2540 |
| name | description | Опишите вакансию и получите кандидатов с контактами и обоснованием, почему подходит каждый. Без подписок и доступа к базам резюме. Оплата разово за вакансию. |
Оптимизация Готовность: 0%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют в одном экземпляре).
Контент
Есть ошибки
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Слова из title 0 встречаются в тексте редко. Добавьте в контент страницы слова из тега <title>!
Абзацев с текстом 0 слишком мало. Добавьте больше абзацев с текстом (тег <p>)!
Среднее число слов в абзаце 0 слишком мало. Сделайте контент более читаемым!
Кол-во знаков контента 0 слишком мало. Добавьте больше текста!
Кол-во слов 1 слишком мало. Добавьте больше текста (минимум 400 слов)!
Заголовки
Есть ошибки
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
Не обнаружено заголовков на странице. Добавьте заголовки (<h1>, <h2> или <h3>)
Тошнота
Не удалось произвести расчет
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота не рассчитана. Измените текст страницы!
Академич. тошнота
Нет данных для расчета
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота не рассчитана. Измените текст страницы!
Семантическое ядро
Не удалось собрать
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы не содержит осмысленного текста. Добавьте текст на страницу!
Индексация Готовность: 20%
Индексирование
Есть ошибки
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице не обнаружено. Велика вероятность, что сайт - одностраничник, такой сайт продвинуть крайне затруднительно!
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 138897 байт. Загружен за: 1сек.
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://shtats.ru/robots.txt
301 MovedPermanently
https://shtats.ru/robots.txt
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#0a2540">
<title>Штат: подбор сотрудников для бизнеса</title>
<meta name="description" content="Опишите вакансию и получите кандидатов с контактами и обоснованием, почему подходит каждый. Без подписок и доступа к базам резюме. Оплата разово за вакансию.">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='8' fill='%231D140E'/%3E%3Ctext x='16' y='23' font-family='Onest,Inter,sans-serif' font-size='20' font-weight='700' fill='%23DACABB' text-anchor='middle'%3E%D0%A8%3C/text%3E%3C/svg%3E">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Onest:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
:root{
--white:#ffffff; --canvas:#ffffff; --tint:#f7f7f6;
--stone:#f0eeeb; --sand:#f4f3f1;
--ink:#121212; --charcoal:#343433; --body:#474645; --muted:#7e7e7d;
--brand:#121212; --brand-2:#000000; --brand-soft:#f2f0ed;
--line:#e7e5e1;
--blue:#0086fc; --green:#00c978; --honey:#ffbb26; --accent:#ff3e00;
--max:1200px;
--card: inset 0 0 0 1px var(--line);
--display:'Onest','Inter',system-ui,sans-serif;
--badger-ink:#1D140E; --badger-cream:#DACABB; --badger-red:#8C383A;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
background:var(--canvas); color:var(--body);
font-family:'Inter',system-ui,-apple-system,sans-serif;
font-size:17px; line-height:1.55; letter-spacing:-.012em;
-webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:var(--display);color:var(--ink);font-weight:600;letter-spacing:-.026em;line-height:1.1}
h1{font-size:60px;letter-spacing:-.034em;line-height:1.04}
h2{font-size:40px;letter-spacing:-.028em}
h3{font-size:21px;letter-spacing:-.019em;line-height:1.26}
p{color:var(--body)}
.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}
.muted{color:var(--muted)}
.micro{font-size:13px;line-height:1.5;color:var(--muted)}
.eyebrow{display:block;font-size:13px;font-weight:500;color:var(--muted);
letter-spacing:.005em;margin-bottom:15px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
font-family:'Inter';font-weight:600;font-size:15px;letter-spacing:-.01em;
border:none;border-radius:9999px;padding:13px 24px;cursor:pointer;
transition:all .15s ease;text-decoration:none;white-space:nowrap;
max-width:100%}
.btn-dark{background:var(--brand);color:#fff}
.btn-dark:hover{background:var(--brand-2)}
.btn-line{background:var(--sand);color:var(--ink);box-shadow:none}
.btn-line:hover{background:var(--stone)}
.btn-light{background:var(--white);color:var(--ink)}
.btn-light:hover{background:var(--tint)}
.btn-lg{padding:16px 32px;font-size:16px}
.btn:disabled{opacity:.35;cursor:not-allowed}
.btn:active{transform:translateY(1px)}
.card{background:var(--white);border-radius:10px;box-shadow:var(--card);padding:32px}
.sec-tint{background:var(--tint)}
.sec-tint .card{background:var(--white)}
nav{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.93);
backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav-in{max-width:var(--max);margin:0 auto;padding:14px 28px;display:flex;align-items:center;gap:36px}
.logo{display:inline-flex;align-items:center;gap:10px;font-family:var(--display);
font-weight:700;font-size:24px;color:var(--badger-ink);letter-spacing:-.004em;
text-decoration:none;line-height:1;padding:2px 0;font-feature-settings:"ss01";
-webkit-font-smoothing:antialiased;transition:opacity .16s ease}
.logo img{display:block;flex:none;height:34px;width:auto}
.logo:hover{opacity:.78}
.foot-logo{display:inline-flex;align-items:center;gap:9px;font-family:var(--display);
font-weight:700;font-size:21px;color:var(--badger-ink);letter-spacing:-.004em;line-height:1}
.foot-logo img{display:block;flex:none;height:30px;width:auto}
.nav-links{display:flex;gap:26px;flex:1}
.nav-links a{color:var(--body);font-size:14px;text-decoration:none;letter-spacing:-.01em}
.nav-links a:hover{color:var(--brand)}
.nav-act{display:flex;gap:10px;align-items:center}
.ghost{background:none;border:none;color:var(--body);font-family:'Inter';
font-size:14px;cursor:pointer;padding:8px 6px;font-weight:500}
.ghost:hover{color:var(--brand)}
/* ---- герой ---- */
.hero{padding:88px 0 96px}
.hero-grid{display:grid;grid-template-columns:1.02fr .98fr;gap:64px;align-items:center}
.hero p.sub{font-size:19px;line-height:1.53;margin-top:24px;max-width:530px;color:var(--body)}
.hero-cta{display:flex;gap:12px;margin-top:36px;flex-wrap:wrap}
.hero-people{display:flex;align-items:center;gap:14px;margin-top:30px;flex-wrap:wrap}
.hp-row{display:flex}
.hp-row img{width:42px;height:42px;border-radius:50%;object-fit:cover;display:block;
box-shadow:0 0 0 3px var(--white);margin-left:-11px;background:var(--stone)}
.hp-row img:first-child{margin-left:0}
.hero-people span{font-size:14px;line-height:1.4;color:var(--muted);max-width:270px}
@media(max-width:560px){.hero-people span{max-width:none}}
.hero-facts{display:flex;gap:36px;margin-top:44px;padding-top:28px;
border-top:1px solid var(--line);flex-wrap:wrap}
.hero-facts div{display:flex;flex-direction:column;gap:3px}
.hero-facts b{font-size:19px;font-weight:600;color:var(--charcoal);letter-spacing:-.02em}
.hero-facts span{font-size:14px;color:var(--muted);line-height:1.4}
/* демо-окно продукта */
.demo-frame{background:var(--white);border-radius:10px;box-shadow:
inset 0 0 0 1px var(--line), 0 24px 48px -20px rgba(0,0,0,.13);overflow:hidden}
.demo-bar{background:var(--tint);border-bottom:1px solid var(--line);
padding:11px 16px;display:flex;align-items:center;gap:14px}
.demo-dots{display:flex;gap:6px}
.demo-dots i{width:9px;height:9px;border-radius:50%;background:var(--stone);display:block}
.demo-url{font-size:12px;color:var(--muted);letter-spacing:-.005em}
.demo-body{padding:18px}
.demo-head{display:flex;justify-content:space-between;align-items:baseline;
margin-bottom:14px;padding:0 2px}
.demo-head span:first-child{font-size:14px;font-weight:600;color:var(--charcoal)}
.demo-sub{font-size:12px;color:var(--muted)}
.demo-card{background:var(--white);border-radius:10px;box-shadow:var(--card);
padding:15px;margin-bottom:8px}
.demo-card:last-child{margin-bottom:0;opacity:.55}
.dc-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}
.dc-id{display:flex;gap:10px;align-items:center}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--sand);
box-shadow:var(--card);display:flex;align-items:center;justify-content:center;
font-size:12px;font-weight:600;color:var(--charcoal);flex:none}
.avatar.sm{width:30px;height:30px;font-size:11px}
.dc-prof{font-size:14px;font-weight:600;color:var(--charcoal);letter-spacing:-.015em}
.dc-meta{font-size:12px;color:var(--muted)}
.dc-match{font-size:20px;font-weight:600;color:var(--brand);letter-spacing:-.03em;line-height:1}
.dc-match span{font-size:12px;color:var(--muted);font-weight:500}
.dc-rows{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
.dc-rows div{display:flex;justify-content:space-between;gap:10px;font-size:12.5px}
.dc-rows span:first-child{color:var(--muted)}
.dc-rows span:last-child{color:var(--body);text-align:right}
.dc-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;
padding-top:11px;border-top:1px solid var(--line);flex-wrap:wrap}
.st-active{font-size:11.5px;color:var(--green);font-weight:600}
.dc-lock{font-size:11.5px;color:var(--muted)}
.blurred{filter:blur(3.5px);user-select:none}
/* ---- секции ---- */
section{padding:104px 0}
.sec-head{max-width:680px;margin-bottom:48px}
.sec-head p{margin-top:16px;font-size:18px;line-height:1.5;color:var(--body)}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.card h3{margin-bottom:11px}
.card p{font-size:16px;line-height:1.55;color:var(--body)}
/* шаги */
.steps{display:flex;flex-direction:column;gap:14px}
.step-row{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;
background:var(--white);border-radius:12px;box-shadow:var(--card);padding:40px}
.step-n{display:block;font-size:13px;font-weight:600;color:var(--muted);
letter-spacing:.09em;margin-bottom:14px}
.step-left h3{font-size:24px;margin-bottom:14px}
.step-left p{font-size:16px;margin-bottom:12px}
.step-left p.note{font-size:14px;color:var(--muted);margin-bottom:0}
.mini-panel{background:var(--tint);border-radius:10px;padding:22px;box-shadow:var(--card)}
.mp-row{display:flex;justify-content:space-between;gap:14px;padding:9px 0;
border-bottom:1px solid var(--line);font-size:14px}
.mp-row:last-child{border-bottom:none}
.mp-row span{color:var(--muted)}
.mp-row b{color:var(--charcoal);font-weight:500;text-align:right}
.mp-bar{margin-bottom:16px}
.mp-bar:last-child{margin-bottom:0}
.mp-bar span{display:block;font-size:13px;color:var(--body);margin-bottom:7px}
.mp-bar i{display:block;height:5px;background:var(--brand);border-radius:99px}
.mp-c{display:flex;align-items:center;gap:11px;padding:9px 0;border-bottom:1px solid var(--line)}
.mp-c b{font-size:14px;color:var(--charcoal);font-weight:500;font-variant-numeric:tabular-nums}
.mp-note{font-size:13px;color:var(--muted);padding-top:12px}
/* кого находим */
.who-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:8px}
.photo-card{border-radius:12px;overflow:hidden;box-shadow:var(--card);
background:var(--stone);aspect-ratio:4/3}
.photo-card img{width:100%;height:100%;object-fit:cover;display:block}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}
.tag{background:var(--white);box-shadow:var(--card);border-radius:8px;
padding:9px 16px;font-size:14.5px;color:var(--body)}
.sec-tint .tag{background:var(--white)}
.guarantee h3{display:flex;align-items:center;gap:10px}
.guarantee h3::before{content:'';width:6px;height:6px;border-radius:50%;
background:var(--green);flex:none}
/* сравнение */
.cmp-wrap{overflow-x:auto;border-radius:12px;box-shadow:var(--card);background:var(--white)}
.cmp{width:100%;border-collapse:collapse;min-width:720px}
.cmp th,.cmp td{padding:18px 22px;text-align:left;font-size:15px;
border-bottom:1px solid var(--line)}
.cmp thead th{font-weight:600;font-size:14px;color:var(--muted);background:var(--tint)}
.cmp tbody tr:last-child td{border-bottom:none}
.cmp td:first-child{color:var(--muted);font-size:14px}
.cmp .ours{background:rgba(0,201,120,.045);color:var(--charcoal);font-weight:500}
.cmp thead .ours{color:var(--charcoal);font-weight:700;background:rgba(0,201,120,.09)}
/* faq */
.faq-item{background:var(--white);border-radius:12px;box-shadow:var(--card);
margin-bottom:8px;overflow:hidden}
.faq-q{width:100%;text-align:left;background:none;border:none;padding:22px 26px;
cursor:pointer;font-family:'Inter';font-size:16.5px;font-weight:500;
color:var(--charcoal);display:flex;justify-content:space-between;
align-items:center;gap:20px;letter-spacing:-.015em}
.faq-a{padding:0 26px;max-height:0;overflow:hidden;transition:max-height .3s ease,padding .3s ease}
.faq-a p{font-size:15.5px;line-height:1.6}
.faq-item.open .faq-a{max-height:400px;padding:0 26px 24px}
.chev{color:var(--muted);font-size:20px;transition:transform .3s ease;flex:none;line-height:1}
.faq-item.open .chev{transform:rotate(45deg)}
/* финальный cta */
.cta-sec{padding-top:0}
.cta-box{background:var(--brand);border-radius:16px;padding:64px 48px;text-align:center}
.cta-box h2{color:#fff;max-width:640px;margin:0 auto 16px}
.cta-box p{color:rgba(255,255,255,.72);max-width:520px;margin:0 auto 30px;font-size:17px}
footer{background:var(--tint);border-top:1px solid var(--line);padding:56px 0 36px}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1.2fr 1fr;gap:36px}
.foot-req{font-size:12.5px;line-height:1.55;color:var(--muted);margin-top:12px}
.foot-desc{font-size:14.5px;color:var(--muted);margin-top:12px;max-width:250px;line-height:1.5}
.foot-h{font-size:12px;font-weight:600;color:var(--charcoal);margin-bottom:14px;
text-transform:uppercase;letter-spacing:.09em}
.foot-links{display:flex;flex-direction:column;gap:10px}
.foot-links a{color:var(--body);font-size:14.5px;text-decoration:none}
.foot-links a:hover{color:var(--brand)}
.foot-bottom{margin-top:44px;padding-top:24px;border-top:1px solid var(--line)}
.foot-bottom p{font-size:13px;color:var(--muted);line-height:1.6}
/* ---- воронка ---- */
.screen{display:none}
.flow-top{padding:18px 0;border-bottom:1px solid var(--line);background:var(--white);
position:sticky;top:0;z-index:40}
.flow-top-in{max-width:var(--max);margin:0 auto;padding:0 28px;display:flex;align-items:center;gap:20px}
.prog-track{flex:1;height:3px;background:var(--stone);border-radius:99px;overflow:hidden;max-width:420px}
.prog-fill{height:100%;background:var(--brand);border-radius:99px;width:0%;transition:width .35s ease}
.form-stage{max-width:600px;margin:0 auto;padding:64px 28px 110px}
.step{display:none}
.step.active{display:block;animation:sIn .3s ease}
@keyframes sIn{from{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}
.step h2{font-size:32px;margin-bottom:8px}
.step .hint{font-size:16px;color:var(--muted);margin-bottom:30px}
label.fl{display:block;font-size:14.5px;font-weight:500;color:var(--charcoal);margin-bottom:7px}
.field{margin-bottom:20px}
input[type=text],input[type=number],select,textarea{
width:100%;background:var(--white);border:none;box-shadow:inset 0 0 0 1px var(--line);
border-radius:8px;padding:13px 15px;font-family:'Inter';font-size:16px;
color:var(--charcoal);letter-spacing:-.012em;transition:box-shadow .15s ease}
input:focus,select:focus,textarea:focus{outline:none;box-shadow:inset 0 0 0 2px var(--brand)}
textarea{resize:vertical;min-height:92px;line-height:1.5}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2383837f' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
background-repeat:no-repeat;background-position:right 15px center;padding-right:40px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{background:var(--white);box-shadow:inset 0 0 0 1px var(--line);border-radius:8px;
padding:10px 17px;font-size:14.5px;color:var(--body);cursor:pointer;
transition:all .15s ease;user-select:none}
.chip:hover{box-shadow:inset 0 0 0 1px var(--muted)}
.chip.on{background:var(--brand);color:#fff;box-shadow:none}
.form-nav{display:flex;gap:10px;margin-top:34px;align-items:center}
.card-soft{background:var(--tint);border-radius:10px;padding:20px;box-shadow:var(--card)}
.card-soft p{font-size:14.5px;color:var(--body)}
.search-stage{max-width:540px;margin:0 auto;padding:130px 28px;text-align:center}
.search-stage h2{font-size:30px;margin-bottom:38px}
.big-prog{height:4px;background:var(--stone);border-radius:99px;overflow:hidden;margin-bottom:34px}
.big-fill{height:100%;background:var(--brand);width:0%;transition:width .4s linear}
.status-list{text-align:left;display:flex;flex-direction:column;gap:13px;margin-bottom:32px}
.status{display:flex;align-items:center;gap:12px;font-size:16px;color:var(--muted);
opacity:0;transform:translateY(5px);transition:all .4s ease}
.status.on{opacity:1;transform:none;color:var(--charcoal)}
.status .tick{width:18px;height:18px;border-radius:50%;background:var(--stone);flex:none;
display:flex;align-items:center;justify-content:center;font-size:10px;color:#fff}
.status.on .tick{background:var(--green)}
.counter{font-size:14px;color:var(--muted)}
.res-stage{max-width:var(--max);margin:0 auto;padding:48px 28px 110px}
.res-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;
margin-bottom:32px;flex-wrap:wrap}
.res-head h2{font-size:30px}
.res-layout{display:grid;grid-template-columns:1fr 290px;gap:28px;align-items:start}
.cand-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.cand{background:var(--white);border-radius:12px;box-shadow:var(--card);padding:24px}
.cand:hover{box-shadow:inset 0 0 0 1px var(--muted)}
.cand-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px}
.match{font-size:21px;font-weight:600;color:var(--brand);letter-spacing:-.03em;line-height:1;text-align:right}
.match small{display:block;font-size:11px;color:var(--muted);font-weight:500;margin-top:3px;letter-spacing:0}
.cand h4{font-size:16px;font-weight:600;color:var(--charcoal);margin-bottom:3px}
.cand .meta{font-size:13px;color:var(--muted);margin-bottom:14px}
.cand-rows{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.crow{display:flex;justify-content:space-between;gap:10px;font-size:13.5px}
.crow span:first-child{color:var(--muted)}
.crow span:last-child{color:var(--body);text-align:right}
.cand-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;
padding-top:14px;border-top:1px solid var(--line);flex-wrap:wrap}
.contact-lock{font-size:13px;color:var(--muted)}
.locked-zone{position:relative;margin-top:12px}
.locked-zone .cand-grid{filter:blur(2.5px);opacity:.5;pointer-events:none}
.unlock{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
justify-content:center;gap:15px;text-align:center;padding:24px;
background:linear-gradient(to bottom,rgba(255,255,255,.35) 0%,rgba(255,255,255,.94) 45%,#fff 100%)}
.side{position:sticky;top:92px}
.side h4{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.09em;
color:var(--charcoal);margin-bottom:16px}
.srow{display:flex;justify-content:space-between;gap:12px;padding:10px 0;
border-bottom:1px solid var(--line);font-size:13.5px}
.srow:last-of-type{border-bottom:none}
.srow span:first-child{color:var(--muted)}
.srow span:last-child{color:var(--charcoal);text-align:right;font-weight:500}
.pay-stage{max-width:1020px;margin:0 auto;padding:56px 28px 110px}
.pay-head{text-align:center;max-width:580px;margin:0 auto 42px}
.pay-head h2{font-size:32px}
.pay-head p{margin-top:12px;font-size:17px}
.tariffs{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:38px}
.tariff{background:var(--white);border-radius:12px;box-shadow:var(--card);padding:28px;
cursor:pointer;transition:all .18s ease;position:relative}
.tariff:hover{box-shadow:inset 0 0 0 1px var(--muted)}
.tariff.on{box-shadow:inset 0 0 0 2px var(--brand)}
.tname{font-size:14px;font-weight:600;color:var(--muted);text-transform:uppercase;
letter-spacing:.07em;margin-bottom:12px}
.tprice{font-size:30px;font-weight:600;color:var(--brand);letter-spacing:-.03em;
line-height:1;margin-bottom:20px}
.tlist{display:flex;flex-direction:column;gap:9px;font-size:14.5px}
.tlist div{display:flex;gap:9px;align-items:flex-start;color:var(--body)}
.tlist .no{color:var(--muted)}
.tlist i{font-style:normal;flex:none;width:14px;text-align:center;color:var(--green)}
.tlist .no i{color:var(--muted)}
.best{position:absolute;top:-9px;left:26px;background:var(--brand);color:#fff;
border-radius:6px;padding:4px 11px;font-size:11px;font-weight:600;letter-spacing:.02em}
.pay-total{text-align:center}
.pay-total .sum{font-size:40px;font-weight:600;color:var(--brand);
letter-spacing:-.035em;margin-bottom:20px}
.pay-methods{display:flex;gap:8px;justify-content:center;margin-top:16px;flex-wrap:wrap}
.pm{background:var(--tint);box-shadow:var(--card);border-radius:6px;padding:6px 13px;
font-size:12px;color:var(--muted)}
.done-stage{max-width:540px;margin:0 auto;padding:100px 28px;text-align:center}
.done-icon{width:56px;height:56px;border-radius:50%;background:var(--green);
display:flex;align-items:center;justify-content:center;margin:0 auto 26px;
font-size:26px;color:#fff}
.done-stage h2{font-size:32px;margin-bottom:14px}
.done-stage>div>p{font-size:16.5px;margin-bottom:32px}
.done-form{text-align:left;background:var(--white);border-radius:12px;
box-shadow:var(--card);padding:28px}
.check{display:flex;gap:11px;align-items:flex-start;margin:18px 0 22px;cursor:pointer}
.check input{margin-top:3px;width:17px;height:17px;flex:none;accent-color:var(--ink);cursor:pointer}
.check span{font-size:13.5px;line-height:1.45;color:var(--body)}
.link-blue{color:var(--blue);text-decoration:none}
.link-blue:hover{text-decoration:underline}
.thanks{display:none}
.thanks.show{display:block;animation:sIn .4s ease}
@media(max-width:1000px){
h1{font-size:38px} h2{font-size:29px}
.hero{padding:52px 0 60px}
.hero-grid,.step-row,.grid-3,.grid-2,.who-grid,.tariffs,.cand-grid,.foot-grid{
grid-template-columns:1fr;gap:28px}
.step-row{padding:28px;gap:24px}
.res-layout{grid-template-columns:1fr}
.side{position:static}
.nav-links{display:none}
section{padding:56px 0}
.hero-facts{gap:22px}
.cta-box{padding:44px 26px}
}
/* ===== v3: продуктовые карточки с обоснованием ===== */
.demo-card{background:var(--white);border-radius:12px;box-shadow:var(--card);
padding:18px;margin-bottom:10px}
.demo-card:last-child{margin-bottom:0}
.demo-card.dim{opacity:.5}
.dc-meta{font-size:12px;color:var(--muted);line-height:1.4}
.dc-why{background:var(--brand-soft);border-radius:9px;padding:13px 14px;margin-bottom:13px}
.why-h{display:block;font-size:10.5px;font-weight:600;color:var(--muted);
text-transform:uppercase;letter-spacing:.08em;margin-bottom:9px}
.why-r{display:flex;align-items:flex-start;gap:8px;font-size:12.5px;
color:var(--body);line-height:1.45;margin-bottom:6px}
.why-r:last-child{margin-bottom:0}
.why-r i{width:13px;height:13px;border-radius:50%;background:var(--green);flex:none;
margin-top:2px;position:relative}
.why-r i::after{content:'';position:absolute;left:4px;top:3px;width:3px;height:6px;
border:solid #fff;border-width:0 1.6px 1.6px 0;transform:rotate(45deg)}
.st-active{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;
color:var(--green);font-weight:600}
.st-active i{width:6px;height:6px;border-radius:50%;background:var(--green);flex:none}
.dc-lock{font-size:12px;color:var(--charcoal);font-variant-numeric:tabular-nums;font-weight:500}
.demo-head{align-items:flex-start}
.dh-n{display:block;font-size:14px;font-weight:600;color:var(--charcoal);letter-spacing:-.015em}
.dh-s{display:block;font-size:11.5px;color:var(--muted);margin-top:2px}
.dh-badge{background:rgba(0,201,120,.1);color:var(--green);border-radius:5px;
padding:3px 9px;font-size:11px;font-weight:600}
/* панели в шагах */
.ui-panel{background:var(--white);border-radius:12px;box-shadow:
inset 0 0 0 1px var(--line), 0 12px 28px -14px rgba(0,0,0,.10);overflow:hidden}
.sec-tint .ui-panel{background:var(--white)}
.up-head{background:var(--brand-soft);border-bottom:1px solid var(--line);padding:12px 18px;
font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.up-body{padding:18px}
.up-row{display:flex;justify-content:space-between;gap:14px;padding:10px 0;
border-bottom:1px solid var(--line);font-size:14px}
.up-row:last-child{border-bottom:none}
.up-row span{color:var(--muted)}
.up-row b{color:var(--charcoal);font-weight:500;text-align:right}
.up-bar{margin-bottom:15px;position:relative}
.up-bar:last-child{margin-bottom:0}
.up-bar span{display:inline-block;font-size:13px;color:var(--body);margin-bottom:6px}
.up-bar em{position:absolute;right:0;top:0;font-style:normal;font-size:13px;
font-weight:600;color:var(--charcoal)}
.up-bar i{display:block;height:5px;background:var(--brand);border-radius:99px}
.up-c{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.up-ci b{display:block;font-size:14.5px;color:var(--charcoal);font-weight:600;
font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.up-ci span{display:block;font-size:12px;color:var(--muted);margin-top:1px}
.up-more{font-size:13px;color:var(--muted);padding-top:12px}
/* категории */
.cat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:6px}
/* микротекст под главной кнопкой: снимает страх перед анкетой */
.cta-note{font-size:13px;color:var(--muted);margin-top:14px;letter-spacing:0}
/* триггеры доверия на первом экране вместо цены */
.hero-trust{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px}
.hero-trust span{font-size:13.5px;color:var(--body);background:var(--tint);
box-shadow:inset 0 0 0 1px var(--line);border-radius:9999px;padding:8px 14px;
white-space:nowrap}
/* сравнение: короткие пункты, на мобильном карточками друг под другом */
.cmp-list{list-style:none;padding:0;margin:0}
.cmp-list li{position:relative;padding-left:24px;margin-bottom:11px;
font-size:15.5px;line-height:1.45}
.cmp-list li:last-child{margin-bottom:0}
.cmp-old .cmp-list li{color:var(--muted)}
.cmp-old .cmp-list li::before{content:'';position:absolute;left:4px;top:9px;
width:9px;height:1.5px;background:#c9c6c1;border-radius:1px}
.cmp-new .cmp-list li{color:var(--body)}
.cmp-new .cmp-list li::before{content:'✓';position:absolute;left:0;top:-1px;
color:var(--green);font-size:14px;font-weight:600}
/* ---------- ЭКРАН ЗАПУСКА ПОИСКА ---------- */
.vac-card{background:var(--white);border-radius:12px;box-shadow:var(--card);
padding:26px 28px;margin-bottom:14px}
.vc-top{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.vc-top b{font-family:var(--display);font-size:23px;font-weight:600;color:var(--ink);
letter-spacing:-.024em}
.vc-city{font-size:14px;color:var(--muted)}
.vc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;
padding-top:18px;border-top:1px solid var(--line)}
.vc-grid span{display:block;font-size:12.5px;color:var(--muted);margin-bottom:4px}
.vc-grid b{font-size:15px;font-weight:600;color:var(--charcoal)}
.vc-req{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.vc-cap{display:block;font-size:11.5px;font-weight:600;color:var(--muted);
letter-spacing:.05em;text-transform:uppercase;margin-bottom:10px}
.vc-tags{display:flex;flex-wrap:wrap;gap:7px}
.vc-tags span{font-size:13px;color:#0b6b3f;background:#e8f6ee;border-radius:9999px;padding:6px 12px}
.steps-line{display:flex;gap:8px;margin:18px 0 14px;flex-wrap:wrap}
.sl{display:flex;align-items:center;gap:8px;flex:1;min-width:150px;
background:var(--tint);border-radius:9999px;padding:9px 14px}
.sl i{font-style:normal;width:20px;height:20px;border-radius:50%;flex:none;
display:flex;align-items:center;justify-content:center;
background:var(--stone);color:var(--muted);font-size:11px;font-weight:600}
.sl span{font-size:13px;color:var(--muted)}
.sl.on i{background:var(--green);color:#fff}
.sl.on span{color:var(--body)}
.sl.now{background:var(--white);box-shadow:inset 0 0 0 1px #ddd8d1}
.sl.now i{background:var(--ink);color:#fff}
.sl.now span{color:var(--ink);font-weight:600}
.launch{display:grid;grid-template-columns:1.25fr .75fr;gap:14px}
.lc-l,.lc-r{background:var(--white);border-radius:12px;box-shadow:var(--card);padding:28px 30px}
.lc-l h3{font-size:20px;margin-bottom:16px}
.lc-honest{font-size:13.5px;line-height:1.5;color:var(--muted);margin-top:18px;
padding-top:16px;border-top:1px solid var(--line)}
.lc-r{box-shadow:inset 0 0 0 1px #ddd8d1;text-align:center}
.lc-cap{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.lc-price{font-family:var(--display);font-size:44px;font-weight:600;color:var(--ink);
letter-spacing:-.032em;line-height:1;margin-bottom:20px}
.lc-r .btn{width:100%}
.lc-r .micro{margin-top:10px}
.pay-next{text-align:center;font-size:14.5px;color:var(--muted);margin-top:20px;
max-width:560px;margin-left:auto;margin-right:auto;line-height:1.5}
@media(max-width:900px){
.launch{grid-template-columns:1fr}
.vc-grid{grid-template-columns:1fr 1fr}
.steps-line{gap:6px}
.sl{min-width:0;flex:1 1 46%}
}
@media(max-width:560px){
.vac-card,.lc-l,.lc-r{padding:22px 20px}
.lc-price{font-size:38px}
.vc-top b{font-size:20px}
}
/* ---------- ПЕРВЫЙ ЭКРАН: демонстрация отбора ---------- */
.hero-over{display:block;font-size:14px;font-weight:500;color:var(--muted);margin-bottom:14px}
.hero-demo{position:relative}
.hd-frame{background:var(--white);border-radius:12px;box-shadow:var(--card);padding:24px}
.hd-cap{display:block;font-size:11.5px;font-weight:600;color:var(--muted);
letter-spacing:.05em;text-transform:uppercase;margin-bottom:7px}
.hd-vac b{display:block;font-family:var(--display);font-size:19px;font-weight:600;
color:var(--ink);letter-spacing:-.02em}
.hd-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}
.hd-tags span{font-size:12.5px;color:var(--body);background:var(--tint);
box-shadow:inset 0 0 0 1px var(--line);border-radius:9999px;padding:5px 10px}
.hd-pipe{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.hp-row{display:flex;align-items:center;gap:11px;padding:9px 0;
opacity:.3;transform:translateY(4px);
transition:opacity .3s ease,transform .3s ease}
.hp-row.on{opacity:1;transform:none}
.hp-ico{flex:none;width:22px;height:22px;border-radius:50%;background:var(--stone);
color:var(--muted);font-size:11px;display:flex;align-items:center;justify-content:center;
transition:background .3s ease,color .3s ease}
.hp-row.on .hp-ico{background:#e9eef7;color:var(--blue)}
.hp-row[data-i="2"].on .hp-ico{background:var(--stone);color:var(--muted)}
.hp-row.final.on .hp-ico{background:var(--blue);color:#fff}
.hp-txt{flex:1;font-size:14px;color:var(--body);line-height:1.35}
.hp-val{font-family:var(--display);font-size:19px;font-weight:600;color:var(--ink);
letter-spacing:-.02em;min-width:34px;text-align:right}
.hp-val.muted{color:var(--muted)}
.hp-row.final .hp-txt{font-weight:600;color:var(--ink)}
.hp-row.final .hp-val{font-size:26px;color:var(--blue)}
.hd-send{margin-top:14px;padding:11px 14px;border-radius:9999px;background:#e9eef7;
font-size:13px;color:var(--blue);text-align:center;font-weight:500;
opacity:0;transform:translateY(6px);transition:opacity .3s ease,transform .3s ease}
.hd-send.on{opacity:1;transform:none}
.hd-demo-note{display:block;font-size:11px;color:var(--muted);margin-top:14px;
text-align:center;line-height:1.4}
@media(max-width:900px){ .hd-num{font-size:32px} }
@media(max-width:560px){
.hd-frame{padding:20px}
.hp-txt{font-size:13px}
.hp-val{font-size:17px}
.hp-row.final .hp-val{font-size:22px}
}
/* ---------- ПЛАН РАБОТ НА ЭКРАНЕ ЗАПУСКА ---------- */
.plan{background:var(--white);border-radius:12px;box-shadow:var(--card);
padding:28px 30px;margin-top:14px}
.plan-cap{display:block;font-size:11.5px;font-weight:600;color:var(--muted);
letter-spacing:.05em;text-transform:uppercase;margin-bottom:20px}
.plan-step{display:flex;gap:18px;padding-bottom:22px;margin-bottom:22px;
border-bottom:1px solid var(--line)}
.plan-step:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}
.plan-step>b{flex:none;font-family:var(--display);font-size:15px;font-weight:600;
color:var(--blue);letter-spacing:.02em;padding-top:2px;width:26px}
.plan-step h4{font-size:17px;font-weight:600;color:var(--ink);margin-bottom:6px;
letter-spacing:-.015em}
.plan-step p{font-size:15px;line-height:1.55;color:var(--body)}
.launch-box{background:var(--white);border-radius:12px;box-shadow:inset 0 0 0 1px #ddd8d1;
padding:32px 30px;margin-top:14px;text-align:center}
.launch-box .lc-price{margin-bottom:8px}
.lb-when{font-size:14px;color:var(--muted);margin-bottom:22px}
.launch-box .btn{width:100%;max-width:420px}
.lb-strong{font-family:var(--display);font-size:16px;font-weight:600;color:var(--ink);
letter-spacing:-.015em;margin-top:16px}
.launch-box .micro{margin-top:8px}
.launch-box .pay-methods{justify-content:center;margin-top:18px}
@media(max-width:560px){
.plan{padding:24px 20px}
.plan-step{gap:13px}
.plan-step h4{font-size:16px}
.plan-step p{font-size:14.5px}
.launch-box{padding:26px 20px}
.lb-strong{font-size:15px}
}
/* ---------- ФИНАЛЬНЫЙ ЭКРАН: ход работы ---------- */
.run-steps{display:flex;flex-direction:column;gap:2px;margin-top:22px;text-align:left;
max-width:340px;margin-left:auto;margin-right:auto}
.rs{display:flex;align-items:center;gap:11px;padding:9px 14px;border-radius:9px}
.rs i{font-style:normal;width:20px;height:20px;border-radius:50%;flex:none;font-size:11px;
display:flex;align-items:center;justify-content:center;background:var(--stone);color:var(--muted)}
.rs span{font-size:14px;color:var(--muted)}
.rs.on i{background:var(--green);color:#fff}
.rs.on span{color:var(--body)}
.rs.now{background:var(--tint)}
.rs.now i{background:var(--blue);color:#fff}
.rs.now span{color:var(--ink);font-weight:600}
.chan{display:flex;gap:8px;margin-bottom:18px}
.ch{flex:1;padding:12px;border:none;border-radius:10px;background:var(--tint);
box-shadow:inset 0 0 0 1px var(--line);font:inherit;font-size:15px;font-weight:500;
color:var(--body);cursor:pointer;transition:all .15s ease}
.ch:hover{box-shadow:inset 0 0 0 1px #ddd8d1}
.ch.on{background:var(--white);box-shadow:inset 0 0 0 2px var(--ink);color:var(--ink)}
/* ---------- ИЛЛЮСТРАЦИИ ---------- */
.ill{display:block;margin:0 auto;max-width:100%;height:auto;max-height:380px;width:auto}
.ill-sm{max-height:190px;width:auto}
/* ---------- ЭКРАН ПОДБОРКИ: новые блоки ---------- */
.res-top{margin-bottom:30px}
.res-top h2{font-size:34px;margin-bottom:10px}
.res-lead{font-size:17px;line-height:1.55;color:var(--body);max-width:640px}
.res-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:26px}
.res-metrics>div{background:var(--white);border-radius:10px;box-shadow:var(--card);
padding:18px 20px}
.res-metrics b{display:block;font-family:var(--display);font-size:26px;font-weight:600;
color:var(--ink);letter-spacing:-.025em;line-height:1.1}
.res-metrics span{display:block;font-size:13px;color:var(--muted);margin-top:5px;line-height:1.35}
.res-block{background:var(--white);border-radius:10px;box-shadow:var(--card);
padding:28px 30px;margin-top:14px}
.res-block h3{font-size:20px;margin-bottom:8px}
.rb-lead{font-size:15.5px;line-height:1.55;color:var(--body);margin-bottom:18px}
.rb-list{list-style:none;padding:0;margin:0}
.rb-list li{position:relative;padding-left:26px;margin-bottom:10px;
font-size:15px;line-height:1.5;color:var(--body)}
.rb-list li:last-child{margin-bottom:0}
.rb-list li::before{content:'✓';position:absolute;left:2px;top:-1px;
color:var(--green);font-size:14px;font-weight:600}
.rb-next li::before{content:'→';color:var(--blue);font-weight:500}
.rb-two{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.rb-cap{display:block;font-size:12.5px;font-weight:600;color:var(--muted);
letter-spacing:.03em;text-transform:uppercase;margin-bottom:12px}
.res-final{display:flex;align-items:center;justify-content:space-between;gap:24px;
background:var(--white);border-radius:10px;box-shadow:inset 0 0 0 1px #ddd8d1;
padding:26px 30px;margin-top:14px;flex-wrap:wrap}
.rf-cap{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}
.rf-price{display:block;font-family:var(--display);font-size:30px;font-weight:600;
color:var(--ink);letter-spacing:-.026em;line-height:1.1}
.rf-note{display:block;font-size:13px;color:var(--muted);margin-top:6px;max-width:340px;line-height:1.45}
@media(max-width:900px){
.res-metrics{grid-template-columns:1fr 1fr}
.rb-two{grid-template-columns:1fr;gap:22px}
}
@media(max-width:560px){
.res-top h2{font-size:27px}
.res-lead{font-size:15.5px}
.res-metrics{gap:8px}
.res-metrics>div{padding:14px 15px}
.res-metrics b{font-size:22px}
.res-block{padding:24px 20px}
.res-final{padding:22px 20px;flex-direction:column;align-items:stretch}
.res-final .btn{width:100%}
.rf-note{max-width:none}
}
/* ---------- КАК НАХОДИМ ---------- */
.src-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:start}
.src-steps{counter-reset:src}
.src-step{position:relative;padding:0 0 26px 46px;border-left:1px solid var(--line);
margin-left:13px}
.src-step:last-child{border-left-color:transparent;padding-bottom:0}
.src-step::before{counter-increment:src;content:counter(src);
position:absolute;left:-13px;top:-2px;width:26px;height:26px;border-radius:50%;
background:var(--ink);color:#fff;font-size:13px;font-weight:600;
display:flex;align-items:center;justify-content:center}
.src-step h3{margin-bottom:6px}
.src-step p{font-size:15.5px;line-height:1.55;color:var(--body)}
.src-legal{margin-top:26px;padding:18px 20px;background:var(--tint);border-radius:10px;
font-size:14px;line-height:1.55;color:var(--body)}
/* ---------- ТАРИФЫ ---------- */
.price-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:start}
.pcard{background:var(--white);border-radius:10px;box-shadow:var(--card);
padding:30px 26px;position:relative;transition:box-shadow .16s ease,transform .16s ease}
.pcard:hover{box-shadow:inset 0 0 0 1px #ddd8d1;transform:translateY(-2px)}
.pcard.best{box-shadow:inset 0 0 0 1px #ddd8d1;transform:translateY(-8px)}
.pcard.best:hover{transform:translateY(-10px)}
.pbest{position:absolute;top:-11px;left:26px;background:var(--accent);color:#fff;
font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;
padding:5px 11px;border-radius:9999px}
.pname{font-family:var(--display);font-size:17px;font-weight:600;color:var(--ink);
letter-spacing:-.02em;margin-bottom:12px}
.pprice{font-family:var(--display);font-size:38px;font-weight:600;color:var(--ink);
letter-spacing:-.03em;line-height:1}
.pper{font-size:13px;color:var(--muted);margin:6px 0 20px}
.plist{border-top:1px solid var(--line);padding-top:16px}
.plist div{display:flex;gap:9px;align-items:flex-start;font-size:14.5px;
line-height:1.5;color:var(--body);margin-bottom:9px}
.plist i{font-style:normal;color:var(--green);flex:none;width:14px}
.plist .no{color:var(--muted)}
.plist .no i{color:#c9c6c1}
.price-note{text-align:center;font-size:15px;color:var(--body);margin-top:26px}
.price-cta{text-align:center;margin-top:26px}
/* ---------- ГАРАНТИИ РЯДОМ С ЦЕНОЙ ---------- */
.grt-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}
.grt{background:var(--white);border-radius:10px;box-shadow:var(--card);padding:26px 24px}
.grt h3{font-size:17px;margin-bottom:8px}
.grt p{font-size:14.5px;line-height:1.55;color:var(--body)}
/* ---------- СРАВНЕНИЕ ---------- */
.cmp-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
/* без min-width:0 колонка сетки распирается содержимым и вылезает за экран */
.cmp-grid>*,.price-grid>*,.grt-grid>*,.src-grid>*{min-width:0}
.cmp-list li{overflow-wrap:anywhere}
.cmp{border-radius:10px;padding:30px 28px}
.cmp-old{background:var(--tint)}
.cmp-old h3{color:var(--muted);font-size:18px;margin-bottom:12px}
.cmp-old p{color:var(--muted);font-size:15.5px;line-height:1.6}
.cmp-new{background:var(--white);box-shadow:inset 0 0 0 1px #ddd8d1}
.cmp-new h3{font-size:18px;margin-bottom:12px}
.cmp-new h3 span{color:var(--badger-red)}
.cmp-new p{font-size:15.5px;line-height:1.6;color:var(--body)}
/* ---------- ЛИПКАЯ ПАНЕЛЬ НА МОБИЛЬНОМ ---------- */
.sticky-buy{position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;
align-items:center;justify-content:space-between;gap:12px;
padding:12px 16px calc(12px + env(safe-area-inset-bottom));
background:rgba(255,255,255,.94);backdrop-filter:saturate(1.6) blur(10px);
border-top:1px solid var(--line);
transform:translateY(110%);transition:transform .24s cubic-bezier(.2,.7,.3,1)}
.sticky-buy.on{transform:translateY(0)}
.sticky-buy b{font-family:var(--display);font-size:17px;color:var(--ink);letter-spacing:-.02em}
.sticky-buy span{display:block;font-size:11.5px;color:var(--muted);margin-top:1px}
.sticky-buy .btn{padding:12px 20px;font-size:15px;white-space:nowrap}
/* ---------- ПОЯВЛЕНИЕ ПРИ ПРОКРУТКЕ ---------- */
.rv{opacity:0;transform:translateY(16px)}
.rv.in{opacity:1;transform:none;
transition:opacity .32s cubic-bezier(.2,.7,.3,1),transform .32s cubic-bezier(.2,.7,.3,1)}
@media(prefers-reduced-motion:reduce){
*{animation-duration:.01ms !important;transition-duration:.01ms !important}
.rv{opacity:1;transform:none}
}
@media(max-width:560px){
.hero-cta{flex-direction:column;align-items:stretch}
.hero-cta .btn{width:100%}
.price-cta .btn{width:100%}
/* кнопки под палец: не меньше 48px по высоте */
.btn-lg{padding:16px 22px;min-height:52px}
.hero-trust{gap:6px;margin-top:22px}
.hero-trust span{font-size:12.5px;padding:7px 12px;white-space:normal}
h1{font-size:34px !important;letter-spacing:-.028em}
h2{font-size:27px !important}
.pprice{font-size:34px}
.sec-head{margin-bottom:32px}
section{padding:64px 0}
/* ничего не должно вылезать за экран */
.wrap{padding-left:18px;padding-right:18px}
.cmp{padding:24px 20px}
.pcard{padding:26px 22px}
/* липкая панель не должна перекрывать подвал */
footer{padding-bottom:96px}
}
/* общая защита от горизонтальной прокрутки */
html,body{max-width:100%;overflow-x:hidden}
img,svg{max-width:100%}
@media(max-width:900px){
.src-grid{grid-template-columns:1fr;gap:32px}
.price-grid,.grt-grid,.cmp-grid{grid-template-columns:1fr}
.pcard.best{transform:none;order:-1}
.pcard.best:hover{transform:translateY(-2px)}
.sticky-buy{display:flex}
}
.cat{background:var(--white);border-radius:10px;box-shadow:var(--card);overflow:hidden}
.cat-ph{aspect-ratio:16/10;background:var(--stone);overflow:hidden}
.cat-ph img{width:100%;height:100%;object-fit:cover;display:block}
.cat h3{font-size:17px;padding:20px 22px 8px}
.cat p{font-size:14.5px;color:var(--body);padding:0 22px 22px;line-height:1.5}
@media(max-width:1000px){
.cat-grid{grid-template-columns:1fr}
}
/* ===== анимации платформы ===== */
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideL{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@keyframes slideR{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(.9);opacity:0}60%{transform:scale(1.03)}100%{transform:scale(1);opacity:1}}
@keyframes shimmer{0%{background-position:-420px 0}100%{background-position:420px 0}}
@keyframes pulseRing{0%{box-shadow:0 0 0 0 rgba(0,201,120,.35)}70%{box-shadow:0 0 0 7px rgba(0,201,120,0)}100%{box-shadow:0 0 0 0 rgba(0,201,120,0)}}
@keyframes drawCheck{to{stroke-dashoffset:0}}
@keyframes barGrow{from{width:0}}
/* форма */
.step.active{animation:slideL .34s cubic-bezier(.22,.61,.36,1)}
.step.back{animation:slideR .34s cubic-bezier(.22,.61,.36,1)}
.field{animation:fadeUp .4s ease backwards}
.step.active .field:nth-child(2){animation-delay:.04s}
.step.active .field:nth-child(3){animation-delay:.08s}
.step.active .field:nth-child(4){animation-delay:.12s}
.step.active .field:nth-child(5){animation-delay:.16s}
label.fl{transition:color .15s ease}
.field:focus-within label.fl{color:var(--brand)}
input,select,textarea{transition:box-shadow .18s ease, background .18s ease}
.chip{transition:all .16s cubic-bezier(.22,.61,.36,1)}
.chip:active{transform:scale(.96)}
.chip.on{animation:pop .22s ease}
/* подбор */
.search-stage h2{animation:fadeUp .5s ease}
.status{transition:opacity .45s ease, transform .45s ease, color .45s ease}
.status.on .tick{animation:pop .3s ease}
.big-fill{transition:width .35s linear}
.counter b{font-variant-numeric:tabular-nums;color:var(--charcoal);font-weight:600}
.search-hint{margin-top:26px;font-size:13px;color:var(--muted);animation:fadeIn .6s ease .8s backwards}
/* результаты: карточки появляются каскадом */
.cand{animation:fadeUp .45s cubic-bezier(.22,.61,.36,1) backwards;
transition:box-shadow .2s ease, transform .2s ease}
.cand:hover{transform:translateY(-2px)}
.cand:nth-child(1){animation-delay:.02s}
.cand:nth-child(2){animation-delay:.08s}
.cand:nth-child(3){animation-delay:.14s}
.cand:nth-child(4){animation-delay:.20s}
.res-head{animation:fadeUp .4s ease}
.side{animation:fadeUp .5s ease .1s backwards}
.locked-zone{animation:fadeIn .6s ease .3s backwards}
.unlock{animation:fadeUp .5s ease .45s backwards}
/* блок обоснования в результатах */
.why-box{background:var(--brand-soft);border-radius:9px;padding:13px 14px;margin-bottom:14px}
.why-box .why-h{display:block;font-size:10.5px;font-weight:600;color:var(--brand);
text-transform:uppercase;letter-spacing:.08em;margin-bottom:9px}
.why-box .why-r{display:flex;align-items:flex-start;gap:8px;font-size:13px;
color:var(--body);line-height:1.45;margin-bottom:6px;animation:fadeIn .4s ease backwards}
.why-box .why-r:last-child{margin-bottom:0}
.why-box .why-r:nth-child(2){animation-delay:.05s}
.why-box .why-r:nth-child(3){animation-delay:.1s}
.why-box .why-r:nth-child(4){animation-delay:.15s}
.why-box .why-r:nth-child(5){animation-delay:.2s}
.why-box i{width:14px;height:14px;border-radius:50%;background:var(--green);flex:none;
margin-top:2px;position:relative}
.why-box i::after{content:'';position:absolute;left:4.5px;top:3px;width:3px;height:6px;
border:solid #fff;border-width:0 1.7px 1.7px 0;transform:rotate(45deg)}
/* статус активности с пульсом */
.badge-live{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;
color:var(--green);font-weight:600}
.badge-live i{width:7px;height:7px;border-radius:50%;background:var(--green);
flex:none;animation:pulseRing 2.4s infinite}
/* контакт под замком */
.lock-row{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--charcoal);
font-variant-numeric:tabular-nums;font-weight:500}
.lock-ic{width:13px;height:13px;flex:none;opacity:.45}
/* оплата */
.tariff{animation:fadeUp .45s ease backwards;transition:all .2s cubic-bezier(.22,.61,.36,1)}
.tariff:nth-child(1){animation-delay:.02s}
.tariff:nth-child(2){animation-delay:.09s}
.tariff:nth-child(3){animation-delay:.16s}
.tariff:hover{transform:translateY(-3px)}
.tariff.on{transform:translateY(-3px)}
.pay-head{animation:fadeUp .4s ease}
.pay-total{animation:fadeUp .5s ease .2s backwards}
.pay-total .sum{transition:opacity .18s ease}
.sum.flip{opacity:0}
/* финал: рисующаяся галочка */
.done-icon svg{width:30px;height:30px}
.done-icon path{stroke-dasharray:36;stroke-dashoffset:36;
animation:drawCheck .5s ease .2s forwards}
.done-stage>div{animation:fadeUp .5s ease}
.done-form{animation:fadeUp .5s ease .12s backwards}
/* верхняя панель воронки */
.flow-top{animation:fadeIn .3s ease}
.flow-back{background:none;border:none;color:var(--muted);font-family:'Inter';
font-size:14px;cursor:pointer;padding:6px 8px;border-radius:6px;transition:all .15s ease;
display:inline-flex;align-items:center;gap:6px}
.flow-back:hover{color:var(--brand);background:var(--brand-soft)}
/* скелет загрузки */
.skel{background:linear-gradient(90deg,#f2f2f0 25%,#e9e9e6 50%,#f2f2f0 75%);
background-size:840px 100%;animation:shimmer 1.3s infinite linear;border-radius:6px}
@media (prefers-reduced-motion: reduce){
*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
transition-duration:.01ms!important}
}
/* ===== иконки профессий вместо инициалов ===== */
.ava{width:44px;height:44px;min-width:44px;max-width:44px;border-radius:11px;
flex:0 0 44px;display:inline-flex;box-sizing:border-box;
align-items:center;justify-content:center;color:var(--ic,#0a2540);
background:color-mix(in srgb, var(--ic,#0a2540) 8%, #fff);
box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ic,#0a2540) 14%, #fff);
transition:transform .2s cubic-bezier(.22,.61,.36,1), box-shadow .2s ease}
.ava svg{width:22px;height:22px}
.ava-sm{width:34px;height:34px;min-width:34px;max-width:34px;flex:0 0 34px;border-radius:9px}
.ava-sm svg{width:17px;height:17px}
.cand:hover .ava,.demo-card:hover .ava{transform:scale(1.06) rotate(-2deg)}
/* ===== статус активности: спокойный чип ===== */
.status-chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;
font-weight:500;color:#0a7d4a;background:rgba(0,201,120,.09);
border-radius:6px;padding:5px 10px;transition:background .2s ease}
.status-chip i{width:5px;height:5px;border-radius:50%;background:#0aa15e;flex:none}
.cand:hover .status-chip{background:rgba(0,201,120,.15)}
/* ===== hover по всему интерфейсу ===== */
.nav-links a{position:relative;transition:color .18s ease}
.nav-links a::after{content:'';position:absolute;left:0;right:0;bottom:-4px;height:1.5px;
background:var(--brand);transform:scaleX(0);transform-origin:left;
transition:transform .22s cubic-bezier(.22,.61,.36,1)}
.nav-links a:hover::after{transform:scaleX(1)}
.card{transition:box-shadow .22s ease, transform .22s cubic-bezier(.22,.61,.36,1)}
.card:hover{box-shadow:inset 0 0 0 1px #ddd8d1, 0 1px 6px 0 rgba(0,0,0,.04);
transform:translateY(-2px)}
.cat{transition:box-shadow .22s ease, transform .22s cubic-bezier(.22,.61,.36,1)}
.cat:hover{box-shadow:inset 0 0 0 1px #ddd8d1, 0 1px 6px 0 rgba(0,0,0,.04);
transform:translateY(-3px)}
.cat-ph img{transition:transform .55s cubic-bezier(.22,.61,.36,1)}
.cat:hover .cat-ph img{transform:scale(1.05)}
.photo-card img{transition:transform .55s cubic-bezier(.22,.61,.36,1)}
.photo-card:hover img{transform:scale(1.04)}
.tag{transition:all .18s cubic-bezier(.22,.61,.36,1);cursor:default}
.tag:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 1px var(--brand);color:var(--brand)}
.faq-item{transition:box-shadow .2s ease}
.faq-item:hover{box-shadow:inset 0 0 0 1px #ddd8d1}
.faq-q{transition:color .18s ease}
.faq-q:hover{color:var(--brand)}
.faq-item.open{box-shadow:inset 0 0 0 1px #ddd8d1}
.cmp tbody tr{transition:background .18s ease}
.cmp tbody tr:hover{background:rgba(10,37,64,.028)}
.cmp tbody tr:hover .ours{background:rgba(0,201,120,.09)}
.foot-links a{transition:color .18s ease, transform .18s ease;display:inline-block}
.foot-links a:hover{transform:translateX(3px)}
.demo-card{transition:box-shadow .25s ease, transform .25s cubic-bezier(.22,.61,.36,1)}
.demo-frame:hover .demo-card:first-of-type{transform:translateY(-2px);
box-shadow:inset 0 0 0 1px #ddd8d1}
.demo-card.dim{transition:opacity .3s ease}
.demo-frame:hover .demo-card.dim{opacity:.72}
.ui-panel{transition:box-shadow .25s ease, transform .25s cubic-bezier(.22,.61,.36,1)}
.step-row:hover .ui-panel{transform:translateY(-3px);
box-shadow:inset 0 0 0 1px #ddd8d1, 0 1px 6px 0 rgba(0,0,0,.04)}
.up-bar i{transition:width .8s cubic-bezier(.22,.61,.36,1)}
.step-row{transition:box-shadow .22s ease}
.step-row:hover{box-shadow:inset 0 0 0 1px #ddd8d1}
.pm{transition:all .18s ease}
.pm:hover{color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}
.guarantee h3::before{transition:transform .25s ease}
.guarantee:hover h3::before{transform:scale(1.5)}
.lock-row{transition:color .2s ease}
.cand:hover .lock-row{color:var(--brand)}
.cand:hover .blurred{filter:blur(3px)}
.blurred{transition:filter .3s ease}
.btn{position:relative;overflow:hidden}
.btn:active{transform:scale(.98);transition:transform .08s ease}
.btn-dark::after{content:'';position:absolute;inset:0;background:#fff;opacity:0;
transition:opacity .18s ease}
.btn-dark:hover::after{opacity:.07}
.srow{transition:background .18s ease}
.side .card:hover .srow{background:transparent}
/* ===== кастомный автокомплит ===== */
.ac-wrap{position:relative}
.ac-box{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:30;
background:#fff;border-radius:10px;
box-shadow:inset 0 0 0 1px var(--line), 0 1px 6px 0 rgba(0,0,0,.04);
padding:6px;max-height:min(340px,46vh);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
opacity:0;transform:translateY(-6px);pointer-events:none;
transition:opacity .16s ease, transform .16s cubic-bezier(.22,.61,.36,1)}
.ac-box.open{opacity:1;transform:none;pointer-events:auto}
.ac-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:8px;
font-size:15px;color:var(--charcoal);cursor:pointer;line-height:1.3;
transition:background .12s ease}
.ac-item.on{background:var(--brand-soft)}
.ac-item b{font-weight:600;color:var(--brand)}
.ac-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ac-item .ava{width:28px!important;height:28px!important;min-width:28px!important;max-width:28px!important;flex:0 0 28px!important;border-radius:7px}
.ac-item .ava svg{width:15px;height:15px}
.ac-box::-webkit-scrollbar{width:8px}
.ac-box::-webkit-scrollbar-thumb{background:#dcdcd8;border-radius:99px;
border:2px solid #fff}
.ac-box::-webkit-scrollbar-track{background:transparent}
/* нативный datalist больше не используем */
input::-webkit-calendar-picker-indicator{display:none!important}
/* ===== экран результатов: продающая версия ===== */
.res-sum{display:flex;gap:30px;margin-top:16px;flex-wrap:wrap}
.res-sum div{display:flex;flex-direction:column;gap:2px}
.res-sum b{font-size:18px;font-weight:600;color:var(--charcoal);letter-spacing:-.02em}
.res-sum span{font-size:13px;color:var(--muted);line-height:1.35}
/* якорь цены */
.anchor{display:grid;grid-template-columns:1fr auto;gap:32px;align-items:center;
background:var(--tint);border-radius:12px;padding:24px 28px;margin-bottom:22px;
box-shadow:inset 0 0 0 1px var(--line)}
.anchor-h{display:block;font-size:11.5px;font-weight:600;color:var(--muted);
text-transform:uppercase;letter-spacing:.09em;margin-bottom:8px}
.anchor-l p{font-size:15.5px;line-height:1.5;max-width:620px}
.anchor-r{text-align:right;padding-left:28px;border-left:1px solid var(--line)}
.anchor-sm{display:block;font-size:11.5px;color:var(--muted);text-transform:uppercase;
letter-spacing:.09em;margin-bottom:6px}
.anchor-r b{display:block;font-size:19px;font-weight:600;color:var(--brand);letter-spacing:-.02em}
.anchor-note{display:block;font-size:12.5px;color:var(--muted);margin-top:5px}
/* честная строка о свежести */
.fresh{font-size:13px;color:var(--muted)}
/* кнопка «подробнее» */
.cd-toggle{background:none;border:none;font-family:'Inter';font-size:13.5px;font-weight:600;
color:var(--brand);cursor:pointer;display:inline-flex;align-items:center;gap:6px;
padding:5px 0;transition:opacity .15s ease}
.cd-toggle:hover{opacity:.7}
.cd-toggle svg{width:11px;height:8px;transition:transform .25s ease}
.cand.open .cd-toggle svg{transform:rotate(180deg)}
/* раскрывающийся профиль */
.cd-detail{max-height:0;overflow:hidden;opacity:0;
transition:max-height .38s cubic-bezier(.22,.61,.36,1), opacity .3s ease, margin .3s ease}
.cand.open .cd-detail{max-height:900px;opacity:1;margin-bottom:16px}
.cd-cols{display:grid;grid-template-columns:1fr 1fr;gap:26px;padding:18px 0 4px;
border-top:1px solid var(--line);margin-top:14px}
.cd-h{font-size:11.5px;font-weight:600;color:var(--muted);text-transform:uppercase;
letter-spacing:.09em;margin-bottom:11px}
.cd-job{padding:9px 0;border-bottom:1px solid var(--line)}
.cd-job:last-of-type{border-bottom:none}
.cd-job-t{font-size:14.5px;font-weight:500;color:var(--charcoal);line-height:1.35}
.cd-job-s{font-size:13px;color:var(--muted);margin-top:2px}
.cd-now{display:inline-block;font-size:10.5px;font-weight:600;color:#0a7d4a;
background:rgba(0,201,120,.1);border-radius:4px;padding:2px 6px;margin-left:5px;
vertical-align:middle;letter-spacing:.02em}
.cd-p{font-size:14px;line-height:1.55;color:var(--body)}
.cd-skills{display:flex;flex-wrap:wrap;gap:6px}
.cd-skills span{font-size:12.5px;color:var(--body);background:var(--tint);
box-shadow:inset 0 0 0 1px var(--line);border-radius:6px;padding:5px 10px}
/* закрытая часть профиля */
.cd-locked{background:var(--brand-soft);border-radius:10px;padding:18px;margin-top:18px}
.cd-lrow{display:flex;justify-content:space-between;gap:14px;padding:7px 0;font-size:14px}
.cd-lk{color:var(--muted)}
.cd-lv{color:var(--charcoal);font-weight:500;font-variant-numeric:tabular-nums}
.cd-lbtns{display:flex;gap:7px;margin-top:14px;flex-wrap:wrap}
.cd-lbtn{background:#fff;border:none;box-shadow:inset 0 0 0 1px #c9d6e6;border-radius:7px;
padding:9px 15px;font-family:'Inter';font-size:13.5px;font-weight:500;color:var(--brand);
cursor:pointer;transition:all .16s ease;position:relative;padding-left:30px}
.cd-lbtn::before{content:'';position:absolute;left:12px;top:50%;transform:translateY(-50%);
width:11px;height:11px;border-radius:2px;
box-shadow:inset 0 0 0 1.4px currentColor;opacity:.5}
.cd-lbtn:hover{box-shadow:inset 0 0 0 1px var(--brand);background:#fff;transform:translateY(-1px)}
.cd-lnote{font-size:12px;color:var(--muted);margin-top:10px}
/* полоса гарантий */
.guar-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px}
.guar-strip div{background:#fff;border-radius:10px;box-shadow:inset 0 0 0 1px var(--line);
padding:18px 20px;transition:box-shadow .2s ease}
.guar-strip div:hover{box-shadow:inset 0 0 0 1px #ddd8d1}
.guar-strip i{display:block;width:20px;height:20px;border-radius:50%;background:rgba(0,201,120,.12);
margin-bottom:11px;position:relative}
.guar-strip i::after{content:'';position:absolute;left:6.5px;top:5px;width:4px;height:7px;
border:solid #0aa15e;border-width:0 1.7px 1.7px 0;transform:rotate(45deg)}
.guar-strip b{display:block;font-size:14.5px;font-weight:600;color:var(--charcoal);margin-bottom:4px}
.guar-strip span{font-size:13px;color:var(--muted);line-height:1.45}
/* боковая заметка */
.side-note{background:var(--tint);border-radius:10px;padding:20px;margin-top:12px;
box-shadow:inset 0 0 0 1px var(--line)}
.side-note b{display:block;font-size:13.5px;font-weight:600;color:var(--charcoal);margin-bottom:7px}
.side-note p{font-size:13.5px;line-height:1.5;color:var(--body)}
/* зона под замком: компактнее */
.locked-zone{position:relative;margin-top:12px}
.locked-zone .cand-grid{filter:blur(3px);opacity:.42;pointer-events:none;max-height:330px;overflow:hidden}
.unlock{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;
justify-content:center;gap:13px;text-align:center;padding:20px;
background:linear-gradient(to bottom,rgba(255,255,255,.55) 0%,rgba(255,255,255,.95) 40%,#fff 100%)}
.unlock h3{font-size:21px}
.unlock p{font-size:15px;color:var(--muted);max-width:330px;line-height:1.45}
/* липкая нижняя панель */
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:45;background:rgba(255,255,255,.96);
backdrop-filter:blur(12px);border-top:1px solid var(--line);
box-shadow:0 -8px 24px -12px rgba(10,37,64,.12);
padding:13px 28px;display:flex;align-items:center;justify-content:space-between;gap:20px;
animation:fadeUp .4s ease .6s backwards}
.sticky-cta b{display:block;font-size:14.5px;font-weight:600;color:var(--charcoal)}
.sticky-cta span{font-size:12.5px;color:var(--muted)}
.res-stage{padding-bottom:130px}
/* карточки чуть плотнее и с тенью */
.cand{box-shadow:inset 0 0 0 1px var(--line), 0 1px 6px 0 rgba(0,0,0,.04)}
.cand:hover{box-shadow:inset 0 0 0 1px #ddd8d1, 0 1px 6px 0 rgba(0,0,0,.04)}
.cand.open{box-shadow:inset 0 0 0 1px #ddd8d1, 0 1px 6px 0 rgba(0,0,0,.04)}
@media(max-width:1000px){
.anchor{grid-template-columns:1fr;gap:18px}
.anchor-r{text-align:left;padding-left:0;border-left:none;padding-top:16px;
border-top:1px solid var(--line)}
.cd-cols,.guar-strip{grid-template-columns:1fr;gap:18px}
.res-sum{gap:18px}
.sticky-cta{padding:11px 18px}
.sticky-cta span{display:none}
}
/* подсказка под полем */
.f-hint{font-size:12.5px;color:var(--muted);margin-top:7px;line-height:1.4}
/* список без иконок: аккуратные отступы */
.ac-item{padding:10px 13px}
</style>
</head>
<body>
<div id="app"></div>
<!-- Яндекс Метрика: вставить ID после создания счётчика -->
<script>window.YM_ID = 111190892;
if(window.YM_ID){
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();for(var j=0;j<e.scripts.length;j++){if(e.scripts[j].src===r){return;}}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window,document,'script','https://mc.yandex.ru/metrika/tag.js','ym');
ym(window.YM_ID,'init',{ssr:true,webvisor:true,clickmap:true,trackLinks:true,accurateTrackBounce:true,referrer:document.referrer,url:location.href});
}</script>
<script>const PH={
il_search:"/img/il_search.webp",
il_ok:"/img/il_ok.webp",
il_point:"/img/il_point.webp",
il_hello:"/img/il_hello.webp",
badger:"/img/badger.png",
f1:"/img/f1.jpg",
f2:"/img/f2.jpg",
f3:"/img/f3.jpg",
f4:"/img/f4.jpg",
f5:"/img/f5.jpg",
prod:"/img/prod.jpg",
office:"/img/office.jpg",
hero:"/img/hero.jpg",
woman:"/img/woman.jpg",
stairs:"/img/stairs.jpg",
papers:"/img/papers.jpg",
};</script>
<script>/* справочники из шаблона вакансий Авито */
const AV = {"industry": ["IT, интернет, телеком","Автомобильный бизнес","Архитектура и дизайн","Банки, инвестиции","Банковские и финансовые услуги","Бухгалтерия, финансы","Бытовые и персональные услуги","Госслужба","Госслужба, НКО","Гостиничный бизнес и туризм","Добыча, переработка, транспортировка нефти и газа","Добыча, переработка угля, руд и других полезных ископаемых","Домашний персонал","Доставка, грузоперевозки и логистика","ЖКХ, эксплуатация","ЖКХ и городская инфраструктура","Игорный бизнес","Информационные технологии","Искусство, развлечения","Искусство и развлечения","Клининг","Консалтинг","Консультирование","Курьерская доставка","Лесная и деревообрабатывающая промышленность","Маркетинг, реклама, PR","Маркетинг, реклама и PR","Медицина, фармацевтика","Медицина и фармацевтика","Металлургическая промышленность","НКО и общественная деятельность","Оборонная промышленность","Образование, наука","Образование и наука","Общественное питание","Организация мероприятий","Охрана, безопасность","Охрана и общественный порядок","Переработка отходов","Пищевая промышленность","Продажа и обслуживание автомобилей","Продажа и управление недвижимостью","Продажи","Производство, сырьё, с/х","Производство непродовольственных потребительских товаров","Производство промышленного оборудования и станков","Производство тканей, одежды и обуви","Производство электро- и оптического оборудования","Производство электроники и бытовой техники","Ракетно-космическая промышленность","Ремонт и отделка помещений","Ритуальные услуги","Розничная и оптовая торговля","Сельское хозяйство","Склады и хранилища","СМИ и издательское дело","Страхование","Строительство","Строительство жилых и коммерческих объектов","Строительство промышленных и инфраструктурных объектов","Такси","Такси и пассажирские перевозки","Телекоммуникации и связь","Техническое обслуживание, ремонт техники и оборудования","Транспорт, логистика","Транспортное машиностроение","Туризм, рестораны","Тяжёлое машиностроение","Управление персоналом","Управление транспортной инфраструктурой","Фитнес, салоны красоты","Фитнес-клубы, спа и салоны красоты","Химическая промышленность","Энергетика","Юриспруденция"],"experience": ["Без опыта","Более 1 года","Более 3 лет","Более 5 лет","Более 10 лет"],"payPeriod": ["в месяц","в неделю","за смену","за час","сдельная оплата"],"payoutFreq": ["Каждый день","Раз в неделю","Раз в месяц","Дважды в месяц","Три раза в месяц"],"education": ["Не имеет значения","Среднее профессиональное","Высшее"],"tax": ["На руки","До вычета налогов"]};</script>
<script>/* ============ Штат: прототип воронки ============ */
const S = { prof:'', industry:'', city:'', addr:'', payFrom:'', payTo:'',
period:'в месяц', freq:'', tax:'на руки', empl:[], reg:'', selfEmp:'', medBook:'',
exp:'', edu:'', extra:'', count:1, urgency:'', tariff:1 };
const TARIFFS = [
{ name:'Базовый', price:3900, contacts:'до 10 контактов', days:'новые кандидаты 14 дней', invites:false, manual:false },
{ name:'Стандарт', price:6900, contacts:'до 25 контактов', days:'новые кандидаты 30 дней', invites:true, manual:false },
{ name:'Премиум', price:9900, contacts:'до 50 контактов', days:'новые кандидаты 30 дней', invites:true, manual:true },
];
const INDUSTRIES = ['Курьерская доставка','Доставка, грузоперевозки и логистика','Розничная торговля',
'Продукты питания','Ресторанный бизнес','Производство','Строительство','Склад и логистика',
'Клининг','Бытовые и персональные услуги','Охрана','Медицина и фармацевтика','Другое'];
const PROFESSIONS = ['Курьер','Комплектовщик','Кладовщик','Продавец-консультант','Кассир','Повар',
'Официант','Грузчик','Водитель','Уборщик','Администратор','Сборщик заказов'];
const F = {
m:['А','Д','И','К','М','Н','П','Р','С','Т'],
l:['Б','В','Г','Д','К','Л','М','Н','П','Р','С','Т','Ф','Ш'],
places:['Магнит','Пятёрочка','Лента','ВкусВилл','Перекрёсток','складской комплекс',
'логистический центр','сеть кофеен','торговый центр','служба доставки','производство']
};
const rnd = a => a[Math.floor(Math.random()*a.length)];
const ri = (a,b) => Math.floor(Math.random()*(b-a+1))+a;
const money = n => n.toLocaleString('ru-RU')+' \u20BD';
const esc = s => String(s||'').replace(/[<>&"]/g, c => ({'<':'<','>':'>','&':'&','"':'"'}[c]));</script>
<script>/* ===== отслеживание воронки ===== */
const T = (function(){
const KEY = 'shtat_sid';
function sid(){
let v = null;
try { v = localStorage.getItem(KEY); } catch(e){}
if(!v){
v = Date.now().toString(36) + Math.random().toString(36).slice(2,10);
try { localStorage.setItem(KEY, v); } catch(e){}
}
return v;
}
const SID = sid();
const utm = (function(){
const p = new URLSearchParams(location.search);
const o = {};
['utm_source','utm_medium','utm_campaign','utm_content','utm_term'].forEach(k=>{
const v = p.get(k); if(v) o[k] = v.slice(0,80);
});
if(document.referrer && !document.referrer.includes(location.host)){
o.referrer = document.referrer.slice(0,150);
}
return o;
})();
function post(path, payload){
const data = JSON.stringify({ sid: SID, ...payload });
// sendBeacon доживает до конца выгрузки страницы, fetch не всегда
try {
if(navigator.sendBeacon){
navigator.sendBeacon(path, new Blob([data], {type:'application/json'}));
return;
}
} catch(e){}
fetch(path, {method:'POST', headers:{'Content-Type':'application/json'},
body:data, keepalive:true}).catch(()=>{});
}
const sent = new Set();
return {
sid: SID,
/** отправить событие. once=true: только первый раз за сессию страницы */
ev(event, data, once){
if(once){ if(sent.has(event)) return; sent.add(event); }
const d = Object.assign({}, data || {});
if(event === 'page_view') Object.assign(d, utm);
post('/api/event', { event, data: Object.keys(d).length ? d : null });
// дублируем в Метрику, если подключена
try { if(window.ym && window.YM_ID) ym(window.YM_ID, 'reachGoal', event); } catch(e){}
},
/** сохранить заявку (в том числе незавершённую) */
vacancy(vac, lastStep){
post('/api/vacancy', { vacancy: vac, last_step: lastStep });
},
lead(payload){
post('/api/lead', payload);
}
};
})();
T.ev('page_view');
</script>
<script>/* ===== иконки профессий вместо инициалов ===== */
const ICONS = {
box:`<path d="M3 7.5L12 3l9 4.5v9L12 21l-9-4.5v-9z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path d="M3 7.5L12 12m0 0l9-4.5M12 12v9" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/>`,
truck:`<path d="M2 7h11v9H2zM13 10h4l3 3v3h-7z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><circle cx="6.5" cy="17.5" r="1.8" stroke="currentColor" stroke-width="1.6"/><circle cx="16.5" cy="17.5" r="1.8" stroke="currentColor" stroke-width="1.6"/>`,
wrench:`<path d="M14.5 6a4 4 0 015.4 5.2l-8.4 8.4a2.1 2.1 0 01-3-3l8.4-8.4A4 4 0 0114.5 6z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path d="M9 9L5 5m0 0L3 7l2 2" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/>`,
chef:`<path d="M7 20h10v-6H7v6z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path d="M7 14a4 4 0 01-1-7.8A3.5 3.5 0 0112 4.6a3.5 3.5 0 016 1.6A4 4 0 0117 14" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/>`,
cart:`<path d="M3 4h2l2.5 11h10L20 7H6" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/><circle cx="9" cy="19" r="1.6" stroke="currentColor" stroke-width="1.6"/><circle cx="17" cy="19" r="1.6" stroke="currentColor" stroke-width="1.6"/>`,
spray:`<path d="M8 8h7v12H8zM8 8V5h4v3" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path d="M17 5h.01M19 8h.01M17 11h.01" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>`,
shield:`<path d="M12 3l7 3v5.5c0 4.4-3 7.6-7 9.5-4-1.9-7-5.1-7-9.5V6l7-3z" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/>`,
chart:`<path d="M4 20V9M10 20V4M16 20v-7M22 20H2" stroke="currentColor" stroke-width="1.7" stroke-linecap="round"/>`,
case:`<path d="M3 8h18v11H3zM8 8V6a2 2 0 012-2h4a2 2 0 012 2v2" stroke="currentColor" stroke-width="1.6" stroke-linejoin="round"/><path d="M3 13h18" stroke="currentColor" stroke-width="1.6"/>`,
};
const ICON_TINT = {
box:'#0a2540', truck:'#1f5c8b', wrench:'#5a4a2e', chef:'#8b3a2e',
cart:'#2e5c3a', spray:'#3d5a7a', shield:'#4a3a5c', chart:'#2b3f6b', case:'#3a4550'
};
function profIcon(prof){
const p=(prof||'').toLowerCase().replace(/ё/g,'е');
if(/курьер|достав|комплект|склад|груз|клад|сборщ|упаков|приемщ|стропаль/.test(p)) return 'box';
if(/водител|шофер|экспедит|дальнобой|машинист|тракторист|экскават|кранов|погрузчик|логист|диспетчер/.test(p)) return 'truck';
if(/инженер|технолог|сварщ|электр|монтаж|наладч|слесар|механик|токар|фрезер|шлифов|констру|проектир|станк|аппаратч|сантехн|плотник|столяр|маляр|штукатур|плиточ|каменщ|кровель|отделоч|автослес|шиномонт|диагност|автомой|разнораб|подсобн|сборщик$/.test(p)) return 'wrench';
if(/повар|кондитер|пекар|официант|бармен|бариста|кухн|хостес|пицц|шеф|мойщик посуд/.test(p)) return 'chef';
if(/продав|кассир|мерчанд|торгов|консультант|товаровед/.test(p)) return 'cart';
if(/уборщ|клинер|клинин|горничн|дворник|мойщик/.test(p)) return 'spray';
if(/охран|сторож|контрол|вахтер/.test(p)) return 'shield';
if(/директор|руководител|начальник|управляющ|супервайзер|бригадир|мастер|прораб/.test(p)) return 'chart';
return 'case';
}
function avatarHTML(prof, small){
const k=profIcon(prof);
return `<span class="ava${small?' ava-sm':''}" style="--ic:${ICON_TINT[k]}">
<svg viewBox="0 0 24 24" fill="none">${ICONS[k]}</svg></span>`;
}
/* ===== генератор кандидатов ===== */
const PLACES = {
box:['складской комплекс','логистический центр','распределительный центр','Пятёрочка','Лента','служба доставки'],
truck:['транспортная компания','логистический центр','автопарк','служба доставки'],
wrench:['машиностроительный завод','производственный цех','монтажная организация','сервисный центр'],
chef:['сеть кофеен','ресторан','столовая при производстве','пекарня'],
cart:['Магнит','Пятёрочка','ВкусВилл','торговый центр','сеть магазинов'],
spray:['клининговая компания','бизнес-центр','торговый центр'],
shield:['охранное предприятие','торговый центр','промышленный объект'],
chart:['производственная компания','торговая сеть','дистрибьюторская компания','строительная компания'],
case:['торговая компания','сервисная компания','производственное предприятие'],
};
const INI_A=['А','Д','И','К','М','Н','П','Р','С','Т','Е','О'];
const INI_B=['Б','В','Г','Д','К','Л','М','Н','П','Р','С','Т','Ф','Ш'];
function genCands(n){
const base=parseInt(S.payFrom)||45000;
const top =parseInt(S.payTo) ||Math.round(base*1.35);
const kind=profIcon(S.prof);
const out=[];
const used=new Set();
for(let i=0;i<n;i++){
// соответствие: строго убывает, без повторов
let m = 97 - i*2 - ri(0,1);
while(used.has(m)) m--;
used.add(m);
const days=i<4?ri(0,2):ri(1,9);
out.push({
ini: INI_A[ri(0,INI_A.length-1)]+'. '+INI_B[ri(0,INI_B.length-1)]+'.',
age: ri(20,48),
city: S.city||'Москва',
prof: S.prof||'Специалист',
last: PLACES[kind][ri(0,PLACES[kind].length-1)],
years: ri(1,7),
want: Math.round(ri(Math.round(base*0.92), Math.round(top*1.04))/500)*500,
upd: days===0?'сегодня':days===1?'вчера':`${days} дн. назад`,
match: Math.max(68,m),
phone: '+7 9'+ri(10,99)+' '+ri(100,999)+'-'+ri(10,99)+'-'+ri(10,99)
});
}
return out;
}</script>
<script>/* ===== кастомный автокомплит ===== */
const PROF_LIST = ["Генеральный директор",
"Исполнительный директор",
"Коммерческий директор",
"Финансовый директор",
"Технический директор",
"Директор по производству",
"Директор по персоналу",
"Директор магазина",
"Руководитель отдела продаж",
"Руководитель проекта",
"Руководитель направления",
"Начальник производства",
"Начальник цеха",
"Начальник участка",
"Начальник смены",
"Начальник склада",
"Управляющий",
"Супервайзер",
"Мастер участка",
"Прораб",
"Бригадир",
"Инженер-конструктор",
"Инженер-технолог",
"Инженер ПТО",
"Инженер-проектировщик",
"Инженер-электрик",
"Инженер-механик",
"Инженер по охране труда",
"Инженер КИПиА",
"Главный инженер",
"Главный энергетик",
"Главный механик",
"Технолог",
"Конструктор",
"Проектировщик",
"Сметчик",
"Геодезист",
"Лаборант",
"Сварщик",
"Электрогазосварщик",
"Электромонтажник",
"Электромонтёр",
"Электрик",
"Слесарь",
"Слесарь-ремонтник",
"Слесарь-сантехник",
"Слесарь КИПиА",
"Токарь",
"Фрезеровщик",
"Шлифовщик",
"Оператор станков с ЧПУ",
"Наладчик оборудования",
"Механик",
"Монтажник",
"Монтажник вентиляции",
"Сборщик",
"Оператор линии",
"Оператор производства",
"Аппаратчик",
"Плотник",
"Столяр",
"Маляр",
"Штукатур",
"Плиточник",
"Каменщик",
"Кровельщик",
"Отделочник",
"Разнорабочий",
"Подсобный рабочий",
"Стропальщик",
"Крановщик",
"Машинист",
"Водитель",
"Водитель категории B",
"Водитель категории C",
"Водитель категории D",
"Водитель категории E",
"Водитель погрузчика",
"Водитель-экспедитор",
"Экскаваторщик",
"Тракторист",
"Экспедитор",
"Логист",
"Диспетчер",
"Курьер",
"Курьер на авто",
"Велокурьер",
"Пеший курьер",
"Комплектовщик",
"Кладовщик",
"Кладовщик-приёмщик",
"Грузчик",
"Сборщик заказов",
"Упаковщик",
"Оператор склада",
"Приёмщик товара",
"Товаровед",
"Продавец",
"Продавец-консультант",
"Продавец-кассир",
"Кассир",
"Мерчандайзер",
"Администратор магазина",
"Менеджер по продажам",
"Менеджер по закупкам",
"Менеджер по работе с клиентами",
"Торговый представитель",
"Оператор колл-центра",
"Специалист поддержки",
"Повар",
"Шеф-повар",
"Су-шеф",
"Повар-универсал",
"Пекарь",
"Кондитер",
"Пиццмейкер",
"Официант",
"Бармен",
"Бариста",
"Хостес",
"Администратор ресторана",
"Кухонный работник",
"Мойщик посуды",
"Уборщик",
"Уборщик производственных помещений",
"Клинер",
"Горничная",
"Дворник",
"Мойщик",
"Охранник",
"Охранник-контролёр",
"Сторож",
"Вахтёр",
"Контролёр",
"Бухгалтер",
"Главный бухгалтер",
"Бухгалтер по зарплате",
"Экономист",
"Финансовый аналитик",
"Кассир-операционист",
"Менеджер по персоналу",
"Рекрутер",
"Специалист по кадрам",
"Офис-менеджер",
"Секретарь",
"Делопроизводитель",
"Юрист",
"Юрисконсульт",
"Программист",
"Разработчик",
"Системный администратор",
"Специалист технической поддержки",
"Тестировщик",
"Аналитик",
"Дизайнер",
"Маркетолог",
"Копирайтер",
"SMM-менеджер",
"Врач",
"Медицинская сестра",
"Фельдшер",
"Фармацевт",
"Провизор",
"Санитар",
"Ветеринар",
"Воспитатель",
"Педагог",
"Учитель",
"Няня",
"Инструктор",
"Тренер",
"Швея",
"Закройщик",
"Портной",
"Парикмахер",
"Мастер маникюра",
"Косметолог",
"Массажист",
"Оператор АЗС",
"Автомойщик",
"Автослесарь",
"Автоэлектрик",
"Шиномонтажник",
"Диагност"];
const CITY_LIST = ["Москва",
"Санкт-Петербург",
"Новосибирск",
"Екатеринбург",
"Казань",
"Нижний Новгород",
"Челябинск",
"Красноярск",
"Самара",
"Уфа",
"Ростов-на-Дону",
"Краснодар",
"Омск",
"Воронеж",
"Пермь",
"Волгоград",
"Саратов",
"Тюмень",
"Тольятти",
"Барнаул",
"Ижевск",
"Ульяновск",
"Иркутск",
"Хабаровск",
"Махачкала",
"Ярославль",
"Владивосток",
"Томск",
"Оренбург",
"Кемерово",
"Новокузнецк",
"Рязань",
"Набережные Челны",
"Астрахань",
"Пенза",
"Липецк",
"Киров",
"Чебоксары",
"Балашиха",
"Калининград",
"Тула",
"Курск",
"Севастополь",
"Сочи",
"Ставрополь",
"Улан-Удэ",
"Тверь",
"Магнитогорск",
"Брянск",
"Иваново",
"Белгород",
"Сургут",
"Владимир",
"Нижний Тагил",
"Архангельск",
"Чита",
"Симферополь",
"Калуга",
"Смоленск",
"Волжский",
"Курган",
"Череповец",
"Орёл",
"Саранск",
"Якутск",
"Владикавказ",
"Подольск",
"Грозный",
"Мурманск",
"Тамбов",
"Петрозаводск",
"Стерлитамак",
"Кострома",
"Нижневартовск",
"Новороссийск",
"Йошкар-Ола",
"Химки",
"Таганрог",
"Комсомольск-на-Амуре",
"Сыктывкар",
"Нальчик",
"Шахты",
"Нижнекамск",
"Дзержинск",
"Орск",
"Братск",
"Ангарск",
"Энгельс",
"Благовещенск",
"Королёв",
"Великий Новгород",
"Старый Оскол",
"Мытищи",
"Псков",
"Люберцы",
"Бийск",
"Прокопьевск",
"Рыбинск",
"Балаково",
"Армавир",
"Северодвинск",
"Абакан",
"Норильск",
"Сызрань",
"Каменск-Уральский",
"Новочеркасск",
"Златоуст",
"Петропавловск-Камчатский",
"Волгодонск",
"Красногорск",
"Альметьевск",
"Керчь",
"Салават",
"Миасс",
"Копейск",
"Пятигорск",
"Одинцово",
"Хасавюрт",
"Рубцовск",
"Коломна",
"Березники",
"Майкоп",
"Ковров",
"Кисловодск",
"Нефтеюганск",
"Домодедово",
"Нефтекамск",
"Первоуральск",
"Серпухов",
"Новомосковск",
"Дербент",
"Черкесск",
"Орехово-Зуево",
"Невинномысск",
"Раменское",
"Димитровград",
"Октябрьский",
"Камышин",
"Долгопрудный",
"Жуковский",
"Реутов",
"Пушкино",
"Муром",
"Новочебоксарск",
"Северск",
"Кызыл",
"Ессентуки",
"Ноябрьск",
"Артём",
"Ачинск",
"Елец",
"Новый Уренгой",
"Евпатория",
"Арзамас",
"Электросталь",
"Обнинск",
"Каспийск",
"Междуреченск",
"Сарапул",
"Ленинск-Кузнецкий",
"Магадан",
"Глазов",
"Соликамск",
"Канск",
"Мичуринск",
"Тобольск",
"Кузнецк",
"Уссурийск",
"Бердск",
"Новотроицк",
"Зеленодольск",
"Серов",
"Элиста",
"Железногорск",
"Клин",
"Ханты-Мансийск",
"Ступино",
"Юрга",
"Кропоткин",
"Воткинск",
"Черногорск",
"Гатчина",
"Анапа",
"Азов",
"Белорецк",
"Заречный",
"Кинешма",
"Балашов",
"Чапаевск",
"Троицк",
"Лысьва",
"Ишим",
"Ржев",
"Выборг",
"Шадринск",
"Мелеуз",
"Салехард",
"Лабинск",
"Тихорецк",
"Батайск",
"Белово",
"Асбест",
"Ревда",
"Верхняя Пышма",
"Полевской",
"Краснотурьинск",
"Ирбит",
"Алапаевск",
"Красноуфимск",
"Богданович",
"Сухой Лог",
"Туапсе",
"Геленджик",
"Славянск-на-Кубани",
"Ейск",
"Крымск",
"Апшеронск",
"Курганинск",
"Тимашевск",
"Усть-Лабинск",
"Гулькевичи",
"Абинск",
"Белореченск",
"Каневская",
"Кущёвская",
"Динская",
"Павловская",
"Отрадная",
"Ленинградская",
"Щёлково",
"Дмитров",
"Егорьевск",
"Кашира",
"Лобня",
"Луховицы",
"Можайск",
"Наро-Фоминск",
"Ногинск",
"Павловский Посад",
"Сергиев Посад",
"Солнечногорск",
"Фрязино",
"Чехов",
"Шатура",
"Дубна",
"Видное",
"Ивантеевка",
"Котельники",
"Лыткарино",
"Дзержинский",
"Краснознаменск",
"Голицыно",
"Кубинка",
"Апрелевка",
"Волоколамск",
"Зарайск",
"Истра",
"Талдом",
"Шаховская",
"Лотошино",
"Серебряные Пруды",
"Озёры",
"Рошаль",
"Пересвет",
"Хотьково",
"Всеволожск",
"Кириши",
"Кингисепп",
"Тихвин",
"Сосновый Бор",
"Волхов",
"Луга",
"Тосно",
"Отрадное",
"Никольское",
"Сертолово",
"Коммунар",
"Кировск",
"Шлиссельбург",
"Приозерск",
"Подпорожье",
"Пикалёво",
"Бокситогорск",
"Сланцы",
"Колпино",
"Пушкин",
"Петергоф",
"Ломоносов",
"Кронштадт",
"Сестрорецк",
"Зеленогорск",
"Красное Село",
"Новоалтайск",
"Заринск",
"Камень-на-Оби",
"Славгород",
"Горно-Алтайск",
"Искитим",
"Куйбышев",
"Барабинск",
"Татарск",
"Тогучин",
"Черепаново",
"Карасук",
"Купино",
"Болотное",
"Каргат",
"Чулым",
"Обь",
"Кольцово",
"Топки",
"Тайга",
"Мариинск",
"Осинники",
"Киселёвск",
"Гурьевск",
"Салаир",
"Калтан",
"Мыски",
"Таштагол",
"Абаза",
"Саяногорск",
"Сорск",
"Шира",
"Копьёво",
"Дивногорск",
"Сосновоборск",
"Заозёрный",
"Уяр",
"Иланский",
"Назарово",
"Шарыпово",
"Минусинск",
"Курагино",
"Кодинск",
"Лесосибирск",
"Енисейск",
"Игарка",
"Дудинка",
"Усолье-Сибирское",
"Черемхово",
"Свирск",
"Тулун",
"Нижнеудинск",
"Зима",
"Саянск",
"Шелехов",
"Слюдянка",
"Байкальск",
"Железногорск-Илимский",
"Усть-Илимск",
"Бодайбо",
"Киренск",
"Гусиноозёрск",
"Северобайкальск",
"Закаменск",
"Краснокаменск",
"Борзя",
"Петровск-Забайкальский",
"Нерчинск",
"Шилка",
"Могоча",
"Балей",
"Находка",
"Арсеньев",
"Спасск-Дальний",
"Дальнегорск",
"Партизанск",
"Большой Камень",
"Фокино",
"Лесозаводск",
"Дальнереченск",
"Николаевск-на-Амуре",
"Амурск",
"Советская Гавань",
"Бикин",
"Вяземский",
"Свободный",
"Белогорск",
"Тында",
"Зея",
"Райчихинск",
"Шимановск",
"Завитинск",
"Сковородино",
"Елизово",
"Вилючинск",
"Усть-Камчатск",
"Оха",
"Корсаков",
"Холмск",
"Долинск",
"Невельск",
"Поронайск",
"Южно-Сахалинск",
"Анадырь",
"Певек",
"Билибино",
"Мирный",
"Нерюнгри",
"Алдан",
"Ленск",
"Удачный",
"Покровск",
"Вилюйск",
"Олёкминск",
"Верхоянск",
"Среднеколымск",
"Усть-Нера",
"Тикси"];
/* строим автокомплит поверх обычного input */
function ac(id, list, opts){
opts = opts || {};
const inp = document.getElementById(id);
if(!inp || inp.dataset.acReady) return;
inp.dataset.acReady = '1';
inp.setAttribute('autocomplete','off');
const wrap = document.createElement('div');
wrap.className = 'ac-wrap';
inp.parentNode.insertBefore(wrap, inp);
wrap.appendChild(inp);
const box = document.createElement('div');
box.className = 'ac-box';
wrap.appendChild(box);
let idx = -1, items = [];
const norm = s => s.toLowerCase().replace('ё','е').trim();
function build(q){
const n = norm(q);
let res;
if(!n){
res = list.slice(0, 40);
} else {
const starts = list.filter(v => norm(v).startsWith(n));
const inside = list.filter(v => !norm(v).startsWith(n) && norm(v).includes(n));
res = starts.concat(inside).slice(0, 40);
}
items = res;
idx = -1;
if(!res.length){ box.classList.remove('open'); box.innerHTML=''; return; }
box.innerHTML = res.map((v,i)=>{
const icon = opts.icons ? avatarHTML(v, true) : '';
let label = v;
if(n){
const p = norm(v).indexOf(n);
if(p >= 0) label = v.slice(0,p) + '<b>' + v.slice(p, p+n.length) + '</b>' + v.slice(p+n.length);
}
return `<div class="ac-item" data-i="${i}">${icon}<span>${label}</span></div>`;
}).join('');
box.classList.add('open');
box.querySelectorAll('.ac-item').forEach(el=>{
el.addEventListener('mousedown', e=>{ e.preventDefault(); pick(+el.dataset.i); });
el.addEventListener('mouseenter', ()=>{ idx = +el.dataset.i; hi(); });
});
}
function hi(){
box.querySelectorAll('.ac-item').forEach((el,i)=>el.classList.toggle('on', i===idx));
}
function pick(i){
if(items[i] === undefined) return;
inp.value = items[i];
close();
inp.dispatchEvent(new Event('change'));
}
function close(){ box.classList.remove('open'); idx = -1; }
inp.addEventListener('input', ()=>build(inp.value));
inp.addEventListener('focus', ()=>build(inp.value));
inp.addEventListener('blur', ()=>setTimeout(close, 120));
inp.addEventListener('keydown', e=>{
if(!box.classList.contains('open')) return;
if(e.key==='ArrowDown'){ e.preventDefault(); idx = Math.min(idx+1, items.length-1); hi(); }
else if(e.key==='ArrowUp'){ e.preventDefault(); idx = Math.max(idx-1, 0); hi(); }
else if(e.key==='Enter' && idx>=0){ e.preventDefault(); pick(idx); }
else if(e.key==='Escape'){ close(); }
});
}
function initAutocomplete(){
ac('f-prof', PROF_LIST);
ac('f-city', CITY_LIST);
ac('f-ind', AV.industry);
}</script>
<script>/* ============ воронка платформы ============ */
const STEPS = 6;
let step = 1, stepDir = 'fwd';
function topBar(right, withProg){ return `
<div class="flow-top"><div class="flow-top-in">
<button class="flow-back" onclick="go('landing')">← Штат</button>
${withProg ? `<div class="prog-track"><div class="prog-fill" id="pf"></div></div>` : ''}
<span class="micro" id="pt" style="margin-left:auto">${right||''}</span>
</div></div>`;
}
/* ---------- ФОРМА ---------- */
function form(){ return `
${topBar(`Шаг 1 из ${STEPS}`, true)}
<div class="form-stage">
<div class="step active" data-s="1">
<h2>Кто вам нужен</h2>
<p class="hint">Начнём с должности и сферы</p>
<div class="field">
<label class="fl">Должность</label>
<input type="text" id="f-prof" placeholder="Например, инженер-конструктор" autocomplete="off">
</div>
<div class="field">
<label class="fl">Сфера</label>
<input type="text" id="f-ind" placeholder="Например, строительство" autocomplete="off">
</div>
</div>
<div class="step" data-s="2">
<h2>Где искать</h2>
<p class="hint">Кандидаты будут из этого города</p>
<div class="field">
<label class="fl">Город или населённый пункт</label>
<input type="text" id="f-city" placeholder="Например, Казань" autocomplete="off">
<p class="f-hint">Можно вписать любой населённый пункт, даже если его нет в подсказках</p>
</div>
<div class="field">
<label class="fl">Адрес или район <span class="muted" style="font-weight:400">необязательно</span></label>
<input type="text" id="f-addr" placeholder="Чтобы подобрать людей рядом с местом работы">
</div>
</div>
<div class="step" data-s="3">
<h2>Сколько платите</h2>
<p class="hint">Главный фильтр: подберём тех, кому подходит ваша оплата</p>
<div class="field">
<label class="fl">Оплата</label>
<div class="row2">
<input type="number" id="f-from" placeholder="от" step="1000">
<input type="number" id="f-to" placeholder="до" step="1000">
</div>
</div>
<div class="field">
<label class="fl">Период</label>
<select id="f-period">${AV.payPeriod.map(v=>`<option>${v}</option>`).join('')}</select>
</div>
<div class="field">
<label class="fl">Периодичность выплат</label>
<select id="f-freq">${AV.payoutFreq.map(v=>`<option>${v}</option>`).join('')}</select>
</div>
<div class="field">
<label class="fl">Сумма указана</label>
<div class="chips" id="c-tax">
${AV.tax.map((v,i)=>`<div class="chip${i===0?' on':''}" data-v="${v}">${v}</div>`).join('')}
</div>
</div>
</div>
<div class="step" data-s="4">
<h2>Условия работы</h2>
<p class="hint">Чем точнее, тем меньше отказов на созвоне</p>
<div class="field">
<label class="fl">Тип занятости</label>
<div class="chips" id="c-empl">
${['Полная','Частичная','Подработка','Сменный график','Вахта']
.map(v=>`<div class="chip" data-v="${v}">${v}</div>`).join('')}
</div>
</div>
<div class="field">
<label class="fl">Форма оформления</label>
<select id="f-reg"><option>Трудовой договор</option><option>Договор ГПХ с самозанятым</option>
<option>Договор ГПХ с физлицом</option><option>Договор ГПХ с ИП</option></select>
</div>
<div class="field">
<div class="row2">
<div>
<label class="fl">Самозанятость</label>
<select id="f-self"><option>Не нужна</option><option>Нужна</option><option>Поможем оформить</option></select>
</div>
<div>
<label class="fl">Медкнижка</label>
<select id="f-med"><option>Не нужна</option><option>Нужна</option><option>Поможем оформить</option></select>
</div>
</div>
</div>
</div>
<div class="step" data-s="5">
<h2>Требования</h2>
<p class="hint">Только то, что связано с работой</p>
<div class="field">
<label class="fl">Опыт работы</label>
<select id="f-exp">${AV.experience.map(v=>`<option>${v}</option>`).join('')}</select>
</div>
<div class="field">
<label class="fl">Образование</label>
<select id="f-edu">${AV.education.map(v=>`<option>${v}</option>`).join('')}</select>
</div>
<div class="field">
<label class="fl">Дополнительные требования <span class="muted" style="font-weight:400">необязательно</span></label>
<textarea id="f-extra" placeholder="Например: допуск СРО, знание Компас-3D, права категории C"></textarea>
</div>
</div>
<div class="step" data-s="6">
<h2>Сколько человек</h2>
<p class="hint">Последний шаг</p>
<div class="field">
<label class="fl">Нужно сотрудников</label>
<input type="number" id="f-count" value="1" min="1" max="50">
</div>
<div class="field">
<label class="fl">Когда нужен человек</label>
<select id="f-urg"><option>Срочно</option><option>В течение недели</option>
<option>В течение месяца</option></select>
</div>
<div class="card-soft" style="margin-top:26px">
<p>За подборку платить не нужно. Стоимость доступа к контактам увидите
после того, как посмотрите, кого мы нашли.</p>
</div>
</div>
<div class="form-nav">
<button class="btn btn-line" id="b-back" onclick="prevStep()">Назад</button>
<button class="btn btn-dark" id="b-next" onclick="nextStep()">Далее</button>
</div>
</div>`;
}
function bindChips(){
document.querySelectorAll('#c-tax .chip').forEach(c=>c.onclick=()=>{
document.querySelectorAll('#c-tax .chip').forEach(x=>x.classList.remove('on'));
c.classList.add('on'); S.tax=c.dataset.v;
});
document.querySelectorAll('#c-empl .chip').forEach(c=>c.onclick=()=>{
c.classList.toggle('on');
S.empl=[...document.querySelectorAll('#c-empl .chip.on')].map(x=>x.dataset.v);
});
}
function paintStep(){
T.ev('form_start', null, true);
T.ev('form_step', {step: step});
T.vacancy(S, step);
document.querySelectorAll('.step').forEach(s=>{
s.classList.remove('active','back');
if(+s.dataset.s===step) s.classList.add(stepDir==='back'?'back':'active');
});
const cur=document.querySelector(`.step[data-s="${step}"]`);
if(cur && stepDir==='back'){ cur.classList.add('active'); }
document.getElementById('pf').style.width=(step/STEPS*100)+'%';
document.getElementById('pt').textContent=`Шаг ${step} из ${STEPS}`;
document.getElementById('b-back').style.visibility=step===1?'hidden':'visible';
document.getElementById('b-next').textContent=step===STEPS?'Найти кандидатов':'Далее';
initAutocomplete();
const f=cur&&cur.querySelector('input,select,textarea');
if(f&&window.innerWidth>720) setTimeout(()=>f.focus(),340);
window.scrollTo({top:0,behavior:'smooth'});
}
function grab(){
const g=id=>{const e=document.getElementById(id);return e?e.value:''};
S.prof=g('f-prof'); S.industry=g('f-ind'); S.city=g('f-city'); S.addr=g('f-addr');
S.payFrom=g('f-from'); S.payTo=g('f-to');
if(S.payFrom && S.payTo && +S.payFrom > +S.payTo){ const t=S.payFrom; S.payFrom=S.payTo; S.payTo=t; } S.period=g('f-period'); S.freq=g('f-freq');
S.reg=g('f-reg'); S.selfEmp=g('f-self'); S.medBook=g('f-med');
S.exp=g('f-exp'); S.edu=g('f-edu'); S.extra=g('f-extra');
S.count=g('f-count')||1; S.urgency=g('f-urg');
}
function nextStep(){
grab();
if(step===1 && !S.prof.trim()) return alert('Укажите должность');
if(step===2 && !S.city.trim()) return alert('Укажите город');
if(step===3 && !S.payFrom) return alert('Укажите размер оплаты');
if(step===STEPS){ T.ev('form_submit'); T.vacancy(S, 'submit'); return go('search'); }
stepDir='fwd'; step++; paintStep();
}
function prevStep(){ grab(); if(step>1){ stepDir='back'; step--; paintStep(); } }
/* ---------- ПОДБОР ---------- */
function search(){ return `
${topBar('Анализируем вакансию')}
<div class="search-stage">
<h2>Разбираем вашу вакансию</h2>
<div class="big-prog"><div class="big-fill" id="bf"></div></div>
<div class="status-list">
${['Требования','Город','Зарплата','Опыт','График']
.map((t,i)=>`<div class="status" data-i="${i}"><span class="tick">✓</span>${t}</div>`).join('')}
</div>
<p class="search-hint">Пара секунд</p>
</div>`;
}
function runSearch(){
const dur=2000, t0=Date.now();
document.querySelectorAll('.status').forEach((s,i)=>setTimeout(()=>s.classList.add('on'),180+i*340));
const tick=setInterval(()=>{
const p=Math.min(1,(Date.now()-t0)/dur);
const bf=document.getElementById('bf');
if(bf) bf.style.width=(p*100)+'%';
if(p>=1){ clearInterval(tick); T.ev('search_done'); setTimeout(()=>go('pay'),250); }
},60);
}
/* ---------- ОПЛАТА ---------- */
function pay(){
T.ev('payment_view');
const req = [];
if(S.prof) req.push(esc(S.prof));
if(S.city) req.push(esc(S.city));
if(S.exp && S.exp!=='Без опыта') req.push('опыт ' + esc(S.exp).toLowerCase());
if(S.payFrom) req.push('от ' + money(+S.payFrom));
return `
${topBar('Запуск подбора')}
<div class="pay-stage">
<div class="pay-head">
<h2>Готовы запустить поиск</h2>
<p>После оплаты мы начнём искать кандидатов по вашей вакансии</p>
</div>
<div class="vac-card">
<div class="vc-top">
<b>${esc(S.prof||'Вакансия')}</b>
<span class="vc-city">${esc(S.city||'')}</span>
</div>
<div class="vc-grid">
<div><span>Оплата</span><b>${S.payFrom?money(+S.payFrom):'не указана'}${S.payTo?' до '+money(+S.payTo):''}</b></div>
<div><span>График</span><b>${esc(S.freq||S.period||'по договорённости')}</b></div>
<div><span>Опыт</span><b>${esc(S.exp||'Без опыта')}</b></div>
<div><span>Нужно</span><b>${esc(S.count||'1')} чел.</b></div>
</div>
${req.length?`<div class="vc-req"><span class="vc-cap">Ключевые требования</span>
<div class="vc-tags">${req.map(r=>`<span>✓ ${r}</span>`).join('')}</div></div>`:''}
</div>
<div class="plan">
<span class="plan-cap">Что произойдёт дальше</span>
<div class="plan-step">
<b>01</b>
<div>
<h4>Разместим вакансию</h4>
<p>Avito, HH, SuperJob и другие доступные площадки.</p>
</div>
</div>
<div class="plan-step">
<b>02</b>
<div>
<h4>Соберём отклики</h4>
<p>Все отклики пройдут первичный AI-анализ по требованиям вашей вакансии.</p>
</div>
</div>
<div class="plan-step">
<b>03</b>
<div>
<h4>Свяжемся с подходящими</h4>
<p>Не просто передадим вам первое попавшееся резюме. Сначала сами напишем
потенциально подходящим кандидатам и уточним ключевые условия.</p>
</div>
</div>
<div class="plan-step">
<b>04</b>
<div>
<h4>Передадим вам лучших</h4>
<p>Когда кандидат подтвердит интерес и соответствие основным требованиям,
вы получите его резюме и сможете открыть контакт.</p>
</div>
</div>
</div>
<div class="launch-box">
<span class="lc-cap">Запуск подбора</span>
<div class="lc-price">490 ₽</div>
<p class="lb-when">Первые результаты в течение 24 часов при наличии откликов</p>
<button class="btn btn-dark btn-lg" id="payBtn" onclick="payClick()">Запустить поиск за 490 ₽ →</button>
<p class="lb-strong">Сначала проверяем кандидата. Потом предлагаем его вам.</p>
<p class="micro">Без подписки · без скрытых списаний</p>
<div class="pay-methods">
<span class="pm">Карта</span><span class="pm">СБП</span><span class="pm">Чек по 54-ФЗ</span>
</div>
</div>
<p class="pay-next">490 ₽ это запуск подбора, а не гарантия найма. Сколько будет
подходящих кандидатов, зависит от вашей вакансии, города и рынка.</p>
</div>`;
}
function payClick(){
T.ev('payment_click', {tariff: 'Запуск поиска', price: 490});
const b = document.getElementById('payBtn');
if(b){ b.textContent = 'Запускаем подбор…'; b.disabled = true; }
setTimeout(()=>go('done'), 620);
}
/* ---------- ФИНАЛ ---------- */
function done(){ return `
${topBar('')}
<div class="done-stage">
<div id="d-form">
<div class="done-icon">
<svg viewBox="0 0 24 24" fill="none"><path d="M5 12.5l4.5 4.5L19 7.5"
stroke="#fff" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<h2>Подбор запущен</h2>
<p>Ваша вакансия отправлена в работу. Мы размещаем её на доступных площадках,
собираем отклики и отбираем подходящих кандидатов.</p>
<div class="run-steps">
<div class="rs on"><i>✓</i><span>Вакансия подготовлена</span></div>
<div class="rs on"><i>✓</i><span>Размещение запущено</span></div>
<div class="rs now"><i>●</i><span>Собираем отклики</span></div>
<div class="rs"><i>○</i><span>Отбор кандидатов</span></div>
<div class="rs"><i>○</i><span>Отправка подборки</span></div>
</div>
<p class="micro" style="margin:16px 0 24px">Первые результаты ориентировочно в течение 24 часов</p>
<div class="done-form">
<h3 style="font-size:18px;margin-bottom:14px">Куда прислать результаты</h3>
<div class="chan" id="chan">
<button type="button" class="ch on" data-c="Telegram" onclick="pickChan(this)">Telegram</button>
<button type="button" class="ch" data-c="Max" onclick="pickChan(this)">Max</button>
</div>
<div class="field">
<label class="fl">Как к вам обращаться</label>
<input type="text" id="d-name" placeholder="Имя">
</div>
<div class="field" style="margin-bottom:0">
<label class="fl">Телефон для связи</label>
<input type="text" id="d-contact" placeholder="+7">
</div>
<label class="check">
<input type="checkbox" id="d-ok">
<span>Я даю <a href="/soglasie.html" target="_blank" class="link-blue">согласие на обработку персональных данных</a>
и принимаю условия <a href="/oferta.html" target="_blank" class="link-blue">оферты</a></span>
</label>
<button class="btn btn-dark" style="width:100%" onclick="saveLead()">Отправить результаты сюда</button>
</div>
<p class="micro" style="margin-top:18px">Деньги пока не списаны. Мы свяжемся с вами и подтвердим запуск</p>
</div>
<div class="thanks" id="d-thanks">
<div class="done-icon">
<svg viewBox="0 0 24 24" fill="none"><path d="M5 12.5l4.5 4.5L19 7.5"
stroke="#fff" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg>
</div>
<h2>Заявка сохранена</h2>
<p style="margin-bottom:30px">Напишем вам, как только откроем доступ.
Первый подбор по вашей вакансии сделаем за наш счёт.</p>
<button class="btn btn-line" onclick="go('landing')">На главную</button>
</div>
</div>`;
}
let chanPick = 'Telegram';
function pickChan(b){
chanPick = b.dataset.c;
document.querySelectorAll('.ch').forEach(x=>x.classList.toggle('on', x===b));
}
function saveLead(){
const n=document.getElementById('d-name').value.trim();
const c=document.getElementById('d-contact').value.trim();
if(!n||!c) return alert('Заполните имя и контакт');
if(!document.getElementById('d-ok').checked) return alert('Нужно согласие на обработку данных');
T.lead({name:n, contact:c, consent:true, tariff:'Запуск 490 ₽ · '+chanPick, vacancy:S});
T.ev('lead_submit');
document.getElementById('d-form').style.display='none';
document.getElementById('d-thanks').classList.add('show');
}</script>
<script>/* ============ экран результатов: главный оффер ============ */
const SKILLS = {
box:['Работа с ТСД','Знание WMS','Приёмка и отгрузка','Инвентаризация','Погрузчик'],
truck:['Права категории C','Тахограф','Путевые листы','Знание города','Погрузчик'],
wrench:['Чтение чертежей','Компас-3D','AutoCAD','Работа с измерительным инструментом','Допуск по электробезопасности'],
chef:['Санминимум','Работа на потоке','Заготовки','Меню и калькуляция','HACCP'],
cart:['Работа с кассой','1С Торговля','Выкладка товара','Работа с возвратами','Инвентаризация'],
spray:['Профессиональная химия','Поломоечная машина','Работа по регламенту','Высотные работы'],
shield:['Удостоверение охранника','Работа с системой видеонаблюдения','Досмотр','Пожарная безопасность'],
chart:['Управление командой','Планирование','Бюджетирование','1С','Отчётность','Работа с подрядчиками'],
case:['1С','Excel продвинутый','Работа с документами','Деловая переписка','CRM'],
};
const EDU = ['Среднее профессиональное','Высшее','Среднее профессиональное, курсы повышения квалификации','Высшее техническое'];
function jobHistory(kind, years){
const places = PLACES[kind];
const n = years > 4 ? 3 : years > 2 ? 2 : 1;
const out = [];
let y = years;
for(let i=0;i<n;i++){
const d = i===0 ? Math.max(1, Math.round(y*0.6)) : Math.max(1, Math.round(y*0.4/(n-1)));
out.push({ place: places[ri(0,places.length-1)], years: d, cur: i===0 });
y -= d;
if(y<=0) break;
}
return out;
}
function candDetail(c, i){
const kind = profIcon(c.prof);
const sk = SKILLS[kind] || SKILLS.case;
const skills = sk.slice(0, ri(3, Math.min(5, sk.length)));
const hist = jobHistory(kind, c.years);
return `
<div class="cd-detail" id="cd${i}">
<div class="cd-cols">
<div>
<div class="cd-h">Опыт работы</div>
${hist.map(j=>`
<div class="cd-job">
<div class="cd-job-t">${j.place}${j.cur?' <span class="cd-now">сейчас</span>':''}</div>
<div class="cd-job-s">${esc(c.prof)} · ${j.years} ${j.years===1?'год':j.years<5?'года':'лет'}</div>
</div>`).join('')}
<div class="cd-h" style="margin-top:18px">Образование</div>
<p class="cd-p">${EDU[ri(0,EDU.length-1)]}</p>
</div>
<div>
<div class="cd-h">Навыки</div>
<div class="cd-skills">${skills.map(s=>`<span>${s}</span>`).join('')}</div>
<div class="cd-h" style="margin-top:18px">Комментарий системы</div>
<p class="cd-p">${sysComment(c)}</p>
</div>
</div>
<div class="cd-locked">
<div class="cd-lrow">
<span class="cd-lk">ФИО</span>
<span class="cd-lv blurred">Смирнов Алексей Петрович</span>
</div>
<div class="cd-lrow">
<span class="cd-lk">Телефон</span>
<span class="cd-lv">${c.phone.slice(0,8)}<span class="blurred">${c.phone.slice(8)}</span></span>
</div>
<div class="cd-lrow">
<span class="cd-lk">Резюме целиком</span>
<span class="cd-lv blurred">PDF, 2 страницы</span>
</div>
<div class="cd-lbtns">
<button class="cd-lbtn" onclick="unlockClick()">Показать резюме</button>
<button class="cd-lbtn" onclick="unlockClick()">Позвонить</button>
<button class="cd-lbtn" onclick="unlockClick()">Написать</button>
</div>
<p class="cd-lnote">Откроется после оплаты</p>
</div>
</div>`;
}
function sysComment(c){
const kind = profIcon(c.prof);
const map = {
box:'Профиль совпадает по типу работы и графику. Опыт на складских операциях, знаком с приёмкой и отгрузкой. Стабильные периоды работы на предыдущих местах, без частой смены работодателей.',
truck:'Опыт коммерческих перевозок, знание маршрутов в городе. Категория прав соответствует вашим требованиям, есть опыт работы с документами на груз.',
wrench:'Технический профиль соответствует задаче. Работал на профильном оборудовании, читает чертежи. Есть опыт как в производстве, так и в обслуживании.',
chef:'Опыт работы на потоке и в заготовках. Санминимум оформлен, работал в графике, близком к вашему.',
cart:'Опыт прямой работы с покупателем и кассой. Знаком с товарным учётом и инвентаризацией.',
spray:'Опыт работы по регламенту на коммерческих объектах, знаком с профессиональной химией и техникой.',
shield:'Удостоверение действующее. Опыт на объектах с пропускным режимом и видеонаблюдением.',
chart:'Управленческий опыт на сопоставимом объёме. Вёл команду, отвечал за план и отчётность перед руководством.',
case:'Опыт в аналогичной функции, уверенно работает с учётными системами и документами.'
};
let t = map[kind] || map.case;
if(c.upd==='сегодня'||c.upd==='вчера') t += ' Резюме обновлено только что, скорее всего ответит быстро.';
return t;
}
function candCard(c, i){
const phone = c.phone.slice(0,8), hid = c.phone.slice(8);
return `
<div class="cand" data-c="${i}">
<div class="cand-top">
<div style="display:flex;gap:12px;align-items:center;min-width:0">
${avatarHTML(c.prof)}
<div style="min-width:0">
<h4>${esc(c.prof)}</h4>
<div class="meta">${c.age} лет, ${esc(c.city)}</div>
</div>
</div>
<div class="match">${c.match}<small>соответствие</small></div>
</div>
<div class="why-box">
<span class="why-h">Почему подходит</span>
${whyList(c).map(r=>`<div class="why-r"><i></i>${r}</div>`).join('')}
</div>
${candDetail(c, i)}
<div class="cand-foot">
<span class="fresh">Обновил резюме ${c.upd === 'сегодня' ? 'сегодня' : c.upd === 'вчера' ? 'вчера' : c.upd}</span>
<button class="cd-toggle" onclick="toggleCand(${i})" id="tg${i}">
Подробнее <svg viewBox="0 0 12 8"><path d="M1 1l5 5 5-5" stroke="currentColor" stroke-width="1.7" fill="none" stroke-linecap="round"/></svg>
</button>
</div>
</div>`;
}
function toggleCand(i){
const card = document.querySelector(`.cand[data-c="${i}"]`);
const btn = document.getElementById('tg'+i);
const open = card.classList.toggle('open');
btn.innerHTML = (open ? 'Свернуть' : 'Подробнее') +
' <svg viewBox="0 0 12 8"><path d="M1 1l5 5 5-5" stroke="currentColor" stroke-width="1.7" fill="none" stroke-linecap="round"/></svg>';
}
function whyList(c){
const w=[];
w.push(`Опыт ${c.years} ${c.years===1?'год':c.years<5?'года':'лет'} в «${c.last}»`);
const from=+S.payFrom||0, to=+S.payTo||0;
if(to && c.want<=to) w.push(`Ожидания ${money(c.want)}, в вашем диапазоне`);
else if(from && c.want<=from*1.1) w.push(`Ожидания ${money(c.want)}, близко к вашей ставке`);
else w.push(`Ожидания ${money(c.want)}`);
if(S.addr && S.addr.trim()) w.push(`Живёт в ${ri(2,9)} км от указанного адреса`);
else w.push(`Проживает в городе ${esc(S.city)}`);
w.push(c.upd==='сегодня'||c.upd==='вчера'
? 'Резюме обновлено только что, отвечает быстро'
: 'Резюме в актуальном состоянии');
return w;
}
/* ---- сводка по подборке ---- */
function summary(cs){
const avgY = Math.round(cs.reduce((s,c)=>s+c.years,0)/cs.length*10)/10;
const avgW = Math.round(cs.reduce((s,c)=>s+c.want,0)/cs.length/500)*500;
const ready = cs.filter(c=>c.upd==='сегодня'||c.upd==='вчера'||parseInt(c.upd)<=3).length;
const avgM = Math.round(cs.reduce((s,c)=>s+c.match,0)/cs.length);
return { avgY, avgW, ready, avgM };
}
function results(){
T.ev('results_view');
const n = ri(12,18);
const cs = genCands(n); window.__cands = cs;
const sm = summary(cs);
const scanned = 14 * n + ri(6, 40); // сколько откликов пришлось разобрать
const open = cs.slice(0,3), rest = cs.slice(3);
return `
${topBar('Подборка готова')}
<div class="res-stage">
<!-- 1. ЗАГОЛОВОК И ФАКТЫ -->
<div class="res-top">
<h2>Подборка готова</h2>
<p class="res-lead">Мы уже нашли подходящих кандидатов по вашей вакансии
и отобрали тех, кто ближе всего к требованиям.</p>
<div class="res-metrics">
<div><b>${n}</b><span>кандидатов отобрано</span></div>
<div><b>${scanned.toLocaleString('ru-RU')}</b><span>откликов разобрано</span></div>
<div><b>${sm.ready}</b><span>обновили резюме за 3 дня</span></div>
<div><b>${sm.avgM}%</b><span>среднее соответствие</span></div>
</div>
</div>
<div class="res-layout">
<div>
<!-- 2. КАРТОЧКИ -->
<div class="cand-grid">${open.map((c,i)=>candCard(c,i)).join('')}</div>
<div class="locked-zone">
<div class="cand-grid">${rest.slice(0,2).map((c,i)=>candCard(c,i+100)).join('')}</div>
<div class="unlock">
<h3>Ещё ${rest.length} кандидатов прошли проверку</h3>
<p>Каждый ответил в чате и подтвердил интерес. Открывайте по одному,
только тех, кто вам подходит</p>
<button class="btn btn-dark btn-lg" onclick="unlockClick()">Открыть контакт за 99 ₽</button>
</div>
</div>
<!-- 3. КАК НАШЛИ -->
<div class="res-block">
<h3>Как мы отобрали этих кандидатов</h3>
<p class="rb-lead">Все эти люди откликнулись на вашу вакансию. Мы разобрали
отклики и оставили тех, кто действительно подходит.</p>
<ul class="rb-list">
<li>Ваша вакансия размещена, отклики собраны в одном месте</li>
<li>Исключены дубликаты и повторные отклики одного человека</li>
<li>Отсеяны те, кто не проходит по обязательным требованиям</li>
<li>Проверена свежесть: когда человек последний раз был активен</li>
<li>Сопоставлены опыт, зарплатные ожидания и удалённость от места работы</li>
<li>Кандидаты выстроены по степени соответствия вашей вакансии</li>
</ul>
</div>
<!-- 4. ЧТО ВХОДИТ В ОПЛАТУ -->
<div class="res-block">
<h3>За что вы платите</h3>
<p class="rb-lead">За уже выполненную работу по поиску и отбору, а не за доступ к базе.</p>
<div class="rb-two">
<div>
<span class="rb-cap">Уже сделано за 490 ₽</span>
<ul class="rb-list">
<li>Вакансия размещена, отклики собраны</li>
<li>Отсеяны те, кто не подходит по требованиям</li>
<li>С кандидатами поговорили в чате</li>
<li>Остались те, кто подтвердил интерес</li>
</ul>
</div>
<div>
<span class="rb-cap">Откроется за 99 ₽ по кандидату</span>
<ul class="rb-list rb-next">
<li>Телефон кандидата</li>
<li>Полное резюме</li>
<li>Ответы кандидата из чата</li>
<li>Почему он подходит под вашу вакансию</li>
</ul>
</div>
</div>
</div>
<!-- 5. ДОВЕРИЕ -->
<div class="guar-strip">
<div><i></i><b>Подборка до оплаты</b><span>вы уже видите результат</span></div>
<div><i></i><b>Замена без доплаты</b><span>если кандидат не соответствует условиям</span></div>
<div><i></i><b>Без подписки</b><span>разовая оплата за эту вакансию</span></div>
</div>
<!-- 6. ЦЕНА И ДЕЙСТВИЕ -->
<div class="res-final">
<div>
<span class="rf-cap">Кандидат прошёл первичный отбор и подтвердил интерес к вакансии</span>
<b class="rf-price">99 ₽</b>
<span class="rf-note">Контакт, резюме и результаты чата. Открывайте только тех,
кто вам действительно интересен.</span>
</div>
<button class="btn btn-dark btn-lg" onclick="unlockClick()">Открыть контакт за 99 ₽</button>
</div>
</div>
<aside class="side">
<div class="card" style="padding:24px">
<h4>Ваша вакансия</h4>
<div class="srow"><span>Должность</span><span>${esc(S.prof)}</span></div>
<div class="srow"><span>Сфера</span><span>${esc(S.industry||'не указана')}</span></div>
<div class="srow"><span>Город</span><span>${esc(S.city)}</span></div>
<div class="srow"><span>Оплата</span><span>${S.payFrom?money(+S.payFrom):'не указана'}${S.payTo?' до '+money(+S.payTo):''}<br><span class="muted" style="font-weight:400">${esc(S.period||'')}</span></span></div>
<div class="srow"><span>Опыт</span><span>${esc(S.exp||'Без опыта')}</span></div>
<div class="srow"><span>Нужно</span><span>${esc(S.count)} чел.</span></div>
<button class="btn btn-line" style="width:100%;margin-top:18px"
onclick="stepDir='back';step=1;go('form')">Изменить требования</button>
</div>
<div class="side-note">
<b>Что дальше</b>
<p>После оплаты вы получаете телефоны и полные резюме. Звоните напрямую,
без посредников и согласований.</p>
</div>
</aside>
</div>
</div>
<div class="sticky-cta">
<div>
<b>${n} кандидатов найдено</b>
<span>99 ₽ за контакт</span>
</div>
<button class="btn btn-dark" onclick="unlockClick()">Открыть контакты</button>
</div>`;
}
function unlockClick(){
T.ev('unlock_click');
go('pay');
}
/* доскролл до размытой зоны считаем интересом */
window.addEventListener('scroll', function(){
const z = document.querySelector('.locked-zone');
if(!z) return;
const top = z.getBoundingClientRect().top;
if(top < window.innerHeight * 0.85) T.ev('results_deep', null, true);
}, {passive:true});
</script>
<script>/* ============ Штат: лендинг ============ */
const MATCH_REASONS = {
a:['Опыт 3 года на складском комплексе','Ожидания 68 000 ₽, в пределах вашего диапазона',
'Живёт в 4 км от адреса работы','Готов выйти на смену на этой неделе'],
b:['Опыт 5 лет в рознице и на складе','Ожидания 65 000 ₽, ниже верхней границы',
'Есть действующая медицинская книжка','Работал по сменному графику'],
c:['Опыт 1 год, обучаемость выше среднего','Ожидания 60 000 ₽, минимум по вакансии',
'Живёт в 2 км от адреса работы','Ищет работу с ежедневными выплатами']
};
function demoCard(c, dim){
return `
<div class="demo-card${dim?' dim':''}">
<div class="dc-top">
<div class="dc-id">
${avatarHTML(c.prof)}
<div>
<div class="dc-prof">${c.prof}</div>
<div class="dc-meta">${c.age} лет, ${c.city} · резюме обновлено ${c.upd}</div>
</div>
</div>
<div class="dc-match">${c.m}<span>%</span></div>
</div>
<div class="dc-why">
<span class="why-h">Почему подходит</span>
${c.why.map(r=>`<div class="why-r"><i></i>${r}</div>`).join('')}
</div>
<div class="dc-foot">
<span class="fresh">Обновил резюме ${c.upd}</span>
<span class="dc-lock">+7 917 <span class="blurred">384-21-06</span></span>
</div>
</div>`;
}
function srcCard(){
return `
<div class="demo-frame">
<div class="demo-bar">
<span class="demo-dots"><i></i><i></i><i></i></span>
<span class="demo-url">Автослесарь · Красноярск · от 70 000 ₽</span>
</div>
<div class="demo-body">
<div class="demo-head">
<div>
<span class="dh-n">Соответствие требованиям</span>
<span class="dh-s">Оценка по каждому кандидату</span>
</div>
<span class="dh-badge">94%</span>
</div>
${demoCard({ini:'Д. П.',prof:'Автослесарь',age:37,city:'Красноярск',upd:'сегодня',m:94,
why:['Опыт по грузовым 6 лет','Ожидания 72 000 ₽, в вашем диапазоне','Живёт в 15 минутах от адреса']})}
</div>
</div>`;
}
function heroDemo(){
const d=[
{ini:'А. К.',prof:'Комплектовщик',age:29,city:'Казань',upd:'сегодня',m:96,why:MATCH_REASONS.a},
{ini:'М. С.',prof:'Комплектовщик',age:34,city:'Казань',upd:'вчера',m:93,why:MATCH_REASONS.b}
];
return `
<div class="demo-frame">
<div class="demo-bar">
<span class="demo-dots"><i></i><i></i><i></i></span>
<span class="demo-url">Комплектовщик · Казань · от 60 000 до 75 000 ₽</span>
</div>
<div class="demo-body">
<div class="demo-head">
<div>
<span class="dh-n">14 подходящих кандидатов</span>
<span class="dh-s">Отобрано из 1 240 резюме за 8 секунд</span>
</div>
<span class="dh-badge">Готово</span>
</div>
${demoCard(d[0])}
${demoCard(d[1], true)}
</div>
</div>`;
}
function landing(){ return `
<nav>
<div class="nav-in">
<a href="#" class="logo" onclick="go('landing');return false"><img src="${PH.badger}" alt=""><span>Штат</span></a>
<div class="nav-links">
<a href="#source">Как находим</a>
<a href="#trust">Гарантии</a>
<a href="#who">Направления</a>
<a href="#faq">Вопросы</a>
</div>
<div class="nav-act">
<button class="btn btn-dark" onclick="ctaClick()">Получить подборку</button>
</div>
</div>
</nav>
<div class="hero">
<div class="wrap"><div class="hero-grid">
<div class="hero-text">
<span class="hero-over">Найм не должен становиться второй работой</span>
<h1>Найдём и проверим подходящих кандидатов за 24 часа</h1>
<p class="sub">Вы описываете вакансию, а Штат размещает её на доступных площадках,
собирает отклики, общается с кандидатами в чате и передаёт вам только тех,
кто подходит по требованиям и подтвердил интерес.</p>
<div class="hero-cta">
<button class="btn btn-dark btn-lg" onclick="ctaClick()">Запустить подбор →</button>
</div>
<p class="cta-note">490 ₽ за запуск · без подписки · без скрытых списаний</p>
<p class="cta-note" style="margin-top:6px">Результаты пришлём в Telegram или Max</p>
</div>
<div class="hero-demo">
<div class="hd-frame">
<div class="hd-vac">
<span class="hd-cap">Ваша вакансия</span>
<b>Водитель категории C</b>
<div class="hd-tags">
<span>Волгоград</span><span>80 до 100 тыс. ₽</span><span>опыт от 2 лет</span>
</div>
</div>
<div class="hd-pipe" id="hdPipe">
<div class="hp-row" data-i="0">
<span class="hp-ico">↗</span>
<span class="hp-txt">Вакансия размещена на площадках</span>
<span class="hp-val"></span>
</div>
<div class="hp-row" data-i="1">
<span class="hp-ico">↓</span>
<span class="hp-txt">Пришло откликов</span>
<span class="hp-val" id="hpIn">0</span>
</div>
<div class="hp-row" data-i="2">
<span class="hp-ico">✕</span>
<span class="hp-txt">Не подходят по требованиям</span>
<span class="hp-val muted" id="hpOut">0</span>
</div>
<div class="hp-row" data-i="3">
<span class="hp-ico">✓</span>
<span class="hp-txt">Соответствуют вакансии</span>
<span class="hp-val" id="hpFit">0</span>
</div>
<div class="hp-row" data-i="4">
<span class="hp-ico">💬</span>
<span class="hp-txt">Пишем в чате, уточняем условия</span>
<span class="hp-val" id="hpChat">0</span>
</div>
<div class="hp-row final" data-i="5">
<span class="hp-ico">★</span>
<span class="hp-txt">Подтвердили интерес, стоит звонить</span>
<span class="hp-val" id="hpTop">0</span>
</div>
</div>
<div class="hd-send" id="hdSend">
<span>Подборка отправлена в Telegram</span>
</div>
<span class="hd-demo-note">Пример работы сервиса. Число кандидатов зависит от вакансии и рынка</span>
</div>
</div>
</div></div>
</div>
<!-- КАК НАХОДИМ КАНДИДАТОВ -->
<section id="source" class="sec-tint">
<div class="wrap">
<div class="sec-head rv">
<span class="eyebrow">Механика</span>
<h2>Сначала чат, потом ваш звонок</h2>
<p>Мы не пересылаем вам отклики. Сначала сами общаемся с кандидатами
и оставляем только тех, кто действительно подходит.</p>
</div>
<div class="src-grid">
<div class="src-steps">
<div class="src-step rv">
<h3>Размещаем вакансию и собираем отклики</h3>
<p>Публикуем вашу вакансию на доступных площадках, включая Авито,
и собираем все отклики в одном месте.</p>
</div>
<div class="src-step rv">
<h3>Отсеиваем тех, кто не подходит</h3>
<p>Система сопоставляет каждый отклик с вашими требованиями по опыту,
зарплатным ожиданиям и городу. Те, кто не проходит по обязательным
условиям, дальше не идут.</p>
</div>
<div class="src-step rv">
<h3>Пишем кандидату и уточняем главное</h3>
<p>Актуален ли поиск работы, устраивает ли зарплата и график, есть ли
нужный опыт, когда готов выйти. В подборку попадают только те,
кто ответил и подтвердил интерес.</p>
</div>
<div class="src-step rv">
<h3>Присылаем короткий список</h3>
<p>В Telegram или Max приходят кандидаты с резюме, ответами из чата
и причиной, по которой человек подходит под вашу вакансию.</p>
</div>
</div>
<div class="rv">
<img class="ill" src="${PH.il_search}" alt="" loading="lazy">
<div class="src-legal">
Контакты передаются с согласия кандидатов на передачу работодателю
в целях трудоустройства, в соответствии с Федеральным законом №152-ФЗ.
</div>
</div>
</div>
</div>
</section>
<!-- КАК РАБОТАЕТ -->
<section id="how">
<div class="wrap">
<div class="sec-head">
<span class="eyebrow">Порядок работы</span>
<h2>Три шага до подходящих кандидатов</h2>
<p>Никаких аккаунтов на сторонних сервисах, расширений для браузера
и переключений между вкладками.</p>
</div>
<div class="steps">
<div class="step-row">
<div class="step-left">
<span class="step-n">Шаг 01</span>
<h3>Описываете вакансию</h3>
<p>Должность, город, размер и периодичность оплаты, форма оформления,
требования к опыту и образованию. Форма построена по стандарту,
принятому на рынке труда, поэтому заполнение занимает около пяти минут.</p>
<p class="note">Регистрация и загрузка документов не требуются.</p>
</div>
<div class="step-right">
<div class="ui-panel">
<div class="up-head">Новая вакансия</div>
<div class="up-body">
<div class="up-row"><span>Должность</span><b>Инженер-конструктор</b></div>
<div class="up-row"><span>Город</span><b>Казань</b></div>
<div class="up-row"><span>Оплата</span><b>от 120 000 до 160 000 ₽ в месяц</b></div>
<div class="up-row"><span>Опыт</span><b>Более 3 лет</b></div>
<div class="up-row"><span>Оформление</span><b>Трудовой договор</b></div>
<div class="up-row"><span>Нужно людей</span><b>2</b></div>
</div>
</div>
</div>
</div>
<div class="step-row">
<div class="step-left">
<span class="step-n">Шаг 02</span>
<h3>Система отбирает и объясняет выбор</h3>
<p>В подборку попадают соискатели, обновившие резюме в последние дни. По каждому кандидату видно, чем именно он
подходит: опыт, зарплатные ожидания, удалённость от места работы,
готовность выйти.</p>
<p class="note">Подборку вы видите до оплаты и без обязательств.</p>
</div>
<div class="step-right">
<div class="ui-panel">
<div class="up-head">Оценка соответствия</div>
<div class="up-body">
<div class="up-bar"><span>Профессиональный опыт</span><em>94%</em><i style="width:94%"></i></div>
<div class="up-bar"><span>Зарплатные ожидания</span><em>88%</em><i style="width:88%"></i></div>
<div class="up-bar"><span>Образование и навыки</span><em>81%</em><i style="width:81%"></i></div>
<div class="up-bar"><span>Удалённость от работы</span><em>76%</em><i style="width:76%"></i></div>
<div class="up-bar"><span>Активность поиска</span><em>97%</em><i style="width:97%"></i></div>
</div>
</div>
</div>
</div>
<div class="step-row">
<div class="step-left">
<span class="step-n">Шаг 03</span>
<h3>Открываете контакты и связываетесь</h3>
<p>После оплаты вы получаете телефоны и связываетесь с кандидатами напрямую,
без посредников и согласований. В течение срока тарифа система продолжает
присылать новых подходящих соискателей по этой же вакансии.</p>
<p class="note">Оплата разовая за вакансию. Подписка не оформляется.</p>
</div>
<div class="step-right">
<div class="ui-panel">
<div class="up-head">Контакты открыты</div>
<div class="up-body">
<div class="up-c">
${avatarHTML("комплектовщик", true)}
<div class="up-ci"><b>+7 917 384-21-06</b><span>Комплектовщик · 96% соответствие</span></div>
</div>
<div class="up-c">
${avatarHTML("комплектовщик", true)}
<div class="up-ci"><b>+7 987 122-45-70</b><span>Комплектовщик · 93% соответствие</span></div>
</div>
<div class="up-c">
${avatarHTML("комплектовщик", true)}
<div class="up-ci"><b>+7 903 566-18-32</b><span>Комплектовщик · 89% соответствие</span></div>
</div>
<div class="up-more">Ещё 11 контактов доступно</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- ДОВЕРИЕ -->
<section id="trust">
<div class="wrap">
<div class="sec-head rv">
<span class="eyebrow">Без риска</span>
<h2>Вы ничего не платите, пока не увидите подборку</h2>
<p>Сначала кандидаты, потом решение. Если подборка не устроит,
вы просто не открываете контакты.</p>
</div>
<img class="ill ill-sm rv" src="${PH.il_ok}" alt="" loading="lazy" style="margin-bottom:26px">
<div class="grt-grid">
<div class="grt rv">
<h3>Кандидаты прошли чат</h3>
<p>В подборку попадают только те, кто ответил и подтвердил,
что вакансия ему интересна.</p>
</div>
<div class="grt rv">
<h3>Замена кандидата</h3>
<p>Если контакт не соответствует требованиям из заявки, меняем
на другого без доплаты.</p>
</div>
<div class="grt rv">
<h3>Возврат 7 дней</h3>
<p>Если ни один кандидат не подошёл, возвращаем оплату в полном
объёме тем же способом.</p>
</div>
</div>
<div class="price-cta rv">
<button class="btn btn-dark btn-lg" onclick="ctaClick()">Получить подборку</button>
<p class="cta-note">Без регистрации · подборку видите до оплаты</p>
</div>
</div>
</section>
<!-- СРАВНЕНИЕ -->
<section id="compare" class="sec-tint">
<div class="wrap">
<div class="sec-head rv">
<span class="eyebrow">Отличие</span>
<h2>Площадки дают отклики. Штат превращает их в короткий список</h2>
</div>
<div class="cmp-grid">
<div class="cmp cmp-old rv">
<img class="ill ill-sm" src="${PH.il_point}" alt="" loading="lazy" style="margin-bottom:18px">
<h3>Работные площадки</h3>
<ul class="cmp-list">
<li>Размещаете вакансию сами</li>
<li>Разбираете каждый отклик</li>
<li>Пишете и звоните всем подряд</li>
<li>Половина не отвечает или уже нашла работу</li>
<li>Тратите вечера вместо работы</li>
</ul>
</div>
<div class="cmp cmp-new rv">
<h3>Сервис <span>Штат</span></h3>
<ul class="cmp-list">
<li>Описали вакансию и ждёте результат</li>
<li>Мы разместили и собрали отклики</li>
<li>Отсеяли неподходящих</li>
<li>Поговорили с кандидатами в чате</li>
<li>Прислали тех, кто подтвердил интерес</li>
</ul>
</div>
</div>
</div>
</section>
<!-- КОГО НАХОДИМ -->
<section id="who">
<div class="wrap">
<div class="sec-head">
<span class="eyebrow">Направления</span>
<h2>Массовый и специализированный подбор</h2>
<p>Работаем с производствами, логистическими операторами, розничными сетями
и малым бизнесом на территории Российской Федерации.</p>
</div>
<div class="cat-grid">
<div class="cat">
<div class="cat-ph"><img src="${PH.woman}" alt="Доставка и логистика"></div>
<h3>Доставка и логистика</h3>
<p>Курьеры, водители, комплектовщики, кладовщики, грузчики, операторы склада</p>
</div>
<div class="cat">
<div class="cat-ph"><img src="${PH.prod}" alt="Производство и техника"></div>
<h3>Производство и техника</h3>
<p>Инженеры, технологи, мастера участка, сварщики, электрики, монтажники, наладчики</p>
</div>
<div class="cat">
<div class="cat-ph"><img src="${PH.office}" alt="Сервис и клиентские подразделения"></div>
<h3>Сервис и клиентские отделы</h3>
<p>Операторы контакт-центра, администраторы, продавцы, кассиры, менеджеры по продажам</p>
</div>
</div>
<div class="tags">
${['Инженер-конструктор','Технолог','Мастер участка','Сварщик','Электромонтажник',
'Наладчик оборудования','Водитель категории C','Комплектовщик','Кладовщик',
'Менеджер по продажам','Администратор','Повар','Продавец-консультант','Курьер']
.map(p=>`<span class="tag">${p}</span>`).join('')}
</div>
</div>
</section>
<!-- FAQ -->
<section id="faq">
<div class="wrap" style="max-width:860px">
<div class="sec-head"><span class="eyebrow">Вопросы</span><h2>Частые вопросы</h2></div>
${[
['Откуда берутся кандидаты',
'Мы работаем с открытыми базами резюме и с собственной базой соискателей, которые самостоятельно оставили заявку на поиск работы и дали согласие на передачу контактов работодателям. В подборку попадают только те, кто находится в активном поиске: проверяем дату последнего обновления резюме и статус поиска работы.'],
['Работаете ли вы со специализированными позициями',
'Да. Помимо массового подбора закрываем позиции инженеров, технологов, мастеров участка и руководителей среднего звена. Методология подбора единая, различается глубина требований, указанных в заявке.'],
['Что если ни один кандидат не подойдёт',
'Если кандидат не соответствует условиям, указанным вами в заявке, мы заменим его на другого без доплаты. Если в течение семи дней мы не предоставили ни одного подходящего человека, вернём оплату полностью. Отказ кандидата от общения или от предложения о работе основанием для возврата не является, поскольку находится вне нашего контроля.'],
['Как быстро я получу кандидатов',
'Подборку вы видите сразу после заполнения заявки. Контакты открываются в момент оплаты. В течение срока, предусмотренного тарифом, система продолжает присылать новых подходящих кандидатов по этой же вакансии.'],
['Законна ли передача контактов соискателей',
'Да. Контакты передаются работодателю в целях трудоустройства соискателя при наличии согласия соискателя на такую передачу. Обработка персональных данных осуществляется в соответствии с Федеральным законом №152-ФЗ, политика обработки опубликована на сайте.'],
['Можно ли заказать несколько вакансий одновременно',
'Да. Каждая вакансия оформляется и оплачивается отдельно. Абонентская плата и минимальный объём заказа отсутствуют, поэтому вы можете вести как одну вакансию, так и десять параллельно.'],
['Работаете ли вы в моём городе',
'Сервис работает на территории Российской Федерации. Объём доступных кандидатов зависит от региона и профессии, поэтому подборка предоставляется до оплаты.'],
['Сколько это стоит',
'Три тарифа: Базовый 3 900 ₽ за 10 контактов, Стандарт 6 900 ₽ за 25 контактов, Премиум 9 900 ₽ за 50 контактов. Оплата разовая за конкретную вакансию, без подписки и процента с оклада. Подборку вы видите до оплаты.'],
['Что если ни один кандидат не подойдёт',
'Если контакт не соответствует требованиям из вашей заявки, мы заменяем кандидата без доплаты. Если в течение семи дней с момента оплаты ни один кандидат не подошёл, возвращаем оплату в полном объёме тем же способом, которым она была внесена.'],
['Откуда вы берёте кандидатов',
'Мы работаем с базами резюме по официальным договорам с площадками и обрабатываем отклики на размещённые вакансии. Контакты передаются с согласия кандидатов на передачу работодателю в целях трудоустройства, в соответствии с Федеральным законом №152-ФЗ.']
].map(([q,a])=>`
<div class="faq-item">
<button class="faq-q" onclick="this.parentElement.classList.toggle('open')">
<span>${q}</span><span class="chev">+</span>
</button>
<div class="faq-a"><p>${a}</p></div>
</div>`).join('')}
</div>
</section>
<section class="cta-sec">
<div class="wrap">
<div class="cta-box">
<h2>Сформируйте подборку по своей вакансии</h2>
<p>Заявка заполняется за пять минут. Подборка предоставляется без оплаты.
Оплата вносится только при открытии контактов.</p>
<button class="btn btn-light btn-lg" onclick="ctaClick()">Получить подборку</button>
</div>
</div>
</section>
<footer><div class="wrap">
<div class="foot-grid">
<div>
<div class="foot-logo"><img src="${PH.badger}" alt=""><span>Штат</span></div>
<p class="foot-desc">Подбор сотрудников для бизнеса.
Вакансии любой сложности, вся Россия.</p>
</div>
<div>
<div class="foot-h">Сервис</div>
<div class="foot-links">
<a href="#source">Как находим кандидатов</a>
<a href="#trust">Гарантии</a>
<a href="#how">Порядок работы</a>
<a href="#who">Кого находим</a>
</div>
</div>
<div>
<div class="foot-h">Документы</div>
<div class="foot-links">
<a href="/oferta.html">Публичная оферта</a>
<a href="/politika.html">Политика обработки персональных данных</a>
<a href="/soglasie.html">Согласие на обработку данных</a>
</div>
</div>
<div>
<div class="foot-h">Контакты</div>
<div class="foot-links"><a href="mailto:hello@shtats.ru">hello@shtats.ru</a></div>
<p class="foot-req">ИП Васильков Семён Сергеевич<br>ИНН 246310279675<br>ОГРНИП 324246800032602</p>
</div>
</div>
<div class="foot-bottom">
<p>Индивидуальный предприниматель Васильков Семён Сергеевич, ИНН 246310279675, ОГРНИП 324246800032602</p>
<p>Сервис оказывает услуги по подбору персонала и не является работодателем.</p>
</div>
</div></footer>
<div class="sticky-buy" id="stickyBuy">
<div><b>Сначала кандидаты</b><span>потом решаете, платить или нет</span></div>
<button class="btn btn-dark" onclick="ctaClick()">Получить подборку</button>
</div>`;
}
/* ---------- демонстрация процесса на первом экране ----------
Показываем механику: разместили, собрали отклики, отсеяли, отдали короткий список.
Один прогон: повтор превращает объяснение в мельтешение. */
let _hdTimers = [];
function initHeroDemo(){
_hdTimers.forEach(clearTimeout); _hdTimers = [];
const pipe = document.getElementById('hdPipe');
if(!pipe) return;
const rows = [...pipe.querySelectorAll('.hp-row')];
const send = document.getElementById('hdSend');
const IN = 47, OUT = 31, FIT = 16, CHAT = 16, TOP = 7;
const setNum = (id, to, ms)=>{
const el = document.getElementById(id);
if(!el) return;
const t0 = performance.now();
const tick = (now)=>{
const p = Math.min(1, (now - t0)/ms);
el.textContent = Math.round(to * (1 - Math.pow(1-p, 3)));
if(p < 1) requestAnimationFrame(tick);
};
requestAnimationFrame(tick);
};
const reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
if(reduce){
rows.forEach(r=>r.classList.add('on'));
['hpIn','hpOut','hpFit','hpChat','hpTop'].forEach((id,i)=>{
const el = document.getElementById(id);
if(el) el.textContent = [IN,OUT,FIT,CHAT,TOP][i];
});
if(send) send.classList.add('on');
return;
}
const T = (fn, ms)=>_hdTimers.push(setTimeout(fn, ms));
rows.forEach((r,i)=>T(()=>r.classList.add('on'), 400 + i*560));
T(()=>setNum('hpIn', IN, 650), 960);
T(()=>setNum('hpOut', OUT, 550), 1520);
T(()=>setNum('hpFit', FIT, 550), 2080);
T(()=>setNum('hpChat', CHAT, 550), 2640);
T(()=>setNum('hpTop', TOP, 650), 3200);
T(()=>{ if(send) send.classList.add('on'); }, 3800);
}
/* ---------- появление блоков при прокрутке ---------- */
/* Движение подсказывает структуру, а не развлекает: 16px, 320мс, один раз. */
let _revIO = null;
function initReveal(){
if(_revIO){ _revIO.disconnect(); _revIO = null; }
const els = document.querySelectorAll('.rv');
if(!els.length) return;
// если человек отключил анимации в системе, просто показываем
if(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches){
els.forEach(e=>e.classList.add('in'));
return;
}
if(!('IntersectionObserver' in window)){
els.forEach(e=>e.classList.add('in'));
return;
}
_revIO = new IntersectionObserver((entries)=>{
const shown = entries.filter(en=>en.isIntersecting);
shown.forEach((en,i)=>{
// лесенка не длиннее пяти элементов, иначе низ блока ждёт слишком долго
setTimeout(()=>en.target.classList.add('in'), Math.min(i,4)*60);
_revIO.unobserve(en.target);
});
}, {rootMargin:'0px 0px -8% 0px', threshold:.12});
els.forEach(e=>_revIO.observe(e));
}
/* ---------- липкая панель с ценой на мобильном ---------- */
let _stickyFn = null;
function initSticky(){
if(_stickyFn){ window.removeEventListener('scroll', _stickyFn); _stickyFn = null; }
const bar = document.getElementById('stickyBuy');
if(!bar) return;
_stickyFn = ()=>{
const b = document.getElementById('stickyBuy');
if(!b){ window.removeEventListener('scroll', _stickyFn); return; }
b.classList.toggle('on', window.scrollY > 520);
};
window.addEventListener('scroll', _stickyFn, {passive:true});
_stickyFn();
}
function ctaClick(){
T.ev('cta_click');
go('form');
}
</script>
<script>
const VIEWS = { landing, form, search, results, pay, done };
function go(name){
document.getElementById('app').innerHTML = VIEWS[name]();
window.scrollTo(0,0);
const paths = {landing:'/', form:'/vacancy', search:'/search', results:'/results', pay:'/payment', done:'/done'};
try { history.pushState({v:name}, '', paths[name] || '/'); } catch(e){}
if(name==='form'){ paintStep(); bindChips(); }
if(name==='search'){ runSearch(); }
if(name==='landing'){ initReveal(); initSticky(); initHeroDemo(); }
}
window.addEventListener('popstate', e=>{
const v = (e.state && e.state.v) || 'landing';
document.getElementById('app').innerHTML = VIEWS[v]();
if(v==='form'){ paintStep(); bindChips(); }
if(v==='search'){ runSearch(); }
if(v==='landing'){ initReveal(); initSticky(); initHeroDemo(); }
});
go('landing');
</script>
</body>
</html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Не найдено
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 0 оптимально.
Внешние ссылки
Не найдено
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице не найдено.
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ФЗ-152: ПД Готовность: 40%
РКН
ОК
Сайт не заблокирован
Контакты
https://shtats.ru/contacts/
Страница с контактами найдена
Политика ПД
https://shtats.ru/policy/
Страница политики обработки ПД найдена
Согласие
https://shtats.ru/personal/
Страница согласия на обработку ПД найдена
Чекбокс согласия
Не найден
Чекбокс согласия на обработку ПД в формах сайта не найден
Счётчики до согласия
ОК
Счётчики аналитики не собирают данные до согласия пользователя
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Сайт shtats.ru не совсем готов к продвижению (процент готовности лишь 38%). Для попадания в ТОПы поисковых систем нужно:
Исправьте ошибки в мета-тегах.
Исправьте ошибки оптимизации.
Исправьте ошибки индексации.
Поделитесь с друзьями: