/*
Theme Name: Miracles Child
Theme URI: https://miracozturk.com
Description: Miracles temasinin child theme'i. Tasarim katmani (V5 uc kolon, acik/koyu tema),
             SEO/GEO katmani (meta, canonical, Open Graph, JSON-LD), erisilebilirlik duzeltmeleri,
             paylasim blogu ve guvenlik sertlestirmeleri bu dizinde toplanir. Ana temanin
             cekirdegine dokunulmaz. ANA TEMA ZORUNLUDUR: 'miracles' kurulu olmadan
             etkinlestirilemez.
Author: Mirac OZTURK
Author URI: https://miracozturk.com
Template: miracles
Version: 2.0.0
Requires at least: 6.0
Tested up to: 6.9.5
Requires PHP: 7.2
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: diagnoseo-child
Tags: blog, one-column, three-columns, custom-menu, featured-images, translation-ready, accessibility-ready
*/

/*
 * Ana temanin style.css dosyasi functions.php icinde wp_enqueue_style ile yukleniyor.
 * Burada YALNIZCA ozellestirmeler yer alir - ana temanin stilleri buraya kopyalanmaz.
 *
 * PHP notu: `Requires PHP` ilk yazimda 8.0 idi - bu YERELDEKI surumdu (8.2),
 * kodun gereksinimi degil. Canli sunucu PHP 7.2.34 calistirdigi icin WordPress
 * kurulumu REDDETTI. Olculdu: iki temanin 39 PHP dosyasinda 7.3/7.4/8.0'a ozgu
 * tek bir yapi yok; ortam gecici olarak 7.2.34'e dusurulup site kosuldu -
 * 8 sayfa tipi temiz, PHP uyarisi/deprecation yok, dort kapi gecti. Bu yuzden
 * esik OLCULEN gercege cekildi.
 *
 * Surum notu: 1.0.0 -> 2.0.0 (2026-08-16). 1.0.0 yalnizca altyapiydi (SITE-019, dosya
 * bilincli olarak bostu). Bugun dosya 3.100+ satir ve SITE-040'tan SITE-069'a kadar
 * tasarim/erisilebilirlik/SEO katmanlarini tasiyor - ana surum artisi bunu yansitiyor.
 */

/*
 * Ana temanin style.css dosyasi functions.php icinde wp_enqueue_style ile yukleniyor.
 * Burada YALNIZCA ozellestirmeler yer almali - ana temanin stillerini buraya kopyalamayin.
 *
 * SITE-019 notu: bu dosya bilincli olarak bos birakildi. Gorsel degisiklik yapilmadi;
 * bu is kaydi yalnizca altyapiyi kuruyor. Tasarim degisiklikleri ayri iş kayitlarinda
 * ele alinacak.
 */

/* =============================================================================
 * SITE-013 · Metin ici linkler yalnizca renkle ayrisiyor (WCAG 1.4.1 ihlali)
 *
 * Ana sayfadaki kategori/etiket meta linkleri (p.post-meta span.meta a) cevre metinden
 * yalnizca renkle ayriliyordu. Renk korlugu olan veya dusuk kontrastli ekran kullanan
 * kullanicilar bunlarin link oldugunu anlayamiyordu.
 *
 * Cozum: renk disi ayirt edici olarak alt cizgi. text-underline-offset ile okunabilirlik
 * korunuyor. Hover/focus davranisi bozulmadan guclendiriliyor.
 * ========================================================================== */
.post-content .post-meta .meta a,
.post-meta .meta a {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 2px;
}

.post-content .post-meta .meta a:hover,
.post-content .post-meta .meta a:focus,
.post-meta .meta a:hover,
.post-meta .meta a:focus {
	text-decoration-thickness: 2px;
}

/* =============================================================================
 * SITE-018 · Acilir menu basliklari artik <a> degil <span class="menu-heading">
 *
 * Ana temanin ".mainmenu .menu li>a" kurallari span'e uygulanmadigi icin ayni gorunumu
 * burada birebir yeniden tanimliyoruz. Kaynak: themes/diagnoseo/css/main.css
 *   .mainmenu .menu li>a  { display:block;position:relative;padding:10px;font-size:13px;
 *                           line-height:1.5em;color:#000 }
 *   .mainmenu .menu>li>a  { padding-left:20px }
 *   li:hover>a / .current-menu-ancestor>a { color:#0052bd }
 *   li>a:focus { color:#0052bd;text-decoration:underline }
 * ========================================================================== */
.mainmenu .menu li > .menu-heading {
	display: block;
	position: relative;
	padding: 10px;
	font-size: 13px;
	line-height: 1.5em;
	/* SITE-047: sabit #000 -> token. Koyu temada menu basligi siyah kaliyordu. */
	color: var(--s46-murekkep);
	cursor: default;
}

.mainmenu .menu > li > .menu-heading {
	padding-left: 20px;
}

.mainmenu .menu li:hover > .menu-heading,
.mainmenu .menu li.current-menu-ancestor > .menu-heading {
	/* SITE-047: sabit #0052bd -> token. Koyu serit uzerinde 2,58:1 veriyordu. */
	color: var(--s46-vurgu-koyu);
}

/* Klavye odagi gorunur olmali: tema :focus-within ile alt menuyu zaten aciyor. */
.mainmenu .menu li > .menu-heading:focus {
	color: var(--s46-vurgu-koyu);
	text-decoration: underline;
	outline: 2px solid var(--s46-vurgu);
	outline-offset: -2px;
}

/* =============================================================================
 * SITE-040 · TASARIM KATMANI (2026-07-26)
 *
 * Kullanici karari: "diger isleri onerilerin ile yap" -> asagidaki secimler ajan
 * onerisidir ve gerekceleri OLCUME dayanir:
 *
 *   Ana sayfa yerlesimi   : VARYASYON B (kart). Gerekce: .post-list-item ana temada
 *                           ZATEN kart (border-radius:5px, background:#fff, box-shadow).
 *                           Yani B bir yeniden tasarim degil cila - en dusuk riskli secim.
 *                           A (gorselsiz) medya yapisini degistirirdi, C (dergi) 106 yazinin
 *                           tamaminda iyi gorsel gerektirirdi ve 5 widget'i yerinden ederdi.
 *   Tekil yazi            : VARYANT 3 (kenar cubuklu). Widget'lar korunur, degisiklik
 *                           yuzeyi en kucuk.
 *   Gorselsiz yazi        : bos yer tutucu YOK; ust baslik (kicker) duzeni.
 *   Koyu tema             : ERTELENDI - gerekce asagida.
 *
 * KOYU TEMA NEDEN ERTELENDI: ilk onerimde "ucuz kazanc" demistim, OLCUM BUNU
 * CURUTTU. Ana tema main.css icinde 148 kural sabit renk tanimliyor (32 background,
 * 90 metin rengi, 26 kenarlik). Bunlarin tamamini ezmeden yapilacak kismi bir koyu
 * tema, sayamadigim yerlerde okunamayan kontrastlar uretir. Ayri is kaydi hak ediyor.
 *
 * Bu katman ana temaya DOKUNMUYOR; yalnizca child uzerinden eziyor.
 * ========================================================================== */

/* --- 1 · Token katmani ---------------------------------------------------- */
:root {
	/*
	 * SITE-047: bu tokenlar artik SITE-046 paletine BAGLI (sabit deger degil).
	 *
	 * NEDEN: sabit kaldiklari surece koyu temada acik deger uretiyorlardi.
	 * Olculdu: blockquote zemini --s40-primary-soft (#e8f0fb) yuzunden koyu temada
	 * acik kaliyor, uzerindeki ink metinle 1,09:1 veriyordu. Ana temanin renklerini
	 * token'a baglarken KENDI eski katmanimi atlamisim.
	 *
	 * Ozel ozellikler kullanildiklari anda cozumlendigi icin, --s46-* bu bloktan
	 * SONRA tanimlanmis olmasi sorun degil.
	 */
	--s40-primary:      var(--s46-vurgu);
	--s40-primary-dark: var(--s46-vurgu-koyu);
	--s40-primary-soft: var(--s46-vurgu-yumusak);
	--s40-text:         var(--s46-murekkep);
	--s40-muted:        var(--s46-soluk);
	--s40-border:       var(--s46-cizgi);
	--s40-bg-subtle:    var(--s46-zemin2);
	--s40-radius:       6px;
	--s40-shadow:       0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.10);
	--s40-shadow-hover: 0 4px 14px rgba(16,24,40,.10);
	--s40-read:         46rem;    /* uzun metinde 65-75 karakter satir */
}

/* --- 2 · Tipografi: okunabilirlik ---------------------------------------- */
/* Ana tema body: 14.5px/1.7. Uzun teknik yazilar icin kucuk. 16.5px'e cikariliyor;
   satir yuksekligi 1.7 zaten dogru, dokunulmuyor. Menu 13px kendi kuralindan geliyor. */
body {
	font-size: 16.5px;
	color: var(--s40-text);
}

.post-excerpt,
.post-content p,
.entry-content p {
	font-size: 1rem;
	line-height: 1.75;
}

/* SITE-068: satir uzunlugu kisiti kaldirildi (kullanici karari). Bu, UC
   ayri yerde tanimli UC kisittan birincisiydi (46rem); digerleri ~460 ve
   ~1195. satirlarda. Ucu de `none` yapilmazsa en SONRAKI kazanir ve
   degisiklik gorunmez - ilk denemede tam olarak bu oldu. */
.single .post-content > p,
.single .post-content > ul,
.single .post-content > ol,
.single .post-content > blockquote {
	max-width: none;
}

/* --- 3 · KONTRAST DUZELTMESI (gercek WCAG kusuru) ------------------------- */
/* Ana tema .post-meta rengi #9e9e9e: beyaz uzerinde 2.7:1 - AA esigi 4.5'in ALTINDA.
   Olculdu, tahmin degil. #5c5c5c ile 7.0:1 (AAA). */
.post-meta,
.post-meta .meta,
.post-meta .meta-sep {
	color: var(--s40-muted);
}

/* --- 4 · Kart cilasi (VARYASYON B) --------------------------------------- */
/* Ana tema: box-shadow 0 0 7px rgba(0,0,0,.2) - her yone yayilan agir golge.
   Yerine ince kenarlik + yumusak golge; hover'da yukselme. */
.postlist .post-list-item {
	border: 1px solid var(--s40-border);
	border-radius: var(--s40-radius);
	box-shadow: var(--s40-shadow);
	transition: box-shadow .15s ease, border-color .15s ease, transform .15s ease;
	margin-bottom: 28px;
}

.postlist .post-list-item:hover {
	box-shadow: var(--s40-shadow-hover);
	/* SITE-047: sabit #b9cdea -> token (SITE-047 kart kurali da ayrica eziyor) */
	border-color: var(--s46-vurgu);
}

.postlist .post-list-item .post-title {
	font-size: 20px;
	line-height: 1.3;
}

.postlist .post-list-item .post-title a { text-decoration: none; }
.postlist .post-list-item .post-title a:hover,
.postlist .post-list-item .post-title a:focus {
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Devamini oku: baglanti oldugu belli olsun */
.read-more a {
	font-weight: 600;
	text-decoration: none;
}
.read-more a:hover, .read-more a:focus {
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Gorseli olmayan yazi: bos yer tutucu gostermek yerine ust baslik ritmi.
   Ana tema .post-image'i yalnizca gorsel varsa basiyor; burada icerigin ustune
   nefes alani veriliyor ki kart "eksik" gorunmesin. */
.postlist .post-list-item:not(.has-post-thumbnail) .post-content {
	padding-top: 4px;
}
.postlist .post-list-item:not(.has-post-thumbnail) .post-title {
	font-size: 21px;
}

/* --- 5 · Odak gorunurlugu ------------------------------------------------- */
/* Ana temada odak cogu yerde yalnizca renk degistiriyor; klavye kullanicisi
   nerede oldugunu goremiyor. SITE-015/018'de kismen ele alindi, burada genelleniyor. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
	outline: 2px solid var(--s40-primary);
	outline-offset: 2px;
	border-radius: 3px;
}

/* --- 6 · Kod ve alinti okunabilirligi ------------------------------------ */
.post-content pre,
.entry-content pre {
	background: var(--s40-bg-subtle);
	border: 1px solid var(--s40-border);
	border-radius: var(--s40-radius);
	padding: 16px;
	overflow-x: auto;   /* sayfa yatay kaymasin, kutu kendi icinde kaysin */
	line-height: 1.55;
}

.post-content blockquote,
.entry-content blockquote {
	border-left: 4px solid var(--s40-primary);
	background: var(--s40-primary-soft);
	border-radius: 0 var(--s40-radius) var(--s40-radius) 0;
	padding: 12px 20px;
	margin-left: 0;
}

/* --- 7 · Gorsel kaymasini (CLS) azalt ------------------------------------ */
/* Ana temada liste gorsellerinde sabit oran yok; yuklenirken sayfa zipliyor. */
.postlist .post-list-item .post-image img {
	display: block;
	width: 100%;
	height: auto;
}

/* =============================================================================
 * SITE-018 DUZELTMESI (2026-07-26) · menu basliklarinin dikey hizasi
 *
 * HATA: SITE-018'de <a> yerine <span class="menu-heading"> basmaya gecerken ana temanin
 * GENEL kuralini mirror'lamistim:
 *     .mainmenu .menu li>a { padding:10px; line-height:1.5em }
 * Ama UST DUZEY menu linkleri baska bir kuraldan besleniyor ve o kural degerleri
 * FONT SHORTHAND icinde sakli oldugu icin ilk aramamda gorunmedi:
 *     .site-header .menu>li>a,.site-header .menu>li>label {
 *         font: 400 14.5px/70px "Arial",sans-serif;   <-- satir yuksekligi 70px
 *         padding: 0 20px;
 *     }
 * Sonuc: span'lar 40px yuksekliginde kaldi, <a>'lar 70px; "Power BI Blog" ve "Kaynaklar"
 * diger menu ogelerinden YUKARIDA gorundu. Ekran goruntusu alinca fark edildi -
 * yalnizca HTML/DOM kontrolu bunu yakalamadi.
 *
 * DUZELTME: ust duzey menu basliklari icin dogru degerleri mirror'la. Alt menu
 * seviyesindeki basliklar (varsa) genel kurala devam eder.
 * ========================================================================== */
.site-header .menu > li > .menu-heading {
	font: 400 14.5px/70px "Arial", sans-serif;
	padding: 0 20px;
}

/* Alt menu seviyesinde baslik olursa ana temanin alt menu olcusunu izle */
.site-header .menu > li .sub-menu > li > .menu-heading {
	font: 400 13px/1.5em "Arial", sans-serif;
	padding: 10px 10px 10px 40px;
}

/* Odak cercevesi 70px'lik kutuda tasmasin */
.site-header .menu > li > .menu-heading:focus-visible {
	outline-offset: -2px;
}

/* =============================================================================
 * SITE-041 · Tekil yazi basligi (H1) olcegi
 *
 * Ana temanin .post-title kurali 18px - liste gorunumu icin tasarlanmis. Sayfa basligi
 * olarak 18px kucuk kaliyor ve baslik hiyerarsisini govde metninden (16.5px) yeterince
 * ayirmiyor. Yalnizca TEKIL yazidaki h1 buyutuluyor; liste gorunumu etkilenmiyor.
 *
 * Not: .post-content padding'i ana temada uc kirilma noktasinda degistigi icin baslik
 * .post-content ICINE konuldu; yatay hiza kendiliginden geliyor (mobil 20px, masaustu 45px -
 * ikisi de olculdu). Burada yalnizca tipografi ayarlaniyor.
 * ========================================================================== */
.single article.post .post-content > h1.post-title {
	margin: 0 0 14px;
	font-size: 22px;
	line-height: 1.25;
}

@media (min-width: 48em) {
	.single article.post .post-content > h1.post-title {
		font-size: 30px;
		margin-bottom: 18px;
	}
}

/* =========================================================================
 * SITE-046 — V5 MELEZ TASARIM
 * V3'un gezinmesi (kalici sol kolon + sag icindekiler) + V2'nin tipografisi
 * (serif okuma katmani, sicak kagit paleti). docs/design/yeni/V5-melez.html
 *
 * MIMARI KARAR: ana temanin sabit renkleri token'a KOSULSUZ baglanir (bolum 8).
 * Boylece koyu tema ayri bir kural seti degil, yalnizca token takasidir - iki
 * setin zamanla birbirinden ayrisma riski yok.
 *
 * YAZIM DUZENI: taban kurallar MOBIL, genisleme min-width ile. Mock-up asamasinda
 * mobil blogu temel kurallarin ONUNE yazip ezilmesine yol acmistim; mobile-first
 * bu tuzagi tamamen ortadan kaldiriyor - yeni kural eklerken bu duzeni koruyun.
 * ========================================================================= */

/* --- 1. Tokenlar: acik tema ------------------------------------------------ */
:root {
	--s46-murekkep: #1c1a17;
	--s46-soluk: #6b645c;
	--s46-cizgi: #e6e1da;
	--s46-zemin: #fffdf9;
	--s46-zemin2: #f6f2eb;
	--s46-zemin3: #efe9df;
	--s46-vurgu: #0052bd;
	--s46-vurgu-koyu: #003d8f;
	--s46-vurgu-yumusak: #eaf1fb;
	--s46-sicak: #a8551f;

	/* Alt bilgi her iki temada BILINCLI olarak koyu - marka suregi */
	--s46-alt-zemin: #221f1c;
	--s46-alt-metin: #c9c2b8;

	--s46-fs: Georgia, Charter, "Times New Roman", serif;
	--s46-fg: "Segoe UI", -apple-system, Roboto, Arial, sans-serif;
	--s46-fm: "Cascadia Mono", Consolas, Menlo, monospace;

	--s46-sol: 15rem;
	--s46-sag: 14rem;
	--s46-r: 3px;

	/*
	 * SITE-054: sol kolon (.v5-solkol) zemini icin AYRI token. --s46-zemin2
	 * BILEREK tekrar kullanilmadi - o token 13 farkli yerde kullaniliyor (kod
	 * bloklari, tablo basligi, arama kutusu, tema dugmesi...); onu degistirmek
	 * sol kolon disindaki her seyi de etkilerdi. Zemin acildikca sayfa zeminine
	 * (--s46-zemin) yaklasip ayrimi kaybettiriyor - bunu telafi etmek icin
	 * kenarlik da BIRLIKTE guclendiriliyor (bkz. asagidaki koyu tema blogu ve
	 * .v5-solkol kurali). Degerler .ekran/.kontrast-hesap.mjs ile olculdu.
	 */
	/* SITE-054 takip (2026-08-01): kullanici "hala griymis, biraz daha ac" dedi.
	 * #f9f6f0 -> #fcfaf7. Hue/saturation KORUNDU (H=40 sabit tutulmaya calisildi,
	 * 8-bit hex yuvarlamasi yuzunden olculen HSL'de ~4 derece kayma var - algisal
	 * degil, kanal degerleri 1-2/255 farkli). Sayfa zeminini (#fffdf9, lum 0.9835)
	 * GECMEDI (yeni lum 0.9578). Rail-vs-sayfa kontrasti 1.062:1 -> 1.026:1'e dustu
	 * (kullanici bu bedeli bilerek kabul etti). Karsilik: kenarlik-vs-rail kontrasti
	 * ZAYIFLAMADI, tam tersi GUCLENDI (1.339:1 -> 1.387:1) - zemin acildikca sabit
	 * kalan kenarlik rengi arka plandan daha fazla ayrisiyor. Kenarlige DOKUNULMADI. */
	--s46-solkol-zemin: #fcfaf7;
	--s46-solkol-cizgi: #ddd6c9;
}

/* --- 2. Tokenlar: koyu tema ----------------------------------------------- *
 * TEK KANCA: data-tema-etkin="koyu". Bu ozniteligi onyukleme betigi yaziyor -
 * kullanicinin tercihi ile isletim sistemi tercihini cozumleyip tek bir etkin
 * degere indiriyor (bkz. functions.php · diagnoseo_child_tema_onyukleme).
 *
 * SITE-047'DE NEDEN BOYLE DEGISTI: onceden her koyu tema kurali IKI kez yazmak
 * gerekiyordu - bir kez [data-tema="koyu"], bir kez de
 * @media (prefers-color-scheme: dark) { :root:not([data-tema="acik"]) } icin.
 * Elementor ve Gutenberg'in sabitledigi renkleri de ezmek gerekince bu ikilik
 * yonetilemez hale geldi. Artik dosyada hic prefers-color-scheme MEDYA SORGUSU yok.
 *
 * BEDELI: JavaScript kapaliysa koyu tema devreye girmez (acik tema gorunur).
 * Kabul edildi - tema secici zaten JS ozelligi ve acik tema tum kontrast
 * olcumlerinde AA ustunde.
 */
:root[data-tema-etkin="koyu"] {
	--s46-murekkep: #e9e5df;
	--s46-soluk: #a8a095;
	--s46-cizgi: #332f2a;
	--s46-zemin: #15140f;
	--s46-zemin2: #1c1a16;
	--s46-zemin3: #24211a;
	--s46-vurgu: #8ab8f7;
	--s46-vurgu-koyu: #b0d0fb;
	--s46-vurgu-yumusak: #1a2433;
	--s46-sicak: #e3a86e;
	--s46-alt-zemin: #100f0c;
	--s46-alt-metin: #bdb6ac;

	/*
	 * SITE-054: koyu temada zemin acmak metin kontrastini DUSURUR (bu token
	 * uzerinde --s46-murekkep ve --s46-soluk okunuyor). Olculdu:
	 *   #28241d vs murekkep #e9e5df -> 12.30:1 (AAA)
	 *   #28241d vs soluk    #a8a095 ->  5.98:1 (AA, esik 4.5 - guvenli pay)
	 * #3c3628'in UZERINE cikmak soluk metni 4.5:1 esiginin ALTINA dusuruyor
	 * (olculdu: #403a2a -> 4.38:1) - o yuzden o sinira yaklasilmadi.
	 */
	--s46-solkol-zemin: #28241d;
	--s46-solkol-cizgi: #3d382f;
}


/* --- 3. Tipografi: okuma katmani serif, arayuz katmani sans -------------- */
body {
	background-color: var(--s46-zemin);
	color: var(--s46-murekkep);
	font-family: var(--s46-fs);
	font-size: 18px;
	line-height: 1.75;
}

.post-content h1, .post-content h2, .post-content h3,
.post-content h4, .post-content h5, .post-content h6,
.post-title, .page-title, .post-list-item h2, .post-list-item h3 {
	font-family: var(--s46-fs);
	color: var(--s46-murekkep);
	line-height: 1.25;
}

.post-content h2 { font-size: 26px; margin: 1.9em 0 .5em; }
.post-content h3 { font-size: 21px; margin: 1.6em 0 .4em; }

.post-content p, .post-content li { font-family: var(--s46-fs); }

/*
 * SITE-068: satir uzunlugu kisiti KALDIRILDI (kullanici karari 2026-08-16).
 *
 * ONCEKI HAL: `max-width: 40rem` - uzun okuma icin ~65-75 karakterlik olculu
 * satir. OLCULEN sonuc 1440px'te: icerik kolonu 900px iken paragraf 608px,
 * h2 640px, ama TABLOLARIN max-width'i yok ve 810px kapliyordu. Yani ayni
 * bolumde iki farkli hizalama vardi; metin erken sariyor, tablo genis
 * kaliyordu - kullanicinin bildirdigi belirti tam olarak buydu.
 *
 * YENI HAL: metin ogeleri de kolonu doldurur, tablolarla ayni hizada biter.
 *
 * BILINEN BEDEL (kullaniciya bildirildi): 900px kolonda 19px Georgia ile
 * satir uzunlugu ~95-100 karaktere cikiyor; tipografi literaturundeki 65-75
 * araliginin uzerinde. Bilincli bir tercih; geri almak icin bu bloktaki
 * `max-width: none` -> `40rem` yeterli.
 */
.post-content > p,
.post-content > ul,
.post-content > ol,
.post-content > blockquote,
.post-content > h2,
.post-content > h3 {
	max-width: none;
}

/* Arayuz katmani (gezinme, ustbilgi, sayfalama, meta) sans kalir */
.site-header, .mainmenu, .breadcrumbs, .post-meta,
.v5-solgez, .v5-sagic, .pagination, .wp-pagenavi, .site-footer {
	font-family: var(--s46-fg);
}

.post-content pre, .post-content code, .kod { font-family: var(--s46-fm); }

/* --- 4. Uc kolon iskelet -------------------------------------------------- *
 * TABAN = MOBIL: tek kolon. Sira -> icindekiler, yazi, gezinme+widget'lar.
 * Icindekiler basta cunku eklenti bugun de onu yazinin BASINA koyuyordu;
 * sag kolona tasindigi icin mobilde o konumu korumasi gerekiyor.
 * Gezinme en altta: 23 kategori + 5 widget'i yazidan once kaydirtmak
 * mobilde kullanilabilirligi bozardi. Klavye/ekran okuyucu kullanicisi
 * icin sayfanin ilk odaklanabilir ogesi #v5-icerik atlama baglantisi.
 */
#content.content {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	align-items: start;
	justify-content: initial;
	flex-wrap: initial;
	max-width: 100%;
	margin: 0 auto;
	padding: 0 0 40px;
}

#content.content > .v5-sag    { grid-row: 1; }
#content.content > .main      { grid-row: 2; width: auto; min-width: 0; }
#content.content > .v5-solkol { grid-row: 3; }

#content.content > .main { padding: 18px 16px 0; }

/* 56rem: sol gezinme kalici kolona gecer. Icindekiler kayboLMAZ - icerik
 * kolonunun ustune biner (gizlemek tablette icerik kaybi olurdu). */
@media (min-width: 56rem) {
	#content.content {
		grid-template-columns: var(--s46-sol) minmax(0, 1fr);
	}
	#content.content > .v5-solkol { grid-column: 1; grid-row: 1 / span 2; }
	#content.content > .v5-sag    { grid-column: 2; grid-row: 1; }
	#content.content > .main      { grid-column: 2; grid-row: 2; padding: 26px 30px 0; }
}

/* 78rem: sag icindekiler kendi kolonuna ayrilir - V5'in tam hali */
@media (min-width: 78rem) {
	#content.content {
		grid-template-columns: var(--s46-sol) minmax(0, 1fr) var(--s46-sag);
		max-width: 1440px;
	}
	#content.content > .v5-solkol { grid-column: 1; grid-row: 1; }
	#content.content > .main      { grid-column: 2; grid-row: 1; padding: 30px 38px 0; }
	#content.content > .v5-sag    { grid-column: 3; grid-row: 1; }
	/* SITE-054: ustbilgi bosluk ritmi .main'in kendi padding-top'una uyar (30px). */
	#content.content > .v5-solkol { margin-top: 30px; }
}

/* --- 5. Sol kolon --------------------------------------------------------- *
 * Zemin ve kenarlik SARMALAYICIDA (.v5-solkol), gezinmede degil: .v5-solgez
 * sticky + max-height oldugu icin zemini ona verirsek uzun sayfada kolon
 * ortasinda kesilir. Bu kusur mock-up asamasinda olculup duzeltildi.
 *
 * SITE-054: masaustunde/tablette (>=56rem) .v5-solkol ekmek kirintisi
 * seridine (.breadcrumbs) BITISIK duruyordu - olculdu, aradaki bosluk 0px'ti
 * (breadcrumbs alt kenari = solkol ust kenari, ikisi de y=119). Zemin farki
 * (sayfa zemini/breadcrumbs vs solkol zemin2) tek gorsel ayrac oldugu icin
 * kolon ustbilgiyle "birlesik" gorunuyordu. Duzeltme: margin-top ile SARMALAYICIYI
 * asagi kaydir - sabit piksel yerine .main'in AYNI kirilma noktalarindaki
 * kendi ust padding'iyle (18/26/30px) ayni ritim kullanildi (bkz. satir ~453+
 * `#content.content > .main { padding: 18px/26px.../30px... }`). Boylece:
 *   - .v5-solgez'in position:sticky + top:var(--s46-ust) davranisi BOZULMADI
 *     (margin ustbilgi kadar degil, sarmalayicinin baslangic konumunu
 *     kaydiriyor; yapiskanlik viewport'a gore hesaplanmaya devam ediyor).
 *   - Mobilde (<56rem) deger KOPYALANMADI: orada sol kolon ustbilgiye degil
 *     govde metninin ALTINA yerlesiyor (ayri baglam), daha kucuk 18px kullanildi.
 */
.v5-solkol {
	align-self: stretch;
	background-color: var(--s46-solkol-zemin);
	margin-top: 18px;
}

/* SITE-055: max-height (asagida, >=56rem) content-box'ta yalniz ICERIK alanina
 * uygulaniyordu; 18px+32px dikey padding UZERINE binip kutuyu viewport'ta
 * ayrilan alanin 50px disina tasiriyordu (1440x900'de olculdu: 829px hesap,
 * 879px gercek). border-box ile max-height artik padding DAHIL hesaplaniyor -
 * tasma bitiyor. SITE-046'dan miras, SITE-054 regresyonu DEGIL (bkz. is kaydi). */
.v5-solgez { padding: 18px 14px 32px; box-sizing: border-box; }

@media (min-width: 56rem) {
	.v5-solkol {
		border-right: 1px solid var(--s46-solkol-cizgi);
		margin-top: 26px;
	}
	.v5-solgez {
		position: sticky;
		top: 0;
		max-height: 100vh;
		overflow-y: auto;
		overscroll-behavior: contain;
	}
}

/*
 * SITE-054: sol kolon bloklari (Kategoriler + Etiket Bulutu) artik
 * ana sayfadaki `.post-list-item` KARTLARIYLA ayni gorsel dilde - kullanici
 * "cok aykiri duruyor" dedi, olceklendi (driver.mjs styles ile):
 *   .post-list-item -> border-radius:8px, border:1px solid --s46-cizgi,
 *   box-shadow:var(--s40-shadow) [ayni deger, token zaten var - kopyalanmadi],
 *   background:var(--s46-zemin) (iki temada da olculdu, birebir eslesiyor).
 *
 * FARKLI birakilanlar (bilincli, olcuye dayali):
 *   - IC PADDING: kartlarda 20px 24px, ama o kartlar ~640-900px genis.
 *     Sol kolon 15rem=240px; .v5-solgez zaten 14px yatay ic bosluk veriyor
 *     (bolum 5 basi). 24px'i USTUNE eklemek iki yanda 76px (kolonun %31'i)
 *     bosluk demek olurdu. Bunun yerine TEK deger secildi: 14px - kolonun
 *     KENDI yatay ic boslugu ile ayni, kartin ici/disi ayni ritimde. Olculen
 *     ic icerik genisligi: 240 - 2*(14 kolon + 1 kenarlik + 14 kart) = 182px.
 *   - KARTLAR ARASI BOSLUK: kartlarda 28px (buyuk, gorsel iceren kartlar
 *     icin). Kompakt nav kartlarinda 16px - kartlarin kendi cercevesi zaten
 *     ayrimi sagliyor, 28px bu dar kolonda asiri bosluk birakiyordu (gozle
 *     kontrol edildi, .ekran/site054-kart-*.png).
 *   - HOVER YOK: .post-list-item TIKLANABILIR TEK BAGLANTI, hover'da
 *     yukselip golge buyutuyor. Sol kolon karti kendisi link DEGIL (icinde
 *     birden fazla baglanti var) - butun kutuyu "tiklanabilir" gibi
 *     yukseltmek yanlis beklenti yaratirdi, bilincli olarak eklenmedi.
 *
 * Zemin/kenarlik degeri hala .v5-solkol SARMALAYICISINDA olan
 * --s46-solkol-zemin (SITE-054 acik/koyu ayari) - kartlar bu "ray" yuzeyin
 * UZERINDE, kendi --s46-zemin rengiyle "yukseliyor". Iki temada da olculdu
 * (.ekran/.kontrast-hesap.mjs): acik ray #f9f6f0 < kart #fffdf9 (kart daha
 * acik/on planda), koyu ray #28241d > kart #15140f (kart daha koyu/on planda) -
 * bu TERS iliski BILINCLI: ana temanin --s46-zemin/--s46-zemin2 ciftinin
 * ONCEDEN SAHIP OLDUGU aynı davranis (koyu temada "yuzey" tonu sayfadan daha
 * acik olur - standart koyu tema uygulamasi), yeni icat edilmedi.
 */
.v5-solgez .widget {
	margin: 0 0 16px;
	padding: 14px;
	background-color: var(--s46-zemin);
	border: 1px solid var(--s46-cizgi);
	border-radius: 8px;
	box-shadow: var(--s40-shadow);
}

.v5-solgez .widget:last-child { margin-bottom: 0; }

/*
 * SITE-054: <summary>/baslik ALT CIZGISI (eskiden border-bottom) kaldirildi.
 * Gerekce (gozle bakildi): karta girince ayni baslikta ZATEN iki gorsel
 * ayrac var - kartin kendi cercevesi VE `.widget-title:after`'in urettigi
 * yatay cizgi (bkz. bolum 7, "KATEGORILER 23 ———"). Ucuncu bir alt cizgi
 * eklemek "kafes" etkisi verdi (ic ice uc paralel cizgi). Baslik/govde
 * ayrimi hala okunuyor: buyuk harf+harf araligi+sayac rozeti yeterince
 * farkli bir tipografik katman olusturuyor.
 */
.v5-solgez .widget-title {
	padding: 0 0 10px;
	color: var(--s46-soluk);
	font: 600 11.5px/1.4 var(--s46-fg);
	letter-spacing: .08em;
	text-transform: uppercase;
}

.v5-solgez .widget ul {
	background-color: transparent;
	border-radius: 0;
	box-shadow: none;
}

.v5-solgez .widget ul li {
	padding: 0;
	border-bottom: 0;
}

/*
 * ONEMLI: ana tema .widget ul a:before ile tum <li>'yi kaplayan mutlak
 * konumlu bir bindirme basiyor (li'nin her yerine tiklanabilsin diye).
 * Kategori agacinda <ul class="children"> IC ICE oldugu icin ust kategorinin
 * bindirmesi alt kategorilerin uzerine biner ve alt baglantilar TIKLANAMAZ
 * hale gelir. Sol gezinmede bindirme kapatiliyor.
 */
.v5-solgez .widget ul a:before { content: none; display: none; }

.v5-solgez .widget ul a {
	display: block;
	padding: 5px 8px;
	border-radius: var(--s46-r);
	color: var(--s46-murekkep);
	font-size: 13.5px;
	line-height: 1.45;
	text-decoration: none;
}

.v5-solgez .widget ul a:hover,
.v5-solgez .widget ul a:focus-visible {
	background-color: var(--s46-vurgu-yumusak);
	color: var(--s46-vurgu-koyu);
	text-decoration: underline;
}

/* Gecerli kategori/sayfa isaretlenir */
.v5-solgez .current-cat > a,
.v5-solgez .current_page_item > a {
	background-color: var(--s46-vurgu-yumusak);
	color: var(--s46-vurgu-koyu);
	font-weight: 600;
}

/* Alt kategori agaci: girinti + dikey kilavuz cizgisi */
.v5-solgez .children {
	margin: 1px 0 4px 10px;
	padding-left: 8px;
	border-left: 1px solid var(--s46-cizgi);
}

.v5-solgez .children a { font-size: 12.5px; }

/* Yazi sayisi soluk kalir - gezinmede metinle yarismamali */
.v5-solgez .widget ul a { position: relative; }

/* Sol kolondaki arama widget'i */
.v5-solgez input[type="search"],
.v5-solgez input[type="text"] {
	width: 100%;
	box-sizing: border-box;
	padding: 7px 9px;
	border: 1px solid var(--s46-cizgi);
	border-radius: var(--s46-r);
	background-color: var(--s46-zemin);
	color: var(--s46-murekkep);
	font: 13.5px/1.4 var(--s46-fg);
}

/*
 * Etiket bulutu sol kolonda cip gorunumu alir.
 *
 * SITE-051: `font-size: 12px !important` KALDIRILDI - WordPress'in tag_cloud
 * widget'i zaten satir ici `style="font-size: Xpt"` ile agirlik olcegi basiyor
 * (bkz. functions.php: diagnoseo_child_etiket_bulutu_olcegi, 11-15px araligi).
 * !important o satir ici olcegi eziyordu, butun etiketler ayni boyutta
 * gorunuyordu - "bulut" degil duz liste etkisi veriyordu.
 */
.v5-solgez .tagcloud a {
	display: inline-block;
	margin: 0 3px 4px 0;
	padding: 3px 8px;
	border: 1px solid var(--s46-cizgi);
	border-radius: 100px;
	background-color: var(--s46-zemin);
	color: var(--s46-soluk);
	text-decoration: none;
}

.v5-solgez .tagcloud a:hover,
.v5-solgez .tagcloud a:focus-visible {
	border-color: var(--s46-vurgu);
	color: var(--s46-vurgu-koyu);
}

/* --- 6. Sag kolon: sayfa ici icindekiler ---------------------------------- *
 * SITE-056: .v5-sag ZEMIN/KENARLIK ALMIYOR (driver.mjs styles ile olculdu:
 * backgroundColor rgba(0,0,0,0), border 0px none) - .v5-solkol/.v5-solgez'deki
 * gibi zemini sarmalayiciya, sticky'yi cocuga ayirma geregi YOK. align-self:
 * stretch dogrudan .v5-sag'e eklenebilir, uzun sayfada "garip uzama" riski
 * gorsel olarak sifir (gorunmez kutu). align-self olmadan .v5-sag yuksekligi
 * grid satirina degil kendi sticky cocugunun render yuksekligine esitleniyordu
 * (1440x900, 39 baslikli yazida: 891px) - sticky'nin yapisacagi bosluk hic
 * olusmuyor, .v5-sagic ilk ~200px scroll sonrasi ekran disina cikiyordu. */
.v5-sag { min-width: 0; align-self: stretch; }

/* SITE-056: box-sizing:border-box eklendi - SITE-055'te .v5-solgez icin
 * uygulanan desenin ayni ikizi. content-box'ta max-height (asagida, >=78rem)
 * yalniz icerik alanina uygulaniyordu; 30px+32px dikey padding (62px) UZERINE
 * binip kutuyu 829px hesaba karsi 891px gercek yukseklige - 62px tasmaya -
 * cikariyordu (1440x900, 39 baslikli yazida olculdu). */
.v5-sagic { padding: 18px 16px 24px; box-sizing: border-box; }

@media (min-width: 78rem) {
	.v5-sagic {
		position: sticky;
		top: 0;
		max-height: 100vh;
		overflow-y: auto;
		overscroll-behavior: contain;
		padding: 30px 18px 32px 6px;
	}
}

/* Eklentinin kendi kutu gorunumunu sifirla - kolon zaten cerceve */
.v5-sagic #toc_container {
	width: auto !important;
	max-width: none;
	margin: 0;
	padding: 0;
	border: 0;
	background: transparent;
	font-size: 13px;
}

.v5-sagic .toc_title {
	margin: 0 0 8px;
	padding-bottom: 8px;
	border-bottom: 1px solid var(--s46-cizgi);
	color: var(--s46-soluk);
	font: 600 11.5px/1.4 var(--s46-fg);
	letter-spacing: .08em;
	text-transform: uppercase;
}

.v5-sagic .toc_list,
.v5-sagic .toc_list ul { margin: 0; padding: 0; list-style: none; }

.v5-sagic .toc_list li { margin: 0; }

.v5-sagic .toc_list ul { margin-left: 10px; padding-left: 8px; border-left: 1px solid var(--s46-cizgi); }

.v5-sagic .toc_list a {
	display: block;
	padding: 4px 7px;
	border-radius: var(--s46-r);
	color: var(--s46-soluk);
	line-height: 1.45;
	text-decoration: none;
}

.v5-sagic .toc_list a:hover,
.v5-sagic .toc_list a:focus-visible {
	background-color: var(--s46-vurgu-yumusak);
	color: var(--s46-vurgu-koyu);
	text-decoration: underline;
}

/* --- 7. Tema dugmesi ----------------------------------------------------- */
.v5-tema {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 0 auto;
	padding: 5px 12px !important;
	border: 1px solid var(--s46-cizgi) !important;
	border-radius: 100px !important;
	background-color: var(--s46-zemin2) !important;
	color: var(--s46-murekkep) !important;
	font: 500 12.5px/1.5 var(--s46-fg) !important;
	cursor: pointer;
	text-transform: none !important;
}

.v5-tema:hover {
	border-color: var(--s46-vurgu) !important;
	color: var(--s46-vurgu-koyu) !important;
}

.v5-tema:focus-visible {
	outline: 2px solid var(--s46-vurgu);
	outline-offset: 2px;
}

/* Ikon: sistem = yarim daire, acik = dolu, koyu = bos */
.v5-tema-ikon {
	width: 11px;
	height: 11px;
	border: 1.5px solid currentColor;
	border-radius: 50%;
	background: linear-gradient(90deg, currentColor 50%, transparent 50%);
}

.v5-tema[data-tema-durum="acik"] .v5-tema-ikon { background: currentColor; }
.v5-tema[data-tema-durum="koyu"] .v5-tema-ikon { background: transparent; }


/* --- 8. Ana temanin sabit renklerini token'a baglama ---------------------- *
 * 129 sabit renk bildirimi var; burada gorunur kroma bagLANIYOR. Bunlar
 * KOSULSUZ - koyu tema ayni kurallari token takasiyla devralir.
 */
.site-header,
.site-header .main-header {
	background-color: var(--s46-zemin);
	color: var(--s46-murekkep);
}

.site-header { border-bottom: 1px solid var(--s46-cizgi); }

.site-header .menu > li > a,
.site-header .menu > li > .menu-heading,
.mainmenu .menu a {
	color: var(--s46-murekkep);
}

.mainmenu .menu ul,
.mainmenu .menu .sub-menu {
	background-color: var(--s46-zemin);
	border: 1px solid var(--s46-cizgi);
}

.breadcrumbs, .breadcrumbs a { color: var(--s46-soluk); }
.breadcrumbs a:hover { color: var(--s46-vurgu-koyu); }

.post-content a,
.post-list-item a,
.comment-content a {
	color: var(--s46-vurgu);
}

.post-content a:hover,
.post-list-item a:hover { color: var(--s46-vurgu-koyu); }

/* Arsiv kartlari */
.postlist .post-list-item {
	background-color: var(--s46-zemin);
	border: 1px solid var(--s46-cizgi);
	color: var(--s46-murekkep);
}

.post-meta, .post-meta a { color: var(--s46-soluk); }

/* Kod, tablo, alinti */
.post-content pre {
	background-color: var(--s46-zemin2);
	border: 1px solid var(--s46-cizgi);
	color: var(--s46-murekkep);
}

.post-content code {
	background-color: var(--s46-zemin3);
	color: var(--s46-murekkep);
}

.post-content blockquote {
	border-left: 3px solid var(--s46-sicak);
	color: var(--s46-soluk);
}

.post-content table { border-color: var(--s46-cizgi); }
.post-content th { background-color: var(--s46-zemin2); color: var(--s46-murekkep); }
.post-content td, .post-content th { border-color: var(--s46-cizgi); }

hr { border-color: var(--s46-cizgi); }

/* Form ogeleri */
input[type="text"], input[type="search"], input[type="email"],
input[type="url"], textarea, select {
	background-color: var(--s46-zemin);
	border-color: var(--s46-cizgi);
	color: var(--s46-murekkep);
}

/* Alt bilgi bilincli olarak koyu kalir (her iki temada) */
.site-footer { background-color: var(--s46-alt-zemin); color: var(--s46-alt-metin); }
.site-footer a { color: var(--s46-alt-metin); }
.site-footer a:hover { color: #fff; }

/*
 * SITE-061: genel `a:focus-visible` kurali outline rengini --s46-vurgu'dan
 * aliyor. O token acik temada #0052bd - --s46-alt-zemin (#221f1c) uzerinde
 * yalnizca 2.30:1 (WCAG 1.4.11 esigi 3:1, KALDI). Koyu temada sorun yok
 * (8ab8f7 vs #100f0c = 9.38:1).
 *
 * KAPSAM KARARI: yalniz .site-footer, site genelinde degil. Gerekce: grep ile
 * tarandi, --s46-alt-zemin token'i site CSS'inde TEK bir yerde arka plan olarak
 * kullaniliyor (bu selektor). Baska koyu zeminli baglam yok; genel bir kural
 * gereksiz genislik ve test yuku getirirdi.
 *
 * SECILEN DEGER: --s46-alt-metin (yeni token DEGIL, footer zaten bu token'i
 * metin/link rengi icin kullaniyor). Olculdu (.ekran/.site061-tab-kontrast.mjs,
 * gercek Tab tusuyla, WCAG formuluyle):
 *   Acik tema: #c9c2b8 vs #221f1c -> 9.29:1 (>=3:1 GECTI)
 *   Koyu tema: #bdb6ac vs #100f0c -> 9.54:1 (mevcut 9.38:1'den DUSUK DEGIL, GECTI)
 * Token zaten tema basina dogru degeri cozdugu icin ayri bir koyu-tema kancasi
 * gerekmedi - tek kural iki temada da dogru davraniyor.
 */
.site-footer a:focus-visible { outline-color: var(--s46-alt-metin); }

/*
 * Sayfalama.
 *
 * SITE-005 Asama 1'de OLCULDU: `.wp-pagenavi` secicisi bu sitede HIC ESLESMIYOR.
 * wp-pagenavi eklentisi kurulu ve aktif ama tema onu cagirmiyor - pager.php
 * paginate_links() kullaniyor (iki yerde) ve markup `.pagination` +
 * `a.page-numbers` / `span.page-numbers.current` seklinde. Yani buraya
 * .wp-pagenavi yazmam OLU KODDU; sayfalama cilasi hic uygulanmiyordu
 * (olculdu: padding 0px, border-radius 0px).
 */
.pagination .page-numbers {
	border-color: var(--s46-cizgi);
	color: var(--s46-murekkep);
}

.pagination .page-numbers.current {
	background-color: var(--s46-vurgu-yumusak);
	border-color: var(--s46-vurgu);
	color: var(--s46-vurgu-koyu);
}

/* Koyu temada gorseller biraz yumusatilir - beyaz zeminli PNG'ler parlamasin */
:root[data-tema-etkin="koyu"] .post-content img,
:root[data-tema-etkin="koyu"] .post-image img { filter: brightness(.92); }


/* --- 8b. Ana temanin ACIK ZEMINLERI ------------------------------------- *
 * main.css'teki tum acik (parlaklik > 170) zemin bildirimleri tarandi ve
 * token'a baglandi. Bu blok olmadan koyu tema YALNIZCA metin renklerini
 * degistirir, zeminler beyaz kalir - olculdu: tekil yazida govde 2.58:1
 * (BASARISIZ), h1 1.25:1. Ana sayfada sorun gorunmuyordu cunku karti
 * (.post-list-item) zaten baglamistim; kusur yalnizca tekil yazida cikti.
 *
 * body ICIN OZGULLUK NOTU: WordPress'in custom-background destegi wp_head'de
 * child stil dosyasindan SONRA inline `body.custom-background{background-color:#fff}`
 * basiyor (olculdu). Ozgulluk (0,1,1) + daha sonra gelmesi yuzunden sade `body`
 * kurali her zaman kaybediyordu. `html body` (0,1,2) sirasi ne olursa olsun kazanir -
 * !important'a gerek yok.
 *
 * YAN ETKI (bilincli): Gorunum > Arka Plan ekranindan renk secilirse bu kural onu
 * ezer. V5 paleti tek kaynak olmali, aksi halde koyu tema kirilir.
 */
html body,
html body.custom-background {
	background-color: var(--s46-zemin);
	color: var(--s46-murekkep);
}

.main .single,
.main .page,
.additional-post-list .post,
.wp-block-verse,
.seo-popup {
	background-color: var(--s46-zemin);
	color: var(--s46-murekkep);
}

.site-title { background-color: var(--s46-zemin); }

.site-header .sub-menu { background-color: var(--s46-zemin); border-color: var(--s46-cizgi); }

.mainmenu .searchform { background-color: var(--s46-zemin2); }

.searchform button.search-button:not([class*=gm-control]) {
	background-color: var(--s46-zemin2);
	border-color: var(--s46-cizgi);
	color: var(--s46-murekkep);
}

.widget ul { background-color: transparent; }

.tiny-img-placeholder { background-color: var(--s46-zemin3); }

/* Atlama baglantisi odaklandiginda gorunur olur - zemini de temaya uymali */
.screen-reader-text:focus,
.screen-reader-text:hover {
	background-color: var(--s46-zemin2);
	color: var(--s46-murekkep);
	border: 1px solid var(--s46-vurgu);
}

.e404 article form + p span { background-color: var(--s46-zemin); color: var(--s46-soluk); }

blockquote.quote:before { background-color: var(--s46-cizgi); }

/* Ana temanin genel dugme kurali color:#000 veriyordu - koyuda okunmaz */
button:not([class*=gm-control]):not(.search-button):not(.customize-partial-edit-shortcut-button),
input[type="submit"] {
	border-color: var(--s46-cizgi);
	color: var(--s46-murekkep);
}

/* --- 8c. Ana temanin KOYU METIN renkleri --------------------------------- *
 * main.css'teki koyu (parlaklik < 90) ve vurgu renkli tum `color` bildirimleri
 * tarandi; seciciler AYNEN kopyalandi, degerler token'a baglandi. Ayni seciciyi
 * kullanmak yeterli: child stil dosyasi main.css'ten SONRA yuklendigi icin esit
 * ozgullukte kaynak sirasi kazaniyor.
 *
 * NEDEN GEREKLI: 8/8b bloklari zeminleri duzeltti ama metin renkleri ana temada
 * daha ozgul secicilerle sabitlenmis. Olcum: koyu temada paragraf baglantilari
 * #000 kaliyordu (.post-content p a ozgullugu 0,1,2 > benim .post-content a
 * 0,1,1) - yani koyu zeminde SIYAH baglanti, ~1,2:1. En agir kusur buydu.
 *
 * Renk esleme:  #000 / #343434 -> --s46-murekkep · #595959 / #444 -> --s46-soluk
 *               #0052bd -> --s46-vurgu (durgun) veya --s46-vurgu-koyu (hover)
 */

a { color: var(--s46-murekkep); }
a:hover, a:focus { color: var(--s46-vurgu-koyu); }

h1, h2, h3, h4, h5, h6 { color: var(--s46-murekkep); }

label { color: var(--s46-murekkep); }
input, textarea, select { color: var(--s46-murekkep); }

/* Ustbilgi ve gezinme */
.mainmenu .menu li > a,
.mainmenu .sub-menu li > a,
.site-header .menu li a,
.site-header .menu > li label,
.site-header .logo a,
.site-title .menu-toggle,
.searchform button.search-button:not([class*=gm-control]) {
	color: var(--s46-murekkep);
}

.site-header .logo .site-tagline { color: var(--s46-soluk); }

.mainmenu .menu li:hover > a,
.mainmenu .menu li.current-menu-item > a,
.mainmenu .menu li > a:focus,
.mainmenu .menu > li > a:hover,
.mainmenu .sub-menu li > a:hover,
.site-header .menu li:hover > a,
.site-header .menu li:focus-within > a,
.site-header .menu > li:hover label,
.site-header .logo a:hover,
.searchform button.search-button:not([class*=gm-control]):hover {
	color: var(--s46-vurgu-koyu);
}

/* ICERIK BAGLANTILARI - ana temanin en ozgul kurali, ayniyla kopyalandi */
.post-content p a,
.post-content li a,
.post-content td a,
.post-content h1 a,
.post-content h2:not(.post-title) a,
.post-content h3 a,
.post-content h4 a,
.post-content h5 a,
.post-content h6 a {
	color: var(--s46-vurgu);
}

.post-content p a:hover, .post-content p a:focus,
.post-content li a:hover, .post-content li a:focus,
.post-content td a:hover, .post-content td a:focus,
.post-content h1 a:hover, .post-content h1 a:focus,
.post-content h2:not(.post-title) a:hover, .post-content h2:not(.post-title) a:focus,
.post-content h3 a:hover, .post-content h3 a:focus,
.post-content h4 a:hover, .post-content h4 a:focus,
.post-content h5 a:hover, .post-content h5 a:focus,
.post-content h6 a:hover, .post-content h6 a:focus {
	color: var(--s46-vurgu-koyu);
}

/* Meta, sayfalama, gezinme oklari */
.post-meta .meta { color: var(--s46-soluk); }
.post-meta .meta a { color: var(--s46-vurgu); }
.post-meta .meta a:hover { color: var(--s46-vurgu-koyu); }

.pagination .page-numbers,
.pages .post-page-numbers,
.post-nav-link i,
.more a,
.additional-post-list .postlist-title,
.e404 p {
	color: var(--s46-murekkep);
}

.pagination .page-numbers:hover,
.pages .post-page-numbers:hover,
.pages .post-page-numbers:focus,
.post-nav-link:hover i, .post-nav-link:focus i,
.more a:hover,
.post-list-item .read-more a {
	color: var(--s46-vurgu-koyu);
}

/* Yorumlar */
.comment-author,
.comment-author .fn,
.comment-author a,
.comment-author a.comment-reply-link {
	color: var(--s46-murekkep);
}

.comment-author a:hover { color: var(--s46-vurgu-koyu); }

/*
 * Widget'lar. .widget.widget_recent_entries ul li a ozgullugu (0,3,2) benim
 * .v5-solgez .widget ul a kuralimi (0,3,1) YENIYOR - bu yuzden ayrica baglaniyor,
 * aksi halde "Son Yazilar" widget'i koyu temada #343434 kaliyordu.
 */
.widget ul.menu li a,
.widget table td,
.widget table#wp-calendar th,
.widget.widget_recent_entries ul li a {
	color: var(--s46-murekkep);
}

.widget table caption { color: var(--s46-soluk); }

.widget ul.menu li a:hover,
.widget.widget_recent_entries ul li a:hover,
.widget .tagcloud a:hover {
	color: var(--s46-vurgu-koyu);
}

/* Ana temanin .widget ul a kurali #0052bd veriyor; sol gezinmede kendi kuralim
 * gecerli, burada widget alani baska yerde kullanilirsa diye baglaniyor. */
.widget ul a { color: var(--s46-murekkep); }

/* Cesitli */
.required { color: var(--s46-vurgu); }
blockquote:before, blockquote:after { color: var(--s46-sicak); }
aside blockquote.quote p.signature span,
blockquote.quote p.signature span { color: var(--s46-murekkep); }
.screen-reader-text:focus, .screen-reader-text:hover { color: var(--s46-vurgu-koyu); }
.seo-popup .popup-close:hover { color: var(--s46-vurgu-koyu); }

/* --- 9. Okuma tipografisi: SITE-040'in olcegini DEVRALIR ------------------ *
 * SITE-040 katmani (yukarida, 2. bolum) su iki kurali koymustu:
 *     .post-excerpt, .post-content p, .entry-content p { font-size: 1rem }
 *     .single .post-content > p|ul|ol|blockquote { max-width: var(--s40-read) }  // 46rem
 *
 * Olculdu: bu kurallar V5'in tipografisini eziyordu - gövde 16px/28px ve olcu
 * 736px kaliyordu, oysa V5'in sozu 19px/1,75 ve 38rem olcu. body'ye 18px yazmak
 * yetmiyor cunku .post-content p (0,1,1) inheritance'i yeniyor.
 *
 * SITE-040 bloguna DOKUNULMADI: hâlâ gecerli olan isleri var (odak halkalari,
 * CLS, pre tasmasi). Yalnizca tipografi olcegi burada, ayni ozgullukle ve acikca
 * devralindi - iki katmanin ayni seyi sessizce cekismesi kaynak niyetini gizler.
 *
 * Olcu 38rem: mock-up'ta ~60 karakter/satir olculdu (uzun okuma icin ideal aralik).
 */
.post-excerpt,
.post-content p,
.entry-content p {
	font-size: 18px;
	line-height: 1.75;
}

/* SITE-068: uc kisittan SONUNCUSU - kaynak sirasinda en sonda oldugu icin
   fiilen KAZANAN kural buydu (olculen 608px = 38rem). */
.single .post-content > p,
.single .post-content > ul,
.single .post-content > ol,
.single .post-content > blockquote {
	max-width: none;
}

@media (min-width: 56rem) {
	body { font-size: 19px; }

	.post-excerpt,
	.post-content p,
	.entry-content p {
		font-size: 19px;
		line-height: 1.75;
	}
}

/* --- 10. Gorsel denetimde bulunan kusurlarin duzeltmesi ------------------- *
 * Ekran goruntusu incelemesinde dort kusur cikti; hicbiri kontrast/yerlesim
 * olcumlerine yakalanmamisti - gormek gerekiyordu.
 */

/*
 * KUSUR 1: tema dugmesinin ikonu ince bir cubuk gibi goruunuyordu.
 * KOK NEDEN: ana temanin
 *   button:not([class*=gm-control]):not(.search-button):not(.customize-...)
 * kurali display:inline-block veriyor. :not() argumanlarinin ozgullugu sayildigi
 * icin bu secici (0,3,1); benim .v5-tema (0,1,0) kuralim eziliyordu. Dugme
 * inline-flex olmadigi icin ikon span'i flex ogesi olarak "blockify" edilmiyor,
 * display:inline kaliyor ve width/height YOK SAYILIYOR - 11px daire ince bir
 * dilime dusuyor. Iki yerden birlikte duzeltiliyor.
 */
/*
 * display:flex (satir ici DEGIL) + width:max-content: dar ekranda margin-left:auto
 * ile saga hizalanabilmesi icin blok seviyede olmasi gerekiyor - inline-flex'te
 * auto margin yok sayiliyordu (olculdu: dugme sola yapisiyordu).
 */
.v5-tema { display: flex !important; width: max-content; }
.v5-tema-ikon { display: inline-block; flex: 0 0 auto; }

/*
 * KUSUR 2: dugme menunun ALTINA sariyordu (olculdu: top=70, ustbilgiye 31px
 * ekliyordu). .mainmenu genisligi sabit 1200px oldugu icin satirda yer kalmiyor.
 * Genis ekranda mutlak konumlandirilip menunun sagindaki bos alana alindi;
 * dar ekranda akista kalip saga hizalaniyor (orada hamburger var, mutlak
 * konum onunla cakisirdi).
 */
.site-header { position: relative; }

.v5-tema { margin: 0 10px 8px auto; }

@media (min-width: 78rem) {
	.v5-tema {
		position: absolute;
		top: 20px;
		right: 14px;
		margin: 0;
	}
}

/*
 * KUSUR 3: kategori sayilari alt satira dusuyordu (".NET" altinda "(2)").
 * wp_list_categories sayimi <a>'dan SONRA cıplak metin dugumu olarak basar;
 * baglantiya display:block verdigim icin sayim asagi kayiyordu. li flex satiri
 * yapilinca metin dugumu anonim flex ogesi olup ayni satirda saga yerlesiyor.
 * .children tam satir kapliyor - aksi halde alt agac da yan yana dizilirdi.
 */
.v5-solgez .widget ul li {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	column-gap: 6px;
	color: var(--s46-soluk);
	font-size: 11.5px;
}

.v5-solgez .widget ul li > a { flex: 1 1 auto; }
.v5-solgez .widget ul li > ul { flex: 1 0 100%; }

/*
 * KUSUR 4: koyu temada logo okunmuyordu - logo koyu lacivert/gri metinli
 * saydam PNG, siyaha yakin ustbilgide neredeyse kayboluyor.
 * invert(1) hue-rotate(180deg): parlakligi tersler, RENK TONUNU korur - duz
 * invert marka mavisini sariya cevirirdi.
 */
:root[data-tema-etkin="koyu"] .site-header .logo img,
:root[data-tema-etkin="koyu"] .site-header .logo svg {
	filter: invert(1) hue-rotate(180deg);
}

/* Koyu temada gorsel karartmasi arsiv kartlarini da kapsar */
:root[data-tema-etkin="koyu"] .postlist img,
:root[data-tema-etkin="koyu"] .post-list-item img { filter: brightness(.92); }


/*
 * KUSUR 5: one cikan gorsel metinle hizali degildi.
 * Olculdu (masaustu): .post-image kutusu 900px, gorsel 850px ve ORTALANMIS -> sol
 * kenar 303px. Metin ise .post-content'in 45px padding'i yuzunden 323px'te. 20px
 * kayma kasitli bir "tasma" gibi degil, hizalama hatasi gibi okunuyordu.
 *
 * Cozum: gorsel icerik kolonunun TAM genisligine oturtuluyor (278..1178) - bilincli
 * bir tam-tasma. Alternatif (gorseli metnin 45px padding'ine hizalamak) .post-content
 * padding'i UC kirilma noktasinda degistigi icin (bkz. SKILL.md tuzaklar) uc ayri
 * deger tekrarlamayi gerektirirdi; bu cozum kirilma noktasindan bagimsiz.
 */
.post-image img {
	display: block;
	width: 100%;
	max-width: none;
	height: auto;
	margin: 0;
}

/* =========================================================================
 * SITE-047 — Koyu temada YAZAR TARAFINDAN SABITLENMIS renkler
 *
 * Sorun (kullanici bildirdi, /is-zekasi/ ornegi): koyu temada bazi sayfalarda
 * metin siyah kaliyordu. Tam sayfa taramasi (scripts/design/kontrast-tara.mjs)
 * uc kaynak buldu:
 *
 *   1) ELEMENTOR sayfa basina CSS uretiyor (wp-content/uploads/elementor/css/
 *      post-<id>.css) ve rengi OGE KIMLIGI basina sabitliyor. Olcum: 108 dosyada
 *      3256 kez `color:#000000`, ayrica bir tutam neredeyse-siyah (#020000,
 *      #0F0000, #0C0000...). Bilincli aksan olarak yalnizca 11 kez #871212
 *      (koyu kirmizi) ve 4 kez #FFFFFF var.
 *      Olculen kontrast: 1.14:1 - metin okunmuyordu.
 *
 *   2) GUTENBERG blok renkleri: yazilarda `has-text-color` sinifli paragraf ve
 *      liste ogeleri rgb(0,0,0) / rgb(1,1,1) tasiyor. Tek bir yazida 27 paragraf.
 *
 *   3) "Son Yazilar" widget'inin tarihi: #727272, koyu zeminde 3.61:1 (AA alti).
 *
 * NEDEN EZMEK KAYIP DEGIL: sabitlenmis degerlerin neredeyse tamami siyah. Koyu
 * zeminde siyah metin zaten okunmuyor; #871212 (koyu kirmizi) de koyu zeminde
 * ~1.6:1 veriyor, yani onu da ezmek IYILESTIRME. Bu blok YALNIZCA koyu temada
 * gecerli - acik temada yazarin sectigi renkler oldugu gibi kaliyor.
 *
 * OZGULLUK: Elementor'un urettigi seciciler en fazla 4 sinif tasiyor (olculdu).
 * Buradaki seciciler 5 sinif seviyesinde, bu yuzden !important GEREKMIYOR -
 * makine uretimi CSS'e !important'la karsilik vermek yerine ozgullukle yenmek
 * daha ongorulebilir.
 * ========================================================================= */

/* --- Elementor icerigi --------------------------------------------------- *
 * "ADA" KORUMASI (SITE-047 duzeltmesi): satir ici zemini olan bir blok ve onun
 * TORUNLARI bu ezmeden haric. Onceki hali korumasizdi ve editorden yapistirilmis
 * kod bloklarinda ters tepiyordu: blogun kendi zemini beyaz kaliyor, icindeki
 * metinler ink'e cekildigi icin ACIK ZEMINE ACIK METIN yaziliyordu
 * (olculdu: 1,25:1 - ezmeden onceki 1,14:1'den daha kotu).
 *
 * Kendi zemini olan bloklar kendi icinde tutarli; beyaz uzerine siyah kod blogu
 * koyu sayfada da okunur. Dokunulmuyor.
 */
:root[data-tema-etkin="koyu"] .elementor .elementor-element
	:is(.elementor-widget-container, .elementor-heading-title, .elementor-text-editor,
	    h1, h2, h3, h4, h5, h6, p, li, td, th, dt, dd,
	    b, strong, em, i, span, div, figcaption, blockquote):not([style*="background"]):not([style*="background"] *) {
	color: var(--s46-murekkep);
}

/* Baglantilar aksan tonunu korur - ink'e cekilmemeli */
:root[data-tema-etkin="koyu"] .elementor .elementor-element a,
:root[data-tema-etkin="koyu"] .elementor .elementor-element p a,
:root[data-tema-etkin="koyu"] .elementor .elementor-element li a,
:root[data-tema-etkin="koyu"] .elementor .elementor-element .elementor-heading-title a {
	color: var(--s46-vurgu);
}

:root[data-tema-etkin="koyu"] .elementor .elementor-element a:hover,
:root[data-tema-etkin="koyu"] .elementor .elementor-element a:focus {
	color: var(--s46-vurgu-koyu);
}

/* Elementor'un beyaz/acik bolum zeminleri koyu temada zemin token'ina gecer */
:root[data-tema-etkin="koyu"] .elementor .elementor-section,
:root[data-tema-etkin="koyu"] .elementor .elementor-column-wrap,
:root[data-tema-etkin="koyu"] .elementor .elementor-widget-wrap {
	background-color: transparent;
}

/* --- Gutenberg blok renkleri -------------------------------------------- */
/* has-background sinifli bloklar da kendi icinde tutarli ada - haric tutuluyor */
:root[data-tema-etkin="koyu"] .post-content .has-text-color.has-background,
:root[data-tema-etkin="koyu"] .post-content .has-background .has-text-color {
	color: revert;
}

:root[data-tema-etkin="koyu"] .post-content .has-text-color:not(.has-background):not(.has-background *),
:root[data-tema-etkin="koyu"] .post-content .has-text-color strong,
:root[data-tema-etkin="koyu"] .post-content .has-text-color b,
:root[data-tema-etkin="koyu"] .post-content .has-text-color em,
:root[data-tema-etkin="koyu"] .post-content .has-text-color i,
:root[data-tema-etkin="koyu"] .post-content .has-text-color span,
:root[data-tema-etkin="koyu"] .post-content .has-text-color code,
:root[data-tema-etkin="koyu"] .post-content [style*="color"],
:root[data-tema-etkin="koyu"] .post-content [style*="color"] strong,
:root[data-tema-etkin="koyu"] .post-content [style*="color"] span {
	color: var(--s46-murekkep);
}

/* has-link-color sinifli bloklarda baglanti rengi de sabitlenmis olabilir */
:root[data-tema-etkin="koyu"] .post-content .has-text-color a,
:root[data-tema-etkin="koyu"] .post-content .has-link-color a,
:root[data-tema-etkin="koyu"] .post-content [style*="color"] a {
	color: var(--s46-vurgu);
}

/* --- Widget tarihleri ---------------------------------------------------- *
 * #727272 koyu zeminde 3.61:1 (olculdu). Kaynak ana temada degil - blok
 * kutuphanesinden geliyor, o yuzden seciciyi burada baglıyoruz.
 */
.v5-solgez .post-date,
.v5-solgez .wp-block-latest-posts__post-date,
.widget .post-date {
	color: var(--s46-soluk);
}

/* --- SITE-047 · Kalan iki kusur ------------------------------------------ */

/*
 * KUSUR: tekil yazidaki 27 paragraf ve 7 liste ogesi koyu temada 1.13:1.
 * KOK NEDEN: renk bir SATIR ICI STIL OZNITELIGI - <p style="color:#010101">.
 * Blok editorunde renk secilmis ve WordPress bunu hem .wp-elements-<hash>
 * sinifiyla hem de style="" olarak basiyor. Satir ici stil TUM secicileri
 * yener; ozgullukle cozulemez.
 *
 * Bu yuzden BURADA !important kullaniliyor - CSS'te satir ici stili ezmenin
 * baska yolu yok. Kapsam daraltildi: yalnizca koyu tema, yalnizca .post-content
 * icinde ve yalnizca style'inda renk BULUNAN ogeler.
 *
 * Acik temada dokunulmuyor: yazarin sectigi renk gecerli kalir.
 */
/*
 * SITE-047 DUZELTMESI: onceki hali satir ici rengi olan HER ogeyi ink'e cekiyordu.
 * Bu, kendi ZEMINI de satir ici verilmis bloklarda ters teptiı: editorden
 * yapistirilmis kod bloklari <div style="color:#000;background-color:#fffffe">
 * seklinde geliyor; metni acik yapinca ACIK ZEMINE ACIK METIN yazilmis oluyordu
 * (olculdu: 1,25:1 - once 1,14:1 idi, yani daha da kotulesmisti).
 *
 * Olcum: icerikte 78 satir ici zemin bildirimi var, 65'i neredeyse beyaz, 10'u
 * bilincli bir turkuaz sema. Zemini ezip hepsini duzlestirmek yerine, KENDI
 * ZEMINI OLAN BLOKLARA HIC DOKUNULMUYOR - onlar kendi icinde tutarli birer ada
 * (beyaz uzerine siyah kod blogu koyu sayfada da okunur). Yalnizca zemini
 * OLMAYAN, dolayisiyla sayfanin koyu zeminine oturan metinler ink'e cekiliyor.
 *
 * Secici: (kendi satir ici rengi olan) VEYA (boyle bir ogenin torunu),
 *         VE kendisi zeminli degil, VE zeminli bir ogenin torunu degil.
 */
:root[data-tema-etkin="koyu"] .post-content
	:is([style^="color"], [style*=";color"], [style*="; color"],
	    [style^="color"] *, [style*=";color"] *, [style*="; color"] *):not([style*="background"]):not([style*="background"] *) {
	color: var(--s46-murekkep) !important;
}

:root[data-tema-etkin="koyu"] .post-content
	:is([style^="color"] a, [style*=";color"] a, [style*="; color"] a,
	    a[style^="color"], a[style*=";color"], a[style*="; color"]):not([style*="background"]):not([style*="background"] *) {
	color: var(--s46-vurgu) !important;
}

/*
 * KUSUR: 404 sayfasindaki "Anasayfaya geri donun" dugmesi koyu temada 1.14:1.
 * KOK NEDEN: ana temanin dugme kurali yalnizca <button> degil .button sinifini
 * da kapsiyor (secici sonunda ",.button,.post-content .button" var) ve
 * color:#000 veriyor. Onceki baglamada yalnizca button/input kismini
 * kopyalamistim, .button sinifini atlamisim - <a class="button large"> bu
 * yuzden siyah kaldi. Secici ana temadan AYNEN kopyalandi.
 */
button:not([class*=gm-control]):not(.search-button):not(.customize-partial-edit-shortcut-button),
input[type=submit],
input[type=button],
input[type=reset],
.button,
.post-content .button {
	border-color: var(--s46-cizgi);
	color: var(--s46-murekkep);
	background-color: var(--s46-zemin2);
}

button:not([class*=gm-control]):not(.search-button):not(.customize-partial-edit-shortcut-button):hover,
input[type=submit]:hover,
input[type=button]:hover,
input[type=reset]:hover,
.button:hover,
.post-content .button:hover {
	border-color: var(--s46-vurgu);
	color: var(--s46-vurgu-koyu);
}

/* =========================================================================
 * SITE-047 — ESTETIK KATMAN
 *
 * SITE-046 V5'in ISKELETINI kurdu (uc kolon, tipografi, koyu tema) ama
 * mock-up'taki editoryal detaylari tasimadi. Kullanici geri bildirimi:
 * "basit ve standart tasarima cevirmissin". Bu katman V5-melez.html'de olup
 * uygulamada eksik kalanlari getiriyor:
 *
 *   .ust          -> yapiskan ust serit (position:sticky, golge)
 *   .kicker       -> kategori ust basligi (12px/700/.12em/uppercase)
 *   .ilk::first-letter -> drop cap (64px, --sicak)
 *   + aktif icindekiler bolumu, okuma cubugu, kart cilasi
 *
 * Hepsi token tabanli, dolayisiyla koyu temada da gecerli. Dis kaynak yok.
 * ========================================================================= */

:root {
	--s46-ust: 71px;              /* betik olcup gunceller (functions.php) */
	--s47-gecis: .18s cubic-bezier(.4, 0, .2, 1);
}

/* --- 1. Yapiskan ust serit ----------------------------------------------- */
.site-header {
	position: sticky;
	top: 0;
	z-index: 30;
	transition: box-shadow var(--s47-gecis), border-color var(--s47-gecis);
}

/* Kaydirinca ayrisir - sabit golge her zaman durursa serit agir gorunuyor */
.site-header.v5-kaydi {
	box-shadow: 0 1px 0 var(--s46-cizgi), 0 6px 20px -12px rgba(0, 0, 0, .28);
}

/*
 * Capa atlamalarinda baslik yapiskan seridin ALTINDA kalmasin. Icindekiler
 * baglantilari icin sart - onsuz her tiklamada baslik seridin arkasina giriyor.
 */
html {
	scroll-padding-top: calc(var(--s46-ust) + 12px);
	scroll-behavior: smooth;
}

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	* { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

/* Yapiskan kolonlar seridin altindan baslar */
@media (min-width: 56rem) {
	.v5-solgez {
		top: var(--s46-ust);
		max-height: calc(100vh - var(--s46-ust));
	}
}

@media (min-width: 78rem) {
	.v5-sagic {
		top: var(--s46-ust);
		max-height: calc(100vh - var(--s46-ust));
	}
}

/* --- 2. Okuma cubugu ----------------------------------------------------- */
.v5-okuma-yol {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	height: 2px;
	z-index: 40;
	pointer-events: none;
}

.v5-okuma-yol > span {
	display: block;
	height: 100%;
	background: linear-gradient(90deg, var(--s46-vurgu), var(--s46-sicak));
	transform: scaleX(0);
	transform-origin: 0 50%;
	will-change: transform;
}

/* --- 3. Kicker: kategori ust basligi ------------------------------------- *
 * Arsiv kartinda meta satiri BASLIGIN USTUNE alinir (editoryal ritim).
 * Markup degismiyor - .post-content flex kolon olup .post-meta order:-1 aliyor.
 */
.postlist .post-list-item .post-content {
	display: flex;
	flex-direction: column;
}

.postlist .post-list-item .post-meta { order: -1; margin: 0 0 6px; }
.postlist .post-list-item .post-title { margin: 0 0 10px; }
.postlist .post-list-item .post-excerpt { margin: 0 0 14px; }
.postlist .post-list-item .read-more { margin: auto 0 0; }

/* Kategori: kicker · tarih: mono · ayiraclar sonuk */
.post-meta .meta-category a {
	font-family: var(--s46-fg);
	font-size: 11.5px;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--s46-sicak);
	text-decoration: none;
}

.post-meta .meta-category a:hover,
.post-meta .meta-category a:focus-visible {
	color: var(--s46-vurgu-koyu);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.post-meta .meta-date {
	font-family: var(--s46-fm);
	font-size: 12.5px;
	font-variant-numeric: tabular-nums;
	letter-spacing: -.01em;
}

.post-meta .meta-sep {
	color: var(--s46-cizgi);
	font-style: normal;
	padding: 0 2px;
}

.post-meta .meta-author,
.post-meta .meta-comments { font-size: 12.5px; }

/* --- 4. Arsiv karti cilasi ----------------------------------------------- */
.postlist .post-list-item {
	overflow: hidden;
	border-radius: 8px;
	transition: transform var(--s47-gecis), box-shadow var(--s47-gecis), border-color var(--s47-gecis);
}

.postlist .post-list-item:hover {
	transform: translateY(-2px);
	border-color: var(--s46-vurgu);
	box-shadow: 0 10px 30px -18px rgba(0, 0, 0, .45);
}

/* Gorsel hover'da hafifce yaklasir - kart "canli" hissi verir */
.postlist .post-list-item .post-image { display: block; overflow: hidden; }

.postlist .post-list-item .post-image img {
	display: block;
	width: 100%;
	height: auto;
	transition: transform .4s cubic-bezier(.2, .6, .2, 1);
}

.postlist .post-list-item:hover .post-image img { transform: scale(1.03); }

.postlist .post-list-item .post-title a { color: var(--s46-murekkep); }

.postlist .post-list-item:hover .post-title a { color: var(--s46-vurgu-koyu); }

/* "Devamini oku" -> ok isaretiyle, hover'da kayar */
.postlist .read-more a {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-family: var(--s46-fg);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .01em;
	color: var(--s46-vurgu);
}

.postlist .read-more a:after {
	content: "\2192";
	font-size: 15px;
	line-height: 1;
	transition: transform var(--s47-gecis);
}

.postlist .read-more a:hover:after,
.postlist .read-more a:focus-visible:after { transform: translateX(4px); }

/* --- 5. Tekil yazi: drop cap ve baslik ritmi ----------------------------- */
/*
 * s47-ilk sinifini functions.php ekliyor (ilk gercek paragraf). CSS'te
 * ":ilk paragraf" secilemiyor cunku .post-content'in ilk <p>'si meta satiri.
 */
.single .post-content p.s47-ilk::first-letter {
	float: left;
	margin: 0 12px 0 0;
	font-family: var(--s46-fs);
	/*
	 * 3.5em + line-height:1 = TAM IKI SATIR (gövde satir yuksekligi 1.75).
	 * px vermek yanlisti: 62px/0.8 masaustunde ~1,7 satir kapliyordu ve ikinci
	 * satir iceri girip ucuncu satir sola donunce basamak olusuyordu (gorsel
	 * denetimde goruldu). em tabanli olunca mobilde de (18px) tam iki satir.
	 */
	font-size: 3.5em;
	font-weight: 700;
	line-height: 1;
	color: var(--s46-sicak);
}

/* Baslik ritmi: h2'ler ustunde ince bir ayirac - uzun yazida bolum hissi */
.single .post-content h2:not(.post-title) {
	margin-top: 2.4em;
	padding-top: .9em;
	border-top: 1px solid var(--s46-cizgi);
	letter-spacing: -.012em;
}

.single .post-content h3 { letter-spacing: -.008em; }

.post-title, .page-title { letter-spacing: -.018em; }

/* Alinti: buyuk serif tirnak, sicak aksan */
.post-content blockquote {
	position: relative;
	margin: 2em 0;
	padding: 4px 0 4px 26px;
	border-left: 3px solid var(--s46-sicak);
	font-style: italic;
}

.post-content blockquote p:last-child { margin-bottom: 0; }

/* Kod: sol aksan cizgisi + yumusak kose */
.post-content pre {
	border-radius: 6px;
	border-left: 3px solid var(--s46-vurgu);
	padding: 16px 18px;
	font-size: 14px;
	line-height: 1.6;
}

.post-content code {
	padding: 1px 5px;
	border: 1px solid var(--s46-cizgi);
	border-radius: 4px;
	font-size: .88em;
}

.post-content pre code { border: 0; padding: 0; background: transparent; }

/* Yatay ayirac: ortada uc nokta - duz cizgiden daha editoryal */
.post-content hr {
	border: 0;
	margin: 2.6em auto;
	text-align: center;
}

.post-content hr:before {
	content: "\00B7 \00B7 \00B7";
	letter-spacing: .6em;
	color: var(--s46-soluk);
	font-size: 18px;
}

/* --- 6. Sag icindekiler: aktif bolum ------------------------------------- */
.v5-sagic .toc_list a {
	border-left: 2px solid transparent;
	border-radius: 0 var(--s46-r) var(--s46-r) 0;
	transition: border-color var(--s47-gecis), color var(--s47-gecis), background-color var(--s47-gecis);
}

.v5-sagic .toc_list a.v5-etkin {
	border-left-color: var(--s46-vurgu);
	background-color: var(--s46-vurgu-yumusak);
	color: var(--s46-vurgu-koyu);
	font-weight: 600;
}

/* --- 7. Sol gezinme cilasi ----------------------------------------------- */
.v5-solgez .widget ul li > a {
	border-left: 2px solid transparent;
	transition: border-color var(--s47-gecis), background-color var(--s47-gecis), color var(--s47-gecis);
}

.v5-solgez .current-cat > a,
.v5-solgez .current_page_item > a {
	border-left-color: var(--s46-vurgu);
}

/* Yazi sayilari: kucuk sonuk pastil */
.v5-solgez .v5-kategoriler li {
	font-family: var(--s46-fm);
	font-size: 10.5px;
	font-variant-numeric: tabular-nums;
	color: var(--s46-soluk);
}

.v5-solgez .widget-title {
	display: flex;
	align-items: center;
	gap: 8px;
}

.v5-solgez .widget-title:after {
	content: "";
	flex: 1;
	height: 1px;
	background: var(--s46-cizgi);
}

/* Kolon icindeki kaydirma cubugu sonuk kalsin */
.v5-solgez, .v5-sagic { scrollbar-width: thin; scrollbar-color: var(--s46-cizgi) transparent; }
.v5-solgez::-webkit-scrollbar, .v5-sagic::-webkit-scrollbar { width: 8px; }
.v5-solgez::-webkit-scrollbar-thumb, .v5-sagic::-webkit-scrollbar-thumb {
	background: var(--s46-cizgi);
	border-radius: 4px;
}

/* --- 8. Ustbilgi menusu: yumusak vurgu ---------------------------------- */
.site-header .menu > li > a,
.site-header .menu > li > .menu-heading {
	border-radius: var(--s46-r);
	transition: background-color var(--s47-gecis), color var(--s47-gecis);
}

.site-header .menu > li:hover > a,
.site-header .menu > li:hover > .menu-heading {
	background-color: var(--s46-zemin2);
}

/* --- 9. Mikro rotuslar --------------------------------------------------- */
::selection {
	background: var(--s46-vurgu-yumusak);
	color: var(--s46-vurgu-koyu);
}

/* Icerik baglantilari: alt cizgi ince ve nefesli, hover'da belirginlesir */
.post-content p a,
.post-content li a {
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	text-decoration-color: color-mix(in srgb, currentColor 45%, transparent);
	transition: text-decoration-color var(--s47-gecis), color var(--s47-gecis);
}

.post-content p a:hover,
.post-content li a:hover {
	text-decoration-color: currentColor;
	text-decoration-thickness: 2px;
}

/* Odak halkasi her yerde tutarli ve gorunur */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
	outline: 2px solid var(--s46-vurgu);
	outline-offset: 2px;
	border-radius: var(--s46-r);
}

/* Atlama hedefi odaklaninca sayfa cercevesi cizilmesin */
#v5-icerik:focus { outline: none; }
#v5-icerik:focus-visible { outline: 2px dashed var(--s46-vurgu); outline-offset: 6px; }

/*
 * Sayfalama: pastil dugmeler.
 *
 * SITE-005 Asama 1 DUZELTMESI: bu blok once `.wp-pagenavi` seciciyle yazilmisti
 * ve hic uygulanmiyordu - o eklentinin markup'i sitede kullanilmiyor (tema
 * paginate_links() basiyor). SITE-047'de "pastil sayfalama" diye raporladigim
 * cila gercekte GORUNMUYORDU. Gercek seciciye tasindi.
 */
.pagination .page-numbers {
	display: inline-block;
	/* Ana tema sabit 27x27 kutu veriyor (ayni ozgullukte); padding'in ise
	   yaramasi icin acikca sifirlaniyor - dolayli olarak ezilmesine guvenmiyoruz. */
	width: auto;
	height: auto;
	padding: 6px 12px;
	margin: 0 2px;
	border: 1px solid var(--s46-cizgi);
	border-radius: 6px;
	font-family: var(--s46-fg);
	font-size: 13.5px;
	line-height: 1.5;
	text-decoration: none;
	transition: border-color var(--s47-gecis), background-color var(--s47-gecis), color var(--s47-gecis);
}

.pagination a.page-numbers:hover,
.pagination a.page-numbers:focus-visible {
	border-color: var(--s46-vurgu);
	background-color: var(--s46-vurgu-yumusak);
	color: var(--s46-vurgu-koyu);
}

/* Onceki/sonraki oklari yalnizca ikon tasiyor - kutu bos gorunmesin */
.pagination .page-numbers.prev,
.pagination .page-numbers.next { min-width: 2.2em; text-align: center; }

/* Ekmek kirintisi: sans, kucuk, sonuk ayiraclar */
.breadcrumbs {
	font-size: 12.5px;
	letter-spacing: .01em;
}

/* --- SITE-047 · Gorsel denetimde bulunan uc kusur ------------------------- */

/*
 * KUSUR: sol gezinmedeki kategori ADLARI mono fontta cikiyordu.
 * KOK NEDEN: yazi sayilarini tabular mono yapmak icin mono'yu <li>'ye vermistim,
 * ama <li> ayni zamanda <a>'yi da tasiyor ve <a> kendi font-family'sini
 * belirtmedigi icin mono'yu MIRAS ALIYORDU. Sayim ciplak metin dugumu oldugu
 * icin ona ayri secici yazilamiyor - o yuzden mono li'de kalip <a> sans'a
 * geri cekiliyor.
 */
.v5-solgez .v5-kategoriler li > a,
.v5-solgez .widget ul li > a {
	font-family: var(--s46-fg);
	font-size: 13.5px;
}

/*
 * KUSUR: uzun kategori adlarinda sayim alt satira, en sola dusuyordu
 * ("Power BI Report Builder" / sonraki satirda "(1)").
 * KOK NEDEN: flex temeli `1 1 auto` -> baslangic genisligi ICERIK kadar, yani
 * uzun ad tum satiri kapliyor ve sayim sarmak zorunda kaliyor. `1 1 0%` ile
 * baglantinin temeli sifir olur: kendi metnini iki satira sarar ama sayim
 * ilk satirda, sagda kalir.
 */
.v5-solgez .widget ul li > a {
	flex: 1 1 0%;
	min-width: 0;
}

/* --- Arsiv karti: genis ekranda YATAY duzen ------------------------------ *
 * KUSUR: her kart tam genislikte dev bir gorselle diziliyordu; 10 yazilik bir
 * arsiv asiri uzun oluyor ve tarama zorlasiyor.
 *
 * Cozum: 62rem ustunde gorsel solda sabit kolon, metin sagda. Markup
 * degismiyor (article > a.post-image + div.post-content), yalnizca grid.
 */
@media (min-width: 62rem) {
	.postlist .post-list-item {
		display: grid;
		grid-template-columns: 17rem minmax(0, 1fr);
		align-items: stretch;
	}

	/* Gorseli olmayan yazilarda metin tum genisligi kullanir */
	.postlist .post-list-item:not(:has(.post-image)) {
		grid-template-columns: minmax(0, 1fr);
	}

	.postlist .post-list-item .post-image {
		height: 100%;
		min-height: 11rem;
		border-right: 1px solid var(--s46-cizgi);
	}

	.postlist .post-list-item .post-image img {
		height: 100%;
		object-fit: cover;
	}

	.postlist .post-list-item .post-content {
		padding: 20px 24px;
		justify-content: center;
	}

	.postlist .post-list-item .post-title { font-size: 22px; }
}

/* :has() desteklemeyen tarayicida gorselsiz kart bos kolon birakmasin */
@supports not selector(:has(*)) {
	@media (min-width: 62rem) {
		.postlist .post-list-item { grid-template-columns: minmax(0, 1fr); }
		.postlist .post-list-item .post-image { border-right: 0; }
	}
}

/*
 * KUSUR: yatay kartta gorseller kotu kirpiliyordu. Sitedeki one cikan gorseller
 * genis infografik (~16/9); kart yuksekligini UZUN OZET belirledigi icin gorsel
 * kolonu dar-uzun bir kutuya donusuyor ve object-fit:cover kenarlari kesiyordu -
 * infografikte anlam kaybi.
 *
 * Cozum iki parcali:
 *   1) ozet 3 satira kirpilir -> kartlar kisa ve ESIT yukseklikte, tarama kolay
 *   2) gorsel kolonu 20rem'e genisler -> en/boy orani gorsellerin dogal oranina
 *      yaklasir, cover neredeyse hic kirpmaz
 */
.postlist .post-list-item .post-excerpt {
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

@media (min-width: 62rem) {
	.postlist .post-list-item { grid-template-columns: 20rem minmax(0, 1fr); }
	.postlist .post-list-item .post-image { min-height: 12.5rem; }
}

/* Cok genis ekranda gorsel kolonu orani bozmasin */
@media (min-width: 100rem) {
	.postlist .post-list-item { grid-template-columns: 22rem minmax(0, 1fr); }
}

/*
 * "Devamini oku" metni ana temada buyuk harfe cevriliyor ve cumle uzun oldugu
 * icin bagirtili duruyordu. Metin sablondan geldigi icin degistirmiyorum,
 * yalnizca cumle duzenine donduruyorum.
 */
.postlist .read-more a { text-transform: none; letter-spacing: 0; }

/* --- SITE-047 · ETKIN menu ogesi (tam sayfa taramasi buldu) --------------- *
 * KUSUR: koyu serit uzerinde etkin/ata menu ogesi #0052bd kaliyordu -> 2,58:1.
 * Statik sayfalarin 4'unde cikti; ilk taramada 6 sayfa tipi baktigim icin
 * gorulmedi (o sayfalarda etkin menu ogesi yoktu).
 *
 * IKI KAYNAK:
 *   1) Kendi SITE-018 katmanimdaki sabit #0052bd (yukarida token'a baglandi) -
 *      ana temanin renklerini baglarken KENDI eski katmanlarimi atlamisim.
 *   2) Ana temanin `.site-header .menu li.current-menu-ancestor > a` kurali:
 *      bagladigim listede :hover ve :focus-within vardi ama ANCESTOR yoktu.
 *
 * Bu blok tum etkin durum varyantlarini kapsiyor.
 */
.mainmenu .menu li.current-menu-item > a,
.mainmenu .menu li.current-menu-ancestor > a,
.mainmenu .menu li.current-menu-parent > a,
.mainmenu .menu li.current_page_item > a,
.mainmenu .menu li.current_page_ancestor > a,
.mainmenu .menu li.current-menu-item > .menu-heading,
.mainmenu .menu li.current-menu-ancestor > .menu-heading,
.mainmenu .menu li.current-menu-parent > .menu-heading,
.site-header .menu li.current-menu-item > a,
.site-header .menu li.current-menu-ancestor > a,
.site-header .menu li.current-menu-parent > a,
.site-header .menu li.current_page_item > a,
.site-header .menu li.current_page_ancestor > a,
.site-header .menu li.current-menu-item > .menu-heading,
.site-header .menu li.current-menu-ancestor > .menu-heading,
.site-header .menu li.current-menu-parent > .menu-heading,
.mainmenu .sub-menu .current-menu-item > a,
.mainmenu .sub-menu .current_page_item > a {
	color: var(--s46-vurgu-koyu);
}

/* --- SITE-047 · Form ogelerinin zemini ------------------------------------ *
 * Ana temanin `input, textarea, select { background:#f8f6f6 }` kurali
 * baglanmamisti; yalnizca input[type=...] varyantlarini yazmisim. Bare secici
 * koyu temada acik zemin biraktigi icin ayrica baglaniyor.
 */
input, textarea, select {
	background-color: var(--s46-zemin);
	border-color: var(--s46-cizgi);
	color: var(--s46-murekkep);
}

/* --- SITE-047 · "Ada" bloklarina ACIK renk atamasi ----------------------- *
 * DIKKAT - BURADAKI ASIL DERS: [style*="color"] secicisi `background-color` ile
 * de ESLESIR ("background-color" icinde "color" alt dizgesi var). Ilk iki denemem
 * bu yuzden yanlis ogeleri hedefledi: yalnizca ZEMIN tanimlayan bloklar "kendi
 * rengi var" sayilip haric tutuldu, dolayisiyla renk atanmadi ve ustten ACIK renk
 * miras aldilar -> beyaz zemin + acik metin, 1,25:1 (ezmeden onceki halinden
 * daha kotu). Tarayiciya el.matches() sorunca ortaya cikti.
 *
 * Kesin ayrim:
 *   METIN RENGI VAR -> [style^="color"] | [style*=";color"] | [style*="; color"]
 *   ZEMIN VAR       -> [style*="background"]   (bu dizge tek anlamli)
 *
 * KOK NEDEN (olculdu, iki tur tahminden sonra): satir ici zemini olan bloklar
 * kendi RENGINI tanimlamiyor. Ornek gercek markup:
 *     <div style="background-color:#fffffe; font-family:Consolas; font-size:12px">
 * Renk bildirimi YOK. Acik temada ustunden koyu metin rengi miras aliyordu ve
 * her sey yolundaydi. Koyu temada ise ust ogeler ink'e (acik) cekildigi icin
 * ada da ACIK renk miras aliyor -> beyaz zemin + acik metin = 1,25:1.
 *
 * Ada'yi ezmemek yetmiyor; ona rengi ACIKCA vermek gerekiyor. Zemini sabit bir
 * ACIK deger oldugu icin metin rengi de sabit bir KOYU deger: token kullanmak
 * yanlis olurdu, cunku token koyu temada acilir ve kusur geri gelir.
 *
 * Kendi satir ici rengi olan torunlar bundan etkilenmez - satir ici stil her
 * seciciyi yener, yani sozdizimi renklendirmesi korunur.
 */
:root[data-tema-etkin="koyu"] .post-content
	[style*="background"]:not([style^="color"]):not([style*=";color"]):not([style*="; color"]),
:root[data-tema-etkin="koyu"] .post-content
	[style*="background"]:not([style^="color"]):not([style*=";color"]):not([style*="; color"]) * {
	/*
	 * SABIT deger, token DEGIL: ada'nin zemini de sabit bir ACIK deger (#fffffe
	 * gibi). Token kullanmak koyu temada metni acar ve kusur geri gelir.
	 */
	color: #1c1a17;
}

/* =========================================================================
 * SITE-049 — Ana sayfa kartlari: genislik + gorselin TAMAMI gorunsun
 *
 * Kullanici: "anasayfadaki alt alta blog kartlarini saga dogru biraz buyut.
 * Blog kapak gorselleri de ortalayip kullandigin icin bir kismi gozukmuyor.
 * Gorselin tamami gozuksun, kotu bir gorunum oluyor."
 *
 * OLCUM (1440px, ana sayfa):
 *   #content 1440px · main 976px (left=240) -> SAGDA 224px BOS
 *   .v5-sag ogesi arsivde HIC BASILMIYOR (icindekiler yalnizca tekil yazida),
 *   ama izgara ucuncu kolonu yine ayiriyordu. Israf tam olarak bu 224px.
 *   Kart 900px · gorsel kutusu 320x293 · gorselin DOGAL orani 1.78 (16/9)
 *   -> 320 genislikte 180px olmasi gerekirken 293'e uzatilip cover ile
 *      kenarlari kesiliyordu. Ornek 8 gorselin HEPSI tam 1.78.
 * ========================================================================= */

/*
 * 1) Sag kolon YOKSA izgara iki kolona duser - bos kolon icin yer ayirmaz.
 *    :has() ile calisma aninda tespit; boylece tekil yazida (icindekiler var)
 *    uc kolon, arsivde iki kolon olur ve ayri body sinifi gerekmez.
 */
@media (min-width: 78rem) {
	#content.content:not(:has(> .v5-sag)) {
		grid-template-columns: var(--s46-sol) minmax(0, 1fr);
	}

	/* Serbest kalan alani icerik kullanir */
	#content.content { max-width: 1520px; }
}

/* :has() desteklenmiyorsa onceki uc kolonlu davranis korunur (gerileme olmaz) */
@supports not selector(:has(*)) {
	@media (min-width: 78rem) {
		#content.content { max-width: 1440px; }
	}
}

/*
 * 2) Gorselin TAMAMI gorunur.
 *    Kutuya gorsellerin dogal orani (16/9) veriliyor ve object-fit contain'e
 *    aliniyor. Oran ayni oldugu icin contain'de bosluk olusmuyor; farkli oranli
 *    bir gorsel yuklenirse kirpilmak yerine sigdirilir - istek buydu.
 *    Onceki `height:100%` + cover kombinasyonu kart yuksekligini uzun ozetten
 *    devraliyor ve gorseli zorla uzatip kenarlarini kesiyordu.
 */
@media (min-width: 62rem) {
	.postlist .post-list-item { grid-template-columns: 26rem minmax(0, 1fr); }

	.postlist .post-list-item .post-image {
		aspect-ratio: 16 / 9;
		height: auto;
		min-height: 0;
		align-self: center;
		background-color: var(--s46-zemin2);
	}

	.postlist .post-list-item .post-image img {
		width: 100%;
		height: 100%;
		object-fit: contain;
	}
}

@media (min-width: 100rem) {
	.postlist .post-list-item { grid-template-columns: 28rem minmax(0, 1fr); }
}

/* Mobilde de gorsel kirpilmasin (tek kolon, gorsel ustte) */
.postlist .post-list-item .post-image {
	aspect-ratio: 16 / 9;
	background-color: var(--s46-zemin2);
}

.postlist .post-list-item .post-image img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

/* --- SITE-016 · <picture> yerlesime karismaz -------------------------------
 * WebP servisi <img>'yi <picture> ile sariyor. <picture> varsayilan olarak
 * satir ici bir kutu olusturur ve .post-image gibi sarmalayicilarin
 * aspect-ratio / height:100% kurallari <img>'ye ulasmaz olur.
 * display:contents ile <picture> yerlesim agacindan tamamen cikar - mevcut
 * tum gorsel kurallari degismeden calismaya devam eder.
 */
picture {
	display: contents;
}

/* --- SITE-051 · Sol gezinme: katlanabilir bolumler + gorsel cila ---------- *
 * Kapsam: yalnizca KENDI urettigimiz Kategoriler blogu <details> ile
 * katlaniyor (functions.php: diagnoseo_child_sol_gezinme). Widget alanindan
 * gelen widget'lar (Etiket Bulutu) bilincli olarak sarmalanmadi -
 * dynamic_sidebar_after sidebar basina tetiklenir, widget basina degil; temiz
 * bir kanca olmadan cikti yakalayip yeniden islemek kirilgan olurdu.
 *
 * NOT: "Sayfalar" blogu da bu sistemi kullaniyordu (kullanicidan gelen katliki
 * karari sonrasi koddan cikarildi - bkz. functions.php); asagidaki kurallar
 * `.v5-katlanir` sinifina bagli oldugu icin degismedi, sadece Kategoriler'e
 * uygulanmaya devam ediyor.
 */

/* 1) Native disclosure ucgenini kapat - kendi ok gostergemizi kullanacagiz */
.v5-solgez details.v5-katlanir > summary.widget-title {
	cursor: pointer;
	list-style: none;
}

.v5-solgez details.v5-katlanir > summary.widget-title::-webkit-details-marker {
	display: none;
}

/* 2) Ok gostergesi: metinden ONCE, acik/kapali durumuna gore doner.
 *    .widget-title zaten display:flex + align-items:center + gap:8px veriyor
 *    (bolum 5), bu yuzden ::before flex ogesi olarak metnin soluna oturur ve
 *    var olan ::after (sag taraftaki ayrac cizgisi) ile CAKISMAZ. */
.v5-solgez details.v5-katlanir > summary.widget-title::before {
	content: "";
	flex: 0 0 auto;
	width: 7px;
	height: 7px;
	border-right: 1.5px solid var(--s46-soluk);
	border-bottom: 1.5px solid var(--s46-soluk);
	transform: rotate(-45deg); /* kapali: saga bakan ok (>) */
	transition: transform var(--s47-gecis);
}

.v5-solgez details.v5-katlanir[open] > summary.widget-title::before {
	transform: rotate(45deg); /* acik: asagi bakan ok (v) */
}

/* 3) <summary> odaklaninca gorunur halka - genel [tabindex]:focus-visible
 *    kurali <summary>'yi kapsamiyor (summary bir form elemani/link degil). */
.v5-solgez details.v5-katlanir > summary:focus-visible {
	outline: 2px solid var(--s46-vurgu);
	outline-offset: 2px;
	border-radius: var(--s46-r);
}

/* 4) Bolum basligi sayac rozeti: Kategoriler toplam oge sayisi.
 *    Var olan --s46-zemin3 (acik/koyu tema token'i) kullanildi, yeni renk yok. */
.v5-solgez .v5-sayac {
	flex: 0 0 auto;
	padding: 1px 7px;
	border-radius: 100px;
	background-color: var(--s46-zemin3);
	color: var(--s46-soluk);
	font: 600 10px/1.6 var(--s46-fg);
	font-variant-numeric: tabular-nums;
}

/* 5) Sticky kolonda yumusak golge: sag kenari hafifce derinlestirir.
 *    Zemin/renk .v5-solkol'de kaliyor (bolum 5'teki kural bozulmuyor),
 *    yalnizca box-shadow ekleniyor - mevcut rgba(0,0,0,X) golge kullanimlarinin
 *    (bkz. .site-header.v5-kaydi, bolum 1) ayni yontemini izler. */
@media (min-width: 56rem) {
	.v5-solkol {
		box-shadow: 1px 0 8px -4px rgba(0, 0, 0, .16);
	}
}

/*
 * 6) SITE-051-T2 KALDIRILDI (kullanici karari): "Son Yazilar" widget'i
 *    (recent-posts-2) sol kolondan tamamen etkisizlestirildi - ana sayfa
 *    zaten son yazilari kart olarak listeliyordu. Bu widget'a ozel eklenmis
 *    olan `.v5-tumu` "Tumu ->" baglantisi widget'la birlikte kalkti; bkz.
 *    functions.php'deki ilgili yorum (Git gecmisinde yontem referansi duruyor).
 */

/* =========================================================================
 * SITE-058 — TOC baglantilari yapiskan ustbilginin altina dusuruyor
 *
 * Asil duzeltme functions.php'de (eklentinin tocplus.smooth_scroll_offset
 * degerine JS tarafinda enjeksiyon). Burasi is kaydindaki EK GUVENCE:
 * "native atlamalar icin ikinci bir yol, A/B'den bagimsiz calisir" -
 * adres cubugundan dogrudan #hash ile giris, klavye ile capa gezinmesi gibi
 * durumlarda (JS'li kaydirmayi HIC tetiklemeyen durumlar) devreye girer.
 *
 * NEDEN HEM BASLIGA HEM SPAN'A: table-of-contents-plus capayi basligin
 * KENDISINE degil, basligin ACILIS ETIKETINDEN HEMEN SONRA eklenen
 * `<span id="...">`'e basiyor (bkz. functions.php SITE-047 notu ve
 * eklentinin Frontend.php'sindeki insert_anchor mantigi - dogrulandi).
 * scroll-margin-top hedef ELEMANIN KENDI kutusuna uygulanir; basliga
 * vermek span'i ETKILEMEZ (span baska bir kutu, kendi scroll-margin'i
 * gerekir). Baslik uzerine de ekleniyor cunku bazi klavye/ekran okuyucu
 * gezinmeleri dogrudan h2/h3'e odaklanabilir - iki hedef de kapsanmis olur.
 *
 * scroll-padding-top (yukarida, SITE-047 bolum 1) ile scroll-margin-top
 * AYNI ANDA tanimliysa mesafeler TOPLANIR (browser her iki degeri de
 * hesaba katar) - sonuc CSS'teki 83px yerine daha genis bir bosluk olabilir.
 * Bu BILINCLI KABUL EDILDI: basari kriteri `top >= 71` bir ESIK, tam esitlik
 * degil; fazla bosluk kriteri BOZMAZ, yalniz gorsel olarak biraz daha ferah
 * birakir. Iki kural celismiyor, ayni yonde calisiyor.
 */
.post-content h2,
.post-content h3,
.post-content h4,
.post-content h5,
.post-content h6,
.post-content h2 > span[id],
.post-content h3 > span[id],
.post-content h4 > span[id],
.post-content h5 > span[id],
.post-content h6 > span[id] {
	scroll-margin-top: calc(var(--s46-ust) + 12px);
}

/* =========================================================================
 * SITE-057 — 404 sayfasinda her genislikte yatay tasma
 *
 * OLCUM (.ekran/.site057-olcum.mjs ile, 5 genislik): KOK NEDEN VARSAYIM DEGIL,
 * DOGRULANDI - `driver` benzeri bir betikle hesaplanmis stiller okundu (CSS
 * grepleyip TAHMIN YURUTULMEDI).
 *
 * Ana temanin `.columns` (main.css) genel amacli bir "satir" yardimci sinifi:
 *   taban (mobil)   : .columns { margin: 0 -10px;  width: auto }
 *   >=768px kirilma  : .columns { margin: 0 -20px; width: calc(100% + 2*20px) }
 * `.col` cocuklari da esdeger POZITIF padding (10px/20px) tasiyor. Bu, bir
 * "container -> row -> col" sisteminde row'un container'in KENDI padding'ini
 * negatif margin ile IPTAL EDIP kenara kadar (edge-to-edge) yayilmasi icin
 * tasarlanmis KLASIK bir teknik - ancak bu teknigin calismasi icin row'un
 * ATASININ ESIT MIKTARDA pozitif padding tasimasi GEREKIR.
 *
 * 404.php (`<div class="columns e404">`) `.main` sinifini KULLANMIYOR - diger
 * alti sablon `get_sidebar()` ile birlikte `.main`i cagirir (V5 grid
 * `#content.content > .main` bu sinifi hedefler ve 18/26/30px padding verir),
 * 404 ise dogrudan `#content.content`in COCUGU olarak `.columns.e404` div'ini
 * basar - V5 gridinde bu konumun padding'i 0. Yani negatif margin/genis width
 * IPTAL EDECEK hicbir pozitif padding YOK; row tam olarak negatif margin +
 * "width:100% + 2*gutter" kadar viewport disina tasiyor:
 *
 *   320px:  .columns.e404 left=-10  right=330  (10px sag tasma)
 *   390px:  .columns.e404 left=-10  right=400  (10px sag tasma)
 *   768px:  .columns.e404 left=-20  right=788  (20px sag tasma)
 *   1024px: .columns.e404 left=220  right=1044 (20px sag tasma - sol gezinme
 *           kolonu devrede, sag kenar yine tam 20px tasiyor)
 *   1440px: .columns.e404 left=220  right=1460 (20px sag tasma)
 *
 * `document.documentElement.scrollWidth - clientWidth` bu sag tasmayla BIREBIR
 * esleşiyor (10px<768px, 20px>=768px) - sol taraftaki negatif margin
 * scrollWidth'i ETKILEMIYOR (yalniz en sagdaki gorunur/gorunmez kenar sayilir),
 * bu yuzden olcumde yalniz SAG tasma cikiyor, ama KOK NEDEN HER IKI kenarda da
 * ayni negatif margin.
 *
 * NEDEN `.e404` ILE SINIRLI TUTULDU: `.columns`/`.col`/`.col2` siniflari ana
 * temanin GENEL amacli yardimci sinif seti (grep ile dogrulandi: baska
 * hicbir sablonda kullanilmiyor). Genel bir `.columns{...}` ezmesi yazmak
 * yerine, YALNIZCA 404.php'nin kok elemanindaki BILESIK sinif `.columns.e404`
 * hedeflendi - bu bilesim BASKA HICBIR YERDE yok, bu yuzden diger 6 sayfa
 * tipini ETKILEMEZ (driver.mjs audit + site-046-dogrula.mjs ile dogrulandi).
 *
 * COZUM: negatif margin'i VE onu telafi eden "genislik+2*gutter" hesabini
 * BIRLIKTE noturluyoruz - satir artik container'in TAM GENISLIGINDE (%100),
 * tasma yok. `.col` cocuklarinin kendi ic pozitif padding'ine (10px/20px)
 * DOKUNULMADI: bu artik satirin KENDI ic boslugu olarak kaliyor (onceden
 * disaridan iptal edilen bir bosluktu) - metin/form/dugme viewport icinde
 * kalirken az bir "nefes payi" kazaniyor, gorunum BOZULMUYOR (bkz.
 * .ekran/site057-*.png ekran goruntuleri).
 *
 * Ozgulluk: `.columns.e404` (0,2,0) ana temanin `.columns` (0,1,0)
 * kurallarini KAYNAK SIRASINDAN BAGIMSIZ ezer - !important gerekmedi.
 * ========================================================================= */
.columns.e404 {
	width: 100%;
	max-width: 100%;
	margin-left: 0;
	margin-right: 0;
}

/* =========================================================================
 * SITE-059 — Tekil yazida "Ilgili Yazilar" blogu 600-895px'te 4px tasiyor
 *
 * OLCUM (.ekran/.site059-check3.mjs ile, gercek ilgili-yazi iceren bir tekil
 * yazida - bos .columns kutusu sifir yukseklik oldugu icin tasmayi TETIKLEMIYOR,
 * bu yuzden dogrulama en az bir "col3" cocugu olan yazi ile yapildi):
 *
 *   600px:  .main .columns  left=-4   right=604  (cw=600, fark=4)
 *   768px:  .main .columns  left=-4   right=772  (cw=768, fark=4)
 *   895px:  .main .columns  left=-4   right=899  (cw=895, fark=4)
 *   1024px: fark=0 (.main yatay padding 30px'e cikiyor)
 *   1440px: fark=0
 *
 * KOK NEDEN: ana temanin `.columns` kurali (main.css) >=400px'te
 * `margin:0 -20px` veriyor (satir sistemi container'in ESIT pozitif padding'iyle
 * telafi edilmesini varsayar). Child'in `#content.content > .main` yatay
 * padding'i ise 56rem (896px)'e kadar 16px kaliyor (bkz. bolum 4). Fark
 * 20-16=4px telafisiz kaliyor; sag kenar .main'in border-box'unun 4px disina
 * tasiyor (dogrulandi, sol kenar da ayni miktarda tasiyor ama LTR'de
 * scrollWidth'i ETKILEMIYOR - SITE-057'de de ayni davranis olculmustu).
 *
 * NEDEN `.main .columns` (SITE-057'nin `.columns.e404`'une benzer DAR kapsam):
 * `.columns` sinifi grep ile ucuncu kez dogrulandi - 404.php'de (.columns.e404,
 * .main disinda, SITE-057 kapsiyor), related-posts.php'de (.main ICINDE, AKTIF,
 * bu kusurun kaynagi) ve latest-posts.php'de (OLU KOD, hicbir yerden
 * cagrilmiyor). `.main .columns` yalnizca ikinci kullanimi hedefler; 404'u
 * (ayri sablon, .main kullanmiyor) ETKILEMEZ.
 *
 * COZUM: negatif margin'in urettigi "container + 40px" auto genislik hesabini
 * container genisligine (100%) SINIRLAMAK - .main'in kendi padding ritmine
 * (SITE-046/054, tipografi olcusu) DOKUNULMUYOR, yalnizca satirin kendi
 * genisligi kirpiliyor. `.columns` zaten box-sizing:border-box tasidigi icin
 * (main.css) max-width, kenarlik/ic bosluk dahil TOPLAM kutuyu sinirlar.
 * ========================================================================= */
.main .columns {
	max-width: 100%;
}

/* =========================================================================
 * SITE-060 — Footer: yapisal sadelestirme + SEO dokunuslari
 *
 * MEVCUT DURUM (olculdu, SITE-060 is kaydi): tek `<p class="footer-message">`
 * icinde 11 baglantilik duz metin akisi, `<nav>`/baslik/liste yok, font 19px
 * (okuma katmani olcusu - .site-footer ARAYUZ katmaninda, bkz. bolum 3).
 *
 * BU KATMAN yalnizca YAPI ve TIPOGRAFI'yi ele alir - GORSEL KIMLIGE (koyu
 * zemin) DOKUNULMUYOR. `.site-footer` zemin/metin tokenlari (bolum 8, "Alt
 * bilgi bilincli olarak koyu kalir") DEGISMEDI - SITE-046'da bilincli secilmis
 * marka suregi. `.site-footer a` / `.site-footer a:hover` renk kurallari da
 * ayni yerde KALDI, burada TEKRARLANMADI (yeni seciciler o genel kuraldan
 * otomatik yararlanir - `.footer-nav-groups a`, `.footer-brand a` vb. hepsi
 * `.site-footer` torunu).
 *
 * TIPOGRAFI OLCEGI: 19px (okuma) -> 13.5px (baglanti/liste metni, sol gezinme
 * ile AYNI olcek) ve 11.5px (grup basligi, widget-title ile AYNI olcek,
 * bolum 5). Yeni token EKLENMEDI - mevcut olceklerin AYNISI kullanildi,
 * boylece arayuz katmaninda tutarlilik korunuyor.
 * ========================================================================= */
.site-footer {
	padding: 32px 24px 28px;
}

.footer-inner {
	max-width: 1200px;
	margin: 0 auto;
	display: flex;
	flex-direction: column;
	gap: 24px;
}

/* Nav basligi ekran okuyucu icin var, gorsel olarak gizli (.screen-reader-text
 * ana temada tanimli - clip teknigiyle). Sutun basliklari (h3) ise BILINCLI
 * olarak GORUNUR - kullanicidan gelen "modern ve efektif" istegi gruplari
 * gozle ayirt edilebilir kilmayi gerektiriyor. */
.footer-nav-title {
	margin: 0 0 10px;
	font: 600 11.5px/1.4 var(--s46-fg);
	letter-spacing: .08em;
	text-transform: uppercase;
	/* Token DEGIL, sabit deger: --s46-alt-metin zaten koyu zeminde 9.29:1/9.54:1
	 * (acik/koyu tema) olculdu (bkz. site-046-dogrula.mjs) - baslik icin AYNI
	 * degeri kullanmak (opacity ile SOLUKLASTIRMADAN) kontrasti KORUR. Opacity
	 * denenmedi cunku dogrudan zeminle karisip olculmus orani dusururdu. */
	color: var(--s46-alt-metin);
}

/* =========================================================================
 * SITE-062 — Footer: "site haritasi" - uc sutun + alt serit
 *
 * MEVCUT DURUM (SITE-060 sonrasi, is kaydi SITE-062 olcumu): iki nav grubu
 * (Diller ve Araclar / Microsoft Power Platform), tag/kategori karisik listeler,
 * marka satiri nav'in DISINDA tek paragraf. Kullanici "farkli bir bakis acisi"
 * istedi, sunulan uc secenekten "Site haritasi footer'i" secildi.
 *
 * BU KATMAN: eski `.footer-brand` / `.footer-sep` / `.footer-nav-groups`
 * seciciler KALDIRILDI (footer.php'de artik markup'ta yoklar - olu CSS
 * birakmamak icin silindi). Yerine `.footer-map` (3 sutun) + sutun ici
 * alt-bilesenler (marka/istatistik/sosyal/CTA, konu listesi, kaynak listesi)
 * ve ayri bir `.footer-bottom` (telif + "Yukari cik") geldi.
 *
 * RENK/ZEMIN: `.site-footer` / `.site-footer a` / `.site-footer a:focus-visible`
 * kurallari (bolum 8 + SITE-061) DEGISMEDI - yeni tum seciciler `.site-footer`
 * torunu oldugu icin koyu zemin + odak halkasi otomatik miras aliniyor.
 * ========================================================================= */
.footer-map {
	display: grid;
	grid-template-columns: 1fr;
	gap: 28px;
}

.footer-map-col { min-width: 0; }

.footer-map-col ul {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 7px;
}

.footer-map-col li {
	margin: 0;
	font-size: 13.5px;
	line-height: 1.6;
	/* KONULAR sutununda kategori adi solda, yazi sayisi sagda oturur (bkz.
	 * .footer-cat-count) - tek cocuklu li'lerde (KAYNAKLAR, marka CTA) bu kural
	 * gorunmez etki yapar, `:has()` gibi tarayici destegine bagli bir secici
	 * KULLANILMADI, tum liste ogelerine UYGULANDI (basit ve saglam). */
	display: flex;
	justify-content: space-between;
	gap: 10px;
}

.footer-map-col a { text-decoration: none; }
.footer-map-col a:hover,
.footer-map-col a:focus-visible { text-decoration: underline; text-underline-offset: 3px; }

.footer-cat-count {
	font-variant-numeric: tabular-nums;
	opacity: .75;
}

/* --- Marka sutunu: unvan / sayilar / sosyal ikonlar / CTA baglantilari --- */
.footer-brand-sub {
	margin: 0;
	font-size: 13.5px;
	line-height: 1.6;
}

.footer-stats {
	margin: 6px 0 14px;
	font-size: 12.5px;
	line-height: 1.6;
	opacity: .85;
}

/*
 * DUZELTME (test oncesi PM geri bildirimi, ayni gun): ikonlar dikey alt alta
 * duruyordu. KOK NEDEN - `.footer-map-col ul` (bolum yukarida, secici
 * `.footer-map-col ul`, ozgunluk 0-1-1: bir sinif + bir eleman turu)
 * `flex-direction: column` tanimliyor; `.footer-social`in KENDISI bu
 * ozelligi HIC tanimlamiyordu (sadece `display:flex` vardi), dolayisiyla
 * cakisma bile olusmuyordu - tek tanim `.footer-map-col ul`den geliyordu ve
 * o da column'du. Ayni sorun `.footer-cta` icin de gecerliydi (o kendi
 * `flex-direction:column` tanimliyordu ama ozgunlugu 0-1-0 - `.footer-map-col
 * ul`in 0-1-1'i onu HER ZAMAN ezerdi; sonuc gorsel olarak ayni oldugu icin
 * o zamana kadar fark edilmedi).
 *
 * COZUM: `.footer-social` ve `.footer-cta` seciciler `.footer-map-brand`
 * ile birlikte YAZILDI (ozgunluk 0-2-0), boylece `.footer-map-col ul`in
 * 0-1-1'ini HER DURUMDA (mobil+masaustu) acikca eziyorlar - artik kaynak
 * sirasina veya sans esitligine BAGIMLI degil.
 */
.footer-map-brand .footer-social {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 0 0 12px;
	padding: 0;
	list-style: none;
}

.footer-social-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	color: var(--s46-alt-metin);
	transition: background-color var(--s47-gecis), color var(--s47-gecis);
}

.footer-social-link svg { display: block; }

.footer-social-link:hover,
.footer-social-link:focus-visible {
	background-color: rgba(255, 255, 255, .1);
	color: #fff;
	text-decoration: none; /* ikon linki - alt cizgi gerekmiyor */
}

/* Mobilde (taban kural) dikey yigin, >=36rem'de yan yana (asagida, medya
 * sorgusu blogunda) - PM geri bildirimi: "masaustunde ayni satirda yan yana
 * olabilir; dar ekranda alt alta dusmesi normal". */
.footer-map-brand .footer-cta {
	display: flex;
	flex-direction: column;
	gap: 6px;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* Ok isareti mevcut "Devamini oku" ok kalibiyle AYNI dil (bkz. .postlist .read-more,
 * bolum 5) - burada METNIN ONUNDE, hover/odakta AYNI yonde kayar. */
.footer-cta a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-weight: 600;
}

.footer-cta a::before {
	content: "\2192";
	transition: transform var(--s47-gecis);
}

.footer-cta a:hover::before,
.footer-cta a:focus-visible::before { transform: translateX(4px); }

/* --- Alt serit: telif + "Yukari cik" --- */
.footer-bottom {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding-top: 20px;
	border-top: 1px solid rgba(255, 255, 255, .12);
	font-size: 13px;
}

.footer-copyright { margin: 0; }
.footer-copyright a { text-decoration: none; }
.footer-copyright a:hover,
.footer-copyright a:focus-visible { text-decoration: underline; text-underline-offset: 3px; }

.footer-top-link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	align-self: flex-start;
	font-weight: 600;
	text-decoration: none;
}

.footer-top-link:hover,
.footer-top-link:focus-visible { text-decoration: underline; text-underline-offset: 3px; }

.footer-top-link::before {
	content: "\2191";
	transition: transform var(--s47-gecis);
}

.footer-top-link:hover::before,
.footer-top-link:focus-visible::before { transform: translateY(-3px); }

/* >=36rem (576px): uc sutun yan yana. Dar mobilde dikey yigin (yukarida,
 * taban kural) daha okunur kaldigi icin oraya TASINMADI. */
@media (min-width: 36rem) {
	.footer-map {
		grid-template-columns: repeat(3, 1fr);
		column-gap: 40px;
	}

	.footer-map-brand .footer-cta {
		flex-direction: row;
		flex-wrap: wrap;
		column-gap: 20px;
		row-gap: 6px;
	}

	.footer-bottom {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
	}

	.footer-top-link { align-self: auto; }
}


/* =========================================================================
 * SITE-064 — Site geneli "yukari cik" dugmesi
 *
 * MEVCUT DURUM: "Yukari cik" YALNIZ footer'da (`.footer-top-link`, SITE-062).
 * Kullanici sayfanin ortasindayken basa donmek icin once sonuna kadar
 * kaydirmak zorunda. Bu katman footer'dan BAGIMSIZ, her sayfa tipinde
 * gorunen sabit bir dugme ekler. Footer'daki metin baglanti KALDIRILMADI -
 * betik calismadiginda calisan tek yol o (asagiya bakiniz).
 *
 * TASARIM DILI: `.v5-tema` (tema dugmesi) ile ayni aile - 1px `--s46-cizgi`
 * kenarlik, `--s46-zemin2` zemin, 100px yaricap, `--s40-shadow`. Yeni renk
 * ya da yeni token URETILMEDI; ikisi de tema basina kendiliginden cozuluyor,
 * bu yuzden ayri bir koyu tema kancasi gerekmiyor.
 *
 * ODAK HALKASI: `--s46-vurgu` (acik #0052bd / koyu #8ab8f7). SITE-061'in
 * `--s46-alt-metin` istisnasi YALNIZ footer icindir - dugme sayfa zemini
 * (`--s46-zemin2`) uzerinde durdugu icin genel kural dogru olan.
 *
 * GORUNURLUK: `visibility: hidden` BILINCLI (`opacity: 0` tek basina degil) -
 * gorunmezken sekme sirasindan da cikar, klavye kullanicisi bos duraga
 * takilmaz. `.v5-gorunur` sinifini SITE-047'nin mevcut rAF dongusu basar;
 * yeni scroll dinleyicisi EKLENMEDI (SITE-006 disiplini).
 *
 * Z-INDEX 35: yapiskan ust seridin (30) ustunde, okuma cubugunun (40) ve
 * ana temanin arama acilir penceresinin (100) ALTINDA - dugme acik bir
 * modalin uzerine binmez.
 * ========================================================================= */
.v5-yukari {
	position: fixed;
	right: max(16px, env(safe-area-inset-right));
	bottom: max(16px, env(safe-area-inset-bottom));
	z-index: 35;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	/* Kutu 44px + 1px kenarlik = OLCULEN 46x46. WCAG 2.2 AA "Target Size
	   (Minimum)" esigi 24px, iOS/Android tavsiyesi 44px - ikisinin de ustunde. */
	width: 44px;
	height: 44px;
	border: 1px solid var(--s46-cizgi);
	border-radius: 100px;
	background-color: var(--s46-zemin2);
	color: var(--s46-murekkep);
	box-shadow: var(--s40-shadow);
	opacity: 0;
	visibility: hidden;
	transform: translateY(8px);
	transition: opacity .18s ease, transform .18s ease, visibility .18s ease,
	            box-shadow .15s ease, border-color .15s ease, color .15s ease;
}

.v5-yukari.v5-gorunur {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.v5-yukari:hover {
	border-color: var(--s46-vurgu);
	color: var(--s46-vurgu-koyu);
	box-shadow: var(--s40-shadow-hover);
}

.v5-yukari:focus-visible {
	outline: 2px solid var(--s46-vurgu);
	outline-offset: 2px;
}

/* Ikonun kendisi olceklenmesin - kutu 44px, glif 17px */
.v5-yukari svg {
	display: block;
	width: 17px;
	height: 17px;
}

@media (prefers-reduced-motion: reduce) {
	.v5-yukari { transition: none; }
}

@media print {
	.v5-yukari { display: none; }
}


/* =========================================================================
 * SITE-065 — Footer tasarim rotusu (UI/UX)
 *
 * OLCULEN SORUNLAR (1440px, SITE-062 sonrasi footer):
 *  1. Uc esit sutun (373px x3). KONULAR sutununda kategori adi SOLDA, sayi
 *     SAGDA; aradaki bosluk ~250px'e kadar aciliyordu ("Is Zekasi ....... 67").
 *     Nokta olmayan bir icindekiler tablosu gibi okunuyordu.
 *  2. Marka sutunu ayni genislikte ama icerigi cok daha kisa - bosluk israfi.
 *  3. `.site-footer` ustunde AYIRICI YOK (`border-top-width: 0`); alt bilgi
 *     icerikten yalnizca zemin rengiyle ayriliyordu.
 *  4. Sayac rengi metinle AYNI (`rgb(201,194,184)`), yalnizca opacity .75 -
 *     etiketle yarisiyordu, hiyerarsi yoktu.
 *  5. Sosyal ikon kutusu 36x36 - WCAG 2.2 esigi (24px) uzerinde ama platform
 *     tavsiyesi olan 44px'in altinda; ayrica cerceve/zemin yok, glifler
 *     boslukta duruyordu.
 *  6. `.site-footer` kok yazi boyutu 19px (OKUMA katmani olcusu) - arayuz
 *     katmani olmasi gerekirken. Alt seritteki her sey bundan miras aliyordu.
 *
 * DEGISMEYENLER (onceki islerin kazanimi): koyu zemin token'lari, SITE-061
 * odak halkasi kurali, `<nav>` + gruplu `<ul>` yapisi (SITE-060), dinamik
 * kategori sayilari ve `Person.sameAs` (SITE-062), capa metinlerinde tire
 * olmamasi. Bu katman YALNIZ sunum; markup'a dokunulmadi.
 * ========================================================================= */

.site-footer {
	/* 3 · icerikten net ayrilma */
	border-top: 1px solid var(--s46-cizgi);
	/* 6 · okuma olcusu (19px) yerine arayuz olcusu */
	font-size: 14px;
	/* Ust bosluk 32 -> 48: alt bilgi kendi nefes alanini kazaniyor */
	padding: 48px 24px 32px;
}

/* 1 + 2 · Marka sutununa daha fazla pay, konu sutunu daraliyor -> sayi
 * etiketin yanina geliyor, "leader" bosluğu kapaniyor. */
@media (min-width: 36rem) {
	.footer-map {
		grid-template-columns: 1.5fr 1fr 1fr;
		column-gap: 56px;
	}
}

/* Bolum basliklarina ince bir taban cizgisi - sutunlar goz icin ayrisiyor */
.footer-nav-title {
	padding-bottom: 10px;
	border-bottom: 1px solid rgba(255, 255, 255, .1);
	margin-bottom: 14px !important;
}

/*
 * 1 · Sayac artik SAGA yaslanmiyor; etiketin hemen ardinda rozet olarak
 * duruyor. Onceki `justify-content: space-between` bilincli olarak
 * BIRAKILDI - o kural sayiyi kolonun karsi ucuna itiyordu.
 */
.footer-map-col li {
	justify-content: flex-start;
	align-items: baseline;
	gap: 8px;
}

/* 4 · Sayac artik metinle ayni degil: daha kucuk, daha soluk, cerceveli */
.footer-cat-count {
	flex: 0 0 auto;
	padding: 1px 7px;
	border: 1px solid rgba(255, 255, 255, .14);
	border-radius: 100px;
	background-color: rgba(255, 255, 255, .05);
	font-size: 11px;
	line-height: 1.7;
	opacity: 1;
	color: var(--s46-alt-metin);
}

/* 5 · Sosyal ikonlar: 40x40 + cerceve. .v5-yukari / .v5-tema ile ayni dil. */
.footer-social-link {
	width: 40px;
	height: 40px;
	border: 1px solid rgba(255, 255, 255, .16);
	border-radius: 100px;
}

.footer-social-link:hover,
.footer-social-link:focus-visible {
	border-color: rgba(255, 255, 255, .38);
	background-color: rgba(255, 255, 255, .12);
}

/* CTA baglantilari: metin degil, cerceveli hap dugme - tiklanabilirligi
 * gorunur kiliyor ve ok isaretiyle birlikte tutarli bir kontrol oluyor. */
.footer-map-brand .footer-cta {
	flex-direction: row;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 4px;
}

.footer-cta a {
	padding: 7px 14px;
	border: 1px solid rgba(255, 255, 255, .18);
	border-radius: 100px;
	font-size: 13px;
	text-decoration: none;
	transition: border-color var(--s47-gecis), background-color var(--s47-gecis);
}

.footer-cta a:hover,
.footer-cta a:focus-visible {
	border-color: rgba(255, 255, 255, .4);
	background-color: rgba(255, 255, 255, .08);
	text-decoration: none;
}

/* Marka bloguna hafif nefes */
.footer-brand-sub { font-size: 14px; }
.footer-stats { margin: 6px 0 16px; }

/* Alt serit: ust boslugu buyudu, telif satiri ayirici nokta kazandi */
.footer-bottom {
	padding-top: 24px;
	font-size: 12.5px;
}

.footer-copyright { opacity: .85; }


/* =========================================================================
 * SITE-066 — "Bu yaziyi paylas" blogu (tekil yazi)
 *
 * Dugmeler `.v5-yukari` / `.v5-tema` / footer CTA ile AYNI aile: 1px
 * kenarlik, 100px yaricap, token renkleri. Marka renkleri KULLANILMADI -
 * alti farkli marka mavisi/kirmizisi editoryal paleti dagitirdi; ikonlar
 * `currentColor` ile temaya uyuyor.
 *
 * Dokunma hedefi: dugme yuksekligi 44px (WCAG 2.2 AA esigi 24px, platform
 * tavsiyesi 44px).
 * ========================================================================= */

.v5-paylas {
	margin: 40px 0 8px;
	padding-top: 28px;
	border-top: 1px solid var(--s46-cizgi);
}

.v5-paylas-baslik {
	margin: 0 0 14px !important;
	font: 600 11.5px/1.5 var(--s46-fg) !important;
	letter-spacing: .92px;
	text-transform: uppercase;
	color: var(--s46-soluk) !important;
}

.v5-paylas-liste {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.v5-paylas-liste li { margin: 0; }

.v5-paylas-bag {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 14px;
	border: 1px solid var(--s46-cizgi);
	border-radius: 100px;
	background-color: var(--s46-zemin2);
	color: var(--s46-murekkep);
	font: 500 13px/1 var(--s46-fg);
	text-decoration: none;
	cursor: pointer;
	transition: border-color var(--s47-gecis), background-color var(--s47-gecis),
	            color var(--s47-gecis);
}

.v5-paylas-bag svg {
	display: block;
	/* 44px daire icinde 15px optik olarak kucuk kaliyordu; .v5-yukari ile ayni 17px */
	width: 17px;
	height: 17px;
	flex: 0 0 auto;
}

.v5-paylas-bag:hover,
.v5-paylas-bag:focus-visible {
	border-color: var(--s46-vurgu);
	color: var(--s46-vurgu-koyu);
	text-decoration: none;
}

.v5-paylas-bag:focus-visible {
	outline: 2px solid var(--s46-vurgu);
	outline-offset: 2px;
}

/* Kopyalandi geri bildirimi - renk TEK BASINA sinyal degil, metin de degisiyor
 * (WCAG 1.4.1: bilgi yalnizca renkle aktarilamaz). */
.v5-paylas-bag.v5-paylas-tamam {
	border-color: var(--s46-vurgu);
	background-color: var(--s46-vurgu-yumusak);
	color: var(--s46-vurgu-koyu);
}

/* Ekran okuyucu duyurusu; gorsel olarak yer kaplamasin */
.v5-paylas-durum {
	margin: 10px 0 0 !important;
	min-height: 1em;
	font-size: 12.5px;
	color: var(--s46-soluk);
}

@media (prefers-reduced-motion: reduce) {
	.v5-paylas-bag { transition: none; }
}

@media print {
	.v5-paylas { display: none; }
}

/* Ikon-only'e gecince dar ekran kurali KONUSUZ kaldi (yatay padding yok,
 * genislik sabit 44px) - olu kod birakilmadi, silindi. */

/* -------------------------------------------------------------------------
 * SITE-066 · Ana tema ezmelerinin geri alinmasi
 *
 * OLCULDU (ilk teslimde): paylas dugmeleri icerik akisinin ICINDE oldugu icin
 * ana temanin iki kurali kazaniyordu:
 *   - baglantilar: `text-decoration: underline` + `color: rgb(0,82,189)`
 *   - `<button>`: `.post-content .button` kalibi -> Georgia, 700, UPPERCASE,
 *     `padding: 5px 20px` (olculen kutu 192x47, digerlerinden farkli)
 * Sonuc: alti cizili mavi metinler ve tek basina buyuyen bir "KOPYALA" hapi.
 *
 * `!important` BILINCLI: ana temanin kurallari ayni ozgullukte ve kaynak
 * sirasinda oncede; bu projede ayni sebeple `.v5-tema` de ayni yolu kullaniyor.
 *
 * WCAG 1.4.1 NOTU: alt cizgiyi kaldirmak burada guvenli - bunlar govde metni
 * icindeki baglantilar DEGIL, cerceveli/hap bicimli KONTROLLER. Renk tek
 * ayirt edici degil: kenarlik + bicim + ikon zaten tasiyor.
 * ------------------------------------------------------------------------- */
.v5-paylas .v5-paylas-bag,
.v5-paylas a.v5-paylas-bag,
.v5-paylas button.v5-paylas-bag {
	/*
	 * OLCULDU: ana temanin `.post-content .button` kurali
	 * `display: inline-block` veriyor ve taban kuralimizin `inline-flex`ini
	 * eziyordu - <button> hapinda ikon ile etiket dikeyde hizalanmiyor,
	 * metin asagi kayiyordu. Yerlesim ozellikleri de ezilmek zorunda.
	 */
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 8px !important;
	font-family: var(--s46-fg) !important;
	font-size: 13px !important;
	font-weight: 500 !important;
	line-height: 1 !important;
	letter-spacing: normal !important;
	text-transform: none !important;
	text-decoration: none !important;
	color: var(--s46-murekkep) !important;
	background-color: var(--s46-zemin2) !important;
	border: 1px solid var(--s46-cizgi) !important;
	border-radius: 100px !important;
	/*
	 * SITE-066 2. tur: platform adlari kaldirildi, dugmeler IKON-ONLY.
	 * Hap yerine 44x44 daire - .v5-yukari ve .footer-social-link ile ayni
	 * dil. Genislik SABIT: yatay padding ile buyuyen bir kutu, etiketi
	 * olmayan dugmede yamuk duruyordu.
	 */
	width: 44px !important;
	padding: 0 !important;
	min-height: 44px !important;
	text-align: center;
	/*
	 * SITE-055'te olculen tuzak burada da gecerli: <a> content-box kalirsa
	 * min-height 44 + 2px kenarlik = 46px olur, <button> ise tarayici
	 * varsayilaniyla border-box olup 44 kalir - iki dugme tipi 2px kayardi.
	 */
	box-sizing: border-box !important;
}

.v5-paylas .v5-paylas-bag:hover,
.v5-paylas .v5-paylas-bag:focus-visible {
	border-color: var(--s46-vurgu) !important;
	color: var(--s46-vurgu-koyu) !important;
	text-decoration: none !important;
}

.v5-paylas .v5-paylas-bag.v5-paylas-tamam {
	border-color: var(--s46-vurgu) !important;
	background-color: var(--s46-vurgu-yumusak) !important;
	color: var(--s46-vurgu-koyu) !important;
}

/* SITE-065: telif satirindaki gorsel ayirici */
.footer-ayirici { opacity: .45; }

/* SITE-066 2. tur: gorunur platform adlari kaldirildi. Bir sekilde geri
 * gelirse (or. onbellekli ciktı) daireyi bozmasin diye gorsel olarak gizli. */
.v5-paylas .v5-paylas-ad {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* =========================================================================
 * SITE-067 — Etiket satirindaki ikon bozuk cikiyordu (KENDI REGRESYONUMUZ)
 *
 * BELIRTI: tekil yazi altindaki `<p class="tags icon-tag">` satirinin
 * solundaki ikon "tofu" kutusu olarak ciziliyordu.
 *
 * KOK NEDEN (olculdu): ikon bir font glifi - `.icon-tag:before` icerigi
 * `"\e905"`, yani Ozel Kullanim Alani kod noktasi ve ana temanin `seo` ikon
 * fontunu gerektiriyor. Font SAYFADA YUKLU (`document.fonts.check('16px
 * "seo"')` -> true), glif de dogru (`seo.svg` icinde `glyph-name="tag"`).
 * Sorun font-family'de: bu blok (bolum 9, satir ~441)
 *
 *     .post-content p, .post-content li { font-family: var(--s46-fs); }
 *
 * `<p class="tags">` de `.post-content` icinde bir `<p>` oldugu icin okuma
 * fontunu (Georgia) aliyor ve `::before` bunu MIRAS ALIYOR. Olculen:
 * `::before` font-family = "Georgia, Charter, ..." - `seo` degil. Georgia'da
 * U+E905 karsiligi olmadigi icin tarayici tofu ciziyor.
 *
 * Yani bu ana temanin kusuru DEGIL, SITE-046/047 tipografi katmaninin yan
 * etkisi. Kapsam DAR tutuldu: yalnizca sozde-ogenin font ailesi geri
 * veriliyor; `.tags` metninin kendisi okuma fontunda kalmaya devam ediyor.
 * ========================================================================= */
.post-content p.tags.icon-tag::before,
p.tags.icon-tag::before {
	/*
	 * Ikon artik tema ikon fontuna BAGLI DEGIL. Ilk duzeltme font-family'yi
	 * geri veriyordu ve calisiyordu; ama ikon yine `seo` fontuna bagimli
	 * kaliyordu - bizim tipografi katmanimizin onu bir kez kirdigi bir
	 * bagimlilik. Satir ici SVG maskesi o zinciri tamamen kesiyor.
	 *
	 * `content` BOSALTILIYOR: ana temanin "\e905" glifi artik basilmamali,
	 * yoksa maskenin yaninda tofu kutusu da cizilirdi.
	 */
	content: "" !important;
	display: inline-block;
	width: 14px;
	height: 14px;
	margin-right: 8px;
	vertical-align: -2px;
	/* Gorunur renk buradan; maske yalnizca alfa tasir */
	background-color: var(--s46-soluk);
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20.59%2013.41l-7.17%207.17a2%202%200%200%201-2.83%200L2%2012V2h10l8.59%208.59a2%202%200%200%201%200%202.82z%22%2F%3E%3Cline%20x1%3D%227%22%20y1%3D%227%22%20x2%3D%227.01%22%20y2%3D%227%22%2F%3E%3C%2Fsvg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M20.59%2013.41l-7.17%207.17a2%202%200%200%201-2.83%200L2%2012V2h10l8.59%208.59a2%202%200%200%201%200%202.82z%22%2F%3E%3Cline%20x1%3D%227%22%20y1%3D%227%22%20x2%3D%227.01%22%20y2%3D%227%22%2F%3E%3C%2Fsvg%3E");
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
}

/* -------------------------------------------------------------------------
 * SITE-066 3. tur: KOPYALA dugmesi etiketli kaliyor (kullanici karari).
 *
 * Platform dugmeleri 44x44 daire; kopyala ise metinli hap. Gerekce: marka
 * ikonlari taninmis isaretler, "kopyala" ise bir EYLEM - ikonu evrensel
 * degil, metinsiz kesfedilebilirligi dusuk.
 *
 * Erisilebilir isim ile gorunur metin AYNI dizeyi tasiyor (WCAG 2.5.3
 * "Label in Name"): ikisi de "Baglantiyi kopyala", kopyalama sonrasi ikisi de
 * "Baglanti kopyalandi" oluyor.
 * ------------------------------------------------------------------------- */
/*
 * OZGULLUK ARITMETIGI (ilk denemede kaybetti, olculdu):
 * genel kuraldaki `.v5-paylas button.v5-paylas-bag` = 0-2-1.
 * `.v5-paylas .v5-paylas-kopyala` = 0-2-0 -> KAYBEDER, dugme 44px kaldi ve
 * 105px'lik etiket disari tasti. Sinif + eleman ile 0-3-1'e cikariliyor.
 */
.v5-paylas button.v5-paylas-bag.v5-paylas-kopyala {
	width: auto !important;
	padding: 0 16px !important;
	gap: 8px !important;
}

/* Genel gizleme kurali (ikon-only dugmeler icin) burada geri aliniyor */
.v5-paylas button.v5-paylas-kopyala .v5-paylas-ad {
	position: static !important;
	width: auto;
	height: auto;
	overflow: visible;
	clip-path: none;
	white-space: nowrap;
}

/* =========================================================================
 * SITE-069 — Kaynakca bolumu: referans aparati olcusune cekildi
 *
 * OLCULEN SORUN: kaynakca listeleri yazi govdesiyle AYNI olcude basiliyordu -
 * 19px Georgia, baslik 26px. Kaynakca okuma metni degil, referans aparatidir;
 * govde olcusunde olunca sayfanin sonunda gereksiz agirlik yapiyordu.
 *
 * Bolum `functions.php`'deki SITE-069 filtresi tarafindan isaretleniyor
 * (`.v5-kaynakca-baslik` + `.v5-kaynakca`); burada yalnizca sunum var.
 * ========================================================================= */
.post-content h2.v5-kaynakca-baslik,
.post-content h3.v5-kaynakca-baslik,
.post-content h4.v5-kaynakca-baslik {
	/* 26px -> 17px: bolum basligi olmaya devam ediyor ama govde basliklariyla
	   ayni agirlikta degil. Arayuz katmani fontu, cunku bu bir aparat. */
	font-size: 17px;
	font-family: var(--s46-fg);
	letter-spacing: .2px;
	margin-top: 2.4em;
	padding-top: 1.2em;
	border-top: 1px solid var(--s46-cizgi);
	color: var(--s46-soluk);
}

.post-content .v5-kaynakca,
.post-content .v5-kaynakca p,
.post-content .v5-kaynakca li {
	/* 19px -> 15px */
	font-size: 15px;
	line-height: 1.65;
	color: var(--s46-soluk);
}

/* Uzun URL'ler dar ekranda tasmasin - kaynakcada sik gorulur */
.post-content .v5-kaynakca a {
	overflow-wrap: anywhere;
}

.post-content .v5-kaynakca ol,
.post-content .v5-kaynakca ul {
	margin-top: .6em;
}
