body {
    font-family: "Poppins", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    font-size: 0.875rem;   /* Poppins ha un occhio piu' grande: alla misura precedente dilatava le tabelle */
    letter-spacing: -0.003em;
}

/* Poppins usa cifre a larghezza proporzionale: nelle colonne di importi vanno incolonnate. */
.table td.text-end, .table th.text-end, .table .text-end,
.display-6, .fw-bold[class*="text-end"] {
    font-variant-numeric: tabular-nums;
}

.navbar-brand, h1, h2, h3, h4, h5, .display-6 { letter-spacing: -0.015em; }

.card {
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}

.table-hover tbody tr {
    transition: background-color 0.15s;
}

.navbar-brand {
    font-weight: 600;
}

footer {
    font-size: 0.8rem;
}

@media (max-width: 768px) {
    .container-fluid {
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }
}

/* Schermi stretti (iPhone SE e simili): le intestazioni con i pulsanti vanno a capo
   invece di spingere fuori la pagina, e le etichette lunghe non allargano la riga. */
@media (max-width: 420px) {
    .d-flex.justify-content-between { flex-wrap: wrap; row-gap: 0.5rem; }
    .card-header.d-flex { flex-wrap: wrap; row-gap: 0.4rem; }
    .form-check-label, .btn { overflow-wrap: anywhere; }
    .display-6 { font-size: 1.6rem; }
    .card-body { padding: 0.75rem; }
}


/* ---------------------------------------------------------------------------
   Tema scuro, palette scelta dal committente:
   0B0B0B barra e piede - 201F1F fondo - 3B3939 schede - 4F4C4B bordi
   CE9B8D accento - 73544C toni secondari - 4A211A avvisi
   Lo scuro e' il tema predefinito; il chiaro resta su data-bs-theme="light".
   --------------------------------------------------------------------------- */

:root {
    --isipc-carta: #6f42c1;         /* carta di credito, tema chiaro */
    /* Una serie per anno nel confronto mensile: sette tinte distinguibili. */
    --isipc-serie-1: #0d6efd; --isipc-serie-2: #198754; --isipc-serie-3: #dc3545;
    --isipc-serie-4: #fd7e14; --isipc-serie-5: #6f42c1; --isipc-serie-6: #20c997;
    --isipc-serie-7: #d63384;

    /* Tinte dei grafici: mai scritte nei template, cosi' cambiano con il tema. */
    --isipc-g-40:      #E0A800;   /* base 40%, fatture */
    --isipc-g-40-soft: #F0CE72;   /* base 40%, corrispettivi */
    --isipc-g-67:      #1499B8;   /* base 67%, fatture */
    --isipc-g-67-soft: #7FC9DC;   /* base 67%, corrispettivi */
    --isipc-g-neutro:  #8A9199;
    --isipc-g-contanti:    #C0392B;
    --isipc-g-tracciabili: #198754;
    --isipc-g-linea:   #212529;   /* linea di riferimento del dichiarato */
    --isipc-g-carta:   #6f42c1;
}

[data-bs-theme="dark"] {
    --isipc-nero:   #0B0B0B;
    --isipc-fondo:  #201F1F;
    --isipc-scheda: #3B3939;
    --isipc-bordo:  #4F4C4B;
    --isipc-bruno:  #4A211A;
    --isipc-mauve:  #73544C;
    --isipc-rosa:   #CE9B8D;
    --isipc-carta:  #C0A9E8;        /* viola schiarito, illeggibile nella versione originale */

    /* Le stesse sette serie, riportate a una luminosita' che regge sul fondo scuro. */
    --isipc-serie-1: #7FBCCC; --isipc-serie-2: #79C79B; --isipc-serie-3: #EBA592;
    --isipc-serie-4: #E0AF43; --isipc-serie-5: #A98EDA; --isipc-serie-6: #5FD3C4;
    --isipc-serie-7: #F0A0C0;

    /* Le stesse tinte riportate su un fondo scuro caldo: le versioni chiare sparivano
       e il nero della linea di riferimento era proprio invisibile. */
    --isipc-g-40:      #E8B84B;
    --isipc-g-40-soft: #A8822E;
    --isipc-g-67:      #52B7D4;
    --isipc-g-67-soft: #2C7085;
    --isipc-g-neutro:  #8C7F7A;
    --isipc-g-contanti:    #E0715C;
    --isipc-g-tracciabili: #6FBF95;
    --isipc-g-linea:   #F0E4DF;
    --isipc-g-carta:   #C0A9E8;

    --bs-body-bg: var(--isipc-fondo);
    --bs-body-bg-rgb: 32, 31, 31;
    --bs-body-color: #E8DDD8;
    --bs-body-color-rgb: 232, 221, 216;
    --bs-emphasis-color: #FAF3F0;
    --bs-emphasis-color-rgb: 250, 243, 240;
    --bs-secondary-color: rgba(232, 221, 216, .70);
    --bs-secondary-bg: var(--isipc-scheda);
    --bs-secondary-bg-rgb: 59, 57, 57;
    --bs-tertiary-color: rgba(232, 221, 216, .52);
    --bs-tertiary-bg: #2A2828;
    --bs-tertiary-bg-rgb: 42, 40, 40;
    --bs-border-color: var(--isipc-bordo);
    --bs-border-color-translucent: rgba(206, 155, 141, .18);
    --bs-heading-color: #F2E7E2;

    --bs-link-color: var(--isipc-rosa);
    --bs-link-color-rgb: 206, 155, 141;
    --bs-link-hover-color: #E4BCB1;
    --bs-link-hover-color-rgb: 228, 188, 177;

    --bs-primary: var(--isipc-rosa);
    --bs-primary-rgb: 206, 155, 141;
    --bs-primary-bg-subtle: #33221E;
    --bs-primary-border-subtle: #5C3A32;
    --bs-primary-text-emphasis: var(--isipc-rosa);

    --bs-danger-bg-subtle: var(--isipc-bruno);
    --bs-danger-border-subtle: #6B3225;
    --bs-danger-text-emphasis: #EBA592;

    --bs-warning-bg-subtle: #33290F;
    --bs-warning-border-subtle: #5C4A1B;
    --bs-warning-text-emphasis: #E0AF43;

    --bs-info-bg-subtle: #16292F;
    --bs-info-border-subtle: #2A4A55;
    --bs-info-text-emphasis: #7FBCCC;

    --bs-success-bg-subtle: #18291F;
    --bs-success-border-subtle: #2C4A38;
    --bs-success-text-emphasis: #79C79B;

    --bs-code-color: var(--isipc-rosa);
    color-scheme: dark;
}

/* Scala di elevazione: la barra e il piede sono il livello piu' profondo,
   il corpo sta in mezzo, le schede sono sollevate. */
[data-bs-theme="dark"] .navbar.bg-dark,
[data-bs-theme="dark"] footer { background-color: var(--isipc-nero) !important; }
[data-bs-theme="dark"] footer { border-top-color: var(--isipc-bordo) !important; }
[data-bs-theme="dark"] .navbar .nav-link.active { color: var(--isipc-rosa); }
[data-bs-theme="dark"] .card {
    --bs-card-bg: var(--isipc-scheda);
    --bs-card-border-color: var(--isipc-bordo);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .45);
}
[data-bs-theme="dark"] .card-header { background-color: rgba(11, 11, 11, .32); border-bottom-color: var(--isipc-bordo); }
[data-bs-theme="dark"] .table { --bs-table-border-color: var(--isipc-bordo); }
[data-bs-theme="dark"] .progress { background-color: var(--bs-tertiary-bg); }
[data-bs-theme="dark"] .modal-content,
[data-bs-theme="dark"] .dropdown-menu { --bs-dropdown-bg: var(--isipc-scheda); background-color: var(--isipc-scheda); }
[data-bs-theme="dark"] .dropdown-menu { --bs-dropdown-border-color: var(--isipc-bordo); }
[data-bs-theme="dark"] .form-control, [data-bs-theme="dark"] .form-select {
    background-color: var(--bs-tertiary-bg);
    border-color: var(--isipc-bordo);
}

/* Righe di totale: sostituisce table-light, che nel tema scuro resterebbe bianca. */
.table-totale {
    --bs-table-color: var(--bs-emphasis-color);
    --bs-table-bg: var(--bs-tertiary-bg);
    --bs-table-border-color: var(--bs-border-color);
    --bs-table-striped-bg: var(--bs-tertiary-bg);
    --bs-table-striped-color: var(--bs-emphasis-color);
    --bs-table-active-bg: var(--bs-secondary-bg);
    --bs-table-active-color: var(--bs-emphasis-color);
    --bs-table-hover-bg: var(--bs-secondary-bg);
    --bs-table-hover-color: var(--bs-emphasis-color);
    color: var(--bs-table-color);
    border-color: var(--bs-table-border-color);
}

#temaToggle { color: rgba(255, 255, 255, .75); border: 0; }
#temaToggle:hover { color: #fff; }


/* ---------------------------------------------------------------------------
   Contrasto. Le varianti a tinta fissa di Bootstrap non seguono il tema: le celle
   table-warning e table-info restavano a fondo chiaro con testo chiaro (rapporto 1,01),
   e i bottoni outline conservano i colori compilati, che sul fondo scuro non arrivano
   a 4,5:1. Qui sono ridefinite tutte quelle effettivamente usate.
   --------------------------------------------------------------------------- */

[data-bs-theme="dark"] .table-warning {
    --bs-table-color: #F0C86B; --bs-table-bg: #3A2E12; --bs-table-border-color: #5C4A1B;
    --bs-table-striped-bg: #423418; --bs-table-striped-color: #F0C86B;
    --bs-table-active-bg: #4A3B1C;  --bs-table-active-color: #F7D98D;
    --bs-table-hover-bg: #4A3B1C;   --bs-table-hover-color: #F7D98D;
}
[data-bs-theme="dark"] .table-info {
    --bs-table-color: #8FCFE2; --bs-table-bg: #14313A; --bs-table-border-color: #23505D;
    --bs-table-striped-bg: #183842; --bs-table-striped-color: #8FCFE2;
    --bs-table-active-bg: #1D4252; --bs-table-active-color: #A9DDEC;
    --bs-table-hover-bg: #1D4252;   --bs-table-hover-color: #A9DDEC;
}
[data-bs-theme="dark"] .table-primary {
    --bs-table-color: #E4BCB1; --bs-table-bg: #3A251F; --bs-table-border-color: #5C3A32;
    --bs-table-striped-bg: #422A23; --bs-table-striped-color: #E4BCB1;
    --bs-table-active-bg: #4A302A;  --bs-table-active-color: #F0D0C7;
    --bs-table-hover-bg: #4A302A;   --bs-table-hover-color: #F0D0C7;
}
[data-bs-theme="dark"] .table-danger {
    --bs-table-color: #F0A392; --bs-table-bg: #3C1D16; --bs-table-border-color: #6B3225;
    --bs-table-striped-bg: #45231A; --bs-table-striped-color: #F0A392;
    --bs-table-active-bg: #4E281E;  --bs-table-active-color: #F7BCAD;
    --bs-table-hover-bg: #4E281E;   --bs-table-hover-color: #F7BCAD;
}
[data-bs-theme="dark"] .table-success {
    --bs-table-color: #8FD9AF; --bs-table-bg: #16301F; --bs-table-border-color: #2C4A38;
    --bs-table-striped-bg: #1B3925; --bs-table-striped-color: #8FD9AF;
    --bs-table-active-bg: #20422B;  --bs-table-active-color: #A9E5C3;
    --bs-table-hover-bg: #20422B;   --bs-table-hover-color: #A9E5C3;
}
[data-bs-theme="dark"] .table-warning,
[data-bs-theme="dark"] .table-info,
[data-bs-theme="dark"] .table-primary,
[data-bs-theme="dark"] .table-danger,
[data-bs-theme="dark"] .table-success {
    color: var(--bs-table-color);
    border-color: var(--bs-table-border-color);
}

[data-bs-theme="dark"] .btn-primary {
    --bs-btn-color: #241412; --bs-btn-bg: var(--isipc-rosa); --bs-btn-border-color: var(--isipc-rosa);
    --bs-btn-hover-color: #241412; --bs-btn-hover-bg: #E4BCB1; --bs-btn-hover-border-color: #E4BCB1;
    --bs-btn-active-color: #241412; --bs-btn-active-bg: #E4BCB1; --bs-btn-active-border-color: #E4BCB1;
    --bs-btn-disabled-color: #241412; --bs-btn-disabled-bg: #8A6B62; --bs-btn-disabled-border-color: #8A6B62;
}
[data-bs-theme="dark"] .btn-success {
    --bs-btn-color: #0E1F16; --bs-btn-bg: #6FBF95; --bs-btn-border-color: #6FBF95;
    --bs-btn-hover-color: #0E1F16; --bs-btn-hover-bg: #8AD0AB; --bs-btn-hover-border-color: #8AD0AB;
    --bs-btn-active-color: #0E1F16; --bs-btn-active-bg: #8AD0AB; --bs-btn-active-border-color: #8AD0AB;
}
[data-bs-theme="dark"] .btn-outline-primary {
    --bs-btn-color: var(--isipc-rosa); --bs-btn-border-color: #7A4E44;
    --bs-btn-hover-color: #241412; --bs-btn-hover-bg: var(--isipc-rosa); --bs-btn-hover-border-color: var(--isipc-rosa);
    --bs-btn-active-color: #241412; --bs-btn-active-bg: var(--isipc-rosa); --bs-btn-active-border-color: var(--isipc-rosa);
    --bs-btn-disabled-color: #8A6B62; --bs-btn-disabled-border-color: #5C3A32;
}
[data-bs-theme="dark"] .btn-outline-secondary {
    --bs-btn-color: #D3C6C1; --bs-btn-border-color: var(--isipc-bordo);
    --bs-btn-hover-color: #FAF3F0; --bs-btn-hover-bg: var(--isipc-bordo); --bs-btn-hover-border-color: #6A6462;
    --bs-btn-active-color: #FAF3F0; --bs-btn-active-bg: var(--isipc-bordo); --bs-btn-active-border-color: #6A6462;
    --bs-btn-disabled-color: #7E7370; --bs-btn-disabled-border-color: #3B3939;
}
[data-bs-theme="dark"] .btn-outline-danger {
    --bs-btn-color: #F0A392; --bs-btn-border-color: #7A3629;
    --bs-btn-hover-color: #241412; --bs-btn-hover-bg: #F0A392; --bs-btn-hover-border-color: #F0A392;
    --bs-btn-active-color: #241412; --bs-btn-active-bg: #F0A392; --bs-btn-active-border-color: #F0A392;
}
[data-bs-theme="dark"] .btn-outline-success {
    --bs-btn-color: #8FD9AF; --bs-btn-border-color: #33604A;
    --bs-btn-hover-color: #0E1F16; --bs-btn-hover-bg: #8FD9AF; --bs-btn-hover-border-color: #8FD9AF;
    --bs-btn-active-color: #0E1F16; --bs-btn-active-bg: #8FD9AF; --bs-btn-active-border-color: #8FD9AF;
}
[data-bs-theme="dark"] .btn-outline-warning {
    --bs-btn-color: #F0C86B; --bs-btn-border-color: #6B5622;
    --bs-btn-hover-color: #241B06; --bs-btn-hover-bg: #F0C86B; --bs-btn-hover-border-color: #F0C86B;
    --bs-btn-active-color: #241B06; --bs-btn-active-bg: #F0C86B; --bs-btn-active-border-color: #F0C86B;
}


/* ---------------------------------------------------------------------------
   Le utility text-* di Bootstrap usano le tinte di marca grezze, pensate per fare
   da sfondo e non da testo: #ffc107 su bianco sta a 1,63:1 e #198754 sulle schede
   scure a 2,53:1. Qui sono rimappate su versioni leggibili, una per tema, senza
   toccare i --bs-*-rgb, che servono ancora a badge e sfondi.
   --------------------------------------------------------------------------- */

:root {
    --isipc-t-primary:   #0a58ca;
    --isipc-t-success:   #146c43;
    --isipc-t-info:      #0a7c92;
    --isipc-t-warning:   #8a6100;
    --isipc-t-danger:    #b02a37;
    --isipc-t-secondary: #5c636a;
}

[data-bs-theme="dark"] {
    --isipc-t-primary:   #E4BCB1;
    --isipc-t-success:   #7FD1A5;
    --isipc-t-info:      #63BAD2;
    --isipc-t-warning:   #E0AF43;
    --isipc-t-danger:    #F0A392;
    --isipc-t-secondary: #B4A9A5;
}

.text-primary   { color: var(--isipc-t-primary)   !important; }
.text-success   { color: var(--isipc-t-success)   !important; }
.text-info      { color: var(--isipc-t-info)      !important; }
.text-warning   { color: var(--isipc-t-warning)   !important; }
.text-danger    { color: var(--isipc-t-danger)    !important; }
.text-secondary { color: var(--isipc-t-secondary) !important; }

/* Il rosa dell'accento e' chiaro: i badge pieni sopra vogliono testo scuro. */
[data-bs-theme="dark"] .text-bg-primary { color: #241412 !important; }

/* Il codice inline finisce su fondi subtle gialli e azzurri: serve piu' scuro nel tema
   chiaro e piu' chiaro in quello scuro. Il valore va ripetuto qui perche' :root e
   [data-bs-theme="dark"] hanno la stessa specificita' e vince l'ultimo dichiarato. */
:root { --bs-code-color: #a02c66; }
[data-bs-theme="dark"] { --bs-code-color: #F0A9C4; }

/* Bottoni outline nel tema chiaro: i colori compilati stanno appena sotto la soglia,
   e l'outline-warning su bianco era a 1,63:1. */
:root[data-bs-theme="light"] .btn-outline-secondary,
html:not([data-bs-theme="dark"]) .btn-outline-secondary { --bs-btn-color: #5c636a; }
:root[data-bs-theme="light"] .btn-outline-danger,
html:not([data-bs-theme="dark"]) .btn-outline-danger { --bs-btn-color: #b02a37; }
:root[data-bs-theme="light"] .btn-outline-warning,
html:not([data-bs-theme="dark"]) .btn-outline-warning { --bs-btn-color: #8a6100; --bs-btn-border-color: #b58200; }
:root[data-bs-theme="light"] .btn-outline-primary,
html:not([data-bs-theme="dark"]) .btn-outline-primary { --bs-btn-color: #0a58ca; }
:root[data-bs-theme="light"] a.text-decoration-none,
html:not([data-bs-theme="dark"]) { --bs-link-color: #0a58ca; --bs-link-color-rgb: 10, 88, 202; }

/* Print styles */
@media print {
    /* Hide navigation, footer, buttons, selects */
    .navbar, footer, .no-print, select, .btn {
        display: none !important;
    }

    /* Show print header */
    .print-header {
        display: block !important;
        text-align: center;
        margin-bottom: 1rem;
        border-bottom: 2px solid #333;
        padding-bottom: 0.5rem;
    }

    /* Hide canvas (replaced by images) */
    canvas {
        display: none !important;
    }

    /* Show chart images */
    .print-chart-img {
        display: block !important;
        max-height: 250px;
        object-fit: contain;
    }

    /* Reset container */
    .container-fluid {
        padding: 0 !important;
        max-width: 100% !important;
    }

    body {
        font-size: 11pt;
        color: #000;
    }

    /* Cards: remove shadows, compact */
    .card {
        box-shadow: none !important;
        border: 1px solid #ccc !important;
        break-inside: avoid;
    }

    .card-body {
        padding: 0.4rem !important;
    }

    /* Table: force borders */
    .table {
        font-size: 10pt;
    }

    .table-dark {
        background-color: #333 !important;
        color: #fff !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    /* Summary cards: force background colors */
    .text-primary, .text-info, .text-warning, .text-success, .text-secondary,
    .fw-bold[style*="color"] {
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    /* Chart row layout for print */
    .col-lg-8 { width: 60% !important; float: left; }
    .col-lg-4 { width: 40% !important; float: left; }

    /* Summary cards in row */
    .col-lg-2 { width: 16.6% !important; float: left; }

    .row { display: block; overflow: hidden; }
    .row::after { content: ""; display: table; clear: both; }

    /* Page settings */
    @page {
        margin: 1.5cm;
        size: A4 landscape;
    }
}
