'
+ + quizQuestion('p8-tr', 0, 'Каков примерный диаметр молекулы воды?', ['$10^{-3}$ м','$10^{-6}$ м','$10^{-10}$ м','$10^{-15}$ м'], 2, 'Молекулы — порядка $10^{-10}$ м (десятая часть нанометра).')
+ + quizQuestion('p8-tr', 1, 'Что меньше: молекула или ядро атома?', ['Молекула','Ядро атома','Они одинаковые','Зависит от вещества'], 1, 'Ядро в $\\sim 10^5$ раз меньше атома.')
+ + quizQuestion('p8-tr', 2, 'Почему газы легко сжимаются?', ['Молекулы мягкие','Между молекулами большие промежутки','Газ не имеет молекул','Молекулы скользят'], 1)
+ + quizQuestion('p8-tr', 3, 'Молекула — это…', ['Видимая частица','Наименьшая частица, сохраняющая свойства вещества','Атом','Кристалл'], 1)
+ + quizQuestion('p8-tr', 4, 'Из чего состоят молекулы?', ['Из электронов','Из протонов','Из атомов','Из ядер'], 2)
+ + '
');
+
+ h += readButton('p8');
+ body.innerHTML = h;
+
+ // Wire molecule constructor
+ const molData = {
+ 'H2O': { atoms:[{x:160,y:65,r:18,c:'#dc2626',l:'O'},{x:120,y:90,r:11,c:'#fff',l:'H',stroke:'#94a3b8'},{x:200,y:90,r:11,c:'#fff',l:'H',stroke:'#94a3b8'}], bonds:[[0,1],[0,2]], desc:'H₂O (вода): 1 атом кислорода + 2 атома водорода под углом 104,5°.' },
+ 'CO2': { atoms:[{x:160,y:65,r:14,c:'#0f172a',l:'C'},{x:100,y:65,r:18,c:'#dc2626',l:'O'},{x:220,y:65,r:18,c:'#dc2626',l:'O'}], bonds:[[0,1],[0,2]], desc:'CO₂ (углекислый газ): углерод между двумя кислородами, молекула линейная.' },
+ 'O2': { atoms:[{x:120,y:65,r:18,c:'#dc2626',l:'O'},{x:200,y:65,r:18,c:'#dc2626',l:'O'}], bonds:[[0,1]], desc:'O₂ (кислород): два атома кислорода. Этим воздухом мы дышим.' },
+ 'N2': { atoms:[{x:120,y:65,r:18,c:'#0891b2',l:'N'},{x:200,y:65,r:18,c:'#0891b2',l:'N'}], bonds:[[0,1]], desc:'N₂ (азот): два атома азота. 78 % воздуха — это N₂.' },
+ 'CH4': { atoms:[{x:160,y:65,r:14,c:'#0f172a',l:'C'},{x:160,y:30,r:11,c:'#fff',l:'H',stroke:'#94a3b8'},{x:160,y:100,r:11,c:'#fff',l:'H',stroke:'#94a3b8'},{x:110,y:65,r:11,c:'#fff',l:'H',stroke:'#94a3b8'},{x:210,y:65,r:11,c:'#fff',l:'H',stroke:'#94a3b8'}], bonds:[[0,1],[0,2],[0,3],[0,4]], desc:'CH₄ (метан): углерод в центре, 4 водорода по углам тетраэдра. Природный газ.' },
+ 'NaCl':{ atoms:[{x:130,y:65,r:18,c:'#7c3aed',l:'Na'},{x:200,y:65,r:18,c:'#10b981',l:'Cl'}], bonds:[[0,1]], desc:'NaCl (поваренная соль): натрий + хлор. В твёрдом виде образует кубическую решётку.' }
+ };
+ function drawMol(m){
+ const d = molData[m];
+ let s = '';
+ d.bonds.forEach(([i,j]) => {
+ s += '';
+ });
+ d.atoms.forEach(a => {
+ s += '';
+ s += '' + a.l + '';
+ });
+ document.getElementById('p8-mol-svg').innerHTML = s;
+ document.getElementById('p8-mol-desc').textContent = d.desc;
+ }
+ body.querySelectorAll('.p8-mol').forEach(btn => btn.addEventListener('click', () => {
+ body.querySelectorAll('.p8-mol').forEach(b => { b.style.background = '#fff'; b.style.color = '#0f172a'; });
+ btn.style.background = ACCENT; btn.style.color = '#fff';
+ drawMol(btn.dataset.m);
+ }));
+ drawMol('H2O');
+ body.querySelector('.p8-mol[data-m="H2O"]').style.background = ACCENT;
+ body.querySelector('.p8-mol[data-m="H2O"]').style.color = '#fff';
+
+ wireDnd('p8-dnd', [
+ { id:'a1', cat:'atom' },{ id:'a2', cat:'atom' },{ id:'a3', cat:'mol' },{ id:'a4', cat:'mol' },
+ { id:'a5', cat:'body' },{ id:'a6', cat:'body' },{ id:'a7', cat:'atom' },{ id:'a8', cat:'mol' }
+ ]);
+ wireQuiz('p8-tr-host', () => { if(window.addXp) window.addXp(15, 'tr-p8'); });
+ wireReadBtn('p8');
+ renderMath(body);
+}
+
+/* ========================================================== */
+/* §9 — Тепловое движение частиц. Диффузия */
+/* ========================================================== */
+function add_p9(){
+ const body = document.getElementById('p9-body');
+ if(!body) return;
+ let h = '';
+
+ h += makeCard('theory', 'Молекулы вечно движутся', '§ 9.1',
+ 'Молекулы любого тела находятся в непрерывном беспорядочном (хаотическом) движении. '
+ + 'Это движение называется тепловым: чем выше температура, тем быстрее движутся частицы.
'
+ + 'Доказательство — броуновское движение: мельчайшие частицы в воде (пыльца, тушь) непрерывно дёргаются под ударами молекул.');
+
+ h += makeCard('rule', 'Диффузия', '§ 9.2',
+ 'Диффузия — это самопроизвольное взаимное проникновение молекул одного вещества между молекулами другого.
'
+ + 'Скорость диффузии зависит от:'
+ + '
'
+ + '
температуры: выше $T$ → быстрее диффузия;
'
+ + '
состояния вещества: в газах ⪢ в жидкостях ⪢ в твёрдых телах.
'
+ + '
');
+
+ h += makeCard('example', 'Где мы видим диффузию', '§ 9.3',
+ '
'
+ + '
Запах духов или пищи распространяется по комнате — диффузия в воздухе.
'
+ + '
Чай завариваеётся быстрее в горячей воде — молекулы чая активно перемешиваются.
'
+ + '
Засолка огурцов идёт долго — диффузия в жидкости медленнее, чем в газе.
'
+ + '
Сварка металлов на самом деле — диффузия атомов в твёрдом теле, очень медленная.
'
+ + '
');
+
+ /* IV-1: симуляция диффузии (свой простой газ) */
+ h += wgWrap('p9-iv1', 'СИМ', 'Диффузия чернил в воде', 'Меняй температуру — наблюдай, как ускоряется смешивание.',
+ '
'
+ + ''
+ + ''
+ + '
'
+ + ''
+ + '
Синие молекулы — вода, тёмные — чернила. Видно, как чем теплее, тем быстрее они перемешиваются.
на малом расстоянии (молекулы «прижаты») — преобладает отталкивание;
'
+ + '
на равновесном расстоянии $r_0$ — силы уравновешиваются;
'
+ + '
на большом расстоянии — преобладает притяжение;
'
+ + '
на очень большом — силы пренебрежимо малы.
'
+ + '
');
+
+ h += makeCard('rule', 'Зачем нужно знать про эти силы', '§ 10.2',
+ 'Силы между молекулами объясняют:'
+ + '
'
+ + '
почему твёрдые тела сохраняют форму (сильное притяжение),
'
+ + '
почему трудно растянуть стальной трос (надо преодолеть притяжение),
'
+ + '
почему трудно сжать жидкость (молекулы уже близко — мешает отталкивание),
'
+ + '
почему пружина возвращается в исходное положение — силы упругости имеют ту же природу.
'
+ + '
');
+
+ h += makeCard('example', 'Опыт с свинцовыми цилиндрами', '§ 10.3',
+ 'Если две тщательно отшлифованные свинцовые поверхности сжать вместе, '
+ + 'они «слипнутся» — их можно даже подвесить на крючок, и они не разойдутся. '
+ + 'Причина — притяжение молекул на малом расстоянии. '
+ + 'Через грязный или окисленный слой это не работает: молекулы не подходят достаточно близко.');
+
+ /* IV-1: график F(r) */
+ h += wgWrap('p10-iv1', 'СИМ', 'График сил F(r) — притяжение и отталкивание', 'Двигай молекулу — увидь, какая сила преобладает.',
+ ''
+ + ''
+ + '');
+
+ /* IV-2: квиз */
+ h += wgWrap('p10-iv2', 'КВИЗ', 'Силы взаимодействия', 'Выбери верное.',
+ '
'
+ + quizQuestion('p10-q', 0, 'На равновесном расстоянии $r_0$ молекулы…', ['Только притягиваются','Только отталкиваются','Притяжение и отталкивание равны','Не взаимодействуют'], 2)
+ + quizQuestion('p10-q', 1, 'Почему трудно сжать жидкость?', ['Молекул мало','Молекулы уже близко — мешает отталкивание','Жидкость не имеет молекул','Притяжение слишком сильно'], 1)
+ + quizQuestion('p10-q', 2, 'Почему пружина возвращается в исходную форму?', ['Из-за гравитации','Из-за сил между молекулами','Сама по себе','Из-за воздуха'], 1)
+ + quizQuestion('p10-q', 3, 'На очень большом расстоянии межмолекулярные силы…', ['Очень большие','Пренебрежимо малы','Отталкивают','Колеблются'], 1)
+ + '
'
+ + quizQuestion('p10-tr', 0, 'Между молекулами действуют…', ['Только притяжение','Только отталкивание','И притяжение, и отталкивание','Никаких сил'], 2)
+ + quizQuestion('p10-tr', 1, 'Если молекулы оказались ближе $r_0$, то результирующая сила…', ['Отталкивает','Притягивает','Равна нулю','Не определена'], 0)
+ + quizQuestion('p10-tr', 2, 'Опыт со свинцовыми цилиндрами показывает…', ['Что вещество твёрдое','Что молекулы притягиваются на близком расстоянии','Что свинец тяжёлый','Что молекулы движутся'], 1)
+ + quizQuestion('p10-tr', 3, 'Силы упругости имеют ту же природу, что и…', ['Сила трения','Гравитация','Силы между молекулами','Электромагнитные волны'], 2)
+ + '
');
+
+ h += readButton('p10');
+ body.innerHTML = h;
+
+ function drawF(){
+ const rRel = +document.getElementById('p10-r-r').value / 100; // r/r0 from 0.6 to 2.5
+ document.getElementById('p10-r').textContent = rRel.toFixed(2);
+ const W = 380, H = 200, pad = 30;
+ // Чертим оси r (x) и F (y)
+ // F(r) модельная: F = a/r^13 - b/r^7 (Lennard-Jones-like), минимум в r=1.
+ function F(r){ return 12/Math.pow(r,13) - 12/Math.pow(r,7); }
+ let s = '';
+ // Оси
+ s += '';
+ s += '';
+ s += 'r';
+ s += 'F';
+ // r=r0
+ const r0X = pad + (W - 2*pad) * (1 - 0.6) / (2.5 - 0.6);
+ s += '';
+ s += 'r₀';
+ // Кривая F(r)
+ let path = '';
+ for(let i = 0; i <= 60; i++){
+ const r = 0.6 + (2.5 - 0.6) * i / 60;
+ const f = F(r);
+ const fClamped = Math.max(-2, Math.min(4, f));
+ const x = pad + (W - 2*pad) * (r - 0.6) / (2.5 - 0.6);
+ const y = H/2 - fClamped * 18;
+ path += (i === 0 ? 'M' : 'L') + x.toFixed(1) + ' ' + y.toFixed(1) + ' ';
+ }
+ s += '';
+ // Текущая точка
+ const curX = pad + (W - 2*pad) * (rRel - 0.6) / (2.5 - 0.6);
+ const curF = Math.max(-2, Math.min(4, F(rRel)));
+ const curY = H/2 - curF * 18;
+ s += '';
+ s += '';
+ // Подписи областей
+ s += 'отталкивание';
+ s += 'притяжение';
+
+ document.getElementById('p10-svg').innerHTML = s;
+
+ // Info
+ const fVal = F(rRel);
+ let label;
+ if(rRel < 0.95) label = 'Отталкивание (молекулы слишком близко).';
+ else if(rRel < 1.05) label = 'Равновесие: силы уравновешены, $F \\approx 0$.';
+ else if(rRel < 1.6) label = 'Притяжение (молекулы стремятся вернуться).';
+ else label = 'Силы малы: молекулы почти не взаимодействуют.';
+ document.getElementById('p10-info').innerHTML = '$r/r_0 = ' + rRel.toFixed(2) + '$ · ' + label;
+ renderMath(document.getElementById('p10-info'));
+ }
+ document.getElementById('p10-r-r').addEventListener('input', drawF);
+ drawF();
+
+ wireDnd('p10-dnd', [
+ { id:'a1', cat:'rep' },{ id:'a2', cat:'rep' },{ id:'a3', cat:'eq' },
+ { id:'a4', cat:'attr' },{ id:'a5', cat:'attr' },{ id:'a6', cat:'zero' }
+ ]);
+ wireQuiz('p10-q-host', () => { if(window.addXp) window.addXp(10, 'q-p10'); });
+ wireQuiz('p10-tr-host', () => { if(window.addXp) window.addXp(15, 'tr-p10'); });
+ wireReadBtn('p10');
+ renderMath(body);
+}
+
+/* ========================================================== */
+/* §11 — Газообразное, жидкое, твёрдое состояния */
+/* ГЛАВНЫЙ ВИЗУАЛ ГЛАВЫ 2: переключатель состояний с анимацией */
+/* ========================================================== */
+function add_p11(){
+ const body = document.getElementById('p11-body');
+ if(!body) return;
+ let h = '';
+
+ h += makeCard('theory', 'Три состояния — три поведения частиц', '§ 11.1',
+ 'Одно и то же вещество может находиться в трёх состояниях. Различие — в том, '
+ + 'как расположены и движутся его молекулы:'
+ + '
'
+ + '
Состояние
Форма
Объём
'
+ + '
Твёрдое
сохраняет
сохраняет
'
+ + '
Жидкое
принимает форму сосуда
сохраняет
'
+ + '
Газообразное
заполняет весь сосуд
не сохраняет
'
+ + '
');
+
+ h += makeCard('rule', 'Чем отличается поведение молекул', '§ 11.2',
+ '
'
+ + '
Твёрдое: молекулы в узлах кристаллической решётки; колеблются около положений равновесия. Притяжение сильное.
'
+ + '
Жидкое: молекулы упакованы плотно, но «перескакивают» с места на место. Промежутки малы — несжимаема, но течёт.
'
+ + '
Газообразное: молекулы летают почти свободно на больших расстояниях. Силы притяжения слабые. Газ занимает весь предоставленный объём.
'
+ + '
');
+
+ h += makeCard('example', 'Вода — все три состояния', '§ 11.3',
+ 'Удивительно: одна и та же $\\text{H}_2\\text{O}$ существует во всех трёх состояниях:'
+ + '
'
+ + '
Лёд (твёрдое) — при $t < 0$ °C. Сохраняет форму, можно расколоть.
'
+ + '
Вода (жидкое) — от $0$ до $100$ °C. Принимает форму сосуда.
'
+ + '
Пар (газообразное) — при $t > 100$ °C. Заполняет всё пространство.
'
+ + '
'
+ + 'Сами молекулы при переходе не меняются — меняется лишь характер их движения и расположения.');
+
+ /* IV-1: ГЛАВНЫЙ ВИЗУАЛ — переключатель 3 состояний с симуляцией МКТ */
+ h += wgWrap('p11-iv1', 'СИМ', 'Молекулы в трёх состояниях', 'Переключай состояние — смотри, как меняется поведение частиц.',
+ '
'
+ + quizQuestion('p11-tr', 0, 'Можно ли сжать газ в 2 раза в плотно закрытом шприце?', ['Нет','Да, легко','Только при высокой температуре','Только при очень низкой'], 1)
+ + quizQuestion('p11-tr', 1, 'Жидкость практически не сжимается, потому что…', ['Молекул мало','Молекулы уже плотно упакованы','Жидкости лёгкие','Молекулы неподвижны'], 1)
+ + quizQuestion('p11-tr', 2, 'В каком состоянии вещества молекулы располагаются в строгом порядке (кристалл)?', ['Твёрдое','Жидкое','Газообразное','Ни в каком'], 0)
+ + quizQuestion('p11-tr', 3, 'При переходе из льда в воду молекулы $\\text{H}_2\\text{O}$…', ['Распадаются','Превращаются в другие','Остаются теми же, меняется лишь их движение','Исчезают'], 2)
+ + quizQuestion('p11-tr', 4, '$0{,}5$ л воды налили в банку $1$ л. Какой объём займёт вода?', ['0,5 л','1 л','0,75 л','Зависит от формы'], 0, 'Жидкость сохраняет свой объём — только форму она меняет.')
+ + '
'
+ + 'Тепловое расширение есть у всех веществ — твёрдых, жидких и газообразных. '
+ + 'Сильнее всех расширяются газы, меньше всех — твёрдые тела.');
+
+ h += makeCard('rule', 'Где это важно учитывать', '§ 12.2',
+ '
'
+ + '
Рельсы укладывают с зазорами — летом сталь удлиняется.
'
+ + '
Мосты опирают через катки или прокладки — иначе бы трескались.
'
+ + '
Провода ЛЭП летом провисают сильнее, чем зимой.
'
+ + '
Биметаллическая пластина — два металла спаяны вместе, гнётся от температуры. Используется в утюгах и термостатах.
'
+ + '
');
+
+ h += makeCard('example', 'Аномалия воды', '§ 12.3',
+ 'Большинство веществ при нагревании расширяются. Но у воды есть исключение: '
+ + 'при $t$ от $0$ до $+4$ °C она сжимается, а только начиная с $+4$ °C — расширяется. '
+ + 'Поэтому самая плотная вода — при $+4$ °C; она опускается на дно водоёма. '
+ + 'Это спасает жизнь в озёрах зимой: лёд плавает сверху, а под ним вода с $+4$ °C, где могут жить рыбы.');
+
+ /* IV-1: расширение стержня + биметалла */
+ h += wgWrap('p12-iv1', 'СИМ', 'Тепловое расширение стержня', 'Меняй температуру — наблюдай длину.',
+ ''
+ + ''
+ + '');
+
+ /* IV-2: биметалл */
+ h += wgWrap('p12-iv2', 'СИМ', 'Биметаллическая пластина', 'Два металла расширяются по-разному — пластина гнётся.',
+ ''
+ + ''
+ + '
'
+ + quizQuestion('p13-tr', 0, 'Температура $t = 0$ °C соответствует…', ['Таянию льда','Кипению воды','Замерзанию ртути','Абсолютному нулю'], 0)
+ + quizQuestion('p13-tr', 1, 'Сколько Кельвинов в $0$ °C?', ['0','100','273,15','373,15'], 2, '$T = 0 + 273{,}15 = 273{,}15$ K.')
+ + quizQuestion('p13-tr', 2, 'В каком термометре используется расширение жидкости?', ['Биметаллическом','Электронном','Жидкостном (спиртовом/ртутном)','Инфракрасном'], 2)
+ + quizQuestion('p13-tr', 3, 'Тело человека: $36{,}6$ °C $= ?$ K', ['36,6','273,15','309,75','310'], 2, '$T = 36{,}6 + 273{,}15 \\approx 309{,}75$ K.')
+ + quizQuestion('p13-tr', 4, 'Может ли быть температура $-300$ °C?', ['Да','Нет, ниже -273,15 °C ничего не бывает','Только в космосе','Только в опытах'], 1)
+ + '
');
+
+ h += readButton('p13');
+ body.innerHTML = h;
+
+ // §13 IV-1 thermometer
+ function drawTherm(){
+ const t = +document.getElementById('p13-t-r').value;
+ document.getElementById('p13-t').textContent = t;
+ const W = 100, H = 220;
+ const xC = 50, tubeTop = 20, tubeBot = 180, tubeW = 14;
+ const minT = -50, maxT = 150;
+ const frac = Math.max(0, Math.min(1, (t - minT) / (maxT - minT)));
+ const colTop = tubeBot - (tubeBot - tubeTop) * frac;
+ // Резервуар
+ const bulbR = 18;
+ const bulbY = 196;
+ let s = '';
+ s += '';
+ s += '';
+ // Столбик
+ const hue = 240 - 240 * frac;
+ const col = 'hsl(' + hue + ',75%,50%)';
+ s += '';
+ s += '';
+ // Шкала
+ for(let T = minT; T <= maxT; T += 10){
+ const y = tubeBot - (tubeBot - tubeTop) * (T - minT) / (maxT - minT);
+ const isBig = T % 50 === 0 || T === 0 || T === 100;
+ s += '';
+ if(isBig) s += '' + T + '';
+ }
+ // Указатель текущей
+ const tY = tubeBot - (tubeBot - tubeTop) * (t - minT) / (maxT - minT);
+ s += '';
+ s += '°C';
+ document.getElementById('p13-svg').innerHTML = s;
+ // Info
+ let label;
+ if(t < -50) label = 'Очень холодно (вряд ли встретишь в природе на Земле).';
+ else if(t < -30) label = 'Сильный мороз — Север, Сибирь зимой.';
+ else if(t < 0) label = 'Минусовая температура — вода замерзает.';
+ else if(t < 10) label = 'Прохладно — поздняя осень.';
+ else if(t < 25) label = 'Комфортно — обычная комнатная температура.';
+ else if(t < 37) label = 'Тепло — летний день.';
+ else if(t < 60) label = 'Жарко — около температуры тела или горячая вода из крана.';
+ else if(t < 100) label = 'Очень горячо — нельзя касаться, можно обжечься.';
+ else if(t < 120) label = 'Кипяток / пар — кипящая вода.';
+ else label = 'Очень горячо — выше точки кипения воды.';
+ document.getElementById('p13-info').innerHTML = label + ' $T = t + 273{,}15 = ' + (t + 273.15).toFixed(2) + '$ K';
+ renderMath(document.getElementById('p13-info'));
+ }
+ document.getElementById('p13-t-r').addEventListener('input', drawTherm);
+ drawTherm();
+
+ // §13 IV-2 converter
+ document.getElementById('p13c-c-r').addEventListener('input', () => {
+ const c = +document.getElementById('p13c-c-r').value;
+ document.getElementById('p13c-c').textContent = c;
+ document.getElementById('p13c-k').textContent = (c + 273.15).toFixed(2);
+ });
+
+ wireDnd('p13-dnd', [
+ { id:'a1', cat:'cold' },{ id:'a2', cat:'cold' },{ id:'a3', cat:'room' },
+ { id:'a4', cat:'room' },{ id:'a5', cat:'hot' },{ id:'a6', cat:'hot' }
+ ]);
+ wireQuiz('p13-tr-host', () => { if(window.addXp) window.addXp(15, 'tr-p13'); });
+ wireReadBtn('p13');
+ renderMath(body);
+}
+
+/* ========================================================== */
+/* Финал главы 2 — 5 боссов + ачивка «Знаток вещества» */
+/* ========================================================== */
+function add_final2(){
+ const body = document.getElementById('final2-body');
+ if(!body) return;
+ let h = '';
+
+ h += '
'
+ + '
Финал главы 2: победи 5 боссов
'
+ + '
Реши все 5 задач — получишь ачивку «Знаток вещества» и +50 XP.
'
+ + '
'
+ + '
Побеждено: 0 / 5
'
+ + '
';
+
+ const bosses = [
+ { n:1, tag:'§8', title:'Размер молекулы',
+ q:'Во сколько раз молекула воды ($\\sim 10^{-10}$ м) меньше толщины волоса ($\\sim 10^{-4}$ м)?',
+ hint:'$10^{-4} / 10^{-10} = 10^6$ — в миллион раз.',
+ ans:1000000, tol:50000, step:'1' },
+ { n:2, tag:'§9', title:'Диффузия и температура',
+ q:'Стакан кипятка ($+95$ °C) и стакан воды из-под крана ($+10$ °C). В обоих растворяют одинаковую щепотку соли. Через сколько минут вода в первом будет соленее по всему объёму, если во втором — за $30$ мин? Считать, что скорость диффузии примерно $\\sim T$ (в Кельвинах). Ответ — приблизительно в минутах (округли до целого).',
+ hint:'$T_1 = 95+273 = 368$ K, $T_2 = 10+273 = 283$ K. Отношение $283/368 \\approx 0{,}77$. Время в горячей: $30 \\cdot 0{,}77 \\approx 23$ мин.',
+ ans:23, tol:2, step:'1' },
+ { n:3, tag:'§11', title:'Газ в шприце',
+ q:'В шприце $V_1 = 50$ см³ воздуха. Поршнем сжали так, что объём стал $V_2 = 20$ см³. Какую часть от первоначального объёма занял газ (в процентах, округли до целого)?',
+ hint:'$V_2/V_1 \\cdot 100\\% = 20/50 \\cdot 100\\% = 40\\,\\%$.',
+ ans:40, tol:1, step:'1' },
+ { n:4, tag:'§12', title:'Тепловое расширение рельса',
+ q:'Стальной рельс длиной $l_0 = 25$ м летом нагревается с зимних $-20$ °C до летних $+40$ °C ($\\Delta T = 60$ °C). Коэффициент линейного расширения стали $\\alpha = 12 \\cdot 10^{-6}$ 1/°C. На сколько мм он удлинится?',
+ hint:'$\\Delta l = l_0 \\alpha \\Delta T = 25 \\cdot 12 \\cdot 10^{-6} \\cdot 60 = 1{,}8 \\cdot 10^{-2}$ м $= 18$ мм.',
+ ans:18, tol:1, step:'0.1' },
+ { n:5, tag:'§13', title:'Знаток вещества (термометр)',
+ q:'Термометр показывает $t = 27$ °C. Сколько это Кельвинов? Округли до десятых.',
+ hint:'$T = t + 273{,}15 = 27 + 273{,}15 = 300{,}2$ K (при округлении до десятых).',
+ ans:300.2, tol:0.2, step:'0.1' }
+ ];
+
+ const STATE_KEY = 'physics7_ch2_final_bosses';
+ let solved = {};
+ try{ solved = JSON.parse(localStorage.getItem(STATE_KEY) || '{}') || {}; }catch(e){}
+
+ bosses.forEach(b => {
+ const isSolved = !!solved[b.n];
+ h += '