/* OtoSOR color tokens.
   PARAMETRIC: consumers may re-theme by overriding the brand + semantic
   aliases on :root (or a [data-theme] scope) — components only reference
   semantic aliases, never raw scale values.

   ── KONTRAST DOĞRULAMA KURALI (R-24) ─────────────────────────────
   Bir metin token'ı BEYAZA göre değil, KULLANILDIĞI ZEMİNE göre doğrulanır.
   Aynı metin şu dokuz zeminde görünüyor: gray-0/25/50/100 · status-*-bg ·
   surface-selected. Beyazda geçen bir değer sunken zeminde düşebilir:
     --text-muted eski gray-400 #97A3B4 → beyazda 2.56  (her yerde FAIL)
     ara aday      gray-500 #66758A     → beyazda 4.69, sunken 4.03 (FAIL)
     kanonik       #5B6573              → en kötü 5.08  ✅
   Yeni bir metin token'ı eklerken dokuz zeminin EN KÖTÜSÜ ≥ 4.5 olmalı
   (büyük metin ve UI öğesi için ≥ 3.0). */
:root {
  /* ── Brand (from otosor-logo.svg) ─────────────────────────── */
  --brand-primary: #005282;      /* OtoSOR blue — "Oto" */
  --brand-accent:  #D80B15;      /* OtoSOR red — "SOR" */
  --brand-secondary: #0076A1;    /* logo swoosh teal-blue */

  /* Primary blue scale */
  --blue-50:  #E9F2F8;
  --blue-100: #CFE3EF;
  --blue-200: #9FC7DF;
  --blue-300: #5C9FC4;
  --blue-400: #2478A6;
  --blue-500: #005282;           /* base */
  --blue-600: #00436B;
  --blue-700: #003554;
  --blue-800: #05283D;
  --blue-900: #071C2A;

  /* Neutral (cool, blue-tinted) */
  --gray-0:   #FFFFFF;
  --gray-25:  #FAFBFC;
  --gray-50:  #F4F6F9;
  --gray-100: #EBEEF3;
  --gray-200: #DDE3EA;
  --gray-300: #C4CDD8;
  --gray-400: #97A3B4;
  --gray-500: #66758A;
  --gray-600: #4A5769;
  --gray-700: #354252;
  --gray-800: #222E3D;
  --gray-900: #131C28;

  /* ── Semantic status scales (fixed meanings: money in/out, risk) ── */
  --green-50:  #EAF6EE;
  --green-100: #CFEBD9;
  --green-500: #17843B;          /* success / paid / on-time */
  --green-600: #116B2F;
  --green-700: #0D5424;

  --yellow-50:  #FEF5E7;
  --yellow-100: #FCE8C5;
  --yellow-400: #F0A319;         /* warning icon/border */
  --yellow-600: #A96204;         /* warning text on light bg */
  --yellow-700: #8A5103;

  /* Ara durum KEHRİBARI — "iade / eksik evrak / geri gönderildi".
     Kullanıcı kararı (üç turda netleşti): İade SARI ailesinde olsun,
     turuncu değil. Yaklaşan (yellow-700, hue 35°) ile 7° komşu — bu
     BİLİNÇLİ: iki durum aynı aileyi paylaşır, ayrımı renk değil BİÇİM
     taşır. StatBar'da ■ yaklaşan / ◆ iade, buton grubunda ayırıcı çizgi
     + ikon (undo-2), rozette metin. Renk körü kullanıcı zaten hue ile
     ayıramıyordu; biçim kanalı her kullanıcı için çalışır.
     Ölçüm: fg #92400E beyaz 7.09 · sunken 6.37 · Reddet'ten 26°.
     Dolgu #D97706 üstünde beyaz 3.19 — bu yüzden --returned-solid yalnız
     AKSAN ve NOKTA içindir, üzerine metin yazılmaz; buton zaten outline. */
  --orange-50:  #FEF3C7;
  --orange-100: #FDE68A;
  --orange-500: #D97706;         /* returned / pending-step — kehribar */
  --orange-600: #92400E;

  --red-50:  #FDECED;
  --red-100: #FAD2D4;
  --red-500: #D80B15;            /* danger / overdue — same family as brand accent */
  --red-600: #B20911;
  --red-700: #8E070E;

  --cyan-50:  #E8F4F9;
  --cyan-100: #CBE6F1;
  --cyan-500: #0076A1;           /* info */
  --cyan-600: #005E81;

  /* ── Semantic aliases (what components actually use) ─────── */
  --surface-page:    var(--gray-50);
  --surface-card:    var(--gray-0);
  --surface-sunken:  var(--gray-100);
  --surface-header:  var(--blue-500);   /* app bar / brand surfaces */
  --surface-selected: var(--blue-50);

  --text-primary:   #16202B;                /* 16.46:1 */
  /* Gövde metni: gray-600 uzun paragrafta soluk kalıyordu (6.32:1 yeterli ama
     algıda gri). gray-700 ile 9.14:1 — birincil metinden hâlâ ayrık. */
  --text-secondary: var(--gray-700);        /* en kötü 9.14:1 */
  /* gray-400 (#97A3B4) METİN İÇİN KULLANILMAZ — 2.56:1. Kenarlık, ikon ve
     grafik izinde kalır. Metnin en açık tonu: */
  --text-muted:     #5B6573;                /* en kötü 5.08:1 */
  --text-inverse:   #FFFFFF;
  --text-link:      var(--blue-400);
  --text-brand:     var(--blue-500);

  --border-default: var(--gray-200);
  --border-strong:  var(--gray-300);
  --border-focus:   var(--blue-400);

  --interactive-primary:        var(--blue-500);
  /* blue-600 ile taban arasındaki fark gözle zor seçiliyordu (kullanıcı
     geri bildirimi). blue-700 hover'ı belirgin kılar; :active blue-800'e
     iner, böylece hover < active sıralaması korunur. */
  --interactive-primary-hover:  var(--blue-700);
  --interactive-primary-active: var(--blue-800);
  /* DİKKAT: --interactive-accent, --status-danger-solid ile AYNI değere
     çözülür (ikisi de red-500 = marka kırmızısı). Bu yüzden marka kırmızısı
     BUTON ZEMİNİ OLARAK KULLANILMAZ — "Excel" ile "İptal Et" ayırt edilemez.
     Marka aksanı yalnız logo, kabuk ve tipografik işaretlerde kalır. */
  --interactive-accent:         var(--red-500);
  --interactive-accent-hover:   var(--red-600);

  --status-success-fg:    var(--green-600);
  --status-success-bg:    var(--green-50);
  --status-success-solid: var(--green-500);
  --status-warning-fg:    var(--yellow-700);   /* yellow-600 = 4.38:1, AA altı */
  --status-warning-bg:    var(--yellow-50);
  --status-warning-solid: var(--yellow-400);
  --status-danger-fg:     var(--red-600);
  --status-danger-bg:     var(--red-50);
  --status-danger-solid:  var(--red-500);
  --status-info-fg:       var(--cyan-600);
  --status-info-bg:       var(--cyan-50);
  --status-info-solid:    var(--cyan-500);
  /* Ara durum: iade, eksik evrak, geri gönderildi. Ret DEĞİLDİR —
     geri dönülebilir bir adımdır ve danger ile aynı renge boyanmaz. */
  --status-returned-fg:    var(--orange-600);  /* 7.09:1 / beyaz · hue 32° · kehribar */
  --status-returned-bg:    var(--orange-50);
  --status-returned-solid: var(--orange-500);

  /* Amounts: money in = green, money out / debt = red, neutral = ink */
  --amount-positive: var(--green-600);
  --amount-negative: var(--red-600);
  --amount-neutral:  var(--text-primary);

  /* Koyu zeminde durum tonları: gray-800/900 üzerinde okunan açık
     varyantlar. Toast, ModeBanner ve koyu footer bunları kullanır —
     --status-*-solid koyu zeminde 3:1 UI eşiğini geçmiyor.
     Ölçüm (gray-800 #222E3D üzerinde): success 6.85 · danger 5.31 ·
     info 6.94 · warning 7.42. */
  --status-success-on-dark: #4ADE80;
  --status-danger-on-dark:  #F87171;
  --status-info-on-dark:    #38BDF8;
  --status-warning-on-dark: #FBBF5C;

  /* --status-warning-solid (#F0A319) ÜZERİNE METİN YAZILMAZ: beyaz yazı
     2.11:1. Yalnız ikon, kenarlık ve ilerleme çubuğu dolgusu. */

  /* ── KOYU ZEMİN ÜSTÜ ─────────────────────────────────────────────
     Topbar, BulkBar, Toast, ters footer: zemin koyu, üstündeki her şey
     BEYAZIN ŞEFFAFLIĞIYLA çizilir — sabit gri ile değil. Sebep: aynı
     katman farklı koyu zeminlerde (lacivert topbar, gray-800 bulkbar)
     doğru tonu kendiliğinden bulur; zemin değişirse takip eder.
     navigation.css bunu yerel olarak tanımlamıştı; diğer dört bileşen
     dosyası aynı değerleri HAM yazıyordu (59 ham renk). Tek kaynak burası.
     Dört doluluk + üç metin seviyesi YETERLİ — .14/.16/.20 gibi ara
     değerler tutarsızlıktı, normalize edildi. */
  --on-dark-text:        rgba(255, 255, 255, 0.92);  /* gövde */
  --on-dark-muted:       rgba(255, 255, 255, 0.82);  /* ikincil */
  --on-dark-faint:       rgba(255, 255, 255, 0.74);  /* ikon, ipucu */
  --on-dark-fill:        rgba(255, 255, 255, 0.12);  /* zemin katmanı */
  --on-dark-fill-hover:  rgba(255, 255, 255, 0.18);
  --on-dark-fill-active: rgba(255, 255, 255, 0.24);
  --on-dark-border:      rgba(255, 255, 255, 0.22);

  /* Diyalog perdesi ve odak halkası varyantları */
  /* Tonlu zemin (status-*-bg) üstünde ayırıcı: sabit gri yerine SİYAHIN
     şeffaflığı — hangi tint olursa olsun doğru koyuluğu bulur. */
  --border-on-tint: rgba(0, 0, 0, 0.06);

  --overlay-backdrop:  rgba(7, 28, 42, 0.45);        /* blue-900 tonlu, saf siyah değil */
  --focus-ring-danger: 0 0 0 3px rgba(216, 11, 21, 0.18);
  --focus-ring-inverse: 0 0 0 2px rgba(255, 255, 255, 0.9);

  /* TR plaka: resmî beyaz zemin + siyah yazı (mevzuat, tema değil) */
  --plate-bg:   #FFFFFF;
  --plate-text: #16202B;

  /* Charts: kategorik seri paleti (marka türevli). Durum anlamı taşıyan
     grafiklerde bunlar DEĞİL --status-*-solid kullanılır. */
  --chart-1: var(--blue-500);
  --chart-2: var(--cyan-500);
  --chart-3: var(--blue-300);
  --chart-4: var(--yellow-400);
  --chart-5: var(--gray-400);
  --chart-track: var(--gray-100);

  /* TR plaka bandı — resmi plaka mavisi, tema ile değişmez */
  --plate-band: #164194;

  --focus-ring: 0 0 0 3px rgba(36, 120, 166, 0.35);
}
