v3 · 2026-05-01 · Soft Orange + Attention-driven

Дизайн-система АйДаКемп

Орientируется на Дарью 35-45, soft orange (как голова робота), photo-emotion вместо эффектов

Используются Bootstrap Icons (как и должно быть в production). Никаких эмодзи.

1. Философия

Не дизайнерская, а маркетинговая. Дизайн = инструмент конверсии.

Принцип 1: Photo emotion > graphic effects.
Дарья покупает «социально-одобряемое». Фото улыбающегося ребёнка работает в 10× раз сильнее, чем gradient orbs.
Принцип 2: Soft orange.
Brand-color #ec9b44 (голова робота), не #ec9b44. Hard orange = «реклама»; soft = «премиум».
Принцип 3: Avoid aggressive fills.
Где можно — outline вместо fill. Например, secondary CTA: border 1.5px orange вместо bg orange.
Принцип 4: Один accent per screen.
На каждом экране — 1 точка внимания. Если их 3, мама уходит. Это правило важнее эстетики.
Принцип 5: Информационные vs Конверсионные блоки.
Info-блоки (Reviews, About, FAQ) = navy + white, без orange. Conversion-блоки (Hero, Shifts, BookingBar) = soft orange acent.
Принцип 6: Конверсия = звонок.
Лучшие клиенты ЗВОНЯТ, не оставляют формы. Phone в header = главный CTA, должен быть всегда виден.
Принцип 7: Mobile-first.
Дарья на мобиле. Desktop = upscaled mobile с большими отступами, не наоборот.

2. Палитра

Soft orange (#ec9b44 — как голова робота) + navy + neutrals + 1 success accent.

Primary — soft orange (новый, светлее)

50
100
200
300
400
500 brand
600
700
800
900
950

Текущий #ec9b44 остаётся как алиас для совместимости, но в новых компонентах используем #ec9b44 (50950 шкала выше).

Navy — фон, тёмные секции

50
100
200
300
400
500
600
700
800
900
950 hero bg

Neutrals (текст, рамки) + success

white
gray-50
border
text-muted
text-body
text-strong
success
stars-only

Сравнение: Hard vs Soft Orange

Текущий (Hard #ec9b44)

«Реклама», агрессивно, крикливо

Новый (Soft #ec9b44)

«Премиум», спокойно, как у Apple/Stripe

3. Типографика

Mobile-first шкала. На десктопе — те же размеры × 1.2-1.5.

Hero H1Летний IT-лагерь38/44 · 800 · -0.03em
Section H2Как проходит смена26/32 · 700 · -0.02em
Card H3Программирование18/20 · 700
Body largeДети уезжают с готовым проектом18/18 · 400 · 1.5
BodyОсновной текст в статьях и описаниях смен16/16 · 400 · 1.65
CaptionМета, подписи, дата14/14 · 400
Label UCЗАПИСЬ ОТКРЫТА12/12 · 600 · 0.06em UC

Минимум на мобилке: 16px для body. Меньше — только caption/label/disclaimer.

4. Кнопки

3 уровня + правило: fill ТОЛЬКО для primary CTA. Остальное — outline/ghost.

Primary (1 на экран)

Soft orange fill. Только для конверсии.

Secondary

Outline orange + text dark.

Ghost (link-style)

Лёгкий border, для tertiary actions.

Phone (всегда наверху)

+7 (495) 128-44-29

Не fill. Просто текст с иконкой. Главный путь = звонок.

5. Блоки сайта — Info vs Conversion

Каждый блок имеет тип. Info = navy/white, без orange. Conv = soft orange accent.

INFORMATIONAL — закрывают страхи, дают доверие

1
Hero фотоЭмоция — улыбающийся мальчик
INFO Лицо ребёнка
2
Stats (7 лет / 1200 детей / 5.0)Социальное доказательство
INFO Цифры
3
About (что мы делаем)Кратко, фото, без воды
INFO Иконки + 3 факта
4
ReviewsОтзывы реальных мам с
INFO Лица + рейтинг
5
Mentors / TeamКому доверяешь ребёнка — фото и опыт
INFO Лица педагогов
6
Stay (размещение)Безопасность, корпуса, столовая
INFO Фото комнат
7
Trust (Лицензия / Медсестра / Страховка)Закрывает страх безопасности
INFO Иконки документов
8
FAQЗакрывает оставшиеся вопросы
INFO Вопрос/ответ

CONVERSION — вызывают действие

1
Phone в HeaderГлавный CTA — звонок
CONV Phone link
2
Age picker (главная цель Метрики)Первое осознанное действие
CONV 4 кнопки возраста
3
Hero CTA «Выбрать смену»Primary action на первом экране
CONV Soft orange button
4
Bot CTA «Спросите анонимно»Снимает страх спама
CONV Cycling word + ⛨ icon
5
Shifts (выбор смены + цены)Решение о покупке
CONV Цена + «Выбрать»
6
BookingBar (звонок-форма)«Перезвоним за 10 мин»
CONV Phone + Submit

6. Точки внимания на блок

Правило: 1 главная точка внимания на блок. Если 2 — глаз прыгает, конверсия падает.

БлокГлавная точкаЧем привлекаемЧто НЕ должно конкурировать
HeroЛицо мальчика + Phone в headerЭмоция фото + soft orange phoneНикаких других orange акцентов
Age picker4 кнопки возрастаSoft orange ring/borderНикаких баннеров рядом
ShiftsЦена + «Выбрать»Bold price + soft orange CTAНе выделять иконки rating ярко
Reviews rating + лицаYellow stars + photoНе делать orange CTA «Все отзывы»
About3 ключевых фактаBold цифры (navy, не orange)Никаких CTA
FAQСписок вопросовTight typography, читаемостьНикаких иллюстраций
BookingBarPhone number + SubmitPhone bold + soft orange buttonНе делать форму с 5 полями
FooterКонтактыPhone, email, адресНе дублировать CTA

7. Mobile vs Desktop — адаптивность

Mobile-first: сначала проектируем 390px, затем upscale до 1280px+.

ПараметрMobile (≤768px)Desktop (≥1024px)
Hero H138px / 800 / -0.03em56px / 800 / -0.04em
Section H226px36px
Body16px (мин!)16px (тот же — читаемость)
Section padding40px (py-10)64px (py-16)
Container max-widthfull width1280px (max-w-[1280px])
Cards в row1 col (stacked)2-3 cols (grid)
Header CTAPhone icon + burgerPhone full + nav-links + CTA
Hero photoFull bleed bg, soft maskRight column 50%, left text
Touch target44×44 min32×32 ok (mouse)

8. SEO / GEO / AEO — обязательные элементы

Каждый блок должен быть оптимизирован под Google/Yandex (SEO), AI-search (Perplexity/ChatGPT — GEO) и featured snippets (AEO).

Schema.org разметка по блокам

БлокSchema typeЧто внутри
Header / FooterOrganization + LocalBusinessname, url, logo, telephone, address, sameAs (соцсети), aggregateRating
HeroWebPage + BreadcrumbListname, description, primaryImageOfPage, breadcrumbs
Shifts (программы)Course + Offername, description, provider, offers (price, priceCurrency, availability, validFrom/validThrough)
ReviewsReview + AggregateRatingauthor, reviewBody, reviewRating, datePublished — minimum 5 reviews для rich snippet
FAQFAQPagemainEntity[] с Question/Answer — для Google FAQ rich snippet
Mentors / TeamPersonname, jobTitle, image, sameAs
Articles (блог)Article + Person authorheadline, datePublished, dateModified, author, image, articleSection
Stay / РазмещениеPlace + LodgingBusinessname, address, geo, amenityFeature
ContactsContactPointtelephone, email, contactType, areaServed, availableLanguage

Meta tags — обязательны на каждой странице

TagПравилаПример
title50-65 chars, ключ + брендЛетний IT-лагерь в Подмосковье 2026 — АйДаКемп
description140-160 chars, USP + цена + CTAПрограммирование, AI, бассейн. Смены с 30 мая. От 48 000 ₽. Налоговый вычет 13%.
canonicalАбсолютный URL, без trailing slash mismatch<link rel="canonical" href="https://aidacamp.ru/" />
og:image1200×630 webp, под 100kB/images/og-default.webp
og:title / og:descriptionМожет отличаться от meta для соцсетей
twitter:cardsummary_large_image
robotsindex,follow для всех публичных. noindex для /demo/, /admin/
html langru<html lang="ru">

Иерархия заголовков H1-H6

Правило: 1 H1 на страницу. H2 — основные секции (Shifts, Reviews, FAQ). H3 — подсекции/карточки. H4-H6 — редко.
ТегСколькоЧто внутри
H11 на страницу (НЕ больше)Главное ключевое слово + описание услуги: «Летний IT-лагерь в Подмосковье 2026»
H25-10 на страницуНазвания секций: «Как проходит смена», «Отзывы», «FAQ» — должны содержать LSI-ключи
H310-30Подсекции, заголовки карточек смен/отзывов/FAQ-вопросов

Mobile + Desktop hero — оба H1 в потоке (visible по соответствующему breakpoint). НЕ скакать через уровень (H1 H3 без H2).

Изображения — alt + lazy + format

ПравилоЧто
Format priorityAVIF WebP JPEG fallback (через <picture>)
Hero LCP imageloading="eager" fetchpriority="high" + <link rel="preload">
Below-fold imagesloading="lazy" decoding="async"
Alt textВсе meaningful images. Декоративные — alt="" + aria-hidden="true"
Width/heightОбязательно для предотвращения CLS
Srcset для responsiveМинимум 2 размера: -600w и -900w
Alt examplealt="Дети программируют на занятии в IT-лагере АйДаКемп, лето 2026" — описание + ключи

Internal linking

Из каждой страницы — минимум 3 внутренних ссылки на родственные landing pages (через RelatedPages компонент).
КонтекстКуда вести
Hero CTA#shifts — выбор смены
В тексте «программирование»/programmirovanie-dlya-detei/
В тексте «возраст 12 лет»/it-lager-12-let/
FAQ ответыНа статьи /stati/ и спец. landing
FooterКарта сайта, политики, документы

Core Web Vitals — мобильные цели

МетрикаЦель GoogleНаш SLA
LCP (Largest Contentful Paint)< 2.5s< 2.0s — hero photo preload
INP (Interaction to Next Paint)< 200ms< 150ms — нет тяжёлых JS
CLS (Cumulative Layout Shift)< 0.1< 0.05 — все img с width/height
TTFB< 0.8sSSR на VPS, nginx с brotli

GEO — Generative Engine Optimization (для Perplexity/ChatGPT/Gemini)

Принцип GEO: AI-поисковики цитируют конкретные факты, цифры, citations. Структурируем контент так, чтобы AI мог взять короткий блок и процитировать.

AEO — Answer Engine Optimization (featured snippets)

Тип snippetКак попадаем
Paragraph snippetПрямой ответ в 40-60 словах сразу под H2-вопросом
List snippetНумерованный/маркированный список под вопросом «Как…»
Table snippetHTML <table> для сравнений (цены смен, возрастные группы)
Video snippetYouTube embed + VideoObject Schema с transcript
FAQ Schema rich snippetТолько если > 4 вопросов с реальными ответами
People Also AskВключаем в FAQ типичные «А правда что…», «Можно ли…», «Как…»

Технические SEO-правила

ФайлЧто должно быть
robots.txtAllow: /, Disallow: /demo/, /admin/, /api/. Sitemap: /sitemap.xml
sitemap.xmlAuto-generated через @astrojs/sitemap. Все public pages с lastmod
404.htmlCustom + ссылки на главные страницы
htaccess / nginx301 redirects старых URL, brotli/gzip compression
hreflangНе нужен (только ru)
IndexNowAPI ping в Yandex/Bing при добавлении новых страниц

SEO Checklist для каждого нового блока/страницы

9. Порядок блоков — на данных Метрики

Воронка за 30 дней: 2827 человек вошли в hero 692 (24%) выбрали возраст 6 (0.2%) отправили форму. Перестраиваем block order под реальное поведение.

Реальная конверсия по целям (последние 30 дней)

ДействиеReaches% от enteredТип
Scroll 25% (entered hero)2827100%baseline
Scroll 90% (full view)144551%engagement
Выбор возраста69224% conv #1 — главная цель оптимизации
Открыл инфо о смене2217% conv #2
Посмотреть смены1856% conv #3
«Выбрать смену»1154% conv #4
Нижняя плашка возраста763% conv #5
FAQ открыто742% info high
Открытие фото602% info
Клик телефон (auto+manual)481.7% conv #6
Открытие видео250.9% info low
Отправка заявки60.2% conv DEAD

Текущий order (21 блок) vs Рекомендованный

Сейчас (хаос)

  1. Hero
  2. ShiftOccupancy + MomStory
  3. About
  4. Journey
  5. Economy (налоговый вычет)
  6. BookingBar #1
  7. SoftStart
  8. Shifts главная цена тут
  9. BookingBar #2
  10. SummerCta
  11. Hackathon
  12. Gallery
  13. Videos мёртвый блок 0.9%
  14. Reviews опаздывает
  15. FAQ опаздывает
  16. Team
  17. Mentors дубль с Team
  18. Stay
  19. Contacts
  20. SeoTextBlock
  21. RelatedPages

Предлагаю (на данных)

  1. Hero — фото + age_picker (24% conv) + phone в header
  2. ShiftOccupancy — «осталось N мест» (urgency)
  3. Shifts поднимаем! Цены + «Выбрать»
  4. Reviews + rating поднимаем! Соц. proof
  5. About — что мы делаем
  6. Journey — как проходит смена
  7. Trust block (Лицензия/медсестра/страховка) новый отдельный блок
  8. MomStory — эмоция мамы
  9. Mentors+Team (объединить!)
  10. Stay — где живут дети (закрытие страха)
  11. FAQ поднимаем! 2% conv
  12. Economy — налоговый вычет (рациональная мама)
  13. BookingBar (1 шт., финальный «Перезвоним»)
  14. Gallery — soft sell, фото впечатлений
  15. Hackathon — что в финале (бренд)
  16. Videos — оптально, либо удалить
  17. SoftStart — мини-пример
  18. SummerCta
  19. Contacts — финал
  20. SeoTextBlock — для поисковиков
  21. RelatedPages — internal linking

Принцип: 3 «волны» внимания

Wave 1 (Hero + Shifts + Reviews): закрываем главную задачу — «куда деть ребёнка летом» через emotion + цена + соц. proof. Большинство converters в первых 3-х блоках.
Wave 2 (About Trust Mentors Stay): закрываем страхи безопасности и доверия. Дарья «холодно» оценивает.
Wave 3 (FAQ Economy BookingBar): финальное снятие возражений + рациональный закрывающий аргумент (вычет 13%) + последний CTA.

Что предлагаю удалить или сократить

Videos0.9% conv. Если нет, освобождаем место для важного
BookingBar #2 (дубль)Один достаточно. Дублирование = распределение клика 50/50
Mentors отдельно от TeamОбъединить — оба про людей, экономия скролла
SoftStart, SummerCta, HackathonПод вопросом — измерять отдельно. Возможно объединить в 1 блок «что в смене»

10. Метрика-цели — обязательны для каждого CTA

Каждое действие = trackable goal. Без событий — нет данных для оптимизации Директа/VK.

Текущие активные цели

ЦельIDЧто отслеживаетГде навешано
Выбор возраста-new541048270 Главная цель оптимизации ДиректаAge picker (4 кнопки), Нижняя плашка
Открыл инфо о сменеКлик карточки сменыShifts cards
Посмотреть сменыКлик «Подробнее»Shifts
Кнопка «Выбрать смену»Финальное действиеShifts CTA
Открытие FAQ-newКлик аккордеонаFAQ
Открытие видео-new / фото-newLightbox openGallery / Videos
Автоцель: клик по номеру телефонаautoЛюбой tel: linkHeader, Footer, BookingBar

Naming convention для новых целей

Формат: {Действие}-{Контекст}-{Версия}. Пример: «Клик-БотCTA-v3», «Открытие-AgePopup-v2». Версия меняется при изменении дизайна — старые данные сохраняются.

Чек-лист: каждый новый CTA должен иметь

11. Brand Voice — тон коммуникации

Язык — главный носитель ощущения «я хорошая мама». Каждое слово работает на это.

Тон голоса — характеристики

ПараметрУровеньПояснение
ФормальностьНизкаяНа «вы», но как подруга, не как банк
ЭмоциональностьСредняяТёплая забота, без слащавости
ЮморЛёгкийУместная ирония, никогда сарказм
ЭкспертностьСкрытаяНе говорим «эксперты», показываем фактами
СрочностьТочечная«Осталось 14 мест», но не «СПЕШИТЕ!!»
НазиданиеЗапрещеноНикогда не учим маму как воспитывать

Работает (тон «Пивоваров»)

Подтверждение принципа: мы коммуницируем правду без провокаций любопытства. «Анонимно», «налоговый вычет 13%», «без телефонов» — это факты, а не триггеры тревоги. Не «А вы знали...?», не «Узнайте секрет...», не «Что скрывают другие лагеря...». Просто прямо — что есть.

Принцип Пивоварова: «Решение всегда остаётся за вами. Мы посоветуем, расскажем, поможем — но выбор ваш. Мы вас за это ценим». Не давим, не звонят, не торопим — уважаем взрослого человека.

Не работает (закрывает кошелёк / запрещено)

Микрокопирайтинг — конкретные правила

КонтекстШаблон
CTA primary«Глагол + объект» — «Выбрать смену», «Узнать цены», «Спросить про…»
CTA secondaryПодтверждение действия — «Узнать больше», «Посмотреть фото»
Form labelsЧто-нужно-сделать вместо что-это-такое: «Как вас зовут?» вместо «Имя*»
Error messages«Похоже, телефон не записался — проверим?» вместо «Ошибка: invalid input»
Empty states«Тут пока пусто — посмотрите смены лета 2026» вместо «No data»
Loading«Считаем места…» вместо «Loading…»
Confirmation«Отлично! Перезвоним за 10 минут» вместо «Спасибо, заявка принята»

Слова-маркеры что нельзя

«безусловно», «качественный», «настоящий», «каждый ребёнок», «современный», «инновационный», «гарантия», «эксклюзивный», «уникальный», «лидер», «топовый» — все эти слова сигнализируют о слабом продукте.

12. Доступность (a11y) — что это и зачем

a11y = accessibility (a + 11 букв + y = «доступность»). Сайт должен работать для людей с инвалидностью: слабовидящих, слепых, моторных нарушений.

Зачем нам:
1. SEO: Google ранжирует выше доступные сайты
2. +5% аудитории: у мам бывают слабовидящие родители (бабушки) которые помогают выбирать лагерь
3. Закон: ФЗ «О защите прав потребителей» обязывает делать инфо доступным
4. Mobile UX: крупные touch targets выгодны и без инвалидности

WCAG 2.1 AA — минимум для прода

КритерийЧто значитКак проверить
Contrast 4.5:1Обычный текст должен иметь контраст ≥4.5:1 с фономWebAIM Color Checker
Contrast 3:1Большой текст (18px+ или 14px+ bold) — минимум 3:1Тоже WebAIM
Touch targets 44×44Кнопки на мобиле минимум 44×44px (Apple HIG)Просто измерить
Alt textВсе meaningful images имеют altLighthouse a11y audit
Focus visibleTab по клавиатуре подсвечивает элементTab в браузере
aria-labelКнопки только с иконкой имеют aria-labelCode review
Form labelsКаждый input имеет связанный Lighthouse
Heading hierarchyH1 H2 H3 без перескоковheadingsMap extension
Lang attribute<html lang="ru">View source
Reduced motionУважать prefers-reduced-motionSystem preference тест

Что у нас проблемно сейчас

Инструменты для проверки

13. Микроанимации — радуют, не отвлекают

Принцип: анимация работает на UX (даёт feedback, обозначает состояние), а не на «красиво».

Можно — функциональные анимации

ГдеЧтоДлительность
Hover на кнопкахTailwind hover:-translate-y-[1px] + shadow200ms ease-out
Active на кнопкахactive:translate-y-0 + opacity 0.9100ms
Открытие FAQ accordionheight 0 auto + chevron rotate 180°250ms ease-in-out
Modal появлениеopacity 01 + scale(0.951) + backdrop fade200ms
Fade-in при scrollIntersectionObserver, opacity 01 + translateY 120400ms ease-out
Cycling text в ботеopacity 01 со сменой слова200ms, цикл 2.2s
Pulse на «Запись открыта»opacity 0.6↔1 + scale(1↔1.3)1.5s infinite, но ТОЛЬКО 1 элемент

Можно умеренно — декоративные анимации

Запрещено категорически

Performance rules

Animatable propertiesТолько transform (translate/scale/rotate) и opacity
FPS target60 FPS на iPhone SE 1st gen (8 лет старого устройства)
Длительность150-300ms для micro, 400-600ms для большие переходы
Easingease-out для появления, ease-in-out для toggle
prefers-reduced-motionВсе анимации respect @media (prefers-reduced-motion: reduce) и отключаются для пользователей с настройкой «уменьшать движение» в системе

«Радуют» — где конкретно

14. USP — что подсвечиваем (главные differentiators)

3 штуки которые отличают нас от 100 других лагерей. Везде и всегда.

1. Отрыв от телефонов — наша философия.
В отличие от других лагерей, мы НЕ про телефоны. Очень легко занять детей телефоном — поиграл-позавтракал-всех в телефоны, после ужина 2 часа английского — снова в телефоны. Мы делаем осознанно по-другому. Мы лагерь не для всех — для думающих родителей, кто хочет показать ребёнку другую сторону жизни.
2. Экономика (налоговый вычет 13%).
Не «дешевле всех» (это не правда), а «можно вернуть 13% через ФНС». Это рациональный аргумент для папы, который принимает финальное решение по бюджету. Документы для вычета даём автоматически.
3. Внутренняя экономика — реальный AI-проект.
«Ваш сделает AI-проект» — не курсы по «информатике», а реальный продукт за 7-14 дней. Игра, бот, сайт — что-то конкретное, что можно показать в чате с подругами / на родительском собрании.

Где подсвечивать каждое USP

USPГдеКак
Отрыв от телефоновHero subtitle, About, отдельный блок «Наша философия», в FAQНе «без телефонов» (звучит как наказание), а «другая сторона» (звучит как опыт)
Налоговый вычетHero (микро-метка), Shifts (под ценой), Economy (отдельный блок), FAQКонкретные суммы по сменам: ~2 800 / 4 800 / 5 434 ₽
AI-проектHero subtitle, Journey, Hackathon (что в финале)Показывать реальные проекты прошлых смен с фото/видео

Tone of voice для USP

15. Customer Journey — «скользкая горка»

Каждый блок заканчивается крючком — вопросом, который заставляет идти дальше. Цель: чтобы мама не остановилась, а проскользнула до конца.

Принцип «скользкой горки» (Sugarman): Конец каждого блока должен быть таким, что хочется читать следующий. Вопрос, незавершённое утверждение, обещание ответа.

Простые навигационные подсказки (БЕЗ провокаций любопытства)

Принцип Пивоварова: просто называем что дальше. Без «Сомневаетесь?», «А вы знали?», «Хотите узнать?». Прямая коммуникация — взрослые сами решат идти или нет.

БлокЗаканчивается наВедёт к
HeroВозраст ребёнка Age picker
Age pickerПодходящие смены Shifts (filtered)
ShiftsКак проходит день в смене Journey
JourneyХакатон в финале смены Hackathon / About
AboutКоманда и менторы Team+Mentors
Team+MentorsРазмещение и безопасность Stay + Trust
Stay+TrustОтзывы родителей Reviews
ReviewsСтоимость и налоговый вычет Economy
EconomyЧастые вопросы FAQ
FAQНе нашли ответ — спросите анонимно Anon Q&A CTA

3 типа путей клиента (на основе Метрики)

ПутьСценарийДлина
1. Быстрый (~24% — главный)Hero Age picker Shifts Звонок3-4 экрана, 1-2 минуты
2. Глубокий (~7%)Hero Age Shifts Journey Reviews FAQ Звонок10-15 минут
3. Параноик (~3%)Hero Все блоки FAQ Анон бот Яндекс.Карты Звонок мужу2-3 сессии

Где явные сигналы навигации

16. Меню — что отображать (сейчас часть, нужно пересобрать)

Сейчас в меню часть пунктов важных, часть нет, и не все блоки представлены. Пересобираем по приоритетам.

Текущее меню — критика

ПунктЕсть в меню?Нужен?
О лагере Да Да
Смены Да Да
Фото Да На отдельную страницу
Как проходит смена Да (под more) Да
Видео Да (под more) На отдельную страницу + редко
Отзывы Да Да
FAQ Да Да
Команда Да Да (с менторами вместе)
Размещение Да Да
Контакты Да Да
Цены / Налоговый вычет НЕТ Должно быть!
Философия / Без телефонов НЕТ Должно быть! USP #1
Документы / Лицензия НЕТ Должно быть (страх безопасности)
Поиск по сайту НЕТ Полезно для глубокого пути

Предлагаю новое меню

УровеньПункты
Top (mobile + desktop)Смены · Цены · Философия · Спросить анонимно
📂 More (dropdown)О лагере · Как проходит смена · Команда · Размещение · Отзывы · FAQ · Документы
📁 Footer (sitemap)Все основные + Фото · Видео · Контакты · Политика · Пользовательское
SearchИконка лупа в header — поиск по статьям/FAQ/смене

17. Отдельные страницы (что выносим с главной)

Чтобы главная грузилась быстрее (LCP < 2s) и была сфокусирована — выносим тяжёлый контент.

Кандидаты на вынос

БлокКудаЗачем
Gallery (фото)/foto/ или /galereya/10-30 фото лагеря, занимает много места + load time
Videos/video/YouTube embed = тяжёлый load. Конверсия 0.9% — не оправдывает место на главной
Mentors (детально)/komanda/На главной кратко (3-4 фото), полная команда — внутри
Документы / Лицензия/dokumenty/ (уже есть!)Просто ссылка из trust-блока + footer
Stay (детально)/razmeshenie/На главной — 1 фото + ключи. Полная инфа — внутри

Эффект: главная сократится с ~21 блока до ~12. Time to interactive улучшится в 1.5-2x.

18. Бронирование — внутри карточек, не отдельный блок

Убираем BookingBar (2 шт. сейчас на главной). Бронирование появляется ТОЛЬКО внутри выбранной смены, после выбора возраста.

Принцип: «Не назойливо». Не толкаем человека «Звоните! Пишите!». Кто хочет — позвонит сам (телефон в header). Кто хочет глубже — выберет возраст выберет смену внутри смены увидит «Забронировать».

Новый flow бронирования

ШагЧто показываем
1. Hero Age picker«Подходит ли возраст?» 4 кнопки
2. Shifts (filtered)Карточки смен подходящих по возрасту
3. Клик на смену ModalДетали + цена + что включено
4. Inside Modal«Забронировать» кнопка появляется ТУТ, не раньше
5. Booking formМинимум полей. Имя + телефон + email опционально

Что убираем

Что оставляем для звонящих

19. Бот — никогда не называем «бот»

42% россиян не оставляют контакты на сайтах из-за страха спама. Слово «бот» = «опять менеджер заберёт телефон». Используем «спросите анонимно».

Формулировки

Запрещено Нужно
«Спросите бота»«Спросите анонимно»
«Чат-бот ответит»«Получите ответ за минуту»
«AI-помощник»«Узнайте всё про лагерь»
«Telegram-бот»«Через мессенджер»
«Напишите боту»«Спросите про лагерь / еду / минусы»

CTA для бота

СПРОСИТЕ ПРО

минусы

Анонимно, без регистрации

Cycling words (нейтральные, без провокаций любопытства): лагерь · еду · бассейн · размещение · стоимость · программу · безопасность. Убрали: «минусы», «косяки», «правду о ценах» — это провокация любопытства, не наш tone. Просто перечисляем темы.

UX-детали — конкретные правила

Список конкретных UX-улучшений из обратной связи — что важно для нашего сайта.

Sticky bottom CTA на mobile

Когда mobile-юзер проскролил Hero и не выбрал возраст — снизу появляется sticky-bar с выбором возраста (главная цель Метрики, ID 541048270). НЕ «Выбрать смену» — потому что age_picker идёт первым в воронке. После выбора возраста sticky меняется на «Выбрать смену».

Skeleton loading — что это

Skeleton = серые placeholder'ы (полоски и круги) которые показываются пока контент грузится. Создаёт ощущение что страница «жива», даже если интернет медленный.

Где НЕ нужны:

Где нужны:

Бот — error states не нужны

Если бот недоступен — бот сам скажет «Извините, я временно не отвечаю, перезвоните по ...». Не делаем UI-уведомлений на сайте.

Back-to-top button

ПараметрЗначение
Когда появляетсяПосле прокрутки > 800px
ГдеSticky right bottom (mobile: bottom-right; desktop: bottom-right с margin)
Размер44×44px (touch-friendly), круглая
Иконкаbi-arrow-up (Bootstrap Icons)
СтильSoft white/glass, не яркая (ненавязчивая)
АнимацияFade-in 200ms когда появляется. Smooth scroll-to-top при клике

404 страница — «Возможно вы искали»

Что должно быть
1. Большой H1: «Эта страница переехала или удалена»
2. «Возможно вы искали:» список из 5-7 популярных страниц
3. Поиск по сайту (input)
4. Кнопка «На главную»
5. Phone в header (если хочет позвонить)

Поиск по сайту

Иконка лупа в header (после телефона). Клик открывает overlay с полем поиска. Ищет по: статьям /stati/, FAQ-вопросам, названиям смен. Используем Pagefind (open-source, статический) — не требует backend.

Mobile keyboard — viewport jump

Когда mobile-клавиатура поднимается, viewport сжимается kнопки уезжают / контент перекрывается. Решение:
html { height: 100%; } body { min-height: 100svh; } + visualViewport API для критичных форм.

Mail.ru webview — dead clicks

Mail.ru использует свой WebView, в котором <details/summary> часто не работает (dead clicks). Используем <button data-faq-toggle> + JS для accordion'ов.

Photo Gallery — отдельная страница, премиум

URL/foto/
LayoutMasonry grid (Pinterest-style), 2 col mobile / 4 col desktop
LightboxSwipe для переключения, pinch zoom, ESC для закрытия
Lazy loadingIntersection Observer, грузить по мере скролла
Image formatAVIF + WebP fallback, multiple sizes (300w/600w/1200w)
КатегорииTabs: «Занятия», «Бассейн», «Природа», «Хакатон», «Команда»
PerformanceInitial load: только превью первого экрана

Программа смены — печать в PDF

Папа распечатает программу — должна красиво лечь на A4. Используем @media print stylesheet. Скрываем nav/footer/CTA, оставляем только программу с большими полями для заметок.

Дата формат: ВСЕГДА «30 мая»

Неправильно Правильно
30.05.202630 мая 2026
May 3030 мая
30/0530 мая
2026-05-3030 мая 2026 (для людей)

В <time datetime="2026-05-30">30 мая 2026</time> — ISO в атрибуте, человеческий формат внутри.

Контакты — порядок везде ОДИНАКОВЫЙ

  1. Phone +7 (495) 128-44-29 — главный канал
  2. Telegram — наш основной мессенджер для общения
  3. WhatsApp — второй мессенджер для тех кто не Telegram
  4. Email hello@codims.ru — для документов

НЕ менять порядок! Telegram всегда перед WhatsApp.

Уведомление о наполненности — уже есть

ShiftOccupancy.astro — «Осталось N мест» — компонент уже работает. Не дублируем функционал.

22. Чего категорически не делать

Hard orange #ec9b44 в новых компонентах. Используй #ec9b44 (soft).
Iridescent / multi-hue gradients. Pink, violet, cyan — не наша палитра. Только soft orange + navy.
Несколько orange CTA на одном экране. Только 1 primary. Остальное — outline/ghost.
Эмодзи в UI. Только Bootstrap Icons.
Жёсткие края фото в hero. Soft mask или vignette.
Pulse-animation на множестве элементов. Только 1, и pacing 4-5с (не 1.5).
Текст < 16px на mobile body. Safari делает auto-zoom, ломает UX.
Inline стили style="color:...". Только Tailwind tokens.
Назидание / экспертный тон. Дарья закрывает кошелёк. Лёгкий тон подруги.
«Перезвоним за 10 минут», «Самые выгодные цены», «Лучшее предложение». Мусорные обещания, у всех такие, не верят.
Слова «дети», «ребёнок» где можно избегать. Заменять на «ваш», «он/она», «подросток» — звучит более adult и менее назидательно.
Слово «бот» в любой форме. 42% россиян боятся, что у них заберут контакты. «Спросите анонимно» вместо «Спросите бота».
Везущие призывы «Звоните!», «Пишите!», «Запишитесь!» Тон Пивоварова: «Решение остаётся за вами. Мы посоветуем, но выбор ваш».
BookingBar как отдельный блок. Бронирование появляется ТОЛЬКО внутри карточки смены, после выбора возраста.

v3 · 2026-05-01 · Soft Orange + Attention-driven · АйДаКемп

Сколько лет ребёнку? — покажем смену с ровесниками

Заявка отправлена!

Свяжемся в течение 10 минут

Те, кто едет в компании, адаптируются вдвое быстрее

Позовите друга — подарим фирменный мерч каждому

Каждая 5-я — скидка 50% Каждая 10-я — за 100 ₽