
    /* ══════════════════════════════════════════════════════════════════
       GRIGLIA PLANNING — RIGHE-CARD VETTORIALI  (rifacimento 10/8/26)
       La tabella e' border-collapse:SEPARATE, quindi border-radius e
       box-shadow NATIVI funzionano sulle celle: niente piu' gradienti
       dipinti a mano, mosaici radiali o fasce finte. Con border-spacing
       verticale il canale fra le righe e' spazio VERO, e le ombre delle
       card ci cadono dentro senza che nulla le copra. Tutto scala con lo
       zoom perche' lo disegna il browser, non io.
       ══════════════════════════════════════════════════════════════════ */
    .matrix-table {
        border-spacing: 0 6px !important;
        background: #E4E4E8;
    }
    .matrix-table thead th, .matrix-table tbody td { border: 0 !important; }

    /* via TUTTE le simulazioni accumulate */
    .matrix-table thead th.th-data::before, .matrix-table thead th.th-data::after,
    .matrix-table thead th.th-etic::before, .matrix-table thead th.th-etic::after,
    .matrix-table thead th.th-avail::before, .matrix-table thead th.th-avail::after,
    .matrix-table thead th.th-need::before, .matrix-table thead th.th-need::after,
    .matrix-table thead th.th-delta::before, .matrix-table thead th.th-delta::after,
    .matrix-table thead th.th-liberi::before, .matrix-table thead th.th-liberi::after,
    .matrix-table tr.riga-progetto > td::before, .matrix-table tr.riga-progetto > td::after,
    .matrix-table tr.riga-persona > td::before, .matrix-table tr.riga-persona > td::after,
    .matrix-table tr.riga-aggiungi > td::before, .matrix-table tr.riga-aggiungi > td::after {
        content: none !important;
    }

    /* ── carta e ombra: una regola per tutte le righe-card ── */
    .matrix-table thead th.th-data, .matrix-table thead th.th-day, .matrix-table thead th.th-etic,
    .matrix-table thead th.th-avail, .matrix-table thead th.th-need,
    .matrix-table thead th.th-delta, .matrix-table thead th.th-liberi,
    .matrix-table tr.riga-progetto > td,
    .matrix-table tr.riga-persona > td, .matrix-table tr.riga-aggiungi > td {
        box-shadow: 0 2px 5px -1px rgba(8,24,37,0.26);
    }
    /* ── il canale della TESTATA viaggia con la card (10/8/26) ──
       Nel corpo il canale e' il fondo della tabella e scorre insieme alle
       righe: nessun problema. In testata no: le card sono sticky e il
       canale, restando indietro, diventa una FINESTRA da cui si vedono
       passare i progetti. La fascia se la porta dietro ognuna come
       seconda ombra opaca, alta quanto il border-spacing. L'ombra vera
       e' elencata PRIMA, quindi resta disegnata sopra la fascia. */
    .matrix-table thead th.th-data, .matrix-table thead th.th-day, .matrix-table thead th.th-etic,
    .matrix-table thead th.th-avail, .matrix-table thead th.th-need,
    .matrix-table thead th.th-delta, .matrix-table thead th.th-liberi,
    .matrix-table thead tr.month-header-row-plan th {
        box-shadow: 0 2px 5px -1px rgba(8,24,37,0.26), 0 6px 0 #E4E4E8;
    }
    /* ── L'ANGOLO TONDO E' UN BUCO: va tappato (10/8/26) ──
       Dove la prima cella si arrotonda, la cella NON dipinge: quel mezzaluna
       resta trasparente e, appena la griglia scorre, ci si vedono passare
       dentro le celle dei giorni della STESSA riga (scure sui totali,
       bianche sui progetti). Risultato: angolo che sembra dritto. A pagina
       appena costruita lo scorrimento e' a zero, non c'e' niente sotto e
       l'angolo sembra perfetto — per questo il difetto compariva solo a
       caricamento finito.
       Lo tappa un'ombra spostata a SINISTRA: un'ombra esterna dipinge solo
       fuori dal box, cioe' ESATTAMENTE nella mezzaluna. Il resto della copia
       finisce oltre il bordo dell'area e lo taglia il contenitore.
       -14px (> del raggio 12) e 1px di allargamento coprono anche la prima
       riga di pixel, dove una copia non allargata lascia un filo.
       NON usare questo trucco per fare l'aria dal bordo: li' la copia
       resterebbe visibile e affiorerebbe come uno scalino (provato e
       buttato). L'aria e' il bordo del contenitore, in fondo al file. */
    .matrix-table thead th.th-data, .matrix-table thead th.th-etic.m-col-1,
    .matrix-table thead th.th-avail.m-col-1, .matrix-table thead th.th-need.m-col-1,
    .matrix-table thead th.th-delta.m-col-1, .matrix-table thead th.th-liberi.m-col-1 {
        box-shadow: 0 2px 5px -1px rgba(8,24,37,0.26), 0 6px 0 #E4E4E8,
                    -14px 0 0 1px #E4E4E8;
    }
    .matrix-table tr.riga-progetto > td.m-col-1 {
        box-shadow: 0 2px 5px -1px rgba(8,24,37,0.26), -14px 0 0 1px #E4E4E8;
    }
    /* selettori ALMENO specifici quanto i vecchi (tr:nth-child(2) th.th-day),
       o i gradienti-fascia di prima riaffiorano: erano la 'trasparenza' e
       la divisione in due della riga DATA */
    .matrix-table thead tr th.th-data, .matrix-table thead tr th.th-etic,
    .matrix-table thead tr th.th-etic.m-col-1, .matrix-table thead tr th.th-etic.m-col-2,
    .matrix-table thead tr th.th-etic.m-col-3, .matrix-table thead tr:nth-child(2) th.th-day {
        background: #FBFBFD !important;
    }
    /* la riga dei MESI non e' una card: e' etichettatura sul fondo grigio.
       Card e' solo la linguetta MESE / ANNO. */
    /* la riga dei mesi ha la stessa carta della sua etichetta MESE / ANNO:
       e' una fascia unica, non due materiali diversi */
    .matrix-table thead tr.month-header-row-plan th {
        background: #FBFBFD !important; box-shadow: none !important;
        border: 0 !important; color: var(--hig-testo3) !important;
    }
    /* MESE / ANNO: (3,3) con !important, quindi e' QUESTA la regola che
       decide l'ombra della linguetta — non quella piu' in basso, che e'
       solo (2,2). Se il tappo dell'angolo manca qui, l'angolo alto a
       sinistra torna dritto appena la griglia scorre (Massimo 10/8/26). */
    .matrix-table thead tr.month-header-row-plan th.th-mese-lab {
        background: #FBFBFD !important;
        box-shadow: 0 2px 5px -1px rgba(8,24,37,0.26), 0 6px 0 #E4E4E8,
                    -14px 0 0 1px #E4E4E8 !important;
    }
    .matrix-table thead th.th-avail, .matrix-table thead th.th-need,
    .matrix-table thead th.th-delta, .matrix-table thead th.th-liberi,
    .matrix-table thead th.th-avail.m-col-1, .matrix-table thead th.th-need.m-col-1,
    .matrix-table thead th.th-delta.m-col-1, .matrix-table thead th.th-liberi.m-col-1,
    .matrix-table thead th.th-avail.m-col-2, .matrix-table thead th.th-need.m-col-2,
    .matrix-table thead th.th-delta.m-col-2, .matrix-table thead th.th-liberi.m-col-2,
    .matrix-table thead th.th-avail.m-col-3, .matrix-table thead th.th-need.m-col-3,
    .matrix-table thead th.th-delta.m-col-3, .matrix-table thead th.th-liberi.m-col-3 {
        background: #143646 !important;
    }
    .matrix-table tr.riga-progetto > td, .matrix-table tr.riga-progetto > td.m-col-1,
    .matrix-table tr.riga-progetto > td.m-col-2, .matrix-table tr.riga-progetto > td.m-col-3 {
        background: #fff !important;
    }
    .matrix-table tr.riga-progetto.aperta > td, .matrix-table tr.riga-progetto.aperta > td.m-col-1,
    .matrix-table tr.riga-progetto.aperta > td.m-col-2, .matrix-table tr.riga-progetto.aperta > td.m-col-3 {
        background: #E9EFF3 !important;
    }
    .matrix-table tr.riga-persona > td, .matrix-table tr.riga-persona > td.m-col-1,
    .matrix-table tr.riga-persona > td.m-col-2, .matrix-table tr.riga-aggiungi > td {
        background: #FCFBFA !important;
    }
    /* festivi e OGGI tornano tinte semplici, sopra la carta */
    .matrix-table thead th.col-festa:not(.oggi-col), .matrix-table td.col-festa:not(.oggi-col) {
        background: #F0EDEB !important;
    }
    .matrix-table thead th.th-avail.col-festa:not(.oggi-col), .matrix-table thead th.th-need.col-festa:not(.oggi-col),
    .matrix-table thead th.th-delta.col-festa:not(.oggi-col), .matrix-table thead th.th-liberi.col-festa:not(.oggi-col) {
        background: #1D4457 !important;
    }
    .matrix-table thead th.th-avail.oggi-col, .matrix-table thead th.th-need.oggi-col,
    .matrix-table thead th.th-delta.oggi-col, .matrix-table thead th.th-liberi.oggi-col {
        background: #2E5065 !important;
    }

    /* ── angoli: la prima cella di ogni riga apre la card ── */
    .matrix-table thead th.th-data, .matrix-table thead th.th-etic.m-col-1,
    .matrix-table thead th.th-avail.m-col-1, .matrix-table thead th.th-need.m-col-1,
    .matrix-table thead th.th-delta.m-col-1, .matrix-table thead th.th-liberi.m-col-1,
    .matrix-table tr.riga-progetto > td.m-col-1 {
        border-radius: 12px 0 0 12px;
    }

    /* ── BLOCCO APERTO: le righe della squadra sono una card sola ──
       lo spread verticale della stessa carta riempie il canale fra loro,
       cosi' sembrano un pezzo unico pur restando righe separate. */
    .matrix-table tr.riga-persona > td.m-col-2, .matrix-table tr.riga-persona > td:not(.m-col-1),
    .matrix-table tr.riga-aggiungi > td:not(.m-col-1):not(.m-col-2) {
        box-shadow: 0 -4px 0 #FCFBFA, 0 4px 0 #FCFBFA;
    }
    .matrix-table tr.riga-persona > td.m-col-1, .matrix-table tr.riga-aggiungi > td.m-col-1 {
        background: #E4E4E8 !important; box-shadow: none !important;
    }
    /* il corpo rientra: parte dalla colonna dei nomi */
    
    
    .matrix-table tr.riga-persona:has(+ tr.riga-aggiungi) > td.m-col-2 {
        border-bottom-left-radius: 12px;
        box-shadow: 0 -4px 0 #FCFBFA, 0 4px 8px -2px rgba(8,24,37,0.26);
    }
    .matrix-table tr.riga-persona:has(+ tr.riga-aggiungi) > td:not(.m-col-1):not(.m-col-2) {
        box-shadow: 0 -4px 0 #FCFBFA, 0 4px 8px -2px rgba(8,24,37,0.26);
    }
    /* il piede: solo la linguetta del bottone, sollevata sul canale */
    .matrix-table tr.riga-aggiungi > td, .matrix-table tr.riga-aggiungi > td.m-col-2 {
        background: #E4E4E8 !important; box-shadow: none !important;
    }
    
    /* l'ombra del tetto cade sulla squadra sotto */
    .matrix-table tr.riga-progetto.aperta > td {
        box-shadow: 0 4px 8px -2px rgba(8,24,37,0.30);
        position: relative; z-index: 3;
    }
    /* anche il tetto ha l'angolo tondo da tappare */
    .matrix-table tr.riga-progetto.aperta > td.m-col-1 {
        box-shadow: 0 4px 8px -2px rgba(8,24,37,0.30), -14px 0 0 1px #E4E4E8;
    }

    /* ── ARIA DAL BORDO (2mm): le card non toccano il bordo dell'area ──
       E' un BORDO DEL CONTENITORE, non un margine della tabella. Il bordo
       sta FUORI dall'area che scorre: le celle non ci possono passare sotto
       per costruzione, quindi non serve nessuna fascia opaca a coprirle.
       Con il margine della tabella invece la colonnina restava dentro l'area
       di scorrimento ed era una finestra: si vedeva spuntare la coda delle
       date, e ogni tentativo di tapparla con un'ombra lasciava uno scalino.
       Perche' funzioni, le colonne fisse si attestano a left 0/108/240:
       il bordo sposta gia' l'origine dell'area di 8px. */
    /* !important: il contenitore ha la utility .bg-white di Bootstrap, che
       e' gia' !important e vincerebbe lasciando un bordino bianco */
    .drag-scroll:has(.matrix-table) {
        background: #E4E4E8 !important;
        border-left: 8px solid #E4E4E8;
    }
    /* GLI SCOSTAMENTI DELLE COLONNE FISSE NON STANNO QUI (10/8/26).
       '.matrix-table .m-col-N' e' (2,0) e perde contro
       '.matrix-table td.m-col-N' (2,1) piu' su nel file: le vecchie
       dichiarazioni left:128/248 qui in fondo non hanno MAI avuto effetto,
       e per giunta erano calcolate su larghezze 120/120 che non esistono
       (le vere sono 108/132/96). Unica sorgente: la regola 'Geometria
       dichiarata PER COSTRUZIONE', dove ora leggi left 0 / 108 / 240. */
    .matrix-table thead th.th-data,
    .matrix-table thead th.th-mese-lab { left: 0 !important; }
    /* il campo unico MESE / ANNO: linguetta come tutte le altre */
    .matrix-table thead th.th-mese-lab {
        position: sticky; z-index: 30 !important;
        min-width: 336px; max-width: 336px; width: 336px;
        text-align: center !important; vertical-align: middle;
        font-size: 0.68rem; font-weight: 700; letter-spacing: 1.2px;
        color: var(--hig-testo3) !important;
        background: #FBFBFD !important;
        border-radius: 12px 0 0 12px;
        box-shadow: 0 2px 5px -1px rgba(8,24,37,0.26), 0 6px 0 #E4E4E8,
                    -14px 0 0 1px #E4E4E8;
    }

    /* ── OGGI nel corpo: tinta, non anello (10/8/26) ──
       l'anello per cella spezzava la card. Nel corpo la colonna di oggi si
       riconosce da un velo di tint PIENO (mai trasparente: sulle sticky
       comporrebbe col bianco della pagina), in testata e' gia' tinta piena. */
    .matrix-table tr.riga-progetto > td.oggi-col { background: #EAF2F6 !important; }
    

    /* ── SEPARATORI NELLE QUATTRO RIGHE IN NEGATIVO (Massimo 10/8/26) ──
       Senza, i numeri di giorni diversi si leggevano come una fila unica e
       non si capiva quale valore stesse sotto quale colonna. Un filo chiaro
       inset sul fianco destro: nelle righe-card i bordi non si usano
       (border: 0 !important li spegne), quindi il filo e' un'ombra interna.
       I :not() servono a NON separare l'etichetta dalla freccia nelle tre
       colonne fisse, dove una riga in mezzo non vuol dire niente. */
    .matrix-table thead th.th-avail:not(.m-col-1):not(.m-col-2):not(.m-col-3),
    .matrix-table thead th.th-need:not(.m-col-1):not(.m-col-2):not(.m-col-3),
    .matrix-table thead th.th-delta:not(.m-col-1):not(.m-col-2):not(.m-col-3),
    .matrix-table thead th.th-liberi:not(.m-col-1):not(.m-col-2):not(.m-col-3) {
        box-shadow: 0 2px 5px -1px rgba(8,24,37,0.26), 0 6px 0 #E4E4E8,
                    inset -1px 0 0 rgba(255,255,255,0.11);
    }

    /* ══════════════════════════════════════════════════════════════════
       CORPO DELLE PERSONE: UNA CARD SOLA, SOSPESA COME LE ALTRE
       (Massimo 10/8/26)
       Le righe della squadra devono galleggiare sullo STESSO fondo delle
       altre card. La colonna cliente resta canale puro — niente striscia
       di un altro colore che continua la riga a sinistra — e il corpo e'
       una carta sola che parte dal bordo dei nomi.
       ══════════════════════════════════════════════════════════════════ */
    /* La prima riga perdeva la saldatura: la regola dell'ombra del tetto
       (piu' su nel file, (5,3)) sostituiva TUTTA la box-shadow, e fra la
       prima e la seconda persona restava aperto un canale grigio. Qui
       l'ombra del tetto e la saldatura convivono. */
    .matrix-table tr.riga-progetto.aperta + tr.riga-persona > td:not(.m-col-1) {
        box-shadow: 0 4px 0 #FCFBFA, inset 0 7px 6px -4px rgba(8,24,37,0.18);
    }
    .matrix-table tr.riga-progetto.aperta + tr.riga-persona > td.m-col-2 {
        border-top-left-radius: 12px;
    }
    /* squadra di una persona sola: la stessa riga apre e chiude la carta */
    

    /* IL PIEDE E' UNA LINGUETTA, NON UN BOTTONE APPOGGIATO: stessa carta
       del corpo, angoli bassi tondi (gli alti no, continua il corpo) e la
       sua ombra. Sale di 12px per chiudere il canale e i 4px di padding
       della riga, cosi' pende dal corpo invece di galleggiare staccata.
       overflow VISIBLE sulla cella, o la m-col-2 la ghigliottina. */
    /* LA COLONNA CLIENTE RESTA GRIGIA ANCHE A GRIGLIA SCORSA.
       La saldatura del corpo (0 ±4px di carta) sta sulle celle dei GIORNI,
       che scorrendo finiscono SOTTO la colonna fissa: le loro copie di
       carta dipingono il canale per tutta la larghezza, colonna cliente
       compresa, e a sinistra restavano blocchi grigi separati da fessure
       color carta. A scorrimento zero non si vede niente, per questo era
       sfuggito. La m-col-1 e' sticky (z 22) e i giorni no: la sua fascia
       di canale vince e ridipinge grigio (Massimo 10/8/26). */
    .matrix-table tr.riga-persona > td.m-col-1,
    .matrix-table tr.riga-aggiungi > td.m-col-1 {
        box-shadow: 0 -6px 0 #E4E4E8, 0 6px 0 #E4E4E8 !important;
    }
    /* separatori fra i valori delle persone, come nelle righe in negativo.
       Qui e' un BORDO e non un'ombra interna: le celle hanno gia' la
       saldatura nella box-shadow e non si potrebbe allungare la lista
       senza riscriverla in tutte le varianti. Con box-sizing: border-box
       il bordo sta dentro i 55px, quindi le colonne non si spostano. */
    .matrix-table tr.riga-persona:not(.riga-aggiungi) > td.cell-asseg {
        border-right: 1px solid rgba(60,60,67,0.10) !important;
    }
    
    .matrix-table tr.riga-aggiungi .btn-assegna {
        background: #FCFBFA; border: 0 !important;
        border-radius: 0 0 12px 12px;
        padding: 4px 18px; margin-left: 26px;
        box-shadow: 0 3px 6px -2px rgba(8,24,37,0.30);
        position: relative; top: -12px; z-index: 2;
        color: var(--dan-primary); font-weight: 600;
        transition: background .15s, box-shadow .15s;
    }
    /* il vecchio '.btn-assegna:hover' (2,0) era diventato muto: la regola
       qui sopra e' (3,2) e vinceva anche da non-hover. La linguetta il suo
       ritorno al passaggio del mouse lo deve avere (10/8/26). */
    .matrix-table tr.riga-aggiungi .btn-assegna:hover {
        background: #fff;
        box-shadow: 0 4px 9px -2px rgba(8,24,37,0.34);
    }

    /* ══════════════════════════════════════════════════════════════════
       SCHEDA PLANNING: UNO SFONDO SOLO, TRE CARD SOSPESE (Massimo 10/8/26)
       Il grigio del canale non e' piu' solo dentro la griglia: e' il fondo
       DELLA SCHEDA. Sopra ci galleggiano il Bilancio Operativo, la testata
       della pianificazione e le righe-card, tutti con lo stesso raggio e la
       stessa ombra. Prima le due testate erano riquadri squadrati appoggiati
       al bordo e la griglia sotto sembrava di un'altra applicazione.
       La testata della pianificazione e' STACCATA dalla sua griglia: non e'
       piu' il cappello di un contenitore, e' una card come le altre.
       ══════════════════════════════════════════════════════════════════ */
    #view-planning { background: #E4E4E8; border-radius: 16px; padding: 8px 0; }
    #view-planning .row.mb-4 { margin-bottom: 8px !important; }
    /* border: 0 anche qui, o resta il filo. '.card' (riga 610) dichiara
       'border: 0.5px solid ... !important' e il template mette inline
       'border-top-color: var(--dan-primary) !important': messi insieme
       fanno un filo PETROLIO da mezzo pixel sopra la testata. Si vede
       appena, e non deve vedersi (Massimo 10/8/26). */
    #view-planning #card-pianificazione {
        margin-bottom: 0 !important; background: transparent !important;
        border: 0 !important;
    }
    #view-planning #card-pianificazione > .card-body { background: transparent !important; }
    /* gli 8px di margine allineano le due card al filo delle righe-card,
       che rientrano dello stesso passo (border-left del contenitore) */
    #view-planning #card-bilancio-plan,
    #view-planning #header-pianificazione {
        border-radius: 12px; border: 0 !important;
        box-shadow: 0 2px 5px -1px rgba(8,24,37,0.26);
        margin-left: 8px; margin-right: 8px;
        background: #fff !important;
    }
    /* NIENTE overflow:hidden sulla card del grafico: ritagliava il fondo
       dell'area di scorrimento e con esso l'asse delle ascisse. Gli angoli
       li arrotondano le due meta' per conto loro (Massimo 10/8/26). */
    #view-planning #card-bilancio-plan > .card-header,
    #view-planning #card-bilancio-plan > .card-body,
    #view-planning #card-bilancio-plan .drag-scroll { background: #fff !important; }
    #view-planning #card-bilancio-plan > .card-header {
        border-bottom: 0 !important; border-radius: 12px 12px 0 0;
    }
    /* il raggio va anche sull'area di scorrimento e non solo sul card-body:
       la .drag-scroll e' bianca e opaca e, senza, copriva lo spigolo tondo
       della card. Il suo overflow ritaglia anche la colonna sticky delle
       ordinate, che e' bianca pure lei (Massimo 10/8/26). */
    #view-planning #card-bilancio-plan > .card-body,
    #view-planning #card-bilancio-plan > .card-body > .drag-scroll {
        border-radius: 0 0 12px 12px;
    }
    #view-planning #header-pianificazione { border-bottom: 0 !important; margin-bottom: 8px; }

/* Margini di sicurezza per intestazioni, contatori e schede del planning. */
#sub-paghe input[type="number"] { min-width: 6.5rem; }
.asg-tess .badge-dentro {
    max-width: calc(100% - 16px);
    white-space: normal;
    line-height: 1.4;
}
.asg-tess:has(.badge-dentro) { padding-top: 36px; }
.asg-tess:has(.asg-badge-lib) { padding-top: 56px; }
.asg-badge-lib { top: 32px; max-width: calc(100% - 16px); white-space: normal; }
.asg-tess:hover, .asg-tess-viva { transform: translateY(-2px) !important; }
.card-header.d-flex { flex-wrap: wrap; gap: .5rem; }
.card-header.d-flex > span { min-width: 0; max-width: 100%; overflow-wrap: anywhere; }

/* Note spese: descrizioni complete e comandi dentro la propria card.
   Regole circoscritte: le tabelle calendario/planning non cambiano. */
#view-spese .card-header.d-flex {
    flex-wrap: wrap;
    gap: 0.5rem;
}
#view-spese .card-header > span {
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
}
#view-spese .card-header > .badge {
    white-space: normal;
    text-align: left;
    line-height: 1.45;
}
#view-spese .table {
    min-width: 820px;
}
#view-spese .table td.text-truncate {
    min-width: 150px;
    white-space: normal;
    overflow-wrap: anywhere;
    text-overflow: clip;
}
#view-spese .table td:nth-child(2),
#view-spese .table td:nth-child(3) {
    min-width: 110px;
    overflow-wrap: anywhere;
}
#view-spese .table td:nth-child(5) {
    white-space: nowrap;
}
#view-miespese .card.flex-row {
    gap: 1rem;
}
#view-miespese .card.flex-row > div:first-child {
    min-width: 0;
    overflow-wrap: anywhere;
}
#view-miespese .card.flex-row > .text-end {
    flex-shrink: 0;
    white-space: nowrap;
}
@media (max-width: 480px) {
    #view-miespese form > .row > [class^="col-"] {
        width: 100%;
    }
    #view-spese .card-body .btn,
    #sub-paghe .card-body .btn {
        white-space: normal;
        overflow-wrap: anywhere;
    }
    #view-miespese .card.flex-row {
        flex-wrap: wrap;
    }
    #view-miespese .card.flex-row > div:first-child {
        flex: 1 1 100%;
    }
    #view-miespese .card.flex-row > .text-end {
        margin-left: auto;
    }
}

/* Stile comune: superfici, righe sospese e giorni separati.
   Questi valori sono condivisi; gli stati operativi mantengono i loro colori. */
:root {
    --dan-superficie: #fff;
    --dan-fondo-tabella: #edf1f4;
    --dan-raggio-card: 16px;
    --dan-ombra-card: 0 3px 10px rgba(25, 48, 65, .08);
    --dan-ombra-riga: 0 2px 4px rgba(25, 48, 65, .10);
}
.card, .dan-card {
    border-radius: var(--dan-raggio-card) !important;
    border: 1px solid #dfe6eb !important;
    box-shadow: var(--dan-ombra-card) !important;
    background-color: var(--dan-superficie);
}
.card:hover { box-shadow: var(--dan-ombra-card) !important; }
.card > .card-header:first-child {
    border-radius: 15px 15px 0 0 !important;
    padding: 16px 20px !important;
    background: #fff !important;
}
.card > .card-body:last-child, .card > .card-footer:last-child {
    border-radius: 0 0 15px 15px;
}
.dan-tabella {
    padding: 8px;
    background: var(--dan-fondo-tabella);
    border-radius: 14px;
    box-shadow: var(--dan-ombra-card);
}
/* Conserva la struttura semantica delle tabelle e la loro area di scorrimento. */
.table {
    border-collapse: separate;
    border-spacing: 0 8px;
    background: var(--dan-fondo-tabella);
    --bs-table-bg: #fff;
    --bs-table-hover-bg: #f4f8fa;
    --bs-table-striped-bg: #f7f9fb;
}
.table > :not(caption) > * > * {
    border-bottom: 0 !important;
    padding: 10px 12px;
    vertical-align: middle;
}
.table > thead > tr > * {
    color: #536370;
    font-size: .75rem;
    font-weight: 650;
    background: var(--dan-fondo-tabella);
    box-shadow: none;
}
.table > tbody > tr { filter: drop-shadow(0 2px 2px rgba(25, 48, 65, .10)); }
.table > tbody > tr > * { box-shadow: none; }
.table > tbody > tr > :first-child { border-radius: 10px 0 0 10px; }
.table > tbody > tr > :last-child { border-radius: 0 10px 10px 0; }
.table > tbody > tr > :only-child { border-radius: 10px; }
.table > tbody > tr:hover > *, .table > tbody > tr:focus-within > * {
    background-color: #f4f8fa;
    --bs-table-bg-state: #f4f8fa;
}
.dan-elenco-card {
    padding: 10px !important;
    gap: 8px;
    background: var(--dan-fondo-tabella) !important;
    border-radius: 0 0 15px 15px;
}
.dan-elenco-card > .list-group-item {
    border: 0 !important;
    border-radius: 10px !important;
    padding: 12px !important;
    background: #fff;
    box-shadow: var(--dan-ombra-riga);
}
.dan-elenco-card > .list-group-item:hover,
.dan-elenco-card > .list-group-item:focus-within { background: #f4f8fa; }
/* Il bordo trasparente crea il canale senza cambiare i 50px dei giorni
   o le coordinate delle colonne bloccate e dei grafici del planning. */
.table-cal { border-spacing: 0 7px !important; background: var(--dan-fondo-tabella); }
.table-cal th:not(.sticky-col), .table-cal td:not(.sticky-col),
.matrix-table thead tr th:not(.m-col-1):not(.m-col-2):not(.m-col-3):not([colspan]),
.matrix-table tbody tr td:not(.m-col-1):not(.m-col-2):not(.m-col-3) {
    border-right: 3px solid transparent !important;
    background-clip: padding-box !important;
}
.table-cal tbody tr > td {
    border-top: 0 !important;
    border-bottom: 0 !important;
    border-radius: 5px;
    box-shadow: var(--dan-ombra-riga);
}
.table-cal tr.tabellone-row > td:not(.sticky-col)::before,
.table-cal tr.tabellone-row > td.sticky-col::before,
.table-cal tr.tabellone-row > td.sticky-col::after { content: none !important; }
.table-cal tr.tabellone-row > td { border-top: 0 !important; }
.table-cal tbody tr > .sticky-col { border-radius: 10px 0 0 10px; }
.table-cal tr.tabellone-row > td.sticky-col { background: #fff !important; }
.table-cal .month-header-row + tr th.sticky-col { top: 33px !important; }
.table-cal tbody td.oggi-col {
    border-left: 0 !important;
    outline: 1px solid var(--dan-primary);
    outline-offset: -1px;
}
.table-cal .admin-cell:hover, .table-cal .user-cell:hover {
    transform: none;
    filter: brightness(.96);
    outline: 2px solid var(--dan-primary);
    outline-offset: -2px;
}
#strip-row-days, #strip-row-extra, #strip-row-perm {
    gap: 3px;
    background: var(--dan-fondo-tabella);
    padding: 3px;
}
#strip-row-days > div, #strip-row-extra > div, #strip-row-perm > div {
    border-right: 0 !important;
    border-radius: 5px;
    box-shadow: 0 1px 2px rgba(25,48,65,.08);
    background-color: #fff;
}
#strip-row-extra > div, #strip-row-perm > div { min-height: 28px; }
.dan-pagina-titolo { margin: 4px 0 24px; }
.dan-pagina-titolo h1 { font-size: 1.65rem; font-weight: 700; margin: 0 0 8px; }
.dan-pagina-titolo p { color: #657481; margin: 0; line-height: 1.5; }
#sub-paghe > .paghe-griglia {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px;
    margin: 0 0 28px;
}
.paghe-griglia > .col-md-6 { display: contents; }
.paghe-griglia > .col-md-6 > .card { min-width: 0; margin: 0 !important; }
.paghe-griglia .paghe-export { order: 1; }
.paghe-griglia .paghe-importa { order: 2; }
.paghe-griglia .paghe-chiusura { order: 3; }
.paghe-griglia .paghe-documento { order: 4; }
.paghe-griglia .paghe-secondario { order: 5; margin: 0 !important; }
#sub-paghe .paghe-griglia .card-body {
    padding: 20px !important;
    background: #fff !important;
    text-align: left !important;
}
#sub-paghe .paghe-griglia .card-header { color: #233d4b !important; }
#sub-paghe .paghe-griglia .form-control,
#sub-paghe .paghe-griglia .form-select {
    padding: 10px 12px;
    min-height: 44px;
    border-color: #ccd7df !important;
    color: #243d4b !important;
    font-weight: 500 !important;
    background: #fafcfd;
}
#sub-paghe .paghe-griglia .row { --bs-gutter-x: 12px; --bs-gutter-y: 10px; }
#sub-paghe .paghe-griglia .btn { min-height: 42px; padding: 10px 14px; white-space: normal; }
#sub-paghe .paghe-griglia .card-body > form > button:not(.btn-outline-success) {
    background: var(--dan-primary) !important;
    color: #fff !important;
    border: 1px solid var(--dan-primary) !important;
    box-shadow: none !important;
}
.paghe-descrizione { color: #657481; font-size: .85rem; line-height: 1.5; margin: 0 0 18px; }
#sub-paghe .dropzone-area { background: #f7fafc; border-color: #c6d3dc; padding: 24px 12px; }
.paghe-secondario .btn { border: 1px solid #ccd7df !important; background: #fff !important; }
@media (max-width: 767px) {
    #sub-paghe > .paghe-griglia { grid-template-columns: minmax(0, 1fr); gap: 20px; }
    .dan-pagina-titolo h1 { font-size: 1.4rem; }
    .card > .card-header:first-child { padding: 14px 16px !important; }
    .table > :not(caption) > * > * { padding: 9px 10px; }
}
@media print {
    .table { border-spacing: 0; background: #fff; }
    .table > tbody > tr { filter: none; }
    .table > tbody > tr > *, .card, .dan-card { box-shadow: none !important; }
}
.paghe-label { display: block; font-size: .75rem; font-weight: 600; color: #536370; margin-bottom: 6px; }
#sub-paghe .paghe-chiusura .card-body > button {
    background: var(--dan-primary) !important; color: #fff !important; border: 1px solid var(--dan-primary) !important;
}
body:has(#sub-paghe[style*="block"]) #hr-legenda,
body:has(#sub-anagrafica[style*="block"]) #hr-legenda { display: none !important; }
/* Arrotonda anche i contenitori interni che dipingono il fondo della card. */
.card > .drag-scroll:last-child,
.card > .card-body > .drag-scroll:last-child { border-radius: 0 0 15px 15px; }
.dan-persone-table { border-spacing: 3px 8px !important; background: var(--dan-fondo-tabella); }
.dan-persone-table tbody tr > * { border-bottom: 0 !important; border-radius: 8px; box-shadow: var(--dan-ombra-riga); }
.dan-persone-table thead tr > * { border-radius: 8px; }
#strip-row-extra > div[style*="background:transparent"],
#strip-row-perm > div[style*="background:transparent"] { background-color: #fff !important; }
#statino-griglia tbody tr { border-top: 0 !important; }
#statino-griglia th, #statino-griglia td { border-bottom: 0 !important; }
#statino-griglia th { border-right: 3px solid var(--dan-fondo-tabella) !important; }
.desktop-tabs { background: #e7edf1; }
.dan-card:not(.alert) { background-image: none !important; }
.metric-card { border-radius: 14px; box-shadow: var(--dan-ombra-card); }

/* Due livelli: la scheda sopra la pagina, le persone sopra la scheda.
   Il margine interno lascia liberi gli angoli e tutta l'ombra delle righe. */
#sub-anagrafica .dan-registro {
    border-color: #dfe6eb !important;
    box-shadow: 0 5px 16px rgba(25,48,65,.12) !important;
}
#sub-anagrafica .dan-registro-corpo {
    padding: 12px !important;
    background: #fff;
    border-radius: 0 0 15px 15px;
}
#sub-anagrafica .dan-registro .dan-elenco-card {
    margin: 0;
    border-radius: 12px !important;
    background: #f1f4f7 !important;
    padding: 12px !important;
    gap: 10px;
}
#sub-anagrafica .dan-registro .list-group-item {
    box-shadow: 0 3px 6px rgba(25,48,65,.13);
}

#danAggiungiRisorsa[hidden], #danRisorsaCol:has(> [hidden]) { display: none !important; }
#sub-anagrafica:has(#danAggiungiRisorsa[hidden]) #danRegistroCol { width: 100%; }
#sub-anagrafica .dan-risorsa { box-shadow: 0 5px 16px rgba(25,48,65,.12) !important; }
#sub-anagrafica .dan-risorsa > .card-body { background: #fff !important; border-radius: 0 0 15px 15px; }
#danApriRisorsa { white-space: nowrap; }
.dan-registro .list-group-item > .d-flex { gap: 12px; }
.dan-registro .list-group-item .text-truncate {
    max-width: none !important; min-width: 0; flex: 1;
    display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
    white-space: normal; overflow: visible;
}
.dan-registro .list-group-item .text-truncate b { overflow-wrap: anywhere; }
.dan-registro .list-group-item > .d-flex > .d-flex { flex-shrink: 0; }

/* Dashboard: stessa cornice e stessi margini del registro. */
body:has(#sub-dashboard[style*="block"]) #hr-legenda { display: none !important; }
.dan-dashboard-card { border: 1px solid #dfe6eb !important; box-shadow: 0 5px 16px rgba(25,48,65,.12) !important; }
.dan-bilancio-corpo { padding: 20px !important; background: #fff; border-radius: 0 0 15px 15px; }
.dan-bilancio-toolbar, .dan-bilancio-legenda, .dan-bilancio-navigazione, .dan-bilancio-note { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.dan-bilancio-toolbar { justify-content: space-between; margin-bottom: 14px; }
.dan-bilancio-navigazione { gap: 6px; }
.dan-bilancio-legenda { font-size: .85rem; color: #334e5c; }
.dan-bilancio-legenda span, .dan-bilancio-note span { display: inline-flex; align-items: center; gap: 7px; }
.dan-bilancio-legenda i { width: 22px; display: inline-block; border-top: 3px solid #095373; }
.dan-bilancio-legenda .dan-linea-fabbisogno { border-color: #b87912; border-top-style: dashed; }
.dan-bilancio-periodo { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px; color: #657481; font-size: .75rem; }
#bilancioPeriodo { font-weight: 600; color: #334e5c; }
.dan-bilancio-grafico { position: relative; height: 290px; margin: 8px 0 16px; }
.dan-bilancio-note { font-size: .75rem; color: #657481; }
.dan-bilancio-note i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; }
.dan-margine { background: #dfefe6; } .dan-scoperto { background: #f6e0e0; } .dan-festivo { background: #edf1f4; }
.dan-richieste-corpo { padding: 12px !important; background: #fff; border-radius: 0 0 15px 15px; }
.dan-richieste-tabella { padding: 4px 12px 12px; border-radius: 12px; background: #f1f4f7; }
.dan-richieste-tabella .table { background: transparent; }
@media (max-width: 767px) {
    .dan-bilancio-corpo { padding: 16px !important; }
    .dan-bilancio-grafico { height: 260px; }
}

/* Il grafico del planning conserva le colonne sincronizzate con la matrice. */
.dan-plan-bilancio-toolbar { padding: 16px 20px 4px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
#card-bilancio-plan > .card-body { padding-top: 8px !important; }
#card-bilancio-plan .drag-scroll { border-left: 8px solid transparent; border-right: 8px solid transparent; }
.dan-plan-bilancio-asse { position: relative; }
.dan-plan-asse-canvas { position: absolute; right: 0; top: 0; bottom: 0; width: 64px; }
.dan-plan-bilancio-guida { display: flex; flex-direction: column; gap: 14px; margin: 30px 78px 0 12px; font-size: .75rem; line-height: 1.5; color: #657481; }
.dan-plan-bilancio-guida strong { color: #334e5c; font-size: .85rem; }
.dan-plan-bilancio-note { padding: 16px 20px 20px; }

.dan-plan-bilancio-guida { white-space: normal; overflow-wrap: anywhere; }

body:has(#view-planning[style*="block"]) #hr-legenda { display: none !important; }

/* Recupero degli orari a portata di mano nella pagina Oggi. */
.dan-recupero-timbratura { display: flex; align-items: center; gap: 14px; margin: 20px 0 28px; text-align: left; }
.dan-recupero-icona { width: 44px; height: 44px; flex-shrink: 0; border-radius: 12px; display: grid; place-items: center; background: #edf4f7; color: #095373; font-size: 1.3rem; }
.dan-recupero-testo { flex: 1; min-width: 0; }
.dan-recupero-testo h2 { font-size: 1rem; font-weight: 700; margin: 0 0 5px; }
.dan-recupero-testo p { font-size: .85rem; color: #657481; margin: 0; }
.dan-recupero-timbratura .btn { min-height: 44px; white-space: nowrap; }
#userTimbraModal .modal-dialog { max-width: 420px; }
#userTimbraModal .modal-content { padding: 24px !important; }
#userTimbraModal .form-control { min-height: 48px; font-size: 16px; }
#userTimbraModal .btn { min-height: 44px; white-space: normal; }
#userTimbraModal .tm-interval-row { padding: 12px 8px; margin: 0 0 10px; background: #f1f4f7; border-radius: 12px; }
#userTimbraModal .tm-interval-row input { padding: 8px 4px; }
@media (max-width: 767px) {
    .dan-recupero-timbratura { display: grid; grid-template-columns: 44px minmax(0,1fr); padding: 16px; }
    .dan-recupero-timbratura > .btn { grid-column: 1 / -1; width: 100%; }
    .modal .modal-dialog { width: calc(100% - 24px); max-width: calc(100% - 24px); min-width: 0; margin: 12px auto; }
    .modal .modal-content { width: 100%; max-width: 100%; min-width: 0; overflow-wrap: anywhere; }
    .modal .modal-content form, .modal .modal-body, .modal .row > * { min-width: 0; }
    .modal input, .modal select, .modal textarea { min-width: 0; max-width: 100%; box-sizing: border-box; }
    #userTimbraModal .modal-dialog { min-height: calc(100% - 24px); }
    #userTimbraModal .modal-content { max-height: calc(100dvh - 24px); overflow-y: auto; padding: 20px !important; }
    #userTimbraModal .modal-content > .btn-close { min-width: 44px; min-height: 44px; margin: 4px !important; background-size: 12px; }
    #tab-home > .dan-card:first-child { padding: 20px 16px; }
    #tab-home #live-clock { margin-bottom: 18px !important; }
    #tab-home .btn-timbra { min-height: 64px; padding: 12px 8px; font-size: 1rem; }
}

.dan-bottom-nav button.nav-item-dan { border: 0; background: transparent; font-family: inherit; min-height: 56px; }
.dan-bottom-nav button.nav-item-dan:focus-visible { outline: 2px solid var(--dan-primary); outline-offset: -4px; border-radius: 8px; }

#userTimbraModal #tm_titolo { text-align: left; padding-right: 32px; font-size: 1.1rem; line-height: 1.4; }

/* Il capacity planning si consulta soltanto da desktop. */
@media (max-width: 767px) {
    #view-planning, #tab-colleghi,
    #btn-tab-planning, [data-sb="planning"],
    .desktop-tab-btn[data-tab="colleghi"], .dan-bottom-nav [data-tab="colleghi"] { display: none !important; }
}

/* Occupazione complessiva e card dei progetti: stesso calendario, gerarchia più leggibile. */
.dan-occupazione {padding:24px; border-bottom:1px solid #e8edf1;}
.dan-occupazione-principale {display:flex;align-items:center;gap:20px;}
.dan-occupazione-anello {width:86px;height:86px;flex-shrink:0;border-radius:50%;background:conic-gradient(#095373 var(--occupazione),#edf1f4 0);display:grid;place-items:center;position:relative;}
.dan-occupazione-anello::before {content:'';position:absolute;inset:9px;background:white;border-radius:50%;}
.dan-occupazione-anello strong {position:relative;font-size:24px;color:#095373;}
.dan-occupazione-principale h3 {font-size:18px;margin:0 0 6px;}
.dan-occupazione-principale p {margin:0 0 4px;font-weight:600;}
.dan-occupazione-principale small,.dan-occupazione-spiegazione {color:#647582;}
.dan-occupazione-totali {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:22px 0 16px;}
.dan-occupazione-totali > div {background:#f6f9fb;border:1px solid #e6edf2;border-radius:14px;padding:16px 18px;box-shadow:0 3px 9px rgba(21,47,63,.05);}
.dan-occupazione-totali dt {font-size:12px;color:#647582;margin-bottom:6px;}
.dan-occupazione-totali dd {font-size:25px;font-weight:700;margin:0;color:#095373;}
.dan-occupazione-totali dd small {font-size:11px;display:block;color:#647582;font-weight:400;margin-top:3px;}
.dan-occupazione-totali .dan-occupazione-liberi dd {color:#248058;}
.dan-occupazione-totali .dan-occupazione-scoperti dd {color:#b87912;}
.dan-occupazione-spiegazione {font-size:12px;line-height:1.6;margin:0;max-width:1000px;}
.dan-linea-capacita {border-top:2px solid #9aaeb9;}
.dan-linea-impegno {border-top:3px solid #095373;}
#card-pianificazione .matrix-table tr.riga-progetto > td {height:76px;vertical-align:middle;box-shadow:0 4px 8px -4px rgba(21,47,63,.2);}
#card-pianificazione .matrix-table tr.riga-progetto > td.m-col-1 {white-space:normal;font-size:11px;line-height:1.5;padding:10px 8px;border-radius:14px 0 0 14px;box-shadow:0 4px 8px -4px rgba(21,47,63,.2),-16px 0 0 1px #e4e4e8;}
#card-pianificazione .matrix-table tr.riga-progetto > td.m-col-1 > span {align-items:flex-start!important;}
#card-pianificazione .matrix-table tr.riga-progetto > td.m-col-2 {white-space:normal;padding:12px 8px;line-height:1.4;font-size:12px;overflow:visible;}
.dan-progetto-nome {display:block;font-weight:700;overflow-wrap:anywhere;}
.dan-progetto-invito {display:block;font-size:10px;color:#647582;margin-top:7px;font-weight:400;}
#card-pianificazione .matrix-table tr.riga-progetto > td:last-child {border-radius:0 14px 14px 0;}
#card-pianificazione .matrix-table tr.riga-progetto:hover > td:not(.oggi-col):not(.cell-fte-we):not(.col-festa) {background:#f5f9fc!important;}
#card-pianificazione .matrix-table tr.riga-progetto > td.cell-fte .val-text {font-size:12px;}
@media (max-width:1100px) {.dan-occupazione-totali {gap:10px;}.dan-occupazione-totali > div {padding:12px;}}

.dan-bilancio-legenda .dan-linea-capacita {border-color:#095373;border-top-width:2px;}
.dan-impegno-area {background:rgba(9,83,115,.12);}

/* Gantt: card orizzontali, giorni separati e dettagli senza aprire moduli. */
#planGantt[hidden] {display:none!important;}
.dan-gantt-header {display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 24px!important;flex-wrap:wrap;}
.dan-gantt-header h2 {font-size:19px;margin:0 0 4px;}
.dan-gantt-header p {font-size:12px;color:#647582;margin:0;}
.dan-gantt-controls {display:flex;gap:8px;align-items:center;}
.dan-gantt-controls select {width:100px;}
.dan-gantt-toolbar {display:flex;justify-content:space-between;align-items:center;gap:20px;padding:16px 24px 8px;}
.dan-gantt-toolbar input {width:250px;}
.dan-gantt-toolbar strong {font-size:13px;color:#095373;}
.dan-gantt-legend {display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:8px 24px 18px;font-size:11px;color:#647582;}
.dan-gantt-legend span {display:inline-flex;align-items:center;gap:6px;}
.dan-gantt-legend i {display:inline-block;width:13px;height:13px;border-radius:3px;}
.dan-gantt-key-demand {background:#e8eef3;border:1px solid #b8cbd5;}
.dan-gantt-key-uncovered {background:repeating-linear-gradient(135deg,#f9d9d8 0 2px,#fff1f0 2px 5px);}
.dan-gantt-key-covered {background:#095373;}
.dan-gantt-viewport {overflow:auto;max-height:64vh;background:#f3f6f9;padding:0 16px 16px;}
.dan-gantt-viewport {touch-action:pan-y;}
.dan-gantt-pan-window {display:flex;overflow:hidden;flex:0 0 auto;}
.dan-gantt-pan-window[hidden] {display:none!important;}
.dan-gantt-pan-window > .dan-gantt-track {will-change:transform;}
.dan-gantt-row > .dan-gantt-pan-window {margin-left:-4px;}
.dan-gantt-pan-window .dan-project-y-axis {z-index:3;background:#fff;}
.dan-gantt-viewport[data-panning="true"] {cursor:grabbing;user-select:none;}
.dan-gantt-viewport[data-panning="true"] .dan-gantt-day:hover {transform:none;box-shadow:none;}
.dan-gantt-dates {position:sticky;top:0;z-index:4;background:#f3f6f9;display:flex;padding:12px 0;}
.dan-gantt-row {display:flex;min-height:96px;margin:0 0 14px;background:#fff;border-radius:16px;box-shadow:0 4px 12px rgba(21,47,63,.08);border:1px solid #e5ecf1;}
.dan-gantt-row > aside,.dan-gantt-dates > aside {width:240px;min-width:240px;position:sticky;left:0;z-index:2;background:inherit;padding:16px;border-radius:16px 0 0 16px;}
.dan-gantt-project {display:block;width:100%;text-align:left;border:0;background:transparent;color:#095373;padding:0;font-size:13px;font-weight:700;line-height:1.5;}
.dan-gantt-project:hover {color:#18789b;}
.dan-gantt-project:focus-visible,.dan-gantt-day:focus-visible {outline:2px solid #18789b;outline-offset:2px;}
.dan-gantt-row aside small {display:block;color:#647582;margin-top:4px;font-size:11px;}
.dan-gantt-track {display:grid;align-items:stretch;gap:3px;padding:12px 6px;flex:1;}
.dan-gantt-day {position:relative;min-width:0;height:68px;border:0;border-radius:5px;background:#f8fafb;padding:0;cursor:pointer;overflow:hidden;transition:transform .15s ease,box-shadow .15s ease;}
.dan-gantt-day:hover {transform:translateY(-3px);box-shadow:0 4px 9px rgba(9,83,115,.2);}
.dan-gantt-day.is-weekend,.dan-gantt-day.weekend {background:#e4e8ed;}
.dan-gantt-day.is-today {outline:1px solid #095373;outline-offset:1px;}
.dan-gantt-day .dan-gantt-bar {position:absolute;bottom:0;left:0;right:0;border-radius:5px 5px 0 0;background:repeating-linear-gradient(135deg,#f4c6c5 0 2px,#ffeded 2px 6px);border:1px solid #eac6c6;min-height:3px;}
.dan-gantt-day .dan-gantt-covered {position:absolute;bottom:0;left:0;right:0;background:#095373;border-radius:3px 3px 0 0;}
.dan-gantt-day .dan-gantt-value {position:absolute;top:3px;left:0;right:0;text-align:center;font-size:9px;color:#435865;font-weight:600;}
.dan-gantt-date {font-size:10px;text-align:center;color:#647582;line-height:1.5;}
.dan-gantt-date strong {display:block;color:#334e5c;}
.dan-gantt-hint {padding:16px 24px;min-height:54px;font-size:12px;line-height:1.7;color:#435865;border-top:1px solid #e8edf1;}
.dan-gantt-empty {padding:32px;text-align:center;color:#647582;}
@media(prefers-reduced-motion:reduce) {.dan-gantt-day {transition:none;}}

.dan-gantt-tooltip {position:fixed;z-index:1052;max-width:280px;padding:14px 16px;border:1px solid #dce7ed;border-radius:14px;background:#fff;box-shadow:0 12px 30px rgba(21,47,63,.18);pointer-events:none;color:#334e5c;font-size:12px;line-height:1.7;}
.dan-gantt-tooltip strong {display:block;color:#095373;}
.dan-gantt-tooltip[hidden] {display:none!important;}
.asg-stage.on {transform-origin:center top;animation:dan-dispiega-progetto .48s cubic-bezier(.2,.8,.25,1);}
@keyframes dan-dispiega-progetto {from {opacity:.3;transform:perspective(1400px) rotateX(-16deg) scaleY(.55);clip-path:inset(0 0 65% 0 round 20px);}60% {opacity:1;transform:perspective(1400px) rotateX(3deg) scaleY(1.02);clip-path:inset(0 0 0 0 round 20px);}to {opacity:1;transform:none;clip-path:inset(0 0 0 0 round 20px);}}
.asg-origami .fogli {perspective:1600px;}
.asg-origami .asg-foglio {transform-origin:left top;transform:rotateY(-65deg) rotateX(12deg) translateY(12px) scale(.92);}
.asg-origami.aperto .asg-foglio {transform:rotateY(0deg) rotateX(0deg) translateY(0) scale(1);}
.asg-origami .asg-foglio:nth-child(2) {transform-origin:right top;}
@media(prefers-reduced-motion:reduce) {.asg-stage.on {animation:none;}.asg-origami .asg-foglio {transition:none!important;}}

.dan-occupazione-richiesti {display:block;font-size:10px;color:#647582;margin-top:6px;}
.dan-gantt-date strong {white-space:nowrap;font-size:8px;} .dan-gantt-date > span {font-size:9px;}
.dan-gantt-date strong {font-size:clamp(8px,calc(var(--gantt-day-width,32px) * .25),12px);} .dan-gantt-day .dan-gantt-value {font-size:clamp(9px,calc(var(--gantt-day-width,32px) * .24),11px);}

/* Esplorazione clienti > progetti: gli anelli si separano accanto alle card. */
.dan-explore {display:grid;grid-template-columns:minmax(0,1fr);gap:20px;align-items:start;margin-bottom:24px;}
.dan-explore.is-exploring {grid-template-columns:320px minmax(0,1fr);}
.dan-overview[hidden] {display:none!important;}
.dan-overview-header {display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 24px!important;flex-wrap:wrap;}
.dan-overview h2 {font-size:21px;margin:0 0 6px;}
.dan-overview-header p {font-size:12px;color:#647582;margin:0;}
.dan-overview-toggle {display:flex;align-items:center;gap:8px;font-size:12px;color:#435865;cursor:pointer;}
.dan-overview-toggle input {accent-color:#095373;width:16px;height:16px;}
.dan-overview-period {display:flex;gap:12px;align-items:center;padding:18px 24px 0;}
.dan-overview-period label {font-size:11px;color:#647582;}
.dan-overview-period input {margin-top:5px;max-width:180px;}
.dan-overview-status {color:#bd4545;padding:6px 24px;font-size:12px;}
.dan-overview-layout {display:grid;grid-template-columns:minmax(0,1.35fr) minmax(240px,.75fr);gap:24px;padding:0 24px 20px;align-items:center;}
.dan-overview-plot {text-align:center;min-width:0;}
#planOverviewRing {width:100%;max-width:480px;overflow:visible;}
.dan-ring-sector {cursor:pointer;transition:transform .65s cubic-bezier(.2,.8,.25,1),filter .18s;outline:none;}
.dan-ring-sector:hover,.dan-ring-sector:focus-visible {filter:brightness(.96) drop-shadow(0 3px 4px rgba(21,47,63,.22));stroke:#095373;stroke-width:1.3;}
.dan-ring-center {cursor:pointer;}
.dan-ring-center text {font-size:17px;font-weight:700;fill:#095373;}
.dan-ring-center .dan-ring-center-small {font-size:12px;font-weight:400;fill:#647582;}
.dan-ring-center:hover circle,.dan-ring-center:focus-visible circle {fill:#e7f0f5;stroke:#95b3c3;stroke-width:1;}
.dan-overview-total {font-size:12px;color:#647582;line-height:1.8;}
.dan-overview-legend {display:flex;flex-direction:column;gap:18px;max-height:440px;overflow:auto;padding:8px;}
.dan-ring-client {padding:12px;border-radius:14px;background:#f7fafc;border:1px solid #e7eef3;}
.dan-ring-client button {width:100%;text-align:left;border:0;background:none;cursor:pointer;}
.dan-ring-client-button {font-size:13px;font-weight:700;color:#334e5c;border-left:5px solid var(--client-color)!important;padding:2px 10px;margin:0 0 10px;}
.dan-ring-client-button small {display:block;font-size:10px;font-weight:400;color:#647582;margin-top:4px;}
.dan-ring-project-button {display:block;padding:10px 12px;margin-top:8px;border-radius:10px;background:#fff!important;box-shadow:0 2px 6px rgba(21,47,63,.07);border-left:5px solid var(--project-color)!important;}
.dan-ring-project-button strong {display:block;font-size:12px;color:#095373;line-height:1.5;}
.dan-ring-project-button small {display:block;font-size:10px;color:#647582;line-height:1.6;margin-top:4px;}
.dan-ring-project-button:hover,.dan-ring-project-button:focus-visible,.dan-ring-project-button.is-selected {background:#edf4f8!important;outline:1px solid #bdd2df;}
.dan-overview-explanation {padding:16px 24px;border-top:1px solid #e7eef3;display:flex;flex-wrap:wrap;gap:10px 18px;color:#647582;font-size:12px;}
.dan-overview-explanation span {display:inline-flex;align-items:center;gap:6px;}
.dan-overview-explanation i {display:grid;place-items:center;border-radius:50%;width:20px;height:20px;background:#edf3f6;font-style:normal;color:#095373;font-weight:700;}
.dan-overview-explanation p {flex-basis:100%;margin:0;line-height:1.7;}
.dan-overview-selection {margin:0 24px 18px;border-radius:10px;padding:10px;background:#eef6fa;font-size:12px;color:#095373;}
.is-exploring .dan-overview-layout {grid-template-columns:1fr;gap:10px;padding:8px 16px;}
.is-exploring .dan-overview-header {padding:18px!important;gap:12px;}
.is-exploring .dan-overview h2 {font-size:17px;}
.is-exploring .dan-overview-period {padding:14px 16px 0;gap:8px;}
.is-exploring .dan-overview-period input {width:135px;padding:8px;font-size:11px;}
.is-exploring .dan-overview-legend {max-height:300px;}
.is-exploring .dan-overview-explanation {padding:16px;font-size:11px;}
.is-exploring #planGantt {animation:dan-cards-dispiega .55s cubic-bezier(.2,.8,.25,1);transform-origin:left top;min-width:0;}
.is-exploring #planGanttRows .dan-gantt-row {animation:dan-project-enters .45s ease-out both;}
.is-exploring #planGanttRows .dan-gantt-row:nth-child(2) {animation-delay:.06s;}
.is-exploring #planGanttRows .dan-gantt-row:nth-child(3) {animation-delay:.12s;}
@keyframes dan-cards-dispiega {from {opacity:0;transform:perspective(1200px) rotateY(-12deg) translateX(24px);}to {opacity:1;transform:none;}}
@keyframes dan-project-enters {from {opacity:0;transform:translateY(10px);}to {opacity:1;transform:none;}}
.dan-day-lens {position:fixed;z-index:1053;display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:18px;background:rgba(248,251,253,.88);backdrop-filter:blur(8px);border:1px solid rgba(169,190,203,.5);box-shadow:0 8px 24px rgba(21,47,63,.12);pointer-events:none;max-width:240px;}
.dan-day-lens[hidden] {display:none!important;}
.dan-lens-ring {width:64px;height:64px;flex-shrink:0;border-radius:50%;background:conic-gradient(#658f9f var(--day-used),rgba(170,187,199,.22) 0);display:grid;place-items:center;position:relative;}
.dan-lens-ring:before {content:'';position:absolute;inset:6px;border-radius:50%;background:rgba(249,252,253,.93);}
.dan-lens-ring strong {position:relative;font-size:16px;color:#335b6b;}
.dan-day-lens span,.dan-day-lens small {display:block;font-size:10px;color:#647582;line-height:1.7;}
.dan-day-lens .dan-lens-date {font-weight:700;color:#335b6b;font-size:11px;}
@media(max-width:1100px) {.dan-explore.is-exploring {grid-template-columns:280px minmax(0,1fr);gap:12px;}.is-exploring .dan-overview-period input {width:115px;}}
@media(prefers-reduced-motion:reduce) {.dan-ring-sector {transition:none;}.is-exploring #planGantt,.is-exploring #planGanttRows .dan-gantt-row {animation:none;}}

.dan-explore {scroll-margin-top:80px;}
.is-exploring .dan-gantt-viewport {--gantt-label-width:180px;}
.is-exploring .dan-gantt-row > aside,.is-exploring .dan-gantt-dates > aside {width:180px;min-width:180px;padding:14px 12px;}

/* Dalla torta ai fogli: una card per progetto, una sola scala temporale. */
.dan-explore.is-exploring {grid-template-columns:minmax(0,1fr);}
.is-exploring .dan-overview-layout,.is-exploring .dan-overview-explanation {display:none;}
.is-exploring .dan-overview-header {padding:16px 24px!important;}
.is-exploring .dan-overview-period {display:inline-flex;padding:0 24px 12px;}
.is-exploring .dan-overview-selection {display:inline-block;margin:0 24px 12px;}
.dan-gantt-viewport,.is-exploring .dan-gantt-viewport {--gantt-label-width:48px;}
.dan-gantt-dates > aside,.is-exploring .dan-gantt-dates > aside {width:48px;min-width:48px;padding:12px 4px;font-size:9px;overflow-wrap:anywhere;}
.dan-gantt-row {display:flex;flex-direction:column;position:relative;overflow:hidden;border-left:4px solid var(--project-color,#b7ced9);}
.dan-gantt-row > aside,.is-exploring .dan-gantt-row > aside {width:100%;min-width:0;padding:14px 18px;display:grid;grid-template-columns:54px minmax(120px,1fr) auto;gap:2px 12px;border-radius:14px 14px 0 0;border-bottom:1px solid #edf1f4;align-items:center;position:sticky;left:0;background:#fff;}
.dan-project-fragment {grid-row:1/4;grid-column:1;display:block;width:54px;height:54px;}
.dan-project-fragment svg {width:100%;height:100%;overflow:visible;filter:drop-shadow(0 2px 2px #abc1cc66);}
.dan-gantt-row .dan-gantt-project,.dan-gantt-row aside small {grid-column:2;margin:0;}
.dan-project-edit {grid-column:3;grid-row:1/4;border:1px solid #c6d9e3;background:#eef6fa;border-radius:10px;padding:10px 14px;color:#095373;font-size:12px;font-weight:700;white-space:nowrap;}
.dan-project-edit:hover {background:#dcecf4;box-shadow:0 3px 9px #09537322;}
.dan-project-edit:focus-visible {outline:2px solid #18789b;outline-offset:3px;}
.dan-gantt-row > .dan-gantt-track {margin-left:48px;transform-origin:left top;animation:dan-chart-unfold .7s cubic-bezier(.2,.8,.25,1) both;}
.dan-gantt-day {height:124px;border-radius:3px;cursor:grab;}
.dan-gantt-day:active {cursor:grabbing;}
.dan-gantt-day:hover {transform:none;}
.dan-gantt-day .dan-gantt-bar {border-radius:0;border:0;border-top:1.5px dashed #7d8791;min-height:0;background:repeating-linear-gradient(135deg,#ef9b9a66 0 1px,#fff3f244 1px 5px);}
.dan-gantt-day .dan-gantt-covered {background:#f8fafb;border-radius:0;}
.dan-gantt-day.is-weekend .dan-gantt-covered {background:#e4e8ed;}
.dan-project-coverage-line {position:absolute;left:0;right:0;height:2px;background:#095373;z-index:1;pointer-events:none;}
.dan-gantt-day .dan-gantt-value {top:4px;font-weight:600;}
.dan-gantt-day.is-empty {cursor:grab;}
.is-exploring .dan-project-fragment {animation:dan-sector-settle .65s cubic-bezier(.2,.8,.25,1) both;}
@keyframes dan-chart-unfold {from {opacity:0;transform:perspective(1000px) rotateX(-45deg) scaleY(.1);clip-path:inset(0 100% 0 0);}to {opacity:1;transform:none;clip-path:inset(0);}}
@keyframes dan-sector-settle {from {opacity:0;transform:translateY(-60px) rotate(-35deg) scale(1.8);}to {opacity:1;transform:none;}}
@media(prefers-reduced-motion:reduce) {.dan-gantt-row > .dan-gantt-track,.is-exploring .dan-project-fragment {animation:none;}}

.dan-gantt-row {overflow:visible;}
.dan-gantt-row > aside,.is-exploring .dan-gantt-row > aside {top:54px;z-index:3;box-sizing:border-box;}

/* Gli spicchi restano tutti in colonna; solo i selezionati proiettano il grafico. */
.dan-gantt-viewport,.is-exploring .dan-gantt-viewport {--gantt-label-width:240px;}
.dan-gantt-dates > aside,.is-exploring .dan-gantt-dates > aside {width:240px;min-width:240px;}
.dan-gantt-row {flex-direction:row;min-height:170px;align-items:stretch;}
.dan-gantt-row > aside,.is-exploring .dan-gantt-row > aside {width:240px;min-width:240px;top:auto;border-radius:14px 0 0 14px;border-bottom:0;border-right:1px solid #edf1f4;padding:16px 12px;grid-template-columns:78px minmax(0,1fr);gap:5px 10px;}
.dan-project-fragment {width:78px;height:82px;grid-row:1/4;cursor:pointer;animation:none!important;}
.dan-gantt-row .dan-project-edit {grid-column:1/3;grid-row:4;padding:8px 12px;justify-self:stretch;}
.dan-gantt-row .dan-gantt-project {font-size:12px;line-height:1.4;}
.dan-gantt-row aside small {font-size:10px;}
.dan-gantt-row > .dan-gantt-track {margin-left:0;animation-delay:1.35s;}
.dan-gantt-row[data-selected="false"] {min-height:128px;background:transparent;box-shadow:none;border-color:transparent;}
.dan-gantt-row[data-selected="false"] > aside {border-radius:14px;background:#f7fafc;box-shadow:0 3px 9px #15303f0a;}
.dan-gantt-row > .dan-gantt-track[hidden] {display:none!important;}
.dan-gantt-day {height:140px;}
.dan-flying-sector {position:fixed;width:480px;height:480px;overflow:visible;pointer-events:none;z-index:1060;transform-origin:0 0;}
.is-exploring #planGantt,.is-exploring #planGanttRows .dan-gantt-row {animation:none;}
.dan-project-fragment:focus-visible {outline:2px solid #18789b;outline-offset:3px;border-radius:8px;}
@media(prefers-reduced-motion:reduce) {.dan-gantt-row > .dan-gantt-track {animation:none;}}

.dan-gantt-row > .dan-gantt-track {animation:none;}
.dan-gantt-row[data-opening="true"] > .dan-gantt-track {animation:dan-chart-unfold .22s cubic-bezier(.2,.8,.25,1) .05s both;}
@media(prefers-reduced-motion:reduce) {.dan-gantt-row[data-opening="true"] > .dan-gantt-track {animation:none;}}

/* Persone: il colpo d'occhio è il grafico, le quote si aprono sul giorno. */
.dan-person-charts {display:flex;flex-direction:column;gap:18px;padding:4px;}
.dan-person-chart {background:#fff;border:1px solid #e3ebf0;border-radius:18px;box-shadow:0 5px 16px #15303f0b;overflow:hidden;}
.dan-person-chart header {padding:18px 22px 6px;display:flex;justify-content:space-between;gap:20px;align-items:center;}
.dan-person-chart h3 {font-size:16px;margin:0 0 5px;color:#095373;}
.dan-person-chart header p {margin:0;font-size:12px;color:#647582;}
.dan-person-chart header small {font-size:11px;color:#187054;}
.dan-person-ring {width:58px;height:58px;flex-shrink:0;border-radius:50%;background:conic-gradient(#095373 var(--used),#eaf0f3 0);display:grid;place-items:center;position:relative;}
.dan-person-ring:before {content:'';position:absolute;inset:6px;background:#fff;border-radius:50%;}
.dan-person-ring b {position:relative;font-size:13px;}
.dan-person-plot {padding:6px 18px 0;overflow:auto;}
.dan-person-plot svg {display:block;width:100%;min-width:640px;}
.pp-axis {font-size:13px;fill:#7c8c97;}
.pp-date {font-size:15px;fill:#526773;}
.pp-day {cursor:pointer;outline:none;}
.pp-pointer {opacity:0;stroke:#18789b;stroke-width:1;stroke-dasharray:3 2;}
.pp-day.is-pointed .pp-pointer,.pp-day:focus-visible .pp-pointer {opacity:1;}
.pp-day:focus-visible rect:first-of-type {stroke:#18789b;stroke-width:2;}
.dan-person-chart footer {padding:10px 22px 18px;}
.dan-person-chart footer > small {display:block;color:#738491;font-size:10px;margin-top:10px;}
.dan-person-projects {display:flex;gap:8px;flex-wrap:wrap;}
.dan-person-projects button {border:1px solid #e2eaf0;border-left:4px solid var(--project-color);background:#f7fafc;border-radius:8px;padding:7px 10px;color:#435d6b;font-size:11px;text-align:left;}
.dan-person-projects button:hover {background:#eaf3f8;}
#planPersoneDettaglio {position:sticky;top:60px;z-index:5;box-shadow:0 6px 20px #15303f1a;}

.dan-project-client-name {color:#435c6b!important;font-weight:600;}
.dan-ring-client-button {margin:14px 0 0;padding-top:10px;border-top:1px solid #e1eaf0!important;}
.dan-project-compare {grid-column:1/3;grid-row:5;display:flex;align-items:center;gap:8px;font-size:11px;color:#526c7b;cursor:pointer;padding:4px 2px;}
.dan-project-compare input {accent-color:#095373;width:15px;height:15px;}

.dan-company-strip {display:flex;position:sticky;top:54px;z-index:4;background:#e9f2f5;border-radius:10px;margin-bottom:14px;align-items:center;}
.dan-company-label {width:240px;min-width:240px;padding:10px 16px;font-size:11px;color:#335e70;font-weight:700;position:sticky;left:0;background:#e9f2f5;}
.dan-company-strip .dan-gantt-track {padding:7px 6px;}
.dan-company-day {border:0;border-radius:5px;background:#d7e8ee;color:#476b7c;min-width:0;font-size:9px;height:26px;cursor:crosshair;}
.dan-company-day:hover,.dan-company-day:focus-visible {background:#a9ccd9;outline:1px solid #095373;}
.dan-day-lens {max-width:380px;}
.dan-lens-ring {width:126px;height:126px;background:none;}
.dan-lens-ring:before {display:none;}
.dan-lens-graphic {position:absolute;inset:0;}
.dan-lens-graphic svg {width:100%;height:100%;}
.dan-lens-ring strong {font-size:13px;}
.dan-lens-request {color:#a27352!important;font-weight:600;max-width:180px;}

/* La scala e le date restano allineate anche fra clienti diversi. */
#planGantt .dan-gantt-track {position:relative;padding-left:46px;box-sizing:border-box;}
.dan-project-y-axis {position:absolute;left:3px;top:12px;width:36px;height:140px;border-right:1px solid #c9d6de;pointer-events:none;}
.dan-project-y-axis small {position:absolute;top:0;right:4px;font-size:9px;color:#435c6b;}
.dan-project-y-tick {position:absolute;right:5px;transform:translateY(50%);font-size:10px;color:#435c6b;line-height:1;white-space:nowrap;}
.dan-project-gridline {position:absolute;left:0;right:0;border-top:1px solid #b7c7d344;z-index:2;pointer-events:none;}
.dan-lens-keys {display:flex;flex-wrap:wrap;gap:6px;font-size:9px;margin-top:5px;}
.dan-lens-ring {width:150px;height:150px;}
.dan-lens-ring strong {transform:translateY(-5px);font-size:14px;}
.dan-lens-center-unit {position:absolute;top:calc(50% + 5px);font-size:8px;color:#526c7b;}
.dan-lens-label {font-weight:700;font-size:12px;}
.dan-person-project-summary {padding:8px 22px;font-size:12px;color:#526c7b;}
.dan-person-project-summary button {border:1px solid #cbdce5;border-radius:8px;background:#f5f9fb;color:#095373;margin-left:8px;padding:5px 9px;}
.dan-person-project-option {display:flex;flex-direction:column;min-width:180px;max-width:320px;border:1px solid #e2eaf0;border-radius:10px;overflow:hidden;}
.dan-person-projects .dan-person-project-option button {border:0;border-radius:0;padding:10px 12px;}
.dan-person-project-option small,.dan-person-project-option b {display:block;margin:2px 0;}
.dan-person-project-option small {color:#647582;}
.dan-person-project-option button[aria-pressed="true"] {background:#fff4cf;box-shadow:inset 4px 0 #efcc6a;}
.dan-person-projects .dan-person-project-open {border-top:1px solid #e2eaf0;background:#edf5f9;color:#095373;font-weight:600;}
.asg-coverage-summary {width:300px;max-width:100%;padding:10px 12px;border:1px solid #e0e9ef;border-radius:12px;background:#f7fafc;}
.asg-coverage-heading {display:flex;justify-content:space-between;gap:12px;align-items:baseline;color:#435c6b;font-size:10px;}
.asg-coverage-heading b {font-size:16px;color:#095373;white-space:nowrap;}
.asg-coverage-heading small {font-size:10px;font-weight:600;}
.asg-coverage-bar {height:12px;margin:8px 0;border-radius:6px;overflow:hidden;background:repeating-linear-gradient(135deg,#f3cecc 0 2px,#fff0ee 2px 6px);}
.asg-coverage-bar span {display:block;height:100%;background:#3f9780;transition:width .35s ease;}
.asg-coverage-legend {display:flex;justify-content:space-between;gap:10px;font-size:11px;color:#526c7b;}
.asg-coverage-legend span {display:flex;align-items:center;gap:4px;}
.asg-coverage-legend i {width:8px;height:8px;border-radius:2px;background:#3f9780;}
.asg-coverage-legend .uncovered i {background:repeating-linear-gradient(135deg,#dc9490 0 1px,#ffe5e2 1px 3px);}
.asg-coverage-extra {display:block;margin-top:5px;color:#8a6100;font-size:9px;}
.asg-coverage-period {display:block;margin-top:3px;color:#647582;font-size:9px;}
.asg-tess:has(.badge-dentro) {padding-top:58px;}
.asg-tess:has(.asg-badge-lib) {padding-top:82px;}
.asg-tess .asg-badge-lib {top:54px;}
.asg-origami .fogli {overflow:visible;max-height:none!important;height:auto!important;max-width:1160px;padding-bottom:38px;}
.asg-origami .asg-foglio {min-width:0;flex-shrink:0;}
/* Editor risorsa: un pannello unico, sezioni allineate e dettagli su richiesta. */
#asgOrigami .fogli {display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,.8fr);gap:0;background:#fff;border:1px solid #d6e3e9;padding:18px 14px 36px;max-width:1060px;backdrop-filter:none;}
#asgOrigami .asg-foglio {margin-top:0;padding:12px 16px;border:0;border-radius:0;background:transparent;box-shadow:none;transform:none;transition:opacity .15s;}
#asgOrigami .asg-foglio + .asg-foglio {border-left:1px solid #e2e9ee;}
#asgOrigami .asg-foglio h6 {font-size:.73rem;color:#095373;letter-spacing:.3px;margin-bottom:14px;}
#asgOrigami .asg-campo > label {font-size:.69rem;text-transform:none;letter-spacing:0;color:#385464;}
#asgOrigami .asg-campo .nota {font-size:.69rem;line-height:1.45;}
#asgOrigami #asgOFte {font-size:1.3rem;font-weight:700;background:#f2f8fb;color:#095373;}
#asgOrigami .asg-massimo-btn {width:100%;text-align:left;border:1px solid #bcd6cb;border-radius:8px;padding:8px 10px;margin:0 0 12px;background:#fff;color:#0F6E56;font-size:.72rem;font-weight:600;}
#asgOrigami .asg-massimo-btn[aria-pressed="true"] {background:#e9f6ef;border-color:#1D9E75;}
#asgOrigami .asg-massimo-btn:focus-visible {outline:2px solid #095373;outline-offset:2px;}
#asgOrigami .asg-puodare > b {font-size:1.25rem;white-space:nowrap;}
/* Evidenzia soltanto la quota del progetto nel grafico personale aperto. */
#asgOrigami.on #asgGraficoBox svg rect[fill="#DAA522"],
#asgOrigami.on #asgGraficoBox svg rect[fill="#E7B83F"] {fill:#F2BC1B;stroke:#A87900;stroke-width:.65;vector-effect:non-scaling-stroke;animation:asg-progetto-luminoso 1.7s ease-in-out infinite;}
#asgOrigami.on #asgGraficoBox svg rect[fill="#DAA522"] {fill-opacity:1;}
#asgOrigami.on #asgGraficoBox svg rect[fill="#E7B83F"] {fill-opacity:.5;}
@keyframes asg-progetto-luminoso {0%,100% {fill:#F2BC1B;}50% {fill:#FFE273;}}
#asgWrapProg rect[data-contributo-persona][data-origami-attivo="true"] {fill:#F2BC1B;stroke:#A87900;stroke-width:.65;vector-effect:non-scaling-stroke;animation:asg-progetto-luminoso 1.7s ease-in-out infinite;}
@media(prefers-reduced-motion:reduce) {#asgWrapProg rect[data-contributo-persona][data-origami-attivo="true"] {animation:none;}}
@media(prefers-reduced-motion:reduce) {#asgOrigami.on #asgGraficoBox svg rect[fill="#DAA522"],#asgOrigami.on #asgGraficoBox svg rect[fill="#E7B83F"] {animation:none;}}
#asgOrigami .asg-check {font-size:.7rem;line-height:1.45;}
#asgOrigami input[type="checkbox"] {width:auto;display:inline-block;margin-right:5px;}
#asgOrigami .asg-dettagli {margin:10px 0;font-size:.72rem;line-height:1.5;}
#asgOrigami .asg-dettagli > summary {cursor:pointer;font-weight:600;color:#385464;padding:5px 0;}
#asgOrigami .asg-dettagli[open] > summary {margin-bottom:6px;}
#asgOrigami .asg-anteprima-nota {font-size:.73rem;line-height:1.5;color:#647582;margin:0 0 16px;}
#asgOrigami .asg-rimozione {margin-top:20px;border-top:1px solid #e2e9ee;padding-top:8px;}
#asgOrigami .asg-rimozione > summary {color:#b22b3c;}
@media(max-width:900px) {
 #asgOrigami .fogli {grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
 #asgOrigami .asg-foglio:nth-child(3) {grid-column:2;border-top:1px solid #e2e9ee;}
 #asgOrigami .asg-foglio:first-child {grid-row:1/3;}
}
@media(max-width:600px) {
 #asgOrigami .fogli {grid-template-columns:minmax(0,1fr);width:calc(100vw - 24px);}
 #asgOrigami .asg-foglio:first-child,#asgOrigami .asg-foglio:nth-child(3) {grid-column:1;grid-row:auto;}
 #asgOrigami .asg-foglio + .asg-foglio {border-left:0;border-top:1px solid #e2e9ee;}
}
.asg-resize-handle {position:absolute;bottom:6px;right:6px;width:28px;height:28px;border:1px solid #b8ccd7;border-radius:8px;background:#f2f7fa;color:#095373;font-size:20px;cursor:nwse-resize!important;touch-action:none;z-index:4;}
.asg-resize-handle:focus-visible {outline:2px solid #18789b;outline-offset:2px;}
.asg-origami .asg-of-chiudi {top:5px;right:5px;z-index:5;}
.asg-origami > .asg-resize-handle,.asg-origami > .asg-of-chiudi {pointer-events:auto;}
.asg-foglio:nth-child(2) input[type="date"] {width:calc(50% - 15px);min-width:0;max-width:100%;}
.asg-stint-date-range {display:grid;gap:8px;min-width:0;}
.asg-campo .asg-stint-date-range label {display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:8px;margin:0;text-transform:none;letter-spacing:0;}
.asg-foglio:nth-child(2) .asg-stint-date-range input[type="date"] {width:100%;min-width:0;max-width:100%;box-sizing:border-box;border:1px solid #d6e0e6;border-radius:8px;padding:5px 6px;font-size:.78rem;font-weight:600;}
.dan-overview-layout {grid-template-columns:minmax(0,2fr) minmax(220px,.85fr);gap:18px;}
#planOverviewRing {max-width:720px;}
.dan-ring-client-sectors {transition:transform .35s cubic-bezier(.2,.8,.25,1);}
.dan-ring-client-name {font-size:11px;font-weight:700;fill:#233f4f;pointer-events:none;}
.dan-ring-hover-box {pointer-events:none;}
.dan-ring-hover-info {height:100%;display:flex;flex-direction:column;justify-content:center;gap:6px;text-align:center;color:#335464;font-family:inherit;overflow:auto;}
.dan-ring-hover-info > strong {font-size:10px;}
.dan-ring-hover-project {font-size:9px;line-height:1.2;}
.dan-ring-hover-project span,.dan-ring-hover-project b {display:block;}
.dan-ring-hover-project b {color:#187054;margin-top:2px;}
@media(prefers-reduced-motion:reduce){.dan-ring-client-sectors{transition:none;}}
.dan-ring-project-labels {pointer-events:none;}
.dan-ring-project-name {font-size:9px;font-weight:600;fill:#233f4f;}
.dan-ring-project-percent {font-size:10px;font-weight:700;fill:#173e4e;stroke:#ffffffbb;stroke-width:2px;paint-order:stroke fill;}
.dan-overview-layout {display:block;}
.dan-overview-legend {display:none;}
.dan-overview-plot {max-width:820px;margin:0 auto;}

.dan-ring-project-piece {transition:transform .5s cubic-bezier(.2,.8,.2,1);}
.dan-ring-sector {transition:transform .65s cubic-bezier(.2,.8,.25,1),opacity .35s ease,filter .18s;}
.dan-project-hover-dock {display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:18px 0 24px;}
.dan-project-hover-dock[hidden] {display:none;}
.dan-project-hover-card {display:flex;align-items:center;gap:10px;min-width:0;text-align:left;background:#fff;border:1px solid #d5e4eb;border-radius:16px;padding:12px;color:#095373;box-shadow:0 7px 22px #264e6414;cursor:pointer;animation:dan-project-card-open .5s ease both;}
.dan-project-hover-card:hover {border-color:#6798ac;box-shadow:0 9px 26px #264e6426;}
.dan-project-hover-card > div {min-width:0;}
.dan-project-hover-card strong,.dan-project-hover-card small,.dan-project-hover-card span {display:block;}
.dan-project-hover-card strong {font-size:13px;line-height:1.35;}
.dan-project-hover-card small {font-size:10px;color:#6e8190;margin-top:4px;}
.dan-project-hover-card span {font-size:11px;line-height:1.4;margin-top:9px;}
.dan-project-coverage-circle {width:68px;height:68px;flex-shrink:0;}
.dan-project-coverage-circle text {font-size:14px;font-weight:700;fill:#095373;}
.dan-coverage-flight {position:fixed;width:480px;height:480px;overflow:visible;transform-origin:0 0;pointer-events:none;z-index:10000;}
.dan-coverage-flight path {transition:d .65s ease;}
@keyframes dan-project-card-open {from {transform:translateY(-12px);}to {transform:none;}}
@media(prefers-reduced-motion:reduce){.dan-ring-project-piece,.dan-ring-sector{transition:none;}.dan-project-hover-card{animation:none;}}

.dan-project-hover-card:focus-visible {outline:2px solid #237d9b;outline-offset:3px;}

.dan-project-radial-dock {pointer-events:auto;}
.dan-project-card-holder {overflow:visible;}
.dan-project-card-holder .dan-project-hover-card {box-sizing:border-box;width:144px;height:122px;padding:8px;gap:5px;flex-direction:column;text-align:center;}
.dan-project-card-holder .dan-project-coverage-circle {width:42px;height:42px;position:absolute;top:-20px;left:51px;background:white;border-radius:50%;box-shadow:0 3px 12px #264e641c;}
.dan-project-card-holder .dan-project-hover-card > div {width:100%;padding-top:14px;}
.dan-project-card-holder .dan-project-hover-card strong {font-size:11px;line-height:1.25;}
.dan-project-card-holder .dan-project-hover-card span {font-size:10px;margin-top:5px;}
.dan-project-card-holder .dan-project-hover-card small {font-size:8px;margin-top:3px;}

.dan-project-card-holder .dan-project-hover-card {border-top:3px solid var(--project-accent,#095373);box-shadow:0 6px 18px #264e6422;}
.dan-project-card-link {stroke:#4c8199;stroke-width:1.4;}
.dan-overview-toggle[hidden] {display:none!important;}

.dan-overview-toggle {max-width:280px;line-height:1.4;}

/* Outer spacing is real background space, leaving room for card shadows. */
#view-planning {--planning-safe-space:20px;padding:var(--planning-safe-space);box-sizing:border-box;}
#view-planning > .dan-planning-history-trigger {display:inline-flex;align-items:center;margin-bottom:var(--planning-safe-space);}
#view-planning .dan-explore {gap:24px;margin-bottom:24px;}
#view-planning .row.mb-4 {margin-bottom:24px!important;}
#view-planning #card-bilancio-plan,#view-planning #header-pianificazione {margin-left:0;margin-right:0;}
#view-planning > .d-flex {gap:16px!important;flex-wrap:wrap;}
@media(max-width:1100px){#view-planning {--planning-safe-space:16px;}}

/* Shared spacing for page edges, cards, actions and form fields. */
:root {--dan-safe-edge:24px;--dan-safe-card:24px;--dan-safe-content:20px;--dan-safe-control:10px;}
.container-fluid:not(.px-0),.container:not(.px-0):not(.p-0) {padding-left:var(--dan-safe-edge)!important;padding-right:var(--dan-safe-edge)!important;}
.card {margin-bottom:var(--dan-safe-card);}
.row {--bs-gutter-x:var(--dan-safe-card);--bs-gutter-y:var(--dan-safe-card);}
.card > .card-body:not(.p-0),.modal-body {padding:var(--dan-safe-content)!important;}
.card > .card-footer,.modal-footer {padding:16px var(--dan-safe-content)!important;}
.card > .card-header:first-child {padding:16px var(--dan-safe-content)!important;}
.card-body form .row,form.row {--bs-gutter-x:12px;--bs-gutter-y:12px;}
.d-flex:has(> .btn):not(.btn-group),.card-header:has(> .btn) {gap:var(--dan-safe-control)!important;flex-wrap:wrap;}
.btn {min-height:38px;padding:8px 12px;white-space:normal;line-height:1.35;}
.btn-sm {min-height:32px;padding:6px 10px;}
.btn-group {gap:4px;flex-wrap:wrap;}
.btn-group > .btn {margin-left:0!important;border-radius:8px!important;}
.form-control,.form-select {box-sizing:border-box;max-width:100%;min-width:0;min-height:42px;padding:9px 12px;border-radius:10px;}
.form-control-sm,.form-select-sm {min-height:36px;padding:7px 10px;}
.form-label {margin-bottom:6px;}
.form-control:not([type="hidden"]) + .form-control,.form-select + .form-control {margin-top:var(--dan-safe-control);}
form > .btn:last-child {margin-top:12px;}
.card-body > .btn + .btn:not(.w-100) {margin-left:6px;}
.card-body > .btn.w-100 + .btn.w-100 {margin-top:10px;}
.card-body > .card:last-child {margin-bottom:0;}
@media(max-width:767px){
 :root {--dan-safe-edge:12px;--dan-safe-card:20px;--dan-safe-content:16px;--dan-safe-control:8px;}
 .btn {min-height:42px;}
 .btn-sm {min-height:36px;}
 .card > .card-header:first-child {padding:14px var(--dan-safe-content)!important;}
}
@media print { .container-fluid:not(.px-0),.container:not(.px-0):not(.p-0){padding-left:0!important;padding-right:0!important;} }

.flatpickr-input[type="hidden"] + .form-control {margin-top:0;}
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="hidden"]),select,textarea {box-sizing:border-box;max-width:100%;min-width:0;}

/* Grid gutters provide the outer gap; cards inside columns do not add a second gap. */
.row > [class*="col-"] > .card {margin-bottom:0;}
.card-body label:has(+ .form-control),.card-body label:has(+ .form-select) {display:block;margin-bottom:6px;}
.card > .card-body.p-0.drag-scroll {border:12px solid #fff;box-sizing:border-box;}
.card > .card-body.p-0 > .table-responsive {padding:12px;}
@media(max-width:767px){.card > .card-body.p-0.drag-scroll {border-width:8px;}.card > .card-body.p-0 > .table-responsive {padding:8px;}}

#manpowerChart {cursor:grab;touch-action:pan-y;user-select:none;}
#manpowerChart.is-panning {cursor:grabbing;}

/* L'anteprima mantiene gli spazi fissi; resta il sollevamento delle card. */
.asg-tess:hover, .asg-tess-viva { transform: translateY(-2px) !important; }
.asg-mini-anteprima-stabile { white-space:nowrap; font-weight:600; }
.asg-dettaglio-giorno { display:block !important; height:48px; overflow:auto; box-sizing:border-box; }
.asg-tess:has(.badge-dentro) .asg-carico-contesto { display:none; }
.asg-legenda-persone { font-size:11px; line-height:1.45; color:#435c69; margin:12px 0; }
.asg-legenda-stabile { height:32px; min-height:32px !important; overflow:auto; }
.asg-nota-anteprima-stabile { height:30px; min-height:30px !important; overflow:auto; }
@media (max-height:800px) {
    /* Su schermi bassi il grafico non deve coprire la lista delle persone. */
    #asgWrapProg { position:relative; top:auto; }
}
.asg-dettaglio-giorno[hidden] { visibility:hidden; }

/* La selezione arriva sotto la barra fissa; oggi occupa tutta la colonna. */
.dan-gantt-row {scroll-margin-top:90px;}
.dan-gantt-date.is-today,.dan-company-day.is-today {background:#fff2cf;border:1px solid #d49b26;border-radius:5px;}
.dan-gantt-dates .dan-gantt-track {padding-top:34px;}
.dan-gantt-date {position:relative;white-space:nowrap;}
.dan-gantt-today-label {position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);width:max-content;white-space:nowrap;display:block;padding:4px 8px;border-radius:6px;background:#fff0c2;border:1px solid #d49b26;font-size:10px;line-height:1.2;font-weight:800;color:#805300;}
.dan-gantt-today-label::after {content:'';position:absolute;top:100%;left:calc(50% - 3px);border:3px solid transparent;border-top-color:#d49b26;}
.dan-gantt-day.is-today {outline:1px solid #d49b26;background-color:#fff7e4;}

#planGanttViewport {scroll-margin-top:80px;}

/* Ogni giorno contiene data e numero con margini, anche nelle viste dense. */
.dan-gantt-date {box-sizing:border-box;padding:4px;line-height:1.5;}
.dan-gantt-date strong,.dan-gantt-date > span:not(.dan-gantt-today-label) {white-space:nowrap;word-break:normal;overflow-wrap:normal;}
.dan-company-day {box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:2px 4px!important;white-space:nowrap;word-break:normal;overflow-wrap:normal;line-height:1.2;flex-shrink:0;}

/* Spazio protetto ai lati delle righe del tabellone Progetti. */
#card-pianificazione > .card-body.drag-scroll {border-left:16px solid transparent;border-right:16px solid transparent;padding:14px 0!important;scroll-padding-inline:16px;}
#card-pianificazione .matrix-table tr.riga-progetto > td.m-col-1 {box-shadow:0 4px 8px -4px rgba(21,47,63,.2);}

.asg-testata .tit h5 {display:flex;align-items:center;flex-wrap:wrap;gap:8px;}
.asg-fabbisogno {flex-basis:100%;min-width:0;width:100%;box-sizing:border-box;padding:14px;background:#F1F7FA;border:1px solid #C9DDE8;border-radius:12px;}
.asg-fabbisogno-campi {display:flex;align-items:flex-end;flex-wrap:wrap;gap:12px;}
.asg-fabbisogno-campi label {display:grid;gap:5px;font-size:.75rem;font-weight:600;min-width:140px;flex:1;}
.asg-fabbisogno-campi input {width:100%;min-width:0;}
.asg-fabbisogno-festivi {display:flex;align-items:center;gap:8px;font-size:.75rem;margin:12px 0 8px;}
.asg-fabbisogno #asgFabEsito {margin-top:8px;color:#095373;}
.asg-fab-giorni-titolo {display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 16px;margin:12px 0 8px;font-size:.72rem;}
.asg-fab-giorni-titolo span {color:#596E7B;}
.asg-fab-giorni {overflow-x:auto;max-width:100%;border:1px solid #C9DDE8;border-radius:8px;background:white;padding:4px;scroll-padding-inline:112px;}
.asg-fab-giorni table {border-collapse:separate;border-spacing:3px;table-layout:fixed;width:max-content;font-size:.68rem;}
.asg-fab-giorni th,.asg-fab-giorni td {min-width:66px;text-align:center;padding:4px;white-space:nowrap;border-radius:4px;background:#F3F7FA;}
.asg-fab-giorni thead tr:first-child th {background:#E5EDF2;font-size:.65rem;}
.asg-fab-giorni th span,.asg-fab-giorni th small {display:block;line-height:1.4;}
.asg-fab-giorni .asg-fab-fisso {position:sticky;left:0;z-index:1;min-width:104px;background:#163B4B!important;color:white;text-align:left;padding-inline:10px;}
.asg-fab-giorni .riposo {background:#E4E8EC;}
.asg-fab-giorni .oggi {background:#FFF5D7;box-shadow:inset 0 0 0 1px #D99A00;}
.asg-fab-giorni input {box-sizing:border-box;width:64px;min-height:32px;border:1px solid #BACDD8;border-radius:5px;padding:4px;text-align:center;color:#095373;font-weight:700;background:white;}
.asg-fab-giorni input:focus {outline:2px solid #095373;outline-offset:1px;}
.asg-fab-giorni input.errore {border-color:#C73545;}
.asg-fab-giorni .asg-fab-coperto td {color:#147759;}

/* Labels and project details occupy columns outside the exploded rings. */
.dan-overview-plot {max-width:1240px;overflow-x:auto;padding:12px;}
#planOverviewRing {max-width:1240px;min-width:900px;overflow:visible;}
.dan-client-label-holder {overflow:visible;}
/* Panoramica cliente e zoom limitato ai grafici. */
.dan-planning-navigation {position:sticky;top:64px;z-index:20;width:fit-content;padding:6px;background:#fff;border:1px solid #dce7ed;border-radius:10px;box-shadow:0 2px 8px #15303f12;}
#planOverview .dan-overview-plot {max-width:none;max-height:760px;overflow:auto;padding:18px 14px;overscroll-behavior:auto;}
#planOverviewRing {display:block;max-width:none;min-width:0;height:auto;margin:0 auto;}
.dan-overview-zoom-tools {display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;padding:4px 24px;color:#637985;font-size:11px;}
.dan-overview-zoom-tools button,.dan-overview-back {border:1px solid #c6dce6;border-radius:7px;padding:7px 10px;background:#f6fafc;color:#095373;font-size:12px;cursor:pointer;}
.is-exploring .dan-overview-zoom-tools {display:none;}
#planOverviewRing .dan-ring-client-sectors {transition:transform .18s ease,filter .18s ease;}
#planOverviewRing .dan-ring-client-sectors[data-hover="true"] {filter:drop-shadow(0 5px 4px #213c5138);}
#planOverviewRing .dan-ring-client-sectors[data-hover="true"] .dan-ring-sector {stroke:#ff174f;stroke-width:2;stroke-linejoin:round;paint-order:stroke fill;}
#planOverviewRing .dan-ring-sector {transition:stroke .15s,filter .15s;}
#planOverviewRing .dan-ring-client-name {box-sizing:border-box;padding:10px 12px!important;font-size:13px;transition:transform .18s,box-shadow .18s;}
#planOverviewRing .dan-ring-client-name[data-hover="true"] {outline:2px solid #ff174f;outline-offset:1px;transform:translateY(-4px);box-shadow:0 5px 9px #213c5130;}
#planOverviewRing .dan-ring-client-name[aria-pressed="true"] {background:#edf7fa;}
#planOverviewRing .dan-project-card-holder .dan-project-hover-card {width:220px;border-top:2px solid var(--project-accent);box-shadow:0 3px 8px #243e5018;padding:12px;}
#planOverviewRing .dan-detail-title {font-size:18px;font-weight:700;fill:#095373;}
#planOverviewRing .dan-detail-client-name {font-size:15px;font-weight:700;}
#planOverviewRing .dan-detail-project:hover {filter:drop-shadow(0 3px 4px #243e5030);}
@media(prefers-reduced-motion:reduce){#planOverviewRing .dan-ring-client-sectors,#planOverviewRing .dan-ring-client-name {transition:none;}}
.dan-client-label-card {position:relative;height:100%;}
.dan-client-label-card .dan-ring-client-name {padding-right:52px!important;}
.dan-client-pin {position:absolute;right:9px;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:32px;height:32px;padding:0;border:1px solid #d2e1e8;border-radius:8px;background:#fff;color:#607583;cursor:pointer;}
.dan-client-pin:hover,.dan-client-pin:focus-visible {background:#edf7fb;color:#095373;}
.dan-client-pin[aria-pressed="true"] {background:#095373;border-color:#095373;color:#fff;}
.dan-client-label-card:has(.dan-client-pin[aria-pressed="true"]) .dan-ring-client-name {background:#edf7fb;box-shadow:inset 0 0 0 1px #095373;}
.dan-ring-client-sectors > .dan-ring-sector,
.dan-ring-project-piece {filter:drop-shadow(0 3px 3px rgba(21,47,63,.17));}
.dan-ring-client-sectors[data-active="true"] > .dan-ring-sector,
.dan-ring-client-sectors[data-active="true"] .dan-ring-project-piece {filter:drop-shadow(0 8px 6px rgba(21,47,63,.27));}
.dan-client-label-holder .dan-ring-client-name {display:block;width:100%;height:100%;padding:12px 16px;border:1px solid #d2e1e8;border-left:5px solid var(--client-color);border-radius:12px;background:#fff;color:#233f4f;text-align:left;font-size:14px;font-weight:700;line-height:1.3;white-space:normal;overflow-wrap:anywhere;pointer-events:auto;cursor:pointer;}
.dan-project-card-holder .dan-project-hover-card {position:relative;box-sizing:border-box;width:270px;height:100%;padding:12px;gap:12px;flex-direction:row;text-align:left;animation:none;}
.dan-project-card-holder .dan-project-coverage-circle {position:static;left:auto;top:auto;width:52px;height:52px;min-width:52px;max-width:52px;flex:0 0 52px;background:none;box-shadow:none;}
.dan-project-card-holder .dan-project-hover-card > div {width:auto;flex:1;padding-top:0;}
.dan-project-card-holder .dan-project-hover-card strong {font-size:13px;line-height:1.3;overflow-wrap:anywhere;white-space:normal;}
.dan-project-card-holder .dan-project-hover-card span {font-size:11px;}
.dan-project-card-holder .dan-project-hover-card small {font-size:10px;overflow-wrap:anywhere;}
.dan-person-plot {cursor:grab;touch-action:pan-y;user-select:none;}
.dan-person-plot.is-dragging,.dan-person-plot.is-dragging .pp-day {cursor:grabbing;}
.dan-person-plot svg {width:auto;min-width:0;height:168px;max-width:none;}
.pp-date {font-size:12px;}
.pp-axis {font-size:12px;}
.pp-today {pointer-events:none;}

/* Copertura della finestra temporale, distinta dalla durata globale. */
#planGantt .dan-gantt-day .dan-gantt-covered { background:#80c6a3; }
#planGantt .dan-gantt-key-covered { background:#80c6a3; }
.dan-gantt-row .dan-project-coverages { grid-column:1/3; grid-row:4; display:grid; gap:6px; }
.dan-gantt-row .dan-project-period-coverage, .dan-gantt-row .dan-project-global-coverage { display:flex; align-items:center; gap:10px; padding:10px 8px; margin:4px 0; border:1px solid #dbe7ed; border-radius:12px; background:#f6fafc; }
.dan-project-period-ring { display:grid; place-items:center; position:relative; flex:0 0 52px; width:52px; height:52px; border-radius:50%; background:conic-gradient(var(--period-color,#095373) var(--period-coverage,0%),#e4edf1 0); }
.dan-project-period-ring::before { content:''; position:absolute; inset:6px; background:#f6fafc; border-radius:50%; }
.dan-project-period-ring > span { position:relative; font-size:12px; font-weight:750; color:#153b50; }
.dan-project-period-words { min-width:0; line-height:1.4; }
.dan-project-period-words strong { display:block; font-size:10px; color:#095373; }
.dan-gantt-row .dan-project-period-words small { display:block; font-size:9px; color:#506775; margin-top:3px; }
.dan-gantt-row .dan-project-edit { grid-row:5; }
.dan-gantt-row .dan-project-compare { grid-row:6; }

/* Copertura: identita e comandi, riepiloghi, grafico affiancati. */
#planGanttViewport {--gantt-label-width:440px;}
#planGantt .dan-gantt-row {min-height:0;margin-bottom:10px;}
#planGantt .dan-gantt-row {content-visibility:auto;contain-intrinsic-block-size:auto 218px;}
#planGantt .dan-project-fragment {animation-duration:.22s;}
#planGantt .dan-gantt-row > .dan-gantt-label {width:var(--gantt-label-width);min-width:var(--gantt-label-width);padding:12px 10px;grid-template-columns:58px 112px minmax(0,1fr);grid-template-rows:minmax(42px,auto) minmax(20px,auto) 34px 24px;gap:6px 10px;align-content:start;}
#planGantt .dan-gantt-dates > aside,#planGantt .dan-company-label {width:var(--gantt-label-width);min-width:var(--gantt-label-width);box-sizing:border-box;}
#planGantt .dan-gantt-row .dan-project-fragment {grid-column:1;grid-row:1/3;width:58px;height:66px;align-self:start;}
#planGantt .dan-gantt-row .dan-gantt-project {grid-column:2;grid-row:1;align-self:start;}
#planGantt .dan-gantt-row .dan-gantt-label > small {grid-column:2;grid-row:2;align-self:start;}
#planGantt .dan-gantt-row .dan-project-edit {grid-column:1/3;grid-row:3;padding:6px 8px;align-self:start;}
#planGantt .dan-gantt-row .dan-project-compare {grid-column:1/3;grid-row:4;margin:0;padding:2px;align-self:start;}
#planGantt .dan-gantt-row .dan-project-coverages {grid-column:3;grid-row:1/5;gap:8px;align-self:start;}
#planGantt .dan-gantt-row .dan-project-global-coverage,#planGantt .dan-gantt-row .dan-project-period-coverage {margin:0;padding:9px 7px;gap:8px;min-height:72px;}
#planGantt .dan-project-period-ring {width:44px;height:44px;flex-basis:44px;}
#planGantt .dan-project-period-ring::before {inset:5px;}
#planGantt .dan-project-period-ring > span {font-size:11px;}
@media(max-width:900px) {
  #planGanttViewport {--gantt-label-width:380px;}
  #planGantt .dan-gantt-row > .dan-gantt-label {grid-template-columns:48px 92px minmax(0,1fr);gap:6px 8px;}
  #planGantt .dan-gantt-row .dan-project-fragment {width:48px;}
}
@media(max-width:600px) {
  #planGanttViewport {--gantt-label-width:330px;}
  #planGantt .dan-gantt-row > .dan-gantt-label {grid-template-columns:40px 82px minmax(0,1fr);padding:10px 8px;gap:6px;}
  #planGantt .dan-gantt-row .dan-project-fragment {width:40px;}
  #planGantt .dan-project-period-ring {width:38px;height:38px;flex-basis:38px;}
}

/* Calendario compatto ripetuto sotto il grafico di ogni progetto. */
#planGantt .dan-gantt-project-track { grid-template-rows:140px 24px 28px; row-gap:0; align-content:start; }
.dan-gantt-row > .dan-gantt-project-track { margin-left:-4px; }
#planGantt .dan-gantt-date strong { font-size:12px; }
#planGantt .dan-gantt-date > span:not(.dan-gantt-today-label) { font-size:10px; }
.dan-gantt-card-date { display:flex; align-items:center; justify-content:center; margin-top:5px; min-width:0; font-size:11px; color:#435c6b; font-variant-numeric:tabular-nums; }
.dan-gantt-month-a { background:#eef1f4; }
.dan-gantt-month-b { background:#e3e8ed; }
.dan-gantt-card-month { display:flex; align-items:center; justify-content:center; min-width:0; padding:3px 2px; border-radius:0 0 5px 5px; font-size:11px; font-weight:600; color:#435c6b; white-space:nowrap; }
.dan-gantt-card-date.is-today { background:#fff2cf; color:#805300; font-weight:700; }
#planGantt .dan-company-strip { top:var(--gantt-header-height,111px); }

/* Nella vista Gantt i controlli lasciano subito spazio ai progetti. */
#view-planning:has(#planExplore.is-exploring) > .d-flex { margin-bottom:6px!important; }
#view-planning:has(#planExplore.is-exploring) > .dan-planning-history-trigger { margin-bottom:8px; }
#view-planning .dan-explore.is-exploring { gap:12px; }
.is-exploring #planOverview { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; margin-bottom:0; }
.is-exploring #planOverview .dan-overview-header { grid-column:1; padding:10px 16px!important; gap:12px; border-bottom:0; }
.is-exploring #planOverview .dan-overview-header p { display:none; }
.is-exploring #planOverview h2 { margin-bottom:0; }
.is-exploring #planOverview .dan-overview-period { grid-column:2; padding:8px 16px 8px 0; gap:8px; }
.is-exploring #planOverview .dan-overview-period input { margin-top:3px; padding:6px 8px; }
.is-exploring #planOverview .dan-overview-status { grid-column:1/-1; }
.is-exploring #planOverview .dan-overview-status:empty { display:none; }
.is-exploring #planOverview .dan-overview-selection { grid-column:1/-1; justify-self:start; margin:0 16px 8px; padding:4px 8px; }
.is-exploring #planGantt .dan-gantt-header { padding:10px 16px!important; gap:12px; }
.is-exploring #planGantt .dan-gantt-header h2 { font-size:17px; margin-bottom:0; }
.is-exploring #planGantt .dan-gantt-header p { display:none; }
.is-exploring #planGantt .dan-gantt-toolbar { padding:8px 16px 4px; gap:12px; }
.is-exploring #planGantt .dan-gantt-toolbar { flex-wrap:wrap; }
.is-exploring #planGantt .dan-gantt-toolbar input { max-width:100%; }
.is-exploring #planGantt .dan-gantt-legend { padding:4px 16px 8px; gap:10px; }
.is-exploring #planGantt .dan-gantt-dates { padding:6px 0; }
.is-exploring #planGantt .dan-gantt-dates > aside { padding:6px 4px; }
.is-exploring #planGantt .dan-gantt-dates .dan-gantt-track { padding-top:22px; padding-bottom:4px; }
.is-exploring #planGantt .dan-gantt-today-label { padding:2px 5px; bottom:calc(100% + 3px); font-size:9px; }
.is-exploring #planGantt .dan-company-strip { margin-bottom:8px; }
.is-exploring #planGantt .dan-company-label { padding:6px 12px; font-size:10px; }
.is-exploring #planGantt .dan-company-strip .dan-gantt-track { padding-top:4px; padding-bottom:4px; }
@media(max-width:850px) {
    .is-exploring #planOverview { grid-template-columns:1fr; }
    .is-exploring #planOverview .dan-overview-period { grid-column:1; padding:0 16px 8px; }
    .is-exploring #planOverview .dan-overview-period label { min-width:0; flex:1; }
    .is-exploring #planOverview .dan-overview-period input { width:100%; max-width:180px; }
}

/* Le card da dimensionare condividono lo stile delle card progetto. */
#planOverview .dan-undimensioned-holder .dan-project-hover-card {animation:none;}

/* Una linea per ogni FTE, con spazio sufficiente anche per progetti grandi. */
#planGantt .dan-gantt-project-track {grid-template-rows:var(--gantt-project-height,140px) 24px 28px;}
#planGantt .dan-gantt-project-track .dan-gantt-day,
#planGantt .dan-gantt-project-track .dan-project-y-axis {height:var(--gantt-project-height,140px);}

/* Pool compatto; il confronto riutilizza i grafici e i dettagli originali. */
#asgContenuto .asg-confronto-toolbar {display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:10px 0;}
#asgContenuto .asg-confronto-toolbar > div {display:flex;gap:6px;flex-wrap:wrap;}
#asgContenuto .asg-confronto-toolbar button {border:1px solid #c9dce6;border-radius:8px;padding:7px 11px;background:#fff;color:#095373;font:inherit;font-size:.76rem;}
#asgContenuto .asg-confronto-toolbar button[aria-pressed="true"] {background:#095373;color:#fff;}
#asgContenuto .asg-confronto-toolbar button:disabled {opacity:.5;}
#asgContenuto .asg-confronto-toolbar > span {font-size:.7rem;color:#607583;}
#asgContenuto .asg-confronta {display:flex;align-items:center;justify-content:flex-end;gap:5px;margin-top:10px;padding:5px 0;font-size:.72rem;color:#095373;cursor:pointer;}
#asgContenuto .asg-confronta input {accent-color:#095373;width:15px;height:15px;}
#asgContenuto .asg-confronta-selezionate {display:block;width:100%;margin-top:3px;padding:6px 3px;border:1px solid #c9dce6;border-radius:7px;background:#edf7fb;color:#095373;font:inherit;font-size:.65rem;line-height:1.3;cursor:pointer;}
#asgContenuto .asg-confronta-selezionate:hover:not(:disabled) {background:#095373;color:#fff;}
#asgContenuto .asg-confronta-selezionate:disabled {opacity:.45;cursor:default;}
#asgContenuto .asg-shortlisted {box-shadow:inset 0 0 0 1px #095373;}
#asgContenuto .asg-tess-compatta {height:auto!important;min-height:0!important;padding:78px 10px 8px!important;align-self:start;}
#asgContenuto .asg-tess-compatta .asg-person-detail,
#asgContenuto .asg-tess-compatta .asg-btn-buco {display:none!important;}
#asgContenuto .asg-tess-compatta .badge-dentro {top:8px;left:8px;right:8px;}
#asgContenuto .asg-tess-compatta .asg-badge-lib {top:45px;right:8px;max-width:calc(100% - 16px);}
#asgContenuto .asg-pool-disponibilita {display:none;}
#asgContenuto .asg-tess-compatta .asg-pool-disponibilita {display:block;position:absolute;top:46px;right:8px;font-size:.64rem;color:#08765c;font-weight:700;}
#asgContenuto .asg-tess-compatta:has(.asg-badge-lib) .asg-pool-disponibilita {display:none;}
#asgContenuto .asg-tess-compatta .asg-confronta {margin-top:8px;}
#asgContenuto .asg-tess[hidden], #asgContenuto .asg-griglia[hidden] {display:none!important;}

#asgContenuto .asg-confronto-origine {font-size:.64rem;color:#607583;margin:4px 0;}
#asgContenuto.asg-mode-confronto #asgPoolPersone {display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:12px;align-items:start;}
#asgContenuto.asg-mode-confronto #asgPoolPersone > .asg-sec {display:none;}
#asgContenuto.asg-mode-confronto #asgPoolPersone > .asg-griglia:not([hidden]) {display:contents;}

/* Dimensioni del pool indipendenti dai dettagli dei grafici di confronto. */
#asgStage {min-width:0;min-height:0;}
#asgStage .asg-testata {max-height:55%;overflow-y:auto;}
#asgStage .asg-testata {cursor:grab;touch-action:none;}
#asgStage .asg-testata :is(button,input,select,textarea,label,a,summary,form) {touch-action:auto;}
#asgStage .asg-testata .asg-project-move {position:absolute;right:46px;top:12px;width:28px;height:28px;border:1px solid #d6e2e8;border-radius:7px;background:#f4f8fa;color:#095373;cursor:grab;touch-action:none;line-height:1;z-index:2;}
#asgStage .asg-project-move:focus-visible {outline:2px solid #095373;outline-offset:2px;}
#asgStage.asg-moving,#asgStage.asg-moving .asg-testata,#asgStage.asg-moving .asg-project-move {cursor:grabbing;user-select:none;}
#asgStage .asg-corpo {min-height:0;}
#asgStage .asg-project-resize {position:absolute;right:4px;bottom:4px;width:30px;height:30px;border:1px solid #b8ccd7;border-radius:8px;background:#f2f7fa;color:#095373;font-size:20px;line-height:1;cursor:nwse-resize;touch-action:none;z-index:5;}
#asgStage .asg-project-resize:focus-visible {outline:2px solid #095373;outline-offset:2px;}
#asgStage.asg-resizing {animation:none!important;user-select:none;}
#asgContenuto .asg-dimensioni-persone {align-items:center;gap:7px;}
#asgContenuto .asg-dimensioni-persone label,#asgDimensioneValore {font-size:.7rem;color:#385464;margin:0;}
#asgDimensionePersone {width:100px;accent-color:#095373;cursor:pointer;}
#asgDimensioneValore {min-width:34px;font-variant-numeric:tabular-nums;}
#asgContenuto:not(.asg-mode-confronto) .asg-griglia-persone {grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--asg-card-width,168px)),1fr));gap:8px;}
#asgContenuto.asg-pool-una-riga:not(.asg-mode-confronto) .asg-griglia-persone {grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:var(--asg-card-width,168px);overflow-x:auto;overscroll-behavior-x:contain;padding:4px 2px 12px;scrollbar-width:thin;}
#asgContenuto .asg-tess-compatta {min-width:0;padding:calc(78px * var(--asg-card-scale,1)) calc(10px * var(--asg-card-scale,1)) calc(8px * var(--asg-card-scale,1))!important;}
#asgContenuto .asg-tess-compatta > svg {zoom:var(--asg-card-scale,1);max-width:100%;height:auto!important;}
#asgContenuto .asg-tess-compatta .badge-dentro {font-size:max(7.5px,calc(.54rem * var(--asg-card-scale,1)));letter-spacing:0;}
#asgContenuto .asg-tess-compatta .asg-pool-disponibilita {top:calc(46px * var(--asg-card-scale,1));font-size:max(9px,calc(.64rem * var(--asg-card-scale,1)));}
#asgContenuto .asg-tess-compatta .asg-badge-lib {top:calc(45px * var(--asg-card-scale,1));font-size:max(9px,calc(.64rem * var(--asg-card-scale,1)));}
#asgContenuto .asg-tess-compatta .nome {font-size:max(11px,calc(.78rem * var(--asg-card-scale,1)));white-space:normal;overflow-wrap:anywhere;line-height:1.25;margin-top:calc(8px * var(--asg-card-scale,1));}
#asgContenuto .asg-tess-compatta .ruolo {font-size:max(9px,calc(.6rem * var(--asg-card-scale,1)));line-height:1.3;}
#asgContenuto .asg-tess-compatta .asg-confronta {font-size:max(10px,calc(.72rem * var(--asg-card-scale,1)));margin-top:4px;gap:3px;}
#asgContenuto .asg-tess-compatta .asg-confronta-selezionate {font-size:max(9px,calc(.65rem * var(--asg-card-scale,1)));min-height:30px;padding:4px 1px;}

/* Quick origami opening without forcing a synchronous layout of the page. */
.asg-origami.aperto .asg-foglio {transition:none;}
.asg-origami.aperto.asg-animate-open .asg-foglio {animation:asg-apertura-rapida 220ms cubic-bezier(.2,.8,.25,1) both;}
.asg-origami.aperto.asg-animate-open .asg-foglio:nth-child(2) {animation-delay:25ms;}
.asg-origami.aperto.asg-animate-open .asg-foglio:nth-child(3) {animation-delay:50ms;}
@keyframes asg-apertura-rapida {from {opacity:0;transform:rotateY(-35deg) translateY(8px) scale(.97);}to {opacity:1;transform:rotateY(0) translateY(0) scale(1);}}
@media(prefers-reduced-motion:reduce){.asg-origami.aperto.asg-animate-open .asg-foglio {animation:none;}}
#planGantt .dan-project-goto-gantt {grid-column:1/3;grid-row:5;border:1px solid #c6dce9;border-radius:7px;color:#095373;background:#eff7fb;font-size:11px;padding:5px 8px;}
.dan-bilancio-legenda .dan-linea-copertura {width:24px;height:0;border-top:3px solid #258464;display:inline-block;}
