/*
 * ============================================================================
 *  TEMA "LIQUID GLASS" (ispirato allo stile Apple)
 * ----------------------------------------------------------------------------
 *  Attivo solo con la classe "theme-glass" sul <body> (sezione 'body-class' nel layout).
 *  Ogni regola è prefissata da "body.theme-glass" per avere priorità sulle regole di
 *  AdminLTE / dark-mode.css (caricato anche dinamicamente dopo questo file).
 *  Superfici traslucide sfocate, bordi arrotondati, luce interna sul bordo superiore,
 *  pulsanti morbidi con feedback al tocco. Varianti per il tema scuro in fondo al file.
 * ============================================================================
 */

body.theme-glass {
    --glass-bg:          rgba(255, 255, 255, .55);
    --glass-bg-strong:   rgba(255, 255, 255, .78);
    --glass-bg-soft:     rgba(255, 255, 255, .35);
    --glass-border:      rgba(255, 255, 255, .70);
    --glass-line:        rgba(15, 23, 42, .07);
    --glass-highlight:   inset 0 1px 0 rgba(255, 255, 255, .80);
    --glass-shadow:      0 10px 30px rgba(30, 41, 80, .10), 0 1px 3px rgba(30, 41, 80, .06);
    --glass-shadow-hover:0 16px 40px rgba(30, 41, 80, .16), 0 2px 6px rgba(30, 41, 80, .08);
    --glass-blur:        blur(22px) saturate(180%);
    --glass-text:        #1d2433;
    --glass-text-soft:   #5b6577;
    --glass-thead:       rgba(250, 251, 254, .92);
    /* Superfici "piene" usate dalle view (header sticky, pannelli): vedi dark-mode-custom.css */
    --superficie-solida: rgba(250, 251, 254, .95);
    --superficie-tenue:  rgba(255, 255, 255, .45);
    --radius-xl: 24px;
    --radius-lg: 20px;
    --radius-md: 14px;
    --radius-sm: 10px;
    --glass-ease: cubic-bezier(.2, .8, .2, 1);
    color: var(--glass-text);
    background: transparent;
}

/* ---------------------------------------------------------------------------
 *  SFONDO: "mesh" di colori sfumati dietro alle superfici di vetro
 * ------------------------------------------------------------------------- */
body.theme-glass::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background:
        radial-gradient(at 10% 15%, rgba(120, 165, 255, .45) 0, transparent 45%),
        radial-gradient(at 90% 10%, rgba(255, 165, 200, .38) 0, transparent 45%),
        radial-gradient(at 85% 85%, rgba(120, 225, 205, .38) 0, transparent 50%),
        radial-gradient(at 12% 92%, rgba(255, 205, 140, .32) 0, transparent 50%),
        linear-gradient(135deg, #eef2fa 0%, #f5f1f8 100%);
}
body.theme-glass .wrapper,
body.theme-glass .content-wrapper,
body.theme-glass .main-footer { background: transparent !important; }

/* ---------------------------------------------------------------------------
 *  SUPERFICI DI VETRO (mixin "manuale": card, navbar, dropdown, modali...)
 * ------------------------------------------------------------------------- */
body.theme-glass .card,
body.theme-glass .main-header,
body.theme-glass .dropdown-menu,
body.theme-glass .modal-content,
body.theme-glass .breadcrumb,
body.theme-glass .main-footer,
body.theme-glass .select2-dropdown,
body.theme-glass .ui-tooltip.ev-ui-tooltip {
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
}

/* ----- Card ----- */
body.theme-glass .card {
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--glass-shadow), var(--glass-highlight);
    transition: box-shadow .25s var(--glass-ease), transform .25s var(--glass-ease);
}
body.theme-glass .card > .card-header {
    background: transparent;
    border-bottom: 1px solid var(--glass-line);
    border-top-left-radius: var(--radius-lg);
    border-top-right-radius: var(--radius-lg);
}
body.theme-glass .card > .card-footer {
    background: var(--glass-bg-soft);
    border-top: 1px solid var(--glass-line);
    border-bottom-left-radius: var(--radius-lg);
    border-bottom-right-radius: var(--radius-lg);
}
body.theme-glass .card .card-title { font-weight: 600; }

/* ----- Navbar ----- */
body.theme-glass .main-header {
    background: var(--glass-bg-strong) !important;
    border-bottom: 1px solid var(--glass-line) !important;
    box-shadow: 0 4px 20px rgba(30, 41, 80, .06);
}
body.theme-glass .main-header .nav-link { border-radius: var(--radius-sm); transition: background .2s ease; }
body.theme-glass .main-header .nav-link:hover { background: rgba(15, 23, 42, .05); }

/* ----- Sidebar: vetro scuro (come le sidebar di macOS) ----- */
body.theme-glass .main-sidebar {
    background: rgba(22, 27, 38, .82) !important;
    -webkit-backdrop-filter: blur(24px) saturate(160%);
    backdrop-filter: blur(24px) saturate(160%);
    box-shadow: 4px 0 30px rgba(0, 0, 0, .12) !important;
}
body.theme-glass .main-sidebar .brand-link { border-bottom-color: rgba(255, 255, 255, .08) !important; }
body.theme-glass .main-sidebar .user-panel { border-bottom-color: rgba(255, 255, 255, .08) !important; }
body.theme-glass .nav-sidebar .nav-link {
    border-radius: var(--radius-sm);
    margin-bottom: 2px;
    transition: background-color .2s ease, color .2s ease;
}
body.theme-glass .nav-sidebar .nav-link:hover { background-color: rgba(255, 255, 255, .08); }
/* Voce attiva (app/pagina corrente): vetro chiaro tenue, niente ombre esterne */
body.theme-glass .main-sidebar .nav-sidebar > .nav-item > .nav-link.active,
body.theme-glass .main-sidebar .nav-sidebar .nav-treeview > .nav-item > .nav-link.active {
    background-color: rgba(255, 255, 255, .16) !important;
    background-image: none !important;
    color: #fff !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .14) !important;
}
/* Gruppo che contiene la voce attiva: solo evidenziato, la "pillola" resta alla voce attiva */
body.theme-glass .main-sidebar .nav-sidebar > .nav-item.has-treeview > .nav-link.active {
    background-color: rgba(255, 255, 255, .06) !important;
    box-shadow: none !important;
}
body.theme-glass .main-sidebar .nav-sidebar .nav-link.active .nav-icon { color: #fff; }

/* Menu compresso (non in hover): icone centrate tutte sullo stesso asse */
body.theme-glass.sidebar-collapse .main-sidebar:not(:hover):not(.sidebar-focused) .nav-sidebar .nav-item { margin-left: 0 !important; }
body.theme-glass.sidebar-collapse .main-sidebar:not(:hover):not(.sidebar-focused) .nav-sidebar .nav-link {
    width: 2.75rem;
    margin-left: auto;
    margin-right: auto;
    padding-left: 0;
    padding-right: 0;
    text-align: center;
}
body.theme-glass.sidebar-collapse .main-sidebar:not(:hover):not(.sidebar-focused) .nav-sidebar .nav-link .nav-icon {
    margin-left: 0 !important;
    margin-right: 0 !important;
    width: 100%;
}
/* Da compresso il gruppo aperto non deve sembrare una seconda voce attiva */
body.theme-glass.sidebar-collapse .main-sidebar:not(:hover):not(.sidebar-focused) .nav-sidebar > .nav-item.has-treeview > .nav-link.active {
    background-color: transparent !important;
}

/* ----- Intestazione pagina e breadcrumb ----- */
body.theme-glass .content-header h1 { font-weight: 600; letter-spacing: 2px !important; }
body.theme-glass .breadcrumb {
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: 999px;
    padding: .35rem 1rem;
    box-shadow: var(--glass-highlight);
}

/* ---------------------------------------------------------------------------
 *  PULSANTI
 * ------------------------------------------------------------------------- */
body.theme-glass .btn {
    border-radius: var(--radius-md);
    font-weight: 500;
    letter-spacing: .2px;
    transition: transform .15s var(--glass-ease), box-shadow .2s var(--glass-ease), filter .2s ease, background-color .2s ease;
}
body.theme-glass .btn:not(.btn-link):not(.btn-tool):hover { transform: translateY(-1px); }
body.theme-glass .btn:not(.btn-link):not(.btn-tool):active { transform: scale(.97); }
body.theme-glass .btn-sm, body.theme-glass .btn-group-sm > .btn { border-radius: var(--radius-sm); }
body.theme-glass .btn-lg { border-radius: var(--radius-lg); }

/* Pulsanti colorati: riflesso di luce in alto + ombra del proprio colore */
body.theme-glass .btn-primary,
body.theme-glass .btn-secondary,
body.theme-glass .btn-success,
body.theme-glass .btn-info,
body.theme-glass .btn-warning,
body.theme-glass .btn-danger,
body.theme-glass .btn-dark {
    background-image: linear-gradient(180deg, rgba(255, 255, 255, .24) 0%, rgba(255, 255, 255, 0) 55%);
    border-color: transparent;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 4px 14px rgba(15, 23, 42, .14);
}
body.theme-glass .btn-primary:hover,
body.theme-glass .btn-secondary:hover,
body.theme-glass .btn-success:hover,
body.theme-glass .btn-info:hover,
body.theme-glass .btn-warning:hover,
body.theme-glass .btn-danger:hover,
body.theme-glass .btn-dark:hover {
    filter: brightness(1.06) saturate(1.05);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .4), 0 8px 22px rgba(15, 23, 42, .2);
}
body.theme-glass .btn-primary { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 4px 14px color-mix(in srgb, var(--primary) 35%, transparent); }
body.theme-glass .btn-success { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 4px 14px rgba(40, 167, 69, .30); }
body.theme-glass .btn-danger  { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 4px 14px rgba(220, 53, 69, .30); }
body.theme-glass .btn-warning { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .45), 0 4px 14px rgba(255, 193, 7, .35); }
body.theme-glass .btn-info    { box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 4px 14px rgba(23, 162, 184, .30); }

/* Pulsanti neutri: vetro */
body.theme-glass .btn-default,
body.theme-glass .btn-light,
body.theme-glass .btn-outline-secondary,
body.theme-glass .btn-outline-primary,
body.theme-glass .btn-outline-dark {
    background-color: var(--glass-bg);
    border: 1px solid var(--glass-border);
    box-shadow: var(--glass-highlight), 0 2px 8px rgba(15, 23, 42, .06);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
}
body.theme-glass .btn-default:hover,
body.theme-glass .btn-light:hover { background-color: var(--glass-bg-strong); }
body.theme-glass .btn-outline-primary { color: var(--primary); }
body.theme-glass .btn-outline-primary:hover { background-color: var(--primary); color: #fff; }

/* Pulsanti "tool" nelle intestazioni delle card (es. X dei widget): cerchio */
body.theme-glass .btn-tool {
    border-radius: 50%;
    width: 28px; height: 28px; padding: 0;
    display: inline-flex; align-items: center; justify-content: center;
    transition: background .2s ease, color .2s ease;
}
body.theme-glass .btn-tool:hover { background: rgba(15, 23, 42, .08); }

/* ---------------------------------------------------------------------------
 *  CAMPI DEI FORM, SELECT2, INPUT GROUP
 * ------------------------------------------------------------------------- */
body.theme-glass .form-control,
body.theme-glass .custom-select,
body.theme-glass .select2-container--bootstrap4 .select2-selection,
body.theme-glass .dataTables_wrapper .dataTables_filter input,
body.theme-glass .dataTables_wrapper .dataTables_length select {
    background-color: rgba(255, 255, 255, .62);
    border: 1px solid rgba(15, 23, 42, .10);
    border-radius: var(--radius-sm);
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, .04);
    transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
body.theme-glass .form-control:focus,
body.theme-glass .custom-select:focus,
body.theme-glass .select2-container--bootstrap4.select2-container--focus .select2-selection,
body.theme-glass .dataTables_wrapper .dataTables_filter input:focus {
    background-color: rgba(255, 255, 255, .9);
    border-color: color-mix(in srgb, var(--primary) 55%, transparent);
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--primary) 18%, transparent);
    outline: none;
}
body.theme-glass .input-group-text {
    background-color: var(--glass-bg-soft);
    border-color: rgba(15, 23, 42, .10);
    border-radius: var(--radius-sm);
}
body.theme-glass .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice {
    border-radius: 999px;
    border: 0;
    background: color-mix(in srgb, var(--primary) 14%, white);
    color: var(--glass-text);
    padding: 0 .6rem;
}
body.theme-glass .select2-dropdown {
    background: var(--glass-bg-strong);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-md) !important;
    box-shadow: var(--glass-shadow-hover);
    overflow: hidden;
}
body.theme-glass .select2-results__option { border-radius: var(--radius-sm); margin: 2px 6px; }

/* ---------------------------------------------------------------------------
 *  TABELLE — regole unificate per QUALSIASI tabella ".table" dell'applicazione
 *  (DataTables, tabelle semplici, tabelle nelle modali, planner, ordini...).
 *  Solo ".table": le griglie di FullCalendar usano "table-bordered" senza ".table"
 *  e non devono perdere le linee verticali.
 * ------------------------------------------------------------------------- */
body.theme-glass .table {
    color: var(--glass-text);
    background: transparent;
    margin-bottom: 0;
}
/* Contenitore arrotondato: tabelle con bordo e tutte le DataTables.
   Niente overflow:hidden (taglierebbe i menu a tendina delle righe): angoli sulle celle d'angolo */
body.theme-glass table.table.table-bordered,
body.theme-glass table.table.dataTable {
    border: 1px solid var(--glass-line) !important;
    border-collapse: separate !important;
    border-spacing: 0;
    border-radius: var(--radius-md);
    background: var(--glass-bg-soft);
}
body.theme-glass table.table.table-bordered > thead > tr:first-child > th:first-child,
body.theme-glass table.table.dataTable > thead > tr:first-child > th:first-child { border-top-left-radius: var(--radius-md); }
body.theme-glass table.table.table-bordered > thead > tr:first-child > th:last-child,
body.theme-glass table.table.dataTable > thead > tr:first-child > th:last-child { border-top-right-radius: var(--radius-md); }
body.theme-glass table.table.table-bordered > tbody > tr:last-child > td:first-child,
body.theme-glass table.table.dataTable > tbody > tr:last-child > td:first-child { border-bottom-left-radius: var(--radius-md); }
body.theme-glass table.table.table-bordered > tbody > tr:last-child > td:last-child,
body.theme-glass table.table.dataTable > tbody > tr:last-child > td:last-child { border-bottom-right-radius: var(--radius-md); }

/* Linee: solo orizzontali e sottili (più leggibile di una griglia piena) */
body.theme-glass .table th,
body.theme-glass .table td {
    border-top: 0;
    border-bottom: 1px solid var(--glass-line);
    vertical-align: middle;
}
body.theme-glass .table.table-bordered th,
body.theme-glass .table.table-bordered td { border-left: 0 !important; border-right: 0 !important; border-top: 0 !important; }
body.theme-glass .table > tbody > tr:last-child > td { border-bottom: 0; }

/* Intestazioni: maiuscoletto, colore attenuato, sfondo quasi pieno (resta leggibile se sticky) */
body.theme-glass .table > thead > tr > th,
body.theme-glass .dataTables_scrollHead .table > thead > tr > th {
    background-color: var(--glass-thead);
    color: var(--glass-text-soft);
    font-size: .74rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .6px;
    border-bottom: 1px solid var(--glass-line) !important;
    white-space: nowrap;
}
body.theme-glass .table > tfoot > tr > th { background-color: var(--glass-thead); border-top: 1px solid var(--glass-line); }
/* Riga dei filtri per colonna (input sotto all'intestazione) */
body.theme-glass .table > thead > tr + tr > th { text-transform: none; letter-spacing: 0; font-weight: 400; }

/* Righe */
body.theme-glass .table > tbody > tr { transition: background-color .15s ease; }
body.theme-glass .table-striped > tbody > tr:nth-of-type(odd) { background-color: rgba(255, 255, 255, .28); }
body.theme-glass .table-hover > tbody > tr:hover,
body.theme-glass table.table.dataTable > tbody > tr:hover { background-color: rgba(255, 255, 255, .7); }
body.theme-glass table.dataTable > tbody > tr.selected,
body.theme-glass table.dataTable > tbody > tr.selected > td { background-color: color-mix(in srgb, var(--primary) 16%, transparent) !important; color: var(--glass-text); }
body.theme-glass .table-sm th,
body.theme-glass .table-sm td { padding: .4rem .55rem; }

/* Righe colorate per stato (sfondo pastello impostato inline da JS): velatura che le "ammorbidisce"
   sul vetro senza perdere il colore (l'ombra interna è disegnata sopra allo sfondo, sotto al testo) */
body.theme-glass .table td[style*="background-color"] { box-shadow: inset 0 0 0 100vmax rgba(255, 255, 255, .28); }

/* Celle/colonne fisse e intestazioni sticky (planner, consuntivazione, DataTables FixedColumns):
   devono essere coprenti per non mostrare le righe che scorrono sotto */
body.theme-glass .table thead th[style*="sticky"],
body.theme-glass .dataTables_scrollHead,
body.theme-glass .DTFC_LeftHeadWrapper,
body.theme-glass .DTFC_RightHeadWrapper { background-color: var(--superficie-solida) !important; }
body.theme-glass table.dataTable .dtfc-fixed-left,
body.theme-glass table.dataTable .dtfc-fixed-right,
body.theme-glass .DTFC_LeftBodyLiner .table td,
body.theme-glass .DTFC_RightBodyLiner .table td { background-color: var(--superficie-solida); }

/* DataTables con scroll orizzontale: la tabella è divisa in intestazione + corpo.
   Le unisco visivamente in un unico contenitore arrotondato */
body.theme-glass .dataTables_scroll { border-radius: var(--radius-md); }
body.theme-glass .dataTables_scrollHead { border-top-left-radius: var(--radius-md); border-top-right-radius: var(--radius-md); }
body.theme-glass .dataTables_scrollHead table.table.dataTable {
    border-bottom: 0 !important;
    border-bottom-left-radius: 0; border-bottom-right-radius: 0;
}
body.theme-glass .dataTables_scrollBody table.table.dataTable {
    border-top: 0 !important;
    border-top-left-radius: 0; border-top-right-radius: 0;
}
body.theme-glass .dataTables_scrollBody table.table.dataTable > thead > tr > th { border-radius: 0 !important; }
body.theme-glass .dataTables_scrollBody { background: transparent; }

/* Controlli DataTables: ricerca, "mostra N", info, paginazione, pulsanti export */
body.theme-glass .dataTables_wrapper .dataTables_length,
body.theme-glass .dataTables_wrapper .dataTables_filter { margin-bottom: .6rem; }
body.theme-glass .dataTables_wrapper .dataTables_filter input { border-radius: 999px; padding-left: .9rem; padding-right: .9rem; }
body.theme-glass .dataTables_info { color: var(--glass-text-soft); font-size: .82rem; padding-top: .9rem !important; }
body.theme-glass .dataTables_processing {
    background: var(--glass-bg-strong) !important;
    border: 1px solid var(--glass-border) !important;
    border-radius: var(--radius-md);
    box-shadow: var(--glass-shadow-hover);
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
}
body.theme-glass .dt-buttons .btn { margin-right: .35rem; }
body.theme-glass .pagination { gap: 4px; margin-top: .6rem; }
body.theme-glass .page-link {
    border-radius: var(--radius-sm) !important;
    border: 1px solid var(--glass-border);
    background: var(--glass-bg);
    color: var(--glass-text);
    min-width: 36px;
    text-align: center;
    box-shadow: var(--glass-highlight);
    transition: background .2s ease, transform .15s ease;
}
body.theme-glass .page-link:hover { background: var(--glass-bg-strong); color: var(--glass-text); transform: translateY(-1px); }
body.theme-glass .page-item.active .page-link {
    background: var(--primary);
    border-color: transparent;
    color: #fff;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), 0 4px 12px color-mix(in srgb, var(--primary) 35%, transparent);
}
body.theme-glass .page-item.disabled .page-link { opacity: .5; background: var(--glass-bg-soft); }
/* Menu a tendina dentro le tabelle sempre sopra alle righe e alla paginazione */
body.theme-glass .table .dropdown-menu { z-index: 1060; }
/* Responsive di DataTables (righe figlie) */
body.theme-glass table.dataTable > tbody > tr.child ul.dtr-details > li { border-bottom-color: var(--glass-line); }

/* ---------------------------------------------------------------------------
 *  BADGE, DROPDOWN, MODALI, ALERT, LIST GROUP, TOOLTIP
 * ------------------------------------------------------------------------- */
body.theme-glass .badge { border-radius: 999px; padding: .3em .65em; font-weight: 600; }

body.theme-glass .dropdown-menu {
    background: var(--glass-bg-strong);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-md) !important;
    box-shadow: var(--glass-shadow-hover), var(--glass-highlight);
    padding: 6px;
}
body.theme-glass .dropdown-item { border-radius: var(--radius-sm); }
body.theme-glass .dropdown-item:hover,
body.theme-glass .dropdown-item:focus { background: rgba(15, 23, 42, .06); }
body.theme-glass .dropdown-menu .dropdown-header,
body.theme-glass .dropdown-menu .user-header { border-radius: var(--radius-sm) !important; }

body.theme-glass .modal-content {
    background: var(--glass-bg-strong);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-xl);
    box-shadow: 0 30px 80px rgba(15, 23, 42, .28), var(--glass-highlight);
}
body.theme-glass .modal-header { border-bottom-color: var(--glass-line); }
body.theme-glass .modal-footer { border-top-color: var(--glass-line); }
body.theme-glass .modal-backdrop.show { opacity: .35; }

body.theme-glass .alert { border-radius: var(--radius-md); border: 1px solid var(--glass-border); box-shadow: var(--glass-highlight); }

body.theme-glass .list-group-item { background: transparent; border-color: var(--glass-line); }
body.theme-glass .list-group-item-action:hover { background: rgba(255, 255, 255, .55); }

/* ---------------------------------------------------------------------------
 *  HOME: app, gruppi e widget
 * ------------------------------------------------------------------------- */
body.theme-glass #intro-apps > section > .card,
body.theme-glass #intro-group-apps .connectedSortable-apps .card {
    overflow: hidden;
}
body.theme-glass #intro-apps > section:hover > .card,
body.theme-glass #intro-group-apps .connectedSortable-apps section:hover .card {
    transform: translateY(-3px);
    box-shadow: var(--glass-shadow-hover), var(--glass-highlight);
}
/* Le card app usano già un effetto di opacità inline al passaggio del mouse: lo rendo più leggero */
body.theme-glass #intro-apps > section,
body.theme-glass #intro-group-apps .connectedSortable-apps section { opacity: 1 !important; }
/* Widget: angoli arrotondati anche per i contenuti a filo (meteo, schede, liste) */
body.theme-glass .connectedSortable-widgets .card { overflow: hidden; }
body.theme-glass .connectedSortable-widgets .card-body { background: transparent; }
body.theme-glass .weather .mt-hero { border-radius: 0; }
/* Gruppi di applicazioni (accordion) */
body.theme-glass .accordion_apps > .card { margin-bottom: 1rem; }
/* Orologio */
body.theme-glass #clockHome { text-shadow: none; font-weight: 200; }

/* ---------------------------------------------------------------------------
 *  MODALI (anche bootbox): vetro, angoli coerenti, sfondo sfocato
 * ------------------------------------------------------------------------- */
body.theme-glass .modal-backdrop {
    background-color: rgba(15, 23, 42, .55);
    -webkit-backdrop-filter: blur(6px);
    backdrop-filter: blur(6px);
}
body.theme-glass .modal-backdrop.show { opacity: 1; }
body.theme-glass .modal-header {
    border-top-left-radius: calc(var(--radius-xl) - 1px);
    border-top-right-radius: calc(var(--radius-xl) - 1px);
    padding: 1rem 1.25rem;
}
body.theme-glass .modal-header .modal-title { font-weight: 600; }
body.theme-glass .modal-body { padding: 1.1rem 1.25rem; }
body.theme-glass .modal-footer {
    border-bottom-left-radius: calc(var(--radius-xl) - 1px);
    border-bottom-right-radius: calc(var(--radius-xl) - 1px);
    background: var(--glass-bg-soft);
    padding: .75rem 1.25rem;
}
body.theme-glass .modal-header .close {
    width: 32px; height: 32px; padding: 0; margin: -.25rem -.25rem -.25rem auto;
    border-radius: 50%; opacity: .6; text-shadow: none; transition: background .2s ease, opacity .2s ease;
}
body.theme-glass .modal-header .close:hover { background: rgba(15, 23, 42, .08); opacity: 1; }
body.theme-glass .modal-header.bg-info .close,
body.theme-glass .modal-header.text-white .close { color: #fff; }
body.theme-glass .bootbox .modal-body { font-size: .95rem; }
body.theme-glass .bootbox .bootbox-close-button { border-radius: 50%; }
/* Le tabelle nelle modali restano compatte */
body.theme-glass .modal .table > thead > tr > th { font-size: .7rem; }

/* ---------------------------------------------------------------------------
 *  TAB (nav-tabs, card-tabs) e PILLS
 * ------------------------------------------------------------------------- */
body.theme-glass .nav-tabs { border-bottom-color: var(--glass-line); }
body.theme-glass .nav-tabs .nav-link {
    border: 0;
    border-radius: var(--radius-sm) var(--radius-sm) 0 0;
    color: var(--glass-text-soft);
    font-weight: 500;
    transition: background .2s ease, color .2s ease;
}
body.theme-glass .nav-tabs .nav-link:hover { background: rgba(255, 255, 255, .45); color: var(--glass-text); }
body.theme-glass .nav-tabs .nav-link.active,
body.theme-glass .nav-tabs .nav-item.show .nav-link {
    background: var(--glass-bg-strong);
    color: var(--glass-text);
    box-shadow: inset 0 -2px 0 var(--primary), var(--glass-highlight);
}
body.theme-glass .card-tabs > .card-header,
body.theme-glass .card-outline-tabs > .card-header { background: transparent; }
body.theme-glass .nav-pills:not(.nav-sidebar) .nav-link { border-radius: 999px; }
body.theme-glass .nav-pills:not(.nav-sidebar) .nav-link.active {
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .3), 0 4px 12px color-mix(in srgb, var(--primary) 30%, transparent);
}

/* ---------------------------------------------------------------------------
 *  ORDINI / PICKING: card prodotto e intestazioni sticky
 *  Card chiare (ordine cliente, carrello, B2B) e card scure di picking
 *  (lista di prelievo, prelevati, sostituzioni). I contenitori sono elencati con :is()
 *  perché le view definiscono regole con #id: così il tema ha sempre la precedenza. Niente backdrop-filter sulle singole
 *  card: le liste arrivano a centinaia di elementi e i palmari ne soffrirebbero;
 *  l'effetto vetro è dato da gradienti traslucidi, bordo luminoso e ombre morbide.
 * ------------------------------------------------------------------------- */
body.theme-glass {
    --card-ord-bg:       linear-gradient(160deg, rgba(255, 255, 255, .92) 0%, rgba(255, 255, 255, .62) 100%);
    --card-ord-border:   rgba(255, 255, 255, .85);
    --card-ord-chip:     rgba(255, 255, 255, .62);
    --card-ord-chip-brd: rgba(15, 23, 42, .06);
    --card-pick-bg:      linear-gradient(160deg, rgba(44, 52, 68, .94) 0%, rgba(22, 26, 36, .94) 100%);
    --card-pick-border:  rgba(255, 255, 255, .12);
    --card-pick-chip:    rgba(255, 255, 255, .07);
}
body.theme-glass.dark-mode {
    --card-ord-bg:       linear-gradient(160deg, rgba(52, 60, 76, .82) 0%, rgba(32, 37, 49, .82) 100%);
    --card-ord-border:   rgba(255, 255, 255, .10);
    --card-ord-chip:     rgba(255, 255, 255, .06);
    --card-ord-chip-brd: rgba(255, 255, 255, .07);
    --card-pick-bg:      linear-gradient(160deg, rgba(40, 47, 62, .90) 0%, rgba(18, 21, 30, .92) 100%);
}

/* Card chiare */
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item:not(.bg-dark) {
    background: var(--card-ord-bg);
    border: 1px solid var(--card-ord-border);
    border-radius: var(--radius-lg);
    color: var(--glass-text);
    box-shadow: var(--glass-shadow), var(--glass-highlight);
}
/* Card scure di picking: vetro fumé */
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item.bg-dark {
    background: var(--card-pick-bg) !important;
    border: 1px solid var(--card-pick-border);
    border-radius: var(--radius-lg);
    box-shadow: 0 12px 30px rgba(15, 23, 42, .28), inset 0 1px 0 rgba(255, 255, 255, .10);
}
/* Promo: bordo rosso morbido con alone, al posto del bordo pieno */
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item.promo,
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item.promo:hover {
    border-color: rgba(220, 53, 69, .55);
    box-shadow: var(--glass-shadow), 0 0 0 3px rgba(220, 53, 69, .12), var(--glass-highlight);
}

/* Hover: sollevamento leggero invece dello zoom al 110% con bordo nero.
   La transizione mantiene il ritardo sullo z-index definito nelle view (card ingrandita sopra le vicine). */
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item {
    transition: transform .25s var(--glass-ease), box-shadow .25s var(--glass-ease), border-color .25s ease, z-index 0s linear .25s;
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item:hover {
    transform: translateY(-4px) scale(1.03);
    transition: transform .25s var(--glass-ease), box-shadow .25s var(--glass-ease), border-color .25s ease, z-index 0s linear 0s;
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item:not(.bg-dark):not(.promo):hover {
    border-color: color-mix(in srgb, var(--primary) 35%, rgba(255, 255, 255, .85));
    box-shadow: var(--glass-shadow-hover), 0 0 0 3px color-mix(in srgb, var(--primary) 10%, transparent), var(--glass-highlight);
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item.bg-dark:hover {
    border-color: rgba(255, 255, 255, .22);
    box-shadow: 0 18px 40px rgba(15, 23, 42, .38), inset 0 1px 0 rgba(255, 255, 255, .14);
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item.promo:hover {
    box-shadow: var(--glass-shadow-hover), 0 0 0 3px rgba(220, 53, 69, .18), var(--glass-highlight);
}

/* Immagine: angoli arrotondati concentrici alla card, zoom contenuto */
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item img {
    border-radius: var(--radius-md);
    box-shadow: 0 4px 12px rgba(15, 23, 42, .10);
    transition: transform .3s var(--glass-ease);
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item img:hover { transform: scale(1.04); }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item.bg-dark img { box-shadow: 0 4px 14px rgba(0, 0, 0, .35); }
@media (hover: none) {
    body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item:hover,
    body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item img:hover { transform: none; }
}

/* Box informativi (min/ordinato/stock, posizione, punto vendita, suggerimento): chip di vetro */
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .picking-info .pi-cell,
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .picking-info .pi-row,
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .three-columns > span {
    border-radius: var(--radius-sm);
    background-color: var(--card-ord-chip);
    box-shadow: inset 0 0 0 1px var(--card-ord-chip-brd), inset 0 1px 0 rgba(255, 255, 255, .55);
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .three-columns { gap: 4px; padding: 0 8px 6px; }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item.bg-dark .picking-info .pi-cell,
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item.bg-dark .picking-info .pi-row,
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item.bg-dark .three-columns > span,
body.theme-glass.dark-mode :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .picking-info .pi-cell,
body.theme-glass.dark-mode :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .picking-info .pi-row,
body.theme-glass.dark-mode :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .three-columns > span {
    background-color: var(--card-pick-chip);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .07), inset 0 1px 0 rgba(255, 255, 255, .06);
}
/* Avvisi (suggerimento ordine, disponibilità): stessa dimensione, tinta ambra */
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .picking-info .pi-row-warning,
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .picking-info .pi-cell-warning {
    background-color: rgba(255, 193, 7, .16) !important;
    box-shadow: inset 0 0 0 1px rgba(255, 193, 7, .55) !important;
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item:not(.bg-dark) .picking-info .pi-row-warning { color: #8a5a00; }
body.theme-glass.dark-mode :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .picking-info .pi-row-warning { color: #ffc107; }

/* Prezzo e quantità da prelevare */
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .pi-price { color: var(--glass-text); }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .qtapicking { letter-spacing: -.01em; text-shadow: 0 1px 8px rgba(0, 0, 0, .25); }

/* Selettore quantità: capsula con pulsanti tondi */
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group {
    width: auto;
    flex-wrap: nowrap;
    margin-left: .5rem;
    margin-right: .5rem;
    padding: 3px;
    border-radius: 999px;
    background: var(--card-ord-chip);
    box-shadow: inset 0 0 0 1px var(--card-ord-chip-brd);
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group > .input-group-prepend,
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group > .input-group-append { margin: 0 !important; }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group .qty-button {
    width: 32px; height: 32px; padding: 0;
    justify-content: center;
    border: 0;
    border-radius: 50% !important;
    background: var(--glass-bg-strong);
    box-shadow: 0 1px 3px rgba(15, 23, 42, .12), var(--glass-highlight);
    cursor: pointer;
    transition: transform .15s var(--glass-ease), background-color .15s ease;
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group .qty-button:hover { transform: scale(1.08); }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group .qty-button:active { transform: scale(.92); }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group .qta-item {
    height: 32px;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    font-weight: 600;
    -moz-appearance: textfield;
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group .qta-item::-webkit-outer-spin-button,
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group .qta-item::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group .qta-item.qta-flash-add   { background: rgba(40, 167, 69, .18) !important; border-radius: 999px; }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .input-group .qta-item.qta-flash-minus { background: rgba(220, 53, 69, .16) !important; border-radius: 999px; }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .add-cart { border-radius: 999px; margin-left: .5rem; margin-right: .5rem; }

/* Pulsanti sovrapposti alla foto (rimuovi / sostituisci): bottoni di vetro tondi */
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .close-btn,
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .change-btn {
    width: 28px; height: 28px;
    display: flex; align-items: center; justify-content: center;
    top: 12px;
    line-height: 1;
    font-size: 18px;
    color: #fff;
    background-color: rgba(15, 23, 42, .38);
    border: 1px solid rgba(255, 255, 255, .35);
    border-radius: 50%;
    -webkit-backdrop-filter: blur(8px) saturate(160%);
    backdrop-filter: blur(8px) saturate(160%);
    box-shadow: 0 2px 8px rgba(0, 0, 0, .25);
    transition: background-color .2s ease, transform .15s var(--glass-ease);
}
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .close-btn { right: 14px; font-size: 20px; }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .change-btn { left: 14px; }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .close-btn:hover  { background-color: rgba(220, 53, 69, .85); transform: scale(1.08); }
body.theme-glass :is(#cardList, #carrello, #productPickingList, #prelevatiList, .sostituti-prodotti-container, .card-list) .card-item .change-btn:hover { background-color: color-mix(in srgb, var(--primary) 85%, transparent); transform: scale(1.08); }

/* Intestazioni sticky (tab Prodotti/Carrello, ricerca) */
body.theme-glass .card-header-sticky,
body.theme-glass .search-header-sticky {
    background-color: var(--superficie-solida) !important;
    border-bottom-color: var(--glass-line) !important;
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
}
body.theme-glass .card-header-sticky { border-top-left-radius: var(--radius-lg); border-top-right-radius: var(--radius-lg); }

/* Header "ordini presi in carico" (picking): badge a capsula */
body.theme-glass .ordini-header .ordini-badge {
    border-radius: 999px;
    border-color: var(--glass-line) !important;
    background: var(--card-ord-chip);
}

/* ---------------------------------------------------------------------------
 *  CONTROLLI: switch e checkbox personalizzati, notifiche, datepicker, jQuery UI
 * ------------------------------------------------------------------------- */
body.theme-glass .custom-control-label::before { border-color: rgba(15, 23, 42, .2); background-color: rgba(255, 255, 255, .7); }
body.theme-glass .custom-checkbox .custom-control-label::before { border-radius: 6px; }
body.theme-glass .custom-switch .custom-control-label::before { border-radius: 999px; }
body.theme-glass .custom-control-input:checked ~ .custom-control-label::before {
    background-color: var(--primary);
    border-color: var(--primary);
    box-shadow: 0 2px 8px color-mix(in srgb, var(--primary) 35%, transparent);
}
body.theme-glass .custom-control-input:focus ~ .custom-control-label::before {
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--primary) 18%, transparent);
}

/* Toastr: solo forma e ombra (lo sfondo contiene anche l'icona: non va sovrascritto) */
body.theme-glass #toast-container > div {
    border-radius: var(--radius-md);
    box-shadow: 0 12px 30px rgba(15, 23, 42, .22), inset 0 1px 0 rgba(255, 255, 255, .25);
    opacity: .96;
}
body.theme-glass #toast-container > div:hover { box-shadow: 0 16px 36px rgba(15, 23, 42, .3); opacity: 1; }

/* Bootstrap datepicker */
body.theme-glass .datepicker-dropdown {
    background: var(--glass-bg-strong);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-md);
    box-shadow: var(--glass-shadow-hover);
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    padding: 6px;
}
body.theme-glass .datepicker table tr td,
body.theme-glass .datepicker table tr th { border-radius: var(--radius-sm); }
body.theme-glass .datepicker table tr td.active,
body.theme-glass .datepicker table tr td.active:hover,
body.theme-glass .datepicker table tr td.today { background-image: none; }
body.theme-glass .datepicker table tr td.active,
body.theme-glass .datepicker table tr td.active:hover { background-color: var(--primary) !important; color: #fff; }

/* jQuery UI (autocomplete, menu, tooltip globali) */
body.theme-glass .ui-autocomplete.ui-menu,
body.theme-glass .ui-tooltip:not(.ev-ui-tooltip) {
    background: var(--glass-bg-strong);
    border: 1px solid var(--glass-border) !important;
    border-radius: var(--radius-md);
    box-shadow: var(--glass-shadow-hover);
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
    color: var(--glass-text);
    padding: 4px;
}
body.theme-glass .ui-menu .ui-menu-item-wrapper { border-radius: var(--radius-sm); }
body.theme-glass .ui-menu .ui-state-active,
body.theme-glass .ui-menu .ui-menu-item-wrapper:hover {
    background: color-mix(in srgb, var(--primary) 14%, transparent);
    border-color: transparent;
    color: var(--glass-text);
}

/* Bootstrap tooltip / popover */
body.theme-glass .tooltip-inner { border-radius: var(--radius-sm); padding: .35rem .6rem; }
body.theme-glass .popover {
    border-radius: var(--radius-md);
    border: 1px solid var(--glass-border);
    background: var(--glass-bg-strong);
    box-shadow: var(--glass-shadow-hover);
    -webkit-backdrop-filter: var(--glass-blur);
    backdrop-filter: var(--glass-blur);
}

/* FullCalendar: popover "+N altri" e pulsanti della toolbar */
body.theme-glass .fc .fc-button-group > .btn:first-child { border-top-left-radius: var(--radius-md); border-bottom-left-radius: var(--radius-md); }
body.theme-glass .fc .fc-button-group > .btn:last-child { border-top-right-radius: var(--radius-md); border-bottom-right-radius: var(--radius-md); }
body.theme-glass .fc-unthemed td, body.theme-glass .fc td.table-bordered, body.theme-glass .fc th { border-color: var(--glass-line); }

/* ---------------------------------------------------------------------------
 *  LOGIN (sfondo = wallpaper aziendale impostato inline sul body)
 * ------------------------------------------------------------------------- */
/* Sul login il "mesh" diventa una velatura leggera sopra la foto, per staccare il vetro */
body.theme-glass.login-page::before {
    background:
        radial-gradient(ellipse at center, rgba(255, 255, 255, 0) 0%, rgba(10, 15, 30, .35) 100%),
        linear-gradient(180deg, rgba(10, 15, 30, .10), rgba(10, 15, 30, .30));
}
body.theme-glass.login-page .login-box { width: 380px; max-width: calc(100vw - 2rem); }
body.theme-glass.login-page .login-logo { color: #fff; text-shadow: 0 2px 12px rgba(0, 0, 0, .35); margin-bottom: 1.25rem; }
body.theme-glass.login-page .login-logo img { filter: drop-shadow(0 4px 12px rgba(0, 0, 0, .3)); }
body.theme-glass.login-page .login-app-name { color: #fff; font-size: 1.6rem; }
body.theme-glass.login-page .login-box .card {
    background: rgba(255, 255, 255, .22);
    border: 1px solid rgba(255, 255, 255, .45);
    border-radius: var(--radius-xl);
    box-shadow: 0 30px 70px rgba(0, 0, 0, .30), inset 0 1px 0 rgba(255, 255, 255, .6);
    -webkit-backdrop-filter: blur(28px) saturate(170%);
    backdrop-filter: blur(28px) saturate(170%);
    overflow: hidden;
}
body.theme-glass.login-page .login-card-body {
    background: transparent;
    padding: 1.75rem 1.75rem 1.5rem;
    border-radius: var(--radius-xl) !important;
    color: #fff;
}
body.theme-glass.login-page .login-box-msg {
    color: #fff; font-size: 1.15rem; font-weight: 600; letter-spacing: .5px;
    text-shadow: 0 1px 6px rgba(0, 0, 0, .25); padding-bottom: 1.25rem;
}
body.theme-glass.login-page .login-campo { position: relative; }
body.theme-glass.login-page .login-campo > .login-icona {
    /* 15px = padding della colonna; top = metà dell'altezza del campo (resta fermo se compare l'errore sotto) */
    position: absolute; left: 29px; top: 23px; transform: translateY(-50%);
    color: rgba(29, 36, 51, .55); pointer-events: none; z-index: 3;
}
body.theme-glass.login-page .login-campo .form-control {
    height: 46px;
    padding-left: 2.6rem;
    padding-right: 2.6rem;
    border-radius: var(--radius-md);
    background-color: rgba(255, 255, 255, .78);
    border: 1px solid rgba(255, 255, 255, .7);
    color: #1d2433;
    font-size: 1rem;
}
body.theme-glass.login-page .login-campo .form-control:focus { background-color: rgba(255, 255, 255, .95); }
body.theme-glass.login-page .login-campo .form-control.is-invalid { border-color: #ff6b7a; }
body.theme-glass.login-page .login-mostra-password {
    position: absolute; right: 21px; top: 23px; transform: translateY(-50%); z-index: 3;
    border: 0; background: transparent; color: rgba(29, 36, 51, .55);
    width: 36px; height: 36px; border-radius: 50%;
}
body.theme-glass.login-page .login-mostra-password:hover { background: rgba(29, 36, 51, .08); color: #1d2433; }
body.theme-glass.login-page .invalid-feedback {
    color: #fff; background: rgba(220, 53, 69, .75); border-radius: var(--radius-sm);
    padding: .25rem .6rem; margin-top: .4rem;
}
body.theme-glass.login-page .btn-accedi {
    width: 100%; height: 46px; border-radius: var(--radius-md);
    font-size: 1rem; font-weight: 600; letter-spacing: .5px;
}
body.theme-glass.login-page #login-footer {
    color: rgba(255, 255, 255, .9);
    text-shadow: 0 1px 6px rgba(0, 0, 0, .35);
    font-size: .8rem;
}

/* ---------------------------------------------------------------------------
 *  SCROLLBAR sottili
 * ------------------------------------------------------------------------- */
body.theme-glass ::-webkit-scrollbar { width: 10px; height: 10px; }
body.theme-glass ::-webkit-scrollbar-thumb {
    background: rgba(15, 23, 42, .18);
    border-radius: 999px;
    border: 2px solid transparent;
    background-clip: padding-box;
}
body.theme-glass ::-webkit-scrollbar-thumb:hover { background-color: rgba(15, 23, 42, .3); }
body.theme-glass ::-webkit-scrollbar-track { background: transparent; }

/* ===========================================================================
 *  TEMA SCURO
 * ========================================================================= */
body.theme-glass.dark-mode {
    --glass-bg:          rgba(30, 35, 46, .58);
    --glass-bg-strong:   rgba(34, 40, 52, .86);
    --glass-bg-soft:     rgba(255, 255, 255, .04);
    --glass-border:      rgba(255, 255, 255, .10);
    --glass-line:        rgba(255, 255, 255, .08);
    --glass-highlight:   inset 0 1px 0 rgba(255, 255, 255, .08);
    --glass-shadow:      0 10px 30px rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .25);
    --glass-shadow-hover:0 16px 40px rgba(0, 0, 0, .45), 0 2px 6px rgba(0, 0, 0, .3);
    --glass-text:        #e8ecf3;
    --glass-text-soft:   #a3adbd;
    --glass-thead:       rgba(36, 42, 55, .96);
    --superficie-solida: rgba(30, 35, 46, .96);
    --superficie-tenue:  rgba(255, 255, 255, .05);
}
body.theme-glass.dark-mode::before {
    background:
        radial-gradient(at 10% 15%, rgba(70, 100, 220, .35) 0, transparent 45%),
        radial-gradient(at 90% 10%, rgba(170, 70, 160, .28) 0, transparent 45%),
        radial-gradient(at 85% 85%, rgba(30, 150, 140, .26) 0, transparent 50%),
        radial-gradient(at 12% 92%, rgba(200, 120, 50, .20) 0, transparent 50%),
        linear-gradient(135deg, #0e1117 0%, #151925 100%);
}
body.theme-glass.dark-mode .card { background: var(--glass-bg) !important; color: var(--glass-text); }
body.theme-glass.dark-mode .main-header { background: var(--glass-bg-strong) !important; }
body.theme-glass.dark-mode .main-header .nav-link:hover,
body.theme-glass.dark-mode .btn-tool:hover,
body.theme-glass.dark-mode .dropdown-item:hover,
body.theme-glass.dark-mode .dropdown-item:focus { background: rgba(255, 255, 255, .08); }
body.theme-glass.dark-mode .main-sidebar { background: rgba(14, 17, 24, .78) !important; }
body.theme-glass.dark-mode .form-control,
body.theme-glass.dark-mode .custom-select,
body.theme-glass.dark-mode .select2-container--bootstrap4 .select2-selection,
body.theme-glass.dark-mode .dataTables_wrapper .dataTables_filter input,
body.theme-glass.dark-mode .dataTables_wrapper .dataTables_length select {
    background-color: rgba(255, 255, 255, .06);
    border-color: rgba(255, 255, 255, .12);
    color: var(--glass-text);
}
body.theme-glass.dark-mode .form-control:focus,
body.theme-glass.dark-mode .dataTables_wrapper .dataTables_filter input:focus { background-color: rgba(255, 255, 255, .10); }
body.theme-glass.dark-mode .input-group-text { border-color: rgba(255, 255, 255, .12); color: var(--glass-text-soft); }
body.theme-glass.dark-mode .select2-container--bootstrap4 .select2-selection--multiple .select2-selection__choice {
    background: color-mix(in srgb, var(--primary) 35%, #1e2330);
    color: #fff;
}
body.theme-glass.dark-mode .table td[style*="background-color"] { box-shadow: none; }
body.theme-glass.dark-mode .table-hover > tbody > tr:hover,
body.theme-glass.dark-mode table.table.dataTable > tbody > tr:hover { background-color: rgba(255, 255, 255, .06); }
body.theme-glass.dark-mode .table-striped > tbody > tr:nth-of-type(odd) { background-color: rgba(255, 255, 255, .025); }
body.theme-glass.dark-mode .btn-default,
body.theme-glass.dark-mode .btn-light,
body.theme-glass.dark-mode .btn-outline-secondary,
body.theme-glass.dark-mode .btn-outline-dark { color: var(--glass-text); }
body.theme-glass.dark-mode .list-group-item-action:hover { background: rgba(255, 255, 255, .06); }
body.theme-glass.dark-mode .modal-header .close { color: var(--glass-text); }
body.theme-glass.dark-mode .modal-header .close:hover,
body.theme-glass.dark-mode .nav-tabs .nav-link:hover { background: rgba(255, 255, 255, .08); }
body.theme-glass.dark-mode .custom-control-label::before { border-color: rgba(255, 255, 255, .25); background-color: rgba(255, 255, 255, .08); }
body.theme-glass.dark-mode .ui-menu .ui-state-active,
body.theme-glass.dark-mode .ui-menu .ui-menu-item-wrapper:hover { background: rgba(255, 255, 255, .1); }
body.theme-glass.dark-mode ::-webkit-scrollbar-thumb { background-color: rgba(255, 255, 255, .18); }

/* ===========================================================================
 *  ACCESSIBILITÀ E COMPATIBILITÀ
 * ========================================================================= */
/* Browser senza backdrop-filter: superfici più coprenti per mantenere la leggibilità */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
    body.theme-glass { --glass-bg: rgba(255, 255, 255, .9); --glass-bg-strong: rgba(255, 255, 255, .97); }
    body.theme-glass.dark-mode { --glass-bg: rgba(30, 35, 46, .95); --glass-bg-strong: rgba(34, 40, 52, .98); }
}
/* Utenti che hanno chiesto al sistema meno trasparenze / meno animazioni */
@media (prefers-reduced-transparency: reduce) {
    body.theme-glass { --glass-bg: rgba(255, 255, 255, .95); --glass-bg-strong: #fff; }
    body.theme-glass.dark-mode { --glass-bg: #1e232e; --glass-bg-strong: #222834; }
}
@media (prefers-reduced-motion: reduce) {
    body.theme-glass .btn,
    body.theme-glass .card,
    body.theme-glass .page-link { transition: none !important; transform: none !important; }
}
