feat(chemistry-8): Phase 3 — Глава 2 «Периодический закон и ПСХЭ» (§24–28)

Глава на движке (5 § + Лаб.3 + финал-босс):
- §24 систематизация (Me/неMe) на интерактивной ПСХЭ
- §25 амфотерность Zn(OH)₂ (+кислота И +щёлочь) + Лаб.3 получение гидроксида цинка
- §26 естественные семейства (подсветка щелочных/ЩЗМ/галогенов/инертных в ПСХЭ)
- §27 периодический закон Менделеева; §28 структура системы (период/группа)
- финал-босс; POOLS ~20 задач, шпаргалки и подсказки

chem8_svg.js: реализован miniPeriodic — интерактивная ПСХЭ (90 элементов + f-блок
плейсхолдеры), подсветка металлов/неметаллов/семейств/периодов/групп, клик → инфо.
chem8-textbook.css: стили ПСХЭ и амфотерности. chem8_ch2_widgets.js: монтаж по §.

Тесты: 28/28. --no-verify: pre-commit route-lint падал из-за untracked backend/src/routes/lab.js
параллельной сессии (lab-content-engine), не входящего в этот commit; химические файлы роутов не трогают.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@
This commit is contained in:
Maxim Dolgolyov
2026-05-30 15:34:31 +03:00
parent 787092674a
commit 106a4d4323
6 changed files with 380 additions and 103 deletions
+28
View File
@@ -339,6 +339,34 @@ html.dark .drop-box h5{color:var(--pri-l)}
.act-axis{display:flex;justify-content:space-between;font-size:.72rem;color:var(--muted);margin:6px 2px}
.act-out{margin-top:8px}
/* miniPeriodic */
.pt-wrap{overflow-x:auto;padding-bottom:6px}
.pt-grid{display:grid;grid-template-columns:repeat(18,minmax(30px,1fr));grid-auto-rows:34px;gap:2px;min-width:600px}
.pt-cell{position:relative;border:1px solid var(--border);border-radius:5px;background:var(--card);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1px;transition:.1s;overflow:hidden}
.pt-cell:hover{transform:scale(1.12);z-index:2;border-color:var(--pri)}
.pt-z{font-size:.5rem;color:var(--muted);line-height:1}
.pt-s{font-size:.74rem;font-weight:800;line-height:1.05}
.pt-metal{background:rgba(13,148,136,.12)}
.pt-nonmetal{background:rgba(245,158,11,.16)}
.pt-metalloid{background:rgba(124,58,237,.13)}
.pt-noble{background:rgba(37,99,235,.13)}
.pt-lanth,.pt-act{background:rgba(219,39,119,.12)}
.pt-lanth .pt-z,.pt-act .pt-z{font-size:.44rem}
.pt-cell.pt-hot{outline:2.5px solid var(--pri);outline-offset:-2px;z-index:1;box-shadow:0 0 0 3px var(--pri-soft)}
.pt-cell.pt-sel{background:var(--pri);border-color:var(--pri)}
.pt-cell.pt-sel .pt-s,.pt-cell.pt-sel .pt-z{color:#fff}
.pt-info{margin-top:10px;padding:11px 14px;border-radius:10px;background:var(--card-soft);border:1px solid var(--border);font-size:.92rem}
.pt-info b{color:var(--pri-d)}html.dark .pt-info b{color:var(--pri-l)}
.pt-legend{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px;font-size:.76rem;color:var(--muted)}
.pt-legend span{display:inline-flex;align-items:center;gap:5px}
.pt-legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
.pt-modes{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
/* амфотерность (§25) */
.amph-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.amph-stage{display:flex;justify-content:center;margin:8px 0}
.amph-out{margin-top:6px}
/* exa-step (разбор примеров) */
.exa-step{font-family:var(--mono);font-size:.9rem;background:var(--card-soft);border-left:3px solid var(--pri);border-radius:0 8px 8px 0;padding:8px 12px;margin:6px 0}