(function () { 'use strict'; var gateQuestion = { question: 'Кто вы?', options: [ { text: 'Психолог / коуч / консультант', track: 'expert', scores: { A: 0, B: 0, C: 0 } }, { text: 'Другой бизнес (стройка, салон, курсы…)', track: 'business', scores: { A: 0, B: 0, C: 0 } }, ], }; var expertQuestions = [ { question: 'Кто вы и что продаёте?', options: [ { text: 'Психолог / психотерапевт', scores: { A: 1, B: 1, C: 1 } }, { text: 'Психолог-сексолог / сексолог', scores: { A: 1, B: 1, C: 1 } }, { text: 'Коуч / наставник', scores: { A: 1, B: 1, C: 1 } }, { text: 'Эксперт обучения / школа / курсы', scores: { A: 0, B: 1, C: 2 } }, { text: 'Другая экспертная услуга', scores: { A: 1, B: 1, C: 1 } }, ], }, { question: 'Как сейчас у вас с клиентами?', options: [ { text: 'Случайно, "то густо, то пусто"', scores: { A: 3, B: 1, C: 0 } }, { text: 'Есть, но нестабильно (1–5 заявок/неделя)', scores: { A: 1, B: 3, C: 1 } }, { text: 'Стабильно, но мало (хочу больше)', scores: { A: 0, B: 2, C: 3 } }, { text: 'Есть поток, но дорого/не окупается', scores: { A: 0, B: 1, C: 4 } }, ], }, { question: 'Какой доход хотите в месяц (в горизонте 3–6 месяцев)?', options: [ { text: '50–100k (нужна стабильность)', scores: { A: 4, B: 1, C: 0 } }, { text: '100–200k (уверенность)', scores: { A: 2, B: 3, C: 1 } }, { text: '200–400k (система)', scores: { A: 1, B: 2, C: 3 } }, { text: '400–700k (масштаб)', scores: { A: 0, B: 1, C: 4 } }, { text: '700k+ (управляемый рост)', scores: { A: 0, B: 0, C: 5 } }, ], }, { question: 'Что с продуктом и средним чеком?', options: [ { text: 'Только разовые консультации/услуги, пакетов нет', scores: { A: 4, B: 1, C: 0 } }, { text: 'Пакеты есть, но продаются тяжело', scores: { A: 1, B: 4, C: 1 } }, { text: 'Есть линейка (вход/пакет/сопровождение), но "не докручена"', scores: { A: 0, B: 3, C: 3 } }, { text: 'Есть понятная линейка и высокий чек, но упёрся(лась) в потолок', scores: { A: 0, B: 1, C: 5 } }, ], }, { question: 'Реклама/продвижение: что уже пробовали?', options: [ { text: 'Ничего — страшно/не знаю с чего начать', scores: { A: 4, B: 1, C: 0 } }, { text: 'Контент/соцсети — но без системы', scores: { A: 2, B: 3, C: 1 } }, { text: 'Пробовал(а) рекламу сам(а) — непонятно, почему не работает', scores: { A: 1, B: 4, C: 2 } }, { text: 'Были подрядчики/агентства — результат неясен', scores: { A: 0, B: 3, C: 4 } }, { text: 'Реклама есть, но хочу масштаб/прогноз', scores: { A: 0, B: 1, C: 5 } }, ], }, { question: 'Где вы чувствуете "главный затык" сейчас?', options: [ { text: '"Я не понимаю, что именно продавать и кому"', scores: { A: 5, B: 1, C: 0 } }, { text: '"У меня мало заявок, я устал(а) от нестабильности"', scores: { A: 2, B: 5, C: 1 } }, { text: '"Заявки есть, но плохо покупают/сливаются"', scores: { A: 1, B: 4, C: 3 } }, { text: '"Поток есть, но нет роста/упёрся(лась) в потолок"', scores: { A: 0, B: 1, C: 5 } }, ], }, { question: 'Сколько готовы вложить в продвижение в ближайшие 30 дней (если будет понятный план)?', options: [ { text: '0–10k', scores: { A: 4, B: 1, C: 0 } }, { text: '10–30k', scores: { A: 2, B: 3, C: 1 } }, { text: '30–70k', scores: { A: 1, B: 2, C: 4 } }, { text: '70k+', scores: { A: 0, B: 1, C: 5 } }, { text: 'Не знаю — хочу понять расчёт под мои цифры', scores: { A: 1, B: 3, C: 3 } }, ], }, ]; var businessQuestions = [ { question: 'Какой у вас бизнес?', options: [ { text: 'Стройка / ремонт / подряд', scores: { A: 1, B: 1, C: 1 } }, { text: 'Косметология / салон / клиника', scores: { A: 1, B: 1, C: 1 } }, { text: 'Онлайн-обучение / курсы / школа', scores: { A: 0, B: 1, C: 2 } }, { text: 'Другая услуга или товар, который ищут в интернете', scores: { A: 1, B: 1, C: 1 } }, ], }, { question: 'Как сейчас с заявками?', options: [ { text: 'Случайно: то густо, то пусто', scores: { A: 3, B: 1, C: 0 } }, { text: 'Есть, но нестабильно', scores: { A: 1, B: 3, C: 1 } }, { text: 'Стабильно, но хочу больше', scores: { A: 0, B: 2, C: 3 } }, { text: 'Поток есть, но дорого или не окупается', scores: { A: 0, B: 1, C: 4 } }, ], }, { question: 'Какой оборот или доход хотите в горизонте 3–6 месяцев?', options: [ { text: '50–100k (нужна стабильность)', scores: { A: 4, B: 1, C: 0 } }, { text: '100–200k', scores: { A: 2, B: 3, C: 1 } }, { text: '200–400k', scores: { A: 1, B: 2, C: 3 } }, { text: '400–700k', scores: { A: 0, B: 1, C: 4 } }, { text: '700k+', scores: { A: 0, B: 0, C: 5 } }, ], }, { question: 'Как устроен продукт?', options: [ { text: 'Разовые услуги, пакетов нет', scores: { A: 4, B: 1, C: 0 } }, { text: 'Пакеты есть, но продаются тяжело', scores: { A: 1, B: 4, C: 1 } }, { text: 'Есть линейка, но она «не докручена»', scores: { A: 0, B: 3, C: 3 } }, { text: 'Понятная линейка и высокий чек, упёрлись в потолок', scores: { A: 0, B: 1, C: 5 } }, ], }, { question: 'Реклама и продвижение: что уже пробовали?', options: [ { text: 'Ничего — не знаю, с чего начать', scores: { A: 4, B: 1, C: 0 } }, { text: 'Соцсети и контент без системы', scores: { A: 2, B: 3, C: 1 } }, { text: 'Реклама сами — непонятно, почему не работает', scores: { A: 1, B: 4, C: 2 } }, { text: 'Были подрядчики — результат неясен', scores: { A: 0, B: 3, C: 4 } }, { text: 'Реклама есть, нужен масштаб и прогноз', scores: { A: 0, B: 1, C: 5 } }, ], }, { question: 'Где главный затык сейчас?', options: [ { text: 'Не понимаю, что именно продавать и кому', scores: { A: 5, B: 1, C: 0 } }, { text: 'Мало заявок, устали от нестабильности', scores: { A: 2, B: 5, C: 1 } }, { text: 'Заявки есть, но плохо покупают', scores: { A: 1, B: 4, C: 3 } }, { text: 'Поток есть, но нет роста', scores: { A: 0, B: 1, C: 5 } }, ], }, { question: 'Сколько готовы вложить в продвижение в ближайшие 30 дней, если будет понятный план?', options: [ { text: '0–10k', scores: { A: 4, B: 1, C: 0 } }, { text: '10–30k', scores: { A: 2, B: 3, C: 1 } }, { text: '30–70k', scores: { A: 1, B: 2, C: 4 } }, { text: '70k+', scores: { A: 0, B: 1, C: 5 } }, { text: 'Не знаю — хочу расчёт под свои цифры', scores: { A: 1, B: 3, C: 3 } }, ], }, ]; var expertResults = { A: { title: 'Вы на этапе «Старт»', text: 'Сейчас важнее всего — чтобы было понятно, что вы предлагаете и кому. Один простой формат работы и один пакет. Потом уже привлекать людей.', steps: [ 'определить один главный формат работы и один пакет услуг', 'понять, кому вы помогаете и с какими запросами к вам приходят', 'выбрать один способ, через который к вам будут приходить клиенты', ], cta: 'Напишите в мессенджер: «Хочу на разбор» и удобное время — на встрече покажу, с чего логично начать и где первые точки роста.', }, B: { title: 'Вы на этапе «Стабильность»', text: 'У вас уже есть услуги и пакеты, но клиенты приходят неровно. Нужна простая система: от первого знакомства до записи на консультацию.', steps: [ 'чётко сформулировать, что вы даёте и зачем к вам идти именно сейчас', 'выстроить простой путь: человек узнал о вас → пришёл на встречу → записался', 'сделать так, чтобы заявки приходили регулярно, а не «то густо, то пусто»', ], cta: 'Напишите: «Хочу на разбор» и когда удобно — на встрече разберём, на каком шаге отваливаются люди и что подкрутить.', }, C: { title: 'Вы на этапе «Рост»', text: 'У вас уже есть клиенты и стабильность. Сейчас важно понять, сколько людей нужно привлечь под ваши цели и как лучше работать с теми, кто уже с вами.', steps: [ 'посчитать, сколько новых обращений нужно, чтобы выйти на желаемый доход', 'привлекать больше людей так, чтобы вложения окупались', 'развивать пакеты и сопровождение, чтобы один клиент приносил больше', ], cta: 'Напишите: «Хочу на разбор» и удобные слоты по времени — на встрече соберём план роста: вложения, ожидания и опоры под масштаб.', }, }; var businessResults = { A: { title: 'Вы на этапе «Старт»', text: 'Сейчас важнее всего — чтобы было понятно, какую услугу вы продаёте и кому. Один формат и один пакет. Потом уже привлекать заявки из поиска.', steps: [ 'определить одну главную услугу и один пакет', 'понять, какие запросы люди вводят в Яндексе перед покупкой', 'выбрать один канал, через который будут приходить заявки', ], cta: 'Напишите в мессенджер: «Хочу на разбор» — покажу, с чего начать и где первые точки роста в поиске.', }, B: { title: 'Вы на этапе «Стабильность»', text: 'Услуги уже есть, но заявки приходят неровно. Нужна система: человек нашёл вас в Яндексе → прочитал → написал.', steps: [ 'чётко сформулировать оффер и почему идти к вам', 'выстроить путь: запрос в поиске → статья → заявка', 'сделать так, чтобы заявки шли регулярно, а не «то густо, то пусто»', ], cta: 'Напишите: «Хочу на разбор» — разберём, на каком шаге отваливаются люди и где ниша теряет заявки в поиске.', }, C: { title: 'Вы на этапе «Рост»', text: 'Поток уже есть. Сейчас важно понять, сколько заявок нужно под цели и как масштабировать контент в поиске.', steps: [ 'посчитать, сколько новых обращений нужно под желаемый оборот', 'привлекать больше людей так, чтобы вложения окупались', 'закрывать горячие запросы ниши статьями, а не только рекламой', ], cta: 'Напишите: «Хочу на разбор» — соберём план роста: вложения, ожидания и опоры под масштаб.', }, }; function detectNicheSlug() { if (window.SPRUT_QUIZ_NICHE) return window.SPRUT_QUIZ_NICHE; var cfg = document.getElementById('sprut-biz-quiz-config'); if (cfg) { try { var parsed = JSON.parse(cfg.textContent || '{}'); if (parsed.niche) return parsed.niche; } catch (err) {} } var art = document.querySelector('article.sprut-biz-niche'); if (!art) return ''; var m = (art.className || '').match(/sprut-biz-(stroitelstvo|kosmetologiya|onlayn-obuchenie)\b/); return m ? m[1] : ''; } var nicheProfiles = { stroitelstvo: { intro: 'Для стройки и ремонта: поймите, на каком вы этапе и подходит ли вам СПРУТ.', questions: [ { question: 'Кто вы в стройке и ремонте?', options: [ { text: 'Подрядчик / бригада (ремонт квартир)', scores: { A: 1, B: 1, C: 1 } }, { text: 'Строительная компания (дома, коттеджи)', scores: { A: 0, B: 1, C: 2 } }, { text: 'Отделочные работы / дизайн + ремонт', scores: { A: 1, B: 1, C: 1 } }, { text: 'Другое в стройке', scores: { A: 1, B: 1, C: 1 } }, ], }, businessQuestions[1], businessQuestions[2], { question: 'Как устроены услуги и средний чек?', options: [ { text: 'Только разовые объекты, пакетов нет', scores: { A: 4, B: 1, C: 0 } }, { text: 'Пакеты «под ключ» есть, но продаются тяжело', scores: { A: 1, B: 4, C: 1 } }, { text: 'Есть линейка услуг, но «не докручена»', scores: { A: 0, B: 3, C: 3 } }, { text: 'Понятная линейка и высокий чек, упёрлись в потолок', scores: { A: 0, B: 1, C: 5 } }, ], }, { question: 'Откуда сейчас приходят заявки?', options: [ { text: 'Сарафан и знакомые — нестабильно', scores: { A: 3, B: 2, C: 0 } }, { text: 'Авито / агрегаторы — дорого или мало', scores: { A: 1, B: 4, C: 2 } }, { text: 'Реклама — непонятно, окупается ли', scores: { A: 0, B: 3, C: 4 } }, { text: 'Поток есть, нужен масштаб из поиска', scores: { A: 0, B: 1, C: 5 } }, ], }, businessQuestions[5], businessQuestions[6], ], }, kosmetologiya: { intro: 'Для косметологии: поймите, на каком вы этапе и подходит ли вам СПРУТ.', questions: [ { question: 'Кто вы в косметологии?', options: [ { text: 'Салон / студия красоты', scores: { A: 1, B: 1, C: 1 } }, { text: 'Клиника / кабинет врача-косметолога', scores: { A: 0, B: 1, C: 2 } }, { text: 'Частный мастер', scores: { A: 2, B: 1, C: 0 } }, { text: 'Сеть салонов', scores: { A: 0, B: 1, C: 3 } }, ], }, businessQuestions[1], businessQuestions[2], { question: 'Как устроены услуги и средний чек?', options: [ { text: 'Разовые процедуры, абонементов нет', scores: { A: 4, B: 1, C: 0 } }, { text: 'Абонементы есть, но записываются тяжело', scores: { A: 1, B: 4, C: 1 } }, { text: 'Есть линейка процедур, но «не докручена»', scores: { A: 0, B: 3, C: 3 } }, { text: 'Понятная линейка, упёрлись в потолок записи', scores: { A: 0, B: 1, C: 5 } }, ], }, { question: 'Откуда сейчас приходят клиенты?', options: [ { text: 'Instagram / соцсети — нестабильно', scores: { A: 2, B: 3, C: 1 } }, { text: 'Сарафан — мало и неровно', scores: { A: 3, B: 2, C: 0 } }, { text: 'Реклама — дорого или мало записей', scores: { A: 0, B: 3, C: 4 } }, { text: 'Поток есть, нужна система из поиска', scores: { A: 0, B: 1, C: 5 } }, ], }, businessQuestions[5], businessQuestions[6], ], }, 'onlayn-obuchenie': { intro: 'Для онлайн-обучения: поймите, на каком вы этапе и подходит ли вам СПРУТ.', questions: [ { question: 'Кто вы в онлайн-обучении?', options: [ { text: 'Автор онлайн-курса', scores: { A: 1, B: 1, C: 2 } }, { text: 'Онлайн-школа / академия', scores: { A: 0, B: 1, C: 3 } }, { text: 'Наставник с курсами и программами', scores: { A: 1, B: 2, C: 1 } }, { text: 'EdTech-проект / несколько продуктов', scores: { A: 0, B: 2, C: 4 } }, ], }, businessQuestions[1], businessQuestions[2], { question: 'Как устроена продуктовая линейка?', options: [ { text: 'Один курс или мини-продукт', scores: { A: 4, B: 1, C: 0 } }, { text: 'Линейка есть, но продаётся тяжело', scores: { A: 1, B: 4, C: 1 } }, { text: 'Есть вход/основной/PRO, но «не докручено»', scores: { A: 0, B: 3, C: 3 } }, { text: 'Понятная линейка, упёрлись в потолок', scores: { A: 0, B: 1, C: 5 } }, ], }, { question: 'Откуда сейчас приходят ученики?', options: [ { text: 'Блог / соцсети — нестабильно', scores: { A: 2, B: 3, C: 1 } }, { text: 'Запуски и вебинары — выгорание', scores: { A: 1, B: 4, C: 2 } }, { text: 'Реклама — дорого или мало продаж', scores: { A: 0, B: 3, C: 4 } }, { text: 'Поток есть, нужна органика из поиска', scores: { A: 0, B: 1, C: 5 } }, ], }, businessQuestions[5], businessQuestions[6], ], }, }; var questions = expertQuestions; var results = expertResults; function esc(s) { if (!s) return ''; var d = document.createElement('div'); d.textContent = s; return d.innerHTML; } function createQuizController(root) { if (!root) return null; var currentQuestionIndex = 0; var scores = { A: 0, B: 0, C: 0 }; var selectedOption = null; var quizTrack = 'expert'; var inGate = true; var questions = expertQuestions; var results = expertResults; var nicheSlug = detectNicheSlug(); var nicheProfile = nicheSlug && nicheProfiles[nicheSlug] ? nicheProfiles[nicheSlug] : null; function applyNicheProfile() { if (!nicheProfile) return; quizTrack = 'business'; inGate = false; questions = nicheProfile.questions; results = businessResults; } function patchIntroForNiche() { if (!nicheProfile || !nicheProfile.intro) return; var introP = el('.sq-intro-screen p'); if (introP) introP.textContent = nicheProfile.intro; var howRow = root.querySelector('.sq-how-row p'); if (howRow) howRow.textContent = 'Отвечаете на короткие вопросы о вашем бизнесе и целях.'; } applyNicheProfile(); function el(sel) { return root.querySelector(sel); } function introScreen() { return el('#intro-screen, .sq-intro-screen'); } function quizScreen() { return el('#quiz-screen, .sq-quiz-screen'); } function loadingScreen() { return el('#loading-screen, .sq-loading-screen'); } function resultScreen() { return el('#result-screen, .sq-result-screen'); } function updateProgress() { var fill = el('#progress-fill, .sq-progress-fill'); if (!fill) return; if (inGate) { fill.style.width = '6%'; return; } var pct = (currentQuestionIndex / questions.length) * 100; fill.style.width = pct + '%'; } function showQuestion(index) { currentQuestionIndex = index; var q = inGate ? gateQuestion : questions[index]; var container = el('#question-container, .sq-question-container'); if (!container) return; var opts = q.options .map(function (opt, i) { return ( '' ); }) .join(''); var total = inGate ? 1 + Math.max(expertQuestions.length, businessQuestions.length) : questions.length + 1; var shown = inGate ? 1 : index + 2; container.innerHTML = '
Вопрос ' + shown + ' из ' + total + '
' + q.question + '
' + opts + '
'; updateProgress(); selectedOption = null; updateNextButton(); } function updateNextButton() { var nextBtn = el('#next-btn, .sq-next-btn'); var hint = el('.sq-next-hint'); if (!nextBtn) return; if (selectedOption === null) { nextBtn.disabled = true; nextBtn.classList.add('is-waiting'); nextBtn.classList.remove('is-ready'); if (hint) hint.textContent = '↑ Нажмите на один из вариантов выше'; } else { nextBtn.disabled = false; nextBtn.classList.remove('is-waiting'); nextBtn.classList.add('is-ready'); if (hint) hint.textContent = 'Ответ выбран — нажмите «Далее»'; } } function selectOption(optionIndex) { var options = root.querySelectorAll('#question-container .option, .sq-question-container .option'); options.forEach(function (o) { o.classList.remove('selected'); }); if (options[optionIndex]) { options[optionIndex].classList.add('selected'); } selectedOption = optionIndex; updateNextButton(); } function resetToIntro() { scores = { A: 0, B: 0, C: 0 }; currentQuestionIndex = 0; selectedOption = null; var intro = introScreen(); var quiz = quizScreen(); var loading = loadingScreen(); var result = resultScreen(); if (intro) { intro.classList.add('active'); intro.style.display = ''; } if (quiz) { quiz.classList.remove('active'); quiz.style.display = 'none'; } if (loading) { loading.classList.remove('active'); loading.style.display = 'none'; } if (result) { result.classList.remove('active'); result.style.display = 'none'; } updateProgress(); patchIntroForNiche(); } function startQuiz() { scores = { A: 0, B: 0, C: 0 }; currentQuestionIndex = 0; applyNicheProfile(); if (!nicheProfile) { inGate = true; quizTrack = 'expert'; questions = expertQuestions; results = expertResults; } var intro = introScreen(); var quiz = quizScreen(); if (intro) { intro.classList.remove('active'); intro.style.display = 'none'; } if (quiz) { quiz.style.display = 'block'; quiz.classList.add('active'); } fireMetrikaGoal('01_test_page_view'); if (nicheProfile) fireMetrikaGoal('biz_quiz_' + nicheSlug + '_start'); showQuestion(0); } function runLoadingSequence() { var progressBar = el('#analysis-progress, .sq-analysis-progress'); var analysisText = el('#analysis-text, .sq-analysis-text'); var matchText = quizTrack === 'business' ? 'Подбираю под ваш бизнес...' : 'Подбираю под вашу практику...'; var steps = [ { progress: 22, text: 'Смотрю ваши ответы...', delay: 280 }, { progress: 48, text: matchText, delay: 560 }, { progress: 72, text: 'Готовлю рекомендации...', delay: 840 }, { progress: 92, text: 'Почти готово...', delay: 1120 }, { progress: 100, text: 'Готово', delay: 1400 }, ]; if (progressBar) progressBar.style.width = '0%'; var t = 0; steps.forEach(function (step) { t += step.delay; setTimeout(function () { if (progressBar) progressBar.style.width = step.progress + '%'; if (analysisText) analysisText.textContent = step.text; }, t); }); setTimeout(showResult, t + 450); } function nextQuestion() { if (selectedOption === null) return; if (inGate) { var chosen = gateQuestion.options[selectedOption]; quizTrack = chosen.track || 'expert'; if (quizTrack === 'business') { questions = businessQuestions; results = businessResults; fireMetrikaGoal('biz_quiz_business_branch'); } else { questions = expertQuestions; results = expertResults; fireMetrikaGoal('biz_quiz_expert_branch'); } inGate = false; selectedOption = null; showQuestion(0); return; } var currentQuestion = questions[currentQuestionIndex]; var sel = currentQuestion.options[selectedOption].scores; scores.A += sel.A; scores.B += sel.B; scores.C += sel.C; currentQuestionIndex++; if (currentQuestionIndex < questions.length) { showQuestion(currentQuestionIndex); } else { var quiz = quizScreen(); var loading = loadingScreen(); if (quiz) { quiz.classList.remove('active'); quiz.style.display = 'none'; } if (loading) { loading.style.display = 'block'; loading.classList.add('active'); } runLoadingSequence(); } } function fireMetrikaGoal(name) { try { if (typeof ym === 'function') ym(108703490, 'reachGoal', name); } catch (e) {} } function showResult() { var loading = loadingScreen(); var result = resultScreen(); if (loading) { loading.style.display = 'none'; loading.classList.remove('active'); } if (result) { result.style.display = 'block'; result.classList.add('active'); } calculateResult(); fireMetrikaGoal('02_test_page_result_block'); fireMetrikaGoal('rsya_quiz_result'); if (quizTrack === 'business') fireMetrikaGoal('biz_quiz_result'); } function calculateResult() { var total = scores.A + scores.B + scores.C; var branch = 'A'; var maxScore = Math.max(scores.A, scores.B, scores.C); if (scores.C === maxScore) branch = 'C'; else if (scores.B === maxScore) branch = 'B'; var probability = ''; var probabilityColor = ''; if (total >= 22) { probability = quizTrack === 'business' ? 'Отлично: СПРУТ хорошо подходит под ваш бизнес.' : 'Отлично: СПРУТ хорошо подходит под вашу практику.'; probabilityColor = '#5d7a5d'; } else if (total >= 16) { probability = 'Хороший результат: СПРУТ вам подойдёт — немного подстроим под вас.'; probabilityColor = '#5d7a5d'; } else { probability = 'СПРУТ вам тоже подойдёт — на встрече расскажу, с чего начать.'; probabilityColor = '#b45309'; } var result = results[branch]; var resultContent = el('#result-content, .sq-result-content'); if (!resultContent) return; var stepsHtml = result.steps .map(function (step, index) { return ( '
' + '
' + (index + 1) + '
' + '
' + esc(step) + '
' ); }) .join(''); resultContent.innerHTML = '
' + '
ВАШ РЕЗУЛЬТАТ
' + '
' + esc(probability) + '
' + '
' + '
' + '
' + esc(result.title) + '
' + '
' + esc(result.text) + '
' + '
' + '
Ваш план: что сделать по шагам
' + '
' + stepsHtml + '
' + '

' + esc(result.cta) + '

' + '
' + '
' + 'Хотите разобрать ситуацию глубже — напишите в мессенджер. Я отвечу лично (это не бот): коротко и бесплатно посмотрю ваши ответы и скажу, есть ли смысл двигаться дальше и как СПРУТ может лечь на ' + (quizTrack === 'business' ? 'ваш бизнес' : 'вашу практику') + '.' + '
' + '
После переписки договоримся о времени — встретимся онлайн, один на один.
' + '
' + 'На встрече наглядно покажу точки роста и где теряются заявки, внимание или деньги, и что можно сделать именно в вашей ситуации.' + '
'; } function handleMessengerClick(btn) { if (!btn) return; if (btn.classList.contains('sprut-msgr-wa')) bookSessionWhatsApp(); else if (btn.classList.contains('sprut-msgr-max')) bookSessionMax(); else if (btn.classList.contains('sprut-msgr-tg')) bookSessionTelegram(); } function bookSessionWhatsApp() { var text = encodeURIComponent( 'Здравствуйте! Хочу на разбор после теста на сайте СПРУТ.\n\nУдобное время: первая/вторая половина дня, будни или выходные — укажите своё.' ); window.open('https://wa.me/79525845351?text=' + text, '_blank'); } function bookSessionMax() { window.open('https://max.ru/u/f9LHodD0cOJQokuMcHif4Kc0eINswz3jMdSyxXIXtQOV8mEu_vw2V648UTU', '_blank'); } function bookSessionTelegram() { window.open('https://telegram.me/Ekaterina_sprut', '_blank'); } function bindQuizScreenInput() { var quiz = quizScreen(); if (!quiz || quiz.dataset.sqInputBound === '1') return; quiz.dataset.sqInputBound = '1'; function handleInput(e) { var option = e.target.closest('.option'); if (option) { e.preventDefault(); e.stopPropagation(); var idx = parseInt(option.getAttribute('data-option-index'), 10); if (!isNaN(idx)) selectOption(idx); return; } var next = e.target.closest('.sq-next-btn, #next-btn'); if (next && !next.disabled) { e.preventDefault(); e.stopPropagation(); nextQuestion(); } } quiz.addEventListener('click', handleInput, true); quiz.addEventListener( 'touchend', function (e) { if (e.cancelable) e.preventDefault(); handleInput(e); }, { capture: true, passive: false } ); } function init() { if (root.dataset.sqInit === '1') return; root.dataset.sqInit = '1'; bindQuizScreenInput(); var quiz = quizScreen(); var loading = loadingScreen(); var result = resultScreen(); if (quiz) { quiz.style.display = 'none'; quiz.classList.remove('active'); } if (loading) { loading.style.display = 'none'; loading.classList.remove('active'); } if (result) { result.style.display = 'none'; result.classList.remove('active'); } var startBtn = el('#sprut-quiz-start, .sq-start-btn'); if (startBtn && !startBtn.dataset.sqBound) { startBtn.dataset.sqBound = '1'; startBtn.addEventListener('click', startQuiz); } function bindResultInput() { var result = resultScreen(); if (!result || result.dataset.sqResultBound === '1') return; result.dataset.sqResultBound = '1'; function handleResultClick(e) { var btn = e.target.closest('.sprut-msgr-wa, .sprut-msgr-max, .sprut-msgr-tg'); if (!btn) return; e.preventDefault(); e.stopPropagation(); handleMessengerClick(btn); } result.addEventListener('click', handleResultClick, true); result.addEventListener( 'touchend', function (e) { if (e.cancelable) e.preventDefault(); handleResultClick(e); }, { capture: true, passive: false } ); } bindResultInput(); var mobileMenuToggle = root.querySelector('#mobile-menu-toggle'); var navLinks = root.querySelector('#nav-links'); if (mobileMenuToggle && navLinks) { mobileMenuToggle.addEventListener('click', function () { navLinks.classList.toggle('active'); mobileMenuToggle.classList.toggle('active'); }); navLinks.addEventListener('click', function (e) { if (e.target.tagName === 'A') { navLinks.classList.remove('active'); mobileMenuToggle.classList.remove('active'); } }); } resetToIntro(); } return { init: init, startQuiz: startQuiz, resetToIntro: resetToIntro, selectOption: selectOption, nextQuestion: nextQuestion, handleMessengerClick: handleMessengerClick, }; } var popupController = null; var pageController = null; function syncQuizApi() { window.SprutQuizApi = { pick: function (idx) { if (popupController && popupController.selectOption) popupController.selectOption(idx); }, next: function () { if (popupController && popupController.nextQuestion) popupController.nextQuestion(); }, start: function () { if (popupController && popupController.startQuiz) popupController.startQuiz(); }, }; } function handleModalQuizInput(e) { var modal = document.getElementById('sprut-quiz-popup-modal'); if (!modal || !modal.classList.contains('is-open')) return; var option = e.target.closest('.option'); if (option && modal.contains(option)) { e.preventDefault(); e.stopPropagation(); var idx = parseInt(option.getAttribute('data-option-index'), 10); if (!isNaN(idx) && window.SprutQuizApi) window.SprutQuizApi.pick(idx); return; } var next = e.target.closest('.sq-next-btn, #next-btn'); if (next && modal.contains(next) && !next.disabled && window.SprutQuizApi) { e.preventDefault(); e.stopPropagation(); window.SprutQuizApi.next(); return; } var msgrBtn = e.target.closest('.sprut-msgr-wa, .sprut-msgr-max, .sprut-msgr-tg'); if (msgrBtn && modal.contains(msgrBtn)) { e.preventDefault(); e.stopPropagation(); var ctrl = popupController || pageController; if (ctrl && ctrl.handleMessengerClick) ctrl.handleMessengerClick(msgrBtn); } } function ensureModalQuizClicks() { if (window.__sprutQuizClicksBound) return; var modal = document.getElementById('sprut-quiz-popup-modal'); if (!modal) return; window.__sprutQuizClicksBound = true; modal.addEventListener('click', handleModalQuizInput, true); modal.addEventListener( 'touchend', function (e) { if (e.cancelable) e.preventDefault(); handleModalQuizInput(e); }, { capture: true, passive: false } ); } function boot() { ensureModalQuizClicks(); var popupRoot = document.getElementById('sprut-quiz-popup-root'); if (popupRoot) { popupController = createQuizController(popupRoot); if (popupController) popupController.init(); } var pageRoot = document.getElementById('sprut-quiz'); if (pageRoot && !pageRoot.closest('#sprut-quiz-popup-modal')) { pageController = createQuizController(pageRoot); if (pageController) pageController.init(); } syncQuizApi(); } function applyPopupAction(autoStart, wasOpen) { if (!popupController) return false; if (!wasOpen) { if (autoStart) popupController.startQuiz(); else popupController.resetToIntro(); } else if (autoStart) { var modalEl = document.getElementById('sprut-quiz-popup-modal'); var quizEl = modalEl && modalEl.querySelector('.sq-quiz-screen'); var onQuiz = quizEl && quizEl.style.display !== 'none' && quizEl.classList.contains('active'); if (!onQuiz) popupController.startQuiz(); } return true; } window.openSprutQuizPopup = function (autoStart) { var modal = document.getElementById('sprut-quiz-popup-modal'); if (!modal) return false; var wasOpen = modal.classList.contains('is-open'); modal.classList.add('is-open'); modal.setAttribute('aria-hidden', 'false'); document.body.classList.add('sprut-quiz-popup-open'); if (!popupController) boot(); if (!applyPopupAction(autoStart, wasOpen) && autoStart) { var n = 0; var timer = setInterval(function () { if (!popupController) boot(); if (popupController || ++n > 80) { clearInterval(timer); if (popupController) applyPopupAction(true, wasOpen); } }, 50); } return true; }; window.closeSprutQuizPopup = function () { var modal = document.getElementById('sprut-quiz-popup-modal'); if (!modal) return; modal.classList.remove('is-open'); document.body.classList.remove('sprut-quiz-popup-open'); if (popupController) popupController.resetToIntro(); }; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', boot); } else { boot(); } })();