/* ============================================================================
   NEXTERN — DÜZEN PRIMITIVE'LERİ
   Spec: _Taslaklar/olceklenme_gocu_SPEC.md §1.3 · Plan Görev 2

   NE İŞE YARAR
   Yeni düzen YALNIZ buradan kurulur. `minmax(0,1fr)` ve `min-inline-size:0`
   içeride pişmiş durumda ⇒ `min-width:auto` tuzağı yeni kodda İMKÂNSIZ.

   NEDEN VAR
   Bu tuzağa projede BEŞ kez düşüldü ve beşinde de düzeltme aynı satırdı:
     · huni bileşeni      → repeat(4, minmax(0,1fr))
     · akordeon           → minmax(0,0fr) → minmax(0,1fr)
     · Başvurularım listesi → grid-template-columns bildirilmemişti (51px taşma)
     · hap karşılaştırma sayfası → iki kez, aynı gün, kuralı bilen biri tarafından
   Beşincisi önemli: kuralı BİLMEK yetmiyor. Bu yüzden kural artık kodda.

   NASIL KULLANILIR
     · `l-yigin` sınıfı + `--sutun:2` değişkeni  → 2 sütunlu ızgara
     · `l-satir` sınıfı                          → yan yana dizilim
     · Bir çocuk gerçekten min-content genişliğinde kalmalıysa (görsel, bazı
       form kontrolleri) ona `data-min-content` özniteliği verilir — istisna
       AÇIKÇA yazılır, sessizce olmaz.

   ⛔ Global `* { min-width: 0 }` YAPILMAZ: form kontrollerini ve görselleri
      bozar, gerçek taşmayı da gizler (Codex, 12 Ağu — Gemini bunu önermişti).
   ⛔ `overflow-x: hidden` çözüm değil, hatayı saklar.
   ⛔ Mevcut zararsız `display:flex`'ler (11 ekranda 274, sistemde 71) burada
      DÖNÜŞTÜRÜLMEZ. Yalnız çocuğu taşabilen düzen kapları primitive'e çekilir;
      hangisinin taştığına tahmin değil ÖLÇÜM karar verir (_araclar/).

   ⚠️ Bu dosya Görev 2'de İNERT olarak iner: hiçbir ekran bu sınıfları henüz
      kullanmıyor ⇒ görsel fark ÜRETMEMELİDİR. Fark çıkarsa adım geri alınır.
   ============================================================================ */

@layer layout {
  /* Dikey/ızgara yığın. Sütun sayısı `--sutun` ile verilir, varsayılan 1.
     `minmax(0,1fr)` ŞART: düz `1fr` = `minmax(auto,1fr)` ve kırılamayan uzun
     bir metin sütunu genişletip kabı patlatır. */
  .l-yigin {
    display: grid;
    grid-template-columns: repeat(var(--sutun, 1), minmax(0, 1fr));
    gap: var(--l-aralik, var(--nx-space-md));
  }

  /* Yan yana dizilim. Flex DEĞİL grid — sarma gerektiğinde öğe sola kaçmasın,
     kendi sütun izini korusun (Efe kuralı, 12 Ağu: "2. satıra inen şey aynı
     dikey hizada inmeli"). */
  .l-satir {
    display: grid;
    grid-auto-flow: column;
    align-items: center;
    gap: var(--l-aralik, var(--nx-space-sm));
  }
}

@layer invariants {
  /* EN SON yüklenen katman — tuzağın kendisini kapatır.
     `:where()` ile özgüllük SIFIR: bileşen kuralları bunu zahmetsizce ezebilir,
     ama ezmek için AÇIKÇA yazmak gerekir.
     Bilinçli min-content isteyen nadir öğe `data-min-content` ile çıkar
     ⇒ istisna görünür olur, sessiz kalmaz. */
  :where(.l-yigin, .l-satir) > :not([data-min-content]) {
    min-inline-size: 0;
  }
}
