/*========================================================================================================
TABLER DÖNÜŞÜMÜNE ÖZEL GEÇİCİ ALAN BAŞLADI
Bu dosya tabler.css'in üstüne yüklenir, tabler.css'in kendisine dokunulmaz.
Yerleşim, tabler'ın kendi "combo" düzenidir (tam boy sol menü + üstte yatay şerit); ikisi de
data-bs-theme="dark" ile aynı koyu renk ailesini kullandığı için kullanıcı tek bütün üst alan algılar.
========================================================================================================*/

/*========================================================================================================
tabler.css, kaydırma çubuğu görünüp kaybolduğunda içeriğin zıplamaması için :root'a
"margin-left: calc(100vw - 100%)" verir; bu da sayfanın tamamının solunda kaydırma çubuğu
genişliğinde (15px) boşluk oluşturur. limitless'taki gibi soldan tam yaslanması için sıfırlıyoruz.
========================================================================================================*/
@media (min-width: 992px)
{
	:root
	{
		margin-left: 0;
	}
}


/*========================================================================================================
TİPOGRAFİ TONLARI: tabler'ın varsayılan gövde (#374151) ve ikincil (#6b7280) metin renkleri açık
kaldığı için sistem genelinde koyulaştırıldı. Yerel koyulaştırmalar (tablo gövdesi, etiketler,
sekmeler) bu tabanın üstünde geçerliliğini korur.
========================================================================================================*/
:root
{
	--tblr-body-color: #1D2635;
	--tblr-body-color-rgb: 29, 38, 53;
	--tblr-secondary: #4E5A6F;
	--tblr-secondary-rgb: 78, 90, 111;
	--tblr-secondary-color: #4E5A6F;
}


/*========================================================================================================
KYS YERLEŞİM DÜZENİ: üst alan (%100 genişlikte, müstakil) en üstte durur; sol menü ve sayfa içeriği
onun ALTINDA yan yana başlar. tabler'ın varsayılanında sol menü (navbar-vertical) ekranın en tepesine
"position: fixed" ile sabitlenir ve üst alanın soluna taşar. Aşağıdaki kurallar yalnızca bizim
".govdeAlani" sarmalayıcımızın içindeki sol menüye uygulanır; tabler'ın kendi düzenini kullanan
başka hiçbir yapı etkilenmez.
========================================================================================================*/
@media (min-width: 992px)
{
	/*
	sabit kabuk düzeni: gövde (body) hiç kaymaz; üst alan ve sol menü daima yerinde durur,
	yalnızca içerik alanı (page-wrapper) kendi içinde kayar. bu sınıf yalnızca standart
	kurucunun gövdesine verilir; yalın ve boş kurucular normal kayma düzeninde kalır.
	*/
	body.sabitUstAlanliGovde
	{
		display: flex;
		flex-direction: column;
		overflow: hidden;
	}

	body.sabitUstAlanliGovde #ustAlan
	{
		flex-shrink: 0;
	}

	/*
	logo alanı sol menüyle aynı genişlikte ve aynı hizadadır (x=0'dan başlar); container'ın sol
	padding'i sıfırlanır, logo yazısı sol menü öğeleriyle aynı iç boşluktan başlar (tabler'ın
	dikey menü öğelerine verdiği yatay iç pay: --tblr-page-padding).
	böylece üst alandaki diğer öğeler tam içerik hizasından (270px) başlar.
	*/
	/*
	sağ bitiş: kullanıcı menüsü linkinin kendi iç payı (px-2, 0.5rem) ile birlikte kenara olan
	görünür boşluk, soldaki başlangıç payıyla (--tblr-page-padding) dengelenir.
	*/
	#ustAlan > .container-fluid
	{
		padding-left: 0;
		padding-right: calc(var(--tblr-page-padding) - 0.5rem);
	}

	#ustAlan .navbar-brand
	{
		width: 270px;
		flex-shrink: 0;
		margin-right: 0;
		padding-left: var(--tblr-page-padding);
	}

	/*sol menü ile içeriğin yan yana durabilmesi için govde alanını yatay eksene çeviriyoruz*/
	.govdeAlani
	{
		flex-direction: row;
		flex: 1 1 auto;
		min-height: 0;
	}

	/*
	sol menüyü ekrana sabitlemek yerine akışa alıyoruz; üst alanın altındaki alanı tam boy doldurur.
	menü içeriği bu yüksekliği aşarsa kaydırma çubuğu kendiliğinden görünür, aşmıyorsa görünmez.
	*/
	.govdeAlani .navbar-vertical.navbar-expand-lg
	{
		position: static;
		width: 270px;
		height: 100%;
		flex-shrink: 0;
		overflow: hidden;
	}

	/*
	kaydırma dış iskelette (aside) değil, içteki menü konteynerindedir (navbar-collapse);
	OverlayScrollbars da bu konteynere uygulanır. (aside'a uygulanırsa kütüphanenin araya
	koyduğu sarmalayıcı, tabler'ın "aside > container" gibi doğrudan çocuk seçicilerini kırar.)
	*/
	.govdeAlani .navbar-vertical.navbar-expand-lg > .container-fluid
	{
		height: 100%;
		min-height: 0;
	}

	.govdeAlani .navbar-vertical.navbar-expand-lg .navbar-collapse
	{
		flex: 1 1 auto;
		min-height: 0;
		overflow-y: auto;
	}

	/*
	SOL MENÜ KAYDIRMA ÇUBUĞU: asıl çubuk OverlayScrollbars kütüphanesiyle çizilir (solMenu-tabler
	içindeki betik); içeriğin üzerine biner, ok butonu yoktur, fare üzerindeyken görünür.
	Aşağıdaki kural yalnızca kütüphane devreye girene kadarki anlık native çubuk görüntüsünü önler.
	*/
	.govdeAlani .navbar-vertical.navbar-expand-lg .navbar-collapse
	{
		scrollbar-width: none;
	}

	/*içerik alanı kendi içinde kayar; kaydırma çubuğu varsayılandan biraz koyudur*/
	.govdeAlani .page-wrapper
	{
		overflow-y: auto;
		min-width: 0;
		scrollbar-color: rgba(0, 0, 0, 0.35) transparent;
	}

	/*sol menü artık akışta yer kapladığı için tabler'ın içerik alanına verdiği boşluğu sıfırlıyoruz*/
	.govdeAlani .navbar-vertical.navbar-expand-lg ~ .navbar,
	.govdeAlani .navbar-vertical.navbar-expand-lg ~ .page-wrapper
	{
		margin-left: 0;
	}
}


/*========================================================================================================
SOL MENÜ TİPOGRAFİSİ VE HİZALAMASI:
- bu tabler sürümünde "nav-item-header" için hazır stil yok; başlıklar stilsiz kalıp en soldan başlıyordu.
- başlıklar, menü linklerinin standart sol boşluğuyla (--tblr-page-padding, tabler'ın dikey menü
  öğelerine verdiği yatay iç pay) aynı düzlemden başlar; menülerde ekstra girinti yoktur.
- taban font 14px: başlıklar 12px, menü linkleri 13px semibold.
- tüm yazılar beyazdır (ikonlar rengi linkten devralır).
========================================================================================================*/
.govdeAlani .navbar-vertical .nav-item-header
{
	padding-left: var(--tblr-page-padding);
	padding-right: var(--tblr-page-padding);
	padding-bottom: 0.25rem;
	font-size: 11px;
	font-weight: 400;
	color: rgba(255, 255, 255, 0.7);
}

/*ilk menü grubu üstten başlar; sonraki her grubun başlığından önce boşluk bırakılır*/
.govdeAlani .navbar-vertical .nav-item-header:not(:first-child)
{
	margin-top: 1.8rem;
}

/*son menü grubunun altındaki boşluk*/
.govdeAlani .navbar-vertical .navbar-nav
{
	padding-bottom: 1rem;
}


/*
MENÜ AYRACI: menü tanımında bir öğenin adı "ayirici" ise bağlantı yerine çizgi basılır
(solMenu-tabler). tabler'ın dropdown-divider rengi AÇIK zemin için hesaplanmıştır, sol menü ise
koyudur: çizgi orada silik kalır. Burada koyu zemine uygun beyaz saydam bir ton verilir.
Ayrıca navbar-nav bir flex kapsayıcıdır (flex-direction: column): yüksekliği ve içeriği olmayan
ayraç çapraz eksende sıfır genişliğe düşüp hiç görünmüyordu; genişlik açıkça verilir. Yatay kenar
payı menü linklerinin sol boşluğuyla (--tblr-page-padding) aynı düzlemdedir.
*/
.govdeAlani .navbar-vertical .navbar-nav .nav-item .dropdown-divider
{
	display: block;
	width: auto;
	margin: 0.6rem var(--tblr-page-padding);
	border-top: 1px solid rgba(255, 255, 255, 0.22);
	opacity: 1;
}

.govdeAlani .navbar-vertical .navbar-nav .nav-link
{
	font-size: 13px;
	font-weight: 400;
	color: #E0E0E0;
	border-radius: 0;
}

/*========================================================================================================
İKON DİKEY HİZALAMA STANDARDI: satır içindeki bir ikonun yazıyla dikey hizasını ince ayarlamak
gerektiğinde bu sınıflardan uygun olanı ikonun kapsayıcısına (örn. nav-link-icon) verilir.
========================================================================================================*/
.ikonuYukariKaydir1 { position: relative; top: -1px; }
.ikonuYukariKaydir2 { position: relative; top: -2px; }
.ikonuAsagiKaydir1 { position: relative; top: 1px; }
.ikonuYaziylaOrtala { position: relative; top: 2px; }

/*menü ikonları: 18px*/
.govdeAlani .navbar-vertical .navbar-nav .nav-link .nav-link-icon
{
	font-size: 18px;
}

/*
sol menü hover'ı modülün tema rengini kullanır (--tblr-primary, body'deki data-bs-theme-primary
niteliğine göre tabler-themes.css tarafından belirlenir).
*/
.govdeAlani .navbar-vertical .navbar-nav .nav-link:hover
{
	background-color: var(--tblr-primary);
	color: #FFFFFF;
}

/*
tabler, odaktaki linke tema renginde bir halka (box-shadow) verir; tıklanan link odakta kaldığı
sürece bu halka arkaplanda gölge gibi görünmeye devam eder. sistemdeki tüm linklerde bu halka
kaldırılır. (form alanlarının ve butonların odak halkaları korunur.)
*/
a:focus-visible,
.nav-link:focus-visible,
.dropdown-item:focus-visible
{
	outline: 0;
	box-shadow: none;
}

/*
tabler ayrıca odaktaki nav-link'e hover arkaplanını da verir (.nav-link:focus). tıklanan link
odakta kaldığı için bu arkaplan tıklamadan sonra da asılı kalır; arkaplan yalnızca gerçek
hover'da görünür.
*/
.nav-link:focus:not(:hover)
{
	background-color: transparent;
}

/*
sol menü kaydırma çubuğunun genişliği 6px'tir; çubuğun kendi iç payı (padding-perpendicular)
sıfırlanır ki şerit hem hover arkaplanına hem sol menünün sağ kenarına bitişik dursun.
şeridin rengi, temanın varsayılanından (beyaz %44) daha koyudur.
*/
.govdeAlani .navbar-vertical .os-scrollbar
{
	--os-size: 6px;
	--os-padding-perpendicular: 0;
	--os-padding-axis: 0;
	--os-handle-bg: rgba(255, 255, 255, 0.25);
	--os-handle-bg-hover: rgba(255, 255, 255, 0.35);
	--os-handle-bg-active: rgba(255, 255, 255, 0.45);
}

/*
sol menüde kaydırma çubuğu VARKEN menü öğeleri (ve hover arkaplanları) tam çubuğun başladığı
yerde biter; çubuk yokken tam genişliktir. overlayscrollbars, içerik kaydırılabilir olduğunda
görünüm alanına "overflowYScroll" belirtecini yazar; 6px, yukarıda belirlenen çubuk genişliğidir.
*/
.govdeAlani .navbar-vertical [data-overlayscrollbars-viewport~=overflowYScroll] .navbar-nav .nav-link
{
	margin-right: 6px;
}


/*========================================================================================================
TABLO BAŞLIĞI: tabler'ın varsayılan başlık zemini sayfa zeminine çok yakın olduğu için başlık satırı
kayboluyordu. Zemin, modül tema renginin çok soluk tonudur (isAkis'te açık yeşil, diğer modüllerde
kendi renginin aynı soluklukta tonu); başlık yazısı varsayılandan bir tık koyudur.
========================================================================================================*/
.govdeAlani .table thead th,
.yalinGovde .table thead th
{
	background-color: rgba(var(--tblr-primary-rgb), 0.09);
	color: #000000;
	border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
	/*başlık satırı tabler varsayılanından bir tık yüksektir (her tabloda geçerli)*/
	padding-top: 0.75rem;
	padding-bottom: 0.75rem;
}

/*sıralanabilir başlık linki (tabler'ın table-sort'u) tıklanabilir alanını yükseltilmiş
başlık payına göre genişletir. zemin saydamdır: tabler'ın "background:inherit" değeri,
yarı saydam başlık zeminini link kutusunda ikinci kez boyayıp koyu blok oluşturuyordu*/
.govdeAlani .table thead th .table-sort,
.yalinGovde .table thead th .table-sort
{
	margin-top: -0.75rem;
	margin-bottom: -0.75rem;
	padding-top: 0.75rem;
	padding-bottom: 0.75rem;
	background: transparent;
}

/*sıralanabilir tablo başlığı: başlıkla aynı renkte, alt çizgisiz; hover'da eylem mavisi*/
.siralanabilirTabloBasligi,
.siralanabilirTabloBasligi:hover
{
	color: inherit;
	text-decoration: none;
}

.siralanabilirTabloBasligi:hover
{
	color: var(--tblr-blue);
}

.siralanabilirTabloBasligi .ti
{
	font-size: 14px;
	vertical-align: middle;
}

/*
tablo gövde yazıları birinci tondadır (genel gövde rengi); ikincil kolonlar da soluk
bırakılmaz, birinci tonla basılır.
*/
.govdeAlani .table tbody td.text-secondary,
.yalinGovde .table tbody td.text-secondary
{
	color: var(--tblr-body-color) !important;
}

/*hover zeminli tüm tablolarda (table-hover) satır zemini tabler'ın açık grisi değil
standart çok açık mavimizdir; satırı tıklanabilir yapan şey bu zemin değil aşağıdaki
tiklanabilirSatir sınıfıdır (imleci el yapar)*/
.govdeAlani .table-hover,
.yalinGovde .table-hover
{
	--tblr-table-hover-bg: #F2F9FF;
}

/*satırın tamamı linkli tablolarda imleç el olur (satıra onclick ile url verilir)*/
.govdeAlani .table .tiklanabilirSatir,
.yalinGovde .table .tiklanabilirSatir
{
	cursor: pointer;
	--tblr-table-hover-bg: #F2F9FF;
}

/*tablo kartın son öğesiyse (altında sayfalama şeridi yoksa) son satırın alt çizgisi kaldırılır*/
.govdeAlani .card > .table-responsive:last-child .table tbody tr:last-child td,
.yalinGovde .card > .table-responsive:last-child .table tbody tr:last-child td
{
	border-bottom: 0;
}

/*liste satırlarının yazıları tablonun geri kalanından 1px küçüktür, birinci tondadır*/
.govdeAlani .table .tiklanabilirSatir td,
.yalinGovde .table .tiklanabilirSatir td
{
	font-size: 13px;
	color: var(--tblr-body-color);
}

/*liste satırının sağ bilgi kolonları: her bağlı veri etiketi kendi hücresindedir
(kolonlaştırma — aynı tür bilgiler alt alta hizalanır); hücreler içerik genişliğinde
ve sağa yaslıdır (| ayıraçlı tek hücre düzeni kolonlaştırmayla kaldırıldı). kolonlar
arasında nefes payı vardır; ana verinin (başlık kolonu) ardından gelen ilk sağ kolonun
boşluğu en geniştir — ana veri daralıp gerekirse iki satıra düşebilir*/
.govdeAlani .table .listeSatirininSagKolonu,
.yalinGovde .table .listeSatirininSagKolonu
{
	width: 1%;
	white-space: nowrap;
	padding-left: 1.5rem;
}

/*GENEL KURAL (09.09.2026): bağlantılarda üzerine gelince altı çizgi kullanılmaz; yalnız renk değişir.
tabler.css'in a:hover underline'ı burada kapatılır*/
a:hover
{
	text-decoration: none;
}

/*bvys listesi: satır tıklanmaz; başlık bağlantısı metin gibi durur, üzerine gelince mavi.
bağlı kayıt rozeti alt listeye gider; sıfırsa sönük (bagliVeriYok) ama yine tıklanır.
sıra kolonu satırın başındadır (alttaki Sıralamayı Kaydet butonuyla simetri), dar ve soluksuz*/
.govdeAlani .table .bvysListeSatiri td,
.yalinGovde .table .bvysListeSatiri td
{
	font-size: 13px;
	color: var(--tblr-body-color);
}

/*başlık bağlantısı: yatayda yazı kadar, dikeyde hücrenin tamamı. yüzde yükseklik tabloda ancak
zincirle çözülür: tablo 1px (içerik kazanır) → satır %100 → hücre %100 → bağlantı %100.
hücrenin dikey payı sıfırlanır, bağlantı içeriği ortalar; yatay pay hücrede kalır*/
.bvysListesi
{
	height: 1px;
}

.bvysListesi .bvysListeSatiri
{
	height: 100%;
}

.govdeAlani .table .listeSatirininBaslikHucresi,
.yalinGovde .table .listeSatirininBaslikHucresi
{
	height: 100%;
	padding-top: 0;
	padding-bottom: 0;
}

.listeSatirininBasligi
{
	display: inline-flex;
	align-items: center;
	flex-wrap: wrap;
	height: 100%;
	color: var(--tblr-body-color);
	font-weight: 500;
}

/*başlık metni <br> ve etiket içeriyorsa (BVYS satır başlıkları: {br} / {span} yer tutucuları) bağlantı flex
kabı olduğundan Chrome <br>'ı yok sayıyordu; metin normal akışlı bir sarmalayıcıda basılır (listele-tabler)*/
.listeSatirininBasligi .listeSatirininMetni
{
	display: block;
	line-height: 1.35;
}

/*BVYS izin başlığındaki etiketler (ortak tabloDegerleri ortak_izinler sorgusu): sistemde var mavi,
yok kırmızı, atanabilirlik parçaları ikinci ton*/
.olumluIzinEtiketi
{
	color: var(--tblr-blue);
}

.olumsuzIzinEtiketi
{
	color: var(--tblr-red);
}

.standartIzinEtiketi
{
	color: var(--tblr-secondary);
}

.listeSatirininBasligi:hover
{
	color: var(--tblr-primary);
}

/*
SATIR HOVER KURALI: satırın TAMAMI tek bir adrese gidiyorsa (tiklanabilirSatir) imleç zaten el olur ve
satırın zemini değişir; başlığı ayrıca renklendirmek ikinci bir vurgu olur, gerekmez. Başlığın rengi
yalnız satırın tamamı tıklanabilir DEĞİLKEN, yani başlık kendi başına bir bağlantıyken değişir.
*/
.govdeAlani .table .tiklanabilirSatir .listeSatirininBasligi:hover,
.yalinGovde .table .tiklanabilirSatir .listeSatirininBasligi:hover
{
	color: var(--tblr-body-color);
}

.govdeAlani .table .listeSatirininSiraKolonu,
.yalinGovde .table .listeSatirininSiraKolonu
{
	width: 1%;
	white-space: nowrap;
	padding-right: 0.5rem;
}

.govdeAlani .table .listeSatirininRozetHucresi,
.yalinGovde .table .listeSatirininRozetHucresi
{
	height: 100%;
	padding-top: 0;
	padding-bottom: 0;
}

.bagliVeriBaglantisi
{
	display: inline-flex;
	align-items: center;
	height: 100%;
}

/*son basamak satırlarında sağdaki ok: bağlı veri yoktur, satırın sonu boş kalmasın diye kaydın
kendisine gider; tıklama alanı başlık ve rozet gibi hücre yüksekliğincedir*/
.govdeAlani .table .listeSatirininOkHucresi,
.yalinGovde .table .listeSatirininOkHucresi
{
	height: 100%;
	padding-top: 0;
	padding-bottom: 0;
}

.listeSatirininOku
{
	display: inline-flex;
	align-items: center;
	height: 100%;
}

/*yazı 12px, dikey iç boşluk 7.6px (10.09.2026: 13px/5.6px'ten düzeltildi); yazı rengi açık azure yerine
sabit mavi — açık zeminde azure belli olmuyordu*/
.bagliVeriRozeti
{
	font-size: 12px;
	font-weight: 500;
	padding: 0.475rem 0.6rem;
	transition: background-color 0.15s;
}

/*tabler'ın bg-azure-lt sınıfı yazı rengini !important ile bastığından buradaki renkler de !important taşır*/
.bagliVeriRozeti.bg-azure-lt
{
	color: var(--tblr-blue) !important;
}

/*hover zemini standart halden (0.1) bir kademe koyu ama mavi yazıyı bastırmayacak kadar açık (0.3 denendi, koyu bulundu)*/
.bagliVeriBaglantisi:hover .bagliVeriRozeti
{
	background-color: rgba(var(--tblr-azure-rgb), 0.18) !important;
	color: var(--tblr-blue-darken) !important;
}

.bagliVeriRozeti.bagliVeriYok
{
	color: var(--tblr-secondary);
}

.bagliVeriBaglantisi:hover .bagliVeriRozeti.bagliVeriYok
{
	background-color: rgba(var(--tblr-secondary-rgb), 0.25) !important;
	color: var(--tblr-secondary) !important;
}

.govdeAlani .table *:not(.listeSatirininSagKolonu) + .listeSatirininSagKolonu,
.yalinGovde .table *:not(.listeSatirininSagKolonu) + .listeSatirininSagKolonu
{
	padding-left: 3rem;
}

/*sağ kolon hücre yazısı satırın solundan 1px küçüktür (başlıklar tablo standardında kalır)*/
.govdeAlani .table td.listeSatirininSagKolonu,
.yalinGovde .table td.listeSatirininSagKolonu
{
	font-size: 12px;
}

/*bir etiket üst genişlik sınırını aşarsa fontu tablerUyarlama.js'teki
yaziyiTekSatiraSigdir ile tek satıra sığana kadar küçülür (en az 10px),
yine sığmazsa üç noktayla kesilir*/
.listeSatirininSagKolonu .tekSatiraSigdirilacakYazi
{
	display: inline-block;
	max-width: 14rem;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	vertical-align: middle;
}

/*
BUTON KURALI (04.09.2026): kalıcı sonucu tetikleyen ASIL EYLEM dolu renklidir (form
submit'leri ve onay modalının aksiyon butonu); DİĞER TÜM BUTONLAR BEYAZ ZEMİNLİDİR —
yazı ve bordür işlev rengindedir, hover'da tam renge dolup yazı beyaza geçer. amaç buton
enflasyonunda hiyerarşi: göz, sayfadaki asıl eylemi (dolu Kaydet) anında bulur.
satır/alan işlem butonları (Değiştir/Güncelle, Görüntüle, İndir, Sil) bu desenle tanımlanır;
sınıf adları tabler'ın -lt deseninden kalmadır (önceki denemeler: siyah çerçeveli outline,
soluk light dolgu — beyaz zemin tercih edildi).
*/
.btn-green-lt
{
	--tblr-btn-color: var(--tblr-green);
	--tblr-btn-bg: #FFFFFF;
	--tblr-btn-border-color: var(--tblr-green);
	--tblr-btn-hover-color: var(--tblr-green-fg, #ffffff);
	--tblr-btn-hover-bg: var(--tblr-green);
	--tblr-btn-hover-border-color: var(--tblr-green);
	--tblr-btn-active-color: var(--tblr-green-fg, #ffffff);
	--tblr-btn-active-bg: var(--tblr-green);
	--tblr-btn-active-border-color: var(--tblr-green);
}

.btn-azure-lt
{
	--tblr-btn-color: var(--tblr-azure);
	--tblr-btn-bg: #FFFFFF;
	--tblr-btn-border-color: var(--tblr-azure);
	--tblr-btn-hover-color: var(--tblr-azure-fg, #ffffff);
	--tblr-btn-hover-bg: var(--tblr-azure);
	--tblr-btn-hover-border-color: var(--tblr-azure);
	--tblr-btn-active-color: var(--tblr-azure-fg, #ffffff);
	--tblr-btn-active-bg: var(--tblr-azure);
	--tblr-btn-active-border-color: var(--tblr-azure);
}

.btn-orange-lt
{
	--tblr-btn-color: var(--tblr-orange);
	--tblr-btn-bg: #FFFFFF;
	--tblr-btn-border-color: var(--tblr-orange);
	--tblr-btn-hover-color: var(--tblr-orange-fg, #ffffff);
	--tblr-btn-hover-bg: var(--tblr-orange);
	--tblr-btn-hover-border-color: var(--tblr-orange);
	--tblr-btn-active-color: var(--tblr-orange-fg, #ffffff);
	--tblr-btn-active-bg: var(--tblr-orange);
	--tblr-btn-active-border-color: var(--tblr-orange);
}

.btn-red-lt
{
	--tblr-btn-color: var(--tblr-red);
	--tblr-btn-bg: #FFFFFF;
	--tblr-btn-border-color: var(--tblr-red);
	--tblr-btn-hover-color: var(--tblr-red-fg, #ffffff);
	--tblr-btn-hover-bg: var(--tblr-red);
	--tblr-btn-hover-border-color: var(--tblr-red);
	--tblr-btn-active-color: var(--tblr-red-fg, #ffffff);
	--tblr-btn-active-bg: var(--tblr-red);
	--tblr-btn-active-border-color: var(--tblr-red);
}

/*========================================================================================================
ARA BAŞLIK: kart içindeki form/içerik bölümlerini ayıran ortak başlık. Kart başlığından ayrışsın
diye dikey çubuk taşımaz; başlık sabit mavidir ve önünde durumu gösteren ok bulunur (açıkken
aşağı, kapalıyken sağa bakar). Başlığa tıklamak, hemen ardından gelen "araAlan" sarmalayıcısını
kayarak açıp kapar (betik tablerUyarlama.js'tedir). Kullanım:
	<div class="araBaslik">Bölüm Adı</div>
	<div class="araAlan"> ...bölümün alanları... </div>
========================================================================================================*/
.araBaslik
{
	display: flex;
	align-items: center;
	/*tıklanabilir alan satırın tamamı değil, yalnızca ok + başlık metnidir*/
	width: fit-content;
	max-width: 100%;
	margin-top: 3rem;
	margin-bottom: 0.625rem;
	/*başlık, okla birlikte sabit mavidir*/
	color: var(--tblr-blue);
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
	user-select: none;
}

.araBaslik::before
{
	/*tabler-icons yazı tipindeki ti-chevron-right glifi; bölüm açıkken aşağı döner*/
	content: "\ea61";
	font-family: "tabler-icons";
	font-weight: 400;
	font-size: 1em;
	margin-right: 0.125rem;
	flex-shrink: 0;
	transform: rotate(90deg);
	transition: transform 0.2s;
}

.araBaslik.kapali::before
{
	transform: none;
}

/*üstüne gelince yazı (ve ok) bir tık koyulaşır*/
.araBaslik:hover
{
	color: color-mix(in srgb, var(--tblr-blue) 80%, #000000);
}

/*bulunduğu kapsayıcının ilk öğesiyse üstten boşluk almaz*/
.araBaslik:first-child
{
	margin-top: 0;
}


/*========================================================================================================
SAYFA SEKMELERİ ŞERİDİ: sekmelerin sayfanın ana öğesi olduğu sayfalarda (örn. takvim) kullanılır.
Kartın DIŞINDA, içeriğin en üstünde tam genişlik beyaz bir şerittir; içindeki ul "kartSekmeleri"
ile kurulur. Sekmeler şeridi boydan boya doldurur, aralarını dikey çizgiler ayırır; yazılar
büyük harf gösterilir (görüntü düzeyinde, veri değişmez); seçili sekme dolu SABİT MAVİ + beyaz
yazıdır (yeşil denendi, kart içi sekmelerle aynı maviye alındı). Sağ uca ms-auto ile araç
(örn. periyot seçici) konabilir.
Kullanım:
	<div class="sayfaSekmelerininSeridi">
		<ul class="nav nav-tabs card-header-tabs kartSekmeleri m-0"> ...sekmeler... </ul>
		<select class="form-select form-select-sm w-auto ms-auto my-2 me-2 align-self-center">...</select>
	</div>
========================================================================================================*/
.sayfaSekmelerininSeridi
{
	display: flex;
	align-items: stretch;
	width: 100%;
	margin-bottom: 1rem;
	background-color: #FFFFFF;
	border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
	border-radius: var(--tblr-border-radius);
	overflow: hidden;
}

.sayfaSekmelerininSeridi .kartSekmeleri
{
	border-bottom: 0;
	gap: 0;
}

/*
seçiciler "kartSekmeleri" üzerinden yazılır: kartSekmeleri'nin genel kuralları (kalıcı gri
zemin, mavi seçili) dosyada daha sonra geldiği için şerit kuralları onlardan güçlü olmalıdır.
*/
.sayfaSekmelerininSeridi .kartSekmeleri .nav-item
{
	border-right: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
}

.sayfaSekmelerininSeridi .kartSekmeleri .nav-link
{
	height: 100%;
	display: flex;
	align-items: center;
	margin: 0;
	padding-top: 0.875rem;
	padding-bottom: 0.875rem;
	border: 0;
	border-radius: 0;
	background-color: transparent;
	/*sekme yazıları ikinci tondadır*/
	color: var(--tblr-secondary);
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: -0.02em;
}

.sayfaSekmelerininSeridi .kartSekmeleri .nav-link.active
{
	background-color: var(--tblr-blue);
	color: #FFFFFF;
}

/*seçilmeyen sekmenin üstüne gelince zemin değişmez, yazı siyaha döner*/
.sayfaSekmelerininSeridi .kartSekmeleri .nav-link:hover:not(.active)
{
	background-color: transparent;
	color: #000000;
}


/*veri alanlarının başlıkları (form etiketleri): ikinci ton + hafif kalınlık + küçük ve hafif
harf aralıklı font (detay sayfası dili: etiket geri çekilir, değer öne çıkar), her modda aynı
(birinci ton, #636363, #606060, mavi ve 13px denendi)*/
.govdeAlani .form-label,
.govdeAlani .col-form-label,
.yalinGovde .form-label,
.yalinGovde .col-form-label
{
	color: var(--tblr-secondary);
	font-weight: 500;
	font-size: 12px;
	letter-spacing: 0.03em;
}


/*========================================================================================================
YAPIŞKAN PANEL: konumu ve en yüksek boyu tablerUyarlama.js ölçerek verir; burada yalnızca
gövdenin daralabilmesi sağlanır (kart flex sütundur, gövde kısıtlanınca kaydırma gövdededir).
========================================================================================================*/
@media (min-width: 992px)
{
	.yapiskanPanel .card-body
	{
		min-height: 0;
		overflow: hidden;
	}
}


/*========================================================================================================
FORMUN GÖNDERİM ALANI: gönderim butonu sağa yaslıdır, üstündeki alanla arasındaki boşluk
azaltılır ve butonun yatay iç boşluğu geniştir.
Kullanım: <div class="formunGonderimAlani"><button type="submit" class="btn btn-green">Kaydet</button></div>
========================================================================================================*/
.formunGonderimAlani
{
	margin-top: -0.5rem;
	text-align: right;
}

.formunGonderimAlani .btn
{
	padding-left: 2rem;
	padding-right: 2rem;
}


/*kart sekmeleri (card-header-tabs): sekme ölçüleri tabler varsayılanıdır, yalnızca yatay
iç boşluk bir kademe geniştir (1rem).
renk dili: seçilmeyen sekme nötr gridir ve tabler'ın hover görünümünü (zemin + kenarlık)
hover beklemeden sürekli taşır; seçili sekme sabit mavi zeminli, beyaz yazılıdır*/

/*tabler'ın card-header-tabs'ı sekmeleri yatayda kaydırır (negatif marj + yarım iç pay);
ikisi de sıfırlanır: sekmeler içerik başlangıcıyla (kart başlığındaki yeşil çubukla ve kart
tablosunun ilk hücresiyle) aynı hizada başlar*/
.kartSekmeleri.card-header-tabs
{
	margin-left: 0;
	margin-right: 0;
	padding-left: 0;
	padding-right: 0;
}

.kartSekmeleri .nav-link
{
	padding-left: 1rem;
	padding-right: 1rem;
	/*sekme yazıları ikinci tondadır, varsayılandan bir tık kalındır*/
	color: var(--tblr-secondary);
	font-weight: 500;
	font-size: 14px;
	/*seçilmeyen sekmenin zemini beyazdır*/
	background-color: #FFFFFF;
	border-color: var(--tblr-nav-tabs-link-hover-border-color);
}

/*seçilmeyen sekmenin üstüne gelince zemin değişmez, yazı siyaha döner (sayfa sekmeleriyle uyumlu)*/
.kartSekmeleri .nav-link:hover:not(.active)
{
	background-color: #FFFFFF;
	color: #000000;
}

/*
TABAN ÇİZGİLİ SEKME VARYANTI: kartSekmeleri ul'una "tabanCizgiliSekmeler" sınıfı eklenirse
seçilmeyen sekmelerin altında 2px sabit mavi taban çizgisi görünür; seçilinin altı açık kalır,
içerikle birleşir (kapalı/açık sekme metaforu). Şimdilik hiçbir sayfada açık değildir.
Kullanım: <ul class="nav nav-tabs card-header-tabs kartSekmeleri tabanCizgiliSekmeler">
Ölçüler headless ölçümle doğrulandı: seçilmeyen de 1px aşağı taşınır (çizgi şerit tabanına
oturur) ve kalın kenarlığın eklediği 1px, iç boşluktan düşülür (boylar eşit kalır).
*/
.kartSekmeleri.tabanCizgiliSekmeler .nav-link:not(.active)
{
	margin-bottom: calc(-1 * var(--tblr-nav-tabs-border-width, 1px));
	border-bottom-width: 2px;
	border-bottom-color: var(--tblr-blue);
	padding-bottom: calc(var(--tblr-nav-link-padding-y, 0.5rem) - 1px);
}

.kartSekmeleri .nav-link.active
{
	color: #FFFFFF;
	/*alt kenar da zeminle aynı renge boyanır ki zemin tabloya çizgisiz bağlansın*/
	background-color: var(--tblr-blue);
	border-bottom-color: var(--tblr-blue);
}

/*sekmelerin durduğu şerit beyaz zeminlidir (tabler, card-header-tabs ul'una gri zemin verir);
sekmeler dip dibe durmasın diye aralarında boşluk vardır*/
.kartSekmeleri
{
	background: #FFFFFF;
	gap: 0.25rem;
}

.card-header:has(> .kartSekmeleri)
{
	background-color: #FFFFFF;
}

/*sekmeli kartlarda kart başlığının altındaki çizgi kaldırılır (başlık sekmelere çizgisiz bağlanır)*/
.card-header:has(+ .card-header > .kartSekmeleri)
{
	border-bottom: 0;
}


/*========================================================================================================
SAYFALAMA BUTONLARI (sayfalamaButonlari-tabler): limitless'taki gibi beyaz zeminli, kenarlıklı,
bitişik buton grubu (uçlarda tabler'ın standart radius'u); yükseklik düşüktür. Seçili sayfa ve
hover, sistemin eylem rengi olan sabit maviyi kullanır (tabler varsayılanı seçili sayfayı modül
tema rengine boyuyordu). Tıklama sonrası odak halkası/zemini kalmaz.
========================================================================================================*/
/*kart alt alanı (sayfalamanın durduğu bölge): gri değil beyaz zeminlidir, dikey payı dardır*/
.govdeAlani .card-footer,
.yalinGovde .card-footer
{
	background-color: #FFFFFF;
	padding-top: 0.625rem;
	padding-bottom: 0.625rem;
}

.govdeAlani .pagination,
.yalinGovde .pagination
{
	--tblr-pagination-bg: #FFFFFF;
	--tblr-pagination-border-color: var(--tblr-border-color);
	--tblr-pagination-padding-x: 0.75rem;
	--tblr-pagination-disabled-bg: #FFFFFF;

	--tblr-pagination-active-bg: var(--tblr-blue);
	--tblr-pagination-active-border-color: var(--tblr-blue);
	--tblr-pagination-hover-color: var(--tblr-blue);
	--tblr-pagination-hover-bg: rgba(var(--tblr-blue-rgb), 0.06);
	--tblr-pagination-focus-color: var(--tblr-blue);
	--tblr-pagination-focus-bg: transparent;
	--tblr-pagination-focus-box-shadow: none;
}


/*========================================================================================================
YALIN GÖRÜNÜM (yalinKurucu-tabler): sol menü ve üst alan olmadığı için içerik tam genişliktir;
container-xl'in azami genişlik sınırı kaldırılır (yan iç paylar korunur).
========================================================================================================*/
.yalinGovde .container-xl
{
	max-width: 100%;
}


/*========================================================================================================
TOM SELECT UYUMU: tom-select'in bootstrap5 teması --bs-* değişkenlerini bekler, tabler ise --tblr-*
kullanır; karşılığı olmayan değişkenler (özellikle açılır listenin zemini) tanımsız kaldığı için
liste saydam görünüyordu. Beklenen --bs-* değişkenleri tabler karşılıklarına bağlanır.
========================================================================================================*/
:root
{
	--bs-body-bg: var(--tblr-bg-surface);
	--bs-body-color: var(--tblr-body-color);
	--bs-border-color: var(--tblr-border-color);
	--bs-border-color-translucent: var(--tblr-border-color-translucent);
	--bs-border-width: var(--tblr-border-width);
	--bs-border-radius: var(--tblr-border-radius);
	--bs-border-radius-sm: var(--tblr-border-radius);
	--bs-secondary-bg: var(--tblr-bg-surface-secondary);
	--bs-tertiary-bg: var(--tblr-bg-surface-tertiary);
	--bs-box-shadow-inset: var(--tblr-box-shadow-inset);
	--bs-form-invalid-color: var(--tblr-form-invalid-color);
	--bs-form-valid-color: var(--tblr-form-valid-color);
}

/*
tom select kutusu, tabler'ın form-control/form-select ölçüleriyle aynı yüksekliktedir
(tabler dikey iç payı 0.4375rem'dir; tom-select teması bootstrap'ın 0.375rem'ini kullanıyordu)
*/
/*
iç kutunun ölçüleri tabler'ın form-control/form-select GERÇEK değerleriyle aynıdır:
dikey pay 0.5625rem, sol pay 1rem, satır 1.25rem → içerik 38px; kenarlık sarmalayıcıdadır
(tema kaldırır), sarmalayıcının 2px kenarlığıyla toplam 40px = tabler form elemanı yüksekliği.
sağ pay, temanın max() kuralıyla (ok için 2.25rem) yönetilmeye devam eder.
*/
.ts-wrapper .ts-control
{
	/*
	paylar !important ile kilitlidir: kutuya tıklanınca eklenen durum sınıfları (focus,
	input-active, dropdown-active) hangi kuralla gelirse gelsin iç paylar değişmez.
	sağ pay bilinçli olarak serbesttir; ok boşluğunu temanın max() kuralı yönetir.
	*/
	padding-top: 0.5625rem !important;
	padding-bottom: 0.5625rem !important;
	padding-left: 1rem !important;
	font-size: 0.875rem;
	line-height: 1.25rem;
	min-height: calc(1.25rem + 2 * 0.5625rem);
}

/*açılır liste her zaman kart içeriklerinin üzerinde durur*/
.ts-dropdown
{
	z-index: 1030;
}

/*
çoklu seçimde öğe kaldırma ikonu kırmızıdır; üzerine gelince soluk kırmızı zemin alır.
zemin, öğe kutusunu dikeyde tam kaplar ve sağ köşelerde öğenin radius'unu izler (taşma olmaz).
*/
.ts-wrapper.plugin-remove_button .item .remove
{
	color: var(--tblr-red);
	display: inline-flex;
	align-items: center;
	align-self: stretch;
	border-radius: 0 calc(var(--tblr-border-radius) - 1px) calc(var(--tblr-border-radius) - 1px) 0;
}

.ts-wrapper.plugin-remove_button .item .remove:hover
{
	background: rgba(var(--tblr-red-rgb), 0.1);
}

/*
salt okunur kutu içi girdi: odak görevini sürdürür ama akışta yer kaplamaz (yer kaplarsa seçili
değerin yanına sığmayıp ikinci satıra sarıyor ve kutu tıklanınca büyüyordu). kutunun üzerine
görünmez serilir; imleç görünmez, fare imleci el olur.
*/
.ts-control input[readonly]
{
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	/*
	genişlik left/right ile kutuya tam oturur (width %100 verilirse girdi kutudan taşar ve
	odaklanınca tarayıcı overflow:hidden kutuyu içeriden kaydırıp içeriği sola oynatıyordu)
	*/
	width: auto !important;
	min-width: 0 !important;
	height: auto;
	opacity: 0;
	caret-color: transparent;
	cursor: pointer;
}


/*========================================================================================================
HATALI ALAN İKONU: doğrulamada hatalı işaretlenen TÜM alan türlerinde tabler'ın çarpı ikonu yerine
daire içinde ünlem ikonu kullanılır (tom select'in hatalı görselindeki ikonun tabler kırmızısı
tonlusu); ikon 1rem boyutundadır.
========================================================================================================*/
:root
{
	--hataliAlanIkonu: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23d63939'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23d63939' stroke='none'/%3e%3c/svg%3e");
}

/*metin alanları*/
.was-validated .form-control:invalid,
.form-control.is-invalid
{
	background-image: var(--hataliAlanIkonu);
	background-size: 1rem 1rem;
	background-position: right 0.75rem center;
	padding-right: 2.25rem;
}

/*standart select: ilk görsel ok, ikincisi hata ikonudur*/
.was-validated .form-select:invalid:not([multiple]):not([size]),
.was-validated .form-select:invalid:not([multiple])[size="1"],
.form-select.is-invalid:not([multiple]):not([size]),
.form-select.is-invalid:not([multiple])[size="1"]
{
	--tblr-form-select-bg-icon: var(--hataliAlanIkonu);
	padding-right: 4rem;
	background-position: right 1rem center, center right 2.25rem;
	background-size: 16px 12px, 1rem 1rem;
}

/*tom select (tekli): ilk görsel ok, ikincisi hata ikonudur*/
.ts-wrapper.is-invalid.single
{
	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), var(--hataliAlanIkonu);
	background-position: right 0.75rem center, center right 2.25rem;
	background-size: 16px 12px, 1rem 1rem;
}

/*tom select (çoklu)*/
.ts-wrapper.is-invalid:not(.single)
{
	background-image: var(--hataliAlanIkonu);
	background-size: 1rem 1rem;
	background-position: right 0.75rem center;
}


/*========================================================================================================
BİLGİ KUTULARI (bilgiKutulari-tabler): kartların üstünde duran sayfa içi bilgilendirme/uyarı
kutuları (tabler alert). İkon, kutunun durum renginde ve yazıyla ortalıdır. Renk doygunluğu
tabler varsayılanından (zemin %10, kenarlık %20) yüksektir.
========================================================================================================*/
.alert
{
	--tblr-alert-bg: color-mix(in srgb, var(--tblr-alert-color) 18%, transparent);
	--tblr-alert-border-color: color-mix(in srgb, var(--tblr-alert-color) 35%, transparent);
}

.alert .ti.alert-icon
{
	font-size: 1.25rem;
	line-height: 1;
	display: flex;
	align-items: center;
	justify-content: center;
}


/*========================================================================================================
EDİTÖR (hugerte): çerçeve ve odak görünümü tabler form elemanlarıyla aynıdır. editörün oxide
teması odakta içeriye kendi kalın mavi çerçevesini çizer (keskin köşeli); o kapatılır, odak
görünümü dış kabuğa tabler'ın form-control odak kuralıyla verilir.
========================================================================================================*/
/*DİKKAT: hugerte'nin kabuk sınıfı tox-tinymce değil tox-hugerte'dir*/
.tox.tox-hugerte
{
	border: var(--tblr-border-width) solid var(--tblr-border-color) !important;
	border-radius: var(--tblr-border-radius) !important;
}

/*odak sınıfı editörün kendi olaylarıyla basılır (yazı alanı iframe olduğu için :focus-within çalışmaz)*/
.tox.tox-hugerte.odakta
{
	border-color: rgb(130.5, 183, 232) !important;
	box-shadow: var(--tblr-shadow-input), 0 0 0 0.25rem rgba(var(--tblr-primary-rgb), 0.25) !important;
}

/*editörün kendi iç odak çerçevesi kullanılmaz*/
.tox .tox-edit-area::before
{
	display: none !important;
}


/*========================================================================================================
TARİH TAKVİMİ (litepicker): başlıktaki ay ve yıl açılır listeleri tabler'ın form diline uydurulur
(kenarlık, radius, özel ok; tarayıcının ham select görünümü kullanılmaz)
========================================================================================================*/
/*
litepicker kendi css'ini çalışma anında enjekte ettiği (sonradan yüklendiği) için bu kurallar
!important taşır; ay ve yıl listeleri ayrı ayrı hedeflenir.
*/
.litepicker .month-item-header select.month-item-name,
.litepicker .month-item-header select.month-item-year
{
	appearance: none !important;
	-webkit-appearance: none !important;
	-moz-appearance: none !important;
	padding: 0.125rem 1.5rem 0.125rem 0.5rem !important;
	font-size: 12px !important;
	font-weight: 400 !important;
	color: #4A5464 !important;
	background-color: var(--tblr-bg-surface) !important;
	border: var(--tblr-border-width) solid var(--tblr-border-color) !important;
	border-radius: var(--tblr-border-radius) !important;
	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239ca3af' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e") !important;
	background-repeat: no-repeat !important;
	background-position: right 0.4375rem center !important;
	background-size: 10px 8px !important;
	cursor: pointer;
}

.litepicker .month-item-header select.month-item-name:hover,
.litepicker .month-item-header select.month-item-year:hover
{
	border-color: var(--tblr-blue) !important;
}

/*ay ile yıl listeleri arasında küçük boşluk*/
.litepicker .month-item-header select.month-item-year
{
	margin-left: 0.375rem !important;
}

/*önceki/sonraki ay okları tıklanabilirdir*/
.litepicker .button-previous-month,
.litepicker .button-next-month
{
	cursor: pointer !important;
}


/*========================================================================================================
SONUÇ MESAJLARI (sonucMesajlari-tabler): işlem sonucunu sağ üstte gösteren, kendiliğinden kaybolan
toast bildirimi. Üst alanın (60px) altından başlar; her şeyin üzerinde görünür.
========================================================================================================*/
.sonucMesajininAlani
{
	top: 60px;
	z-index: 1090;
}

/*yalın görünümde (açılır pencere içi sayfalar) üst alan yoktur; mesaj pencerenin en
tepesinden görünür — 60px'lik pay kısa pencerede mesajı ortaya/alta düşürüyordu*/
.yalinGovde .sonucMesajininAlani
{
	top: 2px;
}

/*mesaj kutusu: sabit kompakt genişlik, yuvarlak köşe*/
.sonucMesajininAlani .toast
{
	width: 340px;
	border-radius: var(--tblr-border-radius);
}

/*yalın sonuç mesajı (yalinMi=e): yalnız ikon, dar kutu*/
.sonucMesajininAlani .toast.yalinSonucMesaji
{
	width: auto;
	min-width: 0;
}

.sonucMesajininAlani .toast.yalinSonucMesaji .toast-body
{
	padding: 0.6rem 0.75rem;
	font-size: 1.25rem;
	line-height: 1;
}

.sonucMesajininAlani .toast-body
{
	padding: 0.625rem 0.75rem;
}

.sonucMesajininIkonu
{
	font-size: 20px;
}


/*========================================================================================================
alt alan (alt-tabler / #altAlan): limitless'taki gibi alçak beyaz şerit.
tabler'ın .footer varsayılanından farkları: zemin beyazdır, dikey iç pay dardır.
page-wrapper'ın en altında durur (.footer'daki margin-top:auto sayesinde, içerik kısa olsa bile).
========================================================================================================*/
#altAlan
{
	background-color: #FFFFFF;
	padding: calc(0.625rem + 2px) 0;
	font-size: 13px;
	color: #4A5464;
}

/*alt alandaki linkte alt çizgi olmaz; hover geri bildirimi üst şeritteki gibi arkaplan değişimiyledir*/
#altAlan a
{
	padding: 2px 6px;
	border-radius: var(--tblr-border-radius);
}

/*alt alandaki ikon yazıdan biraz büyüktür*/
#altAlan a .ti
{
	font-size: 16px;
}

#altAlan a,
#altAlan a:hover
{
	text-decoration: none;
}

#altAlan a:hover
{
	background-color: rgba(0, 0, 0, 0.07);
}


/*========================================================================================================
ÜST NİTELEYİCİLER (ustNiteleyiciler-tabler): limitless'taki gibi sayfanın en üstünde tam genişlikte
beyaz şerit. Siyah başlık, hemen altında aynı düşey hizada gri breadcrumb; sağda mavi görünüm
değiştirme butonu. Üstteki negatif marj, page-body'nin üst marjını geri alır; şerit üst alana
(header'a) bitişik başlar, altında içerikten önce boşluk bırakılır.
========================================================================================================*/
#ustNiteleyicilerinAlani
{
	margin: calc(-1 * var(--tblr-page-padding-y)) 0 1rem;
	padding: calc(0.75rem + 8px) 0;
	background-color: #FFFFFF;
	border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
}

#ustNiteleyicilerinAlani .page-title
{
	font-size: 22px;
	color: #000000;
}

/*breadcrumb başlığın hemen altında başlar; tüm öğeleri (sonuncusu dahil) gridir, alt çizgi yoktur.
tabler'ın flex düzeni yerine satır içi akış kullanılır (liste blok, elemanları inline): uzun rota
elemanı blok halinde alt satıra düşmez, sığmayan kısmı kelimeden bölünüp aynı satırdan devam eder*/
#ustNiteleyicilerinAlani .breadcrumb
{
	display: block;
	margin-top: 0.25rem;
	font-size: 13px;
}

#ustNiteleyicilerinAlani .breadcrumb-item
{
	display: inline;
}

/*"/" ayracının float'u satır içi akışta hizayı bozar; ayraç da satır içine alınır*/
#ustNiteleyicilerinAlani .breadcrumb-item + .breadcrumb-item::before
{
	float: none;
}

#ustNiteleyicilerinAlani .breadcrumb-item a
{
	color: var(--tblr-secondary);
}

#ustNiteleyicilerinAlani .breadcrumb-item a,
#ustNiteleyicilerinAlani .breadcrumb-item a:hover
{
	text-decoration: none;
}

/*rota linkinin üzerine gelince yazı koyulaşır (link olduğu belli olur)*/
#ustNiteleyicilerinAlani .breadcrumb-item a:hover
{
	color: var(--tblr-body-color);
}

/*
kart başlığındaki eylemler (indirme, göster/gizle, kaldır) tek satırda yan yana hizalanır;
araya giren dropdown sarmalayıcısı (blok div) satırı kırmasın diye alan flex'e çevrilir.
*/
.card-header .card-actions
{
	display: flex;
	align-items: center;
	gap: 0.625rem;
}

/*
kart başlığı siyahtır ve tamamı büyük harf gösterilir (büyük harfe çevirme veri değil görüntü
düzeyindedir; html lang="tr" olduğu için tarayıcı i→İ dönüşümünü türkçe kurala göre yapar).
başlığın başındaki dikey çubuk modül tema rengindedir (modül kimliği).
*/
.card-header .card-title
{
	display: flex;
	align-items: center;
	color: #000000;
	text-transform: uppercase;
	/*büyük harfler doğal olarak aralıklı durduğu için harf arası bir tık daraltılır*/
	letter-spacing: -0.02em;
}

.card-header .card-title::before
{
	content: "";
	width: 4px;
	height: 1.05em;
	margin-right: 0.5rem;
	border-radius: 2px;
	background-color: var(--tblr-primary);
	flex-shrink: 0;
}

.card-header .card-actions .btn-action
{
	color: #000000;
}

/*kart başlığındaki eylem ikonları*/
.card-header .card-actions .btn-action .ti
{
	font-size: 18px;
}

/*göster/gizle oku çarpıdan bir tık büyüktür, çarpı bir tık küçüktür*/
.card-header .card-actions .kartIkonlari[data-action="collapse"] .ti
{
	font-size: 19px;
}

.card-header .card-actions .kartIkonlari[data-action="remove"] .ti
{
	font-size: 16px;
}

.card-header .card-actions .kartIkonlari[data-action="temizle"] .ti
{
	font-size: 17px;
}

/*
kart başlığındaki ekleme, güncelleme ve silme butonları: BUTON KURALI gereği beyaz
zeminlidir (submit değildirler) — yazı/bordür işlev rengindedir, hover'da dolar.
ölçüleri indirme butonuyla birebir aynıdır. markup'taki btn-green/btn-red sınıflarının
dolu değerleri buradaki değişkenlerle ezilir (bu dosya tabler.css'ten sonra yüklenir).
*/
.kartinEklemeButonu,
.kartinGuncellemeButonu,
.kartinSilmeButonu,
.kartinAcilirMenuButonu
{
	display: inline-flex;
	align-items: center;
	font-size: 13px;
	line-height: 1.4285714286;
	/*sol pay dardır: ikonun solunda geniş boşluk durmasın*/
	padding: 6px 12px 6px 8px;
	/*tabler'ın .btn'i 40px asgari yükseklik dayatır; indirme butonuyla eşitlik için kaldırılır*/
	min-height: 0;
}

.kartinEklemeButonu
{
	--tblr-btn-color: var(--tblr-green);
	--tblr-btn-bg: #FFFFFF;
	--tblr-btn-border-color: var(--tblr-green);
	--tblr-btn-hover-color: #FFFFFF;
	--tblr-btn-hover-bg: var(--tblr-green);
	--tblr-btn-hover-border-color: var(--tblr-green);
	--tblr-btn-active-color: #FFFFFF;
	--tblr-btn-active-bg: var(--tblr-green);
	--tblr-btn-active-border-color: var(--tblr-green);
}

/*mod geçiş butonunun işlev rengi MAVİDİR (yeşil dönemi beyaz format öncesindeydi;
beyaz zeminle submit butonlarıyla karışma riski kalmadığından maviye alındı)*/
.kartinGuncellemeButonu
{
	--tblr-btn-color: var(--tblr-blue);
	--tblr-btn-bg: #FFFFFF;
	--tblr-btn-border-color: var(--tblr-blue);
	--tblr-btn-hover-color: #FFFFFF;
	--tblr-btn-hover-bg: var(--tblr-blue);
	--tblr-btn-hover-border-color: var(--tblr-blue);
	--tblr-btn-active-color: #FFFFFF;
	--tblr-btn-active-bg: var(--tblr-blue);
	--tblr-btn-active-border-color: var(--tblr-blue);
}

.kartinSilmeButonu
{
	--tblr-btn-color: var(--tblr-red);
	--tblr-btn-bg: #FFFFFF;
	--tblr-btn-border-color: var(--tblr-red);
	--tblr-btn-hover-color: #FFFFFF;
	--tblr-btn-hover-bg: var(--tblr-red);
	--tblr-btn-hover-border-color: var(--tblr-red);
	--tblr-btn-active-color: #FFFFFF;
	--tblr-btn-active-bg: var(--tblr-red);
	--tblr-btn-active-border-color: var(--tblr-red);
}

.kartinEklemeButonu .ti,
.kartinGuncellemeButonu .ti,
.kartinSilmeButonu .ti,
.kartinAcilirMenuButonu .ti
{
	font-size: 18px;
}

/*
KİLİTLİ (disabled) BUTON KURALI: kilitli buton, STANDART halin soluklaştırılmışıdır
(beyaz zemin, işlev renkli yazı/bordür + tabler'ın disabled opaklığı) — dolu hover
görünümü taşımaz. tabler'ın renk sınıfları (btn-green vb.) disabled değişkenlerini
dolu renge kurduğundan burada standart değişkenlere sabitlenir.
*/
.kartinEklemeButonu,
.kartinGuncellemeButonu,
.kartinSilmeButonu
{
	--tblr-btn-disabled-color: var(--tblr-btn-color);
	--tblr-btn-disabled-bg: var(--tblr-btn-bg);
	--tblr-btn-disabled-border-color: var(--tblr-btn-border-color);
}

/*
kart başlığındaki indirme butonu (kartTepesi-tabler): tek link olsa bile "İndir" yazılı,
TURUNCU açılır menü butonudur; BUTON KURALI gereği beyaz zeminlidir (yazı/bordür turuncu),
hover'da ve menü açıkken turuncuya dolar. menüde her indirme türü kendi ikonuyla
listelenir. tabler'ın kare btn-action'ı yazıya yer açacak şekilde genişletilir.
(dolu turuncu dönemi denemeleri: mor, sarı, pembe, teal, yeşil ve mavi)
*/
.card-header .card-actions .kartinIndirmeButonu
{
	display: inline-flex;
	align-items: center;
	width: auto;
	padding: 6px 12px;
	font-size: 13px;
	color: var(--tblr-orange);
	background-color: #FFFFFF;
	border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-orange);
}

.kartinIndirmeButonu .ti
{
	margin-right: 0.375rem;
}

/*hover'da ve açılır menü açıkken tam renge dolar*/
.card-header .card-actions .kartinIndirmeButonu:hover,
.card-header .card-actions .kartinIndirmeButonu.show
{
	color: #FFFFFF;
	border-color: var(--tblr-orange);
	background-color: var(--tblr-orange);
}

/*tabler'ın btn-action'ı bootstrap caret'ini yok eder (.btn-action:after content: none);
indirme butonu açılır menü butonu olduğundan standart caret geri getirilir. buton flex
olduğundan caret dikeyde ortalanır; yazının orta hizasına oturması için 2px yukarı alınır*/
.kartinIndirmeButonu.dropdown-toggle::after
{
	content: "";
	position: relative;
	top: -2px;
}
/*açılır menüdeki indirme satırlarında hover, butonla uyumlu soluk turuncu zemindir*/
.card-header .card-actions .dropdown-menu .dropdown-item:hover
{
	color: var(--tblr-orange-darken);
	background-color: rgba(var(--tblr-orange-rgb), 0.08);
}

/*kart tepesi açılır menüleri (kartinAcilirMenusu): hover zemini menünün kendi renginden (menuRengi niteliği)*/
.card-header .card-actions .kartinAcilirMenusu[menuRengi="purple"] .dropdown-menu .dropdown-item:hover
{
	color: var(--tblr-purple-darken);
	background-color: rgba(var(--tblr-purple-rgb), 0.08);
}

.card-header .card-actions .kartinAcilirMenusu[menuRengi="azure"] .dropdown-menu .dropdown-item:hover
{
	color: var(--tblr-azure-darken);
	background-color: rgba(var(--tblr-azure-rgb), 0.08);
}

.card-header .card-actions .kartinAcilirMenusu[menuRengi="green"] .dropdown-menu .dropdown-item:hover
{
	color: var(--tblr-green-darken);
	background-color: rgba(var(--tblr-green-rgb), 0.08);
}

.card-header .card-actions .kartinAcilirMenusu[menuRengi="pink"] .dropdown-menu .dropdown-item:hover
{
	color: var(--tblr-pink-darken);
	background-color: rgba(var(--tblr-pink-rgb), 0.08);
}

.card-header .card-actions .kartinAcilirMenusu[menuRengi="yellow"] .dropdown-menu .dropdown-item:hover
{
	color: var(--tblr-yellow-darken);
	background-color: rgba(var(--tblr-yellow-rgb), 0.08);
}

.kartinAcilirMenusu .dropdown-item
{
	display: flex;
	align-items: center;
}
/*göster/gizle ve kaldır ikonlarında da hover mavidir*/
.card-header .card-actions .kartIkonlari:hover
{
	color: var(--tblr-blue);
	background-color: rgba(var(--tblr-blue-rgb), 0.06);
}

/*seçili radyo tam dolu görünür (ortası delikli varsayılan görünüm kullanılmaz)*/
.form-check-input[type="radio"]:checked
{
	background-image: none;
}

/*radyo/onay kutusu ve etiketleri tıklanabilirdir*/
.form-check,
.form-check-input,
.form-check-label
{
	cursor: pointer;
}

/*onay penceresindeki uyarı ikonu*/
.onayPenceresininIkonu
{
	font-size: 2.5rem;
}


/*sağdaki görünüm değiştirme butonu: tabler varsayılanından 2px küçük yazı ve daraltılmış iç pay*/
/*üst niteleyicilerin sağındaki butonlar (görünüm değiştirme, yalın görünümde Modüller) aynı ölçüdedir*/
#ustNiteleyicilerinAlani .sayfaTurunuDegistirmeButonu,
#ustNiteleyicilerinAlani .ustNiteleyicilerinButonu
{
	font-size: 13px;
	padding: calc(var(--tblr-btn-padding-y) - 2px) calc(var(--tblr-btn-padding-x) - 3px);
}

/*sayfa bir iframe içinde (açılır pencerede) çalışıyorsa görünüm değiştirme butonu ve rota
linkleri gösterilmez: pencere içinde görünüm değiştirmek ve rota ile gezinmek anlamsızdır
(rotadaki target="_parent" ana pencereyi de götürüyordu). "iframeIcinde" sınıfını
ustteKapsananlar'daki senkron betik html elementine takar*/
.iframeIcinde #ustNiteleyicilerinAlani .sayfaTurunuDegistirmeButonu,
.iframeIcinde #ustNiteleyicilerinAlani .ustNiteleyicilerinButonu,
.iframeIcinde #ustNiteleyicilerinAlani .breadcrumb
{
	display: none;
}

/*========================================================================================================
BÜYÜK IFRAME PENCERESİ (genisModal): limitless bicem.css'teki genisModal / tumModallarIcinIframe
düzeninin tabler karşılığıdır; sınıf modal-dialog'a verilir, iframe "tumModallarIcinIframe" alır.
Kapama butonu (acilirPencereyiKapamaButonu) pencerenin sağ üst KÖŞESİNE taşan yuvarlak butondur:
pencere içeriğine (kart tepesine) hiçbir şey eklemeyi/kaydırmayı gerektirmez. limitless'taki
gri zemin yerine dolu kırmızı benimsendi.
========================================================================================================*/
.genisModal
{
	min-width: 90%;
	margin: 2% auto 0% auto;
}

.genisModal .modal-content
{
	min-height: 90vh;
}

.genisModal .tumModallarIcinIframe
{
	min-height: 90vh;
}

/*standart (dar) pencere: bicem.css'teki standartModal'ın tabler karşılığı*/
.standartModal
{
	min-width: 70%;
	margin: 2% auto 0% auto;
}

.standartModal .modal-content
{
	min-height: 70vh;
}

.standartModal .tumModallarIcinIframe
{
	min-height: 70vh;
}

/*
içeriğe uyan pencere (acilirIcerigeUyanPencere): genişlik açılan sayfanın kökündeki
"pencereninTercihGenisligi" niteliğinden, yükseklik içeriğin kendisinden kurulur — iframe
altında/yanında boşluk kalmaz (ölçüm iframePenceresindeAc'ın yükleme dinleyicisindedir;
üst sınır her iki yönde ekranın %90'ıdır). ölçüm gelene kadarki ilk an için makul bir
başlangıç genişliği verilir.
*/
.icerigeUyanModal
{
	width: 560px;
	max-width: 90%;
	margin: 4vh auto 0 auto;
}

.icerigeUyanModal .modal-content,
.icerigeUyanModal .tumModallarIcinIframe
{
	min-height: 0;
	height: auto;
}

/*
İÇERİĞE UYAN PENCEREDE AÇILAN SAYFANIN DÜZENİ (ortak): pencereninTercihGenisligi bildiren
sayfa bu kuralları kendiliğinden alır — iskeletin tam-yükseklik kilidi kırılır (belge
yüksekliği içeriğe düşer, scrollHeight ölçümü birebir oturur), zemin beyazlanır ve
page-body marjları sıfırlanır: pencerede kenar boşluğu/gri şerit kalmaz.
*/
html:has([pencereninTercihGenisligi]),
html:has([pencereninTercihGenisligi]) body
{
	height: auto;
	min-height: 0;
	background-color: #FFFFFF;
}

html:has([pencereninTercihGenisligi]) .page-body
{
	margin-top: 0;
	margin-bottom: 0;
}

/*pencereyi kaplayan sayfa: pencere sayfasının KÖK sarmalayıcısı bu sınıfı alır
(pencereninTercihGenisligi ile aynı öğe); içindeki TÜM kartlara uygulanır — kartların dış
boşluğu, çerçevesi ve gölgesi yoktur (çerçeveyi pencere çizer), başlık ve gövdelerin
dikey payları pt-3/pb-3 (1rem) düzeyindedir. birden çok kart varsa kartlar bitişik durur
ve araları tek ince ayraç çizgisiyle ayrılır*/
.pencereyiKaplayanSayfa .card
{
	margin: 0;
	border: 0;
	box-shadow: none;
}

.pencereyiKaplayanSayfa .card + .card
{
	border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
}

/*pencere sayfasındaki bilgi kutusu (veri yok uyarısı gibi) pencereyi kaplar: köşesiz, boşluksuz*/
.pencereyiKaplayanSayfa .alert
{
	border-radius: 0;
	margin: 0;
}

.pencereyiKaplayanSayfa .card-header,
.pencereyiKaplayanSayfa .card-body
{
	padding-top: 1rem;
	padding-bottom: 1rem;
}

button.acilirPencereyiKapamaButonu
{
	position: absolute;
	top: -14px;
	right: -14px;
	z-index: 20;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.25rem;
	height: 2.25rem;
	border: 0;
	border-radius: 50%;
	background-color: var(--tblr-red-darken);
	color: #FFFFFF;
	font-size: 22px;
	cursor: pointer;
}

button.acilirPencereyiKapamaButonu:hover
{
	background-color: var(--tblr-red);
}


/*========================================================================================================
BAŞKASININ VERİSİNİ GÖRÜNTÜLEME BANDI: başkasının verisi görüntülenirken sayfanın en üstünde duran
yeşil YAPIŞKAN bant (ilk örnekler: takvim "X takvimini görüntülüyorsunuz", eylemAc "X tarafından
girilen eylemi görüntülüyorsunuz"). Üstteki negatif marj page-body'nin üst marjını geri alır: bant
üst alana bitişik başlar; sayfa kayarken içerik alanının tepesinde kalır. Bant varken üst
niteleyiciler kendi negatif marjını bırakır (bandın üstüne binmesin).
========================================================================================================*/
.baskasininVerisiniGoruntulemeBandi
{
	position: sticky;
	top: 0;
	z-index: 10;
	width: 100%;
	margin-top: calc(-1 * var(--tblr-page-padding-y));
	padding-top: 8px;
	padding-bottom: 8px;
	background-color: var(--tblr-green);
	color: #FFFFFF;
	text-align: center;
	font-size: 18px;
}

.baskasininVerisiniGoruntulemeBandi + #ustNiteleyicilerinAlani
{
	margin-top: 0;
}


/*========================================================================================================
üst şerit (ust-tabler / #ustAlan): yazılar beyaz, ikonlar 22px
========================================================================================================*/
/*
üst alan, sol menüden ayırıcı çizgiyle değil ton farkıyla ayrılır: sol menü tabler'ın koyu tema
zemininde (gray-800 #1f2937) kalırken üst alan bunun 2-3 ton koyusunu kullanır — fark belli
olur ama uçurum oluşmaz. alttaki çizgi kaldırılmıştır.
*/
#ustAlan
{
	--tblr-navbar-bg: #181F29;
	--tblr-navbar-border-color: transparent;
	/*
	üst alan yüksekliği: iki satırlık logo yazısına uygun sabit değer.
	(padding vermek işe yaramaz: border-box nedeniyle asgari yüksekliğin içinde erir.)
	*/
	min-height: 60px;
}

/*logo linkinin üzerine gelince alt çizgi çıkmaz*/
#ustAlan .navbar-brand a,
#ustAlan .navbar-brand a:hover
{
	text-decoration: none;
}

/*
sağdaki kullanıcı menüsünde:
- öğeye tıklanınca yazı tema rengine dönmez (tabler varsayılanı: active-color = primary)
- koyu zeminde çok belirgin duran menü kenarlığı yumuşatılır
*/
#ustAlan .dropdown-menu
{
	--tblr-dropdown-link-active-color: inherit;
	--tblr-dropdown-border-color: rgba(255, 255, 255, 0.06);
}

/*
sola açılan alt menü, üst menünün iç payı (4px) + kenarlığı (1px) kadar yukarı alınır ki iki
menü aynı üst düzlemden başlasın. (navbar içindeki açılır menülerde bootstrap statik CSS
konumlandırması kullanır; data-bs-offset burada geçersizdir.)
*/
#ustAlan .dropstart .dropdown-menu
{
	top: -5px;
}

#ustAlan .nav-link
{
	color: #E0E0E0;
}

/*üst alan linklerinde hover: zeminden belirgin biçimde koyu bir arkaplan*/
#ustAlan .nav-link:hover
{
	background-color: rgba(0, 0, 0, 0.35);
	color: #FFFFFF;
}

#ustAlan .nav-link .ti
{
	font-size: 22px;
}

/*ikon ile yazı arasındaki boşluk (tabler varsayılanı 0.5rem); dikey ince ayar için ikon
kapsayıcısına ikon dikey hizalama standardındaki sınıflar verilir*/
#ustAlan .nav-link .nav-link-icon
{
	margin-right: 0.25rem;
}

#ustAlan .ustKullanicininAltBilgisi
{
	color: #E0E0E0;
}

/*
kullanıcı adı-birim alanının yüksekliği, bildirimler alanıyla aynıdır (3rem = 48px).
Alanda açılır menü oku YOKTUR (11.09.2026: header'da iki ok yan yana gelmesin diye kaldırıldı);
tıklanabilir olduğunu hover'daki zemin anlatır.
*/
#ustAlan .ustKullaniciAdi
{
	min-height: 3rem;
	border-radius: var(--tblr-border-radius);
	transition: background-color 0.15s;
}

#ustAlan .ustKullaniciAdi:hover,
#ustAlan .ustKullaniciAdi[aria-expanded="true"]
{
	background-color: rgba(255, 255, 255, 0.10);
}

/*========================================================================================================
MODÜL PANELİ (modulPaneli-tabler: sağdan kayarak açılan modül/hesap değiştirme kartı):
- 10.09.2026 düzeni: panel tam boy çekmece DEĞİL, içerik boyunda bir karttır; ekranın sağ ORTASINDA
  durur (üst-alt otomatik marj), sağ kenara YAPIŞIKTIR, yalnızca sol köşeleri yuvarlaktır. hesap sayısı çoksa
  yükseklik ekranın %85'inde durur ve içeride kaydırılır. dikey ortalama transform ile DEĞİL top/bottom 0
  + margin auto ile yapılır ki bootstrap'ın kayma transform'u bozulmasın.
- satırlar 52px boyundadır; sol sütunda sistem adı, sağ sütunda sabit paylı (%52) birim adı: göz sol
  sütunu aşağı doğru tarar, karar verince sağa bakar. iki sütun da tek satıra sığar, taşan üç noktayla
  kesilir (tam ad title'da).
- panel kaydırması sol menüdeki gibi OverlayScrollbars iledir (betik: modulPaneli-tabler); aşağıdaki
  scrollbar-width kuralı yalnızca kütüphane devreye girene kadarki native çubuğu gizler.
========================================================================================================*/
#modulPaneli
{
	--tblr-offcanvas-width: 420px;
	/*panel zemini üst alanla aynı tondadır; koyu şema net ve temayla uyumludur*/
	background: #181F29;
	box-shadow: -10px 0 30px rgba(20, 45, 90, 0.35);
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-right: 0;
	/*panel sağ kenara yapışıktır: yalnızca sol köşeler yuvarlaktır*/
	border-radius: 8px 0 0 8px;
	overflow: hidden;
	/*sağ orta: kutu dikeyde içerik kadar, üst ve alt marj otomatik*/
	inset: 0 0 0 auto;
	height: fit-content;
	max-height: 85vh;
	margin: auto 0;
}

/*dar ekranda yuvarlatma da kalkar*/
@media (max-width: 575.98px)
{
	#modulPaneli
	{
		border-radius: 0;
	}
}

#modulPaneli .list-group-item,
.modullerinListesi .list-group-item
{
	padding: 0 1rem;
	min-height: 52px;
	font-size: 13px;
	color: #E9EFF7;
	/*satır zemini saydamdır ki panelin zemin görseli görünsün*/
	background-color: transparent;
	border-color: rgba(255, 255, 255, 0.12);
}

/*sol sütun (sistem adı): kalan alanı alır, tek satır, taşan üç nokta*/
#modulPaneli .sistemHesabininAdi,
.modullerinListesi .sistemHesabininAdi
{
	flex: 1 1 auto;
	min-width: 0;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/*sağ sütun (birim adı): sabit pay, sağa yaslı, tek satır*/
#modulPaneli .sistemHesabininBirimi,
.modullerinListesi .sistemHesabininBirimi
{
	flex: 0 0 52%;
	padding-left: 0.75rem;
	font-size: 12px;
	color: #C9D3E0;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/*
HOVER DAVRANIŞI: içinde bulunulan modülün satırı diğerlerinden farksızdır (panel her sistemin
ortak alanıdır, vurgu yoktur). Üzerine gelinen satır yarı saydam beyaz bir tona bürünür;
yazılar standart renginde, ikonlar kendi sistem renklerinde kalır, alt çizgi oluşmaz.
*/
/*panel içerik boyunda küçük bir kart olduğundan arkadaki karartma hafiftir (tam boy dönemde 0.7'ydi)*/
.offcanvas-backdrop.show
{
	opacity: 0.4;
}

/*panel kaydırma çubuğu sol menüdekiyle aynı ölçülerdedir (6px, iç paysız)*/
#modulPaneli .os-scrollbar
{
	--os-size: 6px;
	--os-padding-perpendicular: 0;
	--os-padding-axis: 0;
}

/*
panelde kaydırma çubuğu VARKEN satırlar (ve hover arkaplanları) tam çubuğun başladığı yerde
biter; çubuk yokken tam genişliktir (sol menüdeki desenin aynısı).
*/
#modulPaneli [data-overlayscrollbars-viewport~=overflowYScroll] .list-group-item
{
	margin-right: 6px;
}

#modulPaneli .list-group-item,
#modulPaneli .list-group-item:hover,
.modullerinListesi .list-group-item,
.modullerinListesi .list-group-item:hover
{
	text-decoration: none;
}

#modulPaneli .list-group-item:hover,
.modullerinListesi .list-group-item:hover
{
	background-color: rgba(255, 255, 255, 0.10);
}

/*
içinde bulunulan hesabın satırı: yazılar diğer satırlarla aynıdır; satırın sol kenarına,
dikeyde ortalanmış kısa bir düşey çubuk konur (satırın sol iç payı daraltılmadan, mutlak konumla).
*/
#modulPaneli .list-group-item.seciliHesabinSatiri::before,
.modullerinListesi .list-group-item.seciliHesabinSatiri::before
{
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 2px;
	height: 60%;
	border-radius: 0 2px 2px 0;
	background-color: #FFFFFF;
}

/*
gövde, panelin %85 üst sınırını aşan hesap listesinde kaydırılır: offcanvas dikey flex olduğundan
gövdenin min-height'ı sıfırlanır (yoksa flex çocuğu taşar, kaydırmaz); kaydırma çubuğu OverlayScrollbars'ın
sol menüdeki 6px'lik düzenidir (kurulum modulPaneli-tabler'da, panel ilk açıldığında)
*/
#modulPaneli .offcanvas-body
{
	min-height: 0;
	scrollbar-width: none;
}


/*ortadaki menü linkleri (METRİK, BİLDİRİMLER, MODÜLLER): 14px yazı, daraltılmış yan iç pay*/
#ustAlan .navbar-collapse > .navbar-nav.me-auto .nav-link
{
	font-size: 14px;
	padding-left: 0.5rem;
	padding-right: 0.5rem;
}

/*
tabler, navbar linklerindeki rozeti sağ üst köşeye mutlak konumlandırır; bizde rozet yazının
sağında, yazıyla dikeyde paralel durur.
*/
#ustAlan .nav-link .badge
{
	position: static;
	transform: none;
}

/*
kullanıcı menüsündeki alt menüler sola açılır (dropstart); ancak bootstrap dropstart'ta oku
yazının soluna, sola bakar şekilde koyar. oku gizleyip yazının sağına sağa bakan standart
alt menü oku koyuyoruz.
*/
#ustAlan .dropstart .dropdown-toggle::before
{
	display: none;
}

#ustAlan .dropstart .dropdown-toggle::after
{
	content: "";
	display: inline-block;
	vertical-align: 0;
	width: 0.36em;
	height: 0.36em;
	border-top: 0;
	border-right: 0;
	border-bottom: 1px var(--tblr-border-style);
	border-left: 1px var(--tblr-border-style);
	margin-right: 0.1em;
	margin-left: 0.4em;
	transform: rotate(-135deg);
}

/*==================================================================
KARTIN GÜNCELLEME VE GÖRÜNTÜLEME MODU BAŞLADI
"guncellemeModluKart" sınıflı kart iki modludur: görüntüleme modunda
(varsayılan) "alanGoruntusu" / "goruntulemeSatiri" öğeleri görünür,
"alanDuzenlemesi" / "guncellemeSatiri" öğeleri gizlenir; karta
"guncellemeModunda" sınıfı eklenince tersine döner. Mod geçişi
tablerUyarlama.js'teki "kartinGuncellemeButonu" delegasyonuyla yapılır.
==================================================================*/
/*görüntüleme modunda güncelleme öğeleri gizlidir*/
.guncellemeModluKart:not(.guncellemeModunda) .alanDuzenlemesi,
.guncellemeModluKart:not(.guncellemeModunda) .guncellemeSatiri
{
	display: none !important;
}

/*güncelleme modunda görüntüleme öğeleri gizlidir*/
.guncellemeModluKart.guncellemeModunda .alanGoruntusu,
.guncellemeModluKart.guncellemeModunda .goruntulemeSatiri
{
	display: none !important;
}

/*görüntüleme modunda zorunlu alan yıldızı ve formu temizleme ikonu anlamsızdır*/
.guncellemeModluKart:not(.guncellemeModunda) .col-form-label.required::after,
.guncellemeModluKart:not(.guncellemeModunda) .form-label.required::after
{
	content: none;
}

/*alan ipuçları giriş rehberliğidir: görüntüleme modunda gizlenir
(ipuçları çoğunlukla d-block taşıdığından !important zorunludur)*/
.guncellemeModluKart:not(.guncellemeModunda) .form-hint
{
	display: none !important;
}

.guncellemeModluKart:not(.guncellemeModunda) [data-action="temizle"]
{
	display: none;
}

/*pdf çıktısı okuma yüzeyinin çıktısıdır: indirme butonu yalnızca görüntüleme modunda görünür
(yarısı değiştirilmiş formun çıktısı alınmaz). butonun kendisi değil dropdown sarmalayıcısı
(kartinIndirmeAlani) gizlenir; yoksa boş sarmalayıcı buton aralığını bir kez daha tetikler*/
.guncellemeModluKart.guncellemeModunda .kartinIndirmeAlani
{
	display: none;
}

/*ekleme butonu da (örn. PÜKÖ Ekle) yalnızca görüntüleme modunda görünür*/
.guncellemeModluKart.guncellemeModunda .kartinEklemeButonu
{
	display: none;
}

/*alan görüntüsü, solundaki etiketin dikey hizasına oturur*/
.guncellemeModluKart .alanGoruntusu
{
	padding-top: calc(0.4375rem + var(--tblr-border-width));
	padding-bottom: calc(0.4375rem + var(--tblr-border-width));
}

/*
görüntüleme modu bir okuma yüzeyidir: form kontrolleri için bırakılan satır
boşlukları sıkılaştırılır (satırları etiket ve değer padding'leri ayırır);
güncelleme moduna geçişte kartın gevşemesi mod değişiminin doğal işaretidir
*/
.guncellemeModluKart:not(.guncellemeModunda) .row.mb-3
{
	margin-bottom: 0 !important;
}/*==================================================================
KARTIN GÜNCELLEME VE GÖRÜNTÜLEME MODU BİTTİ
==================================================================*/




/*==================================================================
SATIR İŞLEM BUTONLARININ DAR EKRAN KURALI BAŞLADI
Liste satırlarındaki işlem butonlarının (Görüntüle/İndir/Sil...)
yazısı span.islemButonununYazisi içinde basılır ve butona title
verilir; dar masaüstünde (xxl altı — 1366 sınıfı ekranlar) yazılar
gizlenip butonlar ikona iner: satırlar sarmaz, tablo uzamaz, yazı
fare üzerindeyken title ile görünür (ilk kullanım: eylemAc kanıt
dizini).
==================================================================*/
@media (max-width: 1399.98px)
{
	.islemButonununYazisi
	{
		display: none;
	}
}
/*==================================================================
SATIR İŞLEM BUTONLARININ DAR EKRAN KURALI BİTTİ
==================================================================*/




/*==================================================================
ON-OFF ANAHTARI (form-switch) BAŞLADI
Anahtarın hover/odak hali RENK DEĞİŞTİRMEZ: kapalı gri, açık yeşil —
bu ayrım yeterlidir. Bootstrap odakta knob'u maviye çevirip mavi odak
çerçevesi basıyordu; knob gri standarda sabitlenir, çerçeve kaldırılır
(isTanimiAc'ta denendi ve ortak kural yapıldı, 07.09.2026)
==================================================================*/
.form-switch .form-check-input:focus,
.form-switch .form-check-input:hover
{
	border-color: var(--tblr-border-color);
	box-shadow: none;
}

.form-switch .form-check-input:focus:not(:checked)
{
	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba(0,0,0,0.25)'/%3e%3c/svg%3e");
}

.form-switch .form-check-input:checked:focus,
.form-switch .form-check-input:checked:hover
{
	border-color: var(--tblr-green);
}
/*==================================================================
ON-OFF ANAHTARI (form-switch) BİTTİ
==================================================================*/




/*==================================================================
TARİH KUTUSUNUN TAKVİM İKONU BAŞLADI
Yerleşik input type="date" kutusundaki takvim ikonu tıklanabilirdir;
imleç bunu söylemiyordu — el imleci verilir (tüm tarih kutularında)
==================================================================*/
input[type="date"]::-webkit-calendar-picker-indicator
{
	cursor: pointer;
}
/*==================================================================
TARİH KUTUSUNUN TAKVİM İKONU BİTTİ
==================================================================*/




/*==================================================================
KISA VURGU BAŞLADI
"az önce buraya geldin" anlarının ortak vurgusu (yardımcı fonksiyon
tablerUyarlama.js'teki elemaniVurgula): eleman ~3 saniye çok açık
sarı zeminle vurgulanır ve sona doğru solarak normale döner
==================================================================*/
.kisaVurgu
{
	animation: kisaVurguAnimasyonu 3s ease-out;
	border-radius: 4px;
}

@keyframes kisaVurguAnimasyonu
{
	0%, 60% { background-color: #FFF9DB; }
	100% { background-color: transparent; }
}
/*==================================================================
KISA VURGU BİTTİ
==================================================================*/




/*========================================================================================================
ORTALANMIŞ YALIN ALAN (giriş ve 404 sayfaları): header'sız yalın görünümde tek kartın ekranın ortasında
durduğu düzen; kart container-tight genişliğindedir (10.09.2026)
========================================================================================================*/
.ortalanmisYalinAlan
{
	min-height: 100vh;
	display: flex;
	align-items: center;
}

.ortalanmisYalinAlan > .card
{
	width: 100%;
}

/*kart, tabler'ın container-tight ölçüsünden (30rem) bir kademe geniştir: hesap seçimi kartındaki iki satırlı
karşılama metni ("Hoş geldiniz Ad Soyad." / "Devam etmek için ...") kırılmadan sığar*/
.ortalanmisYalinAlan.container-tight
{
	max-width: 33rem;
}

/*giriş kartındaki bilgi/uyarı kutuları çerçevesizdir: çerçeveli hali hemen altındaki giriş alanlarıyla aynı görünüyordu*/
.ortalanmisYalinAlan .alert
{
	border: 0;
}

/*üstte duran varyant (404): arka plan illüstrasyonunun alt ortasındaki karakter örtülmesin diye kart ekranın
üst bölgesinde durur*/
.ortalanmisYalinAlan.ustteDuranYalinAlan
{
	align-items: flex-start;
	/*blade'de py-4 kullanılmaz: bootstrap yardımcı sınıfı !important taşıdığı için buradaki üst boşluğu eziyordu*/
	padding-top: 10vh;
	padding-bottom: 1.5rem;
}

/*tabler'ın page-body dikey marjları 100vh'lik alana eklenip dikey kaydırma çubuğu doğuruyordu; bu düzende sıfırlanır*/
html:has(.ortalanmisYalinAlan) .page-body
{
	margin-top: 0;
	margin-bottom: 0;
}

/*
giriş kartındaki çıkış: içi BEYAZ, çerçevesi ve yazısı kırmızı butondur. Tabler'ın "btn-outline-red"
butonu hover'da içini kırmızıyla doldurduğundan zemin beyaz sabitlenir; hover'da yalnız kırmızı
koyulaşır (hesap seçimi ekranındaki ikincil eylemdir, dolu kırmızı butona dönüşmesi fazla baskın olur).
*/
.girisKartininCikisButonu,
.girisKartininCikisButonu:hover,
.girisKartininCikisButonu:focus,
.girisKartininCikisButonu:active
{
	background-color: #FFFFFF;
	color: var(--tblr-red);
	border-color: var(--tblr-red);
	/*yazı buton varsayılanından (14px) bir puan küçüktür: ikincil eylemdir*/
	font-size: 13px;
}

.girisKartininCikisButonu:hover,
.girisKartininCikisButonu:focus,
.girisKartininCikisButonu:active
{
	color: var(--tblr-red-darken);
	border-color: var(--tblr-red-darken);
}

/*ikon yazıyla göz hizasına gelsin diye üstten 1px boşluk alır*/
.girisKartininCikisButonu i
{
	margin-top: 1px;
}

/*giriş kartı: logo, başlık, alt bağlantılar (şifremi unuttum / çıkış)*/
.girisLogosu
{
	height: 80px;
}

.girisBasligi
{
	font-size: 17px;
	font-weight: 600;
	color: var(--tblr-body-color);
}

.girisKartininBaglantisi
{
	font-size: 13px;
	color: var(--tblr-blue);
}

.girisKartininBaglantisi:hover
{
	color: var(--tblr-blue-darken);
}

/*404 kartı*/
.dortYuzDortIkonu
{
	font-size: 48px;
	color: var(--tblr-red);
}

.dortYuzDortMesaji
{
	font-size: 17px;
	font-weight: 500;
	color: var(--tblr-body-color);
}
/*========================================================================================================
ORTALANMIŞ YALIN ALAN BİTTİ
========================================================================================================*/


/*========================================================================================================
OTOMATİK TAMAMLAMA LİSTESİ (otomatikTamamlamaListesi): bir metin kutusunun altında yazdıkça dolan öneri
listesi (ilk kullanım: yetkiliAc kişi arama). zemin beyazdır (tabler'ın list-group zemini saydam kaldığı
için arkadaki form görünüyordu); satırların dikey iç payı tabler varsayılanından 3'er px dardır (10.09.2026)
========================================================================================================*/
.otomatikTamamlamaListesi
{
	background-color: #FFFFFF;
}

.otomatikTamamlamaListesi .list-group-item
{
	background-color: #FFFFFF;
	padding-top: calc(var(--tblr-list-group-item-padding-y) - 3px);
	padding-bottom: calc(var(--tblr-list-group-item-padding-y) - 3px);
}

.otomatikTamamlamaListesi .list-group-item:hover
{
	background-color: #F2F9FF;
}

/*klavyeyle seçili satır: seçili durum dili (sabit mavi zemin, beyaz yazı)*/
.otomatikTamamlamaListesi .list-group-item.active
{
	background-color: var(--tblr-blue);
	border-color: var(--tblr-blue);
	color: #FFFFFF;
}
/*========================================================================================================
OTOMATİK TAMAMLAMA LİSTESİ BİTTİ
========================================================================================================*/


/*========================================================================================================
TABLER DÖNÜŞÜMÜNE ÖZEL GEÇİCİ ALAN BİTTİ
========================================================================================================*/




/*==================================================================
ÖZAK ÖLÇÜT DURUM METİNLERİ BAŞLADI
olcutDegerlendirmeDurumununMetniniOlustur (ozak genelFonksiyonlar)
"Cevaplandı | Puanlandı | 2 kanıt eklendi" gibi durum metnini
sınıflı span'lerle üretir: olumlu parçalar ikinci ton, olumsuz
parçalar kırmızı, ayırıcılar soluk. Liste satırlarında ve cevap
sayfasında ortak kullanılır.
==================================================================*/
.cevaplandi,
.puanlandi,
.kanitEklendi
{
	color: var(--tblr-secondary);
}

.cevaplanmadi,
.puanlanmadi,
.kanitEklenmedi
{
	color: var(--tblr-red);
}

.degerlendirmeDurumuAyiricisi
{
	color: var(--tblr-border-color-active);
	margin: 0 0.125rem;
}
/*==================================================================
ÖZAK ÖLÇÜT DURUM METİNLERİ BİTTİ
==================================================================*/




/*==================================================================
ÖZAK LİSTE VE CEVAP DÖKÜM ALANLARI BAŞLADI
ÖZAK/KİDR liste sayfalarının ortak satır parçaları (ölçüt/birim
satırı başlığı, durum metni, son güncelleme hücresi) ve cevap
dökümünün açılır alanı (cevapAlanlari-tabler): etiket ikinci ton
küçük, değer birinci ton; boş değer kırmızı; kanıt satırı dosya adı
+ küçük butonlar. Açılır satırın oku satır açıkken döner.
==================================================================*/
.olcutSatirininBasligi
{
	font-weight: 500;
	color: var(--tblr-body-color);
}

.olcutSatirininDurumu
{
	font-size: 13px;
	color: var(--tblr-secondary);
	margin-top: 0.125rem;
}

.olcutSatirininDurumu .durumEtiketi
{
	display: inline-block;
	min-width: 9rem;
}

.biriminUstDepartmani
{
	font-size: 12px;
	color: var(--tblr-secondary);
}

.sonGuncellemeHucresi
{
	font-size: 13px;
	color: var(--tblr-secondary);
	white-space: nowrap;
}

.olcutunBasligi
{
	font-size: 15px;
	font-weight: 500;
	color: var(--tblr-body-color);
}

/*açılır cevap satırı: ok satır açıkken aşağı döner; içerik satırı açık zeminlidir*/
.cevapSatirininOku
{
	color: var(--tblr-secondary);
	transition: transform 0.2s;
}

.cevapSatirininBasligi.acik .cevapSatirininOku
{
	transform: rotate(180deg);
}

.cevapTablosu .cevapSatirininIcerigi > td
{
	background-color: var(--tblr-bg-surface-secondary);
	padding: 1rem 1.25rem;
}

.cevapAlani
{
	margin-bottom: 0.875rem;
}

.cevapAlani:last-child
{
	margin-bottom: 0;
}

.cevapAlanininEtiketi
{
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--tblr-secondary);
	margin-bottom: 0.125rem;
}

.cevapAlanininDegeri
{
	font-size: 14px;
	color: var(--tblr-body-color);
}

.cevapAlanininDegeri p:last-child
{
	margin-bottom: 0;
}

.cevapAlanininBosDegeri
{
	font-size: 13px;
	color: var(--tblr-red);
}

.cevapDosyasi
{
	display: flex;
	align-items: center;
	margin-bottom: 0.375rem;
}

.cevapDosyasininAdi
{
	font-size: 13px;
}
/*==================================================================
ÖZAK LİSTE VE CEVAP DÖKÜM ALANLARI BİTTİ
==================================================================*/




/*==================================================================
ÖZAK SON GÜNCELLEME METNİ BAŞLADI
listelemeIcinSonDegistirmeMetniOlustur (ozak genelFonksiyonlar)
tarih ve kişi span'lerini üretir; limitless'ta blok görünüyordu.
tarih ilk satır, kişi altında ikinci ton; veri yoksa tek satır.
==================================================================*/
.listelemedekiSonDegistirmeTarihi,
.listelemedekiDegistirenKisi,
.listelemedekiSonDegistirmeYokMetni
{
	display: block;
	white-space: nowrap;
}

.listelemedekiDegistirenKisi
{
	font-size: 12px;
	color: var(--tblr-secondary);
}
/*==================================================================
ÖZAK SON GÜNCELLEME METNİ BİTTİ
==================================================================*/




/*========================================================================================================
MODÜLLERİN AÇILIR LİSTESİ (ust-tabler: header'daki MODÜLLER linkinin ALTINDAN açılan modül/hesap listesi):
- 11.09.2026 düzeni: modül değiştirme sık yapılan bir SEÇİMDİR; sağdan kayan panel yerine tıklanan
  linkin altında açılır. Yol kısalır, arkadaki sayfa görünür kalır, yeni bir yer öğrenilmez.
- satır düzeni (52px boy, sol sütunda sistem adı, sağda %52 paylı birim adı, seçili satırın sol
  çubuğu) panelle ORTAKTIR: kurallar yukarıdaki modül paneli bölümünde iki seçiciye birden yazılır.
  Burada yalnızca açılır menü kabuğu tanımlanır.
- liste uzunsa ekrandan taşmaması için yükseklik ekranın %70'inde durur ve içeride kaydırılır
  (kaydırma çubuğu tarayıcının kendisidir: menü kısa ömürlüdür, OverlayScrollbars kurulmaz).
========================================================================================================*/
.modullerinAcilirMenusu
{
	/*panelle aynı koyu zemin ve kenarlık; header'ın hemen altında küçük bir kart*/
	min-width: 420px;
	padding: 0;
	/*
	header'ın alt kenarından ayrılması için aşağı alınır. Menünün üst boşluğu tabler'ın
	"--tblr-dropdown-spacer" değişkeninden gelir (.dropdown-menu[data-bs-popper] kuralı bunu
	margin-top olarak uygular ve 1px'e sabitler); düz margin-top yazmak o kurala yenilir.
	*/
	--tblr-dropdown-spacer: 0.75rem;
	background: #181F29;
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-radius: 8px;
	box-shadow: 0 10px 30px rgba(20, 45, 90, 0.35);
	overflow: hidden;
}

/*liste ekranı aşmaz; aşarsa içeride kaydırılır*/
.modullerinAcilirMenusu .modullerinListesi
{
	max-height: 80vh;
	overflow-y: auto;
	/*ince, koyu zeminde belli olan çubuk (sol menü ve panelle aynı kalınlık)*/
	scrollbar-width: thin;
	scrollbar-color: rgba(255, 255, 255, 0.25) transparent;
}

.modullerinAcilirMenusu .modullerinListesi::-webkit-scrollbar
{
	width: 6px;
}

.modullerinAcilirMenusu .modullerinListesi::-webkit-scrollbar-thumb
{
	background-color: rgba(255, 255, 255, 0.25);
	border-radius: 3px;
}

/*açılır liste açıkken linkin okunu ters çevirir (kapalıyken aşağı, açıkken yukarı bakar)*/
.modullerinAcilirListesi .modullerinAcilirListesininOku
{
	transition: transform 0.15s;
}

.modullerinAcilirListesi .nav-link[aria-expanded="true"] .modullerinAcilirListesininOku
{
	transform: rotate(180deg);
}

/*dar ekranda menü ekran genişliğini aşmasın*/
@media (max-width: 575.98px)
{
	.modullerinAcilirMenusu
	{
		min-width: 0;
		width: calc(100vw - 1rem);
	}
}
/*========================================================================================================
MODÜLLERİN AÇILIR LİSTESİ BİTTİ
========================================================================================================*/




/*========================================================================================================
MODÜL PANELİNİN TUTAMACI (modulPaneli-tabler: panelin sol kenarının DIŞINA taşan dikey şerit):
- Yalnız panelin kendiliğinden açıldığı sayfalarda (hesap seçimi: giriş, 404) basılır; o sayfalarda ayrı
  bir "Modüller" butonu yoktur, panel bu tutamaçla kapatılıp yeniden açılır.
- Tutamaç panelin İÇİNDEDİR (mutlak konumla sol kenarının dışına taşar): panelin kendi kayma hareketiyle
  BİRLİKTE taşınır. Ayrı bir öğe olarak dururken iki ayrı geçiş birbirini tutmuyor, tutamaç geç kalıyordu.
- Panel kapalıyken ekrandan tamamen çıkar; tutamacın görünmesi için panelin "tutamacliPanel" hali
  görünürlüğünü korur ve panel kapalıyken tutamaç genişliği kadarı ekranda kalır.
- Tutamaçta YAZI YOKTUR (dikey yazı okuma yönünü değiştirir, kullanılmaz): yalnız yön oku ortada durur;
  ok panel açıkken sağa, kapalıyken sola bakar. Ölçü 33 genişlik x 120 yüksekliktir.
========================================================================================================*/

/*
tutamaçlı panel kapalıyken de ekranda kalır: bootstrap kapalı panele "visibility:hidden" verir ve
ekranın dışına taşır; burada görünürlük korunur ve panel yalnız tutamaç genişliği kadarı görünecek
şekilde kaydırılır (tutamaç panelin sol kenarının dışındadır).
*/
/*
tutamaç panelin sol kenarının DIŞINA taşar; panelin kendi "overflow:hidden" kuralı onu kırpar.
Tutamaçlı panelde taşma serbest bırakılır, köşe yuvarlatmanın içeriği kırpması ise listeye devredilir.
*/
#modulPaneli.tutamacliPanel
{
	overflow: visible;
}

#modulPaneli.tutamacliPanel .offcanvas-body
{
	border-radius: 8px 0 0 8px;
	overflow: hidden;
}

#modulPaneli.tutamacliPanel:not(.show):not(.showing):not(.hiding)
{
	visibility: visible !important;
	/*panel tamamen dışarı çıkar; sol kenarının dışındaki tutamaç ekranda kalan tek parçadır*/
	transform: translateX(100%);
}

/*açılış ve kapanış sırasında görünürlük korunur ki tutamaç kaybolmasın (hareketi bootstrap yönetir)*/
#modulPaneli.tutamacliPanel.showing,
#modulPaneli.tutamacliPanel.hiding
{
	visibility: visible !important;
}

/*panel kapalıyken de tutamaç tıklanabilir kalsın diye panelin kendisi olayları geçirir*/
#modulPaneli.tutamacliPanel:not(.show):not(.showing)
{
	pointer-events: none;
}

#modulPaneli.tutamacliPanel:not(.show):not(.showing) .modulPanelininTutamaci
{
	pointer-events: auto;
}

.modulPanelininTutamaci
{
	position: absolute;
	/*panelin sol kenarının dışına taşar (kendi genişliği kadar)*/
	right: 100%;
	top: 50%;
	transform: translateY(-50%);
	display: flex;
	align-items: center;
	justify-content: center;
	/*ölçü kullanıcı tarafından belirlendi (11.09.2026): yazısız, ok ortada*/
	width: 34px;
	height: 120px;
	padding: 0;
	background: #181F29;
	border: 1px solid rgba(255, 255, 255, 0.08);
	border-right: 0;
	border-radius: 8px 0 0 8px;
	box-shadow: -6px 0 20px rgba(20, 45, 90, 0.30);
	color: #E9EFF7;
	text-decoration: none;
	transition: background-color 0.15s;
}

.modulPanelininTutamaci:hover
{
	background: #222B38;
	color: #FFFFFF;
	text-decoration: none;
}

.modulPanelininTutamacininOku
{
	font-size: 16px;
	transition: transform 0.3s ease-in-out;
}

/*panel açıkken ok ters döner (kapatma yönünü gösterir)*/
#modulPaneli.show .modulPanelininTutamacininOku
{
	transform: rotate(180deg);
}
/*========================================================================================================
MODÜL PANELİNİN TUTAMACI BİTTİ
========================================================================================================*/




/*========================================================================================================
BVYS OPSİYON SATIRLARI (veriAlaniAyarlariniAc: seçim alanlarının seçenekleri):
- Seçenekler metin alanında "ozDeger=Baslik" biçiminde yazılırken artık satır satır düzenlenir; her satır
  öz değer ve başlık girdisi ile taşıma/çıkarma butonlarından oluşur. Ekleme, çıkarma ve sıralama sayfadan
  ayrılmadan yapılır; vt'ye yazma yalnızca form gönderilince olur.
- Çıkarılan satır SİLİNMEZ: üstü çizilir, soluklaşır ve geri alınabilir (kaydedilince onay='h' olur).
========================================================================================================*/
.opsiyonSatiri
{
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-bottom: 0.5rem;
}

/*öz değer dar, başlık geniş: öz değer genelde kısa bir anahtardır*/
.opsiyonSatiri .opsiyonunOzDegeri
{
	flex: 0 0 12rem;
}

.opsiyonSatiri .opsiyonunBasligi
{
	flex: 1 1 auto;
}

/*taşıma ve çıkarma butonları ikincil tondadır, satırın önüne geçmez*/
.opsiyonSatiri .btn-icon
{
	flex: 0 0 auto;
	color: var(--tblr-secondary);
	border-color: var(--tblr-border-color);
	background-color: transparent;
}

.opsiyonSatiri .btn-icon:hover
{
	color: var(--tblr-body-color);
	background-color: var(--tblr-bg-surface-secondary);
}

.opsiyonSatiri .opsiyonuCikarmaButonu:hover
{
	color: var(--tblr-red);
	border-color: var(--tblr-red);
}

/*çıkarılmış satır: üstü çizili, soluk; kaydedilince kapatılacağını anlatır*/
.opsiyonSatiri.cikarildi .form-control
{
	text-decoration: line-through;
	opacity: 0.55;
}

.opsiyonSatiri.cikarildi .opsiyonuCikarmaButonu
{
	color: var(--tblr-red);
	border-color: var(--tblr-red);
}
/*========================================================================================================
BVYS OPSİYON SATIRLARI BİTTİ
========================================================================================================*/
