/* ============ SHARED SHELL — Footer, Breadcrumbs, CTA band, reveal ============ */ const PAGES = { home: "Главная.html", uikit: "UI-Kit.html", service: "Услуга.html", article: "Статья.html", bank: "Банк.html", caseP: "Кейс.html", problem: "Проблема.html", faq: "FAQ.html", }; const FOOT = { "Проблемы": [["Блокировка счёта", PAGES.problem], ["Запрос документов", PAGES.problem], ["Высокий риск ЗСК", PAGES.problem], ["Чёрный список ЦБ", PAGES.problem], ["Все проблемы", PAGES.problem]], "Услуги": [["Разблокировка счёта", PAGES.service], ["Выход из перечня ЗСК", PAGES.service], ["Абонентский комплаенс", PAGES.service], ["Обжалование в МВК", PAGES.service], ["Все услуги", PAGES.service]], "Банки": [["Сбербанк", PAGES.bank], ["Т-Банк", PAGES.bank], ["Альфа-Банк", PAGES.bank], ["ВТБ", PAGES.bank], ["Все банки", PAGES.bank]], "Знания": [["115-ФЗ простыми словами", PAGES.article], ["Светофор ЗСК", PAGES.article], ["Кейсы клиентов", PAGES.caseP], ["Частые вопросы", PAGES.faq], ["UI-Kit", PAGES.uikit]], }; function Footer() { return ( ); } function Breadcrumbs({ items }) { return ( ); } /* Reusable mid-page CTA band */ function CtaBand({ title, text, cta = "Получить консультацию", href = "#consult" }) { return (

{title}

{text}

{cta}
); } /* scroll reveal hook — robust: reveals immediately what's near the viewport, observes the rest, and guarantees everything shows via a fallback timer */ function useReveal() { React.useEffect(() => { const els = Array.from(document.querySelectorAll(".reveal")); const showIfVisible = (el) => { const r = el.getBoundingClientRect(); if (r.top < window.innerHeight * 0.95) el.classList.add("in"); }; els.forEach(showIfVisible); const io = new IntersectionObserver((es) => { es.forEach(e => { if (e.isIntersecting) { e.target.classList.add("in"); io.unobserve(e.target); } }); }, { threshold: 0.08, rootMargin: "0px 0px -5% 0px" }); els.forEach(el => { if (!el.classList.contains("in")) io.observe(el); }); const fallback = setTimeout(() => els.forEach(el => el.classList.add("in")), 1200); return () => { io.disconnect(); clearTimeout(fallback); }; }, []); } Object.assign(window, { PAGES, Footer, Breadcrumbs, CtaBand, useReveal });