/* ============================================================
   Design system Pivot-X — unica fonte dei colori del gestionale.
   Teal del marchio, ambra per le azioni in evidenza, grigio cemento per i testi secondari.
   ============================================================ */
:root {
    --px-teal: #005880;          /* blu-teal del logo: colore primario */
    --px-teal-scuro: #003F5C;    /* sfondo sidebar */
    --px-teal-hover: #004A6B;
    --px-ambra: #E0A526;         /* azioni di creazione in evidenza */
    --px-ambra-hover: #C78F17;
    --px-cemento: #8A8D8F;       /* grigio cemento */

    --px-bg: #F4F6F7;
    --px-bg-card: #FFFFFF;
    --px-bordo: #DCE1E4;
    --px-testo: #24313A;
    --px-testo-secondario: #5F6B73;

    --px-success: #2E7D32;
    --px-warning: #E0A526;
    --px-danger: #B71C1C;
    --px-danger-hover: #931717;
    --px-info: #3D7FA6;

    --cui-primary: var(--px-teal);
    --cui-primary-rgb: 0, 88, 128;
    --cui-link-color: var(--px-teal);
    --cui-link-color-rgb: 0, 88, 128;
    --cui-link-hover-color: var(--px-teal-hover);
    --cui-link-hover-color-rgb: 0, 74, 107;
    --cui-success: var(--px-success);
    --cui-success-rgb: 46, 125, 50;
    --cui-warning: var(--px-warning);
    --cui-warning-rgb: 224, 165, 38;
    --cui-danger: var(--px-danger);
    --cui-danger-rgb: 183, 28, 28;
    --cui-info: var(--px-info);
    --cui-info-rgb: 61, 127, 166;
    --cui-body-color: var(--px-testo);
    --cui-body-bg: var(--px-bg);
    --cui-border-color: var(--px-bordo);
    --cui-secondary-color: var(--px-testo-secondario);
    --cui-card-cap-bg: rgba(0, 88, 128, 0.07);
    --cui-card-cap-color: var(--px-teal);
}

body { background-color: var(--px-bg); }
.card-header { font-weight: 700; }
h1, h2, h3, h4, h5, h6 { color: var(--px-teal); }
.flex-grow-1.d-flex.flex-column { min-width: 0; }
.card { --cui-card-bg: var(--px-bg-card); --cui-card-border-color: var(--px-bordo); }

/* --- Bottoni --- */
.btn-primary {
    --cui-btn-color: #fff; --cui-btn-bg: var(--px-teal); --cui-btn-border-color: var(--px-teal);
    --cui-btn-hover-color: #fff; --cui-btn-hover-bg: var(--px-teal-hover); --cui-btn-hover-border-color: var(--px-teal-hover);
    --cui-btn-active-color: #fff; --cui-btn-active-bg: var(--px-teal-hover); --cui-btn-active-border-color: var(--px-teal-hover);
    --cui-btn-disabled-color: #fff; --cui-btn-disabled-bg: var(--px-teal); --cui-btn-disabled-border-color: var(--px-teal);
}
.btn-outline-primary, .btn-outline-secondary {
    --cui-btn-color: var(--px-teal); --cui-btn-border-color: var(--px-teal);
    --cui-btn-hover-color: #fff; --cui-btn-hover-bg: var(--px-teal); --cui-btn-hover-border-color: var(--px-teal);
    --cui-btn-active-color: #fff; --cui-btn-active-bg: var(--px-teal); --cui-btn-active-border-color: var(--px-teal);
}
.btn-cta {
    --cui-btn-color: #1d1d1d; --cui-btn-bg: var(--px-ambra); --cui-btn-border-color: var(--px-ambra);
    --cui-btn-hover-color: #1d1d1d; --cui-btn-hover-bg: var(--px-ambra-hover); --cui-btn-hover-border-color: var(--px-ambra-hover);
    --cui-btn-active-color: #1d1d1d; --cui-btn-active-bg: var(--px-ambra-hover); --cui-btn-active-border-color: var(--px-ambra-hover);
    font-weight: 600;
}
.btn-danger {
    --cui-btn-bg: var(--px-danger); --cui-btn-border-color: var(--px-danger);
    --cui-btn-hover-bg: var(--px-danger-hover); --cui-btn-hover-border-color: var(--px-danger-hover);
}

/* --- Tabelle --- */
.table { --cui-table-border-color: var(--px-bordo); }
.table thead th { color: var(--px-teal); font-weight: 600; background-color: var(--px-bg); white-space: nowrap; }
.table-hover > tbody > tr:hover > * { --cui-table-accent-bg: var(--px-bg); }
.text-currency, .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.table td, .table th { vertical-align: middle; }

/* --- Form --- */
.form-label { color: var(--px-testo-secondario); font-weight: 500; margin-bottom: .2rem; }
.form-control, .form-select { --cui-border-color: var(--px-bordo); background-color: var(--px-bg-card); }
.errorlist { color: var(--px-danger); list-style: none; padding-left: 0; margin: .2rem 0 0; font-size: .875rem; }

/* --- Sidebar --- */
#sidebar.sidebar-dark {
    --cui-body-bg: var(--px-teal-scuro);
    --cui-sidebar-bg: var(--px-teal-scuro);
    --cui-sidebar-nav-link-active-bg: var(--px-teal);
    --cui-sidebar-nav-link-hover-bg: var(--px-teal-hover);
    --cui-sidebar-nav-link-color: #fff;
    --cui-sidebar-nav-title-color: rgba(255, 255, 255, .7);
    flex: 0 0 15rem;
    position: sticky; top: 0; align-self: flex-start; height: 100vh; overflow-y: auto;
}
#sidebar .sidebar-nav { --cui-sidebar-nav-link-padding-y: 0.4rem; }
#sidebar .nav-title { font-size: .75rem; letter-spacing: .08em; margin-top: .9rem; }
#sidebar .nav-link.active { font-weight: 700; border-left: 3px solid var(--px-ambra); }
.sidebar-brand { width: 100%; padding: 1.1rem 1rem .6rem; display: flex; flex-direction: column; align-items: center; gap: .35rem; }
.sidebar-brand img { width: 150px; height: auto; }
.sidebar-brand .versione { font-size: 10px; color: rgba(255, 255, 255, .75); }
@media (max-width: 991.98px) {
    #sidebar.sidebar-dark { position: fixed; z-index: 1040; left: 0; margin-left: -15rem; transition: margin .2s; }
    #sidebar.sidebar-dark.aperta { margin-left: 0; }
}

/* --- Indicatori --- */
.kpi { border-left: 4px solid var(--px-teal); }
.kpi .kpi-valore { font-size: 1.45rem; font-weight: 700; color: var(--px-teal); font-variant-numeric: tabular-nums; }
.kpi .kpi-etichetta { font-size: .8rem; color: var(--px-testo-secondario); text-transform: uppercase; letter-spacing: .04em; }
.kpi.ambra { border-left-color: var(--px-ambra); }
.kpi.verde { border-left-color: var(--px-success); }
.kpi.rosso { border-left-color: var(--px-danger); }
.semaforo { display: inline-block; width: .8rem; height: .8rem; border-radius: 50%; vertical-align: middle; }
.semaforo.verde { background: var(--px-success); }
.semaforo.giallo { background: var(--px-warning); }
.semaforo.rosso { background: var(--px-danger); }
.nav-tabs .nav-link { color: var(--px-testo-secondario); }
.nav-tabs .nav-link.active { color: var(--px-teal); font-weight: 600; }
.dl-compatta dt { color: var(--px-testo-secondario); font-weight: 500; }
.dl-compatta dd { margin-bottom: .5rem; }

/* --- Pagine di accesso (django-allauth) --- */
.pagina-accesso { min-height: 100vh; background: linear-gradient(160deg, var(--px-teal-scuro), var(--px-teal)); }
.box-accesso input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.box-accesso select, .box-accesso textarea {
    display: block; width: 100%; padding: .5rem .75rem; border: 1px solid var(--px-bordo); border-radius: .375rem; margin-bottom: .25rem;
}
.box-accesso label { display: block; color: var(--px-testo-secondario); font-weight: 500; margin-top: .6rem; }
.box-accesso input[type=checkbox] + label, .box-accesso label:has(input[type=checkbox]) { display: inline; margin-left: .3rem; }
.box-accesso button, .box-accesso a.button, .box-accesso form button[type=submit] {
    display: inline-block; margin-top: .75rem; margin-right: .4rem; padding: .5rem 1rem; border-radius: .375rem;
    border: 1px solid var(--px-teal); background: var(--px-teal); color: #fff; font-weight: 500; cursor: pointer;
}
.box-accesso button:hover { background: var(--px-teal-hover); }
.box-accesso h1 { font-size: 1.4rem; font-weight: 700; margin-bottom: 1rem; }
.box-accesso h2 { font-size: 1.1rem; margin-top: 1.2rem; }
.box-accesso ul.errorlist, .box-accesso .errorlist { color: var(--px-danger); }
.box-accesso table { width: 100%; margin: .5rem 0; }
.box-accesso td, .box-accesso th { padding: .3rem; border-bottom: 1px solid var(--px-bordo); }
.box-accesso .provider-list, .box-accesso ul.socialaccount_providers { list-style: none; padding: 0; }
.box-accesso .provider-list a, .box-accesso ul.socialaccount_providers a {
    display: block; text-align: center; padding: .55rem 1rem; margin-bottom: .5rem; border: 1px solid var(--px-bordo);
    border-radius: .375rem; color: var(--px-testo); font-weight: 600; text-decoration: none; background: #fff;
}
.box-accesso .provider-list a:hover { border-color: var(--px-teal); color: var(--px-teal); }
.box-accesso img[src^="data:image"] { max-width: 220px; }

@media print {
    #sidebar, header.header, .d-print-none { display: none !important; }
    .body { padding: 0 !important; }
}

/* Gruppi del menu laterale: si vede solo il titolo, si apre con un clic */
#sidebar .nav-group-toggle { font-weight: 600; --cui-sidebar-nav-group-indicator-color: rgba(255, 255, 255, .8); }
#sidebar .nav-group.show > .nav-group-toggle { --cui-sidebar-nav-group-toggle-show-color: #fff; }
#sidebar .nav-group-items .nav-link { font-size: .92rem; }
#sidebar .nav-group-items .nav-link.active { background: var(--px-teal); }

/* Campi a spunta nei form: etichetta accanto alla casella, spiegazione sotto */
.campo-spunta .form-check { margin-bottom: .1rem; }
.campo-spunta .form-text { margin-top: 0; padding-left: 1.6rem; }
@media (min-width: 768px) { .campo-spunta { padding-top: 1.9rem; } .campo-spunta.senza-rientro { padding-top: 0; } }

/* Caselle a spunta ben visibili anche quando non sono spuntate */
.form-check-input { border-color: var(--px-cemento); }
#sidebar .nav-group-toggle .badge { margin-right: 1.4rem; }

/* Codice del noleggio / della vendita sempre riconoscibile */
.codice-ordine { display: inline-flex; align-items: center; gap: .3rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap;
    padding: .05rem .45rem .05rem .1rem; border-radius: .3rem; text-decoration: none; color: var(--px-teal-scuro); background: rgba(0, 88, 128, .09); border: 1px solid rgba(0, 88, 128, .25); }
.codice-ordine .tipo { font-size: .65rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #fff; background: var(--px-teal); border-radius: .2rem; padding: .05rem .3rem; }
.codice-ordine.vendita .tipo { background: var(--px-ambra); color: #1d1d1d; }
a.codice-ordine:hover { background: rgba(0, 88, 128, .18); color: var(--px-teal-scuro); }
.barriera { display: inline-block; font-weight: 600; white-space: nowrap; }
.barriera .famiglia { color: var(--px-teal); }

/* Planning (Gantt) */
.gantt-riga { display: grid; grid-template-columns: 22rem 1fr; border-bottom: 1px solid var(--px-bordo); min-height: 2.7rem; }
.gantt-riga:hover { background: var(--px-bg); }
.gantt-etichetta { padding: .35rem .6rem; font-size: .85rem; line-height: 1.3; border-right: 1px solid var(--px-bordo); overflow: hidden; }
.gantt-area { position: relative; }
.gantt-intestazione { position: sticky; top: 3.5rem; z-index: 3; background: var(--px-bg-card); }
.gantt-intestazione .gantt-area { height: 2rem; }
.gantt-mese { position: absolute; top: 0; bottom: 0; border-left: 1px solid var(--px-bordo); font-size: .75rem; color: var(--px-testo-secondario); padding: .45rem .3rem; white-space: nowrap; overflow: hidden; }
.gantt-griglia { position: absolute; top: 0; bottom: 0; border-left: 1px dashed #E3E7EA; }
.gantt-barra { position: absolute; top: .6rem; height: 1.5rem; border-radius: .3rem; color: #fff; font-size: .75rem; font-weight: 600; padding: 0 .4rem;
    line-height: 1.5rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-decoration: none; min-width: 4px; }
.gantt-barra:hover { color: #fff; filter: brightness(1.1); }
.gantt-barra.attivo { background: var(--px-teal); }
.gantt-barra.in_attesa { background: var(--px-ambra); color: #1d1d1d; }
.gantt-barra.da_saldare, .gantt-barra.chiuso { background: var(--px-cemento); }
.gantt-barra.offerta { background: repeating-linear-gradient(45deg, rgba(224,165,38,.2), rgba(224,165,38,.2) 6px, rgba(224,165,38,.4) 6px, rgba(224,165,38,.4) 12px);
    color: #5a4410; border: 1px dashed var(--px-ambra); }
.gantt-barra .fatto { position: absolute; left: 0; top: 0; bottom: 0; background: rgba(255,255,255,.25); pointer-events: none; }
.gantt-barra .testo { position: relative; }
.gantt-barra.superato { box-shadow: inset 0 0 0 2px var(--px-danger); }
.gantt-oggi { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--px-danger); z-index: 2; pointer-events: none; }
.gantt-legenda span { display: inline-block; width: 1rem; height: .7rem; border-radius: .2rem; vertical-align: middle; margin: 0 .25rem 0 .8rem; }
.avanzamento { height: .5rem; min-width: 6rem; }
@media (max-width: 991.98px) { .gantt-riga { grid-template-columns: 11rem 1fr; } }

/* Tabella dei permessi dei ruoli: spunte e titoli centrati */
.tabella-permessi th:not(:first-child), .tabella-permessi td:not(:first-child) { text-align: center; vertical-align: middle; }
.tabella-permessi thead th { white-space: normal; vertical-align: middle; }
.tabella-permessi .spunta { color: var(--px-success); font-weight: 700; font-size: 1.05rem; }

/* Terzo livello del menu (es. Amministrazione > Fatturazione > Coda fatture) */
#sidebar .nav-group-items .nav-group-items .nav-link { padding-left: 4.2rem; font-size: .88rem; }
#sidebar .nav-group-items .nav-group-toggle { font-weight: 500; }

/* Moduli a sezioni numerate con barra Salva sempre visibile (es. Nuova offerta) */
.numero-sezione { display: inline-flex; align-items: center; justify-content: center; width: 1.6rem; height: 1.6rem; border-radius: 50%; background: var(--px-teal); color: #fff; font-size: .85rem; margin-right: .4rem; }
.modulo-sezioni .card-header { font-size: 1.02rem; }
.barra-salva { position: sticky; bottom: 0; z-index: 5; background: var(--px-bg-card); border-top: 1px solid var(--px-bordo); padding: .75rem 1rem; margin: 0 -1rem; box-shadow: 0 -4px 12px rgba(0,0,0,.05); }
@media (min-width: 992px) { .barra-salva { margin: 0 -1.5rem; padding: .75rem 1.5rem; } }

/* Bottoni sempre su una riga: il testo non va a capo e il gruppo di bottoni non si restringe */
.btn { white-space: nowrap; }
.d-flex > .ms-auto.d-flex, .d-flex > .ms-auto.btn, .d-flex > form.ms-auto { flex-shrink: 0; }

/* Prove di formato offerta */
.riepilogo-laterale { position: sticky; top: 4.5rem; }
.documento { border-top: 4px solid var(--px-teal); }
.passi li { flex: 1; padding: .5rem .7rem; border-radius: .4rem; background: var(--px-bg-card); border: 1px solid var(--px-bordo); cursor: pointer; color: var(--px-testo-secondario); font-weight: 500; }
.passi li span { display: inline-flex; width: 1.5rem; height: 1.5rem; border-radius: 50%; align-items: center; justify-content: center; background: var(--px-bordo); margin-right: .35rem; font-size: .8rem; }
.passi li.attivo { border-color: var(--px-teal); color: var(--px-teal); }
.passi li.attivo span { background: var(--px-teal); color: #fff; }
.passi li.fatto span { background: var(--px-success); color: #fff; }
.passi li.errore { border-color: var(--px-danger); color: var(--px-danger); }
.tabella-righe .form-control, .tabella-righe .form-select, .tabella-costi .form-control, .tabella-costi .form-select { padding: .25rem .4rem; font-size: .875rem; }

/* Giacenze: il numero che conta è "consegnabili adesso" */
.consegnabili-valore { font-size: 1.9rem; font-weight: 700; color: var(--px-testo); font-variant-numeric: tabular-nums; line-height: 1.2; margin: .15rem 0 .35rem; }
details.card > summary { cursor: pointer; }

/* Suggerimenti al passaggio del mouse */
.suggerimento { cursor: help; text-decoration: underline dotted; text-underline-offset: 3px; text-decoration-color: var(--px-cemento); }
.nr-m { cursor: help; white-space: nowrap; }

/* Pagina Barriere */
.scheda-barriera { border-left: 5px solid var(--px-cemento); }
.scheda-barriera.ok { border-left-color: var(--px-success); }
.scheda-barriera.manca { border-left-color: var(--px-danger); }
.scheda-barriera.manca .consegnabili-valore { color: var(--px-danger); }
.conto-libere > div { display: flex; justify-content: space-between; gap: 1rem; padding: .15rem 0; border-top: 1px dashed var(--px-bordo); font-variant-numeric: tabular-nums; }
.pallino { display: inline-block; width: .6rem; height: .6rem; border-radius: 50%; margin: 0 .2rem 0 .4rem; }
.pallino.pronte { background: var(--px-success); }
.pallino.noleggio { background: var(--px-teal); }
.pallino.quarantena { background: var(--px-cemento); }

.scheda-barriera.cliccabile { transition: box-shadow .15s; }
.scheda-barriera.cliccabile:hover { box-shadow: 0 .25rem .75rem rgba(0, 63, 92, .15); }
.scheda-barriera .stretched-link { position: static; }
.scheda-barriera.cliccabile .stretched-link::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.barriera.grande .famiglia { font-size: 1.5rem; line-height: 1.1; }

/* Movimenti guidati */
.scelta-operazione { transition: box-shadow .15s, border-color .15s; }
.scelta-operazione:hover { border-color: var(--px-teal); box-shadow: 0 .25rem .75rem rgba(0, 63, 92, .15); }
.scelta-ddt { cursor: pointer; border-width: 2px; transition: border-color .15s, background-color .15s; }
.scelta-ddt:hover { border-color: var(--px-teal); }
.scelta-ddt:has(input:checked) { border-color: var(--px-teal); background-color: rgba(0, 88, 128, .06); }
.scelta-ddt input[type=radio] { margin-top: .25rem; flex-shrink: 0; }

/* Lavagna (kanban) di offerte e ordini: su desktop tutte le colonne stanno nello schermo */
.lavagna { display: grid; grid-template-columns: repeat(var(--colonne, 6), minmax(0, 1fr)); gap: .6rem; align-items: start; }
@media (max-width: 1199.98px) { .lavagna { display: flex; overflow-x: auto; } .lavagna-colonna { flex: 0 0 15.5rem; } }
.lavagna-colonna { background: #E9EEF1; border-radius: .5rem; display: flex; flex-direction: column; max-height: calc(100vh - 10.5rem); min-width: 0;
    transition: background-color .15s, opacity .15s; }
.lavagna-colonna.puo-ricevere { background: #DCEBE0; outline: 2px dashed var(--px-success); outline-offset: -2px; }
.lavagna-colonna.puo-ricevere.sopra { background: #C9E3CF; }
.lavagna-colonna.non-ricevere { opacity: .55; }
.lavagna-testa { padding: .5rem .6rem .4rem; border-top: 4px solid var(--px-cemento); border-radius: .5rem .5rem 0 0; background: var(--px-bg-card); font-size: .875rem; }
.lavagna-totali { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lavagna-testa.bordo-info { border-top-color: var(--px-info); }
.lavagna-testa.bordo-ambra { border-top-color: var(--px-ambra); }
.lavagna-testa.bordo-teal { border-top-color: var(--px-teal); }
.lavagna-testa.bordo-warning { border-top-color: #C78F17; }
.lavagna-testa.bordo-success { border-top-color: var(--px-success); }
.lavagna-schede { padding: .4rem; overflow-y: auto; display: flex; flex-direction: column; gap: .4rem; min-height: 3rem; }
.lavagna-scheda { position: relative; background: var(--px-bg-card); border: 1px solid var(--px-bordo); border-radius: .4rem; padding: .45rem .55rem;
    font-size: .875rem; box-shadow: 0 1px 2px rgba(0, 0, 0, .05); transition: box-shadow .15s, border-color .15s; min-width: 0; }
.lavagna-scheda:hover { border-color: var(--px-teal); box-shadow: 0 .25rem .6rem rgba(0, 63, 92, .15); }
.lavagna-scheda[draggable="true"] { cursor: grab; }
.lavagna-scheda.in-volo { opacity: .5; }
.lavagna-scheda.persa { opacity: .75; }
.lavagna-scheda .codice-ordine { font-size: .75rem; }
.lavagna-menu { position: relative; z-index: 2; }
.lavagna-prossimo { color: var(--px-teal); }
.codice-offerta { font-weight: 700; font-size: .8rem; padding: .05rem .4rem; border-radius: .3rem; border: 1px dashed var(--px-cemento); color: var(--px-testo-secondario); white-space: nowrap; }

/* Coda fatture: una riga per fattura, il modulo si apre solo quando serve */
.coda-fatture .list-group-item { padding: .65rem 1rem; }
.coda-voce { min-width: 13rem; max-width: 18rem; }
.coda-importo { min-width: 7.5rem; font-variant-numeric: tabular-nums; }
.coda-dettaglio { margin-top: .65rem; padding-top: .75rem; border-top: 1px dashed var(--px-bordo); }

/* =====================================================================================================
   SISTEMA VISIVO COMUNE
   ===================================================================================================== */

/* Badge: stessa altezza, raggio, carattere e spaziatura ovunque; colori "tenui" con la stessa logica
   (verde a posto, ambra serve un'azione, rosso blocca, blu attesa di altri, grigio bozza/chiuso). */
.badge {
    display: inline-flex; align-items: center; gap: .25rem; vertical-align: middle;
    font-size: .75rem !important; font-weight: 600 !important; line-height: 1.1; letter-spacing: .01em;
    padding: .25rem .5rem; border-radius: .375rem; border: 1px solid transparent; white-space: nowrap;
}
.badge.bg-success   { background-color: #E5F1E6 !important; color: #1E5E22 !important; border-color: #BCD9BE; }
.badge.bg-warning   { background-color: #FCF1D9 !important; color: #7A5410 !important; border-color: #EFD39A; }
.badge.bg-danger    { background-color: #F8E2E2 !important; color: #8E1515 !important; border-color: #E8B4B4; }
.badge.bg-info      { background-color: #E2EEF5 !important; color: #22567A !important; border-color: #B4CFE1; }
.badge.bg-primary   { background-color: #DFECF2 !important; color: #003F5C !important; border-color: #A8C9D9; }
.badge.bg-secondary, .badge.bg-dark, .badge.bg-light
                    { background-color: #EEF1F3 !important; color: #46525B !important; border-color: #D3D9DD; }
#sidebar .badge.bg-warning { background-color: var(--px-ambra) !important; color: #1d1d1d !important; border-color: transparent; }

/* Pulsanti: gerarchia chiara.
   - primaria: piena blu (una per riquadro: Salva, Registra, Conferma);
   - creazione: piena ambra (+ Nuovo);
   - secondaria: contorno grigio, testo scuro (Annulla, Filtra, Excel, navigazione);
   - secondaria in evidenza: contorno blu tenue (azioni utili ma non principali);
   - distruttiva: rossa a contorno; piena solo nella finestra di conferma. */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; font-weight: 500; min-height: 2.375rem; }
/* Pulsanti piccoli (Excel, + Nuovo, filtri, azioni di riga): sempre la stessa misura, come in Clienti e dealer.
   L'altezza è fissa così non si allungano quando stanno accanto a elementi più alti. */
.btn-sm { height: 2rem; min-height: 2rem; font-size: .875rem; padding: 0 .65rem; white-space: nowrap; align-self: center; }
.btn-sm.btn-link.p-0 { height: auto; min-height: 0; padding: 0; }
.btn.p-0, .btn-link.p-0, .btn-close { min-height: 0; }
.btn-primary, .btn-cta, .btn-danger { font-weight: 600; }
.btn-outline-secondary {
    --cui-btn-color: #3A464F; --cui-btn-bg: var(--px-bg-card); --cui-btn-border-color: #C5CDD2;
    --cui-btn-hover-color: #24313A; --cui-btn-hover-bg: #EEF1F3; --cui-btn-hover-border-color: #AEB8BE;
    --cui-btn-active-color: #24313A; --cui-btn-active-bg: #E3E8EB; --cui-btn-active-border-color: #AEB8BE;
}
.btn-outline-primary {
    --cui-btn-color: var(--px-teal); --cui-btn-bg: var(--px-bg-card); --cui-btn-border-color: rgba(0, 88, 128, .45);
    --cui-btn-hover-color: var(--px-teal-scuro); --cui-btn-hover-bg: #E6F0F5; --cui-btn-hover-border-color: var(--px-teal);
    --cui-btn-active-color: var(--px-teal-scuro); --cui-btn-active-bg: #D6E7EF; --cui-btn-active-border-color: var(--px-teal);
}
.btn-outline-danger {
    --cui-btn-color: var(--px-danger); --cui-btn-bg: var(--px-bg-card); --cui-btn-border-color: rgba(183, 28, 28, .45);
    --cui-btn-hover-color: #fff; --cui-btn-hover-bg: var(--px-danger); --cui-btn-hover-border-color: var(--px-danger);
}

/* Altezze e spaziature uniformi di campi, menu a tendina e intestazioni */
.form-control, .form-select { min-height: 2.375rem; }
.form-control-sm, .form-select-sm { min-height: 2rem; font-size: .875rem; padding-top: .25rem; padding-bottom: .25rem; }
textarea.form-control { min-height: 0; }
.form-label { margin-bottom: .3rem; font-weight: 500; }
.card-header { padding: .65rem 1rem; font-size: .95rem; line-height: 1.4; }
.card-header.d-flex { min-height: 2.9rem; }
.card-body { padding: 1rem; }
.header h1 { line-height: 1.3; }

/* Conto Economico e Cash Flow: matrice mesi in colonna (come il Business Plan), colonna delle voci fissa */
.tabella-ce-cf { table-layout: auto; width: auto; font-size: .875rem; }
.tabella-ce-cf-scroll { scroll-snap-type: x mandatory; scroll-padding-left: 180px; }
.tabella-ce-cf thead th:not(:first-child) { scroll-snap-align: start; }
.tabella-ce-cf th:first-child, .tabella-ce-cf td:first-child {
    min-width: 170px; max-width: 210px; white-space: normal; position: sticky; left: 0; z-index: 1;
    background-color: var(--px-bg-card); box-shadow: 2px 0 4px -1px rgba(0, 0, 0, .15);
}
.tabella-ce-cf th.num, .tabella-ce-cf td.num { min-width: 100px; white-space: nowrap; }
.tabella-ce-cf .ce-cf-mese-header th { background-color: var(--px-teal-scuro); color: #fff; }
.tabella-ce-cf .ce-cf-sezione td { background-color: #E9EEF1; font-weight: 600; font-size: .78rem; letter-spacing: .03em; }
.tabella-ce-cf .ce-cf-totale td { font-weight: 600; border-top: 1px solid var(--px-bordo); }
.tabella-ce-cf .ce-cf-evidenziato td { font-weight: 700; background-color: #F1F5F7; }
.tabella-ce-cf .ce-cf-previsionale { font-style: italic; }
.tabella-ce-cf td.ce-cf-previsionale { color: var(--px-info) !important; }
/* in previsione i negativi restano riconoscibili: rosso, ma più tenue di quello dei mesi consuntivi */
.tabella-ce-cf td.ce-cf-previsionale.text-danger { color: #D46A6A !important; }
.tabella-ce-cf .ce-cf-previsionale-label { font-style: normal; font-weight: 400; font-size: .7rem; opacity: .85; }
@media print { @page { size: landscape; } .tabella-ce-cf-scroll { overflow: visible; } }

/* Quadro costi: barre per categoria */
.barra-categoria { height: 8px; background: #E9EEF1; border-radius: 4px; overflow: hidden; }
.barra-categoria > div { height: 100%; background: var(--px-teal); border-radius: 4px; }
.categoria-costo:hover .barra-categoria > div { background: var(--px-teal-hover); }
.kpi.rosso { border-left-color: var(--px-danger); }
