/* Nun.UiKit.Web global stilleri — host App.razor'da
   _content/Nun.UiKit.Web/nun-uikit.css olarak eklenir. */

/* DevExpress'in kendi CSS'i bu iç flex container'lara min-height: 0 vermez;
   klasik "flex item içerik boyutunun altına küçülmez" tuzağı. Bu olmadan
   DxPopup içindeki DxGrid tüm satırlara göre büyür, scrollbar çıkmaz.
   Kaldırmayın (önceki deneyimden edinilmiş ders). */
.dxbl-modal-content {
    min-height: 0 !important;
}

.dxbl-modal-body {
    min-height: 0 !important;
}

.dxbl-grid {
    min-height: 0 !important;
}

/* Odaklı grid satırında salt-okunur (display-view) checkbox tiki temada accent renginde
   kalır; odaklı satırın bandı da aynı accent ailesinden olduğundan tik bandın içinde
   kaybolur (2 Ağu 2026 — Cari listesindeki Aktif kolonunda yaşanan gerçek hata; canlıda iki
   renk birebir aynı ölçüldü). Satır metni gibi ikonu da satırın kendi metin rengine bağlarız —
   accent'ten bağımsız işlevsel düzeltme, tema görünümü ezmesi değil. */
.dxbl-grid-focused-row .dxbl-checkbox .dxbl-image {
    color: inherit;
    fill: currentColor;
}

/* Gömülü listeli form sekmesi (26-27 Tem 2026 geri bildirimi): form içine gömülen
   grid popup gövdesini uzatmaz — sekme içeriği popup boyundan türeyen sabit yükseklik alır,
   grid kendi scroll'unu kullanır (önceki deneyimden ders: grid'e yükseklik form layout
   zincirinden değil, kaptan verilir — DxFormLayout kimlik alanıyla sekmeleri aynı sarmal
   .dxbl-row'da tuttuğundan flex büyütme satır aralarına boşluk dağıtır, o yol çıkmaz).
   Hesap: popup calc(100vh - 100px) + başlık/kimlik alanı/sekme başlığı/footer payları ≈ 400px.
   Yalnız içinde DxGrid olan sekme içeriğini etkiler (:has) — alan sekmeleri ve gridsiz formlar
   eski davranışında, belge editörü etkilenmez (satır tablosu DxGrid değil). */
/* Sekme içeriği de grupların çizgi görünümüyle çerçevelenir: sekmeli formda alanlar,
   gruplu düz formdaki gibi çerçeve içinde durur — RecordForm gövde çerçevesinin sekme karşılığı. */
/* Seçicideki .dxbl-fl basamağı şart: tema kuralı (.dxbl-fl .dxbl-fl-tab-content, 14px padding)
   sonra yüklendiğinden eşit spesifiklikte kazanıyordu (27 Tem 2026 ölçümü). */
.recordform-body .dxbl-fl .dxbl-fl-tab-content {
    border: 1px solid var(--nun-border, #dcdbd9);
    border-radius: 4px;
    margin-top: 10px;
    padding: 10px;
}

/* Çerçeve boşluk normalizasyonu (27 Tem 2026 canlı ölçüm turu): iç içe çizgiler arasında her
   yönde 10px — popup gövdesi ↔ form çerçevesi ↔ sekme çerçevesi ↔ grid çizgisi. Tema üç farklı
   boşluk kullanıyordu (modal 6/24/24, sekme içi 14, tab item gutter'ı 16 ≠ satırın -12'si → +4
   kayma); !important yalnız modal'da (tema kuralı spesifiklikle yenilemedi — min-height ailesi
   gibi işlevsel istisna). Tab item gutter'ı satırla eşitlenir ki sekme çizgisi kimlik alanının
   alanlarıyla aynı hattan başlasın. */
.dxbl-modal .dxbl-modal-body:has(.recordform-container) {
    padding: 10px !important;
}

.recordform-body .dxbl-fl > .dxbl-row > .dxbl-fl-gt {
    padding-left: 12px;
    padding-right: 12px;
    /* Son satır olan sekme kabının 12px alt marjı form gövdesini görünmez taşırıyordu
       (scrollbar'ın kaynağı) — alt boşluk zaten gövde padding'inden gelir. */
    margin-bottom: 0;
}

.recordform-body .dxbl-fl-tab-content .listlayout-toolbar-container {
    margin: 0 0 10px 0;
}

.recordform-body .dxbl-fl-tab-content .listlayout-component-container {
    padding: 0;
}

.recordform-body .dxbl-fl-tab-content:has(.dxbl-grid) {
    /* Pay canlı ölçümle: popup calc(100vh-100px) − başlık/kimlik alanı/sekme başlığı/footer
       + 10px'lik boşluklar (27 Tem 2026 — gövde taşması 0 hedefi). */
    height: calc(100vh - 382px);
    min-height: 240px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* Gömülü listenin kabı sekme içinde saf flex çocuğudur: kendi height:100%'ü (tam sayfa kipinin
   kuralı) burada padding'i yutuyordu — grid alt çizgisi sekme çizgisine yapışıyordu. */
.recordform-body .dxbl-fl-tab-content:has(.dxbl-grid) > .listlayout-container {
    height: auto !important;
    flex: 1 1 0;
    min-height: 0;
}

/* Sekme içeriğinin iç sarmalı (.dxbl-row) tepeden -12px marj taşır — %100 zincirini 12px
   şişirip grid'i alt çizgiye bindiriyordu (27 Tem 2026 ölçüm turu); grid'li sekmede sıfırlanır.
   Alt 10px boşluk bileşen kabından verilir (kırpılmadan görünen tek yer — .listlayout-container
   basamağı scoped bundle'ı spesifiklikle yenmek için). */
.recordform-body .dxbl-fl-tab-content:has(.dxbl-grid) > .dxbl-row {
    margin-top: 0;
}

.recordform-body .dxbl-fl-tab-content:has(.dxbl-grid) .listlayout-container .listlayout-component-container {
    padding-bottom: 10px;
}

.recordform-body .dxbl-fl-tab-content:has(.dxbl-grid) > * {
    flex: 1 1 auto;
    min-height: 0;
}

/* Kabın içindeki DevExpress katmanları (canlı DOM ölçümüyle bulundu — 27 Tem 2026): sekme
   içeriği item'ı ayrı bir .dxbl-row + .dxbl-fl-tab-item + .dxbl-fl-ctrl zinciriyle sarar; item
   flex 0 0 auto / min-height auto olduğundan kaptan taşıyordu (993px > 905px kap — grid
   kırpılıyor, scroll oluşmuyordu). height: 100% + min-height: 0 zinciri boyu kaba bağlar;
   ctrl flex kolona döner ki listlayout-container (flex: 1) kalanı doldursun. */
.recordform-body .dxbl-fl-tab-content:has(.dxbl-grid) .dxbl-fl-tab-item {
    min-height: 0;
    height: 100%;
}

.recordform-body .dxbl-fl-tab-content:has(.dxbl-grid) .dxbl-fl-tab-item > .dxbl-fl-ctrl {
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* Küçük ekranda (mobil) popup'lar tam ekran. CssClass, popup'ın dialog elemanına
   (<dxbl-modal-dialog>) uygulanır; DevExpress bu elemana varsayılan 28px margin verip
   viewport'un ortasına yerleştirir. Genişlik/yükseklik zaten 100vw/100vh (inline) olduğundan
   tek yapmamız gereken margin'i sıfırlayıp taşmayı önlemek. */
.nun-popup-fullscreen {
    margin: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    max-width: 100vw !important;
    max-height: 100vh !important;
    border-radius: 0 !important;
}

/* ListLayout küçük-ekran menü popup'ı (alt yapışık tam genişlik "bottom sheet"). Kurallar
   DxPopup'ın CssClass/HeaderCssClass/BodyCssClass API'sinden bağlanır; popup portal DOM'unda
   (bileşen ağacının dışında) çizildiğinden scoped .razor.css işlemez — tanımlandığı yer bu
   global dosyadır (ListLayout.razor'daki inline <style> bloğundan taşındı; inline style
   yasağı, 22 Tem 2026). */
.listlayout-popupmenu-container {
    width: 100vw !important;
    min-width: 100vw !important;
    max-width: 100vw !important;
    height: 70vh;
    margin: 0px !important;
    padding: 0px !important;
    left: 0px !important;
    bottom: 0px !important;
    position: absolute !important;
}

.listlayout-popupmenu-header-container {
    margin: 0px !important;
    padding: 10px !important;
}

.listlayout-popupmenu-body-container {
    padding: 0px 10px 10px 10px !important;
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}

/* ReportViewer wrapper'ı: native viewer yüksekliğini kabından alır; kap,
   bulunduğu gövdeyi (popup body / sayfa) doldurur. min-height: 0 flex tuzağı kuralıyla aynı
   aile — viewer'ın iç scroll'u kabı taşmasın. */
.nun-report-viewer {
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    /* Çok sayfalı belgede viewer kabı aşarsa kap kaydırır (26 Tem 2026 — birleşik basımda içerik
       taşıyor, scrollbar yoktu; viewer'ın iç scroll zinciri kendini kurmadığında son güvence). */
    overflow: auto;
}

.nun-report-viewer > * {
    flex: 1 1 auto;
    min-height: 0;
}

/* Pivot wrapper'ı: viewer wrapper'ıyla aynı aile — pivot yüksekliğini
   kabından alır, iç scroll kabı taşmaz. */
.nun-pivot {
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: auto;
}

.nun-pivot > * {
    flex: 1 1 auto;
    min-height: 0;
}

/* Dinamik grid wrapper'ı (Grid tipi rapor çalıştırması): pivot wrapper'ıyla
   aynı aile — grid yüksekliğini kabından alır, iç scroll kabı taşmaz. */
.nun-dynamicgrid {
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: auto;
}

.nun-dynamicgrid > * {
    flex: 1 1 auto;
    min-height: 0;
}
