GH GambleHub

Dark Mode і візуальний комфорт

1) Навіщо темна тема

Комфорт очей в низькій освітленості, менше відблисків і «світлових спалахів».
Енергія: на OLED/AMOLED темні екрани витрачають менше батареї.
Фокус на даних: акцент на контент, а не на фон.
Очікування користувача: системний прапор'prefers-color-scheme'- стандарт де-факто.

2) Принципи

1. Темно-сірий фон> чистий чорний для UI-поверхонь (краще читаність і градації).
2. Контраст по контенту: не «білим по чорному», а м'які відтінки для довгих текстів.
3. Обережна «світність»: підсвічування/акценти приглушені, але помітні.
4. Глибина ≠ тіні: працюємо світлотою/розмитою тінню, а не різкою контрастною.
5. Доступність: WCAG AA (мінімум), видимий фокус і зрозумілі стани.
6. Системні налаштування первинні: авто-перемикання і «знижений рух».

3) Палітра і токени (приклад)

JSON-токени:
json
{
"mode": "dark",
"color": {
"bg": { "base": "#0E1116", "elev1": "#141821", "elev2": "#1A1F2B", "subtle": "#0B0E13" },
"fg": { "primary": "#E6E8EB", "muted": "#A6AEB8", "inverse": "#11131A" },
"accent": { "primary": "#6EA0FF", "warning": "#FFB547", "critical": "#FF6A6A", "success": "#66D19E" },
"border": { "soft": "#2A2F37", "strong": "#3A4150" },
"chart": { "a": "#6EA0FF", "b": "#66D19E", "c": "#FFB547", "d": "#C58CFF", "e": "#7DD3FC" }
},
"radius": { "sm": 8, "md": 12, "lg": 16 },
"shadow": { "sm": "0 1px 2px rgba(0,0,0,.35)", "md": "0 6px 18px rgba(0,0,0,.45)" }
}
CSS-змінні (спрощено):
css
@media (prefers-color-scheme: dark) {
:root {
--bg-base:#0E1116; --bg-elev1:#141821; --bg-elev2:#1A1F2B;
--fg-primary:#E6E8EB; --fg-muted:#A6AEB8;
--accent:#6EA0FF; --warning:#FFB547; --critical:#FF6A6A; --success:#66D19E;
--bd-soft:#2A2F37; --bd-strong:#3A4150;
}
}
Рекомендації:
  • Акценти в темному режимі на + 8-12% світліші, ніж у світлому.
  • Використовуйте градації сірого (4-5 кроків), уникаючи абсолютної # 000 для великих площ (виняток - AMOLED-режим).

4) Текст і читаність

Основний текст: світло-сірий «#E6E8EB» на «#0E1116» (контраст ~ 12:1).
Вторинний текст: `#A6AEB8`; підказки - ще на крок темніше/прозоріше.
Довге читання: злегка теплі відтінки (зменшують «гало»).
Посилання - акцент + підкреслення за замовчуванням; колір ≠ єдиний носій сенсу.

5) Поверхні, глибина і скло

Elevations: `base` → `elev1` → `elev2`; кожен шар світліше/тепліше на 2-4%.
Тіні - м'які, широкі, з низькою непрозорістю; уникати «світних» обведень.
Транслуцентні панелі (blur) доречні помірно; забезпечте контраст тексту з підкладкою.
Роздільники - напівтонкі межі'--bd-soft'або ледь помітні «хейри».

6) Стани та фокус

Hover: + 2-3% світліше фон; Active: −2 -3% (темніше).
Focus: чітке кільце (наприклад,'outline: 2px solid #6EA0FF; outline-offset: 2px;'), видно і на акцентних кнопках.
Disabled: знижуйте контраст акуратно; не опускайтеся нижче читабельного рівня для тексту.

7) Кнопки, форми і таблиці

Primary: фон «--accent», текст «#0E1116».
Secondary: фон'--bg-elev1', бордер'--bd-strong', текст'--fg-primary'.
Поля вводу: фон'--bg-elev1', при фокусі - бордер акцентний; placeholder тьмяніше, але читаємо.
Таблиці: зебра-фон ледь помітний, виділення рядка при hover - + 2-3% світліше.

8) Ілюстрації, логотипи та фото

Логотипи та піктограми - інверсійні версії на темному; уникайте тонких світлих ліній на насичених фонах.
Фото: додавайте темну маску (40-60%) для контрастних заголовків поверх.
Іконки: єдина товщина, контур + заповнення - за станом, не «отруйні» кольори.

9) Дата-візуалізація в темній темі

Кольори рядів - помірної насиченості; мінімум 5 відмінних тонів.
Сітки і осі - приглушені (альфа 20-30%), підписи -'--fg-muted'.
Анотації/інциденти - яскраві, але читаються; підкреслювати формою/маркером, не тільки кольором.
Порожні дані/лаг - м'які «тумани», а не білі поля.

10) Продуктивність і батарея

На OLED дійсно економить чистий чорний (# 000) - використовуйте в AMOLED-режимі за опцією користувача.
Уникайте суцільних великих світінь/blur на слабких GPU.
Поважайте'prefers-reduced-motion': спрощуйте анімації/переходи.

11) Поведінка і перемикання

За замовчуванням - слідувати'prefers-color-scheme'.
Дайте користувачеві явний перемикач (Light/Dark/System), зберігайте вибір (cookie/localStorage).
При зміні теми - без спалахів: попереднє додавання класу теми до рендера.

Сніпет:
html
<script>
const saved = localStorage. getItem('theme');
const sysDark = window. matchMedia?.('(prefers-color-scheme: dark)'). matches;
document. documentElement. dataset. theme = saved?? (sysDark? 'dark': 'light');
</script>

12) Доступність (A11y)

Контраст тексту ≥ 4. 5:1 (звичайний), ≥ 3:1 (великий).
Не кодуйте стан тільки кольором: використовуйте іконку/патерн/підпис.
Фокус-стилі і клавіатурна навігація - обов'язково.
VoiceOver/TalkBack: ролі, лейбли, черговість таба.

13) Анти-патерни

Абсолютно білий текст на абсолютно чорному тлі на великих площах - «мерехтіння» і втома.
Неонові акценти на темному - «світловий шум».
Тіні високої контрастності («сірий на чорному» з жорстким кордоном).
Прозорий текст на фото без маски.
Зникаючий placeholder (занадто низька альфа).

14) Приклади компонентів

Кнопка

css
.button {
background: var(--accent); color: var(--bg-base);
border-radius: 12px; padding: 10px 16px;
box-shadow: 0 1px 2px rgba(0,0,0,.35);
}
.button:hover { filter: brightness(1. 06); }
.button:active { filter: brightness(.94); }
.button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

Картка

css
.card {
background: var(--bg-elev1); border: 1px solid var(--bd-soft); border-radius: 12px;
box-shadow: 0 6px 18px rgba(0,0,0,.45);
}

15) Тест-план

Освітленість: темна кімната/денне світло/вуличний вечір.
Девайси: OLED і IPS, мобільний/десктоп, різні щільності.
A11y: контраст-чекер, клавіатурний прохід, читабельність placeholder'ів.
Сприйняття: аб-тест «втома очей» і помилки введення вночі.
Перфоманс: RUM-метрики (INP/CLS) після включення темної теми; навантаження GPU (ефекти blur/тіні).

16) Метрики якості

Contrast Violations/1k елементів (мета: → 0).
Complaint Rate на «занадто темно/яскраво».
Night Session Completion (поведінкові метрики за сесіями 22:00–06:00).
INP/CLS p75 в Dark Mode vs Light (не гірше базових).
Opt-in Dark Mode і утримання користувачів, які вибрали тему.

17) Чек-лист запуску

  • Палітра темної теми з 4-5 рівнями поверхонь
  • Контраст тексту/іконок/меж відповідає WCAG AA
  • Видимі фокус-стилі та стани (hover/active/disabled)
  • Логотипи/іконки/фото адаптовані, маски на фото додані
  • Графіки - приглушені сітки, читабельні підписи, не «отруйні» ряди
  • Перемикач Light/Dark/System, збереження вибору без «спалаху»
  • Повага'prefers-color-scheme'і'prefers-reduced-motion '
  • RUM/перф-дашборд, алерти за регресіями

18) План впровадження (3 ітерації)

Ітерація 1 - Фундамент (1-2 тижні)

Палітра/токени, базові поверхні (base/elev1/elev2), текст/межі, кнопки/поля/таблиці, перемикач теми.

Ітерація 2 - Деталізація (3-4 тижні)

Графіки та ілюстрації в темному, маски на фото, фокус/стану, анімації з урахуванням reduced-motion, перф-аудит.

Ітерація 3 - Оптимізація (безперервно)

AMOLED-режим як опція, тонке налаштування контрастів, юзабіліті-тести вночі, RUM-порівняння Light vs Dark, регулярні бренд/UX-аудити.

19) Міні-FAQ

Чи робити чисто чорний фон?
Для UI - краще глибокий темно-сірий; чистий # 000 залишити опцією «AMOLED-режим».

Чи потрібно підвищувати насиченість акцентів?
У темному - зазвичай навпаки злегка освітлюють і зменшують насиченість, щоб не «світилися».

Як бути з зображеннями банерів?
Додавайте темну підкладку/маску, перевіряйте контраст тексту і логотипу.

Підсумок

Темна тема - це не інверсія кольорів, а окремий дизайн-режим: продумана палітра, рівні поверхонь, читаність, коректні стани, адаптовані графіки та медіа, а також повага системних налаштувань. Спирайтеся на токени, контролюйте контраст і перфоманс - і Dark Mode стане зручним, стабільним і красивим інструментом для нічних і денних користувачів.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Telegram
@Gamble_GC
Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.