
  /* Şablon sözleşmesi: `.nx-auth` kabuk yerleşimi DEĞİL — ortalanmış kutu kendi
     akışını ister (bkz. sablonlar/auth.html başlığındaki bilinçli istisna). */
  .nx-auth {
    min-height: 100dvh;
    display: grid;
    grid-template-rows: 1fr auto;      /* üst: kutu (dikeyde ortalı) · alt: tema */
    padding: var(--nx-space-lg);
    padding-top: calc(var(--nx-space-lg) + var(--nx-sa-ust, env(safe-area-inset-top, 0px)));
    padding-bottom: calc(var(--nx-space-lg) + var(--nx-sa-alt, env(safe-area-inset-bottom, 0px)));
  }
  /* Simetrik dikey dolgu (L-101 A, kör denetçi İ1 — 1 Eki): uzun panel (%200'de sıfırlama hatası · gönderildi)
     kutu satırını doldurunca tema anahtarına değiyordu (0 px). Dolgu iki uçta eşit ⇒ kutu sığarken ortası
     aynı yerde kalır (varsayılan görünüm değişmez); taşınca anahtarla arasında `lg` kalır. */
  .gr-orta { display: flex; align-items: center; justify-content: center;
             padding-block: var(--nx-space-lg); }
  .gr-kutu {
    width: min(420px, 100%);
    display: flex; flex-direction: column; align-items: stretch;
    gap: var(--nx-space-lg);
  }

  /* Logo: yalnız YÜKSEKLİK ölçeğe bağlanır, `width` auto kalır — en-boy oranı
     korunur (ölçeklenebilirlik kuralı: logo iki eksende ayrı ölçeklenmez). */
  .gr-logo { height: calc(34px * var(--nx-nesne-olcek)); width: auto; align-self: center; }

  .gr-baslik { text-align: center; }
  .gr-baslik h1 { font-size: var(--nx-fs-h2); }
  .gr-baslik p  { color: var(--nx-muted); margin-top: var(--nx-space-xs); }

  .gr-form { display: flex; flex-direction: column; gap: var(--nx-space-md); }

  /* Yasal satır: eylemden SONRA, tema anahtarından ÖNCE. Ayrı bir kart değil —
     sessiz bir dipnot; okunur ama giriş akışıyla yarışmaz. */
  .gr-yasal {
    text-align: center; font-size: var(--nx-fs-caption); color: var(--nx-muted);
    line-height: var(--nx-lh-body); text-wrap: pretty;
  }
  .gr-yasal a { color: inherit; text-underline-offset: 3px; }

  /* Yasal panel — kart sistemden (`.nx-card`), içi ekran-yerel.
     ⚠️ `[hidden]` kuralı: `.nx-card` display veriyor olabilir; gizlemenin
     çalıştığından emin olmak için açıkça yazılıyor (bu deponun §831 kuralı). */
  .gr-panel { display: flex; flex-direction: column; gap: var(--nx-space-md);
              padding: var(--nx-space-lg); text-align: left; }
  .gr-panel[hidden] { display: none; }
  .gr-panel__baslik { font-size: var(--nx-fs-h3); font-weight: var(--nx-fw-bold); }
  .gr-panel__baslik:focus-visible { outline: 2px solid var(--nx-accent-on);
                                    outline-offset: 2px; }
  .gr-panel__uyari { font-size: var(--nx-fs-body-sm); color: var(--nx-muted);
                     line-height: var(--nx-lh-body); }
  .gr-panel__liste { margin: 0; padding-left: 1.15em; display: flex;
                     flex-direction: column; gap: var(--nx-space-xs);
                     font-size: var(--nx-fs-body-sm); color: var(--nx-text);
                     line-height: var(--nx-lh-body); }

  /* ── TEMA ANAHTARI (Efe: güneş + ay, orta en altta) ──
     Sistemdeki `.nx-segmented` kalıbının iki-seçenekli, ikon-only hâli değil;
     kendi kabı, çünkü burada kabuk YOK ve öğe ekranın dibine çıpalı.
     ⭐ DOLGU KURALI: seçili olan LİME dolgu + İNK ikon; glow yönü temadan gelir
     (koyuda dışa, açıkta içe) — `--nx-glow-sm` token'ları bunu zaten taşıyor. */
  /* 🔴 `--nx-space-2xs` TANIMSIZDI — merdivende yok (taban `xs: 4px`), yani bu
     kabın dolgusu ve boşluğu HİÇ uygulanmıyordu (token kapısı 17 Eyl'de yakaladı).
     Aynı tanımsız ad bu dosyada 4, `kayit.html`de 3 yerde geçiyordu; yedisi de
     `--nx-space-xs`e çevrildi. HATALARIM §95 sınıfı: tanımsız token sessizce
     düşer, konsol temiz kalır, kural yalnızca ÇALIŞMAZ. */
  .gr-tema { justify-self: center; display: inline-flex; gap: var(--nx-space-xs);
             padding: var(--nx-space-xs); border-radius: var(--nx-radius-full);
             background: var(--nx-surface-2);
             /* Gösterge `::before` ile geliyor ⇒ kap konumlandırılmış olmalı. */
             position: relative; }

  /* ⭐⭐ SEÇİM DOLGUSU KAYARAK GEÇER (Efe kuralı, 19 Ağu 2026 — burada 17 Eyl'de
     uygulandı). Efe: *"seçilenin dolgusu alttab ve rail'da olduğu gibi kayarak
     geçsin. Tüm sistemde böyle kaydırmalıya benzeyecek öğeler kayarak geçmeli
     bundan sonra."*
     🔴 BUGÜNE KADAR UYGULANMAMIŞTI: dolgu bir düğmeden **yok olup** komşusunda
       **beliriyordu** — `.gr-tema__dugme` hiçbir geçiş taşımıyordu, yani 0 ms.
       Animasyon kalite ölçütü **O5 (fiziksel devamlılık)**: nesne ışınlanmaz,
       geldiği yöne doğru gider. → [[karar-animasyon-kalite-olcutu]]
     ⭐ Reçete `.nx-segmented`in birebir aynısı, motor da sistemin kendi
       `nxKayanGosterge`si ⇒ ikinci bir uygulama YAZILMADI, DONDURULMUŞ TABAN
       değişmedi (`kabuk.js` bu ekranda zaten yüklü).
     ⛔ Dolgu düğmeden ALINDI: düğmenin kendi zemini de boyansaydı kayma
       sırasında iki dolgu birden görünürdü (19 Ağu'da segmented'da ölçülmüş). */
  .gr-tema::before {
    content: "";
    position: absolute; z-index: 0; pointer-events: none;
    top: 0; left: 0;
    width: var(--nx-seg-w, 0px);
    height: var(--nx-seg-h, 0px);
    transform: translate(var(--nx-seg-x, 0px), var(--nx-seg-y, 0px));
    background: var(--nx-dolgu);
    border-radius: var(--nx-radius-full);
    box-shadow: var(--nx-glow-md);
  }
  /* İlk boyamada KAYMA YOK: geçiş ancak gösterge yerine oturunca açılır,
     yoksa sayfa her açılışta gösterge soldan süzülerek gelirdi. */
  .gr-tema.is-gosterge-hazir::before {
    transition: transform var(--nx-dur-base) var(--nx-ease),
                width     var(--nx-dur-base) var(--nx-ease);
  }
  @media (prefers-reduced-motion: reduce) {
    .gr-tema.is-gosterge-hazir::before { transition: none; }
  }

  .gr-tema__dugme {
    width: var(--nx-tap-min); height: var(--nx-tap-min);
    display: inline-flex; align-items: center; justify-content: center;
    border: 0; background: none; border-radius: var(--nx-radius-full);
    color: var(--nx-muted); cursor: pointer; padding: 0;
    /* Düğme göstergenin ÜSTÜNDE kalmalı, yoksa dolgu ikonu yutar. */
    position: relative; z-index: 1;
  }
  .gr-tema__dugme .nx-icon { width: var(--nx-ikon-md); height: var(--nx-ikon-md); }
  .gr-tema__dugme:hover { color: var(--nx-text); }
  .gr-tema__dugme:focus-visible { outline: 2px solid var(--nx-accent-on); outline-offset: 2px; }
  /* ⭐ O3 BÜTÜNLÜK: ikon rengi göstergeyle AYNI sürede döner. Ayrı süre
     verilseydi gösterge varmadan ikon ink'e döner ve bir kare boyunca krem
     zeminde ink bir ikon görünürdü. */
  .gr-tema__dugme,
  .gr-tema__dugme .nx-icon { transition: color var(--nx-dur-base) var(--nx-ease); }
  .gr-tema__dugme[aria-pressed="true"] {
    /* ⚠️ `--nx-on-dolgu` TANIMSIZDI (aynı hatanın ikinci kopyası — bkz. kimlik.html
       `.aura-cta`). Tanımsız token sessizce miras alınan renge düşer; doğru ad
       `--nx-dolgu-yazi` (iki temada da ink, dolgu kuralının kendisi).
       🔴 `background` ve `box-shadow` BURADAN KALKTI — artık `::before` taşıyor. */
    color: var(--nx-dolgu-yazi);
  }

  /* ── ŞİFRE SIFIRLAMA PANELLERİ — L-101 A (Efe, pano 1 Eki 2026) ──
     Girişin yerine geçer (başlık + form + yasal satır gizlenir); üniversite girişinin
     iki paneli (universite/giris.html:263–305), öğrencinin «sen» diliyle. */
  .gr-sifirla { display: flex; flex-direction: column; gap: var(--nx-space-md); }
  .gr-sifirla[hidden], .gr-form[hidden], .gr-yasal[hidden], .gr-baslik[hidden] { display: none; }
  .gr-sifirla__geri { align-self: flex-start; }
  /* Uzun e-posta adresi bölünemeyen tek kelimedir: %200 yazıda 320 px'te kartı 17 px
     genişletip sayfayı yatay kaydırıyordu (L-92 çekmece ölçümü) — son çare kırılım,
     profil `.ref-kisi__satir` emsali. Düğme etiketi «Bağlantı gönder»: buton sarmaz,
     metin kısalır (components.css `.nx-btn`, Efe 21 Tem) — uzun hâli 320–412 px × %200'de taşıyordu. */
  .gr-sifirla__adres { overflow-wrap: anywhere; }
