/*
 * hc_touch_actions.css — tinte de atingere pentru actiunile de rand Hub Conta.
 *
 * Se aplica DOAR clasei-marcaj .hc-row-action (ancorele / butoanele icon-only
 * de pe randurile listelor Hub Conta — staff si portal —, iconurile injectate
 * din JS in tabelele native Rise si butoanele mici din input-group / antet),
 * niciodata actiunilor native Rise. Pe desktop (pointer: fine) nu schimba
 * nimic: aspectul ramane cel nativ (td.option a / .action-option din
 * app.all.css). Pe dispozitive cu touch (pointer: coarse): zona de atingere
 * minim 44 x 44 px, icon vizibil ~20 px, ~8 px intre actiuni, actiunile raman
 * intregi la impachetare; la fel in randul copil DataTables (dtr-details).
 * Fara culori proprii: fundalul, bordura si culoarea vin din regulile native
 * si din temele Hub Conta (hc_theme_dark / hc_theme_paper).
 * Tot aici, modalele proprii ale modulului Incasari pe mobil (injectate si pe
 * paginile native, unde e incarcat doar acest CSS) si zona de atingere a
 * butoanelor native „Adauga plata” pe care Hub Conta le preia.
 */
@media (pointer: coarse) {
    .hc-row-action.hc-row-action {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        box-sizing: border-box;
        min-width: 44px !important;
        min-height: 44px !important;
        padding: 0 !important;
        /* marginea verticala negativa tine inaltimea randului aproape de cea nativa */
        margin: -4px 4px;
        vertical-align: middle;
        white-space: nowrap;
        line-height: 1;
    }
    .hc-row-action.hc-row-action svg,
    .hc-row-action.hc-row-action .icon-16,
    .hc-row-action.hc-row-action .icon-14 {
        width: 20px;
        height: 20px;
        margin: 0 !important;
    }

    /* Butoanele din input-group / antet stau in flux normal, fara marginea negativa */
    .input-group > .hc-row-action.hc-row-action,
    .btn.hc-row-action.hc-row-action {
        margin: 0;
    }

    /* Celula / randul copil cu actiuni: se impacheteaza pe actiuni intregi, nu in mijlocul lor */
    td:has(> .hc-row-action),
    td:has(> .hc-row-actions),
    .dtr-details .dtr-data:has(.hc-row-action) {
        white-space: normal;
    }
    .dtr-details .hc-row-action.hc-row-action {
        margin: 2px 4px;
    }
    /* Linia compacta a listei Incasari: actiunile stau intr-un flex cu gap, fara marginea negativa */
    .hc-inc-compact-actions .hc-row-action.hc-row-action {
        margin: 0;
    }
    /* Modalele Incasari (incasare, asociere manuala): suma alocata se editeaza
       cu degetul (44 px; 16 px evita zoom-ul la focus) */
    #hc-facturi-table .hc-inv-suma,
    #neasoc-facturi-table .neasoc-suma {
        min-height: 44px;
        font-size: 16px;
        -moz-appearance: textfield;
        appearance: textfield;
    }
    /* fara sagetile de incrementare: suma se tasteaza, iar latimea ramane cifrelor */
    #hc-facturi-table .hc-inv-suma::-webkit-inner-spin-button,
    #hc-facturi-table .hc-inv-suma::-webkit-outer-spin-button,
    #neasoc-facturi-table .neasoc-suma::-webkit-inner-spin-button,
    #neasoc-facturi-table .neasoc-suma::-webkit-outer-spin-button {
        -webkit-appearance: none;
        margin: 0;
    }
    #hc-facturi-table .hc-inv-chk,
    #hc-facturi-table #chk-all-facturi,
    #neasoc-facturi-table .neasoc-chk {
        width: 20px;
        height: 20px;
    }
    /* „Adauga plata” nativ, preluat de Hub Conta: pagina de plati si lista
       Facturi (butoanele de titlu raman in pagina pe mobil,
       native_payment_modal.js), tab-ul Plati din fisa clientului, cardul
       Plati din fisa facturii. Zona de atingere de 44 px e un pseudo-element
       transparent: aspectul ramane cel nativ. */
    .hc-inc-adaugare .title-button-group .btn,
    #client-payments-tabs .title-button-group .btn,
    .invoice-details-view .card-body > a[data-post-invoice_id][data-action-url*="invoice_payments/payment_modal_form"] {
        position: relative;
    }
    .hc-inc-adaugare .title-button-group .btn::after,
    #client-payments-tabs .title-button-group .btn::after,
    .invoice-details-view .card-body > a[data-post-invoice_id][data-action-url*="invoice_payments/payment_modal_form"]::after {
        content: "";
        position: absolute;
        top: 50%;
        left: 0;
        right: 0;
        height: 44px;
        margin-top: -22px;
    }
}

/* ── Modalele Incasari pe ecrane inguste: tabelul facturilor de plata ─────
 * (Views/incasari/incasari/modal_form.php, #hc-facturi-table; asocierea
 * manuala, Views/incasari/neasociate/index.php, #neasoc-facturi-table). Sub
 * md (si pe ecranele tactile sub lg, unde dialogul are 500 px) raman bifa,
 * numarul (cu descrierea dedesubt), soldul si suma alocata; latimile fixe
 * tin tabelul in latimea corpului modalului, fara derulare orizontala.
 * hc-inv-md-only / hc-inv-xs-only inlocuiesc d-none / d-md-* (absente din
 * build-ul Bootstrap al Rise). */
@media (min-width: 992px), (min-width: 768px) and (hover: hover) {
    #hc-facturi-table .hc-inv-xs-only { display: none !important; }
}
@media (max-width: 767.98px), (hover: none) and (max-width: 991.98px) {
    #hc-facturi-table .hc-inv-md-only { display: none !important; }
    #hc-facturi-table,
    #neasoc-facturi-table {
        table-layout: fixed;
        width: 100%;
    }
    /* !important: antetele au latimi procentuale inline (layout-ul de desktop) */
    #hc-facturi-table th.hc-inv-col-chk,
    #neasoc-facturi-table th.hc-inv-col-chk  { width: 34px !important; }
    #hc-facturi-table th.hc-inv-col-nr,
    #neasoc-facturi-table th.hc-inv-col-nr   { width: auto !important; }
    #hc-facturi-table th.hc-inv-col-sold,
    #neasoc-facturi-table th.hc-inv-col-sold { width: 84px !important; }
    #hc-facturi-table th.hc-inv-col-suma,
    #neasoc-facturi-table th.hc-inv-col-suma { width: 100px !important; }
    #hc-facturi-table th,
    #hc-facturi-table td,
    #neasoc-facturi-table th,
    #neasoc-facturi-table td {
        padding-left: 6px;
        padding-right: 6px;
        white-space: normal;
        word-break: break-word;
    }
    /* numarul facturii si soldul raman pe o linie; descrierea de sub numar se impacheteaza */
    #hc-facturi-table td code,
    #hc-facturi-table td.inv-due-display,
    #neasoc-facturi-table td code,
    #neasoc-facturi-table td.inv-due-display {
        white-space: nowrap;
    }
    #hc-facturi-table .hc-inv-suma,
    #neasoc-facturi-table .neasoc-suma {
        box-sizing: border-box;
        width: 100%;
        min-width: 0;
        max-width: 100%;
        padding-left: 6px;
        padding-right: 4px;
    }
}

/* ── Modalele proprii ale modulului Incasari pe mobil / PWA ───────────────
 * (.hc-inc-modal: incasare, asociere manuala, sugestii si cheltuiala din
 * Procesare extrase, banca, registru). Rise plafoneaza corpul doar pentru
 * #ajaxModal (setModalScrollbar) si pune .modal { overflow: hidden } sub
 * 500 px, asa ca un modal propriu mai inalt decat ecranul iese din vizor.
 * Ca modalele native pe mobil: sub sm ecran complet (modal-fullscreen-sm-down,
 * Bootstrap 5, in markup); pe ecrane tactile si sub md inaltimea e plafonata
 * la ecranul vizibil (100dvh urmareste bara de adresa, 100vh e fallback-ul;
 * zonele sigure iOS raman libere), corpul deruleaza, antetul si subsolul
 * raman pe ecran. Formularul care cuprinde corpul si subsolul intra in
 * coloana flex a continutului. Desktopul (mouse, >= md) ramane neschimbat. */
@media (hover: none), (max-width: 767.98px) {
    .hc-inc-modal .modal-content {
        max-height: calc(100vh - 3.5rem);
        max-height: calc(100dvh - 3.5rem - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    }
    .hc-inc-modal .modal-content > form {
        display: flex;
        flex-direction: column;
        flex: 1 1 auto;
        min-height: 0;
    }
    .hc-inc-modal .modal-body {
        overflow-x: hidden;
        overflow-y: auto;
        min-height: 0;
        -webkit-overflow-scrolling: touch;
    }
    /* Rise anuleaza derularea .table-responsive sub 500 px; in modal, un tabel
       mai lat decat corpul deruleaza in containerul lui, nu se taie */
    .hc-inc-modal .table-responsive {
        overflow-x: auto !important;
    }
}
/* sub md dialogul Rise e lipit de marginea de sus (margin: 0): tot ecranul vizibil */
@media (max-width: 767.98px) {
    .hc-inc-modal .modal-content {
        max-height: 100vh;
        max-height: calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    }
}
@media (max-width: 575.98px) {
    .hc-inc-modal .modal-fullscreen-sm-down {
        height: 100%;
        height: 100dvh;
    }
    .hc-inc-modal .modal-content {
        max-height: none;
        padding-top: env(safe-area-inset-top);
        padding-bottom: env(safe-area-inset-bottom);
    }
}

/* ── Lista Incasari pe mobil: linia compacta din prima coloana ────────────
 * (hc_payment_receipt_list.js, modul compact: responsive-ul DataTables activ
 * pe #invoice-payment-table). Blocul sta sub numarul facturii, in celula
 * nativa `all`: width:0 + min-width:100% ca sa nu lateasca celula tabelului
 * (layout auto), numele clientului se trunchiaza cu ellipsis la latimea
 * celulei, iar actiunile se impacheteaza pe randuri intregi. Fara culori
 * proprii: badge-default / text-muted native. */
.hc-inc-compact {
    display: block;
    width: 0;
    min-width: 100%;
    margin-top: 4px;
    white-space: normal;
    font-weight: normal;
}
.hc-inc-compact-info {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}
.hc-inc-compact-client {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.hc-inc-compact-source {
    flex: 0 0 auto;
}
.hc-inc-compact-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    margin-top: 4px;
}

/* ── Procesare extrase / Neasociate pe telefon ───────────────────────────
 * (#rec-table, #neasoc-table). Sub 500 px Rise anuleaza derularea
 * .table-responsive si tabelele se taiau, cu actiunile in afara ecranului.
 * Ca in lista de plati, JS-ul tab-ului randeaza atunci randurile compact
 * (data cu linia compacta .hc-inc-compact dedesubt + suma); aici se ascund
 * antetele coloanelor mutate in linia compacta. Peste 500 px, neschimbat. */
@media (max-width: 500px) {
    #rec-table .hc-inc-col-lat,
    #neasoc-table .hc-inc-col-lat {
        display: none;
    }
    /* !important: latimile inline ale antetelor sunt ale desktopului; suma
       ia cat cifrele, restul ramane liniei compacte */
    #rec-table th:first-child,
    #neasoc-table th:first-child {
        width: auto !important;
    }
    #rec-table th.hc-inc-col-suma,
    #neasoc-table th.hc-inc-col-suma {
        width: 1% !important;
    }
    /* coloana e mai ingusta decat in lista de plati: insigna trece pe randul
       urmator cand numele are nevoie de loc (numele se trunchiaza doar daca
       nu incape singur) */
    #rec-table .hc-inc-compact-info,
    #neasoc-table .hc-inc-compact-info {
        flex-wrap: wrap;
    }
}
