/* ============================================================
   Firmalog tasarım token'ları — tek kaynak.

   Marka paleti (static/logo.png'den örneklendi):
       lacivert #0c1b2e · turuncu #f0805a · beyaz #ffffff

   Ölçülmüş kısıtlar — değer değiştirirken korunacak:
     · Turuncu zeminde beyaz yazı 2.64:1, AA'yı geçmez.
       Birincil buton yazısı lacivert olmalı.
     · Turuncu, beyaz zeminde metin olamaz (2.64:1); açık tema için
       koyulaştırılmış varyant gerekir (#c2410c, 5.18:1).
     · Semantik renkler marka turuncusundan algısal olarak ayrışmalı
       (ΔE >= 30). Hue mesafesi bu iş için yanıltıcıdır: amber-700
       hue'da uzak görünürken ΔE=23.9 ile turuncuya karışıyordu.

   Değer değiştirdiğinde doğrula:  python3 scripts/renk_dogrula.py
   ============================================================ */

:root {
    /* ── Roller ──────────────────────────────────────────────
       --accent (marka/aksiyon) ile --danger ("vadesi geçti") ayrı roller.
       Geçiş öncesi ikisi de tek bir #b91c1c'ydi; ayrılmalarının sebebi
       bağımsız hareket edebilmeleri. Yeniden birleştirme. */
    --accent:            #c2410c;
    --accent-strong:     #9a3412;
    --accent-soft:       #fff3ee;
    /* Accent'in yumuşak rozet üçlüsü — success/danger/warn'daki gibi.
       Yokluğunda "kısmi ödeme" ve "orta tahsilat" rozetleri kendi turuncu
       tonlarını elle yazıyordu. Metin --accent olamaz: soft zeminde
       4.76:1 ile sınırda; --accent-strong 6.72:1 veriyor. */
    --accent-soft-border: #fdba74;
    --accent-on-soft:     #9a3412;
    --accent-ring:       rgba(240, 128, 90, .25);   /* focus halkası */

    --danger:            #9f1239;
    --danger-border:     rgba(159, 18, 57, .4);

    /* Her iki temada da koyu kalan yüzeyler: koyu buton, tablo başlığı,
       ikon kutusu. Temaya duyarlı DEĞİL — yan menüyle aynı mantık. */
    --surface-invert:    #0c1b2e;
    --on-surface-invert: #ffffff;
    /* Koyu yüzey üstünde ikincil metin (tablo başlığı, kart alt başlığı).
       Elde #64748b/#a1a1aa gibi slate griler kullanılıyordu; ikisi de
       lacivert üstünde AA'yı geçmiyordu (3.64:1 ve 6.64:1 sınırda). */
    --on-surface-invert-muted: color-mix(in srgb, var(--on-surface-invert) 65%, var(--surface-invert));

    /* Dolgu zeminler temaya duyarlı OLAMAZ: koyu temada --danger açılır,
       üstündeki beyaz yazı okunmaz hale gelirdi. Zemin sabit, yazı beyaz. */
    --danger-solid:      #9f1239;
    --on-danger-solid:   #ffffff;
    /* Tek dolgu yeşili. Eskiden iki tane vardı (#16a34a, #15803d); #16a34a
       üstünde beyaz ikon 3.30:1 ile AA'yı geçmiyordu, #15803d 5.02:1 veriyor. */
    --success-solid:     #15803d;

    /* Dolgu sarısı. Turuncu butonla aynı kural: sarı üstünde beyaz yazı
       okunmuyor (2.94:1), lacivert 5.90:1 veriyor. Eskiden bu rolü temaya
       duyarlı --warning-fill görüyordu; koyu temada #f59e0b'ye açılıp beyaz
       yazıyı 2.15:1'e düşürüyordu. Dolgu zemin temaya duyarlı olamaz. */
    --warning-solid:     #ca8a04;
    --on-warning-solid:  #0c1b2e;

    /* Dolgu marka butonu. Yazı lacivert: turuncu üstünde beyaz yazı 2.64:1
       ile AA'yı geçmiyor, lacivert 6.55:1 veriyor. */
    --accent-solid:      #f0805a;
    --on-accent-solid:   #0c1b2e;

    /* Rozet/uyarı çiftleri: zemin + kenarlık + metin, temaya duyarlı */
    --danger-soft-bg:     #fff1f2;
    --danger-soft-border: #fecdd3;
    --success-soft-bg:     #dcfce7;
    --success-soft-border: #86efac;
    --success-on-soft:     #166534;   /* yumuşak yeşil zemin üstündeki yazı */
    --warn-soft-bg:        #fefce8;
    --warn-soft-text:      #854d0e;
    --warn-soft-border:    #fde68a;
    --info:                #1d4ed8;
    /* Info'nun yumuşak üçlüsü. Metin --info olamaz mı? Olur (6.70:1) ama
       soft zeminde --info-on-soft 8.01:1 veriyor; ailedeki diğerleriyle
       simetrik kalsın. #3b82f6 gibi canlı maviler beyaz kartta 3.68:1. */
    --info-soft-bg:        #eff6ff;
    --info-soft-border:    #bfdbfe;
    --info-on-soft:        #1e40af;

    /* Slate tonlu koyu yüzey (özet tablo başlığı). --surface-invert'ten
       ayrı: o nötr gri, bu mavimsi. 1b'de birleştirilmeleri değerlendirilecek. */
    --surface-slate:    #12233b;
    --on-surface-slate: #e2e8f0;

    /* Aktif ay vurgusu */
    --highlight-bg:     #fffbeb;

    /* Yan menü her iki temada koyu; kendi uyarı tonu var.
       --brand-on-dark buradaydı; tek kullanıcısı .sidebar-brand-icon'du,
       o da marka <img> logoya geçince öldü. */
    /* Her iki temada koyu kalan yüzeylerde (yan menü, toplam satırı)
       semantik metin. --success/--danger buraya bağlanamaz: açık temada
       koyu varyanta düşüp okunmaz olurlar. */
    --success-on-dark:   #86efac;
    --danger-on-dark:    #fda4af;
    --sidebar-badge-bg:  rgba(240, 128, 90, .18);

    --success:           #15803d;

    --warning:           #854d0e;

    /* Bootstrap'e marka rengini bildir. İki değişken de gerekli ve ayrı
       tüketiliyor: .text-primary/.bg-primary yalnızca rgba(--bs-primary-rgb)
       okur, --bs-primary'yi hiç görmez. İkisini birlikte güncelle. */
    --bs-primary:        #c2410c;
    --bs-primary-rgb:    194, 65, 12;

    /* ── Yan menü ────────────────────────────────────────── */
    --sidebar-bg:          #0c1b2e;
    --sidebar-text:        #94a3b8;
    /* Hover/seçili durumda öne çıkan menü metni. --text-primary'ye
       bağlanamaz: yan menü açık temada da koyu. */
    --sidebar-text-strong: #e2e8f0;
    --sidebar-text-muted:  #64748b;
    --sidebar-active-bg:   #16293e;
    --sidebar-active-text: #f7b9a2;
    /* Yan menü her iki temada da koyu; --accent'e bağlanamaz, yoksa
       koyu temada açık varyanta kayar. */
    --sidebar-active-bar:  #f0805a;
    --sidebar-hover-bg:    rgba(255, 255, 255, .05);
    --sidebar-border:      #1c2f45;
    --sidebar-width:       224px;
    /* Daraltılmış (ikon şeridi) genişlik. Menü kapanınca tamamen gizlenmiyor —
       yazılar gizlenip ikonlar kalıyor; böylece geri açma oku hep görünür. */
    --sidebar-width-dar:   68px;

    /* ── Ölçü ────────────────────────────────────────────── */
    --radius-sm:    5px;
    --radius:       7px;

    /* ── Yüzeyler: açık tema ─────────────────────────────── */
    --bg-body:      #eef0f2;
    --bg-card:      #ffffff;
    --bg-hover:     #f5f6f8;
    --bg-cell-btn:  #ffffff;
    --text-primary: #1c1c1e;
    --text-muted:   #5f6368;
    /* #8a8d91 idi ve WCAG AA'yı GEÇMİYORDU: beyaz kartta 3.33:1, gövde
       zemininde 2.92:1 (gerekli 4.5). Dış denetim erişilebilirlik puanını
       86'ya çeken bulgu buydu; canlıda axe-core ile ölçüldü (#68).
       #666a6f: beyazda 5.45, gövdede 4.77 — ikisinde de geçiyor.
       Rol artık scripts/renk_dogrula.py'nin TEXT_ROLLERI listesinde, aynı
       sınıf hata bir daha sessiz geçmeyecek. */
    --text-muted2:  #666a6f;
    --border-color: #dcdfe3;
    --shadow:       rgba(0, 0, 0, .05);
    --shadow-card:  none;
    --shadow-table: rgba(0, 0, 0, .05);
    --stat-sayi:    var(--accent);
    --progress-text:#44474b;
    --table-stripe: #f7f8f9;
    --bg-subheader: #f5f6f8;
    --bg-thead:     #eef0f2;
    --border-card:  #dcdfe3;
    --topbar-bg:    #ffffff;
    --topbar-border:#dcdfe3;
    /* Grafik ızgarası. --border-color'a bağlanamaz: o kenarlık ağırlığında,
       ızgara çizgisi zeminin içinde erimeli. Canvas var() çözemediği için
       JS bu token'ı getComputedStyle ile okur. */
    --chart-grid:   rgba(0, 0, 0, .06);

    /* ── Kategorik slotlar ───────────────────────────────
       Kimlik taşırlar, durum değil. --success/--danger'a BAĞLANAMAZLAR:
       o renkler "ödendi"/"vadesi geçti" anlamını taşıyor; grafikte
       kullanılınca her ayın gider barı hata gibi okunuyordu, rozetlerde
       de "limited şirket" ödenmiş gibi yeşildi.

       Eski yeşil/kırmızı çift (#22c55e/#f87171) deuteranopia altında
       ΔE 4.7 ile çöküyordu (taban 8) — renk körü kullanıcılar Gelir ile
       Gider'i ayıramıyordu. Bu slotlar altı kontrolü de iki temada
       geçiyor; en kötü komşu ΔE 96.7.

       Sıra sabittir ve döngüye sokulmaz. Her yüzey kendi kategorilerine
       1'den başlayarak sırayla atar (grafik: Gelir/Gider/Net; firma türü:
       anonim/limited/şahıs; hizmet dönemi: sabit/tek seferlik).
       Dördüncü kategori üretilmez — "diğer" nötre düşer.

       Slot 3 önce mor (#4a3aa7) idi. Grafikte sorun yoktu (orada yalnızca
       KOMŞU çiftler yan yana gelir) ama rozetler bir listede yan yana
       durur; tüm-çift kontrolünde koyu temada mor↔mavi ΔE 2.5 (işaret),
       metin adımlarında 6.5 — tabanın altında. Magenta'ya taşındı:
       tüm-çift ΔE 42.6. Aqua ve mor elenmişti: aqua --success'e (ΔE 20.7),
       mor --info'ya (ΔE 19.2) karışıyor. Magenta hepsinden >= 32 uzak.

       --chart-2 marka turuncusunun koyulaştırılmış adımı; markanın kendi
       #f0805a'sı işaret olamıyor (beyaz üstünde 2.64:1).
       Doğrulama: dataviz becerisi, scripts/validate_palette.js */
    --chart-1:      #2a78d6;
    --chart-2:      #eb6834;
    --chart-3:      #e87ba4;
    /* Slot 4 teal. Kalan hue'ların hepsi bir semantiğe akrabaydı:
       sarı --warning-solid'e (ΔE 13.4), aqua ve yeşil --success'e (20.7 / 24.0),
       kırmızı --accent'e (22.9), mor --info'ya (19.2). Teal 33.5 ile ayrık. */
    --chart-4:      #0d9488;

    /* Aynı slotların rozet çifti: yumuşak zemin + üstündeki metin.
       Metin, slot renginin kendisi OLAMAZ — rozet yazısı küçük ve kalın,
       4.5:1 gerekiyor; --chart-1 beyazda 4.42:1, --chart-2 3.20:1.
       Bu yüzden her slotun koyulaştırılmış bir metin adımı var. */
    --chart-1-soft-bg: color-mix(in srgb, var(--chart-1) 12%, var(--bg-card));
    --chart-1-on-soft: #1c5cab;
    --chart-2-soft-bg: color-mix(in srgb, var(--chart-2) 12%, var(--bg-card));
    --chart-2-on-soft: #9a3412;
    --chart-3-soft-bg: color-mix(in srgb, var(--chart-3) 12%, var(--bg-card));
    --chart-3-on-soft: #a25673;   /* 4.57:1; daha koyusu chroma tabanının altına düşüyor */
    --chart-4-soft-bg: color-mix(in srgb, var(--chart-4) 12%, var(--bg-card));
    --chart-4-on-soft: #064e58;   /* 8.13:1; --success-on-soft'tan ΔE 38.8 uzak */
}

[data-theme="dark"] {
    --accent:          #f0805a;
    --accent-strong:   #f7b9a2;
    --accent-soft:     #3a2019;
    --accent-soft-border: #9a3412;
    --accent-on-soft:     #fb923c;   /* 6.63:1 */

    /* Açık temanın koyulaştırılmış turuncusu koyu kartta 3.35:1 veriyor;
       marka turuncusu 6.57:1. --accent gibi bunun da tema başına değeri var. */
    --bs-primary:      #f0805a;
    --bs-primary-rgb:  240, 128, 90;

    --danger-soft-bg:     #3f1220;
    --danger-soft-border: #881337;
    --success-soft-bg:     #14532d;
    --success-soft-border: #166534;
    --success-on-soft:     #86efac;
    --warn-soft-bg:        #422006;
    --warn-soft-text:      #fde047;
    --warn-soft-border:    #713f12;
    --info:                #93c5fd;
    --info-soft-bg:        #1e2d4a;
    --info-soft-border:    #1e40af;
    --info-on-soft:        #93c5fd;   /* 7.61:1 */

    --highlight-bg:     #2d2408;

    /* Tek koyu kırmızı. Eskiden #f87171 ve #fca5a5 aynı rolü paylaşıyordu;
       #fca5a5 daha yüksek kontrast veriyor (9.16:1 / 6.28:1). */
    --danger:          #fda4af;

    --success:         #86efac;

    --warning:         #fbbf24;

    --bg-body:      #0a121c;
    --bg-card:      #101b28;
    --bg-hover:     #172434;
    --bg-cell-btn:  #172434;
    --text-primary: #e6e9ef;
    --text-muted:   #94a3b8;
    /* #64748b idi ve koyu temada da AA'yı geçmiyordu (gövde 3.95:1,
       kart 3.65:1). Açık temadaki ikiziyle birlikte düzeltildi (#68);
       #7c8b9f ikisinde de 5.0+ veriyor ve --text-muted'dan ayrışıyor. */
    --text-muted2:  #7c8b9f;
    --border-color: #22344a;
    --shadow:       rgba(0, 0, 0, .3);
    --shadow-card:  none;
    --shadow-table: rgba(0, 0, 0, .3);
    --stat-sayi:    #f0805a;
    --progress-text:#94a3b8;
    --table-stripe: #131f2d;
    --bg-subheader: #131f2d;
    --bg-thead:     #101b28;
    --border-card:  #22344a;
    --topbar-bg:    #101b28;
    --topbar-border:#22344a;
    --chart-grid:   rgba(255, 255, 255, .07);

    /* Aynı üç hue, koyu yüzey için yeniden adımlanmış — otomatik çevirme
       değil, seçilmiş değerler (OKLCH L 0.48–0.67 bandı, >= 3:1). */
    --chart-1:      #3987e5;
    --chart-2:      #d95926;
    --chart-3:      #d55181;
    --chart-4:      #0d9488;   /* koyu yüzeyde de bandın içinde */

    /* Koyu kartta tint %12'de görünmüyor, %22 gerekiyor. Metin adımları da
       ters yöne gider (açılır). --chart-2-on-soft marka turuncusunun kendisi. */
    --chart-1-soft-bg: color-mix(in srgb, var(--chart-1) 22%, var(--bg-card));
    --chart-1-on-soft: #9ec5f4;
    --chart-2-soft-bg: color-mix(in srgb, var(--chart-2) 22%, var(--bg-card));
    --chart-2-on-soft: #f0805a;
    --chart-3-soft-bg: color-mix(in srgb, var(--chart-3) 22%, var(--bg-card));
    --chart-3-on-soft: #e285a7;   /* 5.29:1 */
    --chart-4-soft-bg: color-mix(in srgb, var(--chart-4) 22%, var(--bg-card));
    --chart-4-on-soft: #86cac4;   /* 6.97:1; --success koyu adımından ΔE 36.3 uzak */
}

/* ── Bootstrap buton bağlaması ───────────────────────────────
   Yalnızca --bs-* değişkeni atar, kural yazmaz; token katmanında kalır.

   Bootstrap 5.3 buton varyantlarını derlerken hex'i gömer:
   `.btn-primary { --bs-btn-bg: #0d6efd }`. --bs-primary'yi ezmek butonu
   etkilemez — o yüzden .btn-primary bugüne dek Bootstrap mavisiydi.

   Hover/active zeminleri marka turuncusunun koyulaştırılmış karışımı;
   yüzdeler lacivert yazının AA'da kalacağı en koyu noktaya göre seçildi
   (hover %90 → 5.36:1, active %84 → 4.75:1; %80'de 4.32:1 ile düşüyor).
   Bu dosya bootstrap.min.css'ten SONRA yüklenmeli; aynı specificity. */
.btn-primary {
    --bs-btn-color:              var(--on-accent-solid);
    --bs-btn-bg:                 var(--accent-solid);
    --bs-btn-border-color:       var(--accent-solid);
    --bs-btn-hover-color:        var(--on-accent-solid);
    --bs-btn-hover-bg:           color-mix(in srgb, var(--accent-solid) 90%, #000);
    --bs-btn-hover-border-color: color-mix(in srgb, var(--accent-solid) 90%, #000);
    --bs-btn-active-color:       var(--on-accent-solid);
    --bs-btn-active-bg:          color-mix(in srgb, var(--accent-solid) 84%, #000);
    --bs-btn-active-border-color:color-mix(in srgb, var(--accent-solid) 84%, #000);
    --bs-btn-disabled-color:     var(--on-accent-solid);
    --bs-btn-disabled-bg:        var(--accent-solid);
    --bs-btn-disabled-border-color: var(--accent-solid);
    --bs-btn-focus-shadow-rgb:   240, 128, 90;
}
