/* Vista PC / telefono - Tabelle di configurazione (prefisso tz-).
   Solo le regole proprie di queste pagine: quelle comuni stanno in app.css (ed-*, vt-*, mg-pagina--tel). */

/*
 * Schema comune delle tabelle (Components\Tabelle): ogni pagina è racchiusa in
 *   <div class="tz-pagina tz-<nome> tz-pagina--pc | tz-pagina--tel">
 * scelto da VistaSchermoService (bottone dell'Header). Il blocco <style> locale di ogni pagina è
 * limitato alla sua classe tz-<nome>, così non si spande sulle altre pagine aperte.
 *   tz-colonne   riga "elenco a sinistra + maschera a destra"
 *   tz-dettaglio colonna della maschera (riceve il fuoco dopo il tocco su una voce, su telefono)
 * Su telefono: una colonna, etichette sopra i campi, controlli alti 40px con testo a 16px,
 * pulsanti alti 44px, finestre modali a tutto schermo.
 * Le regole usano due classi (.tz-pagina.tz-pagina--tel) per vincere sugli stili locali limitati.
 */

/* ── PC: nessun cambiamento ────────────────────────────────────────────── */
.tz-dettaglio:focus,
.tz-dettaglio:focus-visible { outline: none; }

/* ── TELEFONO ──────────────────────────────────────────────────────────── */
.tz-pagina.tz-pagina--tel { padding-bottom: 1rem; overflow-x: clip; }   /* clip, non hidden: le barre sticky restano attaccate */

/* Barra in alto (ToolbarTabelle e barre locali tb-bar) */
.tz-pagina.tz-pagina--tel .tb-inner { padding: .45rem .6rem; gap: .5rem; flex-wrap: wrap; }
.tz-pagina.tz-pagina--tel .tb-caption { flex: 1 1 0; white-space: normal; font-size: .88rem; }
.tz-pagina.tz-pagina--tel .tb-actions { flex-wrap: wrap; justify-content: flex-end; }
.tz-pagina.tz-pagina--tel .tb-btn { min-height: 44px; min-width: 44px; justify-content: center; }

/* Elenco a sinistra + maschera a destra → uno sotto l'altro */
.tz-pagina.tz-pagina--tel .tz-colonne { flex-direction: column !important; align-items: stretch !important; gap: .75rem !important; }
.tz-pagina.tz-pagina--tel .tz-colonne > * { flex: 0 0 auto !important; width: 100% !important; min-width: 0 !important; max-width: none !important; }
.tz-pagina.tz-pagina--tel .tz-dettaglio { scroll-margin-top: 120px; }

/* Elenco: voci alte da toccare, ricerca a 16px, lista non più alta di metà schermo */
.tz-pagina.tz-pagina--tel .cat-list-body { max-height: 45vh; }
.tz-pagina.tz-pagina--tel .cat-list-item { min-height: 48px; padding-top: .6rem; padding-bottom: .6rem; }
.tz-pagina.tz-pagina--tel .cat-list-search-input { min-height: 42px; font-size: 16px; }
.tz-pagina.tz-pagina--tel .cat-list-footer .fe-add-btn { width: 100%; justify-content: center; }

/* Maschera: una colonna, etichette sopra */
.tz-pagina.tz-pagina--tel .fe-section-body { padding: .75rem; }
.tz-pagina.tz-pagina--tel .fe-field-row { flex-direction: column; align-items: stretch; gap: .25rem; }
.tz-pagina.tz-pagina--tel .fe-label { flex: none; width: auto; padding-top: 0; }
.tz-pagina.tz-pagina--tel .fe-control,
.tz-pagina.tz-pagina--tel .fe-control[style] { flex: none; width: 100%; max-width: none !important; }
.tz-pagina.tz-pagina--tel .fe-control--short { max-width: none; }
/* righe con più campi: a capo, i campi numerici piccoli (--xs) due per riga, gli altri a tutta larghezza */
.tz-pagina.tz-pagina--tel .fe-field-row--split { flex-direction: row; flex-wrap: wrap; align-items: flex-end; gap: .6rem; }
.tz-pagina.tz-pagina--tel .fe-field-row--split > * { flex: 1 1 100% !important; width: 100%; min-width: 0; padding-top: 0 !important; }
.tz-pagina.tz-pagina--tel .fe-field-row--split > .fe-label { flex: 1 1 100% !important; }
.tz-pagina.tz-pagina--tel .fe-field-row--split > .fe-field-group--xs { flex: 1 1 calc(50% - .6rem) !important; width: auto; }
.tz-pagina.tz-pagina--tel .fe-field-group,
.tz-pagina.tz-pagina--tel .fe-field-group[style] { padding-top: 0 !important; }
.tz-pagina.tz-pagina--tel .row > [class*="col"] { flex: 0 0 100%; max-width: 100%; }
.tz-pagina.tz-pagina--tel .input-group[style],
.tz-pagina.tz-pagina--tel .fe-section[style] { max-width: none !important; }
.tz-pagina.tz-pagina--tel textarea.form-control { font-size: 16px; }

/* Barra filtri sopra l'elenco (Commesse) */
.tz-pagina.tz-pagina--tel .tz-filtri { flex-wrap: wrap; gap: .5rem !important; }
.tz-pagina.tz-pagina--tel .tz-filtri > * { flex: 1 1 100%; }
.tz-pagina.tz-pagina--tel .tz-filtri select[style] { width: 100% !important; }

/* Schede a linguette (Commesse, Esercizi contabili): scorrono se non stanno in larghezza */
.tz-pagina.tz-pagina--tel .fe-tab-bar { overflow-x: auto; flex-wrap: nowrap; scrollbar-width: thin; }
.tz-pagina.tz-pagina--tel .fe-tab { flex: 1 0 auto; justify-content: center; min-height: 44px; padding: .5rem .7rem; white-space: nowrap; }

/* Pagine con stile ec-* (Banche azienda, Credenziali Microsoft 365) */
.tz-pagina.tz-pagina--tel .ec-page { padding: .5rem; }
.tz-pagina.tz-pagina--tel .ec-header { flex-wrap: wrap; gap: .5rem; }
.tz-pagina.tz-pagina--tel .ec-filters-grid { grid-template-columns: minmax(0, 1fr); }
.tz-pagina.tz-pagina--tel .ec-field--wide { grid-column: auto; }
.tz-pagina.tz-pagina--tel .ec-input { min-height: 40px; font-size: 16px; }
.tz-pagina.tz-pagina--tel .ec-input-btn { min-width: 44px; }

/* Gestione gruppi: scelte e ricerca comode al dito */
.tz-pagina.tz-pagina--tel .gg-radio-card { min-height: 44px; flex: 1 1 auto; justify-content: center; }
.tz-pagina.tz-pagina--tel .gg-search-input { min-height: 42px; font-size: 16px; }

/* Aggiornamento listini prezzi: pulsanti di passo e di selezione */
.tz-pagina.tz-pagina--tel .glp-btn,
.tz-pagina.tz-pagina--tel .glp-toolbar-btn { min-height: 44px; }
.tz-pagina.tz-pagina--tel .glp-grid-toolbar { flex-wrap: wrap; padding: .5rem; }
.tz-pagina.tz-pagina--tel .glp-grid-toolbar .glp-toolbar-btn { flex: 1 1 0; justify-content: center; }
.tz-pagina.tz-pagina--tel .glp-radio { min-width: 0; min-height: 44px; }
.tz-pagina.tz-pagina--tel .glp-segno { width: 44px; height: 44px; }
.tz-pagina.tz-pagina--tel .glp-recap-grid { grid-template-columns: 1fr 1fr; }
.tz-pagina.tz-pagina--tel .glp-progress { width: min(240px, 80vw); }

/* Controlli comodi al dito (16px: niente zoom automatico su iPhone) */
.tz-pagina.tz-pagina--tel .form-control,
.tz-pagina.tz-pagina--tel .form-select { min-height: 40px; font-size: 16px; }
.tz-pagina.tz-pagina--tel .dxbl-text-edit { min-height: 40px; }
.tz-pagina.tz-pagina--tel .dxbl-text-edit input { font-size: 16px; }
.tz-pagina.tz-pagina--tel .form-check-input { width: 1.3em; height: 1.3em; }
.tz-pagina.tz-pagina--tel .fe-add-btn,
.tz-pagina.tz-pagina--tel .fe-del-btn,
.tz-pagina.tz-pagina--tel .pr-btn,
.tz-pagina.tz-pagina--tel .fe-search-btn { min-height: 44px; }
.tz-pagina.tz-pagina--tel .input-group > .btn { min-width: 44px; }

/* Tabelle html nelle maschere: scorrono dentro la sezione, la pagina no */
.tz-pagina.tz-pagina--tel .table-responsive { -webkit-overflow-scrolling: touch; }
.tz-pagina.tz-pagina--tel .fe-table td,
.tz-pagina.tz-pagina--tel .fe-table th { padding-top: .55rem; padding-bottom: .55rem; }
.tz-pagina.tz-pagina--tel .fe-row-delete { min-width: 40px; min-height: 40px; }

/* Finestre modali a tutto schermo (come .modal-fullscreen di Bootstrap) */
.tz-pagina.tz-pagina--tel .modal-dialog { width: 100vw; max-width: none !important; height: 100%; margin: 0; }
.tz-pagina.tz-pagina--tel .modal-content { height: 100%; border: 0; border-radius: 0; }
.tz-pagina.tz-pagina--tel .modal-body { overflow-y: auto; }
.tz-pagina.tz-pagina--tel .modal-footer .btn { min-height: 44px; flex: 1 1 0; }

/*
 * Tabelle html → schede (solo CSS, stesso markup e stessi comandi): class="... tz-righe-schede" sulla <table>.
 * Ogni riga diventa una scheda; le celle con data-lbl="..." mostrano l'etichetta sopra il valore,
 * tz-cella-tutta occupa tutta la larghezza. Se la prima colonna è una spunta, resta a sinistra
 * e la sua intestazione (Seleziona tutto) resta visibile con la scritta "Seleziona tutti".
 */
.tz-pagina.tz-pagina--tel .table-responsive:has(> .tz-righe-schede) { overflow-x: visible; }
.tz-pagina.tz-pagina--tel .tz-righe-schede,
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody { display: block; width: 100%; }
.tz-pagina.tz-pagina--tel .tz-righe-schede thead { display: block; }
.tz-pagina.tz-pagina--tel .tz-righe-schede thead tr { display: flex; }
.tz-pagina.tz-pagina--tel .tz-righe-schede thead th { display: none; }
.tz-pagina.tz-pagina--tel .tz-righe-schede thead th:first-child:has(input[type="checkbox"]) {
    display: flex; align-items: center; gap: .6rem; width: 100% !important; padding: .6rem .75rem;
    text-transform: none; letter-spacing: 0; font-size: .85rem;
}
.tz-pagina.tz-pagina--tel .tz-righe-schede thead th:first-child:has(input[type="checkbox"])::after { content: "Seleziona tutti"; }
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody tr {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .25rem .75rem;
    margin: .5rem; padding: .6rem .75rem; border: 1px solid var(--fe-border); border-radius: 10px; background: var(--ab-s-ffffff, #fff);
}
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody tr:has(> td:first-child input[type="checkbox"]) { grid-template-columns: 2.4rem repeat(2, minmax(0, 1fr)); }
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody td { display: block; border: 0; padding: .1rem 0 !important; min-width: 0; overflow-wrap: anywhere; text-align: left !important; }
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody td:first-child:has(input[type="checkbox"]) { grid-row: 1 / span 9; grid-column: 1; align-self: start; }
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody td:not([data-lbl]) { grid-column: auto / -1; font-weight: 600; }
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody td:first-child:has(input[type="checkbox"]) { grid-column: 1; }
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody td.tz-cella-tutta { grid-column: auto / -1; font-weight: 400; }
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody td[data-lbl]::before { content: attr(data-lbl); display: block; font-size: .7rem; color: var(--fe-text-muted); }
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody td[colspan] { grid-column: 1 / -1; text-align: center !important; }
.tz-pagina.tz-pagina--tel .tz-righe-schede tbody tr:has(> td[colspan]) { display: block; border: 0; }
.tz-pagina.tz-pagina--tel .tz-righe-schede .form-check-input { width: 1.4em; height: 1.4em; }

/* Testi lunghi nelle schede: tre righe al massimo */
.tz-testo-corto { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; white-space: pre-line; }

/* Pulsante "Modifica" accanto a "Elimina" nelle righe (al posto del doppio clic, solo su telefono) */
.tz-riga-modifica { color: var(--fe-blue) !important; margin-right: .25rem; }

/* Elenchi a schede (vt-*) dentro le tabelle: spunta di selezione */
.tz-spunta { display: flex; align-items: flex-start; gap: .6rem; }
.tz-spunta > input[type="checkbox"] { flex: 0 0 auto; width: 1.4em; height: 1.4em; margin-top: .1rem; }
.tz-spunta > div { flex: 1 1 auto; min-width: 0; }

/* ══ Tabelle della contabilità in vista compatta (come le maschere di contabilità) ══════════════════════════════════
   PianoDeiContiTab, CodiciTributiTab, TipoDocFeTab, LayoutDocTab: BarraContabilita (tb-bar sticky, menu ⋮) +
   div.ct-pagina > .ed-doc > .ed-foglio con ed-campo / cc-schede / cc-riga, griglia ct-griglia: le regole ct-/cc-/ed-
   sono in vista-contabilita.css e app.css. Finestre (PdcCostanti, PdcCostantiCespiti, PdcCostantiRaRi, PianoDeiContiDuplica,
   CodiciPagamentoSimulazione, CommesseCostiPreventivi): comando principale nella testata di FinestraMagazzino, campi in
   div.ct-pagina > .ed-doc.lc-modal-doc. Qui solo le regole proprie (ex stili locali delle pagine). */

/* Piano dei conti */
.ct-pagina.tz-pdc .tz-pdc-piano { width: 26rem; max-width: 100%; }
.ct-pagina.tz-pdc .tz-pdc-cod2 { width: 3.6rem; flex: none; }
.ct-pagina.tz-pdc .tz-pdc-cod3 { width: 4.4rem; flex: none; }
.ct-pagina.tz-pdc .tz-pdc-cod4 { width: 5.2rem; flex: none; }
.ct-pagina.tz-pdc .tz-pdc-descr .form-control { width: 20rem; max-width: 100%; }
.ct-pagina.tz-pdc .tz-pdc-ordina { width: auto; }
.ct-pagina.tz-pdc .tz-pdc-sep { margin-left: .8rem; }
.ct-pagina.tz-pdc .cc-riga .cc-gruppo-titolo { margin: 0; }
.ct-pagina .tz-spenta { opacity: .5; }
.ct-pagina.tz-pdc .ed-doc--tel .tz-pdc-cod2,
.ct-pagina.tz-pdc .ed-doc--tel .tz-pdc-cod3,
.ct-pagina.tz-pdc .ed-doc--tel .tz-pdc-cod4 { flex: 1 1 0; width: auto; min-width: 0; }
.ct-pagina.tz-pdc .ed-doc--tel .tz-pdc-descr .form-control { width: auto; }
.ct-pagina.tz-pdc .ed-doc--tel .tz-pdc-sep { margin-left: 0; }

/* Codici tributi, layout documenti */
.ct-pagina.tz-ctrib .tz-ctrib-check { margin-left: .8rem; white-space: nowrap; }
.ct-pagina.tz-laydoc .tz-laydoc-cod { width: 13rem; max-width: 100%; }

/* Finestre delle costanti P.D.C. (CampoCostantePdc, PianoCostantiPdc) */
.ct-pagina.tz-cost .tz-cost-piano { width: 26rem; max-width: 100%; }
.ct-pagina.tz-cost .tz-cost-griglia { display: grid; grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); gap: 0 2rem; }
.ct-pagina.tz-cost .ed-titolo { margin-top: .5rem; }
.ct-pagina.tz-cost .ed-doc--tel .tz-cost-griglia { grid-template-columns: minmax(0, 1fr); }
.ct-pagina.tz-cost .ed-doc--tel .tz-cost-piano { width: 100%; }
.ct-pagina .tz-titolo-elenco { display: flex; align-items: center; gap: .5rem; margin-top: .5rem; }
.ct-pagina .tz-titolo-elenco > .ed-titolo { flex: 1 1 auto; margin-top: 0; }
.tz-cost-ricerche .rc-modal { z-index: 1075; }
.tz-cost-ricerche .modal-backdrop { z-index: 1070; }

/* Simulazione codici pagamento */
.ct-pagina.tz-simpag .tz-simpag-mesi { display: flex; gap: .3rem; }
.ct-pagina.tz-simpag .tz-simpag-mesi > .form-select { width: 4.6rem; flex: none; }
.ct-pagina.tz-simpag .ed-doc--tel .tz-simpag-mesi > .form-select { flex: 1 1 0; width: auto; }
.ct-pagina.tz-simpag .ed-titolo { margin-top: .6rem; }
.tz-simpag-ricerche .rc-modal { z-index: 1075; }
.tz-simpag-ricerche .modal-backdrop { z-index: 1070; }

/* Costo preventivo della commessa (e consultazione listini) */
.ct-pagina.tz-cprev .tz-cprev-schede { margin-bottom: .6rem; }
.ct-pagina.tz-cprev .tz-cprev-campi { margin-bottom: .5rem; }
.ct-pagina.tz-cprev .tz-cprev-editor { display: flex; flex-wrap: wrap; gap: .5rem; align-items: flex-end; }
.ct-pagina.tz-cprev .tz-cprev-art { width: 13rem; }
.ct-pagina.tz-cprev .tz-cprev-conto { width: 11rem; }
.ct-pagina.tz-cprev .tz-cprev-num { width: 9rem; }
.ct-pagina.tz-cprev .tz-cprev-um { width: 4rem; }
.ct-pagina.tz-cprev .tz-cprev-descr { min-height: 31px; background: var(--ab-s-f3f5fa, #f3f5fa); }
.ct-pagina.tz-cprev .tz-cprev-etichetta { min-width: 12rem; }
.ct-pagina.tz-cprev .tz-cprev-richiamo { font-size: .8rem; color: var(--fe-text-muted, #6c757d); margin-top: .35rem; }
.ct-pagina.tz-cprev .tz-cprev-griglia { height: calc(100vh - 19rem); min-height: 16rem; }
.ct-pagina.tz-cprev .tz-cprev-griglia--alta { height: calc(100vh - 13rem); }
.ct-pagina.tz-cprev .tz-cprev-griglia-listini { height: 55vh; }
.ct-pagina.tz-cprev--tel .tz-cprev-art, .ct-pagina.tz-cprev--tel .tz-cprev-conto, .ct-pagina.tz-cprev--tel .tz-cprev-num { width: 100%; }
.tz-cprev-ricerche .rc-modal { z-index: 1075; }
.tz-cprev-ricerche .modal-backdrop { z-index: 1070; }
