fix: opaque sticky matrix column and square publish marker

Use solid row hover colors so the sticky student column does not show underlying cells while scrolling. Replace the circular checkbox marker with a square one and bump asset version to 36.
This commit is contained in:
2026-10-20 22:03:50 +03:00
parent f7dc8d7d8b
commit 3827955909
9 changed files with 27 additions and 24 deletions

View File

@@ -41,6 +41,7 @@ body {
--c-text-link-hover: #9d2b3c;
--c-border: #e6e6e9;
--c-border-strong: #d4d4da;
--c-row-hover: #f4f4f5;
--c-accent: #7a2333;
--c-accent-hover: #5f1b28;
--c-accent-soft: #f7edee;
@@ -71,6 +72,7 @@ body {
--c-text-link-hover: #f0b9c2;
--c-border: #26272e;
--c-border-strong: #34353d;
--c-row-hover: #202127;
--c-accent: #a64d5f;
--c-accent-hover: #b86070;
--c-accent-soft: rgba(166, 77, 95, 0.16);
@@ -428,7 +430,7 @@ code.code { padding: 0.125rem 0.5rem; border-radius: var(--radius-xs); font-fami
/* Ячейка матрицы в стиле Б3: вариант и оценка — текстом, подстрока — сдача и защита с точкой */
.cell-stack { display: flex; flex-direction: column; align-items: flex-start; gap: 0.375rem; }
.cell-main { display: flex; align-items: baseline; gap: 0.75rem; flex-wrap: wrap; }
/* Публикация в ячейке — «глаз»-точка: ○ скрыто, ◉ опубликовано (нативный checkbox под капотом) */
/* Публикация в ячейке — квадратный маркер: □ скрыто, ■ опубликовано (нативный checkbox под капотом) */
.pub-toggle {
appearance: none; -webkit-appearance: none;
width: 1rem; height: 1rem; margin: 0; padding: 0; cursor: pointer;
@@ -438,7 +440,7 @@ code.code { padding: 0.125rem 0.5rem; border-radius: var(--radius-xs); font-fami
}
.pub-toggle:checked {
border-color: var(--c-accent);
background: radial-gradient(circle, var(--c-accent) 0 42%, transparent 48%);
background: linear-gradient(var(--c-accent), var(--c-accent)) center / 0.55rem 0.55rem no-repeat;
}
.pub-toggle:focus-visible { outline: 2px solid var(--c-accent); outline-offset: 2px; }
.variant-btn {
@@ -536,8 +538,9 @@ dialog.dlg.dlg-lg .dlg-body { max-height: 88vh; min-height: 62vh; }
background: var(--c-surface); white-space: nowrap;
}
.matrix td { vertical-align: top; padding: 1rem; }
.matrix tbody tr:hover td { background: rgba(19, 19, 22, 0.03); }
[data-theme="dark"] .matrix tbody tr:hover td { background: rgba(232, 233, 236, 0.045); }
/* Непрозрачный фон обязателен: закреплённый столбец не должен просвечивать при прокрутке. */
.matrix tbody tr:hover td { background: var(--c-row-hover); }
.matrix tbody tr:hover td.matrix-sticky { background: var(--c-row-hover); }
.matrix tbody tr:last-child td { border-bottom: none; }
.matrix th.lab-col { min-width: 9.5rem; border-left: 1px solid var(--c-border); }
.matrix td.cell-lab { min-width: 9.5rem; border-left: 1px solid var(--c-border); }

View File

@@ -345,7 +345,7 @@
<div class="dlg-body" id="assign-modal-body"></div>
</dialog>
<script th:src="@{/js/admin-group.js(v='35')}" defer></script>
<script th:src="@{/js/admin-group.js(v='36')}" defer></script>
</div>
</body>
</html>

View File

@@ -196,7 +196,7 @@
</dialog>
</th:block>
</div>
<script th:src="@{/js/admin-lab.js(v='35')}" defer></script>
<script th:src="@{/js/admin-lab.js(v='36')}" defer></script>
</div>
</body>
</html>

View File

@@ -13,22 +13,22 @@
<noscript>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
</noscript>
<link rel="icon" type="image/svg+xml" th:href="@{/favicon.svg(v='35')}">
<link rel="icon" type="image/svg+xml" th:href="@{/favicon.svg(v='36')}">
<!-- v=35: сброс кэша стилей после изменения геометрии; при изменении css поднимать версию -->
<link rel="stylesheet" th:href="@{/css/bootstrap.min.css}">
<link rel="stylesheet" th:href="@{/css/bootstrap-icons.min.css}">
<link rel="stylesheet" th:href="@{/css/app.css(v='35')}">
<link id="hljs-light" rel="stylesheet" th:href="@{/css/hljs-github.css(v='35')}">
<link id="hljs-dark" rel="stylesheet" th:href="@{/css/hljs-github-dark.css(v='35')}" disabled>
<script th:src="@{/js/highlight.min.js(v='35')}" defer></script>
<script th:src="@{/js/table-scroll.js(v='35')}" defer></script>
<script th:src="@{/js/tablekit.js(v='35')}" defer></script>
<link rel="stylesheet" th:href="@{/css/app.css(v='36')}">
<link id="hljs-light" rel="stylesheet" th:href="@{/css/hljs-github.css(v='36')}">
<link id="hljs-dark" rel="stylesheet" th:href="@{/css/hljs-github-dark.css(v='36')}" disabled>
<script th:src="@{/js/highlight.min.js(v='36')}" defer></script>
<script th:src="@{/js/table-scroll.js(v='36')}" defer></script>
<script th:src="@{/js/tablekit.js(v='36')}" defer></script>
<script th:src="@{/js/bootstrap.bundle.min.js}" defer></script>
<script th:src="@{/js/theme-init.js(v='35')}"></script>
<script th:src="@{/js/app.js(v='35')}" defer></script>
<script th:src="@{/js/ui-state.js(v='35')}" defer></script>
<script th:src="@{/js/md-content.js(v='35')}" defer></script>
<script th:src="@{/js/submit-guard.js(v='35')}" defer></script>
<script th:src="@{/js/theme-init.js(v='36')}"></script>
<script th:src="@{/js/app.js(v='36')}" defer></script>
<script th:src="@{/js/ui-state.js(v='36')}" defer></script>
<script th:src="@{/js/md-content.js(v='36')}" defer></script>
<script th:src="@{/js/submit-guard.js(v='36')}" defer></script>
</head>
<body>
<div class="page d-flex flex-column min-vh-100">

View File

@@ -138,7 +138,7 @@
</div>
<script th:src="@{/js/mdeditor.js(v='35')}" defer></script>
<script th:src="@{/js/mdeditor.js(v='36')}" defer></script>
</div>
</body>
</html>

View File

@@ -183,7 +183,7 @@
</div>
</dialog>
<script th:src="@{/js/content-sort.js(v='35')}" defer></script>
<script th:src="@{/js/content-sort.js(v='36')}" defer></script>
</div>
</body>
</html>

View File

@@ -236,8 +236,8 @@
</div>
</dialog>
<script th:src="@{/js/mdeditor.js(v='35')}" defer></script>
<script th:src="@{/js/content-sort.js(v='35')}" defer></script>
<script th:src="@{/js/mdeditor.js(v='36')}" defer></script>
<script th:src="@{/js/content-sort.js(v='36')}" defer></script>
</div>
</body>
</html>

View File

@@ -143,7 +143,7 @@
</div>
</dialog>
<script th:src="@{/js/content-sort.js(v='35')}" defer></script>
<script th:src="@{/js/content-sort.js(v='36')}" defer></script>
</div>
</body>
</html>

View File

@@ -111,7 +111,7 @@
<p class="text-sm text-muted">Ожидайте преподавателя с проверкой.</p>
</div>
</div>
<script th:src="@{/js/defense-timer.js(v='35')}" defer></script>
<script th:src="@{/js/defense-timer.js(v='36')}" defer></script>
</div>
</body>
</html>