PR #69: feat/lesson-nav-hexlet-style

UI-правки тренажёра по итогам созвона 14.07 · Задача №1 из 3 · Ориентир: Хекслет

Изменения

1. Убрать кнопку «Назад»
LessonSideNav теперь рендерит только кнопку «Далее». Логика навигации вперёд сохранена полностью. Удалён вызов lessonFooterPrev и импорт из lesson-units. На десктопе (aside-nav) и мобилке (footer-nav-mobile-only) — нет «Назад» нигде.
lesson/LessonSideNav.tsx lesson/__tests__/LessonSideNav.test.tsx
2. Убрать переключатель Теория/Квиз/Практика
LessonStepper убран из LessonLayout в обоих местах (focus и non-focus режим). Переходы Теория→Квиз→Практика→следующий урок продолжают работать через «Далее». Мобильные вкладки «Условие/Код/Вывод» внутри практики не затронуты.
lesson/LessonLayout.tsx
3. Правый TOC-сайдбар теории с H2-якорями
На странице теории справа от колонки появляется sticky-оглавление по H2. Клик → smooth scroll к разделу. Показывается только если H2 ≥ 2. На мобилке ≤860px скрыт (grid single-column). H2 в markdown получают id через кастомный рендерер в markdownComponents. Ширина 70ch и центрирование 52rem (PR #56, #68) не затронуты.
lib/theory-headings.ts (новый) lesson/LessonTheoryToc.tsx (новый) lesson/LessonTheoryStep.tsx lesson/LessonTheoryContent.tsx lib/markdown-components.tsx styles/global.css

Проверки

pnpm test — 148/148 тестов зелёных
pnpm -r typecheck — 4 пакета (shared, web, runner, api) без ошибок
LessonSideNav.test.tsx обновлён: тесты «Назад» заменены на проверки отсутствия
Не затронуты: fix #56 (max-width:100% lesson-main-body), fix #68 (lesson-main-column центр)
Мобильные вкладки практики (Условие/Код/Вывод) не изменены
📸 Playwright-скрины ДО/ПОСЛЕ (desktop 1280/1440 + mobile 360/414) сохранены в /tmp/education-platform/screenshots/before-nav-*.png и after-nav-*.png. Скрины зафиксированы до коммита из локальной сборки. Встроенные изображения не публикуются в git (gitignored).
→ PR #69 на GitHub