# План реализации: Физика 10 (Беларусь, Громыко, 2019)

**Источник:** `fizika_10kl_gromika_rus_2019.pdf` (267 стр., 2 части, 6 глав, 37 §)
**Издательство:** «Адукацыя і выхаванне», 2019
**Уровень:** базовый + повышенный (с электронным приложением).

> **Самый большой учебник во всём проекте** — 37 параграфов против 19 в Алгебре 9 и 16 в Геометрии 9. Учитывает весь опыт 10 предыдущих учебников: единый KaTeX-эскейп, ноль пикселей в подписях, ноль эмодзи, 3D-движок `g3d.js`, snap-точки в slider'ах, цветовая кодировка, drag-to-rotate. **Главная фишка** — настоящие физические **симуляции**: броуновское движение, изопроцессы (PV-диаграммы), линии поля, электрические цепи, движение заряженных частиц в магнитном поле, явление индукции.

---

## 🎯 Содержание учебника

### Часть 1. МОЛЕКУЛЯРНАЯ ФИЗИКА

**Глава 1. Основы молекулярно-кинетической теории (§§1–10)**
| § | Тема | Ключевые формулы |
|---|------|------------------|
| §1 | Основные положения МКТ | 3 положения: вещество — частицы, частицы движутся, частицы взаимодействуют |
| §2 | Масса и размеры молекул. Количество вещества | $N_A = 6.022 \cdot 10^{23}$, $M = m \cdot N_A$, $\nu = N/N_A = m/M$ |
| §3 | Макро- и микропараметры. Идеальный газ. Основное уравнение МКТ | $p = \dfrac{1}{3} n m_0 \overline{v^2} = \dfrac{2}{3} n \overline{E_k}$ |
| §4 | Тепловое равновесие. Температура | $\overline{E_k} = \dfrac{3}{2} kT$, шкала Кельвина: $T = t + 273$ |
| §5 | Уравнение состояния идеального газа | $pV = \nu RT$, $pV = \dfrac{m}{M} RT$ (Клапейрон–Менделеев) |
| §6 | Изопроцессы | Изотерма $pV = \text{const}$, изобара $V/T = \text{const}$, изохора $p/T = \text{const}$ |
| §7 | Строение и свойства твёрдых тел | Кристаллы (моно-, поликристаллы), аморфные тела, анизотропия |
| §8 | Строение и свойства жидкостей | Поверхностное натяжение, смачивание |
| §9 | Испарение и конденсация. Насыщенный пар | Динамическое равновесие, давление насыщенного пара |
| §10 | Влажность воздуха | $\varphi = \dfrac{p}{p_н} \cdot 100\%$, точка росы, психрометр |

**Глава 2. Основы термодинамики (§§11–15)**
| § | Тема | Ключевые формулы |
|---|------|------------------|
| §11 | Внутренняя энергия | $U = \dfrac{3}{2} \nu R T$ (одноатомный газ) |
| §12 | Работа в термодинамике | $A = p \Delta V$ (изобарный), графически площадь под кривой |
| §13 | Количество теплоты | $Q = cm \Delta T$, $Q = \lambda m$ (плавление), $Q = rm$ (испарение), $Q = qm$ (сгорание) |
| §14 | Первый закон термодинамики | $\Delta U = Q + A_{внеш}$ или $Q = \Delta U + A_{газ}$ |
| §15 | Тепловые двигатели. КПД | $\eta = \dfrac{A}{Q_1} = \dfrac{Q_1 - Q_2}{Q_1}$, $\eta_{Карно} = \dfrac{T_1 - T_2}{T_1}$ |

### Часть 2. ЭЛЕКТРОДИНАМИКА

**Глава 3. Электростатика (§§16–24)**
| § | Тема | Ключевые формулы |
|---|------|------------------|
| §16 | Электрический заряд. Закон сохранения | $q = ne$, $e = 1.6 \cdot 10^{-19}$ Кл, $\sum q = \text{const}$ |
| §17 | Закон Кулона | $F = k \dfrac{|q_1 q_2|}{r^2}$, $k = 9 \cdot 10^9$ Н·м²/Кл² |
| §18 | Электростатическое поле | Силовая характеристика, источник |
| §19 | Напряжённость поля. Принцип суперпозиции | $\vec{E} = \dfrac{\vec{F}}{q_{пр}}$, $\vec{E} = \sum \vec{E_i}$ |
| §20 | Линии напряжённости | Силовые линии, поле точечного заряда, диполя |
| §21 | Работа поля. Потенциал | $A = qU$, $\varphi = \dfrac{W_p}{q}$ |
| §22 | Разность потенциалов. Напряжение | $U = \varphi_1 - \varphi_2$, $E = U/d$ (однородное) |
| §23 | Конденсаторы. Электроёмкость | $C = q/U$, $C = \dfrac{\varepsilon \varepsilon_0 S}{d}$ |
| §24 | Энергия поля конденсатора | $W = \dfrac{CU^2}{2} = \dfrac{q^2}{2C} = \dfrac{qU}{2}$ |

**Глава 4. Постоянный электрический ток (§§25–26)**
| § | Тема | Ключевые формулы |
|---|------|------------------|
| §25 | ЭДС источника тока | $\mathcal{E} = A_{ст}/q$, ЭДС, сторонние силы |
| §26 | Закон Ома для полной цепи | $I = \dfrac{\mathcal{E}}{R + r}$, КПД $\eta = U/\mathcal{E}$ |

**Глава 5. Магнитное поле. Электромагнитная индукция (§§27–33)**
| § | Тема | Ключевые формулы |
|---|------|------------------|
| §27 | Магнитное поле тока | Опыт Эрстеда, взаимодействие проводников |
| §28 | Индукция магнитного поля | $\vec{B}$, правило буравчика, линии индукции |
| §29 | Сила Ампера | $F_A = BIL\sin\alpha$, правило левой руки |
| §30 | Сила Лоренца | $F_L = qvB\sin\alpha$, движение по окружности: $R = \dfrac{mv}{qB}$ |
| §31 | Магнитный поток. Электромагнитная индукция | $\Phi = BS\cos\alpha$, опыты Фарадея |
| §32 | Правило Ленца. Закон ЭМИ | $\mathcal{E}_i = -\dfrac{d\Phi}{dt}$ |
| §33 | Самоиндукция. Индуктивность | $\mathcal{E}_{si} = -L \dfrac{dI}{dt}$, $W_L = \dfrac{LI^2}{2}$ |

**Глава 6. Электрический ток в различных средах (§§34–37)**
| § | Тема | Ключевые формулы |
|---|------|------------------|
| §34 | Ток в металлах. Сверхпроводимость | Свободные электроны, $\rho(T) = \rho_0(1+\alpha t)$ |
| §35 | Ток в электролитах | Электролиз, законы Фарадея: $m = kIt$, $k = \dfrac{M}{F n}$ |
| §36 | Ток в газах. Плазма | Самостоятельный/несамостоятельный разряд, виды разрядов |
| §37 | Ток в полупроводниках | Собственная и примесная проводимость, n-тип, p-тип, p-n-переход |

**ИТОГО:** 6 глав, 37 параграфов, **2 части**.

---

## 🎨 SVG-СТАНДАРТ КАЧЕСТВА ДЛЯ ФИЗИКИ

Это первая физика в проекте — нужны новые хелперы. Унаследует всё от математических учебников + добавляет physics-specific.

### Унаследованные хелперы (из Алгебры 11 / Геометрии 11)
- `axes2D(W, H, pad, xmin, xmax, ymin, ymax)` — координатная плоскость
- `plotFunc(f, xmin, xmax, toX, toY, color, N)` — график функции
- `pointWithDrop(x, fx, toX, toY, color, label)` — точка с проекциями
- `asymptote(orientation, value, ...)` — асимптота
- `snapToValue(value, snaps, tolerance)` — snap-точки
- `rightAngleMark`, `angleArcAuto`, `unitVec`, `deg2rad`
- **`g3d.js`** — мини-3D движок (для линий магнитной индукции, движения частиц)

### Новые physics-specific хелперы (в `frontend/js/phys.js`)

```javascript
// === Стрелка вектора (2D) ===
function drawArrow(x1, y1, x2, y2, color, width, headSize) {
  // Возвращает SVG: линия + треугольная стрелка на конце
  const dx = x2 - x1, dy = y2 - y1;
  const len = Math.sqrt(dx*dx + dy*dy);
  const ux = dx / len, uy = dy / len;
  const px = -uy, py = ux;  // перпендикуляр
  const h = headSize || 10;
  const w = (headSize || 10) * 0.6;
  const tipX = x2, tipY = y2;
  const baseX = x2 - ux * h, baseY = y2 - uy * h;
  const leftX = baseX + px * w, leftY = baseY + py * w;
  const rightX = baseX - px * w, rightY = baseY - py * w;
  return `<line x1="${x1}" y1="${y1}" x2="${baseX.toFixed(1)}" y2="${baseY.toFixed(1)}" stroke="${color}" stroke-width="${width || 2}"/>`
       + `<polygon points="${tipX},${tipY} ${leftX.toFixed(1)},${leftY.toFixed(1)} ${rightX.toFixed(1)},${rightY.toFixed(1)}" fill="${color}"/>`;
}

// === Линии электрического поля от точечного заряда ===
function fieldLinesPointCharge(cx, cy, sign, scale, numLines) {
  // sign: +1 или -1 (от знака заряда)
  // numLines: число линий (12-24)
  // Возвращает массив SVG-линий — стрелки наружу для +q, внутрь для -q
  let s = '';
  const N = numLines || 16;
  for (let i = 0; i < N; i++) {
    const a = 2 * Math.PI * i / N;
    const r1 = 15, r2 = scale;
    const x1 = cx + r1 * Math.cos(a), y1 = cy + r1 * Math.sin(a);
    const x2 = cx + r2 * Math.cos(a), y2 = cy + r2 * Math.sin(a);
    if (sign > 0) s += drawArrow(x1, y1, x2, y2, '#dc2626', 1.5);
    else          s += drawArrow(x2, y2, x1, y1, '#2563eb', 1.5);
  }
  return s;
}

// === Линии поля диполя (две точечных зарядов противоположных) ===
function fieldLinesDipole(c1, c2, scale, numLines) {
  // Параметрически — линия от +q к -q вдоль кривых, перпендикулярных эквипотенциалям
  // Упрощённо: использовать numerical integration по полю
  // ...
}

// === Электрическая схема: компоненты ===
function batteryEMF(x, y, EMF, orientation) {
  // Возвращает SVG условного обозначения батареи (две полоски + подпись ε)
}
function resistor(x, y, w, h, R, orientation) {
  // Возвращает SVG зигзага резистора + подпись R
}
function capacitor(x, y, C, orientation) {
  // Две параллельные линии + подпись C
}
function ammeter(x, y) {
  // Круг с буквой A
}
function voltmeter(x, y) {
  // Круг с буквой V
}
function inductor(x, y, L, orientation) {
  // Серия маленьких полукругов
}
function lightbulb(x, y) {
  // Круг с крестиком (или волной)
}

// === Магнитное поле: стрелки В через плоскость экрана ===
function magneticField(x, y, direction, dx, dy) {
  // direction: 'in' (крест) или 'out' (точка)
  // Рисует сетку 5x5 крестиков (вошло в плоскость) или точек (вышло из плоскости)
  let s = '';
  for (let i = 0; i < 5; i++) {
    for (let j = 0; j < 5; j++) {
      const cx = x + i * dx, cy = y + j * dy;
      if (direction === 'in') {
        s += `<circle cx="${cx}" cy="${cy}" r="6" fill="none" stroke="#0891b2" stroke-width="1.5"/>`;
        s += `<line x1="${cx-4}" y1="${cy-4}" x2="${cx+4}" y2="${cy+4}" stroke="#0891b2" stroke-width="1.5"/>`;
        s += `<line x1="${cx-4}" y1="${cy+4}" x2="${cx+4}" y2="${cy-4}" stroke="#0891b2" stroke-width="1.5"/>`;
      } else {
        s += `<circle cx="${cx}" cy="${cy}" r="6" fill="none" stroke="#0891b2" stroke-width="1.5"/>`;
        s += `<circle cx="${cx}" cy="${cy}" r="2" fill="#0891b2"/>`;
      }
    }
  }
  return s;
}

// === PV-диаграмма с изопроцессами ===
function pvDiagram(W, H, pad, pMax, vMax) {
  // Возвращает axes2D-объект с диапазоном (0..vMax, 0..pMax)
  // Подписи осей: P (атм или Па), V (л или м³)
}

// === Молекула газа (частица) ===
function molecule(x, y, r, color) {
  return `<circle cx="${x}" cy="${y}" r="${r}" fill="${color}" stroke="#0f172a" stroke-width="0.8"/>`;
}

// === Симуляция броуновского движения / движения молекул газа ===
class GasSimulation {
  constructor(opts) {
    this.W = opts.W; this.H = opts.H;
    this.N = opts.N || 30;
    this.particles = [];
    for (let i = 0; i < this.N; i++) {
      this.particles.push({
        x: Math.random() * this.W,
        y: Math.random() * this.H,
        vx: (Math.random() - 0.5) * opts.speed,
        vy: (Math.random() - 0.5) * opts.speed
      });
    }
  }
  step(dt) {
    this.particles.forEach(p => {
      p.x += p.vx * dt; p.y += p.vy * dt;
      // отражение от стенок
      if (p.x < 0 || p.x > this.W) p.vx = -p.vx;
      if (p.y < 0 || p.y > this.H) p.vy = -p.vy;
    });
  }
  render() {
    return this.particles.map(p => molecule(p.x, p.y, 4, '#2563eb')).join('');
  }
}
```

### Цветовая кодировка для физики

- **Положительный заряд** — красный (`#dc2626`)
- **Отрицательный заряд** — синий (`#2563eb`)
- **Электрическое поле $\vec{E}$** — оранжевый (`#ea580c`)
- **Магнитное поле $\vec{B}$** — фиолетовый (`#7c3aed`)
- **Сила** — зелёный (`#10b981`)
- **Скорость** — голубой (`#0891b2`)
- **Молекулы газа** — синие точки
- **Температура** — градиент от синего (холод) к красному (горячо)
- **Ток** — янтарный (`#d97706`)
- **Резистор / провод** — тёмно-серый (`#374151`)
- **Изотерма** (P-V) — оранжевый
- **Изобара** (V-T) — синий
- **Изохора** (P-T) — зелёный

### Правила (обязательны с §1)

1. **Все единицы измерения через KaTeX** — `\\text{Н}`, `\\text{м}^2$, `\\text{Дж/(моль·К)}` — никогда сырой текст.
2. **Slider'ы — в реальных физических величинах** с разумными диапазонами:
   - Температура: 100..500 К (или $-100..200$ °C)
   - Давление: 0.5..5 атм или $10^4..10^6$ Па
   - Объём: 1..10 л или $0.001..0.01$ м³
   - Заряд: $\pm 10^{-9}..10^{-6}$ Кл (нКл, мкКл)
   - Расстояние между зарядами: 0.01..1 м
   - Напряжение: 1..220 В
   - Ток: 0.01..10 А
   - Магнитная индукция: $10^{-3}..1$ Тл
3. **Snap-точки** на эталонных значениях: $T = 273$ К ($0$ °C), $T = 0$ K, $p = 1$ атм.
4. **Все формулы с КаTeX**, двойные backslash.
5. **Векторы — со стрелками** через `drawArrow`. Никогда `→` в тексте — через KaTeX `\\vec{E}`.
6. **Подписи единиц измерения** — обязательны на всех осях графиков, во всех результатах калькуляторов.
7. **Симуляции — через `requestAnimationFrame`** с возможностью паузы и сброса.
8. **Эмодзи запрещены.**
9. **Никаких пикселей в подписях** — всё в СИ или производных единицах.

### Типы интерактивов по темам

| Тип | Применение |
|-----|-----------|
| **Симуляция движения молекул** | §1 (МКТ), §3 (давление как удары о стенку), §9 (испарение) |
| **PV/VT/PT диаграммы** | §6 (изопроцессы — главное!), §15 (цикл Карно) |
| **Калькулятор Клапейрона–Менделеева** | §5 |
| **Психрометрический анализ** | §10 |
| **Поток теплоты симуляция** | §13 |
| **Цикл Карно — анимированная PV-диаграмма** | §15 |
| **Закон Кулона: 3D-визуализатор сил** | §17 |
| **Линии напряжённости электрического поля** | §20 (главный визуал электростатики) |
| **Эквипотенциальные поверхности** | §22 |
| **Конденсатор-конструктор** | §23 |
| **Электрическая цепь — конструктор** | §25, §26 |
| **Правило буравчика / левой руки — 3D** | §28, §29, §30 |
| **Движение заряженной частицы в B-поле — 3D-траектория** | §30 (главный визуал магнетизма) |
| **Опыты Фарадея — анимация катушки и магнита** | §31 |
| **Самоиндукция — LR-цепь, ток как функция времени** | §33 |
| **p-n переход — визуализация дырок и электронов** | §37 |

---

## 🚀 ПОРЯДОК РЕАЛИЗАЦИИ

Учитывая 37 параграфов — самый большой проект, разбиваем на **8 фаз**.

### Phase 0: Архитектура (фундамент)
- `physics_10_hub.html` — палитра **yellow/amber** (классический физический цвет) или **orange**
- 6 ch-файлов: `physics_10_ch1.html` (МКТ), `_ch2.html` (термодинамика), `_ch3.html` (электростатика), `_ch4.html` (пост. ток), `_ch5.html` (магнитное поле), `_ch6.html` (ток в средах)
- Миграция `0XX_physics_10_hub.sql` (следующий доступный номер)
- **`frontend/js/phys.js`** — новый модуль physics-хелперов (drawArrow, fieldLines, magneticField, схемы, GasSimulation, pvDiagram)
- 2D-хелперы (axes2D, plotFunc, etc.) и G3D подключены в каждый ch
- KaTeX CDN + auto-render
- POLISH CSS + bump-score JS

### Phase 1: Молекулярная физика — Глава 1 (10 §) — 5 волн
Самая большая глава учебника. По 2 §§ на волну.
- **Wave 1**: §1 (МКТ основные положения, БРОУНОВСКОЕ ДВИЖЕНИЕ симуляция) + §2 (масса/количество вещества, калькулятор $N$, $\nu$, $m$).
- **Wave 2**: §3 (давление через удары молекул, симуляция $p = \frac{1}{3} n m \overline{v^2}$) + §4 (температура, шкалы, $\overline{E_k} = \frac{3}{2}kT$).
- **Wave 3**: §5 (уравнение Клапейрона–Менделеева, калькулятор) + §6 (**изопроцессы — главный визуал главы**: PV/VT/PT диаграммы с slider'ом T, V, p).
- **Wave 4**: §7 (твёрдые тела, виды кристаллов SVG) + §8 (жидкости, поверхностное натяжение симуляция).
- **Wave 5**: §9 (испарение, насыщенный пар, динамическое равновесие симуляция) + §10 (влажность, психрометрический калькулятор) + **Финал главы 1** (7 боссов + ачивка «Мастер МКТ»).

### Phase 2: Молекулярная физика — Глава 2 «Термодинамика» (5 §) — 3 волны
- **Wave 1**: §11 (внутренняя энергия, $U = \frac{3}{2} \nu R T$) + §12 (работа в термодинамике, площадь под P-V кривой).
- **Wave 2**: §13 (количество теплоты — все 4 формулы) + §14 (первый закон термодинамики, применение к изопроцессам).
- **Wave 3**: §15 (тепловые двигатели, **цикл Карно — анимация PV-цикла**, КПД) + **Финал главы 2** (5 боссов + ачивка «Мастер термодинамики»).

### Phase 3: Электростатика (9 §) — 5 волн
- **Wave 1**: §16 (заряд, закон сохранения) + §17 (**закон Кулона — визуализатор сил**, slider $q_1, q_2, r$).
- **Wave 2**: §18 (электрическое поле) + §19 (напряжённость, суперпозиция).
- **Wave 3**: §20 (**линии напряжённости — главный визуал** — поле точечного заряда, диполя, двух одноимённых) + §21 (работа поля, потенциал).
- **Wave 4**: §22 (разность потенциалов, напряжение, $E = U/d$) + §23 (конденсаторы, $C = \varepsilon \varepsilon_0 S/d$).
- **Wave 5**: §24 (энергия поля конденсатора) + **Финал главы 3** (7 боссов + ачивка «Мастер электростатики»).

### Phase 4: Постоянный ток (2 §) — 1 волна
- **Wave 1**: §25 (ЭДС, сторонние силы) + §26 (закон Ома для полной цепи, **конструктор электрической цепи**) + **Финал главы 4** (5 боссов).

### Phase 5: Магнитное поле и индукция (7 §) — 4 волны
- **Wave 1**: §27 (опыт Эрстеда, симуляция) + §28 (индукция, правило буравчика, **3D-линии магнитной индукции вокруг проводника**).
- **Wave 2**: §29 (сила Ампера, правило левой руки, симуляция) + §30 (**сила Лоренца — 3D-движение частицы по спирали в B-поле**).
- **Wave 3**: §31 (магнитный поток, **опыты Фарадея — анимация катушки и магнита**) + §32 (правило Ленца, закон ЭМИ).
- **Wave 4**: §33 (самоиндукция, индуктивность, LR-цепь) + **Финал главы 5** (7 боссов + ачивка «Мастер магнетизма»).

### Phase 6: Ток в различных средах (4 §) — 2 волны
- **Wave 1**: §34 (металлы, сверхпроводимость) + §35 (электролиты, законы Фарадея).
- **Wave 2**: §36 (газы, плазма, виды разрядов) + §37 (полупроводники, **p-n переход — визуализация дырок и электронов**, n-/p-тип) + **Финал главы 6** (5 боссов + ачивка «Мастер токов»).

### Phase 7: Финал курса Физика 10
- Итоговая шпаргалка (6 mini-карточек: МКТ, термодинамика, электростатика, ток, магнетизм, ток в средах)
- **10 интегрированных боссов**, комбинирующих темы из разных глав:
  1. **МКТ + термодинамика**: $U$ и $T$ моноатомного газа
  2. **Изопроцесс + работа**: $A$ за изобарное расширение
  3. **Цикл Карно**: КПД при $T_1 = 600$ К, $T_2 = 300$ К
  4. **Закон Кулона + суперпозиция**: сила на 3-й заряд от двух источников
  5. **Конденсатор + энергия**: $W$ от $C$, $U$
  6. **Закон Ома для полной цепи + КПД**
  7. **Сила Лоренца + радиус**: $R = mv/(qB)$
  8. **Закон ЭМИ Фарадея**: $\mathcal{E}_i$ от $d\Phi/dt$
  9. **Самоиндукция + энергия**: $W_L = LI^2/2$
  10. **Магистр электродинамики**: синтез
- Ачивка **«Магистр физики 10»** (+150 XP — крупнейший курс)
- Кнопка «К каталогу учебников» → `/textbooks`

---

## 📦 Структура каждого § (стандарт)

### Wave 0 главы — skeleton (включено в Phase 0)
- CSS + цветовая палитра 3 акцентов на §
- Sections + stub-builders
- Hub-карточка обновляется
- Миграция в БД

### Wave N — наполнение § (по 2 § на волну)

**Каждый § содержит:**
- **3 теоретические карточки** (`theory`, `rule`, `example`) с SVG-схемами/графиками
- **4 интерактива** (`.wg` виджеты):
  1. **Симуляция** или **3D/SVG-визуализатор** (главный)
  2. **Калькулятор закона** (ввод параметров → формула с подстановкой → результат с единицами)
  3. **DnD/Квикфайр** (понятийный)
  4. **Тренажёр расчётных задач** (5-6 задач с числовым ответом, допуск 1-5%)
- **Кнопка «Я прочитал § (+10 XP)»**
- **Прогресс/XP**: IV1 15%/10XP, IV2 15%/10XP, IV3 25%/15XP, IV4 25%/15XP, чтение 30%/10XP

### Wave финал главы
- **Итоговая шпаргалка** с формулами
- **5-7 интегрированных боссов** (синтез тем главы)
- **Ачивка «Мастер главы N»** + 50 XP + confetti
- **Кнопка** перехода к следующей главе

---

## 📊 Оценка объёма

| Глава | § | LOC |
|-------|---|-----|
| Phase 0: skeleton + phys.js | — | 2500 |
| Глава 1 МКТ (§§1-10) | 10 | 13 000 |
| Глава 2 Термодинамика (§§11-15) | 5 | 6 500 |
| Глава 3 Электростатика (§§16-24) | 9 | 12 000 |
| Глава 4 Пост. ток (§§25-26) | 2 | 3 000 |
| Глава 5 Магнетизм (§§27-33) | 7 | 10 500 |
| Глава 6 Ток в средах (§§34-37) | 4 | 5 500 |
| Phase 7 финал курса | — | 1 500 |
| **Итого** | **37** | **~54 500 LOC** |

Это **больше**, чем Геометрия 11 (~30K) или Алгебра 9 (~30K). Самый объёмный курс.

---

## ⚠️ Критические правила (опыт всех 10 предыдущих учебников)

### ❌ НЕ делать
- **Slider'ы в пиксельных диапазонах** (40..150). Только в реальных физических единицах с правильным масштабом отрисовки.
- **Подписи без единиц измерения** ($p = 100$ — это что? Па? атм?). Всегда: $p = 1$ атм $= 10^5$ Па.
- **Эмодзи** (`⚠`, `🌡️`, `🔋`). Только inline SVG.
- **Одиночный `\` перед буквой** в JS template literals: `\dfrac`, `\sin`, `\vec`. ВСЕГДА `\\dfrac`.
- **Сырой KaTeX в `<option>`** — KaTeX там не рендерится. Только unicode-текст в `<option>`.
- **Эталонные значения вместо реальных** — в задачах используй $\pi = 3.14$, $g = 10$ м/с², $k_B = 1.38 \cdot 10^{-23}$ Дж/К ровно.
- **Symbol `\degree`** не существует в KaTeX. Используй `^\\circ` для °.
- **Бесконечные симуляции без паузы** — всегда кнопка «Пауза / Сброс» и `cancelAnimationFrame` при unmount.

### ✅ Обязательно
- **Все единицы СИ в формулах** — никаких ватт в задаче без обозначения «Вт».
- **Snap-точки в slider'ах** для эталонных значений: $T = 273$ К, $p = 1$ атм, $g = 10$ м/с².
- **Цветовая кодировка** едина по всем § (заряд+/−, поле $E$/$B$, сила, скорость, ток).
- **KaTeX-аудит** через `node` после каждого Wave (паттерн `[^\\]\\[a-z]{2,}` в JS-блоках).
- **JS parse-check** через `new Function(scriptBody)` после каждого Wave.
- **Авторов нет** — в hub footer'е только «Интерактивный учебник «Физика — 10 класс» · LearnSpace» (как сделали для остальных).
- **Симуляции** должны иметь паузу, перезапуск, и быть **физически корректными**: реальная скорость, реальная масса, реальные коэффициенты.

---

## 🎬 Запуск

**Phase 0**: skeleton 6 ch-файлов + hub + миграция + новый модуль `phys.js` со всеми physics-хелперами.

Палитра hub: **yellow/amber** (классическая для физики) — `--pri:#ca8a04` (yellow-600), `--pri-d:#a16207` (yellow-700), `--pri-soft:#fef3c7`. Header gradient: `linear-gradient(110deg,#713f12 0%,#ca8a04 55%,#fde047 100%)`. Эта палитра отличается от Алгебры 11 (teal) и Геометрии 11 (cyan).

После Phase 0 → Phase 1 Wave 1 (§1 МКТ + §2 масса молекул).

После завершения всех 8 Phase Физика 10 — план одного 10-класса завершён (можно потом план Алгебры 10 + Геометрии 10).
