/*
 * Tecnosabe - design system.
 * Token grafici in un posto solo: cambi qui e resta tutto coerente.
 */
:root {
    --ts-primary: #0f766e;        /* teal Tecnosabe */
    --ts-primary-dark: #0b5952;
    --ts-primary-050: #e6f2f1;
    --ts-ink: #1f2933;            /* testo principale */
    --ts-muted: #6b7280;
    --ts-bg: #f4f6f8;             /* sfondo app */
    --ts-surface: #ffffff;        /* card/superfici */
    --ts-border: #e5e7eb;
    --ts-radius: 12px;
    --ts-shadow: 0 1px 3px rgba(16,24,40,.06), 0 1px 2px rgba(16,24,40,.04);
    --ts-sidebar-w: 250px;
    /* Bootstrap override coerenti */
    --bs-primary: var(--ts-primary);
    --bs-primary-rgb: 15,118,110;
    --bs-body-color: var(--ts-ink);
    --bs-body-bg: var(--ts-bg);
    --bs-border-color: var(--ts-border);
    --bs-border-radius: var(--ts-radius);
}

body { background: var(--ts-bg); color: var(--ts-ink); }

/* Pulsanti/link coerenti col primario */
.btn-primary { --bs-btn-bg: var(--ts-primary); --bs-btn-border-color: var(--ts-primary); --bs-btn-hover-bg: var(--ts-primary-dark); --bs-btn-hover-border-color: var(--ts-primary-dark); --bs-btn-active-bg: var(--ts-primary-dark); }
a { color: var(--ts-primary); }

/* Logo testuale */
.ts-logo { font-weight: 800; letter-spacing: .5px; color: var(--ts-primary); }
.ts-logo span { color: var(--ts-ink); }
.ts-logo-lg { font-size: 1.9rem; }

/* --- Struttura app: sidebar + main --- */
.app-shell { display: flex; min-height: 100vh; }

.ts-sidebar {
    width: var(--ts-sidebar-w);
    background: var(--ts-surface);
    border-right: 1px solid var(--ts-border);
    display: flex; flex-direction: column;
    position: fixed; inset: 0 auto 0 0; z-index: 1040;
}
.ts-brand { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; border-bottom: 1px solid var(--ts-border); }
.ts-nav { padding: 12px; display: flex; flex-direction: column; gap: 2px; overflow-y: auto; }
.ts-nav-item {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 12px; border-radius: 10px;
    color: var(--ts-ink); text-decoration: none; font-weight: 500;
}
.ts-nav-item i { font-size: 1.1rem; color: var(--ts-muted); width: 1.2em; text-align: center; }
.ts-nav-item:hover { background: var(--ts-primary-050); }
.ts-nav-item.active { background: var(--ts-primary); color: #fff; }
.ts-nav-item.active i { color: #fff; }
.ts-nav-disabled { color: #aab2bd; cursor: default; }
.ts-nav-disabled:hover { background: transparent; }

/* Main */
.ts-main { flex: 1; margin-left: var(--ts-sidebar-w); display: flex; flex-direction: column; min-width: 0; }
.ts-topbar {
    height: 62px; background: var(--ts-surface); border-bottom: 1px solid var(--ts-border);
    display: flex; align-items: center; gap: 12px; padding: 0 20px; position: sticky; top: 0; z-index: 1030;
}
.ts-topbar-title { font-weight: 600; }
.ts-topbar-right { margin-left: auto; }
/* --- Notifiche (#29): campanella, menu, toast, banner di sessione --- */
.ts-campanella .btn { min-width: 44px; min-height: 40px; }
.ts-badge-notifiche { position: absolute; top: 2px; right: 2px; font-size: .65rem; }
.ts-punto-push { position: absolute; bottom: 4px; right: 6px; width: 9px; height: 9px; border-radius: 50%; background: #fd7e14; border: 2px solid #fff; }
.ts-menu-notifiche { width: min(380px, calc(100vw - 24px)); max-height: 70vh; overflow-y: auto; padding-top: .35rem; }
.ts-notifica { white-space: normal; padding: .45rem .9rem; border-left: 3px solid transparent; line-height: 1.25; }
.ts-notifica.ts-non-letta { background: #f2f7ff; border-left-color: var(--ts-primary); font-weight: 500; }
.ts-notifica-testo { display: inline; }
.ts-toast-area { z-index: 1090; max-width: min(420px, calc(100vw - 16px)); }
.ts-toast { background: #fff; }
.ts-toast-avviso { border-left: 4px solid #ffc107 !important; }
.ts-toast-urgente { border-left: 4px solid #dc3545 !important; }
.ts-banner-sessione { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 1095; margin: 0; }
@media (min-width: 768px) { .ts-banner-sessione { left: auto; width: 420px; } }
.ts-content { padding: 22px; }

/* Card coerenti */
.ts-card { background: var(--ts-surface); border: 1px solid var(--ts-border); border-radius: var(--ts-radius); box-shadow: var(--ts-shadow); padding: 20px; }
.ts-hero { border-left: 4px solid var(--ts-primary); }
.ts-card-icon { width: 44px; height: 44px; border-radius: 10px; background: var(--ts-primary-050); color: var(--ts-primary); display: flex; align-items: center; justify-content: center; font-size: 1.3rem; margin-bottom: 10px; }
/* --- Home (dashboard): riquadri con un conteggio; livello = bordo + icona + testo, mai solo colore --- */
.ts-kpi { padding: 14px 16px; border-left: 4px solid var(--ts-border); display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ts-kpi-link { color: inherit; text-decoration: none; display: block; }
.ts-kpi-link:hover .ts-kpi-etichetta, .ts-kpi-link:focus .ts-kpi-etichetta { text-decoration: underline; }
.ts-kpi-valore { font-size: 1.75rem; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.ts-kpi-etichetta { font-weight: 600; overflow-wrap: anywhere; }
.ts-kpi-stato { font-size: .8rem; color: var(--bs-secondary-color); }
.ts-kpi-dettaglio { font-size: .85rem; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.ts-kpi-dettaglio a { display: inline-block; }
.ts-kpi-nota { font-size: .75rem; color: var(--bs-secondary-color); margin-top: 2px; }
.ts-kpi--critico { border-left-color: #dc3545; }
.ts-kpi--critico .ts-kpi-stato { color: #b02a37; font-weight: 600; }
.ts-kpi--attenzione { border-left-color: #fd7e14; }
.ts-kpi--lettura { border-left-color: #6c757d; }
.ts-kpi--vuoto { border-left-color: #198754; }
.ts-kpi--vuoto .ts-kpi-valore, .ts-kpi--vuoto .ts-kpi-etichetta { color: var(--bs-secondary-color); }
.ts-kpi-riga { border-left: 4px solid #198754; }
.ts-fasce { display: flex; flex-wrap: wrap; gap: 6px; }
.ts-fasce .badge { font-size: .85rem; font-weight: 500; }
@media (max-width: 767.98px) {
    .ts-kpi-valore { font-size: 1.5rem; }
    .ts-kpi-dettaglio a { min-height: 44px; display: inline-flex; align-items: center; }   /* area di tocco */
    .ts-home-azioni { width: 100%; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 4px; }
    .ts-home-azioni .btn { white-space: nowrap; }
}

/* Tabelle */
table.dataTable { border-collapse: collapse !important; }
.table > :not(caption) > * > * { padding: .6rem .75rem; }
.table { font-size: calc(100% - 2px); }   /* #34 (Lorenzo): tutto il testo delle tabelle 2 px piu' piccolo (relativo: vale anche per .small e badge dentro le celle) */
.table.small { font-size: calc(.875em - 2px); }   /* #34: le tabelle gia' piccole (classe small sulla tabella) scendono anch'esse di 2 px */

/* Giacenze a matrice (vista per colonne #32 e vista per sede): articolo a sinistra, una colonna per sede o ubicazione.
   Intestazione su due righe (sede sopra, ubicazione sotto) della stessa altezza; quantità centrate sotto la loro intestazione;
   una linea separa una sede dall'altra; la colonna Totale è evidenziata. */
.ts-matrice > thead > tr > th { vertical-align: bottom; }
.ts-matrice > thead > tr > th.ts-matrice-sede { text-align: center; border-bottom: 2px solid var(--ts-primary); padding-bottom: .3rem; }
.ts-matrice th.ts-matrice-art { width: 30%; min-width: 16rem; }
table.ts-matrice > thead > tr > th.ts-q, table.ts-matrice > tbody > tr > td.ts-q { text-align: center; min-width: 6.5rem; font-variant-numeric: tabular-nums; }
.ts-matrice > thead > tr > th.ts-q { padding-right: 1.6rem; padding-left: 1.6rem; }   /* spazio simmetrico per la freccia dell'ordinamento */
.ts-matrice .ts-matrice-inizio { border-left: 1px solid var(--ts-border); }
.ts-matrice .ts-matrice-tot { font-weight: 600; }
table.table.ts-matrice > :not(caption) > * > .ts-matrice-tot { background-color: var(--ts-primary-050); }   /* piu' specifica di table.table.dataTable > :not(caption) > * > * */
table.table.ts-matrice > tbody > tr[class*="table-"] > .ts-matrice-tot { background-color: var(--bs-table-bg); }   /* righe evidenziate (sotto scorta): il colore della riga continua anche sul Totale */
.ts-matrice .ts-matrice-nota { display: block; font-size: .8em; font-weight: 400; color: var(--ts-muted); line-height: 1.2; }
.ts-matrice thead .ts-matrice-nota { max-width: 9rem; margin: 0 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }   /* una riga sola: il nome completo resta nel title */
table.ts-matrice > thead > tr > th.ts-q { white-space: nowrap; }

/* --- Login --- */
.ts-login-body { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--ts-primary-050), #fdfdfd); }
.ts-login-card { width: 100%; max-width: 380px; background: var(--ts-surface); border: 1px solid var(--ts-border); border-radius: 16px; box-shadow: 0 10px 30px rgba(16,24,40,.10); padding: 32px; }

/* --- Responsive: sidebar a scomparsa su mobile --- */
.ts-sidebar-close { border: none; }
@media (max-width: 991.98px) {
    .ts-sidebar { transform: translateX(-100%); transition: transform .2s ease; }
    body.sidebar-open .ts-sidebar { transform: translateX(0); }
    .ts-main { margin-left: 0; }
}

/* Card cliccabili (indice Configurazione) */
a.ts-card-link { color: inherit; text-decoration: none; transition: border-color .15s, box-shadow .15s; }
a.ts-card-link:hover { border-color: var(--ts-primary); box-shadow: 0 4px 14px rgba(15,118,110,.12); }

/* Selettore CAP (zone): griglia di caselle scorrevole */
.ts-cap-lista { max-height: 260px; overflow-y: auto; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 2px 10px; background: var(--ts-surface); }
.ts-cap-lista .form-check { margin: 0; padding: 4px 4px 4px 1.6em; border-radius: 6px; }
.ts-cap-lista .form-check:hover { background: var(--ts-primary-050); }
.ts-cap-lista .form-check.occupato { opacity: .55; }
.ts-cap-lista .form-check-label { font-size: .9rem; cursor: pointer; }
.ts-cap-lista .form-check-label small { color: var(--ts-muted); }
.ts-cap-lista .ts-cap-gruppo { grid-column: 1 / -1; padding: 6px 4px 2px; border-bottom: 1px solid var(--ts-border); margin-bottom: 2px; }
.ts-cap-lista .ts-cap-gruppo:not(:first-child) { margin-top: 8px; }

/* Caselle famiglie nella scheda articolo */
.ts-check-grid { display: flex; flex-wrap: wrap; gap: 2px 8px; padding-top: 4px; }

/* --- Barra laterale riducibile (desktop): solo icone, larghezza 68px, scelta ricordata nel browser --- */
.ts-logo-mini { display: none; }
.ts-sidebar-collapse { border: none; color: var(--ts-muted); }
.ts-sidebar-collapse:hover { color: var(--ts-primary); }
.ts-sidebar, .ts-main { transition: width .18s ease, margin-left .18s ease; }
.ts-nav-item { white-space: nowrap; }
@media (min-width: 992px) {
    body.sidebar-collapsed .ts-sidebar { width: 68px; }
    body.sidebar-collapsed .ts-main { margin-left: 68px; }
    body.sidebar-collapsed .ts-brand { padding: 18px 10px; justify-content: center; flex-direction: column; gap: 8px; }
    body.sidebar-collapsed .ts-logo-full { display: none; }
    body.sidebar-collapsed .ts-logo-mini { display: inline; }
    body.sidebar-collapsed .ts-sidebar-collapse i { transform: rotate(180deg); }
    body.sidebar-collapsed .ts-nav { padding: 12px 8px; }
    body.sidebar-collapsed .ts-nav-item { justify-content: center; padding: 10px 0; }
    body.sidebar-collapsed .ts-nav-item span, body.sidebar-collapsed .ts-nav-item small { display: none; }
    body.sidebar-collapsed .ts-nav-item i { width: auto; font-size: 1.25rem; }
}

/* --- Telefono (§24): tocco, leggibilità, niente zoom automatico, niente scorrimento orizzontale --- */
.ts-backdrop { display: none; position: fixed; inset: 0; background: rgba(16,24,40,.45); z-index: 1035; }
@media (max-width: 991.98px) {
    body.sidebar-open .ts-backdrop { display: block; }
    body.sidebar-open { overflow: hidden; }
}
@media (max-width: 767.98px) {
    .ts-content { padding: 12px; }
    .ts-topbar { padding: 0 12px; }
    .ts-card { padding: 14px; }
    /* iOS ingrandisce la pagina sugli input sotto i 16px */
    .form-control, .form-select, .form-control-sm, .form-select-sm { font-size: 16px; }
    /* area di tocco minima 44px per i pulsanti principali, 40px per i piccoli */
    .btn { min-height: 44px; }
    .btn-sm, .btn-group-sm > .btn { min-height: 40px; }
    .btn-link.p-0, .btn-link.btn-sm.p-0, .btn-close, .dropdown-item { min-height: 0; }
    /* sotto-navigazioni: una riga scorrevole, mai a capo */
    .nav-pills { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 4px; }
    .nav-pills .nav-link { white-space: nowrap; }
    /* tabelle piu' compatte; tutte le colonne restano visibili e scorre il contenitore .table-responsive (#31) */
    .table > :not(caption) > * > * { padding: .5rem .5rem; }
    .dt-container .dt-length, .dt-container .dt-info { display: none; }
    /* pulsanti di azione delle schede a tutta larghezza */
    .ts-azioni-mobile .btn { width: 100%; }
    h1.h4 { font-size: 1.15rem; }
    .fs-4 { font-size: 1.2rem !important; }
    /* SweetAlert2 su schermo stretto */
    .swal2-popup { width: 92vw !important; font-size: .95rem; }
}
/* #31 Tabelle: tutte le colonne sempre visibili (niente colonne nascoste): una riga per cella, i testi lunghi (.ts-a-capo) vanno a capo;
   se non entrano, scorre il contenitore .table-responsive */
table.dataTable > thead > tr > th, table.dataTable > tbody > tr > td { white-space: nowrap; }
table.dataTable > tbody > tr > td.ts-a-capo { white-space: normal; min-width: 14rem; }
.table-responsive { -webkit-overflow-scrolling: touch; }

/* Tabelle "a schede" sul telefono (§24): ogni riga diventa un blocco, ogni cella mostra la sua etichetta (data-label); niente scorrimento orizzontale */
@media (max-width: 767.98px) {
    .ts-tabella-schede thead { display: none; }
    .ts-tabella-schede tbody tr { display: block; border: 1px solid var(--ts-border); border-radius: 10px; padding: 6px 10px; margin-bottom: 8px; background: var(--ts-surface); }
    .ts-tabella-schede tbody tr[data-vuota] { border: none; padding: 0; }
    .ts-tabella-schede tbody td { display: flex; justify-content: space-between; align-items: center; gap: 12px; border: none; padding: 4px 0 !important; text-align: right; }
    .ts-tabella-schede tbody td:first-child { display: block; text-align: left; font-weight: 500; padding-bottom: 6px !important; border-bottom: 1px dashed var(--ts-border); }
    .ts-tabella-schede tbody td[data-label]::before { content: attr(data-label); color: var(--ts-muted); font-size: .85rem; text-align: left; }
    .ts-tabella-schede tbody td .form-control-sm { max-width: 8rem; }
    .ts-tabella-schede tbody td.text-nowrap { flex-wrap: wrap; }
}

/* ---- DSS, Decision Support System (decisione 37, disegno v2 §7.5): vista della giornata. Nessuno stile inline (CSP). ---- */
.ts-num { font-variant-numeric: tabular-nums; }
.ts-min-w-0 { min-width: 0; }
.ts-dss-a-capo { white-space: normal; overflow-wrap: anywhere; }
.ts-dss-vai .nav-link { border: 1px solid var(--ts-border); background: var(--ts-surface); }
.ts-dss-chip {
    display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: .3rem;
    padding: .35rem .75rem; border: 1px solid var(--ts-border); border-radius: 999px;
    background: var(--ts-surface); color: var(--ts-ink); text-decoration: none; font-size: .875rem;
}
a.ts-dss-chip:hover, a.ts-dss-chip:focus-visible { background: var(--ts-primary-050); }
.ts-dss-chip--avviso { border-color: #f59e0b; }
.ts-dss-striscia { display: flex; flex-wrap: wrap; gap: .5rem; }
.ts-dss-striscia-voce {
    display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: .35rem;
    padding: .35rem .65rem; border: 1px solid var(--ts-border); border-radius: 10px;
    background: var(--ts-surface); color: var(--ts-ink); text-decoration: none; font-size: .875rem; overflow-wrap: anywhere;
}
.ts-dss-striscia-voce:hover, .ts-dss-striscia-voce:focus-visible { background: var(--ts-primary-050); }
/* colonne: scorrono nel loro contenitore, mai la pagina */
.ts-dss-board { display: flex; align-items: flex-start; gap: .75rem; overflow-x: auto; padding-bottom: .5rem; -webkit-overflow-scrolling: touch; }
.ts-dss-col {
    flex: 0 0 290px; min-width: 260px; max-width: 320px;
    background: var(--ts-surface); border: 1px solid var(--ts-border); border-radius: var(--ts-radius); box-shadow: var(--ts-shadow); padding: .75rem;
}
.ts-dss-col-testa { padding-bottom: .5rem; border-bottom: 1px solid var(--ts-border); margin-bottom: .5rem; }
.ts-dss-righe > li + li { margin-top: .5rem; }
.ts-dss-tappa { border: 1px solid var(--ts-border); border-radius: 10px; padding: .5rem .6rem; background: var(--ts-surface); overflow-wrap: anywhere; }
.ts-dss-tappa--fatta { background: var(--ts-bg); color: var(--ts-muted); }
.ts-dss-arretrati .ts-dss-tappa { border-style: dashed; }
.ts-dss-pos {
    display: inline-flex; align-items: center; justify-content: center; min-width: 1.6rem; height: 1.6rem; padding: 0 .3rem;
    border-radius: 999px; background: var(--ts-primary-050); color: var(--ts-primary-dark); font-size: .8rem; font-weight: 700; font-variant-numeric: tabular-nums;
}
.ts-dss-cliente { font-weight: 500; }
.ts-dss-fisa .bi-chevron-right { display: inline-block; transition: transform .15s ease; }
.ts-dss-fisa:not(.collapsed) .bi-chevron-right { transform: rotate(90deg); }
.ts-dss-apri .bi-chevron-down { display: inline-block; transition: transform .15s ease; }
.ts-dss-apri:not(.collapsed) .bi-chevron-down { transform: rotate(180deg); }
@media (prefers-reduced-motion: reduce) {
    .ts-dss-fisa .bi-chevron-right, .ts-dss-apri .bi-chevron-down { transition: none; }
}
@media (max-width: 767.98px) {
    .ts-dss-board { flex-direction: column; align-items: stretch; overflow-x: visible; }
    .ts-dss-col { flex: 1 1 auto; min-width: 0; max-width: none; }
    .ts-dss-col-testa { border-bottom: 0; margin-bottom: 0; padding-bottom: 0; }
    .ts-dss-col .collapse.show, .ts-dss-col .collapsing { margin-top: .5rem; }
}

/* Titoli con ancora (#gruppo): non finiscono sotto la barra superiore fissa (62 px) */
.ts-ancora { scroll-margin-top: 72px; }

/* DSS, azioni (D3): menu piatto che non esce dallo schermo (strategia fixed); area di tocco 44 px [C22]; proposta dei tecnici */
.ts-dss-menu .dropdown-menu { max-width: min(20rem, calc(100vw - 16px)); }
.ts-dss-menu .dropdown-item { white-space: normal; }
.ts-dss-motivo { max-width: 18rem; white-space: normal; }
@media (pointer: coarse) {
    .ts-dss-menu > .btn { min-height: 44px; }
    .ts-dss-menu .dropdown-item { min-height: 44px; display: flex; align-items: center; }
}
/* DSS, riordino (D4): frecce compatte; alla prima e all'ultima posizione restano raggiungibili (aria-disabled) ma attenuate; 44 px al tocco */
.ts-dss-frecce .btn { line-height: 1; padding: .25rem .45rem; }
.ts-dss-frecce .btn[aria-disabled="true"] { opacity: .45; cursor: not-allowed; }
@media (pointer: coarse) {
    .ts-dss-frecce .btn { min-height: 44px; min-width: 44px; }
}
/* DSS, trascinamento (D5, solo desktop con puntatore fine): tappa trascinata attenuata, colonna bersaglio e linea del punto di arrivo */
.ts-dss-tappa[draggable="true"] { cursor: grab; }
.ts-dss-tappa--trascina { opacity: .45; }
.ts-dss-col--bersaglio { box-shadow: inset 0 0 0 2px var(--ts-primary), var(--ts-shadow); }   /* dentro la colonna: il contenitore che scorre non lo taglia */
.ts-dss-drop { height: 0; border-top: 3px solid var(--ts-primary); border-radius: 2px; margin: .25rem 0; }
.ts-dss-tecnici .form-check { padding: .45rem .6rem .45rem 2rem; border: 1px solid var(--ts-border); border-radius: 10px; }
.ts-dss-tecnici .form-check + .form-check { margin-top: .35rem; }
.ts-dss-tecnici .form-check-label { overflow-wrap: anywhere; }
/* DSS D7b: profilo Schermo a parete (§5.4), lettura a distanza. Le misure in rem della DSS si alzano una per una; .small e i badge seguono (em) */
.ts-dss--schermo { font-size: 1.2rem; }
.ts-dss--schermo .h6 { font-size: 1.3rem; }
.ts-dss--schermo .btn { --bs-btn-font-size: 1em; }   /* titoli dei gruppi e fisarmoniche (btn-link, anche btn-sm): seguono il testo, non restano a 1rem */
.ts-dss--schermo .ts-dss-chip, .ts-dss--schermo .ts-dss-striscia-voce { font-size: 1.1rem; }
.ts-dss--schermo .ts-dss-pos { font-size: 1rem; min-width: 2rem; height: 2rem; }
@media (min-width: 768px) {   /* sotto 768 px la colonna resta la fisarmonica a tutta larghezza */
    .ts-dss--schermo .ts-dss-board { flex-wrap: wrap; overflow-x: visible; }   /* a parete nessuno scorre: le colonne vanno a capo, tutti i tecnici restano visibili */
    .ts-dss--schermo .ts-dss-col { flex-basis: 360px; min-width: 320px; max-width: 400px; }
}

/* ===== Competenze dei tecnici (Configurazione): gruppi di prodotti per famiglia e barra del salvataggio sempre raggiungibile ===== */
.ts-cm-gruppo { border: 1px solid var(--ts-border); border-radius: 10px; padding: .5rem .75rem .6rem; margin: 0 0 .75rem; min-width: 0; }
.ts-cm-gruppo summary { cursor: pointer; }
.ts-cm-gruppo .form-check-label { overflow-wrap: anywhere; }
.ts-cm-filtro { flex: 1 1 260px; max-width: 420px; }
.ts-cm-azioni { position: sticky; bottom: 0; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; padding: .6rem .75rem;
    background: var(--ts-surface); border: 1px solid var(--ts-border); border-radius: var(--ts-radius); box-shadow: var(--ts-shadow); }
.ts-cm-azioni [data-errori] { max-height: 35vh; overflow-y: auto; }   /* gli errori stanno nella barra: mai fuori schermo, mai piu' alti di un terzo della finestra */
@media (max-width: 575.98px) { .ts-cm-azioni [data-errori] { max-height: 22vh; } }   /* sul telefono resta visibile piu' di meta' schermo per correggere le spunte */
