/* tokens-admin.css — CSS variables tema Polaris (Shopify)-like.
   Fase 0 "Redesain UI/UX Menyeluruh" (sisi staff): file ini sekarang jadi SUMBER TOKEN
   TUNGGAL untuk seluruh sisi staff -- di-load oleh layouts/admin.php DAN layouts/guest.php
   (login, magic link, pilih sekolah, wizard instalasi). neutral.css tidak lagi mendefinisikan
   warnanya sendiri, cuma alias ke var(--admin-*) di sini (lihat neutral.css) -- supaya guest
   otomatis ikut palet & (nanti) mode gelap yang sama dengan admin, tanpa ubah markup halaman
   guest satu-satu. Sengaja TIDAK dipakai oleh layouts/murid.php -- sisi murid pakai bahasa
   visual gamified sendiri (lihat tokens-murid.css), itu keputusan desain yang disengaja,
   bukan bagian dari unifikasi ini. */
:root {
    --admin-primary: #008060;
    --admin-on-primary: #FFFFFF; /* warna teks/ikon di atas background --admin-primary (badge, tombol) */
    --admin-surface: #FFFFFF;
    --admin-bg: #F6F6F7;
    --admin-border: #E1E3E5;
    --admin-text-primary: #202223;
    --admin-text-secondary: #6D7175;
    --admin-hover: #F6F6F7;
    --admin-success: #008060;
    --admin-success-soft: #AEE9D1;
    --admin-warning: #FFC453;
    --admin-warning-soft: #FFEA8A;
    --admin-critical: #D82C0D;
    --admin-critical-soft: #FED3D1;
    --admin-neutral-soft: #F1F1F1;
    --admin-success-text: #04532F;
    --admin-warning-text: #6E4C00;
    --admin-critical-text: #8C1D0F;
    --admin-shadow-sm: 0 1px 3px rgba(0,0,0,0.06);
    --admin-surface-alt: #F6F6F7;
    --admin-info: #1a3d8f;
    --admin-info-soft: #dbeafe;
    --admin-info-text: #1a3d8f;
    --admin-purple: #5B2FA6;
    --admin-purple-soft: #EDE1FB;
    --admin-purple-text: #4a2485;
    /* Fase 1 (Shell/Navigasi) → disempurnakan Fase 3 (Pengaturan Sekolah, warna tema custom):
       pasangan soft/ink primer dihitung dari --admin-primary pakai color-mix(), BUKAN hex
       hardcode lagi -- supaya otomatis ikut warna custom yang sekolah pilih di halaman
       Pengaturan Sekolah (admin.php cuma override --admin-primary lewat style inline, lihat
       layouts/admin.php) DAN otomatis kontras yang benar di kedua mode gelap/terang, karena
       dicampur ke arah --admin-surface (soft) / --admin-text-primary (ink) yang sudah beda
       nilainya per tema. Satu definisi ini berlaku utk kedua mode, tidak perlu diulang di
       blok [data-theme="dark"] di bawah. */
    --admin-primary-soft: color-mix(in srgb, var(--admin-primary) 16%, var(--admin-surface));
    --admin-primary-ink: color-mix(in srgb, var(--admin-primary) 55%, var(--admin-text-primary));
    --admin-border-radius: 8px;
    --admin-font: 'Inter', -apple-system, sans-serif;

    /* Skala tipografi — port 1:1 dari :root SalesFunnel (assets/css/layout.css),
       9 langkah dipakai lewat var() di seluruh admin.css, bukan angka bebas. */
    --text-2xs:  0.68rem; /* meta/badge terkecil (mis. label counter kecil) */
    --text-xs:   0.75rem; /* label uppercase, meta kecil, caption tabel */
    --text-sm:   0.8rem;  /* subtitle, form label, tombol kecil */
    --text-base: 0.875rem; /* body/table/form default */
    --text-md:   0.95rem;  /* body sedikit lebih besar */
    --text-lg:   1.05rem;  /* sub-heading kecil (section title dalam card) */
    --text-xl:   1.25rem;  /* page title */
    --text-2xl:  1.75rem;  /* stat besar / angka hero sedang */
    --text-3xl:  3rem;     /* angka hero paling besar */

    /* Pemetaan ke komponen fakeselect.css (dropdown pengganti <select> native) —
       otomatis ikut mode gelap karena merujuk var --admin-* yang sama. */
    --fs-surface: var(--admin-surface);
    --fs-border: var(--admin-border);
    --fs-text: var(--admin-text-primary);
    --fs-muted: var(--admin-text-secondary);
    --fs-hover: var(--admin-hover);
    --fs-radius: var(--admin-border-radius);
}

/* ── Mode gelap — dipilih lewat theme switch di header, sama seperti SalesFunnel.
   Status dipasang via atribut [data-theme="dark"] di <html>, diset paling awal
   (inline script anti-flash di layout) supaya tidak ada kedipan putih sesaat. ── */
[data-theme="dark"] {
    color-scheme: dark;
    --admin-surface: #1E1F24;
    --admin-bg: #15161A;
    --admin-border: #34353C;
    --admin-text-primary: #F0F0F2;
    --admin-text-secondary: #A3A4AB;
    --admin-hover: #25262C;
    --admin-success-soft: rgba(26,115,64,0.25);
    --admin-warning-soft: rgba(146,64,14,0.3);
    --admin-critical-soft: rgba(180,35,24,0.28);
    --admin-neutral-soft: #25262C;
    --admin-success-text: #6ee7b7;
    --admin-warning-text: #fcd34d;
    --admin-critical-text: #ff8a75;
    --admin-shadow-sm: 0 1px 3px rgba(0,0,0,0.4);
    --admin-surface-alt: #25262C;
    --admin-info: #8fa8e8;
    --admin-info-soft: rgba(29,64,175,0.2);
    --admin-info-text: #a8c2f5;
    --admin-purple: #b79ce8;
    --admin-purple-soft: rgba(91,47,166,0.28);
    --admin-purple-text: #d7c4f5;
}

