Files
Learn_System/frontend/teacher-guide.html
T
Maxim Dolgolyov d93664946e docs(teacher-guide): дополнено руководство — 3 новые главы + раздел 4.4
Глава 4 — добавлен раздел 4.4 «Кому: класс / ученик / личный список»:
  - Покрывает все 4 режима выпадашки «Кому» при создании задания
  - Объясняет связь с «Моими учениками» (Глава 13)

Глава 11 — Учебники (новая):
  11.1 Каталог: Шиманович химия 9, Исаченкова физика 9
  11.2 Чтение и отметки «Прочитано», закладки выделением текста
  11.3 Назначение чтения как ДЗ (классу / ученику, диапазоны §)
  11.4 Учительский прогресс класса по учебнику

Глава 12 — Экзамен 9 класс (новая):
  12.1 80 вариантов, тёмная сетка с прогрессом
  12.2 Импорт нечётных в банк, назначение как ДЗ
        + объяснение «почему чётные — только для просмотра»

Глава 13 — Мои ученики (новая):
  13.1 Когда нужно: репетиторство, доп-занятия, подготовка к ЦТ
  13.2 Добавить по email (если ученика нет — ссылка на регистрацию)
  13.3 Назначения — через /textbooks и в общем поиске
  13.4 Удаление (задания не удаляются), счётчик заданий

TOC обновлён: CHAPTERS массив с 10 → 13 глав, счётчик «0 из 13».
Все навигационные кнопки prev/next перепрошиты под новую цепочку:
ch-10 → ch-11 → ch-12 → ch-13 → ch-1 (вернуться к началу).

Проверка: 13 chapters with matching id="ch-N", 40 sections с id=s-N-M,
все ссылки в CHAPTERS массиве соответствуют HTML-якорям.
2026-05-16 17:06:24 +03:00

1381 lines
108 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Руководство для учителей — LearnSpace</title>
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
<link href="https://fonts.googleapis.com/css2?family=Unbounded:wght@400;700;800&family=Manrope:wght@400;500;600;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="/css/ls.css" />
<script src="https://cdn.jsdelivr.net/npm/lucide@0.469.0/dist/umd/lucide.min.js"></script>
<style>
.sb-content { background: #f4f5f8; overflow-y: auto; }
/* ── Two-column doc layout ── */
.tg-layout {
display: flex; align-items: flex-start;
max-width: 1320px; margin: 0 auto;
padding: 0 24px 80px; gap: 28px;
min-height: 100%;
}
/* ══════════════════════════════
NAV SIDEBAR
══════════════════════════════ */
.tg-nav {
width: 264px; flex-shrink: 0;
position: sticky; top: 0;
max-height: 100vh; overflow-y: auto;
padding: 24px 0 40px;
scrollbar-width: thin;
}
.tg-nav::-webkit-scrollbar { width: 3px; }
.tg-nav::-webkit-scrollbar-thumb { background: rgba(155,93,229,0.25); border-radius: 99px; }
.tg-nav-header { padding: 0 16px 16px; border-bottom: 1px solid rgba(15,23,42,0.08); margin-bottom: 12px; }
.tg-nav-title {
font-family: 'Unbounded', sans-serif; font-size: 0.72rem; font-weight: 800;
color: var(--text-3); text-transform: uppercase; letter-spacing: 0.1em;
margin-bottom: 10px;
}
.tg-progress-wrap { margin-bottom: 6px; }
.tg-progress-bar-outer {
height: 4px; background: rgba(15,23,42,0.08); border-radius: 99px; overflow: hidden;
}
.tg-progress-bar-inner {
height: 100%; background: linear-gradient(90deg, #9B5DE5, #06D6E0);
border-radius: 99px; width: 0%; transition: width 0.3s;
}
.tg-progress-text { font-size: 0.68rem; color: var(--text-3); margin-top: 5px; }
/* Search in nav */
.tg-nav-search {
padding: 0 12px 10px;
}
.tg-nav-search input {
width: 100%; padding: 7px 12px 7px 32px;
background: #fff; border: 1.5px solid rgba(15,23,42,0.09);
border-radius: 10px; font-family: 'Manrope', sans-serif;
font-size: 0.78rem; color: #0F172A; outline: none;
transition: border-color 0.18s;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238898AA' stroke-width='2.5'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E");
background-repeat: no-repeat; background-position: 10px center;
}
.tg-nav-search input:focus { border-color: rgba(155,93,229,0.4); }
/* Chapter items */
.tg-nav-chapter { margin-bottom: 2px; }
.tg-nav-ch-btn {
display: flex; align-items: center; gap: 9px;
width: 100%; padding: 8px 16px;
background: none; border: none; cursor: pointer;
border-radius: 10px; transition: background 0.15s;
font-family: 'Manrope', sans-serif; text-align: left;
}
.tg-nav-ch-btn:hover { background: rgba(155,93,229,0.07); }
.tg-nav-ch-btn.active { background: rgba(155,93,229,0.1); }
.tg-nav-ch-icon {
width: 26px; height: 26px; border-radius: 8px; flex-shrink: 0;
background: rgba(15,23,42,0.06); display: flex; align-items: center; justify-content: center;
}
.tg-nav-ch-icon svg { width: 13px; height: 13px; color: var(--text-3); stroke: var(--text-3); }
.tg-nav-ch-btn.active .tg-nav-ch-icon { background: rgba(155,93,229,0.12); }
.tg-nav-ch-btn.active .tg-nav-ch-icon svg { color: #9B5DE5; stroke: #9B5DE5; }
.tg-nav-ch-label {
flex: 1; font-size: 0.8rem; font-weight: 600; color: #3D4F6B; line-height: 1.3;
}
.tg-nav-ch-btn.active .tg-nav-ch-label { color: #0F172A; font-weight: 700; }
.tg-nav-ch-status { flex-shrink: 0; }
.tg-nav-ch-status svg { width: 14px; height: 14px; color: #06D664; stroke: #06D664; display: none; }
.tg-nav-ch-btn.read .tg-nav-ch-status svg { display: block; }
.tg-nav-ch-chevron { flex-shrink: 0; transition: transform 0.2s; }
.tg-nav-ch-chevron svg { width: 12px; height: 12px; color: var(--text-3); stroke: var(--text-3); }
.tg-nav-chapter.open .tg-nav-ch-chevron { transform: rotate(90deg); }
/* Sub-sections */
.tg-nav-sections { overflow: hidden; max-height: 0; transition: max-height 0.25s ease; }
.tg-nav-chapter.open .tg-nav-sections { max-height: 800px; }
.tg-nav-sec-link {
display: flex; align-items: center; gap: 8px;
padding: 5px 16px 5px 51px;
font-size: 0.74rem; color: var(--text-3); text-decoration: none;
border-radius: 8px; transition: all 0.15s; cursor: pointer;
}
.tg-nav-sec-link:hover { color: #0F172A; background: rgba(15,23,42,0.04); }
.tg-nav-sec-link.active {
color: #9B5DE5; font-weight: 600;
background: rgba(155,93,229,0.06);
}
.tg-nav-sec-link.active::before {
content: ''; width: 4px; height: 4px; border-radius: 50%;
background: #9B5DE5; flex-shrink: 0;
}
/* ══════════════════════════════
CONTENT AREA
══════════════════════════════ */
.tg-content { flex: 1; min-width: 0; padding: 24px 0; }
/* Hero */
.tg-hero {
background: linear-gradient(135deg, #f8f6ff 0%, #eef2ff 100%);
border: 1.5px solid rgba(155,93,229,0.15);
border-radius: 24px; padding: 40px 40px 36px;
margin-bottom: 36px; position: relative; overflow: hidden;
}
.tg-hero::before {
content: '';
position: absolute; inset: 0;
background-image: radial-gradient(circle, rgba(15,23,42,0.035) 1px, transparent 1px);
background-size: 20px 20px; pointer-events: none;
}
.tg-hero-badge {
display: inline-flex; align-items: center; gap: 6px;
background: rgba(155,93,229,0.1); border: 1px solid rgba(155,93,229,0.25);
color: #7c3aed; font-size: 0.7rem; font-weight: 700;
letter-spacing: 0.1em; text-transform: uppercase;
padding: 4px 12px; border-radius: 99px; margin-bottom: 16px;
}
.tg-hero-title {
font-family: 'Unbounded', sans-serif;
font-size: clamp(1.4rem, 3vw, 2rem); font-weight: 800;
line-height: 1.25; color: #0F172A; margin-bottom: 12px;
}
.tg-hero-title span {
background: linear-gradient(135deg, #9B5DE5, #06D6E0);
-webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}
.tg-hero-sub { font-size: 0.9rem; color: #5a6a8a; line-height: 1.65; margin-bottom: 24px; max-width: 560px; }
.tg-hero-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.tg-hero-chip {
display: flex; align-items: center; gap: 6px;
background: #fff; border: 1.5px solid rgba(15,23,42,0.08);
color: #3D4F6B; font-size: 0.76rem; font-weight: 600;
padding: 5px 12px; border-radius: 99px;
box-shadow: 0 1px 4px rgba(15,23,42,0.05);
}
.tg-hero-chip svg { width: 13px; height: 13px; }
/* Chapter */
.tg-chapter { margin-bottom: 0; display: none; }
.tg-chapter.tg-active { display: block; animation: tgFadeIn 0.28s ease; }
@keyframes tgFadeIn { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }
/* Search mode: reveal all chapters so matches are visible */
.tg-content.tg-search-mode .tg-chapter { display: block; margin-bottom: 32px; }
.tg-content.tg-search-mode .tg-chapter.search-hidden { display: none; }
.tg-chapter-header {
display: flex; align-items: center; gap: 16px;
padding: 28px 0 18px;
border-bottom: 2px solid rgba(155,93,229,0.12);
margin-bottom: 28px;
}
.tg-chapter-icon {
width: 52px; height: 52px; border-radius: 16px; flex-shrink: 0;
background: rgba(155,93,229,0.1); border: 1.5px solid rgba(155,93,229,0.2);
display: flex; align-items: center; justify-content: center;
}
.tg-chapter-icon svg { width: 24px; height: 24px; color: #9B5DE5; stroke: #9B5DE5; }
.tg-chapter-meta { flex: 1; }
.tg-chapter-num {
font-size: 0.66rem; font-weight: 700; color: var(--text-3);
text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 4px;
}
.tg-chapter-title {
font-family: 'Unbounded', sans-serif;
font-size: 1.25rem; font-weight: 800; color: #0F172A; line-height: 1.25;
}
.tg-chapter-try {
display: inline-flex; align-items: center; gap: 7px;
padding: 8px 16px; border-radius: 99px;
background: rgba(155,93,229,0.1); border: 1.5px solid rgba(155,93,229,0.25);
color: #7c3aed; font-size: 0.78rem; font-weight: 700;
text-decoration: none; transition: all 0.18s; flex-shrink: 0;
}
.tg-chapter-try:hover { background: #9B5DE5; color: #fff; }
.tg-chapter-try svg { width: 14px; height: 14px; }
/* Section */
.tg-section { margin-bottom: 36px; scroll-margin-top: 24px; }
.tg-section-title {
font-family: 'Unbounded', sans-serif; font-size: 0.9rem; font-weight: 800;
color: #0F172A; margin-bottom: 16px;
display: flex; align-items: center; gap: 10px;
}
.tg-section-title::before {
content: ''; display: block; width: 3px; height: 18px;
background: linear-gradient(180deg, #9B5DE5, #06D6E0);
border-radius: 99px; flex-shrink: 0;
}
.tg-section p { font-size: 0.88rem; color: #3D4F6B; line-height: 1.7; margin-bottom: 14px; }
/* Steps */
.tg-steps { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.tg-step {
display: flex; align-items: flex-start; gap: 14px;
padding: 14px 18px; background: #fff;
border: 1.5px solid rgba(15,23,42,0.07); border-radius: 14px;
box-shadow: 0 1px 4px rgba(15,23,42,0.04);
}
.tg-step-num {
width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0;
background: rgba(155,93,229,0.1); border: 1.5px solid rgba(155,93,229,0.25);
color: #9B5DE5; font-family: 'Unbounded', sans-serif;
font-size: 0.68rem; font-weight: 800;
display: flex; align-items: center; justify-content: center;
}
.tg-step-body { flex: 1; font-size: 0.86rem; line-height: 1.6; color: #0F172A; }
.tg-step-body b { font-weight: 700; }
.tg-step-body code {
font-family: monospace; background: rgba(155,93,229,0.09);
padding: 1px 7px; border-radius: 6px; font-size: 0.83rem; color: #7c3aed;
}
/* Note boxes */
.tg-tip, .tg-warning, .tg-success, .tg-note {
display: flex; align-items: flex-start; gap: 12px;
padding: 14px 18px; border-radius: 14px; margin: 12px 0;
}
.tg-tip { background: rgba(6,214,224,0.06); border: 1.5px solid rgba(6,214,224,0.2); border-left: 4px solid #06D6E0; }
.tg-warning{ background: rgba(241,91,181,0.05); border: 1.5px solid rgba(241,91,181,0.2); border-left: 4px solid #F15BB5; }
.tg-success{ background: rgba(6,214,100,0.06); border: 1.5px solid rgba(6,214,100,0.2); border-left: 4px solid #06D664; }
.tg-note { background: rgba(155,93,229,0.05); border: 1.5px solid rgba(155,93,229,0.18); border-left: 4px solid #9B5DE5; }
.tg-box-icon { flex-shrink: 0; margin-top: 1px; }
.tg-box-icon svg { width: 18px; height: 18px; }
.tg-tip .tg-box-icon svg { color: #0891b2; stroke: #0891b2; }
.tg-warning .tg-box-icon svg { color: #db2777; stroke: #db2777; }
.tg-success .tg-box-icon svg { color: #059669; stroke: #059669; }
.tg-note .tg-box-icon svg { color: #9B5DE5; stroke: #9B5DE5; }
.tg-box-body { flex: 1; font-size: 0.84rem; line-height: 1.6; color: #0F172A; }
.tg-box-label { font-weight: 700; margin-bottom: 3px; font-size: 0.8rem; }
.tg-tip .tg-box-label { color: #0891b2; }
.tg-warning .tg-box-label { color: #db2777; }
.tg-success .tg-box-label { color: #059669; }
.tg-note .tg-box-label { color: #9B5DE5; }
/* Accordion (type cards, block types) */
.tg-accordion { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; }
.tg-acc-item { background: #fff; border: 1.5px solid rgba(15,23,42,0.07); border-radius: 14px; overflow: hidden; box-shadow: 0 1px 4px rgba(15,23,42,0.04); }
.tg-acc-head {
display: flex; align-items: center; gap: 12px;
padding: 13px 18px; cursor: pointer; user-select: none;
transition: background 0.15s;
}
.tg-acc-head:hover { background: rgba(155,93,229,0.04); }
.tg-acc-badge {
font-family: 'Unbounded', sans-serif; font-size: 0.65rem; font-weight: 800;
padding: 3px 9px; border-radius: 99px; flex-shrink: 0;
}
.tg-acc-name { font-size: 0.86rem; font-weight: 700; color: #0F172A; flex: 1; }
.tg-acc-desc-short { font-size: 0.78rem; color: var(--text-3); }
.tg-acc-chevron { transition: transform 0.2s; }
.tg-acc-chevron svg { width: 14px; height: 14px; color: var(--text-3); stroke: var(--text-3); }
.tg-acc-item.open .tg-acc-chevron { transform: rotate(180deg); }
.tg-acc-body {
max-height: 0; overflow: hidden;
transition: max-height 0.25s ease, padding 0.25s;
padding: 0 18px;
}
.tg-acc-item.open .tg-acc-body { max-height: 400px; padding: 0 18px 16px; }
.tg-acc-body p { font-size: 0.83rem; color: #3D4F6B; line-height: 1.65; margin-top: 6px; }
.tg-acc-body ul { font-size: 0.83rem; color: #3D4F6B; line-height: 1.8; padding-left: 18px; margin-top: 6px; }
/* Checklist */
.tg-checklist { background: #fff; border: 1.5px solid rgba(15,23,42,0.07); border-radius: 18px; overflow: hidden; box-shadow: 0 2px 8px rgba(15,23,42,0.04); }
.tg-checklist-header { padding: 18px 22px 14px; border-bottom: 1px solid rgba(15,23,42,0.07); display: flex; align-items: center; justify-content: space-between; }
.tg-checklist-title { font-family: 'Unbounded', sans-serif; font-size: 0.82rem; font-weight: 800; color: #0F172A; }
.tg-checklist-prog { font-size: 0.72rem; color: var(--text-3); }
.tg-checklist-bar { height: 4px; background: rgba(15,23,42,0.07); }
.tg-checklist-bar-inner { height: 100%; background: linear-gradient(90deg, #9B5DE5, #06D6E0); width: 0%; transition: width 0.4s; }
.tg-checklist-items { padding: 10px 12px 12px; }
.tg-cl-item {
display: flex; align-items: center; gap: 12px;
padding: 9px 10px; border-radius: 10px; transition: background 0.15s; cursor: pointer;
}
.tg-cl-item:hover { background: rgba(155,93,229,0.05); }
.tg-cl-item input[type="checkbox"] { width: 17px; height: 17px; accent-color: #9B5DE5; cursor: pointer; flex-shrink: 0; }
.tg-cl-label { flex: 1; font-size: 0.84rem; color: #0F172A; font-weight: 500; }
.tg-cl-item.checked .tg-cl-label { text-decoration: line-through; color: var(--text-3); }
.tg-cl-link { font-size: 0.72rem; color: #9B5DE5; text-decoration: none; white-space: nowrap; }
.tg-cl-link:hover { text-decoration: underline; }
/* Keyboard shortcuts table */
.tg-shortcuts { display: grid; grid-template-columns: auto 1fr; gap: 6px 16px; margin-bottom: 14px; }
.tg-kbd {
font-family: monospace; font-size: 0.78rem; font-weight: 700;
background: #fff; border: 1.5px solid rgba(15,23,42,0.12);
border-bottom-width: 3px; border-radius: 7px;
padding: 3px 9px; color: #0F172A; white-space: nowrap;
align-self: center;
}
.tg-kbd-desc { font-size: 0.82rem; color: #3D4F6B; align-self: center; line-height: 1.4; }
/* UI mock */
.tg-mock {
background: #fff; border: 1.5px solid rgba(15,23,42,0.08);
border-radius: 16px; overflow: hidden; margin: 16px 0;
box-shadow: 0 4px 16px rgba(15,23,42,0.07);
}
.tg-mock-bar {
height: 36px; background: rgba(15,23,42,0.04);
border-bottom: 1px solid rgba(15,23,42,0.07);
display: flex; align-items: center; gap: 7px; padding: 0 14px;
}
.tg-mock-dot { width: 8px; height: 8px; border-radius: 50%; }
.tg-mock-body { padding: 16px 20px; }
.tg-mock-row { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; }
.tg-mock-skel { background: rgba(15,23,42,0.07); border-radius: 6px; }
/* Tools grid */
.tg-tools-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; margin-bottom: 14px; }
.tg-tool-card {
display: flex; align-items: center; gap: 10px;
padding: 11px 14px; background: #fff;
border: 1.5px solid rgba(15,23,42,0.07); border-radius: 12px;
box-shadow: 0 1px 4px rgba(15,23,42,0.04);
}
.tg-tool-icon {
width: 34px; height: 34px; border-radius: 9px; flex-shrink: 0;
background: rgba(155,93,229,0.09); display: flex; align-items: center; justify-content: center;
}
.tg-tool-icon svg { width: 16px; height: 16px; color: #9B5DE5; stroke: #9B5DE5; }
.tg-tool-name { font-size: 0.8rem; font-weight: 700; color: #0F172A; }
.tg-tool-desc { font-size: 0.7rem; color: var(--text-3); margin-top: 1px; }
/* Chapter nav */
.tg-chapter-nav { display: flex; gap: 12px; margin-top: 40px; padding-top: 24px; border-top: 1.5px solid rgba(15,23,42,0.08); }
.tg-ch-nav-btn {
flex: 1; display: flex; align-items: center; gap: 12px;
padding: 16px 20px; background: #fff;
border: 1.5px solid rgba(15,23,42,0.08); border-radius: 16px;
text-decoration: none; color: inherit; cursor: pointer;
transition: all 0.18s; box-shadow: 0 1px 6px rgba(15,23,42,0.04);
}
.tg-ch-nav-btn:hover { border-color: rgba(155,93,229,0.3); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(15,23,42,0.08); }
.tg-ch-nav-btn.next { flex-direction: row-reverse; text-align: right; }
.tg-ch-nav-icon { width: 36px; height: 36px; border-radius: 10px; background: rgba(155,93,229,0.1); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.tg-ch-nav-icon svg { width: 16px; height: 16px; color: #9B5DE5; stroke: #9B5DE5; }
.tg-ch-nav-label { font-size: 0.68rem; color: var(--text-3); text-transform: uppercase; letter-spacing: 0.07em; font-weight: 700; }
.tg-ch-nav-title { font-size: 0.84rem; font-weight: 700; color: #0F172A; margin-top: 2px; }
/* Divider */
.tg-divider { height: 1px; background: rgba(15,23,42,0.08); margin: 20px 0; }
/* Badge colors per question type */
.badge-single { background: rgba(155,93,229,0.12); color: #7c3aed; }
.badge-multiple { background: rgba(6,214,224,0.12); color: #0891b2; }
.badge-text { background: rgba(241,91,181,0.12); color: #db2777; }
.badge-number { background: rgba(6,214,100,0.12); color: #059669; }
.badge-order { background: rgba(255,179,71,0.12); color: #d97706; }
.badge-match { background: rgba(15,23,42,0.08); color: #3D4F6B; }
/* Highlight search matches */
mark { background: rgba(155,93,229,0.18); color: #7c3aed; border-radius: 3px; padding: 0 2px; }
/* Hidden by search filter */
.tg-section.search-hidden { display: none; }
.tg-chapter.search-hidden { display: none; }
/* Mobile */
@media (max-width: 1024px) {
.tg-layout { padding: 0 16px 60px; gap: 0; }
.tg-nav { display: none; }
.tg-content { padding: 20px 0; }
}
@media (max-width: 768px) {
.tg-hero { padding: 28px 22px; }
.tg-tools-grid { grid-template-columns: 1fr 1fr; }
.tg-chapter-nav { flex-direction: column; }
}
</style>
</head>
<body>
<div class="app-layout">
<aside class="sidebar" id="app-sidebar"></aside>
<div class="notif-drop" id="notif-drop"></div>
<div class="sb-content" id="tg-scroll">
<div class="tg-layout">
<!-- ══ LEFT NAV ══ -->
<nav class="tg-nav" id="tg-nav">
<div class="tg-nav-header">
<div class="tg-nav-title">Содержание</div>
<div class="tg-progress-wrap">
<div class="tg-progress-bar-outer"><div class="tg-progress-bar-inner" id="tg-prog-bar"></div></div>
<div class="tg-progress-text" id="tg-prog-text">0 из 13 глав прочитано</div>
</div>
</div>
<div class="tg-nav-search">
<input type="text" id="tg-search" placeholder="Поиск по руководству..." />
</div>
<div id="tg-nav-chapters"></div>
</nav>
<!-- ══ CONTENT ══ -->
<main class="tg-content">
<!-- Hero -->
<div class="tg-hero">
<div class="tg-hero-badge"><i data-lucide="book-marked" style="width:12px;height:12px"></i> Руководство для учителей</div>
<h1 class="tg-hero-title">Полное руководство по<br><span>LearnSpace</span></h1>
<p class="tg-hero-sub">Пошаговые инструкции по всем возможностям платформы — от создания первого класса до проведения онлайн-уроков в реальном времени.</p>
</div>
<!-- ═══ CHAPTER 1 ═══ -->
<div class="tg-chapter" id="ch-1">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="rocket"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 1</div>
<div class="tg-chapter-title">Быстрый старт</div>
</div>
<a href="/dashboard" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Открыть</a>
</div>
<div class="tg-section" id="s-1-1">
<div class="tg-section-title">1.1 Первый вход и настройка профиля</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Откройте LearnSpace и войдите, используя email и пароль, выданные администратором.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">После входа вы попадёте на <b>Дашборд</b>. Перейдите в раздел <b>«Профиль»</b> через боковое меню.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Укажите полное имя — ученики будут видеть его в классах и на уроках.</div></div>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="lightbulb"></i></div><div class="tg-box-body"><div class="tg-box-label">Подсказка</div>Аватар генерируется автоматически из инициалов. Загрузить своё фото можно в настройках профиля.</div></div>
</div>
<div class="tg-section" id="s-1-2">
<div class="tg-section-title">1.2 Знакомство с интерфейсом</div>
<p><b>Боковое меню (sidebar)</b> — доступ ко всем модулям. Учительские разделы (Аналитика, Банк вопросов, Live-квиз, Журнал) видны только при роли «Учитель».</p>
<div class="tg-shortcuts">
<span class="tg-kbd">Ctrl + K</span><span class="tg-kbd-desc">Быстрый поиск по урокам, вопросам, файлам</span>
<span class="tg-kbd"></span><span class="tg-kbd-desc">Свернуть боковое меню (кнопка-шеврон вверху sidebar)</span>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="smartphone"></i></div><div class="tg-box-body"><div class="tg-box-label">Мобильная версия</div>На мобильных sidebar открывается кнопкой в нижней панели навигации.</div></div>
</div>
<div class="tg-section" id="s-1-3">
<div class="tg-section-title">1.3 Ваш первый класс за 5 минут</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Перейдите в раздел <b>«Классы»</b> через боковое меню.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Нажмите кнопку <b>«+»</b> в верхнем правом углу списка классов.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Заполните название, выберите предмет, добавьте описание (необязательно). Нажмите <b>«Создать»</b>.</div></div>
<div class="tg-step"><div class="tg-step-num">4</div><div class="tg-step-body">Скопируйте код приглашения и отправьте ученикам.</div></div>
</div>
<div class="tg-success"><div class="tg-box-icon"><i data-lucide="check-circle"></i></div><div class="tg-box-body"><div class="tg-box-label">Готово!</div>Ученики смогут вступить в класс, введя код на своём дашборде в кнопке «Вступить в класс».</div></div>
</div>
<div class="tg-section" id="s-1-4">
<div class="tg-section-title">1.4 Контрольный список готовности</div>
<p>Отметьте выполненные шаги — прогресс сохраняется автоматически.</p>
<div class="tg-checklist">
<div class="tg-checklist-header">
<div class="tg-checklist-title">Чеклист нового учителя</div>
<div class="tg-checklist-prog" id="cl-prog">0 / 6</div>
</div>
<div class="tg-checklist-bar"><div class="tg-checklist-bar-inner" id="cl-bar"></div></div>
<div class="tg-checklist-items">
<label class="tg-cl-item" data-id="profile"><input type="checkbox" /><span class="tg-cl-label">Профиль настроен (имя, фото)</span><a href="/profile" class="tg-cl-link">Профиль →</a></label>
<label class="tg-cl-item" data-id="class"><input type="checkbox" /><span class="tg-cl-label">Первый класс создан</span><a href="/classes" class="tg-cl-link">Классы →</a></label>
<label class="tg-cl-item" data-id="students"><input type="checkbox" /><span class="tg-cl-label">Ученики приглашены</span><a href="/classes" class="tg-cl-link">Классы →</a></label>
<label class="tg-cl-item" data-id="question"><input type="checkbox" /><span class="tg-cl-label">Первый вопрос добавлен в банк</span><a href="/question-bank" class="tg-cl-link">Банк →</a></label>
<label class="tg-cl-item" data-id="assignment"><input type="checkbox" /><span class="tg-cl-label">Первое задание назначено</span><a href="/classes" class="tg-cl-link">Классы →</a></label>
<label class="tg-cl-item" data-id="library"><input type="checkbox" /><span class="tg-cl-label">Первый файл загружен в библиотеку</span><a href="/library" class="tg-cl-link">Библиотека →</a></label>
</div>
</div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-2')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Управление классами</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 2 ═══ -->
<div class="tg-chapter" id="ch-2">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="graduation-cap"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 2</div>
<div class="tg-chapter-title">Управление классами</div>
</div>
<a href="/classes" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Классы</a>
</div>
<div class="tg-section" id="s-2-1">
<div class="tg-section-title">2.1 Создание класса</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Откройте раздел <b>«Классы»</b> → нажмите <b>«+»</b> в левой панели.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Введите <b>название</b>, выберите <b>предмет</b> из выпадающего списка, добавьте описание.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Нажмите <b>«Создать»</b>. Класс появится в списке слева.</div></div>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="lightbulb"></i></div><div class="tg-box-body"><div class="tg-box-label">Подсказка</div>Название видят ученики — используйте понятные: <code>8-Б Биология</code> или <code>Физика 10 класс</code>.</div></div>
</div>
<div class="tg-section" id="s-2-2">
<div class="tg-section-title">2.2 Приглашение учеников</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Выберите класс из списка слева → в детальной панели найдите <b>блок с кодом</b> приглашения.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Нажмите на код — он автоматически скопируется в буфер обмена.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Отправьте код ученикам (мессенджер, на доске). Ученики вводят его через <b>«Вступить в класс»</b> на своём дашборде.</div></div>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="link"></i></div><div class="tg-box-body"><div class="tg-box-label">Ссылка-приглашение</div>Кнопка «Копировать ссылку» рядом с кодом — ученик перейдёт по ней и автоматически вступит в класс.</div></div>
</div>
<div class="tg-section" id="s-2-3">
<div class="tg-section-title">2.3 Просмотр состава и удаление ученика</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Откройте класс → вкладка <b>«Ученики»</b>. Таблица: имя, email, средний балл, дата вступления.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Для удаления — нажмите кнопку <b>«X»</b> справа от имени ученика и подтвердите.</div></div>
</div>
<div class="tg-warning"><div class="tg-box-icon"><i data-lucide="alert-triangle"></i></div><div class="tg-box-body"><div class="tg-box-label">Внимание</div>Удалённый ученик потеряет доступ к заданиям и материалам класса. Его результаты сохранятся в аналитике.</div></div>
</div>
<div class="tg-section" id="s-2-4">
<div class="tg-section-title">2.4 Обновление кода приглашения</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">В детальной панели класса нажмите <b>«Обновить код»</b>.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Старый код станет недействительным, новый будет сгенерирован и скопирован.</div></div>
</div>
<div class="tg-warning"><div class="tg-box-icon"><i data-lucide="alert-triangle"></i></div><div class="tg-box-body"><div class="tg-box-label">Внимание</div>Все ранее отправленные ссылки и коды перестанут работать. Убедитесь, что нужные ученики уже вступили.</div></div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-1')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Быстрый старт</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-3')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Банк вопросов</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 3 ═══ -->
<div class="tg-chapter" id="ch-3">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="database"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 3</div>
<div class="tg-chapter-title">Банк вопросов</div>
</div>
<a href="/question-bank" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Банк вопросов</a>
</div>
<div class="tg-section" id="s-3-1">
<div class="tg-section-title">3.1 Создание вопроса</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Нажмите <b>«Создать вопрос»</b> в правом верхнем углу страницы.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Выберите <b>тип вопроса</b> (см. раздел 3.2 ниже).</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Введите текст вопроса. LaTeX-формулы — оборачивайте в <code>$...$</code> или <code>$$...$$</code>.</div></div>
<div class="tg-step"><div class="tg-step-num">4</div><div class="tg-step-body">Добавьте варианты ответов и отметьте правильные.</div></div>
<div class="tg-step"><div class="tg-step-num">5</div><div class="tg-step-body">Укажите <b>предмет</b> и <b>тему</b>. Нажмите <b>«Сохранить»</b>.</div></div>
</div>
</div>
<div class="tg-section" id="s-3-2">
<div class="tg-section-title">3.2 Типы вопросов</div>
<div class="tg-accordion">
<div class="tg-acc-item open">
<div class="tg-acc-head" onclick="toggleAcc(this)">
<span class="tg-acc-badge badge-single">single</span>
<span class="tg-acc-name">Один правильный ответ</span>
<span class="tg-acc-desc-short">Радиокнопки</span>
<span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span>
</div>
<div class="tg-acc-body"><p>Ученик выбирает один вариант из нескольких предложенных. Используйте для вопросов с однозначным ответом.</p><ul><li>Минимум 2 варианта, один правильный</li><li>Можно добавить изображение к вопросу</li></ul></div>
</div>
<div class="tg-acc-item">
<div class="tg-acc-head" onclick="toggleAcc(this)">
<span class="tg-acc-badge badge-multiple">multiple</span>
<span class="tg-acc-name">Несколько правильных ответов</span>
<span class="tg-acc-desc-short">Чекбоксы</span>
<span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span>
</div>
<div class="tg-acc-body"><p>Ученик отмечает все правильные варианты. Частичное попадание засчитывается пропорционально.</p><ul><li>Минимум 2 правильных варианта</li><li>Балл = доля правильно отмеченных</li></ul></div>
</div>
<div class="tg-acc-item">
<div class="tg-acc-head" onclick="toggleAcc(this)">
<span class="tg-acc-badge badge-text">text</span>
<span class="tg-acc-name">Свободный текстовый ответ</span>
<span class="tg-acc-desc-short">Поле ввода</span>
<span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span>
</div>
<div class="tg-acc-body"><p>Ученик вводит текст. Проверяется точное совпадение (регистр не учитывается).</p><ul><li>Укажите эталонный ответ и допустимые синонимы через запятую</li></ul></div>
</div>
<div class="tg-acc-item">
<div class="tg-acc-head" onclick="toggleAcc(this)">
<span class="tg-acc-badge badge-number">number</span>
<span class="tg-acc-name">Числовой ответ</span>
<span class="tg-acc-desc-short">С погрешностью</span>
<span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span>
</div>
<div class="tg-acc-body"><p>Ученик вводит число. Вы задаёте правильный ответ и допустимую погрешность.</p><ul><li>Пример: ответ 9.8, погрешность ±0.1 — принимает 9.7–9.9</li></ul></div>
</div>
<div class="tg-acc-item">
<div class="tg-acc-head" onclick="toggleAcc(this)">
<span class="tg-acc-badge badge-order">order</span>
<span class="tg-acc-name">Расположи в порядке</span>
<span class="tg-acc-desc-short">Drag &amp; Drop</span>
<span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span>
</div>
<div class="tg-acc-body"><p>Ученик перетаскивает элементы в правильном порядке (хронология, последовательность реакций и т.д.).</p></div>
</div>
<div class="tg-acc-item">
<div class="tg-acc-head" onclick="toggleAcc(this)">
<span class="tg-acc-badge badge-match">match</span>
<span class="tg-acc-name">Сопоставление</span>
<span class="tg-acc-desc-short">Два столбца</span>
<span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span>
</div>
<div class="tg-acc-body"><p>Ученик соединяет элементы левого столбца с правым. Идеально для терминов и определений, органов и функций.</p></div>
</div>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="lightbulb"></i></div><div class="tg-box-body"><div class="tg-box-label">Совет</div>Комбинируйте разные типы в одном тесте — это даёт более объективную оценку знаний.</div></div>
</div>
<div class="tg-section" id="s-3-3">
<div class="tg-section-title">3.3 Дублирование и импорт CSV</div>
<p><b>Дублировать</b> — нажмите кнопку копирования рядом с вопросом. Откроется редактор с копией — измените текст или варианты и сохраните.</p>
<div class="tg-divider"></div>
<p><b>Импорт из CSV:</b></p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Подготовьте CSV в кодировке <code>UTF-8</code>, разделитель — точка с запятой <code>;</code>. Формат: <code>тип;вопрос;варианты;ответ;предмет;тема</code></div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Нажмите <b>«Импорт CSV»</b> в шапке страницы, выберите файл.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Система покажет превью. Подтвердите импорт.</div></div>
</div>
<div class="tg-warning"><div class="tg-box-icon"><i data-lucide="alert-triangle"></i></div><div class="tg-box-body"><div class="tg-box-label">Внимание</div>Обязательно UTF-8, иначе кириллица отобразится некорректно. При ошибке используйте Excel «Сохранить как → CSV UTF-8».</div></div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-2')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Управление классами</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-4')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Задания и тесты</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 4 ═══ -->
<div class="tg-chapter" id="ch-4">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="clipboard-check"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 4</div>
<div class="tg-chapter-title">Задания и тесты</div>
</div>
<a href="/classes" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Классы</a>
</div>
<div class="tg-section" id="s-4-1">
<div class="tg-section-title">4.1 Создание задания</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Перейдите в <b>«Классы»</b> → выберите класс → вкладка <b>«Задания»</b>.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Нажмите <b>«Создать задание»</b>, введите название.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Добавьте вопросы из банка — используйте поиск и фильтры по предмету/теме.</div></div>
<div class="tg-step"><div class="tg-step-num">4</div><div class="tg-step-body">Настройте параметры (дедлайн, время, попытки) → нажмите <b>«Опубликовать»</b>.</div></div>
</div>
</div>
<div class="tg-section" id="s-4-2">
<div class="tg-section-title">4.2 Параметры задания</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Дедлайн</b> — дата и время, после которых задание нельзя начать. Оставьте пустым для бессрочного задания.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Время на прохождение</b> — лимит в минутах. Таймер начинается при открытии теста учеником.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Количество попыток</b> — сколько раз ученик может пройти тест. По умолчанию — 1.</div></div>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="lightbulb"></i></div><div class="tg-box-body"><div class="tg-box-label">Рекомендация</div>Для домашних работ — 2–3 попытки без ограничения времени. Для контрольных — 1 попытка с таймером.</div></div>
</div>
<div class="tg-section" id="s-4-3">
<div class="tg-section-title">4.3 Результаты и статистика</div>
<p>Откройте задание из вкладки «Задания» → таблица: ученик, балл (%), дата сдачи, номер попытки.</p>
<p>Нажмите на ученика для детализации — ответы по каждому вопросу, время выполнения.</p>
<div class="tg-note"><div class="tg-box-icon"><i data-lucide="bar-chart-2"></i></div><div class="tg-box-body"><div class="tg-box-label">Статистика по вопросам</div>Процент правильных ответов по каждому вопросу. Вопросы с низким процентом подсвечены красным — они требуют дополнительного объяснения на уроке.</div></div>
</div>
<div class="tg-section" id="s-4-4">
<div class="tg-section-title">4.4 Кому: класс, ученик, личный список</div>
<p>При создании задания в выпадашке <b>«Кому»</b> доступны четыре режима:</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body"><b>Всему классу</b> — каждый ученик в составе класса получает задание, прогресс — общий «X / N сдано».</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body"><b>Нескольким классам…</b> — открывает список ваших классов с чекбоксами. Удобно для параллелей одного потока.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body"><b>Имя ученика (лично)</b> — пункты с пометкой «(лично)» в конце выпадашки. Список собран из участников <em>текущего класса</em>.</div></div>
<div class="tg-step"><div class="tg-step-num">4</div><div class="tg-step-body"><b>Ученику из «Мои ученики»</b> — для тех, кого нет в ваших классах (репетиторство, индивидуальные занятия). Сначала добавьте их в Главе 12, затем используйте раздел <b>«Учебники»</b> или назначайте напрямую.</div></div>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="lightbulb"></i></div><div class="tg-box-body"><div class="tg-box-label">Личное задание</div>В дашборде ученика такое задание помечается «Личное задание» (вместо имени класса). Ученик получает обычное уведомление-колокольчик.</div></div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-3')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Банк вопросов</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-5')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Онлайн-урок</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 5 ═══ -->
<div class="tg-chapter" id="ch-5">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="presentation"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 5</div>
<div class="tg-chapter-title">Онлайн-урок</div>
</div>
<a href="/classroom" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Онлайн-урок</a>
</div>
<div class="tg-section" id="s-5-1">
<div class="tg-section-title">5.1 Запуск и завершение урока</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Перейдите в <b>«Онлайн-урок»</b> → нажмите <b>«Начать урок»</b>.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Выберите класс. Урок запущен — ученики из класса получат уведомление и смогут присоединиться.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Для завершения — красная кнопка <b>«Завершить урок»</b> в шапке. Урок сохранится в архиве.</div></div>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="archive"></i></div><div class="tg-box-body"><div class="tg-box-label">Архив уроков</div>Все прошедшие уроки с доской, чатом и посещаемостью доступны в разделе «Архив уроков».</div></div>
</div>
<div class="tg-section" id="s-5-2">
<div class="tg-section-title">5.2 Инструменты доски</div>
<div class="tg-tools-grid">
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="pencil"></i></div><div><div class="tg-tool-name">Карандаш</div><div class="tg-tool-desc">Свободное рисование</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="highlighter"></i></div><div><div class="tg-tool-name">Маркер</div><div class="tg-tool-desc">Полупрозрачное выделение</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="zap"></i></div><div><div class="tg-tool-name">Лазер</div><div class="tg-tool-desc">Указка, не сохраняется</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="eraser"></i></div><div><div class="tg-tool-name">Ластик</div><div class="tg-tool-desc">Стирает штрихи</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="shapes"></i></div><div><div class="tg-tool-name">Фигуры (11)</div><div class="tg-tool-desc">Прямоугольник, круг, стрелка и др.</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="git-merge"></i></div><div><div class="tg-tool-name">Коннектор</div><div class="tg-tool-desc">Линия между объектами</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="sticky-note"></i></div><div><div class="tg-tool-name">Стикер</div><div class="tg-tool-desc">Цветная заметка</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="type"></i></div><div><div class="tg-tool-name">Текст</div><div class="tg-tool-desc">Текстовый блок</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="image"></i></div><div><div class="tg-tool-name">Изображение</div><div class="tg-tool-desc">Загрузка картинки</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="sigma"></i></div><div><div class="tg-tool-name">Формула LaTeX</div><div class="tg-tool-desc">Математические формулы</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="table"></i></div><div><div class="tg-tool-name">Таблица</div><div class="tg-tool-desc">Интерактивная таблица</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="axis-3d"></i></div><div><div class="tg-tool-name">Координатная ось</div><div class="tg-tool-desc">Система с графиками</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="minus"></i></div><div><div class="tg-tool-name">Числовая прямая</div><div class="tg-tool-desc">Прямая с делениями</div></div></div>
<div class="tg-tool-card"><div class="tg-tool-icon"><i data-lucide="circle"></i></div><div><div class="tg-tool-name">Циркуль</div><div class="tg-tool-desc">Дуги и окружности</div></div></div>
</div>
<div class="tg-shortcuts">
<span class="tg-kbd">Ctrl+Z</span><span class="tg-kbd-desc">Отменить</span>
<span class="tg-kbd">Ctrl+Y</span><span class="tg-kbd-desc">Повторить</span>
<span class="tg-kbd">Ctrl+C / Ctrl+V</span><span class="tg-kbd-desc">Копировать / Вставить объект</span>
<span class="tg-kbd">Del</span><span class="tg-kbd-desc">Удалить выделенный объект</span>
<span class="tg-kbd">Ctrl+A</span><span class="tg-kbd-desc">Выделить всё на странице</span>
</div>
</div>
<div class="tg-section" id="s-5-3">
<div class="tg-section-title">5.3 Страницы, шаблоны и экспорт</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Нажмите <b>«+»</b> в панели миниатюр слева → выберите шаблон: <b>Пустая, Клетка, Линейка, Точки, Координатная плоскость</b>.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Переключайтесь между страницами кликом по миниатюре. Ученики видят текущую страницу учителя в реальном времени.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body"><b>Экспорт в PNG</b> — кнопка с иконкой загрузки в шапке. Текущая страница сохраняется как изображение.</div></div>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="layout-template"></i></div><div class="tg-box-body"><div class="tg-box-label">Подготовка заранее</div>Создайте несколько страниц с нужными шаблонами до начала урока — это сэкономит время во время объяснения.</div></div>
</div>
<div class="tg-section" id="s-5-4">
<div class="tg-section-title">5.4 Zoom, Pan и темы доски</div>
<div class="tg-shortcuts">
<span class="tg-kbd">Колесо мыши</span><span class="tg-kbd-desc">Zoom in / out к курсору</span>
<span class="tg-kbd">Ctrl+0</span><span class="tg-kbd-desc">Сбросить масштаб</span>
<span class="tg-kbd">Space + drag</span><span class="tg-kbd-desc">Прокрутка (pan) доски</span>
</div>
<p>При zoom > 1 в правом нижнем углу появляется <b>минимап</b> — кликните или перетащите для навигации по доске.</p>
<p><b>Темы доски</b> (переключение через меню настроек): <b>Chalkboard</b> (зелёная меловая), <b>Blackboard</b> (чёрная), <b>Corkboard</b> (пробковая), <b>Whiteboard</b> (белая маркерная).</p>
</div>
<div class="tg-section" id="s-5-5">
<div class="tg-section-title">5.5 Чат, видеосвязь и управление учениками</div>
<p><b>Чат</b> — правая панель, сообщения в реальном времени. Ученики видят сообщения учителя и других учеников.</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Видеосвязь (WebRTC)</b> — нажмите кнопку камеры/микрофона в шапке. Браузер запросит разрешение при первом включении.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Поднятая рука</b> — уведомление в шапке при поднятии руки учеником. Нажмите для ответа.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Разрешить рисование</b> — в списке участников переключите тогл рядом с именем ученика.</div></div>
</div>
<div class="tg-warning"><div class="tg-box-icon"><i data-lucide="alert-triangle"></i></div><div class="tg-box-body"><div class="tg-box-label">Видеосвязь</div>Требует разрешения браузера на камеру и микрофон. Для стабильной связи за NAT рекомендуется использование TURN-сервера.</div></div>
</div>
<div class="tg-section" id="s-5-6">
<div class="tg-section-title">5.6 Гостевая ссылка и Live-квиз</div>
<p><b>Гостевая ссылка</b> — нажмите «Гостевая ссылка» в шапке урока. Любой человек по ссылке увидит доску в режиме просмотра без регистрации. Удобно для открытых вебинаров.</p>
<div class="tg-divider"></div>
<p><b>Live-квиз во время урока:</b></p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Нажмите кнопку <b>«Live-квиз»</b> в шапке урока.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Выберите вопросы из банка, настройте время на вопрос.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Запустите — ученики увидят вопросы на своих экранах. Результаты отображаются в реальном времени.</div></div>
</div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-4')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Задания и тесты</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-6')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Библиотека материалов</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 6 ═══ -->
<div class="tg-chapter" id="ch-6">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="book-open"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 6</div>
<div class="tg-chapter-title">Библиотека материалов</div>
</div>
<a href="/library" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Библиотека</a>
</div>
<div class="tg-section" id="s-6-1">
<div class="tg-section-title">6.1 Загрузка файлов</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Нажмите <b>«Загрузить»</b> в шапке страницы.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Выберите файл(ы). Поддерживаются: PDF, DOCX, PPTX, изображения, видео.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Опционально выберите класс(ы) для предоставления доступа прямо при загрузке.</div></div>
</div>
</div>
<div class="tg-section" id="s-6-2">
<div class="tg-section-title">6.2 Папки и управление доступом</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body"><b>Новая папка</b> — нажмите «Новая папка», введите название. Перетаскивайте файлы в папки.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body"><b>Доступ по классу</b> — нажмите на файл/папку → «Доступ» → выберите классы.</div></div>
</div>
<div class="tg-note"><div class="tg-box-icon"><i data-lucide="eye-off"></i></div><div class="tg-box-body"><div class="tg-box-label">Приватность</div>Файлы без назначенного класса видны только вам. Ученики видят только те материалы, к которым им выдан доступ.</div></div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-5')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Онлайн-урок</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-7')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Редактор уроков</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 7 ═══ -->
<div class="tg-chapter" id="ch-7">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="file-edit"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 7</div>
<div class="tg-chapter-title">Редактор уроков</div>
</div>
<a href="/my-lessons" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Мои уроки</a>
</div>
<div class="tg-section" id="s-7-1">
<div class="tg-section-title">7.1 Создание урока</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Перейдите в <b>«Мои уроки»</b> → нажмите <b>«Создать урок»</b>.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Введите название, выберите предмет и тему.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Добавляйте блоки контента кнопкой <b>«+»</b> между блоками.</div></div>
<div class="tg-step"><div class="tg-step-num">4</div><div class="tg-step-body">Нажмите <b>«Опубликовать»</b> → выберите класс(ы). Урок появится в «Теории» у учеников.</div></div>
</div>
</div>
<div class="tg-section" id="s-7-2">
<div class="tg-section-title">7.2 Типы блоков</div>
<div class="tg-accordion">
<div class="tg-acc-item open"><div class="tg-acc-head" onclick="toggleAcc(this)"><span class="tg-acc-badge badge-single">Текст</span><span class="tg-acc-name">Параграф</span><span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span></div><div class="tg-acc-body"><p>Форматированный текст с поддержкой жирного, курсива, подчёркивания. Оптимально для основного содержания урока.</p></div></div>
<div class="tg-acc-item"><div class="tg-acc-head" onclick="toggleAcc(this)"><span class="tg-acc-badge badge-multiple">H2/H3</span><span class="tg-acc-name">Заголовок</span><span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span></div><div class="tg-acc-body"><p>Структурные заголовки второго и третьего уровня. Используйте для разделения темы на подтемы.</p></div></div>
<div class="tg-acc-item"><div class="tg-acc-head" onclick="toggleAcc(this)"><span class="tg-acc-badge badge-text">Изображение</span><span class="tg-acc-name">Картинка</span><span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span></div><div class="tg-acc-body"><p>Загрузка файла или вставка URL. Поддерживаются JPG, PNG, GIF, SVG. Подпись необязательна.</p></div></div>
<div class="tg-acc-item"><div class="tg-acc-head" onclick="toggleAcc(this)"><span class="tg-acc-badge badge-number">Видео</span><span class="tg-acc-name">Видео</span><span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span></div><div class="tg-acc-body"><p>Вставка YouTube/Vimeo по URL или загрузка видеофайла. Поддерживает embed с плеером.</p></div></div>
<div class="tg-acc-item"><div class="tg-acc-head" onclick="toggleAcc(this)"><span class="tg-acc-badge badge-order">LaTeX</span><span class="tg-acc-name">Формула</span><span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span></div><div class="tg-acc-body"><p>Блок формулы с live-превью через KaTeX. Введите LaTeX-код — формула отобразится в реальном времени.</p></div></div>
<div class="tg-acc-item"><div class="tg-acc-head" onclick="toggleAcc(this)"><span class="tg-acc-badge badge-match">Тест</span><span class="tg-acc-name">Встроенный тест</span><span class="tg-acc-chevron"><i data-lucide="chevron-down"></i></span></div><div class="tg-acc-body"><p>Встроенный мини-тест из банка вопросов прямо в теле урока. Ученик проходит его не выходя из урока.</p></div></div>
</div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-6')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Библиотека материалов</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-8')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Аналитика</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 8 ═══ -->
<div class="tg-chapter" id="ch-8">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="bar-chart-2"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 8</div>
<div class="tg-chapter-title">Аналитика</div>
</div>
<a href="/analytics" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Аналитика</a>
</div>
<div class="tg-section" id="s-8-1">
<div class="tg-section-title">8.1 Дашборд аналитики</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Перейдите в <b>«Аналитика»</b> → выберите класс из выпадающего списка в шапке.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Сводные карточки: средний балл, количество учеников, выполненных заданий, активность за неделю.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Графики успеваемости по времени и распределение оценок по диапазонам.</div></div>
</div>
</div>
<div class="tg-section" id="s-8-2">
<div class="tg-section-title">8.2 Профиль ученика и слабые темы</div>
<p>Нажмите на имя ученика в таблице — откроется детализация: результаты по каждому заданию, динамика прогресса, слабые темы.</p>
<div class="tg-note"><div class="tg-box-icon"><i data-lucide="trending-down"></i></div><div class="tg-box-body"><div class="tg-box-label">Слабые темы</div>Система автоматически выделяет темы с наименьшим процентом правильных ответов. Создайте дополнительное задание по ним или уделите время на объяснение.</div></div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-7')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Редактор уроков</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-9')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Журнал оценок</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 9 ═══ -->
<div class="tg-chapter" id="ch-9">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="table"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 9</div>
<div class="tg-chapter-title">Журнал оценок</div>
</div>
<a href="/gradebook" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Журнал</a>
</div>
<div class="tg-section" id="s-9-1">
<div class="tg-section-title">9.1 Чтение таблицы и экспорт</div>
<p>Перейдите в <b>«Журнал»</b> → выберите класс. Строки — ученики, столбцы — задания.</p>
<p><b>Цветовая кодировка ячеек:</b></p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num" style="background:rgba(6,214,100,0.15);border-color:rgba(6,214,100,0.3);color:#059669"></div><div class="tg-step-body"><b>Зелёный</b> — выше 70%. Отличный результат.</div></div>
<div class="tg-step"><div class="tg-step-num" style="background:rgba(255,179,71,0.15);border-color:rgba(255,179,71,0.3);color:#d97706">~</div><div class="tg-step-body"><b>Жёлтый</b> — 40–70%. Удовлетворительно, требует внимания.</div></div>
<div class="tg-step"><div class="tg-step-num" style="background:rgba(241,91,181,0.15);border-color:rgba(241,91,181,0.3);color:#db2777">!</div><div class="tg-step-body"><b>Розовый</b> — ниже 40%. Тема не усвоена.</div></div>
</div>
<div class="tg-steps" style="margin-top:14px">
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Экспорт CSV</b> — нажмите кнопку в шапке журнала. Откройте в Excel или Google Sheets для дальнейшей обработки.</div></div>
</div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-8')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Аналитика</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-10')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Live-квиз</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 10 ═══ -->
<div class="tg-chapter" id="ch-10">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="radio"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 10</div>
<div class="tg-chapter-title">Live-квиз</div>
</div>
<a href="/live-quiz" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Live-квиз</a>
</div>
<div class="tg-section" id="s-10-1">
<div class="tg-section-title">10.1 Создание и запуск сессии</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Перейдите в <b>«Live-квиз»</b> → нажмите <b>«Создать сессию»</b>.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Выберите вопросы из банка, настройте время на вопрос (по умолчанию 30 сек.).</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Нажмите <b>«Запустить»</b>. Ученики, находящиеся в классе, автоматически подключатся.</div></div>
</div>
</div>
<div class="tg-section" id="s-10-2">
<div class="tg-section-title">10.2 Управление в реальном времени</div>
<p>На экране — текущий вопрос и таймер. Счётчик ответивших учеников обновляется в реальном времени.</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body">Переходите к следующему вопросу <b>вручную</b> (кнопка «Далее») или автоматически по истечении времени.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body">После каждого вопроса — <b>мгновенная статистика</b>: сколько % ответили правильно, распределение ответов.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body">После завершения — <b>таблица лидеров</b> и полная статистика по всем вопросам.</div></div>
</div>
<div class="tg-success"><div class="tg-box-icon"><i data-lucide="check-circle"></i></div><div class="tg-box-body"><div class="tg-box-label">Поздравляем!</div>Вы прошли всё руководство. Теперь вы знаете все возможности LearnSpace. Удачных уроков!</div></div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-9')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Журнал оценок</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-11')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Учебники</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 11 — TEXTBOOKS ═══ -->
<div class="tg-chapter" id="ch-11">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="book-open-text"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 11</div>
<div class="tg-chapter-title">Учебники</div>
</div>
<a href="/textbooks" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Учебники</a>
</div>
<div class="tg-section" id="s-11-1">
<div class="tg-section-title">11.1 Каталог учебников</div>
<p>Раздел <b>«Учебники»</b> в боковом меню — полные интерактивные курсы по предметам со встроенными формулами (KaTeX), диаграммами и анимациями. Сейчас доступны:</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Химия 9</b> (Шиманович) — §1–60: строение атома, химическая связь, классы соединений, ОВР, металлы, электролиз.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Физика 9</b> (Исаченкова) — §1–38: механика, кинематика, динамика, законы сохранения, импульс и энергия.</div></div>
</div>
<p>На карточке учебника видна шкала прогресса «X из Y параграфов прочитано» и кнопка <b>«Продолжить»</b> — открывает учебник на последнем посещённом параграфе.</p>
</div>
<div class="tg-section" id="s-11-2">
<div class="tg-section-title">11.2 Чтение и отметки</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Откройте учебник кнопкой «Открыть» на карточке — он раскроется в режиме полного экрана.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Навигация по параграфам — pills в верхней части (§1, §2, …). Активный параграф подсвечивается.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Рядом с заголовком каждого § есть кнопка <b>«Прочитано»</b> — отмечайте по мере изучения. Параграфы получают зелёный индикатор на pill.</div></div>
<div class="tg-step"><div class="tg-step-num">4</div><div class="tg-step-body">Выделите любой текст (8–400 символов) → появится плавающая кнопка <b>«+ Закладка»</b>. Сохраните с заметкой — закладки списком в overlay слева вверху.</div></div>
<div class="tg-step"><div class="tg-step-num">5</div><div class="tg-step-body">Кнопка <b>«← Учебники»</b> в левом верхнем углу — возврат к каталогу.</div></div>
</div>
<div class="tg-note"><div class="tg-box-icon"><i data-lucide="info"></i></div><div class="tg-box-body"><div class="tg-box-label">Сохранение</div>Прогресс и закладки сохраняются как в браузере, так и на сервере (если вы залогинены). Открывайте учебник на телефоне — увидите всё то же, что отметили на компьютере.</div></div>
</div>
<div class="tg-section" id="s-11-3">
<div class="tg-section-title">11.3 Назначить чтение как ДЗ</div>
<p>Учитель и админ могут назначить чтение глав ученику или классу.</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">На карточке учебника нажмите фиолетовую кнопку <b>«+»</b> (Назначить).</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">В модалке выберите вкладку <b>«Классу»</b> или <b>«Ученику»</b>.<br><b>Классу</b> — чекбоксы для нескольких классов сразу.<br><b>Ученику</b> — поиск по имени/email (включая «Моих учеников» из Главы 13).</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Укажите диапазон параграфов: <code>1-5</code> или список <code>1,3,7</code>. Пусто = весь учебник.</div></div>
<div class="tg-step"><div class="tg-step-num">4</div><div class="tg-step-body">Опционально — срок сдачи. Нажмите <b>«Назначить»</b>.</div></div>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="check-circle"></i></div><div class="tg-box-body"><div class="tg-box-label">Авто-проверка</div>Как только ученик отметит все требуемые § как «Прочитано» — задание автоматически становится «Сдано», вам приходит уведомление-колокольчик.</div></div>
</div>
<div class="tg-section" id="s-11-4">
<div class="tg-section-title">11.4 Прогресс класса по учебнику</div>
<p>В правом верхнем углу каталога — кнопка <b>«Прогресс класса»</b> (только для учителей). Откроет страницу с таблицей: каждый ученик класса, шкала прогресса, последний прочитанный параграф и дата последнего чтения.</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body">Сортировка автоматическая: сначала те, кто прочитал больше.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body">Селекторы вверху позволяют переключать учебник × класс — удобно сравнивать.</div></div>
</div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-10')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Live-квиз</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-12')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Экзамен 9 класс</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 12 — EXAM 9 ═══ -->
<div class="tg-chapter" id="ch-12">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="clipboard-check"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 12</div>
<div class="tg-chapter-title">Экзамен 9 класс — Математика</div>
</div>
<a href="/exam9" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Экзамен 9</a>
</div>
<div class="tg-section" id="s-12-1">
<div class="tg-section-title">12.1 Что внутри</div>
<p>Раздел <b>«Экзамен 9 класс»</b> — банк из <b>80 экзаменационных вариантов</b> по математике за 9 класс. Каждый вариант — 10 задач: 3 с выбором ответа, 7 открытых. У каждой задачи есть полное пошаговое решение с формулами (KaTeX) и иллюстрациями.</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body">Кнопка <b>«Выбрать вариант»</b> в шапке открывает сетку 80 номеров.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body">Прогресс отмечается прямо на сетке: зелёный — все решения посмотрены, жёлтый — часть.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body">Возвращаясь на страницу, автоматически открывается последний просмотренный вариант.</div></div>
</div>
</div>
<div class="tg-section" id="s-12-2">
<div class="tg-section-title">12.2 Назначить вариант как ДЗ</div>
<p>Каждый <b>нечётный</b> вариант (1, 3, 5, …, 79) импортирован в банк вопросов как готовый тест из 10 задач. Их можно назначать как обычные тесты:</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Откройте нужный вариант на странице <b>«Экзамен 9»</b>.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">Над заголовком — кнопка <b>«Назначить как ДЗ»</b> (видна учителям/админам).</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Выберите классы и срок — задание создаётся как обычный тест, ученики проходят через стандартный test-runner.</div></div>
</div>
<div class="tg-note"><div class="tg-box-icon"><i data-lucide="info"></i></div><div class="tg-box-body"><div class="tg-box-label">Чётные варианты</div>Для чётных (2, 4, … 80) кнопка «Назначить» неактивна — варианты доступны только для самостоятельного просмотра. Это сделано чтобы у вас оставались «свежие» варианты для самостоятельной подготовки учеников.</div></div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-11')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Учебники</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-13')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-right"></i></div>
<div><div class="tg-ch-nav-label">Следующая глава</div><div class="tg-ch-nav-title">Мои ученики</div></div>
</div>
</div>
</div>
<!-- ═══ CHAPTER 13 — MY STUDENTS ═══ -->
<div class="tg-chapter" id="ch-13">
<div class="tg-chapter-header">
<div class="tg-chapter-icon"><i data-lucide="user-plus"></i></div>
<div class="tg-chapter-meta">
<div class="tg-chapter-num">Глава 13</div>
<div class="tg-chapter-title">Мои ученики (без класса)</div>
</div>
<a href="/my-students" class="tg-chapter-try" target="_blank"><i data-lucide="external-link"></i> Мои ученики</a>
</div>
<div class="tg-section" id="s-13-1">
<div class="tg-section-title">13.1 Когда это нужно</div>
<p>Раздел <b>«Мои ученики»</b> — личный список учеников, которых вы хотите учить вне школьного класса:</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Репетиторство</b> — частные ученики, которым вы даёте задания индивидуально.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Подготовка к ЦТ/экзаменам</b> — несколько учеников из разных школ.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Доп-занятия</b> — для тех, кому нужна индивидуальная программа в дополнение к классу.</div></div>
</div>
<p>Это альтернатива классу из одного человека: меньше бюрократии, никаких приглашений по коду — только email.</p>
</div>
<div class="tg-section" id="s-13-2">
<div class="tg-section-title">13.2 Добавить ученика</div>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num">1</div><div class="tg-step-body">Откройте <b>«Мои ученики»</b> в боковом меню.</div></div>
<div class="tg-step"><div class="tg-step-num">2</div><div class="tg-step-body">В форме <b>«Добавить ученика»</b> введите email — он должен совпадать с email регистрации ученика на платформе.</div></div>
<div class="tg-step"><div class="tg-step-num">3</div><div class="tg-step-body">Опционально — заметка (например, «9Б, физика, СБ 16:00»). Видна только вам.</div></div>
<div class="tg-step"><div class="tg-step-num">4</div><div class="tg-step-body">Нажмите <b>«Добавить»</b>. Ученик получит уведомление «Вас добавил учитель».</div></div>
</div>
<div class="tg-tip"><div class="tg-box-icon"><i data-lucide="user-check"></i></div><div class="tg-box-body"><div class="tg-box-label">Если ученика нет на платформе</div>Сначала отправьте ему ссылку на регистрацию (/login → создать аккаунт), пусть зарегистрируется с тем email, который вы хотите добавить.</div></div>
</div>
<div class="tg-section" id="s-13-3">
<div class="tg-section-title">13.3 Назначение заданий</div>
<p>После добавления ученик появляется в поисках в модалках назначений:</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Чтение учебника</b> — на <a href="/textbooks">/textbooks</a> → кнопка «+» → вкладка «Ученику» → начинайте набирать имя/email — ученик появится в результатах.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Тесты и файлы</b> — в той же модалке создания задания в классе. Учеников из «Моих учеников» можно найти в общем поиске.</div></div>
</div>
<div class="tg-note"><div class="tg-box-icon"><i data-lucide="shield-check"></i></div><div class="tg-box-body"><div class="tg-box-label">Безопасность</div>Учитель может назначать задания только тем ученикам, которые либо в его классе, либо в его списке «Мои ученики». Списки видят только сами учителя — никто другой.</div></div>
</div>
<div class="tg-section" id="s-13-4">
<div class="tg-section-title">13.4 Удаление и заметки</div>
<p>Каждая строка списка — отдельный ученик. Доступные действия:</p>
<div class="tg-steps">
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body"><b>Иконка корзины</b> — убрать ученика из списка. Уже созданные задания НЕ удаляются — ученик продолжит их видеть.</div></div>
<div class="tg-step"><div class="tg-step-num"></div><div class="tg-step-body">Счётчик «Заданий» показывает, сколько вы лично выдали этому ученику.</div></div>
</div>
<div class="tg-success"><div class="tg-box-icon"><i data-lucide="check-circle"></i></div><div class="tg-box-body"><div class="tg-box-label">Готово!</div>Теперь вы знаете все 13 разделов руководства. Удачных уроков и репетиторских часов!</div></div>
</div>
<div class="tg-chapter-nav">
<div class="tg-ch-nav-btn prev" onclick="scrollToChapter('ch-12')">
<div class="tg-ch-nav-icon"><i data-lucide="arrow-left"></i></div>
<div><div class="tg-ch-nav-label">Предыдущая глава</div><div class="tg-ch-nav-title">Экзамен 9 класс</div></div>
</div>
<div class="tg-ch-nav-btn next" onclick="scrollToChapter('ch-1')" style="text-align:right">
<div class="tg-ch-nav-icon"><i data-lucide="rotate-ccw"></i></div>
<div><div class="tg-ch-nav-label">Вернуться к началу</div><div class="tg-ch-nav-title">Быстрый старт</div></div>
</div>
</div>
</div>
</main>
</div>
</div><!-- .sb-content -->
</div><!-- .app-layout -->
<script src="/js/api.js"></script>
<script src="/js/sidebar.js"></script>
<script src="/js/notifications.js"></script>
<script src="/js/search.js"></script>
<script src="/js/mobile.js"></script>
<script>
LS.initPage();
lucide.createIcons();
/* ── Chapter metadata ── */
const CHAPTERS = [
{ id:'ch-1', label:'Быстрый старт', icon:'rocket', sections:['s-1-1','s-1-2','s-1-3','s-1-4'], sLabels:['Первый вход','Интерфейс','Первый класс','Чеклист'] },
{ id:'ch-2', label:'Управление классами', icon:'graduation-cap', sections:['s-2-1','s-2-2','s-2-3','s-2-4'], sLabels:['Создание класса','Приглашение','Состав и удаление','Обновление кода'] },
{ id:'ch-3', label:'Банк вопросов', icon:'database', sections:['s-3-1','s-3-2','s-3-3'], sLabels:['Создание вопроса','Типы вопросов','Дублирование и импорт'] },
{ id:'ch-4', label:'Задания и тесты', icon:'clipboard-check', sections:['s-4-1','s-4-2','s-4-3','s-4-4'], sLabels:['Создание задания','Параметры','Результаты и статистика','Кому: класс / ученик / личный список'] },
{ id:'ch-5', label:'Онлайн-урок', icon:'presentation', sections:['s-5-1','s-5-2','s-5-3','s-5-4','s-5-5','s-5-6'], sLabels:['Запуск и завершение','Инструменты доски','Страницы и шаблоны','Zoom и темы','Чат и видеосвязь','Гостевая ссылка'] },
{ id:'ch-6', label:'Библиотека материалов', icon:'book-open', sections:['s-6-1','s-6-2'], sLabels:['Загрузка файлов','Папки и доступ'] },
{ id:'ch-7', label:'Редактор уроков', icon:'file-edit', sections:['s-7-1','s-7-2'], sLabels:['Создание урока','Типы блоков'] },
{ id:'ch-8', label:'Аналитика', icon:'bar-chart-2', sections:['s-8-1','s-8-2'], sLabels:['Дашборд аналитики','Профиль ученика'] },
{ id:'ch-9', label:'Журнал оценок', icon:'table', sections:['s-9-1'], sLabels:['Таблица и экспорт'] },
{ id:'ch-10', label:'Live-квиз', icon:'radio', sections:['s-10-1','s-10-2'], sLabels:['Создание сессии','Управление'] },
{ id:'ch-11', label:'Учебники', icon:'book-open-text', sections:['s-11-1','s-11-2','s-11-3','s-11-4'], sLabels:['Каталог','Чтение и отметки','Назначить как ДЗ','Прогресс класса'] },
{ id:'ch-12', label:'Экзамен 9 класс', icon:'clipboard-check', sections:['s-12-1','s-12-2'], sLabels:['Что внутри','Назначить вариант'] },
{ id:'ch-13', label:'Мои ученики', icon:'user-plus', sections:['s-13-1','s-13-2','s-13-3','s-13-4'], sLabels:['Когда нужно','Добавить ученика','Назначение','Удаление и заметки'] },
];
/* ── Render nav ── */
const navContainer = document.getElementById('tg-nav-chapters');
CHAPTERS.forEach((ch, ci) => {
const div = document.createElement('div');
div.className = 'tg-nav-chapter';
div.dataset.ch = ch.id;
div.innerHTML = `
<button class="tg-nav-ch-btn" onclick="navChapterClick('${ch.id}',this)">
<span class="tg-nav-ch-icon"><i data-lucide="${ch.icon}"></i></span>
<span class="tg-nav-ch-label">${ci+1}. ${ch.label}</span>
<span class="tg-nav-ch-status"><i data-lucide="check"></i></span>
<span class="tg-nav-ch-chevron"><i data-lucide="chevron-right"></i></span>
</button>
<div class="tg-nav-sections">
${ch.sections.map((sid, si) => `<a class="tg-nav-sec-link" data-sec="${sid}" onclick="scrollToSection('${sid}')">${ch.sLabels[si]}</a>`).join('')}
</div>`;
navContainer.appendChild(div);
});
lucide.createIcons();
/* ── Chapter switching ── */
const scrollEl = document.getElementById('tg-scroll');
const progBar = document.getElementById('tg-prog-bar');
const tgContent = document.querySelector('.tg-content');
let _activeChId = null;
function showChapter(chId, sectionId) {
const newEl = document.getElementById(chId);
if (!newEl) return;
if (_activeChId) {
const prev = document.getElementById(_activeChId);
if (prev) prev.classList.remove('tg-active');
}
newEl.classList.add('tg-active');
_activeChId = chId;
history.replaceState(null, '', '#' + chId);
scrollEl.scrollTop = 0;
if (sectionId) {
requestAnimationFrame(() => {
const sec = document.getElementById(sectionId);
if (sec) {
const top = sec.offsetTop - 80;
scrollEl.scrollTo({ top, behavior: 'smooth' });
}
});
}
// Nav: highlight active chapter, open its sub-list
document.querySelectorAll('.tg-nav-chapter').forEach(div => {
const isThis = div.dataset.ch === chId;
div.querySelector('.tg-nav-ch-btn').classList.toggle('active', isThis);
if (isThis && !div.classList.contains('open')) div.classList.add('open');
});
document.querySelectorAll('.tg-nav-sec-link').forEach(a => a.classList.remove('active'));
markRead(chId);
}
function scrollToChapter(chId) { showChapter(chId); }
function scrollToSection(secId) {
const ch = CHAPTERS.find(c => c.sections.includes(secId));
if (ch) showChapter(ch.id, secId);
}
function navChapterClick(chId, btn) {
btn.closest('.tg-nav-chapter').classList.toggle('open');
showChapter(chId);
}
/* ── Read tracking ── */
const READ_KEY = 'ls_tg_read';
let readChapters = JSON.parse(localStorage.getItem(READ_KEY) || '[]');
function markRead(chId) {
if (!readChapters.includes(chId)) {
readChapters.push(chId);
localStorage.setItem(READ_KEY, JSON.stringify(readChapters));
}
updateReadUI();
}
function updateReadUI() {
document.querySelectorAll('.tg-nav-chapter').forEach(div => {
div.querySelector('.tg-nav-ch-btn').classList.toggle('read', readChapters.includes(div.dataset.ch));
});
const n = readChapters.length;
document.getElementById('tg-prog-text').textContent = `${n} из ${CHAPTERS.length} глав прочитано`;
progBar.style.width = Math.round(n / CHAPTERS.length * 100) + '%';
}
updateReadUI();
/* ── Checklist ── */
const CL_KEY = 'ls_tg_checklist';
const clState = JSON.parse(localStorage.getItem(CL_KEY) || '{}');
document.querySelectorAll('.tg-cl-item').forEach(item => {
const id = item.dataset.id;
const cb = item.querySelector('input');
if (clState[id]) { cb.checked = true; item.classList.add('checked'); }
cb.addEventListener('change', () => {
clState[id] = cb.checked;
item.classList.toggle('checked', cb.checked);
localStorage.setItem(CL_KEY, JSON.stringify(clState));
updateChecklist();
});
item.querySelector('.tg-cl-link')?.addEventListener('click', e => e.stopPropagation());
});
function updateChecklist() {
const total = document.querySelectorAll('.tg-cl-item').length;
const done = document.querySelectorAll('.tg-cl-item input:checked').length;
document.getElementById('cl-prog').textContent = `${done} / ${total}`;
document.getElementById('cl-bar').style.width = Math.round(done / total * 100) + '%';
}
updateChecklist();
/* ── Accordion ── */
function toggleAcc(head) {
head.closest('.tg-acc-item').classList.toggle('open');
}
/* ── Search: show all chapters matching query ── */
document.getElementById('tg-search').addEventListener('input', function() {
const q = this.value.trim().toLowerCase();
if (!q) {
tgContent.classList.remove('tg-search-mode');
document.querySelectorAll('.tg-chapter, .tg-section').forEach(el => el.classList.remove('search-hidden'));
return;
}
tgContent.classList.add('tg-search-mode');
document.querySelectorAll('.tg-section').forEach(sec => {
sec.classList.toggle('search-hidden', !sec.textContent.toLowerCase().includes(q));
});
document.querySelectorAll('.tg-chapter').forEach(ch => {
ch.classList.toggle('search-hidden', ch.querySelectorAll('.tg-section:not(.search-hidden)').length === 0);
});
});
/* ── Init from hash or default ch-1 ── */
const initHash = location.hash.replace('#', '');
showChapter(CHAPTERS.find(c => c.id === initHash) ? initHash : 'ch-1');
</script>
</body>
</html>