Lewati ke konten
Citia DS

Fondasi

Warna

Peran warna semantik, warna status dengan kata dan ikon, state layer, aturan mode gelap, palet primitif, dan hasil kontras langsung untuk 72 pasangan.

Warna bekerja dalam tiga lapis: primitif (nilai hex mentah), peran semantik (primary, base-100, error), dan ekstensi Citia (--ds-link, --ds-focus). Komponen hanya memakai dua lapis terakhir. Setiap peran punya nilai di tema terang dan gelap, dan swatch di bawah dirender langsung dari tokens.json, jadi selalu mutakhir.

Sumbernya tokens/tokens.json. Jangan mengedit Styles/generated/tokens.css dengan tangan; jalankan dotnet run tools/tokens.cs.

Peran semantik

Peran bawaan daisyUI 5. Tiap swatch menampilkan terang di kiri dan gelap di kanan. Pakai sebagai var(--color-primary) atau utilitas Tailwind (bg-primary, text-base-content).

--color-base-100#f9f9f6#151c25 Permukaan: kartu, tabel, input, sidebar dokumen.
--color-base-200#f1f2ee#0e141b Latar halaman, header tabel, field readonly.
--color-base-300#dfe3dd#253040 Border dan pemisah.
--color-base-content#0f172a#e6edf3 Teks utama.
--color-primary#00838f#00a4b2 Aksi utama, navigasi aktif, fokus merek.
--color-primary-content#ffffff#0e141b
--color-secondary#00767f#05666f Latar sidebar aplikasi.
--color-secondary-content#ffffff#ffffff
--color-accent#00a4b2#00d4df Cincin fokus, penanda rail aktif, grafik.
--color-accent-content#0f172a#0e141b
--color-neutral#0f172a#e6edf3
--color-neutral-content#f6f8fa#0e141b
--color-info#3b6fd4#7aa2f7
--color-info-content#ffffff#0e141b
--color-success#047857#34d399
--color-success-content#ffffff#0e141b
--color-warning#c2410c#f59e0b
--color-warning-content#ffffff#0e141b
--color-error#dc2626#f87171
--color-error-content#ffffff#0e141b
Peran Dipakai untuk
base-100 Permukaan: kartu, tabel, input, menu.
base-200 Latar halaman, header tabel, isian tenang.
base-300 Border tipis dan pemisah (1px).
base-content Teks isi dan ikon di atas permukaan dasar.
primary, primary-content Satu aksi utama, seleksi, fokus; teks di atasnya.
secondary, accent Permukaan sidebar dan penanda aktif. Bukan focus ring.
info, success, warning, error Isian dan border status (lihat di bawah).

Permukaan netral dan hangat. Teal muncul pada aksi utama, item navigasi saat ini, seleksi, dan focus ring, dan secara bawaan tidak di tempat lain.

Ekstensi Citia

Peran yang tidak ada di daisyUI. Nama CSS-nya --ds-<nama>; Tailwind membaca --color-<nama> (text-link, bg-popover, border-control).

--ds-control-border#7b8a94#74848f Border input, select, tombol sekunder (≥ 3:1).
--ds-quiet#006a73--color-primary Teks teal tenang: tombol ghost, eyebrow, ikon kosong.
--ds-link#2b5cc4--color-info Tautan identitas (.ds-link-ref). Biru hanya untuk tautan.
--ds-error-text#b91c1c--color-error
--ds-warning-text#9a3412--color-warning
--ds-popover--color-base-100campuran Permukaan lapisan melayang (dropdown, kalender, combobox).
--ds-popover-border--ds-control-border--ds-control-border
--ds-popover-hovercampurancampuran
--ds-subtlecampurancampuran Teks sekunder: bantuan field, keterangan, label meta.
--ds-mutedcampurancampuran Teks tersier yang tetap lolos AA di base-100 (.text-muted).
--ds-focus#00838f#00d4df Cincin fokus. Versi lama memakai accent (#00a4b2 = 2.86:1 di base-100); DS memakai primary agar ≥ 3:1 (WCAG 1.4.11).
--ds-scrimrgb(8 18 28 / .4)rgb(8 18 28 / .4) Latar belakang modal (::backdrop).
--ds-excel#1d6f42#1d6f42
--ds-excel-hover#185c37#185c37
--ds-pdf#b30b00#b30b00
--ds-pdf-hover#8f0900#8f0900
--ds-syntax-tag#006780#66d9e8 Tag XML/HTML.
--ds-syntax-attr#8c3a17#edba82 Atribut XML/HTML.
--ds-primary-softcampurancampuran Isian tonal primary untuk permukaan status (alert, pill, chip, baris terpilih). Pasangkan dengan --ds-primary-text atau teks dasar.
--ds-info-softcampurancampuran Isian tonal info untuk permukaan status (alert, pill, chip, baris terpilih). Pasangkan dengan --ds-info-text atau teks dasar.
--ds-success-softcampurancampuran Isian tonal success untuk permukaan status (alert, pill, chip, baris terpilih). Pasangkan dengan --ds-success-text atau teks dasar.
--ds-warning-softcampurancampuran Isian tonal warning untuk permukaan status (alert, pill, chip, baris terpilih). Pasangkan dengan --ds-warning-text atau teks dasar.
--ds-error-softcampurancampuran Isian tonal error untuk permukaan status (alert, pill, chip, baris terpilih). Pasangkan dengan --ds-error-text atau teks dasar.
--ds-neutral-softcampurancampuran Isian tonal netral: tag, pill nonaktif, latar kode inline.
--ds-info-text#2b5cc4--color-info Teks dan ikon info di permukaan terang (≥ 4.5:1).
--ds-success-text#047857--color-success Teks dan ikon sukses di permukaan terang (≥ 4.5:1).
--ds-primary-text#006a73--color-primary Teks berwarna primary di permukaan terang (≥ 4.5:1).
--ds-chart-1--color-primary--color-primary Seri grafik kategorikal 1. Kontras grafis di base-100 (≥ 3.9:1); pakai sesuai urutan, jangan jadi satu-satunya penanda (beri label atau legenda).
--ds-chart-2#3a61c4#86a9f7 Seri grafik kategorikal 2. Kontras grafis di base-100 (≥ 3.9:1); pakai sesuai urutan, jangan jadi satu-satunya penanda (beri label atau legenda).
--ds-chart-3#c26300#f0a646 Seri grafik kategorikal 3. Kontras grafis di base-100 (≥ 3.9:1); pakai sesuai urutan, jangan jadi satu-satunya penanda (beri label atau legenda).
--ds-chart-4#c72c53#f6838e Seri grafik kategorikal 4. Kontras grafis di base-100 (≥ 3.9:1); pakai sesuai urutan, jangan jadi satu-satunya penanda (beri label atau legenda).
--ds-chart-5#137738#6cd092 Seri grafik kategorikal 5. Kontras grafis di base-100 (≥ 3.9:1); pakai sesuai urutan, jangan jadi satu-satunya penanda (beri label atau legenda).
--ds-chart-6#8048b6#be95ec Seri grafik kategorikal 6. Kontras grafis di base-100 (≥ 3.9:1); pakai sesuai urutan, jangan jadi satu-satunya penanda (beri label atau legenda).
--ds-chart-7#576574#a0b0c1 Seri grafik kategorikal 7. Kontras grafis di base-100 (≥ 3.9:1); pakai sesuai urutan, jangan jadi satu-satunya penanda (beri label atau legenda).
--ds-chart-8#857d0b#c9c261 Seri grafik kategorikal 8. Kontras grafis di base-100 (≥ 3.9:1); pakai sesuai urutan, jangan jadi satu-satunya penanda (beri label atau legenda).
Token Dipakai untuk
--ds-subtle Teks sekunder: bantuan, keterangan, metadata (8.7:1 di terang).
--ds-muted Teks tersier yang tetap lolos AA (6.04:1). Jangan untuk informasi penting.
--ds-control-border Border input, select, tombol sekunder. Minimal 3:1 terhadap permukaan (3.37:1 terang, 4.44:1 gelap).
--ds-link Tautan di teks dan tabel. Selalu bergaris bawah atau ditandai lain.
--ds-error-text, --ds-warning-text Teks di atas tint galat atau peringatan; warna dasarnya terlalu terang untuk teks kecil di tema terang.
--ds-focus Focus ring 2px. Satu-satunya warna fokus.
--ds-popover, --ds-popover-border, --ds-popover-hover Lapisan melayang: solid, bukan transparan.
--ds-scrim Latar belakang modal.

Penting

Biru untuk tautan. Teal untuk aksi utama, seleksi, dan fokus. Jangan pakai warna tautan pada tombol atau status.

Warna status

Status memakai empat rona dengan arti tetap. Isian tonal (pucat) mengisi area; warna jenuh hanya muncul sebagai border 1px, ikon, atau titik. Status selalu disertai kata, dan bentuk ikon berbeda per nada, sehingga tetap terbaca bagi buta warna dan dalam skala abu-abu.

Nada Arti Ikon Contoh kata
info Kabar netral, sedang berjalan info Terjadwal
success Selesai, sehat check-circle Lunas
warning Perlu perhatian, belum gagal alert-triangle Menunggu pembayaran
error Gagal atau destruktif x-circle Terlambat
Status dengan kata dan ikon
Terjadwal Lunas Menunggu pembayaran Terlambat Draf
Lihat kode HTML
HTML
<div class="flex flex-wrap gap-3">
  <span class="ds-pill is-info">Terjadwal</span>
  <span class="ds-pill is-success">Lunas</span>
  <span class="ds-pill is-warning">Menunggu pembayaran</span>
  <span class="ds-pill is-error">Terlambat</span>
  <span class="ds-pill is-neutral">Draf</span>
</div>

Aturan:

  • Tulis status sebagai kata. Warna dan titik hanya mendukung.
  • Teks di atas tint memakai base-content atau peran -text, bukan warna dasar status di tema terang.
  • Jangan menandai galat hanya dengan merah: tambahkan pesan di dekat field, dihubungkan dengan aria-describedby.
  • Jangan mengubah arti demi merek. Merek boleh menyesuaikan nada, bukan arti.

State layer

Hover, tekan, seleksi, dan drag diungkapkan sebagai lapisan translusen warna konten di atas permukaan, bukan warna baru. Token:

Token Nilai Dipakai untuk
--ds-opacity-state-hover 0.06 Hover pada baris, tombol ghost, item menu
--ds-opacity-state-pressed 0.10 Saat pointer ditekan
--ds-opacity-state-selected 0.12 Baris terpilih, item saat ini, opsi terpilih (dengan warna primer)
--ds-opacity-state-drag 0.16 Target drop dan item yang diseret
CSS
.app-row:hover {
  background: color-mix(in oklab, var(--color-base-content) calc(var(--ds-opacity-state-hover) * 100%), var(--color-base-100));
}
.app-row[aria-selected="true"] {
  background: color-mix(in oklab, var(--color-primary) calc(var(--ds-opacity-state-selected) * 100%), var(--color-base-100));
}

Karena lapisan dicampur dari token, ia menyesuaikan tema apa pun tanpa hex baru. Tint dijaga 16% atau kurang agar teks di atasnya tetap 4.5:1.

Resep tint dan border

Tujuan Rentang Contoh
Isian lembut di permukaan 6 sampai 12% color-mix(in oklab, var(--color-error) 10%, var(--color-base-100))
Isian lembut tanpa dasar 4 sampai 16% color-mix(in oklab, var(--color-primary) 10%, transparent)
Border nada 22 sampai 45% color-mix(in oklab, var(--color-info) 35%, var(--color-base-300))
Seleksi teks 24% color-mix(in oklab, var(--color-primary) 24%, transparent)

Mode gelap

Tema gelap dirancang, bukan dibalik.

  • Permukaan berwarna hitam kebiruan (base-100 #151c25, halaman #0e141b), bukan hitam murni, supaya bayangan dan garis tipis tetap terbaca.
  • primary menjadi #00a4b2 dengan teks gelap #0e141b; terang memakai #00838f dengan putih.
  • --ds-focus menjadi aqua #00d4df (9.38:1) karena warna fokus tema terang terlalu gelap di halaman gelap.
  • --ds-link pindah ke biru info #7aa2f7 (6.81:1).
  • Warna status lebih terang (success #34d399, error #f87171) dan peran -text-nya sama dengan warna dasar, yang sudah lolos 4.5:1.
  • Popover diangkat dengan sedikit putih (color-mix dengan 6% putih) agar lapisan terpisah dari halaman tanpa bergantung pada bayangan; bayangan lebih pekat (.36) karena halamannya sudah gelap.
  • Hindari teks putih murni (base-content adalah #e6edf3) dan area jenuh yang besar, yang menyilaukan di gelap.

Pilih tema di markup dengan data-theme="light" atau "dark"; lihat Tema.

Palet primitif

Nilai mentah di balik peran. Arahkan kursor ke chip untuk melihat catatannya.

white

white#ffffff

teal

teal.500#00a4b2
teal.600#00838f
teal.700#00767f
teal.750#006a73
teal.800#05666f

aqua

aqua.400#00d4df

paper

paper.50#f9f9f6
paper.100#f1f2ee
paper.200#dfe3dd

steel

steel.400#7b8a94
steel.450#74848f

slate

slate.900#0f172a

frost

frost.50#f6f8fa
frost.100#e6edf3

night

night.700#253040
night.800#151c25
night.900#0e141b

blue

blue.400#7aa2f7
blue.500#3b6fd4
blue.600#2b5cc4

emerald

emerald.400#34d399
emerald.700#047857

amber

amber.500#f59e0b

orange

orange.700#c2410c
orange.800#9a3412

red

red.400#f87171
red.600#dc2626
red.700#b91c1c

excel

excel.600#1d6f42
excel.700#185c37

pdf

pdf.600#b30b00
pdf.700#8f0900

avatar

avatar.c0#00838f
avatar.c1#2b5cc4
avatar.c2#7c3aed
avatar.c3#c2410c
avatar.c4#047857
avatar.c5#be185d
avatar.c6#4d7c0f
avatar.c7#0e7490

brand

brand.deep#04222a
brand.ink#0b1720
brand.amber#ffb938

Peringatan

Komponen tidak pernah memakai primitif. Tulis var(--color-primary), bukan #00838f atau teal.600. Saat tema berubah, hanya peran semantik yang dipetakan ulang; komponen yang memakai primitif akan tertinggal.

Hasil kontras

dotnet run tools/tokens.cs menghitung rasio WCAG 2.2 untuk 72 pasangan di kedua tema dan menulis wwwroot/tokens/contrast.json. Pasangan wajib di bawah 4.5:1 (teks) atau 3:1 (batas, focus ring, ikon) menggagalkan build. Pasangan berlabel informasional tidak menentukan hasil.

TemaPasanganContohRasioMinimumHasil
lightbase-content
Teks utama di permukaan
Aa 12
#0f172a / #f9f9f6
16,93:14,5:1Lolos
lightbase-content / base-200
Teks utama di latar halaman
Aa 12
#0f172a / #f1f2ee
15,88:14,5:1Lolos
lightsubtle
Teks sekunder (bantuan field)
Aa 12
#404858 / #f9f9f6
8,70:14,5:1Lolos
lightsubtle / base-200
Teks sekunder di latar
Aa 12
#404858 / #f1f2ee
8,16:14,5:1Lolos
lightmuted
Teks redup di permukaan
Aa 12
#5a5f6b / #f9f9f6
6,04:14,5:1Lolos
lightmuted / base-200
Teks redup di latar
Aa 12
#575d69 / #f1f2ee
5,87:14,5:1Lolos
lightprimary-content
Label tombol utama
Aa 12
#ffffff / #00838f
4,52:14,5:1Lolos
lightsecondary-content
Item sidebar
Aa 12
#ffffff / #00767f
5,39:14,5:1Lolos
lightsidebar active
Item sidebar aktif
Aa 12
#ffffff / #005056
9,24:14,5:1Lolos
lightsidebar group
Kepala grup sidebar 11 px
Aa 12
#e6f1f2 / #00767f
4,68:14,5:1Lolos
lightaccent-content
Teks di atas accent
Aa 12
#0f172a / #00a4b2
5,91:14,5:1Lolos
lightinfo-content
Alert/badge info terisi
Aa 12
#ffffff / #3b6fd4
4,76:14,5:1Lolos
lightsuccess-content
Badge sukses terisi
Aa 12
#ffffff / #047857
5,48:14,5:1Lolos
lightwarning-content
Badge peringatan terisi
Aa 12
#ffffff / #c2410c
5,18:14,5:1Lolos
lighterror-content
Tombol destruktif
Aa 12
#ffffff / #dc2626
4,83:14,5:1Lolos
lightlink
Tautan di permukaan
Aa 12
#2b5cc4 / #f9f9f6
5,80:14,5:1Lolos
lightlink / base-200
Tautan di latar
Aa 12
#2b5cc4 / #f1f2ee
5,44:14,5:1Lolos
lightlink / row hover
Tautan di baris yang di-hover
Aa 12
#2b5cc4 / #eeefed
5,30:14,5:1Lolos
lightquiet
Label tombol ghost
Aa 12
#006a73 / #f9f9f6
6,02:14,5:1Lolos
lightquiet / ghost hover
Tombol ghost saat hover
Aa 12
#006a73 / #dae4e3
4,89:14,5:1Lolos
lighterror-text
Pesan galat, badge galat soft
Aa 12
#b91c1c / #f9f9f6
6,13:14,5:1Lolos
lightwarning-text
Badge/alert peringatan soft
Aa 12
#9a3412 / #f9f9f6
6,93:14,5:1Lolos
lightsuccess text
Status Aktif (teks di tint)
Aa 12
#047857 / #e8eee8
4,66:14,5:1Lolos
lighterror text (raw)
Pesan validasi memakai --color-error
Aa 12
#dc2626 / #f9f9f6
4,58:14,5:1Lolos
lightpopover text
Teks di lapisan melayang
Aa 12
#0f172a / #f9f9f6
16,93:14,5:1Lolos
lightexcel
Tombol Excel
Aa 12
#ffffff / #1d6f42
6,17:14,5:1Lolos
lightpdf
Tombol PDF
Aa 12
#ffffff / #b30b00
7,08:14,5:1Lolos
lightcontrol-border
Border input/tombol sekunder (non-teks)
Aa 12
#7b8a94 / #f9f9f6
3,37:13:1Lolos
lightfocus ring
Cincin fokus (non-teks)
Aa 12
#00838f / #f9f9f6
4,29:13:1Lolos
lightfocus ring / base-200
Cincin fokus di latar
Aa 12
#00838f / #f1f2ee
4,02:13:1Lolos
lightaccent ring (v1)
Cincin fokus versi 1 — informasi
Aa 12
#00a4b2 / #f9f9f6
2,86:13:1Info
lightprimary edge
Batas kontrol aktif (chip/segmen)
Aa 12
#00838f / #f9f9f6
4,29:13:1Lolos
*avatar-c0
Inisial putih di avatar
Aa 12
#ffffff / #00838f
4,52:14,5:1Lolos
*avatar-c1
Inisial putih di avatar
Aa 12
#ffffff / #2b5cc4
6,12:14,5:1Lolos
*avatar-c2
Inisial putih di avatar
Aa 12
#ffffff / #7c3aed
5,70:14,5:1Lolos
*avatar-c3
Inisial putih di avatar
Aa 12
#ffffff / #c2410c
5,18:14,5:1Lolos
*avatar-c4
Inisial putih di avatar
Aa 12
#ffffff / #047857
5,48:14,5:1Lolos
*avatar-c5
Inisial putih di avatar
Aa 12
#ffffff / #be185d
6,04:14,5:1Lolos
*avatar-c6
Inisial putih di avatar
Aa 12
#ffffff / #4d7c0f
4,99:14,5:1Lolos
*avatar-c7
Inisial putih di avatar
Aa 12
#ffffff / #0e7490
5,36:14,5:1Lolos
darkbase-content
Teks utama di permukaan
Aa 12
#e6edf3 / #151c25
14,51:14,5:1Lolos
darkbase-content / base-200
Teks utama di latar halaman
Aa 12
#e6edf3 / #0e141b
15,66:14,5:1Lolos
darksubtle
Teks sekunder (bantuan field)
Aa 12
#acb3ba / #151c25
8,08:14,5:1Lolos
darksubtle / base-200
Teks sekunder di latar
Aa 12
#acb3ba / #0e141b
8,72:14,5:1Lolos
darkmuted
Teks redup di permukaan
Aa 12
#a3aab1 / #151c25
7,31:14,5:1Lolos
darkmuted / base-200
Teks redup di latar
Aa 12
#a1a8ae / #0e141b
7,66:14,5:1Lolos
darkprimary-content
Label tombol utama
Aa 12
#0e141b / #00a4b2
6,13:14,5:1Lolos
darksecondary-content
Item sidebar
Aa 12
#ffffff / #05666f
6,70:14,5:1Lolos
darksidebar active
Item sidebar aktif
Aa 12
#ffffff / #02444b
10,84:14,5:1Lolos
darksidebar group
Kepala grup sidebar 11 px
Aa 12
#e6f0f1 / #05666f
5,76:14,5:1Lolos
darkaccent-content
Teks di atas accent
Aa 12
#0e141b / #00d4df
10,12:14,5:1Lolos
darkinfo-content
Alert/badge info terisi
Aa 12
#0e141b / #7aa2f7
7,35:14,5:1Lolos
darksuccess-content
Badge sukses terisi
Aa 12
#0e141b / #34d399
9,63:14,5:1Lolos
darkwarning-content
Badge peringatan terisi
Aa 12
#0e141b / #f59e0b
8,62:14,5:1Lolos
darkerror-content
Tombol destruktif
Aa 12
#0e141b / #f87171
6,69:14,5:1Lolos
darklink
Tautan di permukaan
Aa 12
#7aa2f7 / #151c25
6,81:14,5:1Lolos
darklink / base-200
Tautan di latar
Aa 12
#7aa2f7 / #0e141b
7,35:14,5:1Lolos
darklink / row hover
Tautan di baris yang di-hover
Aa 12
#7aa2f7 / #1c232c
6,30:14,5:1Lolos
darkquiet
Label tombol ghost
Aa 12
#00a4b2 / #151c25
5,68:14,5:1Lolos
darkquiet / ghost hover
Tombol ghost saat hover
Aa 12
#00a4b2 / #1a2d36
4,74:14,5:1Lolos
darkerror-text
Pesan galat, badge galat soft
Aa 12
#f87171 / #151c25
6,20:14,5:1Lolos
darkwarning-text
Badge/alert peringatan soft
Aa 12
#f59e0b / #151c25
7,98:14,5:1Lolos
darksuccess text
Status Aktif (teks di tint)
Aa 12
#34d399 / #1a282e
7,85:14,5:1Lolos
darkerror text (raw)
Pesan validasi memakai --color-error
Aa 12
#f87171 / #151c25
6,20:14,5:1Lolos
darkpopover text
Teks di lapisan melayang
Aa 12
#e6edf3 / #202730
12,73:14,5:1Lolos
darkexcel
Tombol Excel
Aa 12
#ffffff / #1d6f42
6,17:14,5:1Lolos
darkpdf
Tombol PDF
Aa 12
#ffffff / #b30b00
7,08:14,5:1Lolos
darkcontrol-border
Border input/tombol sekunder (non-teks)
Aa 12
#74848f / #151c25
4,44:13:1Lolos
darkfocus ring
Cincin fokus (non-teks)
Aa 12
#00d4df / #151c25
9,38:13:1Lolos
darkfocus ring / base-200
Cincin fokus di latar
Aa 12
#00d4df / #0e141b
10,12:13:1Lolos
darkaccent ring (v1)
Cincin fokus versi 1 — informasi
Aa 12
#00d4df / #151c25
9,38:13:1Lolos
darkprimary edge
Batas kontrol aktif (chip/segmen)
Aa 12
#00a4b2 / #151c25
5,68:13:1Lolos

Lakukan dan jangan

  • Lakukan: pakai peran lewat variabel: color: var(--ds-subtle), border-color: var(--ds-control-border).
  • Lakukan: pasangkan setiap warna status dengan kata dan ikon.
  • Lakukan: jaga satu btn-primary per area; teal menandainya.
  • Lakukan: periksa pasangan teks-di-atas-warna yang baru dan tambahkan ke tools/tokens.cs.
  • Jangan: pakai hex, primitif, atau kelas palet Tailwind (bg-red-500) di komponen.
  • Jangan: memberi tint di atas 16% di belakang teks, atau memakai gradien, glow, dan blok jenuh yang besar.
  • Jangan: memakai warna saja untuk state: baris terpilih juga mendapat centang, bilah, atau perubahan bobot.
  • Jangan: memakai biru untuk tombol atau teal untuk tautan.
CSS
.app-ref { color: var(--ds-link); text-decoration: underline; }
.app-hint { color: var(--ds-subtle); }
.app-field { border: 1px solid var(--ds-control-border); background: var(--color-base-100); }
Razor (.cshtml)
<a asp-page="Details" asp-route-id="@Model.Id" class="text-link underline underline-offset-2">INV-2026-0418</a>
<p class="text-subtle">Format INV-TTTT-NNNN</p>
<input class="input border-control" />

Utilitas itu berasal dari generated/tailwind-theme.css dan di-resolve per elemen, sehingga data-theme bersarang tetap memakai warnanya sendiri.

Citia Design System 2.0.2 · Citia Engineering Indonesia. Diturunkan dari INTEGRA TPS Integration; dibuat untuk semua aplikasi web Citia.