«Настройка» в одном стандарте с мастером: раздел — одна карточка, подблоки через разделители, подпись над полем

- Раздел настроек оформлен как шаг мастера: одна карточка (радиус 16), заголовок 21px и вводный текст, вложенные блоки — без своих рамок, через тонкий разделитель; выделенные плашки (ключ не подключён, вход открыт) — класс callout.
- Поля в сетке (почта, Zabbix и др.): подпись над полем, поле во всю колонку — в настройках «Порт [587]» вставал в строку; правило общее для настроек и мастера.
- Текст абзацев 14.5px (пояснения 13.5px) — как в мастере; крупные цветные строки состояния больше не кричат.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-07 01:31:36 +03:00
parent 00e20605f6
commit fb75086db2
2 changed files with 23 additions and 7 deletions
@@ -108,7 +108,7 @@
{{$U := .Users}}{{$A := .Settings.Auth}}
<h1>Пользователи и вход</h1>
<p class="muted">Кто может входить в bj и что ему разрешено. Вход — локальной учётной записью или доменной (Active Directory), роль доменного пользователя назначается по его группам AD.</p>
{{if $U.Open}}<div class="card" style="padding:10px 14px;margin-bottom:8px;background:color-mix(in srgb,var(--warn) 10%,var(--card));display:flex;gap:8px;align-items:center"><span class="dot warn"></span><span><b>Вход пока не требуется:</b> пользователи не созданы. Создайте первого администратора — после этого все страницы потребуют входа.</span></div>{{end}}
{{if $U.Open}}<div class="card callout" style="padding:10px 14px;margin-bottom:8px;background:color-mix(in srgb,var(--warn) 10%,var(--card));display:flex;gap:8px;align-items:center"><span class="dot warn"></span><span><b>Вход пока не требуется:</b> пользователи не созданы. Создайте первого администратора — после этого все страницы потребуют входа.</span></div>{{end}}
<div class="card">
<h2><span class="dot {{if $U.Open}}warn{{else}}ok{{end}}"></span>Роли</h2>
@@ -244,7 +244,7 @@
{{else}}<p class="muted" style="font-size:13px;margin:6px 0 0">Перевыпустили ключ (новый сертификат) или нужен ключ другого контура — <a href="/admin/setup/keywizard">заменить ключ</a>: bj поможет подключить флешку или записать новый ключ из архива.</p>{{end}}
</div>
{{else}}
<div class="card" style="background:var(--accent-weak)">
<div class="card callout" style="background:var(--accent-weak)">
<h2>Ключ организации не подключён</h2>
<p class="muted">Пошаговая установка: флешка с ключом или архив ключа от НРД с паролем → справочник сертификатов → проверка подписи → готово.</p>
<a href="/admin/setup/keywizard" class="btn btn-ok" style="margin-top:10px;display:inline-block">Установить ключ →</a>
+21 -5
View File
@@ -276,15 +276,31 @@ label { font-size:13px; font-weight:500; }
.settings-nav button .ind.err { background:var(--err); }
.settings-section { display:none; }
.settings-section.active { display:block; }
.settings-section > h1 { margin-bottom:18px; font-size:24px; font-weight:700; letter-spacing:-0.015em; }
/* «Настройка» в стиле мастера (07.10.2026): скруглённые карточки, спокойные поля, крупные заголовки */
.settings-section .card { padding:24px 28px 20px; border-radius:16px; }
.settings-section .card > h2:first-child { font-size:17px; font-weight:660; letter-spacing:-0.01em; margin:0 0 6px; }
.settings-section .card > h2:first-child + p.muted { font-size:14px; margin:0 0 14px; }
/* Единый вид «Настройки» и мастера (07.10.2026): раздел настроек устроен как шаг мастера — одна карточка,
заголовок и вводный текст, подблоки через тонкие разделители (не стопка отдельных карточек); поля — подпись
над полем, поле во всю колонку; текст — 14.5px, как в мастере. */
.settings-section.active { background:var(--card); border:1px solid var(--border); border-radius:16px; box-shadow:var(--shadow); padding:28px 32px 24px; }
.settings-section > h1 { font-size:21px; font-weight:680; letter-spacing:-0.015em; margin:0 0 6px; }
.settings-section > h1 + p, .settings-section > h1 + .muted { color:var(--muted); font-size:14.5px !important; margin:0 0 18px !important; max-width:none !important; }
.settings-section .card { border:0; border-top:1px solid var(--border); border-radius:0; box-shadow:none; background:transparent; padding:20px 0 0; margin:20px 0 0; }
.settings-section > h1 + .card, .settings-section > h1 + p + .card, .settings-section > h1 + .muted + .card, .settings-section > h1 + p + p + .card { border-top:0; padding-top:0; margin-top:0; }
.settings-section .card > h2:first-child { font-size:16px; font-weight:650; letter-spacing:-0.005em; margin:0 0 6px; }
.settings-section .card > h2:first-child + p.muted { font-size:13.5px; margin:0 0 12px; }
.settings-section .card .card { padding-top:16px; margin-top:16px; }
/* плашка внутри раздела (ключ не подключён, вход открыт) — остаётся плашкой */
.settings-section .card.callout { border:1px solid color-mix(in srgb, var(--accent) 22%, var(--border)); border-radius:12px; padding:16px 18px; margin:18px 0 0; }
.settings-section > h1 + .card.callout, .settings-section > h1 + p + .card.callout { margin-top:4px; padding-top:16px; border-top:1px solid color-mix(in srgb, var(--accent) 22%, var(--border)); }
.settings-section .card.callout + .card { border-top:0; }
:is(.settings-section, .wiz-card) p { font-size:14.5px; }
:is(.settings-section, .wiz-card) p.muted, :is(.settings-section, .wiz-card) .muted p { font-size:13.5px; }
.settings-section input:not([type=radio]):not([type=checkbox]):not([type=hidden]):not([type=file]):not([type=submit]), .settings-section select, .settings-section textarea { background:var(--card-2) !important; border:1px solid var(--border) !important; border-radius:10px !important; padding:10px 13px !important; font-size:14.5px; color:var(--text); box-sizing:border-box; }
.settings-section input:focus, .settings-section select:focus, .settings-section textarea:focus { background:var(--card) !important; border-color:var(--accent) !important; outline:3px solid var(--accent-weak); }
.settings-section .btn, .settings-section button { border-radius:10px; }
.settings-section input[type=radio], .settings-section input[type=checkbox] { width:auto; }
/* поля в сетке: подпись над полем, поле во всю ширину колонки (иначе «Порт [587]» вставал в строку) */
:is(.settings-section, .wiz-card) .grid > div > label:not(:has(input[type=checkbox], input[type=radio])) { display:block; margin:0; }
:is(.settings-section, .wiz-card) .grid > div > :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]), select, textarea) { display:block; width:100%; box-sizing:border-box; margin-top:5px !important; }
@media (max-width:820px) { .settings-section.active { padding:20px 18px 18px; } }
@media (max-width:820px) {
.settings { grid-template-columns:1fr; }
.settings-nav { flex-direction:row; overflow-x:auto; position:static; padding-bottom:8px; }