/*
 * ADMINKA JADVALLARI — jadval ichida skroll, qotgan sarlavha, qotgan birinchi ustun.
 * Ulanishi: app/Providers/AppServiceProvider.php (FilamentAsset::register).
 * JUFTI: tables.js — sahifa/saralash/qidiruv/filtr o'zgarganda ichki `scrollTop` ni 0 ga
 * qaytaradi va o'ng chetdagi soya uchun `data-carfit-scrolled-x` atributini qo'yadi.
 *
 * NEGA (loyiha egasi, 2026-10-10): "cursor bilan o'ng tomonga surish ilojini qilsa bo'ladi
 * har bir sahifadagi scrollda — hozir pastga tushib, keyin o'ng tomonga sursam tepada
 * kerakli odamni joyini topish qiyin bo'lib qolayapti".
 * Keng jadvalda gorizontal skroll paneli jadvalning ENG PASTIDA edi: admin 25 qator
 * pastga tushib o'ngga surardi, tepaga qaytganda esa ism ustuni ko'rinmay qolardi.
 * Endi: (1) jadval o'z ichida skroll bo'ladi — gorizontal panel ekran ichida turadi;
 * (2) ustun sarlavhalari tepada qotadi; (3) belgilash katagi va birinchi ma'lumot
 * ustuni (odatda ism) chapda qotadi.
 *
 * NEGA ALOHIDA CSS FAYL: loyihada CSS qurilmaydi (public/build yo'q, viteTheme yo'q —
 * AdminPanelProvider izohi), ya'ni ixtiyoriy Tailwind klassi ishlamaydi.
 * Filament o'zining CSS'i `@layer components` ichida; bu fayl QATLAMSIZ, shuning
 * uchun Filament qoidalarini specificity'ga qaramay bosib o'tadi — faqat pastda
 * sanalgan xossalarga tegiladi (display/padding/matn bo'yog'i tegilmaydi).
 *
 * TAYANADIGAN FILAMENT KLASSLARI (vendor/filament/tables/resources/views/index.blade.php
 * va resources/css/{content,table,cell,row}.css, 2026-10-10 da o'qilgan):
 *   .fi-ta-content-ctn   — jadval o'ramasi (overflow-x: auto)
 *   .fi-ta-table         — <table>
 *   .fi-ta-selection-cell — belgilash katagi (th ham, td ham)
 *   tr.fi-striped / tr.fi-selected / tr.fi-clickable — qator fonini o'zgartiruvchi holatlar
 *   tr.fi-ta-group-header-row / .fi-ta-summary-row / .fi-ta-summary-header-row /
 *   .fi-ta-row-not-reorderable — qotirilmaydigan maxsus qatorlar
 *   --gray-50 / --gray-200 / --gray-900 — Filament paneli :root ga yozadigan ranglar
 *
 * ⚠️ XAVF: Filament yangilanganda shu klass nomlaridan biri o'zgarsa, bu CSS XATO
 * BERMAY, JIM ishlamay qoladi (jadval avvalgidek qaytadi). `composer update filament/*`
 * dan keyin brauzerda tekshiring: uzun jadvalda ichki skroll bormi · sarlavha
 * qotganmi · o'ngga surilganda birinchi ustun qolyaptimi · qorong'i rejim.
 *
 * CHEKLOVLAR:
 *  - < 640px (Filament `sm`) da HECH NARSA o'zgarmaydi: u yerda `stackedOnMobile`
 *    ko'rinishi ishlaydi va qotgan ustun uni buzardi.
 *  - QOTADIGAN ustun — jadvalning BIRINCHI ustuni. Shuning uchun ODAM ro'yxatlarida odam
 *    ustuni BIRINCHI turadi va ism bilan telefon bitta katakda (`PersonLabel::name()` +
 *    `description(PersonLabel::phone())`; qidiruv — `PersonSearch`): Ustalar, Mijozlar,
 *    Foydalanuvchilar, Telegram profillari, Ustaxona so'rovlari, Egalik da'volari, Oyliklar,
 *    Oylik kelishuvlari, Shogirdliklar (Ustoz), Sheriklik (Usta A), kutayotgan arizalar va
 *    ustalar, Foydalanuvchi sahifasidagi "Ustalardagi yozuvlari". Loyiha egasi, 2026-10-10 —
 *    "bo'lmasa shu nomer shu odamga tegishli ekani bilinmaydi". Yangi odam ro'yxati
 *    qo'shilsa shu qoidaga amal qiling.
 *  - Yozuv kodi yoki turi birinchi turgan ro'yxatlarda (Tashriflar, sharhlar, bildirishnomalar,
 *    so'rov bloklari) kod/tur qotadi, odam keyingi ustunlarda. Nom yoki rasm birinchi turgan
 *    ro'yxatlarda ham: Ustaxonalar ("Egasi" — 2-ustun), katalog takliflari va Moderatsiya →
 *    Ustaxona takliflari ("Taklif qilgan usta"). Juftlikda faqat birinchi odam qotadi:
 *    Sheriklikdagi "Usta B" va Shogirdlikdagi "Shogird" ikkinchi. Hammasida ism+telefon
 *    bitta katakda (joyi o'zgarmagan).
 *  - Birinchi ustun rasm bo'lsa (Avto brendlar — logo, Intro slaydlar, Ustaxona rasmlari)
 *    shu rasm qotadi, nom emas — ustun kengligi noma'lum, ikkinchisini CSS bilan
 *    qotirib bo'lmaydi.
 *  - Odam ro'yxati bo'lmagan jadvallarda birinchi ustun `Tartib` / `ID` / `Vaqt`
 *    (Avto ranglar va Sharh teglari `sort_order`; Bildirishnoma xatolari va navbati `id`;
 *    API xatolari `occurred_at`): qotgan ustun ularda ma'nosiz, lekin zararsiz.
 *  - Guruh sarlavhasi, jamlama (summary) qatorlari va ustun-guruh qatori qotmaydi.
 *  - Qotgan katak ichidagi dropdown (z-20) keyingi qatorning qotgan katagi (z-1)
 *    ostida qolishi mumkin: bu loyihada birinchi ustunda dropdown yo'q.
 *  - O'ng chetdagi soya `data-carfit-scrolled-x` atributiga bog'liq (tables.js). JS
 *    ishlamasa soya ko'rinmaydi — qotgan ustun esa baribir ishlaydi.
 *
 * Z-INDEX: 1 = tana katagi · 2 = sarlavha katagi · 3 = kesishgan sarlavha katagi.
 * Hammasi dropdown paneli (z-20) va topbar (z-30) dan past.
 *
 * DROPDOWN: qator amallari menyusi `x-float` + `flip` bilan joylanadi (kesuvchi ota
 * sifatida shu o'ramani hisobga oladi), `fi-fixed-positioning-context` esa faqat
 * Select uchun (`position: fixed`). Shuning uchun bu fayl o'ramaga `transform`,
 * `filter`, `contain` KIRITMAYDI — kirgizilsa fixed Select paneli buziladi.
 *
 * ⚠️ `border-collapse: collapse` jadvalda katakning TASHQI `box-shadow` i chizilmaydi
 * (Chrome'da o'lchandi; `inset` chiziladi). Shuning uchun o'ng chetdagi soya
 * `::after` bilan qilingan, sarlavha chizig'i esa `inset` bilan.
 */

/* ── 0. Qiymatlar (kenglikka bog'liq emas) ─────────────────────────────────── */
.fi-ta-content-ctn {
    /* `.fi-ta-ctn` fonining AYNAN o'zi: qotgan katak shaffof bo'lsa, ostidagi matn ko'rinib qoladi. */
    --carfit-ta-base: #fff;
    /* thead / juft qator / hover / belgilangan qator fonining ustiga qo'yiladigan "yuvish" qatlami. */
    --carfit-ta-tint: var(--gray-50, #f9fafb);
    /* Sarlavha ostidagi chiziq (Filament `divide-y` rangi). */
    --carfit-ta-line: var(--gray-200, #e5e7eb);
    /* Qotgan blokning o'ng chetidagi soya. */
    --carfit-ta-shadow: rgb(0 0 0 / 0.1);
    /* Belgilash katagi kengligi = ps-6 (1.5rem) + checkbox (1rem) + pe-3 (0.75rem). */
    --carfit-ta-select-w: 3.25rem;
    /* Jadval balandligi = ekran − shu ofset (hisobi 1-bo'limda). Ko'proq qator kerak bo'lsa kamaytiring. */
    --carfit-ta-offset: 16rem;
}

.dark .fi-ta-content-ctn {
    --carfit-ta-base: var(--gray-900, #111827);
    --carfit-ta-tint: rgb(255 255 255 / 0.05);
    --carfit-ta-line: rgb(255 255 255 / 0.05);
    --carfit-ta-shadow: rgb(0 0 0 / 0.45);
}

@media (min-width: 40rem) {
    /* ── 1. Jadval o'z ichida skroll bo'ladi ──────────────────────────────── */
    /*
     * 100dvh − 16rem (`--carfit-ta-offset`) = topbar 4rem + jadval asboblar paneli
     * ≈ 3.8rem + sahifalash ≈ 3.8rem + bitta indikator qatori va havo ≈ 4.4rem.
     * Ya'ni sahifa jadval kartasining boshigacha surilganda karta + sahifalash
     * ekranga sig'adi. `max()` — past oynada (devtools ochiq, split-screen) jadval
     * 20rem dan kichrayib ketmasin. Qatori kam jadvalga ta'sir QILMAYDI (max-height
     * — faqat tom). Birinchi qator — `dvh` ni bilmaydigan brauzer uchun zaxira.
     */
    .fi-ta-content-ctn {
        max-height: max(20rem, calc(100vh - var(--carfit-ta-offset)));
        max-height: max(20rem, calc(100dvh - var(--carfit-ta-offset)));
        overflow: auto;
        /* Tab bilan fokus olgan qator qotgan sarlavha ostida qolmasin (sarlavha ≈ 3.6rem). */
        scroll-padding-top: 3.5rem;
    }

    /* Belgilash katagi kengligi QAT'IY: undan keyingi ustun `left` ni shu kenglikdan oladi. */
    .fi-ta-content-ctn .fi-ta-table .fi-ta-selection-cell {
        width: var(--carfit-ta-select-w);
        min-width: var(--carfit-ta-select-w);
        max-width: var(--carfit-ta-select-w);
    }

    /* ── 2. Sarlavha tepada qotadi ─────────────────────────────────────────── */
    /*
     * Faqat OXIRGI sarlavha qatori (`tr:last-child`): ustun-guruh qatori bo'lsa u
     * qotmaydi, aks holda ikki qator bir-birining ustiga tushardi.
     * Fon — NOSHAFFOF (base + tint); Filament fonni `tr` ga beradi, `th` ga emas.
     *
     * Chiziq: `thead` ning pastki chizig'i (collapsed) katak bilan birga qotmaydi,
     * ya'ni sarlavha qotganda yo'qolardi. Uni `th` ning o'zi `inset` soya bilan chizadi,
     * Filament chizig'i esa nolga tushiriladi (aks holda dam olish holatida 2px bo'lardi).
     */
    .fi-ta-content-ctn .fi-ta-table > thead {
        border-bottom-width: 0;
    }

    .fi-ta-content-ctn .fi-ta-table > thead > tr:last-child > th {
        position: sticky;
        top: 0;
        z-index: 2;
        background-color: var(--carfit-ta-base);
        background-image: linear-gradient(var(--carfit-ta-tint), var(--carfit-ta-tint));
        box-shadow: inset 0 -1px 0 var(--carfit-ta-line);
    }

    /* ── 3. Chap ustunlar qotadi: sarlavha (kesishgan katak eng tepada) ─── */
    .fi-ta-content-ctn .fi-ta-table > thead > tr:last-child > th:first-child {
        left: 0;
        z-index: 3;
    }

    .fi-ta-content-ctn .fi-ta-table > thead > tr:last-child > th.fi-ta-selection-cell:first-child + th {
        left: var(--carfit-ta-select-w);
        z-index: 3;
    }

    /* ── 4. Qator holatlari (qotgan katak fonini hisoblash uchun) ──────────── */
    /*
     * Filament qator fonini `tr` ga beradi (juft qator, hover, belgilangan). Qotgan
     * katak noshaffof bo'lishi shart, shuning uchun AYNAN shu holatlar bu yerda
     * `--carfit-ta-wash` ga aylantiriladi va katak fonini o'zi chizadi.
     * Belgilangan qatorning chap chizig'i (`> :first-child::before`) Filament'niki —
     * u qotgan katakka ham to'g'ri yopishadi (sticky ham "positioned").
     * Qatorlar orasidagi chiziqqa TEGILMAYDI: collapsed chiziq katak qutisidan
     * tashqarida turadi va qotgan katak ostida ham ko'rinib turadi (o'lchandi).
     */
    .fi-ta-content-ctn .fi-ta-table > tbody > tr {
        --carfit-ta-wash: transparent;
    }

    .fi-ta-content-ctn .fi-ta-table > tbody > tr.fi-striped,
    .fi-ta-content-ctn .fi-ta-table > tbody > tr.fi-selected {
        --carfit-ta-wash: var(--carfit-ta-tint);
    }

    @media (hover: hover) {
        .fi-ta-content-ctn .fi-ta-table > tbody > tr.fi-clickable:hover {
            --carfit-ta-wash: var(--carfit-ta-tint);
        }
    }

    /* ── 5. Chap ustunlar qotadi: tana ─────────────────────────────────────── */
    /*
     * Ikki holat: (a) belgilash katagi bor — u `left: 0`, undan keyingi katak
     * `left: katak kengligi`; (b) katagi yo'q — birinchi katakning o'zi `left: 0`.
     * `:first-child` + qo'shni (`+`) tanlagich yetadi, `:has()` kerak emas.
     * Guruh sarlavhasi, jamlama va ustun-qidiruv qatorlari `:not()` bilan chiqarilgan.
     */
    .fi-ta-content-ctn .fi-ta-table > tbody > tr:not(.fi-ta-group-header-row, .fi-ta-summary-row, .fi-ta-summary-header-row, .fi-ta-row-not-reorderable) > td:first-child,
    .fi-ta-content-ctn .fi-ta-table > tbody > tr:not(.fi-ta-group-header-row, .fi-ta-summary-row, .fi-ta-summary-header-row, .fi-ta-row-not-reorderable) > td.fi-ta-selection-cell:first-child + td {
        position: sticky;
        z-index: 1;
        background-color: var(--carfit-ta-base);
        background-image: linear-gradient(var(--carfit-ta-wash), var(--carfit-ta-wash));
    }

    .fi-ta-content-ctn .fi-ta-table > tbody > tr:not(.fi-ta-group-header-row, .fi-ta-summary-row, .fi-ta-summary-header-row, .fi-ta-row-not-reorderable) > td:first-child {
        left: 0;
    }

    .fi-ta-content-ctn .fi-ta-table > tbody > tr:not(.fi-ta-group-header-row, .fi-ta-summary-row, .fi-ta-summary-header-row, .fi-ta-row-not-reorderable) > td.fi-ta-selection-cell:first-child + td {
        left: var(--carfit-ta-select-w);
    }

    /* ── 6. O'ng chetdagi soya — qotgan blokning OXIRGI katagiga (sarlavha va tana) ─ */
    /*
     * FAQAT o'rama gorizontal surilgan bo'lsa (`data-carfit-scrolled-x`, uni tables.js qo'yadi):
     * surilmagan jadvalda soya keraksiz — qotgan blok o'z joyida turibdi. Atribut
     * yo'q (JS o'chiq yoki surilmagan) bo'lsa `::after` umuman yaratilmaydi.
     */
    .fi-ta-content-ctn[data-carfit-scrolled-x] .fi-ta-table > thead > tr:last-child > th:first-child:not(.fi-ta-selection-cell)::after,
    .fi-ta-content-ctn[data-carfit-scrolled-x] .fi-ta-table > thead > tr:last-child > th.fi-ta-selection-cell:first-child + th::after,
    .fi-ta-content-ctn[data-carfit-scrolled-x] .fi-ta-table > tbody > tr:not(.fi-ta-group-header-row, .fi-ta-summary-row, .fi-ta-summary-header-row, .fi-ta-row-not-reorderable) > td:first-child:not(.fi-ta-selection-cell)::after,
    .fi-ta-content-ctn[data-carfit-scrolled-x] .fi-ta-table > tbody > tr:not(.fi-ta-group-header-row, .fi-ta-summary-row, .fi-ta-summary-header-row, .fi-ta-row-not-reorderable) > td.fi-ta-selection-cell:first-child + td::after {
        content: "";
        position: absolute;
        top: 0;
        bottom: 0;
        left: 100%;
        width: 0.5rem;
        background-image: linear-gradient(to right, var(--carfit-ta-shadow), transparent);
        pointer-events: none;
    }
}

/* Bosmada ichki skroll yo'q — aks holda faqat ko'rinib turgan qatorlar chop etilardi. */
@media print {
    .fi-ta-content-ctn {
        max-height: none;
    }
}
