/*!
 * ============================================================
 *  IKYSIS — VNL Theme köprüsü  (ŞEMADAN BAĞIMSIZ)
 *
 *  BU DOSYA NE YAPAR:  VNL Theme'in görüntüsünü DEĞİŞTİRMEZ.
 *  Yalnız üç şeyi yapar:
 *
 *    1. Skin'in verdiği ama VNL çekirdeğinin tüketmediği renk
 *       token'larını bağlar (üst çubuk / alt bilgi zemini).
 *    2. IKYSIS'in tam genişlik yerleşimini korur.
 *    3. VNL'de KARŞILIĞI OLMAYAN, IKYSIS'e özgü bileşenleri
 *       (TopMessageShow kutusu, #preloader spinner'ı, dil bayrakları,
 *       personel arama önerisi) VNL'in kendi token'larıyla çizer.
 *
 *  BU DOSYA NE YAPMAZ — ve neden:
 *
 *    Köşe yarıçapı, gölge, kenarlık, boşluk ölçeği, kontrol
 *    yükseklikleri, tipografi ölçeği, durum renkleri, odak halkaları,
 *    geçişler ve bileşen görünümleri (.card, .btn, .form-control,
 *    .form-select, .modal, .badge, .table, VnlTable) VNL THEME'İNDİR.
 *    Burada tek satırla bile ezilmez.
 *    TEK İSTİSNA §9: kırıntının yazı tipi ailesi (kullanıcı kararı,
 *    08.10.2026 — kod yazı tipi gezinme yolunda yadırgandı).
 *
 *    Önceki sürüm tam bunu yapıyordu: 668 satırın büyük kısmı VNL'i
 *    Bootstrap 3'e benzetmek içindi (border-radius:0, box-shadow:none,
 *    34px kontroller, .panel/.btn-xs/.btn-default/.label karşılıkları,
 *    .hidden/.pull-right/.well yastıkları). Sonuç çalışan ama tasarım
 *    dili olmayan bir melezdi. O katman tümüyle kaldırıldı.
 *
 *    Bootstrap 3 sınıfları artık YASTIKLANMIYOR, ÇEVRİLİYOR:
 *      .form-group   → .mb-3            .control-label → .form-label
 *      .btn-default  → .btn-secondary   .pull-right    → .float-end
 *      .label-*      → .badge.text-bg-* .hidden        → .d-none
 *      select.form-control → .form-select
 *      .panel-primary başlığı → .card-header.bg-primary.text-white
 *      .modal-header-primary  → .modal-header.bg-primary.text-white
 *      .required     → .text-danger     .img-responsive → .img-fluid
 *    Çevrilmemiş bir sınıf artık SESSİZCE yastıklanmaz; hiçbir şey
 *    yapmaz ve bu görünür — teşhis, kamuflajdan iyidir.
 *
 *  RENK NEREDE:  assets/css/skins/<şema>.css. Şemadan şemaya değişen
 *  üç değer orada (kenar çubuğu, üst çubuk, vurgu); üretimi
 *  tools/skin-uret.php yapıyor. Bu dosya renk TANIMLAMAZ, yalnız
 *  skin'in tanımladığı iki token'ı VNL'in görmediği yere taşır.
 *
 *  Yükleme sırası (view/includes/static/head-standard-vnl.php):
 *      vnl.min.css → bi.min.css → fa.min.css → vnltable.css
 *      → vnltable-skin-iky.css (VnlTable skin'i; tablo görünümü orada)
 *      → BU DOSYA → skins/<şema>.css
 *
 *  vnl/ dizinine dokunulmuyor.
 * ============================================================
 */

/* ================================================================
   1. Renk bağlantısı — skin'in verdiği, VNL'in tüketmediği iki token
   ================================================================
   VNL'de üst çubuğun AYRI bir zemin token'ı yok: .vnl-topbar zeminini
   kenar çubuğundan alıyor (`background: var(--vnl-sidebar-bg)`).
   IKYSIS'te ikisi farklı renk — 20 şemanın hepsinde. Token'ın adını
   biz uyduruyoruz (--iky-topbar-bg), değerini skin veriyor.

   Yalnız ZEMİN veriliyor: yazı, kenarlık ve dolgu VNL'in kendi koyu
   modu token'larından geliyor, çünkü iki öğe de markup'ta
   data-bs-theme="dark" taşıyor. */
.vnl-topbar,
.vnl-footer {
	background: var(--iky-topbar-bg, var(--vnl-sidebar-bg));
}

/* ================================================================
   2. Yerleşim — IKYSIS içeriği TAM GENİŞLİK
   ================================================================
   Sayfalar .container-fluid kullanmalı (tema/01 §2.6); VNL'in docs
   görünümleri .container-xxl (maks 1320px). Biri unutursa diye tavan
   kaldırılıyor: genişlik yerleşim kararıdır, IKYSIS'indir. */
.app-container.container-xxl { max-width: none; }

/* ================================================================
   3. Akış dışına alınması gerekenler — YAPISAL, görsel değil
   ================================================================
   body.vnl-app bir FLEX KABI. IKYSIS'in eski kabuğunda gövdenin
   doğrudan çocuğu olan iki parça vardı ve orada zararsızdı; flex
   kabında ise birer FLEX ÖĞESİ olup yer kaplıyorlar. #preloader
   sarmalayıcısı 1175px alıp .vnl-main'i ekran dışına itiyordu
   (main genişliği 0, x=1425). Hata görünürde "sayfa boş açıldı" diye
   çıkıyor ve nedeni hiç belli olmuyor. */
body.vnl-app > #preloader,
body.vnl-app > #pdf_download_link {
	position: fixed;
	inset:    0 auto auto 0;
	width:    0;
	height:   0;
	z-index:  1090;
}

/* ================================================================
   4. IKYSIS'e özgü bileşenler — VNL'de karşılığı YOK
   ================================================================
   Buradaki her kural bir SÖZLEŞMEnin görsel yarısıdır: sınıf adını
   değiştirmek assets/js/_standart-vnl.js'i ya da sunucunun döndürdüğü
   HTML'i sessizce öldürür (tema/03 §8). Ölçüler VNL'in token'larından
   türetiliyor — kendi yarıçapını, gölgesini, ölçeğini dayatan tek
   değer yok. */

/* --- 4.1 TopMessageShow() — 225 görünüm dosyası çağırıyor.
       Markup view/includes/static/spinner.php'de; iki kutu da orada
       basılı duruyor ve JS yalnız fadeIn/fadeOut yapıyor. --- */
.page_mess_animate {
	position:    fixed;
	inset:       0 0 auto;
	z-index:     1080;
	padding:     .75rem 1rem;
	font-size:   var(--bs-body-font-size);
	line-height: var(--bs-body-line-height);
	text-align:  center;
	box-shadow:  var(--vnl-raised-shadow);
}
.page_mess_ok {
	color:      var(--bs-success-text-emphasis);
	background: var(--bs-success-bg-subtle);
	border-bottom: 1px solid var(--bs-success-border-subtle);
}
.page_mess_error {
	color:      var(--bs-danger-text-emphasis);
	background: var(--bs-danger-bg-subtle);
	border-bottom: 1px solid var(--bs-danger-border-subtle);
}

/* --- 4.2 spinnerShow() / spinnerHide() / AjaxError()
       36 dosya doğrudan $('.spinner').show() çağırıyor. VNL'in kendi
       örtüsü (#loadingSpinner.vnl-spinner-overlay) de sayfada duruyor
       ama onu vnl.js ve vnltable.js sürüyor; ikisi ayrı kanal. --- */
#preloader .spinner.demo {
	position:   fixed;
	inset:      0;
	z-index:    1085;
	background: rgba(0, 0, 0, .5);
}
#preloader .spinner.demo .center img {
	position: absolute;
	inset:    0;
	margin:   auto;
}

/* --- 4.3 loadingButton() / .disabledbutton
       Bir bölgeyi "işlem sürüyor" diye kilitleyen IKYSIS kalıbı.
       BS5'te karşılığı yok (.disabled yalnız düğmelerde). --- */
.disabledbutton {
	pointer-events: none;
	opacity:        .5;
}

/* --- 4.4 Dil değiştirme bayrakları (kenar çubuğu kullanıcı paneli) --- */
.flag {
	width:  20px;
	height: 20px;
	margin: 0 2px;
	cursor: pointer;
	transition: transform .15s ease;
}
.flag:hover { transform: scale(1.3); }

/* --- 4.5 Personel arama önerisi
       Sunucu HAZIR HTML döndürüyor (app/standart/FindUserSuggestions:
       <ul><li class="list-title"><div class="content title">…), yani bu
       yapı bir SÖZLEŞME — eylem dosyası da onun parçası. Panel, içinde
       durduğu kutunun ALTINDAN başlar: `top: 100%` kontrol yüksekliğine
       bağlı değildir, eski `top: 34px` bağlıydı. --- */
.autocomplete { position: relative; }
.autocomplete .AutoCompleteContent {
	display:       none;
	position:      absolute;
	top:           100%;
	left:          0;
	right:         0;
	max-height:    250px;
	overflow:      auto;
	z-index:       var(--bs-dropdown-zindex, 1000);
	color:         var(--bs-body-color);
	background:    var(--vnl-surface, var(--bs-body-bg));
	border:        1px solid var(--bs-border-color);
	border-radius: var(--bs-border-radius);
	box-shadow:    var(--vnl-raised-shadow);
}
.autocomplete .AutoCompleteContent ul,
.autocomplete .AutoCompleteContent ul li { margin: 0; padding: 0; list-style: none; }
.autocomplete .AutoCompleteContent ul li { display: block; cursor: pointer; border-bottom: 1px solid var(--bs-border-color); }
.autocomplete .AutoCompleteContent ul li:hover { background: var(--bs-tertiary-bg); }
.autocomplete .AutoCompleteContent ul li.list-title { font-weight: 600; cursor: default; }
.autocomplete .AutoCompleteContent ul li.list-title:hover { background: none; }
.autocomplete .AutoCompleteContent ul li .content { display: inline-block; }
.autocomplete .AutoCompleteContent ul li .content span { display: block; padding: .5rem; }
.autocomplete .AutoCompleteContent ul li .title { width: 50%; }
.autocomplete .AutoCompleteContent ul li.list-title .title,
.autocomplete .AutoCompleteContent ul li.list-title .titlefull,
.autocomplete .AutoCompleteContent ul li.list-title .detail50 { background: var(--bs-secondary-bg); }
.autocomplete .AutoCompleteContent ul li.list-title .titlefull { width: 100%; }
.autocomplete .AutoCompleteContent ul li .detail25 { width: 12.5%; }
.autocomplete .AutoCompleteContent ul li .detail33 { width: 16.6%; }
.autocomplete .AutoCompleteContent ul li .detail50 { width: 25%; }
/* Üst çubuktaki arama kutusunda satır tek sütuna düşüyor. */
.vnl-topbar #topbar-search .autocomplete .AutoCompleteContent ul li .title { width: 100%; }

/* --- 4.6 Satır tıklamalı seçim
       VnlTable'ın kendi seçimi onay kutusuyla; IKYSIS SATIRIN TAMAMINI
       tıklatıyor (assets/js/vnltable-iky.js — IkyTable.selectable).
       Seçili satırın GÖRÜNÜMÜ VNL'in: köprü satıra hem .selected
       (IKYSIS sözleşmesi) hem .vnl-row-selected (VNL'in kendi sınıfı)
       koyuyor. Burada yalnız tıklanabilirlik imleci var. --- */
.vnl-table tbody tr[data-key] { cursor: pointer; }

/* --- 4.7 Kullanıcı paneli — DARALTILMIŞ kenar çubuğunda
       IKYSIS'in kullanıcı paneli (avatar + ad + bayraklar) VNL'de YOK;
       VNL'in mini/hover kuralları yalnız kendi yuvalarını (.vnl-sidebar-brand,
       .vnl-brand-text, .vnl-menu-*) daraltıyor. Panel o listede olmadığı için
       kenar çubuğu 68px'e inince 45px avatar + 2×5px halka = 55px şeritten
       TAŞIYORDU (kullanıcı ekran görüntüsü: fotoğraf kenar çubuğunun dışında).

       Buradaki kural yeni bir GÖRÜNÜM getirmiyor, VNL'in kendi daraltma
       davranışını IKYSIS'e özgü bir bileşene UZATIYOR: seçici VNL'in
       mini/hover seçicilerinin birebir aynısı, ölçü de VNL'in kendi mini
       genişliğinden çıkıyor (--vnl-sidebar-width-mini 4.25rem = 68px, iki
       yanda .5rem dolgu düşünce 52px iç genişlik kalıyor; 40px avatar +
       2×5px halka = 50px sığıyor). Yarıçap, renk ve halkanın kendisi
       değişmiyor — yalnız ölçek daraltılmış hâle uyuyor.

       Halkanın KALINLIĞI burada küçültülmüyor: kenarlık markup'ta satır içi
       stille duruyor (`style="border: 5px solid …"`) ve satır içi stil her
       stil sayfası kuralını yener. Buraya `border-width` yazmak SESSİZCE
       hiçbir şey yapmayan bir satır olurdu — ölçüldü, yazılmadı. */
html[data-vnl-sidebar=mini] .vnl-sidebar .iky-user-panel,
html[data-vnl-sidebar=hover] .vnl-sidebar:not(:hover):not(:has(:focus-visible)) .iky-user-panel {
	justify-content: center;
	padding-inline:  .5rem;
}
html[data-vnl-sidebar=mini] .vnl-sidebar .iky-user-panel img,
html[data-vnl-sidebar=hover] .vnl-sidebar:not(:hover):not(:has(:focus-visible)) .iky-user-panel img {
	width:        2.5rem;
	height:       2.5rem;
}


/* ================================================================
   5. Üst çubuk — KONUM ve RENK IKYSIS'in (GEOMETRİ VNL'in)
   ================================================================
   VNL çekirdeği (.vnl-topbar-item, .vnl-topbar-brand) üst çubuğu KOYU
   KENAR ÇUBUĞU mantığıyla çiziyor: ikon/metin nötr gri (#9aa69f), yalnız
   hover'da aydınlanıyor; logo 1.75rem'e kırpık; marka metni gövde ölçeğinde.
   IKYSIS'te şerit skin rengindedir (renkli/koyu zemin) ve eski kabuktaki
   gibi görünmeli: üstündeki HER ikon/metin BEYAZ, logo 47px, firma adı
   20px, kullanıcı adı 15px. Kural 1 gereği burada YALNIZ konum ve renk
   ezilir; kare ölçüsü, gap ve hizalama (geometri) VNL'in kalır — ölçüldü,
   ikonlar zaten 2.375rem eşit kare ve eşit aralıklı. */

/* --- 5.1 Beyaz metin/ikon: gri idle rengini ez (geometriye dokunma) --- */
.vnl-topbar .vnl-topbar-item { color: #fff; }
.vnl-topbar .vnl-topbar-item:hover,
.vnl-topbar .vnl-topbar-item:focus-visible,
.vnl-topbar .vnl-topbar-item[aria-expanded="true"] {
	color:      #fff;
	background: rgba(255, 255, 255, .15);
}
/* Marka bağlantısı (logo + portal firma adı) ve × kimlik-taklidi rozeti de beyaz. */
.vnl-topbar .vnl-topbar-brand,
.vnl-topbar .vnl-topbar-brand:hover { color: #fff; }

/* --- 5.2 Logo: eski kabuktaki gibi 47px (VNL 1.75rem'e kırpıyordu) --- */
.vnl-topbar .vnl-topbar-brand img {
	height:     47px;
	max-height: 47px;
	width:      auto;
	object-fit: contain;
}
/* Telefonda (<576px) VNL'in kendi boyu: 47px'lik geniş ürün logosu (pss/uys
   146px) şeridi 390px'te yatay taşırıyordu (scrollWidth 462, 08.10.2026
   ölçüldü); eski kabukta bu genişlikte üst çubuk zaten başka çiziliyordu. */
@media (max-width: 575.98px) {
	.vnl-topbar .vnl-topbar-brand img {
		height:     1.75rem;
		max-height: 1.75rem;
	}
	/* Portaldaki (top-nav) firma adı .text-truncate taşıyor ama marka bağlantısı
	   küçülemediği için kısalmıyordu (logo + ad 235px, şerit 405px). */
	.vnl-topbar .vnl-topbar-brand,
	.vnl-topbar .vnl-topbar-brand span {
		min-width:   0;
		flex-shrink: 1;
	}
}

/* --- 5.3 Firma adı 20px — iki yerde:
       (a) portal/top-nav: üst çubuk markasının içindeki span;
       (b) A/B ailesi: kenar çubuğunun tepesindeki marka metni.
       (b)'de KAPSAM .vnl-sidebar-brand altına: aynı .vnl-brand-text sınıfı ALT
       taraftaki kullanıcı panelinde de (iky-user-panel, .vnl-sidebar-brand'ın
       DIŞINDA) var — o BÜYÜMEZ. Kullanıcı adı 15px kalır (5.4). --- */
.vnl-topbar .vnl-topbar-brand span {
	font-size:   20px;
	line-height: 1.2;
}
.vnl-sidebar-brand .vnl-brand-text {
	font-size: 20px;
	/* Firma adı dar şeritte düğmeye taşmadan gerektiğinde iki satıra iner.
	   İki yandaki dolgu küçültme düğmesine yer bırakır. */
	padding-inline: 2.75rem !important;
	min-width: 0;
	white-space: normal;
	overflow-wrap: anywhere;
	line-height: 1.15;
}

/* Menü adlarını aynı sidebar genişliğinde tam göster; satır yüksekliği
   gerektiğinde büyür, uzun listeler nav alanında kaydırılır. */
.vnl-sidebar .vnl-menu-title {
	min-width: 0;
	white-space: normal;
	overflow: visible;
	text-overflow: clip;
	overflow-wrap: anywhere;
	line-height: 1.3;
}

/* --- 5.4 Kullanıcı adı (topbar-user) 15px, beyaz (5.1'den) --- */
.vnl-topbar .topbar-user .text-truncate { font-size: 15px; }

/* ================================================================
   6. Üst çubuk açılırları (ürün + firma geçişi) — IKYSIS bileşeni
   ================================================================
   VNL'de karşılığı yok. İki açılırda da logo boyutsuz basılıyordu (ürün:
   col-3 <img> doğal boyutta; firma: .img-fluid max-width:100%), logo ada
   biniyordu. Çözüm: logo SABİT DAR kutuda (object-fit: contain), ad yanında
   dikey ortalı, temiz sarar; satırlar tutarlı hizalı. Tasarım VNL
   geometrisi içinde (padding/hover/ayraç/yuvarlatma); .active firma vurgusu
   korunur. Firma açılırında en üstte istemci-taraflı süzgeç (JS:
   _standart-vnl.js) — firma çok olduğunda ada göre süzer. */

.dropdown-switch-product { --bs-dropdown-min-width: 18rem; max-height: 70vh; overflow-y: auto; }
.dropdown-switch-company { --bs-dropdown-min-width: 17rem; --bs-dropdown-padding-y: 0; max-height: 70vh; overflow-y: auto; }

/* --- 6.0 Ortak satır dokusu: hizalı, rahat dolgu, belirgin hover, ince ayraç --- */
.dropdown-switch-product li,
.dropdown-switch-company li {
	display:       flex;
	align-items:   center;
	gap:           .65rem;
	padding:       .4rem .6rem;
	border-radius: var(--bs-border-radius);
	cursor:        pointer;
	transition:    background-color .12s ease;
}
.dropdown-switch-product li + li,
.dropdown-switch-company li + li { border-top: 1px solid var(--bs-border-color-translucent); }
.dropdown-switch-product li:hover,
.dropdown-switch-company li:hover { background: var(--bs-tertiary-bg); }

/* --- 6.1 Ürün geçişi: BS row (col-3 logo + col-9 ad); logo 36px dar kutu.
       flex-wrap:nowrap — uzun adlı satırlarda (İKYS/epds) BS .row sarıp adı
       logonun ALTINA düşürüyordu (ad 40px sola kayıyordu); satır sarmaz. --- */
.dropdown-switch-product li > .row { flex: 1 1 auto; flex-wrap: nowrap; margin: 0; }
.dropdown-switch-product .col-3 {
	flex: 0 0 40px; width: 40px; max-width: 40px; padding: 0;
}
.dropdown-switch-product .col-3 img {
	width: 36px; height: 36px; max-width: 36px;
	object-fit: contain; display: block; margin: 0 auto;
}
.dropdown-switch-product .col-9 { flex: 1 1 auto; width: auto; padding-left: .65rem; }

/* --- 6.2 Firma geçişi: img + span; logo 32px, tutarlı --- */
.dropdown-switch-company img {
	flex: 0 0 auto; width: 32px; height: 32px; max-width: 32px;   /* .img-fluid yerine */
	object-fit: contain;
}
.dropdown-switch-company li.active {
	background:  var(--bs-primary-bg-subtle);
	color:       var(--bs-primary-text-emphasis);
	font-weight: 600;
}

/* --- 6.3 Ad metni (iki açılır): temiz sarar --- */
.dropdown-switch-product .col-9 span,
.dropdown-switch-company span {
	display: block; flex: 1 1 auto;
	white-space: normal; overflow-wrap: anywhere; line-height: 1.25;
}

/* --- 6.4 Firma süzgeci: üstte SABİT (sticky), süzme/tıklama dışı --- */
.dropdown-switch-company li.dropdown-switch-search {
	display: block; position: sticky; top: 0; z-index: 2;
	padding: .5rem; margin: 0 0 .25rem;
	background: var(--bs-dropdown-bg, #fff);
	border-top: 0;
	border-bottom: 1px solid var(--bs-border-color-translucent);
	border-radius: 0;
	cursor: auto;
}
.dropdown-switch-company li.dropdown-switch-search:hover { background: var(--bs-dropdown-bg, #fff); }
.dropdown-switch-company li.dropdown-switch-search + li { border-top: 0; }

/* ================================================================
   7. Dolu renkli düğmeler — metin BEYAZ (YALNIZ AYDINLIK TEMA)
   ================================================================
   VNL çekirdeği dolu düğmelere koyu metin veriyor
   (.btn-success/-danger/-info: --bs-btn-color:#06130c); teal/kırmızı/mavi
   zeminde kötü duruyor, IKYSIS geleneği beyaz. Kural 1: renk IKYSIS'in.
   btn-primary'yi skin dosyası zaten beyaz yapıyor (skins/*.css). Kapsam
   skin'lerle AYNI (`:not([data-bs-theme=dark])`) — karanlıkta VNL'in kendi
   koyu paleti kalır, bozulmaz. HARİÇ: btn-warning (#d97706 amber) ve
   btn-light (açık zemin) — koyu metin daha okunur, VNL'inki bırakıldı.
   Soft/outline düğmeler zaten renkli metinli, dokunulmuyor. */
:root:not([data-bs-theme="dark"]) .btn-success,
:root:not([data-bs-theme="dark"]) .btn-danger,
:root:not([data-bs-theme="dark"]) .btn-info {
	--bs-btn-color:        #fff;
	--bs-btn-hover-color:  #fff;
	--bs-btn-active-color: #fff;
}

/* --- 7.1 Pasif düğme: metin SOLUK (beyaz değil) — "devre dışı" okunsun.
       Yukarıdaki beyazı ve skin'in .btn-primary'sini daha yüksek özgüllükle
       (0,4,0) ezer; zemin/opaklık VNL'in kendi disabled görünümünde kalır.
       (Beyaz kural :disabled'ı kapsamıyor; burada --bs-btn-disabled-color
       soluğa çekiliyor.) --- */
:root:not([data-bs-theme="dark"]) .btn:disabled,
:root:not([data-bs-theme="dark"]) .btn.disabled,
:root:not([data-bs-theme="dark"]) fieldset:disabled .btn {
	--bs-btn-disabled-color: var(--bs-secondary-color);
}

/* --- 7.2 Renkli badge metni BEYAZ (düğmelerdeki kararla aynı).
       VNL .text-bg-* dolu yüzeye koyu metin (#06130c !important) veriyor;
       renkli badge'de kötü. IKYSIS `label label-*` → iky_cls `.badge.text-bg-*`
       de buraya düşer. İSTİSNA: text-bg-warning (amber) ve text-bg-light (açık
       zemin) kontrast için KOYU kalır; secondary/dark zaten beyaz; `.badge.bg-*`
       zaten beyaz (.badge --bs-badge-color:#fff). Karanlık tema kapsam dışı. --- */
:root:not([data-bs-theme="dark"]) .badge.text-bg-primary,
:root:not([data-bs-theme="dark"]) .badge.text-bg-success,
:root:not([data-bs-theme="dark"]) .badge.text-bg-danger,
:root:not([data-bs-theme="dark"]) .badge.text-bg-info {
	color: #fff !important;
}

/* ================================================================
   8. FA4 ikon fontu önceliği — v4 "-o" çerçeveli glifler (KÖK NEDEN)
   ================================================================
   Çekirdek FA7 Free yüklüyor; v4 shim'leri çerçeveli "-o" glifleri
   (trash-o, pencil-square-o, building-o, share-square-o, file-excel-o,
   check-square-o…) `.fa.fa-X{font-family:"Font Awesome 7 Free";font-weight:400}`
   ile REGULAR stile bağlıyor — ama FA7 Free'de regular glifler çoğunlukla
   Pro, o yüzden BOŞ çıkıyorlardı (gtu denetimi gövdede kalem/çöp düğmelerini
   boş gördü; üst çubuk değil). head-standard-vnl.php FA7'DEN SONRA yerel
   FA 4.7 Free yüklüyor: `.fa-X:before` codepoint'leri (eşit özgüllük, sonra
   yüklendiği için kazanır) ve FontAwesome webfont'u ondan gelir. Ama FA7'nin
   font-family shim'i `.fa.fa-X` (0,2,0) FA4.7'nin `.fa`sini (0,1,0) YENİYORDU;
   font-family'yi burada FontAwesome'a zorluyoruz. Yalnız `.fa` taşıyan öğeler;
   `bi bi-*` (Bootstrap Icons) ve FA7 `.fas`/`.fa-solid` ETKİLENMEZ — IKYSIS
   FA4 ile yazılı, kabuk yalnız bi kullanıyor (ölçüldü). */
.fa[class*="fa-"] {
	font-family: "FontAwesome" !important;
	font-weight: normal !important;
}

/* ================================================================
   9. Kırıntı yazı tipi — gövde yazısı (KULLANICI KARARI, 08.10.2026)
   ================================================================
   Çekirdek `.vnl-toolbar .breadcrumb`'ı kod yazı tipiyle çiziyor
   (JetBrains Mono, .6875rem, .02em aralık). IKYSIS'te kırıntı bir gezinme
   yolu, kod değil; hemen solundaki Inter sayfa başlığının yanında eş
   genişlikli yazı "Consolas gibi, çok kötü duruyor" bulundu (kullanıcı,
   08.10.2026). Dosya başındaki "tipografi VNL'indir, ezilmez" kuralının
   BİLİNÇLİ VE DAR İSTİSNASI: yalnız yazı tipi ailesi ve (mono metriklerine
   göre seçilmiş) harf aralığı gövdeninkine döner; boyut, ayraç, renkler
   VNL'in. Mono KALANLAR: code / kbd / pre / .font-monospace (gerçek kod —
   gtu davet kodu, pss dosya yolu) ve yalnız /docs belge sayfalarında geçen
   .vnl-overline. Üst çubuk sürüm etiketi (.vnl-topbar-version) IKYSIS
   kabuğunda basılmıyor. */
.vnl-toolbar .breadcrumb {
	font-family:    var(--bs-body-font-family);
	letter-spacing: normal;
}

/* ================================================================
   10. Karanlık tema — renkli DOLU başlıklar yumuşak (KULLANICI, 08.10.2026)
   ================================================================
   IKYSIS'in .panel-primary / .modal-header-primary kalıbı BS5'e
   `.card-header.bg-primary.text-white` / `.modal-header.bg-primary` diye
   çevrildi (iky_cls; VNL sayfalarında 568 başlık); tümü dolu kartlar da
   aynı kalıpta (gtu anasayfa kısayol karoları `.card.bg-primary`).
   Aydınlıkta ürün renginde dolu şerit — kalıyor. Karanlıkta aynı şerit koyu zeminde
   parlıyor ve "göz yoruyor" bulundu; orada VNL'in kendi yumuşak çifti
   (`*-bg-subtle` zemin + `*-text-emphasis` yazı, theme-design "Soft
   zeminler") kullanılıyor. Renk ürünün (skins/*.css karanlık bloğu
   --bs-primary-* ailesini ürün vurgusundan türetiyor), yalnız dozu düşük.
   `.bg-*` ve `.text-white` Bootstrap'te !important yardımcı sınıflar —
   ezmek için !important ve daha yüksek özgüllük (0,4,0) gerekiyor. */
:root[data-bs-theme="dark"] :is(.card-header, .modal-header, .card).bg-primary {
	background-color: var(--bs-primary-bg-subtle) !important;
	color:            var(--bs-primary-text-emphasis) !important;
	border-bottom:    1px solid var(--bs-primary-border-subtle);
}
:root[data-bs-theme="dark"] :is(.card-header, .modal-header, .card).bg-success {
	background-color: var(--bs-success-bg-subtle) !important;
	color:            var(--bs-success-text-emphasis) !important;
	border-bottom:    1px solid var(--bs-success-border-subtle);
}
:root[data-bs-theme="dark"] :is(.card-header, .modal-header, .card).bg-info {
	background-color: var(--bs-info-bg-subtle) !important;
	color:            var(--bs-info-text-emphasis) !important;
	border-bottom:    1px solid var(--bs-info-border-subtle);
}
:root[data-bs-theme="dark"] :is(.card-header, .modal-header, .card).bg-warning {
	background-color: var(--bs-warning-bg-subtle) !important;
	color:            var(--bs-warning-text-emphasis) !important;
	border-bottom:    1px solid var(--bs-warning-border-subtle);
}
:root[data-bs-theme="dark"] :is(.card-header, .modal-header, .card).bg-danger {
	background-color: var(--bs-danger-bg-subtle) !important;
	color:            var(--bs-danger-text-emphasis) !important;
	border-bottom:    1px solid var(--bs-danger-border-subtle);
}
/* Başlığın içindeki .text-white (başlık metni, ikon düğmeleri) de aynı yazı
   rengine iner; aksi hâlde yumuşak zeminde tek tek beyaz kalıyordu. Düğme ve
   rozet HARİÇ: onların beyazı kendi dolu zeminleri için. */
:root[data-bs-theme="dark"] :is(.card-header, .modal-header, .card):is(.bg-primary, .bg-success, .bg-info, .bg-warning, .bg-danger) .text-white:not(.btn):not(.badge) {
	color: inherit !important;
}

/* --- 10.1 Aydınlıkta color-scheme AÇIKÇA light.
       VNL yalnız [data-bs-theme=dark]'ta color-scheme:dark kuruyor, aydınlıkta
       hiçbir şey. <meta name="color-scheme" content="light dark"> (CSS
       yüklenmeden önceki zemin için gerekli) yüzünden aydınlık temada bile
       işletim sistemi koyuysa tarayıcı kaydırma çubuğunu, yerel <select>
       listesini ve tarih seçiciyi koyu çizerdi; sayfa CSS'indeki
       light-dark() de yanlış dalı seçerdi. --- */
:root:not([data-bs-theme="dark"]) { color-scheme: light; }

/* --- 10.2 Bootstrap'in UYARLANMAYAN iki yüzey sınıfı — karanlıkta yüzeye döner.
       BS 5.3 .bg-white ve .bg-light'ı bilerek sabit bırakır (uyarlanan
       karşılıkları .bg-body / .bg-body-tertiary). IKYSIS sayfaları ikisini
       "panel yüzeyi" anlamında kullanıyor (`.card-body.bg-white`, şerit
       `.list-group-item.bg-light`; VNL görünümlerinde 74 + 85 geçiş, modallar
       ve JS'in ürettiği HTML dahil). Karanlıkta beyaz kalan yüzeyde metin
       açık renkli kalıyordu — okunmuyordu (pgs konu kategorileri, gtu
       yetkinlik değerlendirme ölçüldü). Aydınlıkta HİÇBİR şey değişmez:
       --vnl-surface aydınlıkta tam #ffffff. Düğme (.btn-light) ve rozet
       (.text-bg-light) bu kurala girmez — kendi koyu metinleri var. --- */
:root[data-bs-theme="dark"] .bg-white {
	background-color: var(--vnl-surface) !important;
}
:root[data-bs-theme="dark"] .bg-light {
	background-color: var(--bs-tertiary-bg) !important;
}

/* --- 10.3 .btn-outline-secondary metni karanlıkta okunur.
       VNL'in $secondary'si (#67716b) derlemede düğme değişkenine LİTERAL
       yazılıyor; karanlık kartta kontrast 2.9 (araç çubuklarındaki Düzenle /
       Sil / Excel düğmeleri, 8 sayfada ölçüldü). Çerçeve rengi VNL'in;
       yalnız metin ikincil metin token'ına çekiliyor. --- */
:root[data-bs-theme="dark"] .btn-outline-secondary {
	--bs-btn-color: var(--bs-secondary-color);
}

/* --- 10.4 Veriden gelen yazı rengi — .iky-veri-rengi + --iky-renk.
       Bazı ekranlar metin rengini VERİDEN alıyor (kullanıcının kritere / türe
       verdiği renk: apes Kural Atamaları, gtu test ayrıntıları). Satır içi
       `color:` koyu bir veri rengini (#a40000) karanlık zeminde okunmaz
       bırakıyordu (apes: 2422 hücre ölçüldü). Görünüm rengi değişken olarak
       verir: <td class="iky-veri-rengi" style="--iky-renk: #a40000">.
       Aydınlıkta renk AYNEN; karanlıkta beyazla karışıp açılır, ton aynı
       kalır. Renk boşsa değişken tanımsız → metin rengi kalıtılır (eski boş
       `color:` ile aynı). Seçici :root ile (0,2,0): BS tablo hücresi rengi
       `.table>:not(caption)>*>*` (0,1,1) düz sınıfı eziyordu (ölçüldü). --- */
:root .iky-veri-rengi { color: var(--iky-renk); }
:root[data-bs-theme="dark"] .iky-veri-rengi { color: color-mix(in oklab, var(--iky-renk) 55%, #fff); }
