/* =============================================================
   bebeklopedi · site/public/tema/css/main.css
   Kaynak    : Faz-1 demosunun assets/css/main.css dosyası BİREBİR
               kopyalandı; yalnız başına aşağıdaki "0. YEREL FONTLAR"
               bölümü eklendi. Demo gövdesinde tek karakter değişmedi.
   Neden     : Faz-1 HTML'leri fontları Google Fonts CDN'inden
               çekiyordu. M3 sözleşmesi bölüm 2 gereği sitede HİÇBİR
               harici istek kalmayacak — bu yüzden woff2 dosyaları
               tema/font/ altında yerel durur ve @font-face burada
               tanımlanır. Partial'lara Google Fonts <link> satırı
               TAŞINMAZ; bu bölüm onların yerini alır.
   Milestone : M3 (tema varlıklarının taşınması)
   ============================================================= */

/* ---------- 0. YEREL FONTLAR (CDN YOK) ---------------------- */
/* Bloklar panel/public/varliklar/css/matbaa.css 0. bölümünden kopyalandı;
   göreli yapı aynı olduğu için yollar da aynı: tema/css/main.css → ../font/.
   Yalnız latin + latin-ext alt kümeleri var — Türkçe için yeterlidir
   (ğ Ğ ş Ş İ latin-ext'te, ı U+0131 latin'de). Kiril/Yunan/Vietnamca
   alt kümeleri bilinçli olarak alınmadı: ~250 KB tasarruf.
   font-display:swap — font inerken metin görünmez kalmaz (CLS/FOIT kalkanı).

   YP11 — BURADA YALNIZ IBM PLEX MONO VARDIR.
   Başlık ve gövde ailelerinin @font-face blokları tema/css/font-{a,b,c}.css
   dosyalarına taşındı; düzen (site.php) yalnız SEÇİLİ setin dosyasını
   <link> ile basar. Buraya bir başlık/gövde @font-face'i geri eklersen
   o aile her sette ayrıştırılır ve "yalnız seçili set yüklenir" güvencesi
   sessizce bozulur. Mono ise set'ten bağımsızdır: künye, fiş numarası ve
   etiketler hangi set seçilirse seçilsin IBM Plex Mono ile dizilir. */

@font-face{
  font-family:"IBM Plex Mono";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url(../font/ibm-plex-mono-400-latin-ext.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,
    U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,
    U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"IBM Plex Mono";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url(../font/ibm-plex-mono-400-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
    U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,
    U+FEFF,U+FFFD;
}
@font-face{
  font-family:"IBM Plex Mono";
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url(../font/ibm-plex-mono-600-latin-ext.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,
    U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,
    U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"IBM Plex Mono";
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url(../font/ibm-plex-mono-600-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,
    U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,
    U+FEFF,U+FFFD;
}

/* ---------- Faz-1 main.css (BİREBİR KOPYA) ------------------ */
/* =============================================================
   bebeklopedi.com · assets/css/main.css
   Amaç      : Tüm demo sayfaların tek ortak tasarım sistemi.
   Konsept   : "Kağıt Ansiklopedi" — çocuk kitabı estetiğinde,
               kartoteks fişleri ve kağıt dokusuyla kurulmuş
               modern bir başvuru kaynağı.
   Tema      : <body data-tema="genel|isimler|isimler-kiz|
               isimler-erkek|hesaplama|rehber|gebelik|gelisim|
               beslenme"> ile palet + motif + vurgu değişir.
   Not       : Bileşen sınıf adları Türkçe/BEM-vari. Tekrar eden
               bloklar HTML tarafında <!-- component: x --> ile
               sarılmıştır (PHP include'a hazır).
   İçindekiler
     1. Çekirdek değişkenler
     2. Bölüm temaları
     3. Sıfırlama + tipografi
     4. Düzen yardımcıları
     5. Başlık (header) + mobil panel + arama
     6. Kırıntı (breadcrumb)
     7. Lopedi Fişi
     8. Düğmeler, etiketler, rozetler
     9. Kartlar
    10. İsim bileşenleri + filtre
    11. Tablo, SSS, kutular (uyarı/kaynak/yazar/açıklama)
    12. Reklam slotları
    13. Sahne (hero) blokları
    14. Bölüme özel bileşenler (rota şeridi, hesaplayıcı, sihirbaz…)
    15. Rota bloğu + alt bilgi (footer)
    16. Erişilebilirlik + hareket tercihi + baskı
    17. Küçük ekran ince ayarları                         (M3 eki)
    18a. Tıbbi uyarı · E-E-A-T künyesi · kaynak kutusu     (M4B eki)
    18b. Çerez onay şeridi                                (M4B eki)
   ============================================================= */

/* ---------- 1. ÇEKİRDEK DEĞİŞKENLER ------------------------- */
:root{
  color-scheme:light;

  /* marka çekirdeği */
  --kagit:#FAF5EC;
  --kagit-2:#FFFDF7;
  --murekkep:#2B2620;
  --murekkep-2:#6B6255;

  /* bölüm renkleri — menü noktaları, kapı kartları, mobil şerit */
  --r-isimler:#3D4A8C;
  --r-hesaplama:#0E8F6C;
  --r-rehber:#B8791A;
  --r-gebelik:#7B5EA7;
  --r-gelisim:#4C8C2B;
  --r-beslenme:#CE6B24;

  /* ölçüler */
  --en:1180px;
  --en-dar:760px;
  --pad-yan:clamp(1.1rem,.6rem + 1.6vw,2rem);
  --dikey:clamp(3rem,2rem + 3.6vw,5.5rem);
  --aralik:clamp(1rem,.75rem + .9vw,1.6rem);

  /* köşeler & gölgeler */
  --kose-s:10px;
  --kose:16px;
  --kose-l:26px;
  --golge-1:0 1px 2px rgba(43,38,32,.06),0 8px 20px -14px rgba(43,38,32,.55);
  --golge-2:0 2px 4px rgba(43,38,32,.05),0 24px 46px -28px rgba(43,38,32,.6);

  /* hareket */
  --gecis:.3s cubic-bezier(.22,.61,.36,1);
  --gecis-y:.55s cubic-bezier(.22,.61,.36,1);

  /* tipografi — AİLELER (YP11)
     Değerler burada SET A'dır (varsayılan). Seçili set html[data-font]
     üzerinden bölüm 26'da ezilir. Yedek yığın (Georgia / system-ui) hem
     font-{set}.css hiç yüklenemezse hem de indirme sürerken devrededir.

     "* Yedek" adları webfonttan HEMEN SONRA gelir: bunlar font-{set}.css
     içinde tanımlı, metrikleri webfonta eşitlenmiş `local()` yüzleridir
     (§ 34). Sıra bağlayıcıdır — Georgia'dan sonraya konursa hiç kullanılmaz
     ve takas kayması geri gelir. */
  --f-baslik:"Fraunces","Fraunces Yedek",Georgia,serif;
  --f-govde:"Nunito Sans","Nunito Sans Yedek","Segoe UI",system-ui,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;

  /* ÖLÇÜ BİRİMİ — `ch` YERİNE (§ 34)
     1ch = fontun "0" glifinin ilerleme genişliğidir, yani FONTA BAĞLIDIR.
     Takas sırasında satır uzunluğu sınırı da değişir; bu, hiçbir
     size-adjust ile kapatılamaz (gerekçe § 34). Değerler seçili setin
     webfontundan ölçülmüştür, birim `em`'dir → yalnız punto boyutunu
     izler, font metriğini izlemez. */
  --ch-govde:.600em;    /* Nunito Sans "0" @400 */
  --ch-baslik:.6385em;  /* Fraunces    "0" @700, opsz 96–144 ortalaması */

  /* tipografi ölçeği
     YP11 — MOBİLDE BAŞLIK KÜÇÜLTÜLDÜ. Ölçüldü (375 px, gerçek tarayıcı):
     kahraman başlık 38,4px çiziliyor ve 321px'lik sütunda DÖRT SATIRA
     kırılıyordu; başlık tek başına ekranın 187px'ini yiyordu.

     DİKKAT — TABANI DÜŞÜRMEK İŞE YARAMAZ, ÖLÇÜLDÜ.
     Eski değer clamp(2.4rem, 1.55rem + 3.5vw, 4.3rem) idi. 375px'te
     akışkan terim 1.55rem + 3.5vw = 37,79px eder; taban 38,4px ondan
     BÜYÜK olduğu için asıl çizilen değer tabandı. Tabanı 2.05rem'e
     indirince akışkan terim devreye girdi ve boyut 38,4 → 37,78px oldu:
     0,6px'lik bir değişim, hiçbir şey. Telefonda boyutu belirleyen şey
     clamp'in ALT UCU değil AKIŞKAN TERİMİDİR.

     Bu yüzden akışkan terim baştan çözüldü — iki noktadan doğru geçirildi:
       375px'te 32px  ·  1440px'te 68,8px (= 4.3rem, eski üst sınır)
       eğim  b = (68,8 − 32) / (14,4 − 3,75) = 3,46 vw
       kesim a = 32 − 3,46×3,75 = 19,04px = 1.19rem
     ÜST SINIR AYNEN KORUNDU: masaüstü görünümü bire bir aynıdır, değişen
     yalnız küçük ekrandaki eğridir. Aynı yöntem --fs-h1 için de uygulandı
     (375px'te 26px, 1440px'te 48,8px = 3.05rem).
     Tabanlar artık gerçek bir zemin görevi görür: 370px altındaki dar
     ekranlarda devreye girer. */
  --fs-dev:clamp(2rem,1.19rem + 3.46vw,4.3rem);
  --fs-h1:clamp(1.6rem,1.123rem + 2.14vw,3.05rem);
  --fs-h2:clamp(1.42rem,1.18rem + 1.05vw,2rem);
  --fs-h3:clamp(1.14rem,1.05rem + .42vw,1.38rem);
  --fs-h4:1.04rem;
  /* YP10 — MOBİL OKUNURLUK. Değerler ölçülerek yükseltildi (375px, gerçek
     tarayıcı): gövde 16,28px idi, yardımcı metinler 14px ve 12,4px'ti. İkinci
     ikisi yalnız rozet/etiket değil DÜZYAZI da taşıyor (SSS cevapları, fiş
     hızlı bilgileri, kart açıklamaları) ve Türkçe diakritik yoğunluğuyla o
     boyutlarda gerçekten yoruyordu. Taban 17px'e çekildi; küçük jetonlar
     15px ve 13px'e. Üst sınırlar korundu — masaüstünde satır uzunluğu
     bozulmasın. */
  --fs-gov:clamp(1.0625rem,1.02rem + .16vw,1.09rem);
  --fs-kk:.9375rem;
  --fs-mini:.8125rem;

  /* dokular (data-URI SVG — hafif tutuldu) */
  --doku-kagit:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='k'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23k)' opacity='.06'/%3E%3C/svg%3E");
  --doku-yildiz:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cg fill='%23F6C453'%3E%3Ccircle cx='26' cy='40' r='1.9' opacity='.55'/%3E%3Ccircle cx='102' cy='18' r='1.1' opacity='.38'/%3E%3Ccircle cx='178' cy='56' r='1.7' opacity='.5'/%3E%3Ccircle cx='62' cy='112' r='1.2' opacity='.34'/%3E%3Ccircle cx='150' cy='134' r='2.1' opacity='.5'/%3E%3Ccircle cx='214' cy='180' r='1.3' opacity='.4'/%3E%3Ccircle cx='32' cy='196' r='1.7' opacity='.45'/%3E%3Ccircle cx='118' cy='212' r='1' opacity='.3'/%3E%3Ccircle cx='196' cy='96' r='1.1' opacity='.3'/%3E%3C/g%3E%3C/svg%3E");
  --doku-takimyildiz:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cg stroke='%231D3A6E' stroke-width='.8' opacity='.22' fill='none'%3E%3Cpath d='M30 60 L96 34 L152 78 L214 52'/%3E%3Cpath d='M60 190 L118 150 L186 176 L232 130'/%3E%3C/g%3E%3Cg fill='%2312776A' opacity='.4'%3E%3Ccircle cx='30' cy='60' r='2.4'/%3E%3Ccircle cx='96' cy='34' r='1.8'/%3E%3Ccircle cx='152' cy='78' r='2.2'/%3E%3Ccircle cx='214' cy='52' r='1.6'/%3E%3Ccircle cx='60' cy='190' r='1.8'/%3E%3Ccircle cx='118' cy='150' r='2.4'/%3E%3Ccircle cx='186' cy='176' r='1.7'/%3E%3Ccircle cx='232' cy='130' r='2'/%3E%3C/g%3E%3C/svg%3E");
  --doku-doodle:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='230' height='230'%3E%3Cg fill='none' stroke='%23CE6B24' stroke-width='1.4' opacity='.2'%3E%3Ccircle cx='42' cy='46' r='13'/%3E%3Cpath d='M42 33v-7M35 168c8-14 22-14 30 0-4 16-26 16-30 0z'/%3E%3Cellipse cx='168' cy='58' rx='9' ry='14' transform='rotate(18 168 58)'/%3E%3Cpath d='M168 44v-8M120 120c10-8 20-2 18 8-2 10-16 12-22 4'/%3E%3Ccircle cx='196' cy='166' r='11'/%3E%3Cpath d='M196 155v-6'/%3E%3C/g%3E%3C/svg%3E");
  --doku-ay:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='250' height='250'%3E%3Cg fill='none' stroke='%237B5EA7' stroke-width='1.2' opacity='.2'%3E%3Ccircle cx='48' cy='52' r='16'/%3E%3Cpath d='M140 36a16 16 0 1 0 0 32 13 13 0 0 1 0-32z' fill='%237B5EA7' stroke='none'/%3E%3Ccircle cx='214' cy='120' r='16'/%3E%3Cpath d='M78 176a16 16 0 1 0 0 32 13 13 0 0 1 0-32z' fill='%237B5EA7' stroke='none'/%3E%3Ccircle cx='172' cy='202' r='11'/%3E%3C/g%3E%3C/svg%3E");
}

/* ---------- 2. BÖLÜM TEMALARI ------------------------------- */
/* Her tema aynı jetonları doldurur:
   --zemin (sayfa), --zemin-2 (kart), --zemin-3 (yumuşak dolgu),
   --metin, --metin-2, --vurgu (dolgu), --vurgu-metin (AA metin),
   --vurgu-yumusak (arka plan tonu), --cizgi, --motif             */

body[data-tema]{
  --zemin:var(--kagit);
  --zemin-2:var(--kagit-2);
  --zemin-3:#F3EBDA;
  --metin:var(--murekkep);
  --metin-2:var(--murekkep-2);
  --vurgu:#2E9E7E;
  --vurgu-metin:#1F7A60;
  --vurgu-yumusak:#E3F2EC;
  --vurgu-uzeri:#FFFFFF;
  --cizgi:#E4D9C3;
  --motif:var(--doku-kagit);
  --motif-boyut:160px 160px;
}

body[data-tema="isimler"]{
  --zemin:#151C38;
  --zemin-2:#1E2750;
  --zemin-3:#26315F;
  --metin:#F4EFE2;
  --metin-2:#B7BFDB;
  --vurgu:#F6C453;
  --vurgu-metin:#FBD37A;
  --vurgu-yumusak:#26315F;
  --vurgu-uzeri:#1B2140;
  --cizgi:#32407A;
  --motif:var(--doku-yildiz),var(--doku-kagit);
  --motif-boyut:240px 240px,160px 160px;
  color-scheme:dark;
}

body[data-tema="isimler-kiz"]{
  --zemin:#FDF1EC;
  --zemin-2:#FFFFFF;
  --zemin-3:#FBE4E6;
  --metin:#43213A;
  --metin-2:#87627A;
  --vurgu:#E0748F;
  --vurgu-metin:#A8355F;
  --vurgu-yumusak:#FBE7EC;
  --vurgu-uzeri:#FFFFFF;
  --cizgi:#F0D5D6;
  --motif:
    radial-gradient(38rem 26rem at 82% -6%,rgba(242,160,153,.34),transparent 62%),
    radial-gradient(32rem 24rem at 4% 22%,rgba(174,138,214,.26),transparent 60%),
    var(--doku-kagit);
  --motif-boyut:auto,auto,160px 160px;
}

body[data-tema="isimler-erkek"]{
  --zemin:#ECF2F1;
  --zemin-2:#FFFFFF;
  --zemin-3:#DCE9E7;
  --metin:#122C36;
  --metin-2:#4C6B71;
  --vurgu:#12776A;
  --vurgu-metin:#0E5F55;
  --vurgu-yumusak:#DEEDEA;
  --vurgu-uzeri:#FFFFFF;
  --cizgi:#CFDEDC;
  --motif:
    radial-gradient(36rem 26rem at 88% -8%,rgba(29,58,110,.2),transparent 62%),
    var(--doku-takimyildiz),var(--doku-kagit);
  --motif-boyut:auto,260px 260px,160px 160px;
}

body[data-tema="hesaplama"]{
  --zemin:#EFF7F3;
  --zemin-2:#FFFFFF;
  --zemin-3:#DFF0E8;
  --metin:#16332B;
  --metin-2:#4B6D63;
  --vurgu:#0E9E77;
  --vurgu-metin:#0B7D5E;
  --vurgu-yumusak:#DBF1E8;
  --vurgu-uzeri:#FFFFFF;
  --cizgi:#CCE4DA;
  --motif:
    linear-gradient(rgba(14,158,119,.09) 1px,transparent 1px),
    linear-gradient(90deg,rgba(14,158,119,.09) 1px,transparent 1px),
    var(--doku-kagit);
  --motif-boyut:28px 28px,28px 28px,160px 160px;
}

body[data-tema="rehber"]{
  --zemin:#F6EDDD;
  --zemin-2:#FFFCF4;
  --zemin-3:#EEDFC5;
  --metin:#392C18;
  --metin-2:#7A6544;
  --vurgu:#E0A33E;
  --vurgu-metin:#93590F;
  --vurgu-yumusak:#F6E7C8;
  --vurgu-uzeri:#3A2A10;
  --cizgi:#E0CFAC;
  --motif:
    repeating-linear-gradient(135deg,rgba(147,89,15,.045) 0 2px,transparent 2px 11px),
    var(--doku-kagit);
  --motif-boyut:auto,160px 160px;
}

body[data-tema="gebelik"]{
  --zemin:#F5F1FA;
  --zemin-2:#FFFFFF;
  --zemin-3:#EAE1F5;
  --metin:#2F2545;
  --metin-2:#6C5F86;
  --vurgu:#7B5EA7;
  --vurgu-metin:#644389;
  --vurgu-yumusak:#EDE5F7;
  --vurgu-uzeri:#FFFFFF;
  --cizgi:#DCD2EC;
  --motif:
    radial-gradient(34rem 24rem at 92% -4%,rgba(201,139,165,.28),transparent 62%),
    var(--doku-ay),var(--doku-kagit);
  --motif-boyut:auto,250px 250px,160px 160px;
}

body[data-tema="gelisim"]{
  --zemin:#F1F7EB;
  --zemin-2:#FFFFFF;
  --zemin-3:#E1EFD5;
  --metin:#22381B;
  --metin-2:#5A7050;
  --vurgu:#4C8C2B;
  --vurgu-metin:#3B7020;
  --vurgu-yumusak:#E3F1D8;
  --vurgu-uzeri:#FFFFFF;
  --cizgi:#D3E4C4;
  --motif:
    repeating-linear-gradient(180deg,rgba(76,140,43,.22) 0 1px,transparent 1px 16px),
    var(--doku-kagit);
  --motif-boyut:14px 100%,160px 160px;
  --motif-tekrar:no-repeat,repeat;
  --motif-konum:left top,left top;
}

body[data-tema="beslenme"]{
  --zemin:#FEF3E5;
  --zemin-2:#FFFDF8;
  --zemin-3:#FBE3C7;
  --metin:#3E2818;
  --metin-2:#7E6045;
  --vurgu:#E08A3C;
  --vurgu-metin:#B45A16;
  --vurgu-yumusak:#FBE6CE;
  --vurgu-uzeri:#3A2410;
  --cizgi:#EFD8B9;
  --motif:var(--doku-doodle),var(--doku-kagit);
  --motif-boyut:230px 230px,160px 160px;
}

/* ---------- 3. SIFIRLAMA + TİPOGRAFİ ------------------------ */
*,*::before,*::after{box-sizing:border-box}
*{margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:88px}
/* Sabit konumlu katmanlar (panel/arama) kaydırma çubuğu genişliğini de kapsar;
   clip ile yatay taşma engellenir, sticky başlık bozulmaz. */
html{overflow-x:clip}

body{
  font-family:var(--f-govde);
  font-size:var(--fs-gov);
  line-height:1.68;
  color:var(--metin);
  background-color:var(--zemin);
  background-image:var(--motif);
  background-size:var(--motif-boyut);
  background-repeat:var(--motif-tekrar,repeat);
  background-position:var(--motif-konum,left top);
  background-attachment:fixed;
  overflow-x:hidden;
  overflow-x:clip;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

h1,h2,h3,h4,.baslik{
  font-family:var(--f-baslik);
  font-variation-settings:"opsz" 96,"SOFT" 46,"WONK" 1;
  font-weight:700;
  line-height:1.12;
  letter-spacing:-.012em;
  text-wrap:balance;
}
h1{font-size:var(--fs-h1)}
h2{font-size:var(--fs-h2)}
h3{font-size:var(--fs-h3)}
h4{font-size:var(--fs-h4);font-variation-settings:"opsz" 30,"SOFT" 30,"WONK" 0}

p{text-wrap:pretty}
a{color:var(--vurgu-metin);text-decoration-color:color-mix(in srgb,var(--vurgu-metin) 40%,transparent);text-underline-offset:.18em;transition:color var(--gecis)}
a:hover{color:var(--metin)}
img,svg{max-width:100%;display:block}
ul,ol{padding-left:1.15rem}
li{margin-block:.28rem}
strong,b{font-weight:800}
small{font-size:var(--fs-kk)}
hr{border:0;border-top:1px dashed var(--cizgi);margin:2rem 0}
::selection{background:var(--vurgu);color:var(--vurgu-uzeri)}

.mono{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.1em;text-transform:uppercase}

/* okunabilir metin gövdesi */
.metin > p,.metin > ul,.metin > ol,.metin > blockquote{margin-block:1rem}
.metin > h2{margin:2.4rem 0 .7rem}
.metin > h3{margin:1.8rem 0 .5rem}
.metin > h2:first-child,.metin > h3:first-child{margin-top:0}
.metin li{margin-block:.35rem}

.giris{
  font-size:clamp(1.06rem,1rem + .4vw,1.22rem);
  line-height:1.6;
  color:var(--metin);
}

/* ---------- 4. DÜZEN YARDIMCILARI --------------------------- */
.kap{width:100%;max-width:var(--en);margin-inline:auto;padding-inline:var(--pad-yan)}
.kap--dar{max-width:var(--en-dar)}
.bolum{padding-block:var(--dikey);position:relative}
.bolum--ince{padding-block:calc(var(--dikey)*.55)}

.bolum-basi{margin-bottom:clamp(1.4rem,1rem + 1.4vw,2.4rem);max-width:calc(56 * var(--ch-govde))}
.bolum-basi__ust{
  font-family:var(--f-mono);font-size:var(--fs-mini);
  letter-spacing:.16em;text-transform:uppercase;color:var(--vurgu-metin);
  display:flex;align-items:center;gap:.55rem;margin-bottom:.55rem;
}
.bolum-basi__ust::before{content:"";width:1.6rem;height:2px;background:var(--vurgu);border-radius:2px}
.bolum-basi p{color:var(--metin-2);margin-top:.6rem}

.izgara{display:grid;gap:var(--aralik)}
.izgara--2{grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr))}
.izgara--3{grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr))}
.izgara--4{grid-template-columns:repeat(auto-fit,minmax(min(100%,12.5rem),1fr))}

/* Izgara/esnek öğeler varsayılan olarak min-width:auto alır; içlerindeki
   geniş tablolar bu yüzden kabı zorlar. Sıfırlamak taşmayı engeller. */
.izgara > *,.duzen > *,.ikili > *,.arti-eksi > *,.gez > *,.adim > *{min-width:0}
.tablo-sar{max-width:100%}

.duzen{display:grid;gap:clamp(1.6rem,1rem + 2vw,3rem);align-items:start}
@media (min-width:1024px){
  .duzen--yan{grid-template-columns:minmax(0,1fr) 300px}
}
.yan{position:sticky;top:92px;display:grid;gap:1.2rem}

.merkez{text-align:center;margin-inline:auto}
.ic-satir{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center}

/* kaydırılabilir şerit ortak davranışı */
.serit{
  display:flex;gap:.75rem;overflow-x:auto;padding-block:.4rem 1.1rem;
  scroll-snap-type:x proximity;scrollbar-width:thin;
  scrollbar-color:var(--vurgu) transparent;
  -webkit-overflow-scrolling:touch;
}
.serit > *{scroll-snap-align:start;flex:0 0 auto}
.serit::-webkit-scrollbar{height:7px}
.serit::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--vurgu) 65%,transparent);border-radius:99px}
.serit::-webkit-scrollbar-track{background:color-mix(in srgb,var(--cizgi) 60%,transparent);border-radius:99px}

/* scroll-reveal (JS varsa gizle, yoksa görünür kalır) */
.js [data-ac]{opacity:0;transform:translateY(16px)}
.js [data-ac].gorundu{opacity:1;transform:none;transition:opacity var(--gecis-y),transform var(--gecis-y)}

/* ---------- 5. BAŞLIK + MOBİL PANEL + ARAMA ----------------- */
.atla{
  position:absolute;left:.6rem;top:-4rem;z-index:200;
  background:var(--metin);color:var(--zemin);padding:.6rem 1rem;border-radius:0 0 var(--kose-s) var(--kose-s);
  transition:top var(--gecis);
}
.atla:focus{top:0}

.ust{
  position:sticky;top:0;z-index:90;
  background:color-mix(in srgb,var(--zemin) 88%,transparent);
  backdrop-filter:blur(10px) saturate(1.3);
  -webkit-backdrop-filter:blur(10px) saturate(1.3);
  border-bottom:1px solid var(--cizgi);
}
.ust__ic{display:flex;align-items:center;gap:1rem;min-height:64px;padding-block:.55rem}

.marka{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--metin);flex:0 0 auto}
.marka__im{width:36px;height:36px;flex:0 0 auto}
.marka__ad{
  font-family:var(--f-baslik);font-variation-settings:"opsz" 30,"SOFT" 60,"WONK" 1;
  font-weight:700;font-size:1.3rem;letter-spacing:-.02em;line-height:1;
}
.marka__ad em{font-style:normal;color:var(--vurgu-metin)}
.marka__alt{display:block;font-family:var(--f-mono);font-size:.56rem;letter-spacing:.22em;text-transform:uppercase;color:var(--metin-2);margin-top:.2rem}

/* Menü 7 öğeli (Ana Sayfa + 6 bölüm); masaüstü eşiği buna göre 1100px. */
.gezinti{margin-left:auto;display:none}
@media (min-width:1100px){.gezinti{display:block}}
.gezinti__ol{display:flex;gap:.1rem;list-style:none;padding:0;margin:0}
.gezinti__lk{
  display:inline-flex;align-items:center;gap:.4rem;
  padding:.5rem .6rem;border-radius:99px;text-decoration:none;
  color:var(--metin);font-weight:600;font-size:.9rem;position:relative;white-space:nowrap;
  transition:background var(--gecis),color var(--gecis);
}
.gezinti__nk{width:8px;height:8px;border-radius:50%;background:var(--nk,var(--vurgu));flex:0 0 auto;transition:transform var(--gecis)}
.gezinti__lk:hover{background:color-mix(in srgb,var(--nk,var(--vurgu)) 14%,transparent);color:var(--metin)}
.gezinti__lk:hover .gezinti__nk{transform:scale(1.5)}
.gezinti__lk[aria-current="page"]{background:color-mix(in srgb,var(--nk,var(--vurgu)) 18%,transparent)}
.gezinti__lk[aria-current="page"]::after{
  content:"";position:absolute;left:.7rem;right:.7rem;bottom:.22rem;height:2px;
  background:var(--nk,var(--vurgu));border-radius:2px;
}

.ust__eylem{margin-left:auto;display:flex;gap:.4rem;align-items:center}
@media (min-width:1100px){.ust__eylem{margin-left:.4rem}}

.ikon-dugme{
  width:42px;height:42px;display:inline-grid;place-items:center;
  border:1px solid var(--cizgi);background:var(--zemin-2);color:var(--metin);
  border-radius:12px;cursor:pointer;transition:transform var(--gecis),background var(--gecis),border-color var(--gecis);
}
.ikon-dugme:hover{background:var(--vurgu-yumusak);border-color:var(--vurgu);transform:translateY(-1px)}
.ikon-dugme svg{width:20px;height:20px}
@media (min-width:1100px){.ikon-dugme--menu{display:none}}

/* mobil tam ekran panel */
.panel{
  position:fixed;inset:0;z-index:120;display:grid;grid-template-rows:auto 1fr auto;
  background:var(--zemin);background-image:var(--motif);background-size:var(--motif-boyut);
  opacity:0;visibility:hidden;transform:translateY(-1.5%);
  transition:opacity var(--gecis),transform var(--gecis),visibility var(--gecis);
}
.panel.acik{opacity:1;visibility:visible;transform:none}
.panel__ust{display:flex;align-items:center;justify-content:space-between;padding:.9rem var(--pad-yan);border-bottom:1px solid var(--cizgi)}
.panel__ic{overflow-y:auto;padding:1.2rem var(--pad-yan) 2rem}
.panel__ol{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}
.panel__lk{
  display:grid;grid-template-columns:6px 1fr auto;align-items:center;gap:1rem;
  text-decoration:none;color:var(--metin);background:var(--zemin-2);
  border:1px solid var(--cizgi);border-radius:var(--kose);
  padding:.9rem 1rem;overflow:hidden;
}
.panel__serit{width:6px;height:100%;min-height:44px;background:var(--nk,var(--vurgu));border-radius:99px;
  transform:scaleY(0);transform-origin:top;transition:transform .45s cubic-bezier(.22,.61,.36,1)}
.panel.acik .panel__lk{animation:panelGir .42s cubic-bezier(.22,.61,.36,1) backwards}
.panel.acik .panel__serit{transform:scaleY(1)}
.panel__ad{font-family:var(--f-baslik);font-variation-settings:"opsz" 40,"SOFT" 50,"WONK" 1;font-size:1.32rem;font-weight:700;line-height:1.2}
.panel__not{display:block;font-family:var(--f-govde);font-size:var(--fs-kk);font-weight:400;color:var(--metin-2);margin-top:.1rem}
.panel__lk svg{width:18px;height:18px;color:var(--metin-2)}
.panel__alt{padding:1rem var(--pad-yan) 1.4rem;border-top:1px solid var(--cizgi);display:flex;flex-wrap:wrap;gap:.6rem}
@keyframes panelGir{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.panel__lk:nth-child(1){animation-delay:.04s}.panel__lk:nth-child(2){animation-delay:.08s}
.panel__lk:nth-child(3){animation-delay:.12s}.panel__lk:nth-child(4){animation-delay:.16s}
.panel__lk:nth-child(5){animation-delay:.2s}.panel__lk:nth-child(6){animation-delay:.24s}

/* arama katmanı */
.ara-kat{
  position:fixed;inset:0;z-index:130;display:grid;place-items:start center;
  padding:12vh 1rem 2rem;background:color-mix(in srgb,var(--metin) 55%,transparent);
  backdrop-filter:blur(4px);opacity:0;visibility:hidden;transition:opacity var(--gecis),visibility var(--gecis);
}
.ara-kat.acik{opacity:1;visibility:visible}
.ara-kat__kutu{
  width:min(100%,640px);background:var(--zemin-2);border:1px solid var(--cizgi);
  border-radius:var(--kose-l);box-shadow:var(--golge-2);padding:1.3rem;
  transform:translateY(-10px);transition:transform var(--gecis);
}
.ara-kat.acik .ara-kat__kutu{transform:none}
.ara-kat__oneri{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.9rem}

/* ---------- 6. KIRINTI (BREADCRUMB) ------------------------- */
.kirinti{padding-block:1rem .2rem}
.kirinti ol{display:flex;flex-wrap:wrap;gap:.3rem .5rem;list-style:none;padding:0;margin:0;
  font-size:var(--fs-kk);color:var(--metin-2)}
.kirinti li{display:flex;align-items:center;gap:.5rem;margin:0}
.kirinti li+li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--cizgi)}
.kirinti a{color:var(--metin-2);text-decoration:none;border-bottom:1px solid transparent}
.kirinti a:hover{color:var(--vurgu-metin);border-bottom-color:currentColor}
.kirinti [aria-current]{color:var(--metin);font-weight:700}

/* ---------- 7. LOPEDİ FİŞİ ---------------------------------- */
.fis{
  position:relative;background:var(--zemin-2);
  border:1px solid var(--cizgi);border-left:4px solid var(--vurgu);
  border-radius:6px 16px 16px 6px;
  padding:1.5rem 1.4rem 1.25rem 2.6rem;
  box-shadow:var(--golge-1);
  transform:rotate(-.4deg);
  margin-block:1.4rem 2rem;
  max-width:calc(64 * var(--ch-govde));
}
.fis::before{ /* delgeç deliği */
  content:"";position:absolute;left:1rem;top:1.15rem;width:14px;height:14px;border-radius:50%;
  background:var(--zemin);box-shadow:inset 0 1px 2px rgba(43,38,32,.35);
}
.fis::after{ /* kırmızı marj çizgisi */
  content:"";position:absolute;left:2.05rem;top:0;bottom:0;width:1px;
  background:color-mix(in srgb,#C25A4E 45%,transparent);
}
.fis__ust{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.4rem 1rem;align-items:baseline;
  border-bottom:1px dashed var(--cizgi);padding-bottom:.6rem;margin-bottom:.85rem}
.fis__no{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.14em;
  text-transform:uppercase;color:var(--vurgu-metin);font-weight:600}
.fis__tarih{font-family:var(--f-mono);font-size:var(--fs-mini);color:var(--metin-2)}
.fis__ozet{font-size:1.02rem;line-height:1.62}
.fis__ozet strong{font-weight:800}
.fis__hizli{list-style:none;padding:0;margin:.95rem 0 0;display:grid;gap:0}
.fis__hizli li{display:grid;grid-template-columns:1.15rem minmax(6.5rem,auto) 1fr;gap:.6rem;align-items:baseline;
  padding:.5rem 0;border-top:1px dashed var(--cizgi);margin:0;font-size:var(--fs-kk)}
.fis__hizli svg{width:15px;height:15px;color:var(--vurgu-metin);transform:translateY(2px)}
.fis__hizli b{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.08em;
  text-transform:uppercase;color:var(--metin-2);font-weight:600}
.fis--duz{transform:none}

/* ---------- 8. DÜĞMELER, ETİKETLER, ROZETLER ---------------- */
.dugme{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  font-family:var(--f-govde);font-weight:800;font-size:.96rem;
  padding:.72rem 1.25rem;border-radius:99px;border:1.5px solid transparent;
  text-decoration:none;cursor:pointer;line-height:1.2;
  transition:transform var(--gecis),background var(--gecis),color var(--gecis),border-color var(--gecis),box-shadow var(--gecis);
}
.dugme svg{width:18px;height:18px}
.dugme:hover{transform:translateY(-2px)}
.dugme:active{transform:translateY(0)}
.dugme--ana{background:var(--vurgu-metin);color:#fff;box-shadow:0 10px 22px -14px var(--vurgu-metin)}
.dugme--ana:hover{background:var(--metin);color:var(--zemin-2)}
.dugme--cizgi{border-color:var(--cizgi);color:var(--metin);background:var(--zemin-2)}
.dugme--cizgi:hover{border-color:var(--vurgu);background:var(--vurgu-yumusak);color:var(--metin)}
.dugme--vurgu{background:var(--vurgu);color:var(--vurgu-uzeri)}
.dugme--vurgu:hover{filter:brightness(1.06);color:var(--vurgu-uzeri)}
.dugme--sade{background:transparent;color:var(--vurgu-metin);padding-inline:.4rem}
.dugme--sade:hover{color:var(--metin)}
.dugme--kucuk{padding:.45rem .85rem;font-size:var(--fs-kk)}
.dugme--tam{width:100%}

.etiket{
  display:inline-flex;align-items:center;gap:.35rem;
  font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.1em;text-transform:uppercase;
  padding:.28rem .6rem;border-radius:6px;background:var(--vurgu-yumusak);color:var(--vurgu-metin);font-weight:600;
}
.etiket--cizgi{background:transparent;border:1px dashed var(--cizgi);color:var(--metin-2)}
.rozet{
  display:inline-grid;place-items:center;min-width:1.6rem;height:1.6rem;padding-inline:.4rem;
  border-radius:99px;background:var(--vurgu);color:var(--vurgu-uzeri);
  font-family:var(--f-mono);font-size:.72rem;font-weight:600;
}

/* ---------- 9. KARTLAR -------------------------------------- */
.kart{
  position:relative;background:var(--zemin-2);border:1px solid var(--cizgi);
  border-radius:var(--kose);padding:1.25rem;box-shadow:var(--golge-1);
  transition:transform var(--gecis),box-shadow var(--gecis),border-color var(--gecis);
}
.kart--bagli:hover{transform:translateY(-4px);box-shadow:var(--golge-2);border-color:var(--vurgu)}
.kart__ust{display:flex;align-items:center;gap:.6rem;margin-bottom:.7rem}
.kart__ikon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;
  background:var(--vurgu-yumusak);color:var(--vurgu-metin);flex:0 0 auto}
.kart__ikon svg{width:21px;height:21px}
.kart h3{margin-bottom:.35rem}
.kart p{color:var(--metin-2);font-size:var(--fs-kk)}
.kart__bag::after{content:"";position:absolute;inset:0;border-radius:inherit}

/* bölüm kapı kartı — her biri kendi bölüm renginde */
.kapi{
  --nk:var(--vurgu);
  position:relative;display:block;text-decoration:none;color:var(--metin);
  background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:var(--kose-l);
  padding:1.4rem 1.3rem 1.2rem;overflow:hidden;isolation:isolate;
  box-shadow:var(--golge-1);
  transition:transform var(--gecis),box-shadow var(--gecis);
}
.kapi::before{
  content:"";position:absolute;inset:0 0 auto;height:6px;background:var(--nk);
}
.kapi::after{
  content:"";position:absolute;right:-3.5rem;bottom:-3.5rem;width:11rem;height:11rem;border-radius:50%;
  background:color-mix(in srgb,var(--nk) 13%,transparent);z-index:-1;transition:transform var(--gecis-y);
}
.kapi:hover{transform:translateY(-5px);box-shadow:var(--golge-2);color:var(--metin)}
.kapi:hover::after{transform:scale(1.35)}
.kapi__no{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.16em;color:var(--nk);font-weight:600}
.kapi__ad{font-family:var(--f-baslik);font-variation-settings:"opsz" 60,"SOFT" 50,"WONK" 1;
  font-size:1.55rem;font-weight:700;margin:.35rem 0 .45rem;line-height:1.1}
.kapi p{color:var(--metin-2);font-size:var(--fs-kk);margin-bottom:.85rem}
.kapi__ol{list-style:none;padding:0;margin:0 0 .9rem;display:flex;flex-wrap:wrap;gap:.35rem}
.kapi__ol li{margin:0;font-size:var(--fs-mini);border:1px solid var(--cizgi);border-radius:99px;padding:.2rem .55rem;color:var(--metin-2)}
.kapi__git{display:inline-flex;align-items:center;gap:.4rem;font-weight:800;color:var(--nk);font-size:var(--fs-kk)}
.kapi__git svg{width:16px;height:16px;transition:transform var(--gecis)}
.kapi:hover .kapi__git svg{transform:translateX(4px)}

/* yazı kartı */
.yazi{
  display:grid;grid-template-rows:auto auto 1fr auto;gap:.5rem;
  background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:var(--kose);
  padding:1.15rem;text-decoration:none;color:var(--metin);position:relative;
  transition:transform var(--gecis),border-color var(--gecis),box-shadow var(--gecis);
}
.yazi:hover{transform:translateY(-3px);border-color:var(--vurgu);box-shadow:var(--golge-2);color:var(--metin)}
.yazi__ust{display:flex;justify-content:space-between;align-items:center;gap:.6rem}
.yazi__bolum{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.12em;
  text-transform:uppercase;color:var(--nk,var(--vurgu-metin));font-weight:600}
.yazi__sure{font-size:var(--fs-mini);color:var(--metin-2)}
.yazi h3{font-size:1.1rem;line-height:1.24}
.yazi p{font-size:var(--fs-kk);color:var(--metin-2)}
.yazi__alt{display:flex;align-items:center;gap:.4rem;font-size:var(--fs-kk);font-weight:700;color:var(--vurgu-metin)}
.yazi__alt svg{width:15px;height:15px;transition:transform var(--gecis)}
.yazi:hover .yazi__alt svg{transform:translateX(3px)}

/* araç kartı (mini önizlemeli) */
.arac{
  display:grid;gap:.75rem;background:var(--zemin-2);border:1px solid var(--cizgi);
  border-radius:var(--kose-l);padding:1.2rem;text-decoration:none;color:var(--metin);
  transition:transform var(--gecis),box-shadow var(--gecis),border-color var(--gecis);
}
.arac:hover{transform:translateY(-4px);box-shadow:var(--golge-2);border-color:var(--vurgu);color:var(--metin)}
.arac__onizleme{
  background:var(--vurgu-yumusak);border:1px dashed color-mix(in srgb,var(--vurgu) 45%,transparent);
  border-radius:var(--kose-s);padding:.8rem .9rem;font-family:var(--f-mono);font-size:.78rem;
  color:var(--vurgu-metin);display:grid;gap:.35rem;
}
.arac__onizleme div{display:flex;justify-content:space-between;gap:.6rem}
.arac__onizleme b{color:var(--metin);font-weight:600}

/* koleksiyon kartı (isim temaları) */
.koleksiyon{
  position:relative;display:grid;align-content:end;gap:.3rem;min-height:9.5rem;
  padding:1.1rem;border-radius:var(--kose-l);text-decoration:none;overflow:hidden;
  background:var(--zemin-3);border:1px solid var(--cizgi);color:var(--metin);
  transition:transform var(--gecis),box-shadow var(--gecis)}
.koleksiyon:hover{transform:translateY(-4px) rotate(-.5deg);box-shadow:var(--golge-2);color:var(--metin)}
.koleksiyon__sayi{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.14em;color:var(--vurgu-metin)}
.koleksiyon__ad{font-family:var(--f-baslik);font-size:1.22rem;font-weight:700;line-height:1.15;
  font-variation-settings:"opsz" 50,"SOFT" 50,"WONK" 1}
.koleksiyon p{font-size:var(--fs-mini);color:var(--metin-2)}
.koleksiyon__sus{position:absolute;right:-1.4rem;top:-1.4rem;width:7.5rem;height:7.5rem;opacity:.5;pointer-events:none}

/* ---------- 10. İSİM BİLEŞENLERİ + FİLTRE ------------------- */
.filtre{
  background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:var(--kose-l);
  padding:1.1rem;display:grid;gap:1rem;box-shadow:var(--golge-1);
}
.filtre__satir{display:grid;gap:.5rem}
.filtre__ad{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.14em;
  text-transform:uppercase;color:var(--metin-2);font-weight:600}

.alan{
  display:flex;align-items:center;gap:.6rem;background:var(--zemin);
  border:1.5px solid var(--cizgi);border-radius:99px;padding:.55rem .95rem;
  transition:border-color var(--gecis),box-shadow var(--gecis);
}
.alan:focus-within{border-color:var(--vurgu);box-shadow:0 0 0 4px color-mix(in srgb,var(--vurgu) 18%,transparent)}
.alan svg{width:18px;height:18px;color:var(--metin-2);flex:0 0 auto}
.alan input{
  border:0;background:transparent;font:inherit;color:var(--metin);width:100%;outline:0;
  font-size:1rem;
}
.alan input::placeholder{color:var(--metin-2);opacity:.85}

.sekmeler{display:inline-flex;gap:.25rem;background:var(--zemin-3);padding:.28rem;border-radius:99px;border:1px solid var(--cizgi)}
.sekme{
  border:0;background:transparent;font:inherit;font-weight:700;font-size:.92rem;color:var(--metin-2);
  padding:.45rem 1rem;border-radius:99px;cursor:pointer;transition:background var(--gecis),color var(--gecis);
}
.sekme[aria-selected="true"]{background:var(--vurgu-metin);color:#fff}
.sekme:hover{color:var(--metin)}
.sekme[aria-selected="true"]:hover{color:#fff}

.cipler{display:flex;flex-wrap:wrap;gap:.4rem}
.cip{
  border:1px solid var(--cizgi);background:var(--zemin);color:var(--metin-2);
  font:inherit;font-size:var(--fs-kk);font-weight:600;padding:.35rem .8rem;border-radius:99px;cursor:pointer;
  transition:background var(--gecis),color var(--gecis),border-color var(--gecis),transform var(--gecis);
}
.cip:hover{border-color:var(--vurgu);color:var(--metin);transform:translateY(-1px)}
.cip[aria-pressed="true"]{background:var(--vurgu);border-color:var(--vurgu);color:var(--vurgu-uzeri)}

.harfler{display:flex;flex-wrap:wrap;gap:.25rem}
.harf{
  width:2.1rem;height:2.1rem;display:grid;place-items:center;border-radius:9px;cursor:pointer;
  border:1px solid var(--cizgi);background:var(--zemin);color:var(--metin-2);
  font-family:var(--f-mono);font-size:.82rem;font-weight:600;
  transition:background var(--gecis),color var(--gecis),transform var(--gecis);
}
.harf:hover{background:var(--vurgu-yumusak);color:var(--vurgu-metin);transform:translateY(-2px)}
.harf[aria-pressed="true"]{background:var(--vurgu-metin);border-color:var(--vurgu-metin);color:#fff}

.filtre__ozet{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between;
  border-top:1px dashed var(--cizgi);padding-top:.85rem;font-size:var(--fs-kk);color:var(--metin-2)}
.filtre__ozet b{font-family:var(--f-mono);color:var(--metin);font-size:1.05rem}

.isim-izgara{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,13.5rem),1fr));margin-top:1.4rem}
.isim-karti{
  position:relative;background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:14px;
  padding:.95rem 1rem 1rem;overflow:hidden;cursor:default;
  animation:isimGir .38s cubic-bezier(.22,.61,.36,1) backwards;
  transition:transform var(--gecis),box-shadow var(--gecis),border-color var(--gecis);
}
@keyframes isimGir{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
.isim-karti:hover,.isim-karti:focus-within{transform:translateY(-3px);border-color:var(--vurgu);box-shadow:var(--golge-2)}
.isim-karti__ad{
  font-family:var(--f-baslik);font-variation-settings:"opsz" 60,"SOFT" 50,"WONK" 1;
  font-size:1.42rem;font-weight:700;line-height:1.1;letter-spacing:-.015em;display:block;
  color:var(--metin);text-decoration:none;
}
.isim-karti__ad:hover{color:var(--vurgu-metin)}
.isim-karti__koken{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.1em;
  text-transform:uppercase;color:var(--metin-2);margin-top:.2rem;display:block}
.isim-karti__anlam{
  font-size:var(--fs-kk);color:var(--metin-2);line-height:1.5;margin-top:.55rem;
  max-height:0;opacity:0;overflow:hidden;
  transition:max-height var(--gecis-y),opacity var(--gecis),margin var(--gecis);
}
.isim-karti:hover .isim-karti__anlam,.isim-karti:focus-within .isim-karti__anlam{max-height:8rem;opacity:1}
.isim-karti__alt{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.7rem}

/* popülerlik: yıldız tozu noktaları */
.toz{display:inline-flex;gap:3px;align-items:center}
.toz i{width:6px;height:6px;border-radius:50%;background:color-mix(in srgb,var(--metin) 18%,transparent);display:block}
.toz i.dolu{background:var(--vurgu);box-shadow:0 0 6px color-mix(in srgb,var(--vurgu) 70%,transparent)}

/* favori kalbi */
.favori{
  width:32px;height:32px;border-radius:50%;border:1px solid var(--cizgi);background:var(--zemin);
  display:grid;place-items:center;cursor:pointer;position:relative;color:var(--metin-2);
  transition:background var(--gecis),color var(--gecis),transform var(--gecis),border-color var(--gecis);
}
.favori svg{width:16px;height:16px}
.favori:hover{color:#D6456B;border-color:#D6456B}
.favori[aria-pressed="true"]{background:#D6456B;border-color:#D6456B;color:#fff}
.favori[aria-pressed="true"] svg{fill:currentColor}
.favori.patla::after{
  content:"";position:absolute;inset:-6px;border-radius:50%;pointer-events:none;
  box-shadow:0 -14px 0 -6px #D6456B,10px -10px 0 -6px #F6C453,14px 0 0 -6px #D6456B,
             10px 10px 0 -6px #7B5EA7,0 14px 0 -6px #F6C453,-10px 10px 0 -6px #D6456B,
             -14px 0 0 -6px #7B5EA7,-10px -10px 0 -6px #F6C453;
  animation:patla .5s ease-out forwards;
}
@keyframes patla{from{transform:scale(.4);opacity:1}to{transform:scale(1.5);opacity:0}}

.bos-sonuc{
  border:1px dashed var(--cizgi);border-radius:var(--kose);padding:2rem 1.2rem;text-align:center;
  color:var(--metin-2);grid-column:1/-1;
}

/* ---------- 11. TABLO, SSS, KUTULAR ------------------------- */
.tablo-sar{overflow-x:auto;border:1px solid var(--cizgi);border-radius:var(--kose);background:var(--zemin-2);
  box-shadow:var(--golge-1);margin-block:1.2rem}
.tablo{width:100%;border-collapse:collapse;font-size:var(--fs-kk);min-width:34rem}
.tablo caption{caption-side:top;text-align:left;padding:.9rem 1rem .2rem;font-family:var(--f-mono);
  font-size:var(--fs-mini);letter-spacing:.12em;text-transform:uppercase;color:var(--metin-2)}
.tablo th{
  text-align:left;font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.09em;
  text-transform:uppercase;color:var(--metin-2);font-weight:600;background:var(--zemin-3);
  padding:.7rem .9rem;border-bottom:1px solid var(--cizgi);white-space:nowrap;
}
.tablo td{padding:.75rem .9rem;border-bottom:1px solid color-mix(in srgb,var(--cizgi) 70%,transparent);vertical-align:top}
.tablo tbody tr:last-child td{border-bottom:0}
.tablo tbody tr:hover{background:color-mix(in srgb,var(--vurgu) 6%,transparent)}
.tablo .sayi{font-family:var(--f-mono);color:var(--metin);font-weight:600;white-space:nowrap}
.tablo .ad{font-weight:800;color:var(--metin)}

/* SSS akordeonu */
.sss{display:grid;gap:.6rem;margin-block:1.2rem}
.sss__oge{border:1px solid var(--cizgi);border-radius:var(--kose);background:var(--zemin-2);overflow:hidden}
.sss__bas{width:100%;display:flex;align-items:center;justify-content:space-between;gap:1rem;
  background:transparent;border:0;font:inherit;font-family:var(--f-baslik);font-weight:700;font-size:1.04rem;
  font-variation-settings:"opsz" 30,"SOFT" 40,"WONK" 0;
  color:var(--metin);text-align:left;padding:1rem 1.1rem;cursor:pointer;line-height:1.3}
.sss__bas:hover{color:var(--vurgu-metin)}
.sss__isaret{flex:0 0 auto;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;
  background:var(--vurgu-yumusak);color:var(--vurgu-metin);transition:transform var(--gecis)}
.sss__isaret svg{width:15px;height:15px}
.sss__bas[aria-expanded="true"] .sss__isaret{transform:rotate(180deg)}
.sss__govde{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--gecis-y)}
.sss__oge.acik .sss__govde{grid-template-rows:1fr}
.sss__ic{overflow:hidden}
.sss__ic > div{padding:0 1.1rem 1.1rem;color:var(--metin-2);font-size:var(--fs-kk)}

/* uyarı / kaynak / yazar / açıklama kutuları */
.kutu{border-radius:var(--kose);padding:1.1rem 1.2rem;margin-block:1.4rem;border:1px solid var(--cizgi);background:var(--zemin-2)}
.kutu__bas{display:flex;align-items:center;gap:.55rem;font-family:var(--f-mono);
  font-size:var(--fs-mini);letter-spacing:.13em;text-transform:uppercase;font-weight:600;margin-bottom:.5rem}
.kutu__bas svg{width:16px;height:16px}
.kutu p{font-size:var(--fs-kk);color:var(--metin-2)}

.kutu--uyari{background:color-mix(in srgb,#C2483B 7%,var(--zemin-2));border-color:color-mix(in srgb,#C2483B 32%,var(--cizgi))}
.kutu--uyari .kutu__bas{color:#A63A2E}
.kutu--bilgi{background:var(--vurgu-yumusak);border-color:color-mix(in srgb,var(--vurgu) 38%,var(--cizgi))}
.kutu--bilgi .kutu__bas{color:var(--vurgu-metin)}
.kutu--kaynak .kutu__bas{color:var(--metin-2)}
.kutu--kaynak ol{margin:0;padding-left:1.1rem;font-size:var(--fs-kk);color:var(--metin-2)}

.yazar{display:flex;gap:1rem;align-items:flex-start;flex-wrap:wrap;
  border:1px solid var(--cizgi);border-radius:var(--kose);background:var(--zemin-2);padding:1.15rem;margin-block:1.6rem}
.yazar__im{width:52px;height:52px;border-radius:14px;background:var(--vurgu-yumusak);display:grid;place-items:center;
  color:var(--vurgu-metin);flex:0 0 auto}
.yazar__im svg{width:26px;height:26px}
.yazar__ic{flex:1 1 16rem}
.yazar__ad{font-family:var(--f-baslik);font-weight:700;font-size:1.08rem}
.yazar p{font-size:var(--fs-kk);color:var(--metin-2);margin-top:.25rem}
.yazar__inceleme{margin-top:.55rem;font-family:var(--f-mono);font-size:var(--fs-mini);
  color:var(--vurgu-metin);letter-spacing:.06em}

.aciklama{
  display:flex;gap:.6rem;align-items:flex-start;font-size:var(--fs-mini);color:var(--metin-2);
  border-left:3px solid var(--vurgu);background:var(--vurgu-yumusak);padding:.7rem .9rem;border-radius:0 var(--kose-s) var(--kose-s) 0;
  margin-block:1rem;
}
.aciklama svg{width:15px;height:15px;flex:0 0 auto;margin-top:2px;color:var(--vurgu-metin)}

/* kontrol listesi */
.kontrol{list-style:none;padding:0;margin:1rem 0;display:grid;gap:.5rem}
.kontrol li{display:grid;grid-template-columns:1.4rem 1fr;gap:.7rem;align-items:start;
  background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:var(--kose-s);padding:.7rem .85rem;margin:0;font-size:var(--fs-kk)}
.kontrol li::before{
  content:"";width:1.15rem;height:1.15rem;border-radius:5px;border:2px solid var(--vurgu);
  background:var(--vurgu-yumusak);margin-top:.15rem;
}

/* zaman çizelgesi */
.adimlar{list-style:none;padding:0;margin:1.4rem 0;display:grid;gap:0;position:relative}
.adimlar::before{content:"";position:absolute;left:.95rem;top:.6rem;bottom:.6rem;width:2px;
  background:repeating-linear-gradient(var(--cizgi) 0 6px,transparent 6px 12px)}
.adim{display:grid;grid-template-columns:2rem 1fr;gap:1rem;padding-block:.75rem;margin:0;position:relative}
.adim__nk{width:2rem;height:2rem;border-radius:50%;background:var(--zemin-2);border:2px solid var(--vurgu);
  display:grid;place-items:center;font-family:var(--f-mono);font-size:.72rem;font-weight:600;
  color:var(--vurgu-metin);z-index:1}
.adim h4{margin-bottom:.15rem}
.adim p{font-size:var(--fs-kk);color:var(--metin-2)}

/* artı-eksi kartları */
.arti-eksi{display:grid;gap:var(--aralik);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin-block:1.2rem}
.ae{border:1px solid var(--cizgi);border-radius:var(--kose);padding:1.1rem;background:var(--zemin-2)}
.ae h4{display:flex;align-items:center;gap:.45rem;margin-bottom:.6rem;font-size:.98rem}
.ae h4 svg{width:17px;height:17px}
.ae--arti h4{color:#2E7D4F}
.ae--eksi h4{color:#B4483B}
.ae ul{margin:0;padding-left:1.05rem;font-size:var(--fs-kk);color:var(--metin-2)}

/* ---------- 12. REKLAM SLOTLARI ----------------------------- */
.ad-slot{
  --ad-h:110px;
  height:var(--ad-h);
  display:grid;place-items:center;position:relative;
  border:1.5px dashed color-mix(in srgb,var(--metin) 22%,transparent);
  border-radius:var(--kose-s);
  background:color-mix(in srgb,var(--metin) 3.5%,transparent);
  color:color-mix(in srgb,var(--metin) 45%,transparent);
  font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.16em;text-transform:uppercase;
  margin-block:1.8rem;overflow:hidden;
}
.ad-slot::before{
  content:"Reklam";position:absolute;top:.4rem;left:.55rem;font-size:.62rem;letter-spacing:.14em;
  color:color-mix(in srgb,var(--metin) 40%,transparent);
}
.ad-slot--kare{--ad-h:270px}
.ad-slot--dikey{--ad-h:620px;display:none}
@media (min-width:1024px){
  .ad-slot--yatay{--ad-h:130px}
  .ad-slot--dikey{display:grid}
}

/* ---------- 13. SAHNE (HERO) BLOKLARI ----------------------- */
/* Üst bant: kırıntı + sahneyi tek bir tam genişlikte masthead'de toplar.
   Kağıt ansiklopedide "başlık sayfası" karşılığı — bölüm içeriğinden
   hafifçe farklı bir kağıt tonu kullanır. */
.ust-bant{
  position:relative;overflow:hidden;
  background:
    linear-gradient(180deg,color-mix(in srgb,var(--vurgu) 10%,transparent),transparent 70%),
    var(--zemin-3);
  border-bottom:1px solid var(--cizgi);
  /* YP8 — ÜST BANT ALT BOŞLUĞU KISALTILDI.
     Ölçüldü (1440 px): bandın alt dolgusu 64 px + bu boşluk 48 px = başlık ile
     içerik arasında 112 px boş alan. Kategori arşivi gibi başlığı tek sözcük
     olan sayfalarda ("Rehber") ekranın üçte biri boş görünüyordu.
     İki değer ÜST ÜSTE BİNİYORDU ve gereksizdi: bandın zaten kendi arka planı
     ve alt kenarlığı var, yani bölümler arasındaki ayrım boşlukla değil
     çizgiyle kuruluyor. Yeni toplam ~76 px — nefes payı korunuyor, boşluk
     hissi gidiyor. Değerler clamp olduğu için dar ekranda daha da toparlanır. */
  margin-bottom:clamp(1.4rem,1rem + 1.2vw,2.2rem);
}
.ust-bant .kirinti{padding-block:1.5rem .1rem}
.ust-bant .sahne,
.ust-bant .isim-sahne,
.ust-bant .hafta-sahne,
.ust-bant .ay-sahne{padding-block:1.3rem clamp(1.8rem,1.3rem + 1.6vw,2.6rem)}
.ust-bant + .bolum{padding-top:0}

.sahne{position:relative;padding-block:clamp(2.4rem,1.6rem + 3.4vw,4.6rem) clamp(2rem,1.4rem + 2.4vw,3.4rem);overflow:hidden}
/* Sahne, .kap'ın genişliğini (1180px) sonuna kadar kullanır; kendi ek
   max-width'i YOKTUR — okunabilirlik başlık ve giriş metninin kendi
   ölçüsüyle (ch) sınırlanarak korunur. Böylece hero ile alt bölümler
   aynı genişlik ritmini paylaşır. */
.sahne__ic{position:relative;z-index:1}
.sahne__ic > h1{max-width:calc(24 * var(--ch-baslik))}
.sahne__ic > .sahne__giris{max-width:calc(62 * var(--ch-govde))}
.sahne__ust{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--f-mono);
  font-size:var(--fs-mini);letter-spacing:.16em;text-transform:uppercase;color:var(--vurgu-metin);
  border:1px dashed color-mix(in srgb,var(--vurgu) 55%,transparent);border-radius:99px;padding:.32rem .8rem;margin-bottom:1rem}
/* Çok satırlı başlıklarda nefes payı: 1.12 display için fazla sıkışıktı. */
.sahne h1{font-size:var(--fs-dev);line-height:1.22;font-variation-settings:"opsz" 144,"SOFT" 60,"WONK" 1}
/* Vurgulu başlık parçası: altı çizgi satır kırıldığında da her satırda
   sürer; alt uzantıların (ş, ğ, y) altından geçecek şekilde konumlanır. */
.sahne h1 em{
  font-style:normal;color:var(--vurgu-metin);
  background-image:linear-gradient(color-mix(in srgb,var(--vurgu) 50%,transparent),color-mix(in srgb,var(--vurgu) 50%,transparent));
  background-repeat:no-repeat;background-size:100% .12em;background-position:0 100%;
  -webkit-box-decoration-break:clone;box-decoration-break:clone;
  padding-bottom:.13em;
}
.sahne__giris{margin-top:1rem;font-size:clamp(1.02rem,.98rem + .5vw,1.22rem);color:var(--metin-2);max-width:calc(52 * var(--ch-govde))}
.sahne__eylem{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.6rem}
.sahne__sus{position:absolute;pointer-events:none;z-index:0;opacity:.85}

/* yatay sayaç şeridi — kabın tamamına yayılır */
.sayaclar{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr));
  gap:1.4rem 2rem;margin-top:2.2rem;padding-top:1.4rem;border-top:1px dashed var(--cizgi);
}
.sayac__deger{font-family:var(--f-baslik);font-size:1.9rem;font-weight:700;line-height:1;color:var(--metin);
  font-variation-settings:"opsz" 60,"SOFT" 40,"WONK" 1}
.sayac__ad{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.12em;
  text-transform:uppercase;color:var(--metin-2);margin-top:.25rem}

/* ---------- 14. BÖLÜME ÖZEL BİLEŞENLER ---------------------- */

/* 14a. Gebelik "Bebek Rotası" şeridi */
.rota-serit{position:relative;padding-block:1.2rem 1.6rem}
.rota-serit::before{
  content:"";position:absolute;left:0;right:0;top:50%;height:3px;transform:translateY(-50%);
  background:repeating-linear-gradient(90deg,var(--cizgi) 0 12px,transparent 12px 22px);z-index:0;
}
.duraklar{position:relative;z-index:1}
.durak{
  width:9.5rem;background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:14px;
  padding:.75rem .8rem;text-decoration:none;color:var(--metin);display:grid;gap:.3rem;
  transition:transform var(--gecis),box-shadow var(--gecis),border-color var(--gecis);
}
.durak:hover{transform:translateY(-4px);border-color:var(--vurgu);box-shadow:var(--golge-2);color:var(--metin)}
.durak__no{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.1em;color:var(--vurgu-metin);font-weight:600}
.durak__meyve{width:34px;height:34px;color:var(--vurgu-metin);fill:currentColor}
.rota-detay__meyve{fill:currentColor}
.durak__not{font-size:var(--fs-mini);color:var(--metin-2);line-height:1.4}
.durak--aktif{
  background:var(--vurgu-metin);border-color:var(--vurgu-metin);color:#fff;transform:scale(1.09);
  box-shadow:var(--golge-2);width:10.5rem;
}
.durak--aktif .durak__no,.durak--aktif .durak__not,.durak--aktif .durak__meyve{color:#fff}
.durak--aktif:hover{color:#fff;transform:scale(1.09) translateY(-3px)}
.trimester-serit{display:flex;gap:.4rem;margin-bottom:.8rem;font-family:var(--f-mono);
  font-size:var(--fs-mini);letter-spacing:.1em;text-transform:uppercase}
.trimester-serit span{flex:1;padding:.42rem .6rem;border-radius:99px;text-align:center;color:var(--metin)}
.tr-1{background:color-mix(in srgb,#C98BA5 34%,transparent)}
.tr-2{background:color-mix(in srgb,#7B5EA7 26%,transparent)}
.tr-3{background:color-mix(in srgb,#5B7FC4 26%,transparent)}

/* 14b. Hesaplayıcı */
.hesap{
  background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:var(--kose-l);
  padding:clamp(1.1rem,.8rem + 1vw,1.8rem);box-shadow:var(--golge-2);position:relative;overflow:hidden;
}
.hesap::before{content:"";position:absolute;inset:0 0 auto;height:5px;background:linear-gradient(90deg,var(--vurgu),color-mix(in srgb,var(--vurgu) 30%,var(--zemin-2)))}
.hesap__form{display:grid;gap:1rem}
.hesap__grup{display:grid;gap:.4rem}
.hesap__etiket{font-weight:800;font-size:var(--fs-kk)}
.hesap__ipucu{font-size:var(--fs-mini);color:var(--metin-2)}
.hesap input[type="date"],.hesap input[type="number"],.hesap select{
  font:inherit;font-size:1rem;color:var(--metin);background:var(--zemin);
  border:1.5px solid var(--cizgi);border-radius:12px;padding:.7rem .9rem;width:100%;
  transition:border-color var(--gecis),box-shadow var(--gecis);
}
.hesap input:focus,.hesap select:focus{outline:0;border-color:var(--vurgu);box-shadow:0 0 0 4px color-mix(in srgb,var(--vurgu) 18%,transparent)}
.hesap__hata{color:#B4483B;font-size:var(--fs-kk);font-weight:700;min-height:1.2em}

.sonuc{
  margin-top:1.4rem;display:grid;grid-template-rows:0fr;
  transition:grid-template-rows var(--gecis-y);
}
.sonuc.acik{grid-template-rows:1fr}
.sonuc__ic{overflow:hidden}
.sonuc__kart{
  background:var(--vurgu-yumusak);border:1px solid color-mix(in srgb,var(--vurgu) 45%,transparent);
  border-radius:var(--kose);padding:1.2rem;display:grid;gap:1rem;
}
.sonuc__ana{display:flex;flex-wrap:wrap;align-items:center;gap:1.2rem}
.sonuc__meyve{width:82px;height:82px;flex:0 0 auto;color:var(--vurgu-metin)}
.sonuc__buyuk{font-family:var(--f-baslik);font-size:clamp(1.7rem,1.3rem + 1.6vw,2.4rem);font-weight:700;line-height:1.05;
  font-variation-settings:"opsz" 90,"SOFT" 50,"WONK" 1}
.sonuc__alt{font-size:var(--fs-kk);color:var(--metin-2);margin-top:.25rem}
.sonuc__satirlar{display:grid;gap:0;background:var(--zemin-2);border-radius:var(--kose-s);padding:.2rem .9rem}
.sonuc__satir{display:flex;justify-content:space-between;gap:1rem;padding:.6rem 0;border-bottom:1px dashed var(--cizgi);font-size:var(--fs-kk)}
.sonuc__satir:last-child{border-bottom:0}
.sonuc__satir b{font-family:var(--f-mono);font-weight:600;color:var(--metin)}

.ilerleme{height:10px;border-radius:99px;background:var(--zemin-3);overflow:hidden;position:relative}
.ilerleme__dolu{height:100%;border-radius:99px;background:linear-gradient(90deg,#C98BA5,#7B5EA7,#5B7FC4);
  width:0;transition:width 1.1s cubic-bezier(.22,.61,.36,1)}

/* 14c. Karşılaştırma / affiliate */
.karsilastir .tablo{min-width:44rem}
.puan{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--f-mono);font-weight:600}
.puan__bar{width:52px;height:6px;border-radius:99px;background:var(--zemin-3);overflow:hidden}
.puan__bar i{display:block;height:100%;background:var(--vurgu);border-radius:99px}
.satin{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--fs-mini);font-weight:800;
  padding:.4rem .75rem;border-radius:8px;text-decoration:none;white-space:nowrap;transition:transform var(--gecis),filter var(--gecis)}
.satin:hover{transform:translateY(-2px);filter:brightness(1.05)}
.satin--ty{background:#F27A1A;color:#fff}
.satin--hb{background:#FF6000;color:#fff}
.satin--ty:hover,.satin--hb:hover{color:#fff}

/* 14d. Mini sihirbaz */
.sihirbaz{background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:var(--kose-l);
  padding:clamp(1.1rem,.85rem + .9vw,1.7rem);box-shadow:var(--golge-1)}
.sihirbaz__ilerleme{display:flex;gap:.35rem;margin-bottom:1.1rem}
.sihirbaz__ilerleme span{height:5px;flex:1;border-radius:99px;background:var(--zemin-3);transition:background var(--gecis)}
.sihirbaz__ilerleme span.aktif{background:var(--vurgu)}
.sihirbaz__soru{display:none}
.sihirbaz__soru.aktif{display:block;animation:isimGir .35s cubic-bezier(.22,.61,.36,1)}
.sihirbaz__secenekler{display:grid;gap:.6rem;margin-top:1rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr))}
.secenek{
  text-align:left;border:1.5px solid var(--cizgi);background:var(--zemin);border-radius:var(--kose);
  padding:.9rem 1rem;font:inherit;color:var(--metin);cursor:pointer;display:grid;gap:.2rem;
  transition:border-color var(--gecis),background var(--gecis),transform var(--gecis);
}
.secenek:hover{border-color:var(--vurgu);background:var(--vurgu-yumusak);transform:translateY(-2px)}
.secenek b{font-weight:800}
.secenek span{font-size:var(--fs-mini);color:var(--metin-2)}

/* 14e. Ek gıda ay seçici */
.aylar{display:flex;gap:.4rem;flex-wrap:wrap}
.ay-dugme{
  border:1.5px solid var(--cizgi);background:var(--zemin-2);border-radius:14px;padding:.6rem .85rem;
  font:inherit;cursor:pointer;color:var(--metin);display:grid;gap:.1rem;text-align:center;min-width:5.2rem;
  transition:border-color var(--gecis),background var(--gecis),transform var(--gecis);
}
.ay-dugme b{font-family:var(--f-baslik);font-size:1.25rem;font-weight:700;line-height:1}
.ay-dugme span{font-size:var(--fs-mini);color:var(--metin-2)}
.ay-dugme:hover{transform:translateY(-2px);border-color:var(--vurgu)}
.ay-dugme[aria-pressed="true"]{background:var(--vurgu-metin);border-color:var(--vurgu-metin);color:#fff}
.ay-dugme[aria-pressed="true"] span{color:rgba(255,255,255,.8)}

/* 14f. İsim detay sahnesi */
.isim-sahne{text-align:center;padding-block:clamp(2rem,1.4rem + 2.6vw,3.6rem) 1rem}
.isim-sahne__ad{
  font-family:var(--f-baslik);font-variation-settings:"opsz" 144,"SOFT" 70,"WONK" 1;
  font-size:clamp(3.4rem,2rem + 7vw,7rem);font-weight:700;line-height:.95;letter-spacing:-.03em;
  display:flex;justify-content:center;flex-wrap:wrap;
}
.isim-sahne__ad span{display:inline-block;animation:harfGir .5s cubic-bezier(.22,.61,.36,1) backwards}
@keyframes harfGir{from{opacity:0;transform:translateY(24px) rotate(-6deg)}to{opacity:1;transform:none}}
.isim-sahne__okunus{font-family:var(--f-mono);font-size:var(--fs-kk);letter-spacing:.2em;
  text-transform:uppercase;color:var(--metin-2);margin-top:.9rem}

/* popülerlik mini grafiği (saf CSS) */
.grafik{display:flex;align-items:flex-end;gap:.5rem;height:9rem;padding:1rem 0 0;
  border-bottom:2px solid var(--cizgi);margin-block:1.2rem .4rem}
.grafik__sutun{flex:1;display:grid;align-content:end;justify-items:center;gap:.35rem;height:100%}
.grafik__bar{width:100%;max-width:2.6rem;border-radius:6px 6px 0 0;background:linear-gradient(180deg,var(--vurgu),color-mix(in srgb,var(--vurgu) 45%,var(--zemin-2)));
  height:var(--y,20%);transition:height 1s cubic-bezier(.22,.61,.36,1)}
.grafik__deger{font-family:var(--f-mono);font-size:.68rem;color:var(--metin-2)}
.grafik-yil{display:flex;gap:.5rem}
.grafik-yil span{flex:1;text-align:center;font-family:var(--f-mono);font-size:.68rem;color:var(--metin-2)}

/* iki kolon anlatım (bu hafta bebek / bu hafta sen) */
.ikili{display:grid;gap:var(--aralik);grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));margin-block:1.4rem}
.ikili__kart{border:1px solid var(--cizgi);border-radius:var(--kose-l);background:var(--zemin-2);padding:1.3rem;position:relative;overflow:hidden}
.ikili__kart::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--vurgu)}
.ikili__kart--sen::before{background:color-mix(in srgb,var(--vurgu) 45%,#C98BA5)}
.ikili__kart h3{margin-bottom:.6rem}
.ikili__kart ul{padding-left:1.05rem;font-size:var(--fs-kk);color:var(--metin-2)}

/* önceki/sonraki gezinme */
.gez{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));margin-block:2rem}
.gez a{display:grid;gap:.15rem;border:1px solid var(--cizgi);border-radius:var(--kose);background:var(--zemin-2);
  padding:.9rem 1.05rem;text-decoration:none;color:var(--metin);transition:border-color var(--gecis),transform var(--gecis)}
.gez a:hover{border-color:var(--vurgu);transform:translateY(-2px);color:var(--metin)}
.gez small{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.12em;text-transform:uppercase;color:var(--metin-2)}
.gez b{font-family:var(--f-baslik);font-size:1.05rem}
.gez a:last-child{text-align:right}
.gez a:only-child{text-align:left}

/* 14g. Kategori kartı, arşiv listesi ve arama sonuçları --------- */
.kategori-kart{
  --nk:var(--vurgu);
  position:relative;display:grid;gap:.55rem;align-content:start;
  background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:var(--kose-l);
  padding:1.3rem 1.2rem 1.1rem;text-decoration:none;color:var(--metin);overflow:hidden;
  transition:transform var(--gecis),box-shadow var(--gecis),border-color var(--gecis);
}
.kategori-kart::before{content:"";position:absolute;inset:0 0 auto;height:5px;background:var(--nk)}
.kategori-kart:hover{transform:translateY(-4px);box-shadow:var(--golge-2);border-color:var(--nk);color:var(--metin)}
.kategori-kart__ust{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-top:.2rem}
.kategori-kart__ad{font-family:var(--f-baslik);font-variation-settings:"opsz" 50,"SOFT" 50,"WONK" 1;
  font-size:1.35rem;font-weight:700;line-height:1.1}
.kategori-kart__sayi{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.1em;
  color:var(--nk);font-weight:600;white-space:nowrap}
.kategori-kart p{font-size:var(--fs-kk);color:var(--metin-2)}
.kategori-kart__ol{list-style:none;padding:0;margin:.3rem 0 0;display:grid;gap:.25rem}
.kategori-kart__ol li{margin:0;font-size:var(--fs-mini);color:var(--metin-2);
  display:flex;gap:.45rem;align-items:baseline}
.kategori-kart__ol li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--nk);flex:0 0 auto;transform:translateY(-2px)}
.kategori-kart__git{display:inline-flex;align-items:center;gap:.4rem;font-weight:800;font-size:var(--fs-kk);color:var(--nk);margin-top:.5rem}
.kategori-kart__git svg{width:15px;height:15px;transition:transform var(--gecis)}
.kategori-kart:hover .kategori-kart__git svg{transform:translateX(4px)}

/* arşiv / sonuç satırı */
.arsiv{display:grid;gap:.6rem;margin-top:1.4rem}
.arsiv__satir{
  display:grid;grid-template-columns:auto 1fr auto;gap:.7rem 1rem;align-items:start;
  background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:var(--kose);
  padding:.95rem 1.05rem;text-decoration:none;color:var(--metin);
  animation:isimGir .3s cubic-bezier(.22,.61,.36,1) backwards;
  transition:transform var(--gecis),border-color var(--gecis),box-shadow var(--gecis);
}
.arsiv__satir:hover{transform:translateX(3px);border-color:var(--nk,var(--vurgu));box-shadow:var(--golge-1);color:var(--metin)}
.arsiv__nk{width:9px;height:9px;border-radius:50%;background:var(--nk,var(--vurgu));margin-top:.45rem}
.arsiv__ic{min-width:0}
.arsiv__bas{font-family:var(--f-baslik);font-variation-settings:"opsz" 30,"SOFT" 40,"WONK" 0;
  font-size:1.05rem;font-weight:700;line-height:1.25;display:block}
.arsiv__ozet{font-size:var(--fs-kk);color:var(--metin-2);margin-top:.2rem}
.arsiv__etiketler{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.45rem}
.arsiv__etiketler span{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.06em;
  color:var(--metin-2);border:1px solid var(--cizgi);border-radius:5px;padding:.1rem .4rem}
.arsiv__sag{display:grid;gap:.35rem;justify-items:end;text-align:right}
.arsiv__hacim{font-family:var(--f-mono);font-size:var(--fs-mini);color:var(--metin-2);white-space:nowrap}
@media (max-width:560px){
  .arsiv__satir{grid-template-columns:auto 1fr}
  .arsiv__sag{grid-column:2;justify-items:start;text-align:left;grid-auto-flow:column;justify-content:start;gap:.4rem}
}

/* arama katmanı sonuçları */
.ara-kat__sonuc{margin-top:1rem;max-height:min(52vh,26rem);overflow-y:auto;display:grid;gap:.4rem;padding-right:.2rem}
.ara-sonuc{
  display:grid;grid-template-columns:auto 1fr auto;gap:.6rem;align-items:center;
  padding:.6rem .7rem;border-radius:10px;text-decoration:none;color:var(--metin);
  border:1px solid transparent;transition:background var(--gecis),border-color var(--gecis);
}
.ara-sonuc:hover,.ara-sonuc:focus-visible{background:var(--vurgu-yumusak);border-color:var(--cizgi);color:var(--metin)}
.ara-sonuc__nk{width:8px;height:8px;border-radius:50%;background:var(--nk,var(--vurgu))}
.ara-sonuc__ic{min-width:0}
.ara-sonuc__bas{font-weight:800;font-size:.96rem;display:block;line-height:1.3}
.ara-sonuc__alt{font-size:var(--fs-mini);color:var(--metin-2);display:block;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ara-sonuc mark{background:color-mix(in srgb,var(--vurgu) 40%,transparent);color:inherit;border-radius:3px;padding:0 .1em}
.ara-kat__bos{padding:1.2rem .4rem;color:var(--metin-2);font-size:var(--fs-kk)}
.ara-kat__ipucu{font-size:var(--fs-mini);color:var(--metin-2);margin-top:.7rem;
  display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.ara-kat__ipucu kbd{font-family:var(--f-mono);font-size:.7rem;border:1px solid var(--cizgi);
  border-bottom-width:2px;border-radius:5px;padding:.1rem .35rem;background:var(--zemin)}

/* 14h. Bölüme göre kategori grubu (kategori dizini) ------------ */
.bolum-grup{margin-bottom:clamp(2rem,1.4rem + 2vw,3.2rem)}
.bolum-grup__ust{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:.6rem 1rem;
  border-bottom:2px solid var(--nk,var(--vurgu));padding-bottom:.6rem;margin-bottom:1.1rem;
}
.bolum-grup__ad{
  font-family:var(--f-baslik);font-variation-settings:"opsz" 60,"SOFT" 50,"WONK" 1;
  font-size:1.5rem;font-weight:700;line-height:1.1;color:var(--nk,var(--vurgu));
}
.bolum-grup__sayi{font-family:var(--f-mono);font-size:var(--fs-mini);
  letter-spacing:.1em;color:var(--metin-2)}
.bolum-grup__hub{margin-left:auto;display:inline-flex;align-items:center;gap:.4rem;
  font-size:var(--fs-kk);font-weight:800;color:var(--nk,var(--vurgu-metin));text-decoration:none;white-space:nowrap}
.bolum-grup__hub svg{width:15px;height:15px;transition:transform var(--gecis)}
.bolum-grup__hub:hover svg{transform:translateX(4px)}

/* arşiv satırında küçük görsel */
.arsiv__satir--gorselli{grid-template-columns:auto 1fr auto}
.arsiv__gorsel{width:76px;height:76px;border-radius:10px;overflow:hidden;background:var(--zemin-3);
  border:1px solid var(--cizgi);flex:0 0 auto}
.arsiv__gorsel img{width:100%;height:100%;object-fit:cover;display:block}
@media (max-width:560px){.arsiv__gorsel{width:58px;height:58px}}

/* ---------- 14i. GÖRSEL, KAPAK VE GALERİ -------------------- */
/* Tüm görseller aspect-ratio ile yer ayırır → CLS = 0.
   Fotoğraf eklenmeden önce .gorsel-yer yer tutucusu kullanılır. */
.gorsel{margin-block:1.9rem;display:grid;gap:.65rem}
.gorsel > img,
.gorsel > picture > img,
.gorsel > a > img{
  width:100%;height:auto;display:block;border-radius:var(--kose);
  border:1px solid var(--cizgi);background:var(--zemin-3);
  aspect-ratio:16/10;object-fit:cover;box-shadow:var(--golge-1);
}
.gorsel figcaption{
  display:grid;grid-template-columns:3px 1fr;gap:.75rem;align-items:stretch;
  font-size:var(--fs-kk);color:var(--metin-2);line-height:1.55;
}
.gorsel figcaption::before{content:"";background:var(--vurgu);border-radius:2px}
.gorsel figcaption b{color:var(--metin);font-weight:800}
.gorsel figcaption cite{display:block;font-style:normal;font-family:var(--f-mono);
  font-size:var(--fs-mini);letter-spacing:.08em;color:var(--metin-2);margin-top:.25rem;opacity:.85}
.gorsel--kare > img{aspect-ratio:1}
.gorsel--dikey > img{aspect-ratio:3/4;max-width:26rem;margin-inline:auto}
.gorsel--serbest > img{aspect-ratio:auto}
/* metin sütununu iki yandan aşan geniş görsel (yalnızca geniş ekran) */
@media (min-width:1100px){
  .metin > .gorsel--genis{margin-inline:-3.5rem}
}

/* yan yana ikili görsel */
.gorsel-ikili{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));margin-block:1.6rem}
.gorsel-ikili .gorsel{margin-block:0}

/* yazı kapak görseli */
.kapak{position:relative;margin-block:.4rem 1.8rem;border-radius:var(--kose-l);overflow:hidden;
  border:1px solid var(--cizgi);box-shadow:var(--golge-2);background:var(--zemin-3)}
.kapak img{width:100%;height:auto;display:block;aspect-ratio:16/9;object-fit:cover}
.kapak__yazi{position:absolute;inset:auto 0 0;padding:clamp(1rem,.75rem + 1vw,1.7rem);
  background:linear-gradient(180deg,transparent,rgba(22,17,12,.86));color:#fff}
.kapak__et{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.14em;
  text-transform:uppercase;color:rgba(255,255,255,.82)}
.kapak__bas{font-family:var(--f-baslik);font-variation-settings:"opsz" 60,"SOFT" 50,"WONK" 1;
  font-size:clamp(1.05rem,.95rem + .6vw,1.45rem);font-weight:700;line-height:1.25;margin-top:.2rem}
@media (max-width:560px){.kapak img{aspect-ratio:4/3}}

/* galeri */
.galeri{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,10rem),1fr));margin-block:1.5rem}
.galeri--genis{grid-template-columns:repeat(auto-fill,minmax(min(100%,14rem),1fr))}
.galeri__oge{
  position:relative;padding:0;border:1px solid var(--cizgi);background:var(--zemin-3);
  border-radius:var(--kose-s);overflow:hidden;cursor:zoom-in;aspect-ratio:1;display:block;
  transition:transform var(--gecis),box-shadow var(--gecis),border-color var(--gecis);
}
.galeri__oge img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--gecis-y)}
.galeri__oge:hover{transform:translateY(-3px);border-color:var(--vurgu);box-shadow:var(--golge-2)}
.galeri__oge:hover img{transform:scale(1.06)}
.galeri__oge::after{
  content:"";position:absolute;right:.4rem;bottom:.4rem;width:26px;height:26px;border-radius:50%;
  background:rgba(255,255,255,.92) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232B2620' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-3.5-3.5M11 8v6M8 11h6'/%3E%3C/svg%3E") center/14px no-repeat;
  opacity:0;transition:opacity var(--gecis);
}
.galeri__oge:hover::after,.galeri__oge:focus-visible::after{opacity:1}
.galeri__sayi{
  position:absolute;left:.4rem;top:.4rem;font-family:var(--f-mono);font-size:.62rem;
  background:rgba(22,17,12,.6);color:#fff;border-radius:5px;padding:.1rem .35rem;letter-spacing:.06em;
}

/* ışık kutusu (lightbox) */
.isik{
  position:fixed;inset:0;z-index:140;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:.7rem;
  background:rgba(20,16,12,.95);backdrop-filter:blur(4px);padding:clamp(.7rem,.5rem + .8vw,1.2rem);
  opacity:0;visibility:hidden;transition:opacity var(--gecis),visibility var(--gecis);
}
.isik.acik{opacity:1;visibility:visible}
.isik__ust{display:flex;align-items:center;justify-content:space-between;gap:1rem;color:#EDE5D6}
.isik__sayac{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.14em}
.isik__kapat{
  width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.28);
  background:rgba(255,255,255,.08);color:#fff;display:grid;place-items:center;cursor:pointer;
}
.isik__kapat:hover{background:rgba(255,255,255,.18)}
.isik__govde{position:relative;display:grid;place-items:center;min-height:0}
.isik__govde img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:var(--kose-s)}
.isik__ok{
  position:absolute;top:50%;translate:0 -50%;width:46px;height:46px;border-radius:50%;
  border:1px solid rgba(255,255,255,.28);background:rgba(20,16,12,.5);color:#fff;
  display:grid;place-items:center;cursor:pointer;transition:background var(--gecis)
}
.isik__ok:hover{background:rgba(255,255,255,.2)}
.isik__ok--geri{left:.2rem}
.isik__ok--ileri{right:.2rem}
.isik__alt{color:#CDC3B2;font-size:var(--fs-kk);text-align:center;max-width:calc(60 * var(--ch-govde));margin-inline:auto;padding-bottom:.3rem}

/* fotoğraf eklenmeden önceki yer tutucu */
.gorsel-yer{
  display:grid;place-items:center;gap:.35rem;aspect-ratio:16/10;
  border:1.5px dashed var(--cizgi);border-radius:var(--kose);
  background:color-mix(in srgb,var(--metin) 3%,transparent);color:var(--metin-2);
  font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.12em;text-transform:uppercase;
}
.gorsel-yer svg{width:26px;height:26px;opacity:.5}
.gorsel-yer--kare{aspect-ratio:1}

/* ---------- 15. ROTA BLOĞU + FOOTER ------------------------- */
.rota-blok{
  position:relative;border:1.5px dashed color-mix(in srgb,var(--vurgu) 55%,transparent);
  border-radius:var(--kose-l);background:var(--vurgu-yumusak);padding:1.3rem;margin-block:2.4rem;
  display:grid;gap:.9rem;
}
.rota-blok__ust{display:flex;align-items:center;gap:.5rem;font-family:var(--f-mono);
  font-size:var(--fs-mini);letter-spacing:.15em;text-transform:uppercase;color:var(--vurgu-metin);font-weight:600}
.rota-blok__ust svg{width:16px;height:16px}
.rota-blok__ol{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}
.rota-blok__ol li{margin:0}
.rota-blok__lk{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;text-decoration:none;
  background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:var(--kose);
  padding:.85rem 1rem;color:var(--metin);transition:transform var(--gecis),border-color var(--gecis);
}
.rota-blok__lk:hover{transform:translateX(4px);border-color:var(--vurgu);color:var(--metin)}
.rota-blok__lk span{display:grid;gap:.1rem}
.rota-blok__lk small{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.1em;
  text-transform:uppercase;color:var(--metin-2)}
.rota-blok__lk b{font-family:var(--f-baslik);font-size:1.06rem;font-weight:700;line-height:1.25}
.rota-blok__lk svg{width:18px;height:18px;color:var(--vurgu-metin);flex:0 0 auto}

.alt{
  background:#241F1A;color:#EDE5D6;margin-top:var(--dikey);
  border-top:5px solid var(--vurgu);
}
.alt a{color:#D9CFBB;text-decoration:none}
.alt a:hover{color:#fff;text-decoration:underline}
.alt__ic{display:grid;gap:2rem;padding-block:3rem 1.5rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr))}
.alt__marka{grid-column:1/-1}
@media (min-width:760px){.alt__marka{grid-column:span 2;max-width:26rem}}
.alt__marka .marka__ad{color:#F7F1E4}
.alt__marka .marka__ad em{color:#F6C453}
.alt__marka p{font-size:var(--fs-kk);color:#B4A992;margin-top:.8rem}
/* Alt bilgi sütun başlığı. Etiket YP11'de <h4> → <h2> oldu (başlık sırası
   atlaması: sayfanın son içerik başlığı h2 iken alt bilgi h4 ile devam
   ediyordu). Görsel boyut BURADA korunur; seçici artık sınıf temellidir,
   yoksa genel h2 kuralı (Fraunces + --fs-h2) alt bilgiyi devirirdi. */
.alt .alt__baslik{font-family:var(--f-mono);font-size:var(--fs-mini);letter-spacing:.15em;
  text-transform:uppercase;color:#9A8E77;margin-bottom:.8rem;font-variation-settings:normal;
  font-weight:600;line-height:1.3}
.alt ul{list-style:none;padding:0;margin:0;display:grid;gap:.45rem;font-size:var(--fs-kk)}
.alt li{margin:0}
.alt__nk{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:.5rem;vertical-align:1px}
.alt__yasal{border-top:1px solid rgba(255,255,255,.12);padding-block:1.2rem 2rem;display:grid;gap:.7rem;
  font-size:var(--fs-mini);color:#9A8E77}
.alt__yasal p{max-width:calc(70 * var(--ch-govde))}

/* ---------- 15b. KOYU TEMA (isimler) KONTRAST DÜZELTMELERİ --- */
/* Koyu zeminde "koyu dolgu + beyaz metin" kalıbı ters çalışır;
   bu bloklar dolguları altın vurguya, metni gece lacivertine çevirir. */
body[data-tema="isimler"] .dugme--ana,
body[data-tema="isimler"] .sekme[aria-selected="true"],
body[data-tema="isimler"] .harf[aria-pressed="true"],
body[data-tema="isimler"] .durak--aktif,
body[data-tema="isimler"] .ay-dugme[aria-pressed="true"]{
  background:var(--vurgu);color:var(--vurgu-uzeri);border-color:var(--vurgu);
}
body[data-tema="isimler"] .dugme--ana{box-shadow:0 10px 22px -14px rgba(246,196,83,.75)}
body[data-tema="isimler"] .dugme--ana:hover{background:#FFF3D6;color:#1B2140}
body[data-tema="isimler"] .sekme[aria-selected="true"]:hover{color:var(--vurgu-uzeri)}
body[data-tema="isimler"] .durak--aktif .durak__no,
body[data-tema="isimler"] .durak--aktif .durak__not,
body[data-tema="isimler"] .durak--aktif .durak__meyve{color:var(--vurgu-uzeri)}
body[data-tema="isimler"] .ay-dugme[aria-pressed="true"] span{color:rgba(27,33,64,.75)}
body[data-tema="isimler"] .kutu--uyari{background:rgba(194,72,59,.14);border-color:rgba(240,150,138,.45)}
body[data-tema="isimler"] .kutu--uyari .kutu__bas{color:#F1A096}
body[data-tema="isimler"] .ad-slot{
  background:rgba(255,255,255,.045);border-color:rgba(255,255,255,.22);color:rgba(244,239,226,.55);
}
body[data-tema="isimler"] .ad-slot::before{color:rgba(244,239,226,.5)}
body[data-tema="isimler"] .fis::after{background:rgba(240,150,138,.5)}

/* ---------- 16. ERİŞİLEBİLİRLİK / HAREKET / BASKI ----------- */
.gizli-gorsel{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;
}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:3px solid var(--vurgu-metin);outline-offset:3px;border-radius:6px;
}
body[data-tema="isimler"] :where(a,button,input,select,[tabindex]):focus-visible{outline-color:#F6C453}

[data-lucide]{width:20px;height:20px;display:inline-block}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;
  }
  .js [data-ac]{opacity:1;transform:none}
  .fis{transform:none}
  .isim-karti__anlam{max-height:none;opacity:1}
  .durak--aktif{transform:none}
}

@media print{
  .ust,.panel,.ara-kat,.ad-slot,.alt,.rota-blok{display:none!important}
  body{background:#fff;color:#000}
  .kart,.fis{box-shadow:none;border-color:#999}
}

/* ---------- 17. KÜÇÜK EKRAN İNCE AYARLARI ------------------- */
@media (max-width:420px){
  .fis{padding:1.25rem 1rem 1.1rem 2.2rem;border-radius:6px 12px 12px 6px}
  .fis__hizli li{grid-template-columns:1.1rem 1fr;grid-template-areas:"i b" ". v"}
  .fis__hizli svg{grid-area:i}
  .fis__hizli b{grid-area:b}
  .fis__hizli span{grid-area:v}
  .sekmeler{width:100%}
  .sekme{flex:1}
  .durak{width:8.4rem}
  .durak--aktif{width:9.2rem}
  .sayaclar{gap:1.1rem 1.6rem}
  .sayac__deger{font-size:1.6rem}
}

/* ---------- 18b. ÇEREZ ONAY ŞERİDİ (M4B) -------------------- */
/* Şerit sunucuda basılır ve önbellekli HTML'in parçasıdır; görünürlüğü
   tema/js/cerez.js açar (bkz. theme/parca/cerez-onay.php). Bu yüzden
   varsayılan durum GİZLİDİR ve [hidden] kuralı !important taşır. */
.cerez-serit[hidden],
.cerez-serit__ayarlar[hidden]{display:none!important}

.cerez-serit{
  position:fixed;inset:auto 0 0 0;z-index:110;
  background:var(--zemin-2);border-top:1px solid var(--cizgi);
  box-shadow:var(--golge-2);
  padding:1rem var(--pad-yan) calc(1rem + env(safe-area-inset-bottom,0px));
  max-height:80vh;overflow-y:auto;
}
.cerez-serit__ic{
  max-width:var(--en);margin-inline:auto;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:.9rem 1.6rem;
}
.cerez-serit__metin{flex:1 1 22rem;min-width:0}
.cerez-serit__bas{
  margin:0 0 .18rem;font-family:var(--f-baslik);
  font-size:1.02rem;font-weight:700;color:var(--metin);
}
.cerez-serit__aciklama{margin:0;font-size:var(--fs-kk);line-height:1.55;color:var(--metin-2)}
.cerez-serit__baglanti{color:var(--vurgu-metin);text-decoration:underline;font-weight:700}
.cerez-serit__baglanti:hover{color:var(--metin)}

.cerez-serit__dugmeler{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem}

/* ===========================================================
   KVKK EŞİT AĞIRLIK KURALI — DEĞİŞTİRMEYİN
   -----------------------------------------------------------
   KVKK 6698 kapsamında açık rıza "özgür irade" ile verilmiş
   olmalıdır; reddetmek kabul etmekten ZOR olursa rıza geçersiz
   sayılır (karanlık desen). Bu yüzden "Tümünü kabul et" ile
   "Yalnız zorunlu" düğmeleri TEK bir sınıftan (.cerez-serit__dugme)
   geometrisini alır: aynı yazı tipi, aynı punto, aynı font-weight,
   aynı min-width, aynı min-height, aynı padding, aynı köşe.
   İkisi de DOLGULU zemin ve yüksek kontrastlı metin kullanır;
   biri çerçevesiz/soluk/küçük/gizli YAPILMAZ, sıradan kaldırılmaz,
   opacity ya da filter ile geri plana atılmaz.
   Yalnız "Ayarlar" düğmesi üçüncül biçimdedir — o bir RET yolu
   değil, ayrıntılı seçim yoludur; ret seçeneği yanında tam
   ağırlıkta durmaya devam eder.
   =========================================================== */
.cerez-serit__dugme{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--f-govde);font-size:.94rem;font-weight:800;line-height:1.2;
  min-width:11.5rem;min-height:2.85rem;padding:.72rem 1.25rem;
  border-radius:99px;border:1.5px solid transparent;cursor:pointer;
  text-align:center;
  transition:transform var(--gecis),filter var(--gecis),box-shadow var(--gecis);
}
.cerez-serit__dugme:hover{transform:translateY(-2px);filter:brightness(1.05)}
.cerez-serit__dugme:active{transform:translateY(0)}
/* Kabul ve ret: aynı ölçü, aynı DOLGU mantığı, aynı kontrast güvencesi.
   Metin rengi ikisinde de --zemin-2'dir; bu bilinçli bir seçimdir:
   bölüm 2'deki her tema --vurgu-metin ve --metin jetonlarını "--zemin-2
   üzerinde okunabilir (AA)" olacak şekilde tanımlar. Ön plan/arka planı
   takas etmek kontrast ORANINI değiştirmez, dolayısıyla iki düğme de her
   temada (açık ya da koyu) aynı kontrast sınıfında kalır.
   --vurgu-uzeri KULLANILMAZ: o jeton --vurgu ile eşleşmek üzere üretilmiştir;
   --vurgu-metin ile birleştirildiğinde "rehber" temasında kahve üstü kahve
   çıkıp 2.4:1'e düşüyordu (ölçüldü) ve kabul düğmesi rette göre SÖNÜK
   kalıyordu — eşit ağırlık kuralının ihlali. */
.cerez-serit__dugme--kabul{
  background:var(--vurgu-metin);color:var(--zemin-2);border-color:var(--vurgu-metin);
}
.cerez-serit__dugme--ret{
  background:var(--metin);color:var(--zemin-2);border-color:var(--metin);
}
.cerez-serit__dugme--kaydet{
  background:var(--vurgu-metin);color:var(--zemin-2);border-color:var(--vurgu-metin);
  min-width:9rem;
}

.cerez-serit__ayar-dugme{
  background:transparent;border:0;cursor:pointer;
  font-family:var(--f-govde);font-size:var(--fs-kk);font-weight:700;
  color:var(--metin-2);text-decoration:underline;padding:.55rem .4rem;min-height:2.85rem;
}
.cerez-serit__ayar-dugme:hover{color:var(--metin)}

.cerez-serit__ayarlar{
  max-width:var(--en);margin:.95rem auto 0;
  border-top:1px dashed var(--cizgi);padding-top:.95rem;
}
.cerez-serit__liste{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}
.cerez-serit__etiket{
  display:grid;grid-template-columns:1.15rem 1fr;gap:.6rem;align-items:start;
  cursor:pointer;font-size:var(--fs-kk);color:var(--metin);
}
.cerez-serit__etiket input{width:1.05rem;height:1.05rem;margin:.22rem 0 0;accent-color:var(--vurgu-metin)}
.cerez-serit__etiket input:disabled{cursor:not-allowed;opacity:.65}
.cerez-serit__etiket b{display:block;font-weight:800}
.cerez-serit__etiket small{display:block;font-size:var(--fs-mini);line-height:1.5;color:var(--metin-2)}
.cerez-serit__ayar-alt{margin-top:.95rem;display:flex;justify-content:flex-end}

.cerez-serit :focus-visible{outline:2px solid var(--vurgu-metin);outline-offset:3px;border-radius:99px}

/* Dar ekran: her iki karar düğmesi de tam genişlik olur — eşitlik korunur. */
@media (max-width:640px){
  .cerez-serit__dugmeler{width:100%}
  .cerez-serit__dugme--kabul,
  .cerez-serit__dugme--ret{flex:1 1 100%;min-width:0}
  .cerez-serit__ayar-dugme{flex:1 1 100%;text-align:center}
  .cerez-serit__ayar-alt{justify-content:stretch}
  .cerez-serit__dugme--kaydet{flex:1 1 100%}
}

@media print{
  .cerez-serit{display:none!important}
}

/* ---------- 18a. TIBBİ UYARI · KÜNYE · KAYNAK (M4B) --------- */
/* Bu blok yalnız YENİ sınıf tanımlar; 11. bölümdeki .kutu / .yazar
   ailesine dokunmaz. Kutular Site\Render\Sayfa::yazi() tarafından
   gövdeye gömülür ve şablondan kaldırılamaz — görünürlüğünü CSS ile
   de kısmayın: display:none verilen bir sorumluluk reddi, hiç
   basılmamış bir sorumluluk reddiyle aynı hukuki sonucu doğurur.
   Satır içi style KULLANILMAZ (site CSP'si script/style için nonce
   taşımaz; bkz. CLAUDE.md bölüm 9). */

.tibbi-uyari{
  --uyari-renk:#C2483B;
  --uyari-koyu:#A63A2E;
  border-radius:var(--kose);
  border:1px solid color-mix(in srgb,var(--uyari-renk) 34%,var(--cizgi));
  background:color-mix(in srgb,var(--uyari-renk) 7%,var(--zemin-2));
  margin-block:1.5rem;
}

/* --- özet biçim: yazının başında, tek cümlelik şerit --- */
.tibbi-uyari--ozet{
  display:flex;gap:.7rem;align-items:flex-start;
  padding:.85rem 1rem;
  border-left:4px solid var(--uyari-renk);
  border-radius:0 var(--kose-s) var(--kose-s) 0;
}
.tibbi-uyari__im{
  flex:0 0 auto;display:grid;place-items:center;
  width:1.6rem;height:1.6rem;color:var(--uyari-koyu);
}
.tibbi-uyari__im svg{width:17px;height:17px}
.tibbi-uyari__metin{
  margin:0;font-size:var(--fs-kk);line-height:1.6;color:var(--metin-2);
}
.tibbi-uyari__metin b{color:var(--uyari-koyu);font-weight:800}

/* --- tam biçim: yazının sonunda, madde madde --- */
.tibbi-uyari--tam{padding:1.15rem 1.25rem}
.tibbi-uyari__bas{
  display:flex;align-items:center;gap:.55rem;margin:0 0 .7rem;
  font-family:var(--f-mono);font-size:var(--fs-mini);
  letter-spacing:.13em;text-transform:uppercase;font-weight:600;
  color:var(--uyari-koyu);
}
.tibbi-uyari__bas svg{width:16px;height:16px}
.tibbi-uyari__liste{
  margin:0;padding-left:1.15rem;display:grid;gap:.45rem;
  font-size:var(--fs-kk);line-height:1.6;color:var(--metin-2);
}
.tibbi-uyari__alt{margin:.85rem 0 0;font-size:var(--fs-mini)}
.tibbi-uyari__link{
  color:var(--uyari-koyu);text-decoration:underline;font-weight:700;
}
.tibbi-uyari__link:hover{color:var(--metin)}

/* --- 112 acil kutusu: uyarının içinde en yüksek kontrastlı blok --- */
.acil-kutu{
  display:flex;gap:.85rem;align-items:center;
  margin:1rem 0 0;padding:.75rem .95rem;
  border-radius:var(--kose-s);
  border:1px solid color-mix(in srgb,var(--uyari-renk) 48%,var(--cizgi));
  background:color-mix(in srgb,var(--uyari-renk) 14%,var(--zemin-2));
}
.acil-kutu__no{
  flex:0 0 auto;display:grid;place-items:center;
  min-width:3.1rem;padding:.3rem .55rem;border-radius:var(--kose-s);
  background:var(--uyari-koyu);color:#FFF7F5;
  font-family:var(--f-mono);font-weight:600;font-size:1.05rem;
  letter-spacing:.05em;
}
.acil-kutu__metin{
  font-size:var(--fs-kk);line-height:1.55;color:var(--metin);font-weight:600;
}

/* --- künye ek satırları (11. bölümdeki .yazar ailesinin devamı) --- */
.yazar__unvan{
  margin-top:.1rem;font-family:var(--f-mono);
  font-size:var(--fs-mini);letter-spacing:.06em;color:var(--metin-2);
}
.yazar__meta{
  margin-top:.5rem;font-family:var(--f-mono);
  font-size:var(--fs-mini);letter-spacing:.05em;color:var(--metin-2);
}

/* Koyu zeminli "isimler" temasında kırmızı tonu okunur kalmalı
   (11. bölümdeki .kutu--uyari için yapılanın aynısı). */
body[data-tema="isimler"] .tibbi-uyari{
  background:rgba(194,72,59,.14);
  border-color:rgba(240,150,138,.45);
}
body[data-tema="isimler"] .tibbi-uyari__im,
body[data-tema="isimler"] .tibbi-uyari__bas,
body[data-tema="isimler"] .tibbi-uyari__metin b,
body[data-tema="isimler"] .tibbi-uyari__link{color:#F1A096}
body[data-tema="isimler"] .acil-kutu{
  background:rgba(194,72,59,.24);border-color:rgba(240,150,138,.55);
}
body[data-tema="isimler"] .acil-kutu__no{background:#F1A096;color:#2A1512}

@media (max-width:520px){
  .acil-kutu{flex-wrap:wrap;gap:.55rem}
}

/* Baskıda da görünür kalır: kâğıda dökülen bir yazıda sorumluluk
   reddinin kaybolması, ekranda kaybolmasından farksızdır. */
@media print{
  .tibbi-uyari,.acil-kutu{border-color:#999;background:#fff}
}

/* ---------- 19. M6: İLETİŞİM FORMU -------------------------- */
/* Bu blok YALNIZ yeni sınıf tanımlar; 8. bölümdeki .dugme ve 11.
   bölümdeki .kutu ailelerine DOKUNMAZ — form onları olduğu gibi
   yeniden kullanır. Renkler sabit değil, 2. bölümdeki tema
   jetonlarıdır; böylece koyu "isimler" temasında da okunur kalır.
   Satır içi style KULLANILMAZ (site CSP'si script/style için nonce
   taşımaz; bkz. CLAUDE.md bölüm 9). */

.iletisim{margin-block:1.8rem}
.iletisim__baslik{
  font-family:var(--f-baslik);font-size:var(--fs-h3);
  margin:0 0 .9rem;color:var(--metin);
}
.iletisim__sonuc{margin-block:0 1.1rem}

.iletisim-form{
  background:var(--zemin-2);border:1px solid var(--cizgi);
  border-radius:var(--kose);padding:1.25rem;box-shadow:var(--golge-1);
  display:grid;gap:1.05rem;
}

/* ===========================================================
   BAL KÜPÜ (honeypot) — GÖRÜNÜR HÂLE GETİRMEYİN
   -----------------------------------------------------------
   "website" alanı bot kalkanının birinci katmanıdır. Ekran
   dışına taşınır ama display:none / visibility:hidden VERİLMEZ:
   bazı otomatik doldurucular o iki bildirimi görüp alanı atlar,
   kalkan da işlevini yitirir. aria-hidden ve tabindex=-1 ile
   ekran okuyucudan ve klavye sırasından zaten çıkarılmıştır.
   Bu kuralı "temizlik olsun" diye display:none'a çevirmeyin.
   =========================================================== */
.iletisim-form__kapan{
  position:absolute;left:-9999px;top:auto;
  width:1px;height:1px;overflow:hidden;
}

.iletisim-form__satir{display:grid;gap:1.05rem}
@media (min-width:720px){
  .iletisim-form__satir{grid-template-columns:1fr 1fr}
}

.iletisim-form__grup{display:grid;gap:.4rem;min-width:0}

.iletisim-form__etiket{
  font-family:var(--f-govde);font-weight:800;
  font-size:var(--fs-kk);color:var(--metin);
}
.iletisim-form__zorunlu{color:#C2483B;font-weight:800}

/* Alan kutuları: arama çubuğundaki .alan hapından bilinçli olarak
   AYRIDIR — bu form uzun metin alır, hap biçimi textarea'da kırılır. */
.iletisim-form__alan{
  width:100%;font:inherit;font-size:1rem;color:var(--metin);
  background:var(--zemin);border:1.5px solid var(--cizgi);
  border-radius:var(--kose-s);padding:.65rem .8rem;
  transition:border-color var(--gecis),box-shadow var(--gecis);
}
.iletisim-form__alan::placeholder{color:var(--metin-2);opacity:.85}
.iletisim-form__alan:focus{
  outline:0;border-color:var(--vurgu);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--vurgu) 18%,transparent);
}
.iletisim-form__alan--coksatir{resize:vertical;min-height:9rem;line-height:1.6}
.iletisim-form__alan--hatali{border-color:#C2483B}
.iletisim-form__alan--hatali:focus{
  box-shadow:0 0 0 4px color-mix(in srgb,#C2483B 20%,transparent);
}

.iletisim-form__ipucu{
  margin:0;font-size:var(--fs-mini);line-height:1.55;color:var(--metin-2);
}
.iletisim-form__hata{
  margin:0;font-size:var(--fs-kk);font-weight:700;line-height:1.5;color:#C2483B;
}

/* KVKK onayı: kutu + etiket yan yana, yasal bağlantılar altta.
   Bağlantılar <label> içinde DEĞİLDİR (tıklama hem gezinme hem onay
   değişimi tetiklerdi); aria-describedby ile ilişkilendirilir. */
.iletisim-form__onay{
  grid-template-columns:1.15rem 1fr;align-items:start;
  gap:.35rem .65rem;
  border-top:1px dashed var(--cizgi);padding-top:1rem;
}
.iletisim-form__kutu{
  width:1.05rem;height:1.05rem;margin:.2rem 0 0;
  accent-color:var(--vurgu-metin);cursor:pointer;
}
.iletisim-form__onay-etiket{
  font-size:var(--fs-kk);line-height:1.55;color:var(--metin);cursor:pointer;
}
.iletisim-form__yasal{
  grid-column:2;margin:0;font-size:var(--fs-mini);
  line-height:1.55;color:var(--metin-2);
}
.iletisim-form__onay .iletisim-form__hata{grid-column:2}
.iletisim-form__baglanti{
  color:var(--vurgu-metin);text-decoration:underline;font-weight:700;
}
.iletisim-form__baglanti:hover{color:var(--metin)}

.iletisim-form__alt{
  display:flex;flex-wrap:wrap;align-items:center;gap:.7rem 1.1rem;
  border-top:1px solid var(--cizgi);padding-top:1rem;
}
.iletisim-form__not{margin:0;font-size:var(--fs-mini);color:var(--metin-2)}

.iletisim-form :focus-visible{outline:2px solid var(--vurgu-metin);outline-offset:3px}

/* Koyu zeminli "isimler" temasında kırmızı uyarı tonu okunur kalmalı
   (18a bölümündeki .tibbi-uyari için yapılanın aynısı). */
body[data-tema="isimler"] .iletisim-form__zorunlu,
body[data-tema="isimler"] .iletisim-form__hata{color:#F1A096}
body[data-tema="isimler"] .iletisim-form__alan--hatali{border-color:#F1A096}

@media (max-width:520px){
  .iletisim-form{padding:1rem}
  .iletisim-form__alt{align-items:stretch}
  .iletisim-form__alt .dugme{width:100%}
}

/* Baskıda form gövdesi anlamsızdır; yalnız sonuç kutusu kalır. */
@media print{
  .iletisim-form{display:none}
}

/* ---------- 20. YP2: ARAÇLAR -------------------------------- */
/* Bu blok YALNIZ yeni sınıf tanımlar; 8. bölümdeki .dugme, 9. bölümdeki
   .arac kartı, 11. bölümdeki .tablo/.kutu ve 14b'deki .hesap ailelerine
   DOKUNMAZ — araç sayfaları onları olduğu gibi yeniden kullanır.
   Renkler sabit değil, 2. bölümdeki tema jetonlarıdır; böylece koyu
   "isimler" temasında da okunur kalır. Satır içi style KULLANILMAZ
   (site CSP'si script/style için nonce taşımaz; CLAUDE.md bölüm 9).

   ==========================================================
   DİKKAT — .arac ADI İKİ FARKLI ŞEYDE KULLANILIYOR
   ----------------------------------------------------------
   9. bölümdeki `.arac` Faz-1'den gelen bir KART bağlantısıdır
   (<a class="arac">) ve hover'da yukarı zıplar. YP2'de araç
   sayfasının KÖK öğesi de sözleşme (3.3) gereği `.arac`
   sınıfını taşır: <div class="arac" data-arac="{slug}">.
   Çakışmayı önlemek için aşağıdaki kurallar `[data-arac]`
   özniteliğiyle KAPSANMIŞTIR — kart kuralları olduğu gibi
   yürürlükte kalır, kök kap yalnız kendi kurallarını alır.
   Bu kapsamı KALDIRMA: kaldırılırsa hub'daki araç kartları
   kart görünümünü kaybeder.
   ========================================================== */

/* 20.1 Araç kök kabı */
.arac[data-arac]{
  display:block;position:relative;
  background:var(--zemin-2);border:1px solid var(--cizgi);
  border-radius:var(--kose-l);padding:clamp(1.1rem,.8rem + 1vw,1.8rem);
  box-shadow:var(--golge-2);overflow:hidden;
  margin-block:1.6rem;color:var(--metin);text-decoration:none;
}
/* Kart kuralındaki hover zıplaması kök kapta anlamsızdır. */
.arac[data-arac]:hover{
  transform:none;box-shadow:var(--golge-2);border-color:var(--cizgi);
}
.arac[data-arac]::before{
  content:"";position:absolute;inset:0 0 auto;height:5px;
  background:linear-gradient(90deg,var(--vurgu),color-mix(in srgb,var(--vurgu) 30%,var(--zemin-2)));
}

/* 20.2 Eğlence şeridi — sözleşme 3.6, KALDIRILAMAZ.
   Şablon bunu tools.tip='eglence' iken kendisi basar ve araç
   arayüzünden ÖNCE gelir. display:none VERİLMEZ: basılmamış bir
   uyarıyla aynı sonucu doğurur (23B.2'deki tıbbi uyarı kuralı). */
.arac__eglence-serit{
  display:flex;gap:.6rem;align-items:flex-start;
  background:color-mix(in srgb,#C2483B 10%,var(--zemin-2));
  border:1px solid color-mix(in srgb,#C2483B 40%,var(--cizgi));
  border-left:5px solid #C2483B;
  border-radius:var(--kose-s);padding:.85rem 1rem;margin-block:1.2rem;
  font-size:var(--fs-kk);line-height:1.55;color:var(--metin);
}
.arac__eglence-serit b{color:#A63A2E;font-weight:800}

/* 20.3 "Verileriniz cihazınızda saklanır" rozeti (yerel_veri=1) */
.arac__yerel-rozet{
  display:inline-flex;align-items:center;gap:.45rem;
  margin-top:1rem;padding:.4rem .8rem;border-radius:99px;
  background:var(--vurgu-yumusak);
  border:1px dashed color-mix(in srgb,var(--vurgu) 45%,transparent);
  font-family:var(--f-mono);font-size:var(--fs-mini);
  letter-spacing:.05em;color:var(--vurgu-metin);
}
.arac__yerel-rozet svg{width:14px;height:14px}

/* 20.4 Form */
.arac__form{display:grid;gap:1.05rem;margin-top:1.1rem}
@media (min-width:640px){
  .arac__form--iki{grid-template-columns:1fr 1fr}
  .arac__form--iki .arac__form-alt{grid-column:1 / -1}
}
.arac__form-alt{
  display:flex;flex-wrap:wrap;align-items:center;gap:.7rem 1rem;
  border-top:1px solid var(--cizgi);padding-top:1rem;
}

.arac__alan{display:grid;gap:.4rem;min-width:0}
.arac__alan-etiket{
  font-family:var(--f-govde);font-weight:800;
  font-size:var(--fs-kk);color:var(--metin);
}
.arac__alan-girdi{
  width:100%;font:inherit;font-size:1rem;color:var(--metin);
  background:var(--zemin);border:1.5px solid var(--cizgi);
  border-radius:12px;padding:.68rem .85rem;
  transition:border-color var(--gecis),box-shadow var(--gecis);
}
.arac__alan-girdi::placeholder{color:var(--metin-2);opacity:.85}
.arac__alan-girdi:focus{
  outline:0;border-color:var(--vurgu);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--vurgu) 18%,transparent);
}
.arac__alan-girdi--hatali{border-color:#C2483B}
.arac__alan-girdi--hatali:focus{
  box-shadow:0 0 0 4px color-mix(in srgb,#C2483B 20%,transparent);
}
.arac__alan-ipucu{margin:0;font-size:var(--fs-mini);line-height:1.5;color:var(--metin-2)}
.arac__alan-hata{margin:0;font-size:var(--fs-kk);font-weight:700;line-height:1.5;color:#C2483B}

/* Onay kutusu: kutu solda, etiket sağda. */
.arac__alan--onay{
  grid-template-columns:1.15rem 1fr;align-items:start;gap:.3rem .6rem;
}
.arac__alan--onay .arac__alan-etiket{font-weight:600;cursor:pointer}
.arac__alan--onay .arac__alan-ipucu,
.arac__alan--onay .arac__alan-hata{grid-column:2}
.arac__alan-kutu{
  width:1.05rem;height:1.05rem;margin:.28rem 0 0;
  accent-color:var(--vurgu-metin);cursor:pointer;
}

/* .dugme ailesinin üzerine yalnız hizalama ekler. */
.arac__dugme{flex:0 0 auto}
@media (max-width:520px){
  .arac__dugme{width:100%}
}

/* 20.5 Sonuç kutusu */
.arac__sonuc{
  margin-top:1.4rem;display:grid;gap:.85rem;
  background:var(--vurgu-yumusak);
  border:1px solid color-mix(in srgb,var(--vurgu) 45%,transparent);
  border-radius:var(--kose);padding:1.15rem;
}
/* JS henüz sonuç yazmadıysa kutu hiç görünmez; boş bir renkli
   dikdörtgen "araç bozuk" izlenimi verirdi. */
.arac__sonuc:empty{display:none}
.arac__sonuc--hatali{
  background:color-mix(in srgb,#C2483B 8%,var(--zemin-2));
  border-color:color-mix(in srgb,#C2483B 38%,var(--cizgi));
}
.arac__hata{margin:0;font-size:var(--fs-kk);font-weight:700;line-height:1.55;color:#A63A2E}

.arac__sonuc-buyuk{
  font-family:var(--f-baslik);font-weight:700;line-height:1.08;
  font-size:clamp(1.6rem,1.25rem + 1.5vw,2.3rem);
  font-variation-settings:"opsz" 90,"SOFT" 50,"WONK" 1;
  color:var(--metin);margin:0;
}
.arac__sonuc-alt{margin:0;font-size:var(--fs-kk);color:var(--metin-2)}
.arac__sonuc-baslik{font-size:var(--fs-h3);margin:.2rem 0 0}
.arac__sonuc-metin{margin:0;font-size:var(--fs-kk);line-height:1.6;color:var(--metin)}
.arac__sonuc-not{margin:0;font-size:var(--fs-mini);line-height:1.55;color:var(--metin-2)}
.arac__sonuc-uyari{margin:0;font-size:var(--fs-kk);line-height:1.55;font-weight:700;color:#A63A2E}
.arac__sonuc-liste{
  margin:0;padding-left:1.15rem;font-size:var(--fs-kk);
  color:var(--metin);display:grid;gap:.3rem;
}

.arac__sonuc-satirlar{background:var(--zemin-2);border-radius:var(--kose-s);padding:.2rem .9rem}
.arac__sonuc-satir{
  display:flex;justify-content:space-between;gap:1rem;
  padding:.58rem 0;border-bottom:1px dashed var(--cizgi);font-size:var(--fs-kk);
}
.arac__sonuc-satir:last-child{border-bottom:0}
.arac__sonuc-satir b{font-family:var(--f-mono);font-weight:600;color:var(--metin)}

/* 20.6 "Nasıl hesaplanır?" — yöntem ve formül bloğu */
.arac__yontem{
  margin-block:1.6rem;background:var(--zemin-2);
  border:1px solid var(--cizgi);border-radius:var(--kose);
  padding:clamp(1rem,.8rem + .7vw,1.5rem);
}
.arac__yontem > h2,.arac__yontem > h3{margin-top:0}
.arac__yontem p,.arac__yontem li{font-size:var(--fs-kk);color:var(--metin-2);line-height:1.65}
.arac__yontem ul,.arac__yontem ol{margin:.6rem 0;padding-left:1.15rem;display:grid;gap:.3rem}
.arac__yontem code,.arac__formul{
  font-family:var(--f-mono);font-size:.86rem;
  background:var(--zemin-3);border-radius:6px;padding:.12rem .38rem;color:var(--metin);
}
.arac__formul{
  display:block;padding:.75rem .9rem;margin-block:.8rem;
  border-left:3px solid var(--vurgu);border-radius:0 var(--kose-s) var(--kose-s) 0;
  overflow-x:auto;white-space:pre-wrap;
}
/* Veri sürümü / kaynak damgası — WHO ve aşı takvimi gibi araçlarda
   sözleşme gereği GÖRÜNÜR basılır (3.7 ve 3.8). Gizleme. */
.arac__veri-damgasi{
  margin-top:.9rem;font-family:var(--f-mono);
  font-size:var(--fs-mini);letter-spacing:.05em;color:var(--metin-2);
}

/* Doğrulanmamış referans/liste uyarısı (LopediArac.dogrulamaUyarisi).
   Damgadan AYRI ve daha görünür: damga bir künyedir, bu bir uyarıdır.
   display:none VERİLMEZ — doğrulanmamış bir tıbbi listeyi damgasız
   göstermek, okuyucunun onu doğrulanmış sanmasına yol açar. */
.arac__veri-uyarisi{
  /* Renk BURADA tanımlanır: --uyari-renk 18a bölümünde .tibbi-uyari
     kapsamına yazılmıştır ve buraya cascade ETMEZ. Aynı değeri kullanıyoruz
     ki iki uyarı görsel olarak akraba dursun. */
  --arac-uyari-renk:#C2483B;
  margin-top:.7rem;padding:.7rem .9rem;
  border-left:3px solid var(--arac-uyari-renk);
  background:rgba(194,72,59,.07);
  font-size:var(--fs-kk);line-height:1.6;color:var(--metin);
}
/* color-mix desteklenmeyen tarayıcıda düz zemin: --uyari-yumusak yoksa
   ikinci değer devreye girer, kural her koşulda görünür kalır. */

/* 20.7 Araç hub kartları (/hesaplama) */
.arac-hub{margin-block:1.8rem}
.arac-hub__giris{
  max-width:var(--en-dar);font-size:var(--fs-kk);
  color:var(--metin-2);line-height:1.7;margin-bottom:1.2rem;
}
.arac-hub__izgara{
  display:grid;gap:var(--aralik);
  grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));
}
.arac-hub__kart{
  display:grid;gap:.5rem;align-content:start;
  background:var(--zemin-2);border:1px solid var(--cizgi);
  border-radius:var(--kose-l);padding:1.15rem;
  text-decoration:none;color:var(--metin);
  transition:transform var(--gecis),box-shadow var(--gecis),border-color var(--gecis);
}
.arac-hub__kart:hover{
  transform:translateY(-4px);box-shadow:var(--golge-2);
  border-color:var(--vurgu);color:var(--metin);
}
.arac-hub__kart-ust{
  display:flex;align-items:center;justify-content:space-between;gap:.6rem;
  font-family:var(--f-mono);font-size:var(--fs-mini);
  letter-spacing:.12em;text-transform:uppercase;color:var(--vurgu-metin);font-weight:600;
}
.arac-hub__kart-ad{
  font-family:var(--f-baslik);font-weight:700;font-size:1.1rem;line-height:1.25;
  font-variation-settings:"opsz" 40,"SOFT" 45,"WONK" 0;
}
.arac-hub__kart-aciklama{font-size:var(--fs-kk);color:var(--metin-2);line-height:1.6}
/* Eğlence araçları listede de ayırt edilir (sözleşme 3.6 ruhu). */
.arac-hub__kart--eglence .arac-hub__kart-ust{color:#A63A2E}

/* Izgara <ul>'dur: kartlar anlamsal bir listedir ve ekran okuyucu "N öğe"
   diyebilmelidir. Madde imi ve varsayılan dolgu burada söner; <li> kendisi
   grid öğesi olduğu için kartın kutuyu tam doldurması ona bağlıdır. */
.arac-hub__izgara{list-style:none;padding:0;margin:0}
.arac-hub__izgara>li{display:grid}
.arac-hub__kart-tip{white-space:nowrap}

/* Eğlence etiketi tip rozetinden AYRI bir düğümdür ve öyle kalmalıdır:
   "Eğlence" tipini okumayan biri bile bu çerçeveli etiketi görür. Rengi
   soluklaştırma ya da yalnız tip rozetiyle birleştirme — hub'da gezinen
   okuyucu, aracı tıklamadan önce bilimsel olmadığını bilmelidir. */
.arac-hub__kart-eglence{
  flex:none;padding:.14rem .5rem;border:1px solid currentColor;
  border-radius:999px;font-size:var(--fs-mini);letter-spacing:.06em;
  text-transform:none;font-weight:600;
}

/* 20.8 Sıralanabilir tablo başlığı (sözleşme 3.9)
   Düğme, <th>'nin kendi dolgusunu NEGATİF marjla dengeler; böylece
   11. bölümdeki `.tablo th` kuralına dokunmadan tüm hücre tıklanabilir
   olur. `.tablo th` dolgusu değişirse burayı da güncelle. */
.tablo__sirala{
  display:inline-flex;align-items:center;justify-content:space-between;gap:.4rem;
  width:calc(100% + 1.8rem);margin:-.7rem -.9rem;padding:.7rem .9rem;
  background:none;border:0;border-radius:0;
  font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;
  text-align:left;cursor:pointer;
}
.tablo__sirala:hover{color:var(--vurgu-metin)}
.tablo__sirala-metin{display:inline-block}
.tablo__sirala-im{
  flex:0 0 auto;width:0;height:0;
  border-left:4px solid transparent;border-right:4px solid transparent;
  border-bottom:5px solid currentColor;opacity:.3;
  transition:transform var(--gecis),opacity var(--gecis);
}
.tablo th[aria-sort="ascending"] .tablo__sirala-im{opacity:1}
.tablo th[aria-sort="descending"] .tablo__sirala-im{opacity:1;transform:rotate(180deg)}
.tablo th[aria-sort="ascending"],
.tablo th[aria-sort="descending"]{color:var(--vurgu-metin)}
/* JS yoksa düğme hiçbir şey yapmaz: imleç ve ok sinyali verilmez
   (onyukleme.js <html> üzerine "js" sınıfını koyar). */
html:not(.js) .tablo__sirala{cursor:default}
html:not(.js) .tablo__sirala-im{display:none}

/* 20.9 Koyu zeminli "isimler" teması — kırmızı/uyarı tonları okunur
   kalmalı (18a ve 19. bölümde yapılanın aynısı). */
body[data-tema="isimler"] .arac__alan-hata,
body[data-tema="isimler"] .arac__hata,
body[data-tema="isimler"] .arac__sonuc-uyari,
body[data-tema="isimler"] .arac__eglence-serit b{color:#F1A096}
body[data-tema="isimler"] .arac__alan-girdi--hatali{border-color:#F1A096}

/* 20.10 Dar ekran */
@media (max-width:520px){
  .arac[data-arac]{padding:1rem;border-radius:var(--kose)}
  .arac__form-alt{align-items:stretch}
  .arac__sonuc{padding:.95rem}
  .arac__sonuc-satir{flex-direction:column;gap:.15rem}
  .arac__sonuc-satir b{align-self:flex-start}
  .arac-hub__izgara{grid-template-columns:1fr}
}

/* 20.11 Hareket tercihi — 16. bölümdeki genel kural geçişleri zaten
   kısar; burada yalnız zıplama kaldırılır ve sıralama oku yönünü
   korur (geçiş kapanınca transform'un kendisi silinmemeli). */
@media (prefers-reduced-motion:reduce){
  .arac-hub__kart:hover{transform:none}
  .tablo th[aria-sort="descending"] .tablo__sirala-im{transform:rotate(180deg)}
}

/* 20.12 Baskı: form ve düğmeler kâğıtta anlamsızdır, sonuç kalır. */
@media print{
  .arac__form,.arac__dugme,.tablo__sirala-im{display:none!important}
  .arac[data-arac],.arac__sonuc{box-shadow:none;border-color:#999}
}

/* 20.13 KONTROL LİSTESİ (dogum-cantasi-listesi.js)
   Liste .arac__form'un DIŞINA, doğrudan kök kaba basılır. Gerekçe: 20.12
   formu baskıda gizler; liste form içinde olsaydı kâğıda hiç inmezdi.
   Düğmeler bilinçli olarak form içinde kalır ve kâğıda inmez. */
.canta{display:grid;gap:1.4rem;margin-top:1.4rem}

.canta__ilerleme{display:grid;gap:.45rem}
.canta__ilerleme-metin{
  margin:0;font-family:var(--f-mono);
  font-size:var(--fs-mini);letter-spacing:.05em;color:var(--metin-2);
}
/* <progress> bilinçli seçildi: satır içi style gerektirmez (site CSP'si) ve
   ekran okuyucuya kendi doğal anlamını verir. Tarayıcı farkları accent-color
   ile kapatılır; ::-webkit-* kuralları yalnız görsel incedir. */
.canta__cubuk{
  -webkit-appearance:none;appearance:none;
  width:100%;height:9px;border:0;border-radius:99px;
  background:var(--zemin-3);color:var(--vurgu);accent-color:var(--vurgu);
}
.canta__cubuk::-webkit-progress-bar{background:var(--zemin-3);border-radius:99px}
.canta__cubuk::-webkit-progress-value{background:var(--vurgu);border-radius:99px}
.canta__cubuk::-moz-progress-bar{background:var(--vurgu);border-radius:99px}

.canta__bolum{display:grid;gap:.55rem}
.canta__bolum-ad{
  margin:0;font-size:var(--fs-h3);
  padding-bottom:.35rem;border-bottom:1px solid var(--cizgi);
}
.canta__liste{list-style:none;margin:0;padding:0;display:grid;gap:.15rem}
.canta__madde{
  display:flex;align-items:baseline;flex-wrap:wrap;gap:.3rem .6rem;
  padding:.42rem .2rem;border-bottom:1px dashed var(--cizgi);
  font-size:var(--fs-kk);line-height:1.5;
}
.canta__madde:last-child{border-bottom:0}
.canta__kutu{
  flex:0 0 auto;width:1.05rem;height:1.05rem;
  accent-color:var(--vurgu-metin);cursor:pointer;
}
.canta__etiket{flex:1 1 12rem;color:var(--metin);cursor:pointer}
/* İşaretli madde soluklaşır ama ÜSTÜ ÇİZİLMEZ: kâğıda basıldığında üstü
   çizili metin okunmaz hâle gelir ve liste kontrol edilemez. */
.canta__madde--isaretli .canta__etiket{color:var(--metin-2)}
.canta__git{
  flex:0 0 auto;font-size:var(--fs-mini);font-weight:700;
  color:var(--vurgu-metin);text-decoration:underline;
}

/* 20.14 KALEM İZGARASI VE ORAN ÇUBUKLARI
   (bebek-maliyet-hesaplayici.js · bebek-odasi-butce.js) */
.kalem-izgara{
  display:grid;gap:.9rem 1.1rem;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));
}
.kalem-satir{min-width:0}
.kalem-satir__git{
  font-size:var(--fs-mini);font-weight:700;
  color:var(--vurgu-metin);text-decoration:underline;
}
.kalem-satir--butce{display:grid;gap:.35rem}
.kalem-satir--butce .arac__alan--onay{margin-top:.1rem}
/* "Aldım" işaretli kalem görsel olarak geri çekilir; tutar silinmez, yalnız
   kalan alışveriş toplamından düşer (araç bunu sonuç kutusunda söyler). */
.kalem-satir--alindi .arac__alan-etiket{color:var(--metin-2)}
.kalem-satir--alindi .arac__alan-girdi{background:var(--zemin-2);opacity:.9}

.oran-liste{display:grid;gap:.7rem}
.oran-satir{display:grid;gap:.3rem}
.oran-satir__ust{
  display:flex;justify-content:space-between;gap:.8rem;
  font-size:var(--fs-kk);color:var(--metin);
}
.oran-satir__ad{min-width:0;overflow-wrap:anywhere}
.oran-satir__deger{
  flex:0 0 auto;font-family:var(--f-mono);
  font-weight:600;white-space:nowrap;
}
.oran-cubuk{
  height:9px;border-radius:99px;background:var(--zemin-3);overflow:hidden;
}
/* Genişlik --oran değişkeninden gelir; betik onu setProperty ile yazar.
   Sabit bir sınıf listesi (yuzde-10, yuzde-20 …) hem kaba hem yanlış olurdu. */
.oran-cubuk__dolgu{
  display:block;height:100%;width:var(--oran,0%);
  background:var(--vurgu);border-radius:99px;
}

/* Dışa aktarım geri düşüşü: dosya indirilemeyen tarayıcıda JSON metni
   kopyalanabilir biçimde gösterilir. */
.arac__disa-aktarim{
  width:100%;font-family:var(--f-mono);font-size:.8rem;
  color:var(--metin);background:var(--zemin);
  border:1.5px solid var(--cizgi);border-radius:12px;padding:.7rem .8rem;
}

/* 20.15 BASKI — "yalnız liste görünsün"
   .baskida-gizle sınıfını dogum-cantasi-listesi.js koyar: kök öğenin
   atalarının kardeşleri işaretlenir, böylece kâğıda yalnız listeyi taşıyan
   zincir iner. Sınıf adı SAYILMAZ — üst bant/alt bilgi sınıfları değişince
   sessizce bozulurdu.

   DİKKAT: betik, içinde .tibbi-uyari / .acil-kutu / .affiliate-aciklama
   bulunan blokları BİLİNÇLİ OLARAK işaretlemez. Kâğıda inmeyen bir
   sorumluluk reddi, hiç basılmamış sayılır (CLAUDE.md 23B.2 ve 23B.8).
   Bu istisnayı kaldırma. */
@media print{
  .baskida-gizle{display:none!important}

  .canta{gap:.9rem}
  .canta__cubuk{display:none}
  .canta__ilerleme-metin{color:#000}
  .canta__bolum{break-inside:avoid;page-break-inside:avoid}
  .canta__madde{break-inside:avoid;page-break-inside:avoid;border-bottom-color:#bbb}
  .canta__madde--isaretli .canta__etiket{color:#000}
  /* Kâğıtta ürün bağlantısının tıklanacak bir yeri yoktur. */
  .canta__git{display:none}
}

/* ---------- 21. YP3: İSİM SAYFASI VE HUB -------------------- */
/* Bu blok YALNIZ yeni sınıf tanımlar. 8. bölümdeki .dugme, 9. bölümdeki
   .isim-izgara / .isim-karti / .toz / .cip / .harf ve 11. bölümdeki
   .kutu ailelerine DOKUNMAZ — hub ve isim sayfası onları OLDUĞU GİBİ
   yeniden kullanır (M3 kuralı: Faz-1 sınıfları yeniden adlandırılmaz).

   ==========================================================
   .isim-karti NEDEN YENİDEN TANIMLANMADI
   ----------------------------------------------------------
   Kart görünümü 9. bölümde zaten vardır ve Faz-1 demosuyla
   birebir aynıdır. Burada yalnız hub bağlamına özgü, KAPSANMIŞ
   (.isim-hub ...) eklemeler yapılır. Kartın kendi kuralını
   ezmek, isim listelerini kullanan başka her yüzeyi de sessizce
   değiştirirdi.
   ========================================================== */

/* 21.1 Hub kabuğu */
.isim-hub{
  margin-block:1.6rem 2.2rem;
}
.isim-hub__giris{
  max-width:calc(56 * var(--ch-govde));margin:.6rem 0 0;
  font-size:var(--fs-kk);line-height:1.6;color:var(--metin-2);
}

/* 21.2 Süzgeç şeridi
   `hidden` ile doğar; görünürlüğü tema/js/isimler.js verir (aşamalı
   iyileştirme). [hidden] display kuralı bazı sıfırlamalarda flex/grid
   tarafından ezilir — bu yüzden açıkça yazılır. */
.isim-hub__suzgec[hidden]{display:none}
.isim-hub__suzgec{
  display:grid;gap:.85rem;
  margin-top:1.1rem;padding:1rem 1.1rem;
  background:var(--zemin-2);border:1px solid var(--cizgi);
  border-radius:var(--kose-l);
}

.isim-hub__arama-sar{display:grid;gap:.35rem}
.isim-hub__arama-etiket{
  font-family:var(--f-mono);font-size:var(--fs-mini);
  letter-spacing:.08em;text-transform:uppercase;color:var(--metin-2);
}
.isim-hub__arama{
  width:100%;padding:.6rem .8rem;
  font-family:inherit;font-size:1rem;color:var(--metin);
  background:var(--zemin);border:1.5px solid var(--cizgi);border-radius:12px;
}
.isim-hub__arama:focus-visible{
  outline:2px solid var(--vurgu);outline-offset:2px;border-color:var(--vurgu);
}
/* Tarayıcının kendi "temizle" düğmesi koyu temada görünmez olabiliyor. */
.isim-hub__arama::-webkit-search-cancel-button{filter:grayscale(1) opacity(.6)}

.isim-hub__cip-grubu{display:flex;flex-wrap:wrap;gap:.45rem}

.isim-hub__ozet{
  display:flex;flex-wrap:wrap;gap:.7rem;align-items:center;
  justify-content:space-between;
  border-top:1px dashed var(--cizgi);padding-top:.8rem;
}
.isim-hub__sayac{
  margin:0;font-family:var(--f-mono);
  font-size:var(--fs-kk);color:var(--metin-2);
}

/* 21.3 Izgara — .isim-izgara ile birlikte kullanılır, onu EZMEZ. */
.isim-hub__izgara{list-style:none;padding:0}
.isim-hub__izgara > li{margin:0}

/* Hub kartında anlam satırı DAİMA açıktır. 9. bölümdeki kural anlamı
   hover'da açar; dokunmatik cihazda hover yoktur ve isim listesinin tek
   işlevsel bilgisi anlamdır. Kural kapsanmıştır: başka yüzeylerdeki
   davranış değişmez. */
.isim-hub .isim-karti__anlam{max-height:none;opacity:1}
/* Kartlar tek tek animasyonla giriyordu; süzgeç her tuş vuruşunda ızgarayı
   yeniden çizdiği için bu, yazarken titreşim üretirdi. */
.isim-hub .isim-karti{animation:none}

.isim-hub__bos{
  margin:1.2rem 0 0;padding:1rem 1.1rem;
  background:var(--zemin-2);border:1px dashed var(--cizgi);
  border-radius:var(--kose-s);
  font-size:var(--fs-kk);color:var(--metin-2);
}
.isim-hub__bos[hidden]{display:none}

.isim-hub__daha-sar{margin:1.1rem 0 0;text-align:center}
.isim-hub__daha-sar .dugme[hidden]{display:none}

/* JavaScript kapalı ziyaretçiye "liste kırpıldı" bilgisi. */
.isim-hub__not{
  margin:.9rem 0 0;font-size:var(--fs-mini);color:var(--metin-2);line-height:1.55;
}
.isim-hub__not[hidden]{display:none}

/* 21.4 İsim sayfası (/isimler/{isim}-{anlam-ceki}) */
.isim-sayfa{
  display:block;margin-block:1.4rem;
}
.isim-sayfa__anlam{
  font-size:clamp(1.05rem,.98rem + .35vw,1.25rem);
  line-height:1.65;color:var(--metin);
  border-left:4px solid var(--vurgu);
  padding:.2rem 0 .2rem 1rem;margin-block:1rem;
}
.isim-sayfa__govde{margin-block:1.4rem}

/* 21.5 İsim künyesi — köken · cinsiyet · popülerlik · temalar
   <dl> tabanlıdır: etiket/değer ilişkisi ekran okuyucuda da doğru kurulsun. */
.isim-kunye{
  display:grid;gap:0;margin-block:1.3rem;
  background:var(--zemin-2);border:1px solid var(--cizgi);
  border-radius:var(--kose-l);padding:.4rem 1.1rem;
}
.isim-kunye__satir{
  display:grid;grid-template-columns:1fr;gap:.15rem;
  padding:.7rem 0;border-bottom:1px dashed var(--cizgi);
}
.isim-kunye__satir:last-child{border-bottom:0}
@media (min-width:38rem){
  .isim-kunye__satir{grid-template-columns:minmax(8rem,12rem) 1fr;gap:1rem;align-items:baseline}
}
.isim-kunye dt{
  font-family:var(--f-mono);font-size:var(--fs-mini);
  letter-spacing:.08em;text-transform:uppercase;color:var(--metin-2);
}
.isim-kunye dd{margin:0;color:var(--metin);line-height:1.55}
.isim-kunye__temalar{display:flex;flex-wrap:wrap;gap:.4rem}

/* 21.6 İsim köprüleri — kardeş önerileri ve benzer isimler */
.isim-koprular{margin-block:1.6rem}
.isim-koprular__bas{
  font-family:var(--f-mono);font-size:var(--fs-mini);
  letter-spacing:.1em;text-transform:uppercase;color:var(--metin-2);
  margin:0 0 .6rem;
}
.isim-koprular__liste{
  list-style:none;margin:0;padding:0;
  display:flex;flex-wrap:wrap;gap:.5rem;
}
.isim-koprular__bag{
  display:inline-flex;align-items:center;gap:.35rem;
  padding:.4rem .85rem;border-radius:99px;
  background:var(--zemin-2);border:1px solid var(--cizgi);
  color:var(--metin);text-decoration:none;font-size:var(--fs-kk);
  transition:background var(--gecis),border-color var(--gecis),transform var(--gecis);
}
.isim-koprular__bag:hover,.isim-koprular__bag:focus-visible{
  background:var(--vurgu-yumusak);border-color:var(--vurgu);
  color:var(--vurgu-metin);transform:translateY(-2px);
}

/* 21.7 Dar ekran */
@media (max-width:36rem){
  .isim-hub__suzgec{padding:.85rem}
  .isim-hub__ozet{align-items:stretch}
  .isim-hub__ozet .dugme{width:100%}
}

/* 21.8 Hareket tercihi */
@media (prefers-reduced-motion:reduce){
  .isim-koprular__bag{transition:none}
  .isim-koprular__bag:hover,.isim-koprular__bag:focus-visible{transform:none}
}

/* 21.9 Baskı — süzgeç şeridi ve "daha fazla" düğmesi kâğıtta anlamsızdır.
   Liste, künye ve köprüler KALIR. */
@media print{
  .isim-hub__suzgec,.isim-hub__daha-sar,.isim-hub__not{display:none}
  .isim-hub .isim-karti{break-inside:avoid;page-break-inside:avoid}
}

/* ---------- 22. YP4: İSİM TEMA GÖRÜNÜMÜ --------------------- */
/* <body data-tema="isimler" data-isim-cinsiyet="kiz|erkek|unisex"
          data-isim-tema="doga|dini|modern|oz-turkce|gokyuzu|
                          mitolojik|cicek|kisa|klasik|yabanci">

   Öznitelikleri Site\Render\Sayfa::isim() üretir, duzen/site.php basar.
   Bu bölüm YALNIZ yeni kural yazar; 2. bölümdeki tema paletlerine,
   9./10. bölümdeki isim bileşenlerine ve 21. bölüme DOKUNMAZ.

   ==========================================================
   *** KONTRAST SABİT KALIR — BU BÖLÜMÜN TEK SERT KURALI ***
   ----------------------------------------------------------
   Değişen tek şey VURGU ailesi (--vurgu, --vurgu-metin,
   --vurgu-uzeri, --vurgu-yumusak) ve DEKORATİF motif katmanıdır.
   --zemin, --zemin-2, --zemin-3, --metin, --metin-2 ve --cizgi
   HİÇBİR kuralda yeniden tanımlanmaz; gövde metninin okunurluğu
   cinsiyete ya da temaya göre değişmez.

   ==========================================================
   *** SEÇİCİLER DAİMA "body" İLE BAŞLAR — AD ÇAKIŞMASI VAR ***
   ----------------------------------------------------------
   YP3'ün İsim Bulucu süzgeci (parca/isim-hub.php) AYNI iki
   öznitelik adını süzgeç DÜĞMELERİNDE kullanır:
     <button class="cip" data-isim-cinsiyet="kiz">
     <button class="cip" data-isim-tema="öz türkçe">
   Onların değerleri ham Türkçedir (slug DEĞİL) ve tema/js/
   isimler.js tarafından okunur. Bu bölümdeki bir kural "body"
   çapası olmadan yazılırsa (ör. [data-isim-cinsiyet="kiz"]{…})
   hub'daki süzgeç düğmelerini de boyar. Çapayı KALDIRMA.
   ==========================================================

   Kurallar ayrıca "body[data-tema=isimler]" ile KAPSANMIŞTIR.
   Gerekçe: kontrast bir renk ÇİFTİNİN ölçüsüdür, tek bir rengin
   değil. Aşağıdaki vurgu renkleri isimler temasının koyu lacivert
   zeminine (#151C38) göre ölçüldü; aynı renkler açık kâğıt zeminli
   bir temaya taşınsaydı AA'nın altına düşerdi. Kapsam kalkarsa
   ölçüm de geçersiz olur — kaldırma.

   Ölçülen değerler (WCAG kontrast oranı, zemin #151C38):
     kız    --vurgu-metin #F7A9C0 → 9.1:1   (AAA)
     erkek  --vurgu-metin #8FCBF0 → 9.5:1   (AAA)
     unisex --vurgu-metin #93DEC8 → 10.8:1  (AAA)
   Dolgu üzerindeki metin (--vurgu-uzeri / --vurgu):
     kız 7.1:1 · erkek 7.5:1 · unisex 8.4:1 — üçü de AA'nın (4.5:1)
     ve büyük metin AAA'sının üzerindedir.
   ========================================================== */

/* 22.1 Cinsiyet vurgusu — YALNIZ vurgu ailesi. */
body[data-tema="isimler"][data-isim-cinsiyet="kiz"]{
  --vurgu:#F27EA4;
  --vurgu-metin:#F7A9C0;
  --vurgu-yumusak:#33254F;
  --vurgu-uzeri:#1B1030;
}
body[data-tema="isimler"][data-isim-cinsiyet="erkek"]{
  --vurgu:#62B6E8;
  --vurgu-metin:#8FCBF0;
  --vurgu-yumusak:#1C3350;
  --vurgu-uzeri:#0B1F33;
}
body[data-tema="isimler"][data-isim-cinsiyet="unisex"]{
  --vurgu:#5CC7A8;
  --vurgu-metin:#93DEC8;
  --vurgu-yumusak:#1B3A36;
  --vurgu-uzeri:#0C2A24;
}

/* 22.2 Üst bant motifi — cinsiyete göre.
   Motif rengi doğrudan --vurgu'dan türer (color-mix), yani 22.1'deki tek bir
   renk değişikliği motifi de taşır; iki yerde ayrı renk tutulmaz.
   Katman DEKORATİFTİR: pointer-events yoktur, ekran okuyucuya görünmez
   (::after içerik taşımaz) ve metnin ALTINDA çizilir. */
body[data-tema="isimler"][data-isim-cinsiyet="kiz"] .ust-bant{
  --isim-motif:
    radial-gradient(26rem 18rem at 88% -12%,color-mix(in srgb,var(--vurgu) 26%,transparent),transparent 68%),
    radial-gradient(20rem 16rem at 6% 104%,color-mix(in srgb,var(--vurgu) 18%,transparent),transparent 66%);
}
body[data-tema="isimler"][data-isim-cinsiyet="erkek"] .ust-bant{
  --isim-motif:
    radial-gradient(24rem 18rem at 92% -14%,color-mix(in srgb,var(--vurgu) 24%,transparent),transparent 66%),
    repeating-linear-gradient(58deg,color-mix(in srgb,var(--vurgu) 12%,transparent) 0 1px,transparent 1px 22px);
}
body[data-tema="isimler"][data-isim-cinsiyet="unisex"] .ust-bant{
  --isim-motif:
    radial-gradient(22rem 18rem at 50% -18%,color-mix(in srgb,var(--vurgu) 22%,transparent),transparent 70%),
    repeating-radial-gradient(circle at 50% -10%,transparent 0 34px,color-mix(in srgb,var(--vurgu) 10%,transparent) 34px 35px);
}

/* Motif katmanı. .ust-bant zaten position:relative + overflow:hidden'dır
   (13. bölüm); burada yalnız arkaya bir boya katmanı eklenir. */
body[data-isim-cinsiyet] .ust-bant::after{
  content:"";
  position:absolute;inset:0;
  background-image:var(--isim-motif,none);
  background-repeat:no-repeat;
  pointer-events:none;
  z-index:0;
}
/* İçerik motifin ÜSTÜNDE kalır: kırıntı ve sahne blokları yığın bağlamına
   alınır. Kapsam dar tutuldu — başka hiçbir sayfanın üst bandı etkilenmez. */
body[data-isim-cinsiyet] .ust-bant > *{position:relative;z-index:1}

/* 22.3 Tema dokusu — YALNIZ zemin dokusu değişir, renk paleti DEĞİL.
   Doku, gövde arka planındaki mevcut katman dizisine (yıldız + kâğıt) ÖNDEN
   eklenir; rengi yine --vurgu'dan türer ve karışım oranı en fazla %10'dur.
   Bu oran, metnin arkasındaki bağıl parlaklığı ölçülebilir biçimde
   değiştirmez — bölümün kontrast kuralı burada da geçerlidir.

   Kural listesi UZUN YAZILDI (tek bir [data-isim-tema] seçicisi yerine on
   ayrı değer): tanınmayan bir tema değeri --isim-doku tanımsız kalacağı için
   --motif'i geçersiz kılar ve gövde arka planını tamamen düşürürdü. */
body[data-tema="isimler"][data-isim-tema="doga"],
body[data-tema="isimler"][data-isim-tema="dini"],
body[data-tema="isimler"][data-isim-tema="modern"],
body[data-tema="isimler"][data-isim-tema="oz-turkce"],
body[data-tema="isimler"][data-isim-tema="gokyuzu"],
body[data-tema="isimler"][data-isim-tema="mitolojik"],
body[data-tema="isimler"][data-isim-tema="cicek"],
body[data-tema="isimler"][data-isim-tema="kisa"],
body[data-tema="isimler"][data-isim-tema="klasik"],
body[data-tema="isimler"][data-isim-tema="yabanci"]{
  --motif:var(--isim-doku),var(--doku-yildiz),var(--doku-kagit);
  --motif-boyut:var(--isim-doku-boyut,240px 240px),240px 240px,160px 160px;
}

body[data-tema="isimler"][data-isim-tema="doga"]{
  --isim-doku:
    radial-gradient(circle at 20% 30%,color-mix(in srgb,var(--vurgu) 9%,transparent) 0 6px,transparent 7px),
    radial-gradient(circle at 72% 66%,color-mix(in srgb,var(--vurgu) 7%,transparent) 0 9px,transparent 10px);
  --isim-doku-boyut:180px 180px;
}
body[data-tema="isimler"][data-isim-tema="dini"]{
  --isim-doku:
    repeating-radial-gradient(circle at 50% 50%,transparent 0 26px,
      color-mix(in srgb,var(--vurgu) 8%,transparent) 26px 27px);
  --isim-doku-boyut:220px 220px;
}
body[data-tema="isimler"][data-isim-tema="modern"]{
  --isim-doku:
    repeating-linear-gradient(90deg,color-mix(in srgb,var(--vurgu) 7%,transparent) 0 1px,transparent 1px 28px);
  --isim-doku-boyut:196px 196px;
}
body[data-tema="isimler"][data-isim-tema="oz-turkce"]{
  --isim-doku:
    repeating-linear-gradient(45deg,color-mix(in srgb,var(--vurgu) 8%,transparent) 0 2px,transparent 2px 18px),
    repeating-linear-gradient(-45deg,color-mix(in srgb,var(--vurgu) 6%,transparent) 0 2px,transparent 2px 18px);
  --isim-doku-boyut:144px 144px;
}
body[data-tema="isimler"][data-isim-tema="gokyuzu"]{
  --isim-doku:
    radial-gradient(circle at 18% 22%,color-mix(in srgb,var(--vurgu) 10%,transparent) 0 2px,transparent 3px),
    radial-gradient(circle at 64% 48%,color-mix(in srgb,var(--vurgu) 8%,transparent) 0 2px,transparent 3px),
    radial-gradient(circle at 86% 78%,color-mix(in srgb,var(--vurgu) 9%,transparent) 0 2px,transparent 3px);
  --isim-doku-boyut:210px 210px;
}
body[data-tema="isimler"][data-isim-tema="mitolojik"]{
  --isim-doku:
    radial-gradient(circle at 50% 50%,transparent 0 46px,
      color-mix(in srgb,var(--vurgu) 8%,transparent) 46px 48px,transparent 49px);
  --isim-doku-boyut:230px 230px;
}
body[data-tema="isimler"][data-isim-tema="cicek"]{
  --isim-doku:
    radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--vurgu) 9%,transparent) 0 4px,transparent 5px),
    radial-gradient(circle at 44% 30%,color-mix(in srgb,var(--vurgu) 9%,transparent) 0 4px,transparent 5px),
    radial-gradient(circle at 37% 42%,color-mix(in srgb,var(--vurgu) 9%,transparent) 0 4px,transparent 5px);
  --isim-doku-boyut:168px 168px;
}
body[data-tema="isimler"][data-isim-tema="kisa"]{
  --isim-doku:
    radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--vurgu) 8%,transparent) 0 3px,transparent 4px);
  --isim-doku-boyut:120px 120px;
}
body[data-tema="isimler"][data-isim-tema="klasik"]{
  --isim-doku:
    repeating-linear-gradient(0deg,color-mix(in srgb,var(--vurgu) 6%,transparent) 0 1px,transparent 1px 34px),
    repeating-linear-gradient(90deg,color-mix(in srgb,var(--vurgu) 6%,transparent) 0 1px,transparent 1px 34px);
  --isim-doku-boyut:204px 204px;
}
body[data-tema="isimler"][data-isim-tema="yabanci"]{
  --isim-doku:
    repeating-linear-gradient(30deg,color-mix(in srgb,var(--vurgu) 8%,transparent) 0 8px,transparent 8px 26px);
  --isim-doku-boyut:186px 186px;
}

/* 22.4 Hareket tercihi.
   Bu bölüm hiçbir animasyon ya da geçiş TANIMLAMAZ. Yine de gövde arka planı
   background-attachment:fixed ile sabittir (3. bölüm) ve kaydırma sırasında
   dokunun yerinde durması bazı kullanıcılarda hareket algısı yaratır; azaltma
   tercihinde katman sayfayla birlikte akar. */
@media (prefers-reduced-motion:reduce){
  body[data-tema="isimler"][data-isim-tema]{background-attachment:scroll}
}

/* 22.5 Yüksek kontrast tercihi.
   Dekoratif katmanların tamamı kalkar ve vurgu metni en yüksek okunurluğa
   çekilir. Dolgu rengi (--vurgu) OLDUĞU GİBİ bırakılır: üzerindeki metin
   --vurgu-uzeri ile zaten 7:1'in üzerindedir ve dolguyu beyazlatmak düğmeyi
   zeminden ayırt edilemez hâle getirirdi. */
@media (prefers-contrast:more){
  body[data-isim-cinsiyet] .ust-bant::after{display:none}
  body[data-tema="isimler"][data-isim-tema]{--isim-doku:none}
  body[data-tema="isimler"][data-isim-cinsiyet="kiz"]{--vurgu-metin:#FFD9E4}
  body[data-tema="isimler"][data-isim-cinsiyet="erkek"]{--vurgu-metin:#DBEEFB}
  body[data-tema="isimler"][data-isim-cinsiyet="unisex"]{--vurgu-metin:#D6F4EA}
}

/* 22.6 Baskı — dekoratif katman kâğıtta yalnız mürekkep harcar. */
@media print{
  body[data-isim-cinsiyet] .ust-bant::after{display:none}
  body[data-tema="isimler"][data-isim-tema]{--isim-doku:none}
}

/* ---------- 23. YP6: ANASAYFA ------------------------------- */
/* Yalnız YENİ sınıf tanımlar; hero (.sahne), fiş (.fis), vitrin
   (.arac-hub) ve arşiv kartları var olan bölümlerden gelir. Eski ana
   sayfanın kullandığı .kapi/.bolum-basi/.izgara aileleri isim-hub,
   kategori ve arama sayfalarında da kullanılır — olduğu gibi korunur. */

/* 23.1 Vitrin alt satırı ("tümünü gör") */
.ana-vitrin-alt{display:flex;justify-content:center;margin:-.2rem 0 1.6rem}

/* 23.2 İsim köşesi — varsayılan TEK sütun; genişte CTA + kartlar */
.ana-isim__duzen{display:grid;gap:clamp(1.4rem,1rem + 2vw,2.6rem);align-items:start}
@media (min-width:900px){.ana-isim__duzen{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}}
.ana-isim__cta h2{max-width:calc(18 * var(--ch-baslik))}
.ana-isim__giris{color:var(--metin-2);margin-top:.6rem;max-width:calc(44 * var(--ch-govde))}
.ana-isim__eylem{margin-top:1.2rem}
.ana-isim__sayi{margin-top:1rem;font-family:var(--f-mono);font-size:var(--fs-kk);color:var(--metin-2)}
.ana-isim__sayi b{color:var(--vurgu-metin);font-size:1.15rem;font-weight:700}
.ana-isim__kartlar{display:grid;gap:var(--aralik);grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr))}
.ana-isim__kart{display:grid;gap:.45rem;align-content:start;background:var(--zemin-2);
  border:1px solid var(--cizgi);border-radius:var(--kose-l);padding:1.15rem;
  text-decoration:none;color:var(--metin);
  transition:transform var(--gecis),box-shadow var(--gecis),border-color var(--gecis)}
.ana-isim__kart:hover{transform:translateY(-4px);box-shadow:var(--golge-2);border-color:var(--vurgu)}
.ana-isim__kart-sayi{justify-self:start;font-family:var(--f-mono);font-size:var(--fs-mini);
  letter-spacing:.1em;text-transform:uppercase;font-weight:600;color:var(--vurgu-metin);
  background:var(--vurgu-yumusak);padding:.24rem .55rem;border-radius:6px}
.ana-isim__kart-ad{font-family:var(--f-baslik);font-weight:700;font-size:1.1rem;line-height:1.25;
  font-variation-settings:"opsz" 40,"SOFT" 45,"WONK" 0}
.ana-isim__kart-not{font-size:var(--fs-kk);color:var(--metin-2);line-height:1.6}
.ana-isim__kart-git{display:inline-flex;align-items:center;gap:.4rem;margin-top:.2rem;
  font-size:var(--fs-kk);font-weight:700;color:var(--vurgu-metin)}
.ana-isim__kart-git svg{width:15px;height:15px;transition:transform var(--gecis)}
.ana-isim__kart:hover .ana-isim__kart-git svg{transform:translateX(3px)}

/* 23.3 Güven şeridi (.guven*) — YP8: KALDIRILDI.
   Ana sayfadaki "Neye göre yazıyoruz?" bölümü site sahibinin isteğiyle
   kaldırıldı: dört kart kendini övüyor ve yasal sayfalara link veriyordu.
   O linkler zaten ALT BİLGİDE olduğu için bölüm, hemen üstündeki son
   yazılar listesinin devamı gibi görünüyor ve "son eklenenlerde KVKK
   metinleri var" izlenimi veriyordu. Yerine dönem bazlı yönlendirme
   kartları geldi (bkz. 24. bölüm, .donem*).
   Kurallar da birlikte silindi: kullanılmayan CSS, sonraki okuyucuya
   "bu bölüm hâlâ var" diye yanlış bilgi verir. */

/* 23.4 Ana sayfa SSS (dar kap) */
.ana-sss .sss{margin-top:.2rem}

/* 23.5 Dar ekran (375px sınıfı) */
@media (max-width:420px){
  .ana-isim__kart{padding:1rem .9rem}
  .ana-vitrin-alt{padding-inline:var(--pad-yan)}
  .ana-vitrin-alt .dugme{width:100%}
}

/* 23.6 Hareket tercihi — 16. bölüm geçişleri sıfırlar; kalan dönüşümler */
@media (prefers-reduced-motion:reduce){
  .ana-isim__kart:hover{transform:none}
  .ana-isim__kart:hover .ana-isim__kart-git svg{transform:none}
}

/* 23.7 Baskı */
@media print{.ana-vitrin-alt,.ana-isim__eylem{display:none!important}}

/* ---------- 24. ANASAYFA: DÖNEM ŞERİDİ + BÖLÜM KÖPRÜLERİ ---- */
/* Yalnız YENİ sınıf tanımlar; 23. bölüme ve .dugme/.bolum-basi/.kap
   ailelerine DOKUNMAZ. Dönem şeridi, kaldırılan "güven şeridi"nin yerini
   alır: ziyaretçiye siteyi anlatmaz, onu bulunduğu döneme uygun araca
   götürür. Izgara .guven__izgara ile aynı auto-fit kalıbını kullanır —
   iki bölüm arka arkaya değil, biri diğerinin yerine geçtiği için görsel
   ritim korunur. */

/* 24.1 Bölüm zemini — vitrin ve isim köşesinden ayrılsın diye 3. zemin */
.donem{background:var(--zemin-3);border-block:1px solid var(--cizgi)}

/* 24.2 Kart ızgarası — <ul> anlamsaldır: bu bir seçenek listesidir */
.donem__izgara{list-style:none;padding:0;margin:0;display:grid;gap:var(--aralik);
  grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr))}

/* 24.3 Kart. align-content:start + margin-top:auto ikilisi, farklı uzunlukta
   açıklamalarda düğmeleri AYNI hizaya çeker (kart yüksekliği ızgaradan gelir). */
.donem__oge{background:var(--zemin-2);border:1px solid var(--cizgi);border-radius:var(--kose-l);
  padding:1.3rem 1.15rem;margin:0;display:flex;flex-direction:column;gap:.5rem}
.donem__oge > svg{width:28px;height:28px;color:var(--vurgu-metin)}
.donem__ust{font-family:var(--f-mono);font-size:var(--fs-mini);
  letter-spacing:.1em;text-transform:uppercase;font-weight:600;
  color:var(--vurgu-metin);margin:0}
.donem__bas{font-size:1.12rem;margin:0}
.donem__aciklama{font-size:var(--fs-kk);color:var(--metin-2);line-height:1.62;margin:0}

/* 24.4 Birincil eylem — kartın dibine yapışır (bkz. 24.3) */
.donem__eylem{align-self:start;margin-top:auto;padding-top:.72rem}

/* 24.5 Yan bağlantı — ikincil olduğu AÇIK olmalı: düğme değil, altı çizili
   metin. Aynı ağırlıkta iki düğme koymak kararı zorlaştırırdı. */
.donem__yan{align-self:start;font-size:var(--fs-kk);font-weight:700;
  color:var(--vurgu-metin);text-decoration:underline;text-underline-offset:3px}
.donem__yan:hover{color:var(--metin)}

/* 24.6 "Son eklenen yazılar" altındaki bölüm köprüleri */
.ana-son-bolumler{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;margin-top:1.4rem}
.ana-son-bolumler__lk{display:inline-flex;align-items:center;gap:.4rem;
  font-size:var(--fs-kk);font-weight:700;color:var(--vurgu-metin);
  text-decoration:underline;text-underline-offset:3px}
.ana-son-bolumler__lk svg{width:15px;height:15px;transition:transform var(--gecis)}
.ana-son-bolumler__lk:hover{color:var(--metin)}
.ana-son-bolumler__lk:hover svg{transform:translateX(3px)}

/* 24.7 Dar ekran — 23.5 ile aynı sınıf (420px) */
@media (max-width:420px){
  .donem__oge{padding:1.1rem .9rem}
  .donem__eylem{width:100%}
}

/* 24.8 Hareket tercihi */
@media (prefers-reduced-motion:reduce){
  .ana-son-bolumler__lk:hover svg{transform:none}
}

/* 24.9 Baskı — kâğıtta tıklanamayan eylem yüzeyi yalnız mürekkep harcar */
@media print{.donem__eylem,.donem__yan,.ana-son-bolumler{display:none!important}}

/* ---------- 25. YP9: ANASAYFA GÖRSEL DERİNLİĞİ -------------- */
/* Site sahibinin geri bildirimi: ana sayfa "kaba ve sade" duruyordu.
   Bu bölüm YAPIYI DEĞİŞTİRMEZ — bölümler, metinler ve adresler aynıdır;
   yalnız derinlik (gölge, katman) ve ÖLÇÜLÜ hareket ekler.

   TASARIM SINIRLARI (bilinçli, gevşetilmez):
   1. Yalnız transform ve opacity animasyonlanır. width/height/top/left
      animasyonu layout tetikler ve düşük güçlü telefonlarda kare düşürür.
   2. Hiçbir animasyon YER KAYDIRMAZ (CLS = 0): hareketli katmanlar
      position:absolute + overflow:hidden içindedir, kartlar yalnız
      transform ile yükselir.
   3. LCP ögesi (hero h1 ve ilk paragraf) animasyonla GİZLENMEZ. Beliriş
      yalnız katlanın altındaki bölümlere uygulanır — [data-ac] yalnız
      onlara konur, hero'nun kendisine ASLA.
   4. Harici dosya, kütüphane ve görsel YOKTUR (CDN yasağı, CLAUDE.md 3).
      Zemin şekilleri CSS gradyanıdır; yıldız dokusu 1. bölümdeki var olan
      --doku-yildiz data-URI'sinin yeniden kullanımıdır.
   5. Renkler sabit değil tema jetonudur (--vurgu, --zemin-2, --cizgi);
      koyu "isimler" temasında da okunur kalır.

   VAR OLAN SEÇİCİLERE EKLEME YAPILAN YERLER (yeniden adlandırma YOK,
   yalnız özellik eklenir — hepsi burada listelidir):
     .sayac__deger  -> tabular-nums (sayarken genişlik zıplamasın)
     .arac-hub__kart . .ana-isim__kart -> position/overflow + ::before şeridi
     .donem__oge    -> hover yükselmesi ve ikon mikro hareketi
     .arsiv__satir[data-ac] -> var olan isimGir girişi kapatılır (bkz. 25.4) */

/* 25.1 HERO ZEMİNİ — yavaş sürüklenen yumuşak şekiller.
   .sahne__akis yalnız ust-bant parçası $hareketliZemin=true ile
   çağrıldığında basılır (bugün: yalnız ana sayfa). Kap aria-hidden'dır ve
   pointer-events:none taşır: ekran okuyucu görmez, tıklamayı yutmaz.
   .sahne zaten position:relative + overflow:hidden, .sahne__ic ise
   z-index:1 — yani metin her koşulda üstte kalır. */
.sahne__akis{
  position:absolute;inset:-12% -6%;z-index:0;
  pointer-events:none;overflow:hidden;
}
.sahne__akis span{
  position:absolute;display:block;border-radius:50%;
  /* Sadece bu iki özellik animasyonlanır; tarayıcı katmanı GPU'ya alabilsin
     diye önceden bildirilir. */
  will-change:transform,opacity;
}
/* Üç şekil de radial-gradient'tir: filter:blur() bilinçli KULLANILMAZ —
   her karede yeniden bulanıklaştırma maliyeti gradyanın yanında pahalıdır. */
.sahne__akis-l1{
  width:clamp(15rem,28vw,30rem);aspect-ratio:1;top:-8%;right:1%;
  background:radial-gradient(circle at 50% 50%,
    color-mix(in srgb,var(--vurgu) 32%,transparent) 0%,
    color-mix(in srgb,var(--vurgu) 11%,transparent) 46%,
    transparent 70%);
  animation:bpAkis1 34s ease-in-out infinite;
}
.sahne__akis-l2{
  width:clamp(12rem,22vw,24rem);aspect-ratio:1;bottom:-14%;left:-4%;
  background:radial-gradient(circle at 50% 50%,
    color-mix(in srgb,var(--r-hesaplama) 22%,transparent) 0%,
    color-mix(in srgb,var(--r-hesaplama) 8%,transparent) 48%,
    transparent 72%);
  animation:bpAkis2 44s ease-in-out infinite;
}
.sahne__akis-l3{
  width:clamp(10rem,18vw,20rem);aspect-ratio:1;top:34%;left:38%;
  background:radial-gradient(circle at 50% 50%,
    color-mix(in srgb,var(--r-rehber) 18%,transparent) 0%,
    transparent 66%);
  animation:bpAkis3 52s ease-in-out infinite;
}
/* Yıldız dokusu — 1. bölümdeki data-URI karo 240x240'tır; kaydırma da tam
   240px olduğu için desen KUSURSUZ döner (dikiş görünmez). inset negatiftir,
   böylece kayma sırasında kenarda boşluk açılmaz. */
.sahne__akis::after{
  content:"";position:absolute;inset:-240px;
  background-image:var(--doku-yildiz);opacity:.5;
  animation:bpAkisDoku 150s linear infinite;
  will-change:transform;
}
@keyframes bpAkis1{
  0%,100%{transform:translate3d(0,0,0) scale(1);opacity:.9}
  50%    {transform:translate3d(-5%,7%,0) scale(1.14);opacity:1}
}
@keyframes bpAkis2{
  0%,100%{transform:translate3d(0,0,0) scale(1);opacity:.85}
  50%    {transform:translate3d(8%,-6%,0) scale(1.1);opacity:1}
}
@keyframes bpAkis3{
  0%,100%{transform:translate3d(0,0,0) scale(.96);opacity:.55}
  50%    {transform:translate3d(-7%,-9%,0) scale(1.08);opacity:.85}
}
@keyframes bpAkisDoku{
  from{transform:translate3d(0,0,0)}
  to  {transform:translate3d(240px,240px,0)}
}

/* 25.2 SAYAÇ ŞERİDİ — rakamlar eşit genişlikte aksın.
   Sayaç 0'dan hedefe sayarken orantılı rakamlar satırı milimetrik
   titretiyordu; tabular-nums bunu tamamen bitirir. Not: HTML'de ARTIK son
   değer yazılıdır (ust-bant.php), yani JS hiç çalışmasa da doğru sayı
   görünür — animasyon bir SÜSTÜR, verinin kaynağı değildir. */
.sayac__deger{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}

/* 25.3 BÖLÜM BAŞLIĞI — görünür olunca soldan sağa çizilen vurgu çizgisi.
   Çizgi VARSAYILAN OLARAK ÇİZİLİDİR; yalnız .js varken sıfırdan başlar ve
   .gorundu ile tamamlanır. Sıra bilinçlidir: JavaScript hiç çalışmazsa
   (ya da bir hata verirse) çizgi eksik değil, tam görünür.
   Yükseklik ilk boyamada da ayrıldığı için YER KAYMASI OLMAZ. */
[data-ac] > h2::after{
  content:"";display:block;width:3.4rem;height:3px;margin-top:.8rem;
  border-radius:99px;transform-origin:left center;
  background:linear-gradient(90deg,var(--vurgu) 0%,
    color-mix(in srgb,var(--vurgu) 12%,transparent) 100%);
}
.js [data-ac] > h2::after{transform:scaleX(0)}
.js [data-ac].gorundu > h2::after{
  transform:scaleX(1);
  transition:transform .75s cubic-bezier(.22,.61,.36,1) .12s;
}

/* 25.4 KADEMELİ BELİRİŞ — mekanizma 4. bölümdeki .js [data-ac] ve
   tema/js/main.js acilisKur()tur; burada YALNIZ iki ince ayar var.

   (a) Arşiv satırları (.arsiv__satir) 9. bölümde isimGir giriş
       animasyonu taşır. data-ac ile birlikte İKİSİ ÇAKIŞIR: isimGir
       backwards doldurduğu için biter bitmez opaklık .js [data-ac] kuralının
       0 değerine geri düşer — satır bir an görünüp KAYBOLUR. Bu yüzden
       data-ac taşıyan satırda eski giriş kapatılır. Öznitelik yalnız
       ana sayfada eklenir (kategori-arsivi.php $beliris), yani arşiv
       sayfalarındaki davranış birebir korunur.
   (b) Kartlar biraz daha aşağıdan gelir; metin blokları 4. bölümdeki
       varsayılan 16px'te kalır — kart daha büyük bir yüzeydir ve aynı
       mesafe onda "kıpırdadı" gibi görünür. */
.js .arsiv__satir[data-ac]{animation:none}
.js .arac-hub__izgara > li[data-ac],
.js .donem__oge[data-ac],
.js .ana-isim__kart[data-ac]{transform:translateY(22px)}
.js .arac-hub__izgara > li[data-ac].gorundu,
.js .donem__oge[data-ac].gorundu,
.js .ana-isim__kart[data-ac].gorundu{transform:none}

/* 25.5 KART HOVER — ölçülü derinlik.
   Sağlık içeriği yayınlayan bir sitede abartılı hareket güven kırar:
   yükselme 4px'te kalır (var olan .kart--bagli ve .arac-hub__kart
   kuralıyla AYNI mesafe), gölge bir kademe artar, üst kenarda ince bir
   vurgu şeridi soldan sağa açılır. Şerit klavye için :focus-visible
   ile de açılır — fare olmadan gezenin geri bildirimsiz kalmaması gerekir. */
.arac-hub__kart,
.ana-isim__kart{position:relative;overflow:hidden}
.arac-hub__kart::before,
.ana-isim__kart::before{
  content:"";position:absolute;inset:0 0 auto;height:3px;
  background:linear-gradient(90deg,var(--vurgu),
    color-mix(in srgb,var(--vurgu) 22%,transparent));
  transform:scaleX(0);transform-origin:left center;
  transition:transform var(--gecis-y);
}
.arac-hub__kart:hover::before,
.arac-hub__kart:focus-visible::before,
.ana-isim__kart:hover::before,
.ana-isim__kart:focus-visible::before{transform:scaleX(1)}

/* Dönem kartı li ögesidir (bağlantı içindedir): yükselmeyi kartın kendisi
   yapar, :focus-within sayesinde içindeki düğmeye klavyeyle gelindiğinde
   de aynı geri bildirim verilir. */
.donem__oge{
  transition:transform var(--gecis),box-shadow var(--gecis),border-color var(--gecis);
}
.donem__oge:hover,
.donem__oge:focus-within{
  transform:translateY(-4px);box-shadow:var(--golge-2);border-color:var(--vurgu);
}
/* İkon mikro hareketi — lucide i[data-lucide] ögesini svg ile
   DEĞİŞTİRİR, bu yüzden seçici svg'yi hedefler. */
.donem__oge > svg{transition:transform var(--gecis)}
.donem__oge:hover > svg,
.donem__oge:focus-within > svg{transform:translateY(-2px) rotate(-5deg)}

/* Son yazılar satırı 9. bölümde zaten yana kayıyor; burada yalnız gölge bir
   kademe artırılır ve renk noktası büyür (satır "seçildi" hissi). */
.arsiv__satir{transition:transform var(--gecis),border-color var(--gecis),
  box-shadow var(--gecis)}
.arsiv__satir:hover{box-shadow:var(--golge-2)}
.arsiv__nk{transition:transform var(--gecis)}
.arsiv__satir:hover .arsiv__nk{transform:scale(1.55)}

/* 25.6 Dar ekran — telefonda zemin şekilleri azalır ve doku söner;
   küçük ekranda ikisi de yalnız pil harcar, görsel katkısı okunmaz. */
@media (max-width:640px){
  .sahne__akis-l3{display:none}
  .sahne__akis::after{opacity:.32}
}

/* 25.7 HAREKET TERCİHİ — bu bölümde eklenen HER animasyon ve geçiş burada
   kapanır. 16. bölümdeki genel kural süreleri .001ms'e indirir ama
   animation:none DEMEZ: sonsuz döngüler .001ms'te delice tekrar ederdi
   ve transform son karede takılı kalırdı. Bu yüzden burada tek tek
   sıfırlanır. Erişilebilirlik gereğidir, tercih değil. */
@media (prefers-reduced-motion:reduce){
  /* 25.1 hero zemini — hareket tamamen durur, katman sabit kalır */
  .sahne__akis span,
  .sahne__akis::after{animation:none!important;transform:none!important}
  /* 25.3 başlık çizgisi — çizilmiş hâlde, geçişsiz */
  .js [data-ac] > h2::after{transform:scaleX(1)!important;transition:none!important}
  /* 25.4 kademeli beliriş — kart kaymaları sıfır */
  .js .arac-hub__izgara > li[data-ac],
  .js .donem__oge[data-ac],
  .js .ana-isim__kart[data-ac]{transform:none!important}
  /* 25.5 hover — yükselme, şerit ve ikon hareketi kapalı */
  .arac-hub__kart::before,
  .ana-isim__kart::before,
  .arac-hub__kart:hover::before,
  .arac-hub__kart:focus-visible::before,
  .ana-isim__kart:hover::before,
  .ana-isim__kart:focus-visible::before{transform:scaleX(1);transition:none}
  .donem__oge:hover,
  .donem__oge:focus-within{transform:none}
  .donem__oge:hover > svg,
  .donem__oge:focus-within > svg{transform:none}
  .arsiv__satir:hover .arsiv__nk{transform:none}
}

/* 25.8 Baskı — hareketli zemin kâğıtta yalnız mürekkep harcar. */
@media print{
  .sahne__akis{display:none!important}
  [data-ac] > h2::after{display:none!important}
}

/* ---------- 26. YP10: BEBEK MOTİFLERİ + NEFES ALAN ZEMİN ---- */
/* Site sahibinin geri bildirimi: ana sayfa "biraz boş" duruyordu ve daha çok
   hareketli bebek teması isteniyordu — kütüphane kullanımına da izin verildi.
   KÜTÜPHANE KULLANILMADI; gerekçe ölçülmüş bir bütçe kararıdır:

     · CDN yasaktır (CLAUDE.md 3), yani kütüphane YEREL KOPYA olmak zorundadır.
     · Lottie ~250 KB, GSAP ~70 KB. Ana sayfanın tamamı bugün ~32 KB ve M3
       kabul ölçütündeki bütçe 300 KB'dir — tek bir animasyon kütüphanesi
       bütçenin çoğunu, hiçbir yeni BİLGİ eklemeden yerdi.
     · Site CSP'si `script-src 'self'`, satır içi <script> YOKTUR (CLAUDE.md 9).
       Kütüphane kurulumu da bir betik dosyası daha demektir.
     · Buradaki her hareket satır içi SVG + CSS keyframe ile ~0 ek betik
       maliyetiyle kurulabiliyordu. Kütüphane hiçbir şey kazandırmazdı.

   25. bölümün DEVAMIDIR; oradaki bpAkis1/2/3 ve bpAkisDoku keyframe'lerine
   DOKUNULMAZ, üstüne inşa edilir. 25. bölümün beş tasarım sınırı burada da
   aynen geçerlidir; en sıkı ikisi tekrar edilir:
     · Yalnız transform ve opacity animasyonlanır (layout/paint tetikleyen
       width/top/margin animasyonu YASAK — düşük güçlü telefonda kare düşer).
     · LCP ögesi (hero h1 + ilk paragraf) animasyonla GİZLENMEZ. Buradaki
       hiçbir kural .sahne__ic içindeki metne dokunmaz.
   Ek olarak: hiçbir katman yatay taşma üretmez (hepsi overflow:hidden bir
   kutunun içindedir ve inset:0'dan büyümez). */

/* 26.1 BÖLÜM İMİ — parca/bebek-motif.php'nin bastığı dekoratif SVG.
   Rozet dairesi motifi "süs" olmaktan çıkarıp sayfanın ritmine oturtur:
   her bölüm başlığı artık aynı ağırlıkta bir işaretle açılır.
   Renk currentColor'dan gelir → koyu "isimler" temasında da okunur. */
.bolum-im{
  display:block;box-sizing:border-box;
  width:2.6rem;height:2.6rem;padding:.55rem;margin-bottom:.75rem;
  border-radius:50%;
  color:var(--vurgu-metin);background:var(--vurgu-yumusak);
  border:1px solid color-mix(in srgb,var(--vurgu) 24%,transparent);
}

/* Görünür olunca TEK SEFERLİK nazik yaylanma. Tetikleyici, M3'ten beri var
   olan tema/js/main.js acilisKur() gözlemcisinin eklediği .gorundu sınıfıdır
   — yeni betik, yeni gözlemci ve yeni bağımlılık YOKTUR.
   `.js` öneki bilinçlidir: JavaScript hiç çalışmazsa motif animasyonsuz ama
   TAM görünür kalır (aşamalı iyileştirme, 25.3'teki çizgi kuralıyla aynı
   mantık). `both` doldurması bitiş karesini kalıcı kılar. */
.js [data-ac] .bolum-im{transform:scale(.86) rotate(-8deg)}
.js [data-ac].gorundu .bolum-im{
  animation:bpMotifYay .95s cubic-bezier(.34,1.56,.64,1) .16s both;
}
@keyframes bpMotifYay{
  0%  {transform:scale(.86) rotate(-8deg);opacity:.35}
  60% {transform:scale(1.06) rotate(3deg); opacity:1}
  100%{transform:scale(1)    rotate(0);    opacity:1}
}

/* 26.2 HERO — yavaşça yükselen kabarcıklar.
   25.1'deki üç yumuşak şeklin ÜSTÜNE ikinci bir katman: dört farklı boyda
   kabarcık, 58 saniyede bir tur. ::after yıldız dokusuna ait olduğu için
   burada ::before kullanılır (ikisi çakışmaz).

   Ek HTML MALİYETİ SIFIRDIR: yeni <span> eklenmedi, katman tamamen
   pseudo-element + gradyandır. Döngü KUSURSUZ döner çünkü kaydırma mesafesi
   (300px) background-size ile birebir aynıdır — dikiş görünmez. inset de
   300px negatiftir ki kayma sırasında altta boşluk açılmasın.
   filter:blur() 25.1'deki gerekçeyle yine KULLANILMAZ (her karede yeniden
   bulanıklaştırma pahalıdır). */
.sahne__akis::before{
  content:"";position:absolute;inset:-300px;
  background-image:
    radial-gradient(circle at 18% 84%,color-mix(in srgb,var(--vurgu) 17%,transparent) 0 5px,transparent 6px),
    radial-gradient(circle at 63% 47%,color-mix(in srgb,var(--vurgu) 12%,transparent) 0 8px,transparent 9px),
    radial-gradient(circle at 87% 71%,color-mix(in srgb,var(--r-gebelik) 14%,transparent) 0 4px,transparent 5px),
    radial-gradient(circle at 37% 21%,color-mix(in srgb,var(--r-hesaplama) 11%,transparent) 0 6px,transparent 7px);
  background-size:300px 300px;
  animation:bpKabarcik 58s linear infinite;
  will-change:transform;
}
@keyframes bpKabarcik{
  from{transform:translate3d(0,0,0)}
  to  {transform:translate3d(0,-300px,0)}
}

/* 26.3 NEFES ALAN ZEMİN — İsim Köşesi ve Dönem Şeridi.
   Yavaş (24 sn) bir soluk alıp verme: bölüm ölü bir dikdörtgen olmaktan
   çıkar, ama okumayı hiç zorlaştırmaz.

   NEDEN inset:0 — taşma kalkanı: pseudo, bölümün kutusundan BÜYÜMEZ; yalnız
   içindeki gradyan kenarlara doğru saydamlaşır. scale() 1.07'de tutulur ve
   bölüm ayrıca overflow:hidden'dır, yani hiçbir koşulda YATAY KAYDIRMA
   doğmaz. (Kart gölgeleri kırpılmaz: .bolum--ince'nin dikey dolgusu en dar
   ekranda bile ~26px, --golge-2'nin görünür taşması ~19px'tir.)

   NEDEN .arac-hub'a UYGULANMADI: o parça /hesaplama hub'ıyla ORTAKTIR ve
   orada ızgara bölümün alt kenarına dayanır — overflow:hidden kart hover
   gölgesini kırpardı. Ortak yüzeye ana sayfa için risk alınmaz. */
.ana-isim,.donem{overflow:hidden}
.ana-isim::before,.donem::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  animation:bpNefes 24s ease-in-out infinite;
  will-change:transform,opacity;
}
.ana-isim::before{
  background:radial-gradient(34rem 26rem at 84% 8%,
    color-mix(in srgb,var(--vurgu) 13%,transparent) 0%,
    color-mix(in srgb,var(--vurgu) 4%,transparent) 42%,
    transparent 68%);
}
/* Faz farkı bilinçlidir: iki bölüm arka arkaya gelir, aynı anda nefes
   alsalardı hareket "sayfa titriyor" gibi okunurdu. */
.donem::before{
  background:radial-gradient(32rem 24rem at 12% 92%,
    color-mix(in srgb,var(--r-gebelik) 12%,transparent) 0%,
    color-mix(in srgb,var(--r-gebelik) 4%,transparent) 44%,
    transparent 70%);
  animation-delay:-11s;
}
/* .kap statiktir; konumlandırılmış ::before onun ÜSTÜNE boyanırdı.
   .sahne__ic'teki (13. bölüm) kalıbın aynısı: içerik z-index:1 ile üstte. */
.ana-isim > .kap,.donem > .kap{position:relative;z-index:1}
@keyframes bpNefes{
  0%,100%{transform:scale(1);   opacity:.7}
  50%    {transform:scale(1.07);opacity:1}
}

/* 26.4 KART DERİNLİĞİ — 25.5'in tamamlanması.
   25.5'teki 4px yükselme ve --golge-2 DEĞİŞMEZ (o mesafe orada bilinçli
   olarak sınırlandı: "sağlık içeriği yayınlayan bir sitede abartılı hareket
   güven kırar"). Buraya eklenen tek şey, kartın üstünden aşağı süzülen çok
   soluk bir ışık katmanıdır ve YALNIZ OPACITY ile açılır — layout da paint
   maliyetli bir özellik de animasyonlanmaz.

   z-index:-1 + isolation:isolate ikilisi bilinçlidir: kart kendi yığın
   bağlamını kurar, negatif katman kartın KENDİ ZEMİNİNİN üstünde ama
   METNİN ALTINDA boyanır. Aksi hâlde ışık katmanı yazının üzerine biner ve
   metni soluklaştırırdı. pointer-events:none ile tıklamayı da yutmaz. */
.arac-hub__kart,.ana-isim__kart,.donem__oge{isolation:isolate}
.donem__oge{position:relative;overflow:hidden}
.arac-hub__kart::after,
.ana-isim__kart::after,
.donem__oge::after{
  content:"";position:absolute;inset:0;z-index:-1;
  pointer-events:none;opacity:0;
  background:radial-gradient(130% 82% at 50% 0%,
    color-mix(in srgb,var(--vurgu) 13%,transparent) 0%,transparent 62%);
  transition:opacity var(--gecis);
}
.arac-hub__kart:hover::after,.arac-hub__kart:focus-visible::after,
.ana-isim__kart:hover::after,.ana-isim__kart:focus-visible::after,
.donem__oge:hover::after,.donem__oge:focus-within::after{opacity:1}

/* Dönem kartı 25.5'te üst vurgu şeridini almamıştı; üç kart ailesi aynı
   sayfada yan yana durduğu için geri bildirim dili de aynı olmalı. */
.donem__oge::before{
  content:"";position:absolute;inset:0 0 auto;height:3px;
  background:linear-gradient(90deg,var(--vurgu),
    color-mix(in srgb,var(--vurgu) 22%,transparent));
  transform:scaleX(0);transform-origin:left center;
  transition:transform var(--gecis-y);
}
.donem__oge:hover::before,.donem__oge:focus-within::before{transform:scaleX(1)}

/* 26.5 Dar ekran — telefonda kabarcıklar seyrelir, nefes katmanı söner.
   25.6'daki gerekçenin aynısı: küçük ekranda görsel katkısı okunmuyor,
   yalnız pil harcıyor. */
@media (max-width:640px){
  .sahne__akis::before{opacity:.55}
  .ana-isim::before,.donem::before{animation:none;opacity:.8;transform:none}
  .bolum-im{width:2.3rem;height:2.3rem;padding:.48rem}
}

/* 26.6 HAREKET TERCİHİ — bu bölümde eklenen HER hareket burada durur.
   16. bölümün genel kuralı süreleri .001ms'e indirir ama animation:none
   DEMEZ; sonsuz döngüler o hızda delice tekrar eder ve son karede takılır.
   25.7 ile aynı gerekçe. Erişilebilirlik gereğidir, nezaket değil:
   vestibüler rahatsızlığı olan kullanıcı için hareket gerçek bir semptom
   tetikleyicisidir.

   NOT: acilisKur() az-hareket tercihinde .gorundu sınıfını HEMEN ekler,
   yani 26.1'deki yaylanma tetiklenir — bu yüzden burada açıkça sıfırlanır
   ve motif nihai (tam boy, dönmemiş) hâliyle durur. */
@media (prefers-reduced-motion:reduce){
  /* 26.1 bölüm imi — yaylanma yok, motif tam boy */
  .js [data-ac] .bolum-im,
  .js [data-ac].gorundu .bolum-im{
    animation:none!important;transform:none!important;opacity:1!important;
  }
  /* 26.2 hero kabarcıkları — katman sabit kalır */
  .sahne__akis::before{animation:none!important;transform:none!important}
  /* 26.3 nefes — durur, orta parlaklıkta sabitlenir */
  .ana-isim::before,.donem::before{
    animation:none!important;transform:none!important;opacity:.85!important;
  }
  /* 26.4 kart ışığı ve dönem şeridi — geçişsiz, açık hâlde */
  .arac-hub__kart::after,.ana-isim__kart::after,.donem__oge::after{transition:none}
  .donem__oge::before,
  .donem__oge:hover::before,
  .donem__oge:focus-within::before{transform:scaleX(1);transition:none}
}

/* 26.7 Baskı — dekoratif katmanlar kâğıtta yalnız mürekkep harcar.
   Bölüm imi KALIR: küçüktür ve başlıkların yapısını kâğıtta da taşır. */
@media print{
  .sahne__akis::before,
  .ana-isim::before,.donem::before,
  .arac-hub__kart::after,.ana-isim__kart::after,
  .donem__oge::before,.donem__oge::after{display:none!important}
  .bolum-im{background:none;border-color:#999}
}

/* ======================================================================
   27. YP10: "TEK KİTAP, AYRI BÖLÜMLER" — FİŞ ÇEKMECESİ (ana sayfa)

   YP11'de dekor DEĞİŞTİ. Eski sahne 3B bir açık kitaptı ve yaprakları
   sırttan çeviriyordu (.kitap__cilt/__sayfa/__yaprak/__im + bpYaprak,
   bpKitapIm keyframe'leri). Beğenilmedi ve tamamen kaldırıldı — ölü kural
   bırakılmadı. Metin bloğunun kuralları (27.1) olduğu gibi korundu.

   YENİ SAHNE: bir kütüphane fiş çekmecesi. TEK çekmece (tek kitap),
   içinden yelpaze gibi açılan BEŞ fiş (ayrı bölümler) — başlığın söylediği
   şeyin resmi. Fiş sekmeleri :root'taki bölüm renklerini (--r-*) taşır,
   yani dekor sitenin renk dilini tekrar eder.

   ÜÇ KATMAN, ÜÇ AYRI HAREKET:
     1. Hale     — çok yavaş nefes (12 sn), derinlik verir.
     2. Yelpaze  — bütün fişler birlikte ±1,8° salınır (13 sn).
     3. Fişler   — sırayla dışa kayar; 8 sn'lik ortak döngüde 1,6 sn arayla
                   NEGATİF gecikmelerle koşar, böylece dalga soldan sağa
                   yürür ve sahne ilk saniyede donmuş görünmez.

   KURALLAR (CLAUDE.md § 9 · § 25):
     · Yalnız transform/opacity animasyonu. width/top/margin YASAK.
     · Dekor aria-hidden; bilgi soldaki METİN listesindedir.
     · Satır içi <script> ve satır içi style YOK — hareketin tamamı burada.
     · prefers-reduced-motion'da hareket TAMAMEN durur; yelpaze açık ve
       okunur hâlde kalır (27.7).
     · Baskıda hiç basılmaz (27.8).
     · Yatay taşma üretmez: sahne overflow:hidden, SVG kendi viewBox'ında
       kırpılır ve genişliği min(100%,20rem) ile sınırlıdır.

   NEDEN AÇI CSS DEĞİL SVG ÖZNİTELİĞİ: yelpazenin statik açılımı şablonda
   `transform="rotate(… 160 232)"` özniteliğiyle verilir. `transform-box`
   desteklenmeyen bir tarayıcıda CSS dönüşü SVG'nin sol üst köşesine göre
   hesaplanır ve sahne dağılırdı; öznitelik yolunda yelpaze her koşulda
   doğru açılır, CSS yalnız hareketi ekler.
   ====================================================================== */

/* 27.1 Yerleşim ve metin bloğu — DEĞİŞMEDİ. */
.kitap__duzen{display:grid;gap:calc(var(--aralik) * 1.2);align-items:center;
  grid-template-columns:1fr}
@media (min-width:60rem){
  .kitap__duzen{grid-template-columns:1fr minmax(16rem,22rem)}
}
.kitap__giris{color:var(--metin-2);max-width:calc(42 * var(--ch-govde))}
.kitap__liste{list-style:none;margin:1rem 0 0;padding:0;display:flex;
  flex-wrap:wrap;gap:.5rem}
.kitap__liste a{display:inline-block;padding:.42rem .85rem;border-radius:999px;
  border:1px solid var(--cizgi);color:var(--metin);text-decoration:none;
  font-size:var(--fs-mini);transition:border-color var(--gecis),transform var(--gecis)}
.kitap__liste a:hover{border-color:var(--vurgu);transform:translateY(-2px)}

/* 27.2 Sahne kabı — SVG kendi viewBox'ında kırpılır (UA varsayılanı),
   overflow:visible verilmez; hiçbir parça kabın dışına taşamaz. */
.fislik{display:grid;place-items:center;overflow:hidden;padding:.5rem 0}
.fislik__sahne{display:block;width:min(100%,20rem);height:auto}

/* 27.3 Hale — zeminde nefes alan yumuşak leke. */
.fislik__hale{fill:var(--vurgu-yumusak);
  transform-box:fill-box;transform-origin:center;
  animation:bpFislikHale 12s ease-in-out infinite}
@keyframes bpFislikHale{
  0%,100%{transform:scale(1);   opacity:.42}
  50%    {transform:scale(1.06);opacity:.62}
}

/* 27.4 Yelpaze — hepsi birlikte, çok yavaş. Dönme merkezi çekmecenin içi. */
.fislik__yelpaze{transform-box:view-box;transform-origin:160px 232px;
  animation:bpFislikSalin 13s ease-in-out infinite}
@keyframes bpFislikSalin{
  0%,100%{transform:rotate(-1.8deg)}
  50%    {transform:rotate(1.8deg)}
}

/* 27.5 Fişler. translateY üst grubun DÖNMÜŞ eksenindedir: fiş kendi yönünde
   dışa kayar, yani hareket yelpazenin açılımıyla uyumludur. */
.fislik__kart{fill:var(--zemin-2);stroke:var(--cizgi);stroke-width:1.4}
.fislik__satir{fill:var(--metin-2);opacity:.3}
.fislik__sekme--1{fill:var(--r-isimler)}
.fislik__sekme--2{fill:var(--r-hesaplama)}
.fislik__sekme--3{fill:var(--r-rehber)}
.fislik__sekme--4{fill:var(--r-gebelik)}
.fislik__sekme--5{fill:var(--r-gelisim)}

.fislik__ic{animation:bpFislikKalk 8s ease-in-out infinite}
.fislik__ic--1{animation-delay:-6.4s}
.fislik__ic--2{animation-delay:-4.8s}
.fislik__ic--3{animation-delay:-3.2s}
.fislik__ic--4{animation-delay:-1.6s}
.fislik__ic--5{animation-delay:0s}
@keyframes bpFislikKalk{
  0%,70%,100%{transform:translateY(0)}
  14%,34%    {transform:translateY(-13px)}
}

/* 27.6 Çekmece — fişlerden SONRA çizilir; fişler arkasından çıkar. */
.fislik__govde{fill:var(--zemin-3);stroke:var(--cizgi);stroke-width:1.4}
.fislik__etiket{fill:var(--zemin-2);stroke:var(--cizgi);stroke-width:1.2}
.fislik__yazi{fill:var(--metin-2);opacity:.45}
.fislik__kulp{fill:var(--vurgu);opacity:.85}

/* 27.7 Hareket tercihi — üç katman da durur, yelpaze AÇIK kalır. */
@media (prefers-reduced-motion:reduce){
  .fislik__hale,.fislik__yelpaze,.fislik__ic{
    animation:none!important;transform:none!important}
  .fislik__hale{opacity:.5!important}
  .kitap__liste a{transition:none}
}
/* 27.8 Baskı — dekor kâğıtta yalnız mürekkep harcar. */
@media print{
  .fislik{display:none!important}
}

/* ======================================================================
   28. YP10: BEBEK DÖNENCESİ (ana sayfa kapanış kartı)

   Beşik mobili: askı çubuğu yavaşça salınır, çubuğa asılı dört süs kendi
   ipinde TERS yönde döner. Ters dönüş, gerçek bir mobildeki gibi süslerin
   hep düz kalmasını sağlar — yalnız yerleri değişir, kendileri yatmaz.

   KURALLAR (CLAUDE.md § 9 · § 25):
   - Yalnız transform/opacity animasyonu — düzen (layout) hesabı tetiklemez.
   - Satır içi betik YOK; hareketin tamamı CSS. Sayfaya 0 bayt JS ekler.
   - Dekor `aria-hidden`; ekran okuyucuya hiçbir şey söylemez.
   - prefers-reduced-motion altında BÜTÜN hareket durur (28.6).
   - Baskıda dekor hiç basılmaz (28.7) — kâğıtta yalnız mürekkep harcardı.
   ====================================================================== */

/* 28.1 Yerleşim — kitap bölümüyle aynı ızgara, aynada çevrilmiş hâli */
.donence__duzen{display:grid;gap:calc(var(--aralik) * 1.2);align-items:center;
  grid-template-columns:1fr}
@media (min-width:60rem){
  .donence__duzen{grid-template-columns:minmax(14rem,20rem) 1fr}
  .donence__metin{order:2}
  .donence__sahne{order:1}
}
.donence__giris{margin:.5rem 0 0;color:var(--metin-2);max-width:calc(46 * var(--ch-govde))}
.donence__eylem{margin:1.1rem 0 0}

/* 28.2 Sahne — süslerin salınım payı için yatay boşluk bırakılır */
.donence__sahne{position:relative;height:13.5rem;display:grid;
  justify-items:center;align-content:start;overflow:hidden}
.donence__kanca{position:absolute;top:0;width:.5rem;height:1.1rem;
  border-radius:0 0 .25rem .25rem;background:var(--cizgi)}

/* 28.3 Askı kolu — salınımın kaynağı; dönme merkezi kancadadır */
.donence__kol{position:relative;margin-top:1.05rem;width:min(15rem,86%);
  transform-origin:50% -1.05rem;
  animation:bpDonenceSalin 9s ease-in-out infinite}
.donence__cubuk{display:block;height:.34rem;border-radius:.2rem;
  background:linear-gradient(90deg,var(--cizgi),var(--vurgu),var(--cizgi));
  opacity:.75}

/* 28.4 İpler — çubuğun altına asılır, uçlar ortadan kısa */
.donence__ip{position:absolute;top:.34rem;display:grid;justify-items:center;
  width:2.6rem;margin-left:-1.3rem}
.donence__ip::before{content:"";display:block;width:1px;
  background:var(--cizgi);opacity:.7}
.donence__ip--1{left:12%}   .donence__ip--1::before{height:2.6rem}
.donence__ip--2{left:37.5%} .donence__ip--2::before{height:4rem}
.donence__ip--3{left:62.5%} .donence__ip--3::before{height:3.2rem}
.donence__ip--4{left:88%}   .donence__ip--4::before{height:4.6rem}

/* 28.5 Süsler — ters dönüş + hafif nefes; her biri farklı gecikmede */
.donence__sus{width:2.4rem;height:2.4rem;fill:currentColor;
  animation:bpDonenceTers 9s ease-in-out infinite}
.donence__sus--ay{color:var(--vurgu)}
.donence__sus--bulut{color:var(--metin-2);opacity:.8}
.donence__sus--kalp{color:#c96a72}
.donence__sus--yildiz{color:#d8a13c}
.donence__ip--2 .donence__sus{animation-delay:-.6s;width:2.1rem;height:2.1rem}
.donence__ip--3 .donence__sus{animation-delay:-1.2s;width:2.2rem;height:2.2rem}
.donence__ip--4 .donence__sus{animation-delay:-1.8s;width:2rem;height:2rem}

/* Zemin: süslerin altında yumuşak bir ışık — kartı yere oturtur */
.donence__zemin{position:absolute;bottom:.6rem;width:60%;height:2.6rem;
  border-radius:50%;background:radial-gradient(ellipse at center,
    color-mix(in srgb,var(--vurgu) 16%,transparent),transparent 70%);
  animation:bpDonenceIsik 9s ease-in-out infinite}

@keyframes bpDonenceSalin{
  0%,100%{transform:rotate(-3.2deg)}
  50%    {transform:rotate(3.2deg)}
}
/* Kolun tersi: süs kendi ekseninde geri döner, böylece hep düz durur. */
@keyframes bpDonenceTers{
  0%,100%{transform:rotate(3.2deg) translateY(0)}
  50%    {transform:rotate(-3.2deg) translateY(-2px)}
}
@keyframes bpDonenceIsik{
  0%,100%{transform:scaleX(.92);opacity:.55}
  50%    {transform:scaleX(1.06);opacity:.8}
}

/* 28.6 Hareket azaltma — dönence durur, açık ve okunur hâlde kalır */
@media (prefers-reduced-motion:reduce){
  .donence__kol,.donence__sus,.donence__zemin{
    animation:none!important;transform:none!important;
  }
  .donence__zemin{opacity:.6!important}
}

/* 28.7 Baskı — dekor kâğıtta yalnız mürekkep harcar */
@media print{
  .donence__sahne{display:none!important}
  .donence__duzen{grid-template-columns:1fr!important}
}

/* ======================================================================
   29. YP10: MOBİL OKUNURLUK — ölçülmüş düzeltmeler

   Kullanıcı şikâyeti: "fontlar özellikle mobilde çok göz yoruyor."
   375px'te gerçek tarayıcıda ölçüldü; üç ayrı sorun çıktı ve üçü de
   font AİLESİNDEN değil, BOYUT ve ARALIK değerlerinden kaynaklanıyordu:

     1. Düzyazı taşıyan bloklar 14px ve 12,4px'ti (SSS cevabı, fiş hızlı
        bilgileri, kart açıklaması). Jeton değerleri yükseltildi (§ :root).
     2. Mono metin 12,4px + .14em harf aralığıyla basılıyordu. Mono zaten
        geniş; o boyutta bu aralık kelimeyi dağıtıyor.
     3. Küçük metinlerde satır yüksekliği gövdeyle aynı orandaydı; küçük
        punto Türkçede daha çok satır arası ister (ğ ş ç ı ö ü + İ).

   FONT AİLESİ DEĞİŞTİRİLMEDİ. Fraunces + Nunito Sans + IBM Plex Mono
   Faz-1'den beri sitenin görsel dili (CLAUDE.md bölüm 8) ve üçünün de
   latin-ext alt kümesi yüklü — yani "Türkçe glifler yedek fonttan geliyor"
   teşhisi bu sitede GEÇERSİZ. Aile değişimi ayrı ve bilinçli bir karardır.
   ====================================================================== */

/* 29.1 Düzyazı taşıyan "küçük" bloklar gövde ölçüsüne çıkar.
       Bunlar okunacak metindir; rozet ya da etiket değildir. */
.sss__ic > div,
.fis__ozet,
.kart p,
.kapi p{
  font-size:var(--fs-gov);
  line-height:1.7;
}

/* 29.2 Mono metinde harf aralığı mobilde kısılır.
       .14em, 13px'te 1,82px eder — kelime dağılır. Masaüstünde katalog
       havasını veren aralık, küçük ekranda okunurluğu düşürüyor. */
@media (max-width:48rem){
  .fis__no,
  .fis__hizli b{
    letter-spacing:.06em;
  }
  .ust-etiket,
  .bolum-basi__ust{
    letter-spacing:.08em;
  }
}

/* 29.3 Küçük punto daha çok satır arası ister. */
small,
.mini,
.arsiv__ozet,
.yazi p{
  line-height:1.65;
}

/* 29.4 Rakamlar zıplamasın — fiş numarası, hesaplayıcı sonucu, tarih ve
       tablo hücreleri sabit genişlikli rakam kullanır. Hesaplayıcı sonucu
       9→10 haftaya geçerken kutu genişliğinin değişmemesi için. */
.fis__no,
.arac__sonuc,
.arac__sonuc-deger,
time,
table td,
table th{
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1;
}

/* 29.5 Satır uzunluğu ve kırılma. Türkçe kelimeler uzundur; 68ch üstü
       satırda göz satır başını kaybeder. text-wrap değerleri desteklenmeyen
       tarayıcıda sessizce yok sayılır (aşamalı iyileştirme). */
.yazi__govde p,
article p{
  max-width:calc(68 * var(--ch-govde));
  text-wrap:pretty;
}
h1,h2,h3{
  text-wrap:balance;
}

/* 29.6 Alt bilgideki YASAL satırlar sayfanın en küçük metni olmamalı.
       Ölçüldü: sağlık uyarısı ve iş ortaklığı açıklaması 13px ile sayfadaki
       en küçük düzyazıydı. CLAUDE.md 23B.2'nin mantığı burada da geçerlidir:
       görünmez kılınmış bir sorumluluk reddi, hiç basılmamış bir sorumluluk
       reddiyle aynı sonucu doğurur. Punto küçültmek de bir görünmezleştirme
       biçimidir — okunabilir kalması hem okuyucuya hem yayıncıya borçtur. */
.alt__yasal p,
.alt__yasal{
  font-size:var(--fs-kk);
  line-height:1.65;
}

/* ======================================================================
   30. YP11 — HERO SAYAÇ ŞERİDİ: BAĞLANTILI, SİMGELİ KUTULAR
   ----------------------------------------------------------------------
   Sayaçlar ölü birer sayıydı: ziyaretçi "20 hesaplama aracı" okuyup
   nereye gideceğini bulamıyordu. Artık her kutu kendi hub'ına giden bir
   bağlantıdır (ust-bant.php) ve bu bölüm ona yüzey kazandırır.

   Bölüm 25.2'deki .sayac__deger kuralına (tabular-nums) ve 13. bölümdeki
   .sayaclar / .sayac__deger / .sayac__ad tanımlarına DOKUNULMAZ; burada
   yalnız yeni sınıflar ve yeni durumlar tanımlanır.

   Renk --nk özel özelliğinden gelir; değeri Sayfa::bolumRengi() üretir ve
   daima "var(--r-{slug}, var(--vurgu))" biçimindedir — main.css'te
   karşılığı olmayan yeni bir bölüm renksiz kalmaz, vurgu rengine düşer.
   ====================================================================== */

/* 30.1 Kutu. Bağlantı olduğunda da olmadığında da AYNI yerleşim: şerit
        yarısı bağlantılı yarısı düz olduğunda hizalama bozulmamalıdır. */
.sayac{
  display:flex;align-items:center;gap:.8rem;
  padding:.7rem .85rem;border-radius:var(--kose-s);
  border:1px solid transparent;background-color:transparent;
  color:inherit;text-decoration:none;
}

.sayac__ic{min-width:0}

/* 30.2 Simge — bölüm renginde, yumuşak bir pul üzerinde. Rest hâlindeki
        "ince vurgu" budur; kutuyu çerçeveyle boğmadan bölümü belli eder.
        Simge aria-hidden'dır: anlamı taşıyan metin zaten yanındadır. */
.sayac__ikon{
  flex:0 0 auto;box-sizing:border-box;
  width:2.4rem;height:2.4rem;padding:.55rem;border-radius:50%;
  color:var(--nk,var(--vurgu));
  background:color-mix(in srgb,var(--nk,var(--vurgu)) 11%,transparent);
}

/* 30.3 Bağlantılı kutu — imleç, geçiş ve hover'da hafif yükselme.
        transform yalnız BAĞLANTILI kutuda tanımlıdır; tıklanamayan bir
        kutunun yükselmesi yanlış bir tıklanabilirlik sinyali verirdi. */
.sayac--baglantili{
  cursor:pointer;
  transition:transform var(--gecis),background-color var(--gecis),
             border-color var(--gecis),box-shadow var(--gecis);
}
.sayac--baglantili:hover,
.sayac--baglantili:focus-visible{
  transform:translateY(-3px);
  background-color:var(--zemin-2);
  border-color:color-mix(in srgb,var(--nk,var(--vurgu)) 34%,transparent);
  box-shadow:var(--golge-1);
}
.sayac--baglantili:hover .sayac__ikon,
.sayac--baglantili:focus-visible .sayac__ikon{
  background:color-mix(in srgb,var(--nk,var(--vurgu)) 20%,transparent);
}
.sayac--baglantili:hover .sayac__ad,
.sayac--baglantili:focus-visible .sayac__ad{color:var(--metin)}

/* 30.4 Klavye odağı görünür kalır — yükselme tek başına yeterli bir odak
        göstergesi DEĞİLDİR (hareket kapalıyken hiç oluşmaz). */
.sayac--baglantili:focus-visible{
  outline:2px solid var(--nk,var(--vurgu));outline-offset:3px;
}

/* 30.5 Dar ekran — pul küçülür, kutu daha az yer kaplar. */
@media (max-width:640px){
  .sayac{gap:.65rem;padding:.55rem .6rem}
  .sayac__ikon{width:2rem;height:2rem;padding:.45rem}
}

/* 30.6 HAREKET TERCİHİ — bu bölümde eklenen HER hareket burada durur.
        Renk ve gölge değişimi kalır: onlar hareket değil, geri bildirimdir. */
@media (prefers-reduced-motion:reduce){
  .sayac--baglantili{transition:background-color var(--gecis),border-color var(--gecis)}
  .sayac--baglantili:hover,
  .sayac--baglantili:focus-visible{transform:none;box-shadow:none}
}

/* 30.7 Baskı — kâğıtta pul ve çerçeve yalnız mürekkep harcar. */
@media print{
  .sayac{padding:0;border:0}
  .sayac__ikon{display:none}
}

/* ======================================================================
   31. YP10: OKUMA YÜZEYİ — motif metnin arkasından okunurluğu düşürüyordu

   Ölçüldü (gerçek tarayıcı, /isimler/cagatay): <p> → article.metin → .kap
   → main zincirinin TAMAMI saydam (rgba(0,0,0,0)); gövdenin motifi
   doğrudan yazının arkasında duruyor ve araya hiçbir yüzey girmiyor.

   Motif bir ARKAPLAN'dır, metnin önüne geçemez — ama harflerin arkasında
   desen olması kontrastı bozar ve göz satırı takip etmekte zorlanır. Erkek
   isim temasında (isimler-erkek) daha belirgin, çünkü o paletin motifi
   koyu mavi radyal geçişler taşıyor.

   Çözüm sitenin kendi metaforuyla uyumlu: uzun metin KÂĞIT ÜZERİNDE okunur.
   Yüzey tam opak değil (.94) — motif kenarlarda hâlâ hissedilir, sayfa
   düzleşmez, ama harflerin arkası temizlenir.

   KAPSAM: .metin sınıfı beş sayfa tipinde kullanılıyor (yazı · sayfa ·
   isim · isim-koleksiyon · araç) — hepsi uzun metin taşır, hepsi kazanır.
   ====================================================================== */
.metin{
  background:color-mix(in srgb, var(--zemin-2) 94%, transparent);
  border-radius:var(--kose-l);
  padding:clamp(1.1rem, .6rem + 2vw, 2.2rem);
  box-shadow:0 1px 2px rgba(0,0,0,.04);
}

/* color-mix desteklemeyen tarayıcıda düz zemin — kontrast yine kazanılır. */
@supports not (background: color-mix(in srgb, white 50%, transparent)){
  .metin{background:var(--zemin-2)}
}

/* Dar ekranda kenar boşluğu zaten dar; yüzeyi kenara yapıştırma. */
@media (max-width:36rem){
  .metin{border-radius:var(--kose-m);padding:1.1rem .95rem}
}

@media print{
  .metin{background:none;box-shadow:none;padding:0}
}

/* ======================================================================
   32. YP12 — BÖLÜM RİTMİ: KÂĞIT AYRACI VE BÖLÜM YÜZEYİ

   Site sahibinin geri bildirimi: ana sayfa hâlâ "kaba ve sade" duruyordu.
   Ölçüldü (gerçek tarayıcı, 1280px) ve sebep süs eksikliği DEĞİLDİ —
   § 25–§ 28 zaten hero akışı, kabarcık, nefes, kitap ve dönence
   animasyonlarını taşıyor. Sebep RİTİM eksikliğiydi: <main> altındaki
   dokuz bölümün YEDİSİNİN zemini `rgba(0,0,0,0)` idi, yani sayfa baştan
   sona tek parça krem bir alandı ve bölümleri ayıran tek şey boşluktu.
   Göz "burada yeni bir konu başlıyor" sinyalini hiçbir yerde almıyordu.

   Bu bölüm iki şey ekler ve İKİSİ BİRLİKTE çalışır:
     32.1  .bolum-ayrac  — iki bölüm arasına, bölümün KENDİ RENGİNDE akan
                           ince bir kâğıt kenarı (parca/bolum-ayrac.php)
     32.2  .bolum--yuzey — bölüme kendi rengiyle hafifçe tonlanmış bir
                           yüzey; ayraçların ayırdığı "sayfa" budur

   TASARIM SINIRLARI — § 25'in beş sınırı burada da AYNEN geçerlidir.
   En sıkı üçü tekrar edilir:
     1. Yalnız transform ve opacity animasyonlanır.
     2. LCP ögesi (hero h1 + ilk paragraf) animasyonla GİZLENMEZ. Bu
        bölümün hiçbir kuralı .sahne'ye ya da .sahne__ic'e dokunmaz.
     3. Yatay taşma üretilmez: ayraç overflow:hidden'dır ve içindeki SVG
        zaten viewBox'ına kırpılır.

   RENK --ay özel özelliğinden gelir ve daima "var(--r-{slug},var(--vurgu))"
   biçimindedir (§ 30'daki --nk kalıbının aynısı): main.css'te karşılığı
   olmayan yeni bir bölüm renksiz kalmaz, vurgu rengine düşer.
   ====================================================================== */

/* 32.1 KÂĞIT AYRACI ---------------------------------------------------- */
/* Tam genişlikte ince bir şerit. İki dalga ZIT yönde akar; hızları ve
   yükseklikleri farklı olduğu için sürekli birbirini keserler — tek bir
   dalganın "kaydırma bandı" hissi vermesi böyle önlenir.
   overflow:hidden bir kalkandır: dalga yolu görünür alanın iki yanına
   birer periyot taşar (parçadaki not) ve dışarı sızmamalıdır. */
.bolum-ayrac{
  position:relative;overflow:hidden;pointer-events:none;
  height:clamp(2.4rem,1.7rem + 2.2vw,3.9rem);
  /* Kenarlarda yumuşak sönme: dalga ekranın kenarında kesilmiş gibi
     durmasın. Statik bir maskedir — animasyonlanmaz. */
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 14%,#000 86%,transparent 100%);
  mask-image:linear-gradient(90deg,transparent 0,#000 14%,#000 86%,transparent 100%);
}
.bolum-ayrac__dalgalar{display:block;width:100%;height:100%}

/* stroke rengi --ay'dan gelir; vector-effect ZORUNLUDUR:
   preserveAspectRatio="none" viewBox'ı yatayda ve dikeyde FARKLI oranda
   ölçekler, yani ölçeklenen bir kontur dikeyde kalınlaşıp yatayda incelirdi
   (dalganın tepeleri şişer). non-scaling-stroke çizgiyi her ekranda aynı
   kalınlıkta tutar. */
.bolum-ayrac__d1,
.bolum-ayrac__d2{
  fill:none;stroke:var(--ay,var(--vurgu));
  vector-effect:non-scaling-stroke;stroke-linecap:round;
  will-change:transform;
}
/* Ön dalga: daha koyu ve kalın. 400 birim = tam bir periyot → dikişsiz. */
.bolum-ayrac__d1{
  stroke-width:2;opacity:.55;
  animation:bpAyracSag 26s linear infinite;
}
/* Arka dalga: soluk, ince, ZIT yönde ve biraz aşağıda. Negatif gecikme
   ikisini farklı fazdan başlatır — aynı anda hizalanmazlar. */
.bolum-ayrac__d2{
  stroke-width:1.3;opacity:.3;
  animation:bpAyracSol 38s linear infinite -9s;
}
@keyframes bpAyracSag{
  from{transform:translate3d(0,0,0)}
  to  {transform:translate3d(400px,0,0)}
}
@keyframes bpAyracSol{
  from{transform:translate3d(0,5px,0)}
  to  {transform:translate3d(-400px,5px,0)}
}

/* Ortadaki düğme — kitap ayracının püskülü. Ortalama MARGIN ile yapılır,
   transform ile değil: transform animasyona ayrılmıştır, ikisi aynı
   özellikte çakışırdı. */
.bolum-ayrac__im{
  position:absolute;left:50%;top:50%;
  width:.58rem;height:.58rem;margin:-.29rem 0 0 -.29rem;
  border-radius:50%;background:var(--ay,var(--vurgu));
  box-shadow:0 0 0 .34rem color-mix(in srgb,var(--ay,var(--vurgu)) 13%,transparent);
  animation:bpAyracIm 7s ease-in-out infinite;
  will-change:transform,opacity;
}
@keyframes bpAyracIm{
  0%,100%{transform:scale(1);   opacity:.68}
  50%    {transform:scale(1.32);opacity:1}
}

/* 32.2 BÖLÜM YÜZEYİ ---------------------------------------------------- */
/* Bölüme kendi rengiyle çok hafif tonlanmış bir kâğıt yüzeyi. Ton üstte
   yoğun, aşağı inerken --zemin-3'e çözülür: bölüm "yukarıdan aydınlanan
   bir sayfa" gibi okunur ve alt kenarı bir sonraki ayraca yumuşak bağlanır.

   § 24.1'deki .donem kuralını (düz --zemin-3 + --cizgi kenarlık) EZER;
   ikisi aynı özgüllükte (0,1,0) ve bu bölüm dosyada daha SONRA geldiği
   için kazanır. Bilinçlidir: dönem şeridi de artık kendi renginde
   tonlanır, böylece yüzeyli üç bölüm aynı dili konuşur. */
.bolum--yuzey{
  background:linear-gradient(180deg,
    color-mix(in srgb,var(--ay,var(--vurgu)) 7%,var(--zemin-3)) 0%,
    var(--zemin-3) 64%);
  border-block:1px solid color-mix(in srgb,var(--ay,var(--vurgu)) 20%,var(--cizgi));
}
/* color-mix desteklemeyen tarayıcıda düz yüzey — ritim yine kazanılır.
   (§ 31'deki .metin kuralıyla aynı geri düşüş kalıbı.) */
@supports not (background:color-mix(in srgb,white 50%,transparent)){
  .bolum--yuzey{background:var(--zemin-3);border-block:1px solid var(--cizgi)}
}

/* 32.3 Dar ekran — telefonda ayraç alçalır ve arka dalga söner.
   § 25.6 / § 26.5 ile aynı gerekçe: küçük ekranda ikinci dalganın görsel
   katkısı okunmuyor, yalnız pil harcıyor. */
@media (max-width:640px){
  .bolum-ayrac{height:2.2rem}
  .bolum-ayrac__d2{display:none}
}

/* 32.4 HAREKET TERCİHİ — bu bölümde eklenen HER hareket burada durur.
   16. bölümün genel kuralı süreleri .001ms'e indirir ama animation:none
   DEMEZ; sonsuz döngüler o hızda delice tekrar eder ve son karede takılır.
   § 25.7 / § 26.6 ile aynı gerekçe. Erişilebilirlik gereğidir, nezaket
   değil: vestibüler rahatsızlığı olan kullanıcı için hareket gerçek bir
   semptom tetikleyicisidir.
   Ayraç KAYBOLMAZ — yalnız durur; bölüm ritmi hareketsiz de okunmalıdır. */
@media (prefers-reduced-motion:reduce){
  .bolum-ayrac__d1,
  .bolum-ayrac__d2,
  .bolum-ayrac__im{animation:none!important;transform:none!important}
  .bolum-ayrac__im{opacity:.8!important}
}

/* 32.5 Baskı — akan dekor kâğıtta yalnız mürekkep harcar. Yüzey de
   kalkar: renkli zemin baskıda hem mürekkep yer hem metnin kontrastını
   düşürür (§ 26.7 ile aynı karar). */
@media print{
  .bolum-ayrac{display:none!important}
  .bolum--yuzey{background:none!important;border-block:0!important}
}

/* 32.6 HERO BAŞLIK VURGUSU — sadece ANA SAYFA.
   13. bölümdeki `.sahne h1 em` düz, tek renk, .12em'lik bir alt çizgi
   basıyordu; büyük Fraunces başlığın altında bu bir "vurgu" değil bir
   kenarlık gibi okunuyordu. Burada aynı çizgi soldan sağa açılan bir
   fırça darbesine çevrilir: başlangıçta koyu, sonunda soluk.

   KAPSAM `.sahne--akisli` SINIFIYLA ANA SAYFAYA KİLİTLİDİR. Sınıfı
   ust-bant parçası $hareketliZemin=true iken basar ve bugün bunu yalnız
   ana sayfa yapar (parca/ust-bant.php). Kırıntılı iç sayfaların hero'su
   böylece BİREBİR korunur — paylaşılan bileşene sessizce dokunmak bu
   depodaki en kolay yan etkidir.

   NEDEN `:has()` DEĞİL — ölçülmüş bir gerileme. İlk yazımda kapsam
   `.sahne:has(.sahne__akis)` ile kuruluyordu. Seçici doğru çalışıyordu
   ama `.sahne__akis` içindeki katmanlar SÜREKLİ animasyon koşuyor ve
   Chrome :has() öznesini bu alt ağaçtaki her değişiklikte yeniden
   değerlendirmek üzere işaretliyor; sayfa ölçülebilir biçimde ağırlaştı
   (tarayıcı otomasyonu betik enjekte edemeyecek kadar meşgul kaldı,
   5 sn zaman aşımı). Statik bir sınıf aynı işi sıfır maliyetle yapar.
   Sürekli animasyon barındıran bir kapsayıcıyı :has() öznesi YAPMA.

   ANİMASYON YOKTUR ve bu bilinçlidir: <h1> LCP adayıdır. Buradaki her
   hareket — çizilme, parlama, soluklaşma — Largest Contentful Paint'i
   doğrudan geciktirirdi. Vurgu ilk boyamada TAM hâliyle görünür.
   background-size'ı animasyonlama; § 25'in birinci sınırı da (yalnız
   transform/opacity) bunu zaten yasaklar. */
.sahne--akisli h1 em{
  background-image:linear-gradient(90deg,
    color-mix(in srgb,var(--vurgu) 82%,transparent) 0%,
    color-mix(in srgb,var(--vurgu) 38%,transparent) 100%);
  background-size:100% .16em;
}

/* ======================================================================
   32. YP10: CLS DÜZELTMESİ — font yüklenmesi hero'yu kaydırıyordu

   PageSpeed (masaüstü) ölçümü: CLS = 0,924 (hedef < 0,1). Kayma
   `div.ust-bant > section.sahne > div.sahne__akis > ::after` öğesine
   atfediliyordu ve aynı raporda beş woff2 dosyası "Web yazı tipi" olarak
   listeleniyordu — ikisi AYNI olayın iki yüzü:

   `font-display:swap` metni önce sistem fontuyla çizer, webfont gelince
   değiştirir. Fraunces'in metrikleri sistem serif'inden farklı olduğu için
   H1'in satır sayısı ve yüksekliği DEĞİŞİYOR; hero kutusu büyüyor ve
   içindeki mutlak konumlu dekor katmanı onunla birlikte kayıyor. Chrome
   kaymayı en büyük boyanmış katmana (::after) yazıyor, ama sebebi o değil.

   ÇÖZÜM: hero kutusunun yüksekliğini font gelmeden ÖNCE ayır. min-height
   font metriğine değil viewport'a bağlı olduğu için swap sırasında kutu
   büyümez, dekor katmanı yerinde kalır.

   NEDEN `font-display:optional` DEĞİL: o, yavaş bağlantıda webfont'u
   TAMAMEN atar ve marka tipografisi kaybolur. Kutuyu sabitlemek hem CLS'yi
   çözer hem fontu korur.

   NEDEN sabit px değil: başlık uzunluğu içeriğe göre değişir; clamp ile
   viewport'a bağlanınca dar ekranda gereksiz boşluk kalmaz.
   ====================================================================== */
/* min-height KALDIRILDI (YP10) — hedefini vurmadı, yan etkisi vardı.

   Ana sayfada hero'nun doğal yüksekliği ~619px; verdiğim 480px tavan
   HİÇ BAĞLAMADI, dolayısıyla font takası kaynaklı CLS hiç düzelmedi.
   Buna karşılık açıklaması olmayan kategori sayfalarında (/rehber,
   /hesaplama) yalnız H1 varken 480px'lik boş bir kutu üretti —
   kullanıcı "çok bos ve uzun alan" diye bildirdi.

   Ders: CLS'i kutuyu zorla büyüterek çözmeye çalışma. Font takasının
   doğru çözümü metrik gecersiz kilmadir (size-adjust, ascent-override,
   descent-override) — yedek font webfont ile AYNI yeri kaplar, kutu
   hiç kımıldamaz ve az içerikli sayfalar da bozulmaz. */

/* Dekor katmanı kutunun dışına taşmasın — .sahne zaten overflow:hidden,
   bu satır niyeti açık tutar ve ileride overflow kaldırılırsa korur. */
.sahne__akis{contain:paint}


/* ======================================================================
   33. YP11: KOLEKSİYON KARTI HİZASI (/isimler)

   ÖLÇÜLEN HATA (gerçek tarayıcı, 1432px, ilk satırın dört kartı — hepsi
   aynı ızgara satırında, kart üstü 2359, kart yüksekliği 245px):

     kart                          "N isim" üstü   başlık üstü
     Öz Türkçe Kız İsimleri            2422           2448
     Öz Türkçe Erkek İsimleri          2378           2404
     Kur'an'da Geçen Kız İsimleri      2378           2404
     Doğa Temalı Bebek İsimleri        2399           2426

   Kutular zaten eşitti; bozuk olan KUTU DEĞİL, içeriğin dikey yerleşimiydi
   — en kısa açıklamalı kartın rozeti 44px aşağıdan başlıyordu.

   SEBEP: `.koleksiyon{align-content:end}` (§ 9). Izgara kartı en uzun
   karta göre gerdiği için (align-items:stretch varsayılanı), içerik ALTA
   yapıştırılıyor ve her kart farklı bir y'den başlıyordu. Açıklama ne kadar
   kısaysa rozet o kadar aşağı kayıyordu.

   ÇÖZÜM: içerik ÜSTTEN hizalanır. Kart yüksekliği yine ızgaradan gelir,
   yani kutular eşit kalır; değişen yalnız içeriğin başladığı nokta. Artık
   aynı satırdaki her kartta rozet ve başlık AYNI y'dedir.

   NEDEN `min-height` DEĞİL: kartın kısalması sorun değildi, içeriğin
   kayması sorundu. Sabit bir yükseklik dayatmak dar ekranda taşma üretir
   ve uzun başlıklı kartı kırpardı.

   NOT — "Listeye git": bu bileşende öyle bir bağlantı YOKTUR; kartın
   kendisi bir <a>'dır (parca/isim-hub.php). Alta yapıştırılacak (
   `margin-top:auto`) bir öğe bulunmadığı için eklenmedi ve UYDURMA bir
   bağlantı metni de üretilmedi. Aynı sayfadaki `.kapi__git` ve ana
   sayfadaki `.ana-isim__kart-git` ölçüldü — ikisi de zaten hizalıydı.
   ====================================================================== */
.koleksiyon{align-content:start}

/* ======================================================================
   30. FONT SETİ SEÇİMİ + MOBİL BAŞLIK DÜZELTMESİ   (YP11)
   ======================================================================
   Kullanıcı fontları PANELDEN seçer: /ayarlar → "Yazı tipi seti".
   Ayar settings.font_seti'ye yazılır, düzen (site.php) iki şey basar:

     <html data-font="a|b|c">                      ← görünüm anahtarı
     <link rel="stylesheet" href="tema/css/font-{set}.css">  ← YALNIZ o setin
                                                     @font-face blokları

   NEDEN İKİ MEKANİZMA BİRDEN:
   `<link>` tek başına da çalışırdı (değişkenleri font-{set}.css içine
   koysaydık), ama o zaman tipografi kararları üç dosyaya dağılırdı.
   Ayrım şudur ve korunmalıdır:
     · font-{set}.css → yalnız DOSYA TESLİMİ (@font-face). Başka kural yok.
     · main.css § 30  → bütün GÖRÜNÜM kararları (aile, eksen, ölçü düzeltmesi).
   Böylece bir setin optik ayarını değiştirmek için tek dosyaya bakılır.

   HIZ: Üç setin @font-face'i main.css'te dursaydı tarayıcı kullanılmayan
   woff2'leri indirmezdi (unicode-range + kullanım kuralı), ama üç kat
   @font-face her ziyaretçiye iner ve ayrıştırılır. Şimdi seçili olmayan
   setin blokları HİÇ GÖNDERİLMEZ. Ölçüm: her sette 4 woff2 dosyası
   (2 başlık + 2 gövde) + 4 mono = ağ trafiğinde tek set.

   ÖNBELLEK: Ayar `settings` grubundadır; değişince purge haritası (§ 18.5)
   koşulsuz "TÜMÜ" döndürür (nesil +1) ve her sayfa yeni <link> ile
   yeniden üretilir. Ayrı bir purge kaydı GEREKMEZ.
   ---------------------------------------------------------------------- */

/* 30.1 Set B — "Ansiklopedi": Source Serif 4 + Source Sans 3 */
html[data-font="b"]{
  --f-baslik:"Source Serif 4","Source Serif 4 Yedek",Georgia,serif;
  --f-govde:"Source Sans 3","Source Sans 3 Yedek","Segoe UI",system-ui,sans-serif;
  --ch-govde:.497em;    /* Source Sans 3  "0" @400 */
  --ch-baslik:.520em;   /* Source Serif 4 "0" @700 (h1 .508 · h2 .532 ortalaması) */
}

/* 30.2 Set C — "Okuma": Literata + IBM Plex Sans */
html[data-font="c"]{
  --f-baslik:"Literata","Literata Yedek",Georgia,serif;
  --f-govde:"IBM Plex Sans","IBM Plex Sans Yedek","Segoe UI",system-ui,sans-serif;
  --ch-govde:.600em;    /* IBM Plex Sans "0" @400 (ağırlıktan bağımsız) */
  --ch-baslik:.6255em;  /* Literata      "0" @700 (h1 .631 · h2 .620 ortalaması) */
}

/* 30.3 Fraunces'e özgü eksenlerin B/C'de SIFIRLANMASI.

   main.css'te 20 ayrı kuralda `font-variation-settings:"opsz" N,"SOFT" N,
   "WONK" N` yazılıdır. SOFT ve WONK yalnız Fraunces'te vardır; başka bir
   fontta bulunmayan eksen sessizce yok sayılır, sorun değil. Sorun `opsz`:
   o eksen B ve C'de de VARDIR (Source Serif 4: 8..60, Literata: 7..72) ve
   sabit yazılmış 96 / 144 gibi değerler fontun tavanına kırpılır — yani
   32 px'lik bir telefon başlığı "60 punto afiş" optiğiyle çizilir.

   Çözüm sabit bir sayı vermek DEĞİL, ekseni serbest bırakmaktır:
   `font-variation-settings:normal` + `font-optical-sizing:auto` ile opsz
   GERÇEK punto boyutunu izler (33 px başlık → opsz 33, 69 px → opsz 69).
   Optik boy ekseninin var oluş amacı tam olarak budur.

   Seçici özgüllüğü: (0,1,2). Ezdiği 20 kuralın en yükseği `.sahne h1`
   yani (0,1,1) — bölüm sonda olduğu için eşitlikte de bu kazanır.
   `*` yerine tek tek seçici yazmak 20 satır kopya demekti; kopya er geç
   asıl kurallardan ayrışır. */
html[data-font="b"] body *,
html[data-font="c"] body *{
  font-variation-settings:normal;
  font-optical-sizing:auto;
}

/* 30.4 MOBİLDE BAŞLIK — asıl şikâyetin karşılığı (SETTEN BAĞIMSIZ).

   ÖLÇÜM (375 px, gerçek tarayıcı, düzeltme öncesi):
     .sahne h1  font-size 38,4px · line-height 1,22 (46,85px)
                letter-spacing -0,46px · opsz 144

   ÜÇ AYRI SORUN VARDI:

   (1) BOYUT. 38,4px, 343 px'lik içerik sütununda çok büyüktü. Türkçe
       başlıklar uzun bileşik sözcüklerden kurulur ("Bebeğinizin",
       "Gelişiminde", "Hesaplayıcı") ve satır başına ~11 karakter
       düşüyordu; her başlık 3–4 satıra kırılıyor, sahne ekranı yutuyordu.
       Taban 32,8px'e indirildi (--fs-dev, yukarıda). Üst sınır DEĞİŞMEDİ.

   (2) OPTİK BOY — sevilmemenin asıl teknik sebebi. `opsz 144` Fraunces'in
       eksen TAVANIDIR ve "afiş/kapak" optiğidir: azami kalem kontrastı,
       kıl gibi inceltilmiş bağlantı çizgileri, en sıkı harf boşluğu.
       Bu optik 69 px'lik masaüstü başlıkta doğru, 38 px'lik telefon
       başlığında yanlıştır — ince çizgiler telefon ekranında yarım
       piksele düşüp gri bir titremeye dönüşür ve harfler "dalgalı"
       görünür. Aşağıda mobilde opsz 40'a çekilir.

   (3) DİYAKRİTİK PAYI. Türkçede İ ve Ğ kap yüksekliğinin ÜSTÜNE, ş ve ç
       taban çizgisinin ALTINA taşar. İki satırlı bir başlıkta üst satırın
       ş/ç kuyruğu ile alt satırın İ noktası aynı boşluğu paylaşır.
       line-height 1,22 masaüstünde yeter, mobilde yetmiyordu; ayrıca
       -0,012em negatif harf aralığı ğ'nin şapkasını yan harfe yaklaştırır.

   NEDEN MEDYA SORGUSU, NEDEN CLAMP DEĞİL: line-height ve letter-spacing
   için clamp yazmak okunmaz bir formül üretir. Eşik UYDURULMADI —
   640px main.css'te zaten en çok kullanılan telefon kırılma noktasıdır
   (5 kural); yeni bir eşik eklemek ızgaraların bir yerde, tipografinin
   başka bir yerde kırılmasına yol açardı. */
@media (max-width:640px){
  .sahne h1,
  .isim-sahne__ad{
    line-height:1.18;          /* 1,22 → daha çok diyakritik payı */
    letter-spacing:-.002em;    /* -0,012em → neredeyse nötr */
  }

  /* Fraunces'in optik boyu punto ile uyumlanır. Set B/C'de bu gerekmez:
     § 30.3 zaten `font-optical-sizing:auto` verdiği için opsz kendiliğinden
     gerçek boyutu izler. Burada yalnız set A elle düzeltilir — Fraunces
     için `font-variation-settings` içinde opsz SABİT yazılı olduğundan
     otomatik eşleme devre dışı kalıyor.
     SOFT ve WONK KORUNDU: set A "mevcut görünüme geri dön" seçeneğidir,
     karakterini değiştirmek onu geri dönülecek bir yer olmaktan çıkarırdı.
     Fraunces'in kaprisli alternatif glifleri (WONK) rahatsız ediyorsa
     doğru çözüm set B ya da C'dir; o iki ailede böyle bir eksen yoktur. */
  html[data-font="a"] .sahne h1{font-variation-settings:"opsz" 40,"SOFT" 60,"WONK" 1}
  html[data-font="a"] .isim-sahne__ad{font-variation-settings:"opsz" 40,"SOFT" 70,"WONK" 1}
  html[data-font="a"] h1,
  html[data-font="a"] h2{font-variation-settings:"opsz" 36,"SOFT" 46,"WONK" 1}
}

/* 30.4b Tablet ara basamağı — 640px'teki optik uçurumu kapatır.

   Ölçüldü: düzeltmeden sonra 640px'te opsz 40, 768px'te 144 çıkıyordu.
   Başlık boyutu o aralıkta yalnız 41 → 45px değişirken optik boy 3,6 kat
   sıçrıyordu; eşiğin iki yanında aynı başlık belirgin biçimde farklı
   kalınlıkta görünüyordu. Tek bir ara basamak (opsz 90) rampayı
   40 → 90 → 144 hâline getirir.

   NEDEN `font-optical-sizing:auto` İLE ÇÖZÜLMEDİ (set A'da): o zaman
   masaüstünde de opsz punto ile eşitlenir (68,8) ve bugünkü 144'lük afiş
   optiği kaybolurdu. Set A'nın tek işi "mevcut görünüme geri dönmek"tir;
   masaüstü görünümünü değiştirmek onu geri dönülecek bir yer olmaktan
   çıkarır. Set B ve C'de böyle bir basamak GEREKMEZ — § 30.3 onlara
   zaten `font-optical-sizing:auto` verir ve opsz kendiliğinden puntoyu
   izler, yani uçurum orada hiç oluşmaz. */
@media (min-width:641px) and (max-width:1023px){
  html[data-font="a"] .sahne h1{font-variation-settings:"opsz" 90,"SOFT" 60,"WONK" 1}
  html[data-font="a"] .isim-sahne__ad{font-variation-settings:"opsz" 90,"SOFT" 70,"WONK" 1}
}

/* 30.5 Set C ölçü denkleştirmesi.

   Literata'nın x-yüksekliği Fraunces'ten belirgin biçimde büyüktür: aynı
   font-size değerinde gövde metni daha iri ve satırlar daha dolu görünür.
   Ölçek değişkenlerini setlere göre çoğaltmak yerine TEK bir düzeltme
   uygulanır — gövde ölçüsü %2 kısılır. line-height'a DOKUNULMAZ: gövde
   zaten 1.68'dir ve oran korunduğu için satır arası boşluk da %2 kısılıp
   dengede kalır. Değer küçüktür ve bilinçlidir: amaç Literata'yı
   Fraunces'e benzetmek değil, satır uzunluğunu (§ 29.5'teki 68ch sınırı)
   aynı yerde tutmaktır. */
html[data-font="c"] body{font-size:calc(var(--fs-gov) * .98)}

/* ======================================================================
   34. YP13: CLS'İN ASIL KAYNAĞI — `ch` BİRİMİ + FONT METRİK GEÇERSİZ KILMA

   PageSpeed (masaüstü, canlı, set B): CLS 0,534. Kayma
   `div.ust-bant > section.sahne > div.sahne__akis > ::after` öğesine
   atfediliyordu ve raporda webfont dosyaları listeleniyordu.

   34.1 ÖLÇÜM — suçlu hangi aile?
   Gerçek tarayıcıda, animasyonlar dondurulmuş (sürekli animasyon ölçümü
   kirletiyordu) ve 561 öğenin konumu takas öncesi/sonrası karşılaştırılmış
   hâlde, aileler TEK TEK takas edildi (toplam |Δtop|, ana sayfa, set A):

       başlık  (Fraunces   → Georgia)     15 px
       mono    (Plex Mono  → ui-monospace) 3 px
       gövde   (Nunito Sans→ Segoe UI) 23.609 px   ← neredeyse tamamı

   Yani sorun başlık fontu değildi; hero'ya atfedilmesi yanıltıcıydı.

   34.2 MEKANİZMA — `ch` FONTA BAĞLI BİR BİRİMDİR
   `.sahne__giris` bir satırdan iki satıra düşüyordu. Sebep metnin kendisi
   değil KAPSAYICININ DARALMASIYDI:

       max-width:62ch  →  Nunito Sans ile 726,14 px
                          Segoe UI    ile 652,40 px   (−73,75 px, %10,2)

   Çünkü 1ch = fontun "0" glifinin ilerleme genişliğidir:
   Nunito Sans "0" = .600em, Segoe UI "0" = .5391em (ikisi de hem woff2
   `hmtx` tablosundan hem tarayıcıdan doğrulandı, birebir aynı).

   34.3 NEDEN `size-adjust` BUNU ÇÖZEMEZ — ispat
   size-adjust (S) fontun TÜM metriklerini ölçekler, yani hem metni hem
   `ch` türevli kapsayıcıyı:

       kapsayıcı = N × ch_yedek × S        metin = W_yedek × S
       oran      = W_yedek / (N × ch_yedek)         → S SADELEŞİR

   Satırın taşıp taşmayacağına karar veren bu orandır ve S'den bağımsızdır.
   Ölçüldü: Nunito 697,32/726,14 = 0,960 (taşmaz) · Segoe UI
   682,55/652,40 = 1,046 (taşar). Hiçbir size-adjust değeri bunu
   değiştiremez. Bu yüzden `ch` KALDIRILDI: 13 kural `calc(N * var(--ch-*))`
   oldu ve `--ch-*` her sette o setin webfontundan ölçülmüş bir `em`
   değeridir — punto boyutunu izler, font metriğini İZLEMEZ.
   Bugünkü satır uzunluğu korunur; § 29.5'teki "68ch" niyeti aynen sürer.

   `ch` sadece fonta değil PUNTOYA da bağlıydı: set B/C `font-optical-sizing:
   auto` kullanır (§ 30.3) ve Source Serif 4'ün "0" genişliği optik boyla
   değişir (100 px'te .470em, 68,6 px'te .508em). Yani aynı kural farklı
   punto boyutlarında farklı bir ölçü veriyordu. `em` bu ikinci
   kararsızlığı da bitirir.

   34.4 YEDEK YÜZLER — dikey farkı kapatır
   `ch` düzeltmesi kapsayıcıyı sabitler; yedek yüzler (font-{set}.css)
   yedek fonta webfontun ascent/descent değerlerini vererek satır KUTUSUNU
   eşitler. Değerlerin nasıl okunduğu font-{set}.css başlığındadır.

   Ölçüm (ana sayfa, 1432×734, görünüm alanı, gerçek CLS formülü):

       set A başlık   yedek yüz yok           CLS 0,0408  (127,2 px kayma)
                      yalnız ascent/descent   CLS 0,0000  (  6,7 px)
       set A gövde    yedek yüz yok           CLS 0,0000  (  6,2 px)
       mono           (her hâlde)             CLS 0,0000  (  0,6 px)

   34.5 `size-adjust` BİLEREK KULLANILMADI — ölçüldü, zarar veriyordu
   size-adjust yedek fontun GENİŞLİĞİNİ değiştirir, yani satır sonlarının
   nereye düştüğünü. Doğru oran verildiğinde bile satır sonu eşiğine yakın
   duran bir paragrafı ters yöne itebilir; etkisi içeriğe bağlıdır.
   Set B'nin hero H1'i iki satıra yalnız 5 px (%0,3) payla sığıyor; oraya
   %88,51'lik (ölçülmüş, "doğru") bir size-adjust vermek üçüncü satırı açtı
   ve CLS'i 0,0009'dan 0,0337'ye ÇIKARDI.

   Aynı kırılganlık taramalarda da göründü: toplam kaymayı sıfırlayan
   size-adjust değeri ana sayfada %104, /isimler'de %99–104 aralığıydı;
   yalnız tek bir noktada kesişiyorlardı. Böyle bir değere "ayarlamak" tek
   sayfanın paragraf uzunluklarına aşırı uyum olurdu ve ilk içerik
   değişikliğinde bozulurdu. ascent/descent ise ilerleme genişliğine HİÇ
   dokunmaz: hiçbir içerikte satır sonu kaydıramaz, dolayısıyla güvenlidir.

   34.6 KALAN — dürüst sınır
   Bu düzeltmelerden sonra da, kapsayıcısı `max-width:none` olan (ızgara
   ile boyutlanan) bir iki paragraf satır sonu eşiğine çok yakın kalabilir
   ve takasta bir satır oynayabilir. Görünüm alanındaki ölçülen kalan etki
   CLS 0,0000–0,0001'dir (hedef < 0,1).

   NEDEN `font-display:optional` DEĞİL: yavaş bağlantıda webfontu tamamen
   atar ve marka tipografisi kaybolur. `swap` korunmuştur.
   ====================================================================== */

/* ============================================================
   31. YP10: "BEBEĞİMİN YILI" — biçim sekmeleri ve tuval önizlemesi

   Yalnız bu araca özgü iki yüzey: paylaşım biçimi seçici ve Canvas
   önizlemesi. Öteki araç sınıfları (.arac__form, .arac__alan-girdi,
   .arac__dugme, .arac__onizleme) OLDUĞU GİBİ kullanılır — burada
   yeniden tanımlanmaz.
   ============================================================ */

.arac__bicimler{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  margin:1.25rem 0 .75rem;
}

.arac__bicim{
  font:inherit;
  font-size:var(--fs-kk);
  font-family:var(--f-mono);
  letter-spacing:.02em;
  padding:.5rem 1rem;
  border:1px solid var(--cizgi, rgba(0,0,0,.18));
  border-radius:999px;
  background:transparent;
  color:inherit;
  cursor:pointer;
  min-height:2.5rem;
}

.arac__bicim:hover{ border-color:currentColor }

.arac__bicim--etkin{
  background:var(--r-koyu, #14313d);
  border-color:var(--r-koyu, #14313d);
  color:#fff;
}

/* Tuval gerçek ölçüsünde 1080 px geniştir; ekranda kabına sığdırılır.
   aspect-ratio JS'te biçime göre yazılır, böylece biçim değişince kutu
   ZIPLAMAZ (CLS) — yükseklik en/boy oranından türetilir. */
.arac__yili-onizleme{
  display:flex;
  justify-content:center;
}

.arac__yili-tuval,
.arac__etiket-tuval{
  display:block;
  width:100%;
  max-width:19rem;
  height:auto;
  border-radius:.9rem;
  box-shadow:0 .5rem 1.5rem rgba(0,0,0,.18);
}

@media (max-width:36rem){
  .arac__yili-tuval{ max-width:15rem }
}

/* ============================================================
   32. YP10: ARAÇ HUB'I — TÜR GRUPLARI

   22 araç tek düz ızgaradaydı ve göz nereye bakacağını seçemiyordu.
   Gruplama kart kurallarını DEĞİŞTİRMEZ; yalnız ızgarayı bölüp her
   kümeye bir başlık verir.
   ============================================================ */

.arac-hub__grup + .arac-hub__grup{ margin-top:3rem }

.arac-hub__grup-bas{
  display:flex;
  align-items:baseline;
  gap:.6rem;
  margin:0 0 .35rem;
  font-size:var(--fs-h3, 1.35rem);
}

.arac-hub__grup-adet{
  font-family:var(--f-mono);
  font-size:var(--fs-mini);
  font-weight:500;
  opacity:.55;
}

.arac-hub__grup-giris{
  margin:0 0 1.25rem;
  max-width:calc(58 * var(--ch-govde, 1ch));
  font-size:var(--fs-kk);
  opacity:.78;
}
