diff --git a/web/src/main/resources/static/css/app.css b/web/src/main/resources/static/css/app.css index 5e48192..3307f3a 100644 --- a/web/src/main/resources/static/css/app.css +++ b/web/src/main/resources/static/css/app.css @@ -20,8 +20,8 @@ body { --c-surface: #ffffff; --c-text: #131316; --c-text-muted: #74747c; - --c-text-link: #131316; - --c-text-link-hover: #7a2333; + --c-text-link: #7a2333; + --c-text-link-hover: #9d2b3c; --c-border: #e6e6e9; --c-border-strong: #d4d4da; --c-accent: #7a2333; @@ -47,8 +47,8 @@ body { --c-surface: #17181d; --c-text: #e8e9ec; --c-text-muted: #9a9ba4; - --c-text-link: #e8e9ec; - --c-text-link-hover: #d98b98; + --c-text-link: #d98b98; + --c-text-link-hover: #f0b9c2; --c-border: #26272e; --c-border-strong: #34353d; --c-accent: #a64d5f; @@ -65,8 +65,8 @@ body { --c-tone-neu: #9a9ba4; } -a { color: var(--c-text-link); text-decoration: none; } -a:not(.btn):hover { color: var(--c-text-link-hover); } +a { color: var(--c-accent); text-decoration: none; } +a:not(.btn):hover { color: var(--c-accent-hover); } /* Атрибут hidden должен скрывать элемент даже если у него display из класса */ [hidden] { display: none !important; } @@ -87,9 +87,9 @@ a:not(.btn):hover { color: var(--c-text-link-hover); } /* Nav */ .nav { display: flex; align-items: center; gap: 1.125rem; flex: 1 1 auto; flex-wrap: wrap; font-size: 0.84375rem; } -.nav-link { color: var(--c-text-muted); text-decoration: none; font-weight: 500; } -.nav-link:hover { color: var(--c-text); } -.nav-link.active { color: var(--c-accent); } +.nav-link { color: var(--c-accent); text-decoration: none; font-weight: 500; } +.nav-link:hover { color: var(--c-accent-hover); } +.nav-link.active { color: var(--c-accent); font-weight: 700; } .nav-sep { color: var(--c-text-muted); } .logo { font-size: 1rem; font-weight: 700; color: var(--c-text); text-decoration: none; letter-spacing: -0.01em; } .logo b { color: var(--c-accent); } @@ -139,6 +139,37 @@ p { margin-top: 0; } .label { display: block; margin-bottom: 0.25rem; font-size: 0.875rem; font-weight: 500; } .hint { margin-top: 0.25rem; font-size: 0.75rem; color: var(--c-text-muted); } + +/* ---- Icons: SVG-файлы из /icons, подключаются CSS-масками (цвет = currentColor) ---- */ +.ico { + display: inline-block; flex: 0 0 auto; + background-color: currentColor; + -webkit-mask-position: center; mask-position: center; + -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; + -webkit-mask-size: contain; mask-size: contain; +} +.ico-eye-open { -webkit-mask-image: url('../icons/eye-open.svg'); mask-image: url('../icons/eye-open.svg'); } +.ico-eye-closed { -webkit-mask-image: url('../icons/eye-closed.svg'); mask-image: url('../icons/eye-closed.svg'); } +.ico-pencil { -webkit-mask-image: url('../icons/pencil.svg'); mask-image: url('../icons/pencil.svg'); } +.ico-hand { -webkit-mask-image: url('../icons/hand.svg'); mask-image: url('../icons/hand.svg'); } +.ico-trash { -webkit-mask-image: url('../icons/trash.svg'); mask-image: url('../icons/trash.svg'); } +.ico-menu { -webkit-mask-image: url('../icons/menu.svg'); mask-image: url('../icons/menu.svg'); } +.ico-chevron-down { -webkit-mask-image: url('../icons/chevron-down.svg'); mask-image: url('../icons/chevron-down.svg'); } +.ico-theme { -webkit-mask-image: url('../icons/theme.svg'); mask-image: url('../icons/theme.svg'); } +.ico-md-bold { -webkit-mask-image: url('../icons/md-bold.svg'); mask-image: url('../icons/md-bold.svg'); } +.ico-md-italic { -webkit-mask-image: url('../icons/md-italic.svg'); mask-image: url('../icons/md-italic.svg'); } +.ico-md-h2 { -webkit-mask-image: url('../icons/md-h2.svg'); mask-image: url('../icons/md-h2.svg'); } +.ico-md-ul { -webkit-mask-image: url('../icons/md-ul.svg'); mask-image: url('../icons/md-ul.svg'); } +.ico-md-ol { -webkit-mask-image: url('../icons/md-ol.svg'); mask-image: url('../icons/md-ol.svg'); } +.ico-md-quote { -webkit-mask-image: url('../icons/md-quote.svg'); mask-image: url('../icons/md-quote.svg'); } +.ico-md-link { -webkit-mask-image: url('../icons/md-link.svg'); mask-image: url('../icons/md-link.svg'); } +.ico-md-code { -webkit-mask-image: url('../icons/md-code.svg'); mask-image: url('../icons/md-code.svg'); } +.ico-md-codeblock { -webkit-mask-image: url('../icons/md-codeblock.svg'); mask-image: url('../icons/md-codeblock.svg'); } +.ico-md-table { -webkit-mask-image: url('../icons/md-table.svg'); mask-image: url('../icons/md-table.svg'); } +.ico-md-figure { -webkit-mask-image: url('../icons/md-figure.svg'); mask-image: url('../icons/md-figure.svg'); } +.ico-md-video { -webkit-mask-image: url('../icons/md-video.svg'); mask-image: url('../icons/md-video.svg'); } +.ico-md-spoiler { -webkit-mask-image: url('../icons/md-spoiler.svg'); mask-image: url('../icons/md-spoiler.svg'); } + /* Cards */ .card { border-radius: var(--radius-lg); background: var(--c-surface); border: 1px solid var(--c-border); } .card-flush { border-radius: var(--radius-lg); background: var(--c-surface); border: 1px solid var(--c-border); padding: 0; overflow: hidden; } @@ -342,7 +373,7 @@ html.modal-open body { .md-body pre { background: var(--c-bg); border: 1px solid var(--c-border); border-radius: var(--radius); padding: 0.75rem 1rem; overflow-x: auto; font-size: 0.8125rem; } .md-body code { font-family: monospace; } /* Ссылки в учебных материалах — акцентные, с подчёркиванием: их видно в тексте */ -.md-body a { color: var(--c-accent); text-decoration: underline; text-underline-offset: 2px; } +.md-body a { color: var(--c-accent); text-decoration: none; } .md-body a:hover { color: var(--c-accent-hover); } .md-body details.spoiler { border: 1px solid var(--c-border); border-radius: var(--radius); padding: 0.5rem 0.75rem; margin: 0.5rem 0; } .md-body details.spoiler summary { cursor: pointer; font-weight: 500; color: var(--c-accent); } @@ -504,12 +535,10 @@ dialog.modal.modal-lg .modal-body { max-height: 88vh; min-height: 62vh; } background: none; cursor: pointer; color: var(--c-text-muted); } .sub-toggle:hover { color: var(--c-text); } -.sub-arrow { - display: block; flex: 0 0 auto; width: 8px; height: 8px; - border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; - transform: rotate(-135deg); transition: transform 0.2s; -} -.sub-acc.collapsed .sub-arrow { transform: rotate(45deg); } +.sub-arrow .ico { width: 0.75rem; height: 0.75rem; } +.sub-arrow { transform: rotate(0deg); transition: transform 0.2s; } +.sub-acc.collapsed .sub-arrow { transform: rotate(0deg); } +.sub-acc:not(.collapsed) .sub-arrow { transform: rotate(180deg); } .section-body { padding-bottom: 0.4rem; } /* ---- Матрица группы и карточки защиты ---- */ @@ -596,11 +625,9 @@ dialog.modal.modal-lg .modal-body { max-height: 88vh; min-height: 62vh; } .actions-col { display: inline-flex; flex-direction: column; gap: 0.35rem; align-items: stretch; min-width: 6.5rem; } .actions-col .inline-form { display: block; width: 100%; } .actions-col .btn { display: block; width: 100%; text-align: center; } -/* Монохромные SVG-иконки в ячейках матрицы (защита, оценка) */ +/* Иконки — SVG-файлы из /icons через CSS-маски: цвет наследуется от текста */ .cell-ico { width: 0.95rem; height: 0.95rem; display: block; - fill: none; stroke: currentColor; stroke-width: 2; - stroke-linecap: round; stroke-linejoin: round; } /* tablekit: сортируемые таблицы и поиск */ @@ -683,8 +710,7 @@ th.th-filterable { padding-bottom: 0.35rem; } .md-btn:active { transform: translateY(1px); } .md-btn:focus-visible { outline: 2px solid var(--c-text-link); outline-offset: 1px; } .md-ico { - width: 1.15rem; height: 1.15rem; fill: none; stroke: currentColor; - stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; + width: 1.15rem; height: 1.15rem; } .md-sep { width: 1px; align-self: stretch; margin: 0.2rem 0.3rem; background: var(--c-border); } .md-editor-head { diff --git a/web/src/main/resources/static/icons/chevron-down.svg b/web/src/main/resources/static/icons/chevron-down.svg new file mode 100644 index 0000000..207e627 --- /dev/null +++ b/web/src/main/resources/static/icons/chevron-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/eye-closed.svg b/web/src/main/resources/static/icons/eye-closed.svg new file mode 100644 index 0000000..0a50d3b --- /dev/null +++ b/web/src/main/resources/static/icons/eye-closed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/eye-open.svg b/web/src/main/resources/static/icons/eye-open.svg new file mode 100644 index 0000000..be2de98 --- /dev/null +++ b/web/src/main/resources/static/icons/eye-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/hand.svg b/web/src/main/resources/static/icons/hand.svg new file mode 100644 index 0000000..045283b --- /dev/null +++ b/web/src/main/resources/static/icons/hand.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-bold.svg b/web/src/main/resources/static/icons/md-bold.svg new file mode 100644 index 0000000..0e54ddd --- /dev/null +++ b/web/src/main/resources/static/icons/md-bold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-code.svg b/web/src/main/resources/static/icons/md-code.svg new file mode 100644 index 0000000..be89e17 --- /dev/null +++ b/web/src/main/resources/static/icons/md-code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-codeblock.svg b/web/src/main/resources/static/icons/md-codeblock.svg new file mode 100644 index 0000000..aeec0af --- /dev/null +++ b/web/src/main/resources/static/icons/md-codeblock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-figure.svg b/web/src/main/resources/static/icons/md-figure.svg new file mode 100644 index 0000000..00773bc --- /dev/null +++ b/web/src/main/resources/static/icons/md-figure.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-h2.svg b/web/src/main/resources/static/icons/md-h2.svg new file mode 100644 index 0000000..736eb99 --- /dev/null +++ b/web/src/main/resources/static/icons/md-h2.svg @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-italic.svg b/web/src/main/resources/static/icons/md-italic.svg new file mode 100644 index 0000000..642cccc --- /dev/null +++ b/web/src/main/resources/static/icons/md-italic.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-link.svg b/web/src/main/resources/static/icons/md-link.svg new file mode 100644 index 0000000..dc0bc18 --- /dev/null +++ b/web/src/main/resources/static/icons/md-link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-ol.svg b/web/src/main/resources/static/icons/md-ol.svg new file mode 100644 index 0000000..35ef220 --- /dev/null +++ b/web/src/main/resources/static/icons/md-ol.svg @@ -0,0 +1 @@ +123 \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-quote.svg b/web/src/main/resources/static/icons/md-quote.svg new file mode 100644 index 0000000..f763bcf --- /dev/null +++ b/web/src/main/resources/static/icons/md-quote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-spoiler.svg b/web/src/main/resources/static/icons/md-spoiler.svg new file mode 100644 index 0000000..95ed6fb --- /dev/null +++ b/web/src/main/resources/static/icons/md-spoiler.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-table.svg b/web/src/main/resources/static/icons/md-table.svg new file mode 100644 index 0000000..4ec3880 --- /dev/null +++ b/web/src/main/resources/static/icons/md-table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-ul.svg b/web/src/main/resources/static/icons/md-ul.svg new file mode 100644 index 0000000..b6c955d --- /dev/null +++ b/web/src/main/resources/static/icons/md-ul.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/md-video.svg b/web/src/main/resources/static/icons/md-video.svg new file mode 100644 index 0000000..0382904 --- /dev/null +++ b/web/src/main/resources/static/icons/md-video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/menu.svg b/web/src/main/resources/static/icons/menu.svg new file mode 100644 index 0000000..3949348 --- /dev/null +++ b/web/src/main/resources/static/icons/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/pencil.svg b/web/src/main/resources/static/icons/pencil.svg new file mode 100644 index 0000000..82e871e --- /dev/null +++ b/web/src/main/resources/static/icons/pencil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/theme.svg b/web/src/main/resources/static/icons/theme.svg new file mode 100644 index 0000000..93dffe0 --- /dev/null +++ b/web/src/main/resources/static/icons/theme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/static/icons/trash.svg b/web/src/main/resources/static/icons/trash.svg new file mode 100644 index 0000000..0562172 --- /dev/null +++ b/web/src/main/resources/static/icons/trash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/src/main/resources/templates/admin/group.html b/web/src/main/resources/templates/admin/group.html index 60a069a..6b262bf 100644 --- a/web/src/main/resources/templates/admin/group.html +++ b/web/src/main/resources/templates/admin/group.html @@ -49,7 +49,7 @@
@@ -61,8 +61,8 @@ th:attr="data-lab=${lab.id},data-count=${pc},data-total=${pub != null ? pub.total : 0},data-all=${all}" th:classappend="${all} ? 'is-all' : (${pc > 0} ? 'is-partial' : 'is-empty')" th:title="${pub == null} ? '' : (${all} ? 'Оценки опубликованы всей группе — нажмите, чтобы скрыть у всех' : (${pc > 0} ? 'Опубликовано ' + ${pc} + ' из ' + ${pub.total} + ' — нажмите, чтобы опубликовать всем' : 'Показать оценки и комментарии всей группе'))"> - - + +
@@ -344,7 +344,7 @@ - + diff --git a/web/src/main/resources/templates/admin/lab.html b/web/src/main/resources/templates/admin/lab.html index 41d92b0..64fe242 100644 --- a/web/src/main/resources/templates/admin/lab.html +++ b/web/src/main/resources/templates/admin/lab.html @@ -33,10 +33,7 @@

Условие лабораторной

@@ -85,10 +82,7 @@
@@ -219,7 +196,7 @@ - + diff --git a/web/src/main/resources/templates/fragments/base.html b/web/src/main/resources/templates/fragments/base.html index 50ad50e..8c2d7f8 100644 --- a/web/src/main/resources/templates/fragments/base.html +++ b/web/src/main/resources/templates/fragments/base.html @@ -15,17 +15,17 @@ - - - - - - - - - - - + + + + + + + + + + +
@@ -48,20 +48,7 @@ Войти
diff --git a/web/src/main/resources/templates/fragments/md-toolbar.html b/web/src/main/resources/templates/fragments/md-toolbar.html index b91ef0f..31259c5 100644 --- a/web/src/main/resources/templates/fragments/md-toolbar.html +++ b/web/src/main/resources/templates/fragments/md-toolbar.html @@ -5,52 +5,52 @@ diff --git a/web/src/main/resources/templates/learn/article.html b/web/src/main/resources/templates/learn/article.html index 0763162..d17aea3 100644 --- a/web/src/main/resources/templates/learn/article.html +++ b/web/src/main/resources/templates/learn/article.html @@ -52,15 +52,15 @@ - - + +
К главе
- +
@@ -124,7 +124,7 @@ - + diff --git a/web/src/main/resources/templates/learn/chapter.html b/web/src/main/resources/templates/learn/chapter.html index 91cfb0e..1463002 100644 --- a/web/src/main/resources/templates/learn/chapter.html +++ b/web/src/main/resources/templates/learn/chapter.html @@ -16,19 +16,19 @@
- +
- - + +
- +
@@ -53,27 +53,27 @@ title="Перетащите мышью: изменить порядок разделов">⠿ Раздел скрыто
- +
- - + +
- +
- +
@@ -96,8 +96,8 @@ - - + + @@ -183,7 +183,7 @@ - + diff --git a/web/src/main/resources/templates/learn/index.html b/web/src/main/resources/templates/learn/index.html index bf093c6..64b3dc3 100644 --- a/web/src/main/resources/templates/learn/index.html +++ b/web/src/main/resources/templates/learn/index.html @@ -32,13 +32,13 @@ - - + + - +
- +
@@ -54,7 +54,7 @@ title="Перетащите мышью: изменить порядок или перенести раздел">⠿ - - + + - - + +
- +
@@ -92,14 +92,14 @@ - - + +
Править
- +
@@ -232,8 +232,8 @@ - - + + diff --git a/web/src/main/resources/templates/learn/section.html b/web/src/main/resources/templates/learn/section.html index 0733149..fb9bef0 100644 --- a/web/src/main/resources/templates/learn/section.html +++ b/web/src/main/resources/templates/learn/section.html @@ -18,20 +18,20 @@
- +
- - + +
- +
- +
@@ -63,8 +63,8 @@ - - + +
@@ -143,7 +143,7 @@ - + diff --git a/web/src/main/resources/templates/student/lab.html b/web/src/main/resources/templates/student/lab.html index 2276ae9..391b995 100644 --- a/web/src/main/resources/templates/student/lab.html +++ b/web/src/main/resources/templates/student/lab.html @@ -107,7 +107,7 @@

Ожидайте преподавателя с проверкой.

- +