UI: новый общий стиль, тёмная/светлая тема, настраиваемая палитра

- styles/main.css: роли цветов (по умолчанию «Индиго»), шкала отступов/скруглений/шрифтов,
  цвета отношений для обеих тем; жёсткие цвета в стилях заменены на роли.
- Палитра: пресеты и личные правки, «Оформление» Авто/День/Ночь, долгое нажатие —
  редактор цветов с экспортом/импортом.
- Каналы: пузыри постов автора, плашки дней, строка «Написать в канал…», «О канале»,
  создание канала с адресом из названия; лента открывается на свежих постах.
- Чаты: плоский список, чипы-фильтры, пузыри, плашки дней; нижняя панель скрыта в переписке.
- Корневые разделы — единая шапка; профиль и чужой профиль — общая карточка;
  настройки, кошелёк, сеансы — меню-списки.
- Нижняя панель: иконки без подписей, бейджи на иконках.
- confirmDialog вместо window.confirm/alert; на телефоне диалоги — шторки снизу.
- docs/UI-Design/ISSUES-for-dev.md — найденные ошибки сервера/UI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
q
2026-09-26 10:05:26 +03:00
co-authored by Claude Opus 5.5
parent 6e5b57fd7c
commit f8900e531a
94 changed files with 3337 additions and 2432 deletions
+21
View File
@@ -18,3 +18,24 @@
.skeleton-line.w-90 { width: 90%; }
@keyframes skeleton-pulse { to { opacity: .4; } }
@media (prefers-reduced-motion: reduce) { .skeleton-line, .toast { animation: none; transition: none; } }
@media (max-width: 599px) {
.modal { place-items: end stretch; padding: 0; }
.modal > .modal-card {
width: 100%;
max-width: 100%;
max-height: calc(100dvh - 48px - env(safe-area-inset-top));
border-width: 1px 0 0;
border-radius: 20px 20px 0 0;
padding-bottom: calc(20px + env(safe-area-inset-bottom));
animation: modal-sheet-in 180ms ease-out;
}
}
@keyframes modal-sheet-in { from { transform: translateY(24px); opacity: 0; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .modal-card { animation: none; } }
/* Общий диалог подтверждения (js/components/confirm-dialog.js). */
.confirm-dialog__card { width: min(100%, 400px); display: grid; gap: 12px; }
.confirm-dialog__text { margin: 0; color: var(--text-secondary); font-size: .9375rem; line-height: 1.375rem; overflow-wrap: anywhere; }
.confirm-dialog__danger { color: #fff; background: var(--danger); }
:root[data-theme='dark'] .confirm-dialog__danger { color: var(--background); }