/*
 * Correzioni globali UI NEXUS.
 *
 * Il foglio viene caricato dopo il bundle Metronic e usa esclusivamente
 * variabili e componenti della palette esistente. Le regole coprono
 * contrasto, stati inattivi e accessibilita dei controlli icon-only.
 */:root,[data-bs-theme=dark],[data-bs-theme=light]{--bs-text-muted:var(--bs-gray-700)}.text-gray-500,.text-gray-600{color:var(--bs-gray-700)!important}.form-control::-moz-placeholder,.form-select::-moz-placeholder,.select2-search__field::-moz-placeholder{color:var(--bs-gray-700)!important;font-weight:400;opacity:1!important}.form-control::placeholder,.form-select::placeholder,.select2-search__field::placeholder{color:var(--bs-gray-700)!important;font-weight:400;opacity:1!important}.select2-container--bootstrap5 .select2-selection__placeholder{color:var(--bs-gray-700)!important;font-weight:400}.tagify{--placeholder-color:var(--bs-gray-700);--placeholder-color-focus:var(--bs-gray-700)}.form-control:disabled,.form-control[readonly]:not(.form-control-plaintext),.form-select:disabled{color:var(--bs-gray-700);opacity:1}.form-control[readonly]:not(.form-control-plaintext){background-color:var(--bs-gray-100)}.form-check-input:disabled~.form-check-label{color:var(--bs-gray-700);opacity:1}

/*
 * La sidebar scura vive anche quando il documento usa il tema chiaro. Il
 * valore seguente e' gray-700-dark della palette Metronic (#9A9CAE): evita
 * che le utility chiare vengano applicate sul fondo coal della navigazione.
 */[data-kt-app-layout=dark-sidebar] .app-sidebar .menu .menu-item .menu-heading,[data-kt-app-layout=dark-sidebar] .app-sidebar .menu-heading,[data-kt-app-layout=dark-sidebar] .app-sidebar .menu-section,[data-kt-app-layout=dark-sidebar] .app-sidebar .text-gray-500,[data-kt-app-layout=dark-sidebar] .app-sidebar .text-gray-600,[data-kt-app-layout=dark-sidebar] .app-sidebar .text-muted{color:#9a9cae!important}[data-kt-app-layout=dark-sidebar] .app-sidebar .nexus-sidebar-help .nexus-sidebar-help-link{color:color-mix(in srgb,var(--bs-primary) 55%,var(--bs-gray-900))!important}.app-footer .menu-gray-600 .menu-link{color:var(--bs-gray-700)!important}.alert-primary{color:var(--bs-primary-text-emphasis)}.alert-success{color:var(--bs-success-text-emphasis)}.alert-warning{color:var(--bs-warning-text-emphasis)}.alert-danger{color:var(--bs-danger-text-emphasis)}.alert-info{color:var(--bs-info-text-emphasis)}

/*
 * I badge e i pulsanti light usano testo semanticamente saturo su fondi molto
 * chiari. La miscela mantiene la tinta NEXUS ma la avvicina al testo forte del
 * tema; in dark mode gray-900 cambia automaticamente e schiarisce il testo.
 */.badge-light-primary,.bg-light-primary.text-primary,.btn-light-primary{color:color-mix(in srgb,var(--bs-primary) 55%,var(--bs-gray-900))!important}.badge-light-success,.bg-light-success.text-success,.btn-light-success{color:color-mix(in srgb,var(--bs-success) 55%,var(--bs-gray-900))!important}.badge-light-warning,.bg-light-warning.text-warning,.btn-light-warning{color:color-mix(in srgb,var(--bs-warning) 55%,var(--bs-gray-900))!important}.badge-light-danger,.bg-light-danger.text-danger,.btn-light-danger{color:color-mix(in srgb,var(--bs-danger) 55%,var(--bs-gray-900))!important}.badge-light-info,.bg-light-info.text-info,.btn-light-info{color:color-mix(in srgb,var(--bs-info) 55%,var(--bs-gray-900))!important}

/* Target coerente per mouse, touch e navigazione da tastiera. */.btn.btn-icon{min-height:44px;min-width:44px}.btn.btn-icon:focus-visible{outline:2px solid var(--bs-primary)!important;outline-offset:2px}

/* Componenti interattivi NEXUS: modal e loading locale. */.modal-header .modal-title{line-height:1.35;margin-bottom:0}.modal-header>[data-bs-dismiss=modal]{align-items:center;display:inline-flex;flex:0 0 auto;justify-content:center;min-height:2.75rem;min-width:2.75rem}.modal-footer{gap:.75rem}[data-nexus-pending]{cursor:wait}[aria-busy=true] .indicator-label,[aria-busy=true] [data-submit-label]{opacity:.8}

/*
 * Header e toolbar: i trigger a sola icona mantengono un target touch stabile;
 * sotto tablet titolo e azioni hanno righe indipendenti, evitando colonne di
 * testo compresse quando una pagina espone piu CTA.
 */.app-header button.symbol{-webkit-appearance:none;-moz-appearance:none;appearance:none}.app-header-menu button.menu-link{cursor:pointer;min-height:2.75rem}.nexus-toolbar .page-title,.nexus-toolbar__actions,.nexus-toolbar__container{min-width:0}

/* Toolbar pagina e filtri lista condividono il target interattivo NEXUS. */.nexus-list-filters .select2-container--bootstrap5 .select2-selection,.nexus-list-filters :where(.btn,.form-control,.form-select),.nexus-toolbar__actions .select2-container--bootstrap5 .select2-selection,.nexus-toolbar__actions :where(.btn,.form-control,.form-select){min-height:44px}@media (max-width:767.98px){.nexus-toolbar__container{align-items:stretch!important;flex-direction:column;gap:1rem}.nexus-toolbar .page-title{margin-inline-end:0!important;width:100%}.nexus-toolbar__actions{flex-wrap:wrap;justify-content:flex-start;width:100%}}

/* Focus visibile coerente anche sui controlli che non usano .btn. */:where(a,button,input,select,textarea,[tabindex]:not([tabindex="-1"])):focus-visible{outline:3px solid rgba(var(--bs-primary-rgb),.65)!important;outline-offset:2px!important}.form-check{min-height:2.75rem}.nexus-filter-nav{flex-wrap:wrap;gap:.25rem}.nexus-filter-nav .nav-link{align-items:center;display:inline-flex;min-height:2.75rem}

/*
 * Tabelle operative NEXUS.
 *
 * Desktop mantiene la lettura comparativa per colonne; tablet compatto
 * nasconde soltanto dati secondari marcati esplicitamente. Sotto i 1200px le
 * righe diventano schede etichettate, cosi azioni e metriche restano usabili
 * senza dipendere dal solo scroll orizzontale.
 */.nexus-table-shell{max-width:100%;overscroll-behavior-inline:contain}.nexus-responsive-table{font-size:.925rem;min-width:100%}.nexus-responsive-table>thead>tr>th{color:var(--bs-gray-700);font-size:.825rem;font-weight:700;line-height:1.35;padding-block:.9rem;vertical-align:bottom;white-space:normal}.nexus-responsive-table>tbody>tr>td{line-height:1.45;vertical-align:middle}.nexus-table-primary{min-width:12rem}.nexus-table-secondary{min-width:9rem}.nexus-table-number{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.nexus-table-actions{min-width:9.5rem;white-space:nowrap;width:1%}.nexus-table-empty{margin-inline:auto;max-width:34rem;text-align:center;white-space:normal}.nexus-table-empty__actions{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center}@media (min-width:1200px) and (max-width:1399.98px){.nexus-responsive-table .nexus-table-optional-compact{display:none}}@media (max-width:1399.98px){.nexus-responsive-table .nexus-table-id{display:none}}@media (max-width:1199.98px){.nexus-table-shell{overflow:visible!important}.nexus-responsive-datatable .dataTables_scrollHead,.nexus-responsive-datatable .dt-scroll-head{display:none}.nexus-responsive-datatable .dataTables_scroll,.nexus-responsive-datatable .dataTables_scrollBody,.nexus-responsive-datatable .dt-scroll,.nexus-responsive-datatable .dt-scroll-body,.nexus-responsive-datatable .table-responsive{max-height:none!important;overflow:visible!important;width:100%!important}.nexus-responsive-table,.nexus-responsive-table>tbody{display:block;min-width:0!important;width:100%!important}.nexus-responsive-table>thead{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.nexus-responsive-table>tbody{display:grid;gap:1rem}.nexus-responsive-table>tbody>tr{background:var(--bs-body-bg);border:1px solid var(--bs-gray-300);border-radius:.75rem;box-shadow:0 .125rem .375rem rgba(0,0,0,.04);display:block;overflow:visible;padding:.35rem 1rem}.nexus-responsive-table>tbody>tr>td{background:transparent!important;border-bottom:1px solid var(--bs-gray-200);display:block;min-width:0;overflow-wrap:anywhere;padding:.8rem 0!important;padding-inline-start:max(7.25rem,38%)!important;position:relative!important;text-align:left!important;white-space:normal;width:100%!important}.nexus-responsive-table>tbody>tr>td:before{color:var(--bs-gray-700);content:attr(data-label);font-size:.8rem;font-weight:700;inset-inline-start:0;line-height:1.4;position:absolute;top:.8rem;width:calc(max(7.25rem, 38%) - .75rem)}.nexus-responsive-table>tbody>tr>td:last-child{border-bottom:0}.nexus-responsive-table>tbody>tr>td:not([data-label]):before,.nexus-responsive-table>tbody>tr>td[data-label=""]:before{display:none}.nexus-responsive-table .nexus-table-actions,.nexus-responsive-table .nexus-table-primary,.nexus-responsive-table .nexus-table-secondary{min-width:0}.nexus-responsive-table .nexus-table-number{font-variant-numeric:tabular-nums;text-align:left!important}.nexus-responsive-table .nexus-table-actions>.d-inline-flex{flex-wrap:wrap;justify-content:flex-start!important}.nexus-responsive-table>tbody>tr.nexus-table-empty-row{padding:0}.nexus-responsive-table>tbody>tr.nexus-table-empty-row>td{border:0;display:block;overflow-wrap:normal;padding:2rem 1.25rem!important}.nexus-responsive-table>tbody>tr.nexus-table-empty-row>td:before,.nexus-responsive-table>tbody>tr>td.dt-empty:before{display:none}}@media (max-width:575.98px){.nexus-responsive-table>tbody>tr>td{padding-inline-start:max(6.5rem,42%)!important}.nexus-responsive-table>tbody>tr>td:before{width:calc(max(6.5rem, 42%) - .75rem)}.nexus-responsive-table .btn:not(.btn-icon){justify-content:center}}
