Lebih sedikit hue, bukan lebih banyak
Sistem ini disusun dengan metode diferensial: setiap warna diuji jarak perseptualnya (ΔE OKLab) terhadap semua warna lain — dalam penglihatan normal, deuteranopia, dan protanopia — dan hanya diterima bila jaraknya di atas ambang.
Pengujian itu membalik rencana awal. Saya menyisir seluruh roda warna untuk mencari hue secondary dan tertiary. Kandidat terbaik hanya mencapai ΔE 13,2 — di bawah ambang aman 15. Enam warna status Telegram sudah memenuhi roda warna; hue baru apa pun pasti bertabrakan dengan salah satunya.
Tangga nada dibangun di ruang OKLCH pada hue tetap 31,8°, dengan lightness berjarak perseptual seragam dan chroma meruncing di kedua ujung. Inilah sebabnya nada 50 dan 950 tidak terlihat "berlumpur" seperti ramp yang dibuat dengan mencampur putih dan hitam.
Kesumba 500 tidak boleh dipakai untuk teks. Di atas void ia hanya mencapai 4,89:1 — cukup untuk elemen besar, tidak untuk teks kecil.
Untuk teks dan tautan di latar gelap, pakai kesumba 400 #FF7A5E — 7,83:1, lolos AAA.
Di atas kesumba 500, tinta tergelap #07090D hanya mencapai 4,86:1 — jadi label di dalam tombol kesumba wajib berukuran ≥ 16px atau tebal.
Membawa 90% permukaan produk. Bukan abu-abu murni: hue dikunci di 250° dengan chroma 0,005–0,020 — cukup untuk terasa dingin dan teknis, terlalu rendah untuk bersaing dengan kesumba.
Bukan hue ketiga. Ini kesumba pada chroma sangat rendah (0,010–0,030), dipakai untuk permukaan yang harus terasa "milik merek" tanpa berteriak: latar kartu aktif, sorotan baris, batas panel yang sedang dipilih.
Baris aktif memakai surface-active #12100F — hanya sedikit lebih hangat dari panel di sebelahnya, tetapi cukup untuk terbaca sebagai "yang ini". Penanda kuat justru datang dari batas kiri kesumba dan dari glif status, bukan dari latar.
Warna status terkunci pada enam warna ikon topic Telegram — API hanya menerima keenamnya. Diuji dengan simulasi CVD, himpunan itu gagal. Ini bukan sesuatu yang bisa diperbaiki dengan memilih warna lebih baik; ia harus diselesaikan di lapisan desain.
Semua pasangan di atas 11. Cukup — meski failed dan cancelled sudah agak berdekatan.
Hijau dan ungu sama-sama luruh jadi abu yang praktis identik. Kuning dan magenta hanya berjarak 5,0. Gagal telak.
Kuning dan hijau menyatu; magenta justru bergeser ke kuning-hijau. Empat pasangan di bawah ambang.
Warna tidak pernah menjadi satu-satunya sinyal status
Pada deuteranopia, hijau done dan ungu cancelled berjarak ΔE 2,5 — praktis identik. Kuning waiting dan magenta failed berjarak 5,0.
Karena itu setiap status wajib membawa glif teksnya di nama topic. Prefiks bukan hiasan — ia satu-satunya sinyal yang bertahan untuk sekitar 8% pria. Aturan ini sudah ada di spesifikasi; uji ini yang membuktikan bahwa ia tidak boleh dilepas.
Telegram hanya menerima enam nilai icon_color. Memakai warna lain di UI kita akan memutus hubungan antara apa yang terlihat di daftar topic dan apa yang terlihat di dasbor — jadi keenamnya diadopsi apa adanya.
Merah Telegram #FB6F5F sengaja dikosongkan. Jaraknya ke kesumba hanya ΔE 9,9 — terlalu dekat, dan pengguna akan bingung membedakan "merek" dari "gagal". Status failed karena itu memakai magenta #FF93B3, yang berjarak aman dari keduanya. Ini satu-satunya perubahan dari pemetaan status sebelumnya.
Token semantik menunjuk ke nada, bukan ke hex. Mengganti seluruh identitas nanti berarti mengubah satu hue di ramp, bukan menyisir ratusan nilai.