/* =====================================================================
   PTS-Ticari — Velzon üzerine PROTECHSOFT markası ve ön muhasebe
   ekranlarının ihtiyaç duyduğu birkaç düzeltme.
   ---------------------------------------------------------------------
   KURAL: Velzon'un kendi dosyaları (bootstrap/app/custom.min.css) HİÇ
   DEĞİŞTİRİLMEZ. Tema sürümü yükseldiğinde onlar olduğu gibi değişecek;
   bizim eklerimiz burada durursa güncelleme çatışma üretmez.

   Bu yüzden aşağıdakiler yalnız Bootstrap DEĞİŞKENLERİNİ eziyor,
   bileşen kurallarını değil.

   Marka: lacivert #0B3558 (ana), açık mavi #37B5FF (vurgu).
   ===================================================================== */

:root {
  /* Bootstrap'in birincil rengi = marka laciverdi.
     RGB üçlüsü de verilmek ZORUNDA: Velzon `rgba(var(--vz-primary-rgb), .1)`
     biçimini yumuşak arka planlarda (bg-primary-subtle) kullanıyor ve
     yalnız hex ezilirse o arka planlar eski mor renkte kalır. */
  --vz-primary:      #0B3558;
  --vz-primary-rgb:  11, 53, 88;

  --vz-secondary:     #37B5FF;
  --vz-secondary-rgb: 55, 181, 255;

  --vz-link-color:       #0B3558;
  --vz-link-hover-color: #37B5FF;
}

/* Kenar çubuğu koyu kipi marka laciverti olsun. Velzon'un koyu kenar
   çubuğu varsayılanı mavimsi gri; marka rengi burada duruyor. */
[data-sidebar="dark"] .app-menu,
[data-sidebar="dark"] .navbar-brand-box {
  background-color: #0B3558;
}
[data-sidebar="dark"] .navbar-menu .navbar-nav .nav-link.active,
[data-sidebar="dark"] .navbar-menu .navbar-nav .nav-link:hover {
  color: #ffffff;
}
[data-sidebar="dark"] .navbar-menu .navbar-nav .nav-link.active {
  background-color: rgba(55, 181, 255, .16);
}

/* ---------------------------------------------------------------------
   Sayı hizalama — ön muhasebede tutar sütunları alt alta okunur.
   `tabular-nums` olmadan 1 ile 8 farklı genişlikte basılır ve kuruşlar
   kaymış görünür. Rakam içeren HER hücrede kullanılıyor.
   --------------------------------------------------------------------- */
.sayi {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.sayi-sol { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* Belge numarası, barkod, vergi no gibi kodlar. */
.kod {
  font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
  font-size: .8125rem;
}

/* ---------------------------------------------------------------------
   BAKİYE RENGİ — ERP12'nin kuralı, sezgiye göre DEĞİL.

   Ekran görüntüsünde `B/A` sütunu: {B} YEŞİL, {A} KIRMIZI. Yani borç
   bakiyesi (müşterinin bize borcu, tahsil edeceğimiz para) yeşil;
   alacak bakiyesi (bizim ona borcumuz) kırmızı.

   İlk yazımda tersini yapmıştım — "borç kırmızıdır" diye. Yanlış:
   ön muhasebeci için alacak hanesinde oturan bir müşteri sorundur,
   borçlu müşteri normaldir. Kullanıcı ERP12'den geliyor, renk oradaki
   anlamı taşımak zorunda.

   BORÇ ve ALACAK sütunları ERP12'de RENKSİZDİR; yalnız Bakiye renkli.
   Buna uyuluyor: her sayıyı boyamak, hiçbirini boyamamakla aynı.
   --------------------------------------------------------------------- */
.bakiye-b { color: var(--vz-success); font-weight: 600; }   /* {B} borç bakiyesi  */
.bakiye-a { color: var(--vz-danger);  font-weight: 600; }   /* {A} alacak bakiyesi */

/* Vadesi geçmiş — bu ERP12'de yok, bizim eklediğimiz sütun. Gecikme her
   durumda kötü haber olduğu için işaretten bağımsız kırmızı. */
.gecikmis { color: var(--vz-danger); font-weight: 600; }

/* Grid alt toplam satırı — ERP12'de her listenin altında duruyor ve ön
   muhasebeci "bu süzgeçte toplam ne" sorusunu oradan cevaplıyor. */
.tablo-toplam td {
  border-top: 2px solid var(--vz-border-color);
  font-weight: 600;
  background: var(--vz-light);
}

/* ---------------------------------------------------------------------
   Belge satır tablosu (irsaliye/fatura kesme ekranı)
   Satır yüksekliği bilerek düşük: ekranda tek seferde daha çok satır
   görünsün, kullanıcı kaydırmadan toplamı görebilsin.
   --------------------------------------------------------------------- */
.satir-tablo > :not(caption) > * > * { padding: .35rem .5rem; }
.satir-tablo input.form-control,
.satir-tablo select.form-select {
  padding: .25rem .5rem;
  font-size: .8125rem;
  min-height: auto;
}
.satir-tablo input[type="number"] { text-align: right; }

/* Toplam kutusu — belge altında sağda duran özet. */
.toplam-satir { display: flex; justify-content: space-between; padding: .25rem 0; }
.toplam-satir.genel {
  border-top: 1px solid var(--vz-border-color);
  margin-top: .35rem; padding-top: .5rem;
  font-size: 1.05rem; font-weight: 600;
}

/* Boş liste bildirimi. */
.bos-durum { padding: 2.5rem 1rem; text-align: center; color: var(--vz-text-muted); }
.bos-durum i { font-size: 2.25rem; display: block; margin-bottom: .5rem; opacity: .45; }

/* ---------------------------------------------------------------------
   AÇIKLAMA KUTUSU (`alert-light`) OKUNMUYORDU.

   ÖLÇÜLDÜ (2026-09-06, headless Edge, `?s=kasa`): kutunun yazı rengi
   `#CED4DA`, beyaza karşı karşıtlık oranı **1,44** — WCAG'ın küçük yazı
   için istediği 4,5'in üçte biri. Ekran görüntüsünde metin neredeyse hiç
   görünmüyor. Kutunun içindeki `<strong>` de aynı renkte, yani
   VURGULANMIŞ kelime bile okunmuyordu.

   Sebep tema değişkeni: Bootstrap `.alert-light` için
   `--vz-alert-color: var(--vz-light-text-emphasis)` yazıyor ve o değişken
   `#ced4da`. Değişken "açık renkli bir zemin üzerinde açık gri yazı"
   varsayımıyla kurulmuş; bizim kutularımız BEYAZ kart içinde duruyor.

   ETKİSİ ÖLÇÜLDÜ: `alert-light` 16 ekranda 26 kez geçiyor, ayrıca
   `genel/BasitTanim.php` her tanım ekranı için bir tane basıyor. Hepsi
   AÇIKLAMA metni — yani ekranın ne işe yaradığını anlatan, "ilkokul
   mezunu da yapabilmeli" kuralının tam da dayandığı yazı.

   TEMA DOSYASI DEĞİŞTİRİLMİYOR: yalnız `.alert-light`in kendi iki
   değişkeni eziliyor. `--vz-light-text-emphasis` doğrudan ezilseydi o
   değişkeni kullanan başka bileşenler de değişirdi.
   --------------------------------------------------------------------- */
.alert-light {
  --vz-alert-color: #4A5560;        /* beyaza karşı ~8,1 : 1 */
  --vz-alert-link-color: #0B3558;   /* marka laciverti — bağlantı belli olsun */
}
/* Kutu içindeki simge de aynı griyi alıyordu; okunur tonda kalsın ama
   yazıdan bir tık silik dursun — vurgu metnin kendisinde. */
.alert-light > i,
.alert-light .alert-simge { color: #6C7A89; }

/* Yazdırırken kabuk çıkmasın — irsaliye/fatura çıktısı için. */
@media print {
  #page-topbar, .app-menu, .footer, #back-to-top, .yazdirma-disi { display: none !important; }
  .main-content { margin-left: 0 !important; }
  .page-content { padding: 0 !important; }
  .card { border: none !important; box-shadow: none !important; }
}

/* ---------------------------------------------------------------------
   Giriş ekranı arka planı — marka laciverti.
   Velzon burada kendi `auth-one-bg.png` görselini ve mor tonunu
   kullanıyor. O görsel KOPYALANMADI (tema klasöründen yalnız gerçekten
   kullanılan varlıklar alınıyor); yerine düz bir marka geçişi konuyor.
   `.bg-overlay` temanın kendi karartma katmanı — görsel olmadığında
   rengi ikinci kez koyulaştırıyor, o yüzden saydamlaştırılıyor.
   --------------------------------------------------------------------- */
.auth-one-bg {
  background-image: none;
  background-color: #0B3558;
  background: linear-gradient(160deg, #0B3558 0%, #123F66 55%, #082742 100%);
}
.auth-one-bg .bg-overlay { opacity: 0; }
.auth-page-wrapper .shape > svg { fill: var(--vz-body-bg); }

/* ---------------------------------------------------------------------
   KABUKSUZ SAYFALAR — hata, firma-yok, firma-kapali.

   Bu üç sayfa kabuğun (`duzen.php`) DIŞINDA basılıyor: hata anında
   menü ve tema dosyaları olmayabilir, o yüzden yalnız bu dosyayı
   bağlıyorlar — Bootstrap YOK.

   ÖLÇÜLDÜ (2026-09-06, headless Edge, `?s=kasa` + OKUYUCU rolü):
   `orta-sayfa`, `orta-kart`, `giris-marka`, `marka-ad`, `marka-ek`,
   `hata-metin`, `kucuk` sınıflarının HİÇBİRİ hiçbir CSS dosyasında
   tanımlı değildi. Ölçülen sonuç: `body` margin 8px, yazı tipi
   "Times New Roman", arka plan saydam, `.orta-kart` genişliği 1160 px
   (yani kart değil, düz metin). Marka "PTSTicari" diye bitişik
   basılıyordu. Kullanıcının yetkisi olmayan bir adrese girmesi
   bu ekranı görmeye yetiyordu.

   Bootstrap olmadığı için burada `--vz-*` DEĞİŞKENLERİ KULLANILMIYOR:
   onlar Velzon dosyalarından geliyor ve bu sayfalarda yüklü değil.
   Yalnız bu dosyanın kendi `:root` bloğu yükleniyor; yine de okunması
   kolay olsun diye gerçek değer yazıldı.
   --------------------------------------------------------------------- */
.orta-sayfa {
  margin: 0;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  background: linear-gradient(160deg, #0B3558 0%, #123F66 55%, #082742 100%);
  font-family: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;
  font-size: .9375rem;
  line-height: 1.55;
  color: #1B2B3A;
}

.orta-kart {
  width: 100%;
  max-width: 30rem;
  background: #ffffff;
  border-radius: .75rem;
  padding: 2rem 1.75rem;
  box-shadow: 0 1.5rem 3rem rgba(0, 0, 0, .28);
}
.orta-kart h1 {
  font-size: 1.25rem;
  font-weight: 600;
  margin: 0 0 .75rem;
  color: #0B3558;
}
.orta-kart p { margin: 0 0 .75rem; }
.orta-kart p:last-child { margin-bottom: 0; }
.orta-kart a { color: #0B3558; }
.orta-kart a:hover { color: #37B5FF; }

/* Marka — iki `span` bitişik basılıyordu ("PTSTicari"). Boşluk HTML'e
   değil buraya konuyor; HTML'e konsaydı üç dosyada birden düzeltmek
   gerekirdi. */
.giris-marka {
  margin-bottom: 1.25rem;
  font-size: 1.375rem;
  letter-spacing: .01em;
}
.marka-ad { font-weight: 700; color: #0B3558; }
.marka-ek { font-weight: 400; color: #37B5FF; margin-left: .3em; }

/* Hata ayrıntısı — geliştirmede dosya yolu ve satır numarası basılıyor.
   `pre` varsayılan olarak SARMIYOR; sarmazsa uzun yol kartı yatay
   kaydırırdı. 390 px'te de ölçüldü: gövde kaymıyor. */
.hata-metin {
  margin: 0;
  padding: .75rem .875rem;
  background: #F3F5F7;
  border: 1px solid #E1E6EB;
  border-radius: .5rem;
  font-family: ui-monospace, "Cascadia Mono", Consolas, monospace;
  font-size: .8125rem;
  color: #46586B;
  white-space: pre-wrap;
  word-break: break-word;
  overflow-wrap: anywhere;
}
/* Canlıda `$mesaj` genel bir cümle; boş kalırsa boş gri kutu görünmesin. */
.hata-metin:empty { display: none; }

/* Kart altındaki ikincil satır (destek adresi). */
.kucuk { font-size: .8125rem; color: #6C7A89; }

/* Kabuksuz sayfada geri dönüş düğmesi. Kullanıcı hata ekranında
   kalmasın — menü yok, tarayıcının geri düğmesinden başka yolu yoktu. */
.orta-kart .geri-don {
  display: inline-block;
  margin-top: 1.25rem;
  padding: .5rem 1rem;
  border-radius: .375rem;
  background: #0B3558;
  color: #ffffff;
  text-decoration: none;
  font-size: .875rem;
}
.orta-kart .geri-don:hover { background: #123F66; color: #ffffff; }
