diff --git a/des/django_1/code.html b/des/django_1/code.html new file mode 100644 index 0000000..9187cbc --- /dev/null +++ b/des/django_1/code.html @@ -0,0 +1,470 @@ + +
Django Admin/ЕГЭ LMS Панель управления
+
+ +
+
+

Выберите Задание для изменения

+

Управление банком задач, временными лимитами и сроками сдачи курсов ЕГЭ

+
+
+ + +
+
+
+
+
+
+Всего заданий +482 + +trending_up +12 за неделю + +
+
+assignment +
+
+
+
+Опубликовано +439 +91% доступно +
+
+verified +
+
+
+
+В черновиках +43 +Требуют ревью +
+
+edit_note +
+
+
+
+Ответов на проверке +19 + +schedule Ожидают куратора + +
+
+rate_review +
+
+
+
+
+
+search + +
+
+bolt + + +
+
+
+
+check_circle +Выбрано 0 из 4 +
+
+ + +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+Название задания +arrow_upward +
+
+
+Предмет +unfold_more +
+
+
+Опубликовано +unfold_more +
+
+
+Лимит (мин) +unfold_more +
+
+
+Дедлайн +unfold_more +
+
+
+Дата создания +unfold_more +
+
Действия
+ + + + + + + Информатика + + + + + True + + + 235 + +
+event +20 сентября 2026 г. 17:00 +
+
+ 19 сентября 2026 г. 18:25 + +
+ + + +
+
+ + + + + + + Информатика + + + + + True + + + 120 + +
+event +24 сентября 2026 г. 23:59 +
+
+ 21 сентября 2026 г. 10:15 + +
+ + + +
+
+ + + + + + + Информатика + + + + + True + + + 90 + +
+event +18 сентября 2026 г. 20:00 +
+
+ 15 сентября 2026 г. 14:00 + +
+ + + +
+
+ + + + + + + Математика + + + + + False + + + 180 + +
+event +30 сентября 2026 г. 18:00 +
+
+ 22 сентября 2026 г. 12:00 + +
+ + + +
+
+
+
+
+4 Задания всего +• +Отображено: 1 - 4 из 4 +
+
+ +1 + +
+
+
+
+
+
+Быстрый фильтр по предметам +category +
+
+ + + + +
+
+
+
+Статистика выполнения +donut_large +
+
+ + + + +
+75% +Средний балл по заданиям +
+
+
+
+
+Интеграция с Telegram +send +
+

Оповещения об открытии дедлайнов отправляются ученикам автоматически за 2 часа.

+
+ + Бот активен + +Настроить +
+
+
+
+
+ + \ No newline at end of file diff --git a/des/django_1/screen.png b/des/django_1/screen.png new file mode 100644 index 0000000..433a696 Binary files /dev/null and b/des/django_1/screen.png differ diff --git a/des/django_2/code.html b/des/django_2/code.html new file mode 100644 index 0000000..9a03e55 --- /dev/null +++ b/des/django_2/code.html @@ -0,0 +1,342 @@ + +
Django Admin/ЕГЭ LMS Панель управления
+ + + +
+
+
+

Ответы учеников

+ + Очередь Django LMS + +
+

+ Проверка практических решений, выставление первичных баллов ЕГЭ и развёрнутая обратная связь +

+
+ +
+
+ +Требуют внимания: +1 +
+ +
+
+ +
+ +
+search + +
+ +
+ +
+ +expand_more +
+ +
+ +expand_more +
+ + +
+
+ +
+
+
+
+

Ожидает проверки

+ + 1 работа ждет + +
+Приоритет: Высокий +
+ +
+ +
+ +
+
+ + Информатика КЕГЭ 2026 + + + Вариант #09-V + + +hourglass_top + Ожидает ревью преподавателя + +
+

+ Входной контроль по информатике +

+ +
+
+account_circle +Dimong +(dimong4fox@yandex.ru) +
+
+schedule +Отправлено: 20 Сен 2026, 18:01 +
+
+timer +Время выполнения: 142 мин. из 235 +
+
+task_alt +Авто-тесты: 21/27 решено +
+
+
+ +
+ +Дедлайн проверки: сегодня 23:59 +
+
+
+ +
+
+
+
+

Проверено

+ + 2 работы + +
+Архив проверок за 48 часов +
+
+ +
+
+
+
+ + Информатика КЕГЭ 2026 + + +check_circle + Проверено методистом + +
+

+ Входной контроль по информатике +

+
+
+person +Игорь +(@pipin) +
+ +
+verified +Оценка: 3 / 27 баллов +
+
+calendar_today +20 Сен 2026, 17:29 +
+
+rate_review +Проверил: Dimong +
+
+
+ +
+ +
+
+ +
+
+
+
+ + Информатика КЕГЭ 2026 + + +check_circle + Проверено методистом + +
+

+ Задание №1. Анализ информационных моделей (графы и таблицы) +

+
+
+person +Михаил +(@shtrmx) +
+ +
+verified +Оценка: 25 / 27 баллов +
+
+calendar_today +19 Сен 2026, 21:10 +
+
+rate_review +Проверил: Dimong +
+
+
+ +
+ +
+
+
+
+ +
+
+inventory_2 + + Всего 3 ответа учеников (1 на проверке, 2 проверено) + +
+ +
+ +1 из 1 + +
+
+ + + +
+ + \ No newline at end of file diff --git a/des/django_2/screen.png b/des/django_2/screen.png new file mode 100644 index 0000000..0cffa3f Binary files /dev/null and b/des/django_2/screen.png differ diff --git a/des/django_3/code.html b/des/django_3/code.html new file mode 100644 index 0000000..a7d89d3 --- /dev/null +++ b/des/django_3/code.html @@ -0,0 +1,316 @@ + +
Django Admin/ЕГЭ LMS Панель управления
+ +
+ + + +
+
+
+fact_check +
+
+
+Django LMS Admin +• +ID: #48291 +
+

+ Изменить Ответ ученика: pipin на Входной контроль +

+
+
+ +
+
+ +
+ +
+
+
+assignment_turned_in +Параметры проверки и оценка +
+
+ +Статус: Требует верификации +
+
+
+ +
+ +
+
+ +expand_more +
+
+ + + +
+
+Курс: ЕГЭ Информатика 2025 • Дедлайн: 15 мая 2024 +
+ +
+ +
+
+ +expand_more +
+
+ + + +
+
+Группа: 11-Б Профиль • Telegram: @pipin_dev +
+
+ +
+
+ +
+
+ +
+первичных баллов +
+
+ +
+
+Процент выполнения работы: 11.1% +Ниже порога (Мин: 40%) +
+
+
+
+
+0 б +Порог: 11 б +Максимум: 27 б +
+
+
+ +
+
+ +Markdown поддерживается +
+ +
+
+ +
+
+
+list_alt +

Ответы на задачи (Inline)

+2 объекта +
+ +
+ +
+
+
+1 +Ответ на задачу: Ответ на Задача 1 к Входной контроль по информатике +
+ +
+
+ +
+ +
+Задача 1 к Входной контроль по информатике (Поиск оптимального маршрута по таблице весов) + +Условие +launch + +
+
+ +
+ +
+21 +check_circle +
+Эталонный ответ: 21 +
+ +
+ +
+ +check +
+
+ +
+ +
+ +макс: 1 б +
+
+ +
+ + +
+
+
+ +
+
+
+2 +Ответ на задачу: Ответ на Задача 2 к Входной контроль по информатике +
+ +
+
+ +
+ +
+Задача 2 к Входной контроль по информатике (Построение таблицы истинности логической функции) + +Условие +launch + +
+
+ +
+ +
+34 (yxzw) +cancel +
+Эталонный ответ: wzyx +
+ +
+ +
+ +close +
+
+ +
+ +
+ +макс: 1 б +
+
+ +
+ + +
+
+
+
+ +
+ +
+ +
+ +
+ + + +
+
+
+
+ + \ No newline at end of file diff --git a/des/django_3/screen.png b/des/django_3/screen.png new file mode 100644 index 0000000..260e672 Binary files /dev/null and b/des/django_3/screen.png differ diff --git a/des/django_dimong/code.html b/des/django_dimong/code.html new file mode 100644 index 0000000..ac6849a --- /dev/null +++ b/des/django_dimong/code.html @@ -0,0 +1,448 @@ + + + + + +Изменить Пользователь Dimong (Ученик) | Администрирование Django + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + +
+
+ D +
+
+Dimong +Superuser +
+
+ + +
+
+ + +
+ +
+

+Изменить Пользователь Dimong (Ученик) +ID: 1042 +

+
+
+ +
+ +
+ + +

+ Обязательное поле. Не более 150 символов. Только буквы, цифры и символы @/./+/-/_. +

+
+ +
+ +
+алгоритм: pbkdf2_sha256 + итерации: 870000 + соль: M6Dksm******************** + хэш: xM3+5a7Gk9bL0rQ3Vz0A... +
+

+ Мы не храним сырые пароли, поэтому не существует способа посмотреть пароль пользователя. + + Ссылка для изменения пароля. + +

+
+
+ + +
+
+

Персональная информация

+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ + +
+
+

Права доступа

+
+
+ +
+ +
+Активный +

+ Отметьте, если пользователь должен считаться активным. Уберите эту отметку вместо удаления учётной записи. +

+
+
+ +
+ +
+Статус персонала +

+ Отметьте, если пользователь может входить в административную часть сайта. +

+
+
+ +
+ +
+Статус суперпользователя +

+ Указывает, что пользователь имеет все права без явного их назначения. +

+
+
+ +
+ +
+ +
+
+Доступные группы +3 +
+ +
+
+ + + + +
+
+ +
+
+ Преподаватели математики +
+
+ Кураторы курса +
+
+ Методический отдел +
+
+ + +
+ +
+ + +
+ +
+
+Выбранные группы + +
+ +
+
+ + + + +
+
+ +
+

+ 0 выбранных объектов не видны (click to clear) +

+
+ + +
+
+

+ Группы, к которым принадлежит данный пользователь. Пользователь получит все права, указанные в каждой из его/её групп. Удерживайте “Control“ (или “Command“ на Mac), чтобы выбрать несколько значений. +

+
+
+
+ +
+
+ + + + +
+ + \ No newline at end of file diff --git a/des/django_dimong/screen.png b/des/django_dimong/screen.png new file mode 100644 index 0000000..5d0d8dd Binary files /dev/null and b/des/django_dimong/screen.png differ diff --git a/des/django_dimong_impeccable/code.html b/des/django_dimong_impeccable/code.html new file mode 100644 index 0000000..302c35d --- /dev/null +++ b/des/django_dimong_impeccable/code.html @@ -0,0 +1,464 @@ + + + + + +Изменить Пользователь Dimong (Ученик) | Администрирование Django + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + + +
+
+ D +
+
+Dimong +Superuser +
+
+ + +
+
+ + +
+ +
+

+Изменить Пользователь Dimong (Ученик) +ID: 1042 +

+
+
+ +
+
+

Учетные данные

+
+
+ +
+ + +

+ Обязательное поле. Не более 150 символов. Только буквы, цифры и символы @/./+/-/_. +

+
+ +
+ +
+алгоритм: pbkdf2_sha256 + итерации: 870000 + соль: M6Dksm******************** + хэш: xM3+5a7Gk9bL0rQ3Vz0A... +
+

+Мы не храним сырые пароли, поэтому не существует способа посмотреть пароль пользователя. + + Ссылка для изменения пароля. + +

+
+
+
+ + +
+
+

Персональная информация

+
+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+ + +
+
+

Права доступа

+
+
+ +
+ +
+Активный +

+ Отметьте, если пользователь должен считаться активным. Уберите эту отметку вместо удаления учётной записи. +

+
+
+ +
+ +
+Статус персонала +

+ Отметьте, если пользователь может входить в административную часть сайта. +

+
+
+ +
+ +
+Статус суперпользователя +

+ Указывает, что пользователь имеет все права без явного их назначения. +

+
+
+ +
+ +
+ +
+
+Доступные группы +3 +
+ +
+
+ + + + +
+
+ +
+
+ Преподаватели математики +
+
+ Кураторы курса +
+
+ Методический отдел +
+
+ + +
+ +
+ + +
+ +
+
+Выбранные группы + +
+ +
+
+ + + + +
+
+ +
+

+ 0 выбранных объектов (click to clear) +

+
+ + +
+
+

+ Группы, к которым принадлежит данный пользователь. Пользователь получит все права, указанные в каждой из его/её групп. Удерживайте “Control“ (или “Command“ на Mac), чтобы выбрать несколько значений. +

+
+
+
+ +
+
+ + + + +
+ + \ No newline at end of file diff --git a/des/django_dimong_impeccable/screen.png b/des/django_dimong_impeccable/screen.png new file mode 100644 index 0000000..089903d Binary files /dev/null and b/des/django_dimong_impeccable/screen.png differ diff --git a/des/django_impeccable/code.html b/des/django_impeccable/code.html new file mode 100644 index 0000000..a3741f2 --- /dev/null +++ b/des/django_impeccable/code.html @@ -0,0 +1,472 @@ + + + + + + +Изменить Ответ ученика — Django LMS Admin + + + + + + + + + + + + +
+ +
+
+ +
+Django Admin +/ +ЕГЭ LMS Панель управления +
+
+
+ +open_in_new +Смотреть сайт LMS + +
+
+
+person +
+
+Dimong +Superuser +
+
+ +logout + + +
+
+ +
+
+ +
+ + + +
+
+
+fact_check +
+
+
+Ответ ученика +• +ID: #48291 +
+

+ pipin — Входной контроль по информатике +

+
+
+ +
+
+ +
+ +
+
+
+tune +

Параметры проверки и оценка

+
+
+ +Требует верификации +
+
+ +
+ +
+ +
+
+ +expand_more +
+
+ + + +
+
+Курс: ЕГЭ Информатика 2025 • Дедлайн: 15 мая 2024 +
+ +
+ +
+
+ +expand_more +
+
+ + + +
+
+Группа: 11-Б Профиль • TG: @pipin_dev +
+
+ +
+
+Итоговая оценка +
+
+ +
+первичных баллов +
+
+
+
+Выполнение: 11.1% +Ниже порога (Мин: 40%) +
+
+
+
+
+0 б +Порог: 11 б +Максимум: 27 б +
+
+
+ +
+
+ +Поддерживается Markdown +
+ +
+
+ +
+ +
+
+view_list +

Ответы на задачи (Inline)

+2 объекта +
+ +
+ +
+
+
+#01 +Задача 1: Поиск оптимального маршрута по таблице весов + +Условие +open_in_new + +
+ +
+ +
+ +
+Ответ ученика +
+21 +check_circle +
+Эталонный ответ: 21 +
+ +
+Статус проверки +
+ +check +
+Автопроверка совпала +
+ +
+Баллы за номер +
+ +макс: 1 +
+100% за задание +
+ +
+Пояснение проверяющего к задаче 1 + +
+
+
+ +
+
+
+#02 +Задача 2: Построение таблицы истинности логической функции + +Условие +open_in_new + +
+ +
+ +
+ +
+Ответ ученика +
+34 (yxzw) +cancel +
+Эталон: wzyx +
+ +
+Статус проверки +
+ +close +
+Ошибочный ответ +
+ +
+Баллы за номер +
+ +макс: 1 +
+0 первичных баллов +
+ +
+Пояснение проверяющего к задаче 2 + +
+
+
+
+ +
+ +
+ +
+ +
+ + + +
+
+
+
+
+
+ \ No newline at end of file diff --git a/des/django_impeccable/screen.png b/des/django_impeccable/screen.png new file mode 100644 index 0000000..325769d Binary files /dev/null and b/des/django_impeccable/screen.png differ diff --git a/des/lms_technical_obsidian/code.html b/des/lms_technical_obsidian/code.html new file mode 100644 index 0000000..4700181 --- /dev/null +++ b/des/lms_technical_obsidian/code.html @@ -0,0 +1,352 @@ + + + + + +ЕГЭ LMS — Мои задания + + + + + + + + + + + +
+
+ +
+
+ + + + +
+ + ЕГЭ LMS + +
+ +
+ + + + + + + + + +
+
+ D +
+ + Привет, Dimong + +
+ + + + + + + +
+
+
+ + +
+ +
+

Мои задания

+

Список всех доступных заданий для выполнения.

+
+ +
+ +
+ +
+ +
+
+ +
+ + Информатика + + + + Ожидает проверки + +
+ +

+ Входной контроль по информатике +

+ + + +
+
+ + + + + Добавлено: + +19 Сен 2026 +
+
+ + + + + Дедлайн: + +20 Сен 2026, 17:00 +
+
+ + + + + Время на решение: + +235 мин. +
+
+
+ + + Смотреть ответ + +
+ +
+
+ +
+ + Информатика + + + + Требует сдачи + +
+ +

+ Задание №2. Таблицы истинности и логические функции +

+ + + +
+
+ + + + + Добавлено: + +21 Сен 2026 +
+
+ + + + + Дедлайн: + +24 Сен 2026, 23:59 +
+
+ + + + + Время на решение: + +120 мин. +
+
+
+ + + Приступить к решению + +
+ +
+
+ +
+ + Информатика + + + + + + Принято (94/100) + +
+ +

+ Задание №1. Анализ информационных моделей и графов +

+ + + +
+
+ + + + + Сдано: + +18 Сен 2026, 16:42 +
+
+ + + + + Проверка: + +Преподаватель +
+
+ + + + + Рецензия: + +Замечания и правки +
+
+
+ + + Посмотреть рецензию + +
+
+
+ + + + + \ No newline at end of file diff --git a/des/lms_technical_obsidian/screen.png b/des/lms_technical_obsidian/screen.png new file mode 100644 index 0000000..37a2e07 Binary files /dev/null and b/des/lms_technical_obsidian/screen.png differ diff --git a/des/obsidian_scholar/DESIGN.md b/des/obsidian_scholar/DESIGN.md new file mode 100644 index 0000000..cf8909c --- /dev/null +++ b/des/obsidian_scholar/DESIGN.md @@ -0,0 +1,229 @@ +--- +name: Obsidian Scholar +colors: + surface: '#0c1322' + surface-dim: '#0c1322' + surface-bright: '#323949' + surface-container-lowest: '#070e1d' + surface-container-low: '#141b2b' + surface-container: '#191f2f' + surface-container-high: '#232a3a' + surface-container-highest: '#2e3545' + on-surface: '#dce2f7' + on-surface-variant: '#c7c4d7' + inverse-surface: '#dce2f7' + inverse-on-surface: '#293040' + outline: '#908fa0' + outline-variant: '#464554' + surface-tint: '#c0c1ff' + primary: '#c0c1ff' + on-primary: '#1000a9' + primary-container: '#8083ff' + on-primary-container: '#0d0096' + inverse-primary: '#494bd6' + secondary: '#4cd7f6' + on-secondary: '#003640' + secondary-container: '#03b5d3' + on-secondary-container: '#00424e' + tertiary: '#4edea3' + on-tertiary: '#003824' + tertiary-container: '#00885d' + on-tertiary-container: '#000703' + error: '#ffb4ab' + on-error: '#690005' + error-container: '#93000a' + on-error-container: '#ffdad6' + primary-fixed: '#e1e0ff' + primary-fixed-dim: '#c0c1ff' + on-primary-fixed: '#07006c' + on-primary-fixed-variant: '#2f2ebe' + secondary-fixed: '#acedff' + secondary-fixed-dim: '#4cd7f6' + on-secondary-fixed: '#001f26' + on-secondary-fixed-variant: '#004e5c' + tertiary-fixed: '#6ffbbe' + tertiary-fixed-dim: '#4edea3' + on-tertiary-fixed: '#002113' + on-tertiary-fixed-variant: '#005236' + background: '#0c1322' + on-background: '#dce2f7' + surface-variant: '#2e3545' +typography: + display-lg: + fontFamily: Inter + fontSize: 40px + fontWeight: '700' + lineHeight: 48px + letterSpacing: -0.02em + display-lg-mobile: + fontFamily: Inter + fontSize: 30px + fontWeight: '700' + lineHeight: 38px + letterSpacing: -0.02em + headline-lg: + fontFamily: Inter + fontSize: 28px + fontWeight: '600' + lineHeight: 36px + letterSpacing: -0.015em + headline-md: + fontFamily: Inter + fontSize: 22px + fontWeight: '600' + lineHeight: 30px + letterSpacing: -0.01em + headline-sm: + fontFamily: Inter + fontSize: 18px + fontWeight: '600' + lineHeight: 26px + body-lg: + fontFamily: Inter + fontSize: 16px + fontWeight: '400' + lineHeight: 26px + body-md: + fontFamily: Inter + fontSize: 14px + fontWeight: '400' + lineHeight: 22px + body-sm: + fontFamily: Inter + fontSize: 12px + fontWeight: '400' + lineHeight: 18px + label-lg: + fontFamily: Inter + fontSize: 14px + fontWeight: '500' + lineHeight: 20px + label-md: + fontFamily: Inter + fontSize: 12px + fontWeight: '500' + lineHeight: 16px + label-sm: + fontFamily: Inter + fontSize: 11px + fontWeight: '600' + lineHeight: 14px + letterSpacing: 0.04em +rounded: + sm: 0.25rem + DEFAULT: 0.5rem + md: 0.75rem + lg: 1rem + xl: 1.5rem + full: 9999px +spacing: + gutter: 1.5rem + gutter-sm: 1rem + margin: 2rem + margin-sm: 1rem + space-xs: 0.25rem + space-sm: 0.5rem + space-md: 1rem + space-lg: 1.5rem + space-xl: 2rem +--- + +## Brand & Style + +The design system is crafted for high-focus, continuous digital learning environments. The brand personality is intellectually rigorous, calm, and technically refined. It targets lifelong learners, software engineers, researchers, and university cohorts who spend sustained hours inside complex course structures, code terminals, and instructional video workflows. + +The visual style unites modern high-contrast ergonomics with subtle depth: +- **Obsidian Dark Architecture:** Minimal cognitive fatigue through deep slate backgrounds that eliminate glare during late-night study sessions. +- **Electric Precision:** High-chroma indigo, violet, and cybernetic cyan used strictly as functional beacons for completion states, active curricula, and milestones. +- **Editorial Cleanliness:** Utilitarian UI structure inspired by contemporary developer environments and elite knowledge bases, balancing data density with breathable information hierarchies. + +## Colors + +The palette is engineered specifically for contrast compliance and reduced ocular fatigue in dark environments. + +### Role Assignments +- **Canvas Base (`#0B0F19`):** Deep obsidian abyss used exclusively for root canvas backdrops. +- **Surface Elevation 1 (`#111827`):** Slate surface for primary panels, module drawers, and main container cards. +- **Surface Elevation 2 (`#1F2937`):** Elevated utility surfaces, hover interactions, dropdown menus, and active rows. +- **Borders & Dividers (`#374151`):** Structural delineation ensuring distinct separation without harsh luminance. +- **Primary Indigo (`#6366F1` / `#4F46E5`):** Key interactive focal points, primary action triggers, and primary progress indicators. +- **Secondary Cyan (`#06B6D4`):** Live session indicators, active telemetry, code highlights, and granular metric progress. +- **Tertiary Emerald (`#10B981`):** Module completion badges, passing test scores, and positive system feedback. +- **Text Primary (`#F9FAFB`):** 98% brightness neutral for instant legibility in body copy and core headings. +- **Text Muted (`#9CA3AF`):** Subtext, metadata tags, syllabus timestamps, and secondary captions. + +## Typography + +Typography relies entirely on **Inter** to ensure maximum typographic neutrality, precision, and tall x-height clarity. Numerical tracking is balanced with tabular figures (`tnum`) across gradebooks, timestamps, and progress percentages. + +### Hierarchical Usage +- **Display & Headings:** Tighter negative tracking (`-0.02em` to `-0.01em`) provides crisp, structural presence for course titles and dashboard metrics. +- **Body:** Standard tracking with relaxed leading (`1.6` multiplier) prevents visual crowding across technical documentation, code explanations, and reading units. +- **Labels & Microcopy:** Positive letter-spacing applied exclusively to all-caps indicators (`label-sm`), such as prerequisites, module categories, and dynamic status tokens. + +## Layout & Spacing + +The layout is built on an adaptive 12-column fluid grid tailored for dashboard analytics, video-to-notes split screens, and modular curriculum sidebars. + +### Grid & Breakpoints +- **Desktop (≥1280px):** 12 columns, 24px (`1.5rem`) gutters, 32px (`2rem`) margins. Allows fixed 280px navigation rail with flexible multi-pane learning panels. +- **Tablet (768px - 1279px):** 8 columns, 16px (`1rem`) gutters, 24px (`1.5rem`) margins. Navigation shifts to a collapsible off-canvas drawer; video and curriculum switch to stacked flex layout. +- **Mobile (<768px):** 4 columns, 16px (`1rem`) gutters, 16px (`1rem`) margins. Full width card stacking with sticky bottom progress controls. + +### Density Rhythm +A strict 4px/8px incremental rhythm governs all component interiors: +- Compact data tables and code modules use `space-xs` (4px) and `space-sm` (8px). +- General forms and card paddings apply `space-md` (16px) and `space-lg` (24px). +- Section breaks between independent curriculum blocks use `space-xl` (32px). + +## Elevation & Depth + +Visual hierarchy does not rely on intense blur dropshadows, which generate mud on dark backgrounds. Instead, depth is achieved through **tonal layering**, **specular edge highlights**, and **micro-glow accents**. + +### Elevation Stack +- **Level 0 (Canvas Base):** Solid `#0B0F19`. No borders or elevation. +- **Level 1 (Card & Module Layer):** Solid `#111827` framed by a 1px continuous border of `#374151`. +- **Level 2 (Dropdowns, Overlays, Active Panels):** Solid `#1F2937` with a 1px border of `rgba(99, 102, 241, 0.25)` and a subtle ambient shadow: `0 10px 25px -5px rgba(0, 0, 0, 0.60), 0 8px 10px -6px rgba(0, 0, 0, 0.50)`. +- **Level 3 (Modals & Command Palettes):** Layered above `#0B0F19` with a 60% opacity backdrop blur (`backdrop-filter: blur(12px)`), framed with a prominent border of `#4B5563`. + +### Interactive Illumination +Interactive elements receive a subtle, directional glow upon focus and hover: +- Interactive cards elevate on hover using an electric border transition from `#374151` to `rgba(99, 102, 241, 0.5)` alongside an ambient indigo bloom: `box-shadow: 0 0 20px -5px rgba(99, 102, 241, 0.15)`. + +## Shapes + +The design system implements balanced geometric softening. Core cards utilize `rounded-xl` (1.5rem / 24px) to balance technical precision with high-end digital polish. + +### Shape Hierarchy +- **Standard Controls (Inputs, Buttons, Badges):** 8px (`0.5rem`) radius for sharp, dependable affordance. +- **Cards & Data Modules:** 16px to 24px (`1rem` to `1.5rem` / `rounded-xl`) radius to enclose complex information chunks gracefully. +- **System Badges & Avatar Containers:** Fully pill-shaped (`9999px`) for quick-scan biometric and enrollment tags. + +## Components + +### Buttons +- **Primary:** Background `#6366F1`, text `#FFFFFF`, font `label-lg`. On hover: `#4F46E5` with subtle box-shadow bloom `0 0 16px rgba(99, 102, 241, 0.35)`. +- **Secondary / Ghost:** Background `transparent`, border 1px solid `#374151`, text `#F9FAFB`. On hover: background `#1F2937`, border `#4B5563`. +- **Destructive:** Background `rgba(239, 68, 68, 0.1)`, border 1px solid `rgba(239, 68, 68, 0.3)`, text `#EF4444`. + +### Cards & Lesson Units +- **Container:** Background `#111827`, border 1px solid `#374151`, border-radius `1.5rem` (`rounded-xl`), interior padding `space-lg` (24px). +- **Interactive State:** Hover produces a smooth 150ms transition shifting border to `rgba(99, 102, 241, 0.45)` and translates Y by -2px. + +### Progress Trackers & Metric Bars +- **Track Base:** Height 6px to 8px, background `#1F2937`, border-radius 9999px. +- **Indicator Fill:** High-contrast gradient or solid `#06B6D4` (Cyan) for in-flight tasks; `#10B981` (Emerald) when reached 100%. Optional electric shimmer effect during active background asset compilation. + +### Badges & Status Chips +- **In Progress:** Background `rgba(6, 182, 212, 0.1)`, border 1px solid `rgba(6, 182, 212, 0.3)`, text `#06B6D4`. +- **Completed:** Background `rgba(16, 185, 129, 0.1)`, border 1px solid `rgba(16, 185, 129, 0.3)`, text `#10B981`. +- **Prerequisite / Locked:** Background `rgba(55, 65, 81, 0.5)`, border 1px solid `#374151`, text `#9CA3AF`. + +### Input Fields & Search Bars +- **Default:** Background `#0B0F19`, border 1px solid `#374151`, text `#F9FAFB`, placeholder `#6B7280`, radius 8px, padding 10px 14px. +- **Focus:** Border shifts to `#6366F1`, outline 2px solid `rgba(99, 102, 241, 0.2)`. + +### Lists & Syllabus Trees +- **Row Architecture:** Flex layout with bottom divider `#1F2937`. +- **Active Lesson Item:** Background `rgba(99, 102, 241, 0.08)`, border-left 3px solid `#6366F1`, text `#F9FAFB` with font `label-lg`. +- **Checkboxes:** 18px square, background `#0B0F19`, border 1.5px solid `#4B5563`, radius 4px. Checked state transitions to solid `#6366F1` background with white checkmark icon. \ No newline at end of file diff --git a/des/technical_obsidian/DESIGN.md b/des/technical_obsidian/DESIGN.md new file mode 100644 index 0000000..180dc4d --- /dev/null +++ b/des/technical_obsidian/DESIGN.md @@ -0,0 +1,264 @@ +--- +name: Technical Obsidian +colors: + surface: '#11131b' + surface-dim: '#11131b' + surface-bright: '#373942' + surface-container-lowest: '#0c0e16' + surface-container-low: '#191b23' + surface-container: '#1d1f27' + surface-container-high: '#282a32' + surface-container-highest: '#32343d' + on-surface: '#e1e2ed' + on-surface-variant: '#c3c6d7' + inverse-surface: '#e1e2ed' + inverse-on-surface: '#2e3039' + outline: '#8d90a0' + outline-variant: '#434655' + surface-tint: '#b4c5ff' + primary: '#b4c5ff' + on-primary: '#002a78' + primary-container: '#2563eb' + on-primary-container: '#eeefff' + inverse-primary: '#0053db' + secondary: '#6bd8cb' + on-secondary: '#003732' + secondary-container: '#29a195' + on-secondary-container: '#00302b' + tertiary: '#ffb596' + on-tertiary: '#581e00' + tertiary-container: '#bc4800' + on-tertiary-container: '#ffede6' + error: '#ffb4ab' + on-error: '#690005' + error-container: '#93000a' + on-error-container: '#ffdad6' + primary-fixed: '#dbe1ff' + primary-fixed-dim: '#b4c5ff' + on-primary-fixed: '#00174b' + on-primary-fixed-variant: '#003ea8' + secondary-fixed: '#89f5e7' + secondary-fixed-dim: '#6bd8cb' + on-secondary-fixed: '#00201d' + on-secondary-fixed-variant: '#005049' + tertiary-fixed: '#ffdbcd' + tertiary-fixed-dim: '#ffb596' + on-tertiary-fixed: '#360f00' + on-tertiary-fixed-variant: '#7d2d00' + background: '#11131b' + on-background: '#e1e2ed' + surface-variant: '#32343d' + canvas-base: '#0B0F17' + surface-subtle: '#111827' + surface-panel: '#182234' + surface-raised: '#1E293B' + border-hairline: '#1E293B' + border-active: '#334155' + text-primary: '#F1F5F9' + text-secondary: '#94A3B8' + text-faint: '#64748B' + accent-blue-vibrant: '#3B82F6' + status-emerald: '#10B981' + status-amber: '#F59E0B' + status-rose: '#F43F5E' +typography: + display-hero: + fontFamily: Space Grotesk + fontSize: 44px + fontWeight: '600' + lineHeight: 52px + letterSpacing: -0.03em + display-hero-mobile: + fontFamily: Space Grotesk + fontSize: 32px + fontWeight: '600' + lineHeight: 40px + letterSpacing: -0.02em + headline-lg: + fontFamily: Space Grotesk + fontSize: 26px + fontWeight: '600' + lineHeight: 34px + letterSpacing: -0.02em + headline-md: + fontFamily: Space Grotesk + fontSize: 20px + fontWeight: '600' + lineHeight: 28px + letterSpacing: -0.01em + headline-sm: + fontFamily: Space Grotesk + fontSize: 16px + fontWeight: '600' + lineHeight: 24px + letterSpacing: 0em + body-lead: + fontFamily: Plus Jakarta Sans + fontSize: 16px + fontWeight: '400' + lineHeight: 26px + body-default: + fontFamily: Plus Jakarta Sans + fontSize: 14px + fontWeight: '400' + lineHeight: 22px + body-compact: + fontFamily: Plus Jakarta Sans + fontSize: 13px + fontWeight: '400' + lineHeight: 20px + label-ui: + fontFamily: Plus Jakarta Sans + fontSize: 13px + fontWeight: '500' + lineHeight: 18px + code-base: + fontFamily: JetBrains Mono + fontSize: 13px + fontWeight: '400' + lineHeight: 20px + meta-tag: + fontFamily: JetBrains Mono + fontSize: 11px + fontWeight: '500' + lineHeight: 16px + letterSpacing: 0.04em + eyebrow-caps: + fontFamily: JetBrains Mono + fontSize: 10px + fontWeight: '600' + lineHeight: 14px + letterSpacing: 0.15em +rounded: + sm: 0.125rem + DEFAULT: 0.25rem + md: 0.375rem + lg: 0.5rem + xl: 0.75rem + full: 9999px +spacing: + gutter: 1rem + gutter-desktop: 1.5rem + margin: 1rem + margin-tablet: 1.5rem + margin-desktop: 2rem + space-xs: 0.25rem + space-sm: 0.5rem + space-md: 1rem + space-lg: 1.5rem + space-xl: 2rem +--- + +## Brand & Style + +This design system is engineered for high-density, analytical technical environments, LMS interfaces, and administrative data planes. Built with rigorous restraint, it treats software as precision tooling rather than decorative theater. + +### Core Tenets +- **Elimination of Synthetic Clichés:** Strictly prohibits AI-aesthetic markers: purple-to-blue gradients, electric violet glow rings, floating glassmorphism panes, and arbitrary card-in-card enclosures. +- **Deep Slate & Tinted Minerals:** Built on graphite and tinted midnight slate tones (`#0B0F17`, `#111827`, `#1E293B`). Pure absolute black (`#000000`) is banned to eliminate excessive contrast fatigue, while glare is avoided entirely. +- **Instrumental Density:** UI surfaces echo high-end developer terminals, database explorers, and editorial command decks. Content hierarchy is achieved through alignment, typographic weight, and hairlines rather than heavy drop shadows or rounded padding bubbles. +- **Audience:** Built for software engineers, operations researchers, curriculum architects, and technical administrators who spend uninterrupted hours parsing code, data structures, and systemic logs. + +## Colors + +The color palette is built on deep slate neutrals, high-contrast text, and single-purpose semantic accents. + +### Neutral Ramp (Slate & Midnight) +- **Canvas Base (`#0B0F17`):** The root page ground. Non-reflective, deeply mineral, preventing glare. +- **Surface Subtle (`#111827`):** Inset table wells, terminal panes, and row-level backgrounds. +- **Surface Panel (`#182234`):** Primary operational tiles, sidebars, and command panels. +- **Surface Raised (`#1E293B`):** Interactive utility rows, dropdown menus, context controls. +- **Border Hairline (`#1E293B`):** Structural 1px division rules. +- **Border Active (`#334155`):** Focused states, active headers, table bounding edges. + +### Brand & Functional Roles +- **Technical Cobalt (`#2563EB` / `#3B82F6`):** Primary interactive CTA elements, selected row indicators, and focused inputs. Always exceeds WCAG AAA/AA 4.5:1 against slate backgrounds. +- **Verdigris Secondary (`#0D9488`):** Deep secondary state anchor used for telemetry metadata, secondary filters, and operational counters. +- **Functional Semantics:** + - `status-emerald` (`#10B981`): Verified, passed tests, successfully compiled. + - `status-amber` (`#F59E0B`): Pending manual review, non-blocking warning, build running. + - `status-rose` (`#F43F5E`): Overdue items, syntax error, failed pipeline, critical blocker. + +Color is functional: no colored glow shadows or gradient fills are allowed. + +## Typography + +Typography pairs geometric clarity with utilitarian monospace precision, eliminating generic UI type defaults. + +### Type Pairings +- **Space Grotesk (Display & Section Headers):** Delivers clean technical architecture to titles, modal headers, and summary statistics. Negative tracking (`-0.03em` to `-0.01em`) provides structured anchor points. +- **Plus Jakarta Sans (UI Chrome & Prose Content):** Optimally balanced geometric humanist sans for high-readability body copy, syllabus manifests, notes, and form controls. +- **JetBrains Mono (System Telemetry & Data):** Reserved for technical data: model hashes, execution runtimes, commit refs, student IDs, status tokens, and numerical tables. + +### Rules of Application +1. **Numeric Tabular Alignment:** All tabular views, grade listings, and metric counts must enforce `font-variant-numeric: tabular-nums`. +2. **Eyebrow Caps:** Monospace labels sized at 10px or 11px must be written in uppercase with tracked letterforms (`letter-spacing: 0.15em`). Never apply this to full sentences. +3. **Leading Allowance:** Body text on dark slate surfaces must maintain loose leading (minimum 1.55 multiplier) to maintain legibility during sustained reading. + +## Layout & Spacing + +The layout is built on a 12-column grid designed for data-heavy administrative surfaces, documentation sidebars, split-screen code runners, and dashboard tables. + +### Grid & Density Structure +- **No Container Nesting:** Avoid wrapping elements in redundant containers (e.g. cards inside cards). Group items using flat 1px hairlines, tabular rows, or alternating background tints. +- **Horizontal & Vertical Rhythm:** + - `space-xs` (4px) and `space-sm` (8px): Dense data tables, status chip margins, input field inner padding. + - `space-md` (16px): Standard gap between data rows, breadcrumbs, and toolbars. + - `space-lg` (24px): Boundary padding for major dashboard panels. + - `space-xl` (32px): Major vertical section separation. + +### Screen Adaptations +- **Desktop (≥1280px):** 12 columns, 24px gutters, max layout container width 1440px. Fixed 240px or 280px sidebar navigation with flexible content space. +- **Tablet (768px - 1279px):** 8 columns, 16px gutters, 24px margins. Navigation shifts to a compact icon strip or off-canvas drawer. +- **Mobile (<768px):** 4 columns, 16px gutters, 16px margins. Full-width panel stacking with direct access to primary action bars. + +## Elevation & Depth + +Depth is defined through surface value shifts, hairline borders, and strict planar elevation rather than soft diffused blurs or neon cast lights. + +### Principles of Depth +- **Zero Cast Shadow on Flat Canvas:** Elements sitting on the root canvas avoid heavy drop shadows. They delineate via a 1px hairline border (`#1E293B`) or a value shift (`#111827`). +- **No Electric or Colored Glow:** Ambient shadows must never use primary blue or accent tints. Glow effects are excluded entirely. +- **Structural Elevation Tiers:** + - **Tier 0 (Root Page Base):** `#0B0F17`. + - **Tier 1 (Surface Panel):** `#182234` with 1px border `#1E293B`. Used for dashboard widgets, code viewers, and content groups. + - **Tier 2 (Popovers, Dropdowns, Command Menus):** `#1E293B` with 1px border `#334155` and a tight neutral shadow: `box-shadow: 0 12px 24px -4px rgba(0, 0, 0, 0.5)`. + - **Tier 3 (Modals & Focus Dialogs):** `#111827` surface with a crisp 1px `#334155` border, suspended over a `#0B0F17` backdrop at 80% opacity (`backdrop-filter: blur(4px)`). + +## Shapes + +The design system uses a strict, compact corner radius (`roundedness: 1`). Large circular radii and pill-shaped container cards are replaced with sharp, engineered corners that maximize usable content space. + +### Radius Architecture +- **Buttons, Inputs, Controls:** `4px` (`0.25rem`) for a clean, instrument-like feel. +- **Panels, Modals, Bounded Frames:** `8px` (`0.5rem`) maximum. Sharp boundary containment without soft bulbous edges. +- **Code Snippets, Badges, Inline Code:** `3px` or `4px` for tight wrapping around monospace glyphs. +- **Avatar & Biometric Status:** Standard circle (`9999px`) allowed exclusively for user portraits and binary live-status indicators. + +## Components + +### Buttons +- **Primary:** Solid `#2563EB`, text `#FFFFFF`, font `label-ui` (weight 500), border 1px solid `#3B82F6`, border-radius 4px, height 36px (dense: 32px), padding 0 14px. On hover: `#1D4ED8`. No colored drop-shadow glow. +- **Secondary / Ghost:** Background `transparent`, border 1px solid `#334155`, text `#F1F5F9`. On hover: background `#1E293B`, border `#475569`. +- **Destructive:** Background `transparent`, border 1px solid `#F43F5E`, text `#F43F5E`. On hover: background `rgba(244, 63, 94, 0.1)`. +- **Focused State:** 2px offset ring in `#3B82F6` (offset background `#0B0F17`). + +### Input Fields & Controls +- **Text Inputs:** Background `#0B0F17`, border 1px solid `#334155`, text `#F1F5F9`, placeholder `#64748B`, radius 4px, padding 8px 12px, font `body-default`. On focus: border `#3B82F6`, outline none. +- **Checkboxes & Radios:** 16px square/circle, background `#0B0F17`, border 1px solid `#475569`, radius 3px. Checked: background `#2563EB`, border `#2563EB` with white checkmark icon. + +### Data Tables & List Views +- **Header:** Background `#111827`, border-bottom 1px solid `#334155`, text `#94A3B8`, font `eyebrow-caps`, padding 8px 12px. +- **Rows:** Background `#182234`, border-bottom 1px solid `#1E293B`, text `#F1F5F9`, font `body-compact`. +- **Hover/Selected State:** Hover background `#1E293B`. Selected row adds a left accent line: `border-left: 2px solid #2563EB`. + +### Status Badges & Chips +- **Structure:** Height 22px, padding 2px 8px, border-radius 4px, font `meta-tag`. +- **Passed / Verified:** Background `rgba(16, 185, 129, 0.1)`, border 1px solid `rgba(16, 185, 129, 0.3)`, text `#10B981`. +- **Pending / In Review:** Background `rgba(245, 158, 11, 0.1)`, border 1px solid `rgba(245, 158, 11, 0.3)`, text `#F59E0B`. +- **Failed / Action Required:** Background `rgba(244, 63, 94, 0.1)`, border 1px solid `rgba(244, 63, 94, 0.3)`, text `#F43F5E`. +- **Neutral / Draft:** Background `rgba(148, 163, 184, 0.1)`, border 1px solid `#334155`, text `#94A3B8`. + +### Panels & Containers (Bento Grids) +- **Container Structure:** Flat `#182234` surface, framed by 1px solid `#1E293B`. No nested sub-cards. Sub-sections within a panel are divided with clean 1px hairline horizontal or vertical dividers (`#1E293B`). +- **Headers:** Separated by a 1px line, title in `headline-sm` with optional monospace index notation (`01`, `02`). \ No newline at end of file diff --git a/lmsege/lms/static/css/unfold_custom.css b/lmsege/lms/static/css/unfold_custom.css new file mode 100644 index 0000000..5cc0b0b --- /dev/null +++ b/lmsege/lms/static/css/unfold_custom.css @@ -0,0 +1,82 @@ +@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Plus+Jakarta+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap'); + +/* Apply custom fonts to Unfold */ +:root, [data-theme="dark"], [data-theme="light"] { + --font-sans: 'Plus Jakarta Sans', sans-serif; + --font-mono: 'JetBrains Mono', monospace; +} + +/* Override all headers and headings with Space Grotesk */ +h1, h2, h3, h4, h5, h6, +.font-heading, +.font-bold, +.font-semibold { + font-family: 'Space Grotesk', sans-serif !important; +} + +/* Body font override just to be safe */ +body { + font-family: 'Plus Jakarta Sans', sans-serif !important; +} + +/* Custom Scrollbars from the design */ +::-webkit-scrollbar { + width: 6px; + height: 6px; +} +::-webkit-scrollbar-track { + background: #11131b; +} +::-webkit-scrollbar-thumb { + background: #2a2d39; + border-radius: 2px; +} +::-webkit-scrollbar-thumb:hover { + background: #3b4052; +} + +/* Specific overrides for Unfold backgrounds in dark mode to perfectly match the design */ +html[data-theme="dark"] body { + background-color: #0b0f17 !important; +} + +html[data-theme="dark"] aside, +html[data-theme="dark"] header { + background-color: #11131b !important; + border-color: #2a2d39 !important; +} + +/* Cards and table backgrounds */ +html[data-theme="dark"] .bg-white { + background-color: #191b23 !important; + border-color: #2a2d39 !important; +} + +html[data-theme="dark"] .bg-gray-50 { + background-color: #11131b !important; + border-color: #2a2d39 !important; +} + +html[data-theme="dark"] .bg-gray-100 { + background-color: #12141c !important; +} + +html[data-theme="dark"] input, +html[data-theme="dark"] textarea, +html[data-theme="dark"] select { + background-color: #12141c !important; + border-color: #2a2d39 !important; +} + +html[data-theme="dark"] .border-gray-200, +html[data-theme="dark"] .border-gray-300, +html[data-theme="dark"] .border-gray-700, +html[data-theme="dark"] .border-gray-800 { + border-color: #2a2d39 !important; +} + +/* Submit row at bottom */ +html[data-theme="dark"] #submit-row { + background-color: #11131b !important; + border-color: #2a2d39 !important; +} diff --git a/lmsege/lms/utils.py b/lmsege/lms/utils.py new file mode 100644 index 0000000..a27d91b --- /dev/null +++ b/lmsege/lms/utils.py @@ -0,0 +1,5 @@ +def environment_callback(request): + return [ + "Окружение: Prod v5.1", + "primary", + ] diff --git a/lmsege/lmsege/settings.py b/lmsege/lmsege/settings.py index 6da59d3..83bcd93 100644 --- a/lmsege/lmsege/settings.py +++ b/lmsege/lmsege/settings.py @@ -60,6 +60,10 @@ UNFOLD = { "SITE_TITLE": "ЕГЭ LMS Admin", "SITE_HEADER": "ЕГЭ LMS", "SITE_ICON": "school", + "ENVIRONMENT": "lms.utils.environment_callback", + "STYLES": [ + lambda request: "/static/css/unfold_custom.css", + ], "COLORS": { "primary": { "50": "#eff6ff",