From 10c9b007d89191d7725a2cd7a0acdb36c134a2a9 Mon Sep 17 00:00:00 2001 From: Maxim Dolgolyov Date: Thu, 25 Jun 2026 14:48:08 +0300 Subject: [PATCH] =?UTF-8?q?style(trainer):=20=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B2=D0=B8=D0=B7=D1=83=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D1=80=D0=B5=D0=B4=D0=B8=D0=B7=D0=B0=D0=B9=D0=BD?= =?UTF-8?q?=20=E2=80=94=20=C2=AB=D1=80=D0=B0=D0=B1=D0=BE=D1=87=D0=B8=D0=B9?= =?UTF-8?q?=20=D0=BB=D0=B8=D1=81=D1=82=20=D0=B2=20=D0=BA=D0=BB=D0=B5=D1=82?= =?UTF-8?q?=D0=BA=D1=83=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - фон-ambient «тетрадь в клетку» (материал предмета) на .sb-content - карточка-герой с акцентной градиентной полосой; празднование верного ответа (изумруд+pop), мягкая встряска при ошибке - акцент индиго→фиолет градиент, успех изумруд, мастерство золото; фидбек-«таблетка», нумерованные шаги решения с градиентными бейджами - вкладки тем/навыки/режим — тактильные пилюли с hover-lift; цифры статистики градиентным текстом - модалки с blur-backdrop; итог сессии с золотой полосой; общий прогресс пилюлей - появление с лёгким stagger; mobile-адаптация + prefers-reduced-motion - селекторы навыков scoped (.tr-skills .tr-skill) + #tr-skill для eyebrow (убран конфликт); все id/классы и логика сохранены (смоук 27/27) Co-Authored-By: Claude Opus 4.8 (1M context) --- frontend/trainer.html | 268 +++++++++++++++++++++++++++--------------- 1 file changed, 170 insertions(+), 98 deletions(-) diff --git a/frontend/trainer.html b/frontend/trainer.html index 707e0eb..a4a6759 100644 --- a/frontend/trainer.html +++ b/frontend/trainer.html @@ -10,164 +10,232 @@ @@ -366,6 +434,7 @@ setMath(eq, null, cur.display, true); // условие как текст applyInputMode(); var inp = $('tr-input'); inp.value = ''; inp.disabled = false; + var card = $('tr-card'); if (card) { card.classList.remove('tr-correct'); card.classList.remove('tr-wrong'); } setMode(false); inp.focus(); } function genWordProblem() { @@ -476,6 +545,7 @@ inp.value = ''; inp.disabled = false; var fb = $('tr-feedback'); fb.className = 'tr-feedback'; fb.textContent = ''; $('tr-solution').style.display = 'none'; $('tr-solution').innerHTML = ''; + var card = $('tr-card'); if (card) { card.classList.remove('tr-correct'); card.classList.remove('tr-wrong'); } setMode(false); inp.focus(); } @@ -573,6 +643,7 @@ if (r.ok) { solved++; streak++; fb.className = 'tr-feedback ok'; + $('tr-card').classList.add('tr-correct'); var lbl = (cur.kind === 'roots' || cur.kind === 'simplify') ? esc(answerLabel()) : (kat('x = ' + cur.answer, false) || esc('x = ' + fmt(cur.answer))); fb.innerHTML = ICON.ok + ' Верно! ' + lbl; @@ -580,6 +651,7 @@ } else { streak = 0; fb.className = 'tr-feedback bad'; fb.innerHTML = ICON.bad + ' Неверно. Разбери решение и реши похожую.'; + $('tr-card').classList.add('tr-wrong'); recordAnswer(false); submitAttempt(false); revealSolution(); }