<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Ритуальный агент — версия 3 (фикс 160px + карта)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
/* ===== VMK Skin (navy + gold, строгая типографика) ===== */
:root{
--ink:#19242d; --ink-2:#22303c; --gold:#c3a56b; --gold-2:#b79357;
--bg:#f6f8fb; --panel:#ffffff; --muted:#5f6a73; --line:#dde3ea;
--radius:14px; --shadow:0 10px 28px rgba(7,18,30,.06);
}
.agent-page.v3{scroll-behavior:smooth}
.agent-page.vmk-skin{
font-family: system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
color:var(--ink);
background:var(--panel);
padding:40px 16px 64px;
}
.agent-page *{box-sizing:border-box;}
* {outline-offset:2px}
@media (prefers-reduced-motion: reduce){
*{scroll-behavior:auto; transition:none !important}
}
/* HERO */
.hero{
max-width:1180px; margin:0 auto 40px;
display:grid; gap:24px;
grid-template-columns:minmax(0,2fr) minmax(280px,1fr);
align-items:start;
}
.badge{
display:inline-flex; align-items:center; gap:8px;
padding:6px 14px; border-radius:999px;
background:#f2f4f7; color:var(--ink);
border:1px solid var(--line); font-size:13px;
}
.hero h1{
margin:10px 0 8px; font-size:28px; line-height:1.3; font-weight:800; color:var(--ink-2);
}
.hero-sub{ margin:0 0 12px; color:var(--muted); font-size:15px; }
.hero-bullets{ margin:0 0 16px; padding:0; list-style:none; color:#2b3440; font-size:14px; }
.hero-bullets li{ margin:4px 0; }
.btn{
display:inline-flex; align-items:center; justify-content:center;
padding:10px 18px; border-radius:999px; border:1px solid transparent;
text-decoration:none; font-weight:800; font-size:13px; cursor:pointer;
transition:all .2s ease; white-space:normal; text-align:center;
}
.btn-primary{ background:var(--ink); color:#fff; }
.btn-primary:hover{ background:#131b22; box-shadow:var(--shadow); }
.btn-wa{ background:#f5faf6; color:#135c2f; border-color:#cfe6d8; }
.btn-wa:hover{ box-shadow:var(--shadow); }
.btn.lg{ padding:12px 22px; font-size:14px; }
.hero-cta{ display:flex; flex-wrap:wrap; gap:10px; margin:6px 0 8px; align-items:center;}
.hero-num{ font-size:12px; color:var(--muted); }
.hero-note{ font-size:12px; color:var(--muted); }
.hero-side{ display:flex; flex-direction:column; gap:12px; }
.trust-card{
background:var(--bg); border:1px solid var(--line); border-left:3px solid var(--gold);
padding:14px; border-radius:var(--radius); box-shadow:var(--shadow); font-size:13px;
}
.trust-card h3{ margin:0 0 8px; font-size:15px; color:var(--ink-2); }
.trust-card ul{ margin:0; padding-left:16px; }
.contact-mini{ font-size:12px; color:var(--muted); padding:10px 12px; border:1px dashed var(--line); border-radius:12px; background:#fbfcfe; }
/* NOW STEPS */
.now-wrap{max-width:1180px;margin:0 auto 24px;padding:14px;border:1px solid var(--line);
border-left:4px solid var(--gold);border-radius:14px;background:var(--bg);}
.now-wrap h2{margin:0 0 8px;color:var(--ink-2);font-size:20px}
.now-wrap ol{margin:0;padding-left:18px;color:#3a4653;font-size:14px}
.now-wrap .mini-cta{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}
/* PROOF slider — EXACT 160px media like original grid */
.proof-wrap{max-width:1180px;margin:0 auto 30px;}
.proof-wrap h2{font-size:20px;margin:0 0 6px;color:var(--ink-2)}
.proof-wrap .sub{margin:0 0 12px;color:var(--muted);font-size:13px}
.slider{position:relative;border:1px solid var(--line);border-radius:12px;background:#fbfcfe;overflow:hidden}
.slider .track{display:flex;will-change:transform;transition:transform .35s ease}
.slider .frame{min-width:100%;margin:0;display:flex;flex-direction:column}
.slider .ph{height:160px;display:flex;align-items:center;justify-content:center;background:#e9eef4;color:#5e6b77;font-weight:700}
.slider figcaption{padding:10px;color:#3a4653;font-size:13px}
.snav{position:absolute;top:50%;transform:translateY(-50%);background:#ffffffcc;border:1px solid var(--line);border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:22px;color:#2c3a47;cursor:pointer}
.snav.prev{left:10px}.snav.next{right:10px}
.dots{position:absolute;left:0;right:0;bottom:8px;display:flex;gap:6px;justify-content:center}
.dots button{width:8px;height:8px;border-radius:50%;border:1px solid var(--line);background:#fff;opacity:.7;cursor:pointer}
.dots button.active{background:var(--gold);opacity:1}
.mini-cta{display:flex;gap:10px;margin-top:10px;flex-wrap:wrap}
/* PAINS */
.pains{ max-width:1180px; margin:0 auto 34px; }
.pains h2{ font-size:22px; margin:0 0 12px; color:var(--ink-2); }
.pains-grid{ display:grid; gap:12px; grid-template-columns:repeat(4,minmax(0,1fr)); }
.pains .card{ background:var(--panel); border:1px solid var(--line); border-top:3px solid var(--gold);
padding:12px; border-radius:12px; box-shadow:0 6px 18px rgba(0,0,0,.03); }
.pains .card h3{ margin:2px 0 6px; font-size:14px; }
.pains .card p{ margin:0; color:var(--muted); font-size:13px; }
/* ANTIFRAUD */
.af-wrap{max-width:1180px;margin:0 auto 30px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff7ea}
.af-wrap h2{margin:0 0 8px;color:#6b521f;font-size:20px}
.checklist{margin:0 0 8px;padding-left:18px;color:#574a2e}
.tip{font-size:13px;color:#6b521f}
/* SCENARIOS */
.scn-wrap{max-width:1180px;margin:0 auto 32px;}
.scn-wrap h2{font-size:20px;margin:0 0 12px;color:var(--ink-2);}
.scn-grid{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr));}
.scn{background:#fbfcfe;border:1px solid var(--line);border-radius:12px;padding:12px;}
.scn h3{margin:2px 0 6px;font-size:14px;color:#2b3440;}
.scn p{margin:0;color:#5f6a73;font-size:13px;}
/* STEPS */
.steps{ max-width:1180px; margin:0 auto 34px; }
.steps h2{ font-size:20px; margin:0 0 12px; color:var(--ink-2); }
.steps-grid{ display:grid; gap:10px; grid-template-columns:repeat(5,minmax(0,1fr)); }
.step{ background:var(--bg); border:1px solid var(--line); border-radius:12px; padding:12px;
box-shadow:0 4px 12px rgba(0,0,0,.03); font-size:12px; }
.step span{ display:inline-flex; width:20px; height:20px; align-items:center; justify-content:center;
border-radius:50%; background:var(--ink); color:#fff; font-size:11px; font-weight:800; }
.step h3{ margin:6px 0 4px; font-size:13px; color:#2b3440; }
.step p{ margin:0; color:#5f6a73; }
/* INCLUDED */
.included{ max-width:1180px; margin:0 auto 34px; }
.included h2{ font-size:20px; margin:0 0 12px; color:#2b3440; }
.included-grid{ display:grid; gap:20px; grid-template-columns:repeat(2,minmax(0,1fr));
background:#fbfbfd; border:1px solid var(--line); border-radius:14px; padding:14px; }
.included-grid ul{ margin:0; padding-left:18px; color:#3a4653; font-size:13px; }
/* CONFIDENTIALITY */
.privacy-box{max-width:1180px;margin:0 auto 28px;padding:14px;border:1px solid var(--line);border-left:4px solid var(--gold);
border-radius:14px;background:#fbfcfe}
.privacy-box h2{margin:0 0 8px;color:#2b3440;font-size:20px}
.privacy-box p{margin:0;color:#3a4653;font-size:13px}
/* PAYMENT */
.pay-box{max-width:1180px;margin:0 auto 28px;padding:14px;border:1px solid var(--line);
border-radius:14px;background:#fbfcfe}
.pay-box h2{margin:0 0 8px;color:#2b3440;font-size:20px}
.pay-box ul{margin:0;padding-left:18px;color:#3a4653;font-size:13px}
/* PRICES */
.prices{ max-width:1180px; margin:0 auto 34px; }
.prices h2{ font-size:20px; margin:0 0 6px; color:#2b3440; }
.prices .sub{ margin:0 0 12px; color:#5f6a73; font-size:12px; }
.prices-grid{ display:grid; gap:12px; grid-template-columns:repeat(3,minmax(0,1fr)); }
.price-card{ background:#ffffff; border:1px solid var(--line); border-radius:14px; padding:12px;
box-shadow:0 6px 16px rgba(0,0,0,.03); }
.price-card .label{ font-weight:800; color:#2b3440; margin-bottom:6px; }
.price-card ul{ margin:0; padding-left:16px; color:#3a4653; font-size:13px; }
.price-card .hint{margin-top:8px;font-size:12px;color:#5f6a73;}
.price-card.featured{ border-color:#e6d8b7; box-shadow:0 10px 22px rgba(195,165,107,.15); }
.price-card.featured .label{ color:#b79357; }
/* AFTERCARE */
.ac-wrap{max-width:1180px;margin:0 auto 30px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fbfbfd}
.ac-wrap h2{margin:0 0 8px;color:#2b3440;font-size:20px}
.ac-list{margin:0;padding-left:18px;color:#3a4653;font-size:13px}
/* GEO (SVG map) */
.geo-wrap{max-width:1180px;margin:0 auto 34px;}
.geo-wrap h2{font-size:20px;margin:0 0 12px;color:#2b3440}
.geo-grid{display:grid;gap:12px;grid-template-columns:minmax(0,1.2fr) minmax(280px,1fr)}
.areas{margin:0;padding-left:18px;color:#3a4653;font-size:13px}
.map-wrap{position:relative;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fbfcfe}
.map{width:100%;height:auto;display:block}
.tooltip{position:absolute;left:12px;top:12px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 10px;font-size:12px;color:#2c3a47;box-shadow:0 8px 18px rgba(0,0,0,.06)}
/* REVIEWS */
.reviews{ max-width:1180px; margin:0 auto 34px; }
.reviews h2{ font-size:20px; margin:0 0 8px; color:#2b3440; }
.reviews-grid{ display:grid; gap:12px; grid-template-columns:repeat(3,minmax(0,1fr)); }
.review{ background:#fbfcfe; border:1px solid var(--line); border-left:3px solid var(--gold);
padding:12px; border-radius:12px; color:#5f6a73; font-size:13px; }
.review span{ display:block; margin-top:6px; color:#2b3440; font-size:12px; }
/* CTA */
.final-cta{ max-width:1180px; margin:0 auto; }
.final-box{ background:#f6f8fb; border:1px solid var(--line); border-left:4px solid var(--gold);
padding:16px; border-radius:18px; box-shadow:var(--shadow); }
.final-box h2{ margin:0 0 8px; font-size:20px; color:#2b3440; }
.final-box p{ margin:0 0 10px; color:#5f6a73; font-size:13px; }
.final-actions{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:6px; }
.note{ font-size:11px; color:#5f6a73; }
/* Sticky mobile bar */
.sticky-bar{ position:fixed; left:0; right:0; bottom:0; z-index:9999;
display:none; gap:8px; padding:10px; background:#ffffffee;
backdrop-filter: blur(6px); border-top:1px solid var(--line); }
.sbtn{flex:1; display:flex; align-items:center; justify-content:center;
padding:12px 14px; border-radius:12px; text-decoration:none; font-weight:800; font-size:14px}
.sbtn-call{background:#19242d; color:#fff;}
.sbtn-wa{background:#f5faf6; color:#135c2f; border:1px solid #cfe6d8;}
/* Responsive */
@media (max-width:980px){
.hero{ grid-template-columns:1fr; }
.prices-grid,.reviews-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.geo-grid{ grid-template-columns:1fr; }
}
@media (max-width:760px){
.sticky-bar{display:flex;} body{padding-bottom:68px;}
}
@media (max-width:640px){
.agent-page{ padding:28px 10px 44px; }
.pains-grid,.steps-grid,.included-grid,.prices-grid,.reviews-grid,.scn-grid{ grid-template-columns:1fr; }
.hero h1{ font-size:24px; }
}
</style>
</head>
<body>
<section class="agent-page vmk-skin v3">
<!-- HERO -->
<div class="hero" role="banner">
<div class="hero-text">
<div class="badge" aria-label="Официальная служба с 1997 года">Официальная ритуальная служба • с 1997 года</div>
<h1>Ритуальный агент приедет за 30–60 минут и возьмёт организацию на себя</h1>
<p class="hero-sub">
Спокойно объясним шаги, согласуем понятную смету и поможем с документами. Без навязанных услуг и скрытых доплат.
</p>
<ul class="hero-bullets">
<li>Выезд агента <strong>24/7</strong> по Ярославлю и области</li>
<li>Документы, морг, транспорт, церемония — «под ключ»</li>
<li>Пакеты от <strong>18 400 ₽</strong> с прозрачным составом</li>
</ul>
<div class="hero-cta">
<a href="tel:+74852331430" class="btn btn-primary" aria-label="Позвонить по телефону">Позвонить</a>
<a href="https://wa.me/79036389534" class="btn btn-wa" aria-label="Написать в WhatsApp">WhatsApp</a>
<span class="hero-num" aria-hidden="true">+7 (4852) 33-14-30 • +7 903 638-95-34</span>
</div>
<div class="hero-note" role="note">Звонок/сообщение ни к чему не обязывает. Решение всегда за вами.</div>
</div>
<div class="hero-side">
<div class="trust-card">
<h3>Почему выбирают нас</h3>
<ul>
<li>Официальная компания, договор и чек</li>
<li>Собственные автомобили и склад атрибутики</li>
<li>Тактичные агенты, бережная коммуникация</li>
<li>Фиксированная смета до начала работ</li>
</ul>
</div>
<div class="contact-mini">
<p><strong>Круглосуточно:</strong> +7 (4852) 33-14-30</p>
<p><strong>Офис:</strong> Ярославль, ул. Богдановича, 14А</p>
</div>
</div>
</div>
<!-- WHAT TO DO NOW -->
<section class="now-steps">
<div class="now-wrap">
<h2>Что делать прямо сейчас</h2>
<ol>
<li>Позвоните нам или напишите в WhatsApp — ответим спокойно и по делу.</li>
<li>Назовите адрес и ситуацию — агент приедет в течение 30–60 минут.</li>
<li>Мы составим понятную смету и возьмём организацию на себя.</li>
</ol>
<div class="mini-cta">
<a href="tel:+74852331430" class="btn btn-primary">Позвонить</a>
<a href="https://wa.me/79036389534" class="btn btn-wa">WhatsApp</a>
</div>
</div>
</section>
<!-- VISUAL EVIDENCE: slider 160px -->
<section class="proof">
<div class="proof-wrap">
<h2>Наши агенты, транспорт и офис</h2>
<p class="sub">Только реальные фото. По запросу пришлём дополнительные подтверждения и документы.</p>
<div class="slider" data-name="proof">
<div class="track" aria-live="polite">
<figure class="frame">
<div class="ph" aria-hidden="true">ФОТО АГЕНТА</div>
<figcaption>Тактичные агенты с удостоверением</figcaption>
</figure>
<figure class="frame">
<div class="ph" aria-hidden="true">РИТУАЛЬНЫЙ АВТОМОБИЛЬ</div>
<figcaption>Собственные ритуальные автомобили</figcaption>
</figure>
<figure class="frame">
<div class="ph" aria-hidden="true">СКЛАД/ОФИС</div>
<figcaption>Офис и склад атрибутики</figcaption>
</figure>
</div>
<button class="snav prev" aria-label="Назад">‹</button>
<button class="snav next" aria-label="Вперёд">›</button>
<div class="dots" role="tablist"></div>
</div>
<div class="mini-cta">
<a href="tel:+74852331430" class="btn btn-primary">Позвонить</a>
<a href="https://wa.me/79036389534" class="btn btn-wa">WhatsApp</a>
</div>
</div>
</section>
<!-- PAINS -->
<section class="pains">
<h2>В тяжёлый момент — поддержка без лишних трат</h2>
<div class="pains-grid">
<div class="card"><h3>Скрытые доплаты</h3><p>Все позиции в смете и договоре. Никаких «после».</p></div>
<div class="card"><h3>Непонятно, с чего начать</h3><p>Объясним порядок действий и возьмём организацию на себя.</p></div>
<div class="card"><h3>Опасение «чёрных агентов»</h3><p>Официальная служба, офис, документы, чек.</p></div>
<div class="card"><h3>Ограниченный бюджет</h3><p>Подберём решение без лишних позиций. Пакеты от 18 400 ₽.</p></div>
</div>
</section>
<!-- ANTI-FRAUD CHECKLIST -->
<section class="antifraud">
<div class="af-wrap">
<h2>Как распознать «чёрных агентов»</h2>
<ul class="checklist">
<li>Нет договора и кассового чека — настаивайте на официальных документах.</li>
<li>Давление и спешка — навязывание товаров/услуг без вашего согласия.</li>
<li>Не предъявляют удостоверение, нет офиса и проверяемых реквизитов.</li>
</ul>
<div class="tip">У нас всё официально: договор, чек, удостоверение, офис. Смета фиксируется до начала работ.</div>
</div>
</section>
<!-- SCENARIOS -->
<section class="scenarios">
<div class="scn-wrap">
<h2>Ваш сценарий</h2>
<div class="scn-grid">
<div class="scn">
<h3>Если смерть дома</h3>
<p>Позвоните в скорую и полицию. Мы поможем с моргом и оформлением документов.</p>
</div>
<div class="scn">
<h3>Если в больнице</h3>
<p>Согласуем выдачу, транспортировку, документы и даты прощания.</p>
</div>
<div class="scn">
<h3>Кремирование</h3>
<p>Объясним порядок, поможем с выбором урны/колумбария и организацией церемонии.</p>
</div>
</div>
</div>
</section>
<!-- STEPS -->
<section class="steps">
<h2>Как работает ритуальный агент</h2>
<div class="steps-grid">
<div class="step"><span>1</span><h3>Звонок / WhatsApp</h3><p>Отвечаем спокойно и по делу.</p></div>
<div class="step"><span>2</span><h3>Выезд</h3><p>Приезжаем в 30–60 минут, консультируем.</p></div>
<div class="step"><span>3</span><h3>Смета</h3><p>Фиксируем состав услуг и стоимость.</p></div>
<div class="step"><span>4</span><h3>Организация</h3><p>Документы, морг, транспорт, прощание.</p></div>
<div class="step"><span>5</span><h3>Поддержка</h3><p>На связи до завершения процедур.</p></div>
</div>
</section>
<!-- INCLUDED -->
<section class="included">
<h2>Что берём на себя</h2>
<div class="included-grid">
<ul>
<li>Выезд в течение часа по городу (по области — по договорённости)</li>
<li>Консультация по похоронам или кремации</li>
<li>Сбор и оформление документов, взаимодействие с ЗАГС</li>
<li>Коммуникация с моргом и кладбищем</li>
</ul>
<ul>
<li>Подбор гроба, венков, креста, текстиля</li>
<li>Катафалк и транспорт для родных</li>
<li>Подготовка и проведение прощания</li>
<li>Контроль сроков и качества на всех этапах</li>
</ul>
</div>
</section>
<!-- CONFIDENTIALITY -->
<section class="privacy">
<div class="privacy-box">
<h2>Конфиденциальность и тактичность</h2>
<p>Мы не публикуем фото и личные данные без разрешения семьи. Общаемся бережно, без давления и навязанных решений.</p>
</div>
</section>
<!-- PAYMENT -->
<section class="payment">
<div class="pay-box">
<h2>Оплата и социальные выплаты</h2>
<ul>
<li>Наличный и безналичный расчёт, возможна рассрочка</li>
<li>Поможем оформить социальное пособие на погребение</li>
<li>Смета фиксируется до начала работ и не меняется без согласия</li>
</ul>
</div>
</section>
<!-- PRICES -->
<section class="prices">
<h2>Пакеты услуг</h2>
<p class="sub">Примеры ориентировочных составов. Агент подберёт и скорректирует под вашу ситуацию.</p>
<div class="prices-grid">
<div class="price-card">
<div class="label">Эконом — от 18 400 ₽</div>
<ul>
<li>Базовый гроб</li>
<li>Крест, табличка</li>
<li>Текстильный комплект</li>
<li>Часть документов</li>
<li>Катафалк по городу</li>
</ul>
<div class="hint">Подходит для базовой организации похорон</div>
</div>
<div class="price-card featured">
<div class="label">Стандарт — от 31 900 ₽</div>
<ul>
<li>Улучшенный гроб</li>
<li>Крест, табличка, венки</li>
<li>Улучшенный текстиль</li>
<li>Расширенная помощь с документами</li>
<li>Катафалк, координация прощания</li>
</ul>
<div class="hint">Чаще всего выбирают семьи — оптимальный набор</div>
</div>
<div class="price-card">
<div class="label">Премиум — от 50 000 ₽</div>
<ul>
<li>Гроб повышенного класса</li>
<li>Расширенная атрибутика, флористика</li>
<li>Полное сопровождение по документам</li>
<li>Организация «под ключ»</li>
<li>Возможны воинские почести</li>
</ul>
<div class="hint">Расширенная организация с дополнительными атрибутами</div>
</div>
</div>
</section>
<!-- AFTERCARE -->
<section class="aftercare">
<div class="ac-wrap">
<h2>Помощь после церемонии</h2>
<ul class="ac-list">
<li>Организация поминок и транспорта</li>
<li>Памятники, благоустройство места</li>
<li>Уход за могилой и сезонные работы</li>
</ul>
<div class="mini-cta">
<a href="tel:+74852331430" class="btn btn-primary">Позвонить</a>
<a href="https://wa.me/79036389534" class="btn btn-wa">WhatsApp</a>
</div>
</div>
</section>
<!-- GEOGRAPHY (SVG MAP) -->
<section class="geo">
<div class="geo-wrap">
<h2>Где работаем</h2>
<div class="geo-grid">
<ul class="areas">
<li>Все районы Ярославля: Дзержинский, Красноперекопский, Кировский, Ленинский, Фрунзенский, Заволжский</li>
<li>Города области: Тутаев, Рыбинск, Переславль-Залесский, Ростов, Гаврилов-Ям и др.</li>
<li>Выезды по области — по согласованию и времени</li>
</ul>
<div class="map-wrap">
<svg class="map" viewBox="0 0 700 420" role="img" aria-label="Схема районов Ярославля">
<defs>
<style>
.area{fill:#e9eef4;stroke:#aeb9c6;stroke-width:1.5;cursor:pointer;transition:all .2s;}
.area:hover{fill:#dbe6f2}
.area.active{fill:#c3d8f2;stroke:#5b6b78}
.pin{fill:#c3a56b;stroke:#8e784c;stroke-width:1}
.label{font: 12px sans-serif; fill:#2c3a47;}
</style>
</defs>
<rect class="area" data-title="Дзержинский район" x="20" y="20" width="210" height="120" rx="10"/>
<rect class="area" data-title="Красноперекопский район" x="250" y="20" width="210" height="120" rx="10"/>
<rect class="area" data-title="Кировский район" x="480" y="20" width="200" height="120" rx="10"/>
<rect class="area" data-title="Ленинский район" x="20" y="160" width="320" height="110" rx="10"/>
<rect class="area" data-title="Фрунзенский район" x="360" y="160" width="320" height="110" rx="10"/>
<rect class="area" data-title="Заволжский район" x="20" y="290" width="660" height="100" rx="10"/>
<circle class="pin" cx="560" cy="205" r="6"/>
<text class="label" x="570" y="210">Офис: Богдановича, 14А</text>
</svg>
<div class="tooltip" aria-live="polite">Наведите на район</div>
</div>
</div>
</div>
</section>
<!-- REVIEWS -->
<section class="reviews">
<h2>Отзывы</h2>
<div class="reviews-grid">
<div class="review"><p>«Всё прошло спокойно и достойно. Спасибо за тактичную поддержку».</p><span>— Сергей А.</span></div>
<div class="review"><p>«Понятная смета без доплат, помогли с документами и организацией».</p><span>— Екатерина В.</span></div>
<div class="review"><p>«Профессионально и бережно. Благодарим за помощь семье».</p><span>— Татьяна Р.</span></div>
</div>
</section>
<!-- CTA -->
<section class="final-cta">
<div class="final-box">
<h2>Нужна помощь ритуального агента сейчас?</h2>
<p>Позвоните или напишите — всё спокойно объясним и направим к вам специалиста.</p>
<div class="final-actions">
<a href="tel:+74852331430" class="btn btn-primary lg">Позвонить</a>
<a href="https://wa.me/79036389534" class="btn btn-wa lg">WhatsApp</a>
</div>
<div class="note">Ярославль и область • Круглосуточно</div>
</div>
</section>
<!-- STICKY MOBILE BAR -->
<div class="sticky-bar">
<a href="tel:+74852331430" class="sbtn sbtn-call">Позвонить</a>
<a href="https://wa.me/79036389534" class="sbtn sbtn-wa">WhatsApp</a>
</div>
</section>
<script>
// Slider with exact 160px media height
(function(){
const root = document.querySelector('.slider'); if(!root) return;
const track = root.querySelector('.track');
const frames = Array.from(root.querySelectorAll('.frame'));
const prev = root.querySelector('.snav.prev');
const next = root.querySelector('.snav.next');
const dots = root.querySelector('.dots');
let index = 0, startX = 0, dx = 0;
function width(){ return root.clientWidth; }
function apply(){ track.style.transform = 'translateX(' + (-index * width()) + 'px)'; updateDots(); }
function set(i){ index = (i + frames.length) % frames.length; apply(); }
function updateDots(){ dots.querySelectorAll('button').forEach((b,bi)=> b.classList.toggle('active', bi===index)); }
function layout(){
track.style.width = (frames.length * width()) + 'px';
frames.forEach(f=> f.style.width = width() + 'px');
apply();
}
frames.forEach((_,i)=>{
const b = document.createElement('button'); b.setAttribute('role','tab');
b.addEventListener('click', ()=> set(i)); dots.appendChild(b);
});
layout(); set(0);
prev.addEventListener('click', ()=> set(index-1));
next.addEventListener('click', ()=> set(index+1));
window.addEventListener('resize', layout, {passive:true});
track.addEventListener('touchstart', e=>{ startX = e.touches[0].clientX; dx = 0; }, {passive:true});
track.addEventListener('touchmove', e=>{ dx = e.touches[0].clientX - startX; track.style.transform = 'translateX(' + (-index * width() + dx) + 'px)'; }, {passive:true});
track.addEventListener('touchend', ()=>{
if (Math.abs(dx) > width()*0.15){ set(index - Math.sign(dx)); } else { apply(); }
dx = 0;
});
})();
// Map hover/active tooltip
(function(){
const wrap = document.querySelector('.map-wrap'); if(!wrap) return;
const tip = wrap.querySelector('.tooltip');
const areas = wrap.querySelectorAll('.area');
areas.forEach(a=>{
a.addEventListener('mouseenter', ()=>{ areas.forEach(x=>x.classList.remove('active')); a.classList.add('active'); tip.textContent = a.dataset.title || 'Район'; });
a.addEventListener('mouseleave', ()=>{ a.classList.remove('active'); tip.textContent = 'Наведите на район'; });
a.addEventListener('click', ()=>{ tip.textContent = (a.dataset.title||'Район') + ' — выезд по согласованию'; });
});
})();
</script>
</body>
</html>