/* ==========================================================================
   Variabili dell'applicazione. Il tema chiaro mantiene i valori storici;
   il tema scuro li ridefinisce. I CSS di pagina usano solo queste variabili.
   ========================================================================== */
:root {
    --app-page-flat: #f4f6f9;
    --app-bg-base: linear-gradient(135deg, #f4f7fb, #eef3f8, #f8f9fa);
    --app-surface: #ffffff;
    --app-surface-glass: rgba(255, 255, 255, 0.92);
    --app-surface-glass-soft: rgba(255, 255, 255, 0.88);
    --app-surface-muted: #f8f9fa;
    --app-surface-hover: #f1f3f5;
    --app-text-strong: #1f2937;
    --app-text: #343a40;
    --app-text-soft: #495057;
    --app-text-muted: #6c757d;
    --app-border: rgba(0, 0, 0, 0.06);
    --app-line: #eef1f4;
    --app-border-strong: #ced4da;
    --app-shadow: 0 18px 36px rgba(15, 23, 42, 0.10);
    --app-shadow-soft: 0 10px 24px rgba(15, 23, 42, 0.06);
    --app-selected-bg: #e7f1ff;
    --app-selected-text: #0d6efd;
    --app-hover-tint: rgba(13, 110, 253, 0.04);
    --app-warning-text: #856404;
}

[data-bs-theme="dark"] {
    --app-page-flat: #14171a;
    --app-bg-base: linear-gradient(135deg, #121519, #171b20, #14171b);
    --app-surface: #212529;
    --app-surface-glass: rgba(33, 37, 41, 0.92);
    --app-surface-glass-soft: rgba(33, 37, 41, 0.88);
    --app-surface-muted: #2b3035;
    --app-surface-hover: #343a40;
    --app-text-strong: #f8f9fa;
    --app-text: #dee2e6;
    --app-text-soft: #ced4da;
    --app-text-muted: #a7adb4;
    --app-border: rgba(255, 255, 255, 0.10);
    --app-line: #343a40;
    --app-border-strong: #495057;
    --app-shadow: 0 18px 36px rgba(0, 0, 0, 0.45);
    --app-shadow-soft: 0 10px 24px rgba(0, 0, 0, 0.30);
    --app-selected-bg: rgba(13, 110, 253, 0.25);
    --app-selected-text: #6ea8fe;
    --app-hover-tint: rgba(110, 168, 254, 0.10);
    --app-warning-text: #ffda6a;
}

/* Classi Bootstrap "chiare per sempre": in scuro seguono il tema.
Non tocco .text-dark in generale: i badge gialli (bg-warning text-dark) devono restare scuri. */
[data-bs-theme="dark"] .table-light {
    --bs-table-color: var(--bs-body-color);
    --bs-table-bg: var(--bs-tertiary-bg);
    --bs-table-border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .bg-light {
    background-color: var(--bs-tertiary-bg) !important;
}

    [data-bs-theme="dark"] .bg-light.text-dark {
        color: var(--bs-body-color) !important;
    }

[data-bs-theme="dark"] .bg-white {
    background-color: var(--bs-body-bg) !important;
}

/* ===== Token aggiuntivi: documentale e tabelle ===== */
:root {
    --app-surface-alt: #f8fafc; /* area file */
    --app-surface-subtle: #f1f3f5; /* intestazioni, hover neutro */
    --app-thead-glass: rgba(248, 249, 250, 0.95);
    --app-row-hover: #f8fbff;
    --app-panel-soft: rgba(248, 249, 250, 0.85);
    --app-border-faint: rgba(0, 0, 0, 0.05);
    --app-border-mid: rgba(0, 0, 0, 0.08);
    --app-border-input: rgba(0, 0, 0, 0.12);
    --app-danger-text: #dc3545;
    --app-shadow-layout: 0 4px 20px rgba(0, 0, 0, 0.06);
    --app-shadow-modal: 0 10px 30px rgba(0, 0, 0, 0.15);
    --app-pagination-bg: rgba(248, 249, 250, 0.75);
    --app-success-text: #198754;
    --app-code-bg: rgba(0, 0, 0, 0.04);
    --app-shadow-card: 0 6px 16px rgba(15, 23, 42, 0.05);
    --app-shadow-hover: 0 18px 36px rgba(15, 23, 42, 0.12);
    --app-readonly-bg: rgba(0, 0, 0, 0.03);
}

[data-bs-theme="dark"] {
    --app-surface-alt: #1a1d20;
    --app-surface-subtle: #2b3035;
    --app-thead-glass: rgba(43, 48, 53, 0.95);
    --app-row-hover: rgba(110, 168, 254, 0.08);
    --app-panel-soft: rgba(255, 255, 255, 0.04);
    --app-border-faint: rgba(255, 255, 255, 0.07);
    --app-border-mid: rgba(255, 255, 255, 0.12);
    --app-border-input: rgba(255, 255, 255, 0.18);
    --app-danger-text: #ea868f;
    --app-shadow-layout: 0 4px 20px rgba(0, 0, 0, 0.45);
    --app-shadow-modal: 0 10px 30px rgba(0, 0, 0, 0.55);
    --app-pagination-bg: rgba(255, 255, 255, 0.03);
    --app-success-text: #75b798;
    --app-code-bg: rgba(255, 255, 255, 0.08);
    --app-shadow-card: 0 6px 16px rgba(0, 0, 0, 0.30);
    --app-shadow-hover: 0 18px 36px rgba(0, 0, 0, 0.55);
    --app-readonly-bg: rgba(255, 255, 255, 0.05);
}

/* ===== jsTree (tema scuro) ===== */
[data-bs-theme="dark"] .jstree-default .jstree-hovered,
[data-bs-theme="dark"] .jstree-default .jstree-wholerow-hovered {
    background: var(--app-surface-subtle);
    box-shadow: none;
}

[data-bs-theme="dark"] .jstree-default .jstree-disabled {
    color: var(--app-text-muted);
}

/* Le frecce espandi/comprimi sono immagini scure: le schiariamo */
[data-bs-theme="dark"] .jstree-default .jstree-ocl {
    filter: invert(0.8);
}

/* ===== SweetAlert2 (tema scuro) ===== */
[data-bs-theme="dark"] .swal2-popup {
    background: var(--app-surface);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .swal2-title,
[data-bs-theme="dark"] .swal2-html-container {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .swal2-input,
[data-bs-theme="dark"] .swal2-textarea,
[data-bs-theme="dark"] .swal2-select {
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .swal2-validation-message {
    background: var(--app-surface-subtle);
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .swal2-footer {
    border-top-color: var(--bs-border-color);
}

/* ===== flatpickr (tema scuro) ===== */
[data-bs-theme="dark"] .flatpickr-calendar {
    background: var(--app-surface);
    box-shadow: 0 3px 13px rgba(0, 0, 0, 0.55), 0 0 0 1px var(--bs-border-color);
}

[data-bs-theme="dark"] .flatpickr-calendar.arrowTop:before {
    border-bottom-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .flatpickr-calendar.arrowTop:after {
    border-bottom-color: var(--app-surface);
}

[data-bs-theme="dark"] .flatpickr-calendar.arrowBottom:before {
    border-top-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .flatpickr-calendar.arrowBottom:after {
    border-top-color: var(--app-surface);
}

[data-bs-theme="dark"] .flatpickr-months .flatpickr-month,
[data-bs-theme="dark"] .flatpickr-current-month .flatpickr-monthDropdown-months,
[data-bs-theme="dark"] .flatpickr-current-month input.cur-year {
    color: var(--bs-body-color);
    fill: var(--bs-body-color);
    background: transparent;
}

[data-bs-theme="dark"] .flatpickr-current-month .flatpickr-monthDropdown-months:hover {
    background: var(--app-surface-subtle);
}

[data-bs-theme="dark"] .flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
    background-color: var(--app-surface);
}

[data-bs-theme="dark"] .flatpickr-months .flatpickr-prev-month,
[data-bs-theme="dark"] .flatpickr-months .flatpickr-next-month {
    color: var(--bs-body-color);
    fill: var(--bs-body-color);
}

[data-bs-theme="dark"] .flatpickr-months .flatpickr-prev-month svg,
[data-bs-theme="dark"] .flatpickr-months .flatpickr-next-month svg {
    fill: var(--bs-body-color);
}

[data-bs-theme="dark"] .flatpickr-weekdays,
[data-bs-theme="dark"] span.flatpickr-weekday {
    background: transparent;
    color: var(--app-text-muted);
}

[data-bs-theme="dark"] .flatpickr-day {
    color: var(--app-text);
}

[data-bs-theme="dark"] .flatpickr-day:hover,
[data-bs-theme="dark"] .flatpickr-day:focus,
[data-bs-theme="dark"] .flatpickr-day.prevMonthDay:hover,
[data-bs-theme="dark"] .flatpickr-day.nextMonthDay:hover {
    background: var(--app-surface-subtle);
    border-color: var(--app-surface-subtle);
}

[data-bs-theme="dark"] .flatpickr-day.prevMonthDay,
[data-bs-theme="dark"] .flatpickr-day.nextMonthDay {
    color: var(--app-text-muted);
    opacity: 0.5;
}

[data-bs-theme="dark"] .flatpickr-day.flatpickr-disabled,
[data-bs-theme="dark"] .flatpickr-day.flatpickr-disabled:hover {
    color: rgba(255, 255, 255, 0.2);
    background: transparent;
    border-color: transparent;
}

[data-bs-theme="dark"] .flatpickr-day.today {
    border-color: var(--app-text-muted);
}

[data-bs-theme="dark"] .flatpickr-day.inRange {
    background: var(--app-selected-bg);
    border-color: var(--app-selected-bg);
    box-shadow: -5px 0 0 var(--app-selected-bg), 5px 0 0 var(--app-selected-bg);
}

[data-bs-theme="dark"] .flatpickr-day.selected,
[data-bs-theme="dark"] .flatpickr-day.startRange,
[data-bs-theme="dark"] .flatpickr-day.endRange,
[data-bs-theme="dark"] .flatpickr-day.selected:hover,
[data-bs-theme="dark"] .flatpickr-day.startRange:hover,
[data-bs-theme="dark"] .flatpickr-day.endRange:hover {
    background: #0d6efd;
    border-color: #0d6efd;
    color: #fff;
}

[data-bs-theme="dark"] .flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
[data-bs-theme="dark"] .flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
[data-bs-theme="dark"] .flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
    box-shadow: -10px 0 0 #0d6efd;
}

[data-bs-theme="dark"] .btn-outline-secondary {
    --bs-btn-color: #ced4da;
    --bs-btn-border-color: #868e96;
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: #6c757d;
    --bs-btn-hover-border-color: #6c757d;
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: #6c757d;
    --bs-btn-active-border-color: #6c757d;
    --bs-btn-disabled-color: #868e96;
    --bs-btn-disabled-border-color: #6c757d;
    --bs-btn-focus-shadow-rgb: 134, 142, 150;
}

[data-bs-theme="dark"] .btn-outline-dark {
    --bs-btn-color: #dee2e6;
    --bs-btn-border-color: #adb5bd;
    --bs-btn-hover-color: #212529;
    --bs-btn-hover-bg: #dee2e6;
    --bs-btn-hover-border-color: #dee2e6;
    --bs-btn-active-color: #212529;
    --bs-btn-active-bg: #dee2e6;
    --bs-btn-active-border-color: #dee2e6;
    --bs-btn-disabled-color: #adb5bd;
    --bs-btn-disabled-border-color: #6c757d;
}