/*
 * 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:6rem;white-space:nowrap;width:1%}

/* Un solo elenco di comandi: icone sulle tabelle ampie, menu sulle strette.
   Le container query misurano il contenitore dell'elenco. */.card-body:has(.nexus-record-actions),.card:has(>.table-responsive .nexus-record-actions){container-name:nexus-record-table;container-type:inline-size}.nexus-record-actions{display:inline-flex;vertical-align:middle}.nexus-record-trigger{align-items:center;display:inline-flex;gap:.35rem}.nexus-record-menu{max-width:min(22rem,calc(100vw - 2rem));min-width:13rem}
/* Le celle sticky creano un contesto di sovrapposizione proprio: il menu
   aperto deve superare paginazione, altre righe e card successive. */td:has(.nexus-record-menu.show){z-index:5!important}.card:has(.nexus-record-menu.show){z-index:10}.nexus-record-action{align-items:center;border-radius:.45rem;display:flex;gap:.65rem;min-height:45px;white-space:normal}.nexus-record-action>.bi{color:inherit;flex:0 0 auto;font-size:1.15rem}.nexus-record-action:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px}.nexus-record-action:disabled{cursor:not-allowed;opacity:.6}.nexus-record-actions[data-record-count="1"]>.nexus-record-trigger{display:none}.nexus-record-actions[data-record-count="1"]>.nexus-record-menu{background:transparent;border:0;box-shadow:none;display:flex;min-width:0;padding:0!important;position:static}@container nexus-record-table (min-width: 960px){.nexus-record-actions[data-record-layout=adaptive]>.nexus-record-trigger{display:none}.nexus-record-actions[data-record-layout=adaptive]>.nexus-record-menu{align-items:center;background:transparent;border:0;box-shadow:none;display:flex;gap:.35rem;min-width:0;padding:0!important;position:static!important;transform:none!important}.nexus-record-actions[data-record-layout=adaptive] .dropdown-divider{display:none}.nexus-record-actions[data-record-layout=adaptive] .nexus-record-action{background:var(--bs-gray-100);color:var(--bs-gray-700);height:45px;justify-content:center;padding:0;width:45px}.nexus-record-actions[data-record-layout=adaptive] .nexus-record-action:hover{background:var(--bs-primary-light);color:var(--bs-primary)}.nexus-record-actions[data-record-layout=adaptive] .nexus-record-action-label{clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}}.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}}

/* Densità compatta, attivata per pagina senza ridurre i target dei controlli. */.nexus-compact-page .card>.card-header{min-height:3.75rem;padding-inline:1.25rem}.nexus-compact-page .card>.card-body:not(.p-0){padding:1.25rem}.nexus-compact-page .card-header .card-title{margin-block:.75rem}.nexus-compact-page details>summary{align-content:center;cursor:pointer;display:list-item;font-weight:600;min-height:45px}.nexus-campaign-subject{overflow-wrap:anywhere}.nexus-campaign-metrics{display:flex;flex-wrap:wrap;gap:1rem}.nexus-campaign-metrics>span{display:flex;flex-direction:column;gap:.15rem}.nexus-campaign-metrics strong{font-variant-numeric:tabular-nums;font-weight:600}.nexus-campaign-metrics small{color:var(--bs-gray-600)}.nexus-campaign-table .nexus-table-primary{max-width:30rem}@media (max-width:1199.98px){.nexus-campaign-table>tbody>tr{-moz-column-gap:1rem;column-gap:1rem;display:grid;grid-template-areas:"name name" "status date" "results actions";grid-template-columns:minmax(0,1fr) auto;padding:.5rem 1rem}.nexus-campaign-table>tbody>tr>td{max-width:none;padding:.6rem 0!important}.nexus-campaign-table>tbody>tr>td:before{display:none}.nexus-campaign-table td[data-label=Campagna]{grid-area:name}.nexus-campaign-table td[data-label=Stato]{grid-area:status}.nexus-campaign-table td[data-label=Data]{align-content:center;grid-area:date}.nexus-campaign-table td[data-label=Risultati]{border-bottom:0;grid-area:results}.nexus-campaign-table td[data-label=Azioni]{align-content:center;grid-area:actions}.nexus-campaign-metrics{gap:.85rem}}@media (max-width:575.98px){.nexus-campaign-table>tbody>tr{grid-template-areas:"name name" "status date" "results results" "actions actions"}.nexus-campaign-table td[data-label=Azioni]{justify-self:end;width:auto!important}.nexus-campaign-metrics{justify-content:space-between}}
