﻿/* ═══════════════════════════════════════════════════════════════════════════════════════
   ERP EKRAN İSKELETİ — ortak stiller (web altyapısı, 2026-09-05)
   📖 docs/spec-web-altyapi-v1.md §7.13

   🔴 NEDEN VAR — ÖLÇÜLDÜ: bu dosya yazılmadan önce 10 ERP sayfası aynı kuralları kendi
   satır-içi <style> bloğunda taşıyordu (toplam 182 satır). `.erp-tablo` on dosyada, `.ozet`
   on dosyada, `.uyari-kirmizi` on dosyada tekrar ediliyordu. Her yeni ekran borcu biraz daha
   büyütüyordu; bir renk/ölçü değişikliği 10 dosyaya dokunmak demekti.

   ⚖️ BİLİNÇLİ KABUL: birleştirme sırasında birkaç sayfada 2-4 px'lik farklar tekleşti
   (ör. `.arac-cubugu` boşluğu 0,5rem ⟂ 0,75rem, `.ozet` kenar boşluğu iki varyant). Bu
   ortak dilin AMACIDIR, yan etkisi değil. Sayfaya özel gerçek bir ihtiyaç varsa sayfa kendi
   <style>'ında ÜZERİNE yazar — ama önce "gerçekten farklı olmalı mı" diye sor.

   🆕 2026-09-19 — GÖRSEL DİL GELDİ, bu not GÜNCELLENDİ. Eskiden burada "buraya marka rengi
   gömme, değerler bilinçli nötr" yazıyordu (Serhat, 2026-09-05: "önce iskelet, sonra görsel").
   Serhat 2026-09-19'da görsel sırayı öne aldı ⇒ renk/ölçü değerleri artık **`fora-tema.css`
   token'larından** gelir (`var(--fora-*)`).
   🔴 BURAYA YENİ BİR HEX YAZMA. Gerekiyorsa önce token'ı `fora-tema.css`'e ekle (kontrastı
   ölçerek), sonra burada `var(--fora-…)` olarak kullan. Bu dosya İSKELET olmayı sürdürür:
   yerleşim/ölçü/davranış burada, renk sözlüğü orada.
   ═══════════════════════════════════════════════════════════════════════════════════════ */

/* ── Araç çubuğu: filtre/seçenek satırı ── */
.arac-cubugu {
    display: flex;
    gap: .75rem;
    align-items: center;
    flex-wrap: wrap;
    margin: .75rem 0;
}

.arac-cubugu label {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: .9rem;
}

.arac-cubugu select,
.arac-cubugu input {
    padding: .25rem;
}

/* Onay kutusu + etiket ikilisi (araç çubuğu içinde ya da dışında). */
.secim {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: .9rem;
}

.btn-getir {
    padding: .4rem .9rem;
}

.arama-kutusu {
    padding: .4rem .6rem;
    min-width: 280px;
}

/* ── Özet satırı: "N kayıt · kaynak · süre" ── */
.ozet {
    opacity: .75;
    margin: .25rem 0 .5rem;
}

/* ── Yardımcı/ikincil metin ──
   🔑 Boş sonuç açıklamalarında da bu kullanılır; sönük ama OKUNUR olmalı. Bu deponun
   boş-sonuç disiplini (docs/yz_bos_sonuc_tuzaklari.md) sebebin GÖRÜNMESİNİ şart koşuyor. */
.not {
    opacity: .7;
    font-size: .85rem;
}

/* 🆕 Sepet satırının ALT BİLGİSİ (parti/lot · seri no) — 2026-09-21.
   Ad ile aynı hücrede ama ikinci satırda: MAUI hücresinin düzeni bu. */
/* 🆕 Serbest metin alanı (yaz-boz tahtası) — 2026-09-21. Giriş kutularıyla aynı dil;
   yükseklik satır sayısından gelir, elle sürüklenebilir. */
.fora-metin-alani {
    inline-size: 100%;
    padding: .45rem .6rem;
    border: 1px solid var(--fora-ayrac);
    border-radius: 4px;
    background: var(--fora-yuzey);
    color: inherit;
    font: inherit;
    resize: vertical;
}

.sepet-alt-bilgi {
    font-size: .78rem;
    margin-top: .15rem;
}

/* 🆕 dalga 130: eski düzen renk/beden — karşılama hücresinde kırılım yerine sebep (web'de karşılanamaz). Sarı uyarı renkleri. */
.sepet-alt-bilgi[data-alan="renk-beden-eski"] {
    color: var(--fora-uyari-sari-metin);
    font-weight: 600;
}

/* 🆕 Dalga 63: MAUI satır arka planı (onaylama/palet okutma durumu: sarı = kısmen, yeşil = tamam).
   MAUI rengi TAM doygun basıyor; masaüstü tablosunda metin okunaklı kalsın diye %30 ton. */
.erp-tablo tbody tr.sepet-renkli,
.erp-tablo tbody tr.sepet-renkli:hover {
    background: color-mix(in srgb, var(--satir-arkaplan) 30%, transparent);
}

/* 🆕 Dalga 63: sepet alt şeridi — MAUI alt ızgarası (toplam miktar · barkod okuma sayısı). */
.sepet-alt-serit {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: .25rem 1.25rem;
    margin-block-start: .4rem;
    font-weight: 600;
}

/* ── Liste tablosu ── */
.erp-tablo {
    border-collapse: collapse;
    width: 100%;
    font-size: .92rem;
}

.erp-tablo thead tr {
    text-align: start;
    border-bottom: 2px solid var(--fora-ayrac-koyu);
}

.erp-tablo th,
.erp-tablo td {
    padding: .32rem .5rem;
}

.erp-tablo tbody tr {
    border-bottom: 1px solid var(--fora-ayrac);
}

.erp-tablo tfoot tr {
    border-top: 2px solid var(--fora-ayrac-koyu);
}

.erp-tablo .sag {
    text-align: end;
}

.erp-tablo tr.pasif {
    opacity: .55;
}

/* Tiklanabilir satir (karsilama): imlec + uzerine gelince zemin. Ayrim yalniz renk DEGIL --
   imlec degisimi renk gormeyen kullanicida da "bu satira tiklanabilir" diyor. */
.erp-tablo tbody tr.tiklanir {
    cursor: pointer;
}

.erp-tablo tbody tr.tiklanir:hover {
    background: var(--fora-satir-hover);
}

/* ── Detay tablosu: "etiket → değer" iki sütun ── */
.detay-tablo {
    border-collapse: collapse;
    font-size: .95rem;
}

.detay-tablo tr {
    border-bottom: 1px solid var(--fora-ayrac);
}

.detay-tablo th {
    text-align: start;
    padding: .3rem .9rem .3rem 0;
    opacity: .7;
    font-weight: 600;
    vertical-align: top;
    white-space: nowrap;
}

.detay-tablo td {
    padding: .3rem 0;
}

/* ── Uyarı kutuları ──
   🔴 İKİ RENK İKİ ANLAM, karıştırma:
      kırmızı = İŞLEM BAŞARISIZ (sorgu koşmadı / oturum yok / sunucu hatası)
      sarı    = işlem başarılı ama SONUÇ EKSİK/GÖSTERİLEMİYOR (ör. personel kodu tanımsız)
   Sarıyı "kayıt yok" için kullanma; o durum düz metindir. */
.uyari-kirmizi {
    padding: 12px;
    border: 1px solid var(--fora-yikici);
    border-radius: var(--fora-radius);
    background: var(--fora-uyari-kirmizi-zemin);
    color: var(--fora-uyari-kirmizi-metin);
}

.uyari-sari {
    padding: 12px;
    border: 1px solid var(--fora-vurgu-para);
    border-radius: var(--fora-radius);
    background: var(--fora-uyari-sari-zemin);
    color: var(--fora-uyari-sari-metin);
}

/* Sonuç altı açıklama (boş sonuç gerekçesi, sayım notu…). */
.sonuc-notu {
    opacity: .7;
    font-size: .85rem;
}

/* ── Sayfalama ── */
.sayfalama {
    display: flex;
    gap: .75rem;
    align-items: center;
    margin-top: .75rem;
}

/* ── Kutucuklar (panel/dashboard) ── */
.kutular {
    display: flex;
    gap: .75rem;
    flex-wrap: wrap;
    margin: 1rem 0;
}

.kutu {
    min-width: 130px;
    padding: .8rem 1rem;
    border: 1px solid var(--fora-kart-cerceve);
    border-radius: 8px;
    background: var(--fora-yuzey);
    box-shadow: var(--fora-kart-golge);
    display: flex;
    flex-direction: column;
    gap: .2rem;
}

.kutu.vurgu {
    border-color: var(--fora-yikici);
    background: var(--fora-uyari-kirmizi-zemin);
}

.kutu .sayi {
    font-size: 1.6rem;
    font-weight: 700;
}

.kutu .etiket {
    font-size: .82rem;
    opacity: .7;
}

/* ── Görev satırı (web parite dalga 109-110) — MAUI `GorevSatirGorunumu` renkleri; web `Services/GorevSatirGorunumu` sınıf adlarını verir.
      Panelin kısa satırı (`.gs-satir`) + listenin kart satırı (`.gs-kart`). Yön-bağımsız (inline/block). ── */
.gs-satir { display: flex; align-items: center; gap: .6rem; padding: .45rem .5rem; border: 1px solid #eee; border-radius: 10px;
            background: #fafafa; color: inherit; text-decoration: none; }
.gs-satir:hover, .gs-kart:hover { background: #f3ede6; }
.gs-serit { inline-size: 4px; align-self: stretch; border-radius: 2px; flex-shrink: 0; }
.gs-serit.o1 { background: #cc2222; }
.gs-serit.o2 { background: #ff7800; }
.gs-serit.o3 { background: #8a8079; }
.gs-serit.o4 { background: #a79e96; }
.gs-serit.o5 { background: #c8c8c8; }
.gs-bilgi { display: flex; flex-direction: column; gap: .1rem; flex: 1; min-inline-size: 0; }
.gs-baslik { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gs-alt { font-size: .75rem; color: #9e9e9e; white-space: pre; }
.gs-durum, .gs-oncelik, .gs-tur, .gs-asama { font-size: .72rem; font-weight: 700; padding: .2rem .5rem; border-radius: 4px; white-space: nowrap; flex-shrink: 0; }
.gs-durum.beklemede { color: #c97a0e; background: #fbeedf; }
.gs-durum.atandi { color: #8a6f4a; background: #f3ede6; }
.gs-durum.devralindi { color: #ff7800; background: #fbeedf; }
.gs-durum.yapiliyor { color: #4e9a00; background: #eaf2dd; }
.gs-durum.duraklatildi { color: #c0532b; background: #f7e7de; }
.gs-durum.incelemede { color: #988114; background: #f3edd8; }
.gs-durum.tamamlandi { color: #2e7d00; background: #eaf2dd; }
.gs-durum.iptal, .gs-durum.baskasi, .gs-durum.diger { color: #8a8079; background: #efedeb; }
.gs-durum.reddedildi { color: #c0392b; background: #f7e4de; }
.gs-oncelik { background: #f3ede6; }
.gs-oncelik.o1 { color: #cc2222; }
.gs-oncelik.o2 { color: #ff7800; }
.gs-oncelik.o3 { color: #8a8079; }
.gs-oncelik.o4 { color: #a79e96; }
.gs-oncelik.o5 { color: #9e9e9e; }
.gs-tur { color: #6d6459; background: #efedeb; }
.gs-tur.asamali, .gs-asama { color: #988114; background: #f3edd8; }

.gs-liste { display: flex; flex-direction: column; gap: .5rem; margin-block: .5rem; }
.gs-kart { display: flex; border: 1px solid #eee; border-radius: 12px; background: #fff; color: inherit; text-decoration: none; overflow: hidden; }
.gs-kart > .gs-serit { inline-size: 5px; border-radius: 0; }
.gs-kart-govde { display: flex; flex-direction: column; gap: .4rem; padding: .6rem .75rem; flex: 1; min-inline-size: 0; }
.gs-ust { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem; }
.gs-etiket { font-size: .68rem; padding: .1rem .4rem; border-radius: 3px; background: #efe9e3; color: #8a8079; }
.gs-etiket.kod { font-weight: 700; color: #6d6459; }
.gs-etiket.tekrar { color: #438f00; background: #eaf2dd; }
.gs-etiket.bagli { color: #e65100; background: #fff3e0; }
.gs-zaman { font-size: .68rem; color: #b7afa6; margin-inline-start: auto; }
.gs-kart .gs-baslik { font-size: 1rem; color: #212121; white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.gs-aciklama { font-size: .78rem; color: #8a8079; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gs-cipler { display: flex; flex-wrap: wrap; gap: .35rem; }
.gs-cubuk { block-size: 4px; border-radius: 2px; background: #eee; overflow: hidden; }
.gs-cubuk-dolu { block-size: 100%; background: #988114; }
.gs-kisiler { display: flex; flex-direction: column; gap: .1rem; font-size: .72rem; }
.gs-olusturan { color: #8a6f4a; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gs-atananlar { color: #8a8079; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gs-tarih { font-size: .72rem; font-weight: 700; color: #757575; }
.gs-tarih.gecikmis { color: #cc2222; }
.gs-gecikme { font-size: .72rem; font-weight: 700; color: #cc2222; background: #f7e4de; border-radius: 8px; padding: .3rem .6rem; }


/* ═══════════════════════════════════════════════════════════════════════════════════════
   POPUP (seçim) — MAUI `GenelListeSecimi` deseninin web karşılığı
   📖 docs/spec-web-altyapi-v1.md §7.13

   ⚠️ Zemin `position: fixed` ve KÖK yığın bağlamında (`MainLayout` içinde `.page` DIŞINDA).
   🔴 KATMAN SIRASI (ölçüldü 2026-09-24, web parite dalga 55): ERP sayfalarında `.page` bir yığın
   bağlamı DEĞİL (z-index auto · position relative · transform yok) ⇒ sayfa İÇİNDEKİ sabit modallar
   (satır formu · toplu/dip iskonto · sipariş reddi) da kök bağlamda yarışır. Kural:
     sayfa içi modal  = 1070   (`style="z-index:1070"`)
     PopupKabi        = 1080 + derinlik*10  (seçim/sayı/şifre pencereleri — HER ZAMAN üstte)
   Önceden sayfa içi modaller 1200'dü: formdan açılan seçim penceresi formun ARKASINDA kaldı ve tık
   formun zeminine çarpıp formu kapattı. Kapı: `SayfaIciModalKatmaniKapilariTests`.
   ═══════════════════════════════════════════════════════════════════════════════════════ */
.fora-popup-zemin {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .45);
    display: flex;
    align-items: center;
    justify-content: center;
    /* z-index SATIR İÇİNDE veriliyor (1080 + derinlik*10): üst üste popup'ta ikincisi
       birincinin ÜZERİNE binmeli. Buradaki değer yalnız yedek. */
    z-index: 1080;
    padding: 1rem;
}

.fora-popup {
    background: var(--fora-yuzey);
    border-radius: 8px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, .3);
    display: flex;
    flex-direction: column;
    width: 100%;
    overflow: hidden;
}

.fora-popup-baslik {
    display: flex;
    align-items: center;
    justify-content: space-between;
    /* 🆕 dalga 119: × başlığa girdi ⇒ komşu öğeler (kısayol satırı · ×) yapışmasın. İki çocuklu `space-between` başlıkta görünür fark yok. */
    gap: .75rem;
    padding: .5rem .75rem;
    /* MAUI'nin popup başlık bandı (`PopupBaslikBack`/`PopupBaslik`) — 2026-09-19'da
       token'a bağlandı; eskiden #2c2c2c/#d3d3d3 idi (mobille ayrı diller konuşuyordu). */
    background: var(--fora-baslik-zemin);
    color: var(--fora-metin-acik);
    font-weight: 600;
}

/* 🆕 dalga 119 — başlıkta × (her pencere) + çoklu seçimde ✓ (EN SAĞDA): MAUI ortak `HeaderPopup`. × Bootstrap `btn-close-white`
   (bant koyu) — sayfa içi modallerin kalıbı. ✓ MAUI `ikon_onayla` yeşili ⇒ başarı token'ı; dikey hiza başlığın `baseline`'ından bağımsız. */
.fora-popup-baslik .popup-kapat {
    flex: 0 0 auto;
    align-self: center;
}

.secici-baslik-onay {
    flex: 0 0 auto;
    align-self: center;
    padding: 0 .55rem;
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.5;
    color: var(--fora-basari-zemin);
    border: 1px solid var(--fora-basari-zemin);
    background: transparent;
}

.secici-baslik-onay:hover,
.secici-baslik-onay:focus-visible {
    color: var(--fora-basari-metin);
    background: var(--fora-basari-zemin);
}

/* Fotoğraf büyütmenin başlık bandı yok ⇒ × perdenin köşesinde (yön bağımsız). */
.stok-fotografi-zemin .foto-kapat {
    position: absolute;
    inset-block-start: 1rem;
    inset-inline-end: 1rem;
}

.fora-popup-govde {
    padding: .75rem;
    display: flex;
    flex-direction: column;
    gap: .5rem;
    min-height: 0;   /* flex çocuğunun kaydırılabilmesi için ŞART */
}

/* Arama + yan eylem (ör. "Filtre") aynı satırda; yan eylem ÜST ÜSTE popup açar. */
.fora-popup-ust-satir {
    display: flex;
    gap: .5rem;
    align-items: center;
}

.fora-popup-ust-satir .fora-popup-arama {
    flex: 1 1 auto;
}

.fora-popup-yan {
    white-space: nowrap;
}

.fora-popup-arama,
.fora-popup-miktar input {
    padding: .4rem .6rem;
    width: 100%;
}

/* 🆕 dalga 78: aramasız popup (MAUI `AramaGoster = false`) — kutu GÖRÜNMEZ ama odakta kalır: ok · Enter · Esc onun işleyicisinde. */
.fora-popup-arama.arama-gizli {
    position: absolute;
    inline-size: 1px;
    block-size: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

.fora-popup-miktar {
    display: flex;
    flex-direction: column;
    gap: .2rem;
    font-size: .85rem;
    opacity: .85;
}

/* 🔴 Sabit yükseklik + overflow ŞART: <Virtualize> yalnız kaydırılabilir bir kapta çalışır. */
.fora-popup-liste {
    overflow-y: auto;
    max-height: 420px;
    border: 1px solid var(--fora-ayrac);
    border-radius: var(--fora-radius);
}

.fora-popup-satir {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .35rem .6rem;
    height: 34px;          /* <Virtualize ItemSize="34"> ile AYNI olmalı, yoksa kaydırma kayar */
    box-sizing: border-box;
    border-bottom: 1px solid var(--fora-ayrac);
    cursor: pointer;
}

.fora-popup-satir:hover {
    background: var(--fora-satir-hover);
}

.fora-popup-satir.secili {
    background: var(--fora-satir-secili);
}

.fora-popup-kod {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: .85rem;
    opacity: .8;
    white-space: nowrap;
}

.fora-popup-isim {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.fora-popup-alt {
    display: flex;
    justify-content: flex-end;
    gap: .5rem;
    padding: .6rem .75rem;
    border-top: 1px solid var(--fora-ayrac);
    background: var(--fora-yuzey-alt);
}


/* ═══════════════════════════════════════════════════════════════════════════════════════
   SEKME KABUĞU (2026-09-05) — 📖 docs/spec-web-altyapi-v1.md §7.16
   🔴 `.sekme-govde.gizli` KALDIRILMAZ, GİZLENİR: render ağacından çıkarılsa bileşen dispose
   olur, durum kaybolur ve sekmeye dönünce veri baştan çekilir (satış analizi 50 sn).
   ═══════════════════════════════════════════════════════════════════════════════════════ */
/* 🔄 2026-09-25 (Serhat: "yapay zekanın yazı yazma çubuğu sayfaya sığmıyor, kaydırmak gerekiyor"): şeridin yüksekliği
   SABİT ve tek değişkende — viewport'a göre yükseklik hesaplayan sayfalar (YZ sohbeti: `Home.razor`) onu DÜŞER. Ölçüldü
   (1.280 × 905): sohbet `calc(100vh - 1.1rem)` = 887px idi, şerit 37,5px ⇒ belge 942px, yazı alanının altı 933px'de
   (ekran dışı). Sekmeler taşarsa kaydırma çubuğu İNCE ve şeridin içinde (yükseklik değişmez). */
:root { --sekme-cubugu-boyu: 2.4rem; }

/* 🆕 2026-09-25 (Serhat toparlama 3 md.4: "sağ tarafta … padding/margin'leri biraz küçültebiliriz … ya da komple yapıştırıp bir
   çizgi ile menüden ayırabiliriz"): içerik boşlukları TEK yerde. Sekme satırı negatif kenarla içerik alanının üst-sol-sağ
   kenarına YAPIŞIR (menüyle arası çizgi — MainLayout); gövdeler küçük yan boşlukla başlar. Diğer sayfalar (yönetim…) aynı
   küçük boşluğu alır. ⚠️ Viewport'a göre yükseklik hesaplayan sayfa (YZ sohbeti, Home.razor) şerit + alt boşluğu DÜŞER. */
:root {
    --icerik-bosluk-ust: .5rem;
    --icerik-bosluk-yan: .9rem;
    --sekme-satiri-bosluk: .5rem;
}

.sekme-satiri {
    display: flex;
    align-items: stretch;
    margin: calc(-1 * var(--icerik-bosluk-ust)) calc(-1 * var(--icerik-bosluk-yan)) var(--sekme-satiri-bosluk);
    background: var(--fora-sekme-serit);
}

.sekme-satiri .sekme-cubugu {
    flex: 1 1 auto;
    min-width: 0;
}

/* 🆕 md.5: sol menüyü gizle/göster — şeridin başında, şeritle AYNI zemin ve alt çizgi (şerit kayarken yerinde kalır). */
.menu-dugmesi {
    flex: 0 0 auto;
    width: 2.4rem;
    border: 0;
    border-bottom: 1px solid var(--fora-ayrac-koyu);
    background: transparent;
    color: var(--fora-sekme-metin);
    font-size: 1.1rem;
    line-height: 1;
    cursor: pointer;
}
.menu-dugmesi:hover { background: var(--fora-satir-hover); }
.menu-dugmesi:focus-visible { outline: 2px solid var(--fora-aksan); outline-offset: -2px; }
/* Dar ekranda menü zaten üstte ve kendi hamburger düğmesiyle açılıp kapanıyor. */
@media (max-width: 640.98px) { .menu-dugmesi { display: none; } }

.sekme-cubugu {
    display: flex;
    align-items: stretch;
    gap: 2px;
    border-bottom: 1px solid var(--fora-ayrac-koyu);
    background: var(--fora-sekme-serit);
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: thin;
    height: var(--sekme-cubugu-boyu);
    box-sizing: border-box;
    padding: 0 .25rem;
}

.sekme {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .45rem .7rem;
    font-size: .88rem;
    white-space: nowrap;
    cursor: pointer;
    border: 1px solid transparent;
    border-bottom: none;
    border-radius: 6px 6px 0 0;
    color: var(--fora-sekme-metin);
    max-width: 240px;
}

.sekme:hover { background: var(--fora-satir-hover); }

/* Etkin sekme = "şeritte açılmış klasör kutusu" (MAUI deseni B′): kutu SAYFA renginde,
   üstünde aksan işareti. MAUI'de işaret ALT çizgidir; klasör metaforunda alt kenar
   zaten delindiği için işaret ÜSTE alındı. */
.sekme.etkin {
    background: var(--fora-sayfa);
    border-color: var(--fora-ayrac-koyu);
    color: var(--fora-sekme-metin-secili);
    box-shadow: inset 0 3px 0 var(--fora-aksan);
    font-weight: 600;
    /* Etkin sekme alt çizgiyi "deler" — klasik sekme hissi. */
    margin-bottom: -1px;
    padding-bottom: calc(.45rem + 1px);
}

/* Yapay zekâ sekmesi: kapatılamaz olduğu görünsün. */
.sekme.sabit .sekme-baslik { font-weight: 600; }

.sekme-baslik {
    overflow: hidden;
    text-overflow: ellipsis;
}

.sekme-kapat {
    border: none;
    background: transparent;
    line-height: 1;
    font-size: 1.05rem;
    color: var(--fora-notr-cerceve);
    padding: 0 .15rem;
    border-radius: 4px;
}

.sekme-kapat:hover { background: var(--fora-yuzey-alt); color: var(--fora-metin-koyu); }

/* 🆕 2026-09-25 (Serhat toparlama 3 md.6): başlığın yanında iş durumu — `*` kaydedilmemiş satır (aksan), `✓` kaydedildi
   (pozitif yeşil). Mevcut tonlar; anlam `title` ipucunda (yerelleştirilmiş). */
.sekme-durum { font-weight: 700; margin-inline-start: -.2rem; }
.sekme-durum.kirli { color: var(--fora-aksan); }
.sekme-durum.kaydedildi { color: var(--fora-sayi-pozitif); }

/* 🆕 md.6: onay penceresi dar ve ortada (ızgara seçicinin 980px'i bir soru için fazla); yıkıcı düğme `fora-btn-yikici`. */
.fora-popup.onay-sorusu { width: 440px; max-width: 92vw; }
/* 🆕 dalga 106 (2026-09-27): sayı + şifre penceresi (`ErpSayiGirisi` · `ErpSifreGirisi`, ikisi de `sayi-girisi`) onay penceresinin ölçüsünde —
   kural yoktu, `.fora-popup { width: 100% }` ⇒ tek bir kutu için 1424 px'lik ekranda 1392 px'lik pencere (ölçüldü). MAUI `VeriGirisi` de dar. */
.fora-popup.sayi-girisi { width: 440px; max-width: 92vw; }
.onay-mesaj { margin: 0; white-space: pre-line; }

.sekme-uyari { margin: .5rem 0; }

/* 🔴 Gizleme; kaldırma DEĞİL. */
.sekme-govde.gizli { display: none; }


/* ── Görünüm anahtarı: Liste ⟂ Grafik (2026-09-05, spec §7.19) ──
   🔑 İç sekme DEĞİL düğme: dış sekme çubuğu zaten var; iki katmanlı sekme kullanıcıyı
   "hangi sekmedeyim" sorusuna düşürür. */
.gorunum-anahtari {
    display: inline-flex;
    border: 1px solid var(--fora-notr-cerceve);
    border-radius: var(--fora-radius);
    overflow: hidden;
    margin: .5rem 0;
}

.gorunum-anahtari button {
    border: none;
    background: var(--fora-yuzey);
    padding: .35rem .9rem;
    font-size: .88rem;
    color: var(--fora-metin-ikincil);
    cursor: pointer;
}

.gorunum-anahtari button + button { border-inline-start: 1px solid var(--fora-notr-cerceve); }

.gorunum-anahtari button:hover { background: var(--fora-satir-hover); }

/* Seçili segment DOLU AKSAN — düğme hiyerarşisinin "birincil" dili (eskiden #2c2c2c idi;
   sayfadaki tek kapkara öge bir görünüm anahtarıydı, hiyerarşi tersti). */
.gorunum-anahtari button.etkin {
    background: var(--fora-aksan);
    color: var(--fora-metin-acik);
    font-weight: 600;
}

/* ══ EVRAK GİRİŞİ — tek ekran yerleşimi (2026-09-05) ══════════════════════════════════
   📖 docs/spec-web-altyapi-v1.md §9
   🔑 MAUI'deki 4 sekme telefon zorunluluğuydu. Web'de: üstte şerit · solda detay ·
      sağda sepet · altta kayıt şeridi. Boş bölüm HİÇ çizilmez (alan sayısı 0↔66). */

/* 🔄 2026-09-25: `.evrak-ust-serit` / `.evrak-tipi` / `.evrak-ust-bilgi` KALDIRILDI — evrak girişinin üst şeridi yok (Serhat);
   alanları sol detayda (ErpEvrakGirisi baş notu). */

.evrak-uyari {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .45rem .7rem;
    margin-block-end: .6rem;
    background: var(--fora-uyari-sari-zemin);
    border: 1px solid var(--fora-vurgu-para);
    color: var(--fora-uyari-sari-metin);
    border-radius: 4px;
    font-size: .88rem;
}

.evrak-uyari .uyari-kapat {
    margin-inline-start: auto;
    border: 0;
    background: transparent;
    cursor: pointer;
    font-size: .9rem;
}

/* İki kolon: detay ⟂ sepet. Dar ekranda alt alta. */
/* 🔄 2026-09-25 (Serhat): sol detay ~yarıya — *"sol taraf çok geniş, yaklaşık yarı yarıya küçültebiliriz, böylece sepet
   satırlarına daha geniş yer kalır"*. Öncesi `minmax(320px, 40%)` (1.120px içerikte ~448px). `min-width:0` şart: ızgara
   hücresi uzun bir değerle (cari ünvanı, adres) sütunu genişletmesin. */
.evrak-govde {
    display: grid;
    grid-template-columns: minmax(240px, 22%) 1fr;
    gap: .75rem;
    align-items: start;
}

.evrak-detay { min-width: 0; }

@media (max-width: 900px) {
    .evrak-govde { grid-template-columns: 1fr; }
}

.evrak-bolum {
    border: 1px solid var(--fora-ayrac);
    border-radius: 6px;
    margin-block-end: .5rem;
    background: var(--fora-yuzey);
}

.evrak-bolum > summary {
    cursor: pointer;
    padding: .45rem .7rem;
    font-weight: 600;
    color: var(--fora-aksan);
    user-select: none;
}

.evrak-bolum .bolum-sayi {
    display: inline-block;
    margin-inline-start: .4rem;
    padding: 0 .4rem;
    border-radius: 999px;
    background: var(--fora-yuzey-alt);
    color: var(--fora-form-etiket);
    font-size: .72rem;
    font-weight: 400;
}

.evrak-alanlar { padding: .3rem .7rem .7rem; }

.evrak-sepet {
    border: 1px solid var(--fora-ayrac);
    border-radius: 6px;
    background: var(--fora-yuzey);
    padding: .6rem .7rem;
}

.sepet-baslik {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-block-end: .5rem;
}

.sepet-baslik .btn-getir { margin-inline-start: auto; }

/* Kayıt şeridi: toplam hep gözün önünde, düğmeler duruma göre değişir. */
/* 🔴 SABİT (2026-09-05, Serhat: "aşağıdaki kayıt bilgilerini göremedim").
   Şerit sayfanın dibinde kalıyordu; uzun detayda ekranın altında kayboluyordu. Oysa TASARIM
   GEREKÇESİ "toplam hep gözünün önünde dursun"du — yapışkan olmadan o gerekçe boşa çıkıyor. */
.evrak-kayit-serit {
    position: sticky;
    bottom: 0;
    z-index: 5;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
    margin-block-start: .6rem;
    padding: .55rem .75rem;
    background: var(--fora-yuzey-alt);
    border: 1px solid var(--fora-ayrac);
    border-radius: 6px;
    box-shadow: 0 -2px 6px rgba(0, 0, 0, .07);
}

.evrak-kayit-serit .btn-getir { margin-inline-start: auto; }

/* 🆕 Dalga 93: kayıt sonucu (✓ + MAUI `EvrakKayitSonuc`'un seri-sıra · aktarım durumu) ALT ALTA — yan yana dizilince şerit
   taşıyor, Paylaş düğmesi ikinci satıra düşüyordu (ölçüldü). Blok en uzun satırı kadar yer kaplar. */
.evrak-kayit-serit .kayit-basarili { display: inline-flex; flex-direction: column; gap: .1rem; }

/* 🆕 Dalga 127: fiyat etiketi şeridindeki "Otomatik yazdır" onay kutusu (MAUI CheckEdit) — etiket kutuyla aynı satırda. */
.evrak-kayit-serit .kayit-onay { display: inline-flex; align-items: center; gap: .35rem; white-space: nowrap; }

/* 🆕 Dalga 62: tutar dökümü — MAUI kayıt sekmesinin değer satırları (alt alta 45 px'lik kutular).
   Masaüstünde yan yana "etiket değer" çiftleri; dar ekranda satır kırar, şerit yine yapışkan. */
.evrak-kayit-serit .kayit-dokum {
    display: flex;
    flex-wrap: wrap;
    gap: .15rem 1.1rem;
    margin: 0;
    flex: 1 1 24rem;
}

.kayit-dokum-oge { display: flex; align-items: baseline; gap: .35rem; }
.kayit-dokum-oge dt { font-weight: normal; font-size: var(--fora-punto-etiket); color: var(--fora-form-etiket); }
.kayit-dokum-oge dd { margin: 0; font-weight: 600; font-variant-numeric: tabular-nums; }
.kayit-dokum-oge[data-alan="yekun"] dd { font-size: 1.05rem; }

/* ── Seçim alanı: salt-okunur kutu + "…" düğmesi (+ F10) ── */
.secim-alani { margin-block-end: .45rem; }

.secim-etiket {
    display: block;
    font-size: var(--fora-punto-etiket);
    color: var(--fora-form-etiket);
    margin-block-end: .12rem;
}

.secim-kutu { display: flex; }

.secim-girdi {
    flex: 1 1 auto;
    min-width: 0;
    padding: .28rem .45rem;
    border: 1px solid var(--fora-notr-cerceve);
    border-inline-end: 0;
    border-radius: 4px 0 0 4px;
    background: var(--fora-yuzey);
    font-size: .88rem;
    cursor: pointer;      /* 🔴 "yazılır" değil "seçilir" hissi */
}

.secim-dugme {
    flex: 0 0 auto;
    padding: 0 .55rem;
    border: 1px solid var(--fora-notr-cerceve);
    border-radius: 0 4px 4px 0;
    background: var(--fora-yuzey-alt);
    cursor: pointer;
    font-size: .95rem;
    line-height: 1;
}

.secim-dugme:hover { background: var(--fora-satir-hover); }

/* Engelli alan GRİ DEĞİL (Serhat: "tıkla uyarı al") — yalnız ipucu farklı. */
.secim-alani.engelli .secim-girdi,
.secim-alani.engelli .secim-dugme { background: var(--fora-yuzey-alt); color: var(--fora-form-etiket); }

/* 🆕 dalga 79: stok detayının barkod şeridi (MAUI `barkod_serit`) — kartın üstünde, tam genişlik değil. */
/* 🔄 dalga 85: kamera düğmesi şeritte kutunun yanında (esnek satır). */
.stok-barkod-seridi { margin-block-end: .6rem; display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.stok-barkod-seridi .barkod-kutusu { inline-size: min(22rem, 100%); padding: .3rem .5rem; }

/* 🆕 dalga 86: ürün fotoğrafı (MAUI `image_stok`, 200 dp) — tıklanınca büyük görünüm (MAUI `ShowImage`). */
.stok-fotografi { display: block; margin-block-end: .6rem; padding: 0; border: 1px solid var(--fora-kart-cerceve);
                  border-radius: var(--fora-radius); background: var(--fora-yuzey); cursor: zoom-in; }
.stok-fotografi img { display: block; block-size: 200px; max-inline-size: min(100%, 420px); object-fit: contain; }
.stok-fotografi-zemin { display: flex; align-items: center; justify-content: center; cursor: zoom-out; }
.stok-fotografi-zemin img { max-inline-size: 92vw; max-block-size: 88vh; object-fit: contain; background: var(--fora-yuzey);
                            border-radius: var(--fora-radius); box-shadow: 0 8px 28px rgba(0, 0, 0, .35); }

/* 🆕 dalga 87: sepet satırının fotoğrafı (MAUI `ImageButton` 70×70, isim bloğunda) — isim ve alt bilgiler yanından akar.
   🔴 `position: relative; z-index: 1` ŞART (ölçümde bulundu): alt bilgi satırı `.not` (`opacity: .7`) ⇒ yığın bağlamı açar ve float'ın
   ÜSTÜNE boyanır; kutusu float'ın altından geçtiği için fotoğrafın orta bandındaki tıklamayı yutuyordu (büyük görünüm açılmıyordu). */
.sepet-fotografi { float: inline-start; margin-inline-end: .5rem; padding: 0; border: 1px solid var(--fora-kart-cerceve);
                   border-radius: var(--fora-radius); background: var(--fora-yuzey); cursor: zoom-in; line-height: 0;
                   position: relative; z-index: 1; }
.sepet-fotografi img { inline-size: 70px; block-size: 70px; object-fit: contain; }

/* 🆕 dalga 78: kutunun altındaki yardım metni (MAUI `HelpText` — evrak sırası 0 ⇒ "Otomatik"). */
.secim-yardim {
    display: block;
    margin-block-start: .1rem;
    font-size: var(--fora-punto-etiket);
    color: var(--fora-form-etiket);
}

/* -- Satir ekleme formu (2026-09-05) ------------------------------------------------
   Popup kabugu (`fora-popup*`) yeniden kullaniliyor; burada yalniz govde izgarasi var. */
/* 🔄 dalga 66: YÜKSEKLİK SINIRI + gövde kaydırılır (ızgara seçicinin deseni). Öncesi sınırsızdı ve `.fora-popup`
   `overflow:hidden` + ortalanmış zemin ⇒ ekrandan uzun form (bilgi şeridi + açık iskonto bölümü) İKİ UÇTAN kırpılıyor,
   başlık (gizli göster anahtarı) ve "Sepete ekle" düğmesi ERİŞİLEMİYORDU (CT2 ekran görüntüsü). */
.fora-popup.satir-ekle { width: 420px; max-width: 92vw; max-height: 92vh; }
.fora-popup.satir-ekle .fora-popup-govde { flex: 1 1 auto; overflow-y: auto; }

.satir-ekle-alan {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .75rem;
}

/* min-width:0 SART: izgara hucresinin varsayilan min-width'i `auto`dur ve <input>'un
   ictenden gelen genisligi hucreyi TASIRIR -- ilk surumde birim fiyat alani popup'in
   disina tasti (olculdu, ekran goruntusu 1043). */
.satir-ekle-alan label {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    font-size: var(--fora-punto-etiket);
    color: var(--fora-form-etiket);
    min-width: 0;
}

.satir-ekle-alan input {
    width: 100%;
    box-sizing: border-box;
    padding: .4rem .5rem;
    border: 1px solid var(--fora-notr-cerceve);
    border-radius: 4px;
    font-size: 1rem;
    text-align: end;
}

/* Fiyat yetkisi yoksa alan pasif -- MAUI'de de IsEnabled="{Binding FiyatDegistirmeGoster}". */
.satir-ekle-alan input:disabled { background: var(--fora-yuzey-alt); color: var(--fora-form-etiket); }

/* 🆕 dalga 98: satır açıklaması METİN alanıdır (MAUI TextEdit metin başından yazar) — sayı alanlarının sona hizası ona uymaz; yön-bağımsız. */
.satir-ekle-alan .satir-aciklama input { text-align: start; }

/* 🆕 dalga 68: ⚙ ayar düğmesi girdinin YANINDA (MAUI `ikon_ayarlar` alanın solunda; ızgaraya ayrı hücre olarak girseydi düzen kayardı).
   Seçim alanları (gider kodu · iş merkezi · satır deposu) ve iade anahtarı formun alan aralığıyla. Mevcut tonlar. */
.satir-girdi-satiri { display: flex; gap: .3rem; align-items: stretch; }
.satir-girdi-satiri input { flex: 1 1 auto; min-width: 0; }
.satir-ayar {
    flex: 0 0 auto;
    padding: 0 .55rem;
    border: 1px solid var(--fora-notr-cerceve);
    border-radius: 4px;
    background: transparent;
    color: var(--fora-metin-ikincil);
    cursor: pointer;
}
.satir-ayar:hover { background: var(--fora-yuzey-alt); }
.satir-ayar:focus-visible { outline: 2px solid var(--fora-aksan); outline-offset: 1px; }
.satir-secim { margin-block-end: .6rem; }
.satir-iade { display: flex; align-items: center; justify-content: flex-end; gap: .4rem; margin-block-end: .6rem; font-weight: 600; }

.satir-ekle-ozet {
    margin-top: .75rem;
    padding-top: .5rem;
    border-top: 1px solid var(--fora-ayrac);
    font-size: .95rem;
}

/* 🆕 dalga 66: BİLGİ ŞERİDİ — MAUI `StokSepeteEkleme.xaml:46-54` (sağa yaslı kalın etiketler; iskonto bilgisi küçük ve
   soluk — MAUI 12pt #555555). */
.satir-bilgi {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .1rem;
    margin-block-end: .6rem;
    padding-block-end: .4rem;
    border-bottom: 1px solid var(--fora-ayrac);
}

.satir-bilgi-oge { font-weight: 600; font-size: .9rem; text-align: end; }
.satir-bilgi-oge[data-alan="iskonto-bilgisi"] { font-size: .8rem; color: var(--fora-form-etiket); }

/* 🆕 dalga 67: BİLGİ BÖLÜMLERİ — MAUI `StokSepeteEkleme.xaml:429-457` (BolumSeridi başlık + ortalı metin / 3 sütunlu satırlar). */
.satir-bolum { margin-block-start: .5rem; }
.satir-bolum-metin { text-align: center; font-weight: 600; font-size: .9rem; padding-block: .2rem; }
.satir-bolum-ikincil { font-size: .85rem; color: var(--fora-form-etiket); }
.satir-son-hareket { width: 100%; font-size: .8rem; border-collapse: collapse; }
.satir-son-hareket td { text-align: center; padding: .15rem .25rem; }
.satir-son-hareket td:first-child { width: 20%; }
.satir-son-hareket tr:nth-child(even) { background: var(--fora-yuzey-alt); }

/* 🆕 dalga 66: gizli göster anahtarı başlıkta, kapat düğmesinin yanında (MAUI: başlığa dokunmak). */
.satir-gizli-goster {
    margin-inline-start: auto;
    margin-inline-end: .5rem;
    background: transparent;
    border: 0;
    color: inherit;
    font-size: 1rem;
    cursor: pointer;
}

/* Sepet satirini kaldirma -- metinsiz, satir yuksekligini buyutmeyen dugme. */
.btn-sil {
    border: none;
    background: transparent;
    color: var(--fora-yikici);
    cursor: pointer;
    line-height: 1;
    padding: 0 .25rem;
}

.btn-sil:hover { color: var(--fora-uyari-kirmizi-metin); }

/* 🆕 Dalga 64: satır "Düzenle" — silmenin kardeşi ama yıkıcı DEĞİL ⇒ aksan rengi. */
.btn-sil.btn-duzenle { color: var(--fora-aksan); }
.btn-sil.btn-duzenle:hover { color: var(--fora-aksan-basili); }

/* -- Izgara secici (2026-09-06, KLAVYE ONCELIKLI) ------------------------------------
   Serhat md.2: DevExpress yalniz raporlar icin. Liste Blazor'un kendi `Virtualize`i ile
   ciziliyor; satirlar CSS grid -- baslik satiri ve veri satirlari AYNI sablonu paylasir
   (sablon bilesende tek yerden uretilir, yoksa basliklar hucrelerle hizalanmaz). */
.fora-popup.izgara-secici {
    width: 980px;
    max-width: 96vw;
    /* Popup EKRANI TASMAZ: baslik her zaman gorunur kalir (olculdu 1050). */
    max-height: 92vh;
}

.izgara-secici .fora-popup-baslik {
    display: flex;
    align-items: baseline;
    gap: 1rem;
}

/* Kisayol ipucu: alt dugmeler kaldirildi (md.5), kesfedilebilirlik buradan geliyor. */
.secici-kisayol {
    margin-inline-start: auto;
    font-size: .78rem;
    font-weight: 400;
    opacity: .75;
    white-space: nowrap;
}

.izgara-secici .fora-popup-govde {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.secici-baslik-satiri {
    gap: .5rem;
    padding: .35rem .5rem;
    border-bottom: 2px solid var(--fora-ayrac-koyu);
    font-size: .8rem;
    font-weight: 600;
    color: var(--fora-form-etiket);
}

/* Kaydirma LISTENIN ICINDE: disarida olsaydi baslik satiri da kayar ve sutunlar kaybolurdu. */
.secici-liste {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    border: 1px solid var(--fora-ayrac);
    border-radius: 4px;
}

.secici-satir {
    gap: .5rem;
    padding: 0 .5rem;
    align-items: center;
    font-size: .88rem;
    cursor: pointer;
    border-bottom: 1px solid var(--fora-ayrac);
}

.secici-satir > span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.secici-satir:hover { background: var(--fora-satir-hover); }

/* AKTIF = klavye imleci. Vurgu belirgin olmali: kullanici Enter'a basmadan once hangi
   satirda oldugunu TEK BAKISTA gormeli. */
.secici-satir.aktif {
    background: var(--fora-aktif-zemin);
    box-shadow: inset 3px 0 0 var(--fora-aksan);
}

/* ISARETLI = coklu secimde onaylanacaklar. Aktiften AYRI bir renk: ikisi ayni olsaydi
   "imlecin durdugu satir" ile "sectigim satir" birbirine karisirdi. */
.secici-satir.isaretli { background: var(--fora-isaretli-zemin); }
.secici-satir.aktif.isaretli { background: var(--fora-isaretli-aktif-zemin); box-shadow: inset 3px 0 0 var(--fora-sayi-pozitif); }

/* 🔄 2026-09-25 (Serhat md.6): "Daha fazla" düğmesi KALKTI — listenin SONUNDAKİ görünmez işaretçi görünür alana
   yaklaşınca sonraki sayfa kendiliğinden gelir (IntersectionObserver, secici.js). İşaretçinin yüksekliği olmalı:
   0 yükseklikli öğe bazı tarayıcılarda kesişim bildirmez. */
.secici-sona-yakin { height: 1px; }
.secici-yukleniyor { align-self: center; margin: .25rem 0 0; }

/* Baslikta yan eylem dugmesi (ust uste popup acar) ve sayisal girdi (uretim "miktar"). */
.secici-yan { margin-inline-start: .5rem; }

.secici-sayisal {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: .85rem;
}

.secici-sayisal input {
    width: 140px;
    padding: .3rem .5rem;
    border: 1px solid var(--fora-notr-cerceve);
    border-radius: 4px;
    text-align: end;
}

/* 🆕 dalga 72: siralama kutusu (MAUI "Listeleme secenekleri") — arama kutusunun altinda, satir basinda; yon-bagimsiz. */
.secici-siralama {
    align-self: flex-start;
    padding: .25rem .5rem;
    font-size: .85rem;
    border: 1px solid var(--fora-notr-cerceve);
    border-radius: 4px;
}

/* 🆕 dalga 73: sunucu suzgecleri (MAUI siparis secicisi — tarih araligi · hazir aralik · teslim durumu · siralama). */
.secici-suzgecler {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: .5rem .75rem;
    font-size: .85rem;
}

.secici-suzgec {
    display: flex;
    flex-direction: column;
    gap: .15rem;
}

.secici-suzgecler input,
.secici-suzgecler select {
    padding: .25rem .5rem;
    border: 1px solid var(--fora-notr-cerceve);
    border-radius: 4px;
}

/* Coklu secimde alt serit: sayac basta, "Tumunu sec" sonda (yon-bagimsiz). "Sec" dugmesi yok — md.5, onay Enter. */
.fora-popup-alt:has(.secici-tumunu-sec) { display: flex; align-items: center; gap: .5rem; }
.fora-popup-alt .secici-tumunu-sec { margin-inline-start: auto; }

/* -- Karsilama modu (Serhat md.4: "karsilama listesi ile sepet gorsel olarak karismamali")
   Ayrim SADECE renk degil: sol kenarda kalin bir serit + farkli zemin. Renk korme
   kullanicida yalniz renge dayanan bir ayrim GORUNMEZ olurdu. */
.evrak-sepet.karsilama-modu {
    border-inline-start: 4px solid var(--fora-vurgu-para);
    background: var(--fora-karsilama-zemin);
}

.evrak-sepet.karsilama-modu .sepet-baslik strong {
    color: var(--fora-vurgu-para);
}

/* Karsilama toplamlari: evragin KENDI metinleri (KarsilamaOkutulan/Kalan/Toplam). */
.karsilama-toplam {
    margin: 0 0 .5rem 0;
    font-size: .85rem;
}

/* 🆕 dalga 75 — uretim kolunun kaynak bilgisi (MAUI: #22628A, kalin, kucuk punto) + listenin arama kutusu. */
.karsilama-kaynak {
    margin-block: 0 .35rem;
    color: var(--fora-aksan);
    font-weight: 600;
    font-size: .8rem;
}

.karsilama-arama {
    inline-size: 100%;
    margin-block: 0 .5rem;
}

/* 🆕 dalga 76 — karşılama satırının MAUI şeritleri: sol onay (sipariş), sağ teslim / plan durumu. Renk satırın
   stilindeki değişkenden (sabit tablo — serbest metin yok); değişken yoksa kenar yok. */
.karsilama-modu .erp-tablo tbody tr > td:first-child {
    border-inline-start: var(--karsilama-sol, 0);
}

.karsilama-modu .erp-tablo tbody tr > td:last-child {
    border-inline-end: var(--karsilama-sag, 0);
}

/* 🆕 dalga 81 — cari detayın önceki siparişleri: KAYAN KAP (otomatik yükleme gözcüsünün kökü — secici.js `sonuGozle`) + MAUI
   `CariOncekiSiparislerCell` şeritleri (sol onay, sağ teslim durumu; renk satırın stilindeki değişkenden — sabit tablo). */
.siparis-kaydirma {
    max-block-size: 32rem;
    overflow-y: auto;
}

.siparis-seritli tbody tr > td:first-child {
    border-inline-start: var(--siparis-sol, 0);
}

.siparis-seritli tbody tr > td:last-child {
    border-inline-end: var(--siparis-sag, 0);
}

/* 🆕 dalga 81 — yapılacak tahsilatlar: seçim işareti sütunu + seçili satır (MAUI hücresinin `ikon_secilmis`'i). */
.isaret-sutunu {
    inline-size: 2rem;
    text-align: center;
}

.erp-tablo tbody tr.secili {
    background: var(--fora-isaretli-zemin);
}

/* 🆕 Raf kırılımı — depo satırının hemen altındaki ince satır (2026-09-20, stok detayı). */
.raf-satiri td {
    padding-block: .15rem;
    color: var(--fora-ikincil-metin, #666);
    font-size: .9em;
}

/* 🆕 GÖREV FORM KAPSAYICILARI (2026-09-20, görev tipi düzenleme dalgası).
   🔴 Bu üç sınıf 2026-09-19/20 görev dilimlerinde .razor'a YAZILDI ama HİÇBİR CSS'te
   tanımlı değildi — yani `gorev-formu` ve `gf-asama` bugüne kadar hiçbir şey
   biçimlendirmiyordu (kutu çerçevesi, iç boşluk, ayrım yoktu). Ölçüldü ve kapatıldı.
   ⚠️ Aynı turda `fora-btn-tehlike` de VAR OLMAYAN bir addı; kanonik ad `fora-btn-yikici`
   (fora-tema.css §2) ve dört .razor dosyasında düzeltildi — silme düğmeleri o güne dek
   birincil turuncu çıkıyordu, yani YIKICI eylem GÜVENLİ eylemle aynı görünüyordu. */
.gorev-formu {
    background: var(--fora-yuzey);
    border: 1px solid var(--fora-kart-cerceve);
    border-radius: var(--fora-radius);
    box-shadow: var(--fora-kart-golge);
    padding: var(--fora-bosluk-genis);
    margin-block-start: var(--fora-bosluk-genis);
}

/* Tekrarlanan alt satır (aşama · veri alanı): kartın içinde ikinci düzey kutu. */
.gf-asama {
    background: var(--fora-yuzey-alt);
    border: 1px solid var(--fora-notr-cerceve);
    border-radius: var(--fora-radius-kucuk);
    padding: .5rem .65rem;
    margin-block-end: .5rem;
}

/* Form eylem satırı — düğmeler tek hatta, dar ekranda sarar. */
.gf-eylemler {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin-block-start: var(--fora-bosluk-genis);
}

/* 🆕 2026-09-25 (Serhat md.1): detay ekranında YENİDEN SEÇİM — kod/isim hücresi tıklanabilir (MAUI'de alan dokunulabilir).
   Metin gibi görünür, kesik alt çizgi + büyüteç "basılabilir" der; odak halkası klavyeyle erişimi gösterir. */
.detay-secim {
    background: none;
    border: 0;
    border-bottom: 1px dashed var(--fora-aksan);
    padding: 0;
    font: inherit;
    color: inherit;
    text-align: start;
    cursor: pointer;
}
.detay-secim:hover { color: var(--fora-aksan); }
/* Düğmenin içindeki kod düğmenin rengini alır (üstüne gelince aksan) — kendi kod rengi hover'ı ezmesin. */
.detay-secim code { color: inherit; }
.detay-secim:focus-visible { outline: 2px solid var(--fora-aksan); outline-offset: 2px; }
.detay-secim::after { content: " ⌕"; opacity: .55; }

/* 🆕 2026-09-25 (Serhat md.7): TOAST — görünen alanın sağ üstü, 5 sn, altta dolan çubuk; üstüne gelince durur.
   📖 Services/BildirimServisi.cs · Components/Shared/BildirimKabi.razor
   🔑 `position: fixed` ⇒ sayfa kaydırılsa da görünür; z-index popup zemininin (1080 + derinlik × 10) ÜSTÜNDE. Kap tıklamayı
   geçirir (`pointer-events: none`), yalnız toast'lar yakalar — altındaki düğmeler kullanılabilir kalır. */
.bildirim-kabi {
    position: fixed;
    top: .75rem;
    inset-inline-end: .75rem;
    z-index: 2000;
    display: flex;
    flex-direction: column;
    gap: .5rem;
    width: min(380px, calc(100vw - 1.5rem));
    pointer-events: none;
}
.bildirim {
    --bildirim-renk: #D97706;
    pointer-events: auto;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    padding: .65rem .75rem .85rem;
    border-radius: var(--fora-radius-kucuk, 6px);
    background: var(--fora-yuzey, #fff);
    color: var(--fora-metin-koyu, #3a3a3a);
    border-inline-start: 4px solid var(--bildirim-renk);
    box-shadow: 0 6px 20px rgba(31, 14, 0, .18);
    animation: bildirim-gir .18s ease-out;
}
.bildirim-hata { --bildirim-renk: #B91C1C; }
.bildirim-basari { --bildirim-renk: #15803D; }
.bildirim-bilgi { --bildirim-renk: var(--fora-aksan, #22628A); }
.bildirim-metin { flex: 1; white-space: pre-line; overflow-wrap: anywhere; }
.bildirim-kapat {
    background: none;
    border: 0;
    padding: 0 .15rem;
    font-size: 1.15rem;
    line-height: 1;
    color: inherit;
    opacity: .6;
    cursor: pointer;
}
.bildirim-kapat:hover, .bildirim-kapat:focus-visible { opacity: 1; }
.bildirim-cubuk {
    position: absolute;
    inset-inline-start: 0;
    bottom: 0;
    width: 100%;
    height: 3px;
    background: var(--bildirim-renk);
    transform-origin: left center;
    animation: bildirim-dol var(--bildirim-sure, 5000ms) linear forwards;
}
[dir="rtl"] .bildirim-cubuk { transform-origin: right center; }
.bildirim:hover .bildirim-cubuk { animation-play-state: paused; }
@keyframes bildirim-dol { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes bildirim-gir { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .bildirim { animation: none; } }

/* 🆕 dalga 134 (2026-09-28): PROMOSYON pencereleri — MAUI `PromosyonSecimi` / `PromosyonStokSecimi` (genişlik 360, renkler Colors.xaml:
   Green #22cc22 = uygulanmış · Yellow #cccc22 = uygun · LightRed #ff9797 = uygun değil · grup başlığı PrimaryLight #5a5a5a / TextLight). */
.fora-popup.promosyon-secimi, .fora-popup.promosyon-stok-secimi { width: 360px; max-width: 92vw; }
.promosyon-secimi .fora-popup-govde, .promosyon-stok-secimi .fora-popup-govde { max-height: 70vh; overflow-y: auto; padding: 0; }
.promosyon-grup { background: #5a5a5a; color: #fef9f5; text-align: center; font-size: 16px; padding: 4px 8px; }
.promosyon-satir { display: flex; flex-direction: column; gap: 4px; padding: 10px 5px; color: #4a4a4a; border-bottom: 2px solid transparent; }
.promosyon-satir.promosyon-uygulanmis { background: #22cc22; }
.promosyon-satir.promosyon-uygun { background: #cccc22; }
.promosyon-satir.promosyon-uygun-degil { background: #ff9797; }
.promosyon-kod { font-size: 12px; }
.promosyon-ad, .promosyon-hedef { font-size: 16px; font-weight: 700; }
.promosyon-hedef { color: #202020; min-height: 1.2em; }   /* MAUI boş etiket de satır tutar */
.promosyon-stok-satir { display: flex; flex-direction: column; gap: 2px; padding: 10px 5px; color: #4a4a4a; border-bottom: 1px solid var(--fora-cizgi, #ddd); }
.promosyon-miktar { font-weight: 700; }
.promosyon-stok-dugmeler { display: flex; gap: 6px; padding-top: 6px; }
.promosyon-stok-dugmeler .promosyon-eksi { background: #A8502C; color: #fff; }   /* MAUI eksi kiremit */
.promosyon-stok-dugmeler .promosyon-arti { background: #0F7150; color: #fff; }   /* MAUI artı yeşil */
#promosyon-toplam, #promosyon-kalan { padding: 4px 5px; }
