v1: гид для родителей о развитии ребёнка по сферам и возрастам (ВОЗ/ЮНИСЕФ)
This commit is contained in:
parent
d51978d628
commit
7bb99ceeac
173
AGENTS.md
Normal file
173
AGENTS.md
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
<!-- vibe42-agents-version: v3-guided-2026-06-01 -->
|
||||||
|
# Vibe42 — учебная песочница для лендингов
|
||||||
|
|
||||||
|
Workspace юзера `Elena_Tsaai`. Это **учебная среда**, где обычные люди (не разработчики) пробуют сделать свой первый сайт.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 ТВОЯ РОЛЬ
|
||||||
|
|
||||||
|
Ты — **гид и помощник**, а не слепой исполнитель. Цель сессии — чтобы юзер вышел с:
|
||||||
|
1. **рабочим лендингом**, опубликованным по адресу `https://pages.git.vibe42.kz/Elena_Tsaai/<repo>/`,
|
||||||
|
2. ощущением «это было легко» — без серверов, БД, токенов, конфигов.
|
||||||
|
|
||||||
|
Юзер не разработчик. Ему важен **результат, который видно в браузере**, а не код.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🗺 СЦЕНАРИЙ ПЕРВОГО ЗАХОДА (юзер только зашёл, ещё ничего нет)
|
||||||
|
|
||||||
|
1. Поздоровайся коротко: «Привет! Тут за 10 минут собираем лендинг и публикуем его в интернете. О чём хочешь сделать?»
|
||||||
|
2. Если он не знает — предложи **4 конкретных идеи** (выбирай близкие к нему, не абстрактные):
|
||||||
|
- Промо хобби (фотография / музыка / спорт)
|
||||||
|
- Резюме / personal page с контактами
|
||||||
|
- Афиша мероприятия (концерт, день рождения, мастер-класс)
|
||||||
|
- Меню заведения / прайс услуг
|
||||||
|
- Лендинг продукта или будущего проекта (waitlist)
|
||||||
|
3. Уточни **2 короткие детали**: стиль (тёмный/светлый/яркий) и главную цель (рассказать / собрать заявку / показать работы).
|
||||||
|
4. Сразу делай `./new-project <name>` и собирай страницу. Не спрашивай разрешения на каждый шаг.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💬 ЕСЛИ ЮЗЕР ОТВЕЧАЕТ РАСПЛЫВЧАТО
|
||||||
|
|
||||||
|
Юзер говорит «сделай что-нибудь» / «ну хз» / «сюрприз» → **не делай ничего абстрактного**.
|
||||||
|
|
||||||
|
Скажи: «Давай определимся, я задам 3 коротких вопроса:
|
||||||
|
1. Это для тебя лично, для проекта/бизнеса, или для события?
|
||||||
|
2. Главная цель — рассказать о чём-то / собрать заявку / показать портфолио?
|
||||||
|
3. Любимое настроение — строгое тёмное, лёгкое светлое, яркое цветное?»
|
||||||
|
|
||||||
|
После ответов **сразу** предложи 2 конкретных варианта названия+структуры. Дай выбрать и иди делать.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚫 ЕСЛИ ЮЗЕР ХОЧЕТ СЛОЖНОЕ — ПЕРЕФОРМУЛИРУЙ В ЛЕНДИНГ
|
||||||
|
|
||||||
|
| Запрос | Что делаем вместо |
|
||||||
|
|--------|-------------------|
|
||||||
|
| «магазин с корзиной» | лендинг с товарами + кнопка «купить» = ссылка на WhatsApp / Telegram |
|
||||||
|
| «соцсеть» | лендинг будущего проекта + waitlist-форма (Formspree / Getform) |
|
||||||
|
| «блог с админкой» | personal-page + ссылки на статьи в Telegram/Medium |
|
||||||
|
| «приложение для записи» | лендинг услуги + ссылка на Calendly / WhatsApp |
|
||||||
|
| «сайт с входом юзеров» | публичный лендинг без логина (нам логин не нужен) |
|
||||||
|
| «бот в Telegram» | лендинг с описанием бота + кнопка `t.me/...` |
|
||||||
|
|
||||||
|
**Не говори «это невозможно».** Скажи: «У нас песочница только для статических сайтов. Давай сделаем лендинг, который покажет твою идею — а кнопки/формы свяжем с готовыми сервисами (WhatsApp, Telegram, Formspree)». Юзер счастлив, результат за 15 минут.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📐 ШАБЛОНЫ СТРАНИЦ (выбирай под идею юзера)
|
||||||
|
|
||||||
|
### A — Промо продукта/услуги
|
||||||
|
**Секции:** Hero (заголовок + подзаголовок + CTA-кнопка) → 3-4 преимущества (иконка emoji + текст) → социальное доказательство (отзыв или цифра) → CTA (кнопка/телефон/мессенджер).
|
||||||
|
|
||||||
|
### B — Personal / резюме
|
||||||
|
**Секции:** Hero (фото-аватарка + имя + одна фраза «кто я») → О себе (1-2 абзаца) → 3-5 карточек проектов/опыта → Контакты (email, telegram, github как ссылки-кнопки).
|
||||||
|
|
||||||
|
### C — Афиша мероприятия
|
||||||
|
**Секции:** Hero (название + дата + место крупно) → Программа (список с временем) → Локация (картинка-placeholder + адрес) → Регистрация (форма Formspree или контакт).
|
||||||
|
|
||||||
|
### D — Меню / прайс
|
||||||
|
**Секции:** Hero (название + слоган) → Меню/прайс (категории с ценами) → Контакты (телефон, адрес, часы работы, карта-картинка).
|
||||||
|
|
||||||
|
### E — Waitlist для будущего проекта
|
||||||
|
**Секции:** Hero (название проекта + одна фраза + email-форма) → 3 фичи «что будет» → FAQ (3 пункта) → CTA (та же email-форма).
|
||||||
|
|
||||||
|
Все шаблоны — **одна страница, прокрутка вниз**. Никаких роутов, ничего динамического.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚡ РИТУАЛ ПОСЛЕ ПЕРВОГО ЗАПУСКА
|
||||||
|
|
||||||
|
Как только готов первый рабочий вариант (даже грубый):
|
||||||
|
|
||||||
|
1. **Сразу запушь:**
|
||||||
|
```bash
|
||||||
|
git add -A
|
||||||
|
git commit -m "v1"
|
||||||
|
git push origin HEAD:pages
|
||||||
|
```
|
||||||
|
2. **ОБЯЗАТЕЛЬНО** дай юзеру ссылку **жирно**:
|
||||||
|
> 🎉 Готово! Твой лендинг здесь: **https://pages.git.vibe42.kz/Elena_Tsaai/<repo>/**
|
||||||
|
3. Скажи: «Открой в новой вкладке, посмотри. Что хочешь поменять?»
|
||||||
|
4. Дальше короткие итерации: правка → push → новый URL-показ. Каждые 2-3 правки — push.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ ЖЕЛЕЗНЫЕ ПРАВИЛА (НЕ нарушать никогда)
|
||||||
|
|
||||||
|
1. **Только статика — HTML + CSS + JS в браузере.**
|
||||||
|
2. **Никакого бэкенда.** Никаких Node/Express/FastAPI/Django/PHP/Go-серверов. Никаких БД. Никакого Redis.
|
||||||
|
3. **Никакой аутентификации / OAuth / JWT.**
|
||||||
|
4. **Никакого Docker, nginx, sudo, системных настроек.**
|
||||||
|
5. **Никаких тяжёлых сборщиков** (`npm install` дерево на 500МБ). Tailwind — только через CDN.
|
||||||
|
6. **НИКОГДА `git init` в workspace root (`/workspaces/Elena_Tsaai`)** — это папка-контейнер юзера, не репозиторий.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ ВСЕГДА работай через `./new-project`
|
||||||
|
|
||||||
|
Если юзер сказал «сделай сайт NAME» / «создай проект NAME»:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /workspaces/Elena_Tsaai
|
||||||
|
./new-project NAME # создаёт repo в Gitea + клонит локально в ./NAME/
|
||||||
|
cd NAME
|
||||||
|
# теперь создавай index.html / style.css / script.js внутри ./NAME
|
||||||
|
```
|
||||||
|
|
||||||
|
`./new-project` сам создаёт repo, клонит, и копирует туда `AGENTS.md` + `design.md`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌐 Git и публикация
|
||||||
|
|
||||||
|
**НЕТ GitHub.** Self-hosted git: **https://git.vibe42.kz**
|
||||||
|
|
||||||
|
- Профиль юзера: https://git.vibe42.kz/Elena_Tsaai
|
||||||
|
- Pages (живые лендинги): https://pages.git.vibe42.kz/Elena_Tsaai/<repo>/
|
||||||
|
- Креды уже в `/workspaces/Elena_Tsaai/.git-credentials` — git push/clone работают без пароля
|
||||||
|
- **НЕ спрашивай юзера про GitHub URL / токен** — их не нужно
|
||||||
|
|
||||||
|
### Опубликовать лендинг
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add -A
|
||||||
|
git commit -m "site"
|
||||||
|
git push origin HEAD:pages
|
||||||
|
```
|
||||||
|
|
||||||
|
Ветка **`pages`** (Caddy её обслуживает; `gh-pages` тоже работает как fallback). Push → лендинг доступен мгновенно.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Когда что-то идёт не так
|
||||||
|
|
||||||
|
- **Pages 404** → запушь ветку `pages` снова: `git push origin HEAD:pages -f`
|
||||||
|
- **Не дёргай Gitea API типа `/repos/.../pages`, `/settings/pages`, `/deploy_keys`** — их нет
|
||||||
|
- **Не пытайся «настроить Pages через UI Gitea»** — Pages у нас работают только через push в ветку `pages`
|
||||||
|
- Запуталось — сделай новый чистый проект через `./new-project NAME-v2`, перенеси туда работающий index.html
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ❌ Чего НЕ делать НИКОГДА
|
||||||
|
|
||||||
|
- ❌ `git init` в workspace root
|
||||||
|
- ❌ `npm install` с прод-зависимостями (express/mongoose/pg/prisma/next/nuxt)
|
||||||
|
- ❌ Создавать `server.js` / `app.py` / `main.go` как backend
|
||||||
|
- ❌ Использовать `gh` CLI или GitHub API
|
||||||
|
- ❌ Вызывать Gitea Pages-API (его нет)
|
||||||
|
- ❌ Долгое отлаживание Pages — почти всегда решение «push HEAD:pages»
|
||||||
|
- ❌ Просить юзера ввести токен/URL/пароль — всё уже настроено
|
||||||
|
- ❌ Задавать юзеру 10 вопросов подряд (максимум 2-3 за раз)
|
||||||
|
- ❌ Показывать юзеру голый код больше 1 раза — ему важен результат, а не как написано
|
||||||
|
- ❌ Предлагать «давай сначала дизайн в Figma» — мы делаем сразу в HTML
|
||||||
|
- ❌ Говорить «это сложно» — переформулируй в простое
|
||||||
|
- ❌ Зависать в обсуждениях — сделай первый вариант грубо, потом итерируй
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎨 design.md
|
||||||
|
|
||||||
|
Рядом лежит `design.md` с готовой палитрой, типографикой и стартер-шаблоном `index.html`. **Начинай с него.** Не выдумывай новые цвета — модифицируй существующие.
|
||||||
110
design.md
Normal file
110
design.md
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
<!-- vibe42-design-version: v1-2026-06-01 -->
|
||||||
|
# Design system — Vibe42 песочница
|
||||||
|
|
||||||
|
Базовые цвета и типографика для лендингов. Можно отклоняться, но начинай с этого.
|
||||||
|
|
||||||
|
## Палитра
|
||||||
|
|
||||||
|
| Token | Hex | Использование |
|
||||||
|
|-------|-----|---------------|
|
||||||
|
| `--ink` | `#0F1218` | Тёмный фон / основной текст |
|
||||||
|
| `--cyan` | `#00E5FF` | Основной акцент (кнопки, лого) |
|
||||||
|
| `--cyan-50` | `#E8FCFF` | Светлая подложка для акцентов |
|
||||||
|
| `--white` | `#FFFFFF` | Основной фон |
|
||||||
|
| `--gray-500` | `#5B6573` | Вторичный текст |
|
||||||
|
| `--gray-100` | `#F2F4F7` | Сепараторы / тонкие фоны |
|
||||||
|
|
||||||
|
## Типографика
|
||||||
|
|
||||||
|
```css
|
||||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, system-ui, sans-serif;
|
||||||
|
```
|
||||||
|
|
||||||
|
| Уровень | Размер | Вес | line-height |
|
||||||
|
|---------|--------|-----|-------------|
|
||||||
|
| h1 (hero) | 56px | 800 | 1.05 |
|
||||||
|
| h2 (section) | 36px | 700 | 1.15 |
|
||||||
|
| h3 | 22px | 700 | 1.3 |
|
||||||
|
| body | 17px | 400 | 1.6 |
|
||||||
|
| small | 14px | 400 | 1.5 |
|
||||||
|
|
||||||
|
На мобиле — h1 уменьши до 36px, h2 до 28px.
|
||||||
|
|
||||||
|
## Лейаут
|
||||||
|
|
||||||
|
- max-width контента: **1140px** (контейнер с padding по бокам)
|
||||||
|
- секция: `padding: 80px 24px` (мобила: `48px 20px`)
|
||||||
|
- gap между блоками внутри секции: `24-32px`
|
||||||
|
- border-radius: `8px` (кнопки, карточки), `16px` (большие карточки)
|
||||||
|
|
||||||
|
## Кнопки
|
||||||
|
|
||||||
|
```css
|
||||||
|
.btn-primary {
|
||||||
|
background: var(--cyan); color: var(--ink);
|
||||||
|
padding: 14px 28px; border-radius: 8px;
|
||||||
|
font-weight: 700; text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.btn-secondary {
|
||||||
|
background: transparent; color: var(--ink);
|
||||||
|
border: 2px solid var(--ink);
|
||||||
|
padding: 12px 26px; border-radius: 8px;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Стартер `index.html`
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ru">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
|
<title>Мой проект</title>
|
||||||
|
<style>
|
||||||
|
:root{--ink:#0F1218;--cyan:#00E5FF;--cyan-50:#E8FCFF;--white:#fff;--gray-500:#5B6573;--gray-100:#F2F4F7}
|
||||||
|
*{box-sizing:border-box;margin:0;padding:0}
|
||||||
|
body{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,sans-serif;color:var(--ink);background:var(--white)}
|
||||||
|
.container{max-width:1140px;margin:0 auto;padding:80px 24px}
|
||||||
|
.hero{background:var(--ink);color:var(--white)}
|
||||||
|
.hero h1{font-size:56px;font-weight:800;line-height:1.05;margin-bottom:24px}
|
||||||
|
.hero p{font-size:20px;color:#9aa3b2;max-width:600px;margin-bottom:32px}
|
||||||
|
.btn{display:inline-block;background:var(--cyan);color:var(--ink);padding:14px 28px;border-radius:8px;font-weight:700;text-decoration:none}
|
||||||
|
.btn:hover{background:#1be5ff}
|
||||||
|
.section h2{font-size:36px;font-weight:700;margin-bottom:24px}
|
||||||
|
.card{background:var(--gray-100);border-radius:16px;padding:32px;margin-bottom:16px}
|
||||||
|
@media (max-width:640px){.hero h1{font-size:36px}.section h2{font-size:28px}.container{padding:48px 20px}}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<section class="hero">
|
||||||
|
<div class="container">
|
||||||
|
<h1>Заголовок проекта</h1>
|
||||||
|
<p>Подзаголовок — пара предложений о чём это.</p>
|
||||||
|
<a class="btn" href="#section">Начать</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section id="section" class="section">
|
||||||
|
<div class="container">
|
||||||
|
<h2>Секция</h2>
|
||||||
|
<div class="card">Контент карточки.</div>
|
||||||
|
<div class="card">Контент карточки.</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Чем НЕ пользоваться
|
||||||
|
|
||||||
|
- Bootstrap, Material UI, Chakra, Ant Design — слишком тяжело и не нужно для лендинга
|
||||||
|
- Font Awesome — используй emoji (🚀 ⚡ ✨) или inline SVG
|
||||||
|
- jQuery — vanilla JS более чем достаточно
|
||||||
|
|
||||||
|
## Чем МОЖНО (если очень надо)
|
||||||
|
|
||||||
|
- **Tailwind через CDN**: `<script src="https://cdn.tailwindcss.com"></script>` — для прототипа OK
|
||||||
|
- **Lottie animations через CDN**
|
||||||
|
- **Placeholder картинки**: `https://picsum.photos/800/600`, `https://placehold.co/600x400`
|
||||||
|
- **Шрифты Google Fonts через `<link>`** в head
|
||||||
616
index.html
Normal file
616
index.html
Normal file
@ -0,0 +1,616 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="ru">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||||
|
<title>Развитие ребёнка — гид для родителей по сферам и возрастам</title>
|
||||||
|
<meta name="description" content="Оценка развития ребёнка по возрастам: физическое, когнитивное, речевое и социально-эмоциональное. Данные и подходы на основе материалов ВОЗ и ЮНИСЕФ.">
|
||||||
|
<style>
|
||||||
|
:root{
|
||||||
|
--ink:#0F1218;
|
||||||
|
--cyan:#00E5FF;
|
||||||
|
--cyan-50:#E8FCFF;
|
||||||
|
--white:#fff;
|
||||||
|
--gray-500:#5B6573;
|
||||||
|
--gray-100:#F2F4F7;
|
||||||
|
--gray-200:#E5E9F0;
|
||||||
|
/* Сферы развития */
|
||||||
|
--phys:#16A34A; --phys-bg:#E7F7EE; /* физическое */
|
||||||
|
--cogn:#7C3AED; --cogn-bg:#F1ECFE; /* когнитивное */
|
||||||
|
--lang:#E07A00; --lang-bg:#FEF3E0; /* речевое */
|
||||||
|
--socio:#DB2777; --socio-bg:#FCE8F1; /* соц-эмоц */
|
||||||
|
--amber:#FFB74D;
|
||||||
|
}
|
||||||
|
*{box-sizing:border-box;margin:0;padding:0}
|
||||||
|
html{scroll-behavior:smooth}
|
||||||
|
body{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,sans-serif;color:var(--ink);background:var(--white)}
|
||||||
|
img{max-width:100%}
|
||||||
|
a{color:inherit}
|
||||||
|
.container{max-width:1140px;margin:0 auto;padding:0 24px}
|
||||||
|
section{padding:80px 0}
|
||||||
|
@media (max-width:640px){section{padding:52px 0}}
|
||||||
|
|
||||||
|
/* ---------- Hero ---------- */
|
||||||
|
.hero{background:linear-gradient(135deg,#0F1218 0%,#13202B 55%,#0B3A47 100%);color:var(--white);overflow:hidden;position:relative}
|
||||||
|
.hero::after{content:"";position:absolute;inset:0;background:radial-gradient(900px 500px at 85% -10%,rgba(0,229,255,.18),transparent 60%);pointer-events:none}
|
||||||
|
.hero-inner{position:relative;z-index:1;padding:96px 0 92px}
|
||||||
|
.hero .eyebrow{display:inline-flex;align-items:center;gap:8px;background:rgba(0,229,255,.12);border:1px solid rgba(0,229,255,.4);color:var(--cyan);font-size:14px;font-weight:600;padding:7px 14px;border-radius:999px;margin-bottom:22px}
|
||||||
|
.hero h1{font-size:clamp(34px,6vw,58px);font-weight:800;line-height:1.06;margin-bottom:22px;letter-spacing:-.01em}
|
||||||
|
.hero p.lead{font-size:clamp(18px,2.4vw,21px);color:#aab3c2;max-width:620px;margin-bottom:30px}
|
||||||
|
.hero .ctas{display:flex;flex-wrap:wrap;gap:14px}
|
||||||
|
.btn{display:inline-flex;align-items:center;gap:9px;background:var(--cyan);color:var(--ink);padding:15px 30px;border-radius:10px;font-weight:700;text-decoration:none;transition:transform .15s,box-shadow .15s}
|
||||||
|
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,229,255,.28)}
|
||||||
|
.btn.ghost{background:transparent;color:#fff;border:2px solid rgba(255,255,255,.25)}
|
||||||
|
.btn.ghost:hover{border-color:var(--cyan);box-shadow:none}
|
||||||
|
.hero-stats{display:flex;flex-wrap:wrap;gap:34px;margin-top:46px}
|
||||||
|
.hero-stats .st b{display:block;font-size:30px;font-weight:800;color:var(--cyan)}
|
||||||
|
.hero-stats .st span{font-size:14px;color:#9aa3b2}
|
||||||
|
|
||||||
|
/* ---------- Section heads ---------- */
|
||||||
|
.head{max-width:760px;margin-bottom:40px}
|
||||||
|
.head .kicker{color:var(--cyan);font-weight:700;font-size:14px;letter-spacing:.08em;text-transform:uppercase}
|
||||||
|
.head h2{font-size:clamp(27px,4vw,38px);font-weight:800;line-height:1.15;margin:10px 0 14px;letter-spacing:-.01em}
|
||||||
|
.head p{color:var(--gray-500);font-size:18px}
|
||||||
|
|
||||||
|
/* ---------- Spheres ---------- */
|
||||||
|
.spheres-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:18px}
|
||||||
|
.sphere-card{border-radius:16px;padding:26px 24px;border:1px solid var(--gray-200)}
|
||||||
|
.sphere-card .ico{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;font-size:24px;margin-bottom:16px}
|
||||||
|
.sphere-card h3{font-size:19px;font-weight:700;margin-bottom:8px}
|
||||||
|
.sphere-card p{color:var(--gray-500);font-size:15px}
|
||||||
|
.s-phys{background:var(--phys-bg);border-color:#cdeed9}.s-phys .ico{background:#fff;color:var(--phys)}
|
||||||
|
.s-cogn{background:var(--cogn-bg);border-color:#e2d6fb}.s-cogn .ico{background:#fff;color:var(--cogn)}
|
||||||
|
.s-lang{background:var(--lang-bg);border-color:#faddb6}.s-lang .ico{background:#fff;color:var(--lang)}
|
||||||
|
.s-socio{background:var(--socio-bg);border-color:#f9cfe0}.s-socio .ico{background:#fff;color:var(--socio)}
|
||||||
|
|
||||||
|
/* ---------- Assessment tool ---------- */
|
||||||
|
.tool{background:linear-gradient(180deg,#FBFCFE,#F4F7FB)}
|
||||||
|
.tool-shell{background:var(--white);border:1px solid var(--gray-200);border-radius:20px;overflow:hidden;box-shadow:0 30px 60px -30px rgba(15,18,24,.18)}
|
||||||
|
.tool-top{padding:26px 28px 18px;border-bottom:1px solid var(--gray-100)}
|
||||||
|
.tool-top .lbl{font-size:14px;font-weight:700;color:var(--gray-500);text-transform:uppercase;letter-spacing:.06em;margin-bottom:14px}
|
||||||
|
.age-tabs{display:flex;flex-wrap:wrap;gap:8px}
|
||||||
|
.age-tab{border:1.5px solid var(--gray-200);background:#fff;color:var(--ink);padding:9px 15px;border-radius:999px;font-size:14.5px;font-weight:600;cursor:pointer;transition:.15s;font-family:inherit}
|
||||||
|
.age-tab:hover{border-color:#9fb0c4}
|
||||||
|
.age-tab.active{background:var(--ink);color:#fff;border-color:var(--ink)}
|
||||||
|
|
||||||
|
.tool-body{display:grid;grid-template-columns:280px 1fr}
|
||||||
|
@media (max-width:860px){.tool-body{grid-template-columns:1fr}}
|
||||||
|
|
||||||
|
.progress-side{background:#FAFBFD;padding:26px 24px;border-right:1px solid var(--gray-100)}
|
||||||
|
@media (max-width:860px){.progress-side{border-right:none;border-bottom:1px solid var(--gray-100)}}
|
||||||
|
.progress-side h4{font-size:15px;font-weight:700;margin-bottom:6px}
|
||||||
|
.progress-side .child-age{font-size:13px;color:var(--gray-500);margin-bottom:18px}
|
||||||
|
.ring-wrap{display:flex;align-items:center;gap:18px;margin-bottom:18px}
|
||||||
|
.ring{--p:0;--c:var(--cyan);width:84px;height:84px;border-radius:50%;background:conic-gradient(var(--c) calc(var(--p)*1%),#E5E9F0 0);display:grid;place-items:center;flex:none}
|
||||||
|
.ring::before{content:"";position:absolute;width:62px;height:62px;border-radius:50%;background:#FAFBFD}
|
||||||
|
.ring span{position:relative;font-weight:800;font-size:20px}
|
||||||
|
.ring-text b{font-size:16px;display:block}.ring-text span{font-size:13px;color:var(--gray-500)}
|
||||||
|
.per-sphere{display:flex;flex-direction:column;gap:11px}
|
||||||
|
.per-sphere .ps{font-size:13.5px}
|
||||||
|
.per-sphere .ps .top{display:flex;justify-content:space-between;gap:8px;margin-bottom:4px}
|
||||||
|
.per-sphere .ps .top b{font-weight:600}
|
||||||
|
.per-sphere .ps .bar{height:7px;border-radius:99px;background:var(--gray-200);overflow:hidden}
|
||||||
|
.per-sphere .ps .bar i{display:block;height:100%;width:0;border-radius:99px;transition:width .4s ease}
|
||||||
|
.disclaimer{margin-top:18px;font-size:12.5px;color:var(--gray-500);background:var(--cyan-50);border-radius:10px;padding:11px 13px;line-height:1.45}
|
||||||
|
|
||||||
|
.milestones{padding:24px 26px 30px}
|
||||||
|
.milestones .sphere-block{margin-bottom:24px}
|
||||||
|
.milestones .sphere-block:last-child{margin-bottom:0}
|
||||||
|
.sb-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
|
||||||
|
.sb-head .dot{width:11px;height:11px;border-radius:50%}
|
||||||
|
.sb-head h3{font-size:17px;font-weight:700}
|
||||||
|
.sb-head .cnt{margin-left:auto;font-size:13px;color:var(--gray-500);font-weight:600}
|
||||||
|
.mlist{list-style:none}
|
||||||
|
.mlist li{display:flex;align-items:flex-start;gap:12px;padding:11px 12px;border-radius:10px;cursor:pointer;transition:background .12s;font-size:15.5px;line-height:1.45}
|
||||||
|
.mlist li:hover{background:var(--gray-100)}
|
||||||
|
.mlist li .box{flex:none;width:22px;height:22px;border-radius:6px;border:2px solid var(--gray-200);margin-top:1px;display:grid;place-items:center;transition:.15s}
|
||||||
|
.mlist li.done .box{background:var(--ink);border-color:var(--ink)}
|
||||||
|
.mlist li.done .box::after{content:"✓";color:#fff;font-size:13px;font-weight:800}
|
||||||
|
.mlist li.done .txt{color:var(--gray-500)}
|
||||||
|
.mlist li.done .txt b{text-decoration:line-through;color:var(--gray-500)}
|
||||||
|
.mlist li .txt b{font-weight:600}
|
||||||
|
.mlist li .txt small{display:block;color:var(--gray-500);font-size:13px;margin-top:1px}
|
||||||
|
|
||||||
|
/* ---------- Nurturing care ---------- */
|
||||||
|
.nurturing{background:var(--ink);color:#fff}
|
||||||
|
.nurturing .head .kicker{color:var(--cyan)}
|
||||||
|
.nurturing .head p{color:#9aa3b2}
|
||||||
|
.nc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}
|
||||||
|
.nc-card{background:#1A212B;border:1px solid #283142;border-radius:16px;padding:24px}
|
||||||
|
.nc-card .num{width:38px;height:38px;border-radius:10px;background:rgba(0,229,255,.14);color:var(--cyan);display:grid;place-items:center;font-weight:800;margin-bottom:14px}
|
||||||
|
.nc-card h3{font-size:18px;margin-bottom:8px}
|
||||||
|
.nc-card p{color:#9aa3b2;font-size:14.5px}
|
||||||
|
|
||||||
|
/* ---------- Red flags ---------- */
|
||||||
|
.flags{background:#FFF8F6}
|
||||||
|
.flags .head .kicker{color:#D4441E}
|
||||||
|
.flags-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}
|
||||||
|
.flag-card{background:#fff;border:1px solid #f3d8cf;border-left:4px solid #D4441E;border-radius:12px;padding:18px 20px}
|
||||||
|
.flag-card b{display:block;font-size:15px;margin-bottom:5px;color:#B23A18}
|
||||||
|
.flag-card span{font-size:14px;color:var(--gray-500)}
|
||||||
|
.flags-note{margin-top:22px;background:#fff;border:1px solid #f3d8cf;border-radius:12px;padding:18px 22px;display:flex;gap:14px;align-items:flex-start}
|
||||||
|
.flags-note .ic{font-size:22px;flex:none}
|
||||||
|
.flags-note p{font-size:15px;color:var(--gray-500)}
|
||||||
|
.flags-note p b{color:var(--ink)}
|
||||||
|
|
||||||
|
/* ---------- Tips ---------- */
|
||||||
|
.tips-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
|
||||||
|
.tip{background:var(--gray-100);border-radius:16px;padding:26px}
|
||||||
|
.tip .ico{font-size:26px;margin-bottom:12px}
|
||||||
|
.tip h3{font-size:18px;font-weight:700;margin-bottom:8px}
|
||||||
|
.tip p{color:var(--gray-500);font-size:15px}
|
||||||
|
|
||||||
|
/* ---------- Sources ---------- */
|
||||||
|
.sources{background:var(--gray-100)}
|
||||||
|
.src-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
|
||||||
|
.src{background:#fff;border:1px solid var(--gray-200);border-radius:12px;padding:18px 20px}
|
||||||
|
.src .org{display:inline-block;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:3px 9px;border-radius:6px;margin-bottom:10px}
|
||||||
|
.src.who .org{background:var(--cyan-50);color:#0B7C8C}
|
||||||
|
.src.unicef .org{background:#FDE7EF;color:#B23A7A}
|
||||||
|
.src h4{font-size:16px;font-weight:700;margin-bottom:6px}
|
||||||
|
.src p{font-size:14px;color:var(--gray-500);margin-bottom:10px}
|
||||||
|
.src a{font-size:14px;font-weight:600;color:#1a6fb0;text-decoration:none}
|
||||||
|
.src a:hover{text-decoration:underline}
|
||||||
|
.src-note{margin-top:20px;font-size:13.5px;color:var(--gray-500);max-width:820px}
|
||||||
|
|
||||||
|
/* ---------- Footer ---------- */
|
||||||
|
footer{background:var(--ink);color:#9aa3b2;padding:42px 0 50px;font-size:14px}
|
||||||
|
footer .fwrap{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:center}
|
||||||
|
footer a{color:var(--cyan);text-decoration:none;font-weight:600}
|
||||||
|
|
||||||
|
/* nav */
|
||||||
|
.nav{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.85);backdrop-filter:blur(10px);border-bottom:1px solid var(--gray-200)}
|
||||||
|
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:62px}
|
||||||
|
.nav .brand{font-weight:800;font-size:17px;display:flex;align-items:center;gap:9px}
|
||||||
|
.nav .brand .b-ico{width:30px;height:30px;border-radius:8px;background:var(--ink);color:var(--cyan);display:grid;place-items:center;font-size:17px}
|
||||||
|
.nav .links{display:flex;gap:22px}
|
||||||
|
.nav .links a{text-decoration:none;font-size:15px;font-weight:600;color:var(--gray-500)}
|
||||||
|
.nav .links a:hover{color:var(--ink)}
|
||||||
|
@media (max-width:720px){.nav .links{display:none}}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<nav class="nav"><div class="container nav-inner">
|
||||||
|
<div class="brand"><span class="b-ico">◌</span> Развитие ребёнка</div>
|
||||||
|
<div class="links">
|
||||||
|
<a href="#spheres">Сферы</a>
|
||||||
|
<a href="#tool">Оценка</a>
|
||||||
|
<a href="#care">Уход</a>
|
||||||
|
<a href="#flags">Тревоги</a>
|
||||||
|
<a href="#sources">Источники</a>
|
||||||
|
</div>
|
||||||
|
</div></nav>
|
||||||
|
|
||||||
|
<!-- HERO -->
|
||||||
|
<header class="hero">
|
||||||
|
<div class="container hero-inner">
|
||||||
|
<span class="eyebrow">🌟 Гид для родителей · на основе ВОЗ и ЮНИСЕФ</span>
|
||||||
|
<h1>Развитие ребёнка<br>по возрастам и сферам</h1>
|
||||||
|
<p class="lead">Понятный инструмент, чтобы оценить, как развивается ваш ребёнок: физически, когнитивно, речево и социально-эмоционально. С рекомендациями по уходу и подсказками, когда обратиться к специалисту.</p>
|
||||||
|
<div class="ctas">
|
||||||
|
<a class="btn" href="#tool">Проверить развитие →</a>
|
||||||
|
<a class="btn ghost" href="#care">Советы родителям</a>
|
||||||
|
</div>
|
||||||
|
<div class="hero-stats">
|
||||||
|
<div class="st"><b>6</b><span>возрастных периодов</span></div>
|
||||||
|
<div class="st"><b>4</b><span>сферы развития</span></div>
|
||||||
|
<div class="st"><b>~100</b><span>вех развития</span></div>
|
||||||
|
<div class="st"><b>5</b><span>условий заботы ВОЗ/ЮНИСЕФ</span></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<!-- SPHERES -->
|
||||||
|
<section id="spheres">
|
||||||
|
<div class="container">
|
||||||
|
<div class="head">
|
||||||
|
<span class="kicker">4 сферы развития</span>
|
||||||
|
<h2>Развитие оценивают сразу в четырёх направлениях</h2>
|
||||||
|
<p>ВОЗ и ЮНИСЕФ рекомендуют смотреть на ребёнка целиком, а не только на рост и вес. Все четыре сферы связаны и влияют друг на друга.</p>
|
||||||
|
</div>
|
||||||
|
<div class="spheres-grid">
|
||||||
|
<div class="sphere-card s-phys">
|
||||||
|
<div class="ico">🏃</div>
|
||||||
|
<h3>Физическое и моторное</h3>
|
||||||
|
<p>Рост, вес, крупные движения (сидит, ползает, ходит) и мелкая моторика (хватает, рисует, застёгивает).</p>
|
||||||
|
</div>
|
||||||
|
<div class="sphere-card s-cogn">
|
||||||
|
<div class="ico">🧩</div>
|
||||||
|
<h3>Когнитивное</h3>
|
||||||
|
<p>Как ребёнок познаёт мир: внимание, память, причинно-следственные связи, игра, решение задач.</p>
|
||||||
|
</div>
|
||||||
|
<div class="sphere-card s-lang">
|
||||||
|
<div class="ico">💬</div>
|
||||||
|
<h3>Речевое и коммуникативное</h3>
|
||||||
|
<p>Понимание речи, лепет, первые слова и фразы, умение выразить мысль и быть понятым.</p>
|
||||||
|
</div>
|
||||||
|
<div class="sphere-card s-socio">
|
||||||
|
<div class="ico">❤️</div>
|
||||||
|
<h3>Социально-эмоциональное</h3>
|
||||||
|
<p>Привязанность, эмоции, общение со сверстниками и взрослыми, самостоятельность, эмпатия.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- ASSESSMENT TOOL -->
|
||||||
|
<section id="tool" class="tool">
|
||||||
|
<div class="container">
|
||||||
|
<div class="head">
|
||||||
|
<span class="kicker">Интерактивная оценка</span>
|
||||||
|
<h2>Отметьте навыки, которые уже есть у ребёнка</h2>
|
||||||
|
<p>Выберите возраст — появятся вехи развития по четырём сферам. Отмечайте освоенные навыки: инструмент покажет общий прогресс и по каждой сфере отдельно.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="tool-shell">
|
||||||
|
<div class="tool-top">
|
||||||
|
<div class="lbl">Возраст ребёнка</div>
|
||||||
|
<div class="age-tabs" id="ageTabs"></div>
|
||||||
|
</div>
|
||||||
|
<div class="tool-body">
|
||||||
|
<div class="progress-side">
|
||||||
|
<h4>Ваш прогресс</h4>
|
||||||
|
<div class="child-age" id="childAge">Выберите возраст</div>
|
||||||
|
<div class="ring-wrap">
|
||||||
|
<div class="ring" id="ring"><span id="ringNum">0%</span></div>
|
||||||
|
<div class="ring-text"><b id="ringDone">0 из 0</b><span>вех освоено</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="per-sphere" id="perSphere"></div>
|
||||||
|
<div class="disclaimer">Это памятка для родителей, а не диагноз. Дети развиваются индивидуально. Если что-то беспокоит — обсудите с педиатром.</div>
|
||||||
|
</div>
|
||||||
|
<div class="milestones" id="milestones"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- NURTURING CARE -->
|
||||||
|
<section id="care" class="nurturing">
|
||||||
|
<div class="container">
|
||||||
|
<div class="head">
|
||||||
|
<span class="kicker">Заботливый уход</span>
|
||||||
|
<h2>5 условий для здорового развития</h2>
|
||||||
|
<p>Рамка «заботливого ухода» (Nurturing Care Framework) разработана ВОЗ, ЮНИСЕФ и Всемирным банком. Это пять условий, которые нужны ребёнку с рождения.</p>
|
||||||
|
</div>
|
||||||
|
<div class="nc-grid">
|
||||||
|
<div class="nc-card"><div class="num">1</div><h3>Здоровье</h3><p>Здоровая беременность и роды, наблюдение у врача, прививки по календарю, своевременное лечение.</p></div>
|
||||||
|
<div class="nc-card"><div class="num">2</div><h3>Питание</h3><p>Грудное вскармливание до 6 месяцев исключительно и до 2 лет и дольше, полноценный прикорм, необходимые нутриенты и витамины.</p></div>
|
||||||
|
<div class="nc-card"><div class="num">3</div><h3>Безопасность и защита</h3><p>Физически безопасная среда дома, защита от насилия и пренебрежения, стабильность в семье.</p></div>
|
||||||
|
<div class="nc-card"><div class="num">4</div><h3>Отзывчивая забота</h3><p>Замечать сигналы ребёнка и отвечать на них — улыбкой, словом, объятием. Это «диалог» с малышом с рождения.</p></div>
|
||||||
|
<div class="nc-card"><div class="num">5</div><h3>Раннее обучение</h3><p>Игра, исследование, разговоры, книги и песни — окружение, которое стимулирует любопытство и развитие мозга.</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- RED FLAGS -->
|
||||||
|
<section id="flags" class="flags">
|
||||||
|
<div class="container">
|
||||||
|
<div class="head">
|
||||||
|
<span class="kicker">Когда насторожиться</span>
|
||||||
|
<h2>Сигналы, при которых стоит обратиться к специалисту</h2>
|
||||||
|
<p>Это поводы для консультации с педиатром или неврологом, а не приговор. Раннее обращение помогает вовремя поддержать развитие.</p>
|
||||||
|
</div>
|
||||||
|
<div class="flags-grid">
|
||||||
|
<div class="flag-card"><b>Нет улыбки в ответ</b><span>К 2 месяцам ребёнок не улыбается, когда с ним разговаривают.</span></div>
|
||||||
|
<div class="flag-card"><b>Не держит голову</b><span>К 3–4 месяцам не удерживает голову, когда его держат вертикально.</span></div>
|
||||||
|
<div class="flag-card"><b>Не сидит с поддержкой</b><span>К 9 месяцам не садится даже с опорой.</span></div>
|
||||||
|
<div class="flag-card"><b>Нет лепета и указывания</b><span>К 12 месяцам не лепечет («ба-ба», «ма-ма») и не показывает пальцем.</span></div>
|
||||||
|
<div class="flag-card"><b>Нет первых слов</b><span>К 16–18 месяцам не произносит ни одного осмысленного слова.</span></div>
|
||||||
|
<div class="flag-card"><b>Не ходит</b><span>К 18 месяцам не делает самостоятельные шаги.</span></div>
|
||||||
|
<div class="flag-card"><b>Нет фраз из 2 слов</b><span>К 24 месяцам не соединяет слова во фразы («дай ми»).</span></div>
|
||||||
|
<div class="flag-card"><b>Потеря навыков</b><span>Ребёнок перестал делать то, что уже умел — речь, движения, контакт.</span></div>
|
||||||
|
<div class="flag-card"><b>Слабый зрительный контакт</b><span>Не смотрит в глаза, не откликается на имя к 12 месяцам.</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="flags-note">
|
||||||
|
<div class="ic">🩺</div>
|
||||||
|
<p><b>Помните:</b> дети развиваются в своём темпе, и небольшой разброс нормален. Но если навык задерживается значительно или вы заметили регресс — не ждите, обратитесь к врачу. Раннее развитие мозга максимально пластично в первые годы жизни.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- TIPS -->
|
||||||
|
<section id="tips">
|
||||||
|
<div class="container">
|
||||||
|
<div class="head">
|
||||||
|
<span class="kicker">Практические советы</span>
|
||||||
|
<h2>Что могут делать родители каждый день</h2>
|
||||||
|
<p>Простые действия, основанные на принципе «отзывчивой заботы» и раннего обучения — главных условиях гармоничного развития.</p>
|
||||||
|
</div>
|
||||||
|
<div class="tips-grid">
|
||||||
|
<div class="tip"><div class="ico">🗣️</div><h3>Разговаривайте с ребёнком</h3><p>С самого рождения комментируйте действия, называйте предметы. Число слов, которые слышит ребёнок, напрямую связано с развитием речи.</p></div>
|
||||||
|
<div class="tip"><div class="ico">📚</div><h3>Читайте каждый день</h3><p>Даже несколько минут чтения и рассматривания картинок развивают речь, внимание и эмоциональную связь.</p></div>
|
||||||
|
<div class="tip"><div class="ico">🤸</div><h3>Играйте и двигайтесь</h3><p>Игра — главный способ обучения. Дайте время на «животик», ползание, бег, игры с мячом и мелкую моторику.</p></div>
|
||||||
|
<div class="tip"><div class="ico">🔁</div><h3>Отвечайте на сигналы</h3><p>«Подавайте и принимайте»: улыбнулся — улыбнитесь, показал интерес — поддержите. Это формирует мозг активнее любых занятий.</p></div>
|
||||||
|
<div class="tip"><div class="ico">🥗</div><h3>Кормите по потребности</h3><p>Грудное молоко до 6 месяцев, разнообразный прикорм после. Отзывчивое кормление — по сигналам голода и сытости.</p></div>
|
||||||
|
<div class="tip"><div class="ico">😴</div><h3>Обеспечьте сон и режим</h3><p>Достаточный сон, предсказуемый режим и спокойная обстановка снижают стресс и поддерживают развитие.</p></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SOURCES -->
|
||||||
|
<section id="sources" class="sources">
|
||||||
|
<div class="container">
|
||||||
|
<div class="head">
|
||||||
|
<span class="kicker">Источники</span>
|
||||||
|
<h2>На чём основаны данные</h2>
|
||||||
|
<p>Материалы сайта опираются на публикуемые руководства и стандарты Всемирной организации здравоохранения и Детского фонда ООН (ЮНИСЕФ).</p>
|
||||||
|
</div>
|
||||||
|
<div class="src-list">
|
||||||
|
<div class="src who"><span class="org">ВОЗ</span><h4>Стандарты физического роста детей (WHO Child Growth Standards)</h4><p>Кривые роста, веса и окружности головы от рождения до 5 лет — основа оценки физического развития.</p><a href="https://www.who.int/tools/child-growth-standards" target="_blank" rel="noopener">who.int/tools/child-growth-standards →</a></div>
|
||||||
|
<div class="src who"><span class="org">ВОЗ</span><h4>Вехи моторного развития (Multicentre Reference Study)</h4><p>Шесть ключевых моторных вех: сидит, стоит с опорой, ползает, ходит с опорой, стоит сам, ходит сам.</p><a href="https://www.who.int/publications/i/item/924159693X" target="_blank" rel="noopener">WHO Motor Development Study →</a></div>
|
||||||
|
<div class="src who"><span class="org">ВОЗ</span><h4>Руководство по улучшению раннего развития детей</h4><p>Recommendations on interventions for ECD — рекомендации по стимуляции, отзывчивой заботе и питанию.</p><a href="https://www.who.int/publications/i/item/9789240010206" target="_blank" rel="noopener">Improving ECD guidelines →</a></div>
|
||||||
|
<div class="src unicef"><span class="org">ЮНИСЕФ</span><h4>Раннее развитие детей (Early Childhood Development)</h4><p>Подход ЮНИСЕФ к первым 1000 дням жизни и развитию детей до 8 лет через игру и заботу.</p><a href="https://www.unicef.org/early-childhood-development" target="_blank" rel="noopener">unicef.org/early-childhood-development →</a></div>
|
||||||
|
<div class="src unicef"><span class="org">ЮНИСЕФ</span><h4>Забота о развитии ребёнка (Care for Child Development)</h4><p>Пакет рекомендаций ЮНИСЕФ/ВОЗ для родителей: играй и общайся, чтобы поддержать развитие.</p><a href="https://www.unicef.org/early-childhood-development/care-for-child-development" target="_blank" rel="noopener">Care for Child Development →</a></div>
|
||||||
|
<div class="src unicef"><span class="org">ЮНИСЕФ</span><h4>Nurturing Care Framework</h4><p>Рамка заботливого ухода ВОЗ/ЮНИСЕФ/Всемирного банка — 5 условий для развития ребёнка.</p><a href="https://nurturing-care.org" target="_blank" rel="noopener">nurturing-care.org →</a></div>
|
||||||
|
</div>
|
||||||
|
<p class="src-note">Информация на сайте носит образовательный характер и не заменяет консультацию врача. Вехи развития приведены как ориентир — сроки их появления у конкретного ребёнка могут отличаться. Для индивидуальной оценки развития обращайтесь к педиатру.</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<div class="container fwrap">
|
||||||
|
<div>Гид для родителей о развитии ребёнка · данные ВОЗ и ЮНИСЕФ</div>
|
||||||
|
<div>Образовательный ресурс, не медицинская консультация</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
/* ====== Данные по сферам и возрастам (на основе ВОЗ / ЮНИСЕФ) ====== */
|
||||||
|
const SPHERES = {
|
||||||
|
phys: {name:"Физическое и моторное", color:"var(--phys)", emoji:"🏃"},
|
||||||
|
cogn: {name:"Когнитивное", color:"var(--cogn)", emoji:"🧩"},
|
||||||
|
lang: {name:"Речевое", color:"var(--lang)", emoji:"💬"},
|
||||||
|
socio: {name:"Социально-эмоциональное",color:"var(--socio)", emoji:"❤️"}
|
||||||
|
};
|
||||||
|
|
||||||
|
const DATA = {
|
||||||
|
"0–6 мес": {
|
||||||
|
phys:[
|
||||||
|
["Удерживает голову","когда держат вертикально, к 3–4 мес"],
|
||||||
|
["Лежа на животе, приподнимает голову и грудь","~2–3 мес"],
|
||||||
|
["Тянется руками к предметам и тянет в рот",""],
|
||||||
|
["Переворачивается со спины на бок/живот","~4–6 мес"],
|
||||||
|
["Хватает предмет всей ладонью",""]
|
||||||
|
],
|
||||||
|
cogn:[
|
||||||
|
["Следит взглядом за движущимся предметом/лицом",""],
|
||||||
|
["Реагирует на звуки — поворачивает голову",""],
|
||||||
|
["Изучает предметы ртом и руками",""],
|
||||||
|
["Узнаёт лицо родителя на расстоянии",""]
|
||||||
|
],
|
||||||
|
lang:[
|
||||||
|
["Издаёт звуки — гулит («а-а», «гы»)","~2–3 мес"],
|
||||||
|
["Улыбается, когда с ним говорят",""],
|
||||||
|
["Поворачивается к источнику голоса",""],
|
||||||
|
["Начинает лепетать согласными","к концу периода"]
|
||||||
|
],
|
||||||
|
socio:[
|
||||||
|
["Социальная улыбка в ответ","~2 мес"],
|
||||||
|
["Успокаивается на руках у родителя",""],
|
||||||
|
["Различает знакомых и незнакомых",""],
|
||||||
|
["Издаёт разные звуки для разных потребностей",""]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"6–12 мес": {
|
||||||
|
phys:[
|
||||||
|
["Сидит без поддержки","~6 мес (ВОЗ)"],
|
||||||
|
["Стоит с опорой","~7,5 мес (ВОЗ)"],
|
||||||
|
["Ползает на четвереньках","~8,5 мес (ВОЗ)"],
|
||||||
|
["Ходит с поддержкой за руки","~9 мес (ВОЗ)"],
|
||||||
|
["Стоит самостоятельно","~11 мес (ВОЗ)"],
|
||||||
|
["Ходит самостоятельно","~12 мес (ВОЗ)"],
|
||||||
|
["Берёт предметы щепотью (пинцетный хват)","~9–10 мес"]
|
||||||
|
],
|
||||||
|
cogn:[
|
||||||
|
["Находит спрятанный на глазах предмет","понятие постоянства объекта"],
|
||||||
|
["Исследует предметы: стучит, трясёт, бросает",""],
|
||||||
|
["Подражает простым действиям",""],
|
||||||
|
["Понимает назначение предметов (расчёска, ложка)",""]
|
||||||
|
],
|
||||||
|
lang:[
|
||||||
|
["Лепечет слогами («ба-ба», «ма-ма»)",""],
|
||||||
|
["Откликается на своё имя",""],
|
||||||
|
["Понимает «нельзя»",""],
|
||||||
|
["Использует жесты: машет, показывает",""],
|
||||||
|
["Говорит первое осмысленное слово","~12 мес"]
|
||||||
|
],
|
||||||
|
socio:[
|
||||||
|
["Играет в «ку-ку»",""],
|
||||||
|
["Боится незнакомых (страхи новизны)",""],
|
||||||
|
["Тревожится при расставании с мамой",""],
|
||||||
|
["Показывает предпочтения и привязанность",""]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"1–2 года": {
|
||||||
|
phys:[
|
||||||
|
["Уверенно ходит сам",""],
|
||||||
|
["Бегает (несколько неуклюже)","~18 мес"],
|
||||||
|
["Поднимается по лестнице с опорой",""],
|
||||||
|
["Бьёт по мячу ногой",""],
|
||||||
|
["Строит башню из 2–4 кубиков",""],
|
||||||
|
["Черкает карандашом",""],
|
||||||
|
["Сам ест ложкой",""]
|
||||||
|
],
|
||||||
|
cogn:[
|
||||||
|
["Простая сюжетная игра (кормит куклу)",""],
|
||||||
|
["Показывает части тела по просьбе",""],
|
||||||
|
["Сортирует по форме в доску-вкладыш",""],
|
||||||
|
["Понимает простую причину-следствие",""]
|
||||||
|
],
|
||||||
|
lang:[
|
||||||
|
["10–50 слов к 18 мес, 50+ к 2 годам",""],
|
||||||
|
["Соединяет 2 слова во фразу","~2 года"],
|
||||||
|
["Понимает простые инструкции («принеси мяч»)",""],
|
||||||
|
["Показывает на названные предметы/картинки",""]
|
||||||
|
],
|
||||||
|
socio:[
|
||||||
|
["Играет рядом с детьми (параллельная игра)",""],
|
||||||
|
["Показывает независимость («я сам!», «нет!»)",""],
|
||||||
|
["Показывает вещи, чтобы поделиться интересом",""],
|
||||||
|
["Проявляет сочувствие при чужой грусти",""]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"2–3 года": {
|
||||||
|
phys:[
|
||||||
|
["Хорошо бегает",""],
|
||||||
|
["Прыгает на двух ногах",""],
|
||||||
|
["Едет на трёхколёсном велосипеде (педали)","~3 года"],
|
||||||
|
["Стоит на одной ноге пару секунд",""],
|
||||||
|
["Копирует круг",""],
|
||||||
|
["Нанизывает крупные бусины",""]
|
||||||
|
],
|
||||||
|
cogn:[
|
||||||
|
["Сортирует по цвету и форме",""],
|
||||||
|
["Считает до 3, понимает «один-много»",""],
|
||||||
|
["Собирает пазл из 3–4 деталей",""],
|
||||||
|
["Сложная сюжетная игра (готовит, лечит)",""]
|
||||||
|
],
|
||||||
|
lang:[
|
||||||
|
["Говорит фразами из 3 слов",""],
|
||||||
|
["Знает имя и возраст",""],
|
||||||
|
["Задаёт вопросы «почему?»",""],
|
||||||
|
["Выполняет двухступенчатую инструкцию",""],
|
||||||
|
["Речь понятна ~75%"]
|
||||||
|
],
|
||||||
|
socio:[
|
||||||
|
["Подражает взрослым и сверстникам",""],
|
||||||
|
["Проявляет нежность и заботу",""],
|
||||||
|
["Учится делиться и ждать очереди (с помощью)",""],
|
||||||
|
["Начинает играть «рядом и вместе»"]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"3–5 лет": {
|
||||||
|
phys:[
|
||||||
|
["Прыгает на одной ноге",""],
|
||||||
|
["Ловит отскочивший мяч",""],
|
||||||
|
["Ходит по лестнице чередуя ноги",""],
|
||||||
|
["Использует ножницы",""],
|
||||||
|
["Рисует человека из 3+ частей",""],
|
||||||
|
["Сам одевается и раздевается",""]
|
||||||
|
],
|
||||||
|
cogn:[
|
||||||
|
["Считает до 10",""],
|
||||||
|
["Знает основные цвета",""],
|
||||||
|
["Понимает время: утро, скоро, вчера",""],
|
||||||
|
["Сортирует по размеру",""],
|
||||||
|
["Узнаёт некоторые буквы и цифры",""]
|
||||||
|
],
|
||||||
|
lang:[
|
||||||
|
["Рассказывает короткие истории",""],
|
||||||
|
["Использует будущее время",""],
|
||||||
|
["Речь полностью понятна",""],
|
||||||
|
["Выполняет трёхступенчатую инструкцию",""],
|
||||||
|
["Задаёт много вопросов «как», «почему»"]
|
||||||
|
],
|
||||||
|
socio:[
|
||||||
|
["Совместная игра с правилами",""],
|
||||||
|
["Есть друзья, предпочитает кого-то",""],
|
||||||
|
["Легко расстаётся с родителями",""],
|
||||||
|
["Понимает чужие чувства, проявляет заботу",""]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"6–7 лет": {
|
||||||
|
phys:[
|
||||||
|
["Ездит на двухколёсном велосипеде",""],
|
||||||
|
["Умеет галоп/прыжки в длину",""],
|
||||||
|
["Завязывает шнурки",""],
|
||||||
|
["Пишет разборчиво, рисует детали",""],
|
||||||
|
["Ловит маленький мяч"]
|
||||||
|
],
|
||||||
|
cogn:[
|
||||||
|
["Читает простые слова и короткие тексты",""],
|
||||||
|
["Складывает и вычитает в пределах 10",""],
|
||||||
|
["Понимает сохранение количества",""],
|
||||||
|
["Планирует и доводит дело до конца",""],
|
||||||
|
["Логически рассуждает"]
|
||||||
|
],
|
||||||
|
lang:[
|
||||||
|
["Свободно ведёт беседу",""],
|
||||||
|
["Пересказывает историю последовательно",""],
|
||||||
|
["Читает самостоятельно",""],
|
||||||
|
["Пишет простые предложения"]
|
||||||
|
],
|
||||||
|
socio:[
|
||||||
|
["Устойчивые дружбы",""],
|
||||||
|
["Соблюдает правила класса/игры",""],
|
||||||
|
["Лучше управляет эмоциями",""],
|
||||||
|
["Понимает справедливость и делится"]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* ====== Render tool ====== */
|
||||||
|
const ageTabs = document.getElementById('ageTabs');
|
||||||
|
const milestonesEl = document.getElementById('milestones');
|
||||||
|
const perSphereEl = document.getElementById('perSphere');
|
||||||
|
const ring = document.getElementById('ring');
|
||||||
|
const ringNum = document.getElementById('ringNum');
|
||||||
|
const ringDone = document.getElementById('ringDone');
|
||||||
|
const childAge = document.getElementById('childAge');
|
||||||
|
|
||||||
|
const ages = Object.keys(DATA);
|
||||||
|
let currentAge = ages[0];
|
||||||
|
const checked = {}; // key -> bool
|
||||||
|
|
||||||
|
ages.forEach(age => {
|
||||||
|
const b = document.createElement('button');
|
||||||
|
b.className = 'age-tab' + (age===currentAge?' active':'');
|
||||||
|
b.textContent = age;
|
||||||
|
b.onclick = () => { currentAge = age; render(); };
|
||||||
|
ageTabs.appendChild(b);
|
||||||
|
});
|
||||||
|
|
||||||
|
function render(){
|
||||||
|
document.querySelectorAll('.age-tab').forEach(t=>{
|
||||||
|
t.classList.toggle('active', t.textContent===currentAge);
|
||||||
|
});
|
||||||
|
childAge.textContent = 'Возраст: ' + currentAge;
|
||||||
|
milestonesEl.innerHTML = '';
|
||||||
|
const block = DATA[currentAge];
|
||||||
|
let sphereTotals = [];
|
||||||
|
let total=0, done=0;
|
||||||
|
|
||||||
|
Object.keys(SPHERES).forEach(key=>{
|
||||||
|
const sp = SPHERES[key];
|
||||||
|
const items = block[key] || [];
|
||||||
|
let sDone=0;
|
||||||
|
const sBlock = document.createElement('div');
|
||||||
|
sBlock.className = 'sphere-block';
|
||||||
|
sBlock.innerHTML = `<div class="sb-head"><span class="dot" style="background:${sp.color}"></span><h3>${sp.emoji} ${sp.name}</h3><span class="cnt"></span></div>`;
|
||||||
|
const ul = document.createElement('ul');
|
||||||
|
ul.className = 'mlist';
|
||||||
|
items.forEach((it, i)=>{
|
||||||
|
const id = currentAge+'|'+key+'|'+i;
|
||||||
|
const isDone = !!checked[id];
|
||||||
|
if(isDone) sDone++;
|
||||||
|
const li = document.createElement('li');
|
||||||
|
if(isDone) li.classList.add('done');
|
||||||
|
li.innerHTML = `<span class="box"></span><span class="txt"><b>${it[0]}</b>${it[1]?'<small>'+it[1]+'</small>':''}</span>`;
|
||||||
|
li.onclick = ()=>{ checked[id]=!checked[id]; render(); };
|
||||||
|
ul.appendChild(li);
|
||||||
|
});
|
||||||
|
sBlock.querySelector('.cnt').textContent = sDone+' / '+items.length;
|
||||||
|
sBlock.appendChild(ul);
|
||||||
|
milestonesEl.appendChild(sBlock);
|
||||||
|
total += items.length; done += sDone;
|
||||||
|
sphereTotals.push({key, name:sp.name, color:sp.color, done:sDone, len:items.length});
|
||||||
|
});
|
||||||
|
|
||||||
|
// progress ring
|
||||||
|
const pct = total? Math.round(done/total*100):0;
|
||||||
|
ring.style.setProperty('--p', pct);
|
||||||
|
ringNum.textContent = pct+'%';
|
||||||
|
ringDone.textContent = done+' из '+total;
|
||||||
|
|
||||||
|
// per-sphere bars
|
||||||
|
perSphereEl.innerHTML = sphereTotals.map(s=>{
|
||||||
|
const p = s.len? Math.round(s.done/s.len*100):0;
|
||||||
|
return `<div class="ps"><div class="top"><b>${s.name}</b><span>${s.done}/${s.len}</span></div><div class="bar"><i style="width:${p}%;background:${s.color}"></i></div></div>`;
|
||||||
|
}).join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
render();
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user