/* =============================================================================
   aurora.css — IEEE Mersin · AURORA IEEE tasarım sistemi
   -----------------------------------------------------------------------------
   Seçilen ana şablonun (15e) kimliği burada: renk tokenları, aurora ışık
   katmanı, buzlu cam yüzeyler, tipografi ölçeği, butonlar, üst menü ve
   footer ile geri sayım / üye kartı gibi atomik bileşenler.

   Bu dosyada DÜZEN yok. Hangi bölümün nerede duracağı, kaç sütun olacağı
   her düzen denemesinin kendi <style> bloğunda tanımlanır. Böylece renk ve
   kimlik kararı, yerleşim kararından bağımsız kalıyor — tek bir tokeni
   değiştirmek bütün düzenleri birden günceller.

   Yükleme sırası:  base.css  →  aurora.css  →  sayfanın kendi <style>'ı
============================================================================= */

/* =============================================================================
   TEMEL — tokenlar, aurora katmanı, cam levha, tipografi, butonlar, üst menü
============================================================================= */
:root {
  /* Zemin */
  --gece:      #071822;   /* sayfa zemini */
  --gece-2:    #081b25;   /* cam levhanın koyu tabanı */
  --gece-3:    #102633;   /* backdrop-filter yedeği (opak) */

  /* Aurora */
  --mor:       #28a5ff;
  --turkuaz:   #11d7ff;
  --pembe:     #357dff;
  --indigo:    #269bdc;

  /* Metin üstünde kullanılabilen açık tonlar (hepsi ≥4.5:1 test edildi) */
  --mor-acik:  #16a3ff;   /* 7.2:1 */
  --turk-acik: #6ce7ff;   /* 12:1  */
  --pembe-acik:#91b8ff;   /* 7.5:1 */

  --metin:     #e8f7ff;
  --metin-2:   #aac7d7;
  --metin-3:   #8eafc2;

  /* Cam */
  --cam-kenar: rgb(255 255 255 / .12);
  --cam-kenar-guclu: rgb(255 255 255 / .40);  /* etkileşimli sınır, 3.8:1 */
  --cam-yuzey: linear-gradient(180deg, rgb(255 255 255 / .075), rgb(255 255 255 / .028));

  --r:    20px;   /* varyantın imzası: her şey 20px yuvarlak */
  --r-s:  14px;
  --r-l:  28px;
  --bosluk: 20px;
  --en:   1180px;
  --focus: var(--turkuaz);

  --golge:   0 24px 60px -30px rgb(0 0 0 / .9);
  --golge-l: 0 50px 110px -40px rgb(0 0 0 / .95);
  --isik-mor: 0 18px 50px -22px rgb(40 165 255 / .65);
}

/* html'e zemin veriliyor, body'ye DEĞİL: body'nin arka planı olsaydı
   z-index:-2 olan aurora katmanının ÜSTÜNE boyanır ve onu tamamen örterdi. */
html { background: var(--gece); }

body {
  background: transparent;
  font-family: 'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;
  color: var(--metin-2);
  font-size: 16px;
  line-height: 1.68;
  font-weight: 400;
}

/* --- AURORA KATMANI -------------------------------------------------------
   position:fixed + overflow:hidden: lekeler viewport'un dışına taşsa bile
   kaydırma alanı üretemez, 320px'de bile yatay çubuk çıkmaz. */
.aurora {
  position: fixed; inset: 0; z-index: -2;
  overflow: hidden; pointer-events: none;
}
/* ⛔ BULANIKLIK KALKTI · Tur 75 · iPHONE'DA SAYFA ÇÖKÜYORDU.
   Kullanıcı bildirdi (iPhone, iOS 18.7): Hakkımızda'ya geçerken Safari
   "bu sayfada birçok kez sorun oluştu" diyordu — içerik süreci çöküyordu.
   Aşağıdaki Tur 34 notu blur'u "bedava" buldu ama yalnız KARE HIZINI,
   1440 genişlikte, @1x ekranda ölçmüştü. BELLEK hiç ölçülmemişti:
   `filter: blur(σ)` her leke için (kenar+6σ)² boyutunda, piksel
   yoğunluğunun KARESİYLE büyüyen bir ara tampon ayırıyor. Ölçüldü
   (WebKit 390×844): GPU çalışma kümesi bulanıklıkla 132 MB (tepe 245–268),
   bulanıklıksız 30 MB; @3x iPhone'da hesaplanan tampon sayfa başına
   ~160 MB. Gren ve üst menünün `backdrop-filter`ı etkisiz çıktı.

   TUR 34'TEKİ ÇEMBERLER NİÇİN BU SEFER YOK: o gün bulanıklık gradyana
   ELLE, birkaç durakla "pişirildi"; doğrusal parçaların kırıkları çember
   olarak göründü. Bu sefer profil HESAPLANDI: lekenin (koni gradyan +
   yuvarlak kırpma) σ=90 px Gauss ile evrişimi sayısal olarak alındı ve
   21 durağa örneklendi. Bulanıklık piksel, leke `vmax` cinsinden olduğu
   için profil ekran boyutuna bağlı — üç görünüm sınıfı var (uzun kenar
   <1000 · <1600 · üstü). Orijinalle piksel farkı (iki motor, 375×667'den
   2560×1440'a yedi boyut): ortalama 0,3–1,6, en kötü piksel 5 (255
   üzerinden), ortalama parlaklık ±0,8. Sınama: `tools/hareket.mjs` →
   bulanıklık tampon bütçesi.

   ESKİ NOT (Tur 34) — kare hızı için hâlâ doğru, bellek için yanlıştı:

   BULANIKLIK `filter: blur(90px)` İLE — ve bu bedava. Tur 34.

   ÖNCE YANLIŞ SONUCA VARILDI. Kullanıcı "kaydırırken takılıyor" dediğinde
   iki aday ölçüldü — lekelerin blur'u ve cam panellerin `backdrop-filter`ı —
   ve tek koşulu ölçümler "ikisi de suçlu, tek başına hiçbiri yetmiyor" dedi.
   O ölçümler GÜRÜLTÜLÜYDÜ: aynı temel koşudan koşuya 5.2 ile 22.1 FPS arası
   değer verdi.

   Bulanıklık gradyan duraklarına pişirildi ve kullanıcı ekranda ÇEMBER
   gördü — gradyan, blur'un saçılımını taklit edemiyor. Üç tekrarlı ölçüm
   yeniden yapıldı ve gerçek tablo çıktı:

     cam kalktıktan SONRA, blur yok          63.3 FPS   (çemberler görünür)
     cam kalktıktan SONRA, blur geri         66.6 FPS   ← seçilen
     blur + `.aurora` besteci katmanına      52–56 FPS   (daha KÖTÜ)

   Yani kaydırma yükünün tamamı `backdrop-filter`daymış; blur bir şeye mal
   olmuyor. Görünüm özgün hâlinde: hiçbir çember görünmüyor.

   `will-change: transform` KALDIRILDI ve kalkmalı: hareket bittiği için
   tarayıcıya "bu öğe kayacak" demek boşuna bir besteci katmanı ayırtıyor ve
   ölçümde FPS'i düşürüyor (52 vs 66.6). */
.aurora span {
  position: absolute; display: block;
  border-radius: 50%;
  opacity: .30;                /* ölçülmüş değer — yükseltilirse metin kontrastı düşer */
}
/* HAREKET DURDURULDU — Tur 34, kullanıcı kararı, ölçümle.

   Lekeler `70vmax` boyutunda ve o gün `blur(90px)` taşıyordu; sürekli animasyonda
   tarayıcı HER KAREDE bu dev yüzeyleri yeniden besteliyor. Ölçüldü
   (1440×900, gerçek GPU, 144 Hz ekran):

                          FPS (gerçek GPU)   boşta CPU (4 sn)
     sürekli animasyon         62.9              3.99 CPU-s
     `steps(40, end)`         144.5              3.83 CPU-s
     küçült + blur azalt      108.3              0.74 CPU-s
     `animation` YOK          144.5              0.31 CPU-s   ← seçilen

   15 halka açık ekranın tamamı 19.7–29.2 FPS bandındaydı. Darboğaz CPU
   DEĞİL GPU: 4× ve 6× CPU kısıtı FPS'i hiç değiştirmiyor (18.2 → 19.1) ve
   harcanan CPU'nun %71'i GPU sürecinde. Zayıf GPU alt sınırında site pratik
   olarak donuyordu — yazılım rasterleştirmede 2.9 FPS, WebKit'te 1.9 FPS
   (521 ms/kare).

   PARAMETRE AYARI KURTARMIYOR — hepsi tek tek ölçüldü: blur 90→30px (18.8),
   dört leke→bir leke (24.2), 70→30vmax, `filter:none` (24.7),
   `backdrop-filter:none`. Hiçbiri 65 FPS'i geçemedi. Çalışan tek şey
   hareketin SÜREKLİ olmaktan çıkması.

   `steps()` ÖNCE DENENDİ VE YETMEDİ. Kare hızını 144'e çıkarıyor ama boşta
   yanan CPU'yu kurtarmıyor (3.99 → 3.83, yalnız %4): animasyon hâlâ
   "çalışıyor" ve besteci her karede tik atıyor, yalnız değer değişmiyor.
   Yani telefon ısınmaya ve pil inmeye devam ederdi. Bir ölçüm aracının
   "2.7 kat kazanç" iddiası bağımsız ölçümde tutmadı — sayı yeniden ölçüldü.

   O ADIMDA GÖRÜNÜM DEĞİŞMEDİ: giden yalnız 38–52 saniyede bir tamamlanan
   turdu. Kullanıcı kararı: o hareketi kimse fark etmiyor, bedeli bir
   çekirdeğin %100'ü. (Bulanıklık aynı turun İKİNCİ yarısında gradyana
   pişirildi — yukarıdaki nota bakın; o adım görünümü biraz değiştiriyor.)

   Panel ekranları bu sorunu zaten yaşamıyordu: `panel.css` aurora
   animasyonunu tümden kapatıyor (`.panel-sayfa .aurora span`). */
.aurora .a1 { width: 70vmax; height: 70vmax; left: -24vmax; top: -26vmax; }
.aurora .a2 { width: 62vmax; height: 62vmax; right: -22vmax; top: -14vmax; }
.aurora .a3 { width: 58vmax; height: 58vmax; left: -16vmax; bottom: -24vmax; }
.aurora .a4 { width: 66vmax; height: 66vmax; right: -20vmax; bottom: -28vmax; }
/* Profil üretilmiş: `transform: scale` kutuyu bulanıklığın taştığı yere
   kadar (yarıçap + 2,6σ) büyütüyor, gradyan o kutunun içinde sönüyor.
   ⚠ ELLE DÜZELTME — duraklar hesaplanmış değer; bir durağı yuvarlamak
   Tur 34'teki çemberleri geri getirir. */
.aurora .a1 { transform: scale(1.792);
  background: radial-gradient(circle closest-side,
    rgb(40 165 255 / .604) 0%, rgb(40 165 255 / .596) 5%, rgb(40 165 255 / .571) 10%, rgb(40 165 255 / .532) 15%, rgb(40 165 255 / .482) 20%, rgb(40 165 255 / .423) 25%, rgb(40 165 255 / .36) 30%, rgb(40 165 255 / .295) 35%, rgb(40 165 255 / .234) 40%, rgb(40 165 255 / .177) 45%, rgb(40 165 255 / .129) 50%, rgb(40 165 255 / .089) 55%, rgb(40 165 255 / .058) 60%, rgb(40 165 255 / .036) 65%, rgb(40 165 255 / .021) 70%, rgb(40 165 255 / .011) 75%, rgb(40 165 255 / .006) 80%, rgb(40 165 255 / .003) 85%, rgb(40 165 255 / .001) 90%, rgb(40 165 255 / 0) 95%, rgb(40 165 255 / 0) 100%); }
.aurora .a2 { transform: scale(1.894);
  background: radial-gradient(circle closest-side,
    rgb(17 215 255 / .542) 0%, rgb(17 215 255 / .533) 5%, rgb(17 215 255 / .51) 10%, rgb(17 215 255 / .472) 15%, rgb(17 215 255 / .423) 20%, rgb(17 215 255 / .367) 25%, rgb(17 215 255 / .308) 30%, rgb(17 215 255 / .249) 35%, rgb(17 215 255 / .193) 40%, rgb(17 215 255 / .144) 45%, rgb(17 215 255 / .103) 50%, rgb(17 215 255 / .07) 55%, rgb(17 215 255 / .045) 60%, rgb(17 215 255 / .028) 65%, rgb(17 215 255 / .016) 70%, rgb(17 215 255 / .009) 75%, rgb(17 215 255 / .005) 80%, rgb(17 215 255 / .002) 85%, rgb(17 215 255 / .001) 90%, rgb(17 215 255 / 0) 95%, rgb(17 215 255 / 0) 100%); }
.aurora .a3 { transform: scale(1.956);
  background: radial-gradient(circle closest-side,
    rgb(53 125 255 / .512) 0%, rgb(53 125 255 / .504) 5%, rgb(53 125 255 / .481) 10%, rgb(53 125 255 / .445) 15%, rgb(53 125 255 / .398) 20%, rgb(53 125 255 / .345) 25%, rgb(53 125 255 / .288) 30%, rgb(53 125 255 / .232) 35%, rgb(53 125 255 / .18) 40%, rgb(53 125 255 / .134) 45%, rgb(53 125 255 / .096) 50%, rgb(53 125 255 / .065) 55%, rgb(53 125 255 / .042) 60%, rgb(53 125 255 / .026) 65%, rgb(53 125 255 / .015) 70%, rgb(53 125 255 / .008) 75%, rgb(53 125 255 / .004) 80%, rgb(53 125 255 / .002) 85%, rgb(53 125 255 / .001) 90%, rgb(53 125 255 / 0) 95%, rgb(53 125 255 / 0) 100%); }
.aurora .a4 { transform: scale(1.840);
  background: radial-gradient(circle closest-side,
    rgb(38 155 220 / .581) 0%, rgb(38 155 220 / .572) 5%, rgb(38 155 220 / .548) 10%, rgb(38 155 220 / .51) 15%, rgb(38 155 220 / .461) 20%, rgb(38 155 220 / .403) 25%, rgb(38 155 220 / .342) 30%, rgb(38 155 220 / .28) 35%, rgb(38 155 220 / .22) 40%, rgb(38 155 220 / .167) 45%, rgb(38 155 220 / .12) 50%, rgb(38 155 220 / .083) 55%, rgb(38 155 220 / .054) 60%, rgb(38 155 220 / .034) 65%, rgb(38 155 220 / .02) 70%, rgb(38 155 220 / .011) 75%, rgb(38 155 220 / .006) 80%, rgb(38 155 220 / .003) 85%, rgb(38 155 220 / .001) 90%, rgb(38 155 220 / 0) 95%, rgb(38 155 220 / 0) 100%); }
@media (min-width: 1000px), (min-height: 1000px) {
.aurora .a1 { transform: scale(1.522);
  background: radial-gradient(circle closest-side,
    rgb(40 165 255 / .739) 0%, rgb(40 165 255 / .729) 5%, rgb(40 165 255 / .702) 10%, rgb(40 165 255 / .66) 15%, rgb(40 165 255 / .606) 20%, rgb(40 165 255 / .544) 25%, rgb(40 165 255 / .477) 30%, rgb(40 165 255 / .407) 35%, rgb(40 165 255 / .336) 40%, rgb(40 165 255 / .267) 45%, rgb(40 165 255 / .202) 50%, rgb(40 165 255 / .144) 55%, rgb(40 165 255 / .096) 60%, rgb(40 165 255 / .06) 65%, rgb(40 165 255 / .034) 70%, rgb(40 165 255 / .017) 75%, rgb(40 165 255 / .008) 80%, rgb(40 165 255 / .003) 85%, rgb(40 165 255 / .001) 90%, rgb(40 165 255 / 0) 95%, rgb(40 165 255 / 0) 100%); }
.aurora .a2 { transform: scale(1.590);
  background: radial-gradient(circle closest-side,
    rgb(17 215 255 / .696) 0%, rgb(17 215 255 / .687) 5%, rgb(17 215 255 / .66) 10%, rgb(17 215 255 / .617) 15%, rgb(17 215 255 / .562) 20%, rgb(17 215 255 / .499) 25%, rgb(17 215 255 / .43) 30%, rgb(17 215 255 / .359) 35%, rgb(17 215 255 / .288) 40%, rgb(17 215 255 / .222) 45%, rgb(17 215 255 / .162) 50%, rgb(17 215 255 / .112) 55%, rgb(17 215 255 / .072) 60%, rgb(17 215 255 / .043) 65%, rgb(17 215 255 / .024) 70%, rgb(17 215 255 / .012) 75%, rgb(17 215 255 / .006) 80%, rgb(17 215 255 / .002) 85%, rgb(17 215 255 / .001) 90%, rgb(17 215 255 / 0) 95%, rgb(17 215 255 / 0) 100%); }
.aurora .a3 { transform: scale(1.630);
  background: radial-gradient(circle closest-side,
    rgb(53 125 255 / .675) 0%, rgb(53 125 255 / .666) 5%, rgb(53 125 255 / .639) 10%, rgb(53 125 255 / .597) 15%, rgb(53 125 255 / .543) 20%, rgb(53 125 255 / .48) 25%, rgb(53 125 255 / .411) 30%, rgb(53 125 255 / .341) 35%, rgb(53 125 255 / .272) 40%, rgb(53 125 255 / .208) 45%, rgb(53 125 255 / .151) 50%, rgb(53 125 255 / .103) 55%, rgb(53 125 255 / .066) 60%, rgb(53 125 255 / .04) 65%, rgb(53 125 255 / .022) 70%, rgb(53 125 255 / .011) 75%, rgb(53 125 255 / .005) 80%, rgb(53 125 255 / .002) 85%, rgb(53 125 255 / .001) 90%, rgb(53 125 255 / 0) 95%, rgb(53 125 255 / 0) 100%); }
.aurora .a4 { transform: scale(1.554);
  background: radial-gradient(circle closest-side,
    rgb(38 155 220 / .723) 0%, rgb(38 155 220 / .714) 5%, rgb(38 155 220 / .687) 10%, rgb(38 155 220 / .645) 15%, rgb(38 155 220 / .592) 20%, rgb(38 155 220 / .53) 25%, rgb(38 155 220 / .462) 30%, rgb(38 155 220 / .392) 35%, rgb(38 155 220 / .321) 40%, rgb(38 155 220 / .253) 45%, rgb(38 155 220 / .19) 50%, rgb(38 155 220 / .135) 55%, rgb(38 155 220 / .09) 60%, rgb(38 155 220 / .055) 65%, rgb(38 155 220 / .031) 70%, rgb(38 155 220 / .016) 75%, rgb(38 155 220 / .008) 80%, rgb(38 155 220 / .003) 85%, rgb(38 155 220 / .001) 90%, rgb(38 155 220 / 0) 95%, rgb(38 155 220 / 0) 100%); }
}
@media (min-width: 1600px), (min-height: 1600px) {
.aurora .a1 { transform: scale(1.348);
  background: radial-gradient(circle closest-side,
    rgb(40 165 255 / .826) 0%, rgb(40 165 255 / .815) 5%, rgb(40 165 255 / .784) 10%, rgb(40 165 255 / .738) 15%, rgb(40 165 255 / .682) 20%, rgb(40 165 255 / .621) 25%, rgb(40 165 255 / .556) 30%, rgb(40 165 255 / .489) 35%, rgb(40 165 255 / .422) 40%, rgb(40 165 255 / .354) 45%, rgb(40 165 255 / .286) 50%, rgb(40 165 255 / .22) 55%, rgb(40 165 255 / .157) 60%, rgb(40 165 255 / .103) 65%, rgb(40 165 255 / .06) 70%, rgb(40 165 255 / .03) 75%, rgb(40 165 255 / .013) 80%, rgb(40 165 255 / .005) 85%, rgb(40 165 255 / .001) 90%, rgb(40 165 255 / 0) 95%, rgb(40 165 255 / 0) 100%); }
.aurora .a2 { transform: scale(1.393);
  background: radial-gradient(circle closest-side,
    rgb(17 215 255 / .797) 0%, rgb(17 215 255 / .787) 5%, rgb(17 215 255 / .756) 10%, rgb(17 215 255 / .71) 15%, rgb(17 215 255 / .653) 20%, rgb(17 215 255 / .59) 25%, rgb(17 215 255 / .522) 30%, rgb(17 215 255 / .452) 35%, rgb(17 215 255 / .381) 40%, rgb(17 215 255 / .31) 45%, rgb(17 215 255 / .241) 50%, rgb(17 215 255 / .176) 55%, rgb(17 215 255 / .119) 60%, rgb(17 215 255 / .073) 65%, rgb(17 215 255 / .039) 70%, rgb(17 215 255 / .019) 75%, rgb(17 215 255 / .008) 80%, rgb(17 215 255 / .003) 85%, rgb(17 215 255 / .001) 90%, rgb(17 215 255 / 0) 95%, rgb(17 215 255 / 0) 100%); }
.aurora .a3 { transform: scale(1.420);
  background: radial-gradient(circle closest-side,
    rgb(53 125 255 / .783) 0%, rgb(53 125 255 / .773) 5%, rgb(53 125 255 / .743) 10%, rgb(53 125 255 / .698) 15%, rgb(53 125 255 / .641) 20%, rgb(53 125 255 / .577) 25%, rgb(53 125 255 / .509) 30%, rgb(53 125 255 / .439) 35%, rgb(53 125 255 / .367) 40%, rgb(53 125 255 / .296) 45%, rgb(53 125 255 / .227) 50%, rgb(53 125 255 / .164) 55%, rgb(53 125 255 / .109) 60%, rgb(53 125 255 / .066) 65%, rgb(53 125 255 / .036) 70%, rgb(53 125 255 / .017) 75%, rgb(53 125 255 / .007) 80%, rgb(53 125 255 / .003) 85%, rgb(53 125 255 / .001) 90%, rgb(53 125 255 / 0) 95%, rgb(53 125 255 / 0) 100%); }
.aurora .a4 { transform: scale(1.369);
  background: radial-gradient(circle closest-side,
    rgb(38 155 220 / .815) 0%, rgb(38 155 220 / .805) 5%, rgb(38 155 220 / .774) 10%, rgb(38 155 220 / .729) 15%, rgb(38 155 220 / .674) 20%, rgb(38 155 220 / .612) 25%, rgb(38 155 220 / .546) 30%, rgb(38 155 220 / .479) 35%, rgb(38 155 220 / .411) 40%, rgb(38 155 220 / .342) 45%, rgb(38 155 220 / .274) 50%, rgb(38 155 220 / .208) 55%, rgb(38 155 220 / .147) 60%, rgb(38 155 220 / .095) 65%, rgb(38 155 220 / .055) 70%, rgb(38 155 220 / .028) 75%, rgb(38 155 220 / .012) 80%, rgb(38 155 220 / .004) 85%, rgb(38 155 220 / .001) 90%, rgb(38 155 220 / 0) 95%, rgb(38 155 220 / 0) 100%); }
}

/* Koyu perde: aurora'nın tepe noktalarını bastırır, cam levhaların altında
   kalan metnin kontrastını garanti eder. */
.aurora::after {
  content: ''; position: absolute; inset: 0;
  background: rgb(7 24 34 / .38);
}

/* `@keyframes suz1..suz4` Tur 34'te SİLİNDİ — hareket durduruldu,
   tanımlar ölü koda dönmüştü. */

/* Hareket hassasiyeti: aurora tamamen DURUR. base.css süreleri zaten
   0.01ms'e çekiyor ama burada niyeti açıkça yazıyoruz. */
@media (prefers-reduced-motion: reduce) {
  .aurora span { animation: none !important; }
}

/* İnce film grenli doku — cam yüzeylerin "plastik" görünmesini engelliyor. */
.gren {
  position: fixed; inset: 0; z-index: -1; pointer-events: none;
  opacity: .05;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* --- CAM LEVHA ------------------------------------------------------------
   -webkit- öneki ÖNCE geliyor (iOS 16/17 hâlâ dolaşımda) ve @supports ile
   opak yedek var — bulanıklık desteklenmezse yarı saydam panel okunmaz olur. */
/* CAM KALDIRILDI — Tur 34, kullanıcı kararı, ölçümle. Kaydırırken her
     karede arkasındaki yüzeyi yeniden bulanıklaştırmak, aurora katmanıyla
     birlikte kare hızını 19.5 FPS'e düşürüyordu. Opak zemin ZATEN yazılıydı
     (`@supports not` yedeği) — yani tasarımda karşılığı düşünülmüştü; o
     değer buraya taşındı ve ölü kalan `@supports` bloğu silindi.
     Cam yalnız üst menüde (`.ust`) kaldı. */
.buz {
  position: relative;
  background: var(--cam-yuzey), rgb(8 27 37 / .55);
  border: 1px solid var(--cam-kenar);
  border-radius: var(--r);
  background: var(--gece-3);
}

/* Cam levhanın üst kenarındaki ışık çizgisi — camın kalınlığını hissettirir. */
.buz-parlak::before {
  content: ''; position: absolute; left: 12%; right: 12%; top: -1px; height: 1px;
  background: linear-gradient(90deg, transparent, rgb(255 255 255 / .5), transparent);
  pointer-events: none;
}

/* --- Yerleşim -------------------------------------------------------------- */
.kap {
  width: 100%; max-width: var(--en); margin-inline: auto;
  padding-inline: max(20px, env(safe-area-inset-left, 0px));
}
section { padding-block: clamp(64px, 8vw, 118px); }

h1, h2, h3, h4 { font-family: 'Sora', 'Manrope', system-ui, sans-serif; color: var(--metin); }
/* Türkçe kontrolü — "İLETİŞİM VE ÜYELİK BAŞVURUSU ÇAĞRISI":
   İ ve Ğ cap-height'ın üstüne taşar. line-height 1.1'in ALTINA hiç inilmiyor. */
h1 { line-height: 1.12; letter-spacing: -.028em; font-weight: 800; }
h2 { line-height: 1.16; letter-spacing: -.022em; font-weight: 700;
     font-size: clamp(1.7rem, 1.2rem + 1.9vw, 2.5rem); }
h3 { line-height: 1.24; letter-spacing: -.012em; font-weight: 700; font-size: 1.08rem; }

.ust-etiket {
  display: inline-flex; align-items: center; gap: 9px;
  font-size: .74rem; font-weight: 800; letter-spacing: .16em;
  color: var(--turk-acik); margin-bottom: 14px;
}
.ust-etiket::before {
  content: ''; width: 26px; height: 1px; flex: 0 0 auto;
  background: linear-gradient(90deg, transparent, var(--turk-acik));
}
.bolum-giris { color: var(--metin-2); max-width: 60ch; margin-top: 12px; }

.bolum-basi { margin-bottom: 40px; }
.bolum-basi-ikili {
  display: flex; flex-wrap: wrap; gap: 16px 32px;
  align-items: flex-end; justify-content: space-between;
}

.baglanti {
  display: inline-flex; align-items: center; gap: 7px; min-height: 44px;
  color: var(--mor-acik); font-weight: 700; font-size: .92rem; text-decoration: none;
}
.baglanti:hover { color: var(--turk-acik); }

/* Geri dönüş bağlantısı — "← Tüm duyurular" gibi. Beş dosyada ayrı ayrı
   tanımlıydı: k-07 ve k-09 `.baglanti`den miras alıp yalnız boşluk
   ekliyordu, a-25 ve a-26 kuralın TAMAMINI kopyalamıştı (aynı beş satır,
   iki yerde). Bir gün birinin rengi değişse öbürü ayrışırdı.

   Panel tarafı daha sönük: kenar menüsü zaten nerede olduğunu söylüyor,
   geri bağlantısı ikincil bir çıkış. Kamu tarafı `.baglanti` renginde
   kalıyor çünkü orada tek çıkış o. */
.geri-bag {
  display: inline-flex; align-items: center; gap: 6px; min-height: 44px;
  font-size: .85rem; font-weight: 600; text-decoration: none;
  color: var(--metin-2);
}
.geri-bag:hover { color: var(--turk-acik); }
.geri-bag .ok { font-size: 1.05em; line-height: 1; }
/* `.baglanti` ile birlikte yazılırsa (k-07, k-09) o renk kazanıyor. */
.baglanti.geri-bag { color: var(--mor-acik); font-size: .92rem; font-weight: 700; }

/* --- Butonlar -------------------------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  min-height: 46px; padding: 12px 24px;
  border-radius: 999px; border: 1px solid transparent;
  font-family: 'Manrope', sans-serif; font-weight: 700; font-size: .94rem;
  letter-spacing: .005em; text-decoration: none; cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, border-color .18s ease;
}
.btn-ana {
  /* IEEE resmi mavisi (#00629B). Eski gradyan #1e9aff duragında beyaz metinle
     2.95:1 veriyordu — WCAG AA 4.5:1 istiyor ve 60 ekranda 68 metin bundan
     düşüyordu (Tur 31, `tools/kontrast.mjs`). Bu aile hem eşiği geçiyor hem
     IEEE marka kılavuzunun kendi mavisi; #00629B zaten --focus değeri.
     Beyaz metin: 6.52 / 5.15 / 9.22 — en açık durak bile AA üstünde. */
  background: linear-gradient(120deg, #00629B 0%, #0072B5 52%, #004B78 100%);
  color: #fff; box-shadow: var(--isik-mor);
}
/* ⚠ `(hover: hover)` İÇİNDE · Tur 75. Dokunmatik ekranda `:hover` dokununca
   TAKILI kalıyor: düğme yukarı kayıp gölgeli duruyordu. iPhone'dan gelen
   "üye butonu yarım" bildiriminde bu katkı veren ikinci etkendi (asıl sebep
   bellek, 75-B). Kural `tutarlilik` K17. */
@media (hover: hover) {
  .btn-ana:hover { transform: translateY(-2px); box-shadow: 0 22px 56px -20px rgb(0 114 181 / .8); }
}
/* CAM KALDIRILDI — Tur 34, kullanıcı kararı, ölçümle. Kaydırırken her
     karede arkasındaki yüzeyi yeniden bulanıklaştırmak, aurora katmanıyla
     birlikte kare hızını 19.5 FPS'e düşürüyordu. Opak zemin ZATEN yazılıydı
     (`@supports not` yedeği) — yani tasarımda karşılığı düşünülmüştü; o
     değer buraya taşındı ve ölü kalan `@supports` bloğu silindi.
     Cam yalnız üst menüde (`.ust`) kaldı. */
.btn-cam {
  background: rgb(255 255 255 / .06); color: var(--metin);
  border-color: var(--cam-kenar-guclu);
  background: #183547;
}
.btn-cam:hover { background: rgb(255 255 255 / .13); border-color: rgb(255 255 255 / .6); }
.btn-kucuk { min-height: 44px; padding: 10px 18px; font-size: .87rem; }

/* ⚠ BURADA BİR KURAL VARDI, KALDIRILDI: `.atla { background: #1292ef }`.
   "Atlama bağlantısı paletle uyumlansın" diye yazılmıştı ama base.css'teki
   #00629B'yi (IEEE ana mavisi) eziyordu ve beyaz metinle kontrastı 6.52:1'den
   3.29:1'e düşürüyordu — WCAG eşiği 4.5. 52 ekranın HEPSİNDE.

   Erişilebilirlik beyanı yayınlayan bir sitede, "içeriğe atla" bağlantısının
   kendisi eşiği geçmiyordu; üstelik kural marka rengini de bozuyordu. Silmek
   ikisini birden düzeltti. */

/* =============================================================================
   1 · ÜST MENÜ
============================================================================= */
/* --- Üst menünün yeri, menü gelmeden önce ayrılıyor ------------------------
   kabuk.js <header class="ust"> öğesini ÜRETİYOR ve #ust-yuva'nın yerine
   koyuyor. İlk çizimde yuva boş, yüksekliği 0 — menü gelince 75px'e çıkıyor
   ve ALTINDAKİ HER ŞEY 75px aşağı zıplıyor.

   Ölçüldü: bu tek başına 12 ekranda düzen kaymasının (CLS) ana kalemiydi.
   Hiçbir denetim aracı görmüyordu — sayfa geçerli, bağlantılar sağlam,
   hiçbir öğe binmiyor; yalnız göz önünde zıplıyor.

   75px = .ust-ic'in min-height'ı (74px) + .ust'un alt çizgisi (1px).
   Elle tutulan bir eşleşmeye güvenilmiyor: tools/cakisma.mjs menünün gerçek
   yüksekliğini ölçüp bu değerle karşılaştırıyor, ayrılırsa hata veriyor. */
#ust-yuva { min-height: 75px; }

/* ÜST MENÜ ZEMİNİ KOYULAŞTIRILDI — Tur 37, ölçümle.
   .62 opaklık + saturate(160%) birleşince, aurora lekesinin parlak olduğu
   bölgede menünün altındaki zemin rgb(62,79,89)a çıkıyordu ve üstündeki iki
   token eşiğin altına düşüyordu: --mor-acik 3.13:1, --metin-2 3.46:1.
   (CSS yorumu --mor-acik icin "7.2:1" diyor; o sayı KOYU zemine göre ölçülmüş
   ve camın üstünde tutmuyor.)

   Kusur yeni değil; kontrast kuralı onu göremiyordu — metni gördüğü İLK
   bantta ölçüp bırakıyordu ve `.aurora` position:fixed olduğu için aynı
   metnin zemini banda göre değişiyor. Kural düzeltilince göründü.

   Aurora perdesi (.38→.52) ve cam yüzeyi (.075→.045) ayrı ayrı denendi,
   İKİSİ DE hiç etki etmedi: zemin onlar değil, menünün kendi camıydı.

   ⚠ DEĞER WEBKIT'E GÖRE SEÇİLDİ. .82 Chromium'da yetiyordu ama WebKit
   `backdrop-filter`ı farklı çiziyor ve orada zemin `rgb(52,67,75)`te
   kalıp 3.76:1 veriyordu. İki motorda da geçen ilk değer .92. Tek motorda
   ölçüp "tamam" demek, Safari kullanan üyeye eşiğin altında metin
   göstermek olurdu — 9. değişmezin (iki motorda doğrula) sebebi bu. */
.ust {
  position: sticky; top: 0; z-index: 60;
  padding-top: env(safe-area-inset-top, 0px);
  background: rgb(7 24 34 / .92);
  -webkit-backdrop-filter: blur(22px) saturate(125%);
          backdrop-filter: blur(22px) saturate(125%);
  border-bottom: 1px solid rgb(255 255 255 / .09);
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .ust { background: #0a1f2b; }
}
/* flex-wrap emniyet supabı: font metrikleri beklenenden genişse menü
   TAŞMAZ, alt satıra sarar. Yatay kaydırma çubuğu asla oluşmaz. */
.ust-ic { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; min-height: 74px; }

/* IEEE kuralı: topluluk kimliği ÜST SOL ve Master Brand'den DAHA BÜYÜK.
   "IEEE" başa alınmaz — kılavuz öğrenci kolları için bunu yasaklıyor. */
.kimlik {
  display: flex; align-items: center; gap: 12px;
  margin-right: auto; text-decoration: none; color: inherit; min-height: 44px;
}
.kimlik-nokta {
  width: 34px; height: 34px; flex: 0 0 auto; border-radius: 11px;
  background: linear-gradient(140deg, var(--mor), var(--turkuaz));
  box-shadow: 0 8px 22px -10px rgb(40 165 255 / .9);
  position: relative;
}
.kimlik-nokta::after {
  content: ''; position: absolute; inset: 5px; border-radius: 7px;
  border: 1.5px solid rgb(255 255 255 / .55);
}
.kimlik-yazi { display: flex; flex-direction: column; line-height: 1.2; }
.kimlik-yazi b { font-family: 'Sora', sans-serif; font-size: 1rem; font-weight: 700; color: var(--metin); }
.kimlik-yazi span { font-size: .78rem; font-weight: 600; color: var(--mor-acik); letter-spacing: .015em; }

/* Ortadaki cam hap — menü linkleri burada yaşıyor */
.menu { display: none; }
.menu-hap {
  display: flex; align-items: center; gap: 2px; padding: 4px;
  border-radius: 999px;
  background: rgb(255 255 255 / .05);
  border: 1px solid rgb(255 255 255 / .10);
}
.menu-hap a {
  /* 15px yatay dolgu ile kimlik + menü hapı + butonlar 1180px'lik kapsayıcıya
     sığmıyor ve .ust-ic (flex-wrap: wrap) butonları alt satıra atıyordu. */
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 11px;
  border-radius: 999px; text-decoration: none;
  color: var(--metin-2); font-size: .88rem; font-weight: 600;
  transition: background-color .16s, color .16s;
}
.menu-hap a:hover { background: rgb(255 255 255 / .10); color: var(--metin); }

.ust-eylem { display: none; align-items: center; gap: 10px; }

/* IEEE kuralı: Master Brand ÜST SAĞ, alt-sitelerde tek renk (koyu zeminde
   beyaz), en az 100x33px, ieee.org'a link. Gerçek logo dosyası IEEE Brand
   Toolkit sözleşmesi gerektirdiği için AYNI ÖLÇÜDE yer tutucu duruyor. */
.marka-yeri {
  display: grid; place-items: center;
  width: 112px; height: 40px; flex: 0 0 auto;
  border: 1px dashed rgb(255 255 255 / .45); border-radius: 8px;
  font-family: 'Sora', sans-serif; font-weight: 800; font-size: .92rem;
  letter-spacing: .17em; padding-left: .17em;
  color: #fff; text-decoration: none;
  transition: border-color .16s, background-color .16s;
}
.marka-yeri:hover { border-color: #fff; background: rgb(255 255 255 / .08); }
.marka-ayrac { width: 1px; height: 30px; background: rgb(255 255 255 / .16); }

.menu-btn {
  display: grid; place-items: center; width: 46px; height: 46px; flex: 0 0 auto;
  border: 1px solid var(--cam-kenar-guclu); border-radius: 14px;
  background: rgb(255 255 255 / .06); color: var(--metin); cursor: pointer;
}
.menu-btn:hover { background: rgb(255 255 255 / .13); }
.menu-btn svg { width: 22px; height: 22px; }

.mobil-menu { display: none; border-top: 1px solid rgb(255 255 255 / .09); }
.mobil-menu.acik { display: block; }
.mobil-menu ul { list-style: none; margin: 0; padding: 10px 20px calc(22px + env(safe-area-inset-bottom, 0px)); }
.mobil-menu a {
  display: flex; align-items: center; min-height: 50px; padding: 0 6px;
  text-decoration: none; color: var(--metin); font-weight: 600;
  border-bottom: 1px solid rgb(255 255 255 / .08);
}
.mobil-menu a:hover { color: var(--turk-acik); }
.mobil-menu .mobil-eylem { display: flex; gap: 10px; padding-top: 18px; }
.mobil-menu .mobil-eylem .btn { flex: 1; }
.mobil-menu .mobil-marka { display: flex; justify-content: center; padding-top: 18px; }

@media (min-width: 78rem) {
  .menu, .ust-eylem { display: flex; }
  .menu-btn { display: none; }
}

/* =============================================================================
   ROZET — hero ve bölüm etiketlerinde kullanılan nabızlı hap
============================================================================= */
/* CAM KALDIRILDI — Tur 34, kullanıcı kararı, ölçümle. Kaydırırken her
     karede arkasındaki yüzeyi yeniden bulanıklaştırmak, aurora katmanıyla
     birlikte kare hızını 19.5 FPS'e düşürüyordu. Opak zemin ZATEN yazılıydı
     (`@supports not` yedeği) — yani tasarımda karşılığı düşünülmüştü; o
     değer buraya taşındı ve ölü kalan `@supports` bloğu silindi.
     Cam yalnız üst menüde (`.ust`) kaldı. */
.rozet {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 8px 18px 8px 14px; border-radius: 999px;
  background: rgb(255 255 255 / .06);
  border: 1px solid rgb(255 255 255 / .16);
  font-size: .8rem; font-weight: 700; color: var(--metin);
  margin-bottom: 26px;
  background: #183547;
}
/* NABIZ KALDIRILDI — Tur 34, aurora hareketiyle aynı gerekçe ve aynı ölçüm.

   Rozetin yanındaki nokta `box-shadow` animasyonuyla nabız atıyordu.
   Ölçüldü ve şaşırtıcı çıktı: aurora lekeleri durdurulduktan SONRA bile
   `15e` boşta 4 saniyede 3.98 CPU-saniyesi yakıyordu, tek sebep bu 8
   piksellik noktaydı.

     nabız açık,  aurora var     3.98 CPU-s / 4 sn
     nabız kapalı, aurora var    0.03 CPU-s / 4 sn
     nabız açık,  aurora yok     0.66 CPU-s / 4 sn

   Sebep: aurora katmanı DURURKEN bedava, ama sayfada ÇALIŞAN HERHANGİ BİR
   animasyon besteciyi her karede tik atmaya zorluyor ve o tikte `70vmax`
   boyutundaki dört bulanık yüzey yeniden besteleniyor. Yani maliyet
   animasyonun kendisinde değil, onun uyandırdığı yığında.

   `transform`/`opacity`ye çevirmek de kurtarmadı (aynı 4 CPU-s): sorun
   boyama değil, her kare tik atmak. Nokta duruyor, halkası duruyor;
   giden yalnız nabız. */
.rozet::before {
  content: ''; width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto;
  background: var(--turk-acik);
  box-shadow: 0 0 0 4px rgb(17 215 255 / .18);
}

/* =============================================================================
   GERİ SAYIM — render.js'in bastığı .gs-* sınıfları
============================================================================= */
/* Dev geri sayım */
.geri-sayim {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 12px;
  margin: 38px auto 0; max-width: 44rem;
}
/* CAM KALDIRILDI — Tur 34, kullanıcı kararı, ölçümle. Kaydırırken her
     karede arkasındaki yüzeyi yeniden bulanıklaştırmak, aurora katmanıyla
     birlikte kare hızını 19.5 FPS'e düşürüyordu. Opak zemin ZATEN yazılıydı
     (`@supports not` yedeği) — yani tasarımda karşılığı düşünülmüştü; o
     değer buraya taşındı ve ölü kalan `@supports` bloğu silindi.
     Cam yalnız üst menüde (`.ust`) kaldı. */
.gs-birim {
  flex: 1 1 108px; min-width: 0;
  padding: clamp(16px, 2.4vw, 26px) 10px;
  border-radius: var(--r);
  background: var(--cam-yuzey), rgb(8 27 37 / .55);
  border: 1px solid var(--cam-kenar);
  box-shadow: var(--golge);
  background: var(--gece-3);
}
.gs-sayi {
  display: block; font-family: 'Sora', sans-serif;
  font-size: clamp(2rem, 1.2rem + 2.9vw, 3.3rem);
  font-weight: 800; line-height: 1; color: var(--metin);
  font-variant-numeric: tabular-nums; letter-spacing: -.02em;
}
.gs-etiket {
  display: block; margin-top: 10px;
  font-size: .68rem; font-weight: 700; letter-spacing: .16em; color: var(--metin-3);
}
.gs-bitti { font-family: 'Sora', sans-serif; font-size: 1.4rem; font-weight: 700; color: var(--turk-acik); }

/* =============================================================================
   DİJİTAL ÜYE KARTI
============================================================================= */
/* padding-inline: -2deg eğimli kartın köşeleri kutunun dışına taşıyor;
   bu boşluk olmadan 768px'te sayfa 24px yana kayıyordu. */
.kart-alan { position: relative; display: flex; justify-content: center; padding-inline: 10px; }
.kart-alan::before {
  /* Yatay inset 0: negatif yatay inset kaydırma alanı üretiyordu.
     Parıltının yayılmasını zaten filter: blur(46px) sağlıyor ve
     blur'ın taşması kaydırma alanı ÜRETMEZ. */
  content: ''; position: absolute; inset: -8% 0;
  background: radial-gradient(60% 60% at 40% 40%, rgb(40 165 255 / .55), transparent 70%),
              radial-gradient(55% 55% at 70% 75%, rgb(17 215 255 / .38), transparent 70%);
  filter: blur(46px); z-index: 0; pointer-events: none;
}

/* CAM KALDIRILDI — Tur 34, kullanıcı kararı, ölçümle. Kaydırırken her
     karede arkasındaki yüzeyi yeniden bulanıklaştırmak, aurora katmanıyla
     birlikte kare hızını 19.5 FPS'e düşürüyordu. Opak zemin ZATEN yazılıydı
     (`@supports not` yedeği) — yani tasarımda karşılığı düşünülmüştü; o
     değer buraya taşındı ve ölü kalan `@supports` bloğu silindi.
     Cam yalnız üst menüde (`.ust`) kaldı. */
.uye-kart {
  position: relative; z-index: 1; width: 100%; max-width: 372px;
  padding: 26px; border-radius: 24px;
  background:
    linear-gradient(150deg, rgb(255 255 255 / .16), rgb(255 255 255 / .04) 46%, rgb(255 255 255 / .10)),
    rgb(9 31 43 / .62);
  border: 1px solid rgb(255 255 255 / .22);
  box-shadow: var(--golge-l), 0 0 0 1px rgb(0 0 0 / .3);
  transform: rotate(-2deg);
  transition: transform .35s ease;
  background: #113245;
}
@media (hover: hover) {
  .kart-alan:hover .uye-kart { transform: rotate(0deg) translateY(-4px); }
}
@media (prefers-reduced-motion: reduce) {
  .uye-kart { transform: none; }
  .kart-alan:hover .uye-kart { transform: none; }
}

.uk-ust { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.uk-etiket { font-size: .68rem; font-weight: 800; letter-spacing: .16em; color: #9ccce8; }
.uk-durum {
  padding: 5px 12px; border-radius: 999px;
  background: rgb(97 229 255 / .18); border: 1px solid rgb(97 229 255 / .45);
  font-size: .7rem; font-weight: 800; letter-spacing: .04em; color: #adf2ff;
}
.uk-orta { display: flex; align-items: center; gap: 14px; margin-top: 24px; }
.uk-orta img { width: 62px; height: 62px; border-radius: 16px; border: 1px solid rgb(255 255 255 / .25); }
.uk-orta b { display: block; font-family: 'Sora', sans-serif; font-size: 1.1rem; color: var(--metin); }
.uk-orta small { display: block; font-size: .82rem; color: var(--metin-2); }
.uk-alt {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 16px;
  margin-top: 24px; padding-top: 20px; border-top: 1px solid rgb(255 255 255 / .16);
}
.uk-no b { display: block; font-size: .64rem; font-weight: 800; letter-spacing: .14em; color: #89b8d4; }
.uk-no span { font-size: .82rem; font-variant-numeric: tabular-nums; color: var(--metin); }
.qr { width: 78px; height: 78px; border-radius: 12px; background: #fff; padding: 6px; flex: 0 0 auto; }
.uk-ipucu { margin-top: 14px; font-size: .7rem; color: #89b8d4; }

/* =============================================================================
   FOOTER
============================================================================= */
/* Footer */
/* CAM KALDIRILDI — Tur 34, kullanıcı kararı, ölçümle. Kaydırırken her
     karede arkasındaki yüzeyi yeniden bulanıklaştırmak, aurora katmanıyla
     birlikte kare hızını 19.5 FPS'e düşürüyordu. Opak zemin ZATEN yazılıydı
     (`@supports not` yedeği) — yani tasarımda karşılığı düşünülmüştü; o
     değer buraya taşındı ve ölü kalan `@supports` bloğu silindi.
     Cam yalnız üst menüde (`.ust`) kaldı. */
.alt {
  position: relative; margin-top: clamp(64px, 8vw, 110px);
  border-top: 1px solid rgb(255 255 255 / .1);
  background: rgb(6 20 28 / .55);
  padding-block: clamp(48px, 6vw, 76px) 26px;
  background: #051823;
}
.alt-ust { display: grid; gap: 34px; }
@media (min-width: 54rem) { .alt-ust { grid-template-columns: 1.7fr 1fr 1fr 1fr; gap: 40px; } }
/* Altbilgi başlıkları h3: sayfada h1 ve h2 var, h4'e atlamak ekran
   okuyucunun başlık listesinde bir seviye eksik bırakıyordu. Görsel
   boyut aynı kaldı — değişen tek şey semantik seviye. */
.alt h3 { font-size: .7rem; font-weight: 800; letter-spacing: .2em; color: var(--metin); margin-bottom: 8px; }
.alt ul { list-style: none; margin: 0; padding: 0; }
.alt ul a {
  display: inline-flex; align-items: center; min-height: 44px;
  color: var(--metin-2); text-decoration: none; font-size: .9rem;
}
.alt ul a:hover { color: var(--turk-acik); }
.alt-kimlik .kimlik-yazi b { font-size: 1.05rem; }
.alt-kimlik p { margin-top: 14px; font-size: .88rem; max-width: 34ch; color: var(--metin-2); }
.alt-iletisim { margin-top: 12px; display: grid; gap: 2px; font-size: .88rem; }
.alt-iletisim a { display: inline-flex; align-items: center; min-height: 44px; color: var(--mor-acik); text-decoration: none; }
.alt-iletisim a:hover { color: var(--turk-acik); text-decoration: underline; }
.alt-iletisim span { color: var(--metin-3); }
.alt-son {
  margin-top: 34px; padding-top: 18px; border-top: 1px solid rgb(255 255 255 / .1);
  display: flex; flex-wrap: wrap; gap: 4px 24px; justify-content: space-between; align-items: center;
  font-size: .8rem; color: var(--metin-3);
}
.alt-son ul { display: flex; flex-wrap: wrap; gap: 4px 20px; }
.alt-son ul a { font-size: .8rem; }
/* #7390a2'ydi ve AA eşiğini ANCAK bazı anlarda geçiyordu. Ölçüldü (Tur 37):
   elementin ortasında zemin `rgb(5,24,35)` ve oran 5.37:1 — ama arkasından
   hareketli bir ışık lekesi geçtiğinde zemin `rgb(20,43,67)` oluyor ve oran
   4.28:1'e düşüyor (eşik 4.5). `kabuk.js` bu paragrafı HER ekranın
   altbilgisine bastığı için 60 ekranın hepsi etkileniyordu.
   #7f9eb2 en kötü zeminde 5.11:1, ortada 6.40:1 — ton korunuyor. */
.alt-uyari { width: 100%; margin-top: 6px; font-size: .74rem; color: #7f9eb2; }
