/*
 * Kontras WCAG 2.1 AA (perintah P12 §4), diukur 2026-10-07.
 *
 * Paletnya diwarisi SB Admin 2, dan diukur dengan angka ia tidak memenuhi AA untuk teks kecil: warna teks badan
 * #858796 di atas putih hanya 3,56:1 terhadap minimum 4,5:1, dan teks putih di atas #f6c23e hanya 1,65:1, yang
 * praktis tidak terbaca. Berkas ini dimuat paling akhir dan hanya menyentuh warna, bukan ukuran atau tata letak,
 * jadi tidak ada satu pun layar yang bergeser.
 *
 * Yang dipakai: menggelapkan tiap kanal dengan faktor yang sama, sehingga rona warnanya tetap. Angka di setiap
 * baris adalah rasio sesudah perubahan, dan `tests/Unit/ColourContrastTest.php` menghitungnya ulang dari berkas
 * ini, jadi nilai yang diubah tanpa mencapai ambangnya akan menggagalkan test.
 *
 * Yang **tidak** diubah di sini, karena mengubahnya berarti mengubah identitas visual yang diminta PRD §7 dan itu
 * keputusan pemilik produk: sidebar hijau (#16b69c dengan teks putih, 2,56:1) dan tombol hijau "+ Tambah". Kalau
 * disetujui, nilai yang memenuhi AA adalah #108572.
 */

/*
 * Teks badan dan teks sekunder. Diukur pada latar halaman #f8f9fc, bukan hanya pada kartu putih, karena itu latar
 * yang lebih sulit dan teks yang sama muncul di keduanya: 3,38 -> 4,53 di halaman, 4,77 di kartu.
 */
body {
  color: #70727f;
}

.text-muted,
.text-secondary {
  color: #70727f !important;
}

/*
 * Warna teks aksen, yang memang ada untuk dibaca. Dua angka per baris: di kartu putih dan di latar halaman,
 * sesudah perubahan.
 */
.text-primary { color: #4a6dd4 !important; } /* 4,34 -> 4,74 dan 4,50 */
.text-success { color: #12835b !important; } /* 2,17 -> 4,75 dan 4,51 */
.text-info    { color: #257d8a !important; } /* 2,34 -> 4,80 dan 4,56 */
.text-warning { color: #8d6f24 !important; } /* 1,65 -> 4,74 dan 4,50 */
.text-danger  { color: #cd4234 !important; } /* 3,86 -> 4,75 dan 4,51 */

/*
 * Badge dan tombol berlatar aksen muda: yang diganti teksnya, bukan latarnya, supaya warnanya persis tetap.
 * Teks gelap di atas kuning 9,33:1, di atas hijau 7,11:1, di atas biru muda 6,59:1. Ini juga perilaku Bootstrap
 * sendiri, yang memilih teks gelap untuk latar terang; build SB Admin 2 di repo ini memaksanya putih.
 */
.badge-warning,
.btn-warning,
.badge-success,
.badge-info {
  color: #212529;
}

.btn-warning:hover,
.btn-warning:focus,
.btn-warning.disabled,
.btn-warning:disabled {
  color: #212529;
}

/*
 * Latar tombol yang teksnya tetap putih: digelapkan kurang dari tiga persen, tidak terlihat mata, cukup untuk
 * melewati 4,5:1.
 */
.btn-primary,
.btn-primary.disabled,
.btn-primary:disabled {
  background-color: #4c70d8;
  border-color: #4c70d8;
}

.btn-danger,
.btn-danger.disabled,
.btn-danger:disabled {
  background-color: #d24336;
  border-color: #d24336;
}

.btn-secondary,
.btn-secondary.disabled,
.btn-secondary:disabled {
  background-color: #747582;
  border-color: #747582;
}

.badge-primary { background-color: #4c70d8; }
.badge-danger { background-color: #d24336; }
.badge-secondary { background-color: #747582; }

/*
 * Batas kendali formulir, WCAG 1.4.11 (komponen bukan teks, minimum 3:1). Batas bawaan temanya #d1d3e2, yang hanya
 * 1,49:1 di atas putih: tepinya praktis tidak terlihat, dan itu bukan soal selera melainkan tidak terbaca di layar
 * yang terang. #93949f memberi 3,01:1 dan masih terbaca sebagai garis abu tipis.
 */
.form-control,
.custom-select,
.custom-file-label {
  border-color: #93949f;
}

/*
 * Penanda fokus papan ketik (WCAG 2.1 SC 2.4.7, dan 1.4.11 untuk kontrasnya), diukur 2026-10-07.
 *
 * Tema ini menghapus `outline` pada `:focus` dan menggantinya dengan batas #bac8f3 plus halo biru 25 persen.
 * Diukur, batas itu 1,66:1 dan halonya 1,37:1 di atas putih: secara praktis tidak ada penanda fokus sama sekali,
 * jadi orang yang berpindah dengan Tab tidak bisa tahu ia sedang di mana. `custom.css` lebih tipis lagi, #d8f3ea
 * pada 1,17:1.
 *
 * Yang dipakai: #108572 pada 4,55:1 di atas putih. Di dalam sidebar hijau warna itu tidak terlihat, jadi di sana
 * penandanya #0b4a40, yang 3,97:1 di atas #16b69c dan 10,16:1 di atas putih sehingga tetap benar di keduanya.
 * Hanya `:focus-visible` yang diberi cincin, jadi klik tetikus tidak meninggalkan cincin di mana-mana.
 */
.form-control:focus,
.custom-select:focus,
.custom-file-input:focus ~ .custom-file-label {
  border-color: #108572;
  box-shadow: 0 0 0 0.2rem rgba(16, 133, 114, 0.35);
}

a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.page-link:focus-visible,
[role='button']:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid #108572;
  outline-offset: 2px;
}

.sidebar a:focus-visible,
.sidebar button:focus-visible,
.sidebar [tabindex]:focus-visible {
  outline-color: #0b4a40;
}


/*--------------------------------------------------------------
# Hijau yang memikul teks putih
--------------------------------------------------------------*/

/*
 * Keputusan pemilik produk 2026-10-24: lakukan praktik terbaiknya.
 *
 * Dua permukaan hijau memikul teks putih dan keduanya di bawah 4,5:1 yang diminta WCAG AA untuk teks kecil.
 * Terukur: tombol hijau "+ Tambah" putih di atas #16b69c hanya **2,56:1**, dan sidebar putih di atas #1cc88a
 * di ujung atas gradiennya hanya **2,17:1** (ujung bawahnya #13855c sudah 4,63:1, jadi yang gagal memang
 * bagian atasnya, yaitu tempat logo dan menu pertama berada).
 *
 * Penggantinya #108572, **4,55:1**, dihitung bukan dikira: nada hijaunya dipertahankan dan hanya dipergelap,
 * sehingga identitas visual yang diminta PRD §7 tetap hijau dan hanya permukaan yang benar-benar memikul teks
 * yang berubah. Yang hijau tanpa teks di atasnya sengaja tidak disentuh.
 *
 * Ditulis di sini, berkas yang dimuat paling akhir dan hanya menyentuh warna, bukan di `custom.css`: dengan
 * begitu seluruh perubahan kontras berada di satu tempat yang bisa dibaca sekaligus, dan tidak ada satu pun
 * aturan tata letak yang ikut bergeser.
 */
.btn-brand-green-dark,
.btn-brand-green-dark.disabled,
.btn-brand-green-dark:disabled,
.badge-brand-green-dark,
.bg-brand-green-dark {
  background-color: #108572;
  border-color: #108572;
}

.btn-brand-green-dark:hover,
.btn-brand-green-dark:not(:disabled):not(.disabled):active,
.btn-brand-green-dark:not(:disabled):not(.disabled).active {
  background-color: #0b5d50;
  border-color: #0b5d50;
}

/* Hijau sebagai teks di atas putih gagal dengan angka yang sama, jadi ia ikut dipergelap. */
.btn-outline-brand-green-dark,
.text-brand-green-dark {
  color: #108572;
  border-color: #108572;
}

/*
 * Sidebar: `bg-gradient-brand-success-dark` di markup tidak pernah didefinisikan di CSS mana pun, jadi yang
 * benar-benar berlaku adalah `bg-gradient-success` bawaan tema. Dipersempit ke `.sidebar` supaya kartu lain
 * yang memakai kelas gradien yang sama tidak ikut berubah.
 */
.sidebar.bg-gradient-success {
  background-color: #108572;
  background-image: linear-gradient(180deg, #108572 10%, #0b5d50 100%);
}
