DESIGN-FOR-DEVELOPER DOCS
PRINSIP-DASAR
Name
Description
Example
Output
Kontras (Contrast)Description: Membuat perbedaan mencolok antar elemen untuk menarik perhatian dan menciptakan hierarki visual.
Example:
Tombol utama berwarna terang di latar belakang gelap; judul besar vs. isi teks kecil.
Output: Fokus pengguna langsung tertuju pada elemen kontras.
Kontras (Contrast)Membuat perbedaan mencolok antar elemen untuk menarik perhatian dan menciptakan hierarki visual.
Tombol utama berwarna terang di latar belakang gelap; judul besar vs. isi teks kecil.
Fokus pengguna langsung tertuju pada elemen kontras.
Pengulangan (Repetition)Description: Mengulang elemen desain (warna, tipografi, bentuk) di seluruh antarmuka untuk konsistensi.
Example:
Semua tombol primer memiliki warna dan padding yang sama; semua heading menggunakan font yang sama.
Output: Antarmuka terasa kohesif dan mudah dipelajari.
Pengulangan (Repetition)Mengulang elemen desain (warna, tipografi, bentuk) di seluruh antarmuka untuk konsistensi.
Semua tombol primer memiliki warna dan padding yang sama; semua heading menggunakan font yang sama.
Antarmuka terasa kohesif dan mudah dipelajari.
Penjajaran (Alignment)Description: Elemen harus memiliki koneksi visual dengan elemen lain (rata kiri, kanan, tengah).
Example:
Teks dalam form selalu rata kiri; ikon di dalam button sejajar vertikal.
Output: Tatanan rapi dan profesional, mengurangi beban kognitif.
Penjajaran (Alignment)Elemen harus memiliki koneksi visual dengan elemen lain (rata kiri, kanan, tengah).
Teks dalam form selalu rata kiri; ikon di dalam button sejajar vertikal.
Tatanan rapi dan profesional, mengurangi beban kognitif.
Kedekatan (Proximity)Description: Elemen yang berhubungan dikelompokkan berdekatan. Elemen yang tidak berhubungan dipisahkan.
Example:
Label di atas input; gambar profil dekat nama pengguna; bagian form yang berbeda dipisahkan whitespace.
Output: Hubungan antar informasi langsung terlihat.
Kedekatan (Proximity)Elemen yang berhubungan dikelompokkan berdekatan. Elemen yang tidak berhubungan dipisahkan.
Label di atas input; gambar profil dekat nama pengguna; bagian form yang berbeda dipisahkan whitespace.
Hubungan antar informasi langsung terlihat.
Whitespace (Ruang Kosong)Description: Ruang negatif di antara elemen. Memberi ruang bernapas, meningkatkan keterbacaan, dan menonjolkan elemen penting.
Example:
Padding di dalam card, margin antar section, line-height teks.
Output: Desain tidak sumpek, elemen penting menonjol.
Whitespace (Ruang Kosong)Ruang negatif di antara elemen. Memberi ruang bernapas, meningkatkan keterbacaan, dan menonjolkan elemen penting.
Padding di dalam card, margin antar section, line-height teks.
Desain tidak sumpek, elemen penting menonjol.
Hirarki Visual (Visual Hierarchy)Description: Mengatur elemen sehingga pengguna melihat yang paling penting dulu. Bisa lewat ukuran, warna, kontras, posisi.
Example:
Judul besar > subjudul > body text. Tombol CTA warna mencolok.
Output: Panduan alami bagi mata pengguna.
Hirarki Visual (Visual Hierarchy)Mengatur elemen sehingga pengguna melihat yang paling penting dulu. Bisa lewat ukuran, warna, kontras, posisi.
Judul besar > subjudul > body text. Tombol CTA warna mencolok.
Panduan alami bagi mata pengguna.
TIPOGRAFI
Name
Description
Example
Output
Font Size (Ukuran Font)Description: Ukuran teks dalam piksel (px) atau rem. Gunakan skala modular untuk konsistensi (12, 14, 16, 18, 20, 24, 32, 48).
Example:
Body text: 16px, Heading H1: 32px, Caption: 12px.
Output: Hirarki teks yang jelas dan mudah dibaca.
Font Size (Ukuran Font)Ukuran teks dalam piksel (px) atau rem. Gunakan skala modular untuk konsistensi (12, 14, 16, 18, 20, 24, 32, 48).
Body text: 16px, Heading H1: 32px, Caption: 12px.
Hirarki teks yang jelas dan mudah dibaca.
Line Height (Tinggi Baris)Description: Jarak vertikal antar baris teks. Idealnya 1.5 (150%) untuk body text, lebih kecil untuk heading (1.2 - 1.3).
Example:
Body: line-height: 1.6; Heading: line-height: 1.2;
Output: Teks mengalir nyaman, tidak terlalu rapat atau renggang.
Line Height (Tinggi Baris)Jarak vertikal antar baris teks. Idealnya 1.5 (150%) untuk body text, lebih kecil untuk heading (1.2 - 1.3).
Body: line-height: 1.6; Heading: line-height: 1.2;
Teks mengalir nyaman, tidak terlalu rapat atau renggang.
Font Weight (Ketebalan)Description: Ketebalan karakter (100 = Thin, 400 = Regular, 700 = Bold, 900 = Black).
Example:
Heading: font-weight: 700; Body: font-weight: 400;
Output: Kontras antar elemen teks, heading terlihat lebih dominan.
Font Weight (Ketebalan)Ketebalan karakter (100 = Thin, 400 = Regular, 700 = Bold, 900 = Black).
Heading: font-weight: 700; Body: font-weight: 400;
Kontras antar elemen teks, heading terlihat lebih dominan.
Font PairingDescription: Menggabungkan dua font yang saling melengkapi (biasanya satu untuk heading, satu untuk body).
Example:
Heading: 'Poppins' (sans-serif) + Body: 'Merriweather' (serif).
Output: Kombinasi harmonis dan tidak membosankan.
Font PairingMenggabungkan dua font yang saling melengkapi (biasanya satu untuk heading, satu untuk body).
Heading: 'Poppins' (sans-serif) + Body: 'Merriweather' (serif).
Kombinasi harmonis dan tidak membosankan.
Letter SpacingDescription: Jarak antar huruf. Biasanya negatif untuk heading besar, sedikit positif untuk teks uppercase kecil.
Example:
Heading: letter-spacing: -0.5px; Button: letter-spacing: 0.5px;
Output: Menjaga keterbacaan pada ukuran dan konteks yang berbeda.
Letter SpacingJarak antar huruf. Biasanya negatif untuk heading besar, sedikit positif untuk teks uppercase kecil.
Heading: letter-spacing: -0.5px; Button: letter-spacing: 0.5px;
Menjaga keterbacaan pada ukuran dan konteks yang berbeda.
Text Align (Rata Teks)Description: Posisi horizontal teks: left, right, center, justify. Left paling umum untuk readability.
Example:
Paragraf: text-align: left; Judul halaman: text-align: center;
Output: Konsistensi membaca; justify sering menghasilka ruang antar kata aneh.
Text Align (Rata Teks)Posisi horizontal teks: left, right, center, justify. Left paling umum untuk readability.
Paragraf: text-align: left; Judul halaman: text-align: center;
Konsistensi membaca; justify sering menghasilka ruang antar kata aneh.
WARNA
Name
Description
Example
Output
Color Wheel / Teori WarnaDescription: Roda warna untuk melihat hubungan: komplementer (berlawanan), analogous (bersebelahan), triadik (segitiga).
Example:
Komplementer: Biru + Oranye. Analogous: Biru + Ungu.
Output: Palet warna yang harmonis.
Color Wheel / Teori WarnaRoda warna untuk melihat hubungan: komplementer (berlawanan), analogous (bersebelahan), triadik (segitiga).
Komplementer: Biru + Oranye. Analogous: Biru + Ungu.
Palet warna yang harmonis.
Primary, Secondary, AccentDescription: Primary: warna utama brand. Secondary: pendukung. Accent: untuk aksi/CTA (biasanya kontras).
Example:
Primary: #6C5CE7, Secondary: #A29BFE, Accent: #FF7675 (untuk tombol penting).
Output: Peran warna jelas dalam UI.
Primary, Secondary, AccentPrimary: warna utama brand. Secondary: pendukung. Accent: untuk aksi/CTA (biasanya kontras).
Primary: #6C5CE7, Secondary: #A29BFE, Accent: #FF7675 (untuk tombol penting).
Peran warna jelas dalam UI.
Neutral ColorsDescription: Abu-abu, putih, hitam untuk latar belakang, teks, border.
Example:
Background: #F8F9FA, Text: #212529, Border: #DEE2E6.
Output: Fleksibel untuk elemen non-aksi.
Neutral ColorsAbu-abu, putih, hitam untuk latar belakang, teks, border.
Background: #F8F9FA, Text: #212529, Border: #DEE2E6.
Fleksibel untuk elemen non-aksi.
Semantic ColorsDescription: Warna dengan makna: Merah untuk error/hapus, Hijau untuk sukses, Kuning untuk peringatan.
Example:
Error: #E74C3C, Success: #2ECC71, Warning: #F39C12.
Output: Pengguna langsung memahami konteks.
Semantic ColorsWarna dengan makna: Merah untuk error/hapus, Hijau untuk sukses, Kuning untuk peringatan.
Error: #E74C3C, Success: #2ECC71, Warning: #F39C12.
Pengguna langsung memahami konteks.
Color Contrast (Aksesibilitas)Description: Rasio kontras teks terhadap latar belakang minimal 4.5:1 (AA) untuk teks normal, 3:1 untuk teks besar.
Example:
Teks #333 pada latar #FFF (rasio 12.6:1) lulus AAA. #999 pada #FFF (2.85:1) gagal.
Output: Konten bisa dibaca semua orang, termasuk low vision.
Color Contrast (Aksesibilitas)Rasio kontras teks terhadap latar belakang minimal 4.5:1 (AA) untuk teks normal, 3:1 untuk teks besar.
Teks #333 pada latar #FFF (rasio 12.6:1) lulus AAA. #999 pada #FFF (2.85:1) gagal.
Konten bisa dibaca semua orang, termasuk low vision.
CSS Variables untuk WarnaDescription: Menggunakan variabel CSS untuk mengelola palet dan tema (dark mode).
Example:
:root { --primary: #6C5CE7; } .dark { --primary: #A29BFE; }Output: Tema mudah diganti secara dinamis.
CSS Variables untuk WarnaMenggunakan variabel CSS untuk mengelola palet dan tema (dark mode).
:root { --primary: #6C5CE7; } .dark { --primary: #A29BFE; }Tema mudah diganti secara dinamis.
SPACING-SIZING
Name
Description
Example
Output
8px Grid SystemDescription: Semua ukuran dan jarak menggunakan kelipatan 8 (4, 8, 12, 16, 24, 32, 48, 64, 96).
Example:
padding: 16px (2x8); margin: 24px (3x8); width: 320px (40x8).
Output: Ritme vertikal dan horizontal konsisten di seluruh aplikasi.
8px Grid SystemSemua ukuran dan jarak menggunakan kelipatan 8 (4, 8, 12, 16, 24, 32, 48, 64, 96).
padding: 16px (2x8); margin: 24px (3x8); width: 320px (40x8).
Ritme vertikal dan horizontal konsisten di seluruh aplikasi.
Padding vs MarginDescription: Padding: ruang di dalam elemen (border ke konten). Margin: ruang di luar elemen (jarak antar elemen).
Example:
Card: padding: 24px; Jarak antar dua card: margin-bottom: 16px;
Output: Pemisahan tanggung jawab spasi.
Padding vs MarginPadding: ruang di dalam elemen (border ke konten). Margin: ruang di luar elemen (jarak antar elemen).
Card: padding: 24px; Jarak antar dua card: margin-bottom: 16px;
Pemisahan tanggung jawab spasi.
Max-Width untuk KeterbacaanDescription: Lebar teks sebaiknya dibatasi 65-75 karakter per baris (sekitar 600-720px).
Example:
Artikel: max-width: 680px; margin: 0 auto;
Output: Mata tidak cepat lelah saat membaca teks panjang.
Max-Width untuk KeterbacaanLebar teks sebaiknya dibatasi 65-75 karakter per baris (sekitar 600-720px).
Artikel: max-width: 680px; margin: 0 auto;
Mata tidak cepat lelah saat membaca teks panjang.
Responsive SpacingDescription: Gunakan unit relatif (%, vw, clamp) atau Tailwind responsive prefixes untuk spacing di berbagai layar.
Example:
Tailwind: p-4 md:p-8 lg:p-12. CSS: padding: clamp(16px, 5vw, 64px);
Output: Spasi menyesuaikan ukuran layar tanpa patah.
Responsive SpacingGunakan unit relatif (%, vw, clamp) atau Tailwind responsive prefixes untuk spacing di berbagai layar.
Tailwind: p-4 md:p-8 lg:p-12. CSS: padding: clamp(16px, 5vw, 64px);
Spasi menyesuaikan ukuran layar tanpa patah.
IKONOGRAFI
Name
Description
Example
Output
Konsistensi Gaya IkonDescription: Semua ikon harus dari set yang sama (outline/filled, stroke width, sudut membulat).
Example:
Gunakan Lucide (stroke-width: 2, width: 24, height: 24) untuk semua ikon.
Output: Tidak ada ikon yang terlihat asing.
Konsistensi Gaya IkonSemua ikon harus dari set yang sama (outline/filled, stroke width, sudut membulat).
Gunakan Lucide (stroke-width: 2, width: 24, height: 24) untuk semua ikon.
Tidak ada ikon yang terlihat asing.
Ukuran IkonDescription: Umumnya 16px (inline dgn teks), 20px (tombol kecil), 24px (standar UI), 32px+ (dekoratif).
Example:
Ikon di dalam tombol: size={16}; Ikon di navbar: size={24};Output: Proporsional dengan elemen sekitarnya.
Ukuran IkonUmumnya 16px (inline dgn teks), 20px (tombol kecil), 24px (standar UI), 32px+ (dekoratif).
Ikon di dalam tombol: size={16}; Ikon di navbar: size={24};Proporsional dengan elemen sekitarnya.
Label pada IkonDescription: Ikon tanpa teks harus memiliki label untuk aksesibilitas (aria-label) atau tooltip.
Example:
<button aria-label="Tutup"><XIcon /></button>
Output: Bisa diakses oleh screen reader.
Label pada IkonIkon tanpa teks harus memiliki label untuk aksesibilitas (aria-label) atau tooltip.
<button aria-label="Tutup"><XIcon /></button>
Bisa diakses oleh screen reader.
SVG vs Icon FontDescription: Sebaiknya gunakan SVG inline atau sebagai komponen (React) untuk kontrol penuh dan performa. Hindari icon font.
Example:
import { SearchIcon } from 'lucide-react'; <SearchIcon className="w-5 h-5" />Output: Tajam di semua resolusi, mudah diwarnai dan dianimasikan.
SVG vs Icon FontSebaiknya gunakan SVG inline atau sebagai komponen (React) untuk kontrol penuh dan performa. Hindari icon font.
import { SearchIcon } from 'lucide-react'; <SearchIcon className="w-5 h-5" />Tajam di semua resolusi, mudah diwarnai dan dianimasikan.
RESPONSIVE-LAYOUT
Name
Description
Example
Output
Mobile-First DesignDescription: Desain untuk layar kecil dulu, lalu tambahkan kompleksitas untuk layar lebih besar dengan min-width media queries.
Example:
/* Mobile */ .grid { cols: 1 } /* Tablet */ @media (min-width: 768px) { .grid { cols: 2 } }Output: Konten prioritas ditampilkan baik di semua perangkat.
Mobile-First DesignDesain untuk layar kecil dulu, lalu tambahkan kompleksitas untuk layar lebih besar dengan min-width media queries.
/* Mobile */ .grid { cols: 1 } /* Tablet */ @media (min-width: 768px) { .grid { cols: 2 } }Konten prioritas ditampilkan baik di semua perangkat.
Breakpoints Umum (Tailwind)Description: sm: 640px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px.
Example:
class="w-full md:w-1/2 lg:w-1/3"
Output: Layout beradaptasi secara halus.
Breakpoints Umum (Tailwind)sm: 640px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px.
class="w-full md:w-1/2 lg:w-1/3"
Layout beradaptasi secara halus.
Container QueriesDescription: Mengatur gaya berdasarkan ukuran container, bukan viewport.
Example:
@container (min-width: 300px) { .card { display: flex; } }Output: Komponen yang benar-benar reusable di berbagai konteks.
Container QueriesMengatur gaya berdasarkan ukuran container, bukan viewport.
@container (min-width: 300px) { .card { display: flex; } }Komponen yang benar-benar reusable di berbagai konteks.
Flexbox & GridDescription: Flexbox: 1 dimensi (baris/kolom). Grid: 2 dimensi (baris dan kolom). Gunakan sesuai kebutuhan.
Example:
Navbar: flex; Halaman dengan sidebar dan konten: grid-template-columns: 250px 1fr;
Output: Kontrol tata letak yang presisi.
Flexbox & GridFlexbox: 1 dimensi (baris/kolom). Grid: 2 dimensi (baris dan kolom). Gunakan sesuai kebutuhan.
Navbar: flex; Halaman dengan sidebar dan konten: grid-template-columns: 250px 1fr;
Kontrol tata letak yang presisi.
DESIGN-TOOLS
Name
Description
Example
Output
Figma (UI/UX Design)Description: Tools desain berbasis web untuk membuat UI, prototype, dan kolaborasi real-time.
Example:
Akses mode 'Dev Mode' untuk melihat spesifikasi CSS (warna, spacing, font).
Output: Pengembang mendapatkan kode yang siap diimplementasikan.
Figma (UI/UX Design)Tools desain berbasis web untuk membuat UI, prototype, dan kolaborasi real-time.
Akses mode 'Dev Mode' untuk melihat spesifikasi CSS (warna, spacing, font).
Pengembang mendapatkan kode yang siap diimplementasikan.
Canva (Grafis Cepat)Description: Untuk membuat aset pemasaran, posting media sosial, presentasi dengan template siap pakai.
Example:
Mendesain banner blog atau thumbnail YouTube dengan drag-and-drop.
Output: Cepat menghasilkan visual tanpa keahlian desain.
Canva (Grafis Cepat)Untuk membuat aset pemasaran, posting media sosial, presentasi dengan template siap pakai.
Mendesain banner blog atau thumbnail YouTube dengan drag-and-drop.
Cepat menghasilkan visual tanpa keahlian desain.
Excalidraw / tldrawDescription: Whiteboarding untuk wireframe kasar atau diagram alur.
Example:
Buat sketsa layout halaman sebelum coding.
Output: Ide tervisualisasi dengan cepat.
Excalidraw / tldrawWhiteboarding untuk wireframe kasar atau diagram alur.
Buat sketsa layout halaman sebelum coding.
Ide tervisualisasi dengan cepat.
Color Pickers & PalettesDescription: Coolors.co, Adobe Color: untuk membangun dan mengeksplorasi palet warna.
Example:
Generate palet dari satu warna primer, kunci palet, lalu ekspor sebagai CSS variables.
Output: Palet siap pakai yang harmonis.
Color Pickers & PalettesCoolors.co, Adobe Color: untuk membangun dan mengeksplorasi palet warna.
Generate palet dari satu warna primer, kunci palet, lalu ekspor sebagai CSS variables.
Palet siap pakai yang harmonis.
Stock Photos & IllustrationsDescription: Unsplash, Pexels, Freepik, unDraw: sumber gambar dan ilustrasi bebas royalti.
Example:
Gunakan ilustrasi dari unDraw (format SVG) untuk halaman error atau onboarding.
Output: UI lebih hidup tanpa melanggar hak cipta.
Stock Photos & IllustrationsUnsplash, Pexels, Freepik, unDraw: sumber gambar dan ilustrasi bebas royalti.
Gunakan ilustrasi dari unDraw (format SVG) untuk halaman error atau onboarding.
UI lebih hidup tanpa melanggar hak cipta.
UX-DASAR
Name
Description
Example
Output
User-Centered Design (UCD)Description: Proses desain yang berfokus pada kebutuhan, keinginan, dan keterbatasan pengguna akhir.
Example:
Lakukan user interview sebelum mendesain fitur, uji coba prototype.
Output: Produk yang benar-benar memecahkan masalah pengguna.
User-Centered Design (UCD)Proses desain yang berfokus pada kebutuhan, keinginan, dan keterbatasan pengguna akhir.
Lakukan user interview sebelum mendesain fitur, uji coba prototype.
Produk yang benar-benar memecahkan masalah pengguna.
Law of Proximity (Hukum Kedekatan)Description: Objek yang berdekatan dianggap memiliki hubungan. (Prinsip Gestalt)
Example:
Group label dengan input di dalam fieldset, pisahkan section dengan whitespace.
Output: Hubungan elemen mudah dipahami.
Law of Proximity (Hukum Kedekatan)Objek yang berdekatan dianggap memiliki hubungan. (Prinsip Gestalt)
Group label dengan input di dalam fieldset, pisahkan section dengan whitespace.
Hubungan elemen mudah dipahami.
Fitts's LawDescription: Waktu untuk mencapai target (tombol) dipengaruhi oleh jarak dan ukuran target. Tombol penting dibuat besar dan dekat.
Example:
Tombol 'Kirim' besar dan diletakkan di bawah form, jangan di pojok jauh.
Output: Interaksi lebih cepat dan minim kesalahan klik.
Fitts's LawWaktu untuk mencapai target (tombol) dipengaruhi oleh jarak dan ukuran target. Tombol penting dibuat besar dan dekat.
Tombol 'Kirim' besar dan diletakkan di bawah form, jangan di pojok jauh.
Interaksi lebih cepat dan minim kesalahan klik.
Hick's LawDescription: Semakin banyak pilihan, semakin lama waktu pengambilan keputusan. Kurangi opsi yang tidak perlu.
Example:
Jangan tampilkan 10 CTA sekaligus; gunakan satu primary CTA dan satu secondary.
Output: Pengguna tidak kebingungan.
Hick's LawSemakin banyak pilihan, semakin lama waktu pengambilan keputusan. Kurangi opsi yang tidak perlu.
Jangan tampilkan 10 CTA sekaligus; gunakan satu primary CTA dan satu secondary.
Pengguna tidak kebingungan.
User FeedbackDescription: Beritahu pengguna tentang hasil aksi mereka (loading spinner, toast sukses, pesan error).
Example:
Setelah menyimpan data, tampilkan toast 'Data berhasil disimpan'.
Output: Pengguna yakin aksinya berhasil.
User FeedbackBeritahu pengguna tentang hasil aksi mereka (loading spinner, toast sukses, pesan error).
Setelah menyimpan data, tampilkan toast 'Data berhasil disimpan'.
Pengguna yakin aksinya berhasil.
BEST-PRACTICES
Name
Description
Example
Output
Jangan Hanya Mengandalkan WarnaDescription: Informasi penting harus disampaikan dengan ikon atau teks tambahan, bukan hanya warna (untuk aksesibilitas buta warna).
Example:
Error state: border merah + ikon 'X' + teks 'Email tidak valid'.
Output: Semua pengguna memahami informasi penting.
Jangan Hanya Mengandalkan WarnaInformasi penting harus disampaikan dengan ikon atau teks tambahan, bukan hanya warna (untuk aksesibilitas buta warna).
Error state: border merah + ikon 'X' + teks 'Email tidak valid'.
Semua pengguna memahami informasi penting.
Hindari Lorem IpsumDescription: Gunakan konten nyata atau semi-nyata sedini mungkin untuk melihat apakah desain berfungsi.
Example:
Ganti 'Lorem ipsum dolor sit amet' dengan deskripsi produk asli.
Output: Masalah spacing atau overflow bisa terdeteksi.
Hindari Lorem IpsumGunakan konten nyata atau semi-nyata sedini mungkin untuk melihat apakah desain berfungsi.
Ganti 'Lorem ipsum dolor sit amet' dengan deskripsi produk asli.
Masalah spacing atau overflow bisa terdeteksi.
Responsif Sejak AwalDescription: Jangan desain desktop dulu lalu dipaksakan ke mobile. Mulai dari mobile (mobile-first).
Example:
Mulai dengan single column layout, perluas ke multi-column jika perlu.
Output: Tidak perlu redesign besar di akhir.
Responsif Sejak AwalJangan desain desktop dulu lalu dipaksakan ke mobile. Mulai dari mobile (mobile-first).
Mulai dengan single column layout, perluas ke multi-column jika perlu.
Tidak perlu redesign besar di akhir.
Gunakan System Font StackDescription: Font bawaan sistem (San Francisco, Segoe UI, Roboto) memuat cepat tanpa request tambahan.
Example:
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
Output: Performa optimal, tampilan konsisten dengan OS.
Gunakan System Font StackFont bawaan sistem (San Francisco, Segoe UI, Roboto) memuat cepat tanpa request tambahan.
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
Performa optimal, tampilan konsisten dengan OS.