(function(){ 'use strict'; var ASSET='https://articles.yadralo.ru/_redesign'; var POPUP_LINK='#popup:signupMark'; var WHATSAPP='https://wa.me/79930732601'; var TELEGRAM='https://t.me/AaaMClinic'; var MAX_MSG='https://max.ru/+79930732601'; var PHONE='tel:+79930732601'; var YA_SPRAV='3338663455'; function el(tag,cls,html){var e=document.createElement(tag);if(cls)e.className=cls;if(html!==undefined)e.innerHTML=html;return e} /* ---- HEADER ---- */ function buildHeader(){ return '
'+ '
'+ ''+ '
'+ ''+ '
'; } /* ---- HERO ---- */ function buildHero(){ return ''; } /* ---- TRUST STRIP ---- */ function buildVideoBanner(){ return '
'+ ''+ '
'+ '
'+ ''+ '
AaaM Стоматология в центре Санкт-Петербурга
'+ '
'+ '
'; } function buildTrust(){ return '
'+ '
'+ '
'+ '
Фикс цена
'+ '
План лечения и итоговая сумма известны до старта — фиксируем на первой консультации.
'+ '
'+ '
'+ '
Один врач
'+ '
Ваш случай от диагностики до результата ведёт один врач — без передачи между сменами и пересказа истории.
'+ '
'+ '
'+ '
100+
'+ '
Завершённых лечений на элайнерах SPARK — одно из самых проработанных направлений клиники.
'+ '
'+ '
'+ ''+ '
Образовательная школа для ортодонтов MARPE / MSE / RPE — ведёт основатель клиники Марк Раджабов.
'+ '
'+ '
'+ '
'; } /* ---- OFFERS ---- */ function buildOffers(){ return '
'+ '
'+ '
'+ '
Что действует сейчас
'+ '

Цены и форматы оплаты на популярные направления

'+ '

Стартовые цены по ключевым услугам и рассрочка на ортодонтию. Точная сумма по вашему случаю фиксируется на первой консультации после диагностики.

'+ '
'+ '
'+ '
'+ '
★ ХИТ
'+ '
Ортодонтия
'+ '
Элайнеры SPARK
в рассрочку, помесячно
'+ '
Полный курс лечения с разбивкой платежей. Точная сумма и срок — после 3D-диагностики.
'+ '
от 17 000 ₽ /мес
'+ 'Записаться на консультацию'+ '
'+ '
'+ '
Имплантация
'+ '
Имплант Anyone
с установкой
'+ '
Включает имплант и хирургический этап. Стоимость коронки — отдельно, после интеграции.
'+ '
32 000 ₽
'+ 'Записаться на консультацию →'+ '
'+ '
'+ '
Ортодонтия
'+ '
Установка брекетов
под ключ
'+ '
Брекет-система + установка на одну челюсть. Зависит от системы — металл/керамика/сапфир.
'+ '
от 50 000 ₽
'+ 'Записаться на консультацию →'+ '
'+ '
'+ '
Эстетика
'+ '
Профгигиена
AirFlow + ультразвук + полировка
'+ '
За одно посещение. Подходит как разовый чек-ап перед лечением или поддерживающий уход.
'+ '
от 7 500 ₽
'+ 'Записаться на консультацию →'+ '
'+ '
'+ '
'+ '
'; } var SERVICES=[ {cat:'Терапия',title:'Лечение кариеса',price:'от 9 250 ₽',hint:'Под микроскопом, реставрация',img:'caries.png',link:POPUP_LINK}, {cat:'Профилактика',title:'Профгигиена',price:'от 7 500 ₽',hint:'AirFlow, ультразвук, полировка',img:'hygiene.png',link:POPUP_LINK}, {cat:'Хирургия',title:'Имплантация',price:'от 32 000 ₽',hint:'Astra Tech, Straumann, Anyone',img:'implants.png',link:POPUP_LINK}, {cat:'Эстетика',title:'Виниры и коронки',price:'от 42 900 ₽',hint:'Керамика E-max, цирконий',img:'crown.png',link:POPUP_LINK}, {cat:'Ортодонтия',title:'Элайнеры SPARK',price:'от 38 500 ₽',hint:'100+ законченных кейсов',img:'aligners.png',link:POPUP_LINK}, {cat:'Ортодонтия',title:'Брекеты',price:'от 50 000 ₽',hint:'Металл, керамика, сапфир',img:'braces.png',link:POPUP_LINK}, {cat:'Эстетика',title:'Отбеливание',price:'от 18 000 ₽',hint:'Zoom, домашнее, лазерное',img:'whitening.jpg',link:POPUP_LINK}, {cat:'Хирургия',title:'Удаление зуба',price:'от 8 050 ₽',hint:'Атравматичное, под анестезией',img:'extraction.png',link:POPUP_LINK} ]; function buildServices(){ var cards=SERVICES.map(function(s){ return ''+ '
'+s.title+' в AaaM Clinic
'+ '
'+ '
'+s.cat+'
'+ '

'+s.title+'

'+ '
'+s.hint+'
'+ '
'+s.price+'
'+ 'Записаться →'+ '
'+ '
'; }).join(''); return '
'+ '
'+ '
'+ '
8 направлений
'+ '

Что лечим в AaaM Clinic

'+ '

От профгигиены до сложной имплантации. По каждому направлению — один ведущий врач, фиксированная цена после диагностики, гарантия материалов от производителя.

'+ '
'+ '
'+ ''+ ''+ '
'+ '
'+ '
'+ '
'+ '
'+cards+'
'+ '
'+ '
'; } /* ---- CASES ---- */ function buildCases(){ var featured=['Instagram_post_-_59.png','Instagram_post_-_61.png','Instagram_post_-_63.png','Instagram_post_-_65.png','Instagram_post_-_67.png']; var more=['photo_2025-08-09_16-02-53.jpg','photo_2025-08-09_16-03-26.jpg','photo_2025-08-09_16-04-14.jpg','photo_2025-08-09_16-07-13.jpg','photo_2025-08-09_16-08-01.jpg','photo_2025-08-09_16-08-51.jpg','photo_2025-08-09_16-10-08.jpg']; var feat=featured.map(function(f,i){ return 'Клинический кейс AaaM Clinic #'+(i+1)+''; }).join(''); var mr=more.map(function(f,i){ return 'Клинический случай AaaM Clinic #'+(i+1)+''; }).join(''); return '
'+ '
'+ '
'+ '
Ортодонтия — наша экспертиза
'+ '

100+ кейсов на элайнерах SPARK

'+ '

Ортодонтия — направление с самым большим клиническим опытом клиники. По брекетам, имплантации и эстетике кейсы покажет врач на консультации под ваш случай.

'+ '
'+ '
'+ ''+ ''+ '
'+ '
'+ '
'+ '
'+ '
'+feat+mr+'
'+ '
'+ '
'; } /* ---- FOUNDER ---- */ function buildFounder(){ return '
'+ '
'+ '
Марк Раджабов — основатель и главный врач AaaM Clinic, ортодонт
'+ '
'+ '
Главный врач
'+ '
«Стоматолога выбирают на годы. Поэтому ваш врач сопровождает вас от первой консультации до финала лечения — диагноз, план, цена, каждый визит.»
'+ '
Марк Раджабов · ортодонт-основатель, главный врач клиники
'+ '
'+ 'SPARK-сертификация'+ 'MARPE / MSE'+ 'Брекеты Damon'+ 'Международные онлайн-курсы для ортодонтов'+ 'Обучает ортодонтов в РФ на практике'+ '100+ кейсов SPARK'+ '
'+ '
'+ '
'+ '
'; } /* ---- PROCESS — generic stomatology ---- */ function buildProcess(){ var steps=[ {n:'1',t:'Запись',d:'Заявка на сайте, в Telegram, MAX или звонок. Согласуем удобное время.'}, {n:'2',t:'Консультация',d:'Осмотр, КТ/снимки, диагностика. Депозит 5 000 ₽ — на счёт.'}, {n:'3',t:'План и цена',d:'Фиксированная стоимость, очерёдность процедур, сроки. Подписываем смету.'}, {n:'4',t:'Лечение',d:'Один врач ведёт случай от начала до финала. После каждого этапа — контрольный визит и понимание следующего шага.'}, {n:'5',t:'Сопровождение',d:'Контрольные осмотры и гарантийное наблюдение после завершения.'} ]; var html=steps.map(function(s){ return '
'+s.n+'
'+s.t+'
'+s.d+'
'; }).join(''); return '
'+ '
'+ '
'+ '
Как мы работаем
'+ '

От записи до результата

'+ '

Прозрачный процесс — на каждом шаге пациент знает, что будет дальше и сколько это стоит.

'+ '
'+ '
'+html+'
'+ '
'+ '
'; } /* ---- TEAM — per-doctor kinescope video-визитки extracted from /doctors/ Tilda pages ---- */ var TEAM=[ {n:'Раджабов Марк Русланович',r:'Основатель, главный врач, ортодонт',tags:['SPARK','MARPE','Брекеты'],photo:'radzhabov.webp',kinescope:'0f6hTxHWRGz9xK1htg4q8u'}, {n:'Бройтман Анна Борисовна',r:'Основатель, ведущий ортодонт',tags:['SPARK','Брекеты','Ортодонтия взрослых'],photo:'broytman.webp',kinescope:'e6Fijw2WXe2f8448jpFaBW'}, {n:'Нечаев Михаил Александрович',r:'Стоматолог-хирург',tags:['Имплантация','Удаление','Синус-лифтинг'],photo:'nechaev.webp',kinescope:'xuRz5E1n67MKWiscZagCfC'}, {n:'Геворгян Арам Гамлетович',r:'Стоматолог-хирург',tags:['Имплантация','Удаление'],photo:'gevorgyan.webp',kinescope:'ssy2zRdxNxfvp3kqnVZDK2'}, {n:'Баранов Кирилл Дмитриевич',r:'Стоматолог-ортопед',tags:['Коронки','Виниры','Протезирование'],photo:'baranov.webp',kinescope:'weWwkHGkSFBP9sC83iZstw'}, {n:'Джигкаева Дзерасса Валерьевна',r:'Стоматолог-терапевт',tags:['Кариес','Эндодонтия','Реставрация'],photo:'dzhigkaeva.webp',kinescope:'5jxmmkn3a2u2aaHzkEx4N4'}, {n:'Врзалова Анна Антониновна',r:'Стоматолог-терапевт',tags:['Кариес','Эндодонтия'],photo:'vrzalova.webp',kinescope:'5XiQUWXfpBKMZzM38muYGP'}, {n:'Фернандо Нина Владимировна',r:'Стоматолог-терапевт',tags:['Кариес','Реставрация'],photo:'fernando.webp',kinescope:'6d3CBmPeo5V5nZzkpTnDNr'}, {n:'Коновалова Анна Анатольевна',r:'Стоматолог-гигиенист',tags:['Профгигиена','Отбеливание'],photo:'konovalova.webp',kinescope:null} ]; function buildTeam(){ var cards=TEAM.map(function(d,idx){ var tags=d.tags.map(function(t){return ''+t+''}).join(''); var nameParts=d.n.split(' '); var shortName=nameParts.length>=2 ? nameParts[0]+' '+nameParts[1] : d.n; var ctaName=nameParts.length>=3 ? nameParts[0]+' '+nameParts[1][0]+'.'+nameParts[2][0]+'.' : (nameParts.length===2 ? nameParts[0]+' '+nameParts[1][0]+'.' : d.n); var playBtn=d.kinescope ? '' : ''; return '
'+ '
'+ ''+d.n+''+ playBtn+ '
'+ '
'+ '

'+shortName+'

'+ '
'+(nameParts[2]||'')+'
'+ '
'+d.r+'
'+ '
'+tags+'
'+ 'Записаться к '+ctaName+''+ '
'+ '
'; }).join(''); return '
'+ '
'+ '
'+ '
Команда
'+ '

Врачи АааМ Стоматологии

'+ '

Основатели клиники — практикующие ортодонты Марк Раджабов и Анна Бройтман. Марк также ведёт международные онлайн-курсы и обучает ортодонтов в РФ на практике. Команда работает по принципу «один врач ведёт пациента до результата».

'+ '
'+ '
'+ ''+ ''+ '
'+ '
'+ '
'+ '
'+ '
'+cards+'
'+ '
'+ ''+ '
'; } /* ---- REVIEWS + MAP (Яндекс widgets) ---- */ function buildReviews(){ return '
'+ '
'+ '
'+ '
Отзывы пациентов
'+ '

★ 5.0 на Яндекс Картах

'+ '
'+ '5.0 на Яндекс Картах'+ '«Хорошее место» от Яндекса'+ '
'+ '
Все отзывы на Яндексе →
'+ '
'+ '
'+ ''+ '
'+ '
'+ ''+ '
'+ '
'+ '
'+ '
'; } /* ---- SEO ABOUT (richer design) ---- */ function buildSEO(){ return '
'+ '
'+ '
'+ ''+ '
'+ '
О клинике
'+ '

Стоматология AaaM в центре Санкт-Петербурга

'+ '
'+ '

AaaM Clinic — стоматология в историческом центре Санкт-Петербурга на улице Большая Подьяческая, 18. От метро Сенная площадь — 10 минут пешком. Рядом платная парковка с местами даже в рабочий день.

'+ '

Клинику основали практикующие ортодонты Марк Раджабов и Анна Бройтман. На счету клиники более 100 законченных лечений на элайнерах SPARK. Марк параллельно ведёт международные онлайн-курсы для ортодонтов и обучает врачей в России на практике.

'+ '

В команде 9 врачей по 6 направлениям: терапия (микроскоп, эндодонтия, реставрация), профгигиена (AirFlow), имплантация (Astra Tech, Straumann, Anyone, All-on-4, синус-лифтинг), эстетика (виниры E-max, циркониевые коронки, отбеливание Zoom), хирургия (удаление, резекция корня), ортодонтия (SPARK, брекеты Damon, MARPE / MSE / RPE).

'+ '

Прозрачность — главное правило клиники. На первой консультации врач составляет план с фиксированной ценой и сроками: какие процедуры нужны, в каком порядке, сколько займут. Один врач ведёт случай от диагностики до результата — без передачи между сменами.

'+ '

Работаем со вторника по воскресенье, с 9:00 до 21:00. Запись — по телефону +7 (993) 073-26-01, в Telegram, MAX или через форму на сайте.

'+ '
'+ '
'+ '

Ортодонтия

  • Элайнеры SPARK
  • Брекеты Damon, металл
  • Брекеты керамика и сапфир
  • MARPE / MSE / RPE
  • Прикус у взрослых
  • Детская ортодонтия
'+ '

Имплантация и хирургия

  • Astra Tech, Straumann
  • Anyone (бюджетная линия)
  • All-on-4
  • Синус-лифтинг
  • Удаление зубов
  • Резекция корня
'+ '

Терапия и эстетика

  • Виниры керамика E-max
  • Коронки цирконий
  • Отбеливание Zoom
  • Лечение под микроскопом
  • Эндодонтия
  • Профгигиена AirFlow
'+ '
'+ '
'+ '
'+ '
'+ '
'; } /* ---- FAQ — закрытие возражений (placeholders помечены TODO) ---- */ function buildFAQ(){ var items=[ {q:'Можно ли узнать точную цену лечения сразу?', a:'Да. На первой консультации врач составляет план лечения с конкретными суммами по каждому этапу — без формулировок «от» и «примерно». Если в процессе понадобится что-то, не входившее в план — врач предупреждает заранее и согласовывает с вами. Без согласования дополнительные работы не проводятся.'}, {q:'Как у вас выбирают врача?', a:'Когда вы записываетесь, администратор уточняет ситуацию и направляет к специалисту нужного профиля: терапевт лечит кариес и каналы, хирург занимается удалением и имплантацией, ортодонт — брекетами и элайнерами. Если вы хотите попасть к конкретному врачу — скажите при записи, мы запишем именно к нему. Карточки врачей с описанием — выше на странице.'}, {q:'Что если мне не понравится предложенный план лечения?', a:'Это нормальная ситуация. Вы не обязаны соглашаться на план сразу — можете взять время на обдумывание, обсудить с близкими, получить второе мнение в другой клинике. Внутри AaaM Clinic вы можете попросить консультацию у второго врача того же профиля. Цель — чтобы вы приняли решение спокойно, а не под давлением.'}, {q:'Сколько занимает лечение?', a:'Сроки зависят от ситуации, ориентировочно: лечение кариеса — 1 визит около часа; имплантация — установка импланта 30–60 минут, приживление 3–6 месяцев, затем коронка; брекеты — ношение 12–24 месяца с визитами раз в 4–6 недель; элайнеры SPARK — ношение 8–18 месяцев в зависимости от сложности. Точные сроки именно для вашего случая врач называет на первой консультации.'}, {q:'Будет ли больно?', a:'Все процедуры — от лечения кариеса до имплантации — проводятся под местной анестезией. Перед уколом место обезболивания обрабатывается аппликационным гелем, поэтому сам укол практически не ощущается. Если вы тревожно переносите стоматологические процедуры — расскажите об этом при записи, врач подберёт подходящий подход. После сложных вмешательств выдаём рекомендации и обезболивающее на первые сутки.'}, {q:'Какая гарантия на работу и материалы?', a:'На материалы действуют гарантии производителей: импланты — гарантия производителя по правилам бренда; элайнеры SPARK — гарантия от Ormco на качество системы; коронки и виниры — гарантия производителя. После лечения предусмотрены контрольные осмотры, чтобы убедиться, что результат держится. Если возникает проблема в гарантийный период — помогаем оформить замену по правилам производителя.'} ]; var html=items.map(function(it,i){ return '
'+ ''+it.q+''+ '
'+it.a+'
'+ '
'; }).join(''); return '
'+ '
'+ '
'+ '
Частые вопросы
'+ '

Что важно знать перед записью

'+ '

Прозрачность и спокойный диалог — основа работы клиники. Здесь ответы на вопросы, которые чаще всего задают на первой консультации.

'+ '
'+ '
'+html+'
'+ '
'+ '
'; } /* ---- FINAL CTA with 3 buttons + депозит reminder ---- */ function buildFinal(){ return '
'+ '
'+ '
Запись на консультацию
'+ '

Узнайте точную цену лечения за 60 минут

'+ '

Консультация с диагностикой и планом лечения. После заявки специалист свяжется в течение 30 минут.

'+ '
5 000 ₽ приветственный депозит — зачисляется на счёт пациента при первой консультации.
'+ ''+ 'или оставить заявку на сайте →'+ '
'+ '
'; } /* ---- FOOTER ---- */ function buildFooter(){ return ''; } /* ---- ASSEMBLER ---- */ function build(){ /* HOMEPAGE ONLY guard — redesign только на главной */ var p=location.pathname.replace(/\/+$/,''); if(p&&p!=='/index'&&p!=='/main')return; if(document.querySelector('.aaam-rd'))return; document.body.classList.add('aaam-rd-on'); var container=el('div','aaam-rd'); container.id='aaam-rd-root'; var skip=el('a','aaam-rd-skip','Перейти к содержимому'); skip.href='#aaam-hero'; container.appendChild(skip); container.innerHTML+=buildHeader(); container.innerHTML+=buildHero(); /* video moved inside hero — buildVideoBanner() skipped */ container.innerHTML+=buildTrust(); container.innerHTML+=buildOffers(); container.innerHTML+=buildServices(); container.innerHTML+=buildCases(); container.innerHTML+=buildFounder(); container.innerHTML+=buildProcess(); container.innerHTML+=buildTeam(); container.innerHTML+=buildReviews(); container.innerHTML+=buildSEO(); container.innerHTML+=buildFAQ(); container.innerHTML+=buildFinal(); container.innerHTML+=buildFooter(); var allrec=document.getElementById('allrecords'); try{ if(allrec){allrec.insertBefore(container,allrec.firstChild)} else{document.body.appendChild(container)} }catch(e){try{document.body.appendChild(container)}catch(_){}} /* demote duplicate H1s */ try{ document.querySelectorAll('h1').forEach(function(h){ if(h.closest('.aaam-rd'))return; var d=document.createElement('div'); d.innerHTML=h.innerHTML;d.className=h.className; d.setAttribute('role','heading');d.setAttribute('aria-level','2'); h.parentNode.replaceChild(d,h); }); }catch(_){} /* mobile burger */ try{ var b=container.querySelector('.aaam-rd-hdr__burger'); var mn=container.querySelector('#aaam-mobnav'); if(b&&mn){ b.addEventListener('click',function(){ var open=b.getAttribute('aria-expanded')==='true'; b.setAttribute('aria-expanded',!open); if(open){mn.setAttribute('hidden','');b.classList.remove('is-open')} else{mn.removeAttribute('hidden');b.classList.add('is-open')} }); container.querySelectorAll('#aaam-mobnav a').forEach(function(a){ a.addEventListener('click',function(){ mn.setAttribute('hidden','');b.classList.remove('is-open');b.setAttribute('aria-expanded','false'); }); }); } }catch(_){} /* sliders — doctor + services + cases (uniform behavior) */ function initSlider(trackSel,prevSel,nextSel,cardSel){ var track=container.querySelector(trackSel); var prev=container.querySelector(prevSel); var next=container.querySelector(nextSel); if(!track)return; function step(){ var card=track.querySelector(cardSel); if(!card)return 320; var s=getComputedStyle(track); var gap=parseFloat(s.columnGap||s.gap||'20'); return card.offsetWidth+gap; } function update(){ if(!prev||!next)return; var max=track.scrollWidth-track.clientWidth-2; prev.disabled=track.scrollLeft<=2; next.disabled=track.scrollLeft>=max; } if(prev)prev.addEventListener('click',function(){track.scrollBy({left:-step(),behavior:'smooth'})}); if(next)next.addEventListener('click',function(){track.scrollBy({left:step(),behavior:'smooth'})}); track.addEventListener('scroll',update,{passive:true}); setTimeout(update,300); var down=false,startX=0,startScroll=0; track.addEventListener('mousedown',function(e){down=true;startX=e.pageX;startScroll=track.scrollLeft;track.style.cursor='grabbing'}); window.addEventListener('mouseup',function(){if(down&&track)track.style.cursor='';down=false}); window.addEventListener('mousemove',function(e){if(!down)return;e.preventDefault();track.scrollLeft=startScroll-(e.pageX-startX)}); } try{ initSlider('#aaam-doc-track','[data-doc-nav="prev"]','[data-doc-nav="next"]','.aaam-rd-doc-card'); initSlider('#aaam-svc-track','[data-slider-nav="svc-prev"]','[data-slider-nav="svc-next"]','.aaam-rd-svc-card'); initSlider('#aaam-case-track','[data-slider-nav="case-prev"]','[data-slider-nav="case-next"]','.aaam-rd-case'); }catch(_){} /* scroll reveal — IntersectionObserver fade+slide-up, staggered */ try{ var reduce=window.matchMedia&&window.matchMedia('(prefers-reduced-motion: reduce)').matches; if(!reduce && 'IntersectionObserver' in window){ var revealSel='.aaam-rd__sec, .aaam-rd-hero__copy, .aaam-rd-hero__visual, .aaam-rd-trust__item, .aaam-rd-offer, .aaam-rd-svc-card, .aaam-rd-doc-card, .aaam-rd-case, .aaam-rd-process__step, .aaam-rd-faq__item, .aaam-rd-founder__chip, .aaam-rd-shead, .aaam-rd-seo__fact, .aaam-rd-reviews__col, .aaam-rd-final__inner'; var targets=container.querySelectorAll(revealSel); var i=0; targets.forEach(function(t){ t.classList.add('aaam-rd-reveal'); var idx=i++; var d=(idx%6)*60; t.style.transitionDelay=d+'ms'; }); var io=new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('is-in'); io.unobserve(e.target); } }); },{rootMargin:'0px 0px -10% 0px',threshold:0.08}); targets.forEach(function(t){io.observe(t);}); } }catch(_){} /* video modal — kinescope iframe */ try{ var vmodal=container.querySelector('#aaam-vmodal'); var vframe=container.querySelector('#aaam-vmodal-frame'); var vname=container.querySelector('#aaam-vmodal-name'); var vclose=container.querySelector('.aaam-rd-vmodal__close'); function openVid(kinescopeId,name){ if(!vmodal||!vframe)return; vframe.innerHTML=''; if(vname)vname.textContent=name||''; vmodal.removeAttribute('hidden'); document.body.style.overflow='hidden'; } function closeVid(){ if(!vmodal||!vframe)return; vframe.innerHTML=''; vmodal.setAttribute('hidden',''); document.body.style.overflow=''; } container.querySelectorAll('.aaam-rd-doc-card__play').forEach(function(btn){ btn.addEventListener('click',function(e){ e.preventDefault();e.stopPropagation(); openVid(btn.dataset.kinescope,btn.dataset.name); }); }); if(vclose)vclose.addEventListener('click',closeVid); if(vmodal)vmodal.addEventListener('click',function(e){if(e.target===vmodal)closeVid()}); document.addEventListener('keydown',function(e){if(e.key==='Escape'&&vmodal&&!vmodal.hasAttribute('hidden'))closeVid()}); }catch(_){} } if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded',build); }else{ build(); } })(); /* === aaam audit fixes 2026-05-19 === */ (function(){ function fixForms(root){ if(!root||!root.querySelectorAll)return; var phones=root.querySelectorAll('input[type="tel"]'); phones.forEach(function(p){ if(p.dataset.aaamFix)return; p.dataset.aaamFix='1'; if(!p.getAttribute('inputmode'))p.setAttribute('inputmode','tel'); if(!p.getAttribute('autocomplete'))p.setAttribute('autocomplete','tel'); if(!p.placeholder||p.placeholder==='000-0000000'){p.placeholder='+7 (___) ___-__-__';} p.style.fontSize='16px'; }); var comments=root.querySelectorAll('input[name="form-spec-comments"],textarea[name="form-spec-comments"]'); comments.forEach(function(c){ if(c.dataset.aaamLbl)return; c.dataset.aaamLbl='1'; if(!c.getAttribute('aria-label'))c.setAttribute('aria-label','Комментарий или вопрос'); if(!c.placeholder)c.placeholder='Комментарий (по желанию)'; }); root.querySelectorAll('a[href*="yandex.com/maps"],a[href*="yandex.ru/maps"]').forEach(function(a){ if(a.dataset.aaamLbl)return; if(!a.textContent.trim()&&!a.getAttribute('aria-label')&&!a.querySelector('img,svg')){ a.setAttribute('aria-label','Открыть на Яндекс.Картах'); a.dataset.aaamLbl='1'; } }); } function hideTildaSkip(){ document.querySelectorAll('.t-skiplink').forEach(function(t){t.style.display='none';}); } function run(){fixForms(document);hideTildaSkip();} if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded',run); }else{ run(); } try{ var mo=new MutationObserver(function(muts){ muts.forEach(function(m){ m.addedNodes.forEach(function(n){if(n.nodeType===1)fixForms(n);}); }); }); var start=function(){if(document.body)mo.observe(document.body,{childList:true,subtree:true});}; if(document.body)start();else document.addEventListener('DOMContentLoaded',start); }catch(_){} })(); /* === v17d: strip orphan zen-verification text node leaked from Tilda body widget === */ (function(){ var RE=/name=["']zen-verification["']\s+content=["'][^"']+["']\s*\/?>/; function strip(root){ if(!root)return; var walker=document.createTreeWalker(root,NodeFilter.SHOW_TEXT,null,false); var rm=[];var n; while((n=walker.nextNode())){ if(n.nodeValue&&RE.test(n.nodeValue)){rm.push(n);} } rm.forEach(function(t){ t.nodeValue=t.nodeValue.replace(RE,'').replace(/^\s+|\s+$/g,''); if(!t.nodeValue.trim())t.parentNode&&t.parentNode.removeChild(t); }); // also any comments left behind that contain only verification var cwalker=document.createNodeIterator(root,NodeFilter.SHOW_COMMENT); while((n=cwalker.nextNode())){ if(n.nodeValue&&/zen-verification/.test(n.nodeValue)){n.parentNode&&n.parentNode.removeChild(n);} } } function run(){strip(document.body);} if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded',run); }else{run();} // re-run after Tilda blocks paint setTimeout(run,500);setTimeout(run,1500); })();