/* =========================================================================
   NCCWeb Admin - tema scuro
   Caricato dopo Bootstrap, site.css e le librerie CDN (DataTables, Select2,
   Datepicker): qui sopra si ridefiniscono colori, superfici e componenti.
   La base e' il tema scuro di Bootstrap 5.3 ([data-bs-theme="dark"]).
   ========================================================================= */

:root,
[data-bs-theme="dark"] {
    --ncc-bg: #141920;
    --ncc-surface: #1e242d;
    --ncc-surface-2: #252d38;
    --ncc-surface-3: #2e3846;
    --ncc-border: rgba(148, 163, 184, .18);
    --ncc-border-strong: rgba(148, 163, 184, .32);
    --ncc-text: #e6eaf2;
    --ncc-muted: #9aa4b2;
    --ncc-accent: #F84525;
    --ncc-accent-2: #ff7a45;
    --ncc-accent-soft: rgba(248, 69, 37, .16);
    --ncc-radius: 14px;
    --ncc-radius-sm: 10px;
    --ncc-shadow: 0 10px 30px rgba(0, 0, 0, .35);

    --bs-body-bg: var(--ncc-bg);
    --bs-body-bg-rgb: 20, 25, 32;
    --bs-body-color: var(--ncc-text);
    --bs-body-color-rgb: 230, 234, 242;
    --bs-emphasis-color: #fff;
    --bs-secondary-color: var(--ncc-muted);
    --bs-secondary-bg: var(--ncc-surface-2);
    --bs-tertiary-bg: var(--ncc-surface-2);
    --bs-tertiary-bg-rgb: 37, 45, 56;
    --bs-border-color: var(--ncc-border);
    --bs-border-color-translucent: var(--ncc-border);
    --bs-primary: var(--ncc-accent);
    --bs-primary-rgb: 248, 69, 37;
    --bs-link-color: #ff9d8a;
    --bs-link-color-rgb: 255, 157, 138;
    --bs-link-hover-color: #ffc2b5;
    --bs-link-hover-color-rgb: 255, 194, 181;
    --bs-border-radius: .6rem;
    --bs-border-radius-lg: var(--ncc-radius);
    --bs-font-sans-serif: "Wix Madefor Display", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    color-scheme: dark;
}

/* ---------- Base ---------- */
html {
    background: var(--ncc-bg);
}

body {
    font-family: var(--bs-font-sans-serif);
    background:
        radial-gradient(1200px 500px at 85% -10%, rgba(248, 69, 37, .14), transparent 60%),
        radial-gradient(900px 400px at -5% 0%, rgba(255, 122, 69, .10), transparent 55%),
        var(--ncc-bg);
    background-attachment: fixed;
    color: var(--ncc-text);
    -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
    color: #fff;
    font-weight: 600;
    letter-spacing: -.01em;
}

main > .d-flex h1,
main h1 {
    font-size: 1.75rem;
}

a {
    color: var(--bs-link-color);
    text-decoration: none;
}

a:hover {
    color: var(--bs-link-hover-color);
}

hr {
    border-color: var(--ncc-border);
    opacity: 1;
}

::selection {
    background: rgba(248, 69, 37, .45);
    color: #fff;
}

/* Scrollbar sottili e scure */
* {
    scrollbar-width: thin;
    scrollbar-color: var(--ncc-surface-3) transparent;
}

::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

::-webkit-scrollbar-thumb {
    background: var(--ncc-surface-3);
    border-radius: 10px;
    border: 2px solid var(--ncc-bg);
}

::-webkit-scrollbar-thumb:hover {
    background: #3a4656;
}

/* ---------- Navbar ---------- */
.ncc-navbar {
    background: rgba(30, 36, 45, .82) !important;
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid var(--ncc-border) !important;
    box-shadow: 0 1px 0 rgba(255, 255, 255, .02), 0 8px 24px rgba(0, 0, 0, .25);
    padding-top: .55rem;
    padding-bottom: .55rem;
    margin-bottom: 1.5rem !important;
}

.ncc-brand {
    display: inline-flex;
    align-items: center;
    gap: .6rem;
    font-weight: 700;
    letter-spacing: -.01em;
    color: #fff !important;
    margin-right: 1.5rem;
}

.ncc-brand-mark {
    width: 28px;
    height: 28px;
    border-radius: 9px;
    background: linear-gradient(135deg, var(--ncc-accent), var(--ncc-accent-2));
    box-shadow: 0 6px 16px rgba(248, 69, 37, .45);
    display: inline-block;
}

.ncc-brand small {
    font-weight: 500;
    color: var(--ncc-muted);
    margin-left: .15rem;
}

.ncc-navbar .navbar-nav .nav-link {
    color: var(--ncc-muted);
    font-weight: 500;
    padding: .45rem .85rem;
    border-radius: var(--ncc-radius-sm);
    transition: color .15s ease, background-color .15s ease;
}

.ncc-navbar .navbar-nav .nav-link:hover,
.ncc-navbar .navbar-nav .nav-link:focus {
    color: #fff;
    background: rgba(255, 255, 255, .06);
}

.ncc-navbar .navbar-nav .nav-link.active {
    color: #fff;
    background: var(--ncc-accent-soft);
    box-shadow: inset 0 0 0 1px rgba(248, 69, 37, .35);
}

.ncc-navbar .btn-link.nav-link {
    text-decoration: none;
}

.ncc-navbar .navbar-toggler {
    border-color: var(--ncc-border);
}

.ncc-user {
    color: var(--ncc-muted) !important;
    font-size: .875rem;
    max-width: 240px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ncc-navbar .navbar-nav .nav-link {
    white-space: nowrap;
}

/* Spazio tra le voci del menu */
.ncc-navbar .navbar-nav {
    gap: .35rem;
}

/* ---------- Contenuto / footer ---------- */
main.pb-3 {
    padding-bottom: 2rem !important;
}

.footer {
    border-top: 1px solid var(--ncc-border) !important;
    color: var(--ncc-muted) !important;
    background: transparent;
    line-height: 48px;
    white-space: nowrap;
}

/* ---------- Pulsanti ---------- */
.btn {
    border-radius: var(--ncc-radius-sm);
    font-weight: 500;
    transition: transform .08s ease, box-shadow .15s ease, background-color .15s ease, border-color .15s ease;
}

.btn:active {
    transform: translateY(1px);
}

.btn-primary {
    --bs-btn-color: #fff;
    --bs-btn-hover-color: #fff;
    --bs-btn-active-color: #fff;
    background: linear-gradient(135deg, var(--ncc-accent), var(--ncc-accent-2));
    border: 0;
    box-shadow: 0 6px 16px rgba(248, 69, 37, .32);
    color: #fff;
}

.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active {
    background: linear-gradient(135deg, #ff5a3d, #ff8f5a) !important;
    box-shadow: 0 8px 22px rgba(248, 69, 37, .45);
    color: #fff;
}

.btn-secondary {
    --bs-btn-bg: var(--ncc-surface-3);
    --bs-btn-border-color: var(--ncc-border-strong);
    --bs-btn-hover-bg: #394555;
    --bs-btn-hover-border-color: var(--ncc-border-strong);
    --bs-btn-active-bg: #394555;
    --bs-btn-color: var(--ncc-text);
}

.btn-outline-primary {
    --bs-btn-color: #ff9d8a;
    --bs-btn-border-color: rgba(248, 69, 37, .55);
    --bs-btn-hover-bg: var(--ncc-accent);
    --bs-btn-hover-border-color: var(--ncc-accent);
    --bs-btn-hover-color: #fff;
    --bs-btn-active-bg: var(--ncc-accent);
    --bs-btn-active-border-color: var(--ncc-accent);
}

.btn-outline-success {
    --bs-btn-color: #5eead4;
    --bs-btn-border-color: rgba(45, 212, 191, .5);
    --bs-btn-hover-bg: #14b8a6;
    --bs-btn-hover-border-color: #14b8a6;
    --bs-btn-hover-color: #04211e;
}

.btn-outline-danger {
    --bs-btn-color: #fda4af;
    --bs-btn-border-color: rgba(244, 63, 94, .5);
    --bs-btn-hover-bg: #e11d48;
    --bs-btn-hover-border-color: #e11d48;
}

.btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
    opacity: .6;
}

.btn-close:hover {
    opacity: 1;
}

/* Focus: l'alone chiaro di site.css su sfondo scuro era abbagliante */
.btn:focus,
.btn:active:focus,
.btn-link.nav-link:focus,
.form-control:focus,
.form-check-input:focus,
.form-select:focus {
    box-shadow: 0 0 0 .2rem rgba(248, 69, 37, .35);
    border-color: rgba(248, 69, 37, .8);
}

/* ---------- Form ---------- */
.form-label {
    font-size: .82rem;
    font-weight: 500;
    color: #c4cbda;
    margin-bottom: .35rem;
}

.form-control,
.form-select,
.input-group-text {
    background-color: var(--ncc-surface-2);
    border: 1px solid var(--ncc-border);
    color: var(--ncc-text);
    border-radius: var(--ncc-radius-sm);
}

.form-control::placeholder {
    color: #6f7b8a;
}

.form-control:disabled,
.form-control[readonly] {
    background-color: rgba(37, 45, 56, .55);
    color: var(--ncc-muted);
}

.form-control:focus,
.form-select:focus {
    background-color: var(--ncc-surface-2);
    color: #fff;
}

.form-text {
    color: var(--ncc-muted);
    font-size: .78rem;
}

.form-check-input {
    background-color: var(--ncc-surface-2);
    border-color: var(--ncc-border-strong);
}

.form-check-input:checked {
    background-color: var(--ncc-accent);
    border-color: var(--ncc-accent);
}

.invalid-feedback,
.text-danger {
    color: #fda4af !important;
}

.text-muted {
    color: var(--ncc-muted) !important;
}

/* ---------- Card / Modali / Offcanvas ---------- */
.card {
    background: var(--ncc-surface);
    border: 1px solid var(--ncc-border);
    border-radius: var(--ncc-radius);
    box-shadow: var(--ncc-shadow);
}

.card-header,
.card-footer {
    background: transparent;
    border-color: var(--ncc-border);
}

.modal-content {
    background: var(--ncc-surface);
    border: 1px solid var(--ncc-border-strong);
    border-radius: 18px;
    box-shadow: 0 30px 80px rgba(0, 0, 0, .6);
}

.modal-header,
.modal-footer {
    border-color: var(--ncc-border);
}

.modal-header {
    padding: 1rem 1.5rem;
}

.modal-title {
    font-weight: 600;
    color: #fff;
}

.modal-backdrop.show {
    --bs-backdrop-opacity: .72;
    backdrop-filter: blur(3px);
}

.dropdown-menu {
    background: var(--ncc-surface-2);
    border: 1px solid var(--ncc-border-strong);
    border-radius: var(--ncc-radius-sm);
    box-shadow: var(--ncc-shadow);
}

.dropdown-item:hover,
.dropdown-item:focus {
    background: var(--ncc-accent-soft);
    color: #fff;
}

.alert {
    border-radius: var(--ncc-radius-sm);
    border-width: 1px;
}

.list-group-item {
    background: var(--ncc-surface);
    border-color: var(--ncc-border);
}

.border,
.border-top,
.border-bottom,
.border-start,
.border-end {
    border-color: var(--ncc-border) !important;
}

/* ---------- Tabelle ---------- */
table.table,
.table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--ncc-text);
    --bs-table-border-color: var(--ncc-border);
    --bs-table-striped-bg: rgba(255, 255, 255, .02);
    --bs-table-hover-bg: rgba(248, 69, 37, .08);
    --bs-table-hover-color: #fff;
    border: 1px solid var(--ncc-border) !important;
    border-radius: var(--ncc-radius) !important;
    border-collapse: separate !important;
    border-spacing: 0;
    overflow: hidden;
}

.table > thead > tr > th {
    background: var(--ncc-surface-2);
    color: var(--ncc-muted);
    font-size: .74rem;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
    border-bottom: 1px solid var(--ncc-border);
    padding-top: .8rem;
    padding-bottom: .8rem;
}

.table > :not(caption) > * > * {
    background-color: transparent;
    border-bottom-color: var(--ncc-border);
}

.table > thead > tr > th {
    background-color: var(--ncc-surface-2);
}

.table-hover > tbody > tr:hover > * {
    color: #fff;
}

/* DataTables */
.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dataTables_length label,
.dataTables_wrapper .dataTables_filter label {
    color: var(--ncc-muted);
    font-size: .85rem;
}

table.dataTable thead .sorting:before,
table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:before,
table.dataTable thead .sorting_desc:after {
    color: var(--ncc-muted);
}

.page-link {
    background: var(--ncc-surface-2);
    border-color: var(--ncc-border);
    color: var(--ncc-text);
}

.page-link:hover {
    background: var(--ncc-surface-3);
    color: #fff;
}

.page-item.active .page-link {
    background: var(--ncc-accent);
    border-color: var(--ncc-accent);
    color: #fff;
}

.page-item.disabled .page-link {
    background: transparent;
    color: #566172;
}

/* ---------- Badge ---------- */
.badge {
    font-weight: 600;
    letter-spacing: .01em;
}

.badge.bg-white {
    background: var(--ncc-surface-3) !important;
    color: var(--ncc-text) !important;
    border: 1px solid var(--ncc-border-strong);
}

.badge.text-black {
    color: var(--ncc-text) !important;
}

/* ---------- Accordion ---------- */
.accordion {
    --bs-accordion-bg: transparent;
    --bs-accordion-color: var(--ncc-text);
    --bs-accordion-border-color: var(--ncc-border);
    --bs-accordion-btn-color: var(--ncc-text);
    --bs-accordion-btn-bg: transparent;
    --bs-accordion-active-color: #fff;
    --bs-accordion-active-bg: var(--ncc-accent-soft);
    --bs-accordion-btn-focus-box-shadow: none;
}

.accordion-item {
    background: var(--ncc-surface);
    border-color: var(--ncc-border);
}

.accordion-button {
    background: transparent;
    color: var(--ncc-text);
}

/* Riga aperta: sfondo neutro piu' chiaro e filo d'accento a sinistra (niente arancione pieno) */
.accordion-button:not(.collapsed),
.accordion-button:not(.collapsed):focus {
    background-color: var(--ncc-surface-3) !important;
    color: #fff;
    box-shadow: inset 3px 0 0 var(--ncc-accent) !important;
}

/* Righe senza figli (non si aprono): restano sempre neutre */
.accordion-button.no-collapse,
.accordion-button.no-collapse:focus,
.accordion-button.no-collapse:not(.collapsed) {
    background-color: transparent !important;
    box-shadow: none !important;
    color: var(--ncc-text);
}

.accordion-header:hover > .accordion-button.collapsed,
.accordion-header:hover > .accordion-button.no-collapse {
    background-color: rgba(255, 255, 255, .035) !important;
}

/* Riga di intestazione colonne della lista (Nome / Premium / Oro ...) */
.region-header-item,
.region-header-item .accordion-button {
    background: transparent !important;
}

.region-header-item .accordion-button {
    color: var(--ncc-muted);
    font-size: .74rem;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.region-header-item .accordion-button strong {
    font-weight: 600;
}

/* Elenco annidato: angoli piu' morbidi e sfondo leggermente piu' scuro */
.accordion .accordion .accordion-item {
    border-radius: 10px;
    overflow: hidden;
}

.accordion-body {
    background: rgba(0, 0, 0, .12);
}

/* freccia: usa quella del tema scuro di Bootstrap (chiara), colore leggermente piu' tenue */
.accordion-button::after {
    opacity: .75;
}

/* ---------- Select2 ---------- */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
    background-color: var(--ncc-surface-2);
    border: 1px solid var(--ncc-border);
    border-radius: var(--ncc-radius-sm);
    min-height: 38px;
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
    color: var(--ncc-text);
    line-height: 36px;
}

.select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 36px;
}

.select2-container--default .select2-selection--single .select2-selection__arrow b {
    border-color: var(--ncc-muted) transparent transparent transparent;
}

.select2-container--default .select2-selection--single .select2-selection__placeholder,
.select2-container--default .select2-search--inline .select2-search__field::placeholder {
    color: #6f7b8a;
}

.select2-container--default.select2-container--focus .select2-selection--multiple,
.select2-container--default.select2-container--open .select2-selection--single,
.select2-container--default.select2-container--open .select2-selection--multiple {
    border-color: rgba(248, 69, 37, .8);
}

.select2-container--default .select2-selection--multiple .select2-selection__choice {
    background-color: var(--ncc-accent-soft);
    border: 1px solid rgba(248, 69, 37, .4);
    color: #ffe1da;
    border-radius: 8px;
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
    color: #ff9d8a;
    border-right-color: rgba(248, 69, 37, .4);
}

.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
    color: #fff;
    background: rgba(248, 69, 37, .35);
}

.select2-container--default .select2-search--inline .select2-search__field,
.select2-container--default .select2-search--dropdown .select2-search__field {
    background: var(--ncc-surface);
    color: var(--ncc-text);
    border: 1px solid var(--ncc-border);
    border-radius: 8px;
}

.select2-dropdown {
    background: var(--ncc-surface-2);
    border: 1px solid var(--ncc-border-strong);
    border-radius: var(--ncc-radius-sm);
    box-shadow: var(--ncc-shadow);
    overflow: hidden;
    color: var(--ncc-text);
}

.select2-container--default .select2-results__option {
    color: var(--ncc-text);
}

.select2-container--default .select2-results__option--selected,
.select2-container--default .select2-results__option[aria-selected=true] {
    background-color: var(--ncc-surface-3);
}

.select2-container--default .select2-results__option--highlighted,
.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable {
    background-color: var(--ncc-accent);
    color: #fff;
}

.select2-container--default .select2-results__group {
    color: var(--ncc-muted);
}

.select2-container--default .select2-selection--single .select2-selection__clear {
    color: var(--ncc-muted);
}

/* Select multiple nativi (es. scelta degli NCC nel form abbonamento) */
select[multiple].form-select,
select[multiple].form-control {
    padding: .35rem;
}

select[multiple] option {
    background: var(--ncc-surface-2);
    color: var(--ncc-text);
    border-radius: 6px;
    padding: .3rem .5rem;
}

select[multiple] option:checked {
    background: linear-gradient(0deg, var(--ncc-accent), var(--ncc-accent));
    color: #fff;
}

/* ---------- Datepicker ---------- */
.datepicker-dropdown {
    background: var(--ncc-surface-2);
    border: 1px solid var(--ncc-border-strong);
    border-radius: var(--ncc-radius-sm);
    box-shadow: var(--ncc-shadow);
    color: var(--ncc-text);
    padding: 8px;
}

.datepicker-dropdown:before {
    border-bottom-color: var(--ncc-border-strong);
}

.datepicker-dropdown:after {
    border-bottom-color: var(--ncc-surface-2);
}

.datepicker table tr td,
.datepicker table tr th {
    border-radius: 8px;
}

.datepicker table tr td.day:hover,
.datepicker table tr td.focused,
.datepicker .datepicker-switch:hover,
.datepicker .prev:hover,
.datepicker .next:hover,
.datepicker tfoot tr th:hover,
.datepicker table tr td span:hover {
    background: var(--ncc-surface-3);
    color: #fff;
}

.datepicker table tr td.old,
.datepicker table tr td.new,
.datepicker table tr td.disabled,
.datepicker table tr td.disabled:hover {
    color: #566172;
}

.datepicker table tr td.today,
.datepicker table tr td.today:hover {
    background: rgba(45, 212, 191, .18);
    color: #5eead4;
}

.datepicker table tr td.active,
.datepicker table tr td.active:hover,
.datepicker table tr td.active.active,
.datepicker table tr td span.active,
.datepicker table tr td span.active:hover {
    background: var(--ncc-accent) !important;
    color: #fff !important;
    text-shadow: none;
}

.datepicker table tr td.range {
    background: var(--ncc-accent-soft);
    color: #fff;
}

.datepicker .dow {
    color: var(--ncc-muted);
}

/* ---------- TinyMCE ---------- */
.tox.tox-tinymce {
    border-radius: var(--ncc-radius-sm);
    border-color: var(--ncc-border);
}

.tox .tox-editor-header,
.tox .tox-menubar,
.tox .tox-toolbar,
.tox .tox-toolbar__primary,
.tox .tox-toolbar-overlord,
.tox .tox-statusbar {
    background: var(--ncc-surface-3) !important;
    border-color: var(--ncc-border) !important;
}

.tox .tox-edit-area__iframe {
    background: var(--ncc-surface-2) !important;
}

/* ---------- Pezzi specifici delle pagine ---------- */
/* Accordion e righe della lista POI / NCC */
#regionsAccordion .region-header-item {
    border-top-color: var(--ncc-border);
}

#regionsAccordion .accordion-item:nth-child(2) {
    border-top-color: var(--ncc-border);
}

/* Pulsanti dei tipi di abbonamento: testo nero su sfondo scuro era illeggibile */
button[data-subscription-typename] {
    color: #fff;
    border-radius: 999px;
}

button[data-subscription-typename][data-subscription-type="3"] {
    color: #3b2f00;
}

button[data-subscription-typename][data-subscription-type="2"] {
    color: #1f2937;
}

/* Icone nere (move/drag/plus): su sfondo scuro vanno invertite */
img[src$="move.svg"],
img[src$="drag_pan.svg"],
img[src$="plus.png"] {
    filter: invert(1) brightness(.85);
    opacity: .85;
}

/* Voci di menu nella pagina Menu' */
.menu-entry.card {
    background-color: var(--ncc-surface) !important;
}

.menu-drag-helper {
    background: var(--ncc-surface-3) !important;
}

/* ---------- Login ---------- */
.auth-page {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.auth-card {
    max-width: 980px;
    width: 100%;
    border: 1px solid var(--ncc-border-strong) !important;
    overflow: hidden;
    border-radius: 22px !important;
    box-shadow: 0 40px 100px rgba(0, 0, 0, .6) !important;
    background: var(--ncc-surface);
}

.auth-hero {
    position: relative;
    background:
        radial-gradient(500px 300px at 20% 10%, rgba(255, 255, 255, .18), transparent 60%),
        linear-gradient(135deg, #e63a1c 0%, #ff8a3d 100%);
    color: #fff;
    overflow: hidden;
}

.auth-hero::after {
    content: "";
    position: absolute;
    right: -80px;
    bottom: -80px;
    width: 280px;
    height: 280px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .08);
}

.auth-hero .badge {
    background: rgba(255, 255, 255, .16);
}

.auth-form {
    background: var(--ncc-surface);
}

/* ---------- Utility ---------- */
@media (max-width: 575.98px) {
    .ncc-brand small {
        display: none;
    }
}

/* =========================================================================
   Rosso piu' scuro per errori e stati negativi
   ========================================================================= */
:root,
[data-bs-theme="dark"] {
    --ncc-danger: #a3202c;
    --bs-danger: #a3202c;
    --bs-danger-rgb: 163, 32, 44;
}

.bg-danger,
.badge.bg-danger {
    background-color: var(--ncc-danger) !important;
    color: #fff !important;
}

.btn-danger {
    --bs-btn-bg: #a3202c;
    --bs-btn-border-color: #a3202c;
    --bs-btn-hover-bg: #b92736;
    --bs-btn-hover-border-color: #b92736;
    --bs-btn-active-bg: #8f1b26;
    --bs-btn-active-border-color: #8f1b26;
    --bs-btn-color: #fff;
}

/* =========================================================================
   Toast (sostituiscono la barra di avviso in cima alla pagina)
   ========================================================================= */
#alertContainer {
    display: none;
}

.ncc-toasts {
    position: fixed;
    top: 72px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 2000;
    display: flex;
    flex-direction: column;
    gap: .6rem;
    width: min(380px, calc(100vw - 32px));
    pointer-events: none;
}

.ncc-toast {
    --toast-color: #60a5fa;
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding: .85rem 2.2rem .95rem .95rem;
    background: var(--ncc-surface-2);
    border: 1px solid var(--ncc-border-strong);
    border-left: 4px solid var(--toast-color);
    border-radius: var(--ncc-radius-sm);
    box-shadow: 0 14px 36px rgba(0, 0, 0, .5);
    color: var(--ncc-text);
    overflow: hidden;
    pointer-events: auto;
    opacity: 0;
    transform: translateY(-12px);
    transition: opacity .22s ease, transform .22s ease;
}

.ncc-toast.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.ncc-toast-success { --toast-color: #34d399; }
.ncc-toast-danger { --toast-color: #e0485a; }
.ncc-toast-warning { --toast-color: #fbbf24; }
.ncc-toast-info { --toast-color: #60a5fa; }

.ncc-toast-icon {
    color: var(--toast-color);
    font-size: 1.1rem;
    margin-top: .1rem;
}

.ncc-toast-body {
    font-size: .9rem;
    line-height: 1.35;
    word-break: break-word;
}

.ncc-toast-close {
    position: absolute;
    top: .35rem;
    right: .5rem;
    background: none;
    border: 0;
    color: var(--ncc-muted);
    font-size: 1.3rem;
    line-height: 1;
    cursor: pointer;
}

.ncc-toast-close:hover {
    color: #fff;
}

.ncc-toast-bar {
    position: absolute;
    left: 0;
    bottom: 0;
    height: 3px;
    width: 100%;
    background: var(--toast-color);
    opacity: .7;
    transform-origin: left;
    animation: ncc-toast-bar linear forwards;
}

@keyframes ncc-toast-bar {
    from { transform: scaleX(1); }
    to { transform: scaleX(0); }
}

/* =========================================================================
   Stato vuoto, caricamento
   ========================================================================= */
.ncc-empty {
    padding: 2.5rem 1rem;
    text-align: center;
    color: var(--ncc-muted);
}

.ncc-empty i {
    display: block;
    font-size: 2.2rem;
    margin-bottom: .75rem;
    color: #566172;
}

.ncc-empty > div {
    color: var(--ncc-text);
    font-weight: 600;
}

.ncc-empty small {
    display: block;
    margin-top: .25rem;
}

td .ncc-empty,
.dataTables_empty .ncc-empty {
    padding: 2rem 1rem;
}

.ncc-skel-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem;
    border-bottom: 1px solid var(--ncc-border);
}

.ncc-skel {
    display: inline-block;
    height: 14px;
    border-radius: 8px;
    background: linear-gradient(90deg, var(--ncc-surface-2) 25%, var(--ncc-surface-3) 50%, var(--ncc-surface-2) 75%);
    background-size: 200% 100%;
    animation: ncc-shimmer 1.3s infinite linear;
}

.ncc-skel-pill {
    width: 90px;
    height: 24px;
    border-radius: 999px;
}

@keyframes ncc-shimmer {
    from { background-position: 200% 0; }
    to { background-position: -200% 0; }
}

.ncc-spinner {
    display: inline-block;
    width: 14px;
    height: 14px;
    margin-right: .4rem;
    border: 2px solid var(--ncc-border-strong);
    border-top-color: var(--ncc-accent);
    border-radius: 50%;
    animation: ncc-spin .7s linear infinite;
    vertical-align: -2px;
}

@keyframes ncc-spin {
    to { transform: rotate(360deg); }
}

div.dataTables_processing {
    background: var(--ncc-surface-3) !important;
    color: var(--ncc-text);
    border: 1px solid var(--ncc-border-strong);
    border-radius: 999px;
    padding: .5rem 1.1rem !important;
    box-shadow: var(--ncc-shadow);
    height: auto !important;
}

/* =========================================================================
   Dashboard
   ========================================================================= */
.ncc-stat {
    position: relative;
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: 1rem 1.1rem;
    background: var(--ncc-surface);
    border: 1px solid var(--ncc-border);
    border-radius: var(--ncc-radius);
    color: var(--ncc-text);
    box-shadow: var(--ncc-shadow);
    transition: transform .12s ease, border-color .15s ease;
}

a.ncc-stat:hover {
    transform: translateY(-2px);
    border-color: var(--ncc-border-strong);
    color: var(--ncc-text);
}

.ncc-stat-icon {
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
    margin-bottom: .75rem;
    color: var(--ncc-accent);
    background: var(--ncc-accent-soft);
}

.ncc-stat-warn .ncc-stat-icon {
    color: #fbbf24;
    background: rgba(251, 191, 36, .14);
}

.ncc-stat-danger .ncc-stat-icon {
    color: #f0707e;
    background: rgba(163, 32, 44, .25);
}

.ncc-stat-value {
    font-size: 1.9rem;
    font-weight: 700;
    line-height: 1.1;
    color: #fff;
}

.ncc-stat-label {
    margin-top: .25rem;
    font-size: .8rem;
    color: var(--ncc-muted);
}

.ncc-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.ncc-list li {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .6rem 0;
    border-bottom: 1px solid var(--ncc-border);
}

.ncc-list li:last-child {
    border-bottom: 0;
}

/* =========================================================================
   Lista Punti di interesse: colonne per livello + pallino di stato
   Il colore della colonna indica il livello; il pallino indica lo stato
   (verde = tutto coperto, giallo = in scadenza, rosso = manca o scaduto).
   ========================================================================= */
#regionsAccordion table td:nth-child(1) { --tier: #a78bfa; }  /* Premium */
#regionsAccordion table td:nth-child(2) { --tier: #fbbf24; }  /* Oro */
#regionsAccordion table td:nth-child(3) { --tier: #cbd5e1; }  /* Argento */
#regionsAccordion table td:nth-child(4) { --tier: #d89060; }  /* Bronzo */
#regionsAccordion table td:nth-child(5) { --tier: #94a3b8; }  /* Base */

/* Intestazioni dei livelli */
#regionsAccordion .region-header-item .badge.bg-white {
    background: color-mix(in srgb, var(--tier) 14%, transparent) !important;
    color: var(--tier) !important;
    border: 1px solid color-mix(in srgb, var(--tier) 45%, transparent);
    padding: .4rem .9rem;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
}

/* Numeri: pillola neutra con pallino di stato */
#regionsAccordion .badge.subscriptions-info-btn:not(.bg-white) {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    min-width: 62px;
    justify-content: center;
    padding: .4rem .85rem;
    background: rgba(255, 255, 255, .06) !important;
    color: #fff !important;
    border: 1px solid var(--ncc-border-strong);
    font-size: .8rem;
    font-weight: 600;
    transition: background-color .15s ease, border-color .15s ease;
}

#regionsAccordion .badge.subscriptions-info-btn:not(.bg-white)::before {
    content: "";
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--ncc-muted);
    box-shadow: 0 0 0 3px rgba(255, 255, 255, .04);
}

#regionsAccordion .badge.subscriptions-info-btn.bg-success::before { background: #34d399; }
#regionsAccordion .badge.subscriptions-info-btn.bg-warning::before { background: #fbbf24; }
#regionsAccordion .badge.subscriptions-info-btn.bg-danger::before { background: #e0485a; }

#regionsAccordion button.badge.subscriptions-info-btn:not(.bg-white):not([disabled]):hover {
    background: color-mix(in srgb, var(--tier) 18%, transparent) !important;
    border-color: var(--tier);
}

/* Zero: nessun abbonamento di quel livello, non e' un allarme */
#regionsAccordion .badge.subscriptions-info-btn.is-zero {
    background: transparent !important;
    color: var(--ncc-muted) !important;
    border-style: dashed;
    border-color: var(--ncc-border);
    font-weight: 500;
}

#regionsAccordion .badge.subscriptions-info-btn.is-zero::before {
    display: none;
}

/* Etichetta del filtro attivo, mostrata quando si arriva da una carta della dashboard */
.ncc-filter-chip {
    display: inline-flex;
    align-items: center;
    gap: .6rem;
    padding: .4rem .5rem .4rem .9rem;
    border: 1px solid var(--ncc-border-strong);
    border-radius: 999px;
    background: var(--ncc-accent-soft);
    color: var(--ncc-text);
    font-size: .9rem;
}

.ncc-filter-chip a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    color: var(--ncc-muted);
    text-decoration: none;
}

.ncc-filter-chip a:hover {
    background: var(--ncc-surface-3);
    color: #fff;
}
