/* RACA reusable list table — DIA tarzı (mavi başlık, zebra, sarı hover, kompakt).
   Kullanım: <table class="raca-table" data-tk="cariler">
   Her <th data-col="kolon_anahtari"> ve her <td data-col="kolon_anahtari"> olmalı.
*/
/* border-collapse:separate → sticky thead ile Chrome/Safari uyumu garanti (collapse'te
   bazı tarayıcılarda sticky bozuluyor). border-spacing:0 ile görsel korunur. */
.raca-table { border-collapse:separate !important; border-spacing:0 !important; width:100%; font-size:12px; }

/* === BAŞLIK SATIRI (mavi metin, gri-açık arka plan, ince çizgi) === */
/* DOM sırası: [1] header · [2] filter · [3+] veri. Header top:0, filter top:28px.
   position:sticky !important — design.css veya modül CSS'i override edemesin. */
.raca-table thead th {
    background:#fafbfd; color:#1565c0; font-weight:600;
    padding:6px 10px 5px 10px;
    border-right:1px solid #e0e4ec;
    border-bottom:1px solid #c5cbd9;
    font-size:11px; text-transform:uppercase; letter-spacing:0.3px;
    white-space:nowrap;
    position:sticky !important; top:0 !important; z-index:9;
    text-align:left; user-select:none;
}
.raca-table thead th.rt-sort { cursor:pointer; }
.raca-table thead th.rt-sort:hover { background:#eef2ff; color:#0d47a1; }
.raca-table thead th .rt-sort-ico { color:#90a4ae; font-size:9px; margin-left:4px; }
.raca-table thead th.rt-sort-asc  .rt-sort-ico::after { content:"\25b2"; color:#1565c0; }
.raca-table thead th.rt-sort-desc .rt-sort-ico::after { content:"\25bc"; color:#1565c0; }

/* === BODY (kompakt satır, zebra, sarı hover) === */
.raca-table tbody td {
    padding:4px 10px;
    border-right:1px solid #e8eaf0;
    border-bottom:1px solid #eef0f5;
    vertical-align:middle;
    line-height:1.35;
    color:#1f2937;
}
.raca-table tbody tr { transition:background 0.08s ease; }
.raca-table tbody tr:nth-child(odd) { background:#ffffff; }
.raca-table tbody tr:nth-child(even) { background:#f7f9fc; }
/* DIA tarzı sarı hover */
.raca-table tbody tr:hover { background:#fff9c4 !important; cursor:default; }
/* Aktif/seçili satır — koyu sarı */
.raca-table tbody tr.rt-secili,
.raca-table tbody tr.rt-active { background:#fff59d !important; box-shadow:inset 3px 0 0 #f57f17; }
.raca-table tbody tr.rt-hidden { display:none; }
.raca-table .rt-col-hidden { display:none !important; }

/* Hücre vurguları (yeşil tutar, mavi link) */
.raca-table tbody td b { color:#1a237e; font-weight:600; }
.raca-table tbody td a { color:#1565c0; text-decoration:none; }
.raca-table tbody td a:hover { text-decoration:underline; }
.raca-table .rt-tutar { color:#2e7d32; font-weight:600; text-align:right; font-family:monospace; }
.raca-table .rt-kod  { color:#388e3c; font-family:monospace; font-weight:600; }

/* Resize handle (sağ kenarda 6px) */
.raca-table thead th .rt-resize {
    position:absolute; right:0; top:0;
    width:6px; height:100%; cursor:col-resize;
    user-select:none; z-index:6;
}
.raca-table thead th .rt-resize:hover { background:rgba(26,35,126,0.18); }
.raca-table thead th.rt-resizing { background:#e8eaf6 !important; }

/* Drag-drop reorder */
.raca-table thead th[draggable="true"] { cursor:grab; }
.raca-table thead th.rt-dragging { opacity:0.4; cursor:grabbing; }
.raca-table thead th.rt-drag-left  { box-shadow:inset 3px 0 0 #1a237e; }
.raca-table thead th.rt-drag-right { box-shadow:inset -3px 0 0 #1a237e; }

/* Grip ikonu (hover'da görünür) */
.raca-table thead th .rt-grip {
    display:inline-block; color:#c5cbd9; font-size:9px;
    margin-right:4px; opacity:0; transition:opacity 0.12s; cursor:grab;
}
.raca-table thead th:hover .rt-grip { opacity:1; }

/* Aksiyon kolonu — hover'da görünür (opsiyonel: th data-col="islem" class="rt-act") */
.raca-table tbody td.rt-act { white-space:nowrap; opacity:0.25; transition:opacity 0.12s; text-align:right; }
.raca-table tbody tr:hover td.rt-act,
.raca-table tbody tr.rt-secili td.rt-act { opacity:1; }
.raca-table tbody td.rt-act .btn { padding:2px 6px; font-size:11px; margin-left:2px; }

/* Genel Hover Action (2026-09-09 kullanıcı feedback):
   data-col="islem" olan tüm sütunlar veya son sütundaki butonlar sadece
   hover'da netleşsin — rt-act class'ı olmadan da bu davranış tetiklensin. */
.raca-table tbody td[data-col="islem"] {
    white-space:nowrap;
    transition:opacity 0.12s;
    text-align:right;
}
.raca-table tbody tr:not(:hover):not(.rt-secili):not(.rt-active) td[data-col="islem"] {
    opacity:0.35;
}
.raca-table tbody td[data-col="islem"] .btn {
    padding:2px 7px;
    font-size:11px;
    margin-left:2px;
}

/* Sayısal hücre */
.raca-table .rt-num { white-space:nowrap; font-family:monospace; font-weight:600; text-align:right; }
.raca-table .rt-mono { white-space:nowrap; font-family:monospace; }

/* ============================================================ */
/* DIA-TARZI KOLON FİLTRE SATIRI                                 */
/* Her kolona ayrı küçük input + sol başta kırmızı çöp           */
/* ============================================================ */
/* Filtre satırı — kolon başlığı satırının ALTINDA, sticky top: --rt-header-h (28px).
   Kullanıcı üstteki başlığı görsün, filtre input'u hemen altında olsun.
   --rt-topbar-h: RACA üst bar yüksekliği (JS ile dinamik set edilir, default 44px).
     Non-list-page sayfalarda sticky thead .main scroll'una yapışır, topbar
     onu örtmesin diye thead top:44px + filter top:44+28=72px offset alır. */
:root { --rt-header-h: 28px; --rt-topbar-h: 44px; }
.raca-table thead tr.rt-filter-row th {
    background: #ffffff !important;
    padding: 5px 6px;
    border-right: 1px solid #eef0f5;
    border-bottom: 1px solid #d4d8e6;
    font-weight: normal;
    text-transform: none;
    letter-spacing: 0;
    position: sticky !important;
    top: var(--rt-header-h, 28px) !important;
    z-index: 8 !important;   /* header (z:9) altında kalsın */
    min-height: 30px;
    height: 30px;
}

/* ============================================================================
   NON-LIST-PAGE FALLBACK — .main scroll olan sayfalarda sticky thead sticky
   topbar (z:50 top:0) tarafından örtülüyordu. Thead'in top'ını topbar yüksekliği
   kadar offset et ki topbar'ın ALTINDA sticky kalsın.
   List-page'de sticky thead .list-scroll'a yapışır (topbar dışında) — bu rule
   sadece body:not(.list-page) için active.
   ============================================================================ */
body:not(.list-page) .main .raca-table thead th {
    top: var(--rt-topbar-h, 44px) !important;
}
body:not(.list-page) .main .raca-table thead tr.rt-filter-row th {
    top: calc(var(--rt-topbar-h, 44px) + var(--rt-header-h, 28px)) !important;
}
/* Tablo kendi kaydırma kabı içindeyse (raca-table.js stickyKabiIsaretle → .rt-ic-kab) sticky ofset
   o kaba göre uygulanır; üst bar ofseti başlığı satırların üstüne kaydırıyordu → kab tepesine yapış. */
body:not(.list-page) .main .raca-table.rt-ic-kab thead th {
    top: 0 !important;
}
body:not(.list-page) .main .raca-table.rt-ic-kab thead tr.rt-filter-row th {
    top: var(--rt-header-h, 28px) !important;
}
.raca-table thead tr.rt-filter-row th.rt-filter-trash {
    width: 28px;
    min-width: 28px;
    max-width: 28px;
    padding: 0;
    text-align: center;
    background: #fff5f5;
}
.raca-table thead tr.rt-filter-row th.rt-filter-trash button {
    width: 22px; height: 22px;
    border: 1px solid transparent; background: transparent;
    cursor: pointer; font-size: 12px;
    color: #c62828; border-radius: 3px;
    transition: all 0.12s;
    padding: 0;
}
.raca-table thead tr.rt-filter-row th.rt-filter-trash button:hover {
    background: #c62828;
    color: #fff;
    border-color: #c62828;
}
.raca-table thead tr.rt-filter-row th.rt-filter-trash button.has-active {
    color: #c62828;
}
/* Filter input: border YOK, sadece alt çizgi (DIA/material tarzı)
   !important çünkü global `input,select,textarea` rule'u var (margin-bottom:10px vb.) */
.raca-table thead tr.rt-filter-row input,
.raca-table thead tr.rt-filter-row select {
    width: 100% !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    padding: 2px 4px !important;
    font-size: 11px !important;
    border: none !important;
    border-bottom: 1px solid #d0d4e0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    height: 22px !important;
    line-height: 1 !important;
    font-weight: normal !important;
    color: #1f2937 !important;
    caret-color: #1565c0 !important;
    transition: border-bottom-color 0.15s, background 0.15s !important;
    outline: none !important;
    display: block !important;
}
.raca-table thead tr.rt-filter-row input::placeholder { color:#b0b6c4; font-style:italic; }
.raca-table thead tr.rt-filter-row input:hover {
    border-bottom-color: #8892a8;
}
.raca-table thead tr.rt-filter-row input:focus,
.raca-table thead tr.rt-filter-row select:focus {
    border-bottom: 2px solid #1565c0 !important;
    background: #fffde7 !important;
}
.raca-table thead tr.rt-filter-row input.has-value,
.raca-table thead tr.rt-filter-row select.has-value {
    border-bottom: 2px solid #f57f17 !important;
    background: #fffde7 !important;
    font-weight: 600 !important;
    color: #f57f17 !important;
}
/* Header satırı çöp hücresi (içeriksiz) */
.raca-table thead tr:not(.rt-filter-row) th.rt-filter-trash {
    width: 28px; min-width: 28px; max-width: 28px;
    padding: 0; background: #e8eaf6;
}
/* Body satırlarındaki çöp hücresi (boş, sadece düzen için) */
.raca-table tbody td.rt-filter-trash {
    width: 28px; min-width: 28px; max-width: 28px;
    padding: 0; background: #f8f9fc;
    border-right: 1px solid #e5e8ef;
}
/* Filtreye uymayan satırı gizle */
.raca-table tbody tr.rt-filtered-out { display: none; }
/* Filtreleme istatistiği (toplam · görünen) */
.raca-table-wrap-stats {
    font-size: 11px; color: #6b7280;
    padding: 4px 10px; margin-top: 4px;
    background: #f8f9fc; border-radius: 4px;
    display: inline-block;
}
.raca-table-wrap-stats b { color: #1a237e; }

/* ============================================================ */
/* SANAL LİSTE — content-visibility KALDIRILDI (2026-09-02)      */
/* Chrome'da sticky thead ile çakışıyor; RACA'da 500 satır      */
/* altı listeler için virtualization gerekmiyor.                 */
/* ============================================================ */
.card.is-list .list-scroll table.raca-table tbody tr,
.card.is-list .list-scroll table.raca-table thead tr,
.card.is-list .list-scroll table.raca-table thead th {
    content-visibility: visible !important;
    contain: none !important;
}

/* Scrollbar — yatay + dikey her zaman görünür, list-scroll'un altında sticky kalır */
.card.is-list .list-scroll {
    scrollbar-width: auto;
    scrollbar-color: #8892a8 #eef0f5;
    overflow-x: auto;
    overflow-y: auto;
    /* tabloyu sığdırma — geniş tablo container'dan taşsın ki yatay scroll engage olsun */
    min-width: 0;
    max-width: 100%;
}
/* Tablo wrapping div'leri scroll yapmasın — sadece .list-scroll yapsın (iç içe scroll önle) */
.card.is-list .list-scroll > div { overflow: visible !important; }
/* Liste tabloları için fixed layout — colgroup widthleri kullanılır */
.card.is-list .list-scroll table.raca-table { table-layout: fixed; width: auto; }

/* ============================================================ */
/* RESPONSIVE TABLO — geniş ekranda orantılı esne, dar ekranda scroll */
/* ============================================================ */
/* Geniş viewport'ta tablo container'ı doldursun ki kolonlar orantılı büyüsün.
   Piksel bazlı colgroup width'leri fixed layout'ta hint olarak kalır, hepsi
   proportional shrink/grow yapar. Sec/ad frozen kolonlar min-width ile korunur. */
@media (min-width: 1440px) {
    .card.is-list .list-scroll table.raca-table { width: 100%; }
}
/* Küçük ekran — hücre padding'i ve font'u daralt, scroll yine mümkün */
@media (max-width: 900px) {
    .card.is-list .list-scroll table.raca-table th,
    .card.is-list .list-scroll table.raca-table td {
        padding: 5px 7px;
        font-size: 12px;
    }
}
@media (max-width: 700px) {
    .card.is-list .list-scroll table.raca-table th,
    .card.is-list .list-scroll table.raca-table td {
        padding: 6px 6px;    /* PART B.5: 4px → 6px (touch-friendly) */
        font-size: 12px;     /* PART B.5: 11px → 12px (min okunabilir) */
    }
    /* PART B.5: modüller [data-col-mobile-hide="1"] ekleyerek ikincil kolonları gizleyebilir */
    .raca-table [data-col-mobile-hide="1"] {
        display: none !important;
    }
}
/* PART B.5: 480px altı — freeze column boyutu daraltıldı */
@media (max-width: 480px) {
    .card.is-list .list-scroll table.raca-table th,
    .card.is-list .list-scroll table.raca-table td {
        padding: 5px 5px;
        font-size: 11.5px;
    }
    .raca-table [data-col-mobile-hide-sm="1"] {
        display: none !important;
    }
}
/* Ellipsis default: hücre taşarsa hard clip yerine "..." göster.
   Sabit nowrap yok — modül-özel td'ler kendi white-space kuralını yönetebilir. */
.card.is-list .list-scroll table.raca-table td,
.card.is-list .list-scroll table.raca-table th {
    overflow: hidden;
    text-overflow: ellipsis;
}
/* Uzun içeriği wrap etmek isteyenler için opt-in class */
.card.is-list .list-scroll table.raca-table td.rt-wrap {
    white-space: normal;
    word-break: break-word;
    overflow: visible;
    text-overflow: clip;
}
/* İşlem/aksiyon kolonu doğrudan nowrap kalsın (butonlar dizisi) */
.card.is-list .list-scroll table.raca-table td[data-col="islem"],
.card.is-list .list-scroll table.raca-table th[data-col="islem"],
.card.is-list .list-scroll table.raca-table td[data-col="actions"],
.card.is-list .list-scroll table.raca-table th[data-col="actions"] {
    white-space: nowrap;
}
.card.is-list .list-scroll::-webkit-scrollbar {
    height: 14px;
    width: 14px;
    background: #eef0f5;
}
.card.is-list .list-scroll::-webkit-scrollbar-track {
    background: #eef0f5;
    border-radius: 0;
}
.card.is-list .list-scroll::-webkit-scrollbar-thumb {
    background: #8892a8;
    border-radius: 7px;
    border: 2px solid #eef0f5;
    min-width: 40px;
    min-height: 40px;
}
.card.is-list .list-scroll::-webkit-scrollbar-thumb:hover {
    background: #5e6779;
}
.card.is-list .list-scroll::-webkit-scrollbar-corner {
    background: #eef0f5;
}

/* ============================================================ */
/* FROZEN SOL KOLONLAR — Checkbox (sec) + AD                     */
/* Yatay scroll'da bu iki kolon solda sabit kalır                */
/* ============================================================ */
:root {
    --rt-col-sec-w: 32px;   /* checkbox kolonu genişliği */
    --rt-col-ad-w: 240px;   /* AD kolonu genişliği */
}
.card.is-list .list-scroll table.raca-table th[data-col="sec"],
.card.is-list .list-scroll table.raca-table td[data-col="sec"] {
    position: sticky;
    left: 0;
    z-index: 2;
    background: #fff;
}
.card.is-list .list-scroll table.raca-table th[data-col="ad"],
.card.is-list .list-scroll table.raca-table td[data-col="ad"] {
    position: sticky;
    left: var(--rt-col-sec-w);
    z-index: 2;
    background: #fff;
    border-right: 2px solid #d4d8e6;  /* frozen bölge ayırıcı */
}
/* Zebra korunsun — TD'ler yarı saydam değil opak arka plana sahip olmalı */
.card.is-list .list-scroll table.raca-table tbody tr:nth-child(odd) td[data-col="sec"],
.card.is-list .list-scroll table.raca-table tbody tr:nth-child(odd) td[data-col="ad"] {
    background: #ffffff;
}
.card.is-list .list-scroll table.raca-table tbody tr:nth-child(even) td[data-col="sec"],
.card.is-list .list-scroll table.raca-table tbody tr:nth-child(even) td[data-col="ad"] {
    background: #f7f9fc;
}
/* Hover ve seçili satırda frozen kolon arka planı eşleşsin */
.card.is-list .list-scroll table.raca-table tbody tr:hover td[data-col="sec"],
.card.is-list .list-scroll table.raca-table tbody tr:hover td[data-col="ad"] {
    background: #fff9c4 !important;
}
.card.is-list .list-scroll table.raca-table tbody tr.rt-secili td[data-col="sec"],
.card.is-list .list-scroll table.raca-table tbody tr.rt-secili td[data-col="ad"],
.card.is-list .list-scroll table.raca-table tbody tr.rt-active td[data-col="sec"],
.card.is-list .list-scroll table.raca-table tbody tr.rt-active td[data-col="ad"] {
    background: #fff59d !important;
}
/* thead köşesi — sticky thead (top:0) + sticky left aynı anda, z-index yükseğe çıksın.
   Yeni DOM: header top:0, filter top:28px. Header köşesi en üstte (top-left corner). */
.card.is-list .list-scroll table.raca-table thead th[data-col="sec"],
.card.is-list .list-scroll table.raca-table thead th[data-col="ad"] {
    z-index: 12;  /* header (z:9) + frozen (z:2) = corner top-left, en üst */
    background: #fafbfd;
}
.card.is-list .list-scroll table.raca-table thead tr.rt-filter-row th[data-col="sec"],
.card.is-list .list-scroll table.raca-table thead tr.rt-filter-row th[data-col="ad"] {
    z-index: 11;  /* filter (z:8) + frozen — header köşesinden bir kademe düşük */
    background: #ffffff;
}

/* ============================================================ */
/* FİLTRE SONRASI BOŞ ALAN DAVRANIŞI (#1)                        */
/* Az kayıt geldiğinde list-scroll fazla yüksek kalmasın         */
/* ============================================================ */
.card.is-list .list-scroll {
    /* table-layout: fixed + width:auto sayesinde içerik genişliği önemli;
       içerik az olduğunda boş alan görünmesi normal — kullanıcı kaydırma çubuğu
       beklediği zaman görür, bu doğru davranış */
}

/* ============================================================ */
/* KANBAN CONTAINER — viewport-locked scroll (JS ile max-height) */
/* Hard-coded max-height YOK — raca-table.js fitListScroll ayarlar. */
/* rs-kanban / stk-kanban: kart-akış tipi (dikey scroll, kartlar wrap) */
/* gorev-kanban: sütun-akış tipi (dikey + yatay, sütunlar yan yana)   */
/* ============================================================ */
/* Kart-akış kanban (dikey scroll, kartlar wrap eder) */
.card.is-list .rs-kanban,      .rs-list .rs-kanban,
.card.is-list .stk-kanban,     .rs-list .stk-kanban,
.card.is-list .rs-kanban-grid, .rs-list .rs-kanban-grid,
.card.is-list .cari-kart-grid, .rs-list .cari-kart-grid {
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
}
/* Sütun-akış kanban (dikey + yatay, sütunlar yan yana) */
.card.is-list .gorev-kanban,   .rs-list .gorev-kanban,
.card.is-list .pot-kanban,     .rs-list .pot-kanban {
    overflow-y: auto;
    overflow-x: auto;
    min-height: 0;
}
/* Webkit scrollbar — kanban'da da list-scroll'la aynı görünüm */
.card.is-list .rs-kanban::-webkit-scrollbar,      .rs-list .rs-kanban::-webkit-scrollbar,
.card.is-list .stk-kanban::-webkit-scrollbar,     .rs-list .stk-kanban::-webkit-scrollbar,
.card.is-list .gorev-kanban::-webkit-scrollbar,   .rs-list .gorev-kanban::-webkit-scrollbar,
.card.is-list .rs-kanban-grid::-webkit-scrollbar, .rs-list .rs-kanban-grid::-webkit-scrollbar,
.card.is-list .cari-kart-grid::-webkit-scrollbar, .rs-list .cari-kart-grid::-webkit-scrollbar,
.card.is-list .pot-kanban::-webkit-scrollbar,     .rs-list .pot-kanban::-webkit-scrollbar {
    width: 14px; height: 14px; background: #eef0f5;
}
.card.is-list .rs-kanban::-webkit-scrollbar-thumb,      .rs-list .rs-kanban::-webkit-scrollbar-thumb,
.card.is-list .stk-kanban::-webkit-scrollbar-thumb,     .rs-list .stk-kanban::-webkit-scrollbar-thumb,
.card.is-list .gorev-kanban::-webkit-scrollbar-thumb,   .rs-list .gorev-kanban::-webkit-scrollbar-thumb,
.card.is-list .rs-kanban-grid::-webkit-scrollbar-thumb, .rs-list .rs-kanban-grid::-webkit-scrollbar-thumb,
.card.is-list .cari-kart-grid::-webkit-scrollbar-thumb, .rs-list .cari-kart-grid::-webkit-scrollbar-thumb,
.card.is-list .pot-kanban::-webkit-scrollbar-thumb,     .rs-list .pot-kanban::-webkit-scrollbar-thumb {
    background: #8892a8; border-radius: 7px; border: 2px solid #eef0f5;
}


/* ============================================================================
   SOL ÜST KÖŞE STANDARDI (2026-10-21) — tüm listelerde aynı:
   başlık satırı köşesi = filtreleri temizle, filtre satırı köşesi = ≡ kolon menüsü.
   Öncü kolon (köşe + satır başı hücreleri) yatay kaydırmada solda sabit kalır.
   ============================================================================ */
.raca-table thead th.rs-col-menu-cell,
table.rs-grid thead tr.rt-filter-row th.rs-col-menu-cell {
    padding: 2px !important;
    background: var(--rs-bg-soft, #f6f7fb) !important;
}
.rs-col-menu-cell .col-toggle-wrap > button {
    width: 24px !important;
    height: 22px !important;
}
.rs-col-menu-cell .col-toggle-wrap > button::before { font-size: 16px !important; }
.raca-table thead tr:not(.rt-filter-row) th.rt-filter-trash {
    width: 30px; min-width: 30px; max-width: 30px;
    padding: 0 !important; text-align: center;
    background: var(--rs-bg-soft, #f6f7fb) !important;
}
.raca-table thead tr.rt-filter-row th.rt-filter-trash { width: 30px; min-width: 30px; max-width: 30px; }
.raca-table .rt-filtre-temizle {
    width: 22px; height: 22px; padding: 0; border: 1px solid transparent; border-radius: 3px;
    background: transparent; color: #9aa3b5; cursor: pointer; font-size: 11px;
}
.raca-table .rt-filtre-temizle.has-active { color: #c62828; }
.raca-table .rt-filtre-temizle:hover { background: #c62828; border-color: #c62828; color: #fff; }
/* Öncü kolon solda sabit */
.raca-table thead th.rt-filter-trash,
.raca-table tbody td.rt-filter-trash {
    position: sticky !important;
    left: 0;
}
.raca-table tbody td.rt-filter-trash { z-index: 2; background: #fff; }
.raca-table tbody tr:nth-child(even) td.rt-filter-trash { background: #fafbfd; }
.raca-table thead th.rt-filter-trash { z-index: 11 !important; }
