GH GambleHub

System kolorów i markowe palety

1) Dlaczego sformalizować kolor

Kolor nie jest zbiorem „dobrych odcieni”, ale możliwym do opanowania systemem dla:
  • świadomość marki i spójność wizualna,
  • czytelność i dostępność (WCAG),
  • interfejsy skalowania (tematy, platformy, lokalizacje),
  • przewidywalne eksperymenty A/B (kontrast, CTR, błędy).

2) Fundamenty systemowe: modele i metryki

OKLCH (zalecany): jednolity percepcyjnie, wygodnie jest kontrolować lekkość 'L' i nasycenie' C', zachowując odcień 'H'.
Lab/LCH: również pasuje; OKLCH jest bardziej stabilny w percepcji.
sRGB: skończona przestrzeń wyświetlania; sumy są zawsze zatwierdzane w sRGB i WCAG.
Kontrast (WCAG 2. 2): tekst podstawowy ≥ 4. 5:1, duże ≥ 3:1; powiadomienia krytyczne - w miarę możliwości cel dla AAA (7:1).

3) Warstwy systemu: od marki po semantykę

1. Rdzeń marki: 1-2 odcienie marki (+ akcent nośny).
2. Semantyka interfejsu: role („podstawowe”, „wtórne”, „sukces”, „ostrzeżenie”, „niebezpieczeństwo”, „informacje”, „neutralne”).
3. Waga tonalna: stopnie lekkości (np. 25/50/100...900).
4. Тера: 'light '/' dark' (+ high-contrast, AMOLED).
5. Stany: „domyślnie/zawisnąć/aktywny/ostrość/wyłączony”.
6. Kontekst: powierzchnie („bg/base”, „bg/subtelne”, „bg/elevated”) i tekst („fg/primary”, „fg/secondary”, „fg/muted”).
7. Wizualizacja danych: oddzielne dyskretne i ciągłe palety.

4) Rdzeń marki: wybory i ograniczenia

Wybierz odcień i zdefiniuj roboczą lekkość dla marki w jasnych i ciemnych motywach (często 'L-0. 60–0. 70 'do napełniania przycisków w świetle i' L-0. 70–0. 80 'dla tekstu/ikon w ciemności).
Limit chrome 'C': high 'C' jest piękny na banerach, ale łamie czytelność w interfejsie użytkownika - zachowaj 2 wersje: „marketing” (bogaty) i „spożywczy” (bardziej powściągliwy).
Naprawić zmienne: główne ("marka/podstawowa"), alternatywne ("marka/alt') i neutralne wsparcie (" neutralne ").

5) Wagi tonalne

Celem jest uzyskanie jednolitych kroków lekkości z kontrolowanym nasyceniem:
  • W przypadku OKLCH przesuń kroki 'L' (np. 0. 98→0. 90→0. 80→…→0. 18) oraz „C” nieznacznie zmniejszają się do krawędzi skali, aby uniknąć „brudu” w świetle i „mętności” w ciemności.
  • Naprawić punkty kontrolne: „50/100/300/500 (klucz )/700/900”.
  • Na każdym kroku sprawdź kontrast pary z podstawowym tłem i z oczekiwanym kolorem tekstu.

Przykład marki/skali podstawowej (OKLCH, przybliżony)


brand.primary.50  = oklch(0.98 0.03 230)
brand.primary.100 = oklch(0.94 0.05 230)
brand.primary.300 = oklch(0.86 0.08 230)
brand.primary.500 = oklch(0.74 0.10 230) # ключевой тон brand.primary.700 = oklch(0.56 0.09 230)
brand.primary.900 = oklch(0.32 0.07 230)

6) Role semantyczne i odwzorowanie

Oddzielna marka i semantyka: „sukces” nie musi być zielony.


role.primary.bg    -> brand.primary.500 role.primary.text   -> fg.on-primary     # ≥ 4.5:1 к role.primary.bg role.success.bg    -> green.500 role.warning.bg    -> amber.500 role.danger.bg    -> red.500 role.info.bg     -> blue.500 role.neutral.bg    -> gray.200/700 (light/dark)

Teksty 'on-' są obliczane automatycznie (patrz § 10).

7) Jasne/ciemne motywy i powierzchnie

Zdefiniuj skalę bazową dla powierzchni i tekstu:

light:
bg/base   = oklch(0.98 0.01 260)
bg/subtle  = oklch(0.96 0.01 260)
bg/elevated = oklch(0.93 0.01 260)
fg/primary  = oklch(0.18 0.03 260) # ≈7:1 к bg/base fg/secondary = oklch(0.32 0.03 260) # ≥4.5:1 border    = oklch(0.80 0.02 260)

dark:
bg/base   = oklch(0.16 0.01 260)
bg/subtle  = oklch(0.20 0.01 260)
bg/elevated = oklch(0.24 0.01 260)
fg/primary  = oklch(0.90 0.02 260)
fg/secondary = oklch(0.78 0.02 260)
border    = oklch(0.34 0.02 260)

Utrzymanie równych celów kontrastowych w obu dziedzinach; unikać „oślepiania” białego na czystej czerni - podnieść powierzchnię do ~ 0. 16.

8) Państwa i interaktywność

Dla każdej roli należy ustawić stany kontrolowane jako „Na L” i „Na C”:

button/primary:
default.bg = brand.primary.500 hover.bg  = brand.primary.500 with +ΔC(0.01) -ΔL(0.02)
active.bg = brand.primary.700 focus.ring = brand.primary.300 # контраст кольца ≥ 3:1 к окружению disabled.bg= neutral.200 (light) / neutral.700 (dark)
text.on  = auto-contrast(default.bg)    # ≥ 4.5:1

9) Odpowiedzialność i WCAG

Podstawowe teksty i ikony w sterownikach to ≥ 4. 5:1.
Kluczowe powiadomienia systemowe (KYC/AML, 18 +, błędy płatności) - cel AAA (7:1).
Pole stanów i granic - co najmniej 3:1.
Odróżnić linki nie tylko przez kolor (underscore/focus-style).

10) Tekst kontrastu auto-fit („on-”)

Logika: przy wyborze wypełnienia elementu należy obliczyć „na kolorze”:

1. Według OKLCH, określić predlag. tekst „L _ on 'so that” (L_text vs L_bg) ≥ 4. 5:1`.

2. Jeśli chrom jest wysoki, dolny 'C _ text' do 0. 01–0. 03.

3. Dla ciemnego tematu podnieś 'L _ on' kolejne 0. 02–0. 04, aby zrównoważyć blask.

Token pseudo:

fg.on(colorX) = auto(colorX, targetContrast=4.5)

11) Wizualizacja danych

Kategoryczne palety: 8-12 kolorów odpornych na ślepotę kolorów (unikać czerwono-zielonych par bez alternatywnych znaków).
Ciągłe: od 'bg/elevated' do akcentu z kontrolą kontrastu podpisów.
Dodaj wzory/markery dla zauważalności bez koloru.

12) Kontekst międzynarodowy (stowarzyszenia kulturalne)

Rozważmy lokalne konotacje (np. czerwony - niebezpieczeństwo/uwaga; złoto - wygrana/nagroda).
Dla iGaming: Unikaj konfliktów sukcesu/zagrożenia z markowymi akcentami na jednym ekranie; ikonografia i podpis są ważniejsze niż „jasność”.

13) Integracja z systemem projektowania

13. 1 Nazywanie żetonów


color.{theme}.{role    surface    brand}.{state    step}
примеры color.light.brand.primary.500 color.dark.role.success.bg color.light.surface.bg.base color.light.fg.on-primary

13. 2 Żetony (JSON/Słownik stylu)

json
{
"color": {
"light": {
"surface": { "bg": { "base": "oklch(0.98 0.01 260)"} },
"brand":  { "primary": { "500": "oklch(0.74 0.10 230)" } },
"role":  { "primary": { "bg": "{color.light.brand.primary.500}" },
"danger": { "bg": "oklch(0.62 0.12 25)" } },
"fg": { "primary": "oklch(0.18 0.03 260)",
"on-primary": "auto({color.light.role.primary.bg},4.5)" }
}
}
}

13. 3 zmienne CSS (warstwa tematyczna)

css
:root[data-theme="light"] {
--bg-base: oklch(0.98 0.01 260);
--brand-primary-500: oklch(0.74 0.10 230);
--fg-primary: oklch(0.18 0.03 260);
--on-primary: color-contrast(var(--brand-primary-500)); / автоподбор /
}
[data-theme="dark"] {
--bg-base: oklch(0.16 0.01 260);
--brand-primary-500: oklch(0.74 0.10 230);
--fg-primary: oklch(0.90 0.02 260);
--on-primary: color-contrast(var(--brand-primary-500));
}

13. 4 Figma/dokumentacja

Elementy używają tylko żetonów, bezpośrednie HEX/SRGB są zabronione przez liniowców.
W bibliotece - strona „Matryca kontrastu”: tabela 'fg × bg' z rzeczywistymi współczynnikami.

14) Procesy kontroli jakości

W projekcie: kontrola kontrastu na tablicach artystycznych (oba tryby), oddzielne ustawienia wstępne dla ślepoty kolorów.
W kodzie: pomocnicy jednostki obliczają kontrast i upadają w naruszeniach; migawki wizualne dla krytycznych ekranów.
W CI/CD: sprawdzanie wszystkich par żetonów i stanów, raportowanie ze składnikiem, motywem i rzeczywistą wartością.

15) Specyfika iGaming

Promocje i turnieje: Użyj nakładki i ograniczenia 'C' na tle, aby zapobiec „zatonięciu” tekstu.
Odpowiedzialne powiadomienia (limity, 18 +, ryzyko) - szczerze AAA.
Mierniki/tabele: Rozróżnić liczby i oznaki zmian (wg kształtu i kontrastu, nie tylko kolor.

16) Lista kontrolna wdrażania

  • Definiuje się odcienie marki i ich wagi tonalne (OKLCH).
  • Role, stany i powierzchnie są ustawione dla dwóch tematów.
  • Automatyczna generacja „on-” z kontrastem docelowym.
  • matryca „fg × bg” i testy WCAG w CI.
  • Poszczególne palety dla dataviz (z obsługą ślepoty kolorowej).
  • Style Lintera zabraniają „surowych” kolorów.
  • Wyjątki i powody strony w wytycznych.

17) Anty-wzory

Wymieszaj nacisk marki z sukcesem/błędem w jednym sygnale UX.
Polegaj tylko na nasyceniu dla hierarchii.
Nie synchronizować światła/ciemności (kontrast „lewy” w jednym z tematów).
Twardy HEX bez żetonów → niekontrolowany dryf interfejsu.


Krótkie podsumowanie

Zbuduj paletę od góry do dołu: rdzeń marki → role semantyczne → wagi tonalne → motywy → stany. Praca w OKLCH, tokeny szpilkowe, automatyczne 'on-' i kontrole WCAG. Osobno wpisz palety dla dataviz. Zapewni to spójność marki, czytelność i skalowalność produktu.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.