/* ====================================================================
 * HAMMER THEME v3 — DARK MODE
 * Brand: HAMMER — "Sic Parvis Magna"
 * Palette: Dark Navy + Blu Elettrico
 * ==================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap');

:root {
    --hm-accent:        #3b82f6;
    --hm-accent-hover:  #2563eb;
    --hm-accent-bg:     rgba(59,130,246,0.1);
    --hm-success:       #10b981;
    --hm-warning:       #f59e0b;
    --hm-danger:        #ef4444;
    --hm-info:          #06b6d4;

    /* Dark surfaces — schiariti per leggibilità su schermi scuri */
    --hm-bg-body:       #141e33;
    --hm-bg-card:       #1a2744;
    --hm-bg-card-hover: #213052;
    --hm-bg-elevated:   #233558;
    --hm-bg-sidebar:    #111c30;
    --hm-bg-input:      #1e2d4a;

    /* Semantic subtle backgrounds (usati inline nei PHP) */
    --hm-bg-weekend:        rgba(255,255,255,0.04);
    --hm-bg-weekend-sun:    rgba(239,68,68,0.08);
    --hm-bg-success-subtle: rgba(16,185,129,0.1);
    --hm-bg-warning-subtle: rgba(245,158,11,0.1);
    --hm-bg-danger-subtle:  rgba(239,68,68,0.08);
    --hm-bg-accent-subtle:  rgba(59,130,246,0.1);
    --hm-bg-purple-subtle:  rgba(139,92,246,0.1);

    /* Borders */
    --hm-border:        rgba(255,255,255,0.06);
    --hm-border-light:  rgba(255,255,255,0.04);
    --hm-border-accent: rgba(59,130,246,0.2);

    /* Text */
    --hm-text:          #e2e8f0;
    --hm-text-bright:   #f1f5f9;
    --hm-text-muted:    #64748b;
    --hm-text-dim:      #475569;

    /* Shadows */
    --hm-shadow:        0 1px 3px rgba(0,0,0,0.3), 0 1px 2px rgba(0,0,0,0.2);
    --hm-shadow-md:     0 4px 12px rgba(0,0,0,0.3);
    --hm-shadow-lg:     0 10px 25px rgba(0,0,0,0.35);

    --hm-radius-xs: 4px;
    --hm-radius-sm: 8px;
    --hm-radius:    12px;
    --hm-radius-lg: 16px;
    --hm-font:      'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --hm-transition: all 0.15s ease;
}

/* === FONDAMENTA === */
body {
    font-family: var(--hm-font) !important;
    background-color: var(--hm-bg-body) !important;
    color: var(--hm-text);
    font-size: 13.5px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

/* =====================================================================
 *  SIDEBAR
 * ===================================================================== */
.main-sidebar,
.main-sidebar[class*="sidebar-dark"],
.main-sidebar[class*="bg-"] {
    background: linear-gradient(180deg, #162848 0%, #111c30 100%) !important;
    border-right: 1px solid var(--hm-border) !important;
    box-shadow: none;
    width: 250px !important;
}
/* Brand */
.main-sidebar .brand-link {
    background: transparent !important;
    border-bottom: 1px solid var(--hm-border) !important;
    padding: 10px 14px !important;
    min-height: 50px;
    display: flex !important;
    align-items: center;
    justify-content: center;
}
.main-sidebar .brand-link:hover { background: rgba(255,255,255,0.02) !important; }
.main-sidebar .brand-image {
    max-height: 32px !important;
    max-width: 170px !important;
    width: auto !important;
    height: auto !important;
    margin: 0 auto !important;
    filter: brightness(0) invert(1);
    float: none !important;
}
.sidebar-collapse .main-sidebar .brand-image { max-height: 24px !important; max-width: 36px !important; }

/* Search */
.sidebar .form-control-sidebar {
    background: var(--hm-bg-input) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text) !important;
    border-radius: var(--hm-radius-sm) 0 0 var(--hm-radius-sm) !important;
    font-size: 12.5px !important;
    padding: 7px 12px !important;
    height: 34px;
}
.sidebar .form-control-sidebar::placeholder { color: var(--hm-text-dim) !important; }
.sidebar .form-control-sidebar:focus {
    background: var(--hm-bg-elevated) !important;
    border-color: var(--hm-accent) !important;
    box-shadow: 0 0 0 2px rgba(59,130,246,0.15) !important;
}
.sidebar .btn-sidebar {
    background: var(--hm-bg-input) !important;
    border: 1px solid var(--hm-border) !important;
    border-left: none !important;
    color: var(--hm-text-muted) !important;
    border-radius: 0 var(--hm-radius-sm) var(--hm-radius-sm) 0 !important;
    height: 34px;
    padding: 0 10px !important;
}
.sidebar .form-inline { padding: 8px 10px !important; }

/* User panel */
.sidebar .user-panel {
    border-bottom: 1px solid var(--hm-border) !important;
    padding: 10px 12px !important;
    margin: 0 0 8px !important;
}
.sidebar .user-panel .info a { color: var(--hm-text-bright) !important; font-weight: 600 !important; font-size: 13px !important; }

/* Menu */
.sidebar { padding: 4px 0 !important; }
.sidebar .nav-sidebar > .nav-item { margin: 1px 8px; }
.sidebar .nav-sidebar .nav-link {
    color: rgba(255,255,255,0.6) !important;
    border-radius: var(--hm-radius-sm) !important;
    padding: 8px 12px !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    transition: var(--hm-transition);
}
.sidebar .nav-sidebar .nav-link:hover {
    color: rgba(255,255,255,0.9) !important;
    background: rgba(255,255,255,0.06) !important;
}
.sidebar .nav-sidebar .nav-link.active,
.sidebar .nav-sidebar .nav-item.menu-open > .nav-link {
    color: #fff !important;
    background: var(--hm-accent) !important;
    box-shadow: 0 2px 8px rgba(59,130,246,0.25);
}
.sidebar .nav-sidebar .nav-link > i,
.sidebar .nav-sidebar .nav-link > .fa,
.sidebar .nav-sidebar .nav-link > .nav-icon {
    color: inherit !important; opacity: 0.55; width: 18px; text-align: center; margin-right: 10px; font-size: 14px;
}
.sidebar .nav-sidebar .nav-link.active > i { opacity: 1; }
/* Treeview */
.sidebar .nav-treeview { background: rgba(0,0,0,0.2) !important; border-radius: var(--hm-radius-sm) !important; margin: 2px 0 4px !important; padding: 4px 0 !important; }
.sidebar .nav-treeview .nav-link { font-size: 12.5px !important; padding: 6px 12px 6px 40px !important; margin: 0 !important; border-radius: 0 !important; color: rgba(255,255,255,0.5) !important; }
.sidebar .nav-treeview .nav-link:hover { color: rgba(255,255,255,0.85) !important; background: rgba(255,255,255,0.04) !important; }
.sidebar .nav-treeview .nav-link.active { background: rgba(59,130,246,0.15) !important; color: #60a5fa !important; box-shadow: none !important; }
/* Sidebar risultati ricerca */
.sidebar-search-results { background: var(--hm-bg-elevated) !important; border: 1px solid var(--hm-border) !important; }
.sidebar-search-results .list-group-item { background: transparent !important; border-color: var(--hm-border) !important; color: var(--hm-text) !important; }
.sidebar-search-results .search-title { color: var(--hm-accent) !important; }

/* =====================================================================
 *  NAVBAR (Top Header) — Dark
 * ===================================================================== */
.main-header.navbar,
.main-header.navbar.navbar-white,
.main-header.navbar.navbar-light {
    background: linear-gradient(90deg, #162848 0%, #1a2744 100%) !important;
    border-bottom: 1px solid var(--hm-border) !important;
    box-shadow: none !important;
    min-height: 50px;
    padding: 0 16px;
}
.main-header .nav-link { color: rgba(255,255,255,0.6) !important; padding: 8px 10px !important; border-radius: var(--hm-radius-xs); transition: var(--hm-transition); }
.main-header .nav-link:hover { color: #fff !important; background: rgba(255,255,255,0.06) !important; }
.main-header .text-secondary, .main-header .text-danger, .main-header a.nav-link[class*="text-"] { color: rgba(255,255,255,0.75) !important; }
.main-header [data-widget="pushmenu"] { color: rgba(255,255,255,0.7) !important; }
.main-header [data-widget="pushmenu"]:hover { color: #fff !important; }
.main-header .bg-danger { background: rgba(239,68,68,0.7) !important; border: none !important; border-radius: var(--hm-radius-sm) !important; margin: 6px 4px !important; padding: 6px 10px !important; color: #fff !important; }
.main-header .bg-danger:hover { background: var(--hm-danger) !important; }
.main-header .badge-warning { background: var(--hm-warning) !important; padding: 3px 6px !important; }
#hooks-badge { min-width: 22px; text-align: center; }
.main-header .dropdown-menu { background: var(--hm-bg-card) !important; border: 1px solid var(--hm-border) !important; }
.main-header .dropdown-item { color: var(--hm-text) !important; }
.main-header .dropdown-item:hover { background: var(--hm-accent-bg) !important; }

/* =====================================================================
 *  CONTENT AREA — Dark
 * ===================================================================== */
.content-wrapper { background: var(--hm-bg-body) !important; }
.content-header { padding: 16px 24px 8px !important; }
.content-header h1 { font-weight: 800 !important; color: var(--hm-text-bright) !important; font-size: 1.4rem; letter-spacing: -0.5px; }
.breadcrumb { background: transparent !important; padding: 0 !important; }
.breadcrumb-item a { color: var(--hm-accent) !important; }
.breadcrumb-item.active { color: var(--hm-text-muted) !important; }

/* =====================================================================
 *  CARDS — Dark
 * ===================================================================== */
.card {
    border: 1px solid var(--hm-border) !important;
    border-radius: var(--hm-radius) !important;
    box-shadow: var(--hm-shadow) !important;
    background: var(--hm-bg-card) !important;
    color: var(--hm-text) !important;
    overflow: visible !important;
    margin-bottom: 16px;
}
.card-header {
    background: var(--hm-bg-elevated) !important;
    border-bottom: 1px solid var(--hm-border) !important;
    color: var(--hm-text-bright) !important;
    font-weight: 700 !important;
    padding: 12px 16px !important;
    border-radius: var(--hm-radius) var(--hm-radius) 0 0 !important;
}
.card-body { padding: 16px !important; color: var(--hm-text); }
.card-footer { background: var(--hm-bg-elevated) !important; border-top: 1px solid var(--hm-border) !important; padding: 12px 16px !important; }
.card-header.bg-primary { background: var(--hm-accent) !important; }

/* =====================================================================
 *  TABELLE — Dark
 * ===================================================================== */
.table { color: var(--hm-text) !important; font-size: 13px; }
.table thead th {
    background: var(--hm-bg-elevated) !important;
    border-bottom: 1px solid var(--hm-border) !important;
    color: var(--hm-text-muted) !important;
    font-size: 11px !important; font-weight: 700 !important;
    text-transform: uppercase; letter-spacing: 0.3px;
    padding: 10px 12px !important;
}
.table td { border-color: var(--hm-border-light) !important; padding: 8px 12px !important; vertical-align: middle !important; }
.table-striped tbody tr:nth-of-type(odd) { background: rgba(255,255,255,0.015) !important; }
.table-hover tbody tr:hover { background: var(--hm-accent-bg) !important; }
.table-responsive { overflow-x: auto; }

/* =====================================================================
 *  DATATABLES (liste OSM: Cantieri, Anagrafiche, ecc.) — Dark
 * ===================================================================== */
.dataTable { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; }
.dataTable thead th { background: var(--hm-bg-elevated) !important; color: var(--hm-text-muted) !important; border-color: var(--hm-border) !important; }
.dataTable tbody td { color: var(--hm-text) !important; border-color: var(--hm-border-light) !important; }
.dataTable tbody tr:hover td { background: var(--hm-accent-bg) !important; }
.dataTable tbody tr.odd { background: rgba(255,255,255,0.015) !important; }
.dataTable tbody tr.even { background: var(--hm-bg-card) !important; }
/* DataTables filter/search inputs */
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select { background: var(--hm-bg-input) !important; color: var(--hm-text) !important; border: 1px solid var(--hm-border) !important; border-radius: var(--hm-radius-sm) !important; }
.dataTables_wrapper .dataTables_filter label,
.dataTables_wrapper .dataTables_length label,
.dataTables_wrapper .dataTables_info { color: var(--hm-text-muted) !important; }
/* Sorting icons */
.dataTable thead .sorting:after, .dataTable thead .sorting_asc:after, .dataTable thead .sorting_desc:after { color: var(--hm-text-muted) !important; opacity: 0.5; }
/* Pagination */
.dataTables_wrapper .dataTables_paginate .paginate_button { color: var(--hm-text-muted) !important; background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; }
.dataTables_wrapper .dataTables_paginate .paginate_button.current { background: var(--hm-accent) !important; color: #fff !important; border-color: var(--hm-accent) !important; }
.dataTables_wrapper .dataTables_paginate .paginate_button:hover { background: var(--hm-bg-elevated) !important; color: var(--hm-text-bright) !important; }
/* Column header filter inputs (nella riga filtri sotto gli header) */
.dataTable thead input[type="search"],
.dataTable thead input[type="text"],
thead input.form-control { background: var(--hm-bg-input) !important; color: var(--hm-text) !important; border: 1px solid var(--hm-border) !important; }
/* Box wrapper */
.box { background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; color: var(--hm-text) !important; }
.box-header { background: var(--hm-bg-elevated) !important; border-bottom-color: var(--hm-border) !important; color: var(--hm-text-bright) !important; }
.box-title { color: var(--hm-text-bright) !important; }
.box-body { background: var(--hm-bg-card) !important; }
/* OSM module header (.content-header h1 con breadcrumb) */
.breadcrumb { background: transparent !important; }
.breadcrumb a, .breadcrumb-item a { color: var(--hm-accent) !important; }
.breadcrumb-item.active, .breadcrumb > .active { color: var(--hm-text-muted) !important; }
/* btn-white / btn-light / btn-default dark mode */
.btn-white, .btn-light, .btn-default { background: var(--hm-bg-elevated) !important; color: var(--hm-text) !important; border-color: var(--hm-border) !important; }
.btn-white:hover, .btn-light:hover, .btn-default:hover { background: var(--hm-bg-card-hover) !important; color: var(--hm-text-bright) !important; }

/* =====================================================================
 *  FORM — Dark
 * ===================================================================== */
.form-control, .custom-select {
    background-color: var(--hm-bg-input) !important;
    border: 1px solid var(--hm-border) !important;
    border-radius: var(--hm-radius-sm) !important;
    color: var(--hm-text) !important;
    font-size: 13.5px !important;
    padding: 7px 12px !important;
    min-height: 36px;
}
.form-control:focus, .custom-select:focus {
    border-color: var(--hm-accent) !important;
    box-shadow: 0 0 0 2px rgba(59,130,246,0.15) !important;
    background-color: var(--hm-bg-elevated) !important;
}
.form-control::placeholder { color: var(--hm-text-dim) !important; }
.input-group-text {
    background: var(--hm-bg-elevated) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text-muted) !important;
    border-radius: var(--hm-radius-sm) !important;
}
label { font-weight: 600; color: var(--hm-text); font-size: 12.5px; }

/* =====================================================================
 *  BOTTONI — Dark
 * ===================================================================== */
.btn { border-radius: var(--hm-radius-sm) !important; font-weight: 600 !important; font-size: 13px !important; padding: 7px 14px !important; transition: var(--hm-transition); display: inline-flex; align-items: center; gap: 6px; }
.btn-sm { font-size: 12px !important; padding: 5px 10px !important; }
.btn-primary { background: var(--hm-accent) !important; border-color: var(--hm-accent) !important; color: #fff !important; }
.btn-primary:hover { background: var(--hm-accent-hover) !important; box-shadow: 0 2px 8px rgba(59,130,246,0.3); }
.btn-success { background: var(--hm-success) !important; border-color: var(--hm-success) !important; color: #fff !important; }
.btn-danger { background: var(--hm-danger) !important; border-color: var(--hm-danger) !important; color: #fff !important; }
.btn-warning { background: var(--hm-warning) !important; border-color: var(--hm-warning) !important; color: #fff !important; }
.btn-default, .btn-light, .btn-white {
    background: var(--hm-bg-elevated) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text) !important;
}
.btn-default:hover, .btn-light:hover, .btn-white:hover {
    background: var(--hm-bg-card-hover) !important;
    border-color: rgba(255,255,255,0.1) !important;
}
/* Btn-group: gap tra i bottoni */
.btn-group .btn { margin-left: 4px !important; }
.btn-group .btn:first-child { margin-left: 0 !important; }

/* =====================================================================
 *  BADGE
 * ===================================================================== */
.badge { border-radius: 6px !important; font-weight: 600 !important; padding: 3px 8px !important; font-size: 11px !important; }
.badge-primary { background: var(--hm-accent) !important; }
.badge-success { background: var(--hm-success) !important; }
.badge-warning { background: var(--hm-warning) !important; color: #fff !important; }
.badge-danger { background: var(--hm-danger) !important; }
.badge-secondary { background: #475569 !important; }
.badge-light { background: var(--hm-bg-elevated) !important; color: var(--hm-text) !important; border: 1px solid var(--hm-border) !important; }

/* =====================================================================
 *  DROPDOWN — Dark
 * ===================================================================== */
.dropdown-menu {
    background: var(--hm-bg-card) !important;
    border: 1px solid var(--hm-border) !important;
    border-radius: var(--hm-radius) !important;
    box-shadow: var(--hm-shadow-lg) !important;
    padding: 4px !important;
}
.dropdown-item { border-radius: 6px !important; color: var(--hm-text) !important; font-size: 13px !important; padding: 7px 12px !important; }
.dropdown-item:hover { background: var(--hm-accent-bg) !important; color: var(--hm-text-bright) !important; }
.dropdown-divider { border-color: var(--hm-border) !important; }

/* =====================================================================
 *  MODAL — Dark
 * ===================================================================== */
.modal-content { background: var(--hm-bg-card) !important; border: 1px solid var(--hm-border) !important; border-radius: var(--hm-radius-lg) !important; box-shadow: var(--hm-shadow-lg) !important; color: var(--hm-text); }
.modal-header { border-bottom: 1px solid var(--hm-border) !important; padding: 16px 20px !important; }
.modal-header .modal-title { color: var(--hm-text-bright) !important; font-weight: 700 !important; }
.modal-header .close { color: var(--hm-text-muted) !important; text-shadow: none !important; }
.modal-body { padding: 20px !important; }
.modal-footer { border-top: 1px solid var(--hm-border) !important; padding: 12px 20px !important; background: var(--hm-bg-elevated) !important; }
.modal-backdrop { background-color: rgba(0,0,0,0.6) !important; }

/* =====================================================================
 *  PRELOADER
 * ===================================================================== */
#main_loading { background: var(--hm-bg-body) !important; }
#main_loading img { filter: brightness(0) invert(1) !important; height: 120px !important; width: auto !important; animation: hammerPulse 1.8s ease-in-out infinite !important; }
@keyframes hammerPulse { 0%, 100% { opacity: 0.5; transform: scale(1); } 50% { opacity: 1; transform: scale(1.03); } }
#main_loading::after { content: ''; display: block; width: 100px; height: 2px; background: linear-gradient(90deg, transparent, var(--hm-accent), transparent); border-radius: 2px; margin-top: 20px; animation: hammerLoadBar 1.4s ease-in-out infinite; }
@keyframes hammerLoadBar { 0% { opacity: 0.2; transform: scaleX(0.3); } 50% { opacity: 1; transform: scaleX(1); } 100% { opacity: 0.2; transform: scaleX(0.3); } }

/* =====================================================================
 *  LOGIN — Dark
 * ===================================================================== */
.login-page { background: var(--hm-bg-body) !important; }
.login-box { width: 380px !important; }
.login-logo a { color: var(--hm-text-bright) !important; font-weight: 800 !important; letter-spacing: 3px; }
.login-card-body { background: var(--hm-bg-card) !important; border-radius: var(--hm-radius-lg) !important; box-shadow: var(--hm-shadow-lg) !important; padding: 28px 24px !important; border: 1px solid var(--hm-border); color: var(--hm-text); }

/* =====================================================================
 *  SELECT2 — Dark
 * ===================================================================== */
.select2-container--default .select2-selection--single {
    background: var(--hm-bg-input) !important; border: 1px solid var(--hm-border) !important; border-radius: var(--hm-radius-sm) !important; height: 36px !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered { color: var(--hm-text) !important; line-height: 26px !important; font-size: 13px !important; }
.select2-container--default .select2-selection--single .select2-selection__arrow { height: 34px !important; }
.select2-dropdown { background: var(--hm-bg-card) !important; border: 1px solid var(--hm-border) !important; border-radius: var(--hm-radius-sm) !important; box-shadow: var(--hm-shadow-md) !important; color: var(--hm-text); }
.select2-results__option { color: var(--hm-text) !important; }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background: var(--hm-accent) !important; }
.select2-search__field { background: var(--hm-bg-input) !important; color: var(--hm-text) !important; border: 1px solid var(--hm-border) !important; }

/* =====================================================================
 *  SCROLLBAR
 * ===================================================================== */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.2); }

/* =====================================================================
 *  PAGINATION
 * ===================================================================== */
.page-link { background: var(--hm-bg-card) !important; border: 1px solid var(--hm-border) !important; color: var(--hm-text) !important; border-radius: 6px !important; margin: 0 2px; }
.page-item.active .page-link { background: var(--hm-accent) !important; border-color: var(--hm-accent) !important; color: #fff !important; }

/* =====================================================================
 *  TABS
 * ===================================================================== */
.nav-tabs { border-bottom: 1px solid var(--hm-border) !important; }
.nav-tabs .nav-link { color: var(--hm-text-muted) !important; border: 1px solid transparent !important; border-radius: var(--hm-radius-sm) var(--hm-radius-sm) 0 0 !important; }
.nav-tabs .nav-link.active { color: var(--hm-accent) !important; background: var(--hm-bg-card) !important; border-color: var(--hm-border) var(--hm-border) var(--hm-bg-card) !important; }

/* =====================================================================
 *  ALERTS & CALLOUTS — Dark
 * ===================================================================== */
.alert { border-radius: var(--hm-radius-sm) !important; border: none !important; }
.callout { border-radius: var(--hm-radius-sm) !important; background: var(--hm-bg-elevated) !important; color: var(--hm-text); }

/* =====================================================================
 *  TOOLTIP
 * ===================================================================== */
.tooltip-inner { background: var(--hm-bg-elevated) !important; border: 1px solid var(--hm-border); border-radius: var(--hm-radius-sm) !important; font-size: 12px !important; padding: 6px 10px !important; color: var(--hm-text-bright); }

/* =====================================================================
 *  DASHBOARD CONTROL ROOM — Dark Premium
 * ===================================================================== */
#dashboard-modern { background: var(--hm-bg-body) !important; color: var(--hm-text); }
#dashboard-modern .glass-card {
    background: var(--hm-bg-card) !important;
    border: 1px solid var(--hm-border) !important;
    border-radius: 14px !important;
    box-shadow: var(--hm-shadow) !important;
    padding: 20px !important;
    transition: all 0.2s ease;
}
#dashboard-modern .glass-card:hover { transform: translateY(-2px); box-shadow: var(--hm-shadow-md) !important; }
#dashboard-modern .lbl-header { font-size: 10px !important; font-weight: 700 !important; letter-spacing: 0.6px; text-transform: uppercase; color: var(--hm-text-muted); }
#dashboard-modern .kpi-val { font-size: 1.5rem !important; font-weight: 800; color: var(--hm-text-bright); letter-spacing: -0.5px; }
#dashboard-modern .kpi-icon { width: 44px !important; height: 44px !important; border-radius: 12px !important; font-size: 18px !important; }
#dashboard-modern h2, #dashboard-modern h4 { color: var(--hm-text-bright) !important; }
/* Badge macro spese */
#dashboard-modern [class*="mc-bg-"] {
    background: var(--hm-bg-card) !important;
    border: 1px solid var(--hm-border) !important;
    border-radius: 12px !important;
    box-shadow: var(--hm-shadow) !important;
}
/* Spese summary */
#spese-summary-badge { background: var(--hm-bg-card) !important; border: 1px solid var(--hm-border) !important; border-radius: 14px !important; color: var(--hm-text); }
#spese-summary-badge .ssb-label { color: var(--hm-text-muted); }
#spese-summary-badge .ssb-value { color: var(--hm-danger); }
#spese-summary-badge .ssb-meta { color: var(--hm-text-dim); }
/* Margine gauge */
#dashboard-modern #gaugeText { color: var(--hm-text-bright) !important; }
#dashboard-modern #max-budget { color: var(--hm-text-muted) !important; }
/* Filtri periodo pill */
#dashboard-modern .btn-period { border-radius: 20px !important; font-size: 12px !important; font-weight: 600 !important; padding: 6px 16px !important; background: var(--hm-bg-card); color: var(--hm-text-muted); border: 1px solid var(--hm-border); }
#dashboard-modern .btn-period.active { background: var(--hm-accent) !important; color: #fff !important; border-color: var(--hm-accent) !important; }
/* Toolbar */
.btn-kpi-toggle { background: var(--hm-bg-card) !important; border: 1px solid var(--hm-border) !important; color: var(--hm-text-muted) !important; }
.btn-kpi-toggle:hover { background: var(--hm-bg-elevated) !important; color: var(--hm-text) !important; }

/* =====================================================================
 *  CANTIERI / BUDGET — Dark overrides
 * ===================================================================== */
.cantieri-grid, #budget-pro-container { background: var(--hm-bg-body) !important; color: var(--hm-text); }
.budget-card, .modern-card { background: var(--hm-bg-card) !important; border: 1px solid var(--hm-border) !important; color: var(--hm-text); }
.budget-card-header { background: var(--hm-bg-elevated) !important; border-bottom: 1px solid var(--hm-border) !important; }
.kpi-card { background: var(--hm-bg-card) !important; border: 1px solid var(--hm-border) !important; color: var(--hm-text); }
.kpi-label { color: var(--hm-text-muted) !important; }
.kpi-value { color: var(--hm-text-bright) !important; }
/* Tabelle cantieri/budget */
.budget-table th { background: var(--hm-bg-elevated) !important; color: var(--hm-text-muted) !important; border-bottom-color: var(--hm-border) !important; }
.budget-table td { color: var(--hm-text) !important; }
.budget-table tbody tr:hover td { background: var(--hm-accent-bg) !important; }
.cell-input { color: var(--hm-text-bright) !important; background: transparent !important; }
.cell-input:focus { background: var(--hm-bg-input) !important; border-color: var(--hm-accent) !important; }
/* Cat headers */
tr.cat-header td { background: var(--hm-bg-elevated) !important; color: var(--hm-text-bright) !important; border-top-color: var(--hm-border) !important; border-bottom-color: var(--hm-border) !important; }
tr.cat-header td b { color: var(--hm-accent) !important; }
/* Rows */
.col-spese tbody tr:not(.cat-header) td { background: var(--hm-bg-card) !important; }
.table-excel { color: var(--hm-text) !important; }
.table-excel th { background: var(--hm-bg-elevated) !important; color: var(--hm-text-muted) !important; }
.table-excel td { color: var(--hm-text) !important; }
/* Totali righe */
.budget-tot-mese td { background: var(--hm-bg-elevated) !important; color: var(--hm-text-bright) !important; border-top-color: var(--hm-border) !important; }
.budget-tot-comp td { background: rgba(255,255,255,0.02) !important; }
/* Badge margins */
.badge-margine-mese, .badge-margine-totale { background: rgba(16,185,129,0.15) !important; color: var(--hm-success) !important; border: 1px solid rgba(16,185,129,0.3) !important; }
/* Tfoot budget */
.table-excel tfoot td { background: var(--hm-bg-elevated) !important; color: var(--hm-text) !important; }
/* Budget cards header colors */
.th-spese { background: var(--hm-bg-elevated) !important; color: var(--hm-accent) !important; border-bottom-color: var(--hm-accent) !important; }
.th-cashflow-out { background: var(--hm-bg-elevated) !important; color: var(--hm-warning) !important; }
.th-cashflow-in { background: var(--hm-bg-elevated) !important; color: var(--hm-success) !important; }
.th-cashflow-prog { background: var(--hm-bg-elevated) !important; color: #8b5cf6 !important; }
.th-incassi { background: var(--hm-bg-elevated) !important; color: var(--hm-success) !important; }
/* Remove forced white backgrounds from cantieri.css */
.col-spese tbody tr:not(.cat-header) td,
.table-excel tbody tr[style*="background"],
.table-excel tbody tr td[style*="background"],
tr:not(.cat-header) > td.bg-yellow,
tr:not(.cat-header) > td.bg-light-green,
tr:not(.cat-header) > td.bg-light-blue {
    background: var(--hm-bg-card) !important;
}
/* Money text more visible in dark */
.money.text-muted { color: var(--hm-text) !important; }

/* =====================================================================
 *  GESTIONE STIPENDI — Dark
 * ===================================================================== */
.stip-kpi { background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; }
.stip-kpi-label { color: var(--hm-text-muted) !important; }
.stip-kpi-value { color: var(--hm-text-bright) !important; }
#stip-tooltip { background: var(--hm-bg-elevated) !important; border-color: var(--hm-border) !important; color: var(--hm-text); }

/* =====================================================================
 *  MISC — Dark helpers
 * ===================================================================== */
.text-dark { color: var(--hm-text-bright) !important; }
.text-muted { color: var(--hm-text-muted) !important; }
.bg-light { background: var(--hm-bg-elevated) !important; color: var(--hm-text) !important; }
.bg-white { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; }
.bg-light-blue { background: var(--hm-bg-card) !important; }
.bg-yellow { background: var(--hm-bg-card) !important; }
.thead-light th { background: var(--hm-bg-elevated) !important; color: var(--hm-text-muted) !important; border-color: var(--hm-border) !important; }
.border { border-color: var(--hm-border) !important; }
.shadow-sm { box-shadow: var(--hm-shadow) !important; }
.shadow { box-shadow: var(--hm-shadow) !important; }
hr { border-color: var(--hm-border); }
a { color: var(--hm-accent); }
a:hover { color: #60a5fa; }
.main-footer { display: none !important; }

/* Input date/time: icona calendario chiara su dark (tutto il gestionale) */
input[type="date"],
input[type="datetime-local"],
input[type="time"],
input[type="month"],
input[type="week"] {
    color-scheme: dark !important;
    color: var(--hm-text-bright) !important;
}
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="datetime-local"]::-webkit-calendar-picker-indicator,
input[type="time"]::-webkit-calendar-picker-indicator {
    filter: invert(0.7) !important;
    cursor: pointer;
}

/* =====================================================================
 *  MODALI CUSTOM (badge, RIBA, dettaglio, tariffe) — Dark
 * ===================================================================== */
body #modalBadgeCustom > div > div,
body #modalRiba > div,
body #modalAddVoce > div > div,
body #modalCharts > div,
body .custom-modal-overlay > div,
body #customModalTariffa > div {
    background: var(--hm-bg-card) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text) !important;
}
/* Header/footer modali custom */
body #modalBadgeCustom [style*="border-bottom"],
body #modalRiba [style*="border-bottom"],
body #modalAddVoce [style*="border-bottom"] {
    border-bottom-color: var(--hm-border) !important;
}
body #modalBadgeCustom [style*="border-top"],
body #modalRiba [style*="border-top"],
body #modalAddVoce [style*="border-top"] {
    border-top-color: var(--hm-border) !important;
}
/* Chart.js: forza sfondo trasparente su canvas containers */
body .glass-card canvas {
    background: transparent !important;
}
/* Tabelle dentro modali */
body .modal-table td,
body .custom-modal-body td { color: var(--hm-text) !important; }
body .modal-table th { color: var(--hm-text-muted) !important; background: var(--hm-bg-elevated) !important; }
.sidebar-collapse .content-wrapper { margin-left: 4.6rem !important; }

/* =====================================================================
 *  FIX DI FINO — Cantieri Pro
 * ===================================================================== */

/* 1. Barra ricerca sidebar */
.sidebar .form-inline { padding: 8px 10px !important; margin: 4px 6px 6px 6px !important; }
.sidebar .form-inline .input-group {
    width: 100%;
    display: flex;
    align-items: stretch;
    background: var(--hm-bg-input);
    border: 1px solid var(--hm-border);
    border-radius: var(--hm-radius-sm);
    overflow: hidden;
}
.sidebar .form-control-sidebar {
    height: 34px !important;
    background: transparent !important;
    border: none !important;
    color: var(--hm-text) !important;
    font-size: 12.5px !important;
    padding: 6px 10px !important;
    box-shadow: none !important;
    outline: none !important;
}
.sidebar .form-control-sidebar::placeholder { color: var(--hm-text-dim) !important; }
.sidebar .form-control-sidebar:focus { box-shadow: none !important; }
.sidebar .btn-sidebar {
    height: 34px !important;
    background: transparent !important;
    border: none !important;
    color: var(--hm-text-muted) !important;
    padding: 0 10px !important;
    line-height: 34px !important;
}
.sidebar .btn-sidebar:hover { color: var(--hm-text-bright) !important; }
/* Focus: glow sul container, non sull'input */
.sidebar .form-inline .input-group:focus-within {
    border-color: var(--hm-accent);
    box-shadow: 0 0 0 2px rgba(59,130,246,0.15);
}

/* 2. Hover righe budget-table: altezza piena, no bordi, colore uniforme */
body .budget-table tbody tr:hover td,
body .budget-table tbody tr:hover .tec-name {
    background-color: var(--hm-accent-bg) !important;
    transition: background-color 0.1s;
}
/* Forza altezza uniforme su tutte le td della riga */
body .budget-table td {
    padding: 4px 6px !important;
    vertical-align: middle !important;
    line-height: 1.4;
    white-space: nowrap !important;
}
body .budget-table .tec-name { white-space: nowrap !important; overflow: hidden; text-overflow: ellipsis; }
body .table-excel td { white-space: nowrap !important; }
body .table td.money, body .table-excel td.money, body .budget-table td.money { white-space: nowrap !important; }
body .kpi-val, body .kpi-value { white-space: nowrap !important; }
body .budget-table .tec-name {
    transition: background-color 0.1s;
    border-right: none !important;
}

/* 3. Testi grigio scuro su fondo blu → più chiari */
body .budget-card-header * { color: var(--hm-text-bright) !important; }
body .budget-card-header .badge { color: #fff !important; }
body .budget-card-header .text-muted { color: var(--hm-text-muted) !important; }
body .budget-card-header .small { color: var(--hm-text-muted) !important; }
/* Badge cantiere: tipo gestione, date */
body .cantiere-dates { color: var(--hm-text) !important; border-color: var(--hm-border) !important; background: var(--hm-bg-input) !important; }
body .cantiere-dates input, body .cantiere-dates .date-input-sleek { color: var(--hm-text) !important; background: transparent !important; }
/* Titoli cantiere */
body .budget-card-header h5 { color: var(--hm-accent) !important; }
body .budget-card-header .badge-light { background: var(--hm-bg-elevated) !important; color: var(--hm-text-muted) !important; border-color: var(--hm-border) !important; }

/* 4. Bianco troppo acceso → attenuato. Uso var(--hm-text) per adattarsi al tema
 *    light (il valore hardcoded rgba(241,245,249,.8) rendeva questi testi invisibili su sfondo bianco). */
body .budget-table .cell-input { color: var(--hm-text) !important; }
body .budget-table .fatt-col, body .budget-table .stip-col,
body .budget-table .contr-col, body .budget-table .val-col,
body .budget-table .money { color: var(--hm-text) !important; }
body .budget-table .tot-col { color: var(--hm-accent) !important; }
/* (bordi gestiti nella regola unica sopra) */
/* Bordi colonna totali: attenuati */
body .budget-table th.tot-header { border-left: 1px solid rgba(255,255,255,0.06) !important; border-right: 1px solid rgba(255,255,255,0.06) !important; }
body .budget-table td.tot-col { border-left: 1px solid rgba(255,255,255,0.04) !important; border-right: 1px solid rgba(255,255,255,0.04) !important; }
/* Header cantiere: linea sotto meno visibile */
body .budget-card-header { border-bottom: 1px solid rgba(255,255,255,0.04) !important; }
/* Riga separatore tra cantiere e cantiere */
body .budget-card { border: 1px solid rgba(255,255,255,0.04) !important; }

/* 5. Assegnazione giorni automatica: testo non tagliato */
body .mass-assign-group { height: auto !important; min-height: 36px; flex-wrap: nowrap; align-items: center; }
body .input-massivo { width: 42px !important; height: 28px !important; font-size: 11px !important; padding: 2px 4px !important; color: var(--hm-text-bright) !important; background: var(--hm-bg-input) !important; border-color: var(--hm-border) !important; }
body .btn-massivo { height: 28px !important; font-size: 10px !important; padding: 0 8px !important; white-space: nowrap; }
/* I pulsanti Fer/Sab/Dom: testo visibile */
body .header-actions .btn-sm { font-size: 11px !important; padding: 4px 8px !important; white-space: nowrap; overflow: visible !important; }

/* Assegnazione rapida: label + dropdown + pulsanti in linea */
body .budget-card-header .d-flex { flex-wrap: wrap; gap: 4px; }
body .budget-card-header select,
body .budget-card-header .form-control-sm {
    color: var(--hm-text) !important;
    background: var(--hm-bg-input) !important;
    border-color: var(--hm-border) !important;
    font-size: 11px !important;
    min-height: 28px;
}

/* =====================================================================
 *  CANTIERI PRO — Force fit, no horizontal scroll
 * ===================================================================== */
/* 1. Tabella occupa TUTTA la larghezza (no spazio bianco a destra) */
#actual-module .budget-card { max-width: 100%; overflow: hidden; }
#actual-module .budget-table-wrapper { overflow-x: auto; overflow-y: hidden; max-width: 100%; }
#actual-module .budget-table { table-layout: auto; font-size: 12px; width: 100% !important; min-width: 100%; }
#actual-module .budget-table td { padding: 3px 4px !important; }
#actual-module .budget-table .cell-input { width: 34px !important; min-width: 34px; font-size: 12px !important; padding: 2px !important; }
#actual-module .tec-name { min-width: 120px !important; max-width: 160px !important; font-size: 11.5px !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 2. Bordi tabella meno invadenti (era troppo bianco/chiaro) */
body .budget-table,
body .budget-table-wrapper,
body .budget-card { border-color: var(--hm-border) !important; }
body .budget-card { border: 1px solid var(--hm-border) !important; border-radius: var(--hm-radius) !important; }

/* 3. Forza lavoro: rimuove tratteggiata sotto il testo */
body #kpi-forza-lavoro { text-decoration: none !important; border-bottom: none !important; }
body #kpi-dipendenti { text-decoration: none !important; border-bottom: none !important; }

/* =====================================================================
 *  OVERRIDE CANTIERI.CSS — DARK MODE
 *  Tutte le regole che sovrascrivono i colori light di cantieri.css
 *  centralizzate qui. Specificità con `body` per vincere.
 * ===================================================================== */

/* --- Tabella/wrapper base → dark --- */
body .budget-table { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; border-collapse: collapse !important; }
body .budget-table-wrapper { background: var(--hm-bg-card) !important; }
body .budget-card .collapse { background: var(--hm-bg-card) !important; }
body .table-scroll-wrapper { background: var(--hm-bg-card) !important; }
body .table-excel { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; border-collapse: collapse !important; }
body .table { background: var(--hm-bg-card) !important; border-collapse: collapse !important; }

/* --- REGOLA UNICA BORDI: tutte le linee uguali (5%), TH più visibili (10%) --- */
body .budget-table td,
body .budget-table th,
body .table-excel td,
body .table-excel th,
body .table td,
body .table th { border: none !important; }
/* Righe: linea orizzontale uniforme */
body .budget-table tbody tr,
body .table-excel tbody tr,
body .table tbody tr { border-bottom: 1px solid rgba(255,255,255,0.05) !important; }
/* Header TH: linea più marcata per staccare */
body .budget-table thead tr,
body .table-excel thead tr,
body .table thead tr { border-bottom: 2px solid rgba(255,255,255,0.12) !important; }
/* Nessun bordo verticale, laterale, o top */
body .budget-table tbody tr,
body .table-excel tbody tr,
body .table tbody tr { border-top: none !important; border-left: none !important; border-right: none !important; }

/* --- Backgrounds bianchi → dark --- */
body .kpi-card { background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; }
body .budget-card { background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; }
body .budget-card-header { background: var(--hm-bg-elevated) !important; border-bottom-color: var(--hm-border) !important; }
body .log-bg-auto { background: var(--hm-bg-card) !important; }
body .log-bg { background: var(--hm-bg-card) !important; color: var(--hm-text-muted) !important; }
body .glass-modal-content { background: var(--hm-bg-card) !important; border: 1px solid var(--hm-border) !important; }
body .modern-toolbar { background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; box-shadow: var(--hm-shadow) !important; }
body .modern-card { background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; }
body .custom-modal-header { background: var(--hm-bg-card) !important; border-bottom-color: var(--hm-border) !important; }
body .modal-table { background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; }
body .custom-modal-body .table-excel { background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; }
body .custom-modal-body .table-excel tfoot td { background: var(--hm-bg-elevated) !important; border-top-color: var(--hm-border) !important; }
body .btn-white { background-color: var(--hm-bg-elevated) !important; border-color: var(--hm-border) !important; color: var(--hm-text) !important; }

/* --- Celle tabella cantieri/budget → dark (sfondo su TR, non TD — per permettere i colori weekend inline sulle celle) --- */
body .budget-table td { color: var(--hm-text) !important; }
body .budget-table tbody tr { background: var(--hm-bg-card) !important; }
body .budget-table th.sticky-col-left { background: var(--hm-bg-elevated) !important; border-right: none !important; }
body .budget-table td.sticky-col-left,
body .budget-table th.sticky-col-left,
body .budget-table .tec-name { border-right: none !important; }
body .col-spese tbody tr:not(.cat-header) { background: var(--hm-bg-card) !important; }
body .col-spese tbody tr:not(.cat-header) td:nth-child(8),
body .col-spese tbody tr:not(.cat-header) td:nth-child(9),
body .col-spese tfoot td:nth-child(8),
body .col-spese tfoot td:nth-child(9),
body .col-spese th:nth-child(8),
body .col-spese th:nth-child(9) { background-color: var(--hm-bg-card) !important; border-left-color: var(--hm-border) !important; }
body .bg-light-green, body .bg-light-blue, body td.bg-yellow { background: var(--hm-bg-card) !important; background-color: var(--hm-bg-card) !important; }
/* Nota: NON sovrascrivere td[style*="background"] — cancellerebbe i colori weekend (sabato/domenica) */

/* --- Tabelle header → dark --- */
body .budget-table th { background: var(--hm-bg-elevated) !important; color: var(--hm-text-muted) !important; border-bottom-color: var(--hm-border) !important; }
body .budget-table th.sticky-col-left { background: var(--hm-bg-elevated) !important; color: var(--hm-text) !important; border-right-color: var(--hm-border) !important; }
body .budget-table th.tot-header { background: var(--hm-bg-elevated) !important; color: var(--hm-accent) !important; border-color: var(--hm-border) !important; }
body .budget-table td.tot-col { background: var(--hm-bg-elevated) !important; color: var(--hm-accent) !important; border-color: var(--hm-border) !important; }
body .budget-table td { color: var(--hm-text) !important; }
body .table-excel th { background: var(--hm-bg-elevated) !important; color: var(--hm-text-muted) !important; border-bottom-color: var(--hm-border) !important; }
body .table-excel td { color: var(--hm-text) !important; }

/* --- Table header tematici → dark con colori accento --- */
body .th-spese { background: var(--hm-bg-elevated) !important; color: var(--hm-accent) !important; border-bottom: 2px solid var(--hm-accent) !important; }
body .th-cashflow-out { background: var(--hm-bg-elevated) !important; color: var(--hm-warning) !important; border-bottom: 2px solid var(--hm-warning) !important; }
body .th-cashflow-in { background: var(--hm-bg-elevated) !important; color: var(--hm-success) !important; border-bottom: 2px solid var(--hm-success) !important; }
body .th-cashflow-prog { background: var(--hm-bg-elevated) !important; color: #8b5cf6 !important; border-bottom: 2px solid #8b5cf6 !important; }
body .th-incassi { background: var(--hm-bg-elevated) !important; color: var(--hm-success) !important; border-bottom: 2px solid var(--hm-success) !important; }

/* --- Righe totali → dark --- */
body .budget-tot-mese td { background: var(--hm-bg-elevated) !important; border-top-color: var(--hm-border) !important; color: var(--hm-text-bright) !important; }
body .budget-tot-comp td { background: rgba(255,255,255,0.02) !important; border-top-color: var(--hm-border) !important; }
body .badge-margine-mese { background: rgba(16,185,129,0.15) !important; color: var(--hm-success) !important; border-color: rgba(16,185,129,0.3) !important; }
body .badge-margine-totale { background: rgba(16,185,129,0.1) !important; color: var(--hm-success) !important; border-color: rgba(16,185,129,0.2) !important; }

/* --- Cat header accordion → dark --- */
body tr.cat-header td { background: var(--hm-bg-elevated) !important; border-top-color: var(--hm-border) !important; border-bottom-color: var(--hm-border) !important; color: var(--hm-text-bright) !important; }
body tr.cat-header td b { color: var(--hm-accent) !important; }
body tr.cat-header td:nth-child(2), body tr.cat-header td:nth-child(4) { color: var(--hm-text) !important; }

/* --- Input celle → dark --- */
body .cell-input { color: var(--hm-text-bright) !important; background: transparent !important; border-color: transparent !important; }
body .cell-input:focus { background: var(--hm-bg-input) !important; border-color: var(--hm-accent) !important; }
body .cell-input:hover:not(:focus) { border-color: var(--hm-border) !important; }
body .budget-grid .cell-input:focus, body .budget-grid .cell-input:hover { background: var(--hm-bg-input) !important; border-color: var(--hm-accent) !important; }

/* --- Hover righe → dark --- */
body .budget-table tbody tr:hover td { background-color: var(--hm-accent-bg) !important; }
body .table-excel tbody tr:not(.cat-header):hover td { background-color: var(--hm-accent-bg) !important; }

/* --- Testi globali → leggibili su dark --- */
body .kpi-label { color: var(--hm-text-muted) !important; }
body .kpi-value { color: var(--hm-text-bright) !important; }
/* Qualsiasi testo con classi Bootstrap scure → reso chiaro */
body .text-dark { color: var(--hm-text-bright) !important; }
body .text-muted { color: var(--hm-text-muted) !important; }
body .text-secondary { color: var(--hm-text-muted) !important; }
body .text-body { color: var(--hm-text) !important; }
body h1, body h2, body h3, body h4, body h5, body h6 { color: var(--hm-text-bright) !important; }
body p { color: var(--hm-text); }
body label { color: var(--hm-text) !important; }
body small, body .small { color: var(--hm-text-muted) !important; }
body .font-weight-bold { color: inherit; }
/* Content header titolo pagina */
body .content-header h1 small { color: var(--hm-text-muted) !important; }
/* KPI card bordi meno invadenti */
body .kpi-card { border-color: var(--hm-border) !important; }
body .kpi-card .kpi-title { color: var(--hm-text-muted) !important; }
/* Budget header titolo anno/mese */
body .budget-header h1, body .budget-header h2 { color: var(--hm-text-bright) !important; }
body .budget-header .header-title span { color: var(--hm-text-muted) !important; }
/* Cantiere header "SOSTITUISCI CON" e simili */
body .cantieri-grid h1 { color: var(--hm-text-bright) !important; }
body .cantieri-grid h1 span { color: var(--hm-text-muted) !important; }
/* Form labels e scritte generiche */
body .form-group label { color: var(--hm-text) !important; }
body .help-block { color: var(--hm-text-dim) !important; }
/* Links generici scuri → accent */
body a:not(.nav-link):not(.brand-link):not(.dropdown-item):not(.btn) { color: var(--hm-accent) !important; }
body a:not(.nav-link):not(.brand-link):not(.dropdown-item):not(.btn):hover { color: #60a5fa !important; }
body .kpi-highlight { background: rgba(59,130,246,0.1) !important; border-color: rgba(59,130,246,0.2) !important; }
body .kpi-highlight .kpi-label { color: var(--hm-accent) !important; }
body .kpi-highlight .kpi-value { color: var(--hm-accent) !important; }
body .money.text-muted { color: var(--hm-text) !important; }

/* --- Budget Pro KPI cards → dark --- */
body #budget-pro-container .kpi-card { background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; }
body #budget-pro-container .kpi-title { color: var(--hm-text-muted) !important; }
body #budget-pro-container .kpi-value { color: var(--hm-text-bright) !important; }

/* --- Dashboard modern → dark --- */
body #dashboard-modern { background: var(--hm-bg-body) !important; color: var(--hm-text) !important; }
body #dashboard-modern .lbl { color: var(--hm-text-muted) !important; }
body #dashboard-modern h2 { color: var(--hm-text-bright) !important; }
body #dashboard-modern h4 { color: var(--hm-text-bright) !important; }
/* Tutte le glass-card della control room → dark uniforme */
body #dashboard-modern .glass-card {
    background: var(--hm-bg-card) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text) !important;
}
body #dashboard-modern .glass-card * { color: inherit; }
body #dashboard-modern .glass-card h5,
body #dashboard-modern .glass-card .lbl-header { color: var(--hm-text-muted) !important; }
body #dashboard-modern .glass-card canvas { border-radius: 8px; }
/* Grafici: titoli sopra i chart */
body #dashboard-modern .glass-card span.lbl-header { color: var(--hm-text-muted) !important; }
/* KPI val numeri grandi */
body #dashboard-modern .kpi-val { color: var(--hm-text-bright) !important; }
/* KPI icone: sfondo semi-trasparente */
body #dashboard-modern .kpi-icon { opacity: 0.85; }
/* Filtri periodo pill */
body #dashboard-modern .btn-period,
body .btn-period {
    background: var(--hm-bg-elevated) !important;
    color: var(--hm-text-muted) !important;
    border: 1px solid var(--hm-border) !important;
}
body #dashboard-modern .btn-period.active,
body .btn-period.active {
    background: var(--hm-accent) !important;
    color: #fff !important;
    border-color: var(--hm-accent) !important;
}
/* Dropdown filtri (mese, anno, cantiere) */
body #dashboard-modern .ctrl-modern,
body .ctrl-modern {
    background: var(--hm-bg-input) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text) !important;
}
/* Pulsante Ufficio */
body #dashboard-modern #btn-quick-ufficio {
    background: var(--hm-bg-elevated) !important;
    color: var(--hm-accent) !important;
    border: 1px solid var(--hm-border) !important;
}
/* Gauge margine */
body #dashboard-modern #gaugeText { color: var(--hm-text-bright) !important; }
body #dashboard-modern #max-budget { color: var(--hm-text-muted) !important; }
body #dashboard-modern #lbl-margine-title { color: var(--hm-text-muted) !important; }
/* Badge macro spese in basso */
/* mc-bg badge spese: uniforma bordi al tema dark */
body [class*="mc-bg-"].glass-card {
    background: var(--hm-bg-card) !important;
    color: var(--hm-text) !important;
}
/* Badge riassuntivo spese */
body #spese-summary-badge {
    background: var(--hm-bg-card) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text) !important;
}
body #spese-summary-badge .ssb-label { color: var(--hm-text-muted) !important; }
body #spese-summary-badge .ssb-meta { color: var(--hm-text-dim) !important; }
body #spese-summary-badge .ssb-action {
    background: var(--hm-accent) !important;
    color: #fff !important;
}
/* Apple tooltip hover */
body .apple-tooltip {
    background: var(--hm-bg-elevated) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text) !important;
}
body .apple-tooltip-header { color: var(--hm-text-bright) !important; }
body .apple-tooltip-row { border-bottom-color: var(--hm-border-light) !important; }
body .apple-tooltip-desc { color: var(--hm-text) !important; }
body .apple-tooltip-val { color: var(--hm-text-bright) !important; }
/* Detail modal */
body #dm-detail-modal > div {
    background: var(--hm-bg-card) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text) !important;
}
body #dm-detail-title { color: var(--hm-text-bright) !important; }
body #dm-detail-total { color: var(--hm-text-bright) !important; }
body #dm-detail-body { color: var(--hm-text) !important; }
body #dm-detail-body table td { color: var(--hm-text) !important; border-color: var(--hm-border-light) !important; }

/* --- Colori di sfondo "soft" (sabato, weekend, evidenziazione) → dark translucent --- */
body .th-weekend { color: var(--hm-danger) !important; background: rgba(239,68,68,0.08) !important; }

/* --- Privacy mode → dark compatible --- */
body.privacy-mode .money span { filter: blur(5px); }

/* --- Cantieri grid → dark --- */
body .cantieri-grid { background: var(--hm-bg-body) !important; color: var(--hm-text) !important; }
body .cantieri-content { background: var(--hm-bg-body) !important; }

/* --- Icon wrappers (KPI dashboard) → dark translucent --- */
body .icon-wrapper { opacity: 0.9; }
body .icon-blue   { background: rgba(59,130,246,0.12) !important; color: #60a5fa !important; }
body .icon-green  { background: rgba(16,185,129,0.12) !important; color: #34d399 !important; }
body .icon-orange { background: rgba(245,158,11,0.12) !important; color: #fbbf24 !important; }
body .icon-red    { background: rgba(239,68,68,0.12) !important; color: #f87171 !important; }
body .icon-purple { background: rgba(139,92,246,0.12) !important; color: #a78bfa !important; }

/* === CONTROL ROOM (dashboard_main) → dark === */
body .glass-card {
    background: var(--hm-bg-card) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text) !important;
    backdrop-filter: blur(12px) !important;
    box-shadow: var(--hm-shadow) !important;
}
/* Badge margine toggle on/off */
.badge-margin-toggle { border: 1px solid rgba(255,255,255,0.15); width: 14px !important; height: 14px !important; font-size: 7px !important; }
.badge-margin-on { background: #16a34a !important; color: #fff !important; }
.badge-margin-on::after { content: '✓'; }
.badge-margin-off { background: rgba(255,255,255,0.08) !important; color: #64748b !important; border-color: rgba(255,255,255,0.1) !important; }
.badge-margin-off::after { content: '✕'; }
.badge-margin-toggle:hover { transform: scale(1.3); box-shadow: 0 2px 6px rgba(0,0,0,0.2); }
/* Badge drag & drop */
.badge-drag-ghost { opacity: 0.4 !important; }
.badge-drag-chosen .glass-card { box-shadow: 0 8px 25px rgba(59,130,246,0.25) !important; border-color: var(--hm-accent) !important; transform: scale(1.02); }
.badge-sortable-item .glass-card { cursor: grab !important; }
.badge-sortable-item .glass-card:active { cursor: grabbing !important; }
/* Badge macro spese: bordo più visibile + border-left colorato */
body .glass-card[class*="mc-bg-"] {
    border: 1px solid rgba(255,255,255,0.10) !important;
    border-left-width: 3px !important;
    background: var(--hm-bg-elevated) !important;
}
body .glass-card:hover {
    background: var(--hm-bg-card-hover) !important;
    box-shadow: var(--hm-shadow-md) !important;
}
body .dash-title { color: var(--hm-text-bright) !important; }
body .kpi-val { color: var(--hm-text-bright) !important; }
body .lbl-header { color: var(--hm-text-muted) !important; }
/* Segmented control (Mese/Trimestre/Anno) */
body .segmented-control {
    background: var(--hm-bg-elevated) !important;
    border: 1px solid var(--hm-border) !important;
}
body .segmented-control .btn-period {
    color: var(--hm-text-muted) !important;
}
body .segmented-control .btn-period.active {
    background: var(--hm-accent) !important;
    color: #fff !important;
}
/* Select/filtri Control Room con bordo visibile */
body .ctrl-modern {
    background: var(--hm-bg-input) !important;
    border: 1px solid rgba(255,255,255,0.12) !important;
    color: var(--hm-text) !important;
}
body .ctrl-modern:focus {
    border-color: var(--hm-accent) !important;
    box-shadow: 0 0 0 2px rgba(59,130,246,0.15) !important;
}
/* Pulsante Ufficio */
body #btn-quick-ufficio {
    border: 1px solid rgba(79,70,229,0.3) !important;
}
/* btn-kpi-toggle (badge custom ecc.) */
body .btn-kpi-toggle {
    background: var(--hm-bg-card) !important;
    border: 1px solid var(--hm-border) !important;
    color: var(--hm-text-muted) !important;
}
body .btn-kpi-toggle:hover {
    background: var(--hm-bg-elevated) !important;
    color: var(--hm-text) !important;
}
body .btn-kpi-toggle.active {
    background: #4f46e5 !important;
    color: #fff !important;
}
/* Gauge text (margine %) */
body #gaugeText { color: var(--hm-text-bright) !important; }
body #max-budget { color: var(--hm-text-muted) !important; }
/* Grafici: bordi sotto i totali annuali */
body .glass-card .d-flex[style*="border-top"] { border-top-color: var(--hm-border) !important; }
/* Mini container macro cards */
body #mini-container .glass-card { background: var(--hm-bg-card) !important; }
body [class*="mc-bg-"] { border-color: inherit !important; }

/* === PRESENZE (ajax_presenze.php) → dark === */
body .bg-white { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; }
body .bg-light { background: var(--hm-bg-elevated) !important; color: var(--hm-text) !important; }
body .border-right { border-right-color: var(--hm-border) !important; }
body .text-dark { color: var(--hm-text) !important; }
body .shadow-sm { box-shadow: var(--hm-shadow) !important; }
body .thead-light th { background: var(--hm-bg-elevated) !important; color: var(--hm-text-muted) !important; border-color: var(--hm-border) !important; }
/* Card header primary → dark */
body .card-header.bg-primary { background: var(--hm-accent) !important; }
/* Table striped dark */
body .table-striped tbody tr:nth-of-type(odd) { background-color: rgba(255,255,255,0.02) !important; }
body .table-hover tbody tr:hover { background-color: rgba(255,255,255,0.04) !important; }
/* Bootstrap alert/warning → dark */
body .alert-danger { background: var(--hm-bg-danger-subtle) !important; border-color: rgba(239,68,68,0.2) !important; color: #f87171 !important; }
body .alert-warning { background: var(--hm-bg-warning-subtle) !important; border-color: rgba(245,158,11,0.2) !important; color: #fbbf24 !important; }
body .alert-success { background: var(--hm-bg-success-subtle) !important; border-color: rgba(16,185,129,0.2) !important; color: #34d399 !important; }

/* === PIANO CONTI MANAGER → dark === */
body .ai-setup-container { background: var(--hm-bg-body) !important; color: var(--hm-text) !important; }
body .col-conti { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; }
body .macro-box { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; border-top-color: var(--hm-accent) !important; }
body .macro-header { background: var(--hm-bg-elevated) !important; border-bottom-color: var(--hm-border) !important; }
body .macro-title { color: var(--hm-text-bright) !important; }
body .conto-list { background: var(--hm-bg-card) !important; }
body #list-unassigned { background: var(--hm-bg-elevated) !important; }
body .conto-card { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; box-shadow: 0 1px 3px rgba(0,0,0,0.3) !important; }
body .custom-name-input { color: var(--hm-text-bright) !important; }
body .custom-name-input:focus { background: var(--hm-bg-input) !important; }
body .ai-input { background: var(--hm-bg-input) !important; color: var(--hm-text) !important; border-color: var(--hm-border) !important; }
body .ai-input:focus { background: var(--hm-bg-card) !important; }
body .search-box { background: var(--hm-bg-input) !important; color: var(--hm-text) !important; border-color: var(--hm-border) !important; }

/* === BUDGET PRO → dark (kpi-card, modern-card, modale) === */
body .kpi-card { background: var(--hm-bg-card) !important; border-color: var(--hm-border) !important; }
body .kpi-title { color: var(--hm-text-muted) !important; }
body .kpi-value { color: var(--hm-text-bright) !important; }
body .modern-card { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; border-color: var(--hm-border) !important; }
body .modern-toolbar { background: var(--hm-bg-body) !important; }
body .table-excel { color: var(--hm-text) !important; }
body .table-excel th { background: var(--hm-bg-elevated) !important; color: var(--hm-text-muted) !important; border-color: var(--hm-border) !important; }
body .table-excel td { border-color: var(--hm-border-light) !important; }
body .table-excel .cell-input,
body .table-excel .cell-select { background: var(--hm-bg-input) !important; color: var(--hm-text) !important; border-color: var(--hm-border) !important; }
body .cat-header td { background: var(--hm-bg-elevated) !important; color: var(--hm-text-bright) !important; }
/* Budget Pro modale scadenziario */
body .custom-modal-content { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; }
body .custom-modal-header { background: var(--hm-bg-elevated) !important; border-bottom-color: var(--hm-border) !important; color: var(--hm-text-bright) !important; }
body .custom-modal-body { background: var(--hm-bg-body) !important; color: var(--hm-text) !important; }
body .modal-table { color: var(--hm-text) !important; }
body .modal-table th { background: var(--hm-bg-elevated) !important; color: var(--hm-text-muted) !important; border-color: var(--hm-border) !important; }
body .modal-table td { border-color: var(--hm-border-light) !important; }
body .modal-section-title { color: var(--hm-text-bright) !important; }
body .tfoot-uscite td, body .tfoot-entrate td { background: var(--hm-bg-elevated) !important; color: var(--hm-text-bright) !important; }
/* RIBA modal */
body .custom-modal-overlay .modal-table { background: var(--hm-bg-card) !important; }

/* === DASHBOARD UFFICI / DIPENDENTI → dark === */
body .kpi-card.kpi-highlight-in { background: var(--hm-bg-success-subtle) !important; }
body .kpi-card.kpi-highlight-out { background: var(--hm-bg-danger-subtle) !important; }
body .modal-body.bg-white { background: var(--hm-bg-card) !important; }
body .modal-content { background: var(--hm-bg-card) !important; color: var(--hm-text) !important; }
body .modal-header { background: var(--hm-bg-elevated) !important; border-bottom-color: var(--hm-border) !important; color: var(--hm-text-bright) !important; }
body .modal-footer { background: var(--hm-bg-elevated) !important; border-top-color: var(--hm-border) !important; }

/* --- Bordi cantieri.css → dark --- */
body .budget-table th.tot-header { border-left-color: var(--hm-border) !important; border-right-color: var(--hm-border) !important; }
body .budget-table td.tot-col { border-left-color: var(--hm-border) !important; border-right-color: var(--hm-border) !important; }
body .budget-tot-mese td.tot-col, body .budget-tot-comp td.tot-col { border-left: none !important; border-right: none !important; }


/* Login: logo HAMMER. SVG nativo nero (#0c0c0d) → in dark mode lo invertiamo a bianco. */
.hm-login-logo { filter: brightness(0) invert(1); }

