/* ============================================================
   LAYOUT — header, nav, pipeline şeridi, içerik, mobil
   ============================================================ */
#uygulama { display: flex; flex-direction: column; height: 100vh; }

/* ── Header ── */
header {
  background: var(--renk-ana); color: #fff; height: var(--header-h);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 var(--bo-4); flex-shrink: 0; border-bottom: 3px solid var(--renk-aksan);
}
.logo { display: flex; align-items: center; gap: 8px; font-size: var(--fs-md);
  font-weight: var(--fw-kalin); letter-spacing: .06em; }
.logo .marka { width: 26px; height: 26px; border-radius: var(--yaricap-sm);
  background: var(--renk-aksan); display: grid; place-items: center;
  font-weight: var(--fw-bold); color: #fff; }

nav.ana { display: flex; gap: 2px; }
/* .nav-btn = <a href="#rota"> (buton DEGIL): sag tik "yeni sekmede ac" ve Ctrl+tik
   ancak href tasiyan capada calisir. inline-flex = eski <button> dikey ortalamasi. */
.nav-btn { padding: 6px 16px; font-size: 12px; font-weight: 500;
  display: inline-flex; align-items: center; font-family: inherit;
  border: none; background: transparent; color: var(--renk-soluk); cursor: pointer;
  text-decoration: none; white-space: nowrap;
  border-radius: var(--yaricap-sm); transition: all .15s; }
.nav-btn:hover { color: #fff; background: rgba(255,255,255,.08); }
.nav-btn:focus { outline: none; }
/* K31: focus-visible = 2px halka, `outline:none` KARSILIKSIZ olamaz (2026-08-31 erisilebilirlik
   turu — burasi ve .sekme klavye odagini tamamen gorunmez birakiyordu; WCAG 2.4.7).
   Koyu header ustunde halka ters-metin rengiyle cizilir (aksan zeminde kayboluyor). */
.nav-btn:focus-visible { outline: 2px solid var(--renk-ana-ustu); outline-offset: 2px;
  color: #fff; background: rgba(255,255,255,.10); }
.nav-btn.aktif { color: #fff; background: rgba(255,255,255,.12); box-shadow: inset 0 -2px 0 var(--renk-aksan); }

.hdr-sag { display: flex; align-items: center; gap: 12px; font-size: 11px;
  color: var(--renk-soluk); font-family: var(--font-mono); }
/* 18ch tavan: header eşiklerini (aşağıda "Header sığdırma") SABİT tutar — ad genişliği eşiğin
   değişkeniydi. Uzun ad KIRPILMAZ, iki satıra sarar (52 px header'a sığar). `break-word`, `anywhere`
   DEĞİL: anywhere min-content'i tek harfe indirir → 375'te flex adı 4 satıra ezip header'dan taşırdı (ölçüldü). */
.hdr-sag .ad { color: var(--renk-soluk); font-weight: 400; max-width: 18ch; overflow-wrap: break-word; }
/* Düğme metni SARMAZ: sıkışan header "+ Yeni"yi "+" / "Yeni" diye iki satıra bölüyordu (375, ölçüldü 2026-09-15).
   Sığdırmayı düğme değil kademe yapar (aşağıda "Header sığdırma"); sarabilen yalnız logo ve ad. */
.hdr-sag .btn { white-space: nowrap; }
.hdr-sag #cikis { padding: 3px 10px; font-size: 11px; background: transparent; color: rgba(255,255,255,.8);
  border: 1px solid rgba(255,255,255,.25); border-radius: var(--yaricap-sm); cursor: pointer; }
.hdr-sag #cikis:hover { background: rgba(255,255,255,.12); color: #fff; }


/* ── İçerik ── */
main#icerik { flex: 1; overflow: auto; padding: var(--bo-5); }
.izgara { display: grid; gap: var(--bo-4); }
.izgara.k5 { grid-template-columns: repeat(5, 1fr); }
.izgara.k4 { grid-template-columns: repeat(4, 1fr); }
.izgara.k3 { grid-template-columns: repeat(3, 1fr); }
.izgara.k2 { grid-template-columns: repeat(2, 1fr); }

/* Sayfa-içi sekmeler — ince, ikonsuz, alt-çizgi vurgulu (eski sistem stili) */
.sekme-bar { display: flex; gap: 0; border-bottom: 1px solid var(--renk-cizgi); margin-bottom: var(--bo-3); }
.sekme { padding: 9px 18px; font-size: var(--fs-sm); font-weight: 500; color: var(--renk-soluk);
  background: none; border: none; border-bottom: 2px solid transparent; cursor: pointer;
  white-space: nowrap; transition: color .12s, border-color .12s; margin-bottom: -1px; }
.sekme:hover { color: var(--renk-yazi); }
.sekme:focus { outline: none; }
.sekme:focus-visible { outline: 2px solid var(--renk-odak); outline-offset: 2px; }
/* aktif sekme: --renk-ana DEĞİL (o header-ZEMİN rengi; koyu temada near-black → görünmez tuzağı) */
.sekme.aktif { color: var(--renk-yazi); border-bottom-color: var(--renk-aksan); font-weight: 600; }

/* Eski "bağlam çubuğu" (`.sayfa-bari` + `.sb-*`) ve K10 geçiş köprüsü SİLİNDİ (ADR G16 adım 6 + 7j,
   2026-09-15): içerikte başlık barı YASAK — başlık kırıntının son halkası, hâl durum hücresi, eylem şeridin
   sağ hücresi. Son iki üretici (makine kartı, varlık kartı) 7j'de şeride taşındı. Bekçi: kabuk_kontrol.py
   D9-d (içerikte `.sayfa-bari` üretimi HATA) + D9-e (silinen sınıflar geri gelmez). */
.alan.alan-sm { padding: 4px 8px; height: auto; width: auto; }

/* ── Üst şerit (K9 KROM, 2026-07-11): kırıntı + alt-sekmeler + eylemler TEK sabit şerit,
   kaydırılan alanın DIŞINDA (header ile main arasında flex istifte). Sticky/negatif-marj
   hileleri kalktı; iç panellerin ofset payı 0'a indi (scroller tepesi = şeridin altı). ── */
/* `--serit-pay` SİLİNDİ (ADR G16 adım 6, 2026-09-15; 2026-08-07'den beri tüketicisi yoktu, hep 0px).
   Sticky panele `top: 0` — şeritle nefes payını main#icerik'in padding'i verir; `top: X` kolonu
   kaydırma başlamadan X kadar aşağı iter (gerekçe: components.css `.onz-kabuk`). */
#serit { flex: none; background: var(--renk-beyaz); border-bottom: 1px solid var(--renk-sinir); box-shadow: var(--golge-sm); }
/* ÖN ŞART (ADR G16 D4, adım 0.5 — 2026-09-14): şeritte [hidden] HER ZAMAN gizler. Taban
   kuralları (`#serit .sekme{display:flex}` gibi) UA'nın [hidden]{display:none}'ını eziyordu;
   katlama motoru sekmeyi `hidden` yapıyor, sekme GÖRÜNMEYE devam ediyordu. Bu satır olmadan
   hiçbir katlama/vekil motoru gizlemez. Bekçi: scripts/kabuk_kontrol.py (silinirse HATA). */
#serit [hidden] { display: none !important; }
/* K22 (2026-07-30 kullanıcı kararı): şerit İKİ YARIDIR — SOL konum (kırıntı + sekmeler),
   SAĞ eylem (kaydet ailesi + ikincil araçlar). Dar ekranda yan yana sığmayınca ALT ALTA
   sarılır (eylemler kırpılmaz, yatay kaydırma doğmaz). Eylem yuvası da kendi içinde sarılır. */
/* ≥761 TEK SATIR (ADR G16 D4, adım 4): taban NOWRAP. Sığmayanı ui/kirinti.js kabukSigdir sırayla katlar
   (① ikincil düğme ⋯ · ② ray +N · ③ ara halka … / son halka 28ch); o da yetmezse `.tasma` sarar (④ görünür,
   sayılan istisna). Eskiden wrap'ti ama sarmadı: s-sol min-width:0 küçüldü, kırıntı DURUMUN ALTINA girdi. */
/* BOY (ADR G16 D2, adım 5): bant HEIGHT'tır, min-height DEĞİL — içerik boyu belirlemez, sığmayan katlanır. */
#serit .serit-ic { display: flex; align-items: stretch; gap: 10px; height: var(--h-bant);
  padding: 0 0 0 var(--bo-5); flex-wrap: nowrap; }  /* sağ pay eylem HÜCRESİNİN içinde — tam boy hücre kenara oturur (ADR G15) */
#serit .serit-ic.tasma, #serit .serit-ic.tasma .s-sag { flex-wrap: wrap; }
#serit .serit-ic.tasma { height: auto; min-height: var(--h-bant); }   /* ④ görünür istisna: sarar, kırpmaz */
#serit .kabuk-katli { display: none !important; }   /* kabukSigdir'in katladığı düğme/halka — hidden DEĞİL (modülün kendi hidden'ı) */
#serit .kirinti.k-kisa .k-son { max-width: 28ch; }
#serit .k-dd-ayrac { border-top: 1px solid var(--renk-cizgi); margin: 4px 0; }
#serit .k-dd-menu button[aria-disabled="true"] { color: var(--renk-soluk); cursor: default; }
#serit .s-sol { display: flex; align-items: stretch; gap: 10px; min-width: 0; flex: 1 1 340px; }
/* ÜÇ HÜCRE (ADR G15, 2026-08-31 — uzman turuyla): durum + eylem TAM BOY hücreler, zemin BEYAZ
   (tonlu sağ-hücre hiçbir sistemde yok; ayrımı 1px tam-boy çizgi + doku taşır), genişlik İÇERİK
   BOYU (sabit taban REDDEDİLDİ: birincil düğme sağ kenara çapalı — X'i zaten sabit). */
#serit .s-sag { display: flex; align-items: center; gap: 6px; flex: 0 1 auto; flex-wrap: nowrap;
  justify-content: flex-end; font-size: var(--fs-sm); padding: 4px var(--bo-5) 4px 16px;
  align-self: stretch; border-left: 1px solid var(--renk-sinir); }
/* Durum hücresi: eyleme BİTİŞİK ama DIŞINDA — kaydın hâli, renkli METİN (kabukta rozet YASAK,
   K31). Boşken [hidden] → çizgisi de yok. Renk: hücre sınıfı (seritDurum ton) YA DA içteki span. */
#serit .s-durum { display: flex; align-items: center; gap: 6px; align-self: stretch; flex: none;
  padding: 0 14px; margin-left: auto; border-left: 1px solid var(--renk-sinir);
  font-size: 12.5px; font-weight: 600; white-space: nowrap; }
#serit .s-durum[hidden] { display: none; }
#serit .s-durum.pos,   #serit .s-durum .pos   { color: var(--renk-pos-yazi); }
#serit .s-durum.uyari, #serit .s-durum .uyari { color: var(--renk-uyari-yazi); }
#serit .s-durum.neg,   #serit .s-durum .neg   { color: var(--renk-neg-yazi); }
#serit .s-durum.notr,  #serit .s-durum .notr  { color: var(--renk-soluk); font-weight: 500; }
/* aksan = akista/bekleyen (marka turuncusu, metin turevi) — eski rozet.aksan sozluklerinin
   (portfoyde · bekliyor · hazirlandi) durum hucresindeki karsiligi (g4 goc bulgusu). */
#serit .s-durum.aksan, #serit .s-durum .aksan { color: var(--renk-aksan-yazi); }
/* Durum gizliyken sağa itmeyi eylem hücresi devralır */
#serit .s-durum[hidden] + .s-sag { margin-left: auto; }
/* DURUM KISA BİÇİMİ (ADR G16 7k): modül iki biçim yazar (.d-tam / .d-kisa); kabukSigdir ④ bant 1 taşarken
   hücreye `durum-kisa` ekler. Varsayılan tam metin; kısa yalnız motor isteyince. (Markup zinciri: bekçi D4-h) */
#serit .s-durum .d-kisa { display: none; }
#serit .s-durum.durum-kisa .d-tam { display: none; }
#serit .s-durum.durum-kisa .d-kisa { display: inline; }
@media (max-width: 760px) {
  #serit .serit-ic, #serit .s-sag { flex-wrap: wrap; }   /* motor kapalı: CSS sarar (sözleşme "kırılmasın") */
  #serit .serit-ic { height: auto; min-height: var(--h-bant); }   /* ≤760 boy sabit değil (ADR G16 Karar 4 mobil satırı) */
  #serit .s-sol, #serit .s-sag, #serit .s-durum { flex-basis: 100%; }
  #serit .s-sag { justify-content: flex-start; border-top: 1px solid var(--renk-cizgi);
    border-left: 0; padding-left: 0; margin-left: 0; }
  #serit .s-durum { border-left: 0; margin-left: 0; padding-left: 0; }
  #serit .serit-ic { padding-right: var(--bo-5); }
}
/* K9 rev.3: kırıntı (Bölüm › Aktif Sekme) sabit genişlik; sekme rayı esner + kaydırılır, solunda ayraç */
#serit .s-sekmeler { display: flex; align-items: stretch; overflow-x: auto; scrollbar-width: none;
  flex: 1 1 auto; min-width: 0; border-left: 1px solid var(--renk-cizgi); padding-left: 12px; margin-left: 2px; }
#serit .s-sekmeler::-webkit-scrollbar { display: none; }
#serit .sekme { display: flex; align-items: center; padding: 0 12px; margin-bottom: -1px;
  text-decoration: none; font-size: var(--fs-md); }
#serit .kirinti { display: flex; align-items: center; flex-wrap: nowrap; gap: 5px; min-width: 0; flex: none;
  font-size: 13px; color: var(--renk-soluk);
  background: none; border: 0; margin: 0; padding: 0; }
/* overflow:hidden KALDIRILDI — ▾ menüsünü kırpıyordu. Uzun ismi son halkada ellipsis'le sınırla. */
#serit .kirinti .k-son { max-width: 42ch; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; display: inline-block; vertical-align: middle; }
/* İSKELET HALKASI (ADR G16 7g): kayıt verisi gelene dek son halka yer tutucu "…" — soluk, animasyonsuz
   (hareket azaltma tercihi ayrıca gerekmez). Boy/hiza k-son'dan gelir; yalnız ton farklı. */
#serit .kirinti .k-son.k-iskelet { color: var(--renk-soluk); font-weight: 400; }
/* ARA HALKA TAVANI 28ch (ADR G16 D4, adım 0.5): tavansızdı — uzun proje adı tek halkada 677 px
   kırıntı üretiyordu. `>` BİLİNÇLİ: ▾ kardeş menüsünün bağları da .kirinti'nin içinde ama
   `.k-dd-menu` altında; onlar kırpılmasın (menüde ad TAM okunur). Tam ad title'dan değil
   menüden/sayfadan okunur. */
#serit .kirinti > a { max-width: 28ch; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; display: inline-block; vertical-align: middle; }
/* ≤640 (K7 mobil): halkalar 18ch. components.css'teki `.kirinti a` kuralı (0,1,1) buradaki
   (1,x,x) kuralları tarafından EZİLİYORDU — mobil kısaltma şeritte hiç çalışmamış.
   Kırıntı KÜÇÜLEBİLİR ama BÜYÜMEZ (0 1 auto): kayıt düzleminde uzun halkalar ellipsis'e iner
   (ADR G16'nın 375 px ölçümü: 643 px taşma o düzlemdeydi). Ray tabanı 0: sekme düzleminde rayın
   İÇERİK genişliği kırıntıyı ezmesin. ⚠ İlk yazımda `.kirinti{flex:1 1 auto}` vardı ve ÖLÇÜLDÜ:
   ray (~1000 px içerik) ile orantılı küçülme kırıntıyı 23 px'e indirdi ("M…"); eski kodda 61 px'ti. */
@media (max-width: 640px) {
  #serit .kirinti > a, #serit .kirinti .k-son { max-width: 18ch; }
  #serit .kirinti { flex: 0 1 auto; min-width: 0; }
  #serit .s-sekmeler { flex: 1 1 0; }
}
/* SEKME SAYACI (ADR G20 ek karar g): sekmenin arkasındaki sayfada bekleyen iş sayısı (İşleme Masası). */
#serit .sekme .sekme-sayac { font-family: var(--font-mono); font-size: 11px; font-weight: 600; line-height: 16px;
  padding: 0 6px; border-radius: 999px; background: var(--renk-aksan-zemin); color: var(--renk-aksan-yazi); }
/* DAR EKRANDA RAY KENDİ SATIRINDA (ADR G20). ≤760'ta kırıntı ile ray aynı satırı paylaşıyordu: 375 px'te
   raya 230 px kalıyor, açık sekme ekran dışına düşüyordu (ölçüm 2026-10-08). Ray kırıntının ALTINA iner,
   tam genişlik alır; sağ kenarda solma "devamı var" der, sondaki boşluk son sekmenin solmanın altında
   kalmasını önler. Bu blok yukarıdaki taban ve ≤640 kurallarından SONRA durmalı (aynı özgüllük). */
@media (max-width: 760px) {
  #serit .s-sol { flex-wrap: wrap; }
  #serit .s-sekmeler { flex: 1 1 100%; border-left: 0; padding-left: 0; margin-left: 0; min-height: 36px;
    padding-right: 28px;
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent); }
  /* Sayfa-içi sekmeler de SAYFAYI değil kendilerini kaydırır (ölçüm 2026-10-30: dört sekme #icerik'i 100 px genişletiyordu). */
  .sekme-bar { overflow-x: auto; overflow-y: hidden; scrollbar-width: none; padding-right: 28px;
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent); }
  .sekme-bar::-webkit-scrollbar { display: none; }
}
#serit .k-donus { align-self: center; }
/* ▾ kardeş-sayfa menüsü (detay kırıntısında bölüm halkası) — kırıntıdan gezinme */
#serit .k-dd { position: relative; display: inline-flex; align-items: center; }
#serit .k-dd-ac { border: none; background: none; cursor: pointer; color: var(--renk-soluk);
  font-size: 11px; padding: 0 3px; line-height: 1; border-radius: 3px; }
#serit .k-dd-ac:hover { color: var(--renk-aksan-2); background: var(--renk-zemin); }
#serit .k-dd-menu { display: none; position: absolute; top: 100%; left: 0; z-index: 60;
  min-width: 190px; background: var(--renk-beyaz); border: 1px solid var(--renk-cizgi);
  border-radius: var(--yaricap, 8px); box-shadow: var(--golge); padding: 4px; margin-top: 3px; }
#serit .k-dd.acik .k-dd-menu { display: block; }
/* Sağ yuvadaki (seritSag) dropdown SAĞ-hizalı — sola açılırsa viewport'tan taşar (+ Yeni İş fix) */
#serit .s-sag .k-dd-menu { left: auto; right: 0; max-height: 70vh; overflow-y: auto; }
/* Öğe İKİ tipte olabilir: <a> = GEZİNME (▾ kardeş-sayfa menüsü), <button> = EYLEM
   (⋯ taşma menüsü, yol #231). Görünüşleri aynı; ikisi de aynı kuralı paylaşır. */
#serit .k-dd-menu a, #serit .k-dd-menu button { display: block; padding: 6px 11px; font-size: 12.5px;
  border-radius: 5px; color: var(--renk-yazi); text-decoration: none; white-space: nowrap; }
#serit .k-dd-menu button { width: 100%; text-align: left; border: 0; background: none;
  cursor: pointer; font-family: inherit; }
#serit .k-dd-menu a:hover, #serit .k-dd-menu button:hover { background: var(--renk-zemin); color: var(--renk-aksan-2); }
#serit .k-dd-menu a[aria-current="true"] { font-weight: 700; color: var(--renk-aksan); }
/* Yıkıcı eylem (iptal/sil): menü içinde de kırmızı kalır — hover'da da aksan rengine KAYMAZ. */
#serit .k-dd-menu button.tehlike { color: var(--renk-neg); }
#serit .k-dd-menu button.tehlike:hover { background: var(--renk-neg-zemin); color: var(--renk-neg); }
/* ⋯ tetikleyicisi ▾'den büyük: üç nokta 11px'te okunmuyor. */
#serit .k-dd-ac.genis { font-size: 15px; padding: 0 6px; }
/* METİNLİ tetikleyici (İşlemler ▾ — yol #457): buton grameri; .ana birincil boyar.
   #serit .k-dd-ac taban kuralı border/background sıfırlıyor → burada geri verilir. */
#serit .k-dd-ac.etiketli { border: 1px solid var(--renk-sinir); border-radius: var(--yaricap, 8px);
  height: var(--h-kontrol); padding: 0 12px; display: inline-flex; align-items: center;   /* 27 → 32 (adım 5): düğmelerle aynı boy */
  font-size: 12.5px; background: var(--renk-beyaz); color: var(--renk-yazi); }
#serit .k-dd-ac.etiketli.ana { background: var(--renk-buton-ana); color: var(--renk-buton-ana-ustu);
  border-color: var(--renk-buton-ana); }
#serit .k-dd-ac.etiketli.ana:hover { background: var(--renk-buton-ana-2); color: var(--renk-buton-ana-ustu); }
/* Menü içi grup başlığı + devre dışı satır (soluk; nedeni title taşır) */
#serit .k-dd-grup { font-size: 10px; letter-spacing: .05em; text-transform: uppercase;
  color: var(--renk-soluk); padding: 6px 11px 2px; }
#serit .k-dd-grup:not(:first-child) { border-top: 1px solid var(--renk-cizgi); margin-top: 4px; padding-top: 8px; }
#serit .k-dd-soluk { display: block; padding: 6px 11px; font-size: 12.5px;
  color: var(--renk-soluk); cursor: default; white-space: nowrap; }
/* KAPSAM BANDI (ADR G15 karar B): veriyi TANIMLAYAN seçiciler (dönem·defter·düzen) bant 1'in
   altında TONLU şeritte birleşir (ton yalnız bu bandın dilidir; eylem hücresi beyaz). Kontroller
   K21 süzgeç boyunda (32px), çerçeveleri bir ton koyu — "girdi alanı" grameri. [hidden] → 0
   yükseklik: kapsamı olmayan sayfa bedel ödemez. Router rota değişiminde temizler. */
#serit-kapsam { display: flex; align-items: center; gap: 8px; height: var(--h-bant);   /* 38 → 40 (adım 5) */
  padding: 0 var(--bo-5); background: var(--renk-vurgu-zemin);
  border-top: 1px solid var(--renk-cizgi); flex-wrap: nowrap; }
/* Bant içindeki dönem seçici kontrol boyunda (26 → 32, adım 5); açılır pencere (.ds-pop) etkilenmez */
#serit .donem-sec { height: var(--h-kontrol); }
#serit .donem-sec > button { height: 100%; }
#serit-kapsam[hidden] { display: none; }
/* DONUK BANT (ADR G16 D3, adım 3): aynı rotada `seritKapsam('')` bandı kapatmaz, dondurur — kabuk
   boyu sabit kalır. Kontroller soluk + etkileşimsiz (JS `inert`), değer korunur; sağda neden yazar.
   Zemin tonu KALIR (bant hâlâ kabuğun parçası), yalnız içerik soluklaşır. */
#serit-kapsam.donuk > * { opacity: .45; }
#serit-kapsam.donuk::after { content: 'bu görünümde uygulanmaz'; margin-left: auto; font-size: 11.5px;
  font-style: italic; color: var(--renk-soluk); white-space: nowrap; }
#serit-kapsam .sk-et { font-size: 11px; letter-spacing: .06em; text-transform: uppercase;
  color: var(--renk-soluk); font-weight: 700; margin-right: 4px; }
#serit-kapsam .sk-ayrac { width: 1px; align-self: stretch; margin: 8px 3px;
  background: var(--renk-notr-sinir); flex: none; }
#serit-kapsam .alan, #serit-kapsam select.alan, #serit-kapsam input.alan {
  width: auto; height: var(--suzgec-yuk); padding: 0 10px; font-size: var(--fs-sm);
  border-color: var(--renk-notr-sinir); }
/* KOLON KİPİ EMEKLİ (K36 — 2026-09-02 kullanıcı kararı). `#serit-kapsam.kolon` + .psol/.psag/
   .pdar + .sk-kol + 1000px ezmesi buradaydı: bant, ızgaranın oluğundan bölünüp her segmentte
   altındaki kolonun araçlarını taşıyordu. Hiza doğruydu ama SAHİPLİK yalnız hizaya dayanıyordu
   (araya main#icerik'in 24px payı giriyor) ve <1000px'te ızgara istiflenirken bant tek kolona
   düşüp segmentleri yanlış panelin üstünde bırakıyordu. Araçlar panelin kendi başlığına indi:
   components.css `.pnl-bas` + ui/panel.js `panelBaslik`. Bu kapsayıcı yalnız KAPSAM kipinde
   (dönem/defter/düzen — ADR G15-B) kalır; `seritKolon` API'si de silindi. */

/* ADIM 10 (K31 — kabuk eleman ölçüleri): KABUKTAKİ etkileşimli kontroller 32 px kademesine.
   Kapsam yalnız #serit — içerik/satır butonlarına DOKUNMAZ (K31: bant kuralı kabuğu bağlar). */
#serit .btn { height: var(--h-kontrol); padding: 0 12px; font-size: var(--fs-sm);
  display: inline-flex; align-items: center; }
#serit .btn-ana { padding: 0 14px; }
/* +N ▾ ray çipi: sekme rayının sonunda, GÖRÜNÜR taşma (rayKatla) */
#serit .s-sekmeler .k-dd.ray-tasan { align-self: center; margin-left: 4px; }
/* Katlanmış ve SIĞAN ray taşmayı serbest bırakır (kirinti.js rayKatla ekler/söker): ray
   overflow-x:auto — bir eksende auto ötekini de auto yapar, çipin açılır menüsü 40 px'lik
   ray kutusunda dikeyde KIRPILIRDI. Sığdığı kanıtlandıktan sonra görünür taşma güvenli. */
#serit .s-sekmeler.ray-katli { overflow: visible; }
#serit .s-sekmeler .ray-tasan .k-dd-ac { font-size: 12px; font-weight: 600; padding: 2px 8px;
  border: 1px solid var(--renk-sinir); border-radius: 6px; background: var(--renk-beyaz); }
/* GRUP RAYI (ADR G16 adım 3.3): grup çipi SEKME gramerinde — alt çizgi, içindeki sayfa açıkken
   aktif. `#serit .k-dd-ac` taban kuralı (11px, kenarlıksız, 0 3px, yuvarlak köşe) ▾ ikonu içindir;
   burada sekmeye geri çevrilir. Menünün kaydırma kabından kaçışı JS'te (kirinti.js menuKonumla). */
#serit .s-sekmeler .k-dd.ray-grup { align-self: stretch; }
#serit .s-sekmeler .ray-grup > .k-dd-ac.sekme { height: 100%; padding: 0 12px; font-size: var(--fs-md);
  font-weight: 500; line-height: normal; color: var(--renk-soluk); background: none; border-radius: 0;
  border-bottom: 2px solid transparent; white-space: nowrap; }
#serit .s-sekmeler .ray-grup > .k-dd-ac.sekme:hover,
#serit .s-sekmeler .ray-grup.acik > .k-dd-ac.sekme { color: var(--renk-yazi); background: none; }
#serit .s-sekmeler .ray-grup > .k-dd-ac.sekme.aktif { color: var(--renk-yazi); font-weight: 600;
  border-bottom-color: var(--renk-aksan); }

/* Aşama bandı — kabuğun 3. şeridi (süreçli kayıt yüzeyleri basar, seritSifirla temizler). TEK BOY, İKİ GLİF
   (ADR G16 D14, adım 5 — patron onayı 2026-09-15): kompakt 27 → 40; `.belirgin` yalnız glifi büyütür, boyu değil. */
#serit-asama { border-top: 1px solid var(--renk-cizgi); height: var(--h-bant); padding: 0 var(--bo-5);
  display: flex; align-items: center; background: var(--renk-beyaz); }
#serit-asama > .asama-izleyici { flex: 1 1 auto; min-width: 0; }
@media (max-width: 760px) {   /* ≤760 boy sabit değil: kapsam/aşama sarar (taban kurallardan SONRA gelmeli) */
  #serit-kapsam { height: auto; min-height: var(--h-bant); flex-wrap: wrap; }
  #serit-asama { height: auto; min-height: var(--h-bant); }
}
@media (max-width: 640px) {
  #serit .serit-ic { padding: 0 var(--bo-3); }
  #serit .s-sag .btn { padding: 2px 7px; font-size: 11px; }
}

/* ── Giriş ekranı ── */
#giris { position: fixed; inset: 0; background: var(--renk-ana);
  display: flex; align-items: center; justify-content: center; z-index: 1000; }
#giris .kutu { background: var(--renk-beyaz); border-radius: var(--yaricap-lg);
  padding: var(--bo-6); width: 340px; box-shadow: var(--golge); }
#giris h1 { text-align: center; margin-bottom: var(--bo-5); font-size: var(--fs-xl); }
#giris .alan-grup { margin-bottom: var(--bo-3); }
#giris .hata { color: var(--renk-neg); font-size: var(--fs-sm); margin-top: var(--bo-2);
  min-height: 16px; }

/* ── Header sığdırma: üç kademe (2026-09-15, WCAG 1.4.10) ──
   Hamburger eşiği eskiden 820'ydi; G17'nin 10. bölümünden sonra ÖLÇÜLDÜ: 821–~1190 px arasında belge
   1182 px'e taşıyor, Çıkış ekran dışında kalıyordu (body overflow:hidden → kaydırma çubuğu bile yok);
   ~1190–1314 arası logo iki satır, "+ Yeni" sarılı, gruplar bitişik (DPR 1,25). Menü öğesi GİZLENMEZ —
   dar kademede hepsi açılır menüdedir.
   Ölçü DPR 1'de (glif ilerlemesi cihaz pikseline yuvarlanır → %100 ölçek %125'ten GENİŞ: nav 862 / 849,
   ad 7 / 6,4 px/kr), mock admin = 10 bölüm, IBM Plex: header dolgusu 32 · logo 132,6 · nav 862 (dolgu 16;
   10'da 742) · sağ grup 184 + ad (aralık 12; 8'de 172) · ad tavanı 18ch = 126 · base.css
   scrollbar-gutter 8 · grup arası en az 16+16:
     tam  : 32+132,6+862+184+126 +32 +8 = 1376,6  → ≥1381
     sıkı : 32+132,6+742+172+126 +32 +8 = 1244,6  → 1251–1380
     katlı: ≤1250 hamburger (logo → 8 → ☰ 18 → en az 16 → sağ grup; sağ grubun marjı boşluğu GARANTİ eder —
            yalnız hamburgerin auto marjı sıkışınca 0'a iniyordu: 375'te ☰ "Ctrl+K"ya bitişikti)
     dar  : 32+132,6+8+18+16+298 (Ctrl+K 52 · + Yeni 50 · ad 126 · Çıkış 46 · aralık 3×8) +8 = 512,6 → ≤520
            Ctrl+K ipucu gizlenir (dokunmatik genişlikte klavye kısayolu; palet "+ Yeni" ile açılır — o düğme
            #palet-ac'a click() gönderir, gizli düğmede de çalışır). Menü öğesi değil, ipucu.
            Altında: ≤452'de logo ve ad sarar (52 px içinde); düğmeler sarmaz. Taşmasız alt sınır =
            32+83,4 (logo en dar)+8+18+16+50+8+ad kelimesi+8+46 +8 = 277,4 + en uzun ad kelimesi
            (aktif kullanıcılarda ≤10 kr = 70 → ≥348 px; 2026-09-15 sunucu ölçümü).
     mini : ≤347 ad gizlenir — WCAG 1.4.10'un ölçütü 320 px; ad görünürken 320'de Çıkış dolguya 4–11 px
            giriyordu. Adsız: 32+132,6+8+18+16+50+8+46 +8 = 318,6 → 320'de logo bile tek satır.
            ⚠ Öncül "en uzun ad kelimesi ≤10 kr": daha uzun adlı kullanıcı açılırsa 348 eşiği yükselir.
   Kısıtlı rol daha az bölüm görür → onun için eşik gereğinden erken katlar (zararsız yön).
   ⚠ Bölüm EKLENİR ya da etiketi uzarsa eşikler YENİDEN ÖLÇÜLÜR (DPR 1'de 1251 · 1381 · 521 · 320'de belge taşmamalı).
   Pay 4,4 / 6,4 / 8,4 / 1,4 px — TEK HARF (~7 px) eşiği bozar. ÖLÇÜ TABANI (bekçi kabuk_kontrol.py D11-h index.html'den
   sayar, tutmazsa js_kontrol DURUR; `#kullanici-ad` sayılmaz). Değişince önce scripts/kabuk_olc.js HEADER
   probu 1251 + 1381 + 521 + 320'de (DPR 1), eşikleri formülle yeniden hesapla, SONRA sayıyı güncelle:
     NAV_BOLUM_SAYISI: 10 · NAV_ETIKET_KR: 85 · SAG_OGE_SAYISI: 3 · SAG_ETIKET_KR: 17 · LOGO_OGE_SAYISI: 1 · LOGO_ETIKET_KR: 20
   İçerik ızgarası/dolgusu header'a bağlı DEĞİL — 820'de ayrı kalır. */
@media (max-width: 1380px) {
  .nav-btn { padding: 6px 10px; }
  .hdr-sag { gap: 8px; }
}
@media (max-width: 1250px) {
  nav.ana { position: fixed; top: var(--header-h); left: 0; right: 0; flex-direction: column;
    background: var(--renk-ana-2); padding: var(--bo-2); gap: 0; z-index: 90; display: none; }
  nav.ana.acik { display: flex; }
  .nav-btn { width: 100%; text-align: left; padding: 6px 16px; }
  /* sağa itme hamburgerde: space-between onu logo ile sağ grup ARASINA ortalıyordu */
  .hamburger { display: inline-flex !important; margin: 0 auto 0 var(--bo-2); }
  .hdr-sag { margin-left: var(--bo-4); }   /* ☰ ile sağ grup arası en az 16 (auto marj sıkışınca 0'dı) */
}
/* Çıplak `.hdr-sag` seçicisi aşağıdaki bloklara YAZILMAZ: scripts/kabuk_olc.js sıkı kademeyi onu taşıyan @media'dan okur */
@media (max-width: 520px) {
  #palet-ac { display: none; }
}
@media (max-width: 347px) {
  .hdr-sag .ad { display: none; }
}

/* ── Mobil ── */
@media (max-width: 820px) {
  /* minmax(0,…): çıplak 1fr en uzun tutar kadar büyür, kutu sayfayı yana taşırıyordu (Cariler, 2026-10-30) */
  .izgara.k5, .izgara.k4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .izgara.k3, .izgara.k2 { grid-template-columns: 1fr; }
  main#icerik { padding: var(--bo-3); }
}
.hamburger { display: none; background: transparent; border: none; color: #fff;
  font-size: 20px; cursor: pointer; }
