@import '_content/SednaBlazor.Ui/SednaBlazor.Ui.ba4smck7tv.bundle.scp.css';

/* /Pages/Anagrafiche/Azienda/DatiDittaPage.razor.rz.scp.css */
/* Dati Ditta — testata fissa, corpo a schede che scorre.

   La variante .entity-page--sticky di app.css fa scorrere il figlio diretto
   .tab-content-grid; qui in mezzo c'è il componente delle schede, quindi il
   contenitore che scorre è .dd-body e la regola generica va superata (che gli
   darebbe flex: 0 0 auto, cioè nessuno scroll e testata spinta fuori). */
.entity-page--sticky > .dd-body[b-uhjtel9w72] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 1rem;
}

/* La striscia delle schede resta attaccata in cima mentre il modulo scorre:
   cambiare scheda non deve costringere a risalire. */
.dd-body[b-uhjtel9w72]  .dxbl-tabs {
    position: sticky;
    top: 0;
    z-index: 3;
    background: var(--sedna-bg, #f6f7f9);
}

/* ══ LE LARGHEZZE DEI CAMPI CORTI ══════════════════════════════════════════════
   Antonio, 17/08: «codice stato, regime fiscale, codice attività, CAP, numero civico,
   provincia e nazione sono troppo stretti e inutilizzabili». Erano a ColSpanMd 1 o 2,
   cioè un dodicesimo di riga: su un portatile la cella diventa più stretta del contenuto
   minimo dell'editor DevExpress — e un editor che non sta nella sua cella NON si stringe,
   deborda. È la stessa trappola già pagata nel piede documento (v. DocumentoPiede.razor.css):
   non è «stretto», è fuori posto, e per questo si nota da «inutilizzabile» e non da «piccolo».

   La correzione è in DUE METÀ, e servono entrambe:
   1. la CELLA si allarga — i ColSpanMd nel .razor — così l'editor non viene schiacciato;
   2. l'INPUT si tappa in `ch`, che è la larghezza del carattere "0" del font in uso: il
      campo resta grande quanto quello che ci si scrive dentro, invece di gonfiarsi per
      riempire la cella allargata. Il numero da rispettare sono i CARATTERI che ci stanno,
      non i pixel: un CAP sono 5 cifre, una provincia 2 lettere, un codice ATECO ~8
      caratteri col punto, un codice stato 2. Le misure hanno un carattere d'aria in più
      del contenuto, per poterci cliccare dentro.

   ⚠️ `min-width: 0` e `width: 100%` non sono decorativi: senza, l'editor può ancora
   superare la cella in una finestra stretta e stamparsi sopra il vicino.

   Due classi per campo: `dd-corto` è il marcatore (regola condivisa), la seconda è la
   MISURA. Aggiungere una misura nuova = una riga qui, non una regola nuova. */
/* ⚠️ LA MISURA È CONTENUTO + CORNICE, non solo contenuto (Antonio, 2026-08-17: «alcuni
   campi sono troppo stretti per essere usabili»). Un `ch` conta il carattere, ma dentro
   il riquadro ci stanno anche i due padding e — soprattutto — il PULSANTE «×» di
   pulizia, che è largo quanto tre caratteri e sta a destra del testo: a 6ch il valore
   spariva sotto la × e si vedeva solo lei. È la stessa trappola già pagata su
   SednaDateEdit (min-width: calc(10ch + 3.75rem)).
   Sui campi da due o tre caratteri la × si spegne anche nel markup
   (ShowClearButton="false"): su un campo così corto svuotare a mano costa un gesto, e
   il posto serve al dato. Qui resta comunque il margine, perché la cornice c'è
   sempre. */
.dd-body[b-uhjtel9w72]  .dd-corto { --dd-cornice: 2.25rem; }

.dd-body[b-uhjtel9w72]  .dd-w-prov    { --dd-campo: 4ch; }   /* «RC» */
.dd-body[b-uhjtel9w72]  .dd-w-stato   { --dd-campo: 4ch; }   /* «IT» — codice stato e nazione */
/* CAP e civico più larghi del minimo indispensabile (Antonio, 2026-08-17): «89100» sono
   cinque cifre, ma la casella dev'essere comoda da centrare col dito e da rileggere — e il
   civico arriva a «123/A scala B». Il codice attività tiene un ATECO col punto e qualche
   carattere di scorta (la colonna del server ne accetta 20). */
.dd-body[b-uhjtel9w72]  .dd-w-cap     { --dd-campo: 10ch; }  /* «89100», e ora anche «SW1A 1AA»:
                                                        la colonna del server è passata da 5 a 10 */
.dd-body[b-uhjtel9w72]  .dd-w-divisa  { --dd-campo: 6ch; }   /* «EUR», esattamente tre */
.dd-body[b-uhjtel9w72]  .dd-w-gln     { --dd-campo: 14ch; }  /* dieci cifre del GLN */
.dd-body[b-uhjtel9w72]  .dd-w-civico  { --dd-campo: 10ch; }  /* «123/A» */
.dd-body[b-uhjtel9w72]  .dd-w-ateco   { --dd-campo: 16ch; }  /* «01.13.10» */
.dd-body[b-uhjtel9w72]  .dd-w-importo { --dd-campo: 13ch; }  /* «1.000.000,00» */

/* Il tappo vale sul riquadro DevExpress, sul contenitore del combo nativo e sull'input
   nudo: la libreria rende uno dei tre a seconda del componente e del ramo nativo. */
.dd-body[b-uhjtel9w72]  .dd-corto .dxbl-edit,
.dd-body[b-uhjtel9w72]  .dd-corto .sedna-lookup-container,
.dd-body[b-uhjtel9w72]  .dd-corto .sedna-native-input {
    max-width: calc(var(--dd-campo) + var(--dd-cornice, 2.25rem));
    min-width: 0;
    width: 100%;
}

/* ── I campi SPENTI perché il server non ha il posto dove salvarli ──
   Lo `span` esiste per portare il `title` col motivo (un componente Blazor non lo
   inoltrerebbe): deve comportarsi come il campo che avvolge, cioè prendere la riga. */
.dd-gap[b-uhjtel9w72] {
    display: block;
    /* `help` e non `not-allowed`: il puntatore dice «qui c'è una spiegazione», che è
       esattamente cosa c'è nel title. */
    cursor: help;
}

/* Nota esplicativa dei decimali: è la parte che evita la telefonata "perché i
   prezzi sono cambiati", quindi si legge come un testo, non come un campo. */
.dd-nota[b-uhjtel9w72] {
    display: flex;
    gap: 0.625rem;
    padding: 0.75rem 0.875rem;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-variant, #f9fafb);
    border: 1px solid var(--sedna-border-light, #eee);
    font-size: 0.75rem;
    line-height: 1.45;
    color: var(--sedna-text-secondary);
}

.dd-nota i[b-uhjtel9w72] {
    color: var(--sedna-primary);
    font-size: 0.9rem;
    line-height: 1.3;
}

.dd-nota p[b-uhjtel9w72] { margin: 0 0 0.375rem; }
.dd-nota p:last-child[b-uhjtel9w72] { margin-bottom: 0; }
.dd-nota strong[b-uhjtel9w72] { color: var(--sedna-text); }

.dd-nota__warn[b-uhjtel9w72] { color: var(--sedna-warning-700, #b07400); }

/* I nomi dei campi che mancano al server si citano ESATTI: chi legge la nota deve poterli
   cercare così come sono scritti, nel backend o nella consegna. */
.dd-nota code[b-uhjtel9w72] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.6875rem;
    color: var(--sedna-text);
    background: var(--sedna-surface-variant, #eef0f3);
    border-radius: 3px;
    padding: 0 3px;
}

/* ── Il progressivo invio FE: tre controlli su una riga ─────────────────────────
   Anno, ultimo assegnato e i due pulsanti stanno insieme perché sono UN gesto solo
   («in che anno, a che numero, vai»), e separarli in tre celle del FormLayout li
   avrebbe fatti leggere come tre campi indipendenti da compilare. Le larghezze sono
   fissate sul contenuto — quattro cifre l'anno, cinque il progressivo — perché sono
   codici di lunghezza nota, e una casella larga il doppio del suo contenuto invita
   a scriverci dentro qualcos'altro. */
.dd-body[b-uhjtel9w72]  .dd-progressivo {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    flex-wrap: wrap;
}

.dd-body[b-uhjtel9w72]  .dd-progressivo__anno { width: 6ch; }
.dd-body[b-uhjtel9w72]  .dd-progressivo__num { width: 8ch; }

.dd-body[b-uhjtel9w72]  .dd-progressivo__anno .dxbl-edit,
.dd-body[b-uhjtel9w72]  .dd-progressivo__num .dxbl-edit {
    min-width: 0;
    width: 100%;
}

/* ── Un valore che si legge qui ma si cambia altrove ────────────────────────────
   La casella e il link stanno sulla stessa riga apposta: il rimando è parte del
   dato, non una nota a piè di pagina. Chi vede «Attivo» e vuole cambiarlo deve
   trovare la strada nello stesso sguardo, o cercherà il salvataggio qui. */
.dd-body[b-uhjtel9w72]  .dd-rimando {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    min-height: var(--dd-cornice, 2.25rem);
}

.dd-body[b-uhjtel9w72]  .dd-rimando a {
    font-size: 0.6875rem;
    white-space: nowrap;
}

.dd-body[b-uhjtel9w72]  .dd-rimando--muto {
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
}

/* Il logo della carta intestata.

   ⚠️ Il riquadro ha le PROPORZIONI DI STAMPA (150×46 nel report, cioe' ~2,5:1) e mostra
   l'immagine con object-fit: contain, esattamente come DevExpress la mette in pagina con
   ZoomImage. Serve a far vedere qui quello che uscira' sul foglio: un marchio quadrato in un
   riquadro largo esce piccolo, ed e' meglio scoprirlo adesso che alla prima fattura. */
.ditta-logo[b-uhjtel9w72] {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    flex-wrap: wrap;
}

.ditta-logo__riquadro[b-uhjtel9w72] {
    flex: 0 0 auto;
    width: 250px;
    aspect-ratio: 250 / 77;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px dashed var(--sedna-color-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-color-surface-2, rgba(0, 0, 0, .02));
    overflow: hidden;
}

.ditta-logo__riquadro img[b-uhjtel9w72] {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.ditta-logo__vuoto[b-uhjtel9w72] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .25rem;
    color: var(--sedna-color-text-tertiary, var(--sedna-color-text-secondary));
    font-size: .75rem;
}

.ditta-logo__comandi[b-uhjtel9w72] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    max-width: 30rem;
}

/* L'input nativo sparisce ma resta raggiungibile da tastiera: e' la label a fare da pulsante,
   e un display:none toglierebbe l'elemento dal giro del Tab.

   ⚠️ SERVE ::deep, E L'HO SCOPERTO A VIDEO. L'<input type=file> lo disegna InputFile, che e'
   un COMPONENTE FIGLIO: il CSS con ambito di questa pagina marca solo gli elementi che la
   pagina rende di suo, quindi la regola non lo raggiungeva e in mezzo alla maschera restava
   un «Scegli file / Nessun file selezionato» accanto al nostro pulsante. */
[b-uhjtel9w72] .ditta-logo__input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    overflow: hidden;
}

.ditta-logo__nota[b-uhjtel9w72],
.ditta-logo__errore[b-uhjtel9w72] {
    flex: 1 1 100%;
    margin: 0;
    font-size: .75rem;
    line-height: 1.4;
}

.ditta-logo__nota[b-uhjtel9w72] {
    color: var(--sedna-color-text-secondary);
}

.ditta-logo__errore[b-uhjtel9w72] {
    color: var(--sedna-error-700, #d32f2f);
}
/* /Pages/Anagrafiche/Azienda/ProfiliEmailPage.razor.rz.scp.css */
.pmail[b-3izug1i4u1] { padding: var(--sedna-space-4) 0; }

/* Schede e non righe di griglia: un profilo è fatto di quattro informazioni che si leggono
   insieme (chi manda, da dove, come si autentica, se è a posto), e in una riga di tabella
   diventerebbero otto colonne strette da leggere in orizzontale. Sono pochi, per definizione. */
.pmail__griglia[b-3izug1i4u1] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    gap: var(--sedna-space-3);
}

.pmail__card[b-3izug1i4u1] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: var(--sedna-space-3);
    border: 1px solid var(--sedna-border-light, #eee);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface, #fff);
}

/* Disattivato: si vede da lontano che quella casella non manda, senza doverlo leggere. */
.pmail__card--spento[b-3izug1i4u1] { opacity: 0.62; }

.pmail__card-top[b-3izug1i4u1] { display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; }

.pmail__cod[b-3izug1i4u1] {
    font-weight: var(--sedna-font-semibold);
    font-size: var(--sedna-text-sm);
    letter-spacing: 0.02em;
}

.pmail__badge[b-3izug1i4u1] {
    font-size: var(--sedna-text-xs);
    padding: 0 0.35rem;
    border-radius: var(--sedna-radius-sm, 4px);
    line-height: 1.5;
}

.pmail__badge--pref[b-3izug1i4u1] { background: var(--sedna-primary-subtle); color: var(--sedna-primary); }
.pmail__badge--pec[b-3izug1i4u1] { background: var(--sedna-success-50); color: var(--sedna-success-700); }
.pmail__badge--off[b-3izug1i4u1] { background: var(--sedna-surface-variant); color: var(--sedna-text-secondary); }

.pmail__desc[b-3izug1i4u1] { font-size: var(--sedna-text-sm); color: var(--sedna-text-secondary); }

.pmail__mitt[b-3izug1i4u1] {
    font-size: var(--sedna-text-sm);
    display: flex;
    gap: 0.35rem;
    align-items: center;
    overflow-wrap: anywhere;
}

.pmail__srv[b-3izug1i4u1] {
    display: flex;
    gap: 0.35rem;
    align-items: center;
    flex-wrap: wrap;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
}

.pmail__tag[b-3izug1i4u1] {
    padding: 0 0.3rem;
    border: 1px solid var(--sedna-border-light, #eee);
    border-radius: var(--sedna-radius-sm, 4px);
}

/* Il segreto mancante è l'unica cosa di questa scheda che chiede di essere fatta adesso. */
.pmail__tag--manca[b-3izug1i4u1] {
    border-color: color-mix(in srgb, var(--sedna-warning-500) 45%, transparent);
    background: var(--sedna-warning-50);
    color: var(--sedna-warning-700);
    font-weight: var(--sedna-font-semibold);
}

.pmail__azioni[b-3izug1i4u1] { display: flex; gap: 0.35rem; margin-top: 0.35rem; flex-wrap: wrap; }

.pmail__esito[b-3izug1i4u1] {
    display: flex;
    gap: 0.35rem;
    align-items: flex-start;
    font-size: var(--sedna-text-sm);
    padding: 0.35rem 0.5rem;
    border-radius: var(--sedna-radius-sm, 4px);
}

.pmail__esito--ok[b-3izug1i4u1] { background: var(--sedna-success-50); color: var(--sedna-success-700); }
.pmail__esito--ko[b-3izug1i4u1] { background: var(--sedna-error-50); color: var(--sedna-error-700); }

/* ─── Il vuoto ─── */
.pmail__vuoto[b-3izug1i4u1] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sedna-space-2);
    padding: var(--sedna-space-6) var(--sedna-space-4);
    text-align: center;
    color: var(--sedna-text-secondary);
}

.pmail__vuoto i[b-3izug1i4u1] { font-size: 2.5rem; color: var(--sedna-text-tertiary, #9ca3af); }
.pmail__vuoto h3[b-3izug1i4u1] { margin: 0; font-size: var(--sedna-text-lg); color: var(--sedna-text); }
.pmail__vuoto p[b-3izug1i4u1] { margin: 0; max-width: 46ch; line-height: var(--sedna-leading-relaxed); }

/* ─── La maschera ─── */
.pmail-form[b-3izug1i4u1] { display: flex; flex-direction: column; gap: var(--sedna-space-3); }

.pmail-form__riga[b-3izug1i4u1] { display: flex; gap: var(--sedna-space-3); flex-wrap: wrap; align-items: flex-start; }

.pmail-form__riga--flag[b-3izug1i4u1] { align-items: center; gap: var(--sedna-space-2); }

.pmail-form__campo[b-3izug1i4u1] { display: flex; flex-direction: column; gap: 2px; }

.pmail-form__campo > label[b-3izug1i4u1] {
    font-size: var(--sedna-text-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    font-weight: var(--sedna-font-semibold);
}

.pmail-form__campo--xs[b-3izug1i4u1] { width: 110px; }
.pmail-form__campo--md[b-3izug1i4u1] { width: 250px; }
.pmail-form__campo--lg[b-3izug1i4u1] { flex: 1 1 260px; min-width: 220px; }
.pmail-form__campo--flag[b-3izug1i4u1] { flex-direction: row; gap: var(--sedna-space-3); align-self: flex-end; padding-bottom: 3px; }

.pmail-form__nota[b-3izug1i4u1] {
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    line-height: 1.4;
}

/* «Togli la password» è un gesto distruttivo dentro una nota: sta scritto come un link e non
   come un pulsante rosso, perché il posto giusto per gridare sarebbe una conferma, non qui. */
.pmail-form__togli[b-3izug1i4u1] {
    background: none;
    border: 0;
    padding: 0;
    color: var(--sedna-error-600, #dc2626);
    cursor: pointer;
    font-size: inherit;
}

.pmail-form__togli:hover[b-3izug1i4u1] { text-decoration: underline; }
/* /Pages/Anagrafiche/BancheAppoggio/BancaAppoggioPage.razor.rz.scp.css */

/* ── Modalità di estinzione dell'anticipo ────────────────────────────────────────
   Due pulsanti e non una tendina: sono l'una il contrario dell'altra, e quello che le
   distingue è CHI paga — una frase, non una sigla. In tendina si sarebbe visto solo
   «A» o «B», e la differenza sarebbe rimasta da ricordare a memoria. */
.banca-modalita[b-1fcrniuhmi] { display: flex; flex-wrap: wrap; gap: 6px; }

.banca-modalita__b[b-1fcrniuhmi] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    flex: 1 1 240px;
    padding: 6px 10px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    font: inherit;
    font-size: var(--sedna-text-sm);
    text-align: left;
    cursor: pointer;
}

.banca-modalita__b:hover:not(:disabled)[b-1fcrniuhmi] { background: var(--sedna-surface-hover); }
.banca-modalita__b:disabled[b-1fcrniuhmi] { cursor: default; }

.banca-modalita__b.is-on[b-1fcrniuhmi] {
    background: color-mix(in srgb, var(--sedna-primary) 14%, transparent);
    border-color: var(--sedna-primary);
}

.banca-modalita__k[b-1fcrniuhmi] {
    flex: none;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.banca-modalita__t[b-1fcrniuhmi] { line-height: 1.35; }
/* /Pages/Anagrafiche/Clienti/CertificazioniInScadenzaPage.razor.rz.scp.css */
/* ============================================================
   CERTIFICAZIONI IN SCADENZA — lista read-only (guscio .sedna-page)
   Stili condivisi col design "griglia densa" delle altre liste
   (toolbar/search/segmented/banner) + badge giorni residui.
   ============================================================ */

/* ── Banner errore ── */
.list-error-banner[b-j0yq4g5oeu] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-shrink: 0;
    padding: 0.625rem 0.875rem;
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-600);
    border-radius: var(--sedna-radius-md, 0.5rem);
    color: var(--sedna-error-700);
    font-size: 0.875rem;
}

.list-error-banner__icon[b-j0yq4g5oeu] {
    font-size: 1rem;
    flex-shrink: 0;
}

.list-error-banner__text[b-j0yq4g5oeu] {
    flex: 1 1 auto;
    min-width: 0;
    font-weight: 500;
    overflow-wrap: anywhere;
}

.list-error-banner__actions[b-j0yq4g5oeu] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    flex-shrink: 0;
}

/* ── Toolbar: searchbox + segmented giorni preavviso ── */
.toolbar[b-j0yq4g5oeu] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.toolbar .search[b-j0yq4g5oeu] {
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-j0yq4g5oeu] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-j0yq4g5oeu] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-j0yq4g5oeu]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-j0yq4g5oeu] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

.segmented[b-j0yq4g5oeu] {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-variant);
    padding: 3px;
    gap: 2px;
    height: var(--sedna-input-height, 2.125rem);
}

    .segmented button[b-j0yq4g5oeu] {
        border: none;
        background: transparent;
        cursor: pointer;
        font-family: inherit;
        font-size: 0.8125rem;
        font-weight: var(--sedna-font-semibold, 600);
        color: var(--sedna-text-secondary);
        height: 100%;
        /* dentro la toolbar DevExpress i reset .dxbl-btn-group azzerano padding/size */
        padding: 0 12px !important;
        width: auto !important;
        min-width: max-content !important;
        border-radius: 4px;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        white-space: nowrap;
    }

        .segmented button:hover[b-j0yq4g5oeu] {
            color: var(--sedna-text);
        }

        .segmented button.active[b-j0yq4g5oeu] {
            background: var(--sedna-surface);
            color: var(--sedna-primary);
            box-shadow: 0 1px 2px rgba(16, 24, 40, 0.08);
        }

        .segmented button:focus-visible[b-j0yq4g5oeu] {
            outline: 2px solid var(--sedna-primary);
            outline-offset: 1px;
        }

/* ── Griglia: riempe lo spazio residuo e scrolla dentro ── */
.sedna-datagrid-wrapper[b-j0yq4g5oeu] {
    margin-bottom: 0.5rem;
}

[b-j0yq4g5oeu] .sedna-dx-grid {
    height: 100%;
    max-height: none;
}

[b-j0yq4g5oeu] .dxbl-grid-data-container {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* ── Celle ── */
.codice-mono[b-j0yq4g5oeu] {
    font-family: var(--sedna-font-mono);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--sedna-text-secondary);
    white-space: nowrap;
}

.cell-empty[b-j0yq4g5oeu] {
    color: var(--sedna-text-tertiary);
    font-family: var(--sedna-font-mono);
}

/* Link al cliente: sobrio, sottolineato solo su hover */
.cert-cliente-link[b-j0yq4g5oeu] {
    color: var(--sedna-text);
    font-weight: 500;
    text-decoration: none;
}

    .cert-cliente-link:hover[b-j0yq4g5oeu] {
        color: var(--sedna-primary);
        text-decoration: underline;
    }

/* Badge giorni residui: neutro, ambra sotto i 7 giorni, rosso se scaduta */
.cert-giorni[b-j0yq4g5oeu] {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: var(--sedna-font-semibold, 600);
    line-height: 1.4;
    padding: 1px 8px;
    border-radius: 999px;
    background: var(--sedna-neutral-100);
    color: var(--sedna-neutral-700);
    white-space: nowrap;
}

.cert-giorni--critica[b-j0yq4g5oeu] {
    background: var(--sedna-warning-50, #fff7e6);
    color: var(--sedna-warning-700, #a05a00);
}

.cert-giorni--scaduta[b-j0yq4g5oeu] {
    background: var(--sedna-error-50);
    color: var(--sedna-error-700);
}

/* ── Responsive ── */
@media (max-width: 760px) {
    .toolbar[b-j0yq4g5oeu] {
        flex-wrap: wrap;
    }

    .toolbar .search[b-j0yq4g5oeu] {
        max-width: none;
    }
}
/* /Pages/Anagrafiche/Clienti/ClientePage.razor.rz.scp.css */
/* ===================================
   CLIENTE PAGE - PAGE-SPECIFIC SCOPED STYLES
   Layout & shared styles are in app.css (entity-page, entity-alert, etc.)
   =================================== */

/* ===================================
   DESTINAZIONI TAB (CREATE MODE)
   =================================== */

.destinazioni-new-tab[b-nxmtcm0v97] {
    padding: 1.5rem 0;
}

.destinazioni-empty[b-nxmtcm0v97] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    border-radius: 10px;
    background: var(--sedna-state-info-bg, #e0f7fa);
    border: 1px solid var(--sedna-info-500, #00bcd4);
    color: var(--sedna-info-700, #0097a7);
    font-size: 0.875rem;
}

/* ===================================
   DETTAGLIO HEADER (design "detail-head")
   Crest + ragione sociale (h1) + codice mono + pill "non salvate".
   Tutti i colori via token -> theme-aware (light/dark) automatico.
   =================================== */
/* Header = CARD standard, coerente con l'header card delle liste
   (.sedna-page__head--card): stessa cornice, contenuto a una riga. */
.cli-detail-head[b-nxmtcm0v97] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.5rem 0.875rem;
    margin-bottom: 0.5rem;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, 0.75rem);
    box-shadow: var(--sedna-shadow-xs, 0 1px 2px rgba(16, 24, 40, 0.04));
}

.cli-dh-id[b-nxmtcm0v97] {
    display: flex;
    align-items: center;
    gap: 0.8125rem;
    min-width: 0;
    flex: 1;
}

.cli-crest[b-nxmtcm0v97] {
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: var(--sedna-surface-muted);
    color: var(--sedna-text-secondary);
    display: grid;
    place-items: center;
    font-size: 1.3rem;
    flex: none;
}

.cli-dh-titles[b-nxmtcm0v97] {
    min-width: 0;
}

.cli-dh-titles h1[b-nxmtcm0v97] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 600;
    letter-spacing: -0.015em;
    line-height: 1.1;
    color: var(--sedna-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cli-sub[b-nxmtcm0v97] {
    margin: 2px 0 0;
    font-size: 0.8125rem;
    color: var(--sedna-text-tertiary);
    display: flex;
    align-items: center;
    gap: 0.375rem;
    flex-wrap: wrap;
}

.cli-sub .cli-mono[b-nxmtcm0v97] {
    font-family: var(--sedna-font-mono, ui-monospace, "JetBrains Mono", "SFMono-Regular", Menlo, monospace);
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text-secondary);
}

.cli-sub .cli-sep[b-nxmtcm0v97] {
    color: var(--sedna-border);
}

.cli-sub .cli-mode-tag[b-nxmtcm0v97] {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-primary);
    background: var(--sedna-primary-subtle);
    padding: 1px 8px;
    border-radius: var(--sedna-radius-full);
    margin-left: 0.125rem;
}

/* pill "modifiche non salvate" (design .unsaved) */
.cli-unsaved[b-nxmtcm0v97] {
    display: inline-flex;
    align-items: center;
    gap: 0.4375rem;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--sedna-error-700);
    padding: 5px 11px;
    border-radius: var(--sedna-radius-full);
    background: var(--sedna-error-50);
    white-space: nowrap;
    flex: none;
}

.cli-unsaved .cli-dot[b-nxmtcm0v97] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--sedna-error);
    flex: none;
}

.cli-dh-actions[b-nxmtcm0v97] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: none;
}

@media (max-width: 576px) {
    .cli-detail-head[b-nxmtcm0v97] {
        flex-wrap: wrap;
    }

    .cli-dh-actions[b-nxmtcm0v97] {
        margin-left: 0;
        width: 100%;
        justify-content: flex-end;
    }
}

/* Record nav (design .rec-count): numerali tabellari mono per "N di M" */
.entity-nav-bar__position[b-nxmtcm0v97] {
    font-variant-numeric: tabular-nums;
}
/* /Pages/Anagrafiche/Clienti/ClientiListNew.razor.rz.scp.css */
/* ============================================================
   LISTA CLIENTI — design "griglia densa"
   Header + toolbar fissi in alto; la griglia (SednaDataGrid /
   DevExpress) scrolla internamente. Token mock -> token Sedna.
   Inset orizzontale uniforme via clamp() su ogni sezione.
   ============================================================ */

/* Layout pagina: gestito dal guscio globale .sedna-page (sedna.page.css).
   Qui restano solo gli stili specifici della pagina. */

/* ========================================
   BANNER ERRORE (visibilità fallimenti)
   ======================================== */
.list-error-banner[b-bd4see1583] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-shrink: 0;
    padding: 0.625rem 0.875rem;
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-600);
    border-radius: var(--sedna-radius-md, 0.5rem);
    color: var(--sedna-error-700);
    font-size: 0.875rem;
}

.list-error-banner__icon[b-bd4see1583] {
    font-size: 1rem;
    flex-shrink: 0;
}

.list-error-banner__text[b-bd4see1583] {
    flex: 1 1 auto;
    min-width: 0;
    font-weight: 500;
    overflow-wrap: anywhere;
}

.list-error-banner__actions[b-bd4see1583] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    flex-shrink: 0;
}

/* ========================================
   TOOLBAR — searchbox + segmented
   ======================================== */
/* Search + segmented vivono nella toolbar interna della griglia (stessa riga
   di Colonne/Esporta): niente riga dedicata sopra la griglia. */
.toolbar[b-bd4see1583] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.toolbar .search[b-bd4see1583] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-bd4see1583] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-bd4see1583] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-bd4see1583]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-bd4see1583] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

.toolbar-right[b-bd4see1583] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
}

/* segmented Tutti / Solo attivi — blu solo sullo stato attivo */
.segmented[b-bd4see1583] {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-variant);
    padding: 3px;
    gap: 2px;
    height: var(--sedna-input-height, 2.125rem);
}

    .segmented button[b-bd4see1583] {
        border: none;
        background: transparent;
        cursor: pointer;
        font-family: inherit;
        font-size: 0.8125rem;
        font-weight: var(--sedna-font-semibold, 600);
        color: var(--sedna-text-secondary);
        height: 100%;
        /* !important: dentro la toolbar DevExpress i reset .dxbl-btn-group
           azzerano il padding e forzano i button a 26px quadrati */
        padding: 0 12px !important;
        width: auto !important;
        min-width: max-content !important;
        border-radius: 4px;
        display: inline-flex;
        align-items: center;
        gap: 6px;
        white-space: nowrap;
    }

        .segmented button i[b-bd4see1583] {
            font-size: 0.85rem;
        }

        .segmented button:hover[b-bd4see1583] {
            color: var(--sedna-text);
        }

        .segmented button.active[b-bd4see1583] {
            background: var(--sedna-surface);
            color: var(--sedna-primary);
            box-shadow: 0 1px 2px rgba(16, 24, 40, 0.08);
        }

        .segmented button:focus-visible[b-bd4see1583] {
            outline: 2px solid var(--sedna-primary);
            outline-offset: 1px;
        }

/* ========================================
   BULK BAR (azioni sulla selezione)
   ======================================== */
.bulk-bar[b-bd4see1583] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex: none;
    padding: 7px 14px;
    background: var(--sedna-primary-subtle);
    border: 1px solid color-mix(in srgb, var(--sedna-primary) 28%, transparent);
    border-radius: var(--sedna-radius-input, 0.375rem);
    flex: none;
}

    .bulk-bar .count[b-bd4see1583] {
        font-weight: var(--sedna-font-semibold, 600);
        font-size: 0.875rem;
        color: var(--sedna-primary);
        white-space: nowrap;
    }

        .bulk-bar .count .mono[b-bd4see1583] {
            font-family: var(--sedna-font-mono);
            font-weight: 600;
        }

    .bulk-bar .deselect[b-bd4see1583] {
        background: none;
        border: none;
        cursor: pointer;
        color: var(--sedna-text-secondary);
        font-family: inherit;
        font-size: 0.8125rem;
        font-weight: var(--sedna-font-semibold, 600);
    }

        .bulk-bar .deselect:hover[b-bd4see1583] {
            color: var(--sedna-text);
        }

        .bulk-bar .deselect:focus-visible[b-bd4see1583] {
            outline: 2px solid var(--sedna-primary);
            outline-offset: 2px;
            border-radius: 3px;
        }

    .bulk-bar .bulk-actions[b-bd4see1583] {
        margin-left: auto;
        display: flex;
        align-items: center;
        gap: 8px;
    }

/* ========================================
   DEVEXPRESS GRID INTEGRATION
   La griglia deve riempire lo spazio residuo e scrollare dentro.
   ======================================== */
.sedna-datagrid-wrapper[b-bd4see1583] {
    /* flex/overflow dal guscio (.sedna-page__body--host); resta solo il respiro sotto */
    margin-bottom: 0.5rem;
}

[b-bd4see1583] .sedna-dx-grid {
    height: 100%;
    max-height: none;
}

[b-bd4see1583] .dxbl-grid-data-container {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* ========================================
   CELLE — dati (scoped: i template vivono in questa pagina)
   ======================================== */

/* Codice cliente in mono (dato macchina) */
.codice-mono[b-bd4see1583] {
    font-family: var(--sedna-font-mono);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--sedna-text-secondary);
    white-space: nowrap;
}

/* Località: badge provincia a pillola */
.provincia-badge[b-bd4see1583] {
    display: inline-block;
    font-size: 0.625rem;
    font-weight: var(--sedna-font-semibold, 600);
    letter-spacing: 0.04em;
    line-height: 1.4;
    background: var(--sedna-neutral-100);
    color: var(--sedna-neutral-700);
    padding: 1px 6px;
    border-radius: 999px;
    white-space: nowrap;
}

/* Contatti: bottoncini icona 28px; disabilitati se il contatto manca */
.contacts[b-bd4see1583] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.cbtn[b-bd4see1583] {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border: 1px solid var(--sedna-border);
    border-radius: 6px;
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    text-decoration: none;
    cursor: pointer;
    font-size: 0.85rem;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

    .cbtn:hover[b-bd4see1583] {
        background: var(--sedna-surface-hover, #eef0f3);
        border-color: var(--sedna-border-strong);
        color: var(--sedna-text);
    }

    .cbtn:focus-visible[b-bd4see1583] {
        outline: 2px solid var(--sedna-primary);
        outline-offset: 2px;
    }

    .cbtn[aria-disabled="true"][b-bd4see1583] {
        opacity: 0.32;
        cursor: not-allowed;
        pointer-events: none;
    }

    .cbtn i[b-bd4see1583] {
        font-size: 14px;
    }

/* Placeholder cella vuota (P.IVA / Località senza valore) */
.cell-empty[b-bd4see1583] {
    color: var(--sedna-text-tertiary);
    font-family: var(--sedna-font-mono);
}

/* ========================================
   RESPONSIVE
   ======================================== */
@media (max-width: 760px) {
    .toolbar[b-bd4see1583] {
        flex-wrap: wrap;
    }

    .toolbar .search[b-bd4see1583] {
        max-width: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cbtn[b-bd4see1583] {
        transition: none;
    }
}
/* /Pages/Anagrafiche/Clienti/Tabs/CronostoriaTab.razor.rz.scp.css */
/* Cronostoria cliente — timeline audit read-only */
.crono[b-suv7bl7v7w] { display: flex; flex-direction: column; gap: 10px; padding: 4px 0; }

.crono__bar[b-suv7bl7v7w] { display: flex; align-items: center; gap: 12px; }
.crono__title[b-suv7bl7v7w] { display: inline-flex; align-items: center; gap: 8px; font-size: 0.9375rem; font-weight: 600; color: var(--sedna-text); }
.crono__limit[b-suv7bl7v7w] {
    display: flex; margin-left: auto;
    border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-base, .375rem);
    padding: 2px; gap: 2px; background: var(--sedna-surface-variant);
}
.crono__limit button[b-suv7bl7v7w] {
    border: none; background: transparent; cursor: pointer; font-family: inherit;
    font-size: .72rem; font-weight: 600; color: var(--sedna-text-secondary);
    padding: 3px 10px; border-radius: 4px;
}
.crono__limit button.active[b-suv7bl7v7w] { background: var(--sedna-surface); color: var(--sedna-primary); box-shadow: var(--sedna-shadow-sm); }
.crono__refresh[b-suv7bl7v7w] {
    width: 30px; height: 30px; display: grid; place-items: center;
    border: 1px solid var(--sedna-border); background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base, .375rem); color: var(--sedna-text-secondary); cursor: pointer;
}
.crono__refresh:hover:not(:disabled)[b-suv7bl7v7w] { color: var(--sedna-primary); border-color: var(--sedna-primary); }

.crono__state[b-suv7bl7v7w] { display: flex; align-items: center; gap: 10px; padding: 32px; justify-content: center; color: var(--sedna-text-secondary); font-size: .875rem; }
.crono__state--err[b-suv7bl7v7w] { color: var(--sedna-error-700); }

.crono__list[b-suv7bl7v7w] { display: flex; flex-direction: column; gap: 6px; }
.crono__row[b-suv7bl7v7w] {
    border: 1px solid var(--sedna-border);
    border-left: 3px solid var(--sedna-primary);
    border-radius: var(--sedna-radius-base, .375rem);
    background: var(--sedna-surface);
    overflow: hidden;
}
.crono__row--create[b-suv7bl7v7w] { border-left-color: var(--sedna-success-600); }
.crono__row--delete[b-suv7bl7v7w] { border-left-color: var(--sedna-error-600); }
.crono__row--restore[b-suv7bl7v7w] { border-left-color: var(--sedna-warning-600); }

.crono__row-head[b-suv7bl7v7w] {
    display: flex; align-items: center; gap: 12px; width: 100%;
    padding: 8px 12px; border: none; background: transparent; cursor: pointer;
    font-family: inherit; font-size: .8125rem; text-align: left; color: var(--sedna-text);
}
.crono__row-head:hover[b-suv7bl7v7w] { background: var(--sedna-surface-hover); }
.crono__row-head .op[b-suv7bl7v7w] { font-weight: 700; flex: none; min-width: 86px; }
.crono__row-head .when[b-suv7bl7v7w] { flex: none; color: var(--sedna-text-secondary); }
.crono__row-head .who[b-suv7bl7v7w] { flex: none; display: inline-flex; align-items: center; gap: 5px; color: var(--sedna-text-secondary); max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.crono__row-head .grp[b-suv7bl7v7w] {
    flex: none; font-size: .65rem; font-weight: 700; letter-spacing: .03em;
    background: var(--sedna-primary-subtle); color: var(--sedna-primary);
    border-radius: 999px; padding: 2px 8px;
}
.crono__row-head .fields[b-suv7bl7v7w] { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--sedna-text-tertiary); font-size: .75rem; }
.crono__row-head .chev[b-suv7bl7v7w] { flex: none; color: var(--sedna-text-tertiary); font-size: .7rem; }
.crono__row .mono[b-suv7bl7v7w] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; }

.crono__detail[b-suv7bl7v7w] { border-top: 1px solid var(--sedna-border-light); padding: 10px 12px; display: flex; flex-direction: column; gap: 8px; }
.crono__detail .meta[b-suv7bl7v7w] { display: flex; gap: 10px; font-size: .75rem; }
.crono__detail .meta .k[b-suv7bl7v7w] { font-weight: 600; letter-spacing: .04em; text-transform: uppercase; font-size: .625rem; color: var(--sedna-text-tertiary); min-width: 52px; padding-top: 2px; }
.crono__detail .meta .v[b-suv7bl7v7w] { color: var(--sedna-text-secondary); word-break: break-all; }

.crono__detail .diff[b-suv7bl7v7w] { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; min-width: 0; }
.crono__detail .diff .col[b-suv7bl7v7w] { min-width: 0; border: 1px solid var(--sedna-border-light); border-radius: 6px; overflow: hidden; }
.crono__detail .diff .h[b-suv7bl7v7w] {
    font-size: .625rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
    padding: 4px 10px; background: var(--sedna-surface-variant); color: var(--sedna-text-tertiary);
}
.crono__detail .diff .old .h[b-suv7bl7v7w] { color: var(--sedna-error-700); background: var(--sedna-error-50); }
.crono__detail .diff .new .h[b-suv7bl7v7w] { color: var(--sedna-success-700); background: var(--sedna-success-50); }
.crono__detail .diff pre[b-suv7bl7v7w] {
    margin: 0; padding: 8px 10px; font-size: .7rem; line-height: 1.5;
    font-family: "JetBrains Mono", monospace; overflow: auto; max-height: 260px;
    color: var(--sedna-text-secondary); background: var(--sedna-surface);
}

@media (max-width: 900px) {
    .crono__detail .diff[b-suv7bl7v7w] { grid-template-columns: 1fr; }
    .crono__row-head .who[b-suv7bl7v7w], .crono__row-head .fields[b-suv7bl7v7w] { display: none; }
}
/* /Pages/Anagrafiche/DitteAssociate/DittaAssociataPage.razor.rz.scp.css */
/* ===================================
   DITTA ASSOCIATA PAGE - PAGE-SPECIFIC SCOPED STYLES
   Layout & shared styles are in app.css (entity-page, entity-alert, etc.)
   =================================== */
/* /Pages/Anagrafiche/DitteAssociate/DitteAssociateList.razor.rz.scp.css */
/* ===================================
   GESTIONE DITTE ASSOCIATE
   Layout pagina + wrapper griglia dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). Qui solo stili specifici.
   =================================== */

/* ========================================
   TOOLBAR — searchbox custom + filtri (segmented), come Clienti
   Search + segmented vivono nella toolbar interna della griglia (stessa riga
   di Colonne/Esporta): niente riga dedicata sopra la griglia.
   ======================================== */
.toolbar[b-dm2c8s7571] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-dm2c8s7571] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-dm2c8s7571] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-dm2c8s7571] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-dm2c8s7571]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-dm2c8s7571] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

/* segmented — blu solo sullo stato attivo */
.segmented[b-dm2c8s7571] {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-variant);
    padding: 3px;
    gap: 2px;
    height: var(--sedna-input-height, 2.125rem);
}

.segmented button[b-dm2c8s7571] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.8125rem;
    font-weight: var(--sedna-font-semibold, 600);
    color: var(--sedna-text-secondary);
    height: 100%;
    /* !important: dentro la toolbar DevExpress i reset .dxbl-btn-group
       azzerano il padding e forzano i button a 26px quadrati */
    padding: 0 12px !important;
    width: auto !important;
    min-width: max-content !important;
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

    .segmented button i[b-dm2c8s7571] {
        font-size: 0.85rem;
    }

    .segmented button:hover[b-dm2c8s7571] {
        color: var(--sedna-text);
    }

    .segmented button.active[b-dm2c8s7571] {
        background: var(--sedna-surface);
        color: var(--sedna-primary);
        box-shadow: 0 1px 2px rgba(16, 24, 40, 0.08);
    }

    .segmented button:focus-visible[b-dm2c8s7571] {
        outline: 2px solid var(--sedna-primary);
        outline-offset: 1px;
    }

/* DevExpress Grid Integration: il wrapper e' gia' flex column dal guscio,
   qui resta solo il fill interno della griglia. */
[b-dm2c8s7571] .dx-datagrid {
    height: 100%;
}

[b-dm2c8s7571] .dx-datagrid-headers,
[b-dm2c8s7571] .dx-datagrid-rowsview {
    max-height: none;
}

[b-dm2c8s7571] .dx-datagrid-rowsview {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* Contatti Icons */
.contact-icon-btn[b-dm2c8s7571] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 1px solid var(--sedna-border);
    border-radius: 6px;
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    text-decoration: none;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

    .contact-icon-btn:hover[b-dm2c8s7571] {
        background: var(--sedna-surface-variant);
        border-color: var(--sedna-border-strong);
        color: var(--sedna-text);
    }

    .contact-icon-btn i[b-dm2c8s7571] {
        font-size: 14px;
    }

/* Responsive */
@media (prefers-reduced-motion: reduce) {
    .contact-icon-btn[b-dm2c8s7571] {
        transition: none;
    }
}
/* /Pages/Anagrafiche/Fornitori/FornitorePage.razor.rz.scp.css */
/* ===================================
   FORNITORE PAGE - PAGE-SPECIFIC SCOPED STYLES
   Layout & shared styles are in app.css (entity-page, entity-alert, etc.)
   =================================== */

/* ===================================
   DESTINAZIONI TAB (CREATE MODE)
   =================================== */

.destinazioni-new-tab[b-o3qj1dxkg7] {
    padding: 1.5rem 0;
}

.destinazioni-empty[b-o3qj1dxkg7] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    border-radius: 10px;
    background: var(--sedna-state-info-bg, #e0f7fa);
    border: 1px solid var(--sedna-info-500, #00bcd4);
    color: var(--sedna-info-700, #0097a7);
    font-size: 0.875rem;
}
/* /Pages/Anagrafiche/Fornitori/FornitoriList.razor.rz.scp.css */
/* ===================================
   GESTIONE FORNITORI
   Layout pagina + wrapper griglia dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). Qui solo stili specifici.
   =================================== */

/* ========================================
   TOOLBAR — searchbox custom + filtri (segmented), come Clienti
   Search + segmented vivono nella toolbar interna della griglia (stessa riga
   di Colonne/Esporta): niente riga dedicata sopra la griglia.
   ======================================== */
.toolbar[b-2rqoajpn0k] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-2rqoajpn0k] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-2rqoajpn0k] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-2rqoajpn0k] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-2rqoajpn0k]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-2rqoajpn0k] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

.segmented[b-2rqoajpn0k] {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-variant);
    padding: 3px;
    gap: 2px;
    height: var(--sedna-input-height, 2.125rem);
}

.segmented button[b-2rqoajpn0k] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.8125rem;
    font-weight: var(--sedna-font-semibold, 600);
    color: var(--sedna-text-secondary);
    height: 100%;
    /* !important: dentro la toolbar DevExpress i reset .dxbl-btn-group
       azzerano il padding e forzano i button a 26px quadrati */
    padding: 0 12px !important;
    width: auto !important;
    min-width: max-content !important;
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

.segmented button i[b-2rqoajpn0k] {
    font-size: 0.85rem;
}

.segmented button:hover[b-2rqoajpn0k] {
    color: var(--sedna-text);
}

.segmented button.active[b-2rqoajpn0k] {
    background: var(--sedna-surface);
    color: var(--sedna-primary);
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.08);
}

.segmented button:focus-visible[b-2rqoajpn0k] {
    outline: 2px solid var(--sedna-primary);
    outline-offset: 1px;
}

/* Codice fornitore in mono (dato macchina) */
.codice-mono[b-2rqoajpn0k] {
    font-family: var(--sedna-font-mono);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--sedna-text-secondary);
    white-space: nowrap;
}

/* ========================================
   DEVEXPRESS GRID INTEGRATION
   Il wrapper (.sedna-page__body--host) e' gia' flex column dal guscio:
   qui resta solo il fill interno della griglia DevExpress.
   ======================================== */
[b-2rqoajpn0k] .dx-datagrid {
    height: 100%;
}

[b-2rqoajpn0k] .dx-datagrid-headers,
[b-2rqoajpn0k] .dx-datagrid-rowsview {
    max-height: none;
}

[b-2rqoajpn0k] .dx-datagrid-rowsview {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* Contatti Icons - Stile Compatto e Sobrio */
.contact-icon-btn[b-2rqoajpn0k] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 1px solid var(--sedna-border);
    border-radius: 6px;
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    text-decoration: none;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

    .contact-icon-btn:hover[b-2rqoajpn0k] {
        background: var(--sedna-surface-variant);
        border-color: var(--sedna-border-strong);
        color: var(--sedna-text);
    }

    .contact-icon-btn i[b-2rqoajpn0k] {
        font-size: 14px;
    }

/* Tipo Fornitore filter */
[b-2rqoajpn0k] .tipo-fornitore-filter {
    min-width: 160px;
}

/* ========================================
   RESPONSIVE
   ======================================== */

@media (prefers-reduced-motion: reduce) {
    .contact-icon-btn[b-2rqoajpn0k] {
        transition: none;
    }
}
/* /Pages/Anagrafiche/Fornitori/Tabs/FormTabs/CommercialeFormTab.razor.rz.scp.css */

/* ── Conferma dell'accensione di «Provv. su Casse» ── */
.pz-conferma-casse p[b-vujfo1najh] { margin: 0 0 8px; font-size: 0.8125rem; line-height: 1.55; }
.pz-conferma-casse p:last-child[b-vujfo1najh] { margin-bottom: 0; }
.pz-conferma-casse__nota[b-vujfo1najh] { color: var(--sedna-text-secondary); font-size: 0.75rem; }
/* /Pages/Anagrafiche/Fornitori/Tabs/TipiDocumentoTab.razor.rz.scp.css */
/* ═══ Tab «Tipi Documento» del fornitore ═══ */

/* La SPIEGAZIONE del criterio di raggruppamento, sotto la tendina.
   È testo di servizio: sta sotto al campo che commenta, in tono minore, e non deve
   competere con l'etichetta né allargare la riga del form. Arriva dal server insieme
   alla voce — dice cosa riceverà il produttore, non cosa fa il codice. */
.tipidoc-raggr__spiega[b-n75m0agxm8] {
    margin-top: 3px;
    font-size: 0.72rem;
    line-height: 1.35;
    color: var(--sedna-text-secondary);
}

/* ── NUMERAZIONE PROPRIA ──
   Il badge distingue a colpo d'occhio chi ha una sequenza sua da chi usa quella del
   sezionale: con centinaia di produttori configurati da un travaso, e' l'unico modo di
   controllare cosa e' stato scritto senza aprire una riga per volta. */
.tipidoc-num__badge[b-n75m0agxm8] {
    display: inline-block; padding: 1px 6px; border-radius: 999px;
    font-size: 0.6875rem; font-weight: 600;
    background: var(--sedna-primary-50, #eff6ff);
    color: var(--sedna-primary-700, #1d4ed8);
    border: 1px solid var(--sedna-primary-200, #bfdbfe);
}
.tipidoc-num__sez[b-n75m0agxm8] { font-size: 0.75rem; color: var(--sedna-text-tertiary); }
.tipidoc-num__stato[b-n75m0agxm8] { display: block; font-size: 0.7rem; color: var(--sedna-text-secondary); }

/* La riga che spiega un campo dal nome ingannevole (NumeroIniziale non e' «il prossimo»). */
.tipidoc-num__nota[b-n75m0agxm8] {
    margin-top: 3px;
    font-size: 0.7rem; line-height: 1.35; color: var(--sedna-text-tertiary);
}

.tipidoc-num__campo[b-n75m0agxm8] { display: flex; flex-direction: column; gap: 3px; }
.tipidoc-num__campo > label[b-n75m0agxm8] {
    font-size: 0.6875rem; font-weight: 600; letter-spacing: .03em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
}

/* L'azione di riga della numerazione. La classe serve anche da MARCATORE per verificare
   che una build sia davvero online: il difetto del 09/08 e' rimasto in piedi un giorno
   perche' la sonda cercava una classe nata col commit PRECEDENTE, e quindi diceva «e'
   online» di una build che non conteneva la correzione. Un marcatore deve nascere col
   commit che deve provare. */
.tipidoc-num__azione[b-n75m0agxm8] { display: inline-block; }
/* /Pages/Anagrafiche/Vettori/VettorePage.razor.rz.scp.css */
/* ===================================
   VETTORE PAGE - PAGE-SPECIFIC SCOPED STYLES
   Layout & shared styles are in app.css (entity-page, entity-alert, etc.)
   =================================== */
/* /Pages/Anagrafiche/Vettori/VettoriList.razor.rz.scp.css */
/* ===================================
   GESTIONE VETTORI
   Layout pagina + wrapper griglia dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). Qui solo stili specifici.
   =================================== */

/* ========================================
   TOOLBAR — searchbox custom + filtri (segmented), come Clienti
   Search + segmented vivono nella toolbar interna della griglia (stessa riga
   di Colonne/Esporta): niente riga dedicata sopra la griglia.
   ======================================== */
.toolbar[b-o6w2mso5cy] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-o6w2mso5cy] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-o6w2mso5cy] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-o6w2mso5cy] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-o6w2mso5cy]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-o6w2mso5cy] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

/* segmented — blu solo sullo stato attivo */
.segmented[b-o6w2mso5cy] {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-variant);
    padding: 3px;
    gap: 2px;
    height: var(--sedna-input-height, 2.125rem);
}

.segmented button[b-o6w2mso5cy] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.8125rem;
    font-weight: var(--sedna-font-semibold, 600);
    color: var(--sedna-text-secondary);
    height: 100%;
    /* !important: dentro la toolbar DevExpress i reset .dxbl-btn-group
       azzerano il padding e forzano i button a 26px quadrati */
    padding: 0 12px !important;
    width: auto !important;
    min-width: max-content !important;
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

    .segmented button i[b-o6w2mso5cy] {
        font-size: 0.85rem;
    }

    .segmented button:hover[b-o6w2mso5cy] {
        color: var(--sedna-text);
    }

    .segmented button.active[b-o6w2mso5cy] {
        background: var(--sedna-surface);
        color: var(--sedna-primary);
        box-shadow: 0 1px 2px rgba(16, 24, 40, 0.08);
    }

    .segmented button:focus-visible[b-o6w2mso5cy] {
        outline: 2px solid var(--sedna-primary);
        outline-offset: 1px;
    }

/* DevExpress Grid Integration: il wrapper e' gia' flex column dal guscio,
   qui resta solo il fill interno della griglia. */
[b-o6w2mso5cy] .dx-datagrid {
    height: 100%;
}

[b-o6w2mso5cy] .dx-datagrid-headers,
[b-o6w2mso5cy] .dx-datagrid-rowsview {
    max-height: none;
}

[b-o6w2mso5cy] .dx-datagrid-rowsview {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* Contatti Icons */
.contact-icon-btn[b-o6w2mso5cy] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 1px solid var(--sedna-border);
    border-radius: 6px;
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    text-decoration: none;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

    .contact-icon-btn:hover[b-o6w2mso5cy] {
        background: var(--sedna-surface-variant);
        border-color: var(--sedna-border-strong);
        color: var(--sedna-text);
    }

    .contact-icon-btn i[b-o6w2mso5cy] {
        font-size: 14px;
    }

/* Responsive */
@media (prefers-reduced-motion: reduce) {
    .contact-icon-btn[b-o6w2mso5cy] {
        transition: none;
    }
}
/* /Pages/Articoli/ArticoliList.razor.rz.scp.css */
/* ===================================
   GESTIONE ARTICOLI — guscio .sedna-page
   =================================== */

/* Layout pagina e wrapper griglia: dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). Qui restano solo gli stili
   specifici della pagina. */

/* La griglia riempie lo spazio residuo e scrolla internamente. */
.sedna-datagrid-wrapper[b-rzbbmwj8m8] {
    /* flex/overflow dal guscio (.sedna-page__body--host); resta il respiro sotto */
    margin-bottom: 0.5rem;
}

[b-rzbbmwj8m8] .sedna-dx-grid {
    height: 100%;
    max-height: none;
}

[b-rzbbmwj8m8] .dxbl-grid-data-container {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* ========================================
   TOOLBAR — searchbox custom + filtri (segmented + combo), come Clienti
   Search + segmented + combo tipo vivono nella toolbar interna della griglia
   (stessa riga di Colonne/Esporta): niente riga dedicata sopra la griglia.
   ======================================== */
.toolbar[b-rzbbmwj8m8] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-rzbbmwj8m8] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-rzbbmwj8m8] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-rzbbmwj8m8] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-rzbbmwj8m8]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-rzbbmwj8m8] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

/* segmented — blu solo sullo stato attivo */
.segmented[b-rzbbmwj8m8] {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-variant);
    padding: 3px;
    gap: 2px;
    height: var(--sedna-input-height, 2.125rem);
}

.segmented button[b-rzbbmwj8m8] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.8125rem;
    font-weight: var(--sedna-font-semibold, 600);
    color: var(--sedna-text-secondary);
    height: 100%;
    /* !important: dentro la toolbar DevExpress i reset .dxbl-btn-group
       azzerano il padding e forzano i button a 26px quadrati */
    padding: 0 12px !important;
    width: auto !important;
    min-width: max-content !important;
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

    .segmented button i[b-rzbbmwj8m8] {
        font-size: 0.85rem;
    }

    .segmented button:hover[b-rzbbmwj8m8] {
        color: var(--sedna-text);
    }

    .segmented button.active[b-rzbbmwj8m8] {
        background: var(--sedna-surface);
        color: var(--sedna-primary);
        box-shadow: 0 1px 2px rgba(16, 24, 40, 0.08);
    }

    .segmented button:focus-visible[b-rzbbmwj8m8] {
        outline: 2px solid var(--sedna-primary);
        outline-offset: 1px;
    }

/* Filtro tipo articolo nella toolbar della griglia */
[b-rzbbmwj8m8] .tipo-articolo-filter {
    min-width: 150px;
}
/* /Pages/Articoli/ArticoloPage.razor.rz.scp.css */
/* ===================================
   ARTICOLO PAGE - PAGE-SPECIFIC SCOPED STYLES
   Layout & shared styles are in app.css (entity-page, entity-alert, etc.)
   =================================== */

/* ── ARTICOLO A PEZZI SENZA IL PESO DEL PEZZO ─────────────────────────────────
   Giallo e non rosso: e' una configurazione che manca, non un difetto del
   programma. Sta SOPRA i campi perche' dice come si leggono quelli sotto — con
   «Peso Pezzi» a zero l'articolo vale zero chili, e da li' passa la
   liquidazione produttori, che paga a chilo. */
.art-avviso-pezzi[b-n9lfmjrwqa] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.5rem 0.7rem;
    border: 1px solid var(--sedna-warning-400, #ffca28);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-warning-subtle, #fff8e1);
    color: var(--sedna-warning-800, #8a5a00);
    font-size: 0.8125rem;
    line-height: 1.45;
}

.art-avviso-pezzi > i[b-n9lfmjrwqa] {
    margin-top: 0.1rem;
    flex: none;
    color: var(--sedna-warning-600, #f5b301);
}

/* La riga sotto il campo: breve, perche' il perche' per esteso sta gia' sopra. */
.art-manca[b-n9lfmjrwqa] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    margin-top: 0.2rem;
    font-size: 0.7rem;
    color: var(--sedna-warning-700, #ef6c00);
}
/* /Pages/Articoli/Gerarchia/ClassificazionePage.razor.rz.scp.css */
/* Layout pagina: dal guscio globale .sedna-page (sedna.page.css).
   Qui restano gli stili specifici della pagina. */

/* Filtro tipo articolo nell'header (azioni) */
[b-qnb86irqke] .classificazione-tipo-filter {
    min-width: 150px;
}

/* Badge di livello gerarchia — tokenizzati (nessun hex inline). */
.livello-badge[b-qnb86irqke] {
    display: inline-block;
    padding: 0.25rem 0.5rem;
    border-radius: 6px;
    font-weight: 500;
    font-size: 0.7rem;
    line-height: 1;
    border: 1px solid transparent;
}

.livello-badge--gruppo[b-qnb86irqke] {
    background: var(--sedna-info-50);
    color: var(--sedna-info-700);
    border-color: var(--sedna-info-600);
}

.livello-badge--famiglia[b-qnb86irqke] {
    background: var(--sedna-accent-50);
    color: var(--sedna-accent-700);
    border-color: var(--sedna-accent-600);
}

.livello-badge--sottofamiglia[b-qnb86irqke] {
    background: var(--sedna-warning-50);
    color: var(--sedna-warning-700);
    border-color: var(--sedna-warning-600);
}

.livello-badge--articolo[b-qnb86irqke] {
    background: var(--sedna-error-50);
    color: var(--sedna-error-700);
    border-color: var(--sedna-error-600);
}

.livello-badge--default[b-qnb86irqke] {
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-secondary);
    border-color: var(--sedna-border);
}


/* ═══ I RACCOGLITORI DEGLI ORFANI ═══
   Non sono un livello della gerarchia: sono righe che non stanno da nessuna parte, raccolte
   perche' si vedano. Colore d'avviso, non d'errore — i dati non sono rotti, sono scollegati,
   e si sistemano aprendo la voce e scegliendole il padre. */
.livello-badge--orfani[b-qnb86irqke] {
    background: var(--sedna-warning-50);
    color: var(--sedna-warning-700);
    border: 1px solid color-mix(in srgb, var(--sedna-warning-500) 40%, transparent);
}

.orfani-nota[b-qnb86irqke] {
    display: inline-flex;
    align-items: center;
    color: var(--sedna-warning-700);
    padding-right: 4px;
}

/* ═══ L'ALBERO DENTRO LA NOSTRA GRIGLIA ═══
   Il rientro e la freccetta SONO la gerarchia: la griglia e' piatta, e quello che si vede
   e' l'unica cosa che dice chi sta dentro chi. */
.cl-cod[b-qnb86irqke] {
    display: inline-flex;
    align-items: center;
    gap: var(--sedna-space-1, 0.25rem);
    white-space: nowrap;
}

/* La freccetta e' un pulsante vero (si raggiunge col Tab), ma non deve sembrare un bottone:
   in una colonna di codici un rettangolo grigio ruberebbe l'occhio al codice. */
.cl-chev[b-qnb86irqke] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    flex: 0 0 18px;
    padding: 0;
    border: 0;
    background: none;
    color: var(--sedna-text-secondary);
    cursor: pointer;
    border-radius: var(--sedna-radius-sm);
}

.cl-chev:hover[b-qnb86irqke] { background: var(--sedna-surface-variant, #eee); color: var(--sedna-text); }

/* Il segnaposto tiene il posto della freccetta sulle foglie: senza, i codici delle foglie
   scivolerebbero a sinistra e il rientro direbbe un livello sbagliato. */
.cl-chev--vuoto[b-qnb86irqke] { cursor: default; }
.cl-chev--vuoto:hover[b-qnb86irqke] { background: none; }

/* Il livello si legge anche dal peso del codice, non solo dal rientro: con l'albero tutto
   aperto il rientro da solo si perde dopo il secondo scalino. */
.cl-r--gruppo .cl-cod[b-qnb86irqke] { font-weight: var(--sedna-font-semibold); }
.cl-r--orfani .cl-cod[b-qnb86irqke] { color: var(--sedna-warning-700); font-style: italic; }

/* ═══ LA BARRA «DOVE SONO» ═══
   Ancorata fra l'intestazione e la griglia: scorrendo dentro un gruppo lungo continua a dire
   in che gruppo, famiglia e sotto famiglia ci si trova. E' l'equivalente delle intestazioni
   incollate del Registro IVA, portato dove le righe non stanno tutte nel DOM. */
.cl-dove[b-qnb86irqke] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 2px;
    padding: 3px var(--sedna-space-2);
    margin-bottom: 2px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base);
    background: var(--sedna-surface-variant, #f6f7f9);
    font-size: var(--sedna-text-xs, 0.75rem);
    min-height: 24px;
}

.cl-dove__sep[b-qnb86irqke] { color: var(--sedna-text-tertiary); font-size: 0.65rem; }

/* Ogni voce e' un pulsante: cliccandola si torna a quella riga. Non sembra un bottone
   perche' in una barra di contesto tre rettangoli grigi peserebbero piu' del contenuto. */
.cl-dove__voce[b-qnb86irqke] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    border: 0;
    background: none;
    padding: 1px 5px;
    border-radius: var(--sedna-radius-sm);
    cursor: pointer;
    font: inherit;
    color: var(--sedna-text-secondary);
    max-width: 34ch;
}

.cl-dove__voce:hover[b-qnb86irqke] { background: var(--sedna-surface); color: var(--sedna-text); }

.cl-dove__cod[b-qnb86irqke] { font-weight: var(--sedna-font-semibold); color: var(--sedna-text); }

/* La descrizione si taglia: quelle dei gruppi di CVF sono frasi intere, e per esteso
   spingerebbero fuori il resto del percorso — cioe' proprio l'informazione che serve. */
.cl-dove__desc[b-qnb86irqke] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cl-dove__voce--gruppo .cl-dove__cod[b-qnb86irqke] { color: var(--sedna-info-700); }
.cl-dove__voce--famiglia .cl-dove__cod[b-qnb86irqke] { color: var(--sedna-primary); }
/* /Pages/Articoli/Imballaggi/ImballaggiList.razor.rz.scp.css */
/* ===================================
   GESTIONE IMBALLAGGI — guscio .sedna-page
   =================================== */

/* Layout pagina e wrapper griglia: dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). Qui restano solo gli stili
   specifici della pagina. */

/* La griglia riempie lo spazio residuo e scrolla internamente. */
.sedna-datagrid-wrapper[b-svltxjl6wn] {
    /* flex/overflow dal guscio (.sedna-page__body--host); resta il respiro sotto */
    margin-bottom: 0.5rem;
}

[b-svltxjl6wn] .sedna-dx-grid {
    height: 100%;
    max-height: none;
}

[b-svltxjl6wn] .dxbl-grid-data-container {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* ========================================
   TOOLBAR — searchbox custom + combo filtri, come Clienti
   Search + combo (tipo imballaggio/articolo) vivono nella toolbar interna
   della griglia (stessa riga di Colonne/Esporta).
   ======================================== */
.toolbar[b-svltxjl6wn] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-svltxjl6wn] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-svltxjl6wn] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-svltxjl6wn] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-svltxjl6wn]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-svltxjl6wn] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }
/* /Pages/Articoli/Imballaggi/ImballoPage.razor.rz.scp.css */
/* ===================================
   IMBALLO PAGE - PAGE-SPECIFIC SCOPED STYLES
   Layout & shared styles are in app.css (entity-page, entity-alert, etc.)
   =================================== */
/* /Pages/Articoli/Tabs/ArticoloIdentita.razor.rz.scp.css */
/* ═══ FASCIA IDENTITA' DELL'ARTICOLO ═══
   Sta sopra le schede e non scorre via: e' il «chi sei» della maschera. */

.art-id[b-9yu4zxbw72] {
    display: flex;
    align-items: flex-start;
    gap: var(--sedna-space-4);
    padding: var(--sedna-space-3) var(--sedna-space-4);
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg);
    /* ⚠️ Stacco ANCHE SOPRA (Antonio, 21/08): la fascia nasceva attaccata all'intestazione
       e le due cornici si toccavano, leggendosi come un blocco solo. Sono due cose diverse
       — chi sei tu (intestazione) e chi e' l'articolo (fascia) — e devono sembrarlo. */
    margin: var(--sedna-space-3) 0;
}

/* La foto: quadrata e piccola. Serve a RICONOSCERE, non a guardare — un riquadro grande
   ruberebbe alla fascia lo spazio dei campi, che e' la sua ragione di esistere. */
.art-id__foto[b-9yu4zxbw72] {
    flex: 0 0 auto;
    width: 68px;
    height: 68px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px dashed var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface-variant, #f6f7f9);
    color: var(--sedna-text-tertiary, #9aa1ab);
    font-size: 1.6rem;
    overflow: hidden;
}

.art-id__foto img[b-9yu4zxbw72] {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.art-id__campi[b-9yu4zxbw72] {
    flex: 1 1 auto;
    min-width: 0;            /* senza, le caselle dentro sfondano la fascia */
    display: flex;
    flex-direction: column;
    gap: var(--sedna-space-2);
}

.art-id__riga[b-9yu4zxbw72] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: var(--sedna-space-3);
}

.art-id__campo[b-9yu4zxbw72] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.art-id__campo > label[b-9yu4zxbw72] {
    font-size: var(--sedna-text-xs, 0.75rem);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-text-secondary);
    font-weight: var(--sedna-font-semibold);
}

.art-id__campo--cod[b-9yu4zxbw72]  { flex: 0 0 15ch; }
.art-id__campo--desc[b-9yu4zxbw72] { flex: 1 1 34ch; }
.art-id__campo--rid[b-9yu4zxbw72]  { flex: 0 0 15ch; }
.art-id__campo--sf[b-9yu4zxbw72]   { flex: 0 0 26ch; }

/* I derivati: larghezza fissa e prevedibile. Il testo libero cresceva con la descrizione del
   gruppo — su CVF sono frasi intere — e si mangiava la riga. */
.art-id__campo--der[b-9yu4zxbw72]  { flex: 1 1 22ch; min-width: 16ch; }
.art-id__campo--tipo[b-9yu4zxbw72] { flex: 0 0 18ch; }

/* Spente ma LEGGIBILI: grigie quanto basta per dire «non si tocca», non tanto da sembrare
   un campo vuoto che non si riesce a riempire. */
.art-id__campo--der[b-9yu4zxbw72]  input,
.art-id__campo--tipo[b-9yu4zxbw72]  input {
    background: var(--sedna-surface-variant, #f6f7f9);
    color: var(--sedna-text);
}

/* La descrizione e' il nome dell'articolo: piu' grande delle altre caselle, perche' e'
   quella che si legge per prima. ::deep perche' l'input vero e' dentro il componente. */
.art-id__campo--desc[b-9yu4zxbw72]  .art-id__desc-input input {
    font-size: var(--sedna-text-base, 0.875rem);
    font-weight: var(--sedna-font-semibold);
}

/* ═══ I DERIVATI ═══
   Testo, non caselle: sono CONSEGUENZE della sotto famiglia, e una casella — anche spenta —
   inviterebbe a provare a cambiarli. */
.art-id__derivati[b-9yu4zxbw72] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--sedna-space-2);
    padding-top: 1.1rem;      /* allinea col fondo della lente, che ha l'etichetta sopra */
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-text-secondary);
}

.art-id__derivato[b-9yu4zxbw72] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}

.art-id__tipo[b-9yu4zxbw72] {
    display: inline-flex;
    align-items: center;
    padding: 1px var(--sedna-space-2);
    border-radius: var(--sedna-radius-sm);
    background: var(--sedna-primary-subtle, #dbeafe);
    color: var(--sedna-primary, #2563eb);
    font-weight: var(--sedna-font-semibold);
    white-space: nowrap;
}

/* Quando manca la sotto famiglia lo dice, e dice anche PERCHE' serve: senza, la riga sotto
   la lente resterebbe vuota e sembrerebbe che non ci sia niente da fare. */
.art-id__vuoto[b-9yu4zxbw72] {
    color: var(--sedna-text-tertiary, #9aa1ab);
    font-style: italic;
}

/* Su schermi stretti la foto ruba spazio ai campi: sparisce lei, non i dati. */
@media (max-width: 900px) {
    .art-id__foto[b-9yu4zxbw72] { display: none; }
}
/* /Pages/Articoli/Tabs/FormTabs/MagazzinoFormTab.razor.rz.scp.css */

/* La riga di aiuto accanto al prezzo di valorizzazione: spiega una regola che
   nessuno indovina (zero = «non l'ho detto», non «vale zero»). */
.art-aiuto[b-jkfutxx0j4] {
    font-size: 0.8125rem;
    line-height: 1.4;
    color: var(--sedna-text-secondary);
    padding-top: 1.1rem;
}
/* /Pages/Articoli/UnitaDiMisura/UnitaDiMisuraList.razor.rz.scp.css */
/* Styles inherited from SimpleLookupPage */
/* /Pages/Articoli/UnitaDiMisura/UnitaDiMisuraPage.razor.rz.scp.css */
/* ===================================
   UNITA DI MISURA PAGE - PAGE-SPECIFIC SCOPED STYLES
   Layout & shared styles are in app.css (entity-page, entity-alert, etc.)
   =================================== */
/* /Pages/Cestino/CestinoPage.razor.rz.scp.css */
/* ═══ Cestino ═══ */

.ces-tabs[b-je1jqbt32e] {
    display: flex;
    align-items: center;
    gap: .4rem;
    margin: .5rem 0 .75rem;
    flex-wrap: wrap;
}

.ces-tabs button[b-je1jqbt32e] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    border: 1px solid var(--sedna-border, #e5e7eb);
    background: var(--sedna-surface, #fff);
    border-radius: 999px;
    padding: .2rem .8rem;
    font-size: .8125rem;
    cursor: pointer;
    color: var(--sedna-text-secondary, #4b5563);
}

.ces-tabs button.on[b-je1jqbt32e] {
    background: var(--sedna-primary, #2563eb);
    border-color: var(--sedna-primary, #2563eb);
    color: #fff;
}

.ces-sp[b-je1jqbt32e] { flex: 1 1 auto; }

.ces-per[b-je1jqbt32e] {
    font-size: .78rem;
    color: var(--sedna-text-secondary, #4b5563);
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}

.ces-per select[b-je1jqbt32e] {
    border: 1px solid var(--sedna-border, #e5e7eb);
    border-radius: 5px;
    padding: .1rem .35rem;
    font-size: .78rem;
}

.ces-hint[b-je1jqbt32e] {
    display: flex;
    gap: .5rem;
    align-items: flex-start;
    padding: .5rem .75rem;
    margin-bottom: .6rem;
    border-radius: var(--sedna-radius-base, .375rem);
    background: var(--sedna-info-50, #eff6ff);
    color: var(--sedna-info-800, #1e40af);
    font-size: .78rem;
}

.ces-scroll[b-je1jqbt32e] {
    overflow-x: auto;
    border: 1px solid var(--sedna-border-light, #eceff3);
    border-radius: var(--sedna-radius-base, .375rem);
}

.ces-tbl[b-je1jqbt32e] {
    width: 100%;
    border-collapse: collapse;
    font-size: .8125rem;
}

.ces-tbl thead th[b-je1jqbt32e] {
    text-align: left;
    font-weight: 600;
    color: var(--sedna-text-secondary, #4b5563);
    background: var(--sedna-surface-variant, #f8fafc);
    border-bottom: 1px solid var(--sedna-border, #e5e7eb);
    padding: .4rem .6rem;
    white-space: nowrap;
}

.ces-tbl tbody td[b-je1jqbt32e] {
    padding: .35rem .6rem;
    border-bottom: 1px solid var(--sedna-border-light);
    vertical-align: middle;
}

.ces-tbl .num[b-je1jqbt32e] { text-align: right; }
.ces-tbl .mono[b-je1jqbt32e] { font-family: var(--sedna-font-mono, ui-monospace, monospace); }
.ces-tbl .b[b-je1jqbt32e] { font-weight: 600; }

.ces-el[b-je1jqbt32e] {
    font-size: .74rem;
    color: var(--sedna-text-tertiary, #9ca3af);
    white-space: nowrap;
}

.ces-no[b-je1jqbt32e] {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: .74rem;
    color: var(--sedna-text-tertiary, #9ca3af);
    font-style: italic;
}

.ces-vuoto[b-je1jqbt32e] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .5rem;
    padding: 2.5rem 1rem;
    color: var(--sedna-text-tertiary, #9ca3af);
}

.ces-vuoto i[b-je1jqbt32e] { font-size: 1.75rem; }
/* /Pages/Contabilita/Assegni/BlocchettiAssegniPage.razor.rz.scp.css */
.blas-attesa[b-yv5069jx9x] {
    display: flex;
    justify-content: center;
    padding: 2rem 0;
}

/* ═══ I filtri ═══
   ⚠️ Il lookup in un div a larghezza fissa: `.sedna-lookup-container` è a larghezza piena
   e nudo in una riga flex si prende tutto, impilando i filtri in verticale. */
.blas-filtri[b-yv5069jx9x] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
    margin-bottom: 0.6rem;
}

.blas-f--conto[b-yv5069jx9x] { width: 220px; }

/* ═══ Le schede dei blocchetti ═══ */
.blas-lista[b-yv5069jx9x] {
    display: grid;
    gap: 0.5rem;
    grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
}

.blas-c[b-yv5069jx9x] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

/* Chiuso: si vede che è fuori gioco senza doverlo leggere, ma resta leggibile — è ancora
   l'archivio di numeri veri, non una riga cancellata. */
.blas-c--chiuso[b-yv5069jx9x] {
    border-style: dashed;
    background: var(--sedna-surface-variant);
}

.blas-c__h[b-yv5069jx9x] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 0.5rem;
    align-items: baseline;
    justify-content: space-between;
}

.blas-c__t[b-yv5069jx9x] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: baseline;
}

.blas-c__int[b-yv5069jx9x] {
    font-size: 0.95rem;
    font-weight: 600;
}

.blas-c__serie[b-yv5069jx9x] {
    color: var(--sedna-text-secondary);
    font-size: 0.72rem;
}

.blas-c__conto[b-yv5069jx9x] {
    overflow: hidden;
    max-width: 100%;
    color: var(--sedna-text-secondary);
    font-size: 0.74rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ═══ La barra del consumo ═══
   Un numero solo («7 usati») non dice se il carnet è quasi finito; 7 su 10 sì. */
.blas-barra[b-yv5069jx9x] {
    overflow: hidden;
    height: 5px;
    border-radius: 999px;
    background: var(--sedna-surface-hover);
}

.blas-barra__i[b-yv5069jx9x] {
    height: 100%;
    background: var(--sedna-primary);
    transition: width 0.2s ease;
}

.blas-c__n[b-yv5069jx9x] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.2rem 0.75rem;
    font-size: 0.74rem;
}

.blas-n[b-yv5069jx9x] { color: var(--sedna-text-secondary); }
.blas-n b[b-yv5069jx9x] { color: var(--sedna-text); }
.blas-n--ann b[b-yv5069jx9x] { color: var(--sedna-warning-700); }
.blas-n--lib b[b-yv5069jx9x] { color: var(--sedna-success-600); }
.blas-n--pross b[b-yv5069jx9x] { color: var(--sedna-primary); }
.blas-n--muto[b-yv5069jx9x] { color: var(--sedna-text-tertiary); font-style: italic; }

.blas-c__note[b-yv5069jx9x] {
    color: var(--sedna-text-secondary);
    font-size: 0.74rem;
}

.blas-c__a[b-yv5069jx9x] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
    align-items: center;
    justify-content: flex-end;
    padding-top: 0.35rem;
    border-top: 1px solid var(--sedna-border);
}

.blas-c__reg[b-yv5069jx9x] {
    margin-right: auto;
    color: var(--sedna-text-tertiary);
    font-size: 0.7rem;
}

/* ═══ Le pastiglie ═══ */
.blas-pill[b-yv5069jx9x] {
    display: inline-block;
    padding: 0.05rem 0.4rem;
    border: 1px solid var(--sedna-border);
    border-radius: 999px;
    font-size: 0.66rem;
    white-space: nowrap;
}

.blas-pill--chiuso[b-yv5069jx9x] { border-color: var(--sedna-text-tertiary); color: var(--sedna-text-tertiary); }
.blas-pill--travaso[b-yv5069jx9x] { border-color: var(--sedna-info-600); color: var(--sedna-info-600); }
.blas-pill--libero[b-yv5069jx9x] { border-color: var(--sedna-success-600); color: var(--sedna-success-600); }
.blas-pill--emesso[b-yv5069jx9x] { border-color: var(--sedna-info-600); color: var(--sedna-info-600); }
.blas-pill--annullato[b-yv5069jx9x] { color: var(--sedna-text-tertiary); text-decoration: line-through; }
.blas-pill--versato[b-yv5069jx9x] { border-color: var(--sedna-success-600); color: var(--sedna-success-600); }
.blas-pill--insoluto[b-yv5069jx9x] { border-color: var(--sedna-error-700); color: var(--sedna-error-700); }
.blas-pill--usato-nel-vecchio[b-yv5069jx9x] { border-color: var(--sedna-info-600); color: var(--sedna-info-600); }

/* ═══ L'editor: i pulsanti della quantità ═══ */
.blas-q[b-yv5069jx9x] { display: flex; gap: 0.3rem; }

.blas-q__b[b-yv5069jx9x] {
    padding: 0.25rem 0.7rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    cursor: pointer;
    font-size: 0.78rem;
}

.blas-q__b:hover[b-yv5069jx9x] { border-color: var(--sedna-primary); }

.blas-q__b--on[b-yv5069jx9x] {
    border-color: var(--sedna-primary);
    background: color-mix(in srgb, var(--sedna-primary) 10%, transparent);
    color: var(--sedna-primary);
}

/* ═══ I numeri ═══ */
.blas-num__t[b-yv5069jx9x] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.78rem;
}

.blas-num__t th[b-yv5069jx9x] {
    padding: 0.3rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    color: var(--sedna-text-tertiary);
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-align: left;
    text-transform: uppercase;
}

.blas-num__t td[b-yv5069jx9x] {
    padding: 0.25rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
}

.blas-num__t .r[b-yv5069jx9x] { text-align: right; }

/* Un numero libero è la maggioranza delle righe: si smorza, così saltano all'occhio
   quelli usati — che sono quelli che si sta cercando. */
.blas-num__r--libero td[b-yv5069jx9x] { color: var(--sedna-text-tertiary); }

.blas-num__p[b-yv5069jx9x] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    justify-content: center;
    margin-top: 0.6rem;
}

.blas-num__c[b-yv5069jx9x] { color: var(--sedna-text-secondary); font-size: 0.74rem; }

.blas-link[b-yv5069jx9x] {
    padding: 0;
    border: 0;
    background: none;
    color: var(--sedna-primary);
    cursor: pointer;
}

.blas-msg[b-yv5069jx9x] {
    display: flex;
    gap: 0.4rem;
    align-items: flex-start;
    margin-top: 0.6rem;
    padding: 0.45rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
}

.blas-msg--no[b-yv5069jx9x] {
    border: 1px solid var(--sedna-error-700);
    color: var(--sedna-error-700);
}

.blas .mono[b-yv5069jx9x],
.blas-num .mono[b-yv5069jx9x],
.blas-ed .mono[b-yv5069jx9x] {
    font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace);
}

/* ═══ Le azioni nel dettaglio dei numeri ═══ */
.blas-num__a[b-yv5069jx9x] {
    display: flex;
    gap: 0.15rem;
    align-items: center;
    white-space: nowrap;
}

.blas-az[b-yv5069jx9x] {
    padding: 0.1rem 0.3rem;
    border: 0;
    border-radius: var(--sedna-radius-input);
    background: none;
    color: var(--sedna-text-secondary);
    cursor: pointer;
}

.blas-az:hover:not(:disabled)[b-yv5069jx9x] { background: var(--sedna-surface-hover); color: var(--sedna-primary); }
.blas-az:disabled[b-yv5069jx9x] { color: var(--sedna-text-tertiary); cursor: not-allowed; opacity: 0.45; }

/* La riga in testa alla finestra: ricorda di quale numero si sta parlando.
   ⚠️ La finestra copre la tabella da cui si è cliccato: senza, chi ha preso la riga
   sbagliata non ha modo di accorgersene prima di bruciare un numero. */
.blas-cap[b-yv5069jx9x] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-bottom: 0.7rem;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface-variant);
    font-size: 0.78rem;
    line-height: 1.35;
}

.blas-cap i[b-yv5069jx9x] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-info-600); }

/* Lo stato vuoto: scritto a mano perche' `SednaEmptyState` non esiste. */
.blas-vuoto[b-yv5069jx9x] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    padding: 1.2rem 1rem;
    border: 1px dashed var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.82rem;
    line-height: 1.4;
}

.blas-vuoto > i[b-yv5069jx9x] {
    flex: 0 0 auto;
    margin-top: 0.1rem;
    color: var(--sedna-text-tertiary);
    font-size: 1.3rem;
}

.blas-vuoto strong[b-yv5069jx9x] { display: block; color: var(--sedna-text); }
/* /Pages/Contabilita/Assegni/EventoAssegnoModal.razor.rz.scp.css */
.evas-attesa[b-e8m7ivkgf8] {
    display: flex;
    justify-content: center;
    padding: 1.2rem 0;
}

/* ═══ I due riquadri ═══
   ⚠️ Rosso e ambra, e non si somigliano: uno BLOCCA (un assegno di un'altra ditta) e
   l'altro no (un postdatato). Farli uguali vorrebbe dire imparare a ignorarli tutti e due. */
.evas-box[b-e8m7ivkgf8] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-top: 0.6rem;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
    line-height: 1.35;
}

.evas-box ul[b-e8m7ivkgf8] { margin: 0.25rem 0 0.35rem; padding-left: 1.1rem; }

.evas-box--no[b-e8m7ivkgf8] {
    border: 1px solid var(--sedna-error-700);
    background: var(--sedna-error-50);
    color: var(--sedna-text);
}

.evas-box--no > i[b-e8m7ivkgf8] { color: var(--sedna-error-700); }

.evas-box--av[b-e8m7ivkgf8] {
    border: 1px solid var(--sedna-warning-700);
    background: var(--sedna-warning-50);
    color: var(--sedna-text);
}

.evas-box--av > i[b-e8m7ivkgf8] { color: var(--sedna-warning-700); }
.evas-box > i[b-e8m7ivkgf8] { flex: 0 0 auto; margin-top: 0.1rem; font-size: 1rem; }

/* ═══ La registrazione che nascerà ═══ */
.evas-reg[b-e8m7ivkgf8] { margin-top: 0.5rem; }

.evas-reg__h[b-e8m7ivkgf8] {
    display: flex;
    gap: 0.5rem;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 0.3rem;
    font-size: 0.78rem;
}

.evas-reg__c[b-e8m7ivkgf8] { margin-left: 0.4rem; color: var(--sedna-text-secondary); font-size: 0.72rem; }
.evas-reg__no[b-e8m7ivkgf8] { color: var(--sedna-error-700); font-weight: 600; }

.evas-reg__t[b-e8m7ivkgf8] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.76rem;
}

.evas-reg__t th[b-e8m7ivkgf8] {
    padding: 0.25rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    color: var(--sedna-text-tertiary);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-align: left;
    text-transform: uppercase;
}

.evas-reg__t td[b-e8m7ivkgf8] {
    padding: 0.22rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    vertical-align: top;
}

.evas-reg__t tfoot td[b-e8m7ivkgf8] {
    border-top: 2px solid var(--sedna-border);
    border-bottom: 0;
    font-weight: 600;
}

.evas-reg__t .r[b-e8m7ivkgf8] { text-align: right; }

.evas-reg__d[b-e8m7ivkgf8] {
    display: block;
    color: var(--sedna-text-tertiary);
    font-size: 0.7rem;
}

.evas .mono[b-e8m7ivkgf8] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }

/* La riga in testa che ricorda di quale assegno si sta parlando: numero, chi, importo.
   ⚠️ Serve perché la finestra si apre da una riga di griglia e copre la griglia: senza,
   chi ha cliccato sulla riga sbagliata non ha modo di accorgersene. */
.evas-cap[b-e8m7ivkgf8] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-bottom: 0.7rem;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface-variant);
    font-size: 0.8rem;
}

.evas-cap i[b-e8m7ivkgf8] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-info-600); }

/* ═══ Il credito che si riapre ═══
   Si dice in tutti e due i casi: «si riapre una partita» è quello che uno si aspetta,
   «nessuna partita» è quello che nessuno si aspetta — ed è per questo che va scritto. */
.evas-part[b-e8m7ivkgf8] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-top: 0.6rem;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
    line-height: 1.35;
}

.evas-part i[b-e8m7ivkgf8] { flex: 0 0 auto; margin-top: 0.1rem; }

.evas-part--si[b-e8m7ivkgf8] {
    border: 1px solid var(--sedna-info-600);
    color: var(--sedna-text);
}

.evas-part--si i[b-e8m7ivkgf8] { color: var(--sedna-info-600); }

/* Neutro, non ambra: con un fornitore «nessuna partita» è il comportamento giusto, e
   colorarlo di avviso vorrebbe dire far cercare un difetto che non c'è. */
.evas-part--no[b-e8m7ivkgf8] {
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text);
}

.evas-part--no i[b-e8m7ivkgf8] { color: var(--sedna-text-tertiary); }
/* /Pages/Contabilita/Assegni/ImpostazioniAssegniPage.razor.rz.scp.css */
.asimp-attesa[b-ja2w2fr0fn] {
    display: flex;
    justify-content: center;
    padding: 2.5rem 0;
}

/* La fascia «modulo spento». ⚠️ Sta in cima e non sotto il campo: senza conto portafoglio
   la prima nota non applica NESSUNA regola sugli assegni, e chi non se ne accorge cerca il
   difetto altrove per mezza giornata.
   ⚠️ Il testo NON usa un token warning scuro (--sedna-warning-800 non esiste: la scala si
   ferma a 700, e var() col ripiego non fallisce — prende il ripiego in silenzio). */
.asimp-spento[b-ja2w2fr0fn] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    margin-bottom: 0.75rem;
    padding: 0.6rem 0.8rem;
    border: 1px solid var(--sedna-warning-700);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-warning-50);
    color: var(--sedna-text);
    font-size: 0.8rem;
    line-height: 1.35;
}

.asimp-spento i[b-ja2w2fr0fn] {
    flex: 0 0 auto;
    margin-top: 0.1rem;
    font-size: 1rem;
    color: var(--sedna-warning-700);
}

.asimp .mono[b-ja2w2fr0fn] {
    font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace);
}
/* /Pages/Contabilita/Assegni/SituazioneAssegniPage.razor.rz.scp.css */
/* ═══ Il modulo spento e la quadratura: due fasce, due significati diversi ═══
   ⚠️ Niente --sedna-warning-800 / --sedna-error-800: la scala dei token si ferma a 700,
   e var(--inventato, ripiego) NON fallisce — prende il ripiego in silenzio, e il colore
   sembra «quasi giusto» per sempre. */
.assl-spento[b-2sdqpqwo3o],
.assl-quad[b-2sdqpqwo3o] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    margin-bottom: 0.5rem;
    padding: 0.55rem 0.8rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.8rem;
    line-height: 1.35;
}

.assl-spento[b-2sdqpqwo3o] {
    border: 1px solid var(--sedna-warning-700);
    background: var(--sedna-warning-50);
    color: var(--sedna-text);
}

.assl-spento i[b-2sdqpqwo3o] {
    flex: 0 0 auto;
    margin-top: 0.1rem;
    font-size: 1rem;
    color: var(--sedna-warning-700);
}

.assl-spento > div[b-2sdqpqwo3o] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: center;
}

.assl-quad--ok[b-2sdqpqwo3o] {
    border: 1px solid var(--sedna-success-600);
    background: var(--sedna-success-50);
    color: var(--sedna-text);
}

.assl-quad--ok i[b-2sdqpqwo3o] { color: var(--sedna-success-600); }

/* Non quadra = rosso, coi numeri. È l'unica cosa in questa pagina che chiede di andare
   a cercare qualcosa altrove. */
.assl-quad--no[b-2sdqpqwo3o] {
    border: 1px solid var(--sedna-error-700);
    background: var(--sedna-error-50);
    color: var(--sedna-text);
}

.assl-quad--no i[b-2sdqpqwo3o] { color: var(--sedna-error-700); }

.assl-quad i[b-2sdqpqwo3o] {
    flex: 0 0 auto;
    margin-top: 0.1rem;
    font-size: 1rem;
}

/* ═══ I sei totali ═══ */
.assl-tot[b-2sdqpqwo3o] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-bottom: 0.5rem;
}

.assl-tot__c[b-2sdqpqwo3o] {
    display: flex;
    flex: 1 1 130px;
    flex-direction: column;
    gap: 0.1rem;
    padding: 0.35rem 0.6rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

.assl-tot__l[b-2sdqpqwo3o] {
    color: var(--sedna-text-tertiary);
    font-size: 0.68rem;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.assl-tot__v[b-2sdqpqwo3o] {
    font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace);
    font-size: 0.92rem;
    font-weight: 600;
    text-align: right;
}

.assl-tot__c--portafoglio[b-2sdqpqwo3o] { border-color: var(--sedna-primary); }
.assl-tot__c--ko .assl-tot__v[b-2sdqpqwo3o] { color: var(--sedna-error-700); }
.assl-tot__c--tot[b-2sdqpqwo3o] { background: var(--sedna-surface-variant); }

/* ═══ Le pastiglie di stato ═══ */
.assl-stato[b-2sdqpqwo3o] {
    display: inline-block;
    padding: 0.08rem 0.45rem;
    border: 1px solid var(--sedna-border);
    border-radius: 999px;
    font-size: 0.7rem;
    white-space: nowrap;
}

.assl-stato--portafoglio[b-2sdqpqwo3o] { border-color: var(--sedna-primary); color: var(--sedna-primary); }
.assl-stato--versato[b-2sdqpqwo3o] { border-color: var(--sedna-success-600); color: var(--sedna-success-600); }
.assl-stato--insoluto[b-2sdqpqwo3o] { border-color: var(--sedna-error-700); color: var(--sedna-error-700); }
.assl-stato--restituito[b-2sdqpqwo3o] { border-color: var(--sedna-warning-700); color: var(--sedna-warning-700); }
.assl-stato--emesso[b-2sdqpqwo3o] { border-color: var(--sedna-info-600); color: var(--sedna-info-600); }
.assl-stato--annullato[b-2sdqpqwo3o] { color: var(--sedna-text-tertiary); text-decoration: line-through; }

/* Ricevuto / emesso: la freccia dice il verso senza leggere la parola. */
.assl-dir[b-2sdqpqwo3o] { display: inline-flex; gap: 0.25rem; align-items: center; white-space: nowrap; }
.assl-dir--r i[b-2sdqpqwo3o] { color: var(--sedna-success-600); }
.assl-dir--e i[b-2sdqpqwo3o] { color: var(--sedna-info-600); }

/* ═══ Gli avvisi: ambra, non rossi. Non sono errori. ═══ */
.assl-avvisi[b-2sdqpqwo3o] { display: inline-flex; gap: 0.25rem; align-items: center; }
.assl-avviso[b-2sdqpqwo3o] { color: var(--sedna-warning-700); font-size: 0.85rem; }
.assl-avviso--muto[b-2sdqpqwo3o] { color: var(--sedna-text-tertiary); }

/* La riga con un avviso si nota senza gridare: il rosso qui vorrebbe dire «sbagliato». */
[b-2sdqpqwo3o] .assl-row-avviso { background: var(--sedna-warning-50); }

/* ═══ Il numero di registrazione come collegamento ═══ */
.assl-link[b-2sdqpqwo3o] {
    display: inline-flex;
    gap: 0.35rem;
    align-items: baseline;
    padding: 0;
    border: 0;
    background: none;
    color: var(--sedna-primary);
    cursor: pointer;
}

.assl-link:hover[b-2sdqpqwo3o] { text-decoration: underline; }
.assl-link__d[b-2sdqpqwo3o] { color: var(--sedna-text-tertiary); font-size: 0.72rem; }

.assl-sogg__c[b-2sdqpqwo3o] { margin-right: 0.3rem; color: var(--sedna-text-tertiary); }

/* ═══ Il pulsante di correzione per riga ═══ */
.assl-az[b-2sdqpqwo3o] {
    padding: 0.1rem 0.3rem;
    border: 0;
    border-radius: var(--sedna-radius-input);
    background: none;
    color: var(--sedna-text-secondary);
    cursor: pointer;
}

.assl-az:hover:not(:disabled)[b-2sdqpqwo3o] { background: var(--sedna-surface-hover); color: var(--sedna-primary); }
.assl-az:disabled[b-2sdqpqwo3o] { color: var(--sedna-text-tertiary); cursor: not-allowed; opacity: 0.5; }

/* ═══ I filtri ═══
   ⚠️ OGNI LOOKUP IN UN DIV A LARGHEZZA FISSA: `.sedna-lookup-container` è a larghezza
   piena, e nudo in una riga flex si prende tutto lo spazio — i filtri finiscono impilati
   in verticale nell'angolo. Trappola già pagata su MovimentiList, GiacenzePage e la lista
   delle distinte: il rimedio vive nel CSS della pagina, non nel componente. */
.assl-filtri[b-2sdqpqwo3o] { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
.assl-f--corto[b-2sdqpqwo3o] { width: 110px; }
.assl-f--medio[b-2sdqpqwo3o] { width: 140px; }
.assl-f--conto[b-2sdqpqwo3o] { width: 180px; }
[b-2sdqpqwo3o] .assl-f--num { width: 120px; }
[b-2sdqpqwo3o] .assl-f--testo { width: 160px; }
[b-2sdqpqwo3o] .assl-f--data { width: 110px; }

/* ═══ La correzione ═══ */
.assl-corr__cap[b-2sdqpqwo3o] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-bottom: 0.6rem;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface-variant);
    font-size: 0.78rem;
    line-height: 1.35;
}

.assl-corr__cap i[b-2sdqpqwo3o] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-info-600); }

.assl-msg[b-2sdqpqwo3o] {
    display: flex;
    gap: 0.4rem;
    align-items: flex-start;
    margin-top: 0.6rem;
    padding: 0.45rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
}

.assl-msg--no[b-2sdqpqwo3o] {
    border: 1px solid var(--sedna-error-700);
    color: var(--sedna-error-700);
}

.assl .mono[b-2sdqpqwo3o],
.assl-corr .mono[b-2sdqpqwo3o] {
    font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace);
}

/* La cella delle azioni tiene due comandi: la stampa (solo sugli emessi) e la correzione.
   ⚠️ 92px e non 52: con due pulsanti su 52px il secondo andava a capo, e a capo in una riga
   di griglia vuol dire fuori dalla riga. */
.assl-az-cella[b-2sdqpqwo3o] {
    display: inline-flex;
    gap: 0.15rem;
    align-items: center;
}

/* ═══ L'esito del versamento ═══
   ⚠️ Una fascia e non un toast: il toast dura quattro secondi, e qui dentro ci sono due
   comandi (la distinta e la registrazione) che si usano subito dopo. Resta finché non la
   si chiude. */
.assl-esito[b-2sdqpqwo3o] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    margin-bottom: 0.5rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--sedna-success-600);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-success-50);
    color: var(--sedna-text);
    font-size: 0.8rem;
}

.assl-esito > i[b-2sdqpqwo3o] {
    flex: 0 0 auto;
    margin-top: 0.15rem;
    color: var(--sedna-success-600);
}

.assl-esito__t[b-2sdqpqwo3o] {
    display: flex;
    flex: 1 1 auto;
    flex-wrap: wrap;
    gap: 0.4rem 0.75rem;
    align-items: center;
}

.assl-esito__a[b-2sdqpqwo3o] { display: flex; gap: 0.35rem; align-items: center; }

.assl-esito__x[b-2sdqpqwo3o] {
    flex: 0 0 auto;
    padding: 0.1rem 0.25rem;
    border: 0;
    background: none;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
}

.assl-esito__x:hover[b-2sdqpqwo3o] { color: var(--sedna-text); }
/* /Pages/Contabilita/Assegni/VersaAssegniModal.razor.rz.scp.css */
.vers-attesa[b-bdisjqfrqe] {
    display: flex;
    justify-content: center;
    padding: 1.2rem 0;
}

/* ═══ I due riquadri ═══
   ⚠️ Rosso e ambra, e non si somigliano: uno BLOCCA (un assegno di un'altra ditta) e
   l'altro no (un postdatato). Farli uguali vorrebbe dire imparare a ignorarli tutti e due. */
.vers-box[b-bdisjqfrqe] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-top: 0.6rem;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
    line-height: 1.35;
}

.vers-box ul[b-bdisjqfrqe] { margin: 0.25rem 0 0.35rem; padding-left: 1.1rem; }

.vers-box--no[b-bdisjqfrqe] {
    border: 1px solid var(--sedna-error-700);
    background: var(--sedna-error-50);
    color: var(--sedna-text);
}

.vers-box--no > i[b-bdisjqfrqe] { color: var(--sedna-error-700); }

.vers-box--av[b-bdisjqfrqe] {
    border: 1px solid var(--sedna-warning-700);
    background: var(--sedna-warning-50);
    color: var(--sedna-text);
}

.vers-box--av > i[b-bdisjqfrqe] { color: var(--sedna-warning-700); }
.vers-box > i[b-bdisjqfrqe] { flex: 0 0 auto; margin-top: 0.1rem; font-size: 1rem; }

/* ═══ Il totale ═══ */
.vers-tot[b-bdisjqfrqe] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-top: 0.7rem;
    padding: 0.4rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface-variant);
}

.vers-tot__l[b-bdisjqfrqe] { color: var(--sedna-text-secondary); font-size: 0.78rem; }
.vers-tot__v[b-bdisjqfrqe] { font-size: 1.05rem; font-weight: 600; }

/* ═══ La registrazione che nascerà ═══ */
.vers-reg[b-bdisjqfrqe] { margin-top: 0.5rem; }

.vers-reg__h[b-bdisjqfrqe] {
    display: flex;
    gap: 0.5rem;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 0.3rem;
    font-size: 0.78rem;
}

.vers-reg__c[b-bdisjqfrqe] { margin-left: 0.4rem; color: var(--sedna-text-secondary); font-size: 0.72rem; }
.vers-reg__no[b-bdisjqfrqe] { color: var(--sedna-error-700); font-weight: 600; }

.vers-reg__t[b-bdisjqfrqe] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.76rem;
}

.vers-reg__t th[b-bdisjqfrqe] {
    padding: 0.25rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    color: var(--sedna-text-tertiary);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-align: left;
    text-transform: uppercase;
}

.vers-reg__t td[b-bdisjqfrqe] {
    padding: 0.22rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    vertical-align: top;
}

.vers-reg__t tfoot td[b-bdisjqfrqe] {
    border-top: 2px solid var(--sedna-border);
    border-bottom: 0;
    font-weight: 600;
}

.vers-reg__t .r[b-bdisjqfrqe] { text-align: right; }

.vers-reg__d[b-bdisjqfrqe] {
    display: block;
    color: var(--sedna-text-tertiary);
    font-size: 0.7rem;
}

.vers .mono[b-bdisjqfrqe] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }
/* /Pages/Contabilita/Bilancio/BilancioPage.razor.rz.scp.css */
/* ⚠️ I MARGINI ORIZZONTALI LI DECIDE IL GUSCIO (Antonio, 21/08). Queste pagine avevano un
   `clamp(18px, 2vw, 28px)` per lato, mentre l'intestazione e le griglie stanno su
   --sedna-space-4: fasce filtri, titolo e righe partivano da tre ascisse diverse, e la
   pagina si leggeva come tre pezzi accostati invece che come una cosa sola.
   Non e' solo brutto: l'occhio usa il bordo sinistro per incolonnare, e tre bordi diversi
   lo costringono a ricominciare da capo a ogni blocco. */
/* ============================================================
   Bilancio Contabile — 3 viste: Bilancio di Verifica · Stato
   Patrimoniale · Conto Economico. Riskin del mockup "Bilancio
   Contabile.html" sui token --sedna-*.
   ============================================================ */
.bil[b-l65okzecqk] {
    display: flex;
    flex-direction: column;
    /* Root a viewport fisso dal guscio globale .sedna-page (sedna.page.css):
       height calc(100dvh - 1rem) + overflow. Le sezioni hanno padding-inline
       proprio (clamp), quindi azzero quello del guscio. */
    min-height: 0;

    /* tinte di livello (tree-table): si adattano da sole a chiaro/scuro */
    /* I TRE LIVELLI SI DISTINGUONO PER TINTA, NON PER GRIGIO.
       Prima erano due velature di nero: leggibili ma indistinguibili a colpo d'occhio,
       e con la banda del gruppo che sembrava una riga come le altre. Ora si usa il
       BLU del sistema — lo stesso token della selezione e dei focus — a tre intensita':
       gruppo marcato, mastro appena accennato, conto neutro. Restano velature sul
       colore di superficie, quindi seguono da sole il tema chiaro e quello scuro. */
    --bl-l0: color-mix(in srgb, var(--sedna-primary) 12%, var(--sedna-surface));
    --bl-l0h: color-mix(in srgb, var(--sedna-primary) 18%, var(--sedna-surface));
    --bl-l1: color-mix(in srgb, var(--sedna-primary) 5%, var(--sedna-surface));
    --bl-l1h: color-mix(in srgb, var(--sedna-primary) 9%, var(--sedna-surface));
    --bl-ctrl-h: 34px;
}

/* ---------------- Intestazione modulo ---------------- */
.bl-head[b-l65okzecqk] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 8px var(--sedna-space-4, 1rem) 8px;
}
.bl-head .crest[b-l65okzecqk] {
    width: 34px;
    height: 34px;
    border-radius: var(--sedna-radius-lg, .75rem);
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
    display: grid;
    place-items: center;
    font-size: 1.15rem;
    flex: none;
}
.bl-title h1[b-l65okzecqk] { margin: 0; font-size: 1.2rem; font-weight: 600; letter-spacing: -0.015em; line-height: 1.1; color: var(--sedna-text); }
.bl-title .sub[b-l65okzecqk] { margin: 2px 0 0; font-size: 0.8125rem; color: var(--sedna-text-tertiary); }
.bl-head .spacer[b-l65okzecqk] { flex: 1; }

/* segmented view switcher */
.bl-switch[b-l65okzecqk] {
    display: flex;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .375rem);
    padding: 3px;
    gap: 2px;
    background: var(--sedna-surface-variant);
    height: 36px;
    align-items: center;
}
.bl-switch button[b-l65okzecqk] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    padding: 0 14px;
    height: 100%;
    border-radius: 5px;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 7px;
}
.bl-switch button i[b-l65okzecqk] { font-size: 0.9rem; }
.bl-switch button:hover[b-l65okzecqk] { color: var(--sedna-text); }
.bl-switch button.active[b-l65okzecqk] { background: var(--sedna-surface); color: var(--sedna-primary); box-shadow: var(--sedna-shadow-sm); }

/* ---------------- Toolbar filtri ---------------- */
.bl-filters[b-l65okzecqk] {
    flex: none;
    display: flex;
    align-items: flex-end;
    gap: 9px;
    flex-wrap: wrap;
    padding: 0 var(--sedna-space-4, 1rem) 8px;
    border-bottom: 1px solid var(--sedna-border);
}
.bl-f[b-l65okzecqk] { display: flex; flex-direction: column; gap: 5px; }
.bl-f > label[b-l65okzecqk] { font-size: 0.625rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
.bl-f .se[b-l65okzecqk] {
    height: var(--bl-ctrl-h);
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base, .375rem);
    padding: 0 28px 0 10px;
    font-size: 0.8125rem;
    color: var(--sedna-text);
    outline: none;
    font-family: inherit;
    appearance: none;
    cursor: pointer;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23757575' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 6l3.5 3.5L11.5 6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 8px center;
}
.bl-f .se:focus[b-l65okzecqk] { border-color: var(--sedna-primary); box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }
.bl-f .daterange[b-l65okzecqk] { display: flex; align-items: center; gap: 6px; }
.bl-f .daterange .sep[b-l65okzecqk] { color: var(--sedna-text-tertiary); font-size: 0.75rem; }
/* Il SednaDateEdit è un componente figlio (DevExpress) con scope proprio: la
   classe .bl-date sul wrapper non stringe l'input interno senza ::deep.
   Larghezza dal CONTENUTO (10ch + i bottoni interni), non in pixel: i 112px di
   prima tagliavano l'anno appena il font saliva. La misura sta scritta una volta
   sola, o le due regole si contraddicono. */
.bl-date[b-l65okzecqk],
.bl-filters[b-l65okzecqk]  .bl-date { width: calc(10ch + 3.75rem); }
.bl-filters[b-l65okzecqk]  .bl-date .dxbl-edit { min-width: 0; }

/* I SednaComboBox sono componenti figli (sedna-combobox-native, width:100%) con
   scope CSS proprio: le regole scoped della pagina non li raggiungono senza ::deep.
   Fisso qui la larghezza del controllo interno, dimensionata al contenuto. */
.bl-filters[b-l65okzecqk]  .se { width: 132px; }
.bl-filters[b-l65okzecqk]  .se.se--td { width: 160px; }   /* Tipo Data (Data registrazione/…) */
.bl-filters[b-l65okzecqk]  .se.se--tp { width: 120px; }   /* Tipo (Patrimoniale/Economico) */
/* Filtro zero: le due voci sono corte ("Tutti", "Diversi da zero"), 104px bastano
   — e sono 16px che tengono «Filtra» sulla stessa riga. */
.bl-filters[b-l65okzecqk]  .se.se--z  { width: 104px; }   /* Filtro zero (Diversi da zero) */

/* segmented dettaglio */
.bl-seg[b-l65okzecqk] {
    display: flex;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .375rem);
    padding: 3px;
    gap: 2px;
    background: var(--sedna-surface-variant);
    height: var(--bl-ctrl-h);
    align-items: center;
}
.bl-seg button[b-l65okzecqk] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    padding: 0 11px;
    height: 100%;
    border-radius: 4px;
    white-space: nowrap;
}
.bl-seg button:hover[b-l65okzecqk] { color: var(--sedna-text); }
.bl-seg button.active[b-l65okzecqk] { background: var(--sedna-surface); color: var(--sedna-primary); box-shadow: var(--sedna-shadow-sm); }
/* segmented «Dettaglio» spostato nell'header (slot Actions) */
/* Testata compatta: e' una pagina che si guarda per leggere numeri, e ogni pixel
   speso in alto e' una riga di bilancio in meno. */
/* Testata ridotta all'osso: titolo piccolo, niente stemma, una riga sola con i
   pulsanti accanto al titolo. Su questa pagina l'altezza guadagnata qui e' altezza
   di bilancio, che e' l'unica cosa per cui la si apre. */

.bl-pagehead[b-l65okzecqk]  .sedna-page__crest { display: none; }

.bl-pagehead[b-l65okzecqk]  .sedna-page__sub { font-size: 0.6875rem; line-height: 1.2; }
.bl-pagehead[b-l65okzecqk]  .sedna-page__head { gap: 8px; }

.bl-seg--head[b-l65okzecqk] { height: 24px; background: var(--sedna-surface); padding: 2px; }
.bl-seg--head button[b-l65okzecqk] { font-size: 0.6875rem; padding: 0 8px; display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.bl-seg--tree .sep[b-l65okzecqk] { width: 1px; align-self: stretch; margin: 2px 3px; background: var(--sedna-border); }
.bl-seg--head button i[b-l65okzecqk] { font-size: 0.8rem; }
/* Due gruppi di pulsanti nella testata (tipo di bilancio e livello di dettaglio):
   su schermi stretti vanno a capo insieme invece di comprimersi. */
.bl-pagehead[b-l65okzecqk]  .sedna-page__actions { flex-wrap: wrap; row-gap: 6px; }

/* toggle (nascondi non movimentati) */
.bl-toggle[b-l65okzecqk] { display: flex; align-items: center; gap: 9px; height: var(--bl-ctrl-h); cursor: pointer; user-select: none; }
.bl-toggle .switch[b-l65okzecqk] { position: relative; width: 36px; height: 20px; flex: none; }
.bl-toggle .switch input[b-l65okzecqk] { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.bl-toggle .track[b-l65okzecqk] { position: absolute; inset: 0; background: var(--sedna-border-strong); border-radius: 999px; transition: background .15s ease; }
.bl-toggle .knob[b-l65okzecqk] { position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; background: #fff; border-radius: 50%; transition: transform .15s ease; box-shadow: 0 1px 2px rgba(0,0,0,0.25); }
.bl-toggle input:checked + .track[b-l65okzecqk] { background: var(--sedna-primary); }
.bl-toggle input:checked + .track + .knob[b-l65okzecqk] { transform: translateX(16px); }
.bl-toggle input:focus-visible + .track[b-l65okzecqk] { outline: 2px solid var(--sedna-primary); outline-offset: 2px; }
.bl-toggle .tl[b-l65okzecqk] { font-size: 0.8125rem; color: var(--sedna-text-secondary); font-weight: 500; white-space: nowrap; }

/* ---- I due interruttori nella TESTATA ----
   Stessa scatola dei segmented (24px, bordo, raggio, superficie) perche' stanno
   sulla stessa riga e devono leggersi come un unico gruppo di controlli, non come
   due frammenti di form finiti nell'header. Le misure dello switch scendono in
   proporzione: 26x15 dentro 24px di altezza, testo 11px come i pulsanti accanto. */
.bl-hdtog[b-l65okzecqk] {
    display: flex;
    align-items: center;
    gap: 8px;
    height: 24px;
    padding: 2px 9px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .375rem);
    background: var(--sedna-surface);
}
.bl-hdtog .sep[b-l65okzecqk] { width: 1px; align-self: stretch; margin: 2px 1px; background: var(--sedna-border); }
.bl-toggle--hd[b-l65okzecqk] { height: 20px; gap: 6px; }
.bl-toggle--hd .switch[b-l65okzecqk] { width: 26px; height: 15px; flex: none; }
.bl-toggle--hd .knob[b-l65okzecqk] { width: 11px; height: 11px; }
.bl-toggle--hd input:checked + .track + .knob[b-l65okzecqk] { transform: translateX(11px); }
.bl-toggle--hd .tl[b-l65okzecqk] { font-size: 0.6875rem; font-weight: 600; }

/* ---- Riga confronto (condizionale, sotto ai filtri principali) ---- */
.bl-filters--extra[b-l65okzecqk] { padding-top: 6px; gap: 16px; }
/* toggle compatti (font ridotto) usati anche in riga principale */
.bl-toggle--sm[b-l65okzecqk] { height: var(--bl-ctrl-h); }
.bl-toggle--sm .switch[b-l65okzecqk] { width: 30px; height: 17px; }
.bl-toggle--sm .knob[b-l65okzecqk] { width: 13px; height: 13px; }
.bl-toggle--sm input:checked + .track + .knob[b-l65okzecqk] { transform: translateX(13px); }
.bl-toggle--sm .tl[b-l65okzecqk] { font-size: 0.6875rem; }

.bl-filters .f-spacer[b-l65okzecqk] { flex: 1; }
/* il pulsante Filtra si allinea a destra senza essere un item che manda a capo */
.bl-f--apply[b-l65okzecqk] { margin-left: auto; }

/* azione primaria */
/* Combo dei filtri di presentazione: componenti figli, quindi la misura va via ::deep. */
/* "Applica a": la voce piu' lunga e' "Solo patrimoniale" — 128px la contengono, e
   i 22px risparmiati servono a tenere tutta la riga filtri (fino a «Filtra») su una
   riga sola anche quando questa combo c'e'. */
.bl-filters[b-l65okzecqk]  .bl-se { width: 128px; }
.bl-filters[b-l65okzecqk]  .bl-se.bl-se--lg { width: 205px; }

.bl-apply[b-l65okzecqk] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    gap: 6px;
    /* Piu' basso dei filtri: e' un comando, non un campo (stessa scelta dello scadenzario). */
    height: 26px;
    padding: 0 12px;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-primary);
    background: var(--sedna-primary);
    color: var(--sedna-text-inverse, #fff);
    font-size: 0.8125rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
}
.bl-apply:hover:not(:disabled)[b-l65okzecqk] { background: var(--sedna-primary-hover); border-color: var(--sedna-primary-hover); }
.bl-apply:disabled[b-l65okzecqk] { opacity: .6; cursor: default; }

/* ---------------- Scroller viste ---------------- */
.bl-scroll[b-l65okzecqk] { flex: 1; min-height: 0; overflow: auto; display: flex; flex-direction: column; }
.bl-view[b-l65okzecqk] { display: flex; flex: 1; min-height: 0; flex-direction: column; }

/* stato (loading / errore / vuoto) */
.bl-state[b-l65okzecqk] { display: flex; align-items: center; gap: 10px; padding: 44px; justify-content: center; color: var(--sedna-text-secondary); font-size: .9375rem; }
.bl-state--err[b-l65okzecqk] { color: var(--sedna-error-700); }

/* ============================================================
   TREE-TABLE (condivisa)
   ============================================================ */
.bl-tablewrap[b-l65okzecqk] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    margin: 12px var(--sedna-space-4, 1rem) 0;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem);
    background: var(--sedna-surface);
}
table.bl-tt[b-l65okzecqk] { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 0.8125rem; table-layout: fixed; }
.bl-tt thead th[b-l65okzecqk] {
    position: sticky;
    top: 0;
    z-index: 3;
    text-align: left;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    background: var(--sedna-surface-variant);
    padding: 10px 14px;
    white-space: nowrap;
    border-bottom: 1px solid var(--sedna-border);
}
.bl-tt th.num[b-l65okzecqk], .bl-tt td.num[b-l65okzecqk] { text-align: right; }
.bl-tt th.cod[b-l65okzecqk], .bl-tt td.cod[b-l65okzecqk] { width: 118px; }
.bl-tt th.num[b-l65okzecqk] { width: 150px; }

.bl-tt tbody td[b-l65okzecqk] { padding: 0 14px; height: 34px; vertical-align: middle; border-bottom: 1px solid var(--sedna-border-light); }
.bl-tt tbody tr:last-child td[b-l65okzecqk] { border-bottom: none; }
.bl-tt tbody tr:hover td[b-l65okzecqk] { background: color-mix(in srgb, var(--sedna-primary-subtle) 36%, transparent); }

/* codici + cifre mono */
.bl-tt .cod-txt[b-l65okzecqk] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-size: 0.75rem; color: var(--sedna-text-secondary); white-space: nowrap; }
.bl-tt .num[b-l65okzecqk] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; font-size: 0.8125rem; white-space: nowrap; }
.bl-tt .num.neg[b-l65okzecqk] { color: var(--sedna-error); }
.bl-tt .num.zero[b-l65okzecqk] { color: var(--sedna-text-tertiary); }
.bl-tt .num.saldo[b-l65okzecqk] { font-weight: 600; color: var(--sedna-text); }
.bl-tt .num.saldo.neg[b-l65okzecqk] { color: var(--sedna-error); }

/* descrizione con indent + chevron */
.bl-desc[b-l65okzecqk] { display: flex; align-items: center; gap: 8px; min-width: 0; }
.bl-exp[b-l65okzecqk] {
    width: 20px;
    height: 20px;
    flex: none;
    display: grid;
    place-items: center;
    border: none;
    background: transparent;
    border-radius: 4px;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    font-size: 0.75rem;
    padding: 0;
}
.bl-exp:hover[b-l65okzecqk] { background: var(--sedna-surface-hover); color: var(--sedna-text); }
.bl-exp.leaf[b-l65okzecqk] { visibility: hidden; cursor: default; }
.bl-exp i[b-l65okzecqk] { transition: transform .15s ease; }
.bl-exp.open i[b-l65okzecqk] { transform: rotate(90deg); }
.bl-dtxt[b-l65okzecqk] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* drill-down alla scheda contabile (solo righe conto): visibile all'hover della riga */
.bl-drill[b-l65okzecqk] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    flex: none;
    border-radius: 4px;
    color: var(--sedna-text-tertiary);
    text-decoration: none;
    font-size: 0.75rem;
    opacity: 0;
    transition: opacity .12s ease;
    /* ⚠️ Da <a> a <button>: senza queste quattro righe il browser ci mette il suo bordo grigio,
       il suo sfondo e il suo font, e l'icona diventa un pulsantino di sistema in mezzo al
       bilancio. Build e test non se ne accorgono — il CSS non lo compila nessuno. */
    border: none;
    background: transparent;
    padding: 0;
    font-family: inherit;
    cursor: pointer;
}
.bl-tt tbody tr:hover .bl-drill[b-l65okzecqk] { opacity: 1; }
.bl-drill:hover[b-l65okzecqk] { background: var(--sedna-surface-hover); color: var(--sedna-primary); }
.bl-drill:focus-visible[b-l65okzecqk] { opacity: 1; outline: 2px solid var(--sedna-primary); outline-offset: 1px; }

/* livello: tinta + peso (più chiaro andando in profondità) */
.bl-tt tr.l0 td[b-l65okzecqk] { background: var(--bl-l0); font-weight: 700; }
.bl-tt tr.l0:hover td[b-l65okzecqk] { background: var(--bl-l0h); }
.bl-tt tr.l0 .cod-txt[b-l65okzecqk] { color: var(--sedna-text); font-weight: 700; }
.bl-tt tr.l0 .bl-dtxt[b-l65okzecqk] { color: var(--sedna-text); font-weight: 700; letter-spacing: -0.005em; }
.bl-tt tr.l0 .num[b-l65okzecqk] { color: var(--sedna-text); font-weight: 700; }
.bl-tt tr.l0 td:first-child[b-l65okzecqk] { box-shadow: inset 3px 0 0 var(--sedna-primary); }

.bl-tt tr.l1 td[b-l65okzecqk] { background: var(--bl-l1); font-weight: 600; }
.bl-tt tr.l1:hover td[b-l65okzecqk] { background: var(--bl-l1h); }
.bl-tt tr.l1 .bl-dtxt[b-l65okzecqk] { color: var(--sedna-text); font-weight: 600; }
.bl-tt tr.l1 .num[b-l65okzecqk] { font-weight: 600; color: var(--sedna-text); }

.bl-tt tr.l2 td[b-l65okzecqk] { background: var(--sedna-surface); font-weight: 400; }
.bl-tt tr.l2 .bl-dtxt[b-l65okzecqk] { color: var(--sedna-text-secondary); }

/* Dare e Avere nelle due colonne: stessi colori del resto della contabilita'. */
.bl-tt .num .dare[b-l65okzecqk] { color: var(--sedna-dare); }
.bl-tt .num .avere[b-l65okzecqk] { color: var(--sedna-avere); }

/* ============================================================
   SednaServerGrid (vista Verifica): banda Gruppo + righe Mastro/Conto
   ============================================================ */
.bl-grid-wrap[b-l65okzecqk] { flex: 1; min-height: 0; display: flex; margin: 0 var(--sedna-space-4, 1rem) 10px; }
.bl-grid-wrap[b-l65okzecqk]  .ssg { flex: 1 1 auto; min-height: 0; }

/* toolbar della griglia (titolo a sinistra) */
.bl-tb-ttl[b-l65okzecqk] { font-size: 0.95rem; font-weight: 600; color: var(--sedna-text); letter-spacing: -0.01em; }
.bl-tb-chip[b-l65okzecqk] { font-size: 0.6875rem; font-weight: 600; color: var(--sedna-text-secondary); background: var(--sedna-surface-hover); padding: 2px 9px; border-radius: 999px; margin-left: 8px; }

/* celle numeriche/mono e descrizione */
.bl-grid-wrap[b-l65okzecqk]  .mono { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; font-size: 0.8125rem; white-space: nowrap; }
.bl-grid-wrap[b-l65okzecqk]  .mono.neg { color: var(--sedna-error); }
.bl-grid-wrap[b-l65okzecqk]  .mono.zero { color: var(--sedna-text-tertiary); }
.bl-grid-wrap[b-l65okzecqk]  .mono.saldo { font-weight: 600; color: var(--sedna-text); }
.bl-grid-wrap[b-l65okzecqk]  .mono.pos { color: var(--sedna-success, #1a7f37); }
.bl-grid-wrap[b-l65okzecqk]  .bl-cell { display: flex; align-items: center; gap: 6px; min-width: 0; }
.bl-grid-wrap[b-l65okzecqk]  .bl-dtxt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bl-grid-wrap[b-l65okzecqk]  .bl-drill { margin-left: 8px; color: var(--sedna-text-tertiary); opacity: .55; text-decoration: none; }
.bl-grid-wrap[b-l65okzecqk]  .bl-drill:hover { color: var(--sedna-primary); opacity: 1; }

/* chevron espandi/comprimi sulla riga Mastro */
.bl-grid-wrap[b-l65okzecqk]  .bl-exp {
    flex: none; width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center;
    border: none; background: transparent; cursor: pointer; padding: 0; border-radius: 4px;
    color: var(--sedna-text-tertiary); font-size: 0.7rem;
}
.bl-grid-wrap[b-l65okzecqk]  .bl-exp:hover { background: var(--sedna-surface-hover); color: var(--sedna-text); }
.bl-grid-wrap[b-l65okzecqk]  .bl-exp i { transition: transform .15s ease; }
.bl-grid-wrap[b-l65okzecqk]  .bl-exp.open i { transform: rotate(90deg); }

/* Riga di GRUPPO: non e' piu' una banda, e' una riga — ma si legge come un titolo. */
.bl-grid-wrap[b-l65okzecqk]  .bl-r.l0 { background: var(--bl-l0); font-weight: 700; }
.bl-grid-wrap[b-l65okzecqk]  .bl-r.l0:hover { background: var(--bl-l0h); }
.bl-grid-wrap[b-l65okzecqk]  .bl-r.l0 td:first-child { box-shadow: inset 3px 0 0 var(--sedna-primary); }
.bl-grid-wrap[b-l65okzecqk]  .bl-r.l0 .mono,
.bl-grid-wrap[b-l65okzecqk]  .bl-r.l0 .bl-dtxt { font-weight: 700; color: var(--sedna-text); }

/* Spazio della freccetta anche dove non c'e' (foglie): senza, i codici ballano. */
.bl-grid-wrap[b-l65okzecqk]  .bl-exp.leaf { display: inline-block; width: 18px; height: 18px; }

/* livelli riga: Gruppo marcato, Mastro accennato, Conto neutro */
.bl-grid-wrap[b-l65okzecqk]  .bl-r.l1 { background: var(--bl-l1); }
.bl-grid-wrap[b-l65okzecqk]  .bl-r.l1:hover { background: var(--bl-l1h); }
.bl-grid-wrap[b-l65okzecqk]  .bl-r.l2 { background: var(--sedna-surface); }
/* Filo di colore a sinistra della banda: dice dove comincia il gruppo anche quando
   la tabella e' lunga e la tinta da sola si perde. */
.bl-band[b-l65okzecqk] { box-shadow: inset 3px 0 0 var(--sedna-primary); }
.bl-grid-wrap[b-l65okzecqk]  .bl-r.l1 .mono { font-weight: 600; color: var(--sedna-text); }
.bl-grid-wrap[b-l65okzecqk]  .bl-r.l1 .bl-dtxt { font-weight: 600; }

/* banda del Gruppo (header collassabile) */
.bl-band[b-l65okzecqk] {
    display: flex; align-items: center; gap: 10px; width: 100%;
    border: none; background: var(--bl-l0); cursor: pointer;
    padding: 0 12px; height: 100%; min-height: 30px; font-family: inherit; text-align: left;
}
.bl-band:hover[b-l65okzecqk] { background: var(--bl-l0h); }
.bl-band-chev[b-l65okzecqk] { color: var(--sedna-text-tertiary); font-size: 0.8rem; transition: transform .15s ease; }
.bl-band.closed .bl-band-chev[b-l65okzecqk] { transform: rotate(-90deg); }
.bl-band-cod[b-l65okzecqk] { font-weight: 700; color: var(--sedna-text); }
.bl-band-ttl[b-l65okzecqk] { font-weight: 700; color: var(--sedna-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Niente gap: le larghezze sono quelle delle colonne, e uno spazio in mezzo
   sposterebbe i numeri fuori asse rispetto ai valori sotto. */
.bl-band-tot[b-l65okzecqk] { margin-left: auto; display: flex; align-items: baseline; gap: 0; white-space: nowrap; }
/* Niente padding proprio: ce l'ha gia' la banda (0 12px), esattamente come le celle
   della griglia. Aggiungerne altro spostava i numeri di 12px a sinistra delle colonne,
   ed e' il motivo per cui sembravano "buttati a destra" ma fuori asse. */
.bl-band-tot .v[b-l65okzecqk] { display: inline-block; text-align: right; box-sizing: border-box; }
.bl-band-tot .k[b-l65okzecqk] { font-size: 0.625rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
.bl-band-tot .v[b-l65okzecqk] { font-size: 0.8125rem; color: var(--sedna-text); }
.bl-band-tot .v.tot[b-l65okzecqk] { font-weight: 700; }
.bl-band-tot .v.neg[b-l65okzecqk] { color: var(--sedna-error); }

/* ============================================================
   FOOTER (totali / quadratura) — vista Verifica
   ============================================================ */
.bl-foot[b-l65okzecqk] {
    flex: none;
    margin: 0 var(--sedna-space-4, 1rem) clamp(14px, 2vw, 20px);
    border: 1px solid var(--sedna-border);
    border-top: none;
    border-radius: 0 0 var(--sedna-radius-lg, .75rem) var(--sedna-radius-lg, .75rem);
    background: var(--sedna-surface-variant);
    display: flex;
    align-items: center;
    gap: 22px;
    padding: 12px clamp(14px, 1.5vw, 20px);
    flex-wrap: wrap;
}
.bl-foot .tot[b-l65okzecqk] { display: flex; align-items: baseline; gap: 9px; }
.bl-foot .tot .k[b-l65okzecqk] { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
.bl-foot .tot .v[b-l65okzecqk] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; font-weight: 600; font-size: 1rem; color: var(--sedna-text); white-space: nowrap; }
.bl-foot .tot .v.dare[b-l65okzecqk] { color: var(--sedna-dare); }
.bl-foot .tot .v.avere[b-l65okzecqk] { color: var(--sedna-avere); }
.bl-foot .quad[b-l65okzecqk] { margin-left: auto; display: flex; align-items: center; gap: 14px; }
.bl-foot .sbil[b-l65okzecqk] { display: flex; align-items: baseline; gap: 8px; }
.bl-foot .sbil .k[b-l65okzecqk] { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
.bl-foot .sbil .v[b-l65okzecqk] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; font-weight: 600; color: var(--sedna-text); }
.bl-foot .sbil .v.neg[b-l65okzecqk] { color: var(--sedna-error); }
.bl-badge[b-l65okzecqk] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.75rem;
    font-weight: 700;
    padding: 5px 11px;
    border-radius: 999px;
    white-space: nowrap;
}
.bl-badge.success[b-l65okzecqk] { background: var(--sedna-success-50); color: var(--sedna-success-700); border: 1px solid var(--sedna-success-600); }
.bl-badge.danger[b-l65okzecqk] { background: var(--sedna-error-50); color: var(--sedna-error-700); border: 1px solid var(--sedna-error-500); }

/* ============================================================
   VISTE A DUE PANNELLI (SP / CE)
   ============================================================ */
.bl-duo[b-l65okzecqk] {
    flex: 1;
    min-height: 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    padding: 12px var(--sedna-space-4, 1rem) clamp(14px, 2vw, 20px);
    min-width: 0;
}
.bl-panel[b-l65okzecqk] {
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem);
    background: var(--sedna-surface);
    overflow: hidden;
}
.bl-panel-head[b-l65okzecqk] { flex: none; display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--sedna-border); }
.bl-panel-head .pico[b-l65okzecqk] { width: 28px; height: 28px; border-radius: 7px; display: grid; place-items: center; font-size: 0.85rem; flex: none; }
.bl-panel-head .pico.attivo[b-l65okzecqk]  { background: var(--sedna-primary-subtle); color: var(--sedna-primary); }
.bl-panel-head .pico.passivo[b-l65okzecqk] { background: var(--sedna-warning-50); color: var(--sedna-warning-700); }
.bl-panel-head .pico.costi[b-l65okzecqk]   { background: var(--sedna-error-50); color: var(--sedna-error-700); }
.bl-panel-head .pico.ricavi[b-l65okzecqk]  { background: var(--sedna-success-50); color: var(--sedna-success-700); }
.bl-panel-head h3[b-l65okzecqk] { margin: 0; font-size: 0.875rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--sedna-text); }
.bl-panel-head .pc[b-l65okzecqk] { margin-left: auto; font-size: 0.6875rem; font-weight: 600; color: var(--sedna-text-tertiary); background: var(--sedna-surface-hover); padding: 2px 9px; border-radius: 999px; }

.bl-panel-body[b-l65okzecqk] { flex: 1; min-height: 0; overflow: hidden; display: flex; }

/* La griglia dentro il pannello e' gia' dentro una card: niente bordo, niente angoli
   arrotondati, niente ombra — sarebbe una scatola dentro una scatola. */
.bl-panel-body[b-l65okzecqk]  .bl-panel-grid {
    flex: 1; min-width: 0; min-height: 0;
    border: none; border-radius: 0; box-shadow: none; background: transparent;
}
.bl-panel .bl-tt th.num[b-l65okzecqk], .bl-panel .bl-tt td.num[b-l65okzecqk] { width: 128px; }
.bl-panel .bl-tt th.cod[b-l65okzecqk], .bl-panel .bl-tt td.cod[b-l65okzecqk] { width: 104px; }
.bl-panel .bl-tt .cod-txt[b-l65okzecqk] { font-size: 0.7rem; }

.bl-panel-foot[b-l65okzecqk] { flex: none; border-top: 1px solid var(--sedna-border); background: var(--sedna-surface-variant); padding: 11px 16px; display: flex; flex-direction: column; gap: 7px; }
.bl-panel-foot .row[b-l65okzecqk] { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.bl-panel-foot .row .k[b-l65okzecqk] { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.03em; text-transform: uppercase; color: var(--sedna-text-secondary); }
.bl-panel-foot .row .v[b-l65okzecqk] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; font-weight: 700; font-size: 1rem; color: var(--sedna-text); white-space: nowrap; }
.bl-panel-foot .row.grand .k[b-l65okzecqk] { color: var(--sedna-text); }
.bl-panel-foot .row.result[b-l65okzecqk] { margin-top: 4px; padding-top: 9px; border-top: 1px dashed var(--sedna-border-strong); }

/* Totale + risultato d'esercizio sulla stessa riga. Va a capo da solo (wrap) quando
   la card e' stretta: meglio due righe che numeri tagliati. */
.bl-panel-foot .row--coppia[b-l65okzecqk] { flex-wrap: wrap; row-gap: 6px; }
/* Il totale di questa card si legge come quello dell'altra: stessa parola, stesso
   peso, stessa posizione a sinistra. Il risultato d'esercizio sta a destra. */
.bl-panel-foot .row--coppia.grand .tot .k[b-l65okzecqk] { color: var(--sedna-text); }
.bl-panel-foot .row--coppia.grand .tot .v[b-l65okzecqk] { font-size: 1.125rem; font-weight: 700; }
.bl-panel-foot .row--coppia .tot[b-l65okzecqk],
.bl-panel-foot .row--coppia .res[b-l65okzecqk] { display: inline-flex; align-items: baseline; gap: 8px; }
.bl-panel-foot .row--coppia .res[b-l65okzecqk] { margin-left: auto; }
.bl-panel-foot .row--coppia .res .v.utile[b-l65okzecqk] { color: var(--sedna-success-700); }
.bl-panel-foot .row--coppia .res .v.perdita[b-l65okzecqk] { color: var(--sedna-error); }
.bl-panel-foot .row--coppia .res .k[b-l65okzecqk] { color: var(--sedna-text); }
.bl-panel-foot .row.result .k[b-l65okzecqk] { color: var(--sedna-text); display: inline-flex; align-items: center; }
.bl-panel-foot .row.result .v.utile[b-l65okzecqk] { color: var(--sedna-success-700); }
.bl-panel-foot .row.result .v.perdita[b-l65okzecqk] { color: var(--sedna-error); }
.bl-panel-foot .result-badge[b-l65okzecqk] { display: inline-flex; align-items: center; gap: 6px; font-size: 0.625rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; margin-left: 8px; }
.bl-panel-foot .result-badge.utile[b-l65okzecqk] { background: var(--sedna-success-50); color: var(--sedna-success-700); }
.bl-panel-foot .result-badge.perdita[b-l65okzecqk] { background: var(--sedna-error-50); color: var(--sedna-error-700); }

@media (max-width: 1080px) {
    .bl-duo[b-l65okzecqk] { grid-template-columns: 1fr; }
    .bl-filters[b-l65okzecqk] { gap: 10px; }
}

/* DxDateEdit allineato all'altezza dei controlli filtro */
.bl-date[b-l65okzecqk]  .dxbl-edit { min-height: var(--bl-ctrl-h); }

/* ---------------- Analisi sbilancio ---------------- */
.bl-analyze[b-l65okzecqk] {
    display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px; margin-left: 10px;
    border-radius: var(--sedna-radius-base, .375rem); border: 1px solid var(--sedna-error-500, var(--sedna-error-700));
    background: var(--sedna-surface); color: var(--sedna-error-700); font-size: .75rem; font-weight: 600;
    font-family: inherit; cursor: pointer;
}
.bl-analyze:hover:not(:disabled)[b-l65okzecqk] { background: var(--sedna-error-50); }
.bl-analyze:disabled[b-l65okzecqk] { opacity: .6; cursor: default; }
.spin[b-l65okzecqk] { animation: bl-spin-b-l65okzecqk .8s linear infinite; }
@keyframes bl-spin-b-l65okzecqk { to { transform: rotate(360deg); } }

.bl-modal-ov[b-l65okzecqk] {
    position: fixed; top: 0; right: 0; bottom: 0; left: var(--sedna-sidebar-width, 16rem);
    z-index: 1100; background: rgba(16, 24, 40, .5);
    display: flex; align-items: center; justify-content: center; padding: 24px;
}
.bl-modal[b-l65okzecqk] {
    width: min(900px, 100%); max-height: 86vh; display: flex; flex-direction: column;
    background: var(--sedna-surface); border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem); box-shadow: 0 12px 40px rgba(16, 24, 40, .25); overflow: hidden;
}
.bl-modal-head[b-l65okzecqk] { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--sedna-border); flex: none; }
.bl-modal-ico[b-l65okzecqk] { width: 38px; height: 38px; border-radius: 9px; flex: none; display: grid; place-items: center; background: var(--sedna-error-50); color: var(--sedna-error-700); font-size: 1.05rem; }
.bl-modal-titles[b-l65okzecqk] { flex: 1; min-width: 0; }
.bl-modal-head h2[b-l65okzecqk] { margin: 0; font-size: 1.0625rem; font-weight: 600; color: var(--sedna-text); }
.bl-modal-sub[b-l65okzecqk] { font-size: .75rem; color: var(--sedna-text-tertiary); margin-top: 1px; }
.bl-modal-x[b-l65okzecqk] { width: 32px; height: 32px; flex: none; display: grid; place-items: center; border: none; background: transparent; border-radius: 6px; color: var(--sedna-text-secondary); cursor: pointer; }
.bl-modal-x:hover[b-l65okzecqk] { background: var(--sedna-surface-hover); color: var(--sedna-text); }
.bl-modal-body[b-l65okzecqk] { flex: 1; min-height: 0; overflow: auto; padding: 16px 18px; }

.bl-analyze-summary[b-l65okzecqk] { display: flex; align-items: flex-start; gap: 9px; padding: 11px 13px; border-radius: var(--sedna-radius-base, .375rem); background: var(--sedna-error-50); color: var(--sedna-error-700); font-size: .8125rem; margin-bottom: 14px; line-height: 1.5; }
.bl-analyze-summary i[b-l65okzecqk] { margin-top: 2px; }
.bl-analyze-info[b-l65okzecqk] { display: flex; align-items: flex-start; gap: 10px; padding: 14px; border-radius: var(--sedna-radius-base, .375rem); background: var(--sedna-surface-variant); color: var(--sedna-text-secondary); font-size: .875rem; line-height: 1.55; }
.bl-analyze-info i[b-l65okzecqk] { color: var(--sedna-primary); font-size: 1.1rem; margin-top: 1px; }

.bl-analyze-wrap[b-l65okzecqk] { overflow-x: auto; }
.bl-analyze-tbl[b-l65okzecqk] { width: 100%; border-collapse: collapse; font-size: .8125rem; }
.bl-analyze-tbl th[b-l65okzecqk] { text-align: left; font-size: .68rem; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; color: var(--sedna-text-tertiary); padding: 7px 10px; border-bottom: 1px solid var(--sedna-border-light); white-space: nowrap; }
.bl-analyze-tbl th.num[b-l65okzecqk], .bl-analyze-tbl td.num[b-l65okzecqk] { text-align: right; }
.bl-analyze-tbl td[b-l65okzecqk] { padding: 8px 10px; border-top: 1px solid var(--sedna-border-light); color: var(--sedna-text); white-space: nowrap; max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
.bl-analyze-tbl td.mono[b-l65okzecqk], .bl-analyze-tbl td.num[b-l65okzecqk] { font-variant-numeric: tabular-nums; }
.bl-analyze-tbl td.neg[b-l65okzecqk] { color: var(--sedna-error-600); font-weight: 600; }
.bl-analyze-tbl tbody tr:hover td[b-l65okzecqk] { background: var(--sedna-surface-hover); }
.bl-analyze-open[b-l65okzecqk] { display: inline-flex; color: var(--sedna-primary); text-decoration: none; }
.bl-analyze-open:hover[b-l65okzecqk] { color: var(--sedna-primary-hover); }

/* ---------------- Comparativo (periodo B) ---------------- */
.bl-tt th.pct[b-l65okzecqk], .bl-tt td.pct[b-l65okzecqk] { width: 76px; }
.bl-tt .num.delta.pos[b-l65okzecqk] { color: var(--sedna-success-700); }
.bl-tt .num.delta.neg[b-l65okzecqk] { color: var(--sedna-error); }
.bl-tt .num.delta.zero[b-l65okzecqk] { color: var(--sedna-text-tertiary); }
/* /Pages/Contabilita/BilancioGiornaliero/BilancioGiornalieroImpostazioniPage.razor.rz.scp.css */
/* ═══ IMPOSTAZIONI BILANCIO GIORNALIERO ═══
   La PAGINA NON SCORRE (Antonio, 2026-08-05: «la pagina intera scrolla ancora»):
   e' il pattern di Prima Nota — la pagina si inchioda all'altezza disponibile
   (flex:1 + min-height:0 lungo tutta la catena), i parametri restano compatti in
   alto e la carta VOCI e' l'elemento elastico che riempie il resto; a scorrere e'
   solo il corpo della sua tabella. Il tetto in vh di prima non bastava: limitava
   la tabella ma la somma delle carte superava comunque lo schermo. */
/* ⚠️ NIENTE `flex: 1` QUI. Il guscio .sedna-page inchioda la pagina con
   `height: calc(100dvh - inset)`, ma dentro un contenitore flex la FLEX-BASIS
   vince sulla height: `flex: 1 1 0%` cancellava quel vincolo e la pagina tornava
   a crescere col contenuto (misurato sul MacBook, tab «Dettaglio utile»: 1102px
   su 797 di finestra — la tabella non scorreva, sfondava). Con `flex: none` la
   pagina resta a 781px e a scorrere è il solo corpo della tabella. */
.bgs-page[b-dvs5d0e97l] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    flex: none;
    min-height: 0;
}

.bgs-head-link[b-dvs5d0e97l] {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 0.8125rem; color: var(--sedna-text-secondary); text-decoration: none;
}
.bgs-head-link:hover[b-dvs5d0e97l] { color: var(--sedna-primary); }

.bgs-caricamento[b-dvs5d0e97l] { color: var(--sedna-text-tertiary); padding: 24px 0; }

.bgs-msg[b-dvs5d0e97l] {
    padding: 8px 12px; border-radius: var(--sedna-radius-md, .375rem); font-size: 0.8125rem;
}
.bgs-msg--ok[b-dvs5d0e97l] { background: var(--sedna-success-50); color: var(--sedna-success-700); border: 1px solid color-mix(in srgb, var(--sedna-success-500) 45%, transparent); }
.bgs-msg--errore[b-dvs5d0e97l] { background: var(--sedna-error-50); color: var(--sedna-error-700); border: 1px solid color-mix(in srgb, var(--sedna-error-500) 45%, transparent); }

.bgs-card[b-dvs5d0e97l] {
    background: var(--sedna-surface); border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .5rem); box-shadow: var(--sedna-shadow-xs);
    padding: 12px 14px;
}
/* I parametri non si stirano; la carta VOCI (l'ultima) prende tutto lo spazio che
   resta e lo passa alla tabella. min-height:0 e' il pezzo che di solito manca:
   senza, un figlio flex non scende sotto il proprio contenuto e la pagina torna
   a scrollare. */
.bgs-card:last-of-type[b-dvs5d0e97l] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}
.bgs-toolbar-right[b-dvs5d0e97l] { margin-left: auto; display: flex; gap: 8px; }
.bgs-card h3[b-dvs5d0e97l] { margin: 0 0 10px; font-size: 0.875rem; font-weight: 600; }
.bgs-card__head[b-dvs5d0e97l] { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 10px; }
.bgs-card__head h3[b-dvs5d0e97l] { margin: 0; }

/* ── Parametri ──
   SU DUE COLONNE (Antonio, 2026-08-05): undici flag in colonna unica mangiavano
   mezza altezza del MacBook e la carta VOCI restava un francobollo. A coppie
   l'ingombro si dimezza e l'altezza recuperata va tutta alle voci. Sugli schermi
   stretti tornano in colonna: due colonne strizzate coi hint sarebbero illeggibili. */
.bgs-params[b-dvs5d0e97l] { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 28px; align-items: start; }
@media (max-width: 900px) { .bgs-params[b-dvs5d0e97l] { grid-template-columns: 1fr; } }
.bgs-check[b-dvs5d0e97l] {
    display: flex; align-items: baseline; gap: 8px;
    font-size: 0.8125rem; color: var(--sedna-text); cursor: pointer;
}
.bgs-check input[b-dvs5d0e97l] { cursor: pointer; }
.bgs-hint[b-dvs5d0e97l] { font-size: 0.7rem; color: var(--sedna-text-tertiary); }
/* Parametri dichiarati non operanti: si salvano, ma la faccia lo dice. */
.bgs-check--inerte[b-dvs5d0e97l] { color: var(--sedna-text-tertiary); }
.bgs-badge[b-dvs5d0e97l] {
    font-size: 0.625rem; font-weight: 700; letter-spacing: .03em; text-transform: uppercase;
    padding: 1px 8px; border-radius: 999px;
    background: var(--sedna-warning-50); color: #92600e;
    border: 1px solid color-mix(in srgb, var(--sedna-warning-500) 45%, transparent);
}
.bgs-sub[b-dvs5d0e97l] { display: flex; align-items: center; gap: 10px; padding-left: 26px; }
.bgs-sub label[b-dvs5d0e97l] { font-size: 0.7rem; color: var(--sedna-text-tertiary); }
.bgs-page[b-dvs5d0e97l]  .bgs-ditta { min-width: 260px; }

.bgs-actions[b-dvs5d0e97l] { margin-top: 12px; display: flex; gap: 8px; }

/* ── Filtro sezione voci ── */
.bgs-tipofiltro[b-dvs5d0e97l] { display: inline-flex; border: 1px solid var(--sedna-border); border-radius: 999px; overflow: hidden; }
.bgs-tipofiltro button[b-dvs5d0e97l] {
    border: none; background: transparent; cursor: pointer;
    padding: 4px 14px; font-size: 0.75rem; font-weight: 600; color: var(--sedna-text-secondary);
}
.bgs-tipofiltro button + button[b-dvs5d0e97l] { border-left: 1px solid var(--sedna-border-light); }
.bgs-tipofiltro button.att[b-dvs5d0e97l] { background: var(--sedna-primary-subtle); color: var(--sedna-primary); }

/* ── Tabella voci ──
   Scorre il CORPO della tabella, non la pagina: il wrapper e' l'elastico della
   carta voci (flex:1 dentro la catena inchiodata da .sedna-page), con
   l'intestazione sticky come le griglie del resto dell'app. */
.bgs-tblwrap[b-dvs5d0e97l] { overflow: auto; flex: 1 1 auto; min-height: 0; }
.bgs-tbl[b-dvs5d0e97l] { width: 100%; border-collapse: collapse; font-size: 0.8125rem; }
.bgs-tbl th[b-dvs5d0e97l] {
    text-align: left; font-size: 0.65rem; font-weight: 600; letter-spacing: .04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
    padding: 6px 8px; border-bottom: 1px solid var(--sedna-border);
    /* Sticky DENTRO il wrapper che scorre: l'intestazione resta a vista. Serve uno
       sfondo pieno o le righe si vedono passare sotto le lettere. */
    position: sticky; top: 0; z-index: 2;
    background: var(--sedna-surface);
}
.bgs-tbl td[b-dvs5d0e97l] { padding: 3px 8px; border-bottom: 1px solid var(--sedna-border-light); }
.bgs-tbl td.cen[b-dvs5d0e97l] { text-align: center; }

.bgs-in[b-dvs5d0e97l] {
    width: 100%; border: 1px solid transparent; border-radius: var(--sedna-radius-input, .375rem);
    background: transparent; font: inherit; color: var(--sedna-text);
    padding: 2px 6px; height: var(--sedna-input-height, 22px);
}
.bgs-in:hover[b-dvs5d0e97l] { border-color: var(--sedna-border); }
.bgs-in:focus[b-dvs5d0e97l] { outline: none; border-color: var(--sedna-primary); background: var(--sedna-input-focus-bg); }
.bgs-in--num[b-dvs5d0e97l] { width: 64px; text-align: right; font-variant-numeric: tabular-nums; }

.bgs-del[b-dvs5d0e97l] {
    border: none; background: transparent; cursor: pointer;
    color: var(--sedna-text-tertiary); padding: 2px 6px;
}
.bgs-del:hover[b-dvs5d0e97l] { color: var(--sedna-error); }
/* /Pages/Contabilita/BilancioGiornaliero/BilancioGiornalieroPage.razor.rz.scp.css */
/* ═══ BILANCIO GIORNALIERO ═══
   La geografia del vecchio (Vendita | Acquisto sopra, Utile sotto, piede con
   chiusura e sbilancio) con la pelle del design system. I colori del vecchio
   — giallo clienti, verde fornitori, azzurro differenza, rosso sbilancio —
   restano come ACCENTO sui chip dei totali, non come sfondi pieni: sono il
   codice visivo che gli utenti conoscono, non serve urlare. */

.bgi-page[b-ljjj0geqxi] { display: flex; flex-direction: column; min-height: 0; }

.bgi-head-link[b-ljjj0geqxi] {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 0.8125rem; color: var(--sedna-text-secondary); text-decoration: none;
}
.bgi-head-link:hover[b-ljjj0geqxi] { color: var(--sedna-primary); }

/* ── Filtri ── */
/* ⚠️ ::deep — LA CLASSE STA SULLA RADICE DI UN COMPONENTE. Da quando i filtri sono
   dentro <SednaForm CssClass="bgi-filters">, quell'elemento lo disegna il COMPONENTE, non
   questa pagina: l'isolamento CSS di Blazor non gli mette l'attributo di scope e la regola
   smetteva di applicarsi. Risultato, la riga si sfaldava in colonna — «dal → al» sopra,
   «Calcola» sotto, la chiusura a capo (Antonio, 20/08).
   I `.bgi-f` qui dentro invece li disegna la pagina, quindi lo scope ce l'hanno e restano
   senza ::deep: la differenza non e' stilistica, e' CHI ha renderizzato l'elemento. */
[b-ljjj0geqxi] .bgi-filters {
    display: flex; flex-wrap: nowrap; align-items: flex-end; gap: 10px 18px;
    padding: 8px 0 10px;
    /* La rondellina si appoggia al bordo alto, dove sta in tutte le altre barre filtri. */
    --sef-gear-top: -9px;
    --sef-gear-right: 2px;
}
.bgi-f[b-ljjj0geqxi] { display: flex; flex-direction: column; gap: 2px; }
.bgi-f label[b-ljjj0geqxi] {
    font-size: 0.65rem; font-weight: 600; letter-spacing: .04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
}
.bgi-daterange[b-ljjj0geqxi] { display: flex; align-items: center; gap: 6px; }
.bgi-sep[b-ljjj0geqxi] { color: var(--sedna-text-tertiary); }
/* 140, non 120: a 120 la data maschera va in ellipsis (Antonio, 2026-08-05). */
.bgi-page[b-ljjj0geqxi]  .bgi-date { width: 140px; }
.bgi-page[b-ljjj0geqxi]  .bgi-ditta { min-width: 260px; }

.bgi-errore[b-ljjj0geqxi] {
    display: flex; align-items: center; gap: 8px;
    padding: 8px 12px; border-radius: var(--sedna-radius-md, .375rem);
    background: var(--sedna-error-50); color: var(--sedna-error-700);
    border: 1px solid color-mix(in srgb, var(--sedna-error-500) 45%, transparent);
    font-size: 0.8125rem; margin-bottom: 8px;
}

/* ── Vuoto / attesa ── */
.bgi-vuoto[b-ljjj0geqxi] {
    flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 8px; color: var(--sedna-text-tertiary); padding: 48px 0;
}
.bgi-vuoto i[b-ljjj0geqxi] { font-size: 2.5rem; opacity: .4; }
.bgi-body--attesa[b-ljjj0geqxi] { opacity: 0.45; }

/* ── Carte ── */
/* Dentro la pagina inchiodata (.sedna-page) il CORPO e' l'area che scorre: testata
   e filtri restano fermi. Le tabelle non hanno piu' tetti in vh — si dividono l'altezza
   che avanza (vedi .bgi-card qui sotto) e il corpo scorre solo quando non basta. */
.bgi-body[b-ljjj0geqxi] { display: flex; flex-direction: column; gap: 12px; padding-bottom: 12px; flex: 1 1 auto; min-height: 0; overflow-y: auto; }
/* Vendita e Acquisto: la riga cresce solo se almeno una delle due e' aperta, e le carte
   chiuse restano appese in alto invece di stirarsi a vuoto. */
.bgi-cols[b-ljjj0geqxi] { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: start; }
.bgi-cols:has(.bgi-tblwrap)[b-ljjj0geqxi] { flex: 1 1 auto; min-height: 0; align-items: stretch; }
.bgi-cols > .bgi-card[b-ljjj0geqxi] { min-width: 0; }
@media (max-width: 1100px) { .bgi-cols[b-ljjj0geqxi] { grid-template-columns: 1fr; } }

.bgi-card[b-ljjj0geqxi] {
    background: var(--sedna-surface); border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .5rem); box-shadow: var(--sedna-shadow-xs);
    overflow: hidden;
    display: flex; flex-direction: column;
}

/* ⚠️ IL DETTAGLIO APERTO SI PRENDE L'ALTEZZA CHE AVANZA (Antonio, 2026-08-18: «come mai
   non sfruttiamo l'altezza della pagina per il dettaglio utile in modo da evitare lo
   scroll là dove possibile?»). Prima la tabella era tappata a 42vh: su una pagina alta
   restava mezzo schermo bianco sotto e si scorreva dentro una finestrella. Ora la carta
   col dettaglio aperto cresce, e si scorre solo quando le righe superano DAVVERO lo
   schermo.
   La carta si riconosce dal fatto di avere il corpo: le chiuse non hanno `.bgi-tblwrap`
   fra i figli, quindi restano alte quanto la loro intestazione senza bisogno di una
   classe in più nel markup.
   ⚠️ Il pavimento a 12rem serve a quando sono aperte tutte e tre: meglio far scorrere il
   corpo della pagina che ridurre tre tabelle a due righe l'una. */
.bgi-card:has(> .bgi-tblwrap)[b-ljjj0geqxi] {
    flex: 1 1 auto;
    min-height: 12rem;
}
.bgi-card__head[b-ljjj0geqxi] {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 12px; border-bottom: 1px solid var(--sedna-border-light);
}
.bgi-card__head h3[b-ljjj0geqxi] {
    margin: 0; font-size: 0.875rem; font-weight: 600; color: var(--sedna-text);
}
.bgi-toggle[b-ljjj0geqxi] {
    border: none; background: transparent; cursor: pointer; padding: 2px;
    color: var(--sedna-text-secondary); font-size: 1rem; line-height: 1;
}
.bgi-toggle:hover[b-ljjj0geqxi] { color: var(--sedna-primary); }

/* Il totale nel titolo: pillola come i piedi griglia dell'app. */
.bgi-tot[b-ljjj0geqxi] {
    margin-left: auto; display: inline-flex; align-items: center; gap: 6px;
    padding: 2px 12px; border-radius: 999px;
    font-size: 0.9375rem; font-weight: 700; color: var(--sedna-text);
    font-variant-numeric: tabular-nums; white-space: nowrap;
    background: var(--sedna-surface-variant); border: 1px solid var(--sedna-border-light);
}
.bgi-tot em[b-ljjj0geqxi] {
    font-style: normal; font-weight: 700; font-size: 0.6875rem;
    letter-spacing: .02em; text-transform: uppercase; color: var(--sedna-text-tertiary);
}
/* I colori del vecchio, come accento. */
.bgi-tot--clienti[b-ljjj0geqxi] { background: var(--sedna-warning-50); border-color: color-mix(in srgb, var(--sedna-warning-500) 45%, transparent); }
.bgi-tot--clienti em[b-ljjj0geqxi] { color: #92600e; }
.bgi-tot--fornitori[b-ljjj0geqxi] { background: var(--sedna-success-50); border-color: color-mix(in srgb, var(--sedna-success-500) 45%, transparent); }
.bgi-tot--fornitori em[b-ljjj0geqxi] { color: var(--sedna-success-700); }
.bgi-tot--differenza[b-ljjj0geqxi] { background: var(--sedna-info-50); border-color: color-mix(in srgb, var(--sedna-info-500) 45%, transparent); }
.bgi-tot--differenza em[b-ljjj0geqxi] { color: var(--sedna-info-700); }

/* ── Tabelle ──
   Scorre il CORPO, non la pagina (stessa richiesta della griglia voci nelle
   impostazioni): tetto in vh e intestazione sticky. Il piede tfoot resta sticky in
   basso, cosi' i totali si vedono anche a meta' scroll — e' il ruolo che hanno. */
/* Niente tetto in vh: il limite e' lo spazio vero della carta, che ora lo conosce. */
.bgi-tblwrap[b-ljjj0geqxi] { overflow: auto; flex: 0 1 auto; min-height: 0; }
.bgi-tbl[b-ljjj0geqxi] { width: 100%; border-collapse: collapse; font-size: 0.8125rem; }
.bgi-tbl th[b-ljjj0geqxi] {
    text-align: left; font-size: 0.65rem; font-weight: 600; letter-spacing: .04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
    padding: 6px 10px; border-bottom: 1px solid var(--sedna-border);
    background: var(--sedna-table-header-bg, var(--sedna-surface-variant));
    position: sticky; top: 0; z-index: 2;
}
.bgi-tbl tfoot td[b-ljjj0geqxi] {
    position: sticky; bottom: 0; z-index: 2;
    background: var(--sedna-surface);
}
.bgi-tbl td[b-ljjj0geqxi] { padding: 5px 10px; border-bottom: 1px solid var(--sedna-border-light); }
/* RIGHE ALTERNATE, e abbastanza da vedersi. La regola c'era gia' con
   --sedna-bg-subtle (#f5f5f5): su fondo bianco e' un 4% di differenza, che a
   monitor si legge come tabella piatta — Antonio l'ha chiesta come se non ci
   fosse, ed e' la stessa cosa. Ora e' una velatura dell'8% sul colore del
   TESTO, quindi funziona anche a tema scuro senza una seconda regola: li' il
   testo e' chiaro e la riga si schiarisce invece di scurirsi.
   Vale per tutte le tabelle della pagina: dettaglio utile, clienti, fornitori.
   Zebrarne una sola avrebbe fatto sembrare le altre non caricate. */
.bgi-tbl tbody tr:nth-child(even) td[b-ljjj0geqxi] { background: color-mix(in srgb, var(--sedna-text) 8%, transparent); }
.bgi-tbl th.num[b-ljjj0geqxi], .bgi-tbl td.num[b-ljjj0geqxi] { text-align: right; font-variant-numeric: tabular-nums; }
.bgi-tbl th.nu[b-ljjj0geqxi], .bgi-tbl td.nu[b-ljjj0geqxi] { text-align: center; width: 44px; color: var(--sedna-text-tertiary); }
.bgi-tbl tfoot td[b-ljjj0geqxi] {
    border-bottom: none; border-top: 1px solid var(--sedna-border-strong);
    font-weight: 700;
}
/* Righe figlie dell'albero acquisti (spaccato per ditta associata). */
.bgi-tr--figlia td:first-child[b-ljjj0geqxi] { padding-left: 28px; color: var(--sedna-text-secondary); }
.bgi-tr--figlia td[b-ljjj0geqxi] { font-size: 0.75rem; }

/* ── Piede ── */
.bgi-piede[b-ljjj0geqxi] {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end;
    gap: 10px 18px; padding: 8px 12px;
    background: var(--sedna-surface); border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .5rem); box-shadow: var(--sedna-shadow-xs);
}
/* La chiusura vive NELLA RIGA FILTRI, spinta a destra (Antonio, 2026-08-05):
   l'ultima data di chiusura si vede aprendo la pagina, senza calcolare. */
.bgi-chiusura[b-ljjj0geqxi] { margin-left: auto; }
.bgi-conferma[b-ljjj0geqxi] {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: 0.8125rem; color: var(--sedna-text); font-weight: 600;
}
.bgi-piede__destra[b-ljjj0geqxi] { display: flex; align-items: center; gap: 10px; }

.bgi-chip[b-ljjj0geqxi] {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 14px; border-radius: 999px;
    font-size: 1rem; font-weight: 700; font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.bgi-chip em[b-ljjj0geqxi] {
    font-style: normal; font-weight: 700; font-size: 0.6875rem;
    letter-spacing: .02em; text-transform: uppercase;
}
/* Verde utile / rosso perdita: la semantica del vecchio (Backcolor verde/rosso). */
.bgi-chip--utile[b-ljjj0geqxi] { background: var(--sedna-success-50); color: var(--sedna-success-700); border: 1px solid color-mix(in srgb, var(--sedna-success-500) 50%, transparent); }
.bgi-chip--perdita[b-ljjj0geqxi] { background: var(--sedna-error-50); color: var(--sedna-error-700); border: 1px solid color-mix(in srgb, var(--sedna-error-500) 50%, transparent); }
.bgi-chip--sbilancio[b-ljjj0geqxi] { background: var(--sedna-error-50); color: var(--sedna-error-700); border: 1px solid color-mix(in srgb, var(--sedna-error-500) 60%, transparent); }
/* FDV−DDT: il chip salmone del vecchio (sfondo LightSalmon), qui nella scala warning.
   E' un BUTTON (apre il dettaglio per cliente), quindi eredita font e cursore. */
.bgi-chip--fdvddt[b-ljjj0geqxi] {
    background: var(--sedna-warning-50); color: #92600e;
    border: 1px solid color-mix(in srgb, var(--sedna-warning-500) 55%, transparent);
    font: inherit; font-weight: 700; font-variant-numeric: tabular-nums; cursor: pointer;
}
.bgi-chip--fdvddt:hover[b-ljjj0geqxi] { border-color: var(--sedna-warning-600); }
.bgi-fdvddt-vuoto[b-ljjj0geqxi] { padding: 10px 12px; margin: 0; color: var(--sedna-text-tertiary); font-size: 0.8125rem; }
/* /Pages/Contabilita/CausaliContabili/CausaleContabilePage.razor.rz.scp.css */
/* Frecce di riordino dei conti predefiniti (colonna "Ordina"). */
.cp-reorder[b-1tsyzwrk4g] {
    display: inline-flex;
    gap: 2px;
}

.cp-reorder__btn[b-1tsyzwrk4g] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 22px;
    padding: 0;
    border: 1px solid var(--sedna-border, #e5e7eb);
    border-radius: var(--sedna-radius-sm, 0.25rem);
    background: var(--sedna-surface, #fff);
    color: var(--sedna-text-secondary, #6b7280);
    cursor: pointer;
    font-size: 0.75rem;
    transition: background-color 0.12s, color 0.12s, border-color 0.12s;
}

.cp-reorder__btn:hover:not(:disabled)[b-1tsyzwrk4g] {
    background: var(--sedna-primary-subtle, #e3f2fd);
    color: var(--sedna-primary);
    border-color: var(--sedna-primary);
}

.cp-reorder__btn:disabled[b-1tsyzwrk4g] {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ── Ricerca parametri (tab Parametri) ── */
.param-search[b-1tsyzwrk4g] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-3, .75rem);
    margin-bottom: var(--sedna-space-2, .5rem);
}

.param-search__box[b-1tsyzwrk4g] {
    position: relative;
    flex: 0 0 360px;
    max-width: 100%;
}

.param-search__box > .bi-search[b-1tsyzwrk4g] {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--sedna-text-tertiary);
    font-size: 0.9rem;
    pointer-events: none;
}

.param-search__box input[b-1tsyzwrk4g] {
    width: 100%;
    height: var(--sedna-input-height, 2rem);
    padding: 0 30px 0 34px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    border-radius: var(--sedna-radius-input, 0.375rem);
    font-size: 0.8125rem;
    font-family: inherit;
    color: var(--sedna-text);
}

.param-search__box input:focus[b-1tsyzwrk4g] {
    background: var(--sedna-surface);
    border-color: var(--sedna-primary);
    outline: none;
    box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
}

.param-search__clear[b-1tsyzwrk4g] {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    border: none;
    background: transparent;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    padding: 2px 4px;
    line-height: 1;
    font-size: 0.75rem;
}

.param-search__clear:hover[b-1tsyzwrk4g] { color: var(--sedna-text); }

.param-search__count[b-1tsyzwrk4g] {
    font-size: var(--sedna-text-xs, .75rem);
    color: var(--sedna-text-secondary);
    font-weight: 600;
}

/* Riga parametro evidenziata quando la ricerca è attiva (solo i match sono renderizzati). */
.param-row--match[b-1tsyzwrk4g] {
    background: var(--sedna-primary-subtle);
    border-radius: var(--sedna-radius-sm, 0.25rem);
    padding: 2px 6px;
    margin: -2px -6px;
}
/* /Pages/Contabilita/CausaliContabili/CausaliContabiliList.razor.rz.scp.css */
/* ===================================
   CAUSALI CONTABILI — layout dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). La griglia scrolla
   internamente. Qui restano solo gli stili specifici.
   =================================== */

[b-fo25xk4ang] .list-error-banner {
    flex: none;
}

[b-fo25xk4ang] .dx-datagrid {
    height: 100%;
}

[b-fo25xk4ang] .dx-datagrid-headers,
[b-fo25xk4ang] .dx-datagrid-rowsview {
    max-height: none;
}

[b-fo25xk4ang] .dx-datagrid-rowsview {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* ========================================
   TOOLBAR — searchbox custom (pattern lista Clienti)
   Search dentro la toolbar della griglia (stessa riga di Colonne/Esporta).
   ======================================== */
.toolbar[b-fo25xk4ang] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.toolbar .search[b-fo25xk4ang] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-fo25xk4ang] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-fo25xk4ang] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-fo25xk4ang]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-fo25xk4ang] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 760px) {
    .toolbar[b-fo25xk4ang] {
        flex-wrap: wrap;
    }

    .toolbar .search[b-fo25xk4ang] {
        width: 100%;
    }
}
/* /Pages/Contabilita/DistinteAnticipo/AccreditoAnticipoModal.razor.rz.scp.css */
/* ⚠️ Il corpo si limita e la tabella scorre dentro: con trenta rate il popup crescerebbe
   oltre lo schermo e i pulsanti finirebbero fuori. `min-height: 0` e' la meta' che si
   dimentica. */
.accr[b-xtiishdfnt] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    max-height: calc(90vh - 140px);
}

.accr-cap[b-xtiishdfnt] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface-variant);
    font-size: 0.8rem;
    line-height: 1.35;
}

.accr-cap i[b-xtiishdfnt] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-info-600); }

.accr-attesa[b-xtiishdfnt] { display: flex; justify-content: center; padding: 1rem 0; }

/* ═══ Le righe ═══ */
.accr-righe[b-xtiishdfnt] { flex: 1 1 auto; overflow: auto; min-height: 120px; }

.accr-t[b-xtiishdfnt] { width: 100%; border-collapse: collapse; font-size: 0.78rem; }

.accr-t th[b-xtiishdfnt] {
    position: sticky;
    top: 0;
    padding: 0.3rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text-tertiary);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-align: left;
    text-transform: uppercase;
}

.accr-t td[b-xtiishdfnt] {
    padding: 0.25rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    vertical-align: middle;
}

.accr-t .r[b-xtiishdfnt] { text-align: right; }
.accr-t__d[b-xtiishdfnt] { display: block; color: var(--sedna-text-tertiary); font-size: 0.7rem; }
.accr-t__ant[b-xtiishdfnt] { color: var(--sedna-text-secondary); }
.accr-t__s[b-xtiishdfnt] { white-space: nowrap; }

/* ⚠️ Una riga rifiutata si vede SUBITO: mettere zero e' una scelta, e chi lo fa per sbaglio
   deve accorgersene qui — non quando la rata torna libera. */
.accr-t__r--rif[b-xtiishdfnt] { background: var(--sedna-error-50); }

.accr-rif[b-xtiishdfnt] { color: var(--sedna-error-700); font-size: 0.7rem; font-weight: 600; }
.accr-diff[b-xtiishdfnt] { color: var(--sedna-warning-700); font-size: 0.7rem; font-weight: 600; }

[b-xtiishdfnt] .accr-in { width: 110px; }

/* ═══ La quadratura ═══ */
.accr-quad[b-xtiishdfnt], .accr-box[b-xtiishdfnt] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
    line-height: 1.35;
}

.accr-quad--ok[b-xtiishdfnt] { border: 1px solid var(--sedna-success-600); background: var(--sedna-success-50); color: var(--sedna-text); }
.accr-quad--ok > i[b-xtiishdfnt] { color: var(--sedna-success-600); }

/* Non quadra: ambra e coi numeri. La differenza e' un DATO, non un errore da nascondere. */
.accr-quad--no[b-xtiishdfnt] { border: 1px solid var(--sedna-warning-700); background: var(--sedna-warning-50); color: var(--sedna-text); }
.accr-quad--no > i[b-xtiishdfnt] { color: var(--sedna-warning-700); }

/* «Da sistemare» in GIALLO, come chiede la consegna: sono cose da correggere, e quasi tutte
   si correggono in questa stessa finestra. */
.accr-box--sist[b-xtiishdfnt] { border: 1px solid var(--sedna-warning-700); background: var(--sedna-warning-50); color: var(--sedna-text); }
.accr-box--sist > i[b-xtiishdfnt] { color: var(--sedna-warning-700); }

.accr-box--no[b-xtiishdfnt] { border: 1px solid var(--sedna-error-700); background: var(--sedna-error-50); color: var(--sedna-text); }
.accr-box--no > i[b-xtiishdfnt] { color: var(--sedna-error-700); }

.accr-box--muto[b-xtiishdfnt] { border: 1px solid var(--sedna-border); background: var(--sedna-surface-variant); color: var(--sedna-text); }
.accr-box--muto > i[b-xtiishdfnt] { color: var(--sedna-text-tertiary); }

.accr-box ul[b-xtiishdfnt] { margin: 0.25rem 0 0; padding-left: 1.1rem; }
.accr-quad > i[b-xtiishdfnt], .accr-box > i[b-xtiishdfnt] { flex: 0 0 auto; margin-top: 0.1rem; font-size: 1rem; }

/* ═══ La scrittura ═══ */
.accr-reg__h[b-xtiishdfnt] { display: flex; gap: 0.4rem; align-items: baseline; margin-bottom: 0.3rem; font-size: 0.78rem; }
.accr-reg__c[b-xtiishdfnt] { color: var(--sedna-text-secondary); font-size: 0.72rem; }

.accr-reg__t[b-xtiishdfnt] { width: 100%; border-collapse: collapse; font-size: 0.76rem; }

.accr-reg__t th[b-xtiishdfnt] {
    padding: 0.25rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    color: var(--sedna-text-tertiary);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-align: left;
    text-transform: uppercase;
}

.accr-reg__t td[b-xtiishdfnt] { padding: 0.22rem 0.4rem; border-bottom: 1px solid var(--sedna-border); vertical-align: top; }
.accr-reg__t tfoot td[b-xtiishdfnt] { border-top: 2px solid var(--sedna-border); border-bottom: 0; font-weight: 600; }
.accr-reg__t .r[b-xtiishdfnt] { text-align: right; }

.accr .mono[b-xtiishdfnt] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }
/* /Pages/Contabilita/DistinteAnticipo/DistintaAnticipoPage.razor.rz.scp.css */

/* ═══ Le pastiglie di stato ═══ */
.andt-stato[b-774pmhc4v4] {
    display: inline-block;
    padding: 0.08rem 0.45rem;
    border: 1px solid var(--sedna-border);
    border-radius: 999px;
    font-size: 0.7rem;
    white-space: nowrap;
}

.andt-stato--bozza[b-774pmhc4v4] { border-color: var(--sedna-text-tertiary); color: var(--sedna-text-tertiary); }
.andt-stato--presentata[b-774pmhc4v4] { border-color: var(--sedna-info-600); color: var(--sedna-info-600); }
.andt-stato--accreditata[b-774pmhc4v4] { border-color: var(--sedna-success-600); color: var(--sedna-success-600); }
.andt-stato--chiusa[b-774pmhc4v4] { border-color: var(--sedna-border); color: var(--sedna-text-secondary); }
.andt-stato--annullata[b-774pmhc4v4] { color: var(--sedna-text-tertiary); text-decoration: line-through; }

.andt-msg[b-774pmhc4v4] {
    display: flex;
    gap: 0.4rem;
    align-items: flex-start;
    margin-top: 0.6rem;
    padding: 0.45rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
}

.andt-msg--no[b-774pmhc4v4] {
    border: 1px solid var(--sedna-error-700);
    color: var(--sedna-error-700);
}

.andt-attesa[b-774pmhc4v4] { display: flex; justify-content: center; padding: 2rem 0; }

.andt .mono[b-774pmhc4v4] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }

/* ═══ La testata ═══ */
.andt-head[b-774pmhc4v4] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.5rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

.andt-head__l[b-774pmhc4v4] { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: baseline; font-size: 0.82rem; }
.andt-head__b[b-774pmhc4v4] { font-weight: 600; }
.andt-head__d[b-774pmhc4v4], .andt-head__x[b-774pmhc4v4] { color: var(--sedna-text-secondary); font-size: 0.76rem; }

.andt-head__n[b-774pmhc4v4] { display: flex; gap: 1rem; }

.andt-n[b-774pmhc4v4] { display: flex; flex-direction: column; gap: 0.05rem; }

.andt-n__l[b-774pmhc4v4] {
    color: var(--sedna-text-tertiary);
    font-size: 0.66rem;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.andt-n__v[b-774pmhc4v4] { font-size: 0.95rem; font-weight: 600; text-align: right; }
.andt-n--ant .andt-n__v[b-774pmhc4v4] { color: var(--sedna-primary); }

/* ═══ Le fasce ═══ */
.andt-foto[b-774pmhc4v4], .andt-annullata[b-774pmhc4v4], .andt-reg[b-774pmhc4v4], .andt-vuoto[b-774pmhc4v4], .andt-box[b-774pmhc4v4] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    margin-bottom: 0.5rem;
    padding: 0.5rem 0.75rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
    line-height: 1.35;
}

.andt-foto[b-774pmhc4v4] {
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text);
}

.andt-foto > i[b-774pmhc4v4] { color: var(--sedna-text-tertiary); }

.andt-annullata[b-774pmhc4v4] {
    border: 1px solid var(--sedna-text-tertiary);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text);
}

.andt-annullata > i[b-774pmhc4v4] { color: var(--sedna-text-tertiary); }

.andt-reg[b-774pmhc4v4] {
    border: 1px solid var(--sedna-info-600);
    color: var(--sedna-text);
}

.andt-reg > i[b-774pmhc4v4] { color: var(--sedna-info-600); }
.andt-reg__l[b-774pmhc4v4] { display: flex; flex-direction: column; gap: 0.2rem; }

.andt-link[b-774pmhc4v4] {
    padding: 0;
    border: 0;
    background: none;
    color: var(--sedna-primary);
    cursor: pointer;
    text-align: left;
}

.andt-link:hover[b-774pmhc4v4] { text-decoration: underline; }

.andt-vuoto[b-774pmhc4v4] {
    border: 1px dashed var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
}

.andt-vuoto > i[b-774pmhc4v4] { color: var(--sedna-text-tertiary); font-size: 1.2rem; }
.andt-vuoto strong[b-774pmhc4v4] { display: block; color: var(--sedna-text); }

/* ⚠️ Rosso che blocca, ambra che no: farli uguali vuol dire imparare a ignorarli entrambi. */
.andt-box--no[b-774pmhc4v4] { border: 1px solid var(--sedna-error-700); background: var(--sedna-error-50); color: var(--sedna-text); }
.andt-box--no > i[b-774pmhc4v4] { color: var(--sedna-error-700); }
.andt-box--av[b-774pmhc4v4] { border: 1px solid var(--sedna-warning-700); background: var(--sedna-warning-50); color: var(--sedna-text); }
.andt-box--av > i[b-774pmhc4v4] { color: var(--sedna-warning-700); }
.andt-box ul[b-774pmhc4v4] { margin: 0.25rem 0 0; padding-left: 1.1rem; }

/* Un problema che nomina una riga si clicca per evidenziarla. */
.andt-p--riga[b-774pmhc4v4] { cursor: pointer; text-decoration: underline dotted; }

/* ═══ Le righe ═══ */
.andt-righe[b-774pmhc4v4] { overflow-x: auto; }

.andt-t[b-774pmhc4v4] { width: 100%; border-collapse: collapse; font-size: 0.78rem; }

.andt-t th[b-774pmhc4v4] {
    padding: 0.3rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    color: var(--sedna-text-tertiary);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-align: left;
    text-transform: uppercase;
    white-space: nowrap;
}

.andt-t td[b-774pmhc4v4] {
    padding: 0.25rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    vertical-align: middle;
}

.andt-t .r[b-774pmhc4v4] { text-align: right; }
.andt-t__d[b-774pmhc4v4] { display: block; color: var(--sedna-text-tertiary); font-size: 0.7rem; }
.andt-t__calc[b-774pmhc4v4] { color: var(--sedna-text-secondary); }
.andt-t__a[b-774pmhc4v4] { white-space: nowrap; }

/* La riga che un problema della verifica nomina: si illumina al clic sul messaggio. */
.andt-t__r--evid[b-774pmhc4v4] { background: var(--sedna-warning-50); }

[b-774pmhc4v4] .andt-in { width: 110px; }
[b-774pmhc4v4] .andt-in--perc { width: 80px; }
[b-774pmhc4v4] .andt-in--data { width: 120px; }

/* ⚠️ Lo scostamento: ambra, e SOLO quando c'e'. E' l'unico segno che qualcuno ha corretto
   l'anticipo a mano — a zero sarebbe una colonna di zeri che si impara a non guardare. */
.andt-scost[b-774pmhc4v4] {
    display: block;
    color: var(--sedna-warning-700);
    font-size: 0.7rem;
    font-weight: 600;
}

.andt-rstato[b-774pmhc4v4] {
    display: inline-block;
    padding: 0.02rem 0.35rem;
    border: 1px solid var(--sedna-border);
    border-radius: 999px;
    font-size: 0.66rem;
    white-space: nowrap;
}

.andt-rstato--in-distinta[b-774pmhc4v4] { border-color: var(--sedna-text-tertiary); color: var(--sedna-text-tertiary); }
.andt-rstato--anticipata[b-774pmhc4v4] { border-color: var(--sedna-success-600); color: var(--sedna-success-600); }
.andt-rstato--rifiutata[b-774pmhc4v4] { border-color: var(--sedna-error-700); color: var(--sedna-error-700); }
.andt-rstato--estinta[b-774pmhc4v4] { border-color: var(--sedna-info-600); color: var(--sedna-info-600); }

/* Rientrata ma non incassata: e' la cosa da guardare su una riga estinta. */
.andt-credito[b-774pmhc4v4] {
    display: block;
    color: var(--sedna-warning-700);
    font-size: 0.66rem;
}

.andt-az[b-774pmhc4v4] {
    padding: 0.1rem 0.3rem;
    border: 0;
    border-radius: var(--sedna-radius-input);
    background: none;
    color: var(--sedna-text-secondary);
    cursor: pointer;
}

.andt-az:hover:not(:disabled)[b-774pmhc4v4] { background: var(--sedna-surface-hover); color: var(--sedna-error-700); }
.andt-az:disabled[b-774pmhc4v4] { color: var(--sedna-text-tertiary); cursor: not-allowed; opacity: 0.45; }

.andt-cap[b-774pmhc4v4] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-bottom: 0.7rem;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface-variant);
    font-size: 0.8rem;
    line-height: 1.35;
}

.andt-cap i[b-774pmhc4v4] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-info-600); }

/* Quello che la banca si e' tenuta: si legge accanto all'accreditato, ed e' il numero che
   qualcuno confronta con l'estratto conto. */
.andt-n--costi .andt-n__v[b-774pmhc4v4] { color: var(--sedna-warning-700); }

/* ═══ Le estinzioni, sotto le righe ═══ */
.andt-est[b-774pmhc4v4] {
    margin-top: 0.6rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

.andt-est__h[b-774pmhc4v4] {
    display: flex;
    gap: 0.4rem;
    align-items: center;
    margin-bottom: 0.3rem;
    font-size: 0.78rem;
}

.andt-est__h i[b-774pmhc4v4] { color: var(--sedna-info-600); }

.andt-est__r[b-774pmhc4v4] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 0.75rem;
    align-items: center;
    padding: 0.25rem 0;
    border-top: 1px solid var(--sedna-border);
    font-size: 0.76rem;
}

.andt-est__d[b-774pmhc4v4] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }
.andt-est__m[b-774pmhc4v4] { color: var(--sedna-text-secondary); }
.andt-est__n[b-774pmhc4v4] { font-weight: 600; }
.andt-est__e[b-774pmhc4v4] { color: var(--sedna-warning-700); }
.andt-est__muta[b-774pmhc4v4] { color: var(--sedna-text-tertiary); font-style: italic; }
.andt-est__chi[b-774pmhc4v4] { margin-left: auto; color: var(--sedna-text-tertiary); font-size: 0.7rem; }

/* La colonna di spunta per il fascicolo parziale: stretta, e solo da presentata in poi. */
.andt-t__chk[b-774pmhc4v4] { width: 30px; }

/* ═══ Le due note del fascicolo ═══
   ⚠️ La prima e' la meta' che si dimentica: banca e IBAN sostituiti valgono SOLO sulla
   stampa. La seconda evita la domanda «l'ho stampato e la banca non c'e'». */
.andt-fasc[b-774pmhc4v4] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-top: 0.5rem;
    padding: 0.5rem 0.7rem;
    border: 1px solid var(--sedna-info-600);
    border-radius: var(--sedna-radius-md);
    color: var(--sedna-text);
    font-size: 0.78rem;
    line-height: 1.35;
}

.andt-fasc > i[b-774pmhc4v4] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-info-600); }

.andt-fasc--nota[b-774pmhc4v4] {
    border-color: var(--sedna-warning-700);
    background: var(--sedna-warning-50);
}

.andt-fasc--nota > i[b-774pmhc4v4] { color: var(--sedna-warning-700); }
/* /Pages/Contabilita/DistinteAnticipo/DistinteAnticipoList.razor.rz.scp.css */

/* ═══ Le pastiglie di stato ═══ */
.anl-stato[b-t4f1tov239] {
    display: inline-block;
    padding: 0.08rem 0.45rem;
    border: 1px solid var(--sedna-border);
    border-radius: 999px;
    font-size: 0.7rem;
    white-space: nowrap;
}

.anl-stato--bozza[b-t4f1tov239] { border-color: var(--sedna-text-tertiary); color: var(--sedna-text-tertiary); }
.anl-stato--presentata[b-t4f1tov239] { border-color: var(--sedna-info-600); color: var(--sedna-info-600); }
.anl-stato--accreditata[b-t4f1tov239] { border-color: var(--sedna-success-600); color: var(--sedna-success-600); }
.anl-stato--chiusa[b-t4f1tov239] { border-color: var(--sedna-border); color: var(--sedna-text-secondary); }
.anl-stato--annullata[b-t4f1tov239] { color: var(--sedna-text-tertiary); text-decoration: line-through; }

.anl-msg[b-t4f1tov239] {
    display: flex;
    gap: 0.4rem;
    align-items: flex-start;
    margin-top: 0.6rem;
    padding: 0.45rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
}

.anl-msg--no[b-t4f1tov239] {
    border: 1px solid var(--sedna-error-700);
    color: var(--sedna-error-700);
}

.anl-attesa[b-t4f1tov239] { display: flex; justify-content: center; padding: 2rem 0; }

.anl .mono[b-t4f1tov239] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }

/* ═══ I due totali, dal server ═══ */
.anl-tot[b-t4f1tov239] { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.5rem; }

.anl-tot__c[b-t4f1tov239] {
    display: flex;
    flex: 1 1 160px;
    flex-direction: column;
    gap: 0.1rem;
    padding: 0.35rem 0.6rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

.anl-tot__c--ant[b-t4f1tov239] { border-color: var(--sedna-primary); }

.anl-tot__l[b-t4f1tov239] {
    color: var(--sedna-text-tertiary);
    font-size: 0.68rem;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.anl-tot__v[b-t4f1tov239] {
    font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace);
    font-size: 0.92rem;
    font-weight: 600;
    text-align: right;
}

/* ═══ I filtri ═══
   ⚠️ Ogni lookup in un div a larghezza fissa: `.sedna-lookup-container` e' a larghezza
   piena, e nudo in una riga flex impila i filtri in verticale. */
.anl-filtri[b-t4f1tov239] { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
.anl-f--anno[b-t4f1tov239] { width: 100px; }
.anl-f--stato[b-t4f1tov239] { width: 140px; }
.anl-f--banca[b-t4f1tov239] { width: 180px; }
.anl-f--giorni[b-t4f1tov239] { width: 72px; }

/* «bozza» invece di un numero: corsivo e smorzato, cosi' non si legge come un numero vero. */
.anl-bozza[b-t4f1tov239] { color: var(--sedna-text-tertiary); font-style: italic; }
.anl-zero[b-t4f1tov239] { color: var(--sedna-text-tertiary); }

/* I giorni di una bozza ferma: una bozza dimenticata tiene impegnate le sue rate. */
.anl-vecchia[b-t4f1tov239] {
    margin-left: 0.3rem;
    padding: 0.02rem 0.3rem;
    border-radius: 999px;
    background: var(--sedna-warning-50);
    color: var(--sedna-warning-700);
    font-size: 0.66rem;
    font-weight: 600;
}
/* /Pages/Contabilita/DistinteAnticipo/EstinguiAnticipiModal.razor.rz.scp.css */

/* ⚠️ Il corpo si limita e la tabella scorre dentro: con trenta rate il popup crescerebbe
   oltre lo schermo e i pulsanti finirebbero fuori. `min-height: 0` e' la meta' che si
   dimentica. */
.est[b-mfq3mvewtu] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    max-height: calc(90vh - 140px);
}

/* ═══ La riga in testa: A e B sono due cose opposte ═══
   ⚠️ Colori diversi apposta: in A i soldi ESCONO dal conto corrente, in B ENTRANO sul
   conto anticipi. Due riquadri uguali si leggerebbero come la stessa operazione. */
.est-cap[b-mfq3mvewtu] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.8rem;
    line-height: 1.35;
}

.est-cap--a[b-mfq3mvewtu] { border: 1px solid var(--sedna-primary); background: var(--sedna-surface-variant); color: var(--sedna-text); }
.est-cap--a i[b-mfq3mvewtu] { color: var(--sedna-primary); }
.est-cap--b[b-mfq3mvewtu] { border: 1px solid var(--sedna-info-600); background: var(--sedna-surface-variant); color: var(--sedna-text); }
.est-cap--b i[b-mfq3mvewtu] { color: var(--sedna-info-600); }
.est-cap i[b-mfq3mvewtu] { flex: 0 0 auto; margin-top: 0.1rem; font-size: 1rem; }

.est-nocosti[b-mfq3mvewtu] {
    display: flex;
    gap: 0.35rem;
    align-items: flex-start;
    color: var(--sedna-text-secondary);
    font-size: 0.74rem;
}

.est-nocosti i[b-mfq3mvewtu] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-info-600); }

.est-attesa[b-mfq3mvewtu] { display: flex; justify-content: center; padding: 1rem 0; }

/* ═══ Le righe ═══ */
.est-righe[b-mfq3mvewtu] { flex: 1 1 auto; overflow: auto; min-height: 120px; }

.est-t[b-mfq3mvewtu], .est-reg__t[b-mfq3mvewtu] { width: 100%; border-collapse: collapse; font-size: 0.78rem; }

.est-t th[b-mfq3mvewtu], .est-reg__t th[b-mfq3mvewtu] {
    padding: 0.3rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text-tertiary);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-align: left;
    text-transform: uppercase;
}

.est-t th[b-mfq3mvewtu] { position: sticky; top: 0; }

.est-t td[b-mfq3mvewtu], .est-reg__t td[b-mfq3mvewtu] {
    padding: 0.25rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    vertical-align: middle;
}

.est-reg__t tfoot td[b-mfq3mvewtu] { border-top: 2px solid var(--sedna-border); border-bottom: 0; font-weight: 600; }
.est-t .r[b-mfq3mvewtu], .est-reg__t .r[b-mfq3mvewtu] { text-align: right; }
.est-t__d[b-mfq3mvewtu] { display: block; color: var(--sedna-text-tertiary); font-size: 0.7rem; }
.est-t__res[b-mfq3mvewtu] { font-weight: 600; }

[b-mfq3mvewtu] .est-in { width: 110px; }

/* ═══ Una scrittura per distinta ═══ */
.est-d[b-mfq3mvewtu] {
    padding: 0.45rem 0.6rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
}

.est-d__h[b-mfq3mvewtu] { margin-bottom: 0.3rem; font-size: 0.78rem; }
.est-d__n[b-mfq3mvewtu] { margin-left: 0.5rem; color: var(--sedna-text-secondary); }
.est-ecc[b-mfq3mvewtu] { color: var(--sedna-warning-700); }

/* ⚠️ Perche' non c'e' una scrittura, detto: il silenzio si legge come «qualcosa non ha
   funzionato». */
.est-nessuna[b-mfq3mvewtu] {
    display: flex;
    gap: 0.35rem;
    align-items: center;
    color: var(--sedna-text-secondary);
    font-size: 0.74rem;
    font-style: italic;
}

.est-nessuna i[b-mfq3mvewtu] { color: var(--sedna-text-tertiary); }

.est-box[b-mfq3mvewtu] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
    line-height: 1.35;
}

.est-box--sist[b-mfq3mvewtu] { border: 1px solid var(--sedna-warning-700); background: var(--sedna-warning-50); color: var(--sedna-text); }
.est-box--sist > i[b-mfq3mvewtu] { color: var(--sedna-warning-700); }
.est-box--no[b-mfq3mvewtu] { border: 1px solid var(--sedna-error-700); background: var(--sedna-error-50); color: var(--sedna-text); }
.est-box--no > i[b-mfq3mvewtu] { color: var(--sedna-error-700); }
.est-box ul[b-mfq3mvewtu] { margin: 0.25rem 0 0; padding-left: 1.1rem; }
.est-box > i[b-mfq3mvewtu] { flex: 0 0 auto; margin-top: 0.1rem; font-size: 1rem; }

.est .mono[b-mfq3mvewtu] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }
/* /Pages/Contabilita/DistinteAnticipo/ImpostazioniAnticipoPage.razor.rz.scp.css */

.animp-attesa[b-n5lh08wp12] { display: flex; justify-content: center; padding: 2.5rem 0; }

/* ⚠️ La fascia dice in quale dei due modi lavora la ditta, con parole diverse nei due casi:
   una levetta grigia e una blu si distinguono solo se le si guarda apposta, e chi non sa
   come lavora la sua ditta cerca in prima nota registrazioni che nessuno ha chiesto — o le
   fa due volte. */
.animp-modo[b-n5lh08wp12] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    margin-bottom: 0.6rem;
    padding: 0.55rem 0.8rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.8rem;
    line-height: 1.35;
}

.animp-modo--on[b-n5lh08wp12] {
    border: 1px solid var(--sedna-success-600);
    background: var(--sedna-success-50);
    color: var(--sedna-text);
}

.animp-modo--on > i[b-n5lh08wp12] { color: var(--sedna-success-600); }

.animp-modo--off[b-n5lh08wp12] {
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text);
}

.animp-modo--off > i[b-n5lh08wp12] { color: var(--sedna-text-tertiary); }
.animp-modo > i[b-n5lh08wp12] { flex: 0 0 auto; margin-top: 0.1rem; font-size: 1rem; }
.animp-modo strong[b-n5lh08wp12] { display: block; }

/* Quello che manca per accendere l'interruttore, detto PRIMA di far premere Salva. */
.animp-serve[b-n5lh08wp12] {
    display: flex;
    gap: 0.4rem;
    align-items: flex-start;
    margin-top: 0.4rem;
    padding: 0.35rem 0.6rem;
    border: 1px solid var(--sedna-warning-700);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-warning-50);
    color: var(--sedna-text);
    font-size: 0.74rem;
}

.animp-serve i[b-n5lh08wp12] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-warning-700); }

/* ═══ Le modalita' ammesse ═══ */
.animp-mod[b-n5lh08wp12] { display: flex; flex-wrap: wrap; gap: 0.3rem; }

.animp-mod__b[b-n5lh08wp12] {
    display: inline-flex;
    gap: 0.3rem;
    align-items: baseline;
    padding: 0.25rem 0.6rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    cursor: pointer;
    font-size: 0.76rem;
}

.animp-mod__b:hover:not(:disabled)[b-n5lh08wp12] { border-color: var(--sedna-primary); }
.animp-mod__b:disabled[b-n5lh08wp12] { cursor: not-allowed; opacity: 0.6; }

.animp-mod__b--on[b-n5lh08wp12] {
    border-color: var(--sedna-primary);
    background: color-mix(in srgb, var(--sedna-primary) 10%, transparent);
    color: var(--sedna-primary);
}

.animp .mono[b-n5lh08wp12] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }
/* /Pages/Contabilita/DistinteAnticipo/PrendiRateAnticipoModal.razor.rz.scp.css */

/* ⚠️ IL CORPO DEL POPUP SI LIMITA, e la griglia scorre DENTRO di se': senza, un elenco
   lungo fa crescere il popup e i pulsanti finiscono migliaia di pixel piu' in basso —
   successo davvero sul «Prendi partite» della distinta pagamenti (14.528 px).
   `min-height: 0` e' la meta' che si dimentica: senza, un figlio flex non scende sotto il
   suo contenuto e il limite non ha effetto. */
.prat[b-np0flg1hsk] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-height: calc(90vh - 140px);
}

.prat-grid[b-np0flg1hsk] {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 240px;
}

/* ⚠️ Le rate che NON si possono anticipare: grigie e in corsivo, non nascoste. Chi cerca
   una fattura che non parte deve trovarla QUI, con scritto perche', e non concludere che
   manchi. */
[b-np0flg1hsk] .prat-no { color: var(--sedna-text-tertiary); font-style: italic; }

.prat-motivo[b-np0flg1hsk] { color: var(--sedna-text-tertiary); font-style: italic; }
.prat-avviso[b-np0flg1hsk] { color: var(--sedna-warning-700); }
.prat-d[b-np0flg1hsk] { display: block; color: var(--sedna-text-tertiary); font-size: 0.7rem; }
.prat-saldo[b-np0flg1hsk] { font-weight: 600; }

.prat-msg[b-np0flg1hsk] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
    line-height: 1.35;
}

.prat-msg--no[b-np0flg1hsk] {
    border: 1px solid var(--sedna-error-700);
    background: var(--sedna-error-50);
    color: var(--sedna-text);
}

.prat-msg--no > i[b-np0flg1hsk] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-error-700); }

.prat-msg__x[b-np0flg1hsk] {
    flex: 0 0 auto;
    margin-left: auto;
    padding: 0.1rem 0.25rem;
    border: 0;
    background: none;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
}

.prat-nonagg[b-np0flg1hsk] { margin: 0.3rem 0 0; padding-left: 1.1rem; }
.prat-nonagg__altre[b-np0flg1hsk] { color: var(--sedna-text-tertiary); font-style: italic; }

.prat-conta[b-np0flg1hsk] { margin-right: auto; color: var(--sedna-text-secondary); font-size: 0.78rem; }

.prat .mono[b-np0flg1hsk] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }
/* /Pages/Contabilita/DistinteAnticipo/SituazioneAnticipiPage.razor.rz.scp.css */

.sitan-attesa[b-440tqglpyh] { display: flex; justify-content: center; padding: 2.5rem 0; }

.sitan-vuoto[b-440tqglpyh] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    margin-bottom: 0.6rem;
    padding: 1.2rem 1rem;
    border: 1px dashed var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.82rem;
}

.sitan-vuoto > i[b-440tqglpyh] { flex: 0 0 auto; color: var(--sedna-text-tertiary); font-size: 1.3rem; }
.sitan-vuoto strong[b-440tqglpyh] { display: block; color: var(--sedna-text); }

/* ═══ Le schede per banca ═══ */
.sitan-banche[b-440tqglpyh] {
    display: grid;
    gap: 0.5rem;
    margin-bottom: 0.6rem;
    grid-template-columns: repeat(auto-fill, minmax(400px, 1fr));
}

.sitan-c[b-440tqglpyh] {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    padding: 0.6rem 0.75rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

/* Fido superato: il bordo lo dice prima ancora di leggere i numeri. */
.sitan-c--fuori[b-440tqglpyh] { border-color: var(--sedna-error-700); }

.sitan-c__h[b-440tqglpyh] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem 0.75rem;
    align-items: baseline;
    justify-content: space-between;
}

.sitan-c__t[b-440tqglpyh] { display: flex; gap: 0.4rem; align-items: baseline; }
.sitan-c__cod[b-440tqglpyh] { font-size: 0.9rem; font-weight: 600; }
.sitan-c__nome[b-440tqglpyh] { color: var(--sedna-text-secondary); font-size: 0.78rem; }
.sitan-c__mod[b-440tqglpyh] { color: var(--sedna-text-secondary); font-size: 0.7rem; }

/* ═══ Il fido ═══ */
.sitan-barra[b-440tqglpyh] {
    overflow: hidden;
    height: 5px;
    border-radius: 999px;
    background: var(--sedna-surface-hover);
}

.sitan-barra__i[b-440tqglpyh] { height: 100%; background: var(--sedna-primary); transition: width 0.2s ease; }
.sitan-barra__i--fuori[b-440tqglpyh] { background: var(--sedna-error-700); }

.sitan-fido__n[b-440tqglpyh] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.2rem 0.75rem;
    margin-top: 0.25rem;
    color: var(--sedna-text-secondary);
    font-size: 0.74rem;
}

.sitan-fido__n b[b-440tqglpyh] { color: var(--sedna-text); }
.sitan-ok[b-440tqglpyh] { color: var(--sedna-success-600); }
.sitan-muto[b-440tqglpyh] { color: var(--sedna-text-tertiary); font-style: italic; }
.sitan-fuori[b-440tqglpyh] { color: var(--sedna-error-700); font-weight: 600; }

/* ═══ I numeri ═══ */
.sitan-n[b-440tqglpyh] { display: flex; flex-wrap: wrap; gap: 0.4rem; }

.sitan-n__c[b-440tqglpyh] {
    display: flex;
    flex: 1 1 110px;
    flex-direction: column;
    gap: 0.05rem;
    padding: 0.3rem 0.5rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
}

.sitan-n__c--av[b-440tqglpyh] { border-color: var(--sedna-warning-700); }
.sitan-n__c--av .sitan-n__v[b-440tqglpyh] { color: var(--sedna-warning-700); }

.sitan-n__l[b-440tqglpyh] {
    color: var(--sedna-text-tertiary);
    font-size: 0.64rem;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.sitan-n__v[b-440tqglpyh] { font-size: 0.86rem; font-weight: 600; text-align: right; }

/* Il conteggio accanto all'importo: «quante rate», non un secondo importo. */
.sitan-n__q[b-440tqglpyh] {
    margin-left: 0.3rem;
    color: var(--sedna-text-tertiary);
    font-size: 0.68rem;
    font-weight: 400;
}

.sitan-av[b-440tqglpyh], .sitan-ric[b-440tqglpyh] {
    display: flex;
    gap: 0.45rem;
    align-items: flex-start;
    padding: 0.4rem 0.6rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.74rem;
    line-height: 1.35;
}

.sitan-av[b-440tqglpyh] {
    border: 1px solid var(--sedna-warning-700);
    background: var(--sedna-warning-50);
    color: var(--sedna-text);
}

.sitan-av i[b-440tqglpyh] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-warning-700); }

/* ═══ La riconciliazione col conto anticipi ═══
   ⚠️ Non e' un errore del portale: e' un fatto contabile — un giroconto fatto a mano, o
   un incasso arrivato sul conto anticipi che nessuno ha ancora estinto. */
.sitan-ric--ok[b-440tqglpyh] { border: 1px solid var(--sedna-border); color: var(--sedna-text-secondary); }
.sitan-ric--ok i[b-440tqglpyh] { color: var(--sedna-success-600); }
.sitan-ric--no[b-440tqglpyh] { border: 1px solid var(--sedna-error-700); background: var(--sedna-error-50); color: var(--sedna-text); }
.sitan-ric--no i[b-440tqglpyh] { color: var(--sedna-error-700); }
.sitan-ric i[b-440tqglpyh] { flex: 0 0 auto; margin-top: 0.1rem; }

/* ═══ I filtri ═══ */
.sitan-filtri[b-440tqglpyh] { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
.sitan-f--banca[b-440tqglpyh] { width: 170px; }
.sitan-f--ditta[b-440tqglpyh] { width: 140px; }
.sitan-f--giorni[b-440tqglpyh] { width: 72px; }

/* ═══ Le righe ═══ */
.sitan-t__d[b-440tqglpyh] { display: block; color: var(--sedna-text-tertiary); font-size: 0.7rem; }
.sitan-res[b-440tqglpyh] { font-weight: 600; }
.sitan-passato[b-440tqglpyh] { color: var(--sedna-warning-700); font-weight: 600; }
.sitan-inc[b-440tqglpyh] { color: var(--sedna-success-600); }

.sitan-ic[b-440tqglpyh] { display: inline-flex; gap: 0.2rem; align-items: center; }
.sitan-ic--av[b-440tqglpyh] { color: var(--sedna-warning-700); }
.sitan-ic--ok[b-440tqglpyh] { color: var(--sedna-success-600); }
.sitan-ic--info[b-440tqglpyh] { color: var(--sedna-info-600); }

/* Una riga con avvisi si nota senza gridare: il rosso direbbe «sbagliata». */
[b-440tqglpyh] .sitan-row-av { background: var(--sedna-warning-50); }

.sitan .mono[b-440tqglpyh] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }
/* /Pages/Contabilita/DistintePagamento/DistintaPagamentoPage.razor.rz.scp.css */
/* La distinta in bozza: i bonifici uno sotto l'altro.

   Non è una griglia, ed è voluto: un bonifico ha una TESTA (chi, quale IBAN, quanto) e
   delle righe sotto. In una griglia piatta il fornitore si ripeterebbe su ogni riga e
   l'IBAN — che è il punto in cui si perdono i soldi — sarebbe una colonna fra tante. */

.dsdt-body[b-gwh5i8tjp4] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 10px 12px;
    overflow: auto;
}

.dsdt-attesa[b-gwh5i8tjp4] { display: flex; justify-content: center; padding: 32px 0; }

.dsdt-stato[b-gwh5i8tjp4] {
    display: inline-block;
    padding: 1px 8px;
    border-radius: 999px;
    font-size: var(--sedna-text-xs);
    font-weight: 600;
    border: 1px solid var(--sedna-border);
}

.dsdt-stato--b[b-gwh5i8tjp4] { background: color-mix(in srgb, var(--sedna-warning-600) 16%, transparent); border-color: var(--sedna-warning-600); }
.dsdt-stato--g[b-gwh5i8tjp4] { background: color-mix(in srgb, var(--sedna-info-600) 16%, transparent); border-color: var(--sedna-info-600); }
.dsdt-stato--e[b-gwh5i8tjp4] { background: color-mix(in srgb, var(--sedna-primary) 14%, transparent); border-color: var(--sedna-primary); }
.dsdt-stato--c[b-gwh5i8tjp4] { background: color-mix(in srgb, var(--sedna-success-600) 16%, transparent); border-color: var(--sedna-success-600); }

/* ── «Da sistemare»: in cima, e non si chiude ───────────────────────────────────
   Niente X: sparisce da sola quando non c'è più niente da sistemare. Una striscia
   che si può chiudere è una striscia che si chiude e non si riapre — e questa è
   l'unica cosa che separa una distinta da un flusso rifiutato dalla banca. */
.dsdt-sistemare[b-gwh5i8tjp4] {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin: 8px 12px 0;
    padding: 10px 12px;
    background: var(--sedna-warning-50, #fff8e1);
    border: 1px solid var(--sedna-warning-600, #ffb300);
    border-radius: var(--sedna-radius-md, 0.5rem);
    color: var(--sedna-text);
    font-size: var(--sedna-text-sm);
    line-height: 1.5;
}

.dsdt-sistemare ul[b-gwh5i8tjp4] { margin: 4px 0 0; padding-left: 18px; }

/* ── Un bonifico ─────────────────────────────────────────────────────────────── */
.dsdt-bon[b-gwh5i8tjp4] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    overflow: hidden;
}

.dsdt-bon__h[b-gwh5i8tjp4] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 8px 10px;
    background: var(--sedna-surface-alt, var(--sedna-surface));
    border-bottom: 1px solid var(--sedna-border-light, var(--sedna-border));
}

.dsdt-bon__n[b-gwh5i8tjp4] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    height: 22px;
    padding: 0 6px;
    border-radius: var(--sedna-radius-sm, .25rem);
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    font-size: var(--sedna-text-xs);
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text-secondary);
}

.dsdt-bon__chi[b-gwh5i8tjp4] { font-weight: 600; }

/* L'importo del bonifico spinto a destra: è il numero che si cerca scorrendo. */
.dsdt-bon__imp[b-gwh5i8tjp4] { margin-left: auto; font-size: var(--sedna-text-base); font-weight: 600; }

/* ── L'IBAN ─────────────────────────────────────────────────────────────────── */
.dsdt-iban[b-gwh5i8tjp4] {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
}

.dsdt-iban__orig[b-gwh5i8tjp4] { font-style: italic; }

.dsdt-iban--ko[b-gwh5i8tjp4] {
    padding: 1px 8px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--sedna-error-600) 14%, transparent);
    border: 1px solid var(--sedna-error-600);
    color: var(--sedna-text);
    font-weight: 600;
}

/* L'AVVISO dell'IBAN cambiato: riga intera sotto la testa, non una pastiglia in mezzo
   alle altre. È l'unico posto in cui una truffa si può ancora fermare, e deve farsi
   leggere per intero — non sopravvivere come un puntino colorato. */
.dsdt-avviso-iban[b-gwh5i8tjp4] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 6px 10px;
    background: var(--sedna-warning-50, #fff8e1);
    border-bottom: 1px solid var(--sedna-warning-600, #ffb300);
    color: var(--sedna-text);
    font-size: var(--sedna-text-xs);
    line-height: 1.45;
}

.dsdt-causale[b-gwh5i8tjp4] {
    padding: 6px 10px;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    border-bottom: 1px solid var(--sedna-border-light, var(--sedna-border));
}

/* ── Le righe del bonifico ──────────────────────────────────────────────────── */
.dsdt-righe[b-gwh5i8tjp4] { width: 100%; border-collapse: collapse; font-size: var(--sedna-text-sm); }

.dsdt-righe th[b-gwh5i8tjp4] {
    padding: 4px 10px;
    text-align: left;
    font-size: var(--sedna-text-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--sedna-text-secondary);
    border-bottom: 1px solid var(--sedna-border-light, var(--sedna-border));
}

.dsdt-righe td[b-gwh5i8tjp4] { padding: 3px 10px; border-bottom: 1px solid var(--sedna-border-light, var(--sedna-border)); }

.dsdt-righe tr:last-child td[b-gwh5i8tjp4] { border-bottom: 0; }

.dsdt-righe .r[b-gwh5i8tjp4] { text-align: right; }

.dsdt-righe__x[b-gwh5i8tjp4] { width: 40px; text-align: right; }

/* La nota di credito ENTRA per intero e riduce il bonifico: si riconosce dal fondo,
   non solo dal segno meno — scorrendo, un meno davanti a un numero si perde. */
.dsdt-nc td[b-gwh5i8tjp4] { background: color-mix(in srgb, var(--sedna-info-600) 8%, transparent); }

.dsdt-righe__nota td[b-gwh5i8tjp4] {
    padding: 2px 10px 6px;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
}

.dsdt-imp[b-gwh5i8tjp4] { width: 120px; }

/* ── Piede ──────────────────────────────────────────────────────────────────── */
.dsdt-piede[b-gwh5i8tjp4] {
    display: flex;
    align-items: baseline;
    gap: 16px;
    padding: 8px 12px;
    border-top: 1px solid var(--sedna-border);
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
}

.dsdt-piede__tot strong[b-gwh5i8tjp4] { font-size: var(--sedna-text-lg); color: var(--sedna-text); }

.dsdt-piede__note[b-gwh5i8tjp4] {
    margin-left: auto;
    max-width: 40ch;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-style: italic;
}

.dsdt-vuoto[b-gwh5i8tjp4] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 24px;
    border: 1px dashed var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    color: var(--sedna-text-secondary);
}

.dsdt-vuoto i[b-gwh5i8tjp4] { font-size: 1.6rem; }

.dsdt-msg[b-gwh5i8tjp4] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin: 8px 12px 0;
    padding: 8px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    font-size: var(--sedna-text-sm);
    line-height: 1.45;
}

.dsdt-msg--no[b-gwh5i8tjp4] {
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-600);
    color: var(--sedna-text);
}

/* ── L'esito del bonifico ────────────────────────────────────────────────────────
   È una PASTIGLIA CLICCABILE e non un pulsante: dice com'è andata, e premerla apre
   il dialogo per correggerla. Da spenta (in bozza, o senza permesso) resta una
   targhetta — il colore continua a dire lo stato anche quando non si tocca. */
.dsdt-esito[b-gwh5i8tjp4] {
    padding: 1px 10px;
    border-radius: 999px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    font: inherit;
    font-size: var(--sedna-text-xs);
    font-weight: 600;
    cursor: pointer;
}

.dsdt-esito:disabled[b-gwh5i8tjp4] { cursor: default; opacity: .85; }
.dsdt-esito:focus-visible[b-gwh5i8tjp4] { outline: 2px solid var(--sedna-primary); outline-offset: 1px; }

.dsdt-esito--i[b-gwh5i8tjp4] { background: color-mix(in srgb, var(--sedna-info-600) 16%, transparent); border-color: var(--sedna-info-600); }
.dsdt-esito--e[b-gwh5i8tjp4] { background: color-mix(in srgb, var(--sedna-success-600) 18%, transparent); border-color: var(--sedna-success-600); }
.dsdt-esito--s[b-gwh5i8tjp4] { background: color-mix(in srgb, var(--sedna-error-600) 16%, transparent); border-color: var(--sedna-error-600); }
.dsdt-esito--r[b-gwh5i8tjp4] { background: color-mix(in srgb, var(--sedna-warning-600) 18%, transparent); border-color: var(--sedna-warning-600); }

.dsdt-piede__ok strong[b-gwh5i8tjp4] { color: var(--sedna-success-600); }
.dsdt-piede__ko strong[b-gwh5i8tjp4] { color: var(--sedna-error-600); }

/* ── I file in archivio ─────────────────────────────────────────────────────── */
.dsdt-flussi[b-gwh5i8tjp4] { display: flex; flex-direction: column; gap: 8px; padding: 4px; }

.dsdt-flusso[b-gwh5i8tjp4] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
}

.dsdt-flusso__tipo[b-gwh5i8tjp4] {
    flex: none;
    padding: 1px 8px;
    border-radius: 999px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface-alt, var(--sedna-surface));
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
}

.dsdt-flusso__c[b-gwh5i8tjp4] { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; }

.dsdt-flusso__r[b-gwh5i8tjp4] { font-size: var(--sedna-text-xs); color: var(--sedna-text-secondary); }

.dsdt-flusso__q[b-gwh5i8tjp4] { font-size: var(--sedna-text-xs); color: var(--sedna-text-tertiary); }

.dsdt-annulla p[b-gwh5i8tjp4] { margin: 0 0 10px; font-size: var(--sedna-text-sm); line-height: 1.5; }

/* ── Le registrazioni appena scritte ────────────────────────────────────────────
   Verde: è l'unica cosa andata a buon fine che si mostra in cima. I link ci portano
   finché si resta sulla pagina — dopo bisognerebbe cercarle per numero. */
.dsdt-scritte[b-gwh5i8tjp4] {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin: 8px 12px 0;
    padding: 8px 12px;
    background: color-mix(in srgb, var(--sedna-success-600) 12%, transparent);
    border: 1px solid var(--sedna-success-600);
    border-radius: var(--sedna-radius-md, 0.5rem);
    font-size: var(--sedna-text-sm);
}

.dsdt-scritte__l[b-gwh5i8tjp4] { margin-left: 8px; font-variant-numeric: tabular-nums; }

/* ── Import dell'esito ──────────────────────────────────────────────────────── */
.dsdt-import[b-gwh5i8tjp4] { display: flex; flex-direction: column; gap: 10px; padding: 4px; }

.dsdt-import p[b-gwh5i8tjp4] { margin: 0; font-size: var(--sedna-text-sm); line-height: 1.5; }

.dsdt-import__attesa[b-gwh5i8tjp4] { display: flex; justify-content: center; padding: 12px 0; }

/* Il riepilogo: la frase che dice lo stato VERO della distinta, contato sulle righe. */
.dsdt-import__riep[b-gwh5i8tjp4] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 10px 12px;
    background: var(--sedna-surface-alt, var(--sedna-surface));
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    font-size: var(--sedna-text-base);
    font-weight: 600;
}

/* I tre colori delle liste: rosso chiede un gesto oggi, giallo chiede uno sguardo,
   grigio non chiede niente. Mescolarli farebbe perdere il primo. */
.dsdt-msg--avviso[b-gwh5i8tjp4] {
    background: var(--sedna-warning-50, #fff8e1);
    border: 1px solid var(--sedna-warning-600, #ffb300);
    color: var(--sedna-text);
}

.dsdt-msg--muto[b-gwh5i8tjp4] {
    background: var(--sedna-surface-alt, var(--sedna-surface));
    border: 1px dashed var(--sedna-border);
    color: var(--sedna-text-secondary);
}

.dsdt-msg--nota[b-gwh5i8tjp4] {
    background: color-mix(in srgb, var(--sedna-info-600) 10%, transparent);
    border: 1px solid var(--sedna-info-600);
    color: var(--sedna-text);
}

.dsdt-msg ul[b-gwh5i8tjp4] { margin: 4px 0 0; padding-left: 18px; }

/* ── Contabilizzazione ─────────────────────────────────────────────────────── */
.dsdt-contab[b-gwh5i8tjp4] { display: flex; flex-direction: column; gap: 10px; padding: 4px; }

.dsdt-contab__campi[b-gwh5i8tjp4] { display: flex; flex-wrap: wrap; gap: 16px; }

.dsdt-f[b-gwh5i8tjp4] { display: flex; flex-direction: column; gap: 2px; }

.dsdt-f > label[b-gwh5i8tjp4] {
    font-size: var(--sedna-text-xs);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--sedna-text-secondary);
}

.dsdt-f__n[b-gwh5i8tjp4] { font-size: var(--sedna-text-xs); color: var(--sedna-text-secondary); }

.dsdt-f__rip[b-gwh5i8tjp4] {
    border: 0;
    background: transparent;
    padding: 0;
    color: var(--sedna-primary);
    font: inherit;
    font-size: var(--sedna-text-xs);
    text-decoration: underline;
    cursor: pointer;
}

.dsdt-date[b-gwh5i8tjp4] { width: 148px; }

/* «Anteprima»: la parola che tiene tutto in piedi. Senza, queste tabelle di conti e
   importi si leggono come registrazioni già scritte, e nessuno preme Conferma. */
.dsdt-contab__nota[b-gwh5i8tjp4] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 8px 10px;
    background: color-mix(in srgb, var(--sedna-info-600) 10%, transparent);
    border: 1px solid var(--sedna-info-600);
    border-radius: var(--sedna-radius-md, 0.5rem);
    font-size: var(--sedna-text-sm);
}

.dsdt-reg[b-gwh5i8tjp4] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    overflow: hidden;
}

.dsdt-reg__h[b-gwh5i8tjp4] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 6px 10px;
    background: var(--sedna-surface-alt, var(--sedna-surface));
    border-bottom: 1px solid var(--sedna-border-light, var(--sedna-border));
    font-size: var(--sedna-text-sm);
}

.dsdt-reg__d[b-gwh5i8tjp4] { font-weight: 600; }

.dsdt-reg__c[b-gwh5i8tjp4], .dsdt-reg__q[b-gwh5i8tjp4] { font-size: var(--sedna-text-xs); color: var(--sedna-text-secondary); }

.dsdt-reg__t[b-gwh5i8tjp4] { margin-left: auto; font-weight: 600; }

.dsdt-reg__ko[b-gwh5i8tjp4] {
    padding: 0 8px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--sedna-error-600) 16%, transparent);
    border: 1px solid var(--sedna-error-600);
    font-size: var(--sedna-text-xs);
    font-weight: 600;
}

.dsdt-reg__op[b-gwh5i8tjp4] {
    margin-left: 6px;
    font-size: var(--sedna-text-xs);
    font-style: italic;
    color: var(--sedna-text-tertiary);
}

/* ═══ Il bonifico tornato indietro (DP-C11) ═══
   ⚠️ La pastiglia porta la DATA: senza, non si sa se è successo ieri o due mesi fa — e
   cambia cosa si fa adesso. */
.dsdt-restituito[b-gwh5i8tjp4] {
    display: inline-flex;
    gap: 0.25rem;
    align-items: center;
    padding: 0.05rem 0.4rem;
    border: 1px solid var(--sedna-warning-700);
    border-radius: 999px;
    color: var(--sedna-warning-700);
    font-size: 0.68rem;
    white-space: nowrap;
}

/* ═══ L'esito del riaccredito ═══
   Una fascia e non un messaggio che sparisce: dentro c'è il link alla registrazione e la
   frase «tornano da pagare», che è la cosa su cui bisogna agire dopo. */
.dsdt-riacc[b-gwh5i8tjp4] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    margin-bottom: 0.5rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--sedna-success-600);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-success-50);
    color: var(--sedna-text);
    font-size: 0.8rem;
}

.dsdt-riacc > i[b-gwh5i8tjp4] { flex: 0 0 auto; margin-top: 0.15rem; color: var(--sedna-success-600); }

.dsdt-riacc__t[b-gwh5i8tjp4] {
    display: flex;
    flex: 1 1 auto;
    flex-wrap: wrap;
    gap: 0.4rem 0.75rem;
    align-items: center;
}

.dsdt-riacc__x[b-gwh5i8tjp4] {
    flex: 0 0 auto;
    padding: 0.1rem 0.25rem;
    border: 0;
    background: none;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
}

.dsdt-riacc__x:hover[b-gwh5i8tjp4] { color: var(--sedna-text); }

/* Le partite che tornano aperte, nella finestra del riaccredito. */
.dsdt-box[b-gwh5i8tjp4] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-top: 0.6rem;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
    line-height: 1.35;
}

.dsdt-box ul[b-gwh5i8tjp4] { margin: 0.25rem 0 0.35rem; padding-left: 1.1rem; }
.dsdt-box > i[b-gwh5i8tjp4] { flex: 0 0 auto; margin-top: 0.1rem; font-size: 1rem; }
.dsdt-box--no[b-gwh5i8tjp4] { border: 1px solid var(--sedna-error-700); background: var(--sedna-error-50); color: var(--sedna-text); }
.dsdt-box--no > i[b-gwh5i8tjp4] { color: var(--sedna-error-700); }
.dsdt-box--part[b-gwh5i8tjp4] { border: 1px solid var(--sedna-info-600); color: var(--sedna-text); }
.dsdt-box--part > i[b-gwh5i8tjp4] { color: var(--sedna-info-600); }

.dsdt-cap[b-gwh5i8tjp4] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-bottom: 0.7rem;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface-variant);
    font-size: 0.8rem;
    line-height: 1.35;
}

.dsdt-cap i[b-gwh5i8tjp4] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-info-600); }

.dsdt-reg__h[b-gwh5i8tjp4] { display: flex; gap: 0.4rem; align-items: baseline; margin: 0.6rem 0 0.3rem; font-size: 0.78rem; }
.dsdt-reg__c[b-gwh5i8tjp4] { color: var(--sedna-text-secondary); font-size: 0.72rem; }
.dsdt-reg__t[b-gwh5i8tjp4] { width: 100%; border-collapse: collapse; font-size: 0.76rem; }

.dsdt-reg__t th[b-gwh5i8tjp4] {
    padding: 0.25rem 0.4rem;
    border-bottom: 1px solid var(--sedna-border);
    color: var(--sedna-text-tertiary);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-align: left;
    text-transform: uppercase;
}

.dsdt-reg__t td[b-gwh5i8tjp4] { padding: 0.22rem 0.4rem; border-bottom: 1px solid var(--sedna-border); vertical-align: top; }
.dsdt-reg__t tfoot td[b-gwh5i8tjp4] { border-top: 2px solid var(--sedna-border); border-bottom: 0; font-weight: 600; }
.dsdt-reg__t .r[b-gwh5i8tjp4] { text-align: right; }
.dsdt-reg__d[b-gwh5i8tjp4] { display: block; color: var(--sedna-text-tertiary); font-size: 0.7rem; }

/* ── La matita sul badge dell'esito ───────────────────────────────────────────
   ⚠️ Il badge era cliccabile e non lo diceva: stesso aspetto di un'etichetta, e nessuno
   lo premeva (Bruno, 14/09). La matita è piccola e sta a destra del testo — serve a dire
   «si può toccare», non a farsi guardare. */
.dsdt-esito__pen[b-gwh5i8tjp4] {
    margin-left: 5px;
    font-size: .85em;
    opacity: .65;
}

.dsdt-esito:hover .dsdt-esito__pen[b-gwh5i8tjp4] { opacity: 1; }

/* ── Esiti a mano ─────────────────────────────────────────────────────────────
   Un bonifico per riga: chi è a sinistra, l'esito a destra. Il motivo, quando serve,
   va sotto l'esito e non accanto — è una frase, non un campo corto. */
.dsdt-esiti[b-gwh5i8tjp4] { display: flex; flex-direction: column; gap: 10px; padding: 4px 2px; }

.dsdt-esiti__testa[b-gwh5i8tjp4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.dsdt-esiti__quanti[b-gwh5i8tjp4] { font-size: var(--sedna-text-sm); color: var(--sedna-text-secondary); }

.dsdt-esiti__no[b-gwh5i8tjp4] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 8px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-600);
    font-size: var(--sedna-text-sm);
    line-height: 1.45;
}

.dsdt-esiti__lista[b-gwh5i8tjp4] {
    list-style: none;
    margin: 0;
    padding: 0;
    max-height: 46vh;
    overflow: auto;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
}

.dsdt-esiti__r[b-gwh5i8tjp4] {
    display: grid;
    grid-template-columns: 1fr 260px;
    gap: 6px 14px;
    align-items: start;
    padding: 8px 10px;
}

.dsdt-esiti__r + .dsdt-esiti__r[b-gwh5i8tjp4] { border-top: 1px solid var(--sedna-border); }

.dsdt-esiti__chi[b-gwh5i8tjp4] { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; min-width: 0; }

.dsdt-esiti__n[b-gwh5i8tjp4] {
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-tertiary);
    font-variant-numeric: tabular-nums;
}

.dsdt-esiti__rs[b-gwh5i8tjp4] { font-size: var(--sedna-text-sm); font-weight: 600; }

.dsdt-esiti__imp[b-gwh5i8tjp4] {
    font-size: var(--sedna-text-sm);
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text-secondary);
}

.dsdt-esiti__scelta[b-gwh5i8tjp4] { display: flex; flex-direction: column; gap: 5px; min-width: 0; }

.dsdt-esiti__data[b-gwh5i8tjp4] { display: flex; flex-direction: column; gap: 2px; max-width: 180px; }

.dsdt-esiti__data > label[b-gwh5i8tjp4] {
    font-size: var(--sedna-text-xs);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--sedna-text-secondary);
}

.dsdt-esiti__nota[b-gwh5i8tjp4] { font-size: var(--sedna-text-xs); color: var(--sedna-text-secondary); }

@media (max-width: 640px) {
    .dsdt-esiti__r[b-gwh5i8tjp4] { grid-template-columns: 1fr; }
}

/* La nota della bozza pesa più dell'altra: dice che si sta per chiudere la bozza. */
.dsdt-esiti__nota--forte[b-gwh5i8tjp4] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 8px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: color-mix(in srgb, var(--sedna-info-600) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--sedna-info-600) 35%, transparent);
    color: var(--sedna-text);
    font-size: var(--sedna-text-sm);
    line-height: 1.45;
}

.dsdt-esiti__nota--forte > i[b-gwh5i8tjp4] { color: var(--sedna-info-600); }
/* /Pages/Contabilita/DistintePagamento/DistintePagamentoList.razor.rz.scp.css */
/* Elenco delle distinte pagamenti. */

.dstl-filtri[b-d15i7hf00x] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

/* ⚠️ I LOOKUP VANNO INCAPSULATI A LARGHEZZA FISSA. Il loro wrapper interno
   (`.sedna-lookup-container`) è a larghezza piena: nudo dentro la riga flex si prende tutto
   lo spazio, e i tre filtri finiscono uno sotto l'altro nell'angolo in alto a destra. Stesso
   rimedio di MovimentiList e GiacenzePage. */
.dstl-f[b-d15i7hf00x] { flex: none; }
.dstl-f--anno[b-d15i7hf00x] { width: 110px; }
.dstl-f--stato[b-d15i7hf00x] { width: 150px; }
.dstl-f--banca[b-d15i7hf00x] { width: 220px; }

.dstl-filtri__l[b-d15i7hf00x] {
    font-size: var(--sedna-text-xs);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--sedna-text-secondary);
}

/* Lo STATO come pastiglia: quattro stati che si leggono a colpo d'occhio scorrendo un
   elenco. Il colore dice a che punto è la distinta, non se è andata bene. */
.dstl-stato[b-d15i7hf00x] {
    display: inline-block;
    padding: 1px 8px;
    border-radius: 999px;
    font-size: var(--sedna-text-xs);
    font-weight: 600;
    border: 1px solid var(--sedna-border);
    color: var(--sedna-text);
}

.dstl-stato--b[b-d15i7hf00x] {
    background: color-mix(in srgb, var(--sedna-warning-600) 16%, transparent);
    border-color: var(--sedna-warning-600);
}

.dstl-stato--g[b-d15i7hf00x] {
    background: color-mix(in srgb, var(--sedna-info-600) 16%, transparent);
    border-color: var(--sedna-info-600);
}

.dstl-stato--e[b-d15i7hf00x] {
    background: color-mix(in srgb, var(--sedna-primary) 14%, transparent);
    border-color: var(--sedna-primary);
}

.dstl-stato--c[b-d15i7hf00x] {
    background: color-mix(in srgb, var(--sedna-success-600) 16%, transparent);
    border-color: var(--sedna-success-600);
}

/* Eseguito e scartato: a zero restano grigi. Un verde su «0,00» direbbe che è andato
   tutto bene su una distinta che non è ancora partita. */
.dstl-zero[b-d15i7hf00x] { color: var(--sedna-text-tertiary); }
.dstl-ok[b-d15i7hf00x] { color: var(--sedna-success-600); font-weight: 600; }
.dstl-ko[b-d15i7hf00x] { color: var(--sedna-error-600); font-weight: 600; }

.dstl-msg[b-d15i7hf00x] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-top: 8px;
    padding: 8px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    font-size: var(--sedna-text-sm);
    line-height: 1.45;
}

.dstl-msg--no[b-d15i7hf00x] {
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-600);
    color: var(--sedna-text);
}
/* /Pages/Contabilita/DistintePagamento/PrendiPartiteModal.razor.rz.scp.css */
/* La finestra «Prendi partite». */

/* ⚠️ IL CORPO DEL POPUP SI LIMITA, e la griglia scorre DENTRO di se'. Senza, con 519
   partite il popup diventava alto 14.528 px e i pulsanti finivano a y = 14.496: per
   premerli bisognava scorrere quattordicimila pixel (misurato da Bruno il 13/09).
   `min-height: 0` sul contenitore della griglia e' la meta' che si dimentica: senza,
   un figlio flex non scende sotto il suo contenuto e il limite non ha effetto. */
.prpa[b-yzta5x0m5r] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-height: calc(90vh - 140px);
}

.prpa-grid[b-yzta5x0m5r] {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 240px;
}


.prpa-filtri[b-yzta5x0m5r] { display: flex; align-items: center; gap: 6px; }

.prpa-filtri__l[b-yzta5x0m5r] {
    font-size: var(--sedna-text-xs);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--sedna-text-secondary);
}

.prpa-filtri__data[b-yzta5x0m5r] { width: 148px; }

/* ── Le righe che la distinta NON paga ──────────────────────────────────────────
   Grigie e in corsivo: si leggono come «c'è, ma non per questo». Non nascoste —
   chi cerca una fattura che non parte deve trovarla QUI, con scritto perché, e non
   concludere che manchi. */
.prpa-no[b-yzta5x0m5r] { color: var(--sedna-text-tertiary); font-style: italic; }

.prpa-scaduta[b-yzta5x0m5r] { color: var(--sedna-error-600); font-weight: 600; }

/* La nota di credito: il segno meno da solo, in una colonna di numeri, si perde. */
.prpa-nc[b-yzta5x0m5r] { color: var(--sedna-info-600); font-weight: 600; }

.prpa-iban[b-yzta5x0m5r] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: var(--sedna-text-xs);
    white-space: nowrap;
}

.prpa-iban--ok[b-yzta5x0m5r] { color: var(--sedna-success-600); }
.prpa-iban--ko[b-yzta5x0m5r] { color: var(--sedna-error-600); font-weight: 600; }

.prpa-nota[b-yzta5x0m5r] {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    font-size: var(--sedna-text-xs);
    line-height: 1.35;
}

.prpa-nota--no[b-yzta5x0m5r] { color: var(--sedna-text-secondary); }
.prpa-nota--avviso[b-yzta5x0m5r] { color: var(--sedna-text-secondary); }

/* ── Barra sotto la griglia ─────────────────────────────────────────────────── */
.prpa-barra[b-yzta5x0m5r] {
    display: flex;
    align-items: baseline;
    gap: 16px;
    padding: 6px 2px 0;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
}

.prpa-barra__tot strong[b-yzta5x0m5r] { color: var(--sedna-text); font-variant-numeric: tabular-nums; }

.prpa-barra__sel[b-yzta5x0m5r] {
    margin-left: auto;
    font-weight: 600;
    color: var(--sedna-text);
}

/* ── Messaggi ──────────────────────────────────────────────────────────────── */
.prpa-msg[b-yzta5x0m5r] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 8px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    font-size: var(--sedna-text-sm);
    line-height: 1.45;
}

.prpa-msg--no[b-yzta5x0m5r] {
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-600);
    color: var(--sedna-text);
}

.prpa-msg--avviso[b-yzta5x0m5r] {
    background: var(--sedna-warning-50, #fff8e1);
    border: 1px solid var(--sedna-warning-600, #ffb300);
    color: var(--sedna-text);
}

.prpa-msg__x[b-yzta5x0m5r] {
    margin-left: auto;
    border: 0;
    background: transparent;
    color: var(--sedna-text);
    cursor: pointer;
    padding: 2px;
    border-radius: 4px;
    align-self: flex-start;
}

.prpa-nonagg[b-yzta5x0m5r] { margin: 4px 0 0; padding-left: 18px; }
.prpa-nonagg__altre[b-yzta5x0m5r] { list-style: none; margin-left: -18px; font-style: italic; }
/* /Pages/Contabilita/PianoDeiConti/ContiContabiliList.razor.rz.scp.css */
/* ===========================================================================
   Piano dei Conti — anagrafica (design "pdc"): toolbar + .panel + tabella .dg
   Layout a piena altezza: header/subnav/toolbar fissi, la panel scrolla dentro.
   Tutto su token --sedna-*. Blocco condiviso con Mastri/Conti.
   =========================================================================== */

/* Root a viewport fisso dal guscio globale .sedna-page (sedna.page.css):
   height calc(100dvh - 1rem) + overflow. Toolbar/subnav/panel gestiscono
   l'inset entro il box centrato, quindi azzero il padding-inline del guscio. */
.pdc-list[b-pwgs5l4jtv] {
    display: flex;
    flex-direction: column;
    padding-bottom: 1.25rem;
    max-width: 1600px;
    margin: 0 auto;
}

[b-pwgs5l4jtv] .pdc-subnav {
    flex: none;
}

/* ---------------- Toolbar ---------------- */
.pdc-toolbar[b-pwgs5l4jtv] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-3);
    flex-wrap: wrap;
    margin-bottom: var(--sedna-space-4);
    flex: none;
}

.list-error-banner[b-pwgs5l4jtv] {
    flex: none;
}

.pdc-toolbar-spacer[b-pwgs5l4jtv] {
    flex: 1;
}

.pdc-search[b-pwgs5l4jtv] {
    position: relative;
    max-width: 360px;
    flex: 1;
    min-width: 220px;
}

.pdc-search > i[b-pwgs5l4jtv] {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--sedna-text-tertiary);
    font-size: 0.9rem;
    pointer-events: none;
}

.pdc-search input[b-pwgs5l4jtv] {
    width: 100%;
    height: var(--sedna-control-height-md);
    padding: 0 12px 0 32px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-bg-subtle);
    border-radius: var(--sedna-radius-input);
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text);
    font-family: inherit;
    outline: none;
}

.pdc-search input[b-pwgs5l4jtv]::placeholder {
    color: var(--sedna-text-tertiary);
}

.pdc-search input:focus[b-pwgs5l4jtv] {
    background: var(--sedna-surface);
    border-color: var(--sedna-primary);
    box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
}

.pdc-seg[b-pwgs5l4jtv] {
    display: flex;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input);
    padding: 3px;
    gap: 2px;
    background: var(--sedna-bg-subtle);
    height: var(--sedna-control-height-md);
    align-items: center;
}

.pdc-seg-btn[b-pwgs5l4jtv] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: var(--sedna-text-sm);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-secondary);
    padding: 0 12px;
    height: 100%;
    border-radius: var(--sedna-radius-sm);
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

.pdc-seg-btn:hover[b-pwgs5l4jtv] {
    color: var(--sedna-text);
}

.pdc-seg-btn.active[b-pwgs5l4jtv] {
    background: var(--sedna-surface);
    color: var(--sedna-primary);
    box-shadow: var(--sedna-shadow-sm);
}

.pdc-seg-btn .dot[b-pwgs5l4jtv] {
    font-size: 0.8rem;
    line-height: 1;
}

.pdc-seg-btn .dot.eco[b-pwgs5l4jtv] {
    color: var(--sedna-warning-600);
}

.pdc-seg-btn .dot.patr[b-pwgs5l4jtv] {
    color: var(--sedna-primary);
}

/* ---------------- Panel (card con header) ---------------- */
.pdc-panel[b-pwgs5l4jtv] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg);
    overflow: hidden;
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.pdc-panel-head[b-pwgs5l4jtv] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-3);
    padding: var(--sedna-space-3) var(--sedna-space-4);
    border-bottom: 1px solid var(--sedna-divider);
    flex: none;
}

.pdc-panel-head h2[b-pwgs5l4jtv] {
    margin: 0;
    font-size: var(--sedna-text-base);
    font-weight: var(--sedna-font-semibold);
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
}

.pdc-panel-head h2 i[b-pwgs5l4jtv] {
    color: var(--sedna-text-tertiary);
    font-size: 1rem;
}

.pdc-panel-head .ph-actions[b-pwgs5l4jtv] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
}

.pdc-count-pill[b-pwgs5l4jtv] {
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-tertiary);
    background: var(--sedna-surface-hover);
    padding: 1px 8px;
    border-radius: var(--sedna-radius-full);
    white-space: nowrap;
}

.pdc-ghost-btn[b-pwgs5l4jtv] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: var(--sedna-control-height-sm);
    min-width: var(--sedna-control-height-sm);
    padding: 0 8px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-input);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-secondary);
    cursor: pointer;
    white-space: nowrap;
}

.pdc-ghost-btn:hover[b-pwgs5l4jtv] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text);
}

.pdc-ghost-btn:disabled[b-pwgs5l4jtv] {
    opacity: 0.5;
    cursor: default;
}

/* ---------------- Data grid (.dg) ---------------- */
.pdc-dg-wrap[b-pwgs5l4jtv] {
    width: 100%;
    overflow: auto;
    flex: 1 1 auto;
    min-height: 0;
    /* La barra di scorrimento comparendo con i dati restringeva l'area (la pagina "saltava"
       da stretta a larga a fine caricamento): lo spazio si riserva sempre. */
    scrollbar-gutter: stable;
}

table.pdc-dg[b-pwgs5l4jtv] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: var(--sedna-text-sm);
}

.pdc-dg thead th[b-pwgs5l4jtv] {
    text-align: left;
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    background: var(--sedna-bg-subtle);
    padding: 9px 14px;
    white-space: nowrap;
    border-bottom: 1px solid var(--sedna-border);
    position: sticky;
    top: 0;
    z-index: 2;
}

.pdc-dg th.ctr[b-pwgs5l4jtv], .pdc-dg td.ctr[b-pwgs5l4jtv] { text-align: center; }

.pdc-dg tbody tr[b-pwgs5l4jtv] {
    height: var(--sedna-control-height-lg, 40px);
}

.pdc-dg tbody tr + tr td[b-pwgs5l4jtv] {
    border-top: 1px solid var(--sedna-border-light);
}

.pdc-dg tbody td[b-pwgs5l4jtv] {
    padding: 6px 14px;
    vertical-align: middle;
    background: var(--sedna-surface);
}

.pdc-dg tbody tr:hover td[b-pwgs5l4jtv] {
    background: var(--sedna-bg-subtle);
}

.pdc-dg tbody tr.is-disabled td[b-pwgs5l4jtv] {
    opacity: 0.62;
}

.pdc-dg .code[b-pwgs5l4jtv] {
    font-family: var(--sedna-font-mono);
    font-size: var(--sedna-text-sm);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text);
    white-space: nowrap;
}

.pdc-dg .desc-main[b-pwgs5l4jtv] {
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text);
}

.pdc-dg .muted[b-pwgs5l4jtv] {
    color: var(--sedna-text-tertiary);
}

.pdc-dg .sigla[b-pwgs5l4jtv] {
    font-family: var(--sedna-font-mono);
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface-hover);
    padding: 1px 6px;
    border-radius: var(--sedna-radius-sm);
}

/* colonna azioni sticky a destra */
.pdc-dg th.act[b-pwgs5l4jtv], .pdc-dg td.act[b-pwgs5l4jtv] {
    width: 96px;
    text-align: right;
    position: sticky;
    right: 0;
}

.pdc-dg td.act[b-pwgs5l4jtv] {
    background: var(--sedna-surface);
    box-shadow: -8px 0 8px -8px rgba(16, 24, 40, 0.08);
}

.pdc-dg thead th.act[b-pwgs5l4jtv] {
    background: var(--sedna-bg-subtle);
    z-index: 3;
}

.pdc-dg tbody tr:hover td.act[b-pwgs5l4jtv] {
    background: var(--sedna-bg-subtle);
}

.act-row[b-pwgs5l4jtv] {
    display: inline-flex;
    gap: 3px;
    justify-content: flex-end;
}

.pdc-iact[b-pwgs5l4jtv] {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border: none;
    background: transparent;
    border-radius: 6px;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    font-size: 0.9rem;
    padding: 0;
}

.pdc-iact:hover[b-pwgs5l4jtv] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text);
}

.pdc-iact.del:hover[b-pwgs5l4jtv] {
    background: var(--sedna-state-error-bg);
    color: var(--sedna-error-700);
}

.pdc-iact.info:hover[b-pwgs5l4jtv] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

/* ---------------- Badge categoria / conteggio / stato ---------------- */
.pdc-cat[b-pwgs5l4jtv] {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    white-space: nowrap;
}

.pdc-cat.eco[b-pwgs5l4jtv] {
    background: var(--sedna-state-warning-bg);
    color: var(--sedna-warning-700);
}

.pdc-cat.patr[b-pwgs5l4jtv] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

.pdc-cat.tipo[b-pwgs5l4jtv] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
}

.pdc-cat.inherited[b-pwgs5l4jtv] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
    border: 1px dashed var(--sedna-border-strong);
}

.pdc-countbadge[b-pwgs5l4jtv] {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
    white-space: nowrap;
}

.pdc-sez-txt[b-pwgs5l4jtv] {
    color: var(--sedna-text-secondary);
    font-size: var(--sedna-text-sm);
    white-space: nowrap;
}

.pdc-stato[b-pwgs5l4jtv] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    white-space: nowrap;
}

.pdc-stato.on[b-pwgs5l4jtv] {
    background: var(--sedna-state-success-bg);
    color: var(--sedna-success-700);
}

.pdc-stato.off[b-pwgs5l4jtv] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-tertiary);
}

.pdc-dash[b-pwgs5l4jtv] {
    color: var(--sedna-text-tertiary);
    font-family: var(--sedna-font-mono);
}

/* ---------------- Empty state ---------------- */
.pdc-empty-box[b-pwgs5l4jtv] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 7px;
    padding: 48px 24px;
}

.pdc-empty-box .ico[b-pwgs5l4jtv] {
    width: 56px;
    height: 56px;
    border-radius: 14px;
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-tertiary);
    display: grid;
    place-items: center;
    font-size: 1.5rem;
    margin-bottom: 4px;
}

.pdc-empty-box h3[b-pwgs5l4jtv] {
    margin: 0;
    font-size: 1rem;
    font-weight: var(--sedna-font-semibold);
}

.pdc-empty-box p[b-pwgs5l4jtv] {
    margin: 0;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-tertiary);
    max-width: 320px;
    line-height: 1.5;
}

@media (max-width: 1200px) {
    .pdc-list[b-pwgs5l4jtv] {
        padding: 1rem;
    }
}

@media (min-width: 1600px) {
    .pdc-list[b-pwgs5l4jtv] {
        max-width: 1800px;
    }
}
/* /Pages/Contabilita/PianoDeiConti/GruppiContabiliList.razor.rz.scp.css */
/* ===========================================================================
   Piano dei Conti — anagrafica (design "pdc"): toolbar + .panel + tabella .dg
   Layout a piena altezza: header/subnav/toolbar fissi, la panel scrolla dentro.
   Tutto su token --sedna-*. Blocco condiviso con Mastri/Conti.
   =========================================================================== */

/* Root a viewport fisso dal guscio globale .sedna-page (sedna.page.css):
   height calc(100dvh - 1rem) + overflow. Toolbar/subnav/panel gestiscono
   l'inset entro il box centrato, quindi azzero il padding-inline del guscio. */
.pdc-list[b-rtvlbhm7cp] {
    display: flex;
    flex-direction: column;
    padding-bottom: 1.25rem;
    max-width: 1600px;
    margin: 0 auto;
}

[b-rtvlbhm7cp] .pdc-subnav {
    flex: none;
}

/* ---------------- Toolbar ---------------- */
.pdc-toolbar[b-rtvlbhm7cp] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-3);
    flex-wrap: wrap;
    margin-bottom: var(--sedna-space-4);
    flex: none;
}

.list-error-banner[b-rtvlbhm7cp] {
    flex: none;
}

.pdc-toolbar-spacer[b-rtvlbhm7cp] {
    flex: 1;
}

.pdc-search[b-rtvlbhm7cp] {
    position: relative;
    max-width: 360px;
    flex: 1;
    min-width: 220px;
}

.pdc-search > i[b-rtvlbhm7cp] {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--sedna-text-tertiary);
    font-size: 0.9rem;
    pointer-events: none;
}

.pdc-search input[b-rtvlbhm7cp] {
    width: 100%;
    height: var(--sedna-control-height-md);
    padding: 0 12px 0 32px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-bg-subtle);
    border-radius: var(--sedna-radius-input);
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text);
    font-family: inherit;
    outline: none;
}

.pdc-search input[b-rtvlbhm7cp]::placeholder {
    color: var(--sedna-text-tertiary);
}

.pdc-search input:focus[b-rtvlbhm7cp] {
    background: var(--sedna-surface);
    border-color: var(--sedna-primary);
    box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
}

.pdc-seg[b-rtvlbhm7cp] {
    display: flex;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input);
    padding: 3px;
    gap: 2px;
    background: var(--sedna-bg-subtle);
    height: var(--sedna-control-height-md);
    align-items: center;
}

.pdc-seg-btn[b-rtvlbhm7cp] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: var(--sedna-text-sm);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-secondary);
    padding: 0 12px;
    height: 100%;
    border-radius: var(--sedna-radius-sm);
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

.pdc-seg-btn:hover[b-rtvlbhm7cp] {
    color: var(--sedna-text);
}

.pdc-seg-btn.active[b-rtvlbhm7cp] {
    background: var(--sedna-surface);
    color: var(--sedna-primary);
    box-shadow: var(--sedna-shadow-sm);
}

.pdc-seg-btn .dot[b-rtvlbhm7cp] {
    font-size: 0.8rem;
    line-height: 1;
}

.pdc-seg-btn .dot.eco[b-rtvlbhm7cp] {
    color: var(--sedna-warning-600);
}

.pdc-seg-btn .dot.patr[b-rtvlbhm7cp] {
    color: var(--sedna-primary);
}

/* ---------------- Panel (card con header) ---------------- */
.pdc-panel[b-rtvlbhm7cp] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg);
    overflow: hidden;
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.pdc-panel-head[b-rtvlbhm7cp] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-3);
    padding: var(--sedna-space-3) var(--sedna-space-4);
    border-bottom: 1px solid var(--sedna-divider);
    flex: none;
}

.pdc-panel-head h2[b-rtvlbhm7cp] {
    margin: 0;
    font-size: var(--sedna-text-base);
    font-weight: var(--sedna-font-semibold);
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
}

.pdc-panel-head h2 i[b-rtvlbhm7cp] {
    color: var(--sedna-text-tertiary);
    font-size: 1rem;
}

.pdc-panel-head .ph-actions[b-rtvlbhm7cp] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
}

.pdc-count-pill[b-rtvlbhm7cp] {
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-tertiary);
    background: var(--sedna-surface-hover);
    padding: 1px 8px;
    border-radius: var(--sedna-radius-full);
    white-space: nowrap;
}

.pdc-ghost-btn[b-rtvlbhm7cp] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: var(--sedna-control-height-sm);
    min-width: var(--sedna-control-height-sm);
    padding: 0 8px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-input);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-secondary);
    cursor: pointer;
    white-space: nowrap;
}

.pdc-ghost-btn:hover[b-rtvlbhm7cp] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text);
}

.pdc-ghost-btn:disabled[b-rtvlbhm7cp] {
    opacity: 0.5;
    cursor: default;
}

/* ---------------- Data grid (.dg) ---------------- */
.pdc-dg-wrap[b-rtvlbhm7cp] {
    width: 100%;
    overflow: auto;
    flex: 1 1 auto;
    min-height: 0;
    /* La barra di scorrimento comparendo con i dati restringeva l'area (la pagina "saltava"
       da stretta a larga a fine caricamento): lo spazio si riserva sempre. */
    scrollbar-gutter: stable;
}

table.pdc-dg[b-rtvlbhm7cp] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: var(--sedna-text-sm);
}

.pdc-dg thead th[b-rtvlbhm7cp] {
    text-align: left;
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    background: var(--sedna-bg-subtle);
    padding: 9px 14px;
    white-space: nowrap;
    border-bottom: 1px solid var(--sedna-border);
    position: sticky;
    top: 0;
    z-index: 2;
}

.pdc-dg th.ctr[b-rtvlbhm7cp], .pdc-dg td.ctr[b-rtvlbhm7cp] { text-align: center; }

.pdc-dg tbody tr[b-rtvlbhm7cp] {
    height: var(--sedna-control-height-lg, 40px);
}

.pdc-dg tbody tr + tr td[b-rtvlbhm7cp] {
    border-top: 1px solid var(--sedna-border-light);
}

.pdc-dg tbody td[b-rtvlbhm7cp] {
    padding: 6px 14px;
    vertical-align: middle;
    background: var(--sedna-surface);
}

.pdc-dg tbody tr:hover td[b-rtvlbhm7cp] {
    background: var(--sedna-bg-subtle);
}

.pdc-dg tbody tr.is-disabled td[b-rtvlbhm7cp] {
    opacity: 0.62;
}

.pdc-dg .code[b-rtvlbhm7cp] {
    font-family: var(--sedna-font-mono);
    font-size: var(--sedna-text-sm);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text);
    white-space: nowrap;
}

.pdc-dg .desc-main[b-rtvlbhm7cp] {
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text);
}

.pdc-dg .muted[b-rtvlbhm7cp] {
    color: var(--sedna-text-tertiary);
}

.pdc-dg .sigla[b-rtvlbhm7cp] {
    font-family: var(--sedna-font-mono);
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface-hover);
    padding: 1px 6px;
    border-radius: var(--sedna-radius-sm);
}

/* colonna azioni sticky a destra */
.pdc-dg th.act[b-rtvlbhm7cp], .pdc-dg td.act[b-rtvlbhm7cp] {
    width: 96px;
    text-align: right;
    position: sticky;
    right: 0;
}

.pdc-dg td.act[b-rtvlbhm7cp] {
    background: var(--sedna-surface);
    box-shadow: -8px 0 8px -8px rgba(16, 24, 40, 0.08);
}

.pdc-dg thead th.act[b-rtvlbhm7cp] {
    background: var(--sedna-bg-subtle);
    z-index: 3;
}

.pdc-dg tbody tr:hover td.act[b-rtvlbhm7cp] {
    background: var(--sedna-bg-subtle);
}

.act-row[b-rtvlbhm7cp] {
    display: inline-flex;
    gap: 3px;
    justify-content: flex-end;
}

.pdc-iact[b-rtvlbhm7cp] {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border: none;
    background: transparent;
    border-radius: 6px;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    font-size: 0.9rem;
    padding: 0;
}

.pdc-iact:hover[b-rtvlbhm7cp] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text);
}

.pdc-iact.del:hover[b-rtvlbhm7cp] {
    background: var(--sedna-state-error-bg);
    color: var(--sedna-error-700);
}

.pdc-iact.info:hover[b-rtvlbhm7cp] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

/* ---------------- Badge categoria / conteggio / stato ---------------- */
.pdc-cat[b-rtvlbhm7cp] {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    white-space: nowrap;
}

.pdc-cat.eco[b-rtvlbhm7cp] {
    background: var(--sedna-state-warning-bg);
    color: var(--sedna-warning-700);
}

.pdc-cat.patr[b-rtvlbhm7cp] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

.pdc-cat.tipo[b-rtvlbhm7cp] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
}

.pdc-cat.inherited[b-rtvlbhm7cp] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
    border: 1px dashed var(--sedna-border-strong);
}

.pdc-countbadge[b-rtvlbhm7cp] {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
    white-space: nowrap;
}

.pdc-sez-txt[b-rtvlbhm7cp] {
    color: var(--sedna-text-secondary);
    font-size: var(--sedna-text-sm);
    white-space: nowrap;
}

.pdc-stato[b-rtvlbhm7cp] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    white-space: nowrap;
}

.pdc-stato.on[b-rtvlbhm7cp] {
    background: var(--sedna-state-success-bg);
    color: var(--sedna-success-700);
}

.pdc-stato.off[b-rtvlbhm7cp] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-tertiary);
}

.pdc-dash[b-rtvlbhm7cp] {
    color: var(--sedna-text-tertiary);
    font-family: var(--sedna-font-mono);
}

/* ---------------- Empty state ---------------- */
.pdc-empty-box[b-rtvlbhm7cp] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 7px;
    padding: 48px 24px;
}

.pdc-empty-box .ico[b-rtvlbhm7cp] {
    width: 56px;
    height: 56px;
    border-radius: 14px;
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-tertiary);
    display: grid;
    place-items: center;
    font-size: 1.5rem;
    margin-bottom: 4px;
}

.pdc-empty-box h3[b-rtvlbhm7cp] {
    margin: 0;
    font-size: 1rem;
    font-weight: var(--sedna-font-semibold);
}

.pdc-empty-box p[b-rtvlbhm7cp] {
    margin: 0;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-tertiary);
    max-width: 320px;
    line-height: 1.5;
}

@media (max-width: 1200px) {
    .pdc-list[b-rtvlbhm7cp] {
        padding: 1rem;
    }
}

@media (min-width: 1600px) {
    .pdc-list[b-rtvlbhm7cp] {
        max-width: 1800px;
    }
}
/* /Pages/Contabilita/PianoDeiConti/MastriContabiliList.razor.rz.scp.css */
/* ===========================================================================
   Piano dei Conti — anagrafica (design "pdc"): toolbar + .panel + tabella .dg
   Layout a piena altezza: header/subnav/toolbar fissi, la panel scrolla dentro.
   Tutto su token --sedna-*. Blocco condiviso con Mastri/Conti.
   =========================================================================== */

/* Root a viewport fisso dal guscio globale .sedna-page (sedna.page.css):
   height calc(100dvh - 1rem) + overflow. Toolbar/subnav/panel gestiscono
   l'inset entro il box centrato, quindi azzero il padding-inline del guscio. */
.pdc-list[b-d4l86v3rgf] {
    display: flex;
    flex-direction: column;
    padding-bottom: 1.25rem;
    max-width: 1600px;
    margin: 0 auto;
}

[b-d4l86v3rgf] .pdc-subnav {
    flex: none;
}

/* ---------------- Toolbar ---------------- */
.pdc-toolbar[b-d4l86v3rgf] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-3);
    flex-wrap: wrap;
    margin-bottom: var(--sedna-space-4);
    flex: none;
}

.list-error-banner[b-d4l86v3rgf] {
    flex: none;
}

.pdc-toolbar-spacer[b-d4l86v3rgf] {
    flex: 1;
}

.pdc-search[b-d4l86v3rgf] {
    position: relative;
    max-width: 360px;
    flex: 1;
    min-width: 220px;
}

.pdc-search > i[b-d4l86v3rgf] {
    position: absolute;
    left: 11px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--sedna-text-tertiary);
    font-size: 0.9rem;
    pointer-events: none;
}

.pdc-search input[b-d4l86v3rgf] {
    width: 100%;
    height: var(--sedna-control-height-md);
    padding: 0 12px 0 32px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-bg-subtle);
    border-radius: var(--sedna-radius-input);
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text);
    font-family: inherit;
    outline: none;
}

.pdc-search input[b-d4l86v3rgf]::placeholder {
    color: var(--sedna-text-tertiary);
}

.pdc-search input:focus[b-d4l86v3rgf] {
    background: var(--sedna-surface);
    border-color: var(--sedna-primary);
    box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
}

.pdc-seg[b-d4l86v3rgf] {
    display: flex;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input);
    padding: 3px;
    gap: 2px;
    background: var(--sedna-bg-subtle);
    height: var(--sedna-control-height-md);
    align-items: center;
}

.pdc-seg-btn[b-d4l86v3rgf] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: var(--sedna-text-sm);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-secondary);
    padding: 0 12px;
    height: 100%;
    border-radius: var(--sedna-radius-sm);
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

.pdc-seg-btn:hover[b-d4l86v3rgf] {
    color: var(--sedna-text);
}

.pdc-seg-btn.active[b-d4l86v3rgf] {
    background: var(--sedna-surface);
    color: var(--sedna-primary);
    box-shadow: var(--sedna-shadow-sm);
}

.pdc-seg-btn .dot[b-d4l86v3rgf] {
    font-size: 0.8rem;
    line-height: 1;
}

.pdc-seg-btn .dot.eco[b-d4l86v3rgf] {
    color: var(--sedna-warning-600);
}

.pdc-seg-btn .dot.patr[b-d4l86v3rgf] {
    color: var(--sedna-primary);
}

/* ---------------- Panel (card con header) ---------------- */
.pdc-panel[b-d4l86v3rgf] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg);
    overflow: hidden;
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.pdc-panel-head[b-d4l86v3rgf] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-3);
    padding: var(--sedna-space-3) var(--sedna-space-4);
    border-bottom: 1px solid var(--sedna-divider);
    flex: none;
}

.pdc-panel-head h2[b-d4l86v3rgf] {
    margin: 0;
    font-size: var(--sedna-text-base);
    font-weight: var(--sedna-font-semibold);
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
}

.pdc-panel-head h2 i[b-d4l86v3rgf] {
    color: var(--sedna-text-tertiary);
    font-size: 1rem;
}

.pdc-panel-head .ph-actions[b-d4l86v3rgf] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
}

.pdc-count-pill[b-d4l86v3rgf] {
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-tertiary);
    background: var(--sedna-surface-hover);
    padding: 1px 8px;
    border-radius: var(--sedna-radius-full);
    white-space: nowrap;
}

.pdc-ghost-btn[b-d4l86v3rgf] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: var(--sedna-control-height-sm);
    min-width: var(--sedna-control-height-sm);
    padding: 0 8px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-input);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-secondary);
    cursor: pointer;
    white-space: nowrap;
}

.pdc-ghost-btn:hover[b-d4l86v3rgf] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text);
}

.pdc-ghost-btn:disabled[b-d4l86v3rgf] {
    opacity: 0.5;
    cursor: default;
}

/* ---------------- Data grid (.dg) ---------------- */
.pdc-dg-wrap[b-d4l86v3rgf] {
    width: 100%;
    overflow: auto;
    flex: 1 1 auto;
    min-height: 0;
    /* La barra di scorrimento comparendo con i dati restringeva l'area (la pagina "saltava"
       da stretta a larga a fine caricamento): lo spazio si riserva sempre. */
    scrollbar-gutter: stable;
}

table.pdc-dg[b-d4l86v3rgf] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: var(--sedna-text-sm);
}

.pdc-dg thead th[b-d4l86v3rgf] {
    text-align: left;
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    background: var(--sedna-bg-subtle);
    padding: 9px 14px;
    white-space: nowrap;
    border-bottom: 1px solid var(--sedna-border);
    position: sticky;
    top: 0;
    z-index: 2;
}

.pdc-dg th.ctr[b-d4l86v3rgf], .pdc-dg td.ctr[b-d4l86v3rgf] { text-align: center; }

.pdc-dg tbody tr[b-d4l86v3rgf] {
    height: var(--sedna-control-height-lg, 40px);
}

.pdc-dg tbody tr + tr td[b-d4l86v3rgf] {
    border-top: 1px solid var(--sedna-border-light);
}

.pdc-dg tbody td[b-d4l86v3rgf] {
    padding: 6px 14px;
    vertical-align: middle;
    background: var(--sedna-surface);
}

.pdc-dg tbody tr:hover td[b-d4l86v3rgf] {
    background: var(--sedna-bg-subtle);
}

.pdc-dg tbody tr.is-disabled td[b-d4l86v3rgf] {
    opacity: 0.62;
}

.pdc-dg .code[b-d4l86v3rgf] {
    font-family: var(--sedna-font-mono);
    font-size: var(--sedna-text-sm);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text);
    white-space: nowrap;
}

.pdc-dg .desc-main[b-d4l86v3rgf] {
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text);
}

.pdc-dg .muted[b-d4l86v3rgf] {
    color: var(--sedna-text-tertiary);
}

.pdc-dg .sigla[b-d4l86v3rgf] {
    font-family: var(--sedna-font-mono);
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface-hover);
    padding: 1px 6px;
    border-radius: var(--sedna-radius-sm);
}

/* colonna azioni sticky a destra */
.pdc-dg th.act[b-d4l86v3rgf], .pdc-dg td.act[b-d4l86v3rgf] {
    width: 96px;
    text-align: right;
    position: sticky;
    right: 0;
}

.pdc-dg td.act[b-d4l86v3rgf] {
    background: var(--sedna-surface);
    box-shadow: -8px 0 8px -8px rgba(16, 24, 40, 0.08);
}

.pdc-dg thead th.act[b-d4l86v3rgf] {
    background: var(--sedna-bg-subtle);
    z-index: 3;
}

.pdc-dg tbody tr:hover td.act[b-d4l86v3rgf] {
    background: var(--sedna-bg-subtle);
}

.act-row[b-d4l86v3rgf] {
    display: inline-flex;
    gap: 3px;
    justify-content: flex-end;
}

.pdc-iact[b-d4l86v3rgf] {
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border: none;
    background: transparent;
    border-radius: 6px;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    font-size: 0.9rem;
    padding: 0;
}

.pdc-iact:hover[b-d4l86v3rgf] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text);
}

.pdc-iact.del:hover[b-d4l86v3rgf] {
    background: var(--sedna-state-error-bg);
    color: var(--sedna-error-700);
}

.pdc-iact.info:hover[b-d4l86v3rgf] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

/* ---------------- Badge categoria / conteggio / stato ---------------- */
.pdc-cat[b-d4l86v3rgf] {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    white-space: nowrap;
}

.pdc-cat.eco[b-d4l86v3rgf] {
    background: var(--sedna-state-warning-bg);
    color: var(--sedna-warning-700);
}

.pdc-cat.patr[b-d4l86v3rgf] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

.pdc-cat.tipo[b-d4l86v3rgf] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
}

.pdc-cat.inherited[b-d4l86v3rgf] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
    border: 1px dashed var(--sedna-border-strong);
}

.pdc-countbadge[b-d4l86v3rgf] {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
    white-space: nowrap;
}

.pdc-sez-txt[b-d4l86v3rgf] {
    color: var(--sedna-text-secondary);
    font-size: var(--sedna-text-sm);
    white-space: nowrap;
}

.pdc-stato[b-d4l86v3rgf] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    white-space: nowrap;
}

.pdc-stato.on[b-d4l86v3rgf] {
    background: var(--sedna-state-success-bg);
    color: var(--sedna-success-700);
}

.pdc-stato.off[b-d4l86v3rgf] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-tertiary);
}

.pdc-dash[b-d4l86v3rgf] {
    color: var(--sedna-text-tertiary);
    font-family: var(--sedna-font-mono);
}

/* ---------------- Empty state ---------------- */
.pdc-empty-box[b-d4l86v3rgf] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 7px;
    padding: 48px 24px;
}

.pdc-empty-box .ico[b-d4l86v3rgf] {
    width: 56px;
    height: 56px;
    border-radius: 14px;
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-tertiary);
    display: grid;
    place-items: center;
    font-size: 1.5rem;
    margin-bottom: 4px;
}

.pdc-empty-box h3[b-d4l86v3rgf] {
    margin: 0;
    font-size: 1rem;
    font-weight: var(--sedna-font-semibold);
}

.pdc-empty-box p[b-d4l86v3rgf] {
    margin: 0;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-tertiary);
    max-width: 320px;
    line-height: 1.5;
}

@media (max-width: 1200px) {
    .pdc-list[b-d4l86v3rgf] {
        padding: 1rem;
    }
}

@media (min-width: 1600px) {
    .pdc-list[b-d4l86v3rgf] {
        max-width: 1800px;
    }
}
/* /Pages/Contabilita/PianoDeiConti/PianoContiSubnav.razor.rz.scp.css */
/* Sub-nav a tab del modulo Piano dei Conti.
   Token: --sedna-* (vedi sedna.tokens.css). Niente colori hardcoded. */

.pdc-subnav[b-srh4iwey93] {
    display: flex;
    align-items: stretch;
    gap: 2px;
    margin-bottom: var(--sedna-space-4);
    border-bottom: 1px solid var(--sedna-border);
}

.pdc-subtab[b-srh4iwey93] {
    display: inline-flex;
    align-items: center;
    gap: var(--sedna-space-2);
    padding: var(--sedna-space-2) var(--sedna-space-3) calc(var(--sedna-space-3) - 2px);
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: var(--sedna-text-sm);
    font-weight: var(--sedna-font-medium);
    color: var(--sedna-text-secondary);
    border-bottom: 2px solid transparent;
    white-space: nowrap;
    transition: color var(--sedna-transition-fast), border-color var(--sedna-transition-fast);
}

.pdc-subtab i[b-srh4iwey93] {
    font-size: 1rem;
}

.pdc-subtab:hover[b-srh4iwey93] {
    color: var(--sedna-text);
}

.pdc-subtab.active[b-srh4iwey93] {
    color: var(--sedna-primary);
    font-weight: var(--sedna-font-semibold);
    border-bottom-color: var(--sedna-primary);
}

.pdc-pill[b-srh4iwey93] {
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-tertiary);
    background: var(--sedna-surface-hover);
    padding: 0 7px;
    border-radius: var(--sedna-radius-full);
    line-height: 17px;
}

.pdc-subtab.active .pdc-pill[b-srh4iwey93] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}
/* /Pages/Contabilita/PianoDeiConti/PianoDeiContiPage.razor.rz.scp.css */
/* Piano dei Conti — vista albero (design "pdc").
   Tabella .tree gerarchica costruita client-side. Tutto su token --sedna-*. */

/* ---------------- Toolbar (filtro + legenda) ---------------- */
.pdc-toolbar[b-1su9bw33mx] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-3);
    flex-wrap: wrap;
    margin-bottom: var(--sedna-space-4);
}

.pdc-toolbar-spacer[b-1su9bw33mx] {
    flex: 1;
}

.pdc-seg[b-1su9bw33mx] {
    display: flex;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input);
    padding: 3px;
    gap: 2px;
    background: var(--sedna-bg-subtle);
    height: var(--sedna-control-height-md);
    align-items: center;
}

.pdc-seg-btn[b-1su9bw33mx] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: var(--sedna-text-sm);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-secondary);
    padding: 0 12px;
    height: 100%;
    border-radius: var(--sedna-radius-sm);
    display: inline-flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
}

.pdc-seg-btn:hover[b-1su9bw33mx] {
    color: var(--sedna-text);
}

.pdc-seg-btn.active[b-1su9bw33mx] {
    background: var(--sedna-surface);
    color: var(--sedna-primary);
    box-shadow: var(--sedna-shadow-sm);
}

.pdc-seg-btn .dot[b-1su9bw33mx] {
    font-size: 0.8rem;
    line-height: 1;
}

.pdc-seg-btn .dot.eco[b-1su9bw33mx] {
    color: var(--sedna-warning-600);
}

.pdc-seg-btn .dot.patr[b-1su9bw33mx] {
    color: var(--sedna-primary);
}

/* ---------------- Legenda ---------------- */
.pdc-legend[b-1su9bw33mx] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
}

.pdc-badge[b-1su9bw33mx] {
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    padding: 2px 9px;
    border-radius: var(--sedna-radius-full);
    line-height: 1.5;
}

.pdc-badge.eco[b-1su9bw33mx] {
    background: var(--sedna-state-warning-bg);
    color: var(--sedna-warning-700);
}

.pdc-badge.patr[b-1su9bw33mx] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

/* ---------------- Panel (card con header) ---------------- */
.pdc-panel[b-1su9bw33mx] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg);
    overflow: hidden;
}

.pdc-panel-head[b-1su9bw33mx] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-3);
    padding: var(--sedna-space-3) var(--sedna-space-4);
    border-bottom: 1px solid var(--sedna-divider);
}

.pdc-panel-head h2[b-1su9bw33mx] {
    margin: 0;
    font-size: var(--sedna-text-base);
    font-weight: var(--sedna-font-semibold);
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
}

.pdc-panel-head h2 i[b-1su9bw33mx] {
    color: var(--sedna-text-tertiary);
    font-size: 1rem;
}

.pdc-panel-head .ph-actions[b-1su9bw33mx] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
}

.pdc-count-pill[b-1su9bw33mx] {
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-tertiary);
    background: var(--sedna-surface-hover);
    padding: 1px 8px;
    border-radius: var(--sedna-radius-full);
    white-space: nowrap;
}

.pdc-count-pill.readonly[b-1su9bw33mx] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.pdc-ghost-btn[b-1su9bw33mx] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: var(--sedna-control-height-sm);
    padding: 0 10px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-input);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text-secondary);
    cursor: pointer;
    white-space: nowrap;
}

.pdc-ghost-btn:hover[b-1su9bw33mx] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text);
}

/* ---------------- TreeList (vista albero) ---------------- */
.pdc-tree-wrap[b-1su9bw33mx] {
    width: 100%;
    overflow: auto;
    max-height: calc(100vh - 300px - var(--sedna-shell-dy, 0px));
    min-height: 200px;
}

table.pdc-tree[b-1su9bw33mx] {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: var(--sedna-text-sm);
}

.pdc-tree thead th[b-1su9bw33mx] {
    text-align: left;
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    background: var(--sedna-bg-subtle);
    padding: 10px 14px;
    white-space: nowrap;
    border-bottom: 1px solid var(--sedna-border);
    position: sticky;
    top: 0;
    z-index: 2;
}

.pdc-tree thead th.col-code[b-1su9bw33mx] { width: 300px; }
.pdc-tree thead th.col-cat[b-1su9bw33mx] { width: 150px; }
.pdc-tree thead th.col-sez[b-1su9bw33mx] { width: 130px; }
.pdc-tree thead th.col-stato[b-1su9bw33mx] { width: 130px; }

.pdc-tree tbody tr[b-1su9bw33mx] {
    height: 38px;
}

.pdc-tree tbody tr + tr td[b-1su9bw33mx] {
    border-top: 1px solid var(--sedna-border-light);
}

.pdc-tree tbody td[b-1su9bw33mx] {
    padding: 4px 14px;
    vertical-align: middle;
    background: var(--sedna-surface);
}

.pdc-tree tbody tr:hover td[b-1su9bw33mx] {
    background: var(--sedna-bg-subtle);
}

.pdc-tree tbody tr.lvl0 td[b-1su9bw33mx] {
    background: var(--sedna-bg-subtle);
}

.pdc-tree tbody tr.lvl0:hover td[b-1su9bw33mx] {
    background: var(--sedna-surface-hover);
}

.pdc-tree tbody tr.lvl0 .pdc-t-desc[b-1su9bw33mx] {
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text);
}

.pdc-tree tbody tr.lvl1 .pdc-t-desc[b-1su9bw33mx] {
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text);
}

.pdc-tree tbody tr.lvl2 .pdc-t-desc[b-1su9bw33mx] {
    color: var(--sedna-text-secondary);
}

.pdc-tree tbody tr.is-disabled td[b-1su9bw33mx] {
    opacity: 0.62;
}

.pdc-twig[b-1su9bw33mx] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
    white-space: nowrap;
}

.pdc-exp[b-1su9bw33mx] {
    width: 22px;
    height: 22px;
    flex: none;
    display: grid;
    place-items: center;
    border: none;
    background: transparent;
    border-radius: 5px;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    font-size: 0.8rem;
    padding: 0;
}

.pdc-exp:hover[b-1su9bw33mx] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text);
}

.pdc-exp.leaf[b-1su9bw33mx] {
    visibility: hidden;
}

.pdc-exp i[b-1su9bw33mx] {
    transition: transform var(--sedna-transition-fast);
}

.pdc-exp.open i[b-1su9bw33mx] {
    transform: rotate(90deg);
}

.pdc-lvl-chip[b-1su9bw33mx] {
    width: 20px;
    height: 20px;
    flex: none;
    border-radius: var(--sedna-radius-sm);
    display: grid;
    place-items: center;
    font-family: var(--sedna-font-mono);
    font-size: 0.625rem;
    font-weight: var(--sedna-font-bold);
}

.pdc-lvl-chip.g[b-1su9bw33mx] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

.pdc-lvl-chip.m[b-1su9bw33mx] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
}

.pdc-lvl-chip.c[b-1su9bw33mx] {
    background: transparent;
    color: var(--sedna-text-tertiary);
    border: 1px solid var(--sedna-border);
}

.pdc-t-code[b-1su9bw33mx] {
    font-family: var(--sedna-font-mono);
    font-size: var(--sedna-text-sm);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-text);
}

.pdc-tree tbody tr.lvl2 .pdc-t-code[b-1su9bw33mx] {
    font-weight: var(--sedna-font-medium);
    color: var(--sedna-text-secondary);
}

/* ---------------- Badge categoria / sezione / stato ---------------- */
.pdc-cat[b-1su9bw33mx] {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    white-space: nowrap;
}

.pdc-cat.eco[b-1su9bw33mx] {
    background: var(--sedna-state-warning-bg);
    color: var(--sedna-warning-700);
}

.pdc-cat.patr[b-1su9bw33mx] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

.pdc-sez-txt[b-1su9bw33mx] {
    color: var(--sedna-text-secondary);
    font-size: var(--sedna-text-sm);
    white-space: nowrap;
}

.pdc-stato[b-1su9bw33mx] {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 9px;
    border-radius: var(--sedna-radius-full);
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-semibold);
    white-space: nowrap;
}

.pdc-stato.on[b-1su9bw33mx] {
    background: var(--sedna-state-success-bg);
    color: var(--sedna-success-700);
}

.pdc-stato.off[b-1su9bw33mx] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-tertiary);
}

.pdc-dash[b-1su9bw33mx] {
    color: var(--sedna-text-tertiary);
    font-family: var(--sedna-font-mono);
}

/* ---------------- Empty state ---------------- */
.pdc-empty-box[b-1su9bw33mx] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 7px;
    padding: 48px 24px;
}

.pdc-empty-box .ico[b-1su9bw33mx] {
    width: 56px;
    height: 56px;
    border-radius: 14px;
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-tertiary);
    display: grid;
    place-items: center;
    font-size: 1.5rem;
    margin-bottom: 4px;
}

.pdc-empty-box h3[b-1su9bw33mx] {
    margin: 0;
    font-size: 1rem;
    font-weight: var(--sedna-font-semibold);
}

.pdc-empty-box p[b-1su9bw33mx] {
    margin: 0;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-tertiary);
    max-width: 320px;
    line-height: 1.5;
}

/* ---------------- Quick-access cards ---------------- */
.pdc-qa-grid[b-1su9bw33mx] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--sedna-space-4);
    margin-top: var(--sedna-space-4);
}

.pdc-qa-card[b-1su9bw33mx] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-4);
    text-align: left;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg);
    padding: var(--sedna-space-4);
    cursor: pointer;
    color: var(--sedna-text);
    width: 100%;
    transition: box-shadow var(--sedna-transition-fast), border-color var(--sedna-transition-fast);
}

.pdc-qa-card:hover[b-1su9bw33mx] {
    box-shadow: var(--sedna-shadow-sm);
    border-color: var(--sedna-border-strong);
}

.pdc-qa-ico[b-1su9bw33mx] {
    width: 42px;
    height: 42px;
    border-radius: var(--sedna-radius-md);
    flex: none;
    background: var(--sedna-surface-hover);
    color: var(--sedna-text-secondary);
    display: grid;
    place-items: center;
    font-size: 1.2rem;
}

.pdc-qa-card:hover .pdc-qa-ico[b-1su9bw33mx] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

.pdc-qa-text[b-1su9bw33mx] {
    flex: 1;
    min-width: 0;
}

.pdc-qa-text .t[b-1su9bw33mx] {
    font-weight: var(--sedna-font-semibold);
    font-size: var(--sedna-text-base);
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
}

.pdc-qa-text .d[b-1su9bw33mx] {
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-tertiary);
    margin-top: 2px;
}

.pdc-qa-card .chev[b-1su9bw33mx] {
    color: var(--sedna-text-tertiary);
    font-size: 1rem;
    flex: none;
    transition: transform var(--sedna-transition-fast), color var(--sedna-transition-fast);
}

.pdc-qa-card:hover .chev[b-1su9bw33mx] {
    color: var(--sedna-primary);
    transform: translateX(2px);
}

@media (max-width: 900px) {
    .pdc-qa-grid[b-1su9bw33mx] {
        grid-template-columns: 1fr;
    }
}
/* /Pages/Contabilita/PrimaNota/PrimaNotaAllegato.razor.rz.scp.css */
/* Allegato registrazione: chip in header + popup upload/apri */
.pna-body[b-2a9eqy3e3n] { display: flex; flex-direction: column; gap: 12px; }

.pna-file[b-2a9eqy3e3n] {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 10px 12px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .375rem);
    background: var(--sedna-surface-variant);
}
.pna-file > i[b-2a9eqy3e3n] { color: var(--sedna-primary); font-size: 1.05rem; flex: none; }
.pna-file__name[b-2a9eqy3e3n] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--sedna-text);
}
.pna-open[b-2a9eqy3e3n] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 28px;
    padding: 0 11px;
    flex: none;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-border-strong);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
}
.pna-open:hover:not(:disabled)[b-2a9eqy3e3n] { border-color: var(--sedna-primary); color: var(--sedna-primary); }
.pna-open:disabled[b-2a9eqy3e3n] { opacity: .6; cursor: default; }

.pna-empty[b-2a9eqy3e3n] { margin: 0; font-size: 0.8125rem; color: var(--sedna-text-tertiary); }

.pna-upload[b-2a9eqy3e3n] {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 38px;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px dashed var(--sedna-border-strong);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.8125rem;
    font-weight: 600;
    cursor: pointer;
    overflow: hidden;
}
.pna-upload:hover[b-2a9eqy3e3n] { border-color: var(--sedna-primary); color: var(--sedna-primary); }
.pna-upload.busy[b-2a9eqy3e3n] { opacity: .6; cursor: default; }
.pna-upload[b-2a9eqy3e3n]  input[type="file"] {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
}

.pna-hint[b-2a9eqy3e3n] { margin: -6px 0 0; font-size: 0.6875rem; color: var(--sedna-text-tertiary); }
.pna-err[b-2a9eqy3e3n] { margin: 0; display: flex; align-items: center; gap: 7px; font-size: 0.8125rem; color: var(--sedna-error-700); }

/* Trigger in toolbar griglia: graffetta colorata quando l'allegato esiste. */
.pna-trigger--on i[b-2a9eqy3e3n] {
    color: var(--sedna-primary);
}
/* /Pages/Contabilita/PrimaNota/PrimaNotaAssegnoModal.razor.rz.scp.css */
.pnam-cap[b-i9lmoojsom] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-bottom: 0.7rem;
    padding: 0.5rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
    line-height: 1.35;
}

.pnam-cap--info[b-i9lmoojsom] {
    background: var(--sedna-surface-variant);
    color: var(--sedna-text);
}

.pnam-cap i[b-i9lmoojsom] { flex: 0 0 auto; margin-top: 0.1rem; color: var(--sedna-info-600); }

/* ═══ Le scelte a pulsante ═══
   Due (o pochi) pulsanti con la frase intera invece di una tendina di sigle: «R» ed «E»
   vanno ricordate a memoria e sono due cose opposte. */
.pnam-scelte[b-i9lmoojsom] { display: flex; gap: 0.4rem; }
.pnam-scelte--wrap[b-i9lmoojsom] { flex-wrap: wrap; }

.pnam-scelta[b-i9lmoojsom] {
    display: inline-flex;
    gap: 0.35rem;
    align-items: center;
    padding: 0.3rem 0.6rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    cursor: pointer;
    font-size: 0.78rem;
}

.pnam-scelta:hover:not(:disabled)[b-i9lmoojsom] { border-color: var(--sedna-primary); }
.pnam-scelta:disabled[b-i9lmoojsom] { cursor: not-allowed; opacity: 0.6; }

.pnam-scelta--on[b-i9lmoojsom] {
    border-color: var(--sedna-primary);
    background: color-mix(in srgb, var(--sedna-primary) 10%, transparent);
    color: var(--sedna-primary);
}

.pnam-sogg[b-i9lmoojsom] {
    padding: 0.3rem 0;
    font-size: 0.82rem;
}

/* «usa il prossimo libero»: una proposta, non un automatismo. Chi ha in mano un libretto
   in disordine deve poter scrivere il numero che ha davvero sotto gli occhi. */
.pnam-prop[b-i9lmoojsom] {
    display: inline-flex;
    gap: 0.3rem;
    align-items: center;
    margin-top: 0.25rem;
    padding: 0;
    border: 0;
    background: none;
    color: var(--sedna-primary);
    cursor: pointer;
    font-size: 0.72rem;
}

.pnam-prop:hover[b-i9lmoojsom] { text-decoration: underline; }

.pnam-msg[b-i9lmoojsom] {
    display: flex;
    gap: 0.4rem;
    align-items: flex-start;
    margin-top: 0.6rem;
    padding: 0.45rem 0.7rem;
    border-radius: var(--sedna-radius-md);
    font-size: 0.78rem;
}

.pnam-msg--no[b-i9lmoojsom] {
    border: 1px solid var(--sedna-error-700);
    color: var(--sedna-error-700);
}

.pnam .mono[b-i9lmoojsom] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }
/* /Pages/Contabilita/PrimaNota/PrimaNotaAssegnoStampaBar.razor.rz.scp.css */
/* La fascia «stampa l'assegno»: informativa, non un allarme — il pagamento e' andato bene.
   Verde tenue, non giallo: il giallo dice «guarda che c'e' qualcosa che non va». */
.pnasb[b-30nhvvexhj] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    margin-bottom: 0.5rem;
    padding: 0.5rem 0.7rem;
    border: 1px solid var(--sedna-success-600);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-success-50);
    color: var(--sedna-text);
    font-size: 0.8rem;
}

.pnasb > i[b-30nhvvexhj] {
    flex: 0 0 auto;
    margin-top: 0.2rem;
    color: var(--sedna-success-600);
}

.pnasb__l[b-30nhvvexhj] {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    gap: 0.3rem;
    min-width: 0;
}

.pnasb__r[b-30nhvvexhj] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

.pnasb__t[b-30nhvvexhj] { flex: 1 1 auto; }
.pnasb__c[b-30nhvvexhj] { color: var(--sedna-text-secondary); }

.pnasb__x[b-30nhvvexhj] {
    flex: 0 0 auto;
    padding: 0.1rem 0.25rem;
    border: 0;
    background: none;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
}

.pnasb__x:hover[b-30nhvvexhj] { color: var(--sedna-text); }

.pnasb .mono[b-30nhvvexhj] { font-family: var(--sedna-font-mono, ui-monospace, Consolas, monospace); }
/* /Pages/Contabilita/PrimaNota/PrimaNotaContiModal.razor.rz.scp.css */
/* ═══ Modal Correzione conti (scrittura generata/derivata) ═══ */

.pn-conti__hint[b-66vgeiivde] {
    margin: 0 0 0.75rem 0;
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary, #616161);
    line-height: 1.5;
}

.pn-conti__warn[b-66vgeiivde] {
    display: inline-block;
    margin-top: 0.375rem;
    color: var(--sedna-warning-700, #b45309);
}

.pn-conti__table[b-66vgeiivde] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.pn-conti__table thead th[b-66vgeiivde] {
    text-align: left;
    font-weight: 600;
    color: var(--sedna-text-secondary, #616161);
    border-bottom: 1px solid var(--sedna-border, #e5e7eb);
    padding: 0.375rem 0.5rem;
    white-space: nowrap;
}

.pn-conti__th--num[b-66vgeiivde] {
    text-align: right;
}

.pn-conti__table tbody td[b-66vgeiivde] {
    padding: 0.375rem 0.5rem;
    border-bottom: 1px solid var(--sedna-border-light);
    vertical-align: middle;
}

.pn-conti__td--num[b-66vgeiivde] {
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.pn-conti__sez[b-66vgeiivde] {
    display: inline-block;
    min-width: 3.25rem;
    text-align: center;
    padding: 0.05rem 0.4rem;
    border-radius: var(--sedna-radius-base, 0.375rem);
    font-weight: 600;
    font-size: 0.75rem;
}

.pn-conti__sez--dare[b-66vgeiivde] {
    background: var(--sedna-info-50, #eff6ff);
    color: var(--sedna-info-700, #1d4ed8);
}

.pn-conti__sez--avere[b-66vgeiivde] {
    background: var(--sedna-success-50, #ecfdf5);
    color: var(--sedna-success-700, #047857);
}

.pn-conti__error[b-66vgeiivde] {
    margin-top: 0.75rem;
}

/* La descrizione accanto al conto: si legge, non si modifica — tinta secondaria e una
   riga sola. Il troncamento è voluto: un nome di conto lungo non deve allargare la
   finestra né mandare a capo la riga che si sta correggendo (il testo intero è nel
   tooltip). */
.pn-conti__td--desc[b-66vgeiivde] {
    color: var(--sedna-text-secondary, #616161);
    max-width: 22rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Pages/Contabilita/PrimaNota/PrimaNotaDatiAggiuntivi.razor.rz.scp.css */
/* ═══ Dati Aggiuntivi — layout (impeccable/layout, D38) ═══
   Griglia 12-col content-aware + caption forzata SOPRA il campo
   (stesso pattern della testata D11) per evitare i troncamenti
   delle label negli input stretti. */

.pn-extra__grid[b-xdl40d6jdy] {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: var(--sedna-space-3, 0.625rem);
    align-items: start;
}

.pn-extra__cell[b-xdl40d6jdy] {
    min-width: 0; /* consente lo shrink dentro la griglia senza overflow */
}

.pn-extra__cell--4[b-xdl40d6jdy] { grid-column: span 4; }
.pn-extra__cell--8[b-xdl40d6jdy] { grid-column: span 8; }
.pn-extra__cell--12[b-xdl40d6jdy] { grid-column: span 12; }

/* ─── Caption SOPRA il campo (DxFormLayout 25.2 default = caption a sinistra,
   che su colonne strette taglia la prima lettera della label). Forzando
   flex-direction column ogni input usa la larghezza piena della cella. ─── */
.pn-extra__cell[b-xdl40d6jdy]  .dxbl-fl-item-horizontal {
    flex-direction: column !important;
    align-items: stretch !important;
}

.pn-extra__cell[b-xdl40d6jdy]  .dxbl-fl-item-horizontal > .dxbl-fl-cpt,
.pn-extra__cell[b-xdl40d6jdy]  .dxbl-fl-item-horizontal > label.dxbl-fl-cpt {
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    text-align: left !important;
    padding-right: 0 !important;
    margin-bottom: 2px !important;
    white-space: nowrap;
    font-size: 0.6875rem;
    color: var(--sedna-text-secondary, #64748b);
}

.pn-extra__cell[b-xdl40d6jdy]  .dxbl-fl-item-horizontal > .dxbl-fl-ctrl {
    width: 100% !important;
    flex: 1 1 auto !important;
}

/* I campi solo-checkbox (Regime IVA) non hanno bisogno della riga caption:
   l'etichetta è inline al checkbox. Nascondo la caption vuota e allineo. */
.pn-extra__cell[b-xdl40d6jdy]  .dxbl-fl-item-horizontal:has(.dxbl-checkbox) > .dxbl-fl-cpt {
    display: none !important;
}

.pn-extra__cell[b-xdl40d6jdy]  .dxbl-fl-item-horizontal:has(.dxbl-checkbox) {
    justify-content: center;
}

/* Input numerici comodi anche a piena densità */
.pn-extra__cell[b-xdl40d6jdy]  .dxbl-spin-edit,
.pn-extra__cell[b-xdl40d6jdy]  .dxbl-text-edit {
    min-width: 0;
}

/* ─── Responsive: la griglia si comprime per gradi (no fluid type, solo
   struttura, coerente col register product). ─── */
@media (max-width: 1200px) {
    .pn-extra__cell--8[b-xdl40d6jdy] { grid-column: span 12; }
}

@media (max-width: 900px) {
    .pn-extra__cell--4[b-xdl40d6jdy] { grid-column: span 6; }
}

@media (max-width: 640px) {
    .pn-extra__cell--4[b-xdl40d6jdy],
    .pn-extra__cell--8[b-xdl40d6jdy],
    .pn-extra__cell--12[b-xdl40d6jdy] { grid-column: span 12; }
}

/* ── Allegato: upload + apertura ─────────────────────────────── */
.pn-allegato[b-xdl40d6jdy] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    min-height: 34px;
}
.pn-allegato__hint[b-xdl40d6jdy] { font-size: 0.75rem; color: var(--sedna-text-tertiary); }
.pn-allegato__upload[b-xdl40d6jdy] {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 30px;
    padding: 0 12px;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px dashed var(--sedna-border-strong);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
    overflow: hidden;
}
.pn-allegato__upload:hover[b-xdl40d6jdy] { border-color: var(--sedna-primary); color: var(--sedna-primary); }
.pn-allegato__upload.busy[b-xdl40d6jdy] { opacity: .6; cursor: default; }
.pn-allegato__upload[b-xdl40d6jdy]  input[type="file"] {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
}
.pn-allegato__open[b-xdl40d6jdy] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 30px;
    padding: 0 12px;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-border-strong);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
}
.pn-allegato__open:hover:not(:disabled)[b-xdl40d6jdy] { border-color: var(--sedna-primary); color: var(--sedna-primary); }
.pn-allegato__open:disabled[b-xdl40d6jdy] { opacity: .6; cursor: default; }
.pn-allegato__err[b-xdl40d6jdy] { display: inline-flex; align-items: center; gap: 6px; font-size: 0.75rem; color: var(--sedna-error-700); }
/* /Pages/Contabilita/PrimaNota/PrimaNotaGrigliaRighe.razor.rz.scp.css */
/* ═══ Griglia righe contabili — stili (estratti da PrimaNotaPage, D38) ═══
   Migrazione 1:1 delle classi pn-* della griglia. I colori hex sono
   pre-esistenti (mantenuti per restare behaviour-preserving). */

/* --- Sezione chip D/A --- */
.pn-sezione-chip[b-8gwv4yu9rs] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 4px;
    border: 1px solid transparent;
    font-size: 0.6875rem;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    padding: 0;
    transition: transform 0.12s ease, box-shadow 0.12s ease;
}

.pn-sezione-chip:hover:not(.pn-sezione-chip--ro)[b-8gwv4yu9rs] {
    transform: scale(1.08);
    box-shadow: 0 1px 3px color-mix(in srgb, black 15%, transparent);
}

.pn-sezione-chip:focus-visible[b-8gwv4yu9rs] {
    outline: 2px solid var(--sedna-primary);
    outline-offset: 1px;
}

.pn-sezione-chip--d[b-8gwv4yu9rs] {
    background: var(--sedna-dare-bg);
    color: var(--sedna-dare);
    border-color: var(--sedna-dare-border);
}

.pn-sezione-chip--a[b-8gwv4yu9rs] {
    background: var(--sedna-avere-bg);
    color: var(--sedna-avere);
    border-color: var(--sedna-avere-border);
}

.pn-sezione-chip--ro[b-8gwv4yu9rs] {
    cursor: default;
}

/* --- Cella importo editabile (SpinEdit Dare/Avere) ---
   NB: lo SpinEdit Sedna rende l'input come .dxbl-text-edit-input (non .dxbl-spin-edit-input),
   quindi il text-align:right va su quel selettore, altrimenti il valore resta a sinistra. */
[b-8gwv4yu9rs] .pn-cell-amount-edit.dxbl-text-edit,
[b-8gwv4yu9rs] .pn-cell-amount-edit .dxbl-text-edit {
    width: 100%;
}

[b-8gwv4yu9rs] .pn-cell-amount-edit .dxbl-text-edit-input {
    text-align: right;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.75rem;
    padding-right: 0.25rem;
}

.pn-cell-amount-empty[b-8gwv4yu9rs] {
    color: var(--sedna-text-tertiary);
    font-size: 0.75rem;
}

/* --- Display Dare/Avere read-only --- */
.pn-cell-amount-display[b-8gwv4yu9rs] {
    display: block;
    width: 100%;
    text-align: right;   /* importi sempre allineati a destra nella cella */
    font-variant-numeric: tabular-nums;
    font-weight: 650;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.75rem;
    letter-spacing: -0.01em;
}

.pn-cell-amount-display--dare[b-8gwv4yu9rs] {
    color: var(--sedna-dare);
}

.pn-cell-amount-display--avere[b-8gwv4yu9rs] {
    color: var(--sedna-avere);
}

/* --- Celle calcolate read-only (Imponibile, IVA): importi a destra --- */
.pn-cell-readonly[b-8gwv4yu9rs] {
    display: block;
    width: 100%;
    text-align: right;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.75rem;
    color: var(--sedna-text);
}

/* La stessa classe è usata anche per "Descrizione Conto" (testo): qui NON
   va allineata a destra né resa tabular/bold → questo modificatore la riporta a sinistra. */
.pn-cell-readonly--text[b-8gwv4yu9rs] {
    text-align: left;
    font-variant-numeric: normal;
    font-weight: 400;
    font-family: var(--sedna-font-sans, inherit);
    font-size: 0.8125rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* --- Bottone ripartizioni CDC (azione discreta per riga, solo view) --- */
.pn-ripartizioni-btn[b-8gwv4yu9rs] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    padding: 0;
    border: none;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    background: transparent;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    font-size: 0.875rem;
    transition: background-color 0.12s ease, color 0.12s ease;
}

.pn-ripartizioni-btn:hover[b-8gwv4yu9rs] {
    background: color-mix(in srgb, var(--sedna-primary) 10%, transparent);
    color: var(--sedna-primary);
}

.pn-ripartizioni-btn:focus-visible[b-8gwv4yu9rs] {
    outline: 2px solid var(--sedna-primary);
    outline-offset: 1px;
}

/* --- Indicatore quadratura ---
   QUADRATO: card bianca con bordo azzurro del tema, badge Dare/Avere a destra.
   SBILANCIATO: card ROSSA lampeggiante con la scritta "Sbilancio" centrata su
   tutta la larghezza (i badge Dare/Avere restano a destra). */
.pn-quadratura[b-8gwv4yu9rs] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 1.25rem;
    padding: 0.375rem 0.75rem;
    border-radius: var(--sedna-radius-md, 0.375rem);
    font-size: 0.8125rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    background: var(--sedna-surface, #fff);
    border: 1px solid color-mix(in srgb, var(--sedna-primary) 40%, transparent);
    color: var(--sedna-text);
}

.pn-quadratura--error[b-8gwv4yu9rs] {
    background: var(--sedna-error-50, #fef2f2);
    border-color: color-mix(in srgb, var(--sedna-error-500) 55%, transparent);
}

/* Banner "Sbilancio" centrato sull'INTERA card (assoluto: non sposta i badge). */
.pn-quadratura__sbilancio[b-8gwv4yu9rs] {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    align-items: center;
    gap: 0.375rem;
    font-weight: 700;
    color: var(--sedna-error-700, #b91c1c);
    white-space: nowrap;
    pointer-events: none;
}

    .pn-quadratura__sbilancio i[b-8gwv4yu9rs] { font-size: 1rem; }

.pn-quadratura__item[b-8gwv4yu9rs] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
}

.pn-quadratura__item i[b-8gwv4yu9rs] {
    font-size: 1rem;
}

/* Voci Dare/Avere del footer: etichetta+icona+IMPORTO dentro un BADGE colorato
   (giallo per Dare, verde per Avere); l'importo resta in nero grassetto. */
.pn-quadratura__badge[b-8gwv4yu9rs] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 2px 10px;
    border-radius: 999px;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.pn-quadratura__badge i[b-8gwv4yu9rs] { font-size: 0.75rem; }

.pn-quadratura__badge--dare[b-8gwv4yu9rs] {
    background: var(--sedna-dare-bg);
    color: var(--sedna-dare);
    border: 1px solid var(--sedna-dare-border);
}

.pn-quadratura__badge--avere[b-8gwv4yu9rs] {
    background: var(--sedna-avere-bg);
    color: var(--sedna-avere);
    border: 1px solid var(--sedna-avere-border);
}

.pn-quadratura__tot[b-8gwv4yu9rs] {
    color: var(--sedna-text);
    font-weight: 700;
    /* Dentro il badge (etichetta uppercase 11px): l'importo resta più grande
       e leggibile, con un filo d'aria dopo l'etichetta. */
    font-size: 0.8125rem;
    margin-left: 2px;
    font-variant-numeric: tabular-nums;
    text-transform: none;
    letter-spacing: 0;
}

/* ── Popover codice conto: hover/focus sul codice mostra codice + descrizione.
   Puro CSS, appare sopra la cella senza essere tagliato (position absolute + z-index). ── */
.pn-conto-pop[b-8gwv4yu9rs] {
    position: relative;
    display: inline-flex;
    cursor: default;
}

.pn-conto-pop__card[b-8gwv4yu9rs] {
    position: absolute;
    left: 0;
    top: calc(100% + 4px);
    z-index: 40;
    display: none;
    flex-direction: column;
    gap: 2px;
    min-width: 200px;
    max-width: 320px;
    padding: 6px 10px;
    background: var(--sedna-surface, #fff);
    border: 1px solid var(--sedna-border-strong, #cfd4dc);
    border-radius: var(--sedna-radius-md, 0.375rem);
    box-shadow: 0 6px 20px rgba(16, 24, 40, 0.16);
    white-space: normal;
    pointer-events: none;
}

.pn-conto-pop:hover .pn-conto-pop__card[b-8gwv4yu9rs],
.pn-conto-pop:focus-within .pn-conto-pop__card[b-8gwv4yu9rs] {
    display: flex;
}

.pn-conto-pop__code[b-8gwv4yu9rs] {
    font-family: var(--sedna-font-mono, ui-monospace, monospace);
    font-weight: 700;
    font-size: 0.8125rem;
    color: var(--sedna-primary);
}

.pn-conto-pop__desc[b-8gwv4yu9rs] {
    font-size: 0.8125rem;
    color: var(--sedna-text);
    line-height: 1.3;
}

/* Wrapper del lookup Conto in inserimento/modifica: blocco a piena larghezza (così
   il lookup non si restringe) e superficie su cui l'attributo title mostra la
   tooltip "Codice - Descrizione" al passaggio del mouse, come in visualizzazione. */
.pn-conto-editcell[b-8gwv4yu9rs] {
    display: block;
    width: 100%;
}

/* Badge Tipo4 (tipo documento di riferimento, es. ANC/VFI): compatto, non ruba larghezza. */
.pn-tipo4-badge[b-8gwv4yu9rs] {
    display: inline-block;
    padding: 0 5px;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border);
    color: var(--sedna-text-secondary);
    font-family: var(--sedna-font-mono, "JetBrains Mono", monospace);
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    line-height: 1.5;
    white-space: nowrap;
}

/* --- Note (vista): UNA riga con ellipsis, mai a capo --- una nota lunga non
   deve gonfiare l'altezza della riga; il testo pieno sta nella title. */
.pn-cell-note[b-8gwv4yu9rs] {
    display: block;
    max-width: 280px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ═══ La cella dell'assegno (AS-C3) ═══════════════════════════════════════════
   Numero, pastiglia di stato e il comando, in una cella da 118px. */
.pn-ass[b-8gwv4yu9rs] {
    display: inline-flex;
    gap: 0.25rem;
    align-items: center;
    max-width: 100%;
}

.pn-ass__n[b-8gwv4yu9rs] {
    overflow: hidden;
    font-size: 0.75rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Un puntino colorato, non una parola: in una cella da 118px la parola mangerebbe
   il numero, che è la cosa che si cerca. Lo stato per esteso sta nel title. */
.pn-ass__s[b-8gwv4yu9rs] {
    display: inline-block;
    flex: 0 0 auto;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--sedna-text-tertiary);
}

.pn-ass__s--portafoglio[b-8gwv4yu9rs] { background: var(--sedna-primary); }
.pn-ass__s--versato[b-8gwv4yu9rs] { background: var(--sedna-success-600); }
.pn-ass__s--insoluto[b-8gwv4yu9rs] { background: var(--sedna-error-700); }
.pn-ass__s--restituito[b-8gwv4yu9rs] { background: var(--sedna-warning-700); }
.pn-ass__s--emesso[b-8gwv4yu9rs] { background: var(--sedna-info-600); }

.pn-ass__b[b-8gwv4yu9rs] {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    padding: 0;
    border: none;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    background: transparent;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    font-size: 0.875rem;
    transition: background-color 0.12s ease, color 0.12s ease;
}

/* Sul portafoglio e sui conti banca l'assegno ci si aspetta: il comando si vede
   senza cercarlo. Altrove resta un comando come gli altri. */
.pn-ass__b--proposto[b-8gwv4yu9rs] { color: var(--sedna-primary); }

.pn-ass__b:hover:not(:disabled)[b-8gwv4yu9rs] {
    background: color-mix(in srgb, var(--sedna-primary) 10%, transparent);
    color: var(--sedna-primary);
}

.pn-ass__b:disabled[b-8gwv4yu9rs] { color: var(--sedna-text-tertiary); cursor: not-allowed; opacity: 0.45; }

.pn-ass__b:focus-visible[b-8gwv4yu9rs] { outline: 2px solid var(--sedna-primary); outline-offset: 1px; }
/* /Pages/Contabilita/PrimaNota/PrimaNotaList.razor.rz.scp.css */
/* ═══ Prima Nota List ═══ */

/* Layout pagina: guscio globale .sedna-page / .sedna-page__body--host
   (sedna.page.css). Qui restano solo la griglia e gli stili specifici. */
.sedna-datagrid-wrapper[b-dls5nyvqwd] {
    /* flex/overflow dal guscio; resta solo il respiro sotto */
    margin-bottom: 0.5rem;
}

/* DxGrid riempie il wrapper: header fisso, corpo scrollabile (V e H) entro la larghezza */
[b-dls5nyvqwd] .dx-datagrid,
[b-dls5nyvqwd] .dxbl-grid {
    height: 100%;
    width: 100%;
    max-width: 100%;
}

[b-dls5nyvqwd] .dx-datagrid-headers,
[b-dls5nyvqwd] .dx-datagrid-rowsview {
    max-height: none;
}

[b-dls5nyvqwd] .dx-datagrid-rowsview {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* Cella stato registrazione: badge icon-only compatte (Sospeso / Extra /
   Attesa NC). I colori arrivano dai token semantici via SednaStatusBadge —
   nessun hex hardcoded nel consumer (color discipline, vedi design system). */
.pn-status-cell[b-dls5nyvqwd] {
    display: flex;
    gap: var(--sedna-space-1, 0.25rem);
    align-items: center;
    justify-content: center;
    flex-wrap: nowrap;
}

/* Badge icon-only: niente padding-laterale extra del testo, resta quadrata */
.pn-status-cell .sedna-status-badge[b-dls5nyvqwd] {
    min-width: 0;
}

/* ========================================
   TOOLBAR — searchbox custom (pattern lista Clienti)
   Search + filtri data nella stessa riga della toolbar della griglia.
   ======================================== */
.toolbar[b-dls5nyvqwd] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.toolbar .search[b-dls5nyvqwd] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa.
       Ridotta (era 340px): a 340px spingeva i filtri data e le date andavano
       in ellipsis sui laptop 14". */
    position: relative;
    flex: none;
    width: 260px;
}

    .toolbar .search i[b-dls5nyvqwd] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-dls5nyvqwd] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-dls5nyvqwd]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-dls5nyvqwd] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 900px) {
    .toolbar[b-dls5nyvqwd] {
        flex-wrap: wrap;
    }

    .toolbar .search[b-dls5nyvqwd] {
        width: 100%;
    }
}

/* Filtri data dentro la toolbar della griglia (accanto alla searchbox): riga compatta inline. */
.pn-filtri-toolbar[b-dls5nyvqwd] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: var(--sedna-space-2, .5rem);
}

.pn-filtri-toolbar__lbl[b-dls5nyvqwd] {
    flex: 0 0 auto;
    font-size: var(--sedna-text-xs, .75rem);
    color: var(--sedna-text-secondary);
}

/* I controlli DevExpress ricevono la CssClass sul loro root, che NON ha lo scope della
   CSS scoped → servono ::deep + larghezze esplicite, altrimenti prendono width:100% e
   si impilano (venivano poi clippati dalla toolbar a una riga sola). */
[b-dls5nyvqwd] .pn-filtri-toolbar__combo {
    flex: 0 0 175px;
    width: 175px;
}

[b-dls5nyvqwd] .pn-filtri-toolbar__date {
    flex: 0 0 122px;
    width: 122px;
}
/* /Pages/Contabilita/PrimaNota/PrimaNotaPage.razor.rz.scp.css */
/* PrimaNotaPage — il CSS della testata e migrato in PrimaNotaTestata.razor.css (D38).
   La pagina ora compone i sotto-componenti; le classi di pagina (entity-*, pz-*)
   sono globali in app.css. */

/* Qui c'erano quattro override ::deep su .sedna-page-header (margine, accessory del
   titolo, allineamento della title-section, icona): regolavano l'header della GENERAZIONE
   PRECEDENTE, SednaPageHeader. Questa pagina è passata a SednaPageHead (.sedna-page__head)
   e quel markup non viene più reso, quindi erano selettori che non colpivano più niente.
   Rimossi il 03/08 insieme al componente. Se serve stringere la testata, si agisce sulle
   classi nuove — vedi docs/CANONE-BARRA-AZIONI.md. */

/* ─── Accessory dell'header: N. Reg. (prossimo) + chip Sospeso accanto al titolo ─── */
.pz-head-numreg[b-nhttlo5viu] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.25rem;
    padding: 0.1rem 0.5rem;
    border: 1px dashed var(--sedna-border-strong);
    border-radius: var(--sedna-radius-md, 0.375rem);
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.pz-head-numreg strong[b-nhttlo5viu] {
    font-size: 0.9375rem;
    font-weight: 700;
    color: var(--sedna-text);
}

/* Badge numero registrazione: pillola compatta appiccicata subito dopo "Reg. N.".
   Font ~ pari al titolo e padding verticale minimo → altezza ≈ riga del titolo, così
   con align-items:center resta allineato naturalmente senza toccare la header. */
/* Blocco titolo: Reg. N. (badge + chip) sulla PRIMA riga, sottotitolo
   (Dettaglio/Modifica) sulla SECONDA riga sotto. */
.pz-head-titleblock[b-nhttlo5viu] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    align-items: flex-start;
}

.pz-head-titleblock__line[b-nhttlo5viu] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2, 0.5rem);
    flex-wrap: wrap;
}

.pz-head-titleblock__sub[b-nhttlo5viu] {
    font-size: var(--sedna-text-sm, 0.875rem);
    color: var(--sedna-text-secondary);
    line-height: 1.2;
}

/* Badge "automatico": piccolo e sottile, occupa la stessa riga del sottotitolo
   (nessuna altezza in piu'). Tono d'accento tenue, non un allarme. */
.pz-head-auto[b-nhttlo5viu] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 0.6875rem;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.02em;
    color: var(--sedna-primary);
}
.pz-head-auto i[b-nhttlo5viu] { font-size: 0.75rem; }

/* Badge "Reg. N. <numero>": sfondo TRASPARENTE, bordo azzurro, testo nero in grassetto;
   etichetta e numero alla STESSA dimensione. */
.pz-head-numbadge[b-nhttlo5viu] {
    display: inline-flex;
    align-items: center;
    padding: 0.05rem 0.5rem;
    border-radius: 0.375rem;
    background: transparent;
    border: 1px solid var(--sedna-info-500, #38bdf8);
    color: #000;
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1.3;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    letter-spacing: 0.01em;
}

/* Chip Sospeso/Allegato: OFF = ghost discreto, ON = ambra (warning).
   ::deep perche' il chip Allegato e' reso dal componente figlio
   PrimaNotaAllegato (scope diverso): senza, resta col CSS di default. */
[b-nhttlo5viu] .pz-head-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.2;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background 0.12s ease, color 0.12s ease, border-color 0.12s ease;
}

[b-nhttlo5viu] .pz-head-chip i {
    font-size: 0.9rem;
}

[b-nhttlo5viu] .pz-head-chip--off {
    background: transparent;
    color: var(--sedna-text-tertiary);
    border-color: var(--sedna-border);
}

[b-nhttlo5viu] .pz-head-chip--off:hover {
    color: var(--sedna-text-secondary);
    border-color: var(--sedna-border-strong);
}

[b-nhttlo5viu] .pz-head-chip--on {
    background: var(--sedna-warning-50, color-mix(in srgb, var(--sedna-warning) 12%, transparent));
    color: var(--sedna-warning-700, var(--sedna-warning));
    border-color: color-mix(in srgb, var(--sedna-warning) 45%, transparent);
}

/* Registrazione generata (da documento / derivata RC-split): sola lettura */
[b-nhttlo5viu] .pz-head-chip--doc {
    background: var(--sedna-primary-subtle, color-mix(in srgb, var(--sedna-primary) 10%, transparent));
    color: var(--sedna-primary);
    border-color: color-mix(in srgb, var(--sedna-primary) 35%, transparent);
    cursor: default;
}

/* Zona prima nota: meno padding in alto (default app.css 0.75rem). */
.pz-layout[b-nhttlo5viu] {
    padding-top: 0.25rem;
}

/* ─── Layout a tutta altezza: la testata resta compatta in alto e la GRIGLIA delle
   righe riempie lo spazio verticale rimanente, scrollando INTERNAMENTE (header e
   footer/quadratura fissi) — niente scroll dell'intera pagina. Così, in base alla
   dimensione dello schermo, si vedono più righe possibili senza scroll di pagina.
   Tutto scoped a prima nota via .entity-page--pn (non tocca le altre pagine). ─── */
.entity-page--pn[b-nhttlo5viu] {
    flex: 1;
    min-height: 0;
}

.entity-page--pn .pz-layout[b-nhttlo5viu] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

/* La CARD righe riempie lo spazio verticale: griglia (header colonne + righe che
   scrollano) sopra, footer Dare/Avere FISSO in fondo. La card è l'elemento elastico. */
.entity-page--pn[b-nhttlo5viu]  .pn-righe-card {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

/* La griglia è l'area elastica che scrolla al suo interno (sopra il footer fisso). */
.entity-page--pn[b-nhttlo5viu]  .pn-righe-card .pn-righe-grid {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

.entity-page--pn[b-nhttlo5viu]  .pn-righe-card .sedna-editable-grid__wrapper {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
}

/* Header colonne ancorato in alto durante lo scroll del corpo (sticky). Il footer
   Dare/Avere NON è più sticky: è un elemento separato, footer reale della card. */
.entity-page--pn[b-nhttlo5viu]  .pn-righe-card .sedna-editable-grid__table thead th {
    position: sticky;
    top: 0;
    z-index: 3;
    background: var(--sedna-surface);
}

/* ─── CARD righe = fulcro operativo della pagina ───────────────────────
   Superficie netta, bordo marcato ed elevazione sottile: "sale" come area primaria
   rispetto alle fasce muted della testata. Scoped a prima nota via ::deep. ─── */
.pz-layout[b-nhttlo5viu]  .pn-righe-card {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border-strong);
    border-radius: var(--sedna-radius-lg, 0.5rem);
    box-shadow: var(--sedna-shadow-sm);
    padding: 0.5rem 0.625rem 0.625rem;
}

/* Footer Dare/Avere: banda FISSA in fondo alla card (non scrolla con le righe). */
.pz-layout[b-nhttlo5viu]  .pn-righe-card__footer {
    flex: 0 0 auto;
    margin-top: 0.5rem;
}

/* Densità del corpo griglia (righe/font più alti della densità compact di default).
   Variabili --seg-* SOLO per questa griglia (le altre liste restano compatte). */
.pz-layout[b-nhttlo5viu]  .pn-righe-grid {
    --seg-cell-font: 0.875rem;    /* 14px — testo celle leggibile */
    --seg-header-font: 0.8125rem; /* 13px — header */
    --seg-cell-pad-y: 0.1875rem;  /* 3px — righe compatte, più righe a video */
    --seg-input-h: 1.75rem;       /* 28px — input/lookup */
    --sedna-input-h: 1.75rem;
}

/* ── Popup riepilogo scadenze post-save ─────────────────────── */
.pn-riepilogo-scadenze[b-nhttlo5viu] { width: 100%; border-collapse: collapse; font-size: 0.8125rem; }
.pn-riepilogo-scadenze th[b-nhttlo5viu] {
    text-align: left; font-size: 0.65rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
    color: var(--sedna-text-tertiary); padding: 6px 10px; border-bottom: 1px solid var(--sedna-border);
}
.pn-riepilogo-scadenze td[b-nhttlo5viu] { padding: 7px 10px; border-bottom: 1px solid var(--sedna-border-light); }
.pn-riepilogo-scadenze th.num[b-nhttlo5viu], .pn-riepilogo-scadenze td.num[b-nhttlo5viu] {
    text-align: right; font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums;
}
.pn-riepilogo-scadenze tfoot td[b-nhttlo5viu] { border-bottom: none; border-top: 1px solid var(--sedna-border-strong); }

/* Modalità di pagamento EDITABILE in testa alla modal scadenze modifica/conferma. */
/* Riferimento documento (sola lettura) in testa alla modal scadenze. */
.pn-scad-docref[b-nhttlo5viu] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-bottom: 0.6rem;
    padding: 6px 10px;
    background: var(--sedna-surface-subtle, rgba(0,0,0,.03));
    border: 1px solid var(--sedna-border-light);
    border-radius: var(--sedna-radius-base, .375rem);
}
.pn-scad-docref__k[b-nhttlo5viu] {
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--sedna-text-tertiary);
    font-weight: 600;
}
.pn-scad-docref__v[b-nhttlo5viu] {
    font-weight: 600;
    color: var(--sedna-text);
}

.pn-scad-modpag[b-nhttlo5viu] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-bottom: 0.6rem;
}
.pn-scad-modpag__label[b-nhttlo5viu] {
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--sedna-text-tertiary);
    font-weight: 600;
}
.pn-scad-modpag__lookup[b-nhttlo5viu] {
    max-width: 360px;
}

/* Modalità di pagamento in testa al riepilogo scadenze. */
.pn-riepilogo-modpag[b-nhttlo5viu] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    margin-bottom: 0.5rem;
    padding: 0.375rem 0.5rem;
    background: var(--sedna-bg-subtle);
    border-radius: var(--sedna-radius-md, 0.375rem);
}
.pn-riepilogo-modpag__label[b-nhttlo5viu] {
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--sedna-text-tertiary);
    font-weight: 600;
}
.pn-riepilogo-modpag__val[b-nhttlo5viu] { font-size: 0.875rem; color: var(--sedna-text); }

/* Footer della griglia scadenze editabile: somma vs totale documento, allineata a destra. */
.pn-scad-footer[b-nhttlo5viu] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    width: 100%;
    flex: 1 1 100%;
    padding: 0.25rem 0.25rem 0.25rem 0;
}
.pn-scad-sum[b-nhttlo5viu] {
    font-size: 0.875rem;
    font-weight: 600;
    padding: .2rem .6rem;
    border-radius: var(--sedna-radius-md, .375rem);
    white-space: nowrap;
}
.pn-scad-sum.is-ok[b-nhttlo5viu] { color: var(--sedna-success-700); background: var(--sedna-state-success-bg); }
.pn-scad-sum.is-bad[b-nhttlo5viu] { color: var(--sedna-error-700); background: var(--sedna-state-error-bg); }

/* Griglia scadenze: table-layout fixed così le larghezze delle colonne sono rispettate
   (niente stiramento della "#" né scroll orizzontale inutile). La colonna Tipo pagamento
   (senza width) assorbe lo spazio residuo. */
[b-nhttlo5viu] .pn-scadenze-edit-grid .sedna-editable-grid__table {
    table-layout: fixed;
    width: 100%;
}


/* ═══ NON C'E' NIENTE DA APRIRE ═══
   Il riquadro che prende il posto della maschera quando la registrazione non c'e' (404) o non
   si e' potuta leggere. ⚠️ Sta al posto del contenuto, non sopra: un overlay su una maschera
   vuota direbbe «aspetta», e qui non c'e' niente da aspettare.
   Stessa forma dell'empty-state delle scadenze — e' la stessa cosa e si deve riconoscere.
   ⚠️ Token veri (`--sedna-text`, `--sedna-surface-variant`, …): quelli col segmento `-color-`
   non esistono e `var()` prende il ripiego in silenzio, lasciando il riquadro fuori dal tema. */
.pn-vuoto[b-nhttlo5viu] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 8px;
    padding: 48px 40px;
    margin: 24px auto;
    max-width: 420px;
}
.pn-vuoto .ico[b-nhttlo5viu] {
    width: 60px;
    height: 60px;
    border-radius: 15px;
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-tertiary);
    display: grid;
    place-items: center;
    font-size: 1.7rem;
    margin-bottom: 6px;
}
.pn-vuoto h3[b-nhttlo5viu] {
    margin: 0;
    font-size: 1.0625rem;
    font-weight: 600;
    color: var(--sedna-text);
}
.pn-vuoto p[b-nhttlo5viu] {
    margin: 0 0 8px;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
    line-height: 1.55;
}

/* La registrazione di una DISTINTA PAGAMENTI: non è un interruttore come gli altri chip
   della testata — è un'etichetta che dice cos'è questa registrazione, quindi niente
   puntatore a mano. */
[b-nhttlo5viu] .pz-head-chip--distinta {
    cursor: default;
    background: color-mix(in srgb, var(--sedna-info-600) 14%, transparent);
    border-color: var(--sedna-info-600);
    color: var(--sedna-text);
}
/* /Pages/Contabilita/PrimaNota/PrimaNotaParametriCausaleModal.razor.rz.scp.css */
/* ═══ Modal Parametri Causale ═══ */

.pn-param__hint[b-lglqbhy7my] {
    margin: 0 0 0.75rem 0;
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary, #616161);
}

/* ─── Gruppi a fisarmonica (progressive disclosure via <details> nativo) ─── */
.pn-param__group[b-lglqbhy7my] {
    border: 1px solid var(--sedna-border, #e5e7eb);
    border-radius: var(--sedna-radius-base, 0.375rem);
    margin-bottom: 0.5rem;
    background: var(--sedna-surface, #fff);
}

.pn-param__group:last-of-type[b-lglqbhy7my] {
    margin-bottom: 0;
}

/* Header cliccabile del gruppo. Riga 1: icona · titolo · badge ···· chevron.
   Riga 2: descrizione full-width. */
.pn-param__summary[b-lglqbhy7my] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4375rem;
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    list-style: none;          /* rimuove il triangolo nativo (Firefox) */
    user-select: none;
    border-radius: inherit;
}

.pn-param__summary[b-lglqbhy7my]::-webkit-details-marker {
    display: none;             /* rimuove il triangolo nativo (WebKit/Blink) */
}

.pn-param__summary:hover[b-lglqbhy7my] {
    background: var(--sedna-surface-hover, #f1f5f9);
}

.pn-param__summary:focus-visible[b-lglqbhy7my] {
    outline: 2px solid var(--sedna-primary, #2563eb);
    outline-offset: -2px;
}

.pn-param__summary-icon[b-lglqbhy7my] {
    color: var(--sedna-primary, #2563eb);
    font-size: 0.9375rem;
    flex: 0 0 auto;
}

.pn-param__summary-title[b-lglqbhy7my] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--sedna-text, #1f2937);
}

/* Badge: quante impostazioni sono attive nel gruppo. */
.pn-param__count[b-lglqbhy7my] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.125rem;
    height: 1.125rem;
    padding: 0 0.3125rem;
    border-radius: 999px;
    background: var(--sedna-primary-subtle, #e3f2fd);
    color: var(--sedna-primary-active, #1565c0);
    font-size: 0.6875rem;
    font-weight: 700;
    flex: 0 0 auto;
}

.pn-param__chevron[b-lglqbhy7my] {
    margin-left: auto;         /* spinge il chevron a destra della riga 1 */
    color: var(--sedna-text-tertiary, #757575);
    font-size: 0.75rem;
    transition: transform 0.15s ease;
}

.pn-param__group[open] .pn-param__chevron[b-lglqbhy7my] {
    transform: rotate(180deg);
}

/* Descrizione: seconda riga, full-width sotto il titolo. */
.pn-param__summary-desc[b-lglqbhy7my] {
    flex-basis: 100%;
    margin-top: 0.0625rem;
    font-size: 0.75rem;
    line-height: 1.35;
    color: var(--sedna-text-secondary, #616161);
}

/* Griglia checkbox del gruppo aperto: content-aware, niente colonne vuote. */
.pn-param__grid[b-lglqbhy7my] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 0.25rem 1rem;
    align-items: center;
    padding: 0.375rem 0.75rem 0.625rem;
    border-top: 1px solid var(--sedna-border, #e5e7eb);
}

/* Errore sticky: resta visibile in fondo al corpo, sopra il footer col tasto
   Salva, anche con i gruppi scrollati. */
.pn-param__error[b-lglqbhy7my] {
    position: sticky;
    bottom: 0;
    margin-top: 0.75rem;
    box-shadow: 0 -4px 12px -6px rgba(0, 0, 0, 0.25);
}

/* Dettaglio tecnico sotto il messaggio d'errore amichevole (solo da eccezione). */
.pn-param__error-detail[b-lglqbhy7my] {
    margin-top: 0.25rem;
    font-size: 0.75rem;
    font-family: var(--sedna-font-mono, 'JetBrains Mono', monospace);
    opacity: 0.8;
    word-break: break-word;
}

@media (prefers-reduced-motion: reduce) {
    .pn-param__chevron[b-lglqbhy7my] {
        transition: none;
    }
}
/* /Pages/Contabilita/PrimaNota/PrimaNotaPartiteAperte.razor.rz.scp.css */
/* Pannello Partite aperte (incasso/pagamento) — token --sedna-* */
.pa-panel[b-m2r46rj224] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, 0.75rem);
    background: var(--sedna-surface);
    margin: 0.75rem 0;
    overflow: hidden;
}

.pa-panel .mono[b-m2r46rj224] {
    font-family: var(--sedna-font-mono);
    font-variant-numeric: tabular-nums;
}

.pa-head[b-m2r46rj224] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 14px;
    background: var(--sedna-surface-variant);
    border-bottom: 1px solid var(--sedna-border);
}

.pa-title[b-m2r46rj224] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: var(--sedna-text-sm, 0.875rem);
    font-weight: var(--sedna-font-semibold, 600);
    color: var(--sedna-text);
}

.pa-title i[b-m2r46rj224] { color: var(--sedna-primary); }
.pa-sub[b-m2r46rj224] { font-size: 0.75rem; color: var(--sedna-text-tertiary); }
.pa-sub .mono[b-m2r46rj224] { color: var(--sedna-text-secondary); font-weight: 500; }

.pa-state[b-m2r46rj224] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 14px;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
}

.pa-empty i[b-m2r46rj224] { color: var(--sedna-success-600); }

/* Barra filtri (Non pagati / Pagati / Tutti) — fissa sotto l'header della modal. */
.pa-filters[b-m2r46rj224] { display: flex; align-items: center; gap: 10px; padding: 8px 18px; border-bottom: 1px solid var(--sedna-border); background: var(--sedna-surface); flex: none; }
.pa-filters__seg[b-m2r46rj224] { display: inline-flex; gap: 2px; padding: 2px; background: var(--sedna-surface-variant); border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-base, 0.375rem); }
.pa-filter[b-m2r46rj224] { border: none; background: transparent; padding: 4px 12px; border-radius: var(--sedna-radius-sm, 0.25rem); font-size: 0.8125rem; font-weight: 600; color: var(--sedna-text-secondary); cursor: pointer; font-family: inherit; }
.pa-filter:hover[b-m2r46rj224] { color: var(--sedna-text); }
.pa-filter.is-on[b-m2r46rj224] { background: var(--sedna-surface); color: var(--sedna-primary); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08); }
.pa-filter-empty[b-m2r46rj224] { text-align: center; color: var(--sedna-text-tertiary); font-size: 0.8125rem; padding: 16px 10px; }
.pa-filter-loading[b-m2r46rj224] { display: inline-flex; align-items: center; gap: 6px; font-size: 0.75rem; color: var(--sedna-text-tertiary); }
/* Spunta "saldata" (partita chiusa, sola consultazione) al posto della checkbox. */
.pa-saldata-chk[b-m2r46rj224] { color: var(--sedna-text-tertiary); font-size: 0.95rem; }

/* tabella */
/* overflow visible: la table-wrap NON deve essere scroll-container (overflow-x:auto forzerebbe
   overflow-y:auto, catturando lo scroll verticale e rompendo lo sticky dell'header). La barra
   di scroll unica (verticale + orizzontale) è .pa-modal-body. */
.pa-table-wrap[b-m2r46rj224] { overflow: visible; }
.pa-table[b-m2r46rj224] { width: 100%; border-collapse: collapse; font-size: var(--sedna-text-sm); }
.pa-table thead th[b-m2r46rj224] {
    text-align: left;
    font-size: var(--sedna-text-xs, 0.75rem);
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    padding: 8px 10px;
    background: var(--sedna-surface);
    border-bottom: 1px solid var(--sedna-border-light);
    white-space: nowrap;
    /* Header FISSO durante lo scroll verticale del corpo modal. */
    position: sticky;
    top: 0;
    z-index: 3;
}
.pa-table th.num[b-m2r46rj224], .pa-table td.num[b-m2r46rj224] { text-align: right; }
.pa-table th.c-chk[b-m2r46rj224], .pa-table td.c-chk[b-m2r46rj224] { width: 36px; padding-left: 14px; }
.pa-table th.c-op[b-m2r46rj224], .pa-table td.c-op[b-m2r46rj224] { width: 110px; }
.pa-table th.c-imp[b-m2r46rj224], .pa-table td.c-imp[b-m2r46rj224] { width: 130px; }
.pa-table tbody td[b-m2r46rj224] {
    padding: 6px 10px;
    border-top: 1px solid var(--sedna-border-light);
    color: var(--sedna-text);
    white-space: nowrap;
    vertical-align: middle;
}
.pa-table tbody tr:hover td[b-m2r46rj224] { background: var(--sedna-surface-variant); }
.pa-table tbody tr.sel td[b-m2r46rj224] { background: var(--sedna-primary-subtle); }
.pa-table .bold[b-m2r46rj224] { font-weight: 600; }

/* Piede: totale dei saldi sotto la colonna Saldo. Sticky in basso durante lo scroll. */
.pa-table tfoot td[b-m2r46rj224] {
    padding: 8px 10px;
    border-top: 2px solid var(--sedna-border);
    background: var(--sedna-surface);
    white-space: nowrap;
    position: sticky;
    bottom: 0;
    z-index: 2;
}
.pa-table tfoot td.num[b-m2r46rj224] { text-align: right; }
.pa-foot-saldo[b-m2r46rj224] { font-weight: 700; }

/* Intestazioni RIORDINABILI: cursore move + feedback drag. */
.pa-table th.pa-col-h[b-m2r46rj224] { cursor: grab; user-select: none; }
.pa-table th.pa-col-h:active[b-m2r46rj224] { cursor: grabbing; }
.pa-table th.pa-col-dragging[b-m2r46rj224] { opacity: .5; background: var(--sedna-primary-subtle); }

/* N. Reg. → link alla registrazione. */
.pa-reg-link[b-m2r46rj224] {
    border: none;
    background: none;
    padding: 0;
    color: var(--sedna-primary);
    font: inherit;
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.pa-reg-link:hover[b-m2r46rj224] { color: var(--sedna-primary-hover, var(--sedna-primary)); }

/* Colonna Saldo: sfondo evidenziato per lettura rapida del residuo. */
.pa-table tbody td.pa-saldo-cell[b-m2r46rj224] { background: var(--sedna-warning-50, rgba(234,179,8,.10)); }
.pa-table tbody td.pa-saldo-cell.pa-neg[b-m2r46rj224] { background: var(--sedna-error-50, rgba(185,28,28,.08)); }
.pa-table tbody tr:hover td.pa-saldo-cell[b-m2r46rj224] { background: var(--sedna-warning-100, rgba(234,179,8,.16)); }

.pa-cbx[b-m2r46rj224] { width: 16px; height: 16px; accent-color: var(--sedna-primary); cursor: pointer; }

.pa-sel[b-m2r46rj224] {
    height: 30px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base, 0.375rem);
    padding: 0 8px;
    font-size: 0.8125rem;
    color: var(--sedna-text);
    font-family: inherit;
    width: 100%;
}
.pa-sel:focus[b-m2r46rj224] { outline: none; border-color: var(--sedna-primary); box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }

.pa-imp[b-m2r46rj224] {
    height: 30px;
    width: 100%;
    text-align: right;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base, 0.375rem);
    padding: 0 8px;
    font-size: 0.8125rem;
    color: var(--sedna-text);
}
.pa-imp:focus[b-m2r46rj224] { outline: none; border-color: var(--sedna-primary); box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }
.pa-imp:disabled[b-m2r46rj224] { background: var(--sedna-surface-variant); color: var(--sedna-text-secondary); }

/* footer */
.pa-foot[b-m2r46rj224] {
    display: flex;
    align-items: flex-end;
    gap: 16px;
    flex-wrap: wrap;
    padding: 12px 14px;
    border-top: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
}
.pa-banca[b-m2r46rj224] { display: flex; flex-direction: column; gap: 5px; min-width: 240px; }
.pa-lbl[b-m2r46rj224] { font-size: var(--sedna-text-xs); font-weight: 500; letter-spacing: 0.04em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
.pa-banca-sel[b-m2r46rj224] { min-width: 240px; }

.pa-totsel[b-m2r46rj224] { display: flex; flex-direction: column; gap: 3px; }
.pa-totsel__k[b-m2r46rj224] { font-size: var(--sedna-text-xs); font-weight: 500; letter-spacing: 0.04em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
.pa-totsel__v[b-m2r46rj224] { font-size: 0.9375rem; color: var(--sedna-text); }
.pa-totsel__v .mono[b-m2r46rj224] { font-weight: 700; }

.pa-err[b-m2r46rj224] { display: inline-flex; align-items: center; gap: 6px; font-size: 0.8125rem; color: var(--sedna-error-700); }

.pa-add[b-m2r46rj224] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 34px;
    padding: 0 14px;
    border-radius: var(--sedna-radius-base, 0.375rem);
    border: 1px solid var(--sedna-primary);
    background: var(--sedna-primary);
    color: var(--sedna-on-primary, #fff);
    font-size: var(--sedna-text-sm);
    font-weight: var(--sedna-font-semibold, 600);
    font-family: inherit;
    cursor: pointer;
}
.pa-add:hover:not(:disabled)[b-m2r46rj224] { background: var(--sedna-primary-hover); border-color: var(--sedna-primary-hover); }
.pa-add:disabled[b-m2r46rj224] { opacity: 0.55; cursor: default; }
.pa-add:focus-visible[b-m2r46rj224] { outline: 2px solid var(--sedna-primary); outline-offset: 2px; }

/* Ripartizione: cifra ricevuta da distribuire su più documenti (sotto la griglia).
   Compatto + colori intuitivi: selezionati in blu (quanto applico), rimanenza verde
   (quadra), ambra (resta da assegnare), rosso (ho selezionato più del ricevuto). */
.pa-riparti[b-m2r46rj224] {
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 8px 18px;
    padding: 7px 14px;
    border-top: 1px solid var(--sedna-border-light);
    background: var(--sedna-surface);
}
.pa-riparti__spacer[b-m2r46rj224] { flex: 1 1 auto; }
.pa-riparti__field[b-m2r46rj224] { display: flex; flex-direction: column; gap: 2px; }
.pa-riparti__field--ro[b-m2r46rj224] { align-items: flex-end; text-align: right; }
.pa-riparti__k[b-m2r46rj224] { font-size: 0.6875rem; font-weight: 500; letter-spacing: 0.03em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
.pa-riparti__in[b-m2r46rj224] {
    width: 108px;
    height: 28px;
    padding: 0 8px;
    text-align: right;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base, 0.375rem);
    font-size: 0.8125rem;
    color: var(--sedna-text);
}
.pa-riparti__in:focus[b-m2r46rj224] { outline: none; border-color: var(--sedna-primary); box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }
.pa-riparti__v[b-m2r46rj224] { font-size: 0.875rem; font-weight: 600; color: var(--sedna-text); line-height: 28px; }
.pa-riparti__v--sel[b-m2r46rj224] { color: var(--sedna-primary); }
.pa-riparti__v--empty[b-m2r46rj224] { color: var(--sedna-text-tertiary); font-weight: 500; }
.pa-riparti__v.neg[b-m2r46rj224] { color: var(--sedna-error-700); }
.pa-riparti__v.zero[b-m2r46rj224] { color: var(--sedna-success-700, var(--sedna-success-600)); }
.pa-riparti__v.pos[b-m2r46rj224] { color: var(--sedna-warning-700, #b45309); }

/* ---------- Trigger inline ---------- */
.pa-trigger[b-m2r46rj224] {
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
    margin: 0.75rem 0; padding: 9px 14px;
    border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-base, 0.375rem);
    background: var(--sedna-surface-variant);
}
.pa-trigger__lbl[b-m2r46rj224] { display: inline-flex; align-items: center; gap: 8px; font-size: var(--sedna-text-sm, 0.875rem); font-weight: var(--sedna-font-semibold, 600); color: var(--sedna-text); }
.pa-trigger__lbl i[b-m2r46rj224] { color: var(--sedna-primary); }
.pa-trigger__cnt[b-m2r46rj224] { font-size: 0.8125rem; color: var(--sedna-text-secondary); }
.pa-trigger__cnt .mono[b-m2r46rj224] { font-family: var(--sedna-font-mono); font-weight: 600; color: var(--sedna-text); }
.pa-trigger__empty[b-m2r46rj224] { font-size: 0.8125rem; color: var(--sedna-text-tertiary); display: inline-flex; align-items: center; gap: 6px; }
.pa-trigger__empty i[b-m2r46rj224] { color: var(--sedna-success-600); }
.pa-open-btn[b-m2r46rj224] {
    margin-left: auto; display: inline-flex; align-items: center; gap: 7px;
    height: 32px; padding: 0 13px; border-radius: var(--sedna-radius-base, 0.375rem);
    border: 1px solid var(--sedna-primary); background: var(--sedna-surface); color: var(--sedna-primary);
    font-size: 0.8125rem; font-weight: 600; font-family: inherit; cursor: pointer;
}
.pa-open-btn:hover:not(:disabled)[b-m2r46rj224] { background: var(--sedna-primary-subtle); }
.pa-open-btn:disabled[b-m2r46rj224] { opacity: 0.5; cursor: default; }

/* ---------- Modal ---------- */
/* L'overlay parte dopo la sidebar aperta: così il modal è centrato nell'area contenuto
   (non "appiccicato" al sidemenu) e la sidebar resta visibile/usabile. */
.pa-overlay[b-m2r46rj224] { position: fixed; top: 0; right: 0; bottom: 0; left: var(--sedna-sidebar-width, 16rem); z-index: 1100; background: rgba(16, 24, 40, 0.45); display: flex; align-items: center; justify-content: center; padding: 24px; }
.sedna-theme-dark .pa-overlay[b-m2r46rj224] { background: rgba(0, 0, 0, 0.6); }
.pa-modal[b-m2r46rj224] { width: min(1000px, 100%); max-height: 86vh; display: flex; flex-direction: column; background: var(--sedna-surface); border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-lg); box-shadow: 0 10px 34px rgba(16, 24, 40, 0.22); overflow: hidden; animation: paIn-b-m2r46rj224 160ms cubic-bezier(0.25, 1, 0.5, 1); }
@keyframes paIn-b-m2r46rj224 { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .pa-modal[b-m2r46rj224] { animation: none; } }
.pa-modal-head[b-m2r46rj224] { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--sedna-border); flex: none; }
.pa-modal-ico[b-m2r46rj224] { width: 38px; height: 38px; border-radius: 9px; flex: none; display: grid; place-items: center; background: var(--sedna-primary-subtle); color: var(--sedna-primary); font-size: 1.05rem; }
.pa-modal-titles[b-m2r46rj224] { flex: 1; min-width: 0; }
.pa-modal-head h2[b-m2r46rj224] { margin: 0; font-size: 1.0625rem; font-weight: 600; color: var(--sedna-text); }
.pa-modal-sub[b-m2r46rj224] { font-size: 0.75rem; color: var(--sedna-text-tertiary); margin-top: 1px; }
.pa-modal-x[b-m2r46rj224] { width: 32px; height: 32px; flex: none; display: grid; place-items: center; border: none; background: transparent; border-radius: 6px; color: var(--sedna-text-secondary); cursor: pointer; font-size: 1rem; }
.pa-modal-x:hover[b-m2r46rj224] { background: var(--sedna-surface-variant); color: var(--sedna-text); }
.pa-modal-body[b-m2r46rj224] { flex: 1; min-height: 0; overflow: auto; }
.pa-modal-foot[b-m2r46rj224] { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; padding: 12px 18px; border-top: 1px solid var(--sedna-border); background: var(--sedna-surface-variant); flex: none; }
.pa-modal-foot .pa-cancel[b-m2r46rj224] { margin-left: auto; }
.pa-modal-foot .pa-add[b-m2r46rj224] { margin-left: 8px; }
.pa-cancel[b-m2r46rj224] { height: 34px; padding: 0 14px; border-radius: var(--sedna-radius-base, 0.375rem); border: 1px solid var(--sedna-border); background: var(--sedna-surface); color: var(--sedna-text); font-size: var(--sedna-text-sm); font-weight: 600; font-family: inherit; cursor: pointer; }
.pa-cancel:hover[b-m2r46rj224] { background: var(--sedna-surface); border-color: var(--sedna-border-strong); }

/* Colonna Causale: tronca con ellissi per non rubare spazio. */
.pa-caus-h[b-m2r46rj224], .pa-caus[b-m2r46rj224] { max-width: 170px; }
.pa-caus[b-m2r46rj224] { color: var(--sedna-text-secondary); }
.pa-caus-wrap[b-m2r46rj224] { display: flex; align-items: center; gap: 4px; min-width: 0; }
.pa-caus-txt[b-m2r46rj224] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Badge "NC" (nota di credito): la partita si DETRAE dal totale e va sul lato opposto. */
.pa-nc-badge[b-m2r46rj224] { flex: none; display: inline-block; padding: 0 5px; border-radius: var(--sedna-radius-sm, .25rem); background: var(--sedna-warning-600, #ea580c); color: #fff; font-size: .62rem; font-weight: 700; letter-spacing: .03em; line-height: 1.5; }
/* Importi negativi (note di credito): rosso per leggere subito il segno meno. */
.pa-neg[b-m2r46rj224] { color: var(--sedna-error-700, #b91c1c); }

/* ── Accordion "Acconti del documento" ── */
.pa-acc-toggle[b-m2r46rj224] {
    flex: none; display: inline-flex; align-items: center; justify-content: center;
    width: 18px; height: 18px; padding: 0; border: none; background: transparent;
    color: var(--sedna-text-tertiary); cursor: pointer; font-size: .75rem;
    border-radius: var(--sedna-radius-sm, .25rem);
}
.pa-acc-toggle:hover[b-m2r46rj224] { background: var(--sedna-surface-variant); color: var(--sedna-primary); }

.pa-acc-row > td[b-m2r46rj224] { padding: 0; background: var(--sedna-surface-variant); border-top: none; }
.pa-acc[b-m2r46rj224] { padding: 10px 14px 12px 32px; }
.pa-acc-h[b-m2r46rj224] { display: flex; align-items: center; gap: 6px; font-size: .72rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--sedna-text-tertiary); margin-bottom: 6px; }
.pa-acc-h i[b-m2r46rj224] { color: var(--sedna-primary); }
.pa-acc-empty[b-m2r46rj224] { font-size: .8125rem; color: var(--sedna-text-secondary); }

.pa-acc-tbl[b-m2r46rj224] { width: 100%; border-collapse: collapse; font-size: .8125rem; background: var(--sedna-surface); border: 1px solid var(--sedna-border-light); border-radius: var(--sedna-radius-base, .375rem); overflow: hidden; }
.pa-acc-tbl th[b-m2r46rj224] { text-align: left; font-size: .68rem; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; color: var(--sedna-text-tertiary); padding: 5px 10px; border-bottom: 1px solid var(--sedna-border-light); white-space: nowrap; }
.pa-acc-tbl th.num[b-m2r46rj224], .pa-acc-tbl td.num[b-m2r46rj224] { text-align: right; }
.pa-acc-tbl td[b-m2r46rj224] { padding: 5px 10px; border-top: 1px solid var(--sedna-border-light); color: var(--sedna-text); white-space: nowrap; }
.pa-acc-pending td[b-m2r46rj224] { background: var(--sedna-primary-subtle); }
.pa-acc-badge[b-m2r46rj224] { display: inline-block; padding: 0 6px; border-radius: var(--sedna-radius-sm, .25rem); background: var(--sedna-primary); color: var(--sedna-on-primary, #fff); font-size: .66rem; font-weight: 600; }
.pa-acc-foot[b-m2r46rj224] { display: flex; gap: 20px; flex-wrap: wrap; margin-top: 8px; font-size: .8125rem; color: var(--sedna-text-secondary); }

/* Badge tipo movimento di partita (Pagamento/Incasso/NC…) nell'accordion dei saldati. */
.pa-mov-tag[b-m2r46rj224] { display: inline-block; padding: 1px 7px; border-radius: var(--sedna-radius-sm, .25rem); background: var(--sedna-surface); border: 1px solid var(--sedna-border); color: var(--sedna-text-secondary); font-size: .72rem; font-weight: 600; white-space: nowrap; }

/* Righe indentate dei movimenti che chiudono il documento (albero nella stessa griglia).
   Sfondo grigio + font grigio chiaro (come da richiesta); l'hover non le schiarisce. */
.pa-table tbody tr.pa-mov-row td[b-m2r46rj224] { background: var(--sedna-surface-subtle, rgba(0,0,0,.02)); border-top: none; color: var(--sedna-text-tertiary); }
.pa-table tbody tr.pa-mov-row:hover td[b-m2r46rj224] { background: var(--sedna-surface-subtle, rgba(0,0,0,.02)); }
.pa-mov-caus[b-m2r46rj224] { display: inline-block; padding-left: 22px; position: relative; }
.pa-mov-caus[b-m2r46rj224]::before { content: "\21B3"; position: absolute; left: 6px; color: var(--sedna-text-tertiary); }
.pa-table tbody tr.pa-mov-pending td[b-m2r46rj224] { font-style: italic; }

/* Aggancio NC↔fattura nel modal: drag&drop, chip, riga agganci, menu, dialog. */
.pa-table tbody tr.pa-nc-drag[b-m2r46rj224] { cursor: grab; }
.pa-table tbody tr.pa-dragging[b-m2r46rj224] { opacity: .5; }
.pa-table tbody tr.pa-ag-source[b-m2r46rj224] { outline: 2px dashed var(--sedna-info-500); outline-offset: -2px; }
.pa-drag-handle[b-m2r46rj224] { color: var(--sedna-text-tertiary); margin-right: 2px; cursor: grab; }
.pa-aggancio-chip[b-m2r46rj224] { display: inline-flex; align-items: center; gap: 2px; margin-left: 6px; padding: 0 5px; border-radius: 10px; background: var(--sedna-info-50); color: var(--sedna-info-700); font-size: .68rem; font-weight: 700; }
/* Riga NC AGGANCIATA: sfondo azzurrino + font grigio chiaro. */
.pa-table tbody tr.pa-aggancio-row td[b-m2r46rj224] { background: var(--sedna-info-50, rgba(0,120,255,.04)); color: var(--sedna-text-tertiary); }
.pa-table tbody tr.pa-aggancio-row:hover td[b-m2r46rj224] { background: var(--sedna-info-50, rgba(0,120,255,.04)); }

.pa-ctx-backdrop[b-m2r46rj224] { position: fixed; inset: 0; z-index: 12000; }
.pa-ctx[b-m2r46rj224] { position: fixed; z-index: 12001; min-width: 220px; background: var(--sedna-surface); border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-base, .375rem); box-shadow: var(--sedna-shadow-lg, 0 8px 24px rgba(0,0,0,.18)); padding: 4px; }
.pa-ctx__item[b-m2r46rj224] { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; background: none; border: none; padding: 7px 10px; border-radius: 4px; font-size: .82rem; color: var(--sedna-text); cursor: pointer; white-space: nowrap; }
.pa-ctx__item:hover[b-m2r46rj224] { background: var(--sedna-surface-variant); }
.pa-ctx__item--primary[b-m2r46rj224] { color: var(--sedna-info-700); font-weight: 600; }
.pa-ctx__item--danger[b-m2r46rj224] { color: var(--sedna-error-700); }
.pa-ctx__sep[b-m2r46rj224] { height: 1px; background: var(--sedna-border-light); margin: 4px 2px; }
.pa-ctx__empty[b-m2r46rj224] { padding: 7px 10px; font-size: .8rem; color: var(--sedna-text-tertiary); max-width: 260px; }
/* Il MOTIVO sotto l'esito: più piccolo, va a capo (è una frase, non un'etichetta). */
.pa-ctx__why[b-m2r46rj224] { margin-top: 3px; font-size: .72rem; line-height: 1.35; color: var(--sedna-text-tertiary); white-space: normal; }
.pa-ctx__ref[b-m2r46rj224] { color: var(--sedna-text-tertiary); font-weight: 400; margin-left: 2px; }

.pa-agdlg-overlay[b-m2r46rj224] { position: fixed; inset: 0; z-index: 12010; background: rgba(0,0,0,.35); display: flex; align-items: center; justify-content: center; }
.pa-agdlg[b-m2r46rj224] { background: var(--sedna-surface); border-radius: var(--sedna-radius-lg, .5rem); box-shadow: var(--sedna-shadow-lg, 0 12px 32px rgba(0,0,0,.24)); padding: 18px 20px; width: 440px; max-width: 92vw; display: flex; flex-direction: column; gap: 10px; }
.pa-agdlg h3[b-m2r46rj224] { margin: 0 0 4px; font-size: 1rem; }
.pa-agdlg__row[b-m2r46rj224] { display: flex; gap: 8px; align-items: baseline; font-size: .8125rem; }
.pa-agdlg__k[b-m2r46rj224] { font-size: .65rem; text-transform: uppercase; letter-spacing: .04em; color: var(--sedna-text-tertiary); font-weight: 600; }
.pa-agdlg__in[b-m2r46rj224] { border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-input, .375rem); padding: 6px 10px; font-size: .875rem; }
.pa-agdlg__note[b-m2r46rj224] { font-size: .75rem; color: var(--sedna-text-secondary); margin: 0; }
.pa-agdlg__foot[b-m2r46rj224] { display: flex; justify-content: flex-end; gap: 8px; margin-top: 4px; }

/* Riga del PAGAMENTO/INCASSO nell'accordion: intera riga in corsivo; sotto la causale i documenti presi. */
.pa-table tbody tr.pa-mov-row--pagamento td[b-m2r46rj224] { font-style: italic; }
.pa-mov-docs[b-m2r46rj224] { display: block; padding-left: 22px; margin-top: 1px; font-size: .72rem; font-style: italic; color: var(--sedna-text-tertiary); }
.pa-mov-docs .bi[b-m2r46rj224] { font-size: .68rem; margin-right: 3px; }

/* Partita GIA' inserita nel movimento: feedback verde, spunta al posto della checkbox,
   operazione come tag, importo con pulsante "sgancia". */
.pa-table tbody tr.pa-inmov[b-m2r46rj224] { background: var(--sedna-state-success-bg); }
.pa-inmov-chk[b-m2r46rj224] { color: var(--sedna-success-700); font-size: 1rem; }
.pa-op-tag[b-m2r46rj224] { display: inline-block; padding: 1px 7px; border-radius: var(--sedna-radius-sm, .25rem); background: var(--sedna-surface); border: 1px solid var(--sedna-success-700); color: var(--sedna-success-700); font-size: .72rem; font-weight: 600; }
.pa-inmov-imp[b-m2r46rj224] { display: inline-flex; align-items: center; gap: 6px; justify-content: flex-end; }
.pa-unhook[b-m2r46rj224] { background: none; border: none; padding: 0; cursor: pointer; color: var(--sedna-error-600); display: inline-flex; }
.pa-unhook:hover[b-m2r46rj224] { color: var(--sedna-error-700); }

/* ── Partita già impegnata in una DISTINTA PAGAMENTI ────────────────────────────
   Grigia e in corsivo, come le saldate: «c'è, ma non da qui». Il lucchetto al posto
   della casella dice che c'è una ragione — una casella spenta invita a premerla. */
.pa-indistinta > td[b-m2r46rj224] { color: var(--sedna-text-tertiary); font-style: italic; }

.pa-distinta-chk[b-m2r46rj224] { color: var(--sedna-text-tertiary); }

/* ═══ La rata in una distinta anticipo ═══
   ⚠️ La casella resta VERA e premibile: la rata si incassa lo stesso, ed è così che
   l'anticipo rientra alla banca. Il segno accanto dice che c'è un anticipo dietro —
   mettere un lucchetto come per la distinta pagamenti vorrebbe dire vietare proprio il
   gesto che chiude il giro. */
.pa-anticipo-chk[b-m2r46rj224] {
    display: inline-flex;
    gap: 0.15rem;
    align-items: center;
}

.pa-anticipo-chk i[b-m2r46rj224] {
    color: var(--sedna-info-600);
    font-size: 0.8rem;
}
/* /Pages/Contabilita/PrimaNota/PrimaNotaTestata.razor.rz.scp.css */
/* ═══ Prima Nota Page - UX Enhancements ═══ */

/* --- Causale labels --- (la sezione "hero" originale è stata sostituita da
   .pn-causale-row; restano in uso solo __label e __flags) */
.pn-causale-hero__label[b-hpt5acgm3r] {
    display: block;
    font-size: 0.65625rem;       /* 10.5px — allineato alle caption del box documento */
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    color: var(--sedna-text-secondary);
    margin-bottom: 0.0625rem;
}

/* Icona-scorciatoia all'anagrafica della causale, accanto alla label "Causale".
   È un <button> resettato (apre la modal editor causale). */
.pn-causale-anagrafica-link[b-hpt5acgm3r] {
    display: inline;
    border: none;
    background: transparent;
    padding: 0;
    margin-left: 0.3rem;
    color: var(--sedna-primary);
    font-size: 0.8125rem;
    line-height: 1;
    cursor: pointer;
    vertical-align: baseline;
}

.pn-causale-anagrafica-link:hover[b-hpt5acgm3r] {
    color: var(--sedna-primary-hover, var(--sedna-primary));
}

.pn-causale-hero__flags[b-hpt5acgm3r] {
    display: flex;
    gap: 0.75rem;
    align-items: center;
}

/* --- Tipo Badge (Vendita/Acquisto/Incasso/Pagamento/Giroconto/Diversi) ---
   Costruzione UNIFORME e theme-aware: tint di sfondo dalla famiglia semantica
   DS, bordo + icona nel colore della famiglia, testo in inchiostro. Il colore
   identifica il tipo via tint + icona, non via testo colorato (che sull'ambra
   risulterebbe illeggibile). Ogni modificatore imposta solo le due variabili. */
.pn-tipo-badge[b-hpt5acgm3r] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.3125rem 0.625rem;
    border-radius: var(--sedna-radius-full, 9999px);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.05em; /* caps a 12px: tracking adeguato per non far toccare le lettere */
    text-transform: uppercase;
    white-space: nowrap;
    color: var(--sedna-text);
    background: var(--pn-badge-bg, var(--sedna-surface-variant));
    border: 1px solid var(--pn-badge-line, var(--sedna-border));
}

.pn-tipo-badge i[b-hpt5acgm3r] {
    color: var(--pn-badge-line, var(--sedna-text-secondary));
    font-size: 0.875rem;
}

.pn-tipo-badge--V[b-hpt5acgm3r] { --pn-badge-bg: var(--pn-cat-vendita-bg);   --pn-badge-line: var(--pn-cat-vendita-line); }
.pn-tipo-badge--A[b-hpt5acgm3r] { --pn-badge-bg: var(--pn-cat-acquisto-bg);  --pn-badge-line: var(--pn-cat-acquisto-line); }
.pn-tipo-badge--I[b-hpt5acgm3r] { --pn-badge-bg: var(--pn-cat-incasso-bg);   --pn-badge-line: var(--pn-cat-incasso-line); }
.pn-tipo-badge--P[b-hpt5acgm3r] { --pn-badge-bg: var(--pn-cat-pagamento-bg); --pn-badge-line: var(--pn-cat-pagamento-line); }
.pn-tipo-badge--G[b-hpt5acgm3r] { --pn-badge-bg: var(--pn-cat-giroconto-bg); --pn-badge-line: var(--pn-cat-giroconto-line); }
.pn-tipo-badge--D[b-hpt5acgm3r] { --pn-badge-bg: var(--pn-cat-diversi-bg);   --pn-badge-line: var(--pn-cat-diversi-line); }

/* --- Testata STACKED full-width (impeccable/layout): causale → box documento
   full-width → flags → strip soggetto. Il box documento si prende il 100% della
   larghezza per ospitare con respiro le righe raggruppate per dominio. Il pannello
   soggetto è una strip riepilogativa full-width sotto, non più colonna 340px. --- */
.pn-testata[b-hpt5acgm3r] {
    display: flex;
    flex-direction: column;
    gap: 0.3125rem;
    margin-top: 0; /* lo stacco dalla page header e dato da .pz-layout padding-top */
    min-width: 0; /* impedisce overflow nei figli (input grid) */

    /* ─── Palette per CATEGORIA (tipo causale + status chip) ──────────────
       Derivata dai token semantici del design system, quindi theme-aware e
       coerente con il resto della UI (niente più hex Tailwind hardcoded).
       Ogni voce = { bg tint, line }. Il `bg` è un tint chiaro/scuro a seconda
       del tema; `line` colora bordo + icona. Il TESTO del badge resta sempre
       inchiostro (--sedna-text) così il contrasto è ≥4.5:1 in entrambi i temi
       a prescindere dalla famiglia (l'ambra non avrebbe mai testo leggibile).
       Vendita usa --sedna-primary-subtle (theme-aware) invece di brand-50 che
       in dark resterebbe chiaro → testo chiaro su chiaro. */
    --pn-cat-vendita-bg: var(--sedna-primary-subtle);
    --pn-cat-vendita-line: var(--sedna-primary);
    --pn-cat-acquisto-bg: var(--sedna-warning-50);
    --pn-cat-acquisto-line: var(--sedna-warning-700);
    --pn-cat-incasso-bg: var(--sedna-success-50);
    --pn-cat-incasso-line: var(--sedna-success-600);
    --pn-cat-pagamento-bg: var(--sedna-error-50);
    --pn-cat-pagamento-line: var(--sedna-error-600);
    --pn-cat-giroconto-bg: var(--sedna-info-50);
    --pn-cat-giroconto-line: var(--sedna-info-700);
    --pn-cat-diversi-bg: var(--sedna-surface-variant);
    --pn-cat-diversi-line: var(--sedna-neutral-600);
}

/* Riga 1 "header": SOLO Causale + Descrizione → pannello unico, basso e a tutta
   larghezza. Il pannello soggetto (Fornitore/Cliente) è stato spostato accanto al
   box documento (vedi .pn-doc-row) per non far crescere in altezza questa riga. */
.pn-testata__header[b-hpt5acgm3r] {
    display: block;
}

/* ─── Riga documento: box documento (sinistra, elastico) + pannello soggetto
   (destra, ~300px) affiancati. Il soggetto è in DOM PRIMA del box documento ma
   con order:2 va a DESTRA, così il Sezionale (alto-sinistra del box) resta
   accanto al pannello Fornitore/Cliente. Sotto 900px impila (documento sopra). ─── */
.pn-doc-row[b-hpt5acgm3r] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    align-items: stretch;
    margin-top: 0.375rem;
}

@media (min-width: 900px) {
    .pn-doc-row[b-hpt5acgm3r] {
        flex-direction: row;
    }
}

.pn-doc-row .pn-documento-box[b-hpt5acgm3r] {
    order: 1;
    flex: 1 1 auto;
    min-width: 0;
}

.pn-doc-row .pn-testata__subject[b-hpt5acgm3r] {
    order: 2;
    /* Larghezza FISSA e non superabile: senza max-width + min-width:0 + overflow
       il nome lungo del soggetto (anche con ellipsis) espande il pannello oltre i
       300px, restringendo il box documento e nascondendo le date. */
    flex: 0 0 300px;
    max-width: 300px;
    min-width: 0;
    overflow: hidden;
}

@media (max-width: 899.98px) {
    .pn-doc-row .pn-testata__subject[b-hpt5acgm3r] {
        flex: 1 1 auto;
        max-width: none;
    }
}

.pn-testata__identity[b-hpt5acgm3r] {
    display: flex;
    flex-direction: column;
    gap: 0.1875rem;
    min-width: 0;
    padding: 0.1875rem 0.5rem;
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);
    /* Input della riga causale (lookup + textarea) compatti come il box documento. */
    --sedna-input-h: 1.25rem; /* 20px */
}

/* Lookup Causale: font e altezza compatti come i campi del box documento (12px / 20px),
   col bottone dropdown vincolato all'altezza del box (altrimenti sporge come il
   calendario delle date). */
[b-hpt5acgm3r] .pn-causale-row__lookup .dxbl-text-edit-input,
[b-hpt5acgm3r] .pn-causale-row__lookup input[type="text"] {
    font-size: 0.75rem !important;
    line-height: calc(1.25rem - 2px) !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    min-height: calc(1.25rem - 2px) !important;
    height: calc(1.25rem - 2px) !important;
}

[b-hpt5acgm3r] .pn-causale-row__lookup .dxbl-text-edit,
[b-hpt5acgm3r] .pn-causale-row__lookup .dxbl-edit {
    min-height: 1.25rem !important;
    height: 1.25rem !important;
    align-items: center !important;
}

[b-hpt5acgm3r] .pn-causale-row__lookup .dxbl-btn-group,
[b-hpt5acgm3r] .pn-causale-row__lookup .dxbl-btn-group .dxbl-btn {
    height: calc(1.25rem - 2px) !important;
    min-height: calc(1.25rem - 2px) !important;
    align-self: center !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

/* Pannello soggetto (30% in riga 1): riquadro RIEPILOGATIVO (read-only). La
   scelta del cliente/fornitore avviene dalla colonna Cli/For della griglia. */
.pn-testata__subject[b-hpt5acgm3r] {
    padding: 0.3125rem 0.5rem;
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);
    min-height: 40px;
}

/* Separazione visiva sottile tra i gruppi del box documento (es. inizio
   blocco Riferimenti / Protocollo nell'area avanzata). Solo una hairline in
   alto sull'item che apre il gruppo, niente bordi colorati grossi. */
.pn-doc-group-start[b-hpt5acgm3r] {
    position: relative;
}

[b-hpt5acgm3r] .pn-soggetto-form {
    padding: 0.25rem 0;
}

/* Textarea descrizione causale (modificabile dall'utente) */
.pn-descrizione-causale[b-hpt5acgm3r] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

/* Campo descrizione: deve avere aspetto di input editabile (sfondo + bordo),
   altrimenti sembra testo non modificabile. */
.pn-descrizione-causale__input[b-hpt5acgm3r] {
    width: 100%;
    box-sizing: border-box;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-md, 0.375rem);
    font-size: 0.75rem;          /* 12px — come i campi del box documento */
    font-family: inherit;
    color: var(--sedna-text);
    resize: vertical;
    /* Default alta come l'input Causale (20px box bordato) per sembrare allineata:
       1 riga (line-height 14) + padding 2+2 + bordo 2 = 20px. Resta espandibile. */
    line-height: 14px;
    padding: 0.125rem 0.5rem;
    outline: none;
    min-height: 1.25rem;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.pn-descrizione-causale__input[b-hpt5acgm3r]::placeholder {
    color: var(--sedna-text-tertiary);
}

.pn-descrizione-causale__input:focus[b-hpt5acgm3r] {
    outline: none;
    border-color: var(--sedna-primary);
    box-shadow: 0 0 0 2px var(--sedna-focus-color);
}

.pn-descrizione-causale__input[readonly][b-hpt5acgm3r] {
    cursor: default;
    background: var(--sedna-surface-muted);
}

/* Riga orizzontale Causale + Descrizione + Info.
   NESSUN pannello qui: il contenitore .pn-testata__identity è già il pannello
   (evita card-in-card e doppio padding verticale → testata più compatta). */
.pn-causale-row[b-hpt5acgm3r] {
    display: flex;
    align-items: flex-start;
    gap: 0.625rem;
}

.pn-causale-row__lookup[b-hpt5acgm3r] {
    flex: 0 0 170px;
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.pn-causale-row__descrizione[b-hpt5acgm3r] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.pn-causale-row__info[b-hpt5acgm3r] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    align-self: stretch;
}

/* Bottone "Parametri causale" (apre la modal). Icona discreta, hit-area piena. */
.pn-param-btn[b-hpt5acgm3r] {
    display: inline-flex;
    align-items: center;
    gap: 0.3125rem;
    height: 1.75rem;
    padding: 0 0.5rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
    transition: color 0.12s ease, border-color 0.12s ease, background 0.12s ease;
}

.pn-param-btn__label[b-hpt5acgm3r] {
    line-height: 1;
}

.pn-param-btn:hover[b-hpt5acgm3r] {
    color: var(--sedna-primary);
    border-color: var(--sedna-primary);
    background: var(--sedna-surface-hover);
}

.pn-param-btn:focus-visible[b-hpt5acgm3r] {
    outline: 2px solid var(--sedna-primary);
    outline-offset: 2px;
}

/* Box documento (Date, N.Doc, Reg.IVA): contiene la DxFormLayout — densità ridotta (P3) */
.pn-documento-box[b-hpt5acgm3r] {
    padding: 0.125rem 0.5rem 0.1875rem;
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);

    /* ─── Scala FISSA compatta (typeset) ──────────────────────────────
       Era fluida via clamp() (9.5px caption / 24px input @1100px): troppo
       piccola e imprevedibile in un layout denso a container. La UI di
       prodotto vuole una scala rem fissa (Material/Polaris/Primer non usano
       type fluido). Valori scelti compatti ma sopra le soglie di leggibilità:
       caption 12px (sentence-case), valore input 13px, altezza input 28px
       (= DX "Small"). Niente più variazione col viewport. */
    --pn-doc-cpt-font: 0.65625rem;  /* 10.5px caption — testata compatta */
    --pn-doc-input-font: 0.75rem;   /* 12px valore input */
    --pn-doc-input-h: 1.25rem;      /* 20px altezza input (box esterno, bordo incluso) */
    --pn-doc-input-inner: calc(var(--pn-doc-input-h) - 2px); /* 18px area interna (input/bottone dentro il bordo) */
    --pn-doc-input-pad-x: 0.4375rem;/* 7px padding orizzontale */
    --pn-doc-row-gap: 0.0625rem;    /* 1px gap tra righe */
    /* D25: override --sedna-input-h locale → gli input DevExpress dentro il
       box documento ereditano il sizing compact via CSS cascade. */
    --sedna-input-h: var(--pn-doc-input-h);
    --sedna-input-font: var(--pn-doc-input-font);
}

/* Comprime la DxFormLayout interna usando le variabili a scala fissa del box. */
[b-hpt5acgm3r] .pn-documento-box .dxbl-fl {
    row-gap: var(--pn-doc-row-gap) !important;
}

[b-hpt5acgm3r] .pn-documento-box .dxbl-row {
    row-gap: var(--pn-doc-row-gap) !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

[b-hpt5acgm3r] .pn-documento-box .dxbl-fl-item {
    padding-top: var(--pn-doc-row-gap) !important;
    padding-bottom: var(--pn-doc-row-gap) !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

[b-hpt5acgm3r] .pn-documento-box .dxbl-fl-cpt,
[b-hpt5acgm3r] .pn-documento-box label.dxbl-fl-cpt {
    font-size: var(--pn-doc-cpt-font) !important;
    font-weight: 600 !important;
    /* Sentence-case (era uppercase, affettazione locale di PrimaNota: né il
       design system né le altre pagine rendono maiuscole le caption dei form).
       Il markup è già "Data Doc.", "Sezionale"… → caption leggibili e coerenti
       col resto dell'app. */
    text-transform: none;
    letter-spacing: 0;
    color: var(--sedna-text-secondary) !important;
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
    line-height: 1.2 !important;
    min-height: auto !important;
}

[b-hpt5acgm3r] .pn-documento-box .dxbl-fl-ctrl {
    padding-top: 0 !important;
}

[b-hpt5acgm3r] .pn-documento-box .dxbl-text-edit-input,
[b-hpt5acgm3r] .pn-documento-box .dxbl-date-edit-input,
[b-hpt5acgm3r] .pn-documento-box input[type="text"] {
    font-size: var(--pn-doc-input-font) !important;
    /* Centratura verticale del testo: line-height = altezza INTERNA (dentro il bordo
       del container), padding verticale azzerato. Evita la data "appiccicata in alto"
       e il bordo discontinuo (input/bottone non sforano il bordo arrotondato). */
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    line-height: var(--pn-doc-input-inner) !important;
    padding-left: var(--pn-doc-input-pad-x) !important;
    padding-right: var(--pn-doc-input-pad-x) !important;
    min-height: var(--pn-doc-input-inner) !important;
    height: var(--pn-doc-input-inner) !important;
}

/* Contenitore editor a altezza fissa e contenuto (input + icona) centrato:
   il bottone calendario del DxDateEdit non deve alzare la riga né spingere il
   testo in cima. */
[b-hpt5acgm3r] .pn-documento-box .dxbl-date-edit,
[b-hpt5acgm3r] .pn-documento-box .dxbl-text-edit,
[b-hpt5acgm3r] .pn-documento-box .dxbl-edit {
    min-height: var(--pn-doc-input-h) !important;
    height: var(--pn-doc-input-h) !important;
    align-items: center !important;
}

/* Bottone calendario del DxDateEdit: DevExpress lo rende come
   .dxbl-text-edit > .dxbl-btn-group > .dxbl-btn (NON .dxbl-date-edit). Di default è
   26px e sporge dal box compatto (20px): lo vincolo all'altezza dell'input, centrato. */
[b-hpt5acgm3r] .pn-documento-box .dxbl-text-edit .dxbl-btn-group,
[b-hpt5acgm3r] .pn-documento-box .dxbl-text-edit .dxbl-btn-group .dxbl-btn {
    height: var(--pn-doc-input-inner) !important;
    min-height: var(--pn-doc-input-inner) !important;
    align-self: center !important;
}

[b-hpt5acgm3r] .pn-documento-box .dxbl-text-edit .dxbl-btn-group .dxbl-btn {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

/* Bordi degli input più sottili per atmosfera densa */
[b-hpt5acgm3r] .pn-documento-box .dxbl-edit {
    border-radius: 4px !important;
}

/* ─── P2: Pannello soggetto come STRIP ORIZZONTALE compatta ─────────
   Era box centrato 106px alto; ora chip flex-row alta ~44px che si
   inserisce naturalmente sopra la griglia, senza sprecare verticale. */
.pn-soggetto-box[b-hpt5acgm3r] {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    gap: 0.625rem 1rem;
    padding: 0.5rem 0.875rem;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);
    text-align: left;
}

.pn-soggetto-box__title[b-hpt5acgm3r] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    font-size: 0.6875rem;        /* 11px: titolo di sezione, uppercase legittimo */
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--sedna-text-secondary);
    padding: 0;
    flex: 0 0 auto;
}

.pn-soggetto-box__title i[b-hpt5acgm3r] {
    font-size: 0.9375rem;
    color: var(--sedna-primary);
}

.pn-soggetto-box__badge[b-hpt5acgm3r] {
    /* Tint + testo scuro come il badge conteggio della modal parametri:
       bianco su primary pieno falliva il contrasto (~3.4:1) per testo piccolo. */
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary-active);
    border-radius: 999px;
    padding: 0.0625rem 0.4375rem;
    font-size: 0.625rem;
    font-weight: 700;
    line-height: 1.4;
    margin-left: 0.25rem;
}

.pn-soggetto-item[b-hpt5acgm3r] {
    display: inline-flex;
    flex-flow: row wrap;
    align-items: baseline;
    gap: 0.25rem 0.75rem;
    padding: 0;
    flex: 1 1 auto;
    min-width: 0;
}

.pn-soggetto-item + .pn-soggetto-item[b-hpt5acgm3r] {
    border-top: none;
    border-left: 1px solid var(--sedna-border);
    padding-left: 0.75rem;
}

.pn-soggetto-item__head[b-hpt5acgm3r] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.4375rem;
    flex-wrap: nowrap;
    min-width: 0;
}

.pn-soggetto-item__code[b-hpt5acgm3r] {
    font-family: var(--sedna-font-mono, JetBrains Mono, monospace);
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--sedna-text-secondary);
    letter-spacing: 0.02em;
    flex: 0 0 auto;
}

.pn-soggetto-item__name[b-hpt5acgm3r] {
    font-size: 0.9375rem;
    font-weight: 700;
    color: var(--sedna-text);
    line-height: 1.2;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Dettagli (P.IVA, indirizzo) inline al posto di verticali */
.pn-soggetto-item__rows[b-hpt5acgm3r] {
    display: inline-flex;
    flex-flow: row wrap;
    align-items: baseline;
    gap: 0.125rem 0.75rem;
}

.pn-soggetto-item__row[b-hpt5acgm3r] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.25rem;
    font-size: 0.75rem;
    line-height: 1.3;
}

.pn-soggetto-item__label[b-hpt5acgm3r] {
    color: var(--sedna-text-secondary);
    font-size: 0.6875rem;        /* 11px (era 10px uppercase): metadato inline, sentence-case */
    text-transform: none;
    letter-spacing: 0;
    font-weight: 600;
}

.pn-soggetto-item__val[b-hpt5acgm3r] {
    color: var(--sedna-text);
    font-size: 0.75rem;
}

/* Placeholder rimane visibile ma compatto */
.pn-soggetto-placeholder[b-hpt5acgm3r] {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    justify-content: flex-start;
    gap: 0.5rem;
    padding: 0.5rem 0.875rem;
    background: transparent;
    border: 1px dashed var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);
    color: var(--sedna-text-secondary);
    font-size: 0.8125rem;
    min-height: auto;
    text-align: left;
}

.pn-soggetto-placeholder i[b-hpt5acgm3r] {
    font-size: 1rem;
    color: var(--sedna-text-tertiary);
}

/* ─── E3: Toggle "Avanzato" del box documento ─── */
.pn-doc-toggle[b-hpt5acgm3r] {
    display: inline-flex;
    align-items: center;
    gap: 0.3125rem;
    margin-top: 0.375rem;
    padding: 0.125rem 0.4375rem;
    background: transparent;
    border: none;
    color: var(--sedna-primary);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: none;     /* toggle di disclosure: sentence-case, più calmo */
    letter-spacing: 0;
    cursor: pointer;
    border-radius: 4px;
}

.pn-doc-toggle:hover[b-hpt5acgm3r] {
    background: color-mix(in srgb, var(--sedna-primary) 8%, transparent);
}

.pn-doc-toggle i[b-hpt5acgm3r] {
    font-size: 0.75rem;
}

/* ─── D4: wrapper readonly per SednaStackCell dentro DxFormLayoutItem ───
   Conferisce al SednaStackCell l'aspetto di un input readonly (bordo,
   sfondo neutro, padding) senza che vada a sembrare un controllo editabile.
   Usato per "Registro IVA" che mostra Codice + Descrizione in 2 righe
   invece di "A - Registro Acquisti" troncato. */
.pn-readonly-stack[b-hpt5acgm3r] {
    display: flex;
    align-items: center;
    min-height: 28px;
    padding: 0.1875rem 0.5rem;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: 4px;
}

/* ─── D6: cella "stack" in EDITING mode (Conto/Cli-For/Cod.IVA) ───
   Il lookup mostra solo il codice (compatto, niente ellipsi), e la
   descrizione del valore selezionato è renderizzata SOTTO come testo
   muted always-visible. Stessa altezza visiva dello StackCell di display
   ma con il lookup attivo: codice editabile + descrizione contestuale.

   Layout column 2-riga totale ~32px → compatibile con grid density-compact.
*/
.pn-cell-edit-stack[b-hpt5acgm3r] {
    display: flex;
    flex-direction: column;
    min-width: 0;        /* abilita ellipsis sul figlio descrizione */
    gap: 0;
    line-height: 1.15;
}

.pn-cell-edit-stack__desc[b-hpt5acgm3r] {
    display: block;
    font-size: 0.65625rem;       /* 10.5px, allineato a SednaStackCell */
    color: var(--sedna-text-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    padding: 0 0.25rem;
    margin-top: 1px;
    line-height: 1.2;
}

/* ─── D7: datepicker compatti che mostrano "dd/MM/yyyy" senza troncare ───
   I DxDateEdit del box documento hanno la classe pn-doc-date (tag dxbl-date-edit,
   classe runtime dxbl-text-edit). La larghezza utile la dà la colonna (col-md-2):
   in riga 3 (7 campi) la colonna è ~96px e con padding 7+7 + bottone calendario 26px
   restano solo ~54px per un testo che ne richiede ~67 → tronca ("24/06/2..."). Riduco
   l'overhead (padding input al minimo + bottone calendario stretto) così la data ci sta;
   un max-width evita che nelle righe meno dense il box si allarghi sprecando spazio. */
[b-hpt5acgm3r] .pn-documento-box .pn-doc-date {
    /* Le date riempiono buona parte della loro colonna (prima cap 88px lasciava ~40px
       vuoti a destra): un po' più larghe per sfruttare lo spazio della testata. */
    max-width: 112px;
}

/* DevExpress applica 7+7px di padding all'input con specificità alta: lo riduciamo con
   !important (il padding di default mangiava ~14px, troncando la data nelle colonne strette).
   Inoltre tabular-nums + letter-spacing compattano le cifre. */
[b-hpt5acgm3r] .pn-documento-box .pn-doc-date .dxbl-text-edit-input {
    min-width: 0;
    padding-left: 2px !important;
    padding-right: 0 !important;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.4px;
}

/* Bottone calendario stretto: recupera ~10px per la data senza perderne l'usabilità. */
[b-hpt5acgm3r] .pn-documento-box .pn-doc-date .dxbl-edit-btn-dropdown {
    width: 16px;
    min-width: 16px;
    padding-left: 0;
    padding-right: 0;
}

/* ─── D11: FORZARE caption "sopra" (vertical) nel box documento ─────────
   Per default DxFormLayout 25.2 renderizza .dxbl-fl-item-horizontal con
   caption a SINISTRA (width 98px) → il datepicker sfora a destra e l'icona
   calendario copre il "N" del caption successivo ("N. Doc." → "I. Doc.").
   Forzando flex-direction column, il caption va sopra il campo e ogni
   colonna gode dello spazio orizzontale pieno per il proprio input. */
[b-hpt5acgm3r] .pn-documento-box .dxbl-fl-item-horizontal {
    flex-direction: column !important;
    align-items: stretch !important;
}

[b-hpt5acgm3r] .pn-documento-box .dxbl-fl-item-horizontal > .dxbl-fl-cpt,
[b-hpt5acgm3r] .pn-documento-box .dxbl-fl-item-horizontal > label.dxbl-fl-cpt {
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    text-align: left !important;
    padding-right: 0 !important;
    margin-bottom: 1px !important;
}

[b-hpt5acgm3r] .pn-documento-box .dxbl-fl-item-horizontal > .dxbl-fl-ctrl {
    width: 100% !important;
    flex: 1 1 auto !important;
}

/* ─── D8: SEZIONALE — nascondi clear button (X) per evitare sovrapposizione
   con il codice corto ("A", "B", "C") nello spazio stretto. Il sezionale è
   sempre disponibile via dropdown ▾ e via causale; non serve clear esplicito. */
[b-hpt5acgm3r] .pn-doc-sezionale .dxbl-edit-btn-clear,
[b-hpt5acgm3r] .pn-doc-sezionale .dxbl-btn-clear,
[b-hpt5acgm3r] .pn-doc-sezionale [class*="clear-button"] {
    display: none !important;
}

/* Più padding interno al sezionale così il codice "A" non tocca il dropdown ▾ */
[b-hpt5acgm3r] .pn-doc-sezionale .dxbl-text-edit-input {
    padding-right: 0.25rem !important;
}

/* ─── E1: campi "non applicabili" (Sezionale/Registro IVA disabilitati)
   visivamente distinti ma con stesso ingombro, così il layout non salta ─── */
[b-hpt5acgm3r] .pn-doc-na .dxbl-fl-cpt,
[b-hpt5acgm3r] .pn-doc-na label.dxbl-fl-cpt {
    color: var(--sedna-text-tertiary) !important;
}

[b-hpt5acgm3r] .pn-doc-na .dxbl-text-edit-input,
[b-hpt5acgm3r] .pn-doc-na .pn-doc-na__input input,
[b-hpt5acgm3r] .pn-doc-na input[type="text"] {
    background: var(--sedna-surface-variant) !important;
    color: var(--sedna-text-secondary) !important;
    font-style: italic;
    cursor: not-allowed;
}

/* --- Numero Registrazione: chip PIATTO e calmo (niente gradient).
   È l'identità del record, non un "hero": sfondo neutro tokenizzato, numero
   in inchiostro tabulare mono, etichetta muted leggibile. Theme-aware. --- */
.pn-numreg[b-hpt5acgm3r] {
    display: flex;
    align-items: baseline;
    gap: 0.4375rem;
    padding: 0.25rem 0.625rem;
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, 0.375rem);
    color: var(--sedna-text);
}

.pn-numreg__label[b-hpt5acgm3r] {
    font-size: 0.6875rem;        /* 11px (era 9px uppercase): "N. Reg." sentence-case, leggibile */
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    color: var(--sedna-text-secondary);
}

.pn-numreg__value[b-hpt5acgm3r] {
    font-family: var(--sedna-font-mono, 'JetBrains Mono', monospace);
    font-size: 1.0625rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    line-height: 1;
    color: var(--sedna-text);
}

/* N. Reg. "proposto" (in creazione, prima del salvataggio): bordo tratteggiato +
   numero in inchiostro muted, per indicare che NON è ancora il numero definitivo. */
.pn-numreg--proposto[b-hpt5acgm3r] {
    border-style: dashed;
}

.pn-numreg--proposto .pn-numreg__value[b-hpt5acgm3r] {
    color: var(--sedna-text-secondary);
}

/* --- Section Headers with icons --- */
.pn-section-title[b-hpt5acgm3r] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 0.5rem 0;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--sedna-text-secondary);
}

.pn-section-title i[b-hpt5acgm3r] {
    color: var(--sedna-primary);
    font-size: 0.875rem;
}

/* --- SpinEdit: nascondi frecce, seleziona al focus --- */
[b-hpt5acgm3r] .dxbl-spin-edit .dxbl-btn-group {
    display: none !important;
}

[b-hpt5acgm3r] .dxbl-spin-edit input[type="text"] {
    -moz-appearance: textfield;
}

[b-hpt5acgm3r] .dxbl-spin-edit input::-webkit-inner-spin-button,
[b-hpt5acgm3r] .dxbl-spin-edit input::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

/* --- Status chips: stesso modello dei tipo-badge (tint DS + testo inchiostro
   + icona colorata), riusando le variabili di categoria. RC spostato dal rosso
   al blu-brand per NON collidere col badge Pagamento (prima entrambi rossi:
   stesso colore, due significati). Theme-aware. --- */
.pn-status-chip[b-hpt5acgm3r] {
    display: inline-flex;
    align-items: center;
    gap: 0.3125rem;
    padding: 0.25rem 0.5625rem;
    border-radius: var(--sedna-radius-full, 9999px);
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--sedna-text);
    background: var(--pn-chip-bg, var(--sedna-surface-variant));
}

.pn-status-chip i[b-hpt5acgm3r] {
    color: var(--pn-chip-line, var(--sedna-text-secondary));
}

.pn-status-chip--sospeso[b-hpt5acgm3r]  { --pn-chip-bg: var(--pn-cat-acquisto-bg);  --pn-chip-line: var(--pn-cat-acquisto-line); }
.pn-status-chip--extra[b-hpt5acgm3r]    { --pn-chip-bg: var(--pn-cat-diversi-bg);   --pn-chip-line: var(--pn-cat-diversi-line); }
.pn-status-chip--rc[b-hpt5acgm3r]       { --pn-chip-bg: var(--pn-cat-vendita-bg);   --pn-chip-line: var(--pn-cat-vendita-line); }
.pn-status-chip--intracee[b-hpt5acgm3r] { --pn-chip-bg: var(--pn-cat-giroconto-bg); --pn-chip-line: var(--pn-cat-giroconto-line); }

/* Sospeso = chip di stato CLICCABILE (toggle), nella riga flag insieme agli altri.
   Definito DOPO la base e i modificatori così l'OFF (ghost) vince per ordine sorgente.
   OFF = ghost (outline muted, "click per sospendere"); ON = ambra (--sospeso). */
.pn-status-chip--clickable[b-hpt5acgm3r] {
    border: 1px solid transparent;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.12s ease, border-color 0.12s ease, color 0.12s ease;
}

.pn-status-chip--clickable:focus-visible[b-hpt5acgm3r] {
    outline: 2px solid var(--sedna-primary);
    outline-offset: 1px;
}

.pn-status-chip--off[b-hpt5acgm3r] {
    background: transparent;
    border-color: var(--sedna-border);
    color: var(--sedna-text-secondary);
}

.pn-status-chip--off i[b-hpt5acgm3r] {
    color: var(--sedna-text-tertiary);
}

.pn-status-chip--off:hover[b-hpt5acgm3r] {
    border-color: var(--pn-cat-acquisto-line);
    color: var(--sedna-text);
}

/* ── Ingranaggio "Campi del form" (SednaForm) ──────────────────────
   Il box documento non ha spazio libero in alto (i campi partono subito):
   l'ingranaggio viene ancorato al BOX e appoggiato sul suo bordo superiore,
   vicino all'angolo destro — un piccolo chip fuori dall'area campi. */
.pn-documento-box[b-hpt5acgm3r] {
    position: relative;
}
.pn-documento-box[b-hpt5acgm3r]  .sedna-form {
    position: static; /* l'absolute del gear risolve sul box, non sul form interno */
}
/* (Lo stile chip è ora il default della libreria: qui resta solo l'ancoraggio
   al box invece che al form interno.) */
.pn-documento-box:hover[b-hpt5acgm3r]  .sedna-form__gear { opacity: 1; }

/* /Pages/Contabilita/RegistroIva/RegistriIvaList.razor.rz.scp.css */
/* ===================================
   REGISTRI IVA — layout dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). La griglia riempie lo
   spazio residuo e scrolla internamente.
   =================================== */
.sedna-datagrid-wrapper[b-apsa9euvmw] {
    /* flex/overflow dal guscio; resta solo il respiro sotto */
    margin-bottom: 0.5rem;
}

[b-apsa9euvmw] .sedna-dx-grid {
    height: 100%;
    max-height: none;
}

[b-apsa9euvmw] .dxbl-grid-data-container {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* ========================================
   TOOLBAR — searchbox custom (pattern lista Clienti)
   Search dentro la toolbar della griglia (stessa riga di Colonne/Esporta).
   ======================================== */
.toolbar[b-apsa9euvmw] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.toolbar .search[b-apsa9euvmw] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-apsa9euvmw] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-apsa9euvmw] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-apsa9euvmw]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-apsa9euvmw] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 760px) {
    .toolbar[b-apsa9euvmw] {
        flex-wrap: wrap;
    }

    .toolbar .search[b-apsa9euvmw] {
        width: 100%;
    }
}
/* /Pages/Contabilita/RegistroIva/RegistroIvaConsultazionePage.razor.rz.scp.css */
/* ============================================================
   Registro IVA (consultazione) — grammatica visiva condivisa
   con Bilancio/Scheda Contabile. Token --sedna-*.
   ============================================================ */
/* Root a viewport fisso dal guscio globale .sedna-page (sedna.page.css):
   height calc(100dvh - 1rem) + overflow. Le sezioni interne hanno un
   padding-inline proprio (clamp), quindi azzero quello del guscio. */
.riv[b-o7grc5axgc] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    --rv-ctrl-h: 34px;
    /* Padding orizzontale del contenuto = quello dell'header di pagina (allineati). */
    --rv-pad-x: 14px;
}

/* segmented switcher V/A nell'header */
.rv-switch[b-o7grc5axgc] {
    display: flex;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .375rem);
    padding: 3px;
    gap: 2px;
    background: var(--sedna-surface-variant);
    height: 36px;
    align-items: center;
}
.rv-switch button[b-o7grc5axgc] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    padding: 0 14px;
    height: 100%;
    border-radius: 5px;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 7px;
}
.rv-switch button:hover[b-o7grc5axgc] { color: var(--sedna-text); }
.rv-switch button.active[b-o7grc5axgc] { background: var(--sedna-surface); color: var(--sedna-primary); box-shadow: var(--sedna-shadow-sm); }

/* ---------------- Toolbar filtri ---------------- */
/* Header di pagina più compatto e più vicino ai filtri. */
/* L'altezza della testata la decide il design system (42px, come la fattura):
   la scorciatoia per-pagina che la stringeva non serve piu'. */
/* ⚠️ La rondellina dell'ordine campi sta in alto a destra del SednaForm che
   avvolge i filtri: senza spazio riservato finirebbe SOPRA il pulsante «Filtra»,
   che chiude la barra. 30px liberi in coda e la si porta li' dentro. */
[b-o7grc5axgc] .sedna-form:has(> .rv-filters) {
    padding-right: 30px;
    --sef-gear-top: -11px;
    --sef-gear-right: 2px;
    /* Il pulsante «Filtra» alto come i campi accanto: i token scendono ai figli. */
    --sedna-control-height-sm: var(--sedna-input-height, 22px);
    --sedna-control-height-md: var(--sedna-input-height, 22px);
}

.rv-filters[b-o7grc5axgc] {
    flex: none;
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: -2px;
    padding: 4px var(--rv-pad-x) 10px;
    border-bottom: 1px solid var(--sedna-border);
}
.rv-f[b-o7grc5axgc] { display: flex; flex-direction: column; gap: 2px; }
.rv-f > label[b-o7grc5axgc] { font-size: 0.625rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
.rv-f .se[b-o7grc5axgc] {
    height: var(--rv-ctrl-h);
    min-width: 150px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base, .375rem);
    padding: 0 28px 0 10px;
    font-size: 0.8125rem;
    color: var(--sedna-text);
    outline: none;
    font-family: inherit;
    appearance: none;
    cursor: pointer;
}
.rv-f .se:focus[b-o7grc5axgc] { border-color: var(--sedna-primary); box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }
/* Combo compatte: TUTTI i filtri su una sola riga. Le combo sono COMPONENTI figli
   (sedna-combobox-native, width:100%) con scope CSS proprio: le mie regole scoped non le
   raggiungono senza ::deep. Fisso qui la larghezza del controllo interno. */
.rv-filters[b-o7grc5axgc]  .se { width: 168px; }              /* default (Registro) */
.rv-filters[b-o7grc5axgc]  .se.se--xs { width: 96px; }        /* Tipo (Vendita/Acquisto) */
.rv-filters[b-o7grc5axgc]  .se.se--yr { width: 82px; }        /* Anno (4 cifre) */
.rv-filters[b-o7grc5axgc]  .se.se--sm { width: 120px; }       /* Periodo / Tipo data / Sospesi */
.rv-f .daterange[b-o7grc5axgc] { display: flex; align-items: center; gap: 6px; }
.rv-f .daterange .sep[b-o7grc5axgc] { color: var(--sedna-text-tertiary); font-size: 0.75rem; }
/* Larghezza dal contenuto: 108px non bastavano a dd/MM/yyyy coi due bottoni. */
.rv-filters[b-o7grc5axgc]  .rv-date { width: calc(10ch + 3.75rem); }
.rv-date[b-o7grc5axgc]  .dxbl-edit { min-height: var(--rv-ctrl-h); }

.rv-seg[b-o7grc5axgc] {
    display: flex;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .375rem);
    padding: 3px;
    gap: 2px;
    background: var(--sedna-surface-variant);
    height: var(--rv-ctrl-h);
    align-items: center;
}
.rv-seg button[b-o7grc5axgc] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    padding: 0 11px;
    height: 100%;
    border-radius: 4px;
    white-space: nowrap;
}
.rv-seg button:hover[b-o7grc5axgc] { color: var(--sedna-text); }
.rv-seg button.active[b-o7grc5axgc] { background: var(--sedna-surface); color: var(--sedna-primary); box-shadow: var(--sedna-shadow-sm); }

.rv-filters .f-spacer[b-o7grc5axgc] { flex: 1; }

.rv-apply[b-o7grc5axgc] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 26px;
    padding: 0 13px;
    white-space: nowrap;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-primary);
    background: var(--sedna-primary);
    color: var(--sedna-text-inverse, #fff);
    font-size: 0.8125rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
}
.rv-apply:hover:not(:disabled)[b-o7grc5axgc] { background: var(--sedna-primary-hover); border-color: var(--sedna-primary-hover); }
.rv-apply:disabled[b-o7grc5axgc] { opacity: .6; cursor: default; }

/* ---------------- Scroller / stati / meta ---------------- */
.rv-scroll[b-o7grc5axgc] { flex: 1; min-height: 0; overflow: auto; display: flex; flex-direction: column; }
.rv-view[b-o7grc5axgc] { display: flex; flex: 1; min-height: 0; flex-direction: column; }
.rv-state[b-o7grc5axgc] { display: flex; align-items: center; gap: 10px; padding: 44px; justify-content: center; color: var(--sedna-text-secondary); font-size: .9375rem; }
.rv-state--err[b-o7grc5axgc] { color: var(--sedna-error-700); }

/* Titolo + azioni dentro la toolbar della griglia (slot ToolbarActions). */
.rv-tb[b-o7grc5axgc] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    font-size: 0.8125rem;
    color: var(--sedna-text-tertiary);
}
/* Titolo di sezione a sinistra nella toolbar della griglia (slot ToolbarStart). */
.rv-tb-ttl[b-o7grc5axgc] { font-size: 0.875rem; font-weight: 600; color: var(--sedna-text); letter-spacing: -0.01em; white-space: nowrap; margin-right: 10px; }
.rv-tb .chip[b-o7grc5axgc] { display: inline-flex; align-items: center; gap: 6px; font-size: 0.6875rem; font-weight: 600; color: var(--sedna-text-secondary); background: var(--sedna-surface-hover); padding: 2px 9px; border-radius: 999px; white-space: nowrap; }
.rv-tb .chip.def[b-o7grc5axgc] { background: var(--sedna-success-50); color: var(--sedna-success-700); }
.rv-print[b-o7grc5axgc] {
    display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px;
    border-radius: var(--sedna-radius-base, .375rem); border: 1px solid var(--sedna-border-strong);
    background: var(--sedna-surface); color: var(--sedna-text-secondary); font-size: .75rem; font-weight: 600;
    font-family: inherit; cursor: pointer;
}
.rv-print:hover[b-o7grc5axgc] { border-color: var(--sedna-primary); color: var(--sedna-primary); }
/* Variante solo-icona: quadrata, non occupa spazio orizzontale nella toolbar. */
.rv-print.rv-print--icon[b-o7grc5axgc] { width: 24px; padding: 0; justify-content: center; }

/* avviso troncamento elenco (castelletto/totali = intero periodo) */
/* ---------------- Pager ---------------- */
.rv-pager[b-o7grc5axgc] {
    flex: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin: 10px var(--rv-pad-x) 0;
}
.rv-pager-info[b-o7grc5axgc] { font-size: 0.8125rem; color: var(--sedna-text-secondary); }
.rv-pager-info b[b-o7grc5axgc] { font-weight: 600; color: var(--sedna-text); font-variant-numeric: tabular-nums; }
.rv-pager-btns[b-o7grc5axgc] { display: inline-flex; align-items: center; gap: 6px; }
.rv-pg[b-o7grc5axgc] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    cursor: pointer;
}
.rv-pg:hover:not(:disabled)[b-o7grc5axgc] { background: var(--sedna-surface-hover); color: var(--sedna-text); }
.rv-pg:disabled[b-o7grc5axgc] { opacity: .45; cursor: default; }
.rv-pg-cur[b-o7grc5axgc] {
    padding: 0 6px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* ---------------- SednaServerGrid + banda per sezionale ---------------- */
.riv-grid-wrap[b-o7grc5axgc] {
    flex: 1;
    min-height: 240px;
    display: flex;
    flex-direction: column;
    margin: 12px var(--rv-pad-x) 0;
}
/* La SednaServerGrid (.ssg) flette internamente ma di default NON riempie il genitore:
   la forzo a flex:1 così si adatta all'altezza disponibile e il pager resta in fondo
   (senza questo si dimensiona sul contenuto e il pager si accavalla sul castelletto). */
.riv-grid-wrap[b-o7grc5axgc]  .ssg { flex: 1 1 auto; min-height: 0; }
/* Banda di raggruppamento (group header della griglia): pulsante collassabile con
   etichetta sezionale + sottototali. */
.riv-band[b-o7grc5axgc] {
    display: flex; align-items: center; gap: 10px; width: 100%;
    border: none; background: transparent; font-family: inherit; text-align: left;
    cursor: pointer; padding: 0; color: inherit;
}
.riv-band:hover .riv-band-ttl[b-o7grc5axgc] { color: var(--sedna-primary); }
.riv-band-chev[b-o7grc5axgc] { transition: transform .15s ease; color: var(--sedna-text-tertiary); font-size: .7rem; }
.riv-band.closed .riv-band-chev[b-o7grc5axgc] { transform: rotate(-90deg); }
.riv-band > i.bi-folder2[b-o7grc5axgc] { color: var(--sedna-primary); }
.riv-band-ttl[b-o7grc5axgc] { font-weight: 600; font-size: .8125rem; color: var(--sedna-text); }
.riv-band-badge[b-o7grc5axgc] {
    font-size: 0.6875rem; font-weight: 600; color: var(--sedna-text-secondary);
    background: var(--sedna-surface-hover); padding: 2px 9px; border-radius: 999px; white-space: nowrap;
}
.riv-band-tot[b-o7grc5axgc] { display: inline-flex; align-items: baseline; gap: 6px; margin-left: auto; font-size: 0.72rem; white-space: nowrap; }
.riv-band-tot .k[b-o7grc5axgc] { color: var(--sedna-text-tertiary); text-transform: uppercase; letter-spacing: .04em; font-weight: 600; }
.riv-band-tot .v[b-o7grc5axgc] { color: var(--sedna-text); font-weight: 600; font-variant-numeric: tabular-nums; margin-right: 8px; }
.riv-band-tot .v.tot[b-o7grc5axgc] { color: var(--sedna-primary); margin-right: 0; }

/* ---------------- Accordion per sezionale ---------------- */
.rv-acc-bar[b-o7grc5axgc] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 12px var(--rv-pad-x) 0;
}
.rv-acc-bar .spacer[b-o7grc5axgc] { flex: 1; }
.rv-acc-count-all[b-o7grc5axgc] { font-size: 0.75rem; font-weight: 600; color: var(--sedna-text-secondary); }
.rv-acc-toggle-all[b-o7grc5axgc] {
    display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 10px;
    border-radius: var(--sedna-radius-base, .375rem); border: 1px solid var(--sedna-border);
    background: var(--sedna-surface); color: var(--sedna-text-secondary); font-size: .72rem; font-weight: 600;
    font-family: inherit; cursor: pointer;
}
.rv-acc-toggle-all:hover:not(:disabled)[b-o7grc5axgc] { border-color: var(--sedna-primary); color: var(--sedna-primary); }
.rv-acc-toggle-all:disabled[b-o7grc5axgc] { opacity: .45; cursor: default; }

.rv-scroll-acc[b-o7grc5axgc] { flex: 1; min-height: 200px; overflow: auto; margin: 10px var(--rv-pad-x) 0; }
.rv-acc[b-o7grc5axgc] { display: flex; flex-direction: column; gap: 8px; }

.rv-acc-item[b-o7grc5axgc] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem);
    background: var(--sedna-surface);
    overflow: hidden;
}
.rv-acc-item.open[b-o7grc5axgc] { border-color: var(--sedna-border-strong); }

.rv-acc-head[b-o7grc5axgc] {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    background: var(--sedna-surface-variant);
    border: none;
    cursor: pointer;
    font-family: inherit;
    text-align: left;
    color: var(--sedna-text);
}
.rv-acc-head:hover[b-o7grc5axgc] { background: var(--sedna-surface-hover); }
.rv-acc-head .spacer[b-o7grc5axgc] { flex: 1; }
.rv-acc-chev[b-o7grc5axgc] { transition: transform .15s ease; color: var(--sedna-text-tertiary); font-size: .75rem; }
.rv-acc-item.open .rv-acc-chev[b-o7grc5axgc] { transform: rotate(90deg); }
.rv-acc-title[b-o7grc5axgc] { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: .8125rem; }
.rv-acc-title > i[b-o7grc5axgc] { color: var(--sedna-primary); }
.rv-acc-badge[b-o7grc5axgc] {
    font-size: 0.6875rem; font-weight: 600; color: var(--sedna-text-secondary);
    background: var(--sedna-surface-hover); padding: 2px 9px; border-radius: 999px; white-space: nowrap;
}
.rv-acc-tot[b-o7grc5axgc] { display: inline-flex; align-items: baseline; gap: 6px; font-size: 0.72rem; white-space: nowrap; }
.rv-acc-tot .k[b-o7grc5axgc] { color: var(--sedna-text-tertiary); text-transform: uppercase; letter-spacing: .04em; font-weight: 600; }
.rv-acc-tot .v[b-o7grc5axgc] { color: var(--sedna-text); font-weight: 600; font-variant-numeric: tabular-nums; margin-right: 8px; }
.rv-acc-tot .v.tot[b-o7grc5axgc] { color: var(--sedna-primary); margin-right: 0; }

.rv-acc-body[b-o7grc5axgc] { max-height: 60vh; overflow: auto; border-top: 1px solid var(--sedna-border); }

/* ---------------- Tabella righe ---------------- */
.rv-tablewrap[b-o7grc5axgc] {
    flex: 1;
    min-height: 200px;
    overflow: auto;
    margin: 12px var(--rv-pad-x) 0;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem);
    background: var(--sedna-surface);
}
table.rv-tt[b-o7grc5axgc] { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 0.8125rem; }
.rv-tt thead th[b-o7grc5axgc] {
    position: sticky;
    top: 0;
    z-index: 3;
    text-align: left;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    background: var(--sedna-surface-variant);
    padding: 10px 12px;
    white-space: nowrap;
    border-bottom: 1px solid var(--sedna-border);
}
.rv-tt th.num[b-o7grc5axgc], .rv-tt td.num[b-o7grc5axgc] { text-align: right; }
.rv-tt th.prot[b-o7grc5axgc] { width: 70px; }
.rv-tt th.dt[b-o7grc5axgc] { width: 96px; }
.rv-tt th.doc[b-o7grc5axgc] { width: 120px; }
.rv-tt th.cod[b-o7grc5axgc] { width: 76px; }
.rv-tt th.pct[b-o7grc5axgc] { width: 56px; }
.rv-tt th.num[b-o7grc5axgc] { width: 110px; }

.rv-tt tbody td[b-o7grc5axgc] { padding: 0 12px; height: 32px; vertical-align: middle; border-bottom: 1px solid var(--sedna-border-light); white-space: nowrap; }
.rv-tt tbody tr:last-child td[b-o7grc5axgc] { border-bottom: none; }
.rv-tt tbody tr:hover td[b-o7grc5axgc] { background: color-mix(in srgb, var(--sedna-primary-subtle) 36%, transparent); }
.rv-tt td.sog[b-o7grc5axgc] { max-width: 240px; overflow: hidden; text-overflow: ellipsis; }
.rv-tt .mono[b-o7grc5axgc] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; }
.rv-tt td.tot[b-o7grc5axgc] { font-weight: 600; }
.rv-tt tr.sosp td[b-o7grc5axgc] { opacity: .62; }

.rv-diff[b-o7grc5axgc] { color: var(--sedna-danger, #b91c1c); font-weight: 600; }
/* ⚠️ Da <a> a <button> (01/09): il pulsante porta di suo bordo, sfondo, padding e un
      allineamento verticale diverso — senza azzerarli la cella cresce e con lei l'altezza di
      TUTTE le righe, comprese quelle che un documento non ce l'hanno. */
.rv-doc-link[b-o7grc5axgc] {
    border: 0;
    background: none;
    padding: 0;
    font: inherit;
    cursor: pointer;
    color: var(--sedna-primary);
    text-decoration: none;
    font-weight: 600;
}
.rv-doc-link:hover[b-o7grc5axgc] { text-decoration: underline; }
.rv-tt .flag[b-o7grc5axgc] {
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 0.575rem; font-weight: 700; letter-spacing: .03em;
    background: var(--sedna-surface-hover); color: var(--sedna-text-secondary);
    border-radius: 4px; padding: 1px 5px; margin-left: 6px; vertical-align: 1px;
}
.rv-tt .flag.nc[b-o7grc5axgc] { background: var(--sedna-warning-50); color: var(--sedna-warning-700); }

/* ---------------- Castelletto + totali ---------------- */
.rv-bottom[b-o7grc5axgc] {
    flex: none;
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin: 10px var(--rv-pad-x) clamp(12px, 1.5vw, 16px);
    min-width: 0;
}
/* Due castelletti affiancati (registrazione + competenza). */
.rv-cast-row[b-o7grc5axgc] { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; min-width: 0; }
/* La SednaGrid del castelletto è chromeless: nascondo la sua toolbar/header vuota e
   comprimo i margini così resta una tabellina compatta dentro il riquadro. */
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-header { display: none; }
/* SednaGrid di suo è alta 100vh: qui la voglio dimensionata al contenuto (compatta). */
.rv-castelletto[b-o7grc5axgc]  .sedna-grid { border: none; border-radius: 0; box-shadow: none; height: auto; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table-container { flex: none; height: auto; }
/* Solo il corpo (wrapper della tabella) scorre, con un'altezza massima ~3-4 righe;
   niente flex qui: collassava a 0 nascondendo tutte le righe. */
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table-wrapper { max-height: 132px; overflow: auto; }
/* Stato VUOTO compatto: senza dati la card deve essere alta quanto quando è popolata
   (di suo la SednaGrid mette un'icona 4rem + padding grande → card altissima). */
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-empty { min-height: 116px; padding: 10px 8px; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-empty i { font-size: 1.8rem !important; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-empty h4 { font-size: 0.82rem; margin: 6px 0 0; }
/* Nel modal il castelletto è alto (molte righe visibili). */
.rv-castelletto.rv-castelletto--full[b-o7grc5axgc] { max-height: none; }
.rv-castelletto.rv-castelletto--full[b-o7grc5axgc]  .sedna-grid-table-wrapper { max-height: 62vh; }
/* Pulsantino "espandi" nell'header della card. */
.rv-cast-expand[b-o7grc5axgc] {
    margin-left: auto;
    display: inline-flex; align-items: center; justify-content: center;
    width: 20px; height: 20px; padding: 0;
    border: none; background: transparent; color: var(--sedna-text-tertiary);
    cursor: pointer; border-radius: 4px; font-size: 0.72rem;
}
.rv-cast-expand:hover[b-o7grc5axgc] { color: var(--sedna-primary); background: var(--sedna-surface-hover); }
/* SednaGrid rende table=flex, thead=table, tbody=block → header e corpo hanno colonne
   INDIPENDENTI e i dati derivano. Riporto a un modello tabellare normale: colonne
   condivise fra thead e tbody → tutto allineato. L'header resta sticky. */
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table { display: table; width: 100%; table-layout: auto; font-size: 0.78rem; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table thead { display: table-header-group; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table tbody { display: table-row-group; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table tfoot { display: table-footer-group; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table tr { display: table-row; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table-wrapper { overflow: auto; }
/* Totali di colonna: riga footer sticky in basso, così restano visibili nello scroll. */
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table tfoot td {
    position: sticky; bottom: 0; z-index: 1;
    background: var(--sedna-surface-variant);
    border-top: 1px solid var(--sedna-border-strong);
    font-variant-numeric: tabular-nums;
    padding: 2px 8px;
}
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table tfoot td strong { font-size: 0.62rem; font-weight: 600; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table th,
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table td { overflow: hidden; text-overflow: ellipsis; }
/* Intestazioni numeriche a destra come i dati (la prima colonna, Cod., resta a sinistra).
   Nel contenitore flex dell'header c'è un segnaposto del filtro a destra che disallinea
   il titolo: lo nascondo (colonne non filtrabili/ordinabili) e allineo a destra. */
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-filter-icon-placeholder,
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-filter-icon-container { display: none; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table thead th:not(:first-child) { text-align: right; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table thead th:not(:first-child) .sedna-grid-header-content { width: 100%; justify-content: flex-end; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table thead th:not(:first-child) .sedna-grid-header-title { flex: 1 1 auto; justify-content: flex-end; text-align: right; }
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table thead th {
    position: sticky; top: 0; z-index: 1;
    background: var(--sedna-surface-variant);
    padding: 2px 8px; height: auto; line-height: 1.35;
    font-size: 0.62rem;
}
.rv-castelletto[b-o7grc5axgc]  .sedna-grid-table td { padding: 4px 8px; white-space: nowrap; }
.rv-castelletto[b-o7grc5axgc] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem);
    background: var(--sedna-surface);
    overflow: hidden;           /* il riquadro non scrolla: scorre solo il corpo della griglia */
    min-width: 0;
    /* ⚠️ NIENTE ALTEZZA FISSA. C'era `height: 158px` per tenere la card uguale da vuota e
       da popolata; da quando i castelletti si CHIUDONO quell'altezza restava anche a
       sezione chiusa — un'intestazione da 48px dentro un riquadro da 158, cioe' 110 pixel
       di bianco sotto (Antonio, 20/08: «sono altissimi con spazio bianco sotto»).
       Ora la card e' alta quanto il suo contenuto: 48px da chiusa, 158 da aperta — che e'
       il `max-height` del corpo della griglia piu' l'intestazione, quindi la card popolata
       resta esattamente com'era. */
    max-height: 158px;
}
/* Nel modal l'altezza fissa non serve: la card si espande. */
.rv-castelletto.rv-castelletto--full[b-o7grc5axgc] { height: auto; }
.rv-cast-head[b-o7grc5axgc] {
    position: sticky; top: 0; z-index: 2;
    display: flex; align-items: center; gap: 8px;
    padding: 4px 12px;
    font-size: 0.7rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface-variant);
    border-bottom: 1px solid var(--sedna-border);
}
.rv-cast-tbl[b-o7grc5axgc] { width: 100%; border-collapse: collapse; font-size: 0.8125rem; }
.rv-cast-tbl th[b-o7grc5axgc] {
    text-align: left; font-size: 0.65rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
    color: var(--sedna-text-tertiary); padding: 7px 12px; border-bottom: 1px solid var(--sedna-border-light); white-space: nowrap;
}
.rv-cast-tbl th.num[b-o7grc5axgc], .rv-cast-tbl td.num[b-o7grc5axgc] { text-align: right; }
.rv-cast-tbl td[b-o7grc5axgc] { padding: 6px 12px; border-top: 1px solid var(--sedna-border-light); white-space: nowrap; }
.rv-cast-tbl .mono[b-o7grc5axgc] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; }
.rv-cast-tbl td.diff[b-o7grc5axgc] { color: var(--sedna-error); font-weight: 700; background: var(--sedna-error-50); }

/* Striscia orizzontale dei totali, in fondo: UNA sola riga, tutto allineato al centro
   verticale (niente baseline che disallinea il totale grande e manda a capo). */
.rv-totali[b-o7grc5axgc] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem);
    background: var(--sedna-surface-variant);
    padding: 6px 16px;
    display: flex;
    flex-flow: row nowrap;
    align-items: center;
    gap: 18px;
    overflow-x: auto;
}
.rv-tot-head[b-o7grc5axgc] { flex: none; display: inline-flex; align-items: center; gap: 8px; font-size: 0.72rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--sedna-text-secondary); white-space: nowrap; }
.rv-totali .t[b-o7grc5axgc] { flex: none; display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
.rv-totali .t .k[b-o7grc5axgc] { font-size: 0.72rem; font-weight: 600; color: var(--sedna-text-tertiary); text-transform: uppercase; letter-spacing: .03em; }
.rv-totali .t .v[b-o7grc5axgc] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; font-weight: 600; color: var(--sedna-text); white-space: nowrap; }
.rv-totali .t.grand[b-o7grc5axgc] { margin-left: auto; padding-left: 18px; border-left: 1px dashed var(--sedna-border-strong); }
.rv-totali .t.grand .k[b-o7grc5axgc] { color: var(--sedna-text); font-size: 0.6875rem; letter-spacing: .05em; }
.rv-totali .t.grand .v[b-o7grc5axgc] { font-size: 1.0625rem; font-weight: 700; color: var(--sedna-primary); }

/* ---------------- Modal stampa ---------------- */
.rv-modal-ov[b-o7grc5axgc] {
    position: fixed; top: 0; right: 0; bottom: 0; left: var(--sedna-sidebar-width, 16rem);
    z-index: 1100; background: rgba(16, 24, 40, .5);
    display: flex; align-items: center; justify-content: center; padding: 24px;
}
.rv-modal[b-o7grc5axgc] {
    width: min(520px, 100%); display: flex; flex-direction: column;
    background: var(--sedna-surface); border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem); box-shadow: 0 12px 40px rgba(16, 24, 40, .25); overflow: hidden;
}
.rv-modal-head[b-o7grc5axgc] { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--sedna-border); flex: none; }
.rv-modal-ico[b-o7grc5axgc] { width: 38px; height: 38px; border-radius: 9px; flex: none; display: grid; place-items: center; background: var(--sedna-primary-subtle); color: var(--sedna-primary); font-size: 1.05rem; }
.rv-modal-titles[b-o7grc5axgc] { flex: 1; min-width: 0; }
.rv-modal-head h2[b-o7grc5axgc] { margin: 0; font-size: 1.0625rem; font-weight: 600; color: var(--sedna-text); }
.rv-modal-sub[b-o7grc5axgc] { font-size: .75rem; color: var(--sedna-text-tertiary); margin-top: 1px; }
.rv-modal-x[b-o7grc5axgc] { width: 32px; height: 32px; flex: none; display: grid; place-items: center; border: none; background: transparent; border-radius: 6px; color: var(--sedna-text-secondary); cursor: pointer; }
.rv-modal-x:hover[b-o7grc5axgc] { background: var(--sedna-surface-hover); color: var(--sedna-text); }
.rv-modal-body[b-o7grc5axgc] { padding: 16px 18px; display: flex; flex-direction: column; gap: 14px; }

.rv-stampa-warn[b-o7grc5axgc] {
    display: flex; align-items: flex-start; gap: 9px; padding: 11px 13px;
    border-radius: var(--sedna-radius-base, .375rem);
    background: var(--sedna-surface-variant); color: var(--sedna-text-secondary);
    font-size: .8125rem; line-height: 1.5;
}
.rv-stampa-warn.on[b-o7grc5axgc] { background: var(--sedna-warning-50); color: var(--sedna-warning-700); }
.rv-stampa-warn i[b-o7grc5axgc] { margin-top: 2px; }
.rv-stampa-form[b-o7grc5axgc] { display: flex; gap: 18px; align-items: flex-end; flex-wrap: wrap; }
.rv-stampa-err[b-o7grc5axgc] { display: flex; align-items: center; gap: 8px; font-size: .8125rem; color: var(--sedna-error-700); }

.rv-modal-foot[b-o7grc5axgc] { display: flex; justify-content: flex-end; gap: 10px; padding: 12px 18px; border-top: 1px solid var(--sedna-border); background: var(--sedna-surface-variant); }
.rv-cancel[b-o7grc5axgc] {
    height: 34px; padding: 0 14px; border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-border-strong); background: var(--sedna-surface);
    color: var(--sedna-text-secondary); font-size: .8125rem; font-weight: 600; font-family: inherit; cursor: pointer;
}
.rv-cancel:hover[b-o7grc5axgc] { color: var(--sedna-text); }
.rv-confirm[b-o7grc5axgc] {
    display: inline-flex; align-items: center; gap: 7px;
    height: 34px; padding: 0 16px; border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-primary); background: var(--sedna-primary);
    color: var(--sedna-text-inverse, #fff); font-size: .8125rem; font-weight: 600; font-family: inherit; cursor: pointer;
}
.rv-confirm:hover:not(:disabled)[b-o7grc5axgc] { background: var(--sedna-primary-hover); }
.rv-confirm.danger[b-o7grc5axgc] { border-color: var(--sedna-error-600); background: var(--sedna-error-600); }
.rv-confirm.danger:hover:not(:disabled)[b-o7grc5axgc] { background: var(--sedna-error-700); }
.rv-confirm:disabled[b-o7grc5axgc] { opacity: .6; cursor: default; }

@media (max-width: 1080px) {
    .rv-cast-row[b-o7grc5axgc] { grid-template-columns: 1fr; }
    .rv-filters[b-o7grc5axgc] { gap: 10px; }
}

/* ═══ CONTROLLI registro IVA ═══ */

.rv-tb .chip.ctrl[b-o7grc5axgc] { border: none; cursor: pointer; font: inherit; }
.rv-tb .chip.ctrl.ok[b-o7grc5axgc] { background: var(--sedna-success-100, #dcfce7); color: var(--sedna-success-700, #15803d); }
.rv-tb .chip.ctrl.ko[b-o7grc5axgc] { background: var(--sedna-error-100, #fee2e2); color: var(--sedna-error-700, #b91c1c); }

.rv-modal--wide[b-o7grc5axgc] { width: min(920px, 96vw); }

.rv-modal-head.ok .rv-modal-ico[b-o7grc5axgc] { color: var(--sedna-success-600, #16a34a); }
.rv-modal-head.ko .rv-modal-ico[b-o7grc5axgc] { color: var(--sedna-error-600, #dc2626); }

.rv-ctrl-ok[b-o7grc5axgc] {
    display: flex;
    gap: .75rem;
    align-items: flex-start;
    padding: 1rem;
    border-radius: var(--sedna-radius-base, .375rem);
    background: var(--sedna-success-50, #f0fdf4);
    color: var(--sedna-success-800, #166534);
    font-size: .8125rem;
}

.rv-ctrl-ok i[b-o7grc5axgc] { font-size: 1.25rem; }

.rv-ctrl-sum[b-o7grc5axgc] { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .75rem; }

.rv-ctrl-chip[b-o7grc5axgc] {
    padding: .1rem .55rem;
    border-radius: 999px;
    font-size: .74rem;
    font-weight: 600;
}

.rv-ctrl-chip.saltati[b-o7grc5axgc] { background: var(--sedna-warning-100, #fef3c7); color: var(--sedna-warning-800, #92400e); }
.rv-ctrl-chip.doppi[b-o7grc5axgc]   { background: var(--sedna-error-100, #fee2e2);  color: var(--sedna-error-700, #b91c1c); }
.rv-ctrl-chip.iva[b-o7grc5axgc]     { background: var(--sedna-info-100, #dbeafe);   color: var(--sedna-info-800, #1e40af); }
.rv-ctrl-chip.diffiva[b-o7grc5axgc],
.rv-ctrl-chip.diff[b-o7grc5axgc]    { background: var(--sedna-warning-100, #fef3c7); color: var(--sedna-warning-800, #92400e); }

.rv-ctrl-list[b-o7grc5axgc] { max-height: 52vh; overflow-y: auto; }

.rv-ctrl-sez[b-o7grc5axgc] {
    position: sticky;
    top: 0;
    background: var(--sedna-surface-variant, #f8fafc);
    border-top: 1px solid var(--sedna-border-light, #eceff3);
    padding: .3rem .5rem;
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--sedna-text-secondary, #4b5563);
}

.rv-ctrl-row[b-o7grc5axgc] {
    display: flex;
    align-items: flex-start;
    gap: .55rem;
    padding: .4rem .5rem;
    border-bottom: 1px solid var(--sedna-border-light);
    font-size: .8125rem;
}

.rv-ctrl-row i[b-o7grc5axgc] { margin-top: .15rem; }
.rv-ctrl-row.saltato i[b-o7grc5axgc]  { color: var(--sedna-warning-600, #d97706); }
.rv-ctrl-row.doppio i[b-o7grc5axgc]   { color: var(--sedna-error-600, #dc2626); }
.rv-ctrl-row.ivavuota i[b-o7grc5axgc] { color: var(--sedna-info-600, #2563eb); }
.rv-ctrl-row.diffiva i[b-o7grc5axgc]  { color: var(--sedna-warning-600, #d97706); }

.rv-ctrl-msg[b-o7grc5axgc] { flex: 1 1 auto; }

.rv-ctrl-reg[b-o7grc5axgc] {
    display: block;
    font-size: .72rem;
    color: var(--sedna-text-tertiary, #9ca3af);
}

.rv-ctrl-open[b-o7grc5axgc] {
    flex: 0 0 auto;
    border: 1px solid var(--sedna-border, #e5e7eb);
    background: var(--sedna-surface, #fff);
    border-radius: 5px;
    padding: .1rem .4rem;
    cursor: pointer;
    color: var(--sedna-primary, #2563eb);
}

.rv-ctrl-open:hover[b-o7grc5axgc] { background: var(--sedna-surface-hover, #f1f5f9); }

/* Conferme incatenate: sopra alle altre modal (la lista controlli resta visibile sotto). */
.rv-modal-ov--top[b-o7grc5axgc] { z-index: 1400; }
.rv-modal--ask[b-o7grc5axgc] { width: min(460px, 94vw); }

.rv-ask[b-o7grc5axgc] {
    display: flex;
    gap: .6rem;
    align-items: flex-start;
    font-size: .875rem;
}

.rv-ask i[b-o7grc5axgc] { font-size: 1.35rem; color: var(--sedna-warning-600, #d97706); }

/* ═══ Correzioni manuali su una registrazione ═══ */

.rv-th-act[b-o7grc5axgc], .rv-td-act[b-o7grc5axgc] { width: 34px; text-align: center; }

.rv-rowact[b-o7grc5axgc] {
    border: none;
    background: transparent;
    color: var(--sedna-text-tertiary, #9ca3af);
    cursor: pointer;
    padding: 0 .2rem;
    border-radius: 4px;
}

.rv-rowact:hover[b-o7grc5axgc] { color: var(--sedna-primary, #2563eb); background: var(--sedna-surface-hover, #f1f5f9); }

.rv-corr-sec[b-o7grc5axgc] {
    padding: .75rem 0;
    border-top: 1px solid var(--sedna-border-light, #eceff3);
}

.rv-corr-sec:first-child[b-o7grc5axgc] { border-top: none; padding-top: 0; }

.rv-corr-tit[b-o7grc5axgc] {
    font-size: .8125rem;
    font-weight: 700;
    margin-bottom: .5rem;
    display: flex;
    align-items: center;
    gap: .4rem;
}

.rv-corr-row[b-o7grc5axgc] {
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-wrap: wrap;
}

.rv-corr-row label[b-o7grc5axgc] { font-size: .78rem; color: var(--sedna-text-secondary, #4b5563); }

.rv-in[b-o7grc5axgc] {
    border: 1px solid var(--sedna-border, #e5e7eb);
    border-radius: 5px;
    padding: .15rem .4rem;
    font-size: .8125rem;
    width: 130px;
}

.rv-in--s[b-o7grc5axgc] { width: 60px; }

.rv-corr-hint[b-o7grc5axgc] {
    font-size: .72rem;
    color: var(--sedna-text-tertiary, #9ca3af);
    margin-top: .35rem;
}

.rv-corr-warn[b-o7grc5axgc] {
    display: flex;
    gap: .4rem;
    align-items: flex-start;
    margin-top: .5rem;
    padding: .45rem .6rem;
    border-radius: 5px;
    font-size: .78rem;
    background: var(--sedna-warning-50, #fffbeb);
    color: var(--sedna-warning-800, #92400e);
}

.rv-corr-warn.err[b-o7grc5axgc] {
    background: var(--sedna-error-50, #fef2f2);
    color: var(--sedna-error-700, #b91c1c);
}

.rv-corr-prev[b-o7grc5axgc] { margin-top: .6rem; }

.rv-corr-prev-h[b-o7grc5axgc] {
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--sedna-text-secondary, #4b5563);
    margin-bottom: .25rem;
}

.rv-corr-tbl[b-o7grc5axgc] {
    width: 100%;
    border-collapse: collapse;
    font-size: .76rem;
    max-height: 240px;
}

.rv-corr-tbl th[b-o7grc5axgc] {
    text-align: left;
    font-weight: 600;
    color: var(--sedna-text-secondary, #4b5563);
    border-bottom: 1px solid var(--sedna-border, #e5e7eb);
    padding: .2rem .35rem;
}

.rv-corr-tbl td[b-o7grc5axgc] {
    padding: .18rem .35rem;
    border-bottom: 1px solid var(--sedna-border-light);
}

.rv-corr-tbl .num[b-o7grc5axgc] { text-align: right; }
.rv-corr-tbl tr.chg[b-o7grc5axgc] { background: var(--sedna-warning-50, #fffbeb); }
.rv-corr-tbl td.new[b-o7grc5axgc] { font-weight: 700; color: var(--sedna-success-700, #15803d); }

/* Analisi: tab castelletti competenza / bilancio */
.rv-an-tabs[b-o7grc5axgc] { display: flex; gap: .3rem; margin-bottom: .6rem; flex-wrap: wrap; }

.rv-an-tabs button[b-o7grc5axgc] {
    border: 1px solid var(--sedna-border, #e5e7eb);
    background: var(--sedna-surface, #fff);
    border-radius: 999px;
    padding: .15rem .7rem;
    font-size: .78rem;
    cursor: pointer;
    color: var(--sedna-text-secondary, #4b5563);
}

.rv-an-tabs button.on[b-o7grc5axgc] {
    background: var(--sedna-primary, #2563eb);
    border-color: var(--sedna-primary, #2563eb);
    color: #fff;
}

.rv-an-hint[b-o7grc5axgc] { font-size: .78rem; color: var(--sedna-text-secondary, #4b5563); margin: 0 0 .5rem; }

/* Impostazioni dei controlli */
.rv-set-row[b-o7grc5axgc] {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    padding: .55rem 0;
    border-bottom: 1px solid var(--sedna-border-light);
    font-size: .8125rem;
}

.rv-set-row:last-child[b-o7grc5axgc] { border-bottom: none; }
.rv-set-row span[b-o7grc5axgc] { display: flex; flex-direction: column; flex: 1 1 auto; }
.rv-set-row small[b-o7grc5axgc] { color: var(--sedna-text-tertiary, #9ca3af); font-size: .72rem; }

/* ── Castelletti: due sezioni separate, richiudibili una per una ── */
.rv-cast-head--btn[b-o7grc5axgc] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    border: none;
    background: transparent;
    font-family: inherit;
    text-align: left;
    cursor: pointer;
}

.rv-cast-ttl[b-o7grc5axgc] { font-weight: 600; }

/* I totali del castelletto chiuso: a destra, incolonnati come i numeri della tabella
   che sostituiscono. */
.rv-cast-tot[b-o7grc5axgc] {
    margin-left: auto;
    display: inline-flex;
    align-items: baseline;
    gap: 14px;
    font-variant-numeric: tabular-nums;
}

.rv-cast-tot .t[b-o7grc5axgc] { display: inline-flex; align-items: baseline; gap: 5px; }
.rv-cast-tot .k[b-o7grc5axgc] { font-size: 0.625rem; text-transform: uppercase; letter-spacing: .03em; color: var(--sedna-text-tertiary); }
.rv-cast-tot .v[b-o7grc5axgc] { font-size: 0.75rem; font-weight: 600; color: var(--sedna-text); }
.rv-cast-tot .grand .v[b-o7grc5axgc] { color: var(--sedna-primary); }

/* /Pages/Contabilita/Scadenze/ScadenzeView.razor.rz.scp.css */
/* ============================================================
   SCADENZIARIO — aging incassi/pagamenti (redesign).
   Urgenza = badge ritardo + stato (NON tinte di riga).
   Token --sedna-* → dark mode automatica.
   ============================================================ */

/* Root a viewport fisso dal guscio globale .sedna-page (sedna.page.css):
   height calc(100dvh - 1rem) + overflow (corregge l'1rem di sbordo della
   vecchia 100vh). Le sezioni gestiscono da sé il proprio inset, quindi
   azzero il padding-inline del guscio per non spostare il layout. */
.sc-page[b-z0gpt2xja1] {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-width: 0;       /* non crescere oltre il parent (flex) → niente overflow X */
    /* ⚠️ NIENTE `max-width` NE' `margin: 0 auto` (Bruno, 10/09): c'era un tetto a 1600px, e su un
       viewport da 1920 lasciava 32px vuoti a destra — su schermi piu' larghi cresce. Saldi, scheda
       contabile e mastrino non hanno il tetto: una pagina dello stesso modulo che si ferma prima
       sembra caricata a meta', non «composta». */
    /* ⚠️ UNA SOLA ALTEZZA PER TUTTA LA FASCIA (Antonio, 21/08: «sembra ci sia un
       disallineamento fra i filtri»). Non sembrava: i controlli erano quattro altezze
       diverse — 20px le lenti, 24 il segmentato, 26 i preset, 28-30 il resto — e la riga
       li allinea in BASSO. Con basi comuni e altezze diverse le etichette sopra finiscono
       a quote diverse, ed e' quello che si vedeva.
       Il valore e' il token degli input: cosi' la fascia segue i campi e non un numero
       scritto qui, che nessuno si ricorda di aggiornare. */
    --ctrl-h: var(--sedna-input-height, 1.375rem);
    /* Inset delle sezioni interne. Deve valere ZERO: la testata (SednaPageHead) è
       una card allineata al bordo del contenuto, e finché filtri, tab, griglia e
       totali usavano un clamp di 18-28px erano tutti rientrati rispetto a lei. */
    --sc-inset: 0px;
    --row-h: clamp(26px, 0.6vw + 20px, 30px);
}

.sc-page .mono[b-z0gpt2xja1] {
    font-family: var(--sedna-font-mono);
    font-variant-numeric: tabular-nums;
}

/* ---------- Header ---------- */
.sc-head[b-z0gpt2xja1] {
    flex: none;
    background: var(--sedna-surface);
    border-bottom: 1px solid var(--sedna-border);
    padding: 8px var(--sc-inset) 0;
}

.sc-head-top[b-z0gpt2xja1] { display: flex; align-items: center; gap: 16px; }

.sc-head .crest[b-z0gpt2xja1] {
    width: 44px; height: 44px; border-radius: 10px;
    background: var(--sedna-surface-variant); color: var(--sedna-text-secondary);
    display: grid; place-items: center; font-size: 1.3rem; flex: none;
}

.sc-title h1[b-z0gpt2xja1] { margin: 0; font-size: var(--sedna-text-3xl); font-weight: 600; letter-spacing: -0.02em; line-height: 1.1; color: var(--sedna-text); }
.sc-title .sub[b-z0gpt2xja1] { margin: 2px 0 0; font-size: var(--sedna-text-sm); color: var(--sedna-text-tertiary); }
.sc-title .sub .mono[b-z0gpt2xja1] { color: var(--sedna-text); font-weight: 500; }
.sc-head-actions[b-z0gpt2xja1] { margin-left: auto; display: flex; align-items: center; gap: 8px; flex: none; }

.icon-btn[b-z0gpt2xja1] {
    width: var(--ctrl-h); height: var(--ctrl-h); display: grid; place-items: center;
    border: 1px solid transparent; background: transparent; border-radius: var(--sedna-radius-base);
    color: var(--sedna-text-secondary); cursor: pointer; font-size: 1.05rem;
}
.icon-btn:hover[b-z0gpt2xja1] { background: var(--sedna-surface-variant); color: var(--sedna-text); }
.icon-btn:disabled[b-z0gpt2xja1] { opacity: 0.6; cursor: default; }

.persp-row[b-z0gpt2xja1] { display: flex; align-items: center; gap: 12px; padding: 8px 0 8px; }

/* ---------- Fascia aging ---------- */
.aging[b-z0gpt2xja1] { flex: none; padding: 8px var(--sc-inset) 2px; }
.aging-grid[b-z0gpt2xja1] { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.aging-card[b-z0gpt2xja1] {
    text-align: left; cursor: pointer; font-family: inherit;
    background: var(--sedna-surface); border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-lg);
    padding: 8px 13px; display: flex; flex-direction: column; gap: 4px; position: relative;
}
.aging-card:hover[b-z0gpt2xja1] { box-shadow: 0 2px 4px rgba(16,24,40,0.06), 0 4px 14px rgba(16,24,40,0.08); }
.aging-card:focus-visible[b-z0gpt2xja1] { outline: 2px solid var(--sedna-primary); outline-offset: 2px; }
.aging-card .a-lbl[b-z0gpt2xja1] {
    font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase;
    color: var(--sedna-text-tertiary); display: flex; align-items: center; gap: 7px;
}
.aging-card .a-dot[b-z0gpt2xja1] { width: 8px; height: 8px; border-radius: 50%; flex: none; background: var(--sedna-text-tertiary); }
.aging-card .a-val[b-z0gpt2xja1] {
    font-family: var(--sedna-font-mono); font-variant-numeric: tabular-nums;
    font-weight: 700; font-size: 1.125rem; letter-spacing: -0.01em; color: var(--sedna-text);
}
.aging-card .a-cnt[b-z0gpt2xja1] { font-size: 0.75rem; color: var(--sedna-text-tertiary); }
.aging-card .a-cnt .mono[b-z0gpt2xja1] { color: var(--sedna-text-secondary); font-weight: 500; }
/* codifica fasce */
.aging-card.scaduto .a-dot[b-z0gpt2xja1] { background: var(--sedna-error-600); }
.aging-card.scaduto .a-val[b-z0gpt2xja1] { color: var(--sedna-error-700); }
.aging-card.oggi    .a-dot[b-z0gpt2xja1] { background: var(--sedna-warning-600); }
.aging-card.sette   .a-dot[b-z0gpt2xja1] { background: var(--sedna-info-600); }
.aging-card.trenta  .a-dot[b-z0gpt2xja1] { background: var(--sedna-text-tertiary); }
.aging-card.oltre   .a-dot[b-z0gpt2xja1] { background: var(--sedna-border-strong); }
.aging-card.oltre   .a-lbl[b-z0gpt2xja1], .aging-card.oltre .a-val[b-z0gpt2xja1] { color: var(--sedna-text-secondary); }
/* attiva */
.aging-card.active[b-z0gpt2xja1] { border-color: var(--sedna-primary); box-shadow: 0 0 0 1px var(--sedna-primary); }
.aging-card.active[b-z0gpt2xja1]::after {
    content: ""; position: absolute; inset: 0; border-radius: var(--sedna-radius-lg);
    background: var(--sedna-primary-subtle); opacity: 0.5; pointer-events: none;
}

/* ---------- Filtri ---------- */
/* ⚠️ ARIA RIDOTTA FRA INTESTAZIONE, FILTRI E SCHEDE (Antonio, 21/08). Ogni pixel qui e' un
   pixel di griglia in meno, e questa e' una pagina che si apre per leggere scadenze: i
   filtri si impostano una volta, le righe si guardano per minuti. */
.filters[b-z0gpt2xja1] { flex: none; padding: 2px var(--sc-inset) 0; }
/* Tutti i filtri e i preset su UNA riga: niente wrap; se non entrano, scroll orizzontale. */
.filter-row[b-z0gpt2xja1] { display: flex; align-items: flex-end; gap: 10px; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; }
.filter-row > *[b-z0gpt2xja1] { flex: none; }
.fg[b-z0gpt2xja1] { display: flex; flex-direction: column; gap: 3px; }
.fg .fl[b-z0gpt2xja1] { font-size: var(--sedna-text-xs); font-weight: 500; letter-spacing: 0.04em; text-transform: uppercase; color: var(--sedna-text-tertiary); }

/* Lookup del soggetto: e' un componente figlio e nasce piu' ALTA degli altri
   controlli della riga. Senza riportarla a --ctrl-h la riga si allinea su di lei e
   tutto il resto sembra sfalsato (scope proprio, quindi ::deep). */
.fg--soggetto[b-z0gpt2xja1] { width: 220px; }
.filter-row[b-z0gpt2xja1]  .sc-lookup { width: 100%; }
.filter-row[b-z0gpt2xja1]  .sc-lookup .sedna-native-input,
.filter-row[b-z0gpt2xja1]  .sc-lookup input[type="text"] {
    height: var(--ctrl-h);
    min-height: var(--ctrl-h);
    font-size: 0.8125rem;
}
.filter-row[b-z0gpt2xja1]  .sc-lookup .dxbl-edit,
.filter-row[b-z0gpt2xja1]  .sc-lookup .sedna-lookup-container { min-height: var(--ctrl-h); }

.inp[b-z0gpt2xja1], .sel[b-z0gpt2xja1] {
    height: var(--ctrl-h); border: 1px solid var(--sedna-border); background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base); padding: 0 10px; font-size: 0.8125rem; color: var(--sedna-text);
    outline: none; font-family: inherit;
}
.inp.mono[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-variant-numeric: tabular-nums; }
.inp:focus[b-z0gpt2xja1], .sel:focus[b-z0gpt2xja1] { border-color: var(--sedna-primary); box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }
.inp[b-z0gpt2xja1]::placeholder { color: var(--sedna-text-tertiary); }

/* ---------- Vista (stato + solo scadute) nella TESTATA ----------
   Misure della testata, non dei filtri: 24px e font 11px come i segmented delle
   altre pagine, così stanno accanto al titolo senza allargare la riga. */
.sc-seg-head[b-z0gpt2xja1] {
    display: inline-flex; align-items: center; height: var(--ctrl-h); padding: 2px; gap: 2px;
    border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-base);
    background: var(--sedna-surface);
}
.sc-seg-head button[b-z0gpt2xja1] {
    border: none; background: transparent; cursor: pointer; font-family: inherit;
    font-size: 0.6875rem; font-weight: 600; color: var(--sedna-text-secondary);
    padding: 0 9px; height: 100%; border-radius: 4px; white-space: nowrap;
}
.sc-seg-head button:hover[b-z0gpt2xja1] { color: var(--sedna-text); }
.sc-seg-head button.active[b-z0gpt2xja1] { background: var(--sedna-surface-variant); color: var(--sedna-primary); box-shadow: var(--sedna-shadow-sm); }
.sc-seg-head button:focus-visible[b-z0gpt2xja1] { outline: 2px solid var(--sedna-primary); outline-offset: 1px; }

.sc-tog-head[b-z0gpt2xja1] {
    height: var(--ctrl-h); box-sizing: border-box; display: inline-flex; align-items: center; gap: 6px;
    padding: 0 9px; border: 1px solid var(--sedna-border); background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base); color: var(--sedna-text-secondary); cursor: pointer;
    font-family: inherit; font-size: 0.6875rem; font-weight: 600; white-space: nowrap;
}
.sc-tog-head:hover[b-z0gpt2xja1] { color: var(--sedna-text); }
.sc-tog-head.on[b-z0gpt2xja1] { background: var(--sedna-primary-subtle); color: var(--sedna-primary); border-color: transparent; }
.sc-tog-head .box[b-z0gpt2xja1] {
    width: 13px; height: 13px; border-radius: 3px; border: 1.5px solid var(--sedna-border-strong);
    display: grid; place-items: center; font-size: 0.55rem; color: transparent;
}
.sc-tog-head.on .box[b-z0gpt2xja1] { background: var(--sedna-primary); border-color: var(--sedna-primary); color: #fff; }

.date-range[b-z0gpt2xja1] { display: flex; align-items: center; gap: 6px; }

/* La larghezza dei due campi data NON si fissa piu' in pixel qui: la calcola
   SednaDateEdit dal contenuto (10ch + i bottoni interni), cosi' segue il font.
   128px erano uno di troppo pochi: l'anno finiva in ellipsis. */
.date-range[b-z0gpt2xja1]  .sedna-date-range__field {
    width: calc(10ch + 3.75rem);
}

/* I due campi data e il pulsante nascevano PIU' ALTI del resto della riga (il
   date range e' un componente figlio, il pulsante era un DevExpress): tirava su
   l'allineamento di tutta la barra. Riportati all'altezza dei filtri. */
.date-range[b-z0gpt2xja1]  .sedna-date-range,
.date-range[b-z0gpt2xja1]  .dxbl-edit { min-height: var(--ctrl-h); }
.date-range[b-z0gpt2xja1]  input[type="text"],
.date-range[b-z0gpt2xja1]  .sedna-native-input {
    height: var(--ctrl-h);
    min-height: var(--ctrl-h);
    font-size: 0.8125rem;
}

.sc-apply[b-z0gpt2xja1] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    gap: 6px;
    /* Piu' basso degli altri controlli di proposito: e' un comando, non un campo. */
    height: 26px;
    padding: 0 10px;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-primary);
    background: var(--sedna-primary);
    color: var(--sedna-text-inverse, #fff);
    font-size: 0.8125rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    white-space: nowrap;
}
.sc-apply:hover[b-z0gpt2xja1] { background: var(--sedna-primary-hover); border-color: var(--sedna-primary-hover); }
/* Filtri toccati e non ancora applicati: nessuna animazione — una cosa che pulsa in
   testa alla pagina si guarda per tutto il tempo in cui si lavora. Lo dice gia' la
   griglia, con le sue parole, dove i dati non ci sono. */

/* Combo "Filtra per data": e' un componente figlio, quindi la misura va data via
   ::deep, altrimenti prende la sua larghezza naturale e sfonda la riga. */
.filter-row[b-z0gpt2xja1]  .sc-se { width: 158px; }
.filter-row[b-z0gpt2xja1]  .sc-se .sedna-native-input,
.filter-row[b-z0gpt2xja1]  .sc-se input[type="text"] {
    height: var(--ctrl-h);
    min-height: var(--ctrl-h);
    font-size: 0.8125rem;
}
.filter-row[b-z0gpt2xja1]  .sc-se .sedna-lookup-container,
.filter-row[b-z0gpt2xja1]  .sc-se .dxbl-edit { min-height: var(--ctrl-h); }

/* Combobox "Filtra per data" (data fattura/scadenza/registrazione). */
.date-field-sel[b-z0gpt2xja1] {
    height: var(--ctrl-h);
    /* Senza border-box i bordi si sommano all'altezza e la combo sporge dalla riga. */
    box-sizing: border-box;
    padding: 0 26px 0 9px;
    font-size: 0.8125rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, 0.375rem);
    background-color: var(--sedna-surface);
    color: var(--sedna-text);
    font-size: 0.8125rem;
    font-family: inherit;
    cursor: pointer;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23757575' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 6l3.5 3.5L11.5 6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 9px center;
}
.date-field-sel:focus[b-z0gpt2xja1] { outline: none; border-color: var(--sedna-primary); box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }
.date-range .inp[b-z0gpt2xja1] { width: 140px; }
.date-range .dash[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); }
.presets[b-z0gpt2xja1] { display: flex; gap: 5px; }
.preset[b-z0gpt2xja1] {
    height: var(--ctrl-h); padding: 0 10px; border: 1px solid var(--sedna-border); background: var(--sedna-surface);
    border-radius: 999px; font-size: var(--sedna-text-xs); font-weight: 600; color: var(--sedna-text-secondary); cursor: pointer; font-family: inherit;
}
.preset:hover[b-z0gpt2xja1] { background: var(--sedna-surface-variant); color: var(--sedna-text); }
.preset.active[b-z0gpt2xja1] { background: var(--sedna-primary-subtle); color: var(--sedna-primary); border-color: transparent; }

.subject-search[b-z0gpt2xja1] { position: relative; flex: 1; min-width: 240px; }
.subject-input[b-z0gpt2xja1] { position: relative; flex: 1; min-width: 220px; }
.subject-input i[b-z0gpt2xja1] { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: var(--sedna-text-tertiary); font-size: 0.9rem; pointer-events: none; }
.subject-input .inp[b-z0gpt2xja1] { width: 100%; padding-left: 32px; }

/* azzera filtri (icona) */
.clear-icon[b-z0gpt2xja1] {
    height: var(--ctrl-h); width: var(--ctrl-h); flex: none; display: grid; place-items: center;
    border: 1px solid var(--sedna-border); background: var(--sedna-surface); color: var(--sedna-text-secondary);
    border-radius: var(--sedna-radius-base); cursor: pointer; font-size: 0.95rem;
}
.clear-icon:hover[b-z0gpt2xja1] { background: var(--sedna-surface-variant); color: var(--sedna-text); }
.clear-icon:focus-visible[b-z0gpt2xja1] { outline: 2px solid var(--sedna-primary); outline-offset: 1px; }

/* riga separatore mese nella griglia */
.aging-table tbody tr.month-row td[b-z0gpt2xja1] {
    background: var(--sedna-surface-variant);
    padding: 7px 14px;
    border-top: 1px solid var(--sedna-border);
    border-bottom: 1px solid var(--sedna-border-light);
}
.aging-table tbody tr.month-row:hover td[b-z0gpt2xja1] { background: var(--sedna-surface-variant); }
.month-lbl[b-z0gpt2xja1] {
    display: inline-flex; align-items: center; gap: 7px;
    font-size: 0.8125rem; font-weight: 700; letter-spacing: 0.01em; color: var(--sedna-text);
}
.month-lbl i[b-z0gpt2xja1] { color: var(--sedna-primary); }
/* Totale del mese nella banda: sta a DESTRA dell'etichetta e su una riga sola. Il
   residuo è il numero che si legge in uno scadenziario, quindi è l'unico in evidenza;
   l'importo documento e il conteggio lo accompagnano più tenui. */
.month-tot[b-z0gpt2xja1] {
    display: inline-flex; align-items: baseline; gap: 7px; margin-left: 14px;
    font-size: 0.75rem; white-space: nowrap;
}
.month-tot .mt-k[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); font-weight: 600; letter-spacing: 0.03em; text-transform: uppercase; font-size: 0.6875rem; }
.month-tot .mt-v[b-z0gpt2xja1] {
    font-family: var(--sedna-font-mono); font-variant-numeric: tabular-nums;
    font-weight: 700; color: var(--sedna-text);
}
.month-tot .mt-v--soft[b-z0gpt2xja1] { font-weight: 500; color: var(--sedna-text-secondary); }
.month-tot .mt-sep[b-z0gpt2xja1] { width: 1px; height: 11px; background: var(--sedna-border); align-self: center; }
.month-tot .mt-cnt[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); }

.month-meta[b-z0gpt2xja1] { margin-left: 12px; font-size: 0.75rem; color: var(--sedna-text-tertiary); }
.month-meta .mono[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-weight: 600; color: var(--sedna-text-secondary); }

/* chip filtri attivi */
.chips-row[b-z0gpt2xja1] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 6px 0 8px; border-bottom: 1px solid var(--sedna-border); }
.fchip[b-z0gpt2xja1] {
    display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 6px 0 11px; border-radius: 999px;
    background: var(--sedna-surface-variant); color: var(--sedna-text); font-size: 0.75rem; font-weight: 600;
}
.fchip .k[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); font-weight: 500; }
.fchip .x[b-z0gpt2xja1] {
    width: 18px; height: 18px; display: grid; place-items: center; border: none; background: transparent;
    color: var(--sedna-text-tertiary); cursor: pointer; border-radius: 50%; font-size: 0.7rem;
}
.fchip .x:hover[b-z0gpt2xja1] { background: var(--sedna-border-strong); color: var(--sedna-text); }
.chips-row .clear[b-z0gpt2xja1] { background: none; border: none; cursor: pointer; color: var(--sedna-primary); font-size: 0.75rem; font-weight: 600; font-family: inherit; margin-left: 2px; }
.chips-row .clear:hover[b-z0gpt2xja1] { text-decoration: underline; }

/* ---------- Tab ---------- */
.sc-tabs-row[b-z0gpt2xja1] { display: flex; align-items: center; gap: 14px; padding: 4px var(--sc-inset) 0; flex: none; border-bottom: 1px solid var(--sedna-border); }
.sc-tabs[b-z0gpt2xja1] { display: flex; gap: 2px; }
.sc-tab[b-z0gpt2xja1] {
    display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px 8px;
    border: none; background: transparent; cursor: pointer; font-family: inherit;
    font-size: var(--sedna-text-sm); font-weight: 500; color: var(--sedna-text-secondary); border-bottom: 2px solid transparent; white-space: nowrap;
}
.sc-tab .cnt[b-z0gpt2xja1] { font-size: var(--sedna-text-xs); font-weight: 600; color: var(--sedna-text-tertiary); background: var(--sedna-surface-variant); padding: 1px 7px; border-radius: 999px; }
.sc-tab:hover[b-z0gpt2xja1] { color: var(--sedna-text); }
.sc-tab.active[b-z0gpt2xja1] { color: var(--sedna-primary); font-weight: 600; border-bottom-color: var(--sedna-primary); }
.sc-tab.active .cnt[b-z0gpt2xja1] { background: var(--sedna-primary-subtle); color: var(--sedna-primary); }

/* ricerca globale (a destra della tab-row) */

/* ---------- Bulk bar (selezione) ---------- */
.bulk-bar[b-z0gpt2xja1] {
    display: flex; align-items: center; gap: 12px;
    margin: 12px var(--sc-inset) 0; padding: 9px 14px;
    background: var(--sedna-primary-subtle);
    border: 1px solid color-mix(in srgb, var(--sedna-primary) 28%, transparent);
    border-radius: var(--sedna-radius-base); flex: none;
}
.bulk-bar .count[b-z0gpt2xja1] { font-weight: 600; font-size: var(--sedna-text-sm); color: var(--sedna-primary); white-space: nowrap; }
.bulk-bar .count .mono[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-weight: 700; }
.bulk-bar .deselect[b-z0gpt2xja1] { background: none; border: none; cursor: pointer; color: var(--sedna-text-secondary); font-size: 0.8125rem; font-weight: 600; font-family: inherit; }
.bulk-bar .deselect:hover[b-z0gpt2xja1] { color: var(--sedna-text); }
.bulk-bar .sep[b-z0gpt2xja1] { width: 1px; height: 18px; background: color-mix(in srgb, var(--sedna-primary) 30%, transparent); }

/* ---------- Selezione: checkbox + riga selezionata ---------- */
.aging-table th.col-check[b-z0gpt2xja1], .aging-table td.col-check[b-z0gpt2xja1] { width: 42px; padding-left: 14px; }
.cbx[b-z0gpt2xja1] { width: 16px; height: 16px; accent-color: var(--sedna-primary); cursor: pointer; display: block; }
.aging-table tbody tr.selected td[b-z0gpt2xja1] { background: var(--sedna-primary-subtle); }
.aging-table tbody tr.selected td.col-actions[b-z0gpt2xja1] { background: var(--sedna-primary-subtle); }

/* ---------- Tabella .aging-table ---------- */
.table-wrap[b-z0gpt2xja1] {
    flex: 1; min-height: 0; overflow: auto;
    margin: 12px var(--sc-inset) 0;
    border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-lg) var(--sedna-radius-lg) 0 0; border-bottom: none;
    background: var(--sedna-surface);
}
table.aging-table[b-z0gpt2xja1] { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--sedna-text-sm); }
.aging-table thead th[b-z0gpt2xja1] {
    position: sticky; top: 0; z-index: 3; text-align: left;
    font-size: var(--sedna-text-xs); font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--sedna-text-tertiary);
    background: var(--sedna-surface-variant); padding: 6px 8px; white-space: nowrap; border-bottom: 1px solid var(--sedna-border);
}
.aging-table th.num[b-z0gpt2xja1], .aging-table td.num[b-z0gpt2xja1] { text-align: right; }
.aging-table th.col-actions[b-z0gpt2xja1], .aging-table td.col-actions[b-z0gpt2xja1] { width: 132px; }
.aging-table tbody tr[b-z0gpt2xja1] { height: var(--row-h); }
.aging-table tbody tr + tr td[b-z0gpt2xja1] { border-top: 1px solid var(--sedna-border-light); }
.aging-table tbody td[b-z0gpt2xja1] { padding: 3px 8px; vertical-align: middle; background: var(--sedna-surface); white-space: nowrap; color: var(--sedna-text); }
.aging-table tbody tr:hover td[b-z0gpt2xja1] { background: var(--sedna-surface-variant); }

.subj[b-z0gpt2xja1] { display: flex; flex-direction: column; line-height: 1.25; max-width: 240px; }
.subj .top[b-z0gpt2xja1] { font-weight: 600; color: var(--sedna-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.subj .sub[b-z0gpt2xja1] { font-size: 0.75rem; color: var(--sedna-text-tertiary); font-family: var(--sedna-font-mono); }
.mono-cell[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-variant-numeric: tabular-nums; font-size: 0.8125rem; color: var(--sedna-text-secondary); }
.money[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-variant-numeric: tabular-nums; font-size: 0.8125rem; text-align: right; color: var(--sedna-text); }
.money.muted[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); }
.money.bold[b-z0gpt2xja1] { font-weight: 600; color: var(--sedna-text); }
.money.red[b-z0gpt2xja1] { color: var(--sedna-error-700); font-weight: 600; }
.zero[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); }

/* scadenza + ritardo */
.due[b-z0gpt2xja1] { display: flex; flex-direction: column; gap: 2px; align-items: flex-start; }
.due .d[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-size: 0.8125rem; color: var(--sedna-text); }
.delay[b-z0gpt2xja1] {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: 0.625rem; font-weight: 600; padding: 0 6px; height: 16px; border-radius: 999px; letter-spacing: 0.01em;
}
.delay.over[b-z0gpt2xja1] { background: var(--sedna-error-50); color: var(--sedna-error-700); }
.delay.today[b-z0gpt2xja1] { background: var(--sedna-warning-50); color: var(--sedna-warning-700); }
.delay.soon[b-z0gpt2xja1] { background: var(--sedna-surface-variant); color: var(--sedna-text-secondary); }
.delay.far[b-z0gpt2xja1] { background: transparent; color: var(--sedna-text-tertiary); padding-left: 0; }

/* badge stato/tipo */
.badge[b-z0gpt2xja1] {
    display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 9px; border-radius: 999px;
    font-size: var(--sedna-text-xs); font-weight: 600; white-space: nowrap;
    background: var(--sedna-surface-variant); color: var(--sedna-text-secondary);
}
.badge i[b-z0gpt2xja1] { font-size: 0.75rem; }
.badge.success[b-z0gpt2xja1] { background: var(--sedna-success-50); color: var(--sedna-success-700); }
.badge.warning[b-z0gpt2xja1] { background: var(--sedna-warning-50); color: var(--sedna-warning-700); }
.badge.danger[b-z0gpt2xja1]  { background: var(--sedna-error-50); color: var(--sedna-error-700); }
.badge.neutral[b-z0gpt2xja1] { background: var(--sedna-surface-variant); color: var(--sedna-text-secondary); }

/* azioni riga (sticky dx) */
.row-actions[b-z0gpt2xja1] { display: inline-flex; gap: 6px; justify-content: flex-end; }
.aging-table th.col-actions[b-z0gpt2xja1], .aging-table td.col-actions[b-z0gpt2xja1] { position: sticky; right: 0; }
.aging-table td.col-actions[b-z0gpt2xja1] { background: var(--sedna-surface); box-shadow: -8px 0 8px -8px rgba(16,24,40,0.10); text-align: right; }
.aging-table thead th.col-actions[b-z0gpt2xja1] { z-index: 4; }
.aging-table tbody tr:hover td.col-actions[b-z0gpt2xja1] { background: var(--sedna-surface-variant); }
.act[b-z0gpt2xja1] {
    display: inline-grid; place-items: center; width: 30px; height: 30px; padding: 0;
    border: 1px solid var(--sedna-border); background: var(--sedna-surface); border-radius: 6px;
    color: var(--sedna-text-secondary); cursor: pointer; font-family: inherit; font-size: 0.9rem;
}
.act:hover[b-z0gpt2xja1] { background: var(--sedna-surface-variant); color: var(--sedna-text); border-color: var(--sedna-border-strong); }
.act.salda:hover[b-z0gpt2xja1] { background: var(--sedna-success-50); color: var(--sedna-success-700); border-color: color-mix(in srgb, var(--sedna-success-600) 40%, var(--sedna-border)); }
.act.acconto:hover[b-z0gpt2xja1] { background: var(--sedna-primary-subtle); color: var(--sedna-primary); border-color: color-mix(in srgb, var(--sedna-primary) 40%, var(--sedna-border)); }
.act.reg:hover[b-z0gpt2xja1] { background: var(--sedna-info-50); color: var(--sedna-info-700); border-color: color-mix(in srgb, var(--sedna-info-600) 40%, var(--sedna-border)); }

/* ---------- Saldi: righe espandibili ---------- */
.expand-btn[b-z0gpt2xja1] {
    width: 26px; height: 26px; display: grid; place-items: center;
    border: 1px solid var(--sedna-border); background: var(--sedna-surface); border-radius: 6px; color: var(--sedna-text-secondary); cursor: pointer; font-size: 0.8rem;
}
.expand-btn:hover[b-z0gpt2xja1] { background: var(--sedna-surface-variant); color: var(--sedna-text); }
.expand-btn i[b-z0gpt2xja1] { transition: transform 190ms cubic-bezier(0.25,1,0.5,1); }
tr.expanded .expand-btn i[b-z0gpt2xja1] { transform: rotate(90deg); }
.sub-detail[b-z0gpt2xja1] { background: var(--sedna-surface-variant) !important; padding: 0 !important; }
.sub-inner[b-z0gpt2xja1] { padding: 8px 12px 12px 40px; }
.sub-empty[b-z0gpt2xja1] { font-size: 0.8125rem; color: var(--sedna-text-tertiary); padding: 6px 10px; }
.sub-line[b-z0gpt2xja1] { display: grid; grid-template-columns: 110px 90px 1fr 130px; gap: 14px; align-items: center; padding: 7px 10px; font-size: 0.8125rem; border-radius: 6px; }
.sub-line + .sub-line[b-z0gpt2xja1] { border-top: 1px solid var(--sedna-border-light); }
.sub-line .mono[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-size: 0.75rem; color: var(--sedna-text-secondary); }
.sub-line .sub-meta[b-z0gpt2xja1] { color: var(--sedna-text-secondary); }
.sub-line .money[b-z0gpt2xja1] { text-align: right; }

/* tabella partitario (espansione "Saldi per soggetto") */
.part-table[b-z0gpt2xja1] { width: 100%; border-collapse: collapse; font-size: var(--sedna-text-sm); }
.part-table thead th[b-z0gpt2xja1] {
    text-align: left; font-size: var(--sedna-text-xs); font-weight: 600; letter-spacing: 0.04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary); padding: 6px 10px;
    border-bottom: 1px solid var(--sedna-border); white-space: nowrap;
}
.part-table th.num[b-z0gpt2xja1], .part-table td.num[b-z0gpt2xja1] { text-align: right; }
.part-table tbody td[b-z0gpt2xja1] {
    padding: 6px 10px; border-top: 1px solid var(--sedna-border-light);
    color: var(--sedna-text); white-space: nowrap; vertical-align: middle;
}
.part-table tbody tr:first-child td[b-z0gpt2xja1] { border-top: none; }
.part-table tbody tr.chiusa td[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); }
.part-causale[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); margin-left: 6px; }
.part-link[b-z0gpt2xja1] {
    width: 26px; height: 26px; display: inline-grid; place-items: center; padding: 0;
    border: 1px solid var(--sedna-border); background: var(--sedna-surface); border-radius: 6px;
    color: var(--sedna-text-secondary); cursor: pointer; font-size: 0.85rem;
}
.part-link:hover[b-z0gpt2xja1] { background: var(--sedna-info-50); color: var(--sedna-info-700); border-color: color-mix(in srgb, var(--sedna-info-600) 40%, var(--sedna-border)); }

/* ---------- Modal partitario (lista piatta) ---------- */
.pm-overlay[b-z0gpt2xja1] {
    position: fixed; inset: 0; z-index: 1000; background: rgba(16, 24, 40, 0.45);
    display: flex; align-items: center; justify-content: center; padding: 24px;
}
.sedna-theme-dark .pm-overlay[b-z0gpt2xja1] { background: rgba(0, 0, 0, 0.6); }
.pm-modal[b-z0gpt2xja1] {
    width: min(840px, 100%); max-height: 86vh; display: flex; flex-direction: column;
    background: var(--sedna-surface); border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg); box-shadow: 0 10px 34px rgba(16, 24, 40, 0.22); overflow: hidden;
}
.pm-head[b-z0gpt2xja1] { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--sedna-border); flex: none; }
.pm-ico[b-z0gpt2xja1] { width: 38px; height: 38px; border-radius: 9px; flex: none; display: grid; place-items: center; background: var(--sedna-primary-subtle); color: var(--sedna-primary); font-size: 1.05rem; }
.pm-titles[b-z0gpt2xja1] { flex: 1; min-width: 0; }
.pm-head h2[b-z0gpt2xja1] { margin: 0; font-size: 1.0625rem; font-weight: 600; color: var(--sedna-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pm-sub[b-z0gpt2xja1] { display: flex; align-items: center; gap: 8px; margin-top: 2px; }
.pm-sub .mono[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-size: 0.75rem; color: var(--sedna-text-tertiary); }
.pm-x[b-z0gpt2xja1] { width: 32px; height: 32px; flex: none; display: grid; place-items: center; border: none; background: transparent; border-radius: 6px; color: var(--sedna-text-secondary); cursor: pointer; font-size: 1rem; }
.pm-x:hover[b-z0gpt2xja1] { background: var(--sedna-surface-variant); color: var(--sedna-text); }
.pm-body[b-z0gpt2xja1] { flex: 1; min-height: 0; overflow-y: auto; padding: 4px 0; }
.pm-state[b-z0gpt2xja1] { display: flex; align-items: center; gap: 8px; justify-content: center; padding: 32px; color: var(--sedna-text-secondary); font-size: var(--sedna-text-sm); }

.pm-list[b-z0gpt2xja1] { display: flex; flex-direction: column; }
.pm-row[b-z0gpt2xja1] { display: flex; align-items: center; gap: 14px; padding: 9px 18px; border-top: 1px solid var(--sedna-border-light); }
.pm-row:first-child[b-z0gpt2xja1] { border-top: none; }
.pm-row:hover[b-z0gpt2xja1] { background: var(--sedna-surface-variant); }
.pm-row.chiusa[b-z0gpt2xja1] { opacity: 0.62; }
.pm-main[b-z0gpt2xja1] { flex: 1 1 auto; min-width: 0; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.pm-doc[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-weight: 600; color: var(--sedna-text); }
.pm-scad[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-size: 0.75rem; color: var(--sedna-text-tertiary); }
.pm-caus[b-z0gpt2xja1] { font-size: 0.8125rem; color: var(--sedna-text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pm-amts[b-z0gpt2xja1] { display: flex; align-items: baseline; gap: 16px; flex: none; }
.pm-amt[b-z0gpt2xja1] { font-size: 0.75rem; color: var(--sedna-text-tertiary); white-space: nowrap; }
.pm-amt b[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-variant-numeric: tabular-nums; font-weight: 600; color: var(--sedna-text); margin-left: 4px; }
.pm-amt b.muted[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); font-weight: 500; }
.pm-foot[b-z0gpt2xja1] { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 18px; border-top: 1px solid var(--sedna-border); background: var(--sedna-surface-variant); flex: none; }
.pm-foot-tot[b-z0gpt2xja1] { font-size: var(--sedna-text-sm); color: var(--sedna-text-secondary); }
.pm-foot-tot b[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-variant-numeric: tabular-nums; font-weight: 700; color: var(--sedna-text); margin-left: 4px; }
.pm-foot-tot b.red[b-z0gpt2xja1] { color: var(--sedna-error-700); }
.pm-close-btn[b-z0gpt2xja1] { height: 32px; padding: 0 14px; border-radius: var(--sedna-radius-base); border: 1px solid var(--sedna-border); background: var(--sedna-surface); color: var(--sedna-text); font-size: 0.8125rem; font-weight: 600; font-family: inherit; cursor: pointer; }
.pm-close-btn:hover[b-z0gpt2xja1] { background: var(--sedna-surface-variant); }
.pm-modal[b-z0gpt2xja1] { animation: pmIn-b-z0gpt2xja1 160ms cubic-bezier(0.25, 1, 0.5, 1); }
@keyframes pmIn-b-z0gpt2xja1 { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .pm-modal[b-z0gpt2xja1] { animation: none; } }

/* variante inline della lista partitario (espansione "Saldi per soggetto") */
.pm-list--inline .pm-row[b-z0gpt2xja1] { padding-left: 40px; }
.sub-detail .pm-row:hover[b-z0gpt2xja1] { background: var(--sedna-surface); }
.pm-state--inline[b-z0gpt2xja1] { padding: 10px 40px; justify-content: flex-start; }

/* Contenitore del partitario quando vive nella RIGA DI DETTAGLIO della griglia
   (prima era una <td colspan> con .sub-detail): stesso fondo tenue, e il rientro
   a sinistra lo mette già .pm-tbl sulla prima colonna. */
.pm-host[b-z0gpt2xja1] { background: var(--sedna-surface-variant); }

/* Partitario del soggetto come tabella pulita (Causale · N.Doc · Lett · Data Doc · Totale · Saldo · Saldo progr.) */
.pm-tbl[b-z0gpt2xja1] { width: 100%; border-collapse: collapse; font-size: .8125rem; }
.pm-tbl th[b-z0gpt2xja1] { text-align: left; font-size: .68rem; font-weight: 600; letter-spacing: .03em; text-transform: uppercase; color: var(--sedna-text-tertiary); padding: 5px 12px; border-bottom: 1px solid var(--sedna-border-light); white-space: nowrap; }
.pm-tbl th:first-child[b-z0gpt2xja1] { padding-left: 40px; }
.pm-tbl th.num[b-z0gpt2xja1], .pm-tbl td.num[b-z0gpt2xja1] { text-align: right; }
.pm-tbl td[b-z0gpt2xja1] { padding: 5px 12px; border-top: 1px solid var(--sedna-border-light); color: var(--sedna-text); white-space: nowrap; font-family: var(--sedna-font-mono); font-variant-numeric: tabular-nums; }
.pm-tbl tbody tr:hover[b-z0gpt2xja1] { background: var(--sedna-surface); }
.pm-tbl tbody tr.chiusa td[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); opacity: .75; }
.pm-tbl__caus[b-z0gpt2xja1] { font-family: var(--sedna-font-base) !important; max-width: 340px; overflow: hidden; text-overflow: ellipsis; padding-left: 40px !important; }
.pm-tbl .red[b-z0gpt2xja1] { color: var(--sedna-error-700); font-weight: 600; }
.pm-tbl .muted[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); }
.pm-tbl__act[b-z0gpt2xja1] { width: 44px; text-align: center; }

/* Aggancio scadenze: drag&drop, chip, menu contestuale, dialog */
.pm-tbl tbody tr.pm-nc-drag[b-z0gpt2xja1] { cursor: grab; }
.pm-tbl tbody tr.pm-dragging[b-z0gpt2xja1] { opacity: .5; }
.pm-tbl tbody tr.pm-ag-source[b-z0gpt2xja1] { outline: 2px dashed var(--sedna-info-500); outline-offset: -2px; }
.pm-drag-handle[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); margin-right: 4px; cursor: grab; }
.pm-aggancio-chip[b-z0gpt2xja1] { display: inline-flex; align-items: center; gap: 2px; margin-left: 6px; padding: 0 5px; border-radius: 10px; background: var(--sedna-info-50); color: var(--sedna-info-700); font-size: .68rem; font-weight: 700; }

.pm-ctx-backdrop[b-z0gpt2xja1] { position: fixed; inset: 0; z-index: 12000; }
.pm-ctx[b-z0gpt2xja1] { position: fixed; z-index: 12001; min-width: 240px; background: var(--sedna-surface); border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-base, .375rem); box-shadow: var(--sedna-shadow-lg, 0 8px 24px rgba(0,0,0,.18)); padding: 4px; }
.pm-ctx__item[b-z0gpt2xja1] { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; background: none; border: none; padding: 7px 10px; border-radius: 4px; font-size: .82rem; color: var(--sedna-text); cursor: pointer; white-space: nowrap; }
.pm-ctx__item:hover[b-z0gpt2xja1] { background: var(--sedna-surface-variant); }
.pm-ctx__item--primary[b-z0gpt2xja1] { color: var(--sedna-info-700); font-weight: 600; }
.pm-ctx__item--danger[b-z0gpt2xja1] { color: var(--sedna-error-700); }
.pm-ctx__item .bi[b-z0gpt2xja1] { font-size: .95rem; }
/* Aggancio dalle righe della LISTA scadenze (aging-table). */
.aging-table tbody tr.row-nc-drag[b-z0gpt2xja1] { cursor: grab; }
.aging-table tbody tr.row-dragging[b-z0gpt2xja1] { opacity: .5; }
.aging-table tbody tr.row-ag-source[b-z0gpt2xja1] { outline: 2px dashed var(--sedna-info-500); outline-offset: -2px; }
.row-drag-handle[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); margin-right: 4px; cursor: grab; }

.pm-ctx__ref[b-z0gpt2xja1] { color: var(--sedna-text-tertiary); font-weight: 400; margin-left: 2px; }

/* Espansione inline delle NC agganciate a una fattura (partitario + lista). */
.pm-agg-toggle[b-z0gpt2xja1] { background: none; border: none; padding: 0 2px; margin-right: 2px; color: var(--sedna-text-tertiary); cursor: pointer; }
.pm-agg-toggle:hover[b-z0gpt2xja1] { color: var(--sedna-text); }
.pm-tbl tbody tr.pm-agg-row td[b-z0gpt2xja1] { background: var(--sedna-info-50, rgba(0,120,255,.04)); border-top: none; }
.pm-agg-ref[b-z0gpt2xja1] { display: inline-block; padding-left: 22px; font-style: italic; color: var(--sedna-info-700); }
.pm-agg-unhook[b-z0gpt2xja1] { color: var(--sedna-error-600) !important; }
.aging-table tbody tr.agg-row td[b-z0gpt2xja1] { background: var(--sedna-info-50, rgba(0,120,255,.04)); }
.agg-ref[b-z0gpt2xja1] { padding-left: 26px; font-style: italic; color: var(--sedna-info-700); }
.pm-ctx__sep[b-z0gpt2xja1] { height: 1px; background: var(--sedna-border-light); margin: 4px 2px; }
.pm-ctx__empty[b-z0gpt2xja1] { padding: 7px 10px; font-size: .8rem; color: var(--sedna-text-tertiary); }

.ag-dlg[b-z0gpt2xja1] { display: flex; flex-direction: column; gap: 12px; }
.ag-dlg__row[b-z0gpt2xja1] { display: flex; gap: 8px; align-items: baseline; font-size: .8125rem; }
.ag-dlg__field[b-z0gpt2xja1] { display: flex; flex-direction: column; gap: 4px; }
.ag-dlg__k[b-z0gpt2xja1] { font-size: 0.65rem; text-transform: uppercase; letter-spacing: .04em; color: var(--sedna-text-tertiary); font-weight: 600; }
.ag-dlg__v[b-z0gpt2xja1] { color: var(--sedna-text); }
.ag-dlg__note[b-z0gpt2xja1] { font-size: .75rem; color: var(--sedna-text-secondary); margin: 0; }

/* ---------- Totali sticky ---------- */
.sc-totbar[b-z0gpt2xja1] {
    /* -1px: i due bordi si sovrappongono e la barra sembra il piede della griglia,
       non un riquadro a parte che galleggia sotto. */
    flex: none; margin: -1px var(--sc-inset) 10px;
    border: 1px solid var(--sedna-border); border-radius: 0 0 var(--sedna-radius-lg) var(--sedna-radius-lg);
    background: var(--sedna-surface-variant); display: flex; align-items: center; gap: 26px;
    padding: 12px clamp(14px, 1.5vw, 20px);
}
.sc-totbar .t[b-z0gpt2xja1] { display: flex; align-items: baseline; gap: 9px; }
.sc-totbar .t .k[b-z0gpt2xja1] { font-size: var(--sedna-text-xs); font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
.sc-totbar .t .v[b-z0gpt2xja1] { font-family: var(--sedna-font-mono); font-variant-numeric: tabular-nums; font-weight: 700; font-size: 1.125rem; color: var(--sedna-text); white-space: nowrap; }
.sc-totbar .t.scaduto .v[b-z0gpt2xja1] { color: var(--sedna-error-700); }
.sc-totbar .sep[b-z0gpt2xja1] { width: 1px; height: 26px; background: var(--sedna-border); }
.sc-totbar .hint[b-z0gpt2xja1] { margin-left: auto; font-size: 0.75rem; color: var(--sedna-text-tertiary); }

/* ---------- Empty / loading ---------- */
.empty-wrap[b-z0gpt2xja1] {
    flex: 1; min-height: 0; margin: 12px var(--sc-inset) var(--sc-inset);
    border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-lg); background: var(--sedna-surface);
    display: flex; align-items: center; justify-content: center;
}
.empty-state[b-z0gpt2xja1] { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 40px; max-width: 380px; }
.empty-state .ico[b-z0gpt2xja1] { width: 60px; height: 60px; border-radius: 15px; background: var(--sedna-surface-variant); color: var(--sedna-text-tertiary); display: grid; place-items: center; font-size: 1.7rem; margin-bottom: 6px; }
.empty-state h3[b-z0gpt2xja1] { margin: 0; font-size: 1.0625rem; font-weight: 600; color: var(--sedna-text); }
.empty-state p[b-z0gpt2xja1] { margin: 0; font-size: var(--sedna-text-sm); color: var(--sedna-text-secondary); line-height: 1.55; }
.empty-state .clear[b-z0gpt2xja1] { margin-top: 8px; background: none; border: none; cursor: pointer; color: var(--sedna-primary); font-size: 0.8125rem; font-weight: 600; font-family: inherit; }

.sc-loading[b-z0gpt2xja1] {
    flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px;
    color: var(--sedna-text-secondary); font-size: var(--sedna-text-sm);
}

@media (max-width: 1200px) { .aging-grid[b-z0gpt2xja1] { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 820px) { .aging-grid[b-z0gpt2xja1] { grid-template-columns: repeat(2, 1fr); } }

@media (prefers-reduced-motion: reduce) {
    .expand-btn i[b-z0gpt2xja1] { transition: none; }
}

/* ============================================================
   GRIGLIA SCADENZE su SednaServerGrid (.sc-grid)
   La card della griglia flette nell'altezza disponibile della pagina
   (come faceva .table-wrap); le classi di riga vivono nel DOM della
   griglia, quindi vanno raggiunte via ::deep.
   ============================================================ */

[b-z0gpt2xja1] .sc-grid {
    flex: 1;
    /* min-width:0 e' quello che impedisce lo sbordo: senza, la larghezza naturale
       della tabella spinge la card oltre il contenitore (le colonne si allargano da
       sole e la griglia esce dalla pagina invece di scorrere al suo interno). */
    min-width: 0;
    max-width: 100%;
    min-height: 0;
    margin: 10px var(--sc-inset) 0;
    /* I totali si attaccano sotto: qui gli angoli restano dritti. */
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

/* Righe a 2 piani (soggetto + codice): altezza allineata al RowHeight=45
   dichiarato al Virtualize — un'altezza reale diversa fa sovra-richiedere
   finestre e disallinea spacer e paginatore (misurata: 45px reali). */
[b-z0gpt2xja1] .sc-grid .ssg__row > td { height: 45px; }

/* Aggancio NC ↔ fattura: stessi stati visivi della tabella precedente. */
[b-z0gpt2xja1] .sc-grid .ssg__row.row-dragging { opacity: .5; }
[b-z0gpt2xja1] .sc-grid .ssg__row.row-ag-source { outline: 2px dashed var(--sedna-info-500); outline-offset: -2px; }

/* Sotto-riga con le NC agganciate (DetailRowTemplate). */
.agg-detail[b-z0gpt2xja1] { display: flex; flex-direction: column; }
.agg-line[b-z0gpt2xja1] {
    display: flex; align-items: center; gap: 16px;
    padding: 3px 8px 3px 0;
    background: var(--sedna-info-50, rgba(0,120,255,.04));
}
.agg-line + .agg-line[b-z0gpt2xja1] { border-top: 1px solid var(--sedna-border-light); }
.agg-line .money[b-z0gpt2xja1] { margin-left: auto; }
.agg-line .act[b-z0gpt2xja1] { flex: none; }

/* ── La partita è in una DISTINTA PAGAMENTI ──────────────────────────────────────
   Accanto allo stato, non al posto suo: la partita resta aperta o scaduta com'era —
   in più è impegnata. Sostituire lo stato farebbe perdere l'informazione che conta
   per capire se è in ritardo. */
.sc-indistinta[b-z0gpt2xja1] {
    margin-left: 4px;
    background: color-mix(in srgb, var(--sedna-info-600) 16%, transparent);
    color: var(--sedna-text);
    white-space: nowrap;
}

/* Le azioni spente: grigie e senza puntatore a mano. Il motivo sta nel title, ed è
   l'unica cosa che dice dove si paga davvero. */
.row-actions .act:disabled[b-z0gpt2xja1] {
    opacity: .4;
    cursor: default;
}

.fg--modalita[b-z0gpt2xja1] { width: 200px; }
.fg--indistinta[b-z0gpt2xja1] { flex: none; }

/* ═══ L'anticipo fatture sulla rata ═══
   ⚠️ COLORE DIVERSO da `.sc-indistinta`: quella dice «da qui non si paga», questa no —
   la rata si incassa lo stesso, ed è così che l'anticipo rientra alla banca. Due
   pastiglie uguali si leggerebbero come due divieti, e uno dei due non c'è. */
.sc-anticipo[b-z0gpt2xja1] {
    border: 1px solid var(--sedna-info-600);
    background: transparent;
    color: var(--sedna-info-600);
    font-weight: 500;
}

/* La banca ha anticipato più del residuo: ambra, e solo l'icona — la frase sta nel titolo,
   perché in una cella di griglia non ci sta e perché è una cosa da dire alla banca, non da
   correggere qui. */
.sc-anticipo-oltre[b-z0gpt2xja1] {
    border: 1px solid var(--sedna-warning-700);
    background: transparent;
    color: var(--sedna-warning-700);
}
/* /Pages/Contabilita/SchedeContabili/MovimentoContabileModal.razor.rz.scp.css */
/* Registrazione VERA dentro la finestra: e' PrimaNotaPage montata in EmbeddedMode.
   Le classi .mc* della modal (corpo, tabella, totali) vivono in wwwroot/css/app.css come
   globali, perche' le condividono due modali di moduli diversi. Qui c'e' solo quello che
   serve alla modalita' MODIFICA, ed e' scoped: riguarda questo componente e basta. */

/* La catena delle altezze (corpo del popup -> editor -> griglia che scorre) sta UNA
   volta in sedna.components.css, classe .sedna-modal-editor. Qui resta solo quello che
   la libreria non puo' sapere: come si chiama la card delle righe di QUESTA pagina. */

.mc-edit[b-mux1r7evyp]  .pn-righe-card {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.mc-edit[b-mux1r7evyp]  .pn-righe-card .pn-righe-grid {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}
/* /Pages/Contabilita/SchedeContabili/SaldiContabiliView.razor.rz.scp.css */
/* ⚠️ I MARGINI ORIZZONTALI LI DECIDE IL GUSCIO (Antonio, 21/08). Queste pagine avevano un
   `clamp(18px, 2vw, 28px)` per lato, mentre l'intestazione e le griglie stanno su
   --sedna-space-4: fasce filtri, titolo e righe partivano da tre ascisse diverse, e la
   pagina si leggeva come tre pezzi accostati invece che come una cosa sola.
   Non e' solo brutto: l'occhio usa il bordo sinistro per incolonnare, e tre bordi diversi
   lo costringono a ricominciare da capo a ogni blocco. */
/* ============================================================
   Saldi Clienti/Fornitori (contabili) + quadratura scadenzario.
   Grammatica visiva condivisa con Bilancio/Scheda Contabile.
   ============================================================ */
/* Root a viewport fisso dal guscio globale .sedna-page (sedna.page.css):
   height calc(100dvh - 1rem) + overflow. Le sezioni interne hanno un
   padding-inline proprio (clamp), quindi azzero quello del guscio. */
.sal[b-9i8gdtz3ru] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    /* ⚠️ NON PIU' 28px FISSI (Antonio, 21/08, due volte). I campi seguono
       --sedna-input-height (20-22px) e il bottone restava a 28: in una fascia di filtri
       quegli otto pixel si vedono. La regola generale che avevo scritto in app.css perdeva
       per specificita' contro questa, che e' scoped: il valore va cambiato DOVE si decide,
       non contrastato da fuori. */
    --sa-ctrl-h: var(--sedna-input-height, 1.375rem);
}

/* ---------------- Toolbar filtri ---------------- */
/* UNA RIGA SOLA, come nel vecchio gestionale: controlli bassi, etichette minute,
   spaziature strette. Ogni pixel tolto qui e' un pixel di griglia in piu', e questa
   e' una pagina che si guarda per leggere righe, non filtri. */
.sa-filters[b-9i8gdtz3ru] {
    flex: none;
    display: flex;
    align-items: flex-end;
    gap: 10px;
    flex-wrap: wrap;
    padding: 0 var(--sedna-space-4, 1rem) 8px;
    border-bottom: 1px solid var(--sedna-border);
}
.sa-f[b-9i8gdtz3ru] { display: flex; flex-direction: column; gap: 2px; }
.sa-f > label[b-9i8gdtz3ru] { font-size: 0.625rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
.sa-f--soggetto[b-9i8gdtz3ru] { width: 230px; }

/* La lookup è un componente figlio e nasce più ALTA degli altri controlli: senza
   queste righe la riga dei filtri si allineava su di lei e tutto il resto sembrava
   sfalsato. Scope proprio, quindi ::deep. */
.sa-filters[b-9i8gdtz3ru]  .sa-lookup { width: 100%; }
.sa-filters[b-9i8gdtz3ru]  .sa-lookup .sedna-native-input,
.sa-filters[b-9i8gdtz3ru]  .sa-lookup input[type="text"] {
    height: var(--sa-ctrl-h);
    min-height: var(--sa-ctrl-h);
    font-size: 0.75rem;
}
.sa-filters[b-9i8gdtz3ru]  .sa-lookup .dxbl-edit,
.sa-filters[b-9i8gdtz3ru]  .sa-lookup .sedna-lookup-container { min-height: var(--sa-ctrl-h); }

/* Le combo sono COMPONENTI figli (scope CSS proprio): senza ::deep le regole non le
   raggiungono e ognuna prenderebbe la sua larghezza naturale, mandando i filtri a capo. */
.sa-f .se[b-9i8gdtz3ru] {
    height: var(--sa-ctrl-h);
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base, .375rem);
    padding: 0 26px 0 9px;
    font-size: 0.75rem;
    color: var(--sedna-text);
    outline: none;
    font-family: inherit;
    appearance: none;
    cursor: pointer;
}
.sa-f .se:focus[b-9i8gdtz3ru] { border-color: var(--sedna-primary); box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }
.sa-filters[b-9i8gdtz3ru]  .se { width: 150px; }
.sa-filters[b-9i8gdtz3ru]  .se.se--sm { width: 116px; }
.sa-filters[b-9i8gdtz3ru]  .se.se--md { width: 138px; }
.sa-f .searchbox[b-9i8gdtz3ru] {
    position: relative;
    display: flex;
    align-items: center;
}
.sa-f .searchbox i[b-9i8gdtz3ru] { position: absolute; left: 10px; color: var(--sedna-text-tertiary); font-size: 0.8rem; pointer-events: none; }
.sa-f .searchbox .inp[b-9i8gdtz3ru] {
    height: var(--sa-ctrl-h);
    font-size: 0.75rem;
    width: 100%;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base, .375rem);
    padding: 0 10px 0 30px;
    font-size: 0.8125rem;
    color: var(--sedna-text);
    outline: none;
    font-family: inherit;
}
.sa-f .searchbox .inp:focus[b-9i8gdtz3ru] { border-color: var(--sedna-primary); box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }
.sa-f .daterange[b-9i8gdtz3ru] { display: flex; align-items: center; gap: 6px; }
.sa-f .daterange .sep[b-9i8gdtz3ru] { color: var(--sedna-text-tertiary); font-size: 0.75rem; }
/* dd/MM/yyyy (~70px di testo) + bottoni interni del DxDateEdit (calendario e
   clear): a 104px l'anno si troncava. */
/* Larghezza dal contenuto: vedi SednaDateEdit. */
.sa-filters[b-9i8gdtz3ru]  .sa-date { width: calc(10ch + 3.75rem); }
.sa-date[b-9i8gdtz3ru]  .dxbl-edit { min-height: var(--sa-ctrl-h); }

/* toggle */
.sa-toggle[b-9i8gdtz3ru] { display: flex; align-items: center; gap: 9px; height: var(--sa-ctrl-h); cursor: pointer; user-select: none; }
.sa-toggle .switch[b-9i8gdtz3ru] { position: relative; width: 36px; height: 20px; flex: none; }
.sa-toggle .switch input[b-9i8gdtz3ru] { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.sa-toggle .track[b-9i8gdtz3ru] { position: absolute; inset: 0; background: var(--sedna-border-strong); border-radius: 999px; transition: background .15s ease; }
.sa-toggle .knob[b-9i8gdtz3ru] { position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; background: #fff; border-radius: 50%; transition: transform .15s ease; box-shadow: 0 1px 2px rgba(0,0,0,0.25); }
.sa-toggle input:checked + .track[b-9i8gdtz3ru] { background: var(--sedna-primary); }
.sa-toggle input:checked + .track + .knob[b-9i8gdtz3ru] { transform: translateX(16px); }
.sa-toggle .tl[b-9i8gdtz3ru] { font-size: 0.8125rem; color: var(--sedna-text-secondary); font-weight: 500; white-space: nowrap; }

.sa-filters .f-spacer[b-9i8gdtz3ru] { flex: 1; }

/* Riga della modalita' di vista: sta sopra la griglia perche' la quadratura non
   filtra le righe, aggiunge due colonne di confronto. */
.sa-apply[b-9i8gdtz3ru] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: var(--sa-ctrl-h);
    padding: 0 16px;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-primary);
    background: var(--sedna-primary);
    color: var(--sedna-text-inverse, #fff);
    font-size: 0.8125rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
}
.sa-apply:hover:not(:disabled)[b-9i8gdtz3ru] { background: var(--sedna-primary-hover); border-color: var(--sedna-primary-hover); }
.sa-apply:disabled[b-9i8gdtz3ru] { opacity: .6; cursor: default; }

/* ---------------- Griglia ---------------- */
/* La griglia prende TUTTA l'altezza rimasta: è la parte che si guarda, il resto
   (filtri, badge quadratura) è contorno. */
/* ⚠️ NESSUN RIENTRO ORIZZONTALE (Antonio, 21/08). C'era un `var(--sedna-space-4, 1rem)` per
   lato: la griglia risultava piu' stretta dell'intestazione e della fascia filtri, e a
   video si leggeva come un disallineamento — perche' lo era. I margini di pagina li mette
   il guscio .sedna-page, una volta sola, per tutti. */
.sa-grid-wrap[b-9i8gdtz3ru] { flex: 1; min-height: 0; display: flex; margin: 6px 0 0; position: relative; }

/* Il velo di caricamento sopra la griglia: stessa forma, stesso ritardo e stesso sfondo del
   velo interno di SednaServerGrid (`.ssg__reload-overlay`) — la stessa attesa deve avere lo
   stesso aspetto da qualunque parte arrivi.
   ⚠️ Il ritardo di 0,15 s non e' decorazione: su una risposta in cache il velo comparirebbe e
   sparirebbe nello stesso fotogramma, e un lampo e' piu' fastidioso del silenzio.
   ⚠️ `position: relative` sul contenitore e' la meta' che conta: senza, l'`inset: 0` si
   ancorerebbe al primo antenato posizionato e il velo finirebbe altrove nella pagina. */
.sa-load[b-9i8gdtz3ru] {
    position: absolute;
    inset: 0;
    z-index: 40;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--sedna-surface) 65%, transparent);
    backdrop-filter: blur(1.5px);
    animation: sa-load-in-b-9i8gdtz3ru .18s ease .15s both;
}
@keyframes sa-load-in-b-9i8gdtz3ru { from { opacity: 0 } to { opacity: 1 } }
.sa-grid-wrap[b-9i8gdtz3ru]  .mono { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; }
.sa-grid-wrap[b-9i8gdtz3ru]  .saldo { font-weight: 600; }
.sa-grid-wrap[b-9i8gdtz3ru]  .saldo.neg { color: var(--sedna-error); }
.sa-grid-wrap[b-9i8gdtz3ru]  .diff { color: var(--sedna-error); font-weight: 700; }
.sa-grid-wrap[b-9i8gdtz3ru]  .ok { color: var(--sedna-success-700); font-weight: 600; }
/* Riga squadrata: si vede a colpo d'occhio quale soggetto non torna col partitario. */
.sa-grid-wrap[b-9i8gdtz3ru]  tr.sa-r-diff td { background: var(--sedna-error-50); }
.sa-acts[b-9i8gdtz3ru] { display: inline-flex; gap: 2px; }

/* ---------------- Scroller / stati / meta ---------------- */
.sa-scroll[b-9i8gdtz3ru] { flex: 1; min-height: 0; overflow: auto; display: flex; flex-direction: column; }
.sa-view[b-9i8gdtz3ru] { display: flex; flex: 1; min-height: 0; flex-direction: column; }
.sa-state[b-9i8gdtz3ru] { display: flex; align-items: center; gap: 10px; padding: 44px; justify-content: center; color: var(--sedna-text-secondary); font-size: .9375rem; }
.sa-state--err[b-9i8gdtz3ru] { color: var(--sedna-error-700); }

.sa-meta[b-9i8gdtz3ru] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    padding: 6px var(--sedna-space-4, 1rem) 0;
}
.sa-badge[b-9i8gdtz3ru] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.75rem;
    font-weight: 700;
    padding: 5px 11px;
    border-radius: 999px;
    white-space: nowrap;
}
.sa-badge.success[b-9i8gdtz3ru] { background: var(--sedna-success-50); color: var(--sedna-success-700); border: 1px solid var(--sedna-success-600); }
.sa-badge.danger[b-9i8gdtz3ru] { background: var(--sedna-error-50); color: var(--sedna-error-700); border: 1px solid var(--sedna-error-500); }

/* ---------------- Tabella ---------------- */


.sa-act[b-9i8gdtz3ru] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: none;
    background: transparent;
    border-radius: 6px;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    text-decoration: none;
    font-size: 0.9rem;
}
.sa-act:hover:not(:disabled)[b-9i8gdtz3ru] { background: var(--sedna-surface-hover); color: var(--sedna-primary); }
.sa-act:disabled[b-9i8gdtz3ru] { opacity: .5; cursor: default; }

/* ---------------- Footer totali ---------------- */
/* ---------------- Pager (stessa grammatica di .sk-pager) ---------------- */
    white-space: nowrap;[b-9i8gdtz3ru]
}

@media (max-width: 1080px) {
    .sa-filters[b-9i8gdtz3ru] { gap: 10px; }
    .sa-f--search[b-9i8gdtz3ru] { min-width: 100%; }
}
/* /Pages/Contabilita/SchedeContabili/SchedaContabilePage.razor.rz.scp.css */
/* ⚠️ I MARGINI ORIZZONTALI LI DECIDE IL GUSCIO (Antonio, 21/08). Queste pagine avevano un
   `clamp(18px, 2vw, 28px)` per lato, mentre l'intestazione e le griglie stanno su
   --sedna-space-4: fasce filtri, titolo e righe partivano da tre ascisse diverse, e la
   pagina si leggeva come tre pezzi accostati invece che come una cosa sola.
   Non e' solo brutto: l'occhio usa il bordo sinistro per incolonnare, e tre bordi diversi
   lo costringono a ricominciare da capo a ogni blocco. */
/* ============================================================
   Scheda Contabile (mastrino) — stessa grammatica visiva del
   Bilancio Contabile: toolbar filtri, tabella densa, footer
   totali. Token --sedna-*.
   ============================================================ */
/* Root a viewport fisso dal guscio globale .sedna-page (sedna.page.css):
   height calc(100dvh - 1rem) + overflow. Le sezioni interne hanno un
   padding-inline proprio (clamp), quindi azzero quello del guscio. */
.skc[b-k2sanwz73a] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    /* Altezza UNICA di tutti i controlli della toolbar: la detta l'input (token
       globale, 20-22px), cosi' bottoni, combo e date sono alti uguale e la riga
       filtri non ha gradini. */
    --sk-ctrl-h: var(--sedna-input-height, 22px);
}

/* ---------------- Toolbar filtri ---------------- */
.sk-filters[b-k2sanwz73a] {
    flex: none;
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
    padding: 0 var(--sedna-space-4, 1rem) 14px;
    border-bottom: 1px solid var(--sedna-border);
}
.sk-f[b-k2sanwz73a] { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sk-f > label[b-k2sanwz73a] { font-size: 0.625rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--sedna-text-tertiary); }
/* Conto e soggetto SI RESTRINGONO: conto, cliente/fornitore e il periodo devono
   stare sulla STESSA riga (collaudo 23/07) — con 320px fissi il periodo andava a
   capo appena compariva il soggetto, e ogni riga di toolbar è altezza tolta alla
   griglia. */
.sk-f--conto[b-k2sanwz73a] { flex: 1 1 180px; min-width: 150px; max-width: 260px; }
/* Combo: la classe "se" sta sulla RADICE del componente combo, che non porta
   l'attributo di scope della pagina — senza ::deep queste regole non agganciavano
   niente (stessa trappola delle date). */
.sk-f[b-k2sanwz73a]  .se { max-width: 164px; }
.sk-f[b-k2sanwz73a]  .se {
    height: var(--sk-ctrl-h);
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base, .375rem);
    padding: 0 28px 0 10px;
    font-size: 0.8125rem;
    color: var(--sedna-text);
    outline: none;
    font-family: inherit;
    appearance: none;
    cursor: pointer;
}
.sk-f[b-k2sanwz73a]  .se:focus { border-color: var(--sedna-primary); box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }
.sk-f .daterange[b-k2sanwz73a] { display: flex; align-items: center; gap: 6px; }
.sk-f .daterange .sep[b-k2sanwz73a] { color: var(--sedna-text-tertiary); font-size: 0.75rem; }
/* Date: il contenuto è SEMPRE dd/MM/yyyy.
   ⚠️ QUI C'ERA SCRITTO che «104px bastano col bottone calendario». Non bastavano, e il commento
   ha tenuto in piedi la misura sbagliata piu' a lungo del CSS: Bruno, 10/09, ha misurato radice
   104px, input 71px, testo 74px con `text-overflow: ellipsis` — a video «01/01/20…», cioe' i
   filtri della scheda non dicevano CHE ANNO stanno mostrando. Su una scheda contabile e' il
   dato che decide se il numero sotto ha senso.
   148px sono la misura dei saldi (`calc(10ch + 3.75rem)` in quel contesto), dove lo stesso
   campo non tronca. Scritta in pixel e non in `ch` apposta: il `ch` qui si risolverebbe su un
   font-size diverso e tornerebbe a essere una misura che sembra giusta e non lo e'.
   NB: le regole DEVONO stare sotto .daterange ::deep — la classe sk-date finisce
   sulla RADICE di SednaDateEdit, che non porta l'attributo di scope della pagina,
   quindi un selettore .sk-date scoped non aggancerebbe nulla. */
.sk-f .daterange[b-k2sanwz73a]  .sk-date { width: 148px; min-width: 0; }
.sk-f .daterange[b-k2sanwz73a]  .sk-date .dxbl-edit { min-height: var(--sk-ctrl-h); }
.sk-f .daterange[b-k2sanwz73a]  .sk-date .dxbl-text-edit-input { font-size: 0.75rem; padding-left: 6px; padding-right: 2px; }

/* toggle */
.sk-toggle[b-k2sanwz73a] { display: flex; align-items: center; gap: 6px; height: var(--sk-ctrl-h); cursor: pointer; user-select: none; }
.sk-toggle .switch[b-k2sanwz73a] { position: relative; width: 26px; height: 14px; flex: none; }
.sk-toggle .switch input[b-k2sanwz73a] { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.sk-toggle .track[b-k2sanwz73a] { position: absolute; inset: 0; background: var(--sedna-border-strong); border-radius: 999px; transition: background .15s ease; }
.sk-toggle .knob[b-k2sanwz73a] { position: absolute; top: 2px; left: 2px; width: 10px; height: 10px; background: #fff; border-radius: 50%; transition: transform .15s ease; box-shadow: 0 1px 2px rgba(0,0,0,0.25); }
.sk-toggle input:checked + .track[b-k2sanwz73a] { background: var(--sedna-primary); }
.sk-toggle input:checked + .track + .knob[b-k2sanwz73a] { transform: translateX(12px); }
.sk-toggle .tl[b-k2sanwz73a] { font-size: 0.625rem; color: var(--sedna-text-secondary); font-weight: 500; white-space: nowrap; letter-spacing: 0.03em; }

.sk-filters .f-spacer[b-k2sanwz73a] { flex: 1; }

.sk-apply[b-k2sanwz73a] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: var(--sk-ctrl-h);
    padding: 0 12px;
    line-height: 1;
    white-space: nowrap;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-primary);
    background: var(--sedna-primary);
    color: var(--sedna-text-inverse, #fff);
    font-size: 0.75rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
}
.sk-apply:hover:not(:disabled)[b-k2sanwz73a] { background: var(--sedna-primary-hover); border-color: var(--sedna-primary-hover); }
.sk-apply:disabled[b-k2sanwz73a] { opacity: .6; cursor: default; }

/* ---------------- Scroller / stati ---------------- */
.sk-scroll[b-k2sanwz73a] { flex: 1; min-height: 0; overflow: auto; display: flex; flex-direction: column; }
.sk-view[b-k2sanwz73a] { display: flex; flex: 1; min-height: 0; flex-direction: column; }
.sk-state[b-k2sanwz73a] { display: flex; align-items: center; gap: 10px; padding: 44px; justify-content: center; color: var(--sedna-text-secondary); font-size: .9375rem; }

/* La fascia d'errore sta SOPRA la scheda, non al posto suo: e' un avviso, non uno stato della
   pagina. Percio' e' compatta e allineata a sinistra invece che un riquadro centrato da 44px.
   ⚠️ Il testo e' `--sedna-text`, non l'`--sedna-error-700`: il rosso della scala e' un colore di
   marca, e su fondo `--sedna-error-50` da' un contrasto da titolo, non da leggere. Il segnale
   «e' un errore» lo portano fondo, bordo e ICONA — che e' un segno, non una parola. */
.sk-state--err[b-k2sanwz73a] {
    justify-content: flex-start;
    padding: 8px 12px;
    margin: 6px 0 0;
    gap: 8px;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text);
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-500);
    border-radius: var(--sedna-radius-md, .375rem);
}
.sk-state--err > .bi[b-k2sanwz73a] { color: var(--sedna-error-600); font-size: 1rem; flex: none; }
.sk-state--err > span[b-k2sanwz73a] { flex: 1; min-width: 0; }
.sk-state__retry[b-k2sanwz73a] {
    flex: none;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 10px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    font: inherit;
    font-size: var(--sedna-text-xs);
    cursor: pointer;
}
.sk-state__retry:hover[b-k2sanwz73a] { background: var(--sedna-surface-hover); }

/* meta strip conto */
.sk-meta[b-k2sanwz73a] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    padding: 12px var(--sedna-space-4, 1rem) 0;
    font-size: 0.8125rem;
    color: var(--sedna-text-tertiary);
}
.sk-meta .ttl[b-k2sanwz73a] { font-size: 1rem; font-weight: 600; color: var(--sedna-text); letter-spacing: -0.01em; }
.sk-meta .ttl .mono[b-k2sanwz73a] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-size: 0.9rem; color: var(--sedna-primary); }
.sk-meta .chip[b-k2sanwz73a] { font-size: 0.6875rem; font-weight: 600; color: var(--sedna-text-secondary); background: var(--sedna-surface-hover); padding: 2px 9px; border-radius: 999px; }
.sk-meta .chip.ec[b-k2sanwz73a] { background: var(--sedna-error-50); color: var(--sedna-error-700); }
.sk-meta .chip.pa[b-k2sanwz73a] { background: var(--sedna-primary-subtle); color: var(--sedna-primary); }
.sk-meta .cnt[b-k2sanwz73a] { margin-left: auto; font-size: 0.75rem; }

/* avviso troncamento elenco (totali = intero periodo, righe = prima pagina) */
/* ---------------- Tabella movimenti ---------------- */
.sk-tablewrap[b-k2sanwz73a] {
    flex: 1;
    min-height: 0;
    overflow: auto;
    margin: 12px var(--sedna-space-4, 1rem) 0;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem) var(--sedna-radius-lg, .75rem) 0 0;
    background: var(--sedna-surface);
}
table.sk-tt[b-k2sanwz73a] { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 0.8125rem; }
.sk-tt thead th[b-k2sanwz73a] {
    position: sticky;
    top: 0;
    z-index: 3;
    text-align: left;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    background: var(--sedna-surface-variant);
    padding: 10px 12px;
    white-space: nowrap;
    border-bottom: 1px solid var(--sedna-border);
}
.sk-tt th.num[b-k2sanwz73a], .sk-tt td.num[b-k2sanwz73a] { text-align: right; }
.sk-tt th.dt[b-k2sanwz73a] { width: 96px; }
.sk-tt th.reg[b-k2sanwz73a] { width: 84px; }
.sk-tt th.doc[b-k2sanwz73a] { width: 90px; }
.sk-tt th.num[b-k2sanwz73a] { width: 128px; }

.sk-tt tbody td[b-k2sanwz73a] { padding: 0 12px; height: 34px; vertical-align: middle; border-bottom: 1px solid var(--sedna-border-light); white-space: nowrap; }
.sk-tt tbody tr:last-child td[b-k2sanwz73a] { border-bottom: none; }
.sk-tt tbody tr:hover td[b-k2sanwz73a] { background: color-mix(in srgb, var(--sedna-primary-subtle) 36%, transparent); }
.sk-tt td.caus[b-k2sanwz73a], .sk-tt td.sog[b-k2sanwz73a] { max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
.sk-tt .caus-cod[b-k2sanwz73a] { color: var(--sedna-text-tertiary); font-size: 0.7rem; margin-right: 4px; }
.sk-tt .mono[b-k2sanwz73a] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; }
.sk-tt td.num[b-k2sanwz73a] { font-size: 0.8125rem; }
.sk-tt .saldo[b-k2sanwz73a] { font-weight: 600; }
.sk-tt .saldo.neg[b-k2sanwz73a] { color: var(--sedna-error); }

.sk-reg-link[b-k2sanwz73a] { color: var(--sedna-primary); text-decoration: none; font-weight: 600; }
.sk-reg-link:hover[b-k2sanwz73a] { text-decoration: underline; }

.sk-tt tr.sosp td[b-k2sanwz73a] { opacity: .62; }
.sk-tt .flag[b-k2sanwz73a] {
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 0.575rem; font-weight: 700; letter-spacing: .03em;
    background: var(--sedna-warning-50); color: var(--sedna-warning-700);
    border-radius: 4px; padding: 1px 5px; margin-left: 6px; vertical-align: 1px;
}
.sk-tt .flag.extra[b-k2sanwz73a] { background: var(--sedna-surface-hover); color: var(--sedna-text-secondary); }

/* riga riporto */
.sk-tt tr.sk-riporto td[b-k2sanwz73a] {
    background: color-mix(in srgb, var(--sedna-text) 5%, var(--sedna-surface));
    font-weight: 600;
    box-shadow: inset 3px 0 0 var(--sedna-primary);
}
.sk-tt tr.sk-riporto .rip-sub[b-k2sanwz73a] { font-size: 0.6875rem; font-weight: 400; color: var(--sedna-text-tertiary); margin-left: 6px; }

/* ---------------- Footer totali ---------------- */
.sk-foot[b-k2sanwz73a] {
    flex: none;
    margin: 0 var(--sedna-space-4, 1rem) clamp(14px, 2vw, 20px);
    border: 1px solid var(--sedna-border);
    border-top: none;
    border-radius: 0 0 var(--sedna-radius-lg, .75rem) var(--sedna-radius-lg, .75rem);
    background: var(--sedna-surface-variant);
    display: flex;
    align-items: flex-end;
    gap: clamp(20px, 3vw, 48px);
    padding: 10px clamp(14px, 1.5vw, 20px);
    flex-wrap: wrap;
}

/* Due gruppi (Totale Periodo / Totali): etichetta sopra, i tre box sotto. */
.sk-foot__grp[b-k2sanwz73a] { display: flex; flex-direction: column; gap: 5px; }
.sk-foot__grp:last-child[b-k2sanwz73a] { margin-left: auto; }

.sk-foot__lbl[b-k2sanwz73a] {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
}
.sk-foot__lbl .rng[b-k2sanwz73a] {
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    font-style: italic;
    color: var(--sedna-text-tertiary);
}

.sk-foot__vals[b-k2sanwz73a] { display: flex; gap: 10px; flex-wrap: wrap; }

.sk-tot[b-k2sanwz73a] { display: flex; flex-direction: column; gap: 2px; }
.sk-tot .k[b-k2sanwz73a] {
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--sedna-text-tertiary);
}
/* I box colorati come il vecchio programma: Dare giallo, Avere verde, Saldo rosso. */
.sk-tot .v[b-k2sanwz73a] {
    font-family: var(--sedna-font-mono, "JetBrains Mono", monospace);
    font-variant-numeric: tabular-nums;
    font-weight: 700;
    font-size: 0.9375rem;
    text-align: right;
    min-width: 96px;
    padding: 3px 9px;
    border-radius: 5px;
    border: 1px solid;
    white-space: nowrap;
}
.sk-tot--dare .v[b-k2sanwz73a] {
    background: var(--sedna-dare-bg);
    border-color: var(--sedna-dare-border);
    color: var(--sedna-dare);
}
.sk-tot--avere .v[b-k2sanwz73a] {
    background: var(--sedna-avere-bg);
    border-color: var(--sedna-avere-border);
    color: var(--sedna-avere);
}
.sk-tot--saldo .v[b-k2sanwz73a] {
    background: var(--sedna-error-50, #fef2f2);
    border-color: var(--sedna-error-200, #fecaca);
    color: var(--sedna-error-700, #b91c1c);
}

/* ---------------- Pager ---------------- */
.sk-pager[b-k2sanwz73a] {
    flex: none;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin: 0 var(--sedna-space-4, 1rem) clamp(14px, 2vw, 20px);
}
.sk-pager-info[b-k2sanwz73a] { font-size: 0.8125rem; color: var(--sedna-text-secondary); }
.sk-pager-info b[b-k2sanwz73a] { font-weight: 600; color: var(--sedna-text); font-variant-numeric: tabular-nums; }
.sk-pager-btns[b-k2sanwz73a] { display: inline-flex; align-items: center; gap: 6px; }
.sk-pg[b-k2sanwz73a] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    cursor: pointer;
}
.sk-pg:hover:not(:disabled)[b-k2sanwz73a] { background: var(--sedna-surface-hover); color: var(--sedna-text); }
.sk-pg:disabled[b-k2sanwz73a] { opacity: .45; cursor: default; }
.sk-pg-cur[b-k2sanwz73a] {
    padding: 0 6px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

@media (max-width: 1080px) {
    .sk-filters[b-k2sanwz73a] { gap: 10px; }
    .sk-f--conto[b-k2sanwz73a] { flex-basis: 100%; max-width: none; }
}

/* ---------------- Colonne (scelta utente) ---------------- */
.sk-colwrap[b-k2sanwz73a] { position: relative; }

.sk-cols[b-k2sanwz73a] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: var(--sk-ctrl-h);
    padding: 0 12px;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
}

.sk-cols:hover[b-k2sanwz73a] { border-color: var(--sedna-border-strong); color: var(--sedna-text); }

.sk-colpanel[b-k2sanwz73a] {
    position: absolute;
    top: calc(100% + 4px);
    right: 0;
    z-index: 30;
    min-width: 220px;
    padding: 6px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .375rem);
    background: var(--sedna-surface);
    box-shadow: var(--sedna-shadow-lg);
    display: flex;
    flex-direction: column;
    gap: 1px;
}

.sk-colrow[b-k2sanwz73a] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 8px;
    border-radius: 4px;
    font-size: 0.75rem;
    color: var(--sedna-text);
    cursor: pointer;
}

.sk-colrow:hover[b-k2sanwz73a] { background: var(--sedna-surface-variant); }
.sk-colrow input[disabled] + span[b-k2sanwz73a] { color: var(--sedna-text-tertiary); }

.sk-colreset[b-k2sanwz73a] {
    margin-top: 4px;
    padding: 5px 8px;
    border: none;
    border-top: 1px solid var(--sedna-border-light);
    background: transparent;
    color: var(--sedna-text-secondary);
    font-size: 0.6875rem;
    text-align: left;
    cursor: pointer;
}

.sk-colreset:hover[b-k2sanwz73a] { color: var(--sedna-primary); }

/* Filtri modificati e non ancora applicati: il bottone Aggiorna lo dice. */
.sk-apply.dirty[b-k2sanwz73a] {
    box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
}

/* ---------------- Griglia (SednaServerGrid) ---------------- */
.sk-gridwrap[b-k2sanwz73a] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    margin: 10px var(--sedna-space-4, 1rem) 0;
}

.sk-gridwrap[b-k2sanwz73a]  .sk-ssg { flex: 1; min-height: 0; }
.sk-gridwrap[b-k2sanwz73a]  .mono { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; }
.sk-gridwrap[b-k2sanwz73a]  .saldo { font-weight: 600; }
.sk-gridwrap[b-k2sanwz73a]  .saldo.neg { color: var(--sedna-error); }
.sk-gridwrap[b-k2sanwz73a]  .caus-cod { color: var(--sedna-text-tertiary); font-size: 0.7rem; margin-right: 4px; }
.sk-gridwrap[b-k2sanwz73a]  .sk-reg-link { color: var(--sedna-primary); text-decoration: none; font-weight: 600; }
.sk-gridwrap[b-k2sanwz73a]  .sk-reg-link:hover { text-decoration: underline; }
.sk-gridwrap[b-k2sanwz73a]  tr.sosp td { opacity: .62; }
.sk-gridwrap[b-k2sanwz73a]  .flag {
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 0.575rem; font-weight: 700; letter-spacing: .03em;
    background: var(--sedna-warning-50); color: var(--sedna-warning-700);
    border-radius: 4px; padding: 1px 5px; margin-left: 6px; vertical-align: 1px;
}
.sk-gridwrap[b-k2sanwz73a]  .flag.extra { background: var(--sedna-surface-hover); color: var(--sedna-text-secondary); }

/* Riga di RIPORTO dentro la griglia: e' una riga come le altre, solo marcata —
   niente riquadro, niente colori suoi. Un filo a sinistra e il grassetto bastano,
   e i valori restano incolonnati sotto Dare / Avere / Saldo. */
.sk-gridwrap[b-k2sanwz73a]  tr.ssg__pinned-top > td {
    background: color-mix(in srgb, var(--sedna-text) 3%, var(--sedna-surface));
    border-bottom: 1px solid var(--sedna-border);
    font-weight: 600;
}

.sk-gridwrap[b-k2sanwz73a]  tr.ssg__pinned-top > td:first-child {
    box-shadow: inset 3px 0 0 0 var(--sedna-primary);
}

.sk-rip-sub[b-k2sanwz73a] {
    margin-left: 6px;
    font-weight: 400;
    color: var(--sedna-text-tertiary);
}

/* Il form dei filtri: box neutro (serve position:relative per l'ingranaggio
   dell'ordine campi) che non ruba altezza alla griglia. */
.sk-form[b-k2sanwz73a] { flex: none; --sef-gear-top: 2px; --sef-gear-right: 10px; }

/* ---------------- Intestazione: filtro attivo in chiaro ---------------- */
.sk-head-filtro[b-k2sanwz73a] {
    font-style: italic;
    font-weight: 400;
    color: var(--sedna-text-tertiary);
}

/* ---------------- Toolbar filtri collassabile ---------------- */
.sk-filters-toggle[b-k2sanwz73a] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 6px var(--sedna-space-4, 1rem);
    border: none;
    background: transparent;
    color: var(--sedna-text-secondary);
    font-family: inherit;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    text-align: left;
    cursor: pointer;
}

.sk-filters-toggle:hover[b-k2sanwz73a] { color: var(--sedna-text); }
.sk-filters-toggle i[b-k2sanwz73a] { font-size: 0.75rem; }

.sk-filters-riassunto[b-k2sanwz73a] {
    font-weight: 400;
    font-size: 0.75rem;
    letter-spacing: 0;
    text-transform: none;
    font-style: italic;
    color: var(--sedna-text-tertiary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sk-filters-dirty[b-k2sanwz73a] { color: var(--sedna-primary); font-size: 1rem; line-height: 0; }

/* Riga PRINCIPALE (conto, soggetto, periodo): sempre a video, e' l'identita' della
   scheda. Riga AVANZATI: seconda riga a scomparsa, con un filo che la stacca. */
.sk-filters--main[b-k2sanwz73a] { border-bottom: none; padding-bottom: 8px; }

.sk-filters--adv[b-k2sanwz73a] {
    padding-top: 0;
    padding-bottom: 12px;
    border-top: 1px dashed var(--sedna-border);
    margin-top: 2px;
    /* Una riga sola quando ci sta: i campi hanno larghezza fissa, tarata sul loro
       contenuto. Se lo schermo non basta si va a capo — meglio due righe che un
       filtro finito fuori vista (collaudo 23/07: spariva la compensazione). */
    flex-wrap: wrap;
}

.sk-filters--adv .sk-f[b-k2sanwz73a] { flex: none; }

/* Larghezze tarate sul valore piu' lungo di ciascuna tendina:
   "Per totale x partita", "Giroconto", "Non sospesi", "Aperte". */
/* Larghezze tarate sul VALORE piu' lungo di ciascuna tendina (misurato: testo +
   ~49px di pulsanti clear/dropdown + padding). max-width:none scavalca il cap di
   base — senza, "Per totale x partita" veniva tagliato a 164px. La classe "se" sta
   sul componente DevExpress (dxbl-combo-box): serve ::deep per raggiungerlo. */
/* Ora sono SednaLookup (come Conto e Causale), non piu' combo DevExpress con la
   classe "se": stesso dropdown pulito, niente freccetta schiacciata. La larghezza
   sta sul CONTENITORE e il lookup la riempie. Tarate sul valore piu' lungo di
   ciascuna: "Per totale x partita", "Non sospesi", "Giroconto", "Aperte". */
.sk-f--tdata[b-k2sanwz73a] { flex: none; width: 138px; }
.sk-f--ord[b-k2sanwz73a] { flex: none; width: 146px; }
.sk-f--part[b-k2sanwz73a] { flex: none; width: 84px; }
.sk-f--mov[b-k2sanwz73a] { flex: none; width: 100px; }
.sk-f--sosp[b-k2sanwz73a] { flex: none; width: 112px; }
.sk-filters[b-k2sanwz73a]  .sedna-lookup-container { width: 100%; }


/* Causale e i lookup di ditta/sotto gruppo/compensazione: gli unici a cedere
   spazio, perche' il contenuto e' testo libero. */
.sk-filters--adv .sk-f--caus[b-k2sanwz73a] { flex: 0 1 150px; min-width: 130px; max-width: 175px; }
.sk-filters--adv .sk-f--ditta[b-k2sanwz73a] { flex: 1 1 150px; min-width: 130px; max-width: 220px; }

/* Bottone "Avanzati": stessa altezza dei controlli, tono secondario — apre e chiude,
   non applica niente. */
.sk-adv[b-k2sanwz73a] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: var(--sk-ctrl-h);
    padding: 0 10px;
    line-height: 1;
    border-radius: var(--sedna-radius-base, .375rem);
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-family: inherit;
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
}

.sk-adv:hover[b-k2sanwz73a] { color: var(--sedna-text); border-color: var(--sedna-border-strong); }
.sk-adv.open[b-k2sanwz73a] { color: var(--sedna-primary); border-color: var(--sedna-primary); }

/* Pallino col numero di filtri avanzati attivi: da pannello chiuso e' l'unico segnale
   che la scheda e' ristretta da qualcosa che non si vede. */
.sk-adv__n[b-k2sanwz73a] {
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 999px;
    background: var(--sedna-primary);
    color: var(--sedna-text-inverse, #fff);
    font-size: 0.625rem;
    line-height: 16px;
    text-align: center;
}

/* Saldo progressivo non calcolabile (ordinamento non cronologico) */
.sk-saldo-na[b-k2sanwz73a] { color: var(--sedna-text-tertiary); cursor: help; }

/* Conto aperto nell'intestazione (era la striscia .sk-meta sotto i filtri) */
.sk-head-conto[b-k2sanwz73a] { font-weight: 600; color: var(--sedna-text); }
.sk-head-conto .mono[b-k2sanwz73a] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); color: var(--sedna-primary); }

.sk-head[b-k2sanwz73a]  .sedna-page__sub {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.sk-head .chip[b-k2sanwz73a] {
    font-size: 0.6875rem; font-weight: 600;
    color: var(--sedna-text-secondary); background: var(--sedna-surface-hover);
    padding: 2px 9px; border-radius: 999px;
}
.sk-head .chip.ec[b-k2sanwz73a] { background: var(--sedna-error-50); color: var(--sedna-error-700); }
.sk-head .chip.pa[b-k2sanwz73a] { background: var(--sedna-primary-subtle); color: var(--sedna-primary); }

/* ── Partita: gerarchia fattura -> incassi/pagamenti (ordinamenti PA/PATOT) ──
   Le righe figlie non sono "meno importanti", sono SUBORDINATE: rientro leggero
   e una freccia, niente colore diverso (i colori qui parlano di sospeso/errore). */
.sk-gridwrap[b-k2sanwz73a]  tr.figlia td:nth-child(3) { padding-left: 18px; }

.sk-partita-figlia[b-k2sanwz73a] {
    display: inline-block;
    margin-right: 4px;
    color: var(--sedna-text-tertiary);
    font-weight: 600;
}

/* Footer senza scheda letta: gli stessi totali, a zero e in tono spento — c'e' ma
   non pretende di essere un dato. */
.sk-foot.vuoto[b-k2sanwz73a] { opacity: 0.55; }

/* ── Dare / Avere: la stessa coppia di colori dei movimenti contabili (token di
      dominio), nella versione RIGA — piu' tenue del chip, perche' qui tingono una
      colonna intera e non devono gridare. Solo le celle con un importo. ── */
.sk-gridwrap[b-k2sanwz73a]  td.sk-dare { background: var(--sedna-dare-row); }
.sk-gridwrap[b-k2sanwz73a]  td.sk-avere { background: var(--sedna-avere-row); }

/* Documento di una partita CHIUSA (incassata/pagata): verde tenue sulla cella del
   numero — si cerca "cosa e' ancora aperto" scorrendo questa colonna. */
.sk-gridwrap[b-k2sanwz73a]  td.sk-doc-pagato { background: color-mix(in srgb, var(--sedna-success-500, #4caf50) 12%, transparent); }

/* Cella "Doc.": numero allineato a destra, spunta verde (solo partite CHIUSE)
   all'estrema sinistra — così i numeri restano allineati al bordo destro a
   prescindere dalla presenza dell'icona. */
.sk-gridwrap[b-k2sanwz73a]  .sk-doc-cell { display: flex; align-items: center; width: 100%; }
.sk-gridwrap[b-k2sanwz73a]  .sk-doc-cell .sk-part { margin-right: auto; }   /* icona a sinistra */
.sk-gridwrap[b-k2sanwz73a]  .sk-doc-num { margin-left: auto; }              /* numero a destra */
.sk-gridwrap[b-k2sanwz73a]  .sk-part { font-size: 0.72rem; vertical-align: -1px; }
.sk-gridwrap[b-k2sanwz73a]  .sk-part--chiusa { color: var(--sedna-success-600, #16a34a); }

/* Le tinte non devono coprire selezione e riga attiva: quelle vincono. */
.sk-gridwrap[b-k2sanwz73a]  tr.ssg__row--selected td,
.sk-gridwrap[b-k2sanwz73a]  tr.ssg__row--active td { background: inherit; }

/* Avviso "saldo progressivo sospeso": e' un chip CLICCABILE, quindi si comporta da
   bottone — cursore e hover lo dicono. Tono d'attenzione, non d'errore: la scheda
   e' giusta, manca solo una colonna. */
.sk-head[b-k2sanwz73a]  .chip--warn {
    border-color: var(--sedna-warning-300, #fcd34d);
    background: var(--sedna-warning-50, #fffbeb);
    color: var(--sedna-warning-800, #92400e);
    cursor: pointer;
    font: inherit;
}

.sk-head[b-k2sanwz73a]  .chip--warn:hover { background: var(--sedna-warning-100, #fef3c7); }

/* Compensazione non disponibile (conto non CL/FO): la spunta resta a video ma
   spenta — si vede che l'opzione esiste, e il tooltip dice perche' non e' attiva. */
.sk-toggle.off[b-k2sanwz73a] { opacity: 0.5; cursor: default; }
.sk-toggle.off .switch input[b-k2sanwz73a] { cursor: default; }

/* Fumetto PARTITA (hover N. Reg.): flottante sul cursore, denso, sola lettura. */
.sk-partita-pop[b-k2sanwz73a] {
    position: fixed;
    z-index: 1200;
    max-width: 360px;
    padding: 8px 10px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .5rem);
    background: var(--sedna-surface);
    box-shadow: var(--sedna-shadow-lg, 0 10px 30px rgba(16,24,40,.18));
    pointer-events: none;
    font-size: 0.75rem;
}
.sk-partita-pop__title[b-k2sanwz73a] {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: var(--sedna-text-secondary);
    margin-bottom: 6px;
}
.sk-partita-pop__tbl[b-k2sanwz73a] { width: 100%; border-collapse: collapse; }
.sk-partita-pop__tbl th[b-k2sanwz73a] {
    text-align: left;
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-tertiary);
    padding: 2px 8px 3px 0;
    border-bottom: 1px solid var(--sedna-border);
}
.sk-partita-pop__tbl td[b-k2sanwz73a] {
    padding: 2px 8px 2px 0;
    color: var(--sedna-text);
    white-space: nowrap;
}
.sk-partita-pop__tbl .num[b-k2sanwz73a] { text-align: right; padding-right: 0; }
.sk-partita-pop__tbl .mono[b-k2sanwz73a] { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; }
.sk-partita-pop__tot td[b-k2sanwz73a] {
    border-top: 1px solid var(--sedna-border);
    font-weight: 700;
    padding-top: 3px;
}

/* L'anticipo sulla fattura del cliente: informativo, non un allarme — la fattura e'
   normale, e' solo gia' finanziata. */
.sk-anticipo[b-k2sanwz73a] {
    color: var(--sedna-info-600);
    font-size: 0.72rem;
    white-space: nowrap;
}
/* /Pages/Contabilita/SchedeContabili/StampaSchedeContabiliPage.razor.rz.scp.css */
/* Stampa schede contabili (mastrini).

   È una pagina di SCELTE, non una griglia: niente da far scorrere, tutto da leggere una
   volta sola. Per questo le sezioni sono larghe e distanziate invece che compresse in una
   toolbar — la toolbar serve dove sotto c'è un elenco che si vuole vedere. */

.stsc-body[b-eqm908c1uo] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 12px;
    overflow: auto;
}

.stsc-head-sub[b-eqm908c1uo] { color: var(--sedna-text-secondary); }

.stsc-sec[b-eqm908c1uo] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    padding: 10px 12px;
}

.stsc-sec__h[b-eqm908c1uo] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.stsc-sec__t[b-eqm908c1uo] {
    margin: 0 0 8px;
    font-size: var(--sedna-text-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--sedna-text-secondary);
}

.stsc-sec__h .stsc-sec__t[b-eqm908c1uo] { margin-bottom: 0; }

/* ── Perimetro: tre bersagli, uno acceso ─────────────────────────────────────────
   Il selezionato si riconosce dal FONDO pieno e non da un bordo più scuro: con tre
   pulsanti vicini un bordo si legge come «ci passo sopra col mouse». */
.stsc-perimetro[b-eqm908c1uo] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 10px;
}

.stsc-per[b-eqm908c1uo] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    font: inherit;
    font-size: var(--sedna-text-sm);
    cursor: pointer;
}

.stsc-per:hover[b-eqm908c1uo] { background: var(--sedna-surface-hover); }

.stsc-per.is-on[b-eqm908c1uo] {
    background: color-mix(in srgb, var(--sedna-primary) 14%, transparent);
    border-color: var(--sedna-primary);
    font-weight: 600;
}

.stsc-per:focus-visible[b-eqm908c1uo] { outline: 2px solid var(--sedna-primary); outline-offset: 1px; }

/* ── Campi ───────────────────────────────────────────────────────────────────── */
.stsc-campi[b-eqm908c1uo] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 10px 14px;
}

.stsc-campi + .stsc-campi[b-eqm908c1uo] { margin-top: 10px; }

.stsc-campi--opz[b-eqm908c1uo] { align-items: center; }

.stsc-f[b-eqm908c1uo] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 150px;
}

.stsc-f--largo[b-eqm908c1uo] { min-width: 260px; }

.stsc-f > label[b-eqm908c1uo] {
    font-size: var(--sedna-text-xs);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--sedna-text-secondary);
}

.stsc-date[b-eqm908c1uo] { width: 148px; }

/* ── Note: frasi, non voci d'elenco ──────────────────────────────────────────── */
.stsc-nota[b-eqm908c1uo] {
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    line-height: 1.45;
}

/* Su una riga di campi la nota prende quello che resta, e va a capo da sola quando la
   riga è piena: così sta accanto ai campi che spiega finché ci sta, e sotto quando no. */
.stsc-nota--riga[b-eqm908c1uo] { flex: 1 1 260px; align-self: center; }

/* ── Cosa stamperai ─────────────────────────────────────────────────────────── */
.stsc-numeri[b-eqm908c1uo] {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    margin: 8px 0;
}

.stsc-num[b-eqm908c1uo] { display: flex; align-items: baseline; gap: 6px; }

.stsc-num__v[b-eqm908c1uo] {
    font-size: var(--sedna-text-xl);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text);
}

.stsc-num__l[b-eqm908c1uo] { font-size: var(--sedna-text-xs); color: var(--sedna-text-secondary); }

.stsc-num--muto .stsc-num__v[b-eqm908c1uo] { color: var(--sedna-text-secondary); font-weight: 500; }

/* Le prime schede in chiaro: servono a far dire «sì, è quello che volevo» prima di
   lanciare ottanta pagine. Monospaziato perché la prima cosa che si guarda è il codice. */
.stsc-prime[b-eqm908c1uo] {
    margin: 4px 0 8px;
    padding-left: 18px;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    columns: 2;
}

.stsc-prime__altre[b-eqm908c1uo] { list-style: none; margin-left: -18px; font-style: italic; }

.stsc-msg[b-eqm908c1uo] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 8px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    font-size: var(--sedna-text-sm);
    line-height: 1.45;
}

.stsc-msg--vuoto[b-eqm908c1uo] {
    background: var(--sedna-surface-alt, var(--sedna-surface));
    border: 1px dashed var(--sedna-border);
    color: var(--sedna-text-secondary);
}

/* Un rifiuto del server è un NO, non un avviso: si vede subito che la stampa non parte. */
.stsc-msg--no[b-eqm908c1uo] {
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-600);
    color: var(--sedna-text);
}

.stsc-attesa[b-eqm908c1uo] { display: flex; justify-content: center; padding: 16px 0; }

@media (max-width: 900px) {
    .stsc-prime[b-eqm908c1uo] { columns: 1; }
}

/* ── I controlli ──────────────────────────────────────────────────────────────
   Quattro esiti da leggere in due secondi e, sotto ciascuno, le voci che lo spiegano.

   L'esito si legge PRIMA delle parole, quindi sta in una striscia di colore sul bordo
   sinistro e in un'icona: il colore da solo non basta (chi non lo distingue vedrebbe
   quattro riquadri uguali), l'icona da sola sarebbe piccola. */

.stsc-ctrl-testa[b-eqm908c1uo] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px 16px;
    margin: 8px 0 10px;
}

.stsc-ctrl-testa__n[b-eqm908c1uo] {
    font-size: var(--sedna-text-lg);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.stsc-ctrl-testa__s[b-eqm908c1uo] {
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    font-variant-numeric: tabular-nums;
}

.stsc-ctrl-testa__no[b-eqm908c1uo] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: var(--sedna-text-xs);
    font-weight: 600;
    color: var(--sedna-error-700, var(--sedna-error-600));
}

.stsc-ctrl[b-eqm908c1uo] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.stsc-ctrl__i[b-eqm908c1uo] {
    border: 1px solid var(--sedna-border);
    border-left-width: 3px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    padding: 8px 10px;
}

.stsc-ctrl__i.is-ok[b-eqm908c1uo] { border-left-color: var(--sedna-success-600); }
.stsc-ctrl__i.is-no[b-eqm908c1uo] { border-left-color: var(--sedna-error-600); background: var(--sedna-error-50); }
.stsc-ctrl__i.is-muto[b-eqm908c1uo] { border-left-color: var(--sedna-text-tertiary); }

.stsc-ctrl__t[b-eqm908c1uo] {
    display: flex;
    align-items: center;
    gap: 7px;
}

.stsc-ctrl__i.is-ok .stsc-ctrl__t > i[b-eqm908c1uo] { color: var(--sedna-success-600); }
.stsc-ctrl__i.is-no .stsc-ctrl__t > i[b-eqm908c1uo] { color: var(--sedna-error-600); }
.stsc-ctrl__i.is-muto .stsc-ctrl__t > i[b-eqm908c1uo] { color: var(--sedna-text-tertiary); }

.stsc-ctrl__tit[b-eqm908c1uo] {
    font-size: var(--sedna-text-sm);
    font-weight: 600;
}

/* Il messaggio del server: è una frase, e va letta come una frase. */
.stsc-ctrl__m[b-eqm908c1uo] {
    margin-top: 3px;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    line-height: 1.5;
}

.stsc-ctrl__i.is-muto .stsc-ctrl__tit[b-eqm908c1uo] { color: var(--sedna-text-secondary); }

/* ── Le voci di un controllo ──────────────────────────────────────────────────
   Nome a sinistra, importo a destra incolonnato: gli importi si confrontano solo se
   stanno uno sotto l'altro. La nota va sotto entrambi, su tutta la larghezza — è una
   spiegazione, non una terza colonna. */
.stsc-voci[b-eqm908c1uo] {
    list-style: none;
    margin: 8px 0 0;
    padding: 0;
    border-top: 1px solid var(--sedna-border);
}

.stsc-voce[b-eqm908c1uo] {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 2px 12px;
    padding: 5px 0;
    font-size: var(--sedna-text-xs);
}

.stsc-voce + .stsc-voce[b-eqm908c1uo] { border-top: 1px solid color-mix(in srgb, var(--sedna-border) 55%, transparent); }

.stsc-voce__n[b-eqm908c1uo] { min-width: 0; }

.stsc-voce__i[b-eqm908c1uo] {
    font-family: var(--sedna-font-mono, ui-monospace, monospace);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    white-space: nowrap;
}

.stsc-voce__no[b-eqm908c1uo] {
    grid-column: 1 / -1;
    color: var(--sedna-text-tertiary);
    line-height: 1.45;
}

.stsc-voce--altre[b-eqm908c1uo] {
    display: block;
    font-style: italic;
    color: var(--sedna-text-secondary);
}

/* La nota che smentisce la casella sopra: attaccata alla casella, non fra i campi. */
.stsc-nota--sotto[b-eqm908c1uo] { flex-basis: 100%; margin-top: -4px; }

/* ── Le due stampe, etichettate ───────────────────────────────────────────────
   Due stampanti identiche nella stessa barra non si distinguono: l'etichetta sta
   ACCANTO all'icona e non nel solo `title`, che si vede dopo aver sbagliato. */
.stsc-stampa[b-eqm908c1uo] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.stsc-stampa__l[b-eqm908c1uo] {
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    white-space: nowrap;
}
/* /Pages/Contabilita/Tabelle/ModalitaPagamentoDetail.razor.rz.scp.css */
.modalita-detail .sedna-card[b-ysw92ozsjp] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, 12px);
    padding: var(--sedna-space-4, 1rem);
    margin-bottom: var(--sedna-space-4, 1rem);
}

.modalita-detail .sedna-card__title[b-ysw92ozsjp] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2, .5rem);
    font-weight: 600;
    font-size: var(--sedna-text-base, 1rem);
    margin-bottom: var(--sedna-space-3, .75rem);
    color: var(--sedna-text);
}

.modalita-detail__title-actions[b-ysw92ozsjp] {
    margin-left: auto;
    display: flex;
    align-items: center;
}

.modalita-detail__sum[b-ysw92ozsjp] {
    font-size: var(--sedna-text-sm, .875rem);
    font-weight: 600;
    padding: .15rem .5rem;
    border-radius: var(--sedna-radius-md, 8px);
}

.modalita-detail__sum.is-ok[b-ysw92ozsjp] {
    color: var(--sedna-success-700);
    background: var(--sedna-state-success-bg);
}

.modalita-detail__sum.is-bad[b-ysw92ozsjp] {
    color: var(--sedna-error-700);
    background: var(--sedna-state-error-bg);
}

.modalita-detail__hint[b-ysw92ozsjp],
.modalita-detail .text-muted[b-ysw92ozsjp] {
    color: var(--sedna-text-tertiary);
    font-weight: 400;
    font-size: var(--sedna-text-sm, .875rem);
}

.modalita-detail__empty[b-ysw92ozsjp] {
    padding: var(--sedna-space-4, 1rem);
    color: var(--sedna-text-secondary);
    background: var(--sedna-bg-subtle);
    border-radius: var(--sedna-radius-md, 8px);
    font-size: var(--sedna-text-sm, .875rem);
}

.modalita-detail__table[b-ysw92ozsjp] {
    width: 100%;
    border-collapse: collapse;
}

.modalita-detail__table th[b-ysw92ozsjp] {
    text-align: left;
    font-size: var(--sedna-text-xs, .75rem);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--sedna-text-tertiary);
    padding: var(--sedna-space-2, .5rem);
    border-bottom: 1px solid var(--sedna-border);
}

.modalita-detail__table td[b-ysw92ozsjp] {
    padding: var(--sedna-space-2, .5rem);
    border-bottom: 1px solid var(--sedna-border-light);
    vertical-align: middle;
}

.modalita-detail__table .num[b-ysw92ozsjp] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.modalita-detail__table--preview tfoot td[b-ysw92ozsjp] {
    border-top: 2px solid var(--sedna-border);
    border-bottom: none;
    font-weight: 600;
}

.modalita-detail__table--preview tr.is-iva td[b-ysw92ozsjp] {
    color: var(--sedna-text-secondary);
    font-style: italic;
}

.modalita-detail__preview-inputs[b-ysw92ozsjp] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sedna-space-4, 1rem);
    margin-bottom: var(--sedna-space-4, 1rem);
}

.modalita-detail__preview-inputs > div[b-ysw92ozsjp] {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    min-width: 140px;
}

.modalita-detail__preview-inputs label[b-ysw92ozsjp] {
    font-size: var(--sedna-text-xs, .75rem);
    color: var(--sedna-text-secondary);
    font-weight: 500;
}

/* Footer della griglia rate (come il footer del corpo movimento contabile):
   somma incidenze a sinistra, azioni a destra. */
.modalita-rate-footer[b-ysw92ozsjp] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2, .5rem);
    flex-wrap: wrap;
    width: 100%;
}

.modalita-rate-footer__spacer[b-ysw92ozsjp] {
    flex: 1 1 auto;
}
/* /Pages/Contabilita/Tabelle/ModalitaPagamentoPage.razor.rz.scp.css */
/* ===================================
   MODALITA DI PAGAMENTO — layout dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). La griglia scrolla
   internamente. Qui restano solo gli stili specifici.
   =================================== */

[b-qzoi57mxn0] .list-error-banner {
    flex: none;
}

[b-qzoi57mxn0] .dx-datagrid {
    height: 100%;
}

[b-qzoi57mxn0] .dx-datagrid-headers,
[b-qzoi57mxn0] .dx-datagrid-rowsview {
    max-height: none;
}

[b-qzoi57mxn0] .dx-datagrid-rowsview {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* ========================================
   TOOLBAR — searchbox custom (pattern lista Clienti)
   Search dentro la toolbar della griglia (stessa riga di Colonne/Esporta).
   ======================================== */
.toolbar[b-qzoi57mxn0] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.toolbar .search[b-qzoi57mxn0] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-qzoi57mxn0] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-qzoi57mxn0] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-qzoi57mxn0]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-qzoi57mxn0] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 760px) {
    .toolbar[b-qzoi57mxn0] {
        flex-wrap: wrap;
    }

    .toolbar .search[b-qzoi57mxn0] {
        width: 100%;
    }
}
/* /Pages/Dashboard/Index.razor.rz.scp.css */
/* ============================================================
   Dashboard — stessa veste della schermata di avvio (index.html
   .sn-boot): gradient brand-blue, pattern di puntini, marchio
   che si disegna. Chi entra vede continuita' col boot invece di
   un salto a una pagina bianca.
   Contenuto: benvenuto, orologio, meteo.
   ============================================================ */

/* Non disegna: serve solo al `:has()` qui sotto. */
.dash[b-886o573rkq] { display: contents; }

.dash-hero[b-886o573rkq] {
    /* FULL-BLEED: il contenitore del contenuto parte da y=0 ed e' alto quanto il
       viewport, con 8px di padding — non c'e' topbar da scontare. Si annulla il
       padding col margine negativo: sotto non resta la striscia chiara. */
    min-height: 100dvh;
    margin: -0.5rem;
}

/* ⚠️ COL PANNELLO DEL PRIMO AVVIO, LA HOME NON SI DISEGNA (Bruno, 14/09: «è brutto che
   si veda la pagina sotto»). Una ditta nuova vedeva due pagine una sull'altra — il
   pannello delle cose da fare e mezza Home con orologio e meteo — e nessuna delle due
   aveva l'aria per essere letta.

   ⚠️ MA SOLO FINCHÉ C'È QUALCOSA DA FARE: quando il pannello passa a `is-pronta` («La
   ditta è pronta») la Home TORNA, e il pannello le resta sopra. Quello è il momento del
   passaggio — nascondere tutto lì lascerebbe una pagina che dice «sei pronto» senza
   mostrare a cosa. È la decisione che mi lasciavi: la scrivo qui perché è una scelta, non
   una conseguenza. */
.dash:has(.pavv:not(.is-pronta)) .dash-hero[b-886o573rkq] { display: none; }

/* Senza la Home sotto, il pannello ha la pagina per sé: un po' d'aria sopra e una
   larghezza da leggere, invece di restare appiccicato in alto a sinistra. */
.dash:has(.pavv:not(.is-pronta))[b-886o573rkq] {
    display: block;
    padding-top: 4vh;
}

.dash:has(.pavv:not(.is-pronta)) .pavv[b-886o573rkq] {
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
}

/* ⚠️ QUANDO C'E' IL PANNELLO DEL PRIMO AVVIO, l'hero non si tira su e non pretende
   tutto il viewport. Il margine negativo di -0.5rem serve a far partire il blu da
   y=0 quando l'hero e' solo; col pannello sopra quello stesso margine gli saliva
   ADDOSSO, e l'ultima riga («I magazzini — facoltativo») finiva sotto il blu, col
   logo tagliato subito sotto (Bruno a video, 14/09).

   ⚠️ E il `100dvh` sparisce insieme: sommato all'altezza del pannello faceva una
   pagina piu' alta dello schermo comunque, cioe' costringeva a scorrere per vedere
   una home che non ha niente sotto. */
.dash:has(.pavv) .dash-hero[b-886o573rkq] {
    margin-top: 0;
    min-height: calc(100dvh - 120px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    text-align: center;
    padding: 2rem 1rem;
    position: relative;
    overflow: hidden;
    color: #fff;
    border-radius: 0;
    background:
        radial-gradient(circle at 100% 0%, rgba(255, 255, 255, 0.10) 0%, transparent 35%),
        radial-gradient(circle at 0% 100%, rgba(255, 255, 255, 0.08) 0%, transparent 40%),
        linear-gradient(135deg, #1565c0 0%, #1976d2 55%, #0d47a1 100%);
}

/* Stacco col bianco della sidebar: niente schiaritura (leggeva come una foschia).
   Una OMBRA sottilissima sul bordo sinistro — la sidebar "posa" un filo d'ombra sul
   blu, come se galleggiasse: si percepisce la profondita' senza band chiare. */
.dash-hero[b-886o573rkq]::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    width: 24px;
    pointer-events: none;
    background: linear-gradient(90deg,
        rgba(0, 0, 0, 0.06) 0%,
        rgba(0, 0, 0, 0.02) 40%,
        transparent 100%);
}

/* Pattern di puntini soft, sfumato in alto e in basso: texture senza rumore. */
.dash-hero[b-886o573rkq]::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image: radial-gradient(rgba(255, 255, 255, 0.08) 1px, transparent 1px);
    background-size: 22px 22px;
    opacity: 0.5;
    -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 30%, #000 70%, transparent 100%);
    mask-image: linear-gradient(180deg, transparent 0%, #000 30%, #000 70%, transparent 100%);
    pointer-events: none;
}

.dash-hero > *[b-886o573rkq] { position: relative; z-index: 1; }

/* ── Marchio: si disegna UNA volta all'ingresso (al boot il ciclo e' infinito
      perche' segnala l'attesa; qui l'attesa non c'e', quindi si posa e respira). ── */
.dash-hero__mark[b-886o573rkq] {
    width: 128px;
    height: 128px;
    margin-bottom: 0.25rem;
    animation: dh-breathe-b-886o573rkq 6s ease-in-out 1.4s infinite;
}

.dash-hero__mark svg[b-886o573rkq] { width: 100%; height: 100%; overflow: visible; }

.dh-hex[b-886o573rkq] {
    fill: rgba(255, 255, 255, 0.06);
    stroke: #fff;
    stroke-width: 4;
    stroke-linejoin: round;
    stroke-dasharray: 300;
    stroke-dashoffset: 300;
    animation: dh-draw-b-886o573rkq 1400ms cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

.dh-sprout[b-886o573rkq] {
    transform-box: fill-box;
    transform-origin: 50% 100%;
    opacity: 0;
    animation: dh-grow-b-886o573rkq 1400ms cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

.dh-pivot[b-886o573rkq] {
    fill: #ffd54f;
    transform-box: fill-box;
    transform-origin: center;
    opacity: 0;
    animation: dh-pop-b-886o573rkq 1400ms cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

@keyframes dh-draw-b-886o573rkq {
    0%   { stroke-dashoffset: 300; }
    60%  { stroke-dashoffset: 0; }
    100% { stroke-dashoffset: 0; }
}
@keyframes dh-grow-b-886o573rkq {
    0%, 30%   { opacity: 0; transform: scaleY(0.1); }
    70%       { opacity: 1; transform: scaleY(1.08); }
    85%, 100% { opacity: 1; transform: scaleY(1); }
}
@keyframes dh-pop-b-886o573rkq {
    0%, 60%   { opacity: 0; transform: scale(0.2); }
    80%       { opacity: 1; transform: scale(1.3); }
    92%, 100% { opacity: 1; transform: scale(1); }
}
@keyframes dh-breathe-b-886o573rkq {
    0%, 100% { transform: scale(1); }
    50%      { transform: scale(1.03); }
}

/* ── Marchio a parola: identico al boot ── */
.dash-hero__word[b-886o573rkq] {
    font-size: 2rem;
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1;
    color: #fff;
}

.dash-hero__word .next[b-886o573rkq] { font-weight: 600; color: rgba(255, 255, 255, 0.66); }

/* ── Nome della ditta: sotto il marchio, un gradino piu' piccolo ── */
.dash-hero__tag[b-886o573rkq] {
    font-size: 0.875rem;
    color: rgba(255, 255, 255, 0.62);
    margin: 0;
}

/* ── Orologio ── */
.dash-hero__clock[b-886o573rkq] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    margin-top: 0.5rem;
}

.dash-hero__time[b-886o573rkq] {
    font-size: 3.25rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.02em;
    color: #fff;
    line-height: 1.05;
    text-shadow: 0 2px 12px rgba(0, 0, 0, 0.18);
}

.dash-hero__date[b-886o573rkq] {
    font-size: 1rem;
    color: rgba(255, 255, 255, 0.72);
    text-transform: capitalize;
}

/* ── Meteo: chip di vetro sul gradient ── */
.dash-hero__meteo[b-886o573rkq] {
    display: inline-flex;
    align-items: center;
    gap: 0.625rem;
    margin-top: 0.75rem;
    padding: 0.5rem 1.1rem;
    border: 1px solid rgba(255, 255, 255, 0.28);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.dash-meteo-icon[b-886o573rkq] { font-size: 1.6rem; line-height: 1; display: inline-flex; }

.dash-hero__temp[b-886o573rkq] {
    font-size: 1.25rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: #fff;
}

.dash-hero__cond[b-886o573rkq] {
    font-size: 0.9375rem;
    color: rgba(255, 255, 255, 0.78);
}

/* Animazioni per condizione: sole che ruota, nuvole che fluttuano,
   pioggia/neve che "cadono", temporale che lampeggia. Colori schiariti
   per reggere sul fondo blu. */
.dash-meteo-icon--sole i[b-886o573rkq] {
    color: #ffd54f;
    animation: dh-spin-b-886o573rkq 14s linear infinite;
    display: inline-block;
}

.dash-meteo-icon--nuvole i[b-886o573rkq],
.dash-meteo-icon--coperto i[b-886o573rkq] {
    color: #e3f2fd;
    animation: dh-drift-b-886o573rkq 4s ease-in-out infinite;
    display: inline-block;
}

.dash-meteo-icon--nuvole i[b-886o573rkq] { color: #ffd54f; }

.dash-meteo-icon--pioggia i[b-886o573rkq] {
    color: #90caf9;
    animation: dh-fall-b-886o573rkq 1.6s ease-in-out infinite;
    display: inline-block;
}

.dash-meteo-icon--neve i[b-886o573rkq] {
    color: #e1f5fe;
    animation: dh-fall-b-886o573rkq 2.4s ease-in-out infinite;
    display: inline-block;
}

.dash-meteo-icon--temporale i[b-886o573rkq] {
    color: #b3c7ff;
    animation: dh-flash-b-886o573rkq 2.2s ease-in-out infinite;
    display: inline-block;
}

@keyframes dh-spin-b-886o573rkq  { to { transform: rotate(360deg); } }
@keyframes dh-drift-b-886o573rkq { 0%, 100% { transform: translateX(-2px); } 50% { transform: translateX(2px); } }
@keyframes dh-fall-b-886o573rkq  { 0%, 100% { transform: translateY(-1px); } 50% { transform: translateY(2px); } }
@keyframes dh-flash-b-886o573rkq { 0%, 88%, 100% { opacity: 1; } 92%, 96% { opacity: 0.35; } }

@media (prefers-reduced-motion: reduce) {
    .dash-hero__mark[b-886o573rkq] { animation: none; }
    .dh-hex[b-886o573rkq] { animation: none; stroke-dashoffset: 0; }
    .dh-sprout[b-886o573rkq], .dh-pivot[b-886o573rkq] { animation: none; opacity: 1; transform: none; }
    .dash-meteo-icon i[b-886o573rkq] { animation: none !important; }
}
/* /Pages/Documenti/Componenti/DocumentoFlusso.razor.rz.scp.css */
/* ═══ Filiera documento (catena riferimenti) ═══ */

/* card allineata ai pannelli post del design (doc-post-card) */
.flusso-panel[b-8ox6rc8pa4] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    padding: 12px 14px;
}

.flusso-panel__title[b-8ox6rc8pa4] {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
    margin-bottom: 10px;
}

.flusso-panel__title i[b-8ox6rc8pa4] { color: var(--sedna-text-tertiary); }

.flusso-loading[b-8ox6rc8pa4] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 0;
    color: var(--sedna-text-secondary);
    font-size: 0.8125rem;
}

/* catena orizzontale */
.flusso-chain[b-8ox6rc8pa4] {
    display: flex;
    align-items: center;
    gap: 6px;
    overflow-x: auto;
    padding: 4px 0 8px;
}

.flusso-col[b-8ox6rc8pa4] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex: none;
}

.flusso-arrow[b-8ox6rc8pa4] {
    flex: none;
    color: var(--sedna-text-tertiary);
    font-size: 1rem;
    padding: 0 2px;
}

/* nodo = chip "chain-doc" del design */
.flusso-nodo[b-8ox6rc8pa4] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
    min-width: 128px;
    padding: 6px 10px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    font-family: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color .12s ease, background-color .12s ease;
}

.flusso-nodo:hover:not(:disabled)[b-8ox6rc8pa4] {
    border-color: var(--sedna-primary);
    background: var(--sedna-primary-subtle, #e3f2fd);
}

.flusso-nodo--current[b-8ox6rc8pa4] {
    border-color: var(--sedna-primary);
    background: var(--sedna-primary-subtle, #e3f2fd);
    cursor: default;
}

.flusso-nodo__tipo[b-8ox6rc8pa4] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--sedna-primary);
}

.flusso-nodo__num[b-8ox6rc8pa4] {
    font-size: 0.8125rem;
    font-weight: 700;
    color: var(--sedna-text);
    font-variant-numeric: tabular-nums;
}

.flusso-nodo__data[b-8ox6rc8pa4] {
    font-size: 0.6875rem;
    color: var(--sedna-text-secondary);
    font-variant-numeric: tabular-nums;
}

.flusso-nodo__tot[b-8ox6rc8pa4] {
    font-size: 0.6875rem;
    color: var(--sedna-text-secondary);
    font-variant-numeric: tabular-nums;
}

.flusso-nodo__badge[b-8ox6rc8pa4] {
    margin-top: 2px;
    font-size: 0.5625rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-primary);
}

.flusso-nodo__badge--ann[b-8ox6rc8pa4] { color: var(--sedna-error-700); }

/* effetti */
.flusso-effetti[b-8ox6rc8pa4] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    padding-top: 6px;
    border-top: 1px dashed var(--sedna-border-light);
}

.flusso-effetti__lbl[b-8ox6rc8pa4] {
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
}

.flusso-effetto[b-8ox6rc8pa4] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border-light);
    border-radius: 999px;
    padding: 2px 10px;
    font-family: inherit;
}

.flusso-effetto--link[b-8ox6rc8pa4] { cursor: pointer; }
.flusso-effetto--link:hover[b-8ox6rc8pa4] { border-color: var(--sedna-primary); color: var(--sedna-primary); }

/* dettaglio riferimenti espandibile */
.flusso-dettaglio[b-8ox6rc8pa4] { margin-top: 8px; }

.flusso-dettaglio summary[b-8ox6rc8pa4] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
    cursor: pointer;
    user-select: none;
}

.flusso-dettaglio summary:hover[b-8ox6rc8pa4] { color: var(--sedna-primary); }

/* Scroll interno dell'elenco righe: la modal resta dentro lo schermo
   anche con centinaia di riferimenti; l'header di colonna resta visibile. */
.flusso-rif-scroll[b-8ox6rc8pa4] {
    max-height: 40vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    margin-top: 6px;
}

.flusso-rif-table[b-8ox6rc8pa4] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.flusso-rif-table thead th[b-8ox6rc8pa4] {
    position: sticky;
    top: 0;
    background: var(--sedna-surface, #fff);
    z-index: 1;
}

.flusso-rif-table th[b-8ox6rc8pa4] {
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    text-align: left;
    padding: 4px 8px;
    border-bottom: 1px solid var(--sedna-border);
}

.flusso-rif-table td[b-8ox6rc8pa4] {
    padding: 4px 8px;
    border-bottom: 1px solid var(--sedna-border-light);
}

.flusso-rif-table .num[b-8ox6rc8pa4] { text-align: right; font-variant-numeric: tabular-nums; }

.flusso-vuoto[b-8ox6rc8pa4] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 18px 8px;
    font-size: 0.8125rem;
    color: var(--sedna-text-tertiary);
}

    .flusso-vuoto i[b-8ox6rc8pa4] { font-size: 1.1rem; }
/* /Pages/Documenti/Componenti/DocumentoGeneraModal.razor.rz.scp.css */
/* ═══ Modal "Genera documento da questo" ═══ */

.gen-righe[b-8t40nkt8li] { margin-top: 10px; }

.gen-righe__hint[b-8t40nkt8li] {
    font-size: 0.75rem;
    color: var(--sedna-text-tertiary);
    margin-bottom: 6px;
}

.gen-righe-table[b-8t40nkt8li] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.gen-righe-table th[b-8t40nkt8li] {
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    text-align: left;
    padding: 5px 8px;
    border-bottom: 1px solid var(--sedna-border);
}

.gen-righe-table td[b-8t40nkt8li] {
    padding: 4px 8px;
    border-bottom: 1px solid var(--sedna-border-light);
    vertical-align: middle;
}

.gen-righe-table .num[b-8t40nkt8li] { text-align: right; font-variant-numeric: tabular-nums; }
.gen-righe-table .mono[b-8t40nkt8li] { font-variant-numeric: tabular-nums; white-space: nowrap; }

.gen-riga--esclusa td[b-8t40nkt8li] { opacity: 0.45; }

.gen-residuo--zero[b-8t40nkt8li] { color: var(--sedna-text-tertiary); }

/* ── Default "intero documento" + presa parziale a richiesta ── */
.gen-tutto[b-8t40nkt8li] {
    margin-top: 12px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 14px;
    border: 1px solid var(--sedna-success-200, #bbe5c8);
    background: var(--sedna-success-50, #f0faf3);
    border-radius: var(--sedna-radius-md, 0.5rem);
}

.gen-tutto__info[b-8t40nkt8li] {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 0.8125rem;
    color: var(--sedna-text);
}

    .gen-tutto__info > i[b-8t40nkt8li] {
        font-size: 1.25rem;
        color: var(--sedna-success-600, #16a34a);
    }

.gen-tutto__escluse[b-8t40nkt8li] { color: var(--sedna-text-tertiary); }

.gen-tutto__parziale[b-8t40nkt8li] {
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-input, 0.375rem);
    padding: 4px 10px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-primary);
    cursor: pointer;
    white-space: nowrap;
}

    .gen-tutto__parziale:hover[b-8t40nkt8li] { background: var(--sedna-primary-subtle, #e3f2fd); }

/* Corpo modal contenuto nello schermo: scrolla SOLO l'elenco righe,
   header e footer della popup restano sempre visibili. */
.gen-righe__scroll[b-8t40nkt8li] {
    max-height: 46vh;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.gen-righe-table thead th[b-8t40nkt8li] {
    position: sticky;
    top: 0;
    background: var(--sedna-surface, #fff);
    z-index: 1;
}

.gen-righe__hint[b-8t40nkt8li] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}
/* /Pages/Documenti/Componenti/DocumentoGrigliaRighe.razor.rz.scp.css */
/* ═══ Griglia righe documento (design Documento.html) ═══ */

/* Produttore della riga a fuoco, accanto al titolo "Righe Documento": la colonna
   mostra il solo codice, qui si legge il nome per esteso. Discreto (non compete col
   titolo) ma con la ragione sociale in grassetto, che e' il dato che serve. */
.doc-righe-produttore[b-1nzsmzw6j8] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-left: 10px;
    padding: 1px 8px;
    border-radius: 999px;
    background: var(--sedna-surface-variant, #f9fafb);
    border: 1px solid var(--sedna-border-light, #eeeff1);
    font-size: 0.6875rem;
    color: var(--sedna-text-secondary);
    max-width: 320px;
}

.doc-righe-produttore i[b-1nzsmzw6j8] {
    font-size: 0.75rem;
    color: var(--sedna-text-tertiary);
}

.doc-righe-produttore strong[b-1nzsmzw6j8] {
    font-weight: 700;
    color: var(--sedna-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Mezzadro: appartiene al produttore, quindi gli sta a seguire ma un gradino sotto
   nella gerarchia visiva — corsivo e peso minore. */
.doc-righe-mezzadro[b-1nzsmzw6j8] {
    font-style: italic;
    font-weight: 500;
    color: var(--sedna-text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.doc-righe-mezzadro[b-1nzsmzw6j8]::before {
    content: "·";
    margin: 0 4px 0 2px;
    font-style: normal;
    color: var(--sedna-text-tertiary);
}

.doc-righe-card[b-1nzsmzw6j8] {
    background: var(--sedna-surface);
    /* respiro tra il bordo card e la toolbar "Righe Documento" (come il
       titolo della griglia in Prima Nota) — le righe restano a filo. */
    padding-top: 6px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem) var(--sedna-radius-md, 0.5rem) 0 0;
    box-shadow: 0 1px 3px rgba(16, 24, 40, 0.06);
    overflow: hidden;
}

/* chip tipo riga AR / IM / DE */
.doc-tipoart-chip[b-1nzsmzw6j8] {
    display: inline-grid;
    place-items: center;
    min-width: 24px;
    height: 20px;
    font-size: 0.625rem;
    font-weight: 700;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    border-radius: 4px;
    border: none;
    cursor: pointer;
    padding: 0 4px;
}

.doc-tipoart-chip--ar[b-1nzsmzw6j8] {
    background: var(--sedna-primary-subtle, #e3f2fd);
    color: var(--sedna-primary);
}

.doc-tipoart-chip--im[b-1nzsmzw6j8] {
    background: #f3e8ff;
    color: #7c3aed;
}

.doc-tipoart-chip--de[b-1nzsmzw6j8],
.doc-tipoart-chip--no[b-1nzsmzw6j8] {
    background: #eeeff1;
    color: var(--sedna-text-secondary);
}

/* Combo tipo riga (AR/IM/PE/BA/SM/AC/SV/NO): vestita come il chip. */
.doc-tipoart-select[b-1nzsmzw6j8] {
    width: 100%;
    height: 20px;
    font-size: 0.625rem;
    font-weight: 700;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    border: 1px solid transparent;
    border-radius: 4px;
    padding: 0 1px 0 3px;
    cursor: pointer;
    appearance: none;
}

    .doc-tipoart-select:hover[b-1nzsmzw6j8], .doc-tipoart-select:focus[b-1nzsmzw6j8] {
        border-color: var(--sedna-border-strong, #cfd4dc);
        outline: none;
    }

.doc-tipoart-select--ar[b-1nzsmzw6j8] { background: var(--sedna-primary-subtle, #e3f2fd); color: var(--sedna-primary, #1e88e5); }
.doc-tipoart-select--im[b-1nzsmzw6j8] { background: #f3e8ff; color: #7c3aed; }
.doc-tipoart-select--no[b-1nzsmzw6j8] { background: #eeeff1; color: var(--sedna-text-secondary); }

.doc-nota-cell[b-1nzsmzw6j8] {
    font-size: 0.6875rem;
    font-style: italic;
    color: var(--sedna-text-tertiary);
    padding-left: 4px;
}

.doc-tipoart-chip--ro[b-1nzsmzw6j8] { cursor: default; }

/* righe speciali (da modulo cartaceo) */
[b-1nzsmzw6j8] .doc-riga--descrittiva td {
    background: #fafafa;
    font-style: italic;
    color: var(--sedna-text-secondary);
}

/* Riga imballo: accompagna la riga articolo, non e' merce a sé — deve pesare meno.
   Corpo piu' piccolo, piu' chiaro e in corsivo, oltre allo sfondo.
   Il valore e' ASSOLUTO (calcolato dal token della cella, 12px) e non in em: gli input
   stanno dentro il td, e con una misura relativa il font si moltiplicherebbe a ogni
   annidamento. Gli input ereditano, altrimenti la cella in modifica tornerebbe a gridare
   piu' della riga che accompagna. */
[b-1nzsmzw6j8] .doc-riga--imballo td {
    background: #fdfbff;
    font-size: calc(var(--seg-cell-font, 0.75rem) - 0.0625rem);
    font-weight: 300;
    font-style: italic;
    /* Grigio più chiaro del testo pieno (ma ancora leggibile): l'occhio va
       prima alle righe ARTICOLO, gli imballi fanno da accompagnamento. */
    color: var(--sedna-text-secondary, #6b7280);
}

[b-1nzsmzw6j8] .doc-riga--imballo td input,
[b-1nzsmzw6j8] .doc-riga--imballo td select,
[b-1nzsmzw6j8] .doc-riga--imballo td .doc-cell-readonly,
[b-1nzsmzw6j8] .doc-riga--imballo td .doc-cell-amount,
[b-1nzsmzw6j8] .doc-riga--imballo td .doc-cell-text {
    font-size: inherit;
    font-weight: inherit;
    font-style: inherit;
    color: inherit;
}

/* Corsivo + allineamento a destra: il glifo inclinato sporge oltre il suo box e il
   bordo dell'input lo taglia — uno 0 tagliato sembra un 6. Un filo d'aria a destra
   sui campi numerici della riga imballo lo tiene intero. */
[b-1nzsmzw6j8] .doc-riga--imballo td input,
[b-1nzsmzw6j8] .doc-riga--imballo td .doc-cell-readonly,
[b-1nzsmzw6j8] .doc-riga--imballo td .doc-cell-amount {
    padding-right: 4px;
}

[b-1nzsmzw6j8] .doc-riga--imballo:hover td { background: #faf6ff; }
[b-1nzsmzw6j8] .doc-riga--reso td { background: var(--sedna-error-50, #ffebee); }

/* riga "Aggiungi" in coda al corpo */
[b-1nzsmzw6j8] .doc-riga-add td {
    padding: 0 !important;
    border-bottom: none !important;
    height: auto !important;
}

[b-1nzsmzw6j8] .doc-riga-add button {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 8px;
    border: none;
    background: transparent;
    cursor: pointer;
    padding: 8px 12px;
    color: var(--sedna-primary);
    font-size: 0.75rem;
    font-weight: 600;
    font-family: inherit;
    text-align: left;
}

[b-1nzsmzw6j8] .doc-riga-add button:hover { background: var(--sedna-primary-subtle, #e3f2fd); }

[b-1nzsmzw6j8] .doc-riga-add kbd {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.625rem;
    border: 1px solid var(--sedna-border);
    border-radius: 4px;
    padding: 1px 5px;
    color: var(--sedna-text-tertiary);
    background: var(--sedna-surface);
}

/* celle */
.doc-cell-readonly[b-1nzsmzw6j8] {
    color: var(--sedna-text-secondary);
    font-variant-numeric: tabular-nums;
    font-size: 0.75rem;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
}

.doc-cell-text[b-1nzsmzw6j8] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: block;
    font-size: 0.8125rem;
}

.doc-cell-amount[b-1nzsmzw6j8] {
    font-variant-numeric: tabular-nums;
    font-size: 0.75rem;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
}

.doc-cell-amount--strong[b-1nzsmzw6j8] { font-weight: 650; color: var(--sedna-text); }

.doc-cell-select[b-1nzsmzw6j8] {
    width: 100%;
    height: 1.75rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    font-size: 0.75rem;
    font-family: inherit;
    padding: 0 4px;
}

/* ═══ FINESTRA ATTIVA IN STILE "DA MODIFICARE" ═══
   Tutte le righe appaiono editabili: le celle delle righe leggere (congelate)
   sono vestite da input identici a quelli delle righe editor; il click sulla
   riga monta gli editor veri al suo posto (stessa geometria → nessun salto). */

[b-1nzsmzw6j8] tr.seg-row-frozen td {
    height: var(--doc-riga-pitch, 27px);
    padding-top: 0;
    padding-bottom: 0;
}

/* cella congelata = finto input: stesso bordo/raggio/altezza degli editor */
[b-1nzsmzw6j8] .seg-frozen-cell {
    display: flex;
    align-items: center;
    height: 1.375rem;               /* 22px come gli input xs in riga */
    border: 1px solid transparent;   /* a filo, come gli editor annegati */
    border-radius: 4px;
    background: transparent;
    padding: 0 4px;
    font-family: var(--sedna-font-sans, inherit); /* stesso sans degli input (no Segoe della tabella) */
    font-size: 0.75rem;
    font-weight: 400;
    color: var(--sedna-text);
    overflow: hidden;
    white-space: nowrap;
}

    [b-1nzsmzw6j8] .seg-frozen-cell .sedna-stack-cell__code {
        font-weight: 400;
        font-size: 0.75rem;
        color: var(--sedna-text);
    }

/* allineamento numerico coerente con gli editor */
[b-1nzsmzw6j8] tr.seg-row-frozen td[style*="right"] .seg-frozen-cell { justify-content: flex-end; }

/* colonne calcolate: come nelle righe editor, testo senza box */
[b-1nzsmzw6j8] tr.seg-row-frozen td.doc-td-calc .seg-frozen-cell {
    border-color: transparent;
    background: transparent;
}

/* chevron finto sulle colonne lookup (articolo/imballo/IVA) */
[b-1nzsmzw6j8] tr.seg-row-frozen td.doc-td-lookup .seg-frozen-cell::after {
    font-family: "bootstrap-icons";
    content: "\F282"; /* bi-chevron-down */
    margin-left: auto;
    padding-left: 4px;
    font-size: 0.55rem;
    color: var(--sedna-text-tertiary);
}

/* la combo tipo nelle righe congelate resta un chip (gia' identica) */

/* Chevron/clear DEVEXPRESS in stile leggero, come il chevron finto delle
   righe congelate: piccoli, terziari, senza peso visivo. */
[b-1nzsmzw6j8] .doc-righe-grid .dxbl-text-edit .dxbl-btn-group .dxbl-btn {
    color: var(--sedna-text-tertiary) !important;
    opacity: 0.75;
    padding-left: 1px !important;
    padding-right: 1px !important;
}

[b-1nzsmzw6j8] .doc-righe-grid .dxbl-text-edit .dxbl-btn-group .dxbl-btn svg,
[b-1nzsmzw6j8] .doc-righe-grid .dxbl-text-edit .dxbl-btn-group .dxbl-btn .dxbl-image {
    width: 0.55rem !important;
    height: 0.55rem !important;
}

/* Coerenza TIPOGRAFICA col design del foglio: numeri e codici in MONO
   (come i DisplayTemplate delle righe congelate) anche negli editor. */
[b-1nzsmzw6j8] .doc-righe-grid .sedna-native-input--num {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace) !important;
}

[b-1nzsmzw6j8] .doc-righe-grid td.doc-td-lookup .dxbl-text-edit-input,
[b-1nzsmzw6j8] .doc-righe-grid td.doc-td-lookup .sedna-lookup-native__input {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace) !important;
    font-size: 0.75rem !important;
}

/* UM e altre colonne centrate: il finto input flex deve rispettare
   l'allineamento del td (di default resterebbe a sinistra). */
[b-1nzsmzw6j8] tr.seg-row-frozen td[style*="center"] .seg-frozen-cell { justify-content: center; }

/* Anche l'input nativo eredita il centro dove il td lo chiede. */
[b-1nzsmzw6j8] .doc-righe-grid td[style*="center"] .sedna-native-input { text-align: center; }

/* Chevron IDENTICO su tutte le righe: via l'SVG DevExpress (bordo del
   bottone incluso), dentro lo stesso glifo bootstrap del chevron finto. */
[b-1nzsmzw6j8] .doc-righe-grid .dxbl-text-edit .dxbl-btn-group .dxbl-btn,
[b-1nzsmzw6j8] .doc-righe-grid .dxbl-text-edit .dxbl-btn-group {
    border: none !important;
    background: transparent !important;
    box-shadow: none !important;
}

[b-1nzsmzw6j8] .doc-righe-grid .dxbl-text-edit .dxbl-edit-btn-dropdown svg,
[b-1nzsmzw6j8] .doc-righe-grid .dxbl-text-edit .dxbl-edit-btn-dropdown .dxbl-image {
    display: none !important;
}

[b-1nzsmzw6j8] .doc-righe-grid .dxbl-text-edit .dxbl-edit-btn-dropdown::after {
    font-family: "bootstrap-icons";
    content: "\F282"; /* bi-chevron-down, come .seg-frozen-cell::after */
    font-size: 0.55rem;
    color: var(--sedna-text-tertiary);
    opacity: 1;
}

/* Tipo riga: select (righe editor) e chip (righe congelate) alla STESSA
   larghezza fissa, così il badge non cambia dimensione tra le righe. */
.doc-tipoart-select[b-1nzsmzw6j8],
[b-1nzsmzw6j8] .doc-tipoart-chip {
    width: 2.125rem !important;
    min-width: 2.125rem !important;
    box-sizing: border-box;
    text-align: center;
    justify-items: center;
}

/* Il chip congelato vive dentro .seg-frozen-cell (padding 4px + bordo 1px):
   il select nudo nella cella editor va compensato per avere lo stesso filo destro. */
.doc-tipoart-select[b-1nzsmzw6j8] { margin-right: 5px; }


/* Il titolo/toolbar della card non deve toccare i bordi laterali. */
[b-1nzsmzw6j8] .doc-righe-grid .sedna-editable-grid__toolbar {
    padding-left: 10px;
    padding-right: 10px;
}

/* ═══ Codice IVA mancante su una riga che lo richiede ═══
   Il salvataggio lo blocca; qui si vede prima di arrivarci. Tinta d'avviso
   tenue: la griglia non deve diventare un semaforo. */
.doc-iva-cell[b-1nzsmzw6j8] { display: block; width: 100%; }

.doc-iva-cell--manca[b-1nzsmzw6j8]  .sedna-native-input,
.doc-iva-cell--manca[b-1nzsmzw6j8]  .dxbl-text-edit {
    border-color: var(--sedna-warning-600, #ffb300);
    background-color: color-mix(in srgb, var(--sedna-warning-600, #ffb300) 8%, transparent);
}

.doc-iva-manca[b-1nzsmzw6j8] {
    color: var(--sedna-warning-600, #ffb300);
    font-size: 0.75rem;
    line-height: 1;
}

/* Il numero nella riga dei totali di colonna: la misura e il colore li mette la griglia
   (seg-tot), qui si dichiara solo che e' un numero e non va a capo. ::deep perche' il
   contenuto finisce dentro il markup della griglia, non nel nostro. */
[b-1nzsmzw6j8] .doc-tot-col {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* ═══ LA CELLA DEL LOTTO: casella + lente ═══
   Il lotto si puo' ancora scrivere — chi lo sa a memoria e' piu' veloce di qualunque finestra —
   ma il caso normale e' non saperlo, perche' il numero lo assegna il magazzino. */
.doc-lotto[b-1nzsmzw6j8] {
    display: flex;
    align-items: center;
    gap: 2px;
    width: 100%;
}

.doc-lotto > :first-child[b-1nzsmzw6j8] { flex: 1 1 auto; min-width: 0; }

.doc-lotto__lente[b-1nzsmzw6j8] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--sedna-input-height, 1.375rem);
    height: var(--sedna-input-height, 1.375rem);
    padding: 0;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-sm);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    cursor: pointer;
    font-size: 0.7rem;
}

.doc-lotto__lente:hover[b-1nzsmzw6j8] { border-color: var(--sedna-primary); color: var(--sedna-primary); }

/* L'anteprima del lotto: si vede che è una PREVISIONE e non il numero.
   Grigia e in corsivo — il lotto vero, quando c'è, è testo normale. Se le due cose si
   somigliassero, uno crederebbe di avere un lotto che non ha ancora. */
.doc-lotto-prev[b-1nzsmzw6j8] {
    color: var(--sedna-text-tertiary);
    font-style: italic;
    cursor: help;
}

/* ⚠️ Un numero DERIVATO, non battuto da nessuno: si distingue appena — corsivo e colore
      secondario — perché in una riga di campi scrivibili una cella che non lo è deve dirlo
      da sola, prima che qualcuno provi a scriverci. */
.doc-cell-derivato[b-1nzsmzw6j8] {
    font-style: italic;
    color: var(--sedna-color-text-secondary);
}
/* /Pages/Documenti/Componenti/DocumentoPiede.razor.rz.scp.css */
/* ═══ Piede documento (design Documento.html): castelletto + trasporto
   ATTACCATI sotto il foglio, barra totali con blocco TOTALE blu. ═══ */

.doc-piede[b-0fyqdbp02r] { display: flex; flex-direction: column; }

/* ⚠️ UNA COLONNA SOLA. Il castelletto IVA e' passato in finestra (2026-08-17): la
   griglia a due colonne teneva ferma meta' larghezza per una tabella che si consulta,
   non che si compila. Ora la sezione dei campi prende tutta la riga — ed e' cio' che
   permette ai nove campi di stare su UNA riga invece di due. */
.doc-piede__main[b-0fyqdbp02r] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
    border: 1px solid var(--sedna-border);
    border-top: none;
    background: var(--sedna-surface);
}

@media (max-width: 1100px) {
    .doc-piede__main[b-0fyqdbp02r] { grid-template-columns: 1fr; }

    .doc-piede__col + .doc-piede__col[b-0fyqdbp02r] {
        border-left: none;
        border-top: 1px solid var(--sedna-border-light);
    }
}

.doc-piede__col[b-0fyqdbp02r] {
    padding: 6px 14px 8px;
    min-width: 0;
}

/* ⚠️ Divisorio fra le due colonne un tono piu' marcato di prima
   (border-light -> border): finche' c'erano i due titoli erano quelli a dire "di qua
   gli sconti, di la' il castelletto". Tolti i titoli, questa riga verticale e' rimasta
   l'unica cosa che separa i due blocchi, e a --sedna-border-light quasi non si vedeva. */
.doc-piede__col + .doc-piede__col[b-0fyqdbp02r] { border-left: 1px solid var(--sedna-border); }

/* ── I tre totali LORDI, nella riga liberata dal titolo "Sconti e provvigione".
   Deve costare quanto costava il titolo, non di piu': stesso font (0.625rem), stesso
   margine sotto, una riga sola. Se non ci stanno si accorciano loro, non il piede. ── */
.doc-piede__lordi[b-0fyqdbp02r] {
    display: flex;
    align-items: baseline;
    gap: 4px 12px;
    flex-wrap: nowrap;
    overflow: hidden;
    margin: 0 0 5px;
    font-size: 0.625rem;
    /* line-height in PIXEL, non in multipli: il titolo che questa riga sostituisce misura
       13px, e in multipli si finiva a 15 e poi a 14 — le cifre in mono hanno metriche piu'
       alte del testo e si portano dietro la riga. 13px fissi la pareggiano esatta, che e'
       il vincolo: la riga nuova non deve costare piu' di quella che toglie. */
    line-height: 13px;
    white-space: nowrap;
}

.doc-piede__lordi .k[b-0fyqdbp02r],
.doc-piede__lordi .v[b-0fyqdbp02r] {
    line-height: 13px;
}

/* Pillola di GRUPPO: il segnale che dice «questi tre sono i lordi», indipendente dalla
   parola nelle singole voci. In fondo al piede la terna netta non ha niente del genere:
   a colpo d'occhio si distinguono per la pillola e per la posizione, non per l'aggettivo
   — che con la ripartizione spenta sarebbe l'unica differenza fra numeri identici. */
.doc-piede__lordi .g[b-0fyqdbp02r] {
    padding: 0 6px;
    border-radius: 999px;
    background: var(--sedna-surface-variant, #eef0f3);
    color: var(--sedna-text-secondary);
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    flex: none;
}

.doc-piede__lordi .k[b-0fyqdbp02r] {
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
}

/* Il numero e' il motivo per cui la riga esiste: tabellare, e piu' marcato
   dell'etichetta senza diventare un titolo. */
.doc-piede__lordi .v[b-0fyqdbp02r] {
    font-family: var(--sedna-font-mono, ui-monospace, monospace);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: var(--sedna-text);
    margin-right: 4px;
}

.doc-piede__title[b-0fyqdbp02r] {
    margin: 0 0 5px;
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
    display: flex;
    align-items: center;
    gap: 7px;
}

.doc-piede__title i[b-0fyqdbp02r] { color: var(--sedna-text-tertiary); }

.doc-piede__empty[b-0fyqdbp02r] {
    color: var(--sedna-text-tertiary);
    font-size: 0.8125rem;
    padding: 12px 0;
}

/* ── castelletto ── */
.doc-castelletto[b-0fyqdbp02r] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.75rem;
}

.doc-castelletto th[b-0fyqdbp02r] {
    text-align: left;
    font-size: 0.575rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    padding: 1px 8px 2px;
    border-bottom: 1px solid var(--sedna-border-light);
}

.doc-castelletto th.num[b-0fyqdbp02r],
.doc-castelletto td.num[b-0fyqdbp02r] { text-align: right; }

.doc-castelletto td[b-0fyqdbp02r] {
    padding: 2px 8px;
    line-height: 1.25;
    border-bottom: 1px solid var(--sedna-border-light);
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
}

.doc-castelletto td.dsc[b-0fyqdbp02r] {
    font-family: inherit;
    color: var(--sedna-text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 180px;
}

.doc-castelletto tr.doc-castelletto__tot td[b-0fyqdbp02r] {
    border-bottom: none;
    font-weight: 650;
}

/* ── trasporto: griglia compatta 4 colonne, input xs (20px) come la
   testata — recupera verticale a favore del foglio righe. ── */
.doc-trasp[b-0fyqdbp02r] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 4px 10px;

    --doc-input-font: 0.75rem;
    --doc-input-h: 1.25rem;
    --doc-input-inner: calc(var(--doc-input-h) - 2px);
    --sedna-input-h: var(--doc-input-h);
    --sedna-input-font: var(--doc-input-font);
}

.doc-trasp .f[b-0fyqdbp02r] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
}

/* ── Sconti e provvigione COMPATTO: label SOPRA l'input (come gli altri campi)
   ma su 5 colonne → i 9 campi stanno in DUE righe, l'altezza va al corpo.
   Percentuali e importi non hanno bisogno di più larghezza di così. ── */
/* Riga 1: le quattro PERCENTUALI (sconto 1/2/3, provvigione). */
/* Larghezze secondo quello che ci si SCRIVE DENTRO (specifica di Antonio, 30/07): in una
   percentuale al massimo tre cifre — «100,00», 6 caratteri — in un importo cinque o sei
   cifre coi separatori — «999.999,00», 10 caratteri.
   Espresse in `ch`, che e' la larghezza del carattere "0" del font in uso: si CALCOLA dal
   contenuto invece di indovinare i pixel, ed e' l'unica misura che potevo prendere senza
   una finestra vera. Il tetto sta sul massimo, non sul minimo: `minmax(0, …ch)` lascia le
   colonne libere di stringersi ancora in una finestra stretta, e a quel punto l'editor si
   stringe con loro (v. la regola min-width:0 piu' sotto) invece di uscire dalla cella.
   ⚠️ Il numero da rispettare sono le CIFRE che ci stanno, non «il piu' stretto possibile»:
   9ch e 13ch tengono dentro il valore piu' lungo plausibile con l'aria per cliccarci. */
/* ── NOVE CAMPI SU UNA RIGA: quattro percentuali e cinque importi ──
   Le misure seguono l'ordine di grandezza del numero, non la simmetria: le percentuali
   sono «10,00» (cinque caratteri), competenze e facchinaggio stanno nelle centinaia,
   sconti e provvigione arrivano alle decine di migliaia.
   ⚠️ Sempre minmax(0, …): con le misure nude la riga non sa restringersi e sfonda —
   e' gia' successo, col campo Omaggio finito sopra il castelletto. */
.doc-sconti-unica[b-0fyqdbp02r] {
    /* Nove campi piu' la coppia di pulsanti: l'ultima traccia e' 1fr, cosi' si mangia lo
       spazio che avanza e i due pulsanti finiscono a DESTRA (Antonio, 2026-08-17) invece
       di occupare una riga loro — che era una riga di corpo documento in meno. */
    /* L'ordine e' quello del markup: quattro percentuali · sconti · prov/comm · omaggio ·
       competenze · facchinaggio · pulsanti. Le misure seguono i numeri che ci finiscono:
       sconti e provvigione arrivano alle decine di migliaia, competenze e facchinaggio
       stanno nelle centinaia. */
    grid-template-columns:
        minmax(0, 8ch) minmax(0, 8ch) minmax(0, 8ch) minmax(0, 8ch)
        minmax(0, 15ch) minmax(0, 15ch) minmax(0, 10ch)
        minmax(0, 9ch) minmax(0, 9ch)
        minmax(0, 1fr);
    gap: 1px 10px;
    align-items: end;
}

/* I pulsanti in coda alla riga: allineati a destra e in basso, cosi' stanno sulla linea
   degli input e non delle etichette. */
.doc-sconti-unica > .doc-cast-head[b-0fyqdbp02r] {
    justify-self: end;
    align-self: end;
    margin: 0;
}

.doc-sconti-grid[b-0fyqdbp02r] {
    grid-template-columns: repeat(4, minmax(0, 9ch));
    gap: 1px 10px;
    /* Le percentuali smettono di crescere: lo spazio che avanza resta alla colonna, non
       gonfia quattro campi che non ne hanno bisogno. */
    justify-content: start;
}

/* Riga 2: i cinque IMPORTI (competenze, facchinaggio, sconti, prov/comm, omaggio).
   Piu' larghi delle percentuali perche' ci vanno 10 caratteri invece di 6.

   ⚠️ NON TUTTI E CINQUE UGUALI: la larghezza segue l'ORDINE DI GRANDEZZA del numero
   che ci finisce, non la simmetria della griglia (Antonio, 2026-08-17). Competenze e
   facchinaggio stanno nelle centinaia — «250,00» sono sei caratteri — mentre sconti e
   provvigione arrivano alle decine di migliaia: «-12.345,67» sono dieci caratteri piu'
   il segno, e in 13ch venivano tagliati proprio i due numeri che si controllano. Lo
   spazio si sposta da chi non lo usa a chi ne ha bisogno, a parita' di larghezza
   totale (64ch prima, 65ch adesso).

   ⚠️ COME FUNZIONA DAVVERO, perche' il primo tentativo non ha cambiato niente: qui lo
   spazio e' SCARSO — la riga chiede piu' di quanto la colonna abbia — e in quel caso la
   griglia distribuisce equamente e i massimi dichiarati non contano. Misurato a video:
   con 11/11/16/16/11 tutte le tracce uscivano identiche a 88px. Per dare larghezza a
   sconti e provvigione bisogna LIBERARLA, cioe' abbassare per davvero il massimo delle
   altre due: 8ch. E per starci a 8ch le etichette diventano «Comp. €» e «Facch. €»
   (Antonio, 2026-08-17) — il nome per esteso resta nel titolo al passaggio del mouse.
   Risultato misurato: 64 · 64 · 113 · 113 · 88px. */
.doc-sconti-grid--riga2[b-0fyqdbp02r] {
    /* ⚠️ SEMPRE `minmax(0, …)`, MAI la misura nuda. Con le larghezze fisse la riga non
       sa piu' restringersi e sfonda la colonna: il campo Omaggio finiva sopra il
       castelletto IVA (Antonio, 2026-08-17). Il `minmax` dice «tanto quanto, ma cedi se
       non c'e' spazio» — che era il comportamento di prima e va conservato mentre si
       cambiano le proporzioni. */
    grid-template-columns: minmax(0, 8ch) minmax(0, 8ch) minmax(0, 18ch) minmax(0, 18ch) minmax(0, 11ch);
    margin-top: 2px;
}

.doc-sconti-grid .f > label[b-0fyqdbp02r] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* I numeri si scrivono e si leggono ancorati a DESTRA (Antonio, 2026-08-17). La regola
   globale sui DxSpinEdit esiste gia' (sedna.devexpress.overrides.css) ma qui non
   arrivava: questa la ribadisce sul perimetro del piede per QUALUNQUE input dei campi
   — nativo o DevExpress — e chiude la questione dove e' stata vista. */
.doc-trasp .f[b-0fyqdbp02r]  input {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.doc-trasp .f > label[b-0fyqdbp02r] {
    font-size: 0.575rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
    /* ⚠️ L'interlinea NON si dichiara piu' qui. Il difetto — la label che ereditava 20px
       di riquadro per un carattere da 9px, cioe' meta' della fila di form era spazio vuoto
       — non era di questo piede: ce l'avevano tutte le label ridefinite dalle pagine. Si
       dichiara UNA volta in sedna.base.css (.sedna-app label), col valore della label
       canonica della libreria. Rimettere qui un 1.1 tutto nostro guadagnerebbe 3px e
       ridarebbe all'applicazione due valori invece di uno: non li vale. */
}

/* Un'etichetta piu' lunga della sua colonna: rinuncia alla spaziatura fra le lettere invece
   di troncarsi. Serve a «% PROV/COMM» — undici caratteri in 8ch — e i 6px che la spaziatura
   si prende sono esattamente quelli che mancano. È una DEROGA, non un'alternativa: se
   servisse su tre etichette vorrebbe dire che la riga e' troppo stretta, e allora si
   discutono le colonne, non i caratteri. */
.doc-trasp .f > label.lbl-fitta[b-0fyqdbp02r] { letter-spacing: 0.01em; }

.doc-trasp .span2[b-0fyqdbp02r] { grid-column: span 2; }

/* ⚠️ I CAMPI SOVRAPPOSTI: questa regola va PRIMA di ogni ritocco alle larghezze.
   Le colonne della griglia sono minmax(0, …) e .f ha min-width:0: la CELLA si stringe
   quanto serve. L'editor DevExpress dentro invece non era vincolato a starci — nessuno gli
   diceva width:100% — e un editor si dimensiona sul proprio contenuto (input + gruppo dei
   pulsantini dello spin). Quando la cella diventa piu' stretta di quel contenuto, l'editor
   NON si stringe: deborda, e siccome gli elementi di griglia non ritagliano niente, si
   stampa sopra il vicino. Non e' «stretto»: e' fuori posto. Per questo in pagina si notava
   appena e in una modal piu' stretta diventa una sovrapposizione.
   Stringere le colonne senza questa regola avrebbe solo spostato la soglia piu' in la'.

   ⚠️ Onesta' sulla diagnosi: che l'editor debordi perche' non e' vincolato alla cella e'
   il meccanismo; QUALE dichiarazione del tema DevExpress gli dia quella larghezza minima
   non l'ho isolata (avevo incolpato una min-width:10rem che si e' rivelata una variabile
   dei dropdown della toolbar, non degli editor). La correzione non ne dipende: con
   min-width:0 + width:100% l'editor non puo' PIU' superare la sua cella qualunque cosa
   dichiari il tema. Sparisce per costruzione, non per taratura. */
[b-0fyqdbp02r] .doc-trasp .dxbl-edit,
[b-0fyqdbp02r] .doc-trasp .dxbl-text-edit,
[b-0fyqdbp02r] .doc-trasp .dxbl-spin-edit {
    min-width: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
}

/* L'input dentro l'editor: stessa storia un livello piu' giu'. */
[b-0fyqdbp02r] .doc-trasp .dxbl-text-edit-input,
[b-0fyqdbp02r] .doc-trasp input {
    min-width: 0 !important;
}

/* Override DX per la scala xs (stesso set del box documento). */
[b-0fyqdbp02r] .doc-trasp .dxbl-text-edit-input,
[b-0fyqdbp02r] .doc-trasp input[type="text"] {
    font-size: var(--doc-input-font) !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    line-height: var(--doc-input-inner) !important;
    min-height: var(--doc-input-inner) !important;
    height: var(--doc-input-inner) !important;
}

[b-0fyqdbp02r] .doc-trasp .dxbl-text-edit,
[b-0fyqdbp02r] .doc-trasp .dxbl-edit {
    min-height: var(--doc-input-h) !important;
    height: var(--doc-input-h) !important;
    align-items: center !important;
}

[b-0fyqdbp02r] .doc-trasp .dxbl-text-edit .dxbl-btn-group,
[b-0fyqdbp02r] .doc-trasp .dxbl-text-edit .dxbl-btn-group .dxbl-btn {
    height: var(--doc-input-inner) !important;
    min-height: var(--doc-input-inner) !important;
    align-self: center !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

[b-0fyqdbp02r] .doc-trasp .dxbl-edit { border-radius: 4px !important; }

/* ══ BARRA TOTALI — STESSA VESTE DEI TOTALI DI MERCE PRODUTTORI ══
   Antonio, 2026-08-17: «lo stile della riga dei totali in merce produttori
   replichiamolo nei totali presenti in documento». Non e' una preferenza estetica: due
   schermate che fanno la stessa cosa — chiudere in fondo con i numeri che contano —
   devono avere la stessa faccia, o si imparano come due programmi diversi. E quella
   veste, a sua volta, era gia' copiata dal piede Dare/Avere di Prima Nota: cosi' le tre
   schermate dove si guardano i totali si somigliano tutte.

   ⚠️ Misure e colori vengono da .mp-totali, non reinventati simili: se cambia quella,
   questa va cambiata di conseguenza — o meglio, il blocco si promuove nel design
   system, che e' il posto suo. (Terza copia: il debito e' segnalato.)

   Cambia la costruzione, non il contenuto: prima era una striscia attaccata alla
   griglia, con le celle divise da filetti e il totale in un blocco blu pieno; ora e' una
   BANDA staccata e ogni voce e' una TESSERA con l'etichetta sopra e il numero sotto. */
.doc-totali-bar[b-0fyqdbp02r] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    /* Su una riga sola; se i numeri diventano enormi si scorre, non si va a capo:
       una riga di totali spezzata in due si legge come due riquadri diversi. */
    flex-wrap: nowrap;
    overflow-x: auto;
    gap: 2px 12px;
    margin-top: 0.375rem;
    padding: 0.375rem 0.75rem;
    border: 1px solid color-mix(in srgb, var(--sedna-primary) 40%, transparent);
    border-radius: var(--sedna-radius-md, 0.375rem);
    background: var(--sedna-surface, #fff);
    box-shadow: var(--sedna-shadow-xs);
    font-size: 0.8125rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    line-height: 1.5;
}

/* Ogni voce e' una tessera verticale: etichetta sopra, numero sotto. Con tredici voci
   in fila l'etichetta di fianco allargherebbe ogni tessera e la banda andrebbe a capo;
   sopra, ogni tessera e' stretta quanto il suo numero. */
.doc-totale[b-0fyqdbp02r] {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
    padding: 2px 6px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border-light);
    color: var(--sedna-text);
    font-weight: 700;
    white-space: nowrap;
    line-height: 1.2;
}

.doc-totale .k[b-0fyqdbp02r] {
    font-style: normal;
    font-weight: 700;
    font-size: 0.5625rem;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
}

.doc-totale .v[b-0fyqdbp02r] {
    font-variant-numeric: tabular-nums;
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--sedna-text);
}

/* Lo stacco fra PESI e DENARO: come in merce produttori il primo gruppo tiene il fianco
   sinistro e il resto va a destra, cosi' si legge che sono due cose diverse senza una
   riga verticale che resterebbe a mezz'aria. */
.doc-totale--sp[b-0fyqdbp02r] { flex: 1 1 auto; min-width: 8px; border: none; padding: 0; background: none; }

/* QUANTITÀ (colli e chili) vestite diverse dai SOLDI (Antonio, 2026-08-17): fondo neutro
   pieno e numero in tinta secondaria — tredici tessere in fila si leggono per natura
   prima che per etichetta. I soldi restano su fondo chiaro; imponibile/imposta/totale
   hanno gia' la loro tinta primaria e non si toccano. */
.doc-totale--qta[b-0fyqdbp02r] {
    /* Tinta INFORMATIVA, non neutra (Antonio, 2026-08-18): il grigio si confondeva col
       fondo della banda e la distinzione si vedeva solo cercandola. L'azzurro del design
       system al 10% e' abbastanza da separare le tre tessere di quantita' dalle undici di
       denaro con un'occhiata, e abbastanza poco da non competere con imponibile, imposta e
       totale — che restano gli unici in tinta piena. */
    background: color-mix(in srgb, var(--sedna-info-600, #00acc1) 10%, var(--sedna-surface));
    border-color: color-mix(in srgb, var(--sedna-info-600, #00acc1) 28%, transparent);
}
.doc-totale--qta .k[b-0fyqdbp02r] { color: color-mix(in srgb, var(--sedna-info-600, #00acc1) 75%, var(--sedna-text-secondary)); }
.doc-totale--qta .v[b-0fyqdbp02r] { color: var(--sedna-text); }

/* IMPONIBILE, IMPOSTA e il TOTALE sono i tre che si cercano davvero: tessera in tinta
   primaria, come in merce produttori lo sono imponibile e totale. */
.doc-totale--forte[b-0fyqdbp02r] {
    background: var(--sedna-primary-subtle);
    border-color: color-mix(in srgb, var(--sedna-primary) 35%, transparent);
}
.doc-totale--forte .v[b-0fyqdbp02r] { font-size: 0.8125rem; }
.doc-totale--forte .k[b-0fyqdbp02r] { color: var(--sedna-primary); }

/* Il TOTALE DOCUMENTO: la tessera piu' marcata della banda — tinta primaria piena, come
   il blocco blu di prima ma nella forma delle altre. Resta l'ultima e la piu' grande:
   e' il numero con cui si chiude il documento. */
.doc-totale-grand[b-0fyqdbp02r] {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
    padding: 2px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: var(--sedna-primary);
    border: 1px solid var(--sedna-primary);
    color: #fff;
    white-space: nowrap;
    line-height: 1.2;
}

.doc-totale-grand .k[b-0fyqdbp02r] {
    font-size: 0.5625rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    opacity: 0.85;
}

.doc-totale-grand .v[b-0fyqdbp02r] {
    font-variant-numeric: tabular-nums;
    font-size: 0.9375rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    /* Il lampo al ricalcolo resta: su un totale che si guarda mentre si scrive è il
       riscontro che il numero è cambiato ADESSO, non una decorazione. */
    animation: doc-tot-flash-b-0fyqdbp02r 400ms cubic-bezier(0.25, 1, 0.5, 1);
}


@keyframes doc-tot-flash-b-0fyqdbp02r {
    0% { background: rgba(255, 255, 255, 0.28); }
    100% { background: transparent; }
}

@media (prefers-reduced-motion: reduce) {
    .doc-totale-grand .v[b-0fyqdbp02r] { animation: none; }
}

/* ── I due pulsanti dei castelletti (IVA e contabile), in coda alla riga dei campi ──
   Lo «slide» non c'e' piu': entrambi i castelletti sono finestre, quindi qui restano solo
   i due pulsanti che le aprono. justify-content: flex-end perche' stanno all'estremita'
   destra della riga; con space-between si sarebbero allontanati fra loro riempiendo lo
   spazio avanzato. */
.doc-cast-head[b-0fyqdbp02r] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}

.doc-cast-flipbtn[b-0fyqdbp02r] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    border-radius: 999px;
    padding: 1px 8px;
    font-size: 0.6875rem;
    font-weight: 600;
    cursor: pointer;
}

.doc-cast-flipbtn:hover[b-0fyqdbp02r] { color: var(--sedna-primary); border-color: var(--sedna-primary); }

/* La colonna castelletto NON detta l'altezza del piede: il binario dello slide
   è ASSOLUTO (fuori dal flusso), quindi l'altezza della riga la decide la
   colonna sconti/trasporto qualunque sia il numero di righe del castelletto,
   che riempie quello spazio e oltre scrolla AL SUO INTERNO. Il min-height fa
   da pavimento (~5 righe) e copre il layout impilato a 1 colonna, dove il
   castelletto è da solo nella riga e senza avrebbe altezza zero. */
.doc-piede__castelletto[b-0fyqdbp02r] { display: flex; flex-direction: column; }

.doc-cast-flip[b-0fyqdbp02r] {
    overflow: hidden;
    position: relative;
    flex: 1 1 0;
    /* Pavimento BASSO: deve stare DENTRO l'altezza naturale della colonna
       sconti/provvigione, non allungare il piede.
       ⚠️ 54 e non 84 (Antonio, 30/07): a 84 le due colonne erano PARI a 122px, quindi il
       piede non si abbassava di un pixel finche' non si tagliavano tutt'e due — misurato
       sull'app vera, 123px prima e dopo aver tolto i titoli. Ora sono ~2 righe + totale:
       col castelletto tipico (una o due aliquote) non cambia niente, con molte aliquote
       si scrolla un po' prima. E' il prezzo scelto per dare righe al corpo. */
    /* 48 dichiarati = ~57 resi (il pannello ha i suoi margini interni): cosi' la colonna
       castelletto sta SOTTO quella degli sconti, che a 98px e' il pavimento vero del piede.
       Lasciarlo a 54 la faceva restare lei la piu' alta, e il taglio dell'altra colonna
       sarebbe stato sprecato. */
    min-height: 48px;
}

/* Il "binario" ora ospita il SOLO castelletto IVA (il contabile vive in modal):
   resta assoluto per non far dettare l'altezza del piede al castelletto. */
.doc-cast-flip__track[b-0fyqdbp02r] {
    display: flex;
    position: absolute;
    inset: 0;
}

.doc-cast-flip__pane[b-0fyqdbp02r] {
    width: 100%;
    flex: 0 0 100%;
    min-width: 0;
    overflow-x: auto;
    height: 100%;
    overflow-y: auto;
}

/* Corpo della modal del castelletto contabile: tutta la larghezza della
   finestra, scroll interno comodo oltre ~60vh. */
.doc-cast-modal[b-0fyqdbp02r] {
    max-height: 60vh;
    overflow: auto;
}

/* Con lo scroll interno, intestazione e riga Totale restano sempre a video. */
.doc-castelletto thead th[b-0fyqdbp02r] {
    position: sticky;
    top: 0;
    background: var(--sedna-surface);
    z-index: 1;
}

.doc-castelletto tr.doc-castelletto__tot td[b-0fyqdbp02r] {
    position: sticky;
    bottom: 0;
    background: var(--sedna-surface);
    border-top: 1px solid var(--sedna-border-light);
}

/* Riga del castelletto contabile senza conto: la scrittura non potrebbe nascere
   (nel legacy era un errore bloccante al salvataggio) — si segnala, non si nasconde. */
.doc-castelletto__warn td[b-0fyqdbp02r] { color: var(--sedna-warning-700, #b77900); font-weight: 600; }

/* Sezione della scrittura nel castelletto contabile: D dare / A avere, con i
   colori già usati in Prima Nota (giallo dare, verde avere). */
.doc-sez[b-0fyqdbp02r] {
    display: inline-block;
    min-width: 1.1rem;
    padding: 0 3px;
    border-radius: 3px;
    font-weight: 700;
    font-size: 0.6875rem;
    text-align: center;
    line-height: 1.25rem;
}

.doc-sez--d[b-0fyqdbp02r] { color: var(--sedna-dare, #b45309); background: var(--sedna-dare-bg, #fffbeb); }
.doc-sez--a[b-0fyqdbp02r] { color: var(--sedna-avere, #047857); background: var(--sedna-avere-bg, #f0fdf4); }

/* ══ CASTELLETTI: la riga sotto il dito e quella scelta ══
   Il castelletto si legge per righe — «questa aliquota, questo conto» — e senza un segno
   che segua l'occhio si perde il rigo a meta' tabella, che e' il motivo per cui i
   gestionali hanno sempre avuto la riga evidenziata. Due livelli: il passaggio del mouse
   e' un velo appena percettibile, la riga SCELTA (clic o frecce) prende la tinta primaria
   al 12% e un filo a sinistra. */
.doc-castelletto tbody tr[b-0fyqdbp02r] { cursor: default; }

.doc-castelletto tbody tr:hover td[b-0fyqdbp02r] {
    background: var(--sedna-surface-hover, #eeeeee);
}

/* ⚠️ GRIGIA, NON AZZURRA (21/08). L'azzurro in tutto il portale vuol dire adesso una cosa
   sola: «questa riga ha la spunta, le azioni massive agiranno su di lei». Qui la riga
   cliccata non impegna a niente — e' solo il segno di dove si sta guardando — e tingerla
   come una selezione insegnerebbe che azzurro non significa niente di preciso. */
.doc-castelletto tbody tr.is-sel td[b-0fyqdbp02r] {
    background: var(--sedna-surface-variant, #eeeeee);
}

.doc-castelletto tbody tr.is-sel td:first-child[b-0fyqdbp02r] {
    box-shadow: inset 2px 0 0 var(--sedna-primary);
}

/* Il riquadro prende il fuoco per la tastiera: si dichiara col filo di sempre, ma
   discreto — e' un contenitore da consultare, non un campo. */
.doc-cast-modal:focus-visible[b-0fyqdbp02r] {
    outline: 2px solid color-mix(in srgb, var(--sedna-primary) 45%, transparent);
    outline-offset: 2px;
    border-radius: var(--sedna-radius-sm, 0.25rem);
}


/* ⚠️ LA BANDA DELLA QUADRATURA sta SOPRA i totali e non accanto: se i numeri non tornano, la
   frase che lo dice va letta prima di leggere i numeri, non dopo averli gia' creduti. */
.doc-piede__quadratura[b-0fyqdbp02r] {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    padding: .375rem .625rem;
    margin-bottom: .25rem;
    font-size: var(--sedna-font-size-xs, .75rem);
    line-height: 1.35;
    color: var(--sedna-color-danger-text, #842029);
    background: var(--sedna-color-danger-bg, #f8d7da);
    border: 1px solid var(--sedna-color-danger-border, #f5c2c7);
    border-radius: var(--sedna-radius-sm, .25rem);
}

.doc-piede__quadratura i[b-0fyqdbp02r] { flex: 0 0 auto; margin-top: .1em; }

/* La nota che dichiara il castelletto contabile per quello che e': una ricostruzione. */
.doc-cast-modal__nota[b-0fyqdbp02r] {
    display: flex;
    align-items: flex-start;
    gap: .4rem;
    margin-bottom: .375rem;
    font-size: var(--sedna-font-size-xs, .75rem);
    color: var(--sedna-color-text-secondary, #6c757d);
}
/* /Pages/Documenti/Componenti/DocumentoPrendiModal.razor.rz.scp.css */
/* ═══ Modal "Prendi documenti" (processo inverso filiera) ═══ */

.prendi-bar[b-0udc29majt] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
}

.prendi-tabs[b-0udc29majt] {
    display: flex;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .375rem);
    padding: 2px;
    gap: 2px;
    background: var(--sedna-surface-variant);
    flex: none;
}

.prendi-tabs button[b-0udc29majt] {
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    padding: 4px 14px;
    border-radius: 4px;
}

.prendi-tabs button.active[b-0udc29majt] {
    background: var(--sedna-surface);
    color: var(--sedna-primary);
    box-shadow: var(--sedna-shadow-sm);
}

.prendi-bar[b-0udc29majt]  .prendi-search { flex: 1; }

.prendi-refresh[b-0udc29majt] {
    width: 32px; height: 32px; flex: none;
    display: grid; place-items: center;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-base, .375rem);
    color: var(--sedna-text-secondary);
    cursor: pointer;
}

.prendi-refresh:hover:not(:disabled)[b-0udc29majt] { color: var(--sedna-primary); border-color: var(--sedna-primary); }

.prendi-state[b-0udc29majt] {
    display: flex;
    align-items: center;
    gap: 10px;
    justify-content: center;
    padding: 32px;
    color: var(--sedna-text-secondary);
    font-size: 0.875rem;
}

.prendi-list[b-0udc29majt] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 440px;
    overflow-y: auto;
}

.prendi-doc[b-0udc29majt] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);
    background: var(--sedna-surface);
}

.prendi-doc--preso[b-0udc29majt] { opacity: 0.75; }

.prendi-doc[b-0udc29majt] { overflow: hidden; }

.prendi-doc__head[b-0udc29majt] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 12px;
    background: var(--sedna-bg, #fafafa);
}

.prendi-doc__head:hover[b-0udc29majt] { background: #f0f2f4; }

.prendi-doc__toggle[b-0udc29majt] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex: 1;
    border: none;
    background: transparent;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.8125rem;
    color: var(--sedna-text);
    text-align: left;
    padding: 2px 0;
}

.prendi-doc__toggle .tipo[b-0udc29majt] {
    font-size: 0.625rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    color: var(--sedna-primary);
    min-width: 40px;
}

.prendi-doc__toggle .num[b-0udc29majt] { font-weight: 700; font-variant-numeric: tabular-nums; }
.prendi-doc__toggle .data[b-0udc29majt] { color: var(--sedna-text-secondary); font-variant-numeric: tabular-nums; }
.prendi-doc__toggle .tot[b-0udc29majt] { margin-left: auto; font-variant-numeric: tabular-nums; font-weight: 600; }

.prendi-badge[b-0udc29majt] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.6875rem;
    font-weight: 700;
    border-radius: 999px;
    padding: 2px 10px;
    flex: none;
}

.prendi-badge--aperto[b-0udc29majt] { background: var(--sedna-warning-50); color: var(--sedna-warning-700); }
.prendi-badge--preso[b-0udc29majt] { background: var(--sedna-success-50); color: var(--sedna-success-700); }
.prendi-badge--parziale[b-0udc29majt] { background: #e8eaf6; color: #3949ab; }

.prendi-evaso-info[b-0udc29majt] {
    text-decoration: underline dotted;
    text-underline-offset: 2px;
    cursor: help;
}
.prendi-badge--sel[b-0udc29majt] { background: var(--sedna-primary-subtle); color: var(--sedna-primary); }

.prendi-doc__loading[b-0udc29majt] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    color: var(--sedna-text-secondary);
    font-size: 0.8125rem;
    border-top: 1px solid var(--sedna-border-light);
}

.prendi-righe[b-0udc29majt] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
    border-top: 1px solid var(--sedna-border-light);
}

.prendi-righe th[b-0udc29majt] {
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    text-align: left;
    padding: 4px 10px;
    border-bottom: 1px solid var(--sedna-border-light);
    background: var(--sedna-surface-variant);
}

.prendi-righe td[b-0udc29majt] {
    padding: 3px 10px;
    border-bottom: 1px solid var(--sedna-border-light);
    vertical-align: middle;
}

.prendi-righe .num[b-0udc29majt] { text-align: right; font-variant-numeric: tabular-nums; }
.prendi-righe .mono[b-0udc29majt] { font-variant-numeric: tabular-nums; white-space: nowrap; }

.prendi-riga--esaurita td[b-0udc29majt] { opacity: 0.45; }

/* residuo evidenziato (design .res) */
.prendi-res[b-0udc29majt] { color: var(--sedna-primary); font-weight: 650; }

/* input "Da prendere" compatto e monospace */
.prendi-righe[b-0udc29majt]  .sedna-textbox input,
.prendi-righe td:last-child[b-0udc29majt]  input {
    text-align: right;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
}

.prendi-footer-info[b-0udc29majt] {
    margin-right: auto;
    font-size: 0.78rem;
    color: var(--sedna-text-secondary);
}

.prendi-footer-info b[b-0udc29majt] { color: var(--sedna-text); }

/* Avviso troncamento (F8): oltre 500 documenti del soggetto si dice, non si taglia in silenzio. */
.prendi-troncati[b-0udc29majt] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.25rem 0;
    padding: 0.4rem 0.75rem;
    font-size: 0.75rem;
    color: var(--sedna-warning-800, #92400e);
    background: var(--sedna-warning-50, #fffbeb);
    border: 1px solid var(--sedna-warning-300, #fcd34d);
    border-radius: var(--sedna-radius-md, 0.5rem);
}
/* /Pages/Documenti/Componenti/DocumentoTestata.razor.rz.scp.css */
/* ═══ Testata documento: DUE COLONNE (dati documento | soggetto) in scala xs.
   La configurazione vive nell'header di pagina (DocumentoPage). ═══ */

.doc-testata[b-25aqggcfjd] { display: flex; flex-direction: column; }

.doc-testata__label[b-25aqggcfjd] {
    display: block;
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
    margin-bottom: 2px;
}

/* Host trasparente: le DUE CARD affiancate hanno il proprio bordo.
   Le variabili xs restano qui (le ereditano entrambe le card). */
.doc-documento-box[b-25aqggcfjd] {
    position: relative;

    --doc-cpt-font: 0.65625rem;     /* 10.5px caption */
    --doc-input-font: 0.75rem;      /* 12px valore input */
    --doc-input-h: 1.25rem;         /* 20px altezza input (bordo incluso) */
    --doc-input-inner: calc(var(--doc-input-h) - 2px);
    --doc-row-gap: 0.0625rem;       /* 1px tra le righe della form layout */
    --sedna-input-h: var(--doc-input-h);
    --sedna-input-font: var(--doc-input-font);
}

.doc-documento-box[b-25aqggcfjd]  .sedna-form { position: static; }
.doc-documento-box:hover[b-25aqggcfjd]  .sedna-form__gear { opacity: 1; }

/* ── DUE FORM SEPARATE E AFFIANCATE: card documento | card soggetto ── */
/* Card DOCUMENTO: sezionale/protocollo + date operazione-competenza.
   Card SOGGETTO: soggetto, destinazione/agente e — sotto — numero, lettera e
   date documento/registrazione (i campi che si compilano subito dopo aver
   scelto il soggetto), quindi ha bisogno di più respiro orizzontale. */
.doc-t-cols[b-25aqggcfjd] {
    display: grid;
    grid-template-columns: minmax(380px, 5fr) minmax(460px, 7fr);
    gap: 8px;
    align-items: stretch;
}

@media (max-width: 1100px) {
    .doc-t-cols[b-25aqggcfjd] { grid-template-columns: 1fr; }
}

.doc-t-col[b-25aqggcfjd] {
    min-width: 0;
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);
    padding: 0.25rem 0.5rem 0.3125rem;
}

.doc-t-card__title[b-25aqggcfjd] {
    margin: 0 0 3px;
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    display: flex;
    align-items: center;
    gap: 5px;
}

    .doc-t-card__title i[b-25aqggcfjd] { font-size: 0.7rem; }

/* ── Campi documento su TRE RIGHE (etichetta SOPRA il campo):
     1) Sezionale · N. Protocollo · Let. Prot.
     2) Numero · Lettera · Data Doc. · Data Reg.
     3) Data Operazione · Data Competenza
   Ogni campo è largo quanto il suo contenuto: la riga più affollata (la 2ª)
   detta la larghezza minima della card, ed è per questo che la card Documento
   prende più spazio orizzontale della card soggetto. ── */
.doc-doc-rows[b-25aqggcfjd] {
    display: flex;
    flex-direction: column;
    gap: 7px;
    max-width: 100%;
}

.doc-doc-row[b-25aqggcfjd] {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}

/* La riga numero/date vive nella card SOGGETTO, staccata da un filetto:
   si compila subito dopo aver scelto il cliente/fornitore. */
.doc-doc-row--sogg[b-25aqggcfjd] {
    margin-top: 3px;
    padding-top: 3px;
    border-top: 1px solid var(--sedna-border-light, #eef0f3);
}

/* Etichetta A FIANCO del campo (non sopra): si recupera altezza, e i nomi sono
   abbreviati (Cod., Sez., N. Prot., Data Op....) per non rubare larghezza. */
.doc-fld[b-25aqggcfjd] {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

    .doc-fld > label[b-25aqggcfjd] {
        margin: 0;
        white-space: nowrap;
        flex: none;
    }

/* Sezionale: lookup vera (spenta finché il server non l'accetta), col REGISTRO
   a fianco — il codice del sezionale da solo non basta a sapere quale serie è. */
.doc-sez-lk[b-25aqggcfjd] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

.doc-sez-lk__reg[b-25aqggcfjd] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--sedna-text-tertiary);
    white-space: nowrap;
}

.doc-sez-lk__reg[b-25aqggcfjd]::before {
    content: "·";
    margin-right: 5px;
}

/* Saldo del cliente sulla riga dell'etichetta: piccolo, cifre in colonna, e non
   ruba spazio al titolo (si stacca a destra solo di quel tanto). */
/* ⚠️ BADGE ALLINEATO A DESTRA, sulla stessa riga dell'etichetta (Antonio, 01/09).
   `margin-left: auto` dentro il titolo, che è già flex: spinge il saldo al bordo opposto
   senza toccare la posizione dell'etichetta.
   ⚠️ A destra e non attaccato al testo perché sono due cose diverse: a sinistra COSA stai
   guardando, a destra QUANTO ti deve. Attaccati si leggevano come una frase sola, e il
   numero spariva dentro l'etichetta. */
.doc-saldo[b-25aqggcfjd] {
    margin-left: auto;
    padding: 1px 7px;
    border-radius: 999px;
    border: 1px solid var(--sedna-color-border, #e5e7eb);
    background: var(--sedna-color-surface-alt, #f9fafb);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    color: var(--sedna-text-secondary);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    line-height: 1.4;
}

/* Saldo a DARE = il cliente ci deve dei soldi: è il caso che si guarda prima di
   fare un'altra fattura, quindi si distingue. Non è un errore: niente rosso.
   ⚠️ Da badge il colore del solo testo non bastava più — su un fondo grigio si legge
   come «spento» invece che «da guardare»: si tinge anche il fondo, tenue. */
.doc-saldo--dare[b-25aqggcfjd] {
    color: var(--sedna-warning-700, #b45309);
    border-color: var(--sedna-warning-200, #fde68a);
    background: var(--sedna-warning-50, #fffbeb);
}

.doc-doc-cols[b-25aqggcfjd] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 14px;
    align-items: start;
}

.doc-doc-col[b-25aqggcfjd] { min-width: 0; }

.doc-doc-col--dx[b-25aqggcfjd] {
    border-left: 1px solid var(--sedna-border-light, #eef0f3);
    padding-left: 14px;
}

/* ── Campi a MISURA DI CONTENUTO (niente input chilometrici):
   numero max ~6 cifre, lettera max 4 caratteri, date esattamente dd/MM/yyyy. ── */
[b-25aqggcfjd] .doc-num-w,
[b-25aqggcfjd] .doc-num-w.dxbl-spin-edit,
[b-25aqggcfjd] .doc-num-w.dxbl-text-edit {
    width: 6.5rem !important;
    min-width: 6.5rem !important;
    max-width: 6.5rem !important;
    flex: 0 0 auto !important;
}

/* Sezionale: codice al più 4-5 caratteri, come il numero. */
[b-25aqggcfjd] .doc-sez-w,
[b-25aqggcfjd] .doc-sez-w.sedna-lookup-container {
    width: 6.5rem !important;
    min-width: 6.5rem !important;
    max-width: 6.5rem !important;
    flex: 0 0 auto !important;
}

[b-25aqggcfjd] .doc-lettera-w,
[b-25aqggcfjd] .doc-lettera-w.dxbl-text-edit {
    width: 4.25rem !important;
    min-width: 4.25rem !important;
    max-width: 4.25rem !important;
    flex: 0 0 auto !important;
}

[b-25aqggcfjd] .doc-date,
[b-25aqggcfjd] .doc-date.dxbl-date-edit,
[b-25aqggcfjd] .doc-date.dxbl-text-edit {
    width: 8.5rem !important;
    min-width: 8.5rem !important;
    max-width: 8.5rem !important;
    flex: 0 0 auto !important;
}

/* Meta numerazione nel titolo card: chip TD (tipo FE) + registro/sezionale */
.doc-num-meta[b-25aqggcfjd] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    text-transform: none;
    letter-spacing: 0;
}

    .doc-num-meta .mono[b-25aqggcfjd] {
        font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
        font-size: 0.625rem;
        color: var(--sedna-text-secondary);
    }

.doc-td-chip[b-25aqggcfjd] {
    display: inline-grid;
    place-items: center;
    height: 16px;
    padding: 0 6px;
    border-radius: 999px;
    background: var(--sedna-primary-subtle, #e3f2fd);
    color: var(--sedna-primary, #1e88e5);
    font-size: 0.5625rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}

/* Avviso forzatura numerazione */
.doc-forza-warn[b-25aqggcfjd] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 3px;
    font-size: 0.6875rem;
    color: var(--sedna-warning-700, #b45309);
}

    .doc-forza-warn i[b-25aqggcfjd] { font-size: 0.7rem; }

.doc-sogg-row[b-25aqggcfjd] {
    display: flex;
    gap: 12px;
    align-items: flex-start;
}

/* Il codice è al più 5 cifre: stretto, la ragione sociale è la protagonista.
   Etichetta "Cod." a fianco del campo (come nella card documento). */
.doc-sogg-row__lookup[b-25aqggcfjd] {
    width: 160px;
    flex: none;
    display: flex;
    align-items: center;
    gap: 6px;
}

    .doc-sogg-row__lookup > label[b-25aqggcfjd] { margin: 0; white-space: nowrap; flex: none; }
    .doc-sogg-row__lookup > :not(label)[b-25aqggcfjd] { flex: 1; min-width: 0; }

.doc-sogg-row__info[b-25aqggcfjd] { flex: 1; min-width: 0; }

.doc-sogg-rs[b-25aqggcfjd] {
    font-size: 0.9375rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--sedna-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: 1.25;
    margin-top: 1px;
}

/* Riga destinazione + agente sotto la scheda soggetto */
.doc-sogg-extra[b-25aqggcfjd] {
    display: grid;
    grid-template-columns: minmax(180px, 3fr) minmax(150px, 2fr);
    gap: 4px 12px;
    margin-top: 4px;
    padding-top: 4px;
    border-top: 1px dashed var(--sedna-border-light);
}

.doc-sogg-extra__f[b-25aqggcfjd] {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 6px;
}

    .doc-sogg-extra__f > label[b-25aqggcfjd] { margin: 0; white-space: nowrap; flex: none; }
    .doc-sogg-extra__f > :not(label)[b-25aqggcfjd] { flex: 1; min-width: 0; }

.doc-sogg-details[b-25aqggcfjd] {
    display: flex;
    gap: 4px 14px;
    flex-wrap: wrap;
    font-size: 0.71875rem;
    color: var(--sedna-text-secondary);
    line-height: 1.35;
}

.doc-sogg-details i[b-25aqggcfjd] { font-size: 0.7rem; color: var(--sedna-text-tertiary); margin-right: 2px; }

.doc-sogg-details .mono[b-25aqggcfjd] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
}

.doc-sogg-empty[b-25aqggcfjd] {
    font-size: 0.71875rem;
    color: var(--sedna-text-tertiary);
    padding-top: 3px;
}

/* ── override DevExpress per la scala xs (stesso set della Prima Nota) ── */
[b-25aqggcfjd] .doc-documento-box .dxbl-fl { row-gap: var(--doc-row-gap) !important; }

[b-25aqggcfjd] .doc-documento-box .dxbl-row {
    row-gap: var(--doc-row-gap) !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

[b-25aqggcfjd] .doc-documento-box .dxbl-fl-item {
    padding-top: var(--doc-row-gap) !important;
    padding-bottom: var(--doc-row-gap) !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

[b-25aqggcfjd] .doc-documento-box .dxbl-fl-cpt,
[b-25aqggcfjd] .doc-documento-box label.dxbl-fl-cpt {
    font-size: var(--doc-cpt-font) !important;
    font-weight: 600 !important;
    color: var(--sedna-text-secondary) !important;
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
    line-height: 1.2 !important;
    min-height: auto !important;
    /* Caption a misura di testo: DX le dava ~50% dell'item → gap enorme
       label→input e date in ellipsis. Il resto va al controllo. */
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
    flex: 0 0 auto !important;
    padding-right: 5px !important;
    white-space: nowrap !important;
}

[b-25aqggcfjd] .doc-documento-box .dxbl-fl-item-horizontal .dxbl-fl-ctrl {
    flex: 1 1 auto !important;
    min-width: 0 !important;
}

[b-25aqggcfjd] .doc-documento-box .dxbl-fl-ctrl { padding-top: 0 !important; }

[b-25aqggcfjd] .doc-documento-box .dxbl-text-edit-input,
[b-25aqggcfjd] .doc-documento-box .dxbl-date-edit-input,
[b-25aqggcfjd] .doc-documento-box input[type="text"] {
    font-size: var(--doc-input-font) !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    line-height: var(--doc-input-inner) !important;
    min-height: var(--doc-input-inner) !important;
    height: var(--doc-input-inner) !important;
}

[b-25aqggcfjd] .doc-documento-box .dxbl-date-edit,
[b-25aqggcfjd] .doc-documento-box .dxbl-text-edit,
[b-25aqggcfjd] .doc-documento-box .dxbl-edit {
    min-height: var(--doc-input-h) !important;
    height: var(--doc-input-h) !important;
    align-items: center !important;
}

/* Bottoni interni (calendario, dropdown lookup): vincolati all'altezza xs. */
[b-25aqggcfjd] .doc-documento-box .dxbl-text-edit .dxbl-btn-group,
[b-25aqggcfjd] .doc-documento-box .dxbl-text-edit .dxbl-btn-group .dxbl-btn {
    height: var(--doc-input-inner) !important;
    min-height: var(--doc-input-inner) !important;
    align-self: center !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

[b-25aqggcfjd] .doc-documento-box .dxbl-edit { border-radius: 4px !important; }

[b-25aqggcfjd] .doc-documento-box .doc-numero-auto input {
    color: var(--sedna-text-tertiary);
    font-style: italic;
}

/* empty state */
.doc-testata__empty[b-25aqggcfjd] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 22px 16px;
    border: 1px dashed var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);
    color: var(--sedna-text-secondary);
    font-size: 0.875rem;
    background: var(--sedna-surface-variant);
}

.doc-testata__empty i[b-25aqggcfjd] { font-size: 1.1rem; color: var(--sedna-primary); }


/* ── AVVISI SU NUMERO E DATE (consegna Bruno 17/08) ──
   Stanno sotto il campo che li ha provocato, piccoli e su una riga: sono frasi da
   leggere di sfuggita mentre si compila, non un pannello da consultare. Ambra per
   l'avviso («si può salvare»), rosso per il bloccante — e il bloccante non ha bisogno
   di essere anche grande: il documento non parte comunque, e l'urlo non aggiunge nulla. */
.doc-avviso[b-25aqggcfjd] {
    display: flex;
    align-items: flex-start;
    gap: 4px;
    margin-top: 2px;
    max-width: 40ch;
    font-size: 0.6875rem;
    line-height: 1.35;
    color: #92600e;
}

.doc-avviso i[b-25aqggcfjd] { margin-top: 1px; flex: none; }

.doc-avviso--blocca[b-25aqggcfjd] { color: var(--sedna-error-700, #b91c1c); font-weight: 600; }
/* /Pages/Documenti/Componenti/LottiVendibiliModal.razor.rz.scp.css */
/* ═══ LA LENTE DEI LOTTI ═══ */

.lv[b-6zwrxxgxwy] { display: flex; flex-direction: column; gap: var(--sedna-space-2); }

.lv__barra[b-6zwrxxgxwy] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-3);
    flex-wrap: wrap;
}

.lv__cerca[b-6zwrxxgxwy] { flex: 1 1 22ch; min-width: 16ch; }

.lv__esauriti[b-6zwrxxgxwy] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-text-secondary);
    cursor: pointer;
    white-space: nowrap;
}

/* Il criterio di raggruppamento: si legge, non si tocca. E' una conseguenza della
   configurazione del tipo documento, non una scelta che si fa qui. */
.lv__gruppo[b-6zwrxxgxwy] {
    margin-left: auto;
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-text-tertiary);
    font-style: italic;
    white-space: nowrap;
}

/* La nota sulla fotografia delle giacenze: informativa, non un allarme. */
.lv__nota[b-6zwrxxgxwy] {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
    padding: 4px var(--sedna-space-2);
    border-left: 3px solid var(--sedna-info-600, #2563eb);
    background: var(--sedna-info-50, #eff6ff);
    border-radius: var(--sedna-radius-sm);
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-text-secondary);
}

/* ⚠️ Altezza massima e scorrimento QUI dentro: senza, con duecento lotti la finestra cresce
   oltre lo schermo e i pulsanti «Prendi» finiscono sotto il bordo — irraggiungibili. */
.lv__tab[b-6zwrxxgxwy] {
    max-height: 46vh;
    overflow: auto;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base);
}

.lv__tab table[b-6zwrxxgxwy] { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--sedna-text-xs, 0.75rem); }

/* L'intestazione resta incollata mentre si scorre: qui le righe stanno tutte nel DOM, quindi
   lo sticky vero funziona (a differenza della griglia virtualizzata dell'albero articoli). */
.lv__tab thead th[b-6zwrxxgxwy] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--sedna-surface-variant, #f6f7f9);
    text-align: left;
    padding: 4px 8px;
    font-size: 0.65rem;
    font-weight: var(--sedna-font-semibold);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-text-tertiary);
    border-bottom: 1px solid var(--sedna-border);
    white-space: nowrap;
}

.lv__tab td[b-6zwrxxgxwy] { padding: 3px 8px; border-bottom: 1px solid var(--sedna-border-light, #f0f1f3); }

.lv__r[b-6zwrxxgxwy] { cursor: pointer; }
.lv__r:hover td[b-6zwrxxgxwy] { background: var(--sedna-surface-variant, #f6f7f9); }

/* Spuntata: lo stesso azzurro delle griglie, perche' e' la stessa idea. */
.lv__r--sel td[b-6zwrxxgxwy] { background: var(--sedna-primary-subtle, #dbeafe); }

.lv__sel[b-6zwrxxgxwy] { width: 32px; text-align: center; }
.lv__num[b-6zwrxxgxwy] { text-align: right; font-variant-numeric: tabular-nums; }

/* L'anno del lotto: c'e' ma non compete col numero, che e' quello che si cerca. */
.lv__anno[b-6zwrxxgxwy] { color: var(--sedna-text-tertiary); }

.lv__stato[b-6zwrxxgxwy] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: var(--sedna-space-5);
    color: var(--sedna-text-secondary);
    font-size: var(--sedna-text-sm);
}

.lv__stato--err[b-6zwrxxgxwy] { color: var(--sedna-error-700); }

.lv__troncato[b-6zwrxxgxwy] {
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-warning-700);
}

.lv__conto[b-6zwrxxgxwy] {
    margin-right: auto;
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-text-secondary);
}

/* Da quali magazzini sta guardando: accanto al raggruppamento, stessa voce. */
.lv__mag[b-6zwrxxgxwy] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.72rem;
    color: var(--sedna-text-secondary);
    white-space: nowrap;
}

/* ── Filtri a elenco sulle colonne ────────────────────────────────────────── */
.lv__th[b-6zwrxxgxwy] {
    position: relative;
    white-space: nowrap;
}
.lv__th-txt[b-6zwrxxgxwy] { margin-right: 0.15rem; }

.lv__imb[b-6zwrxxgxwy] {
    border: none;
    background: transparent;
    padding: 0 2px;
    cursor: pointer;
    color: var(--sedna-text-tertiary);
    font-size: 0.7rem;
    line-height: 1;
}
.lv__imb:hover[b-6zwrxxgxwy] { color: var(--sedna-primary); }
/* ⚠️ L'imbutino ACCESO si vede da lontano: un elenco filtrato che sembra completo
   e' il modo piu' facile per concludere che un lotto non c'e'. */
.lv__imb--on[b-6zwrxxgxwy] { color: var(--sedna-primary); }

.lv__pop[b-6zwrxxgxwy] {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 20;
    min-width: 12rem;
    max-width: 20rem;
    background: var(--sedna-surface, #fff);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    box-shadow: var(--sedna-shadow-lg, 0 8px 24px rgba(0,0,0,.14));
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
}
.lv__pop-lista[b-6zwrxxgxwy] {
    max-height: 15rem;
    overflow-y: auto;
    padding: 0.3rem;
}
.lv__pop-r[b-6zwrxxgxwy] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.15rem 0.3rem;
    cursor: pointer;
    font-size: 0.78rem;
    white-space: nowrap;
}
.lv__pop-r:hover[b-6zwrxxgxwy] { background: var(--sedna-surface-hover, #f4f6f8); }
.lv__pop-piede[b-6zwrxxgxwy] {
    display: flex;
    justify-content: space-between;
    gap: 0.4rem;
    padding: 0.3rem;
    border-top: 1px solid var(--sedna-border-light);
}
.lv__pop-piede button[b-6zwrxxgxwy] {
    border: 1px solid var(--sedna-border);
    background: transparent;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    padding: 0.1rem 0.5rem;
    font-size: 0.75rem;
    cursor: pointer;
}

.lv__pulisci[b-6zwrxxgxwy] {
    margin-left: 0.5rem;
    border: 1px solid var(--sedna-border);
    background: transparent;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    padding: 0.1rem 0.5rem;
    font-size: 0.78rem;
    cursor: pointer;
}
/* /Pages/Documenti/Configurazione/ConfigurazioneDocumentoPage.razor.rz.scp.css */
/* ═══ Configurazione documento — design ConfigurazioneDocumento.html + fe.css.
   Nav ad ancore laterali + colonna form a card; header con codice mono + chip
   effetti live. Classi prefissate cfg- (scoped, niente collisione con bootstrap
   globale). I token del mock non presenti in app sono tradotti:
     --sedna-primary-wash → --sedna-primary-subtle
     --sedna-error-tint/ink → --sedna-error-50 / --sedna-error-700
     --dur/--ease → valori fissi. ═══ */

.cfg-page[b-0vo31tauw6] {
    height: calc(100dvh - 16px - var(--sedna-shell-dy, 0px));
    min-height: 480px;
    display: flex;
    flex-direction: column;
}

.cfg-mono[b-0vo31tauw6] {
    font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-variant-numeric: tabular-nums;
}

/* ── Zona testata: la PRIMA riga è la SednaPageHead canonica (freccetta +
   titolo + pulsantiera standard), la SECONDA i badge (chip tipo + effetti live)
   che restano un pezzo di questa pagina. Niente più banda propria: il vestito
   dell'intestazione lo mette il componente, come ovunque. ── */
.cfg-head[b-0vo31tauw6] {
    flex: none;
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 10px 18px;
}

.cfg-head__row[b-0vo31tauw6] {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.cfg-head__row--chips[b-0vo31tauw6] {
    flex-wrap: wrap;
    gap: 5px;
}

/* Titolo: il codice mono è il "chip" davanti alla descrizione, resa con i
   puntini quando non ci sta (il titolo del componente è a riga singola). */
.cfg-mono--code[b-0vo31tauw6] { color: var(--sedna-primary); font-weight: 700; }

.cfg-headtitle[b-0vo31tauw6] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cfg-livechips[b-0vo31tauw6] { display: inline-flex; align-items: center; gap: 5px; flex-wrap: wrap; }

.cfg-sp[b-0vo31tauw6] { flex: 1 1 auto; min-width: 8px; }

/* chip generico + varianti */
.cfg-chip[b-0vo31tauw6] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 9px;
    border-radius: 999px;
    font-size: 0.6875rem;
    font-weight: 600;
    white-space: nowrap;
    border: 1px solid var(--sedna-border);
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface);
}

.cfg-chip--tipo[b-0vo31tauw6] {
    background: var(--sedna-surface-variant);
    border-color: var(--sedna-border);
    color: var(--sedna-text-secondary);
}
.cfg-chip--tipo i[b-0vo31tauw6] { color: var(--sedna-text-tertiary); font-size: 0.72rem; }

.cfg-chip--eff[b-0vo31tauw6] {
    border-color: var(--sedna-success-600);
    color: var(--sedna-success-700);
    background: var(--sedna-success-50);
    transition: opacity 140ms ease, filter 140ms ease;
}
.cfg-chip--eff i[b-0vo31tauw6] { color: var(--sedna-success-600); font-size: 0.72rem; }

/* spento: il chip resta a ingombro ma slavato (design .chip.eff.off) */
.cfg-chip--eff.off[b-0vo31tauw6] {
    border-color: var(--sedna-border);
    color: var(--sedna-text-tertiary);
    background: var(--sedna-surface);
    opacity: 0.55;
}
.cfg-chip--eff.off i[b-0vo31tauw6] { color: var(--sedna-text-tertiary); }

/* .cfg-btn / .cfg-back / .cfg-title / .cfg-actions rimossi: i pulsanti della
   testata sono quelli standard di SednaPageHead, non pulsanti fatti a mano. */

/* ── Alert / loading ─────────────────────────────────────────────────────── */
.cfg-alert[b-0vo31tauw6] {
    flex: none;
    display: flex;
    align-items: flex-start;
    gap: 9px;
    margin: 10px 18px 0;
    padding: 9px 12px;
    border-radius: var(--sedna-radius-input, 0.375rem);
    font-size: 0.8125rem;
}
.cfg-alert--error[b-0vo31tauw6] {
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-700);
    color: var(--sedna-error-700);
}
.cfg-alert ul[b-0vo31tauw6] { margin: 3px 0 0; padding-left: 18px; }
.cfg-alert__x[b-0vo31tauw6] {
    margin-left: auto;
    border: none;
    background: transparent;
    color: inherit;
    cursor: pointer;
    font-size: 0.85rem;
    line-height: 1;
}

.cfg-loading[b-0vo31tauw6] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    color: var(--sedna-text-secondary);
    font-size: 0.875rem;
}

/* ── Layout a TAB (come la causale contabile) ───────────────────────────── */
/* Contenitore dei tab: NON scrolla lui, altrimenti la striscia dei nomi dei tab
   se ne andrebbe su insieme al contenuto. Scrolla solo il pannello contenuto
   (regola sotto), così i nomi dei tab restano sempre a vista. */
.cfg-tabs[b-0vo31tauw6] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: var(--sedna-bg);
}

/* Corpo del tab: card impilate, stessa larghezza massima del vecchio layout */
.cfg-tab-body[b-0vo31tauw6] {
    display: flex;
    flex-direction: column;
    padding-top: 12px;
}

/* FIX layout DevExpress: su questa pagina dxbl-tabs resta con flex-flow di
   default (nowrap) e il pannello contenuto finisce di FIANCO alla striscia dei
   tab ("corpo tutto a destra"). La colonna e' il layout canonico dei tab in
   alto — striscia sopra, contenuto sotto a piena larghezza — e in piu' permette
   al contenuto di prendersi l'altezza residua e scrollare da solo (col vecchio
   "row wrap" l'altezza della seconda riga non era governabile). */
.cfg-tabs[b-0vo31tauw6]  .dxbl-tabs.dxbl-tabs-top {
    flex-flow: column nowrap;
    flex: 1;
    min-height: 0;
}

/* L'UNICO elemento che scrolla: la striscia dei tab resta ferma sopra. */
.cfg-tabs[b-0vo31tauw6]  .dxbl-tabs.dxbl-tabs-top > .dxbl-tabs-content-panel {
    flex: 1;
    min-height: 0;
    max-width: 100%;
    overflow-y: auto;
    padding: 10px 18px 60px;
}

/* ── Card sezione (a tutta larghezza: il corpo del tab occupa lo spazio
   disponibile, come richiesto) ── */
.cfg-card[b-0vo31tauw6] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    margin-bottom: 14px;
    scroll-margin-top: 12px;
}

/* ── Variante EMBEDDED (dentro la modal dal documento): i tasti stanno nel
   footer del popup e devono restare SEMPRE visibili, quindi il corpo non deve
   poter spingere il popup oltre la sua altezza massima. Prima il contenuto
   cresceva libero (overflow visible) e footer/striscia tab uscivano di scena:
   ora scrolla il pannello contenuto, come nella pagina intera. Il popup è alto
   al massimo 92vh (vedi DocumentoPage): si scalano header, footer e striscia. ── */
.cfg-page--embedded[b-0vo31tauw6] {
    height: auto;
    min-height: 0;
}

.cfg-page--embedded .cfg-tabs[b-0vo31tauw6] {
    flex: none;
}

.cfg-page--embedded .cfg-tabs[b-0vo31tauw6]  .dxbl-tabs.dxbl-tabs-top > .dxbl-tabs-content-panel {
    max-height: calc(92vh - 200px);
    padding: 0 2px 8px;
}

.cfg-card-h[b-0vo31tauw6] {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 11px 16px;
    border-bottom: 1px solid var(--sedna-border-light);
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
}
.cfg-card-h > i[b-0vo31tauw6] { color: var(--sedna-text-tertiary); }
.cfg-card-h__sub[b-0vo31tauw6] {
    letter-spacing: 0;
    text-transform: none;
    font-weight: 500;
    color: var(--sedna-text-tertiary);
}

.cfg-card-b[b-0vo31tauw6] { padding: 14px 16px 16px; }

/* ── Griglia campi ───────────────────────────────────────────────────────── */
.cfg-grid[b-0vo31tauw6] { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 16px; }
.cfg-span2[b-0vo31tauw6] { grid-column: span 2; }

.cfg-f[b-0vo31tauw6] { display: flex; flex-direction: column; min-width: 0; }
.cfg-f > label[b-0vo31tauw6] {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    margin-bottom: 4px;
}

/* ── Componenti del design system dentro i campi ──────────────────────────────
   I campi sono SednaTextBox/SednaComboBox/SednaSpinEdit/SednaCheckBox: altezza,
   bordo, focus e font arrivano dai token della libreria (era proprio la classe
   .cfg-in locale, con i suoi 32px, a far stonare la pagina col resto dell'app).
   Qui restano solo le larghezze — prima erano style inline — e il monospazio dei
   codici. NOTA: i wrapper Sedna hanno CSS scope proprio, quindi la classe
   passata via CssClass finisce su una radice che NON porta l'attributo di scope
   di questa pagina: si raggiunge solo con ::deep, e solo partendo da un elemento
   scritto qui (.cfg-f). ── */
.cfg-f[b-0vo31tauw6]  .cfg-w120 { max-width: 120px; }
.cfg-f[b-0vo31tauw6]  .cfg-w140 { max-width: 140px; }
.cfg-f[b-0vo31tauw6]  .cfg-w220 { max-width: 220px; }
.cfg-f[b-0vo31tauw6]  .cfg-wmin220 { min-width: 220px; }

.cfg-f[b-0vo31tauw6]  .cfg-mono-in input,
.cfg-f[b-0vo31tauw6]  .cfg-code-in input {
    font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-variant-numeric: tabular-nums;
}
.cfg-f[b-0vo31tauw6]  .cfg-code-in input { font-weight: 700; }

.cfg-hint[b-0vo31tauw6] {
    font-size: 0.72rem;
    color: var(--sedna-text-tertiary);
    margin-top: 5px;
    line-height: 1.4;
}

/* blocco dettaglio condizionale (causali/conti) sotto un toggle */
.cfg-sub[b-0vo31tauw6] {
    margin: 4px 0 6px;
    padding: 10px 12px;
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border-light);
    border-radius: var(--sedna-radius-input, 0.375rem);
}
.cfg-sub--flex[b-0vo31tauw6] { display: flex; align-items: flex-end; gap: 18px; flex-wrap: wrap; }
.cfg-sub--grid[b-0vo31tauw6] { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 16px; }

/* Contenitore della checkbox in linea (la spunta e' una SednaCheckBox: si stila
   da se'). Il padding tiene la spunta allineata al campo di fianco, che nel
   .cfg-sub--flex (align-items: flex-end) ha sopra la sua label. */
.cfg-inline-check[b-0vo31tauw6] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 0.8125rem;
    color: var(--sedna-text);
    padding-bottom: 6px;
}

/* raggruppamenti di toggle */
.cfg-effs[b-0vo31tauw6] { display: flex; flex-direction: column; }

.cfg-subhead[b-0vo31tauw6] {
    margin: 14px 0 2px;
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    padding-top: 10px;
    border-top: 1px solid var(--sedna-border-light);
}

/* checklist descrittiva (controlli fiscali) */
.cfg-checklist[b-0vo31tauw6] {
    padding-top: 10px;
    display: flex;
    flex-direction: column;
    gap: 7px;
    font-size: 0.78rem;
    color: var(--sedna-text-secondary);
}
.cfg-checklist i[b-0vo31tauw6] { color: var(--sedna-success-600); margin-right: 4px; }

/* ── Chip-input CSV (Evasione) ───────────────────────────────────────────── */
.cfg-chips[b-0vo31tauw6] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
    min-height: 34px;
    padding: 5px 8px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    cursor: text;
}
.cfg-chips:focus-within[b-0vo31tauw6] { border-color: var(--sedna-primary); box-shadow: 0 0 0 2px var(--sedna-primary-subtle); }

.cfg-ci[b-0vo31tauw6] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 4px 0 8px;
    border-radius: 5px;
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
    font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.6875rem;
    font-weight: 700;
}
.cfg-ci button[b-0vo31tauw6] {
    border: none;
    background: transparent;
    color: inherit;
    cursor: pointer;
    font-size: 0.72rem;
    width: 16px;
    height: 16px;
    display: grid;
    place-items: center;
    border-radius: 3px;
}
.cfg-ci button:hover[b-0vo31tauw6] { background: var(--sedna-primary-subtle-hover, rgba(30, 136, 229, 0.18)); }

.cfg-chips > input[b-0vo31tauw6] {
    border: none;
    outline: none;
    flex: 1;
    min-width: 100px;
    height: 22px;
    font-size: 0.8125rem;
    font-family: inherit;
    background: transparent;
    color: var(--sedna-text);
}

/* ── Responsive ──────────────────────────────────────────────────────────── */
@media (max-width: 1100px) {
    .cfg-layout[b-0vo31tauw6] { grid-template-columns: 1fr; }
    .cfg-anchors[b-0vo31tauw6] {
        flex-direction: row;
        overflow-x: auto;
        border-right: none;
        border-bottom: 1px solid var(--sedna-border-light);
        padding: 8px 10px;
    }
    .cfg-anchor[b-0vo31tauw6] { width: auto; white-space: nowrap; }
    .cfg-grid[b-0vo31tauw6], .cfg-sub--grid[b-0vo31tauw6] { grid-template-columns: 1fr; }
    .cfg-span2[b-0vo31tauw6] { grid-column: span 1; }
}

@media (max-width: 720px) {
    .cfg-livechips[b-0vo31tauw6] { order: 5; width: 100%; }
}

/* Registro/sezionale EREDITATI dalla causale: si dicono sotto il campo, in piccolo, perche'
   il campo vuoto da solo non distingue «non impostato» da «non lo so». Quando invece la
   configurazione forza un valore diverso, lo si chiama col suo nome: e' un'eccezione, e le
   eccezioni si vedono. */
.cfg-eredita[b-0vo31tauw6] {
    display: block; margin-top: 2px;
    font-size: 0.7rem; line-height: 1.3;
    color: var(--sedna-text-tertiary);
}
.cfg-eredita--forzato[b-0vo31tauw6] { color: var(--sedna-warning-700, #b45309); font-weight: 600; }

/* ── Magazzini ammessi alla ricerca lotto ──
   Interruttori, non una tendina a scelta multipla: sono pochi (in CVF tre) e
   l'operatore deve vedere in un colpo d'occhio quali sono accesi, non aprire
   un elenco per scoprirlo. */
.cfg-mags[b-0vo31tauw6] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.cfg-mag[b-0vo31tauw6] {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    height: 26px;
    padding: 0 10px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 6px);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    cursor: pointer;
    font-size: 0.75rem;
}
.cfg-mag:hover[b-0vo31tauw6] { border-color: var(--sedna-primary); }
.cfg-mag--on[b-0vo31tauw6] {
    border-color: var(--sedna-primary);
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}
.cfg-mag-cod[b-0vo31tauw6] {
    font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-weight: 700;
}
.cfg-mag-des[b-0vo31tauw6] {
    font-size: 0.6875rem;
    opacity: 0.85;
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ── Stampe a seguire ──
   Una scheda per stampa: l'intestazione dice COSA e QUANDO (tipo, ordine, layout),
   il corpo COME. Spenta si vede spenta: una riga configurata ma inattiva non deve
   sembrare attiva, o si cerca il difetto nel motore di stampa. */
.cfg-stampa[b-0vo31tauw6] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 6px);
    margin-bottom: 10px;
    background: var(--sedna-surface);
}
.cfg-stampa--spenta[b-0vo31tauw6] { opacity: 0.55; }
.cfg-stampa__h[b-0vo31tauw6] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 6px 10px;
    border-bottom: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
}
.cfg-stampa__sw[b-0vo31tauw6] { flex: 0 0 auto; }
.cfg-stampa__tit[b-0vo31tauw6] { font-size: 0.8125rem; }
/* Il numero sta stretto: due cifre, non un campo da importo. */
.cfg-stampa__num[b-0vo31tauw6] { width: 68px; }
.cfg-stampa__ord[b-0vo31tauw6] { display: inline-flex; align-items: center; gap: 6px; }
.cfg-stampa__ord label[b-0vo31tauw6] { font-size: 0.6875rem; color: var(--sedna-text-secondary); }
.cfg-stampa__via[b-0vo31tauw6] {
    margin-left: auto;
    border: none;
    background: transparent;
    color: var(--sedna-danger);
    cursor: pointer;
    border-radius: 4px;
    padding: 2px 6px;
}
.cfg-stampa__via:hover[b-0vo31tauw6] { background: var(--sedna-danger-subtle); }
.cfg-stampa__b[b-0vo31tauw6] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 10px 16px;
    padding: 10px;
}
.cfg-stampa__b .cfg-f--wide[b-0vo31tauw6] { grid-column: 1 / -1; }
.cfg-stampa__chk[b-0vo31tauw6] { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.cfg-stampa__salva[b-0vo31tauw6] { margin-left: auto; }
.cfg-stampa__aggiungi[b-0vo31tauw6] { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.cfg-hint--vuoto[b-0vo31tauw6] { padding: 10px; }

/* Avviso mirato dentro un gruppo di campi: rosso perché segnala una configurazione che
   produrrebbe scritture contabili false, non una preferenza. */
.cfg-warn[b-0vo31tauw6] {
    grid-column: 1 / -1;
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 6px;
    padding: 8px 12px;
    font-size: 0.75rem;
    line-height: 1.5;
    border: 1px solid var(--sedna-error-600, #e53935);
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.08));
    color: var(--sedna-error-700, #c62828);
    border-radius: var(--sedna-radius-md);
}

.cfg-warn i[b-0vo31tauw6] {
    flex-shrink: 0;
    line-height: 1.5;
}

/* ── I cinque costi accessori su UNA RIGA ─────────────────────────────────────
   Sono cinque campi corti che si leggono insieme — «quanto costa» — e in due
   colonne finivano sparsi su tre righe con l'ultimo spaiato. In fila si legge
   come la fascia di numeri che e'. Flex e non grid: cosi' su schermo stretto
   vanno a capo da soli, e la regola @media che porta .cfg-grid a una colonna
   qui non morde (grid-template-columns e' inerte su un flex container). ── */
.cfg-grid--riga[b-0vo31tauw6] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 12px 14px;
}
.cfg-grid--riga > .cfg-f[b-0vo31tauw6] { flex: 0 0 auto; }
.cfg-f[b-0vo31tauw6]  .cfg-w170 { min-width: 170px; max-width: 170px; }

/* «Vai al campo…»: sta nella riga dei chip, spinto a destra insieme a loro.
   ⚠️ Larghezza fissa e non `flex:1`: l'etichetta di una voce e' lunga («Avvisa se salti un
   numero (Generale > Numerazione)») e lasciandogli prendere lo spazio residuo la casella
   cresceva a ogni digitazione, spostando i chip sotto gli occhi. */
.cfg-vaialcampo[b-0vo31tauw6] {
    flex: none;
    width: 230px;
    margin-left: auto;
}

/* ⚠️ La riga dei chip diventa flex ALLINEATA: prima i chip stavano da soli, adesso c'e' anche
   un campo di input e senza allineamento verticale il testo dei chip galleggia. */
.cfg-head__row--chips[b-0vo31tauw6] {
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-wrap: wrap;
}

/* I chip restano attaccati fra loro DOPO la casella: `margin-left:auto` su di lei li spinge
   a destra, quindi la fascia si legge «tipo documento … cerca campo … effetti». */
.cfg-livechips[b-0vo31tauw6] { display: inline-flex; align-items: center; gap: .375rem; flex-wrap: wrap; }
/* /Pages/Documenti/Configurazione/ConfigurazioniDocumentoPage.razor.rz.scp.css */
/* ═══ Lista Configurazioni Documento ═══ */

/* ========================================
   TOOLBAR — searchbox (canone ClientiListNew)
   ======================================== */
.toolbar[b-2w2gh1jead] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.toolbar .search[b-2w2gh1jead] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-2w2gh1jead] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-2w2gh1jead] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-2w2gh1jead]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-2w2gh1jead] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 760px) {
    .toolbar[b-2w2gh1jead] {
        flex-wrap: wrap;
    }

    .toolbar .search[b-2w2gh1jead] {
        max-width: none;
    }
}

.config-tipo-chip[b-2w2gh1jead] {
    display: inline-block;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

/* Famiglia: chip neutro, non compete col chip del tipo documento. */
.config-famiglia-chip[b-2w2gh1jead] {
    display: inline-block;
    font-size: 0.6875rem;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--sedna-surface-2, rgba(120, 120, 120, 0.1));
    color: var(--sedna-text-secondary);
    border: 1px solid var(--sedna-border);
}

.fam-modal__intro[b-2w2gh1jead] {
    margin: 0 0 0.75rem;
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
}

.fam-modal__select[b-2w2gh1jead] {
    width: 100%;
    height: var(--sedna-input-height);
    font-size: var(--sedna-input-font-size);
    padding: 0 0.5rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input);
    background: var(--sedna-surface);
    color: var(--sedna-text);
}
/* /Pages/Documenti/Configurazione/EffRow.razor.rz.scp.css */
/* Toggle switch + riga effetto (design .sw / .eff-row di fe.css, token app). */

.cfg-eff[b-wj5wlhxv84] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 0;
    border-bottom: 1px solid var(--sedna-border-light);
}

.cfg-eff:last-child[b-wj5wlhxv84] { border-bottom: none; }
.cfg-eff--divider[b-wj5wlhxv84] { border-bottom: 1px solid var(--sedna-border-light); }

.cfg-eff-t[b-wj5wlhxv84] { flex: 1; min-width: 0; }

.cfg-eff-t b[b-wj5wlhxv84] {
    display: block;
    font-size: 0.8125rem;
    font-weight: 650;
    color: var(--sedna-text);
    line-height: 1.25;
}

.cfg-eff-t span[b-wj5wlhxv84] {
    font-size: 0.72rem;
    color: var(--sedna-text-tertiary);
    line-height: 1.35;
}

/* switch */
.cfg-sw[b-wj5wlhxv84] { position: relative; width: 34px; height: 19px; flex: none; cursor: pointer; display: inline-block; }
.cfg-sw input[b-wj5wlhxv84] { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }

.cfg-sw-tr[b-wj5wlhxv84] {
    position: absolute;
    inset: 0;
    background: var(--sedna-neutral-300, #cfd4da);
    border-radius: 999px;
    transition: background 160ms cubic-bezier(0.4, 0, 0.2, 1);
}

.cfg-sw-kn[b-wj5wlhxv84] {
    position: absolute;
    top: 2px;
    left: 2px;
    width: 15px;
    height: 15px;
    background: #fff;
    border-radius: 50%;
    transition: transform 160ms cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
}

.cfg-sw input:checked ~ .cfg-sw-tr[b-wj5wlhxv84] { background: var(--sedna-success-600); }
.cfg-sw input:checked ~ .cfg-sw-kn[b-wj5wlhxv84] { transform: translateX(15px); }
.cfg-sw input:focus-visible ~ .cfg-sw-tr[b-wj5wlhxv84] { outline: 2px solid var(--sedna-primary); outline-offset: 2px; }

/* ⚠️ Un'opzione che dipende da un altro interruttore si SPEGNE, non sparisce: sparendo non si
   sa che esiste, e chi la cerca conclude che manchi. Spenta resta leggibile — sbiadita quanto
   basta a dire «non adesso», non tanto da diventare illeggibile. */
.cfg-eff--off[b-wj5wlhxv84] {
    opacity: 0.5;
}

.cfg-eff--off .cfg-sw[b-wj5wlhxv84] {
    cursor: not-allowed;
}
/* /Pages/Documenti/Configurazione/NumerazionePage.razor.rz.scp.css */
/* ═══ Numerazione Documenti ═══ */

.num-filtro-card[b-k9eao8z9dl] {
    margin-top: 0.75rem;
    padding: 0.75rem 1rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface, #fff);
}

.num-result-card[b-k9eao8z9dl] {
    margin-top: 1rem;
    padding: 1rem 1.25rem;
    border-radius: var(--sedna-radius-input, 0.375rem);
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface, #fff);
}

.num-result-card--ok[b-k9eao8z9dl] {
    border-left: 3px solid var(--sedna-success-600, #43a047);
}

.num-result-card--warn[b-k9eao8z9dl] {
    border-left: 3px solid var(--sedna-warning-600, #ffb300);
}

.num-stats[b-k9eao8z9dl] {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem 2.5rem;
    margin-bottom: 0.75rem;
}

.num-stat[b-k9eao8z9dl] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.num-stat__label[b-k9eao8z9dl] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-text-secondary);
}

.num-stat__value[b-k9eao8z9dl] {
    font-size: 1.375rem;
    font-weight: 700;
    color: var(--sedna-text);
}

.num-buchi__header[b-k9eao8z9dl] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.num-buchi__hint[b-k9eao8z9dl],
.num-ok__hint[b-k9eao8z9dl] {
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
}

.num-buchi__chips[b-k9eao8z9dl] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin: 0.75rem 0;
    max-height: 220px;
    overflow-y: auto;
}

.num-chip[b-k9eao8z9dl] {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 2px 9px;
    border-radius: 999px;
    background: var(--sedna-warning-subtle, rgba(255, 179, 0, 0.12));
    color: var(--sedna-warning-700, #b77900);
    border: 1px solid var(--sedna-warning-border, rgba(255, 179, 0, 0.3));
}

.num-chip--more[b-k9eao8z9dl] {
    background: transparent;
    color: var(--sedna-text-secondary);
    border-color: transparent;
    letter-spacing: 0.1em;
}

.num-buchi__actions[b-k9eao8z9dl] {
    margin-top: 0.5rem;
}

.num-ok[b-k9eao8z9dl] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}
/* /Pages/Documenti/Configurazione/TipiDocumentoPage.razor.rz.scp.css */
/* ═══ Tipi Documento ═══ */

/* Guscio .sedna-page: layout e overflow arrivano da sedna.page.css
   (.sedna-page__body--host). Qui resta solo il respiro sotto la griglia. */
.sedna-datagrid-wrapper[b-7eyx4ya7dc] {
    margin-bottom: 0.5rem;
}

/* ========================================
   TOOLBAR — searchbox (canone ClientiListNew)
   ======================================== */
.toolbar[b-7eyx4ya7dc] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.toolbar .search[b-7eyx4ya7dc] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-7eyx4ya7dc] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-7eyx4ya7dc] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-7eyx4ya7dc]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-7eyx4ya7dc] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 760px) {
    .toolbar[b-7eyx4ya7dc] {
        flex-wrap: wrap;
    }

    .toolbar .search[b-7eyx4ya7dc] {
        max-width: none;
    }
}

.tipi-doc-banner[b-7eyx4ya7dc] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0.5rem 0 0.75rem;
    padding: 0.5rem 0.75rem;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-info-subtle, rgba(0, 172, 193, 0.08));
    border: 1px solid var(--sedna-info-border, rgba(0, 172, 193, 0.25));
    color: var(--sedna-text-secondary);
    font-size: 0.8125rem;
}

.tipi-doc-banner__icon[b-7eyx4ya7dc] {
    color: var(--sedna-info-600, #00acc1);
    flex-shrink: 0;
}

.tipi-doc-check[b-7eyx4ya7dc] {
    color: var(--sedna-success-600, #43a047);
    font-size: 1rem;
}

.tipi-doc-dash[b-7eyx4ya7dc] {
    color: var(--sedna-text-tertiary);
}

.tipi-doc-flags[b-7eyx4ya7dc] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.25rem;
    padding: 0.25rem 0;
}
/* /Pages/Documenti/DocumentiHubPage.razor.rz.scp.css */
/* ═══ Hub documenti per tipo — design "Documenti Hub.html" ═══
   Card dei tipi documento raggruppate per FAMIGLIA. */

.doc-hub-loading[b-3riigbjual], .doc-hub-empty[b-3riigbjual] {
    display: flex;
    align-items: center;
    gap: 10px;
    justify-content: center;
    padding: 48px;
    color: var(--sedna-text-secondary);
    font-size: 0.9375rem;
}

.doc-hub-empty i[b-3riigbjual] { font-size: 1.4rem; color: var(--sedna-text-tertiary); }

/* ── Segmented Vendita/Acquisto nell'header (naviga fra le due route) ── */
.hub-seg[b-3riigbjual] {
    display: inline-flex;
    gap: 2px;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    padding: 3px;
}

.hub-seg button[b-3riigbjual] {
    border: none;
    background: transparent;
    color: var(--sedna-text-secondary);
    font-family: inherit;
    font-size: 0.8125rem;
    font-weight: 600;
    padding: 5px 14px;
    border-radius: 4px;
    cursor: pointer;
}

.hub-seg button:hover[b-3riigbjual] { color: var(--sedna-text); }

.hub-seg button.active[b-3riigbjual] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

.hub-seg button:focus-visible[b-3riigbjual] {
    outline: 2px solid var(--sedna-primary);
    outline-offset: 1px;
}

/* ── Banner apertura diretta (visibile solo con ?scegli=true) ── */
.doc-hub-pref[b-3riigbjual] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 10px;
    padding: 8px 12px;
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
    background: var(--sedna-primary-subtle);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
}

.doc-hub-pref > i[b-3riigbjual] { color: var(--sedna-warning, #d99100); }
.doc-hub-pref strong[b-3riigbjual] { color: var(--sedna-text); }

.doc-hub-pref__go[b-3riigbjual] {
    margin-left: auto;
    flex: 0 0 auto;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-primary);
    font-family: inherit;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: var(--sedna-radius-input, 0.375rem);
    cursor: pointer;
}

.doc-hub-pref__go:hover[b-3riigbjual] { border-color: var(--sedna-primary); }

/* Stellina sulla card del tipo predefinito */
.doc-card__pref[b-3riigbjual] {
    font-size: 0.6875rem;
    color: var(--sedna-warning, #d99100);
}

/* ── Sezione famiglia: header uppercase + filetto + contatore ── */
.doc-fam[b-3riigbjual] { margin-top: 18px; }
.doc-fam:first-of-type[b-3riigbjual] { margin-top: 8px; }

.doc-fam__h[b-3riigbjual] {
    display: flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 9px;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
}

.doc-fam__h i[b-3riigbjual] { color: var(--sedna-text-tertiary); }

.doc-fam__n[b-3riigbjual] {
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0;
    color: var(--sedna-text-secondary);
    background: var(--sedna-border-light, #eeeff1);
    padding: 1px 7px;
    border-radius: 999px;
}

.doc-fam__h[b-3riigbjual]::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--sedna-border-light, var(--sedna-border));
}

/* ── Griglia card ── */
.doc-cards[b-3riigbjual] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(215px, 1fr));
    gap: 10px;
}

.doc-card[b-3riigbjual] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    text-align: left;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    padding: 12px 14px;
    cursor: pointer;
    font-family: inherit;
    transition: border-color .16s cubic-bezier(0.25, 1, 0.5, 1), box-shadow .16s cubic-bezier(0.25, 1, 0.5, 1);
}

.doc-card:hover[b-3riigbjual] {
    border-color: var(--sedna-primary);
    box-shadow: var(--sedna-shadow-sm, 0 2px 8px rgba(16, 24, 40, 0.08));
}

.doc-card:focus-visible[b-3riigbjual] {
    outline: 2px solid var(--sedna-primary);
    outline-offset: 2px;
}

.doc-card__top[b-3riigbjual] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.doc-card__cod[b-3riigbjual] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.6875rem;
    font-weight: 700;
    color: var(--sedna-primary);
    background: var(--sedna-primary-subtle);
    padding: 2px 7px;
    border-radius: 4px;
}

.doc-card__sp[b-3riigbjual] { flex: 1; }

.doc-card__cnt[b-3riigbjual] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.9375rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text);
}

.doc-card__desc[b-3riigbjual] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--sedna-text);
    line-height: 1.3;
    min-height: 2.1em;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.doc-card__meta[b-3riigbjual] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.6875rem;
    color: var(--sedna-text-tertiary);
}

.doc-card__arrow[b-3riigbjual] {
    margin-left: auto;
    color: var(--sedna-text-tertiary);
    transition: transform .16s cubic-bezier(0.25, 1, 0.5, 1), color .16s cubic-bezier(0.25, 1, 0.5, 1);
}

.doc-card:hover .doc-card__arrow[b-3riigbjual] {
    color: var(--sedna-primary);
    transform: translateX(2px);
}

/* ── Tipi a ZERO documenti: arretrano (bordo tratteggiato, testi attenuati) ── */
.doc-card.zero[b-3riigbjual] {
    background: transparent;
    border-style: dashed;
}

.doc-card.zero .doc-card__cnt[b-3riigbjual] {
    color: var(--sedna-text-tertiary);
    font-weight: 500;
}

.doc-card.zero .doc-card__desc[b-3riigbjual] {
    color: var(--sedna-text-secondary);
    font-weight: 500;
}

.doc-card.zero .doc-card__cod[b-3riigbjual] {
    background: var(--sedna-border-light, #eeeff1);
    color: var(--sedna-text-secondary);
}

.doc-card.zero:hover[b-3riigbjual] {
    border-color: var(--sedna-text-tertiary);
    box-shadow: none;
}
/* /Pages/Documenti/DocumentiList.razor.rz.scp.css */
/* ═══ Lista Documenti ═══ */

/* La pagina riempie l'altezza visibile e la griglia prende tutto lo spazio
   residuo: header colonne, riga totali (summary) e pager restano SEMPRE
   visibili, le righe scrollano internamente. */
/* Layout pagina e wrapper griglia: dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). */
.documenti-list-page[b-2xk6b484hc]  .documenti-grid {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
}

/* ========================================
   TOOLBAR — searchbox custom (pattern lista Clienti)
   Search + filtri periodo nella stessa riga della toolbar della griglia.
   ======================================== */
.toolbar[b-2xk6b484hc] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-2xk6b484hc] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-2xk6b484hc] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-2xk6b484hc] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-2xk6b484hc]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-2xk6b484hc] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 900px) {
    .toolbar .search[b-2xk6b484hc] {
        width: 100%;
    }
}

.doc-filtri-toolbar[b-2xk6b484hc] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.doc-filtri-toolbar__lbl[b-2xk6b484hc] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.doc-filtri-toolbar[b-2xk6b484hc]  .doc-filtri-toolbar__tipo {
    width: 220px;
}

.doc-filtri-toolbar[b-2xk6b484hc]  .doc-filtri-toolbar__date {
    width: 130px;
}

.doc-trunc-warning[b-2xk6b484hc] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-warning-700);
    background: var(--sedna-warning-50);
    border: 1px solid var(--sedna-warning-600);
    border-radius: 999px;
    padding: 2px 10px;
}

.doc-tipo-chip[b-2xk6b484hc] {
    display: inline-block;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

.doc-status-cell[b-2xk6b484hc] {
    display: flex;
    gap: 4px;
    align-items: center;
}

/* .doc-back-chip rimosso: la risalita all'hub dei tipi e' un pulsante standard
   della pulsantiera (Actions), non un chip con freccia disegnato a mano. */

/* ═══════════════════ BARRA FILTRI DELLA LISTA DOCUMENTI ═══════════════════
   ⚠️ ::deep SUL CONTENITORE: la classe .dl-form sta sulla radice del COMPONENTE
   SednaForm, che disegna lui — l'isolamento CSS di Blazor non gli mette lo scope di
   questa pagina, quindi senza ::deep la regola non lo raggiunge. Stessa trappola gia'
   pagata due volte il 20/08 (campo mittente del ciclo passivo, barra del bilancio). */
[b-2xk6b484hc] .dl-form {
    flex: none;
    /* La rondellina si appoggia al bordo alto, dove sta in tutte le altre barre filtri. */
    --sef-gear-top: -9px;
    --sef-gear-right: 4px;
}

.dl-filtri[b-2xk6b484hc] {
    display: flex;
    flex-wrap: wrap;          /* quattordici filtri: a schermo stretto vanno a capo INTERI */
    align-items: flex-end;
    gap: 8px 14px;
    padding: 6px 0 10px;
}

.dl-f[b-2xk6b484hc] { display: flex; flex-direction: column; gap: 2px; min-width: 0; }

.dl-f > label[b-2xk6b484hc] {
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    white-space: nowrap;
}

/* I campi che vanno insieme (da→a, codice+ragione sociale) stanno sotto UNA etichetta:
   sono un criterio solo, e due etichette direbbero due filtri. */
.dl-coppia[b-2xk6b484hc] { display: flex; align-items: center; gap: 5px; }
.dl-sep[b-2xk6b484hc] { color: var(--sedna-text-tertiary); font-size: 0.75rem; }

/* ⚠️ LARGHEZZE PER TIPO DI CAMPO, non a occhio (Antonio, 20/08): un numero di documento
   vuole otto cifre, una lettera di sezionale quattro, una data dieci piu' il calendario.
   Stanno tutte qui, raccolte: se una diventa illeggibile si corregge in un posto solo.
   ::deep perche' sono COMPONENTI figli, con il loro scope. */
[b-2xk6b484hc] .dl-num  { width: 92px; }        /* 99999999 */
[b-2xk6b484hc] .dl-let  { width: 62px; }        /* ZZZZ */
[b-2xk6b484hc] .dl-cod  { width: 88px; }        /* codice soggetto */
[b-2xk6b484hc] .dl-rag  { width: 158px; }       /* ragione sociale, ditta, vettore, cli.2 */
[b-2xk6b484hc] .dl-data { width: calc(10ch + 3.75rem); }   /* dd/MM/yyyy + i due bottoni */

[b-2xk6b484hc] .dl-c        { width: 168px; }   /* tendina, misura di riferimento */
[b-2xk6b484hc] .dl-c--xs    { width: 104px; }   /* Tipo: Vendita/Acquisto */
[b-2xk6b484hc] .dl-c--sm    { width: 132px; }   /* Tipo data, Fatt., Bollo */
[b-2xk6b484hc] .dl-c--md    { width: 190px; }   /* Tipo Doc.: «FVI — FATTURA IMMEDIATA» */

/* I due pulsanti: IN FILA ai filtri ma spinti a destra, quindi occupano lo spazio che
   avanza sull'ultima riga invece di prendersene una.

   ⚠️ Prima erano `position: absolute` in alto a destra con `padding-right: 200px` sulla
   barra per non farci finire i campi sotto. Misurato a video: su una finestra da 1126px
   quel padding lasciava ai filtri 843px, e i filtri passavano da tre righe a CINQUE —
   la griglia scendeva a 381px su 755. Duecento pixel tolti in orizzontale ne costavano
   ottanta in verticale, che e' il contrario di quello che volevo. */
.dl-azioni[b-2xk6b484hc] { margin-left: auto; align-self: flex-end; }

/* Un filo fra le azioni che si possono fare e quelle che aspettano il server:
   stanno nella stessa barra perche' sono lo stesso elenco del vecchio, ma non sono
   la stessa cosa, e senza separatore si leggono come un blocco solo di pulsanti rotti. */
.dl-bulk-sep[b-2xk6b484hc] {
    width: 1px;
    align-self: stretch;
    margin: 2px 6px;
    background: var(--sedna-border-light, #e5e7eb);
}

/* ═══ Striscia dei totali, sotto la griglia ═══
   Come il piede del vecchio: quattro numeri sempre leggibili, allineati a destra dove
   l'occhio li cerca dopo aver scorso la griglia. Non scorre e non si stringe: e' la
   riga che risponde a «quanto fa questo filtro». */
.dl-totali[b-2xk6b484hc] {
    flex: none;
    display: flex;
    justify-content: flex-end;
    align-items: baseline;
    gap: 22px;
    padding: 8px 12px 2px;
    font-variant-numeric: tabular-nums;
}

.dl-tot[b-2xk6b484hc] { display: inline-flex; align-items: baseline; gap: 7px; }

.dl-tot > em[b-2xk6b484hc] {
    font-style: normal;
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
}

.dl-tot > b[b-2xk6b484hc] { font-size: 0.8125rem; font-weight: 600; color: var(--sedna-text); }

/* Il totale del documento e' quello che si cerca per primo: si stacca dagli altri tre. */
.dl-tot--grande > b[b-2xk6b484hc] { font-size: 0.9375rem; color: var(--sedna-primary); }

/* ⚠️ FILTRA E AZZERA ALTI QUANTO I CAMPI ACCANTO. Misurato a video: i campi stanno fra
   18 e 20px (il token degli input xs) e i pulsanti andavano per conto loro. Due altezze
   nella stessa riga si leggono come due righe, ed e' il difetto che si nota senza saper
   dire cosa non va. Legati al token, non a un numero: se un domani gli input cambiano
   misura, questi la seguono. */
.dl-azioni[b-2xk6b484hc]  .dxbl-btn,
.dl-azioni[b-2xk6b484hc]  button {
    min-height: var(--sedna-input-height, 20px);
    height: var(--sedna-input-height, 20px);
    padding-top: 0;
    padding-bottom: 0;
}

/* Le lookup dei filtri: più larghe di una casella di testo perché mostrano codice E
   ragione sociale insieme, che è il motivo per cui sono lookup. */
[b-2xk6b484hc] .dl-lookup { width: 210px; }


/* ═══ IL VERSO E' OBBLIGATORIO ═══
   Vendite e acquisti insieme non sono un elenco: sono due registri con numerazioni diverse,
   e il piede sommerebbe soldi incassati e soldi pagati nella stessa cifra. */
.dl-obbl[b-2xk6b484hc] { color: var(--sedna-error-600, #dc2626); font-weight: 700; }

/* L'avviso compare SOLO dopo un tentativo, non all'apertura della pagina: una fascia di
   filtri che si apre gia' in rosso rimprovera per una cosa che non si e' ancora fatta. */
.dl-avviso[b-2xk6b484hc] {
    display: block;
    margin-top: 2px;
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-error-600, #dc2626);
}

.dl-c--manca[b-2xk6b484hc]  input,
.dl-c--manca[b-2xk6b484hc]  .sedna-native-input {
    border-color: var(--sedna-error-500, #ef4444);
}


/* La finestra dell'invio email: la scelta della casella e due note che dicono a chi arriva
   e che l'invio parte in sottofondo. */
.dl-invio[b-2xk6b484hc] { display: flex; flex-direction: column; gap: var(--sedna-space-2); }

.dl-invio__campo[b-2xk6b484hc] { display: flex; flex-direction: column; gap: 2px; }

.dl-invio__campo > label[b-2xk6b484hc] {
    font-size: var(--sedna-text-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    font-weight: var(--sedna-font-semibold);
}

.dl-invio__nota[b-2xk6b484hc] {
    margin: 0;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
    line-height: var(--sedna-leading-relaxed);
}

.dl-c--lg[b-2xk6b484hc]  input,
.dl-c--lg[b-2xk6b484hc]  .sedna-native-input { min-width: 340px; }


/* Sospeso: colore d'avviso, non d'errore. Non c'e' niente di sbagliato — c'e' un documento
   che non e' ancora entrato nel registro IVA, e qualcuno prima o poi deve renderlo definitivo. */
.dl-sosp[b-2xk6b484hc] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: var(--sedna-text-xs, 0.75rem);
    font-weight: var(--sedna-font-semibold);
    color: var(--sedna-warning-700);
}


/* Il segno «viene da una liquidazione»: si vede, non grida. E' un'informazione di provenienza,
   non un allarme. */
.dl-liq[b-2xk6b484hc] {
    color: var(--sedna-text-tertiary);
    text-decoration: none;
}

.dl-liq:hover[b-2xk6b484hc] { color: var(--sedna-primary); }

/* Lo stato dell'invio email: tre casi, tre tinte. «Non riuscita» e «Da inviare»
   non sono la stessa cosa — una si rimanda, l'altra si manda. */
[b-2xk6b484hc] .dl-mail {
    display: inline-block;
    padding: 0 6px;
    border-radius: 4px;
    font-size: 0.6875rem;
    font-weight: 600;
    white-space: nowrap;
}
[b-2xk6b484hc] .dl-mail--ok     { background: var(--sedna-success-subtle); color: var(--sedna-success); }
[b-2xk6b484hc] .dl-mail--ko     { background: var(--sedna-danger-subtle);  color: var(--sedna-danger); }
[b-2xk6b484hc] .dl-mail--attesa { background: var(--sedna-surface-variant); color: var(--sedna-text-secondary); }
/* /Pages/Documenti/DocumentoPage.razor.rz.scp.css */
/* ═══ Pagina documento — design Documento.html (claude.ai/design) ═══ */

/* ── Fascia «documento bloccato» ──────────────────────────────────────────
   Stessa misura compatta dell'avviso magazzino (.alm): una riga sola, perché
   ruba spazio al corpo del documento, che qui è il protagonista. Gli elementi
   si allineano al CENTRO — il default .sedna-alert è flex-start e il pulsante
   «Riprova» sarebbe rimasto appeso in alto accanto a una riga di testo. */
.doc-blocco[b-a0j5us7gky] {
    flex: none;
    align-items: center;
    gap: 0.5rem;
    padding: 0.375rem 0.625rem;
    margin-bottom: var(--sedna-space-2, 0.5rem);
    font-size: 0.8125rem;
}

    /* Il testo si prende lo spazio, il pulsante resta in coda a destra. */
    .doc-blocco .sedna-alert__content[b-a0j5us7gky] {
        flex: 1 1 auto;
        min-width: 0;
    }

/* Il CORPO del documento è il protagonista: la pagina riempie il viewport e
   il "foglio" (griglia righe) si prende tutto lo spazio residuo anche con
   poche righe, come il corpo di una fattura cartacea. Se il contenuto sotto
   (piede, FE, filiera) eccede, scorre la pagina ma il foglio non scende
   sotto 300px. */
/* ── Velo di salvataggio (non invasivo) ──────────────────────────────────
   Copre l'intera pagina documento e cattura i click (pointer-events),
   così durante il salvataggio non si può modificare nulla. Sfondo appena
   velato, con al centro il loader di marchio. */
.doc-saving-veil[b-a0j5us7gky] {
    position: absolute;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--sedna-surface, #fff) 55%, transparent);
    backdrop-filter: blur(1.5px);
    cursor: progress;
    animation: doc-saving-veil-in-b-a0j5us7gky 120ms ease-out;
}

@keyframes doc-saving-veil-in-b-a0j5us7gky {
    from { opacity: 0; }
    to { opacity: 1; }
}

.doc-saving-veil__box[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem 1.25rem;
    border-radius: var(--sedna-radius-lg, 0.75rem);
    background: var(--sedna-surface, #fff);
    box-shadow: 0 10px 30px rgba(16, 24, 40, 0.16);
    border: 1px solid var(--sedna-border-light, #eceff3);
}

.documento-page[b-a0j5us7gky] {
    position: relative;
    display: flex;
    flex-direction: column;
    /* 16px = padding verticale di .sedna-main-content__inner (0.5rem × 2).
       IMPORTANTE: niente padding-bottom qui (.entity-page ne mette 1rem):
       sommato all'altezza piena faceva sforare il viewport di 16px, ed era
       quella la barra di scorrimento dell'INTERA pagina. Il documento
       "fitta" il display e a scorrere e' il corpo (griglia righe). */
    height: calc(100dvh - 16px - var(--sedna-shell-dy, 0px));
    min-height: 480px;
    /* ⚠️ CONSUMA IL TOKEN, non ne riscrive uno uguale: questa misura — nata qui, perche'
       sul documento ogni millimetro orizzontale e' una colonna di griglia in piu' — e'
       diventata quella di TUTTE le pagine. Scrivere di nuovo il clamp voleva dire due
       posti da cambiare insieme, e uno dei due che prima o poi resta indietro.
       In basso resta 0: l'altezza e' calcolata sul viewport (vedi sopra). */
    padding-inline: var(--sedna-page-pad-x, clamp(0.25rem, 0.5vw, 0.5rem));
    padding-top: 0.5rem;
    padding-bottom: 0;
    overflow-y: auto;

    /* token carta del design */
    --doc-band: var(--sedna-surface, #fff);  /* intestazione colonne CHIARA (coerente con Prima Nota) */
    --doc-rule: #e8eaed;      /* filetto sottile */
    --doc-editing: #e3f2fd;   /* riga in editing */
    --doc-calc: #fcfcfd;      /* celle calcolate */
    --doc-riga-pitch: 27px;   /* altezza riga corpo (input 24 + pad 2 + filetto) */
}

/* Righe corpo leggermente più basse (richiesta utente): input 24px e
   padding cella 1px al posto dei 28+3 della density-compact standard. */
.documento-page[b-a0j5us7gky]  .sedna-editable-grid {
    --seg-input-h: 1.5rem;
    --seg-cell-pad-y: 0.0625rem;
}

/* Il foglio = card della griglia: bordo netto, radius solo sopra (il piede
   e la barra totali vi si attaccano sotto), ombra leggera. */
.documento-page[b-a0j5us7gky]  .doc-righe-card {
    flex: 1 1 auto;
    min-height: 300px;
    display: flex;
    flex-direction: column;
}

.documento-page[b-a0j5us7gky]  .sedna-editable-grid {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.documento-page[b-a0j5us7gky]  .sedna-editable-grid__wrapper {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    background: var(--sedna-surface);
}

.documento-page[b-a0j5us7gky]  .sedna-editable-grid__toolbar {
    border-bottom: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
}

/* Banda intestazione colonne: sticky durante lo scroll, fondo banda. */
.documento-page[b-a0j5us7gky]  .sedna-editable-grid__table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--doc-band);
    border-bottom: 1px solid var(--sedna-border);
    font-size: 0.625rem;
    letter-spacing: 0.05em;
    padding-top: 7px;
    padding-bottom: 7px;
}

.documento-page[b-a0j5us7gky]  .sedna-editable-grid__table {
    height: 100%;
}

/* Righe da fattura: 30px, filetti sottili, numeri tabellari. */
.documento-page[b-a0j5us7gky]  .sedna-editable-grid__table tbody td {
    height: var(--doc-riga-pitch);
    border-bottom: 1px solid var(--doc-rule);
    font-variant-numeric: tabular-nums;
}

/* Celle CALCOLATE (engine): lavate e in secondo piano rispetto all'input. */
.documento-page[b-a0j5us7gky]  .sedna-editable-grid__table tbody td.doc-td-calc {
    background: var(--doc-calc);
}

/* Hover riga come nel design: velo uniforme #fafbfc (niente filtro scurente),
   mai sopra la riga in editing. */
.documento-page[b-a0j5us7gky]  .sedna-editable-grid__table tbody tr:hover {
    filter: none;
}

.documento-page[b-a0j5us7gky]  .sedna-editable-grid__table tbody tr:hover:not(:focus-within) td {
    background: #fafbfc;
}

/* Riga in editing (design Documento.html, tr.editing): sfondo azzurrino
   NON invadente + sottile bordo blu che incornicia l'intera riga
   (inset sopra/sotto, chiuso ai lati sulla prima e ultima cella). */
.documento-page:not(.mode-view)[b-a0j5us7gky]  .sedna-editable-grid__table tbody tr:focus-within td {
    background: var(--doc-editing);
    box-shadow: inset 0 1px 0 var(--sedna-primary), inset 0 -1px 0 var(--sedna-primary);
}

.documento-page:not(.mode-view)[b-a0j5us7gky]  .sedna-editable-grid__table tbody tr:focus-within td:first-child {
    box-shadow: inset 1px 1px 0 var(--sedna-primary), inset 0 -1px 0 var(--sedna-primary);
}

.documento-page:not(.mode-view)[b-a0j5us7gky]  .sedna-editable-grid__table tbody tr:focus-within td:last-child {
    box-shadow: inset -1px 1px 0 var(--sedna-primary), inset 0 -1px 0 var(--sedna-primary);
}

/* La CELLA col focus dentro la riga attiva: buca il wash (fondo bianco) e prende
   un filo in tinta tutt'intorno — si vede in quale colonna si sta scrivendo senza
   caricare la riga di colore. I filetti sopra/sotto restano quelli della riga. */
.documento-page:not(.mode-view)[b-a0j5us7gky]  .sedna-editable-grid__table tbody tr:focus-within td:has(:focus) {
    background: var(--sedna-surface, #fff);
    box-shadow: inset 0 1px 0 var(--sedna-primary), inset 0 -1px 0 var(--sedna-primary),
                inset 0 0 0 1px color-mix(in srgb, var(--sedna-primary) 40%, transparent);
}

/* Dentro la riga attiva gli input si staccano dal wash: fondo bianco e
   bordo blu (design tr.editing .cell-in). */
.documento-page:not(.mode-view)[b-a0j5us7gky]  .sedna-editable-grid__table tbody tr:focus-within .dxbl-edit {
    border-color: var(--sedna-primary) !important;
    background: #fff !important;
}

/* La riga vuota "Nessuna riga presente" non disegna filetti a metà foglio.
   Il messaggio adesso sta FUORI dalla tabella (era centrato sulla larghezza scrollabile
   invece che su quella visibile): nella tabella resta il segnaposto, ed è quello a non
   dover disegnare il filetto. */
.documento-page[b-a0j5us7gky]  .sedna-editable-grid__table tbody tr.sedna-editable-grid__empty-row > td {
    border-bottom: none;
}

/* Lo spazio sotto l'ultima riga resta BIANCO (scelta utente: niente righe
   vuote disegnate): il filler estende solo il foglio fino al piede. */

/* VISTA (documento confermato → carta): niente hover, ombra più presente. */
.mode-view[b-a0j5us7gky]  .doc-righe-card {
    box-shadow: 0 2px 10px rgba(16, 24, 40, 0.07);
}

.mode-view[b-a0j5us7gky]  .sedna-editable-grid__table tbody tr:hover {
    filter: none;
}

/* ANNULLATO: filigrana obliqua sul foglio, contenuti attenuati. */
.mode-cancelled[b-a0j5us7gky]  .doc-righe-card { position: relative; }

.mode-cancelled[b-a0j5us7gky]  .doc-righe-card::after {
    content: "ANNULLATO";
    position: absolute;
    top: 45%;
    left: 50%;
    transform: translate(-50%, -50%) rotate(-18deg);
    font-size: 5rem;
    font-weight: 800;
    letter-spacing: 0.2em;
    color: var(--sedna-error-600);
    opacity: 0.08;
    pointer-events: none;
    z-index: 4;
}

.mode-cancelled[b-a0j5us7gky]  .sedna-editable-grid__table tbody td,
.mode-cancelled[b-a0j5us7gky]  .doc-testata {
    opacity: 0.75;
}

/* La barra dei totali resta incollata al fondo dello scroll: il TOTALE
   DOCUMENTO è sempre visibile, come il piede di una fattura. */
.documento-page[b-a0j5us7gky]  .doc-totali-bar {
    position: sticky;
    bottom: 0;
    z-index: 5;
    box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);
}

/* ═══ Testata: è la SednaPageHead canonica (freccetta + titolo + pulsantiera).
   Qui si aggiustano solo le poche cose che il documento chiede in più. ═══ */
/* La testata del componente NON porta l'attributo di scope di questa pagina
   (è la root di un componente figlio): la si raggiunge in ::deep partendo da
   .documento-page, che invece è markup di questa pagina. */
.documento-page[b-a0j5us7gky]  .sedna-page__head {
    /* UNA riga sola (collaudo 23/07): la testata non deve mai crescere in altezza —
       ogni riga qui e' altezza tolta al corpo del documento. Quello che non ci sta
       si accorcia (descrizione coi puntini) o esce dal taglio, non va a capo. */
    gap: 8px;
    flex-wrap: nowrap;
    overflow: hidden;
    padding: 8px var(--sedna-space-4, 1rem);
    margin-bottom: 10px;
}

/* Il "titolo" del documento non è un testo ma una riga di comandi e badge:
   allineamento al centro (non a baseline) e nessuna scala tipografica da titolo,
   che i figli si portano già la loro. Prende tutto lo spazio libero, così la
   pulsantiera resta ancorata a destra. */
.documento-page[b-a0j5us7gky]  .sedna-page__title {
    flex: 1 1 auto;
    min-width: 0;
    align-items: center;
    gap: 8px;
    overflow: hidden;
    font-size: 1rem;
    font-weight: 400;
    letter-spacing: 0;
}

/* La pulsantiera non si comprime mai: e' l'unica parte con cui si lavora. */
.documento-page[b-a0j5us7gky]  .sedna-page__actions { flex: none; }

/* Riga di intestazione (dentro il titolo): selettore tipo + descrizione +
   chip effetti + stato + pipeline FE. */
.doc-headline[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: nowrap;
    overflow: hidden;
    flex: 1 1 auto;
    min-width: 0;

    --doc-input-font: 0.75rem;
    --doc-input-h: 1.375rem;   /* 22px: il selettore è il "titolo", un filo più alto degli xs */
    --doc-input-inner: calc(var(--doc-input-h) - 2px);
    --sedna-input-h: var(--doc-input-h);
    --sedna-input-font: var(--doc-input-font);
}

/* Il codice tipo documento è al più 5 caratteri: combo stretto, quel tanto che
   basta al codice + freccetta (il pannello a tendina resta a max-content). */
/* Larghezza sul CONTENUTO, non sul codice che si ha davanti.
   ⚠️ Dimensionato su CINQUE caratteri (Antonio: «conterra' al piu' 5»), non sui tre di
   «FVI»: tararlo su quello che si vede oggi vuol dire troncare il primo tipo a 5 lettere,
   ed e' la stessa trappola dell'etichetta «Provvigione %» di stasera in un altro punto.

   Il conto, invece di un numero a occhio:
     5ch  il codice, in --doc-input-font (i `ch` sono la larghezza dello "0" a quel corpo)
     6px  il gap fra codice e freccina
    ~11px la freccina (bi-chevron-down a 0.7rem)
    16px  i fianchi (padding 0 8px)
     2px  i bordi
   = 5ch + 35px. Da 92px scende a ~70px con cinque caratteri dentro, non tre.

   ⚠️ Resta un BERSAGLIO da cliccare, non un'etichetta: sotto i 64px la freccina finisce
   addosso al testo e diventa scomodo da centrare. Il min-width e' quel pavimento. */
.doc-head__config[b-a0j5us7gky] {
    width: calc(5ch + 35px);
    min-width: 64px;
    flex: none;
}

/* ── Selettore TIPO DOCUMENTO ad accordion (sezioni per famiglia) ───────── */
.doc-tipopicker[b-a0j5us7gky] { position: relative; }

.doc-tipopicker__btn[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    height: 24px;
    padding: 0 8px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    font-family: inherit;
    cursor: pointer;
}

.doc-tipopicker__btn:disabled[b-a0j5us7gky] { cursor: default; opacity: 0.75; }
.doc-tipopicker__btn:hover:not(:disabled)[b-a0j5us7gky] { border-color: var(--sedna-primary); }
.doc-tipopicker.open .doc-tipopicker__btn[b-a0j5us7gky] { border-color: var(--sedna-primary); }

.doc-tipopicker__cod[b-a0j5us7gky] {
    flex: 1;
    text-align: left;
    font-weight: 700;
    font-size: var(--doc-input-font, 0.75rem);
    color: var(--sedna-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.doc-tipopicker__btn i[b-a0j5us7gky] { font-size: 0.7rem; color: var(--sedna-text-tertiary); }

/* Il pannello si allarga fino alla descrizione più lunga (niente troncamenti):
   width:max-content sul contenuto, con un minimo e un tetto di sicurezza. */
.doc-tipopicker__panel[b-a0j5us7gky] {
    /* FIXED (non absolute): la testata .doc-head ha overflow:hidden per restare a una
       riga, che altrimenti TAGLIA la tendina (si vedrebbe solo la ricerca). Fixed la fa
       uscire dal contenitore; left/top li mette il JS sotto il bottone. */
    position: fixed;
    z-index: 1200;
    width: max-content;
    min-width: 340px;
    max-width: min(720px, 90vw);
    max-height: 60vh;
    display: flex;
    flex-direction: column;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    box-shadow: var(--sedna-shadow-lg, 0 8px 28px rgba(16, 24, 40, 0.16));
    overflow: hidden;
}

.doc-tipopicker__search[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 8px 10px;
    border-bottom: 1px solid var(--sedna-border-light);
}

.doc-tipopicker__search i[b-a0j5us7gky] { color: var(--sedna-text-tertiary); font-size: 0.8rem; }

.doc-tipopicker__search input[b-a0j5us7gky] {
    flex: 1;
    border: none;
    outline: none;
    background: transparent;
    font-family: inherit;
    font-size: 0.8125rem;
    color: var(--sedna-text);
}

.doc-tipopicker__list[b-a0j5us7gky] { overflow-y: auto; padding: 4px 0 6px; }

.doc-tipopicker__sechead[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    gap: 7px;
    width: 100%;
    padding: 6px 10px;
    border: none;
    background: transparent;
    font-family: inherit;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
    cursor: pointer;
    text-align: left;
}

.doc-tipopicker__sechead:hover[b-a0j5us7gky] { background: var(--sedna-bg); color: var(--sedna-text); }
.doc-tipopicker__sechead i[b-a0j5us7gky] { font-size: 0.7rem; color: var(--sedna-text-tertiary); }

.doc-tipopicker__n[b-a0j5us7gky] {
    margin-left: auto;
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0;
    color: var(--sedna-text-secondary);
    background: var(--sedna-border-light, #eeeff1);
    padding: 1px 6px;
    border-radius: 999px;
}

.doc-tipopicker__item[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 5px 10px 5px 24px;
    border: none;
    background: transparent;
    font-family: inherit;
    cursor: pointer;
    text-align: left;
}

.doc-tipopicker__item:hover[b-a0j5us7gky] { background: var(--sedna-primary-subtle); }
.doc-tipopicker__item.sel[b-a0j5us7gky] { background: var(--sedna-primary-subtle); }

.doc-tipopicker__icod[b-a0j5us7gky] {
    flex: 0 0 auto;
    min-width: 62px;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.6875rem;
    font-weight: 700;
    color: var(--sedna-primary);
}

/* Descrizione MAI troncata: è il pannello che si allarga su di lei. */
.doc-tipopicker__idesc[b-a0j5us7gky] {
    flex: 1;
    font-size: 0.8125rem;
    color: var(--sedna-text);
    white-space: nowrap;
}

.doc-tipopicker__star[b-a0j5us7gky] { color: var(--sedna-warning-700, #b07400); font-size: 0.7rem; }

.doc-tipopicker__empty[b-a0j5us7gky] {
    padding: 16px 12px;
    text-align: center;
    font-size: 0.8125rem;
    color: var(--sedna-text-tertiary);
}

.doc-head__desc[b-a0j5us7gky] {
    font-size: 0.9375rem;
    /* Scelto il tipo documento, la sua descrizione e' l'informazione piu' importante
       dell'header: in grassetto. Si accorcia con i puntini invece di sparire. */
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--sedna-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    /* ⚠️ NIENTE max-width (era 340px, e a 14" 180px): la descrizione PRENDE LO SPAZIO
       LIBERO DELLA SUA RIGA (Antonio, 17/08: «utilizza lo spazio disponibile al netto
       dei pulsanti che non vedo»). Un tetto in pixel troncava «Fattura accompagnatoria
       differita» anche con mezza riga vuota accanto, perche' la riga e' larga quanto la
       pagina ma il tetto no.
       Regge su tre fatti: la pulsantiera e' `flex: none` con `margin-left:auto` (non si
       comprime mai, quindi lo spazio "al netto dei pulsanti" e' esattamente quello che
       resta), il titolo di pagina qui cresce (regola sotto), e questa e' l'UNICA voce
       elastica della riga — gli altri chip sono `flex: none`, quindi quando lo spazio
       finisce cede lei, coi puntini, e non spariscono i badge di stato. */
    flex: 1 1 auto;
    min-width: 0;
}

/* Il titolo di pagina e' `flex: 0 1 auto` nel canone (sedna.page.css): sta larghe
   quanto il testo. Qui il "titolo" e' l'intestazione del documento — selettore,
   descrizione, stati — e deve occupare la riga, altrimenti far crescere la
   descrizione dentro di lui non sposta niente. */
.documento-page[b-a0j5us7gky]  .sedna-page__title { flex: 1 1 auto; }

.doc-head__chips[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    flex-wrap: nowrap;
    /* Cedono spazio per primi: sono informativi, non azioni. */
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
}

/* Lo spaziatore .doc-head__sp non serve più: la pulsantiera del componente si
   ancora a destra da sola (margin-left:auto). */

/* Le regole di scala per il vecchio LOOKUP DevExpress della configurazione sono
   state tolte: il selettore del tipo è un pulsante+pannello in HTML puro dal
   collaudo 23/07, quindi erano inerti. */

/* numero documento: chip monospace */
/* Sezionale e tipo doc. FE: ereditati (dalla configurazione o dalla causale),
   mai modificabili qui — quindi pill informative, non input. */
.doc-sez-pill[b-a0j5us7gky],
.doc-fe-pill[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 9px;
    flex: none;
    border-radius: var(--sedna-radius-input, 0.375rem);
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    white-space: nowrap;
    cursor: default;
}

.doc-sez-pill[b-a0j5us7gky] {
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
}

.doc-fe-pill[b-a0j5us7gky] {
    color: var(--sedna-primary);
    background: var(--sedna-primary-subtle);
    border: 1px solid color-mix(in srgb, var(--sedna-primary) 30%, transparent);
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
}

.doc-sez-pill i[b-a0j5us7gky], .doc-fe-pill i[b-a0j5us7gky] { font-size: 0.72rem; opacity: 0.8; }

/* TD ricavato invece che dichiarato: tinta neutra e la parolina «auto». Un TD previsto e
   un TD deciso non possono avere lo stesso aspetto — il primo cambia se cambia il tipo
   documento, il secondo no. */
.doc-fe-pill--auto[b-a0j5us7gky] {
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface-variant);
    border-color: var(--sedna-border);
}
.doc-fe-pill__auto[b-a0j5us7gky] {
    margin-left: 4px;
    font-family: var(--sedna-font-family);
    font-size: 0.5625rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
}

.doc-numero-pill[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.75rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text);
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    height: 22px;
    padding: 0 9px;
    white-space: nowrap;
}

.doc-numero-pill--auto[b-a0j5us7gky] { color: var(--sedna-text-tertiary); font-style: italic; }

/* Numero PREVISTO (vendita): provvisorio finché non si salva → bordo tratteggiato
   in colore primario, per distinguerlo da un numero definitivo. */
.doc-numero-pill--preview[b-a0j5us7gky] {
    color: var(--sedna-primary);
    border-style: dashed;
    border-color: var(--sedna-primary);
}

/* chip effetti configurazione: outline con icona verde (design) */
.doc-effetto-chip[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 21px;
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    background: transparent;
    border: 1px solid var(--sedna-border);
    border-radius: 999px;
    padding: 0 9px;
    white-space: nowrap;
}

.doc-effetto-chip i[b-a0j5us7gky] { color: var(--sedna-success-600); font-size: 0.72rem; }

.doc-effetto-chip--warn[b-a0j5us7gky] {
    color: var(--sedna-warning-700);
    background: var(--sedna-warning-50);
    border-color: var(--sedna-warning-600);
}

.doc-effetto-chip--warn i[b-a0j5us7gky] { color: var(--sedna-warning-700); }

/* badge stato documento (design .badge-stato) */
.doc-stato[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 10px;
    border-radius: 999px;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    white-space: nowrap;
}

.doc-stato--confermato[b-a0j5us7gky] { background: var(--sedna-success-50, #e8f5e9); color: var(--sedna-success-700, #2e7d32); }
.doc-stato--bozza[b-a0j5us7gky] { background: var(--sedna-warning-50, #fff8e1); color: var(--sedna-warning-700, #b07400); }
.doc-stato--annullato[b-a0j5us7gky] { background: var(--sedna-error-50, #ffebee); color: var(--sedna-error-700, #c62828); }
.doc-stato--info[b-a0j5us7gky] { background: var(--sedna-primary-subtle, #e3f2fd); color: var(--sedna-primary); padding: 0 7px; }

/* Stato reso come PALLINO: solo icona e colore, l'etichetta nel tooltip (title) e
   per lo screen reader (aria-label). Vale per gli stati che raccontano a che punto
   è il documento — bozza, contabilizzato, fatturato, evaso — mentre quelli che
   impediscono di lavorare (annullato, bloccato) restano scritti. Tondo e stretto:
   in testata ogni pixel è larghezza tolta alla descrizione del tipo documento. */
.doc-stato--pallino[b-a0j5us7gky] {
    width: 22px;
    padding: 0;
    justify-content: center;
    gap: 0;
}
/* documento congelato (periodo chiuso, FE inviata...): il perche' sta nel title */
.doc-stato--bloccato[b-a0j5us7gky] { background: var(--sedna-warning-50, #fff8e1); color: var(--sedna-warning-700, #b07400); cursor: help; }

/* Chip tondo della riga di intestazione (apri la configurazione del tipo).
   Si chiamava .doc-back-chip quando accanto c'era anche la freccia di ritorno
   fatta a mano: la freccia la disegna il componente, il nome era fuorviante. */
.doc-head-chip[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 24px;
    width: 24px;
    padding: 0;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: 999px;
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    white-space: nowrap;
    flex: none;
}

.doc-head-chip:hover[b-a0j5us7gky] {
    border-color: var(--sedna-primary);
    color: var(--sedna-primary);
}

/* bottone azione nella header della griglia (CONAI) */
.doc-header-action[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    /* Compatti come i pulsanti della toolbar della griglia (Colonne/Aggiungi riga): stessa
       altezza, così la barra "Righe documento" si abbassa in modo uniforme. */
    height: 22px;
    padding: 0 8px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-input, 0.375rem);
    color: var(--sedna-text-secondary);
    font-size: 0.72rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
}

/* Le due azioni «vai al movimento» sono ANCORE (si aprono in una scheda nuova): senza
   questo un <a> nella barra si vedrebbe sottolineato e blu, cioe' diverso dai pulsanti
   che gli stanno accanto pur facendo la stessa cosa. */
a.doc-header-action[b-a0j5us7gky] { text-decoration: none; }
a.doc-header-action:hover[b-a0j5us7gky] { text-decoration: none; }

.doc-header-action:hover:not(:disabled)[b-a0j5us7gky] {
    border-color: var(--sedna-primary);
    color: var(--sedna-primary);
}

/* Contenitore che porta il title di un'azione DISABILITATA: un pulsante spento non
   emette eventi di mouse, quindi il tooltip col motivo deve stare sul genitore.
   Trasparente al layout — nella toolbar deve comportarsi come il pulsante nudo. */
.doc-header-action-wrap[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
}

.doc-header-action:disabled[b-a0j5us7gky] { opacity: 0.6; cursor: default; }

.doc-header-action--primary[b-a0j5us7gky] {
    border-color: var(--sedna-primary);
    color: var(--sedna-primary);
    background: var(--sedna-primary-subtle);
}

/* Strip "righe da documenti presi": attaccata sotto il foglio (design). */
.doc-prese-strip[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    border: 1px solid var(--sedna-border);
    border-top: none;
    background: #f6f9fc;
    padding: 8px 12px;
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.doc-prese-strip__title[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    font-size: 0.625rem;
    color: var(--sedna-primary);
}

.doc-prese-strip__item[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.doc-prese-strip__item .mono[b-a0j5us7gky],
.doc-prese-strip__sub .mono[b-a0j5us7gky] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text);
}

.doc-prese-strip__item button[b-a0j5us7gky] {
    width: 18px; height: 18px;
    display: grid; place-items: center;
    border: none;
    background: transparent;
    border-radius: 4px;
    color: var(--sedna-text-tertiary);
    font-size: 0.6rem;
    cursor: pointer;
}

.doc-prese-strip__item button:hover[b-a0j5us7gky] { color: var(--sedna-error-700); background: var(--sedna-error-50, #ffebee); }

.doc-prese-strip__sp[b-a0j5us7gky] { flex: 1; }

/* ── FE nell'header: pipeline compatta + info file + azione contestuale ── */
.doc-head__fe[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding-left: 10px;
    border-left: 1px solid var(--sedna-border-light, #eef0f3);
    min-width: 0;
}

.doc-fe-pipe--head[b-a0j5us7gky] { margin-bottom: 0; flex-wrap: nowrap; }

    .doc-fe-pipe--head .doc-fe-step[b-a0j5us7gky] { font-size: 0.625rem; gap: 5px; white-space: nowrap; }

    .doc-fe-pipe--head .doc-fe-step .dot[b-a0j5us7gky] {
        width: 18px;
        height: 18px;
        font-size: 0.6rem;
        line-height: 1;
    }

        /* le bootstrap-icons hanno baseline propria: senza line-height 0
           l'icona nel pallino piccolo scende sotto il centro */
        .doc-fe-pipe--head .doc-fe-step .dot i[b-a0j5us7gky] { line-height: 0; display: block; }

    .doc-fe-pipe--head .doc-fe-link[b-a0j5us7gky] { width: 14px; }

/* Bottoni FE (Genera XML / Invia a SDI): alti come TUTTI gli altri della testata.
   ⚠️ Erano 1.75rem = 28px, contro i 24px di ogni altro pulsante della riga — misurato:
   «Genera XML» 28, e FVI/Elenco/Stampa/Elimina/Annulla/Modifica/Salva tutti 24. Quattro
   pixel, ma l'unico fuori riga su otto, e in mezzo alla barra.
   Il commento diceva «stessa altezza sm per tutta la riga» ed era vero quando l'ho
   scritto: allora il riferimento era «Genera documento», che stava qui in testata a
   1.75rem. Quel pulsante e' passato nella toolbar delle righe il 30/07, e questa regola e'
   rimasta a inseguire un vicino che non c'e' piu'. Ora la misura di riferimento e' quella
   della pulsantiera standard, 24px, che e' anche l'unica che si vede accanto. */
.doc-head__fe[b-a0j5us7gky]  .dxbl-btn {
    height: 24px;
    min-height: 24px;
    padding-top: 0;
    padding-bottom: 0;
}

.doc-fe-info[b-a0j5us7gky] {
    width: 22px;
    height: 22px;
    display: grid;
    place-items: center;
    border: none;
    background: transparent;
    border-radius: 5px;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    font-size: 0.8rem;
    flex: none;
    padding: 0;
}

    .doc-fe-info:hover[b-a0j5us7gky] { background: var(--sedna-surface-variant, #f7f8fa); color: var(--sedna-text); }

    .doc-fe-info:disabled[b-a0j5us7gky] { opacity: 0.5; cursor: default; }

    .doc-fe-info i[b-a0j5us7gky] { line-height: 0; display: block; }

.doc-fe-file[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.6875rem;
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface-variant, #f7f8fa);
    border: 1px solid var(--sedna-border-light, #eef0f3);
    border-radius: 999px;
    padding: 2px 4px 2px 10px;
    min-width: 0;
}

    .doc-fe-file .mono[b-a0j5us7gky] {
        font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
        color: var(--sedna-text);
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        max-width: 220px;
    }

.doc-fe-file__meta[b-a0j5us7gky] { white-space: nowrap; color: var(--sedna-text-tertiary); }

/* Strip errori validazione XML (ex pannello FE) */
.doc-fe-errori-strip[b-a0j5us7gky] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-top: 8px;
    padding: 8px 12px;
    background: var(--sedna-error-50, #ffebee);
    border: 1px solid var(--sedna-error-600, #e53935);
    border-radius: var(--sedna-radius-md, 0.5rem);
    color: var(--sedna-error-700, #c62828);
    font-size: 0.75rem;
}

    .doc-fe-errori-strip ul[b-a0j5us7gky] { margin: 0; padding-left: 16px; flex: 1; }

.doc-fe-errori-strip__x[b-a0j5us7gky] {
    border: none;
    background: transparent;
    color: var(--sedna-error-700, #c62828);
    cursor: pointer;
    padding: 2px;
    border-radius: 4px;
    align-self: flex-start;
}

    .doc-fe-errori-strip__x:hover[b-a0j5us7gky] { background: rgba(198, 40, 40, 0.1); }

/* Striscia AVVISI della generazione XML: la fattura è valida e parte: qui non si vieta
   niente, si fa vedere. Stessa forma della striscia rossa — così si legge allo stesso
   modo — e colore diverso, che è l'unica cosa che distingue «non parte» da «parte, ma
   guarda».
   ⚠️ Il TESTO è `--sedna-text`, non un giallo scuro: un `--sedna-warning-800` non esiste
   (la scala si ferma a 700, che è ancora arancione) e un `var()` inventato non fallisce —
   prende il ripiego in silenzio, e nessuno se ne accorge finché non lo si misura. Il testo
   normale sta bene sul giallo chiaro di giorno e sul velo translucido di notte; il colore
   dell'avviso lo portano bordo e fondo. */
.doc-fe-avvisi-strip[b-a0j5us7gky] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-top: 8px;
    padding: 8px 12px;
    background: var(--sedna-warning-50, #fff8e1);
    border: 1px solid var(--sedna-warning-600, #ffb300);
    border-radius: var(--sedna-radius-md, 0.5rem);
    color: var(--sedna-text);
    font-size: 0.75rem;
}

    .doc-fe-avvisi-strip ul[b-a0j5us7gky] { margin: 0; padding-left: 16px; flex: 1; }

.doc-fe-avvisi-strip__x[b-a0j5us7gky] {
    border: none;
    background: transparent;
    color: var(--sedna-text);
    cursor: pointer;
    padding: 2px;
    border-radius: 4px;
    align-self: flex-start;
}

    .doc-fe-avvisi-strip__x:hover[b-a0j5us7gky] { background: color-mix(in srgb, var(--sedna-warning-600) 22%, transparent); }

/* Pannelli post: Filiera (la FE è nell'header). */
.doc-post-panels[b-a0j5us7gky] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
    gap: 12px;
    margin-top: 12px;
}

.doc-post-card[b-a0j5us7gky] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    padding: 12px 14px;
}

.doc-post-card h3[b-a0j5us7gky] {
    margin: 0 0 10px;
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
    display: flex;
    align-items: center;
    gap: 7px;
}

.doc-post-card h3 i[b-a0j5us7gky] { color: var(--sedna-text-tertiary); }

/* pipeline FE.
   ⚠️ Niente flex-wrap né margin-bottom qui: .doc-fe-pipe--head (riga ~719) li
   rimette a nowrap/0, ma è dichiarata PRIMA di questa e a pari specificità vinceva
   questa — quindi in testata la pipeline andava a capo su tre righe e la testata
   cresceva a 80px, contro il "UNA riga sola" del collaudo 23/07. La pipeline ha un
   solo uso ed è sempre in testata: i valori giusti sono i default. */
.doc-fe-pipe[b-a0j5us7gky] { display: flex; align-items: center; }

.doc-fe-step[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--sedna-text-tertiary);
}

.doc-fe-step .dot[b-a0j5us7gky] {
    width: 22px; height: 22px;
    border-radius: 50%;
    display: grid; place-items: center;
    background: #eeeff1;
    color: var(--sedna-text-tertiary);
    font-size: 0.7rem;
    border: 2px solid transparent;
}

.doc-fe-step.done[b-a0j5us7gky] { color: var(--sedna-success-700, #2e7d32); }
.doc-fe-step.done .dot[b-a0j5us7gky] { background: var(--sedna-success-50, #e8f5e9); color: var(--sedna-success-700, #2e7d32); }
.doc-fe-step.current[b-a0j5us7gky] { color: var(--sedna-primary); }
.doc-fe-step.current .dot[b-a0j5us7gky] { background: var(--sedna-surface); border-color: var(--sedna-primary); color: var(--sedna-primary); }
.doc-fe-step.error[b-a0j5us7gky] { color: var(--sedna-error-700, #c62828); }
.doc-fe-step.error .dot[b-a0j5us7gky] { background: var(--sedna-error-50, #ffebee); color: var(--sedna-error-700, #c62828); }

.doc-fe-link[b-a0j5us7gky] { width: 26px; height: 2px; background: var(--sedna-border); margin: 0 4px; flex: none; }
.doc-fe-link.done[b-a0j5us7gky] { background: var(--sedna-success-600); }

.doc-fe-meta[b-a0j5us7gky] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
    margin-bottom: 8px;
}

.doc-fe-meta .mono[b-a0j5us7gky] { font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace); }

.doc-fe-actions[b-a0j5us7gky] { display: flex; gap: 8px; }

.doc-fe-panel__errori[b-a0j5us7gky] {
    margin-top: 8px;
    padding: 8px 12px;
    background: var(--sedna-warning-50);
    border: 1px solid var(--sedna-warning-600);
    border-radius: 6px;
    font-size: 0.8125rem;
    color: var(--sedna-warning-700);
}

.doc-fe-panel__errori ul[b-a0j5us7gky] { margin: 4px 0 0; padding-left: 18px; }

/* riferimenti documenti collegati */
.doc-rif-panel[b-a0j5us7gky] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);
    padding: 8px 12px;
}

.doc-rif-panel__title[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.8125rem;
    font-weight: 700;
    margin-bottom: 6px;
}

.doc-rif-panel__title i[b-a0j5us7gky] { color: var(--sedna-primary); }

.doc-rif-table[b-a0j5us7gky] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.doc-rif-table th[b-a0j5us7gky] {
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    text-align: left;
    padding: 4px 8px;
    border-bottom: 1px solid var(--sedna-border);
}

.doc-rif-table td[b-a0j5us7gky] {
    padding: 5px 8px;
    border-bottom: 1px solid var(--sedna-border-light);
}

.doc-rif-table .num[b-a0j5us7gky] { text-align: right; font-variant-numeric: tabular-nums; }

.doc-rif-row--link[b-a0j5us7gky] { cursor: pointer; }
.doc-rif-row--link:hover td[b-a0j5us7gky] { background: var(--sedna-surface-hover); }

/* dialog violazioni */
.doc-violazioni ul[b-a0j5us7gky] { padding-left: 18px; }
.doc-violazioni__block[b-a0j5us7gky] {
    color: var(--sedna-error-700);
    font-weight: 600;
}

/* ── Schermi 14" (≤1700px): l'header deve restare su UNA riga.
   Si comprime il non essenziale: via la descrizione estesa del tipo (il
   codice resta nel combo), pipeline FE a sole icone (etichette nei
   tooltip), combo e bottoni più stretti, gap ridotti. Verificato a
   1512px: tutte le azioni sulla prima riga. ── */
@media (max-width: 1700px) {
    .documento-page[b-a0j5us7gky]  .sedna-page__head { gap: 6px; padding-left: 10px; padding-right: 10px; }
    .doc-headline[b-a0j5us7gky] { gap: 6px; }

    /* NIENTE tetto in pixel sulla descrizione nemmeno qui (era 180px, ed e' lo schermo
       su cui Antonio l'ha vista troncata: il MacBook e' 1512px, dentro questa media
       query). Lo spazio ai pulsanti non serve toglierlo: la pulsantiera e' `flex: none`,
       si prende il suo e la descrizione vive di quello che resta — che a 14" e' poco e
       i puntini tornano da soli, ma solo quando servono davvero. */

    /* niente larghezza qui: la regola base e' gia' dimensionata sul contenuto
       (5 caratteri) ed e' piu' stretta degli 88px che c'erano prima. */

    /* pipeline FE compatta: nasconde i testi XML/SdI/Consegnata, restano i punti */
    .doc-fe-pipe--head .doc-fe-step[b-a0j5us7gky] { font-size: 0; letter-spacing: 0; gap: 0; }
    .doc-fe-pipe--head .doc-fe-step .dot i[b-a0j5us7gky] { font-size: 0.7rem; }
    .doc-fe-pipe--head .doc-fe-link[b-a0j5us7gky] { width: 10px; min-width: 10px; }
    .doc-head__fe[b-a0j5us7gky] { gap: 6px; }

    /* NIENTE regole su .doc-head__actions qui: e' la root del componente figlio
       SednaActionBar, non porta l'attributo di scope di questa pagina e le regole
       resterebbero inerti (ci sono cascate: la compressione dei pulsanti dichiarata
       qui non ha mai avuto effetto). Stanno in app.css come globali. */
}

/* La spiegazione in italiano sopra gli errori del validatore FatturaPA: si legge come una
   frase, non come una voce d'elenco — per questo sta FUORI dalla lista e ha un fondo suo. */
.doc-fe-errori-strip__nota[b-a0j5us7gky] {
    flex: 1 1 100%;
    margin: 4px 0 2px;
    padding: 6px 8px;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    background: color-mix(in srgb, var(--sedna-surface) 70%, transparent);
    font-weight: 400;
    line-height: 1.45;
}

/* Il riquadro del TD è un pulsante: si vede che si clicca (puntatore e un filo di
   reazione), ma resta una targhetta — non deve diventare un bottone in mezzo ai chip. */
.doc-fe-pill--btn[b-a0j5us7gky] {
    cursor: pointer;
    font: inherit;
    transition: background-color .12s ease, border-color .12s ease;
}
.doc-fe-pill--btn:hover[b-a0j5us7gky] {
    background: color-mix(in srgb, var(--sedna-primary) 14%, transparent);
    border-color: color-mix(in srgb, var(--sedna-primary) 45%, transparent);
}
.doc-fe-pill--auto.doc-fe-pill--btn:hover[b-a0j5us7gky] {
    background: var(--sedna-surface-hover);
    border-color: var(--sedna-text-tertiary);
}

/* Lo sbilancio dei castelletti è un errore, non un avviso: stessa forma della striscia
   FE ma in tinta di errore, perché ha fermato un salvataggio. */
.doc-sbilancio-strip[b-a0j5us7gky] {
    border-color: color-mix(in srgb, var(--sedna-error, #d32f2f) 45%, transparent);
    background: color-mix(in srgb, var(--sedna-error, #d32f2f) 8%, var(--sedna-surface));
}
.doc-sbilancio-strip > i[b-a0j5us7gky] { color: var(--sedna-error, #d32f2f); }

/* ── Scelta del tipo documento FE: un elenco che si legge, non una tendina ──
   I TD sono venti con descrizioni lunghe: in una tendina si scelgono a memoria dal codice,
   in elenco si leggono. Il codice a sinistra in mono, la descrizione accanto. */
.doc-td-scelta[b-a0j5us7gky] { display: flex; flex-direction: column; gap: 10px; }

.doc-td-scelta__nota[b-a0j5us7gky] {
    display: flex; align-items: flex-start; gap: 8px;
    padding: 8px 10px;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border-light);
    font-size: 0.75rem; line-height: 1.45;
    color: var(--sedna-text-secondary);
}
.doc-td-scelta__nota i[b-a0j5us7gky] { color: var(--sedna-text-tertiary); margin-top: 2px; }

.doc-td-lista[b-a0j5us7gky] { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }

.doc-td-voce[b-a0j5us7gky] {
    display: flex; align-items: center; gap: 10px; width: 100%;
    padding: 6px 10px;
    border: 1px solid transparent;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    background: transparent; text-align: left; cursor: pointer;
    font-size: 0.8125rem; color: var(--sedna-text);
}
.doc-td-voce:hover[b-a0j5us7gky] { background: var(--sedna-surface-hover); }

.doc-td-voce.is-sel[b-a0j5us7gky] {
    background: color-mix(in srgb, var(--sedna-primary) 12%, var(--sedna-surface));
    border-color: color-mix(in srgb, var(--sedna-primary) 40%, transparent);
}

.doc-td-voce__cod[b-a0j5us7gky] {
    font-family: var(--sedna-font-mono, ui-monospace, monospace);
    font-weight: 700; flex: none; min-width: 3.5rem;
}
.doc-td-voce__desc[b-a0j5us7gky] { flex: 1 1 auto; min-width: 0; color: var(--sedna-text-secondary); }
.doc-td-voce__ok[b-a0j5us7gky] { color: var(--sedna-primary); flex: none; }

.doc-td-voce__tag[b-a0j5us7gky] {
    flex: none; font-size: 0.5625rem; font-weight: 700; letter-spacing: 0.04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
    padding: 1px 6px; border-radius: 999px; background: var(--sedna-surface-variant);
}

.doc-td-scelta__pie[b-a0j5us7gky] { border-top: 1px solid var(--sedna-border-light); padding-top: 8px; }
.doc-td-scelta__cfg[b-a0j5us7gky] {
    border: none; background: transparent; padding: 2px 0;
    color: var(--sedna-primary); font-size: 0.75rem; cursor: pointer;
}
.doc-td-scelta__cfg:hover[b-a0j5us7gky] { text-decoration: underline; }

/* Il riquadro TD in sola lettura: resta una targhetta leggibile, ma non finge di essere
   cliccabile — niente puntatore a mano, niente reazione al passaggio del mouse. */
.doc-fe-pill--btn:disabled[b-a0j5us7gky] {
    cursor: default;
    opacity: 1;
}
.doc-fe-pill--btn:disabled:hover[b-a0j5us7gky] {
    background: inherit;
    border-color: inherit;
}


/* ═══ LA TENDINA FATTURA ELETTRONICA ════════════════════════════════
   Il pulsante «Fatt.Ele.» del vecchio gestionale, che qui porta anche lo STATO: la parola
   e la tinta dicono quello che prima si capiva da quale dei due pulsanti compariva.
   Le tinte sono le stesse tre di ForeGroundFE (neutro / arancione / verde), piu' il rosso
   dello scarto, che nel vecchio non aveva un colore suo. */
.doc-fe-menu[b-a0j5us7gky] {
    position: relative;
    display: inline-flex;
    align-items: center;
}

/* Alto 24px come OGNI altro pulsante della testata: e' la misura fissata il 30/07 per la
   riga, e un pulsante alto quattro pixel in piu' si vede solo nella barra vera. */
.doc-fe-menu__btn[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 24px;
    padding: 0 8px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    font-size: 0.75rem;
    line-height: 1;
    white-space: nowrap;
    cursor: pointer;
}

.doc-fe-menu__btn:hover:not(:disabled)[b-a0j5us7gky] { background: var(--sedna-surface-hover); }
.doc-fe-menu__btn--aperto[b-a0j5us7gky] { background: var(--sedna-surface-hover); }
.doc-fe-menu__btn:disabled[b-a0j5us7gky] { opacity: 0.55; cursor: default; }
.doc-fe-menu__btn i[b-a0j5us7gky] { line-height: 0; display: block; font-size: 0.78rem; }
.doc-fe-menu__caret[b-a0j5us7gky] { font-size: 0.55rem !important; opacity: 0.55; }

.doc-fe-menu__stato[b-a0j5us7gky] {
    font-size: 0.625rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 1px 6px;
    border-radius: 999px;
    background: var(--sedna-surface-variant, #f7f8fa);
    color: var(--sedna-text-secondary);
}

/* Generata e ferma: la cosa da fare e' trasmetterla, e si vede. */
.doc-fe-menu__btn--pronta[b-a0j5us7gky] { border-color: var(--sedna-warning-600, #ffb300); }
.doc-fe-menu__btn--pronta .doc-fe-menu__stato[b-a0j5us7gky] {
    background: var(--sedna-warning-50, #fff8e1);
    color: var(--sedna-warning-700, #ff8f00);
}

/* Solo in prova: e' SUCCESSO qualcosa (una trasmissione c'e' stata) ma non e' l'invio
   vero — il blu del "in mezzo", ne' l'arancione del da-fare ne' il verde del fatto.
   Senza, premere «trasmetti» in prova non cambiava niente a video (Bruno, 24/08). */
.doc-fe-menu__btn--provata[b-a0j5us7gky] { border-color: var(--sedna-info-600, #1e88e5); }
.doc-fe-menu__btn--provata .doc-fe-menu__stato[b-a0j5us7gky] {
    background: var(--sedna-info-50, #e3f2fd);
    color: var(--sedna-info-700, #1565c0);
}

/* In invio: accodato, esito non ancora tornato. Stesso blu della prova ma col
   puntino che pulsa: "sta succedendo" e' diverso da "da fare" e da "fatto". */
.doc-fe-menu__btn--invio[b-a0j5us7gky] { border-color: var(--sedna-info-600, #1e88e5); }
.doc-fe-menu__btn--invio .doc-fe-menu__stato[b-a0j5us7gky] {
    background: var(--sedna-info-50, #e3f2fd);
    color: var(--sedna-info-700, #1565c0);
}
.doc-fe-menu__btn--invio .doc-fe-menu__stato[b-a0j5us7gky]::before {
    content: "";
    display: inline-block;
    width: 5px; height: 5px;
    margin-right: 4px;
    border-radius: 50%;
    background: currentColor;
    animation: doc-fe-invio-pulse-b-a0j5us7gky 1.1s ease-in-out infinite;
    vertical-align: 1px;
}
@keyframes doc-fe-invio-pulse-b-a0j5us7gky {
    0%, 100% { opacity: 0.25; }
    50% { opacity: 1; }
}

/* Partita (inviata o consegnata): non c'e' piu' niente da fare, e va detto in verde. */
.doc-fe-menu__btn--partita .doc-fe-menu__stato[b-a0j5us7gky] {
    background: var(--sedna-success-50, #e8f5e9);
    color: var(--sedna-success-700, #2e7d32);
}

/* Scartata: e' l'unico stato che chiede di intervenire SUBITO. */
.doc-fe-menu__btn--scarto[b-a0j5us7gky] { border-color: var(--sedna-error-600, #e53935); }
.doc-fe-menu__btn--scarto .doc-fe-menu__stato[b-a0j5us7gky] {
    background: var(--sedna-error-50, #ffebee);
    color: var(--sedna-error-700, #c62828);
}

/* La tendina. position:fixed gliela mette il JS (sednaReporting.ancoraMenu): qui resta
   l'aspetto, piu' un absolute di ripiego per il caso in cui il JS non giri. */
.doc-fe-menu__voci[b-a0j5us7gky] {
    position: absolute;
    top: calc(100% + 4px);
    right: 0;
    z-index: 1080;
    min-width: 15rem;
    padding: 0.25rem;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    box-shadow: var(--sedna-shadow-lg);
}

.doc-fe-menu__voce[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
    padding: 0.4rem 0.6rem;
    border: 0;
    border-radius: var(--sedna-radius-sm);
    background: transparent;
    color: inherit;
    font-size: 0.8125rem;
    text-align: left;
    cursor: pointer;
}

.doc-fe-menu__voce:hover:not(:disabled)[b-a0j5us7gky] { background: var(--sedna-surface-hover); }

/* Spenta ma LEGGIBILE: il motivo sta nel title, e una voce troppo sbiadita non si legge
   abbastanza da capire che c'e' un motivo da cercare. */
.doc-fe-menu__voce:disabled[b-a0j5us7gky] { opacity: 0.5; cursor: default; }

.doc-fe-menu__voce i[b-a0j5us7gky] {
    width: 1rem;
    text-align: center;
    line-height: 0;
    display: block;
    flex: none;
}

.doc-fe-menu__voce--rossa:not(:disabled)[b-a0j5us7gky] { color: var(--sedna-error-700, #c62828); }
.doc-fe-menu__voce--rossa:hover:not(:disabled)[b-a0j5us7gky] { background: var(--sedna-error-50, #ffebee); }

.doc-fe-menu__sep[b-a0j5us7gky] {
    height: 1px;
    margin: 0.25rem 0.35rem;
    background: var(--sedna-border-light, #eef0f3);
}

/* Il documento detto per esteso dentro le conferme FE. A due colonne e allineato a
   sinistra: il corpo di SednaConfirmDialog e' centrato, e un elenco di dati centrato non
   si scorre con l'occhio. */
.doc-fe-conferma[b-a0j5us7gky] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 4px 12px;
    margin: 0;
    text-align: left;
    font-size: 0.8125rem;
}

.doc-fe-conferma dt[b-a0j5us7gky] { color: var(--sedna-text-tertiary); font-weight: 500; }
.doc-fe-conferma dd[b-a0j5us7gky] { margin: 0; color: var(--sedna-text); overflow-wrap: anywhere; }

.doc-fe-conferma .mono[b-a0j5us7gky] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
}

/* L'ambiente di trasmissione: grosso e in maiuscolo, perche' e' l'unica riga del dialogo
   che cambia il significato di quello che sta per succedere.

   Tre tinte e non due. La PROVA e' l'unico caso tranquillo e resta neutra; produzione e
   «non si sa» pesano entrambe, perche' non sapere dove finisce una fattura non e' una
   condizione piu' innocua di saperlo. Se l'incerto fosse grigio, chi non ha mai dichiarato
   l'ambiente vedrebbe lo stesso dialogo di chi ha scelto la prova. */
.doc-fe-conferma__ambiente[b-a0j5us7gky] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.doc-fe-conferma__ambiente i[b-a0j5us7gky] { font-size: 0.85em; line-height: 0; }

.doc-fe-conferma__ambiente--prova[b-a0j5us7gky] { color: var(--sedna-text-secondary); }

.doc-fe-conferma__ambiente--produzione[b-a0j5us7gky] { color: var(--sedna-error-700, #c62828); }

.doc-fe-conferma__ambiente--incerto[b-a0j5us7gky] { color: var(--sedna-error-700, #c62828); }

/* La smentita accanto all'etichetta dichiarata: piu' piccola e non in maiuscolo, perche' e'
   la spiegazione della parola che le sta accanto, non una seconda parola in gara con lei. */
.doc-fe-conferma__smentita[b-a0j5us7gky] {
    font-weight: 500;
    font-size: 0.75rem;
    text-transform: none;
    letter-spacing: 0;
    color: var(--sedna-error-700, #c62828);
}

/* L'XML come esce: nessuna riformattazione, solo un contenitore che scorre. */
.doc-fe-xml[b-a0j5us7gky] {
    margin: 0;
    max-height: 68vh;
    overflow: auto;
    padding: 12px;
    background: var(--sedna-surface-variant, #f7f8fa);
    border: 1px solid var(--sedna-border-light, #eef0f3);
    border-radius: var(--sedna-radius-md);
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.75rem;
    line-height: 1.5;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

/* ── Intestazione di sezione dentro la tendina Fatt.Ele. ──
   Serve al CONTO TERZI: sono comandi di una SECONDA fattura, e senza un titolo che li
   separi si leggerebbero come varianti di quelli di sopra. Lo stato accanto al titolo e'
   il suo, non quello della fattura normale. */
.doc-fe-menu__sezione[b-a0j5us7gky] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    padding: 6px 12px 2px;
}

.doc-fe-menu__sezione-ttl[b-a0j5us7gky] {
    font-size: 0.625rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--sedna-text-tertiary);
}

.doc-fe-menu__sezione-stato[b-a0j5us7gky] {
    font-size: 0.6875rem;
    color: var(--sedna-text-secondary);
}

/* ── Riga arrivata da una fattura ricevuta SENZA un articolo nostro ──
   ⚠️ Deve VEDERSI, ed e' il caso normale non l'eccezione: con un fornitore terzo il
   codice articolo non combacia quasi mai. Se non si distingue, il documento sembra
   completo e si salva con righe scollegate dal magazzino — cosa che si scopre in
   magazzino, settimane dopo.

   Un filo giallo a sinistra e un fondo appena tiepido: e' una cosa DA FARE, non un
   errore. Il rosso direbbe «hai sbagliato», e non ha sbagliato nessuno: e' il fornitore
   che usa i suoi codici. */
.documento-page[b-a0j5us7gky]  .doc-riga--da-agganciare > td {
    background: var(--sedna-warning-50, #fffbeb);
}

.documento-page[b-a0j5us7gky]  .doc-riga--da-agganciare > td:first-child {
    box-shadow: inset 3px 0 0 var(--sedna-warning-500, #f59e0b);
}

/* ═══ DA DOVE VIENE IL DOCUMENTO ═══
   Una riga sottile, non un avviso: non c'e' niente da correggere, c'e' una provenienza da
   sapere. Colori neutri apposta — l'arancione e il rosso qui sopra dicono «guarda che c'e' un
   problema», e questo problema non e'. */
.doc-provenienza[b-a0j5us7gky] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
    padding: 3px var(--sedna-space-3);
    margin-bottom: var(--sedna-space-2);
    border-left: 3px solid var(--sedna-border);
    background: var(--sedna-surface-variant, #f6f7f9);
    border-radius: var(--sedna-radius-sm);
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-text-secondary);
}

.doc-provenienza a[b-a0j5us7gky] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    color: var(--sedna-primary);
    text-decoration: none;
    white-space: nowrap;
}

.doc-provenienza a:hover[b-a0j5us7gky] { text-decoration: underline; }

/* Il dialogo del CMR: due campi e una riga che dice cosa succede al numero. */
.doc-cmr[b-a0j5us7gky] { display: grid; gap: 12px; }
.doc-cmr__f[b-a0j5us7gky] { display: grid; gap: 4px; }
.doc-cmr__f label[b-a0j5us7gky] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-text-secondary);
}
.doc-cmr__nota[b-a0j5us7gky] { font-size: 0.75rem; color: var(--sedna-text-secondary); }
/* /Pages/Documenti/EffettiDifferitiPage.razor.rz.scp.css */
/* ═══ Coda effetti differiti ═══ */

.ed-cards[b-zkp8xq5zil] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin: 0.75rem 0;
}

.ed-card[b-zkp8xq5zil] {
    flex: 1 1 160px;
    min-width: 150px;
    padding: 0.75rem 1rem;
    border: 1px solid var(--sedna-border, #e5e7eb);
    border-radius: var(--sedna-radius-lg, 0.75rem);
    background: var(--sedna-surface, #fff);
}

.ed-card--danger[b-zkp8xq5zil] {
    border-color: var(--sedna-error-300, #fca5a5);
    background: var(--sedna-error-50, #fef2f2);
}

.ed-card--ok[b-zkp8xq5zil] {
    border-color: var(--sedna-success-200, #bbf7d0);
}

.ed-card__num[b-zkp8xq5zil] {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text, #111827);
}

.ed-card--danger .ed-card__num[b-zkp8xq5zil] {
    color: var(--sedna-error-700, #b91c1c);
}

.ed-card__lbl[b-zkp8xq5zil] {
    margin-top: 0.35rem;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--sedna-text-secondary, #4b5563);
}

.ed-card__hint[b-zkp8xq5zil] {
    font-size: 0.72rem;
    color: var(--sedna-text-tertiary, #9ca3af);
    margin-top: 0.15rem;
}

.ed-alert[b-zkp8xq5zil] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.9rem;
    border-radius: var(--sedna-radius-base, 0.375rem);
    background: var(--sedna-error-50, #fef2f2);
    color: var(--sedna-error-800, #991b1b);
    border: 1px solid var(--sedna-error-200, #fecaca);
    font-size: 0.8125rem;
    margin-bottom: 0.75rem;
}

.ed-alert--warn[b-zkp8xq5zil] {
    background: var(--sedna-warning-50, #fffbeb);
    color: var(--sedna-warning-800, #92400e);
    border-color: var(--sedna-warning-200, #fde68a);
}

.ed-filtro[b-zkp8xq5zil] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0.5rem 0 0.75rem;
}

.ed-filtro__lbl[b-zkp8xq5zil] {
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary, #4b5563);
}

.ed-chip[b-zkp8xq5zil] {
    border: 1px solid var(--sedna-border, #e5e7eb);
    background: var(--sedna-surface, #fff);
    border-radius: 999px;
    padding: 0.15rem 0.7rem;
    font-size: 0.78rem;
    cursor: pointer;
    color: var(--sedna-text-secondary, #4b5563);
}

.ed-chip:hover[b-zkp8xq5zil] {
    background: var(--sedna-surface-hover, #f1f5f9);
}

.ed-chip--on[b-zkp8xq5zil] {
    background: var(--sedna-primary, #2563eb);
    border-color: var(--sedna-primary, #2563eb);
    color: #fff;
}

.ed-tabella-scroll[b-zkp8xq5zil] {
    overflow-x: auto;
    border: 1px solid var(--sedna-border-light, #eceff3);
    border-radius: var(--sedna-radius-base, 0.375rem);
}

.ed-tabella[b-zkp8xq5zil] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.ed-tabella thead th[b-zkp8xq5zil] {
    text-align: left;
    font-weight: 600;
    color: var(--sedna-text-secondary, #4b5563);
    background: var(--sedna-surface-variant, #f8fafc);
    border-bottom: 1px solid var(--sedna-border, #e5e7eb);
    padding: 0.45rem 0.6rem;
    white-space: nowrap;
}

.ed-th--num[b-zkp8xq5zil] { text-align: right; }

.ed-tabella tbody td[b-zkp8xq5zil] {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--sedna-border-light);
    vertical-align: middle;
}

.ed-td--num[b-zkp8xq5zil] { text-align: right; font-variant-numeric: tabular-nums; }
.ed-td--azioni[b-zkp8xq5zil] { text-align: right; white-space: nowrap; }

.ed-mono[b-zkp8xq5zil] {
    font-family: var(--sedna-font-mono, ui-monospace, monospace);
    font-weight: 600;
}

.ed-doc-link[b-zkp8xq5zil] {
    border: none;
    background: transparent;
    color: var(--sedna-primary, #2563eb);
    cursor: pointer;
    padding: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.8125rem;
}

.ed-doc-link:hover[b-zkp8xq5zil] { text-decoration: underline; }

.ed-errore[b-zkp8xq5zil] {
    max-width: 380px;
    color: var(--sedna-error-700, #b91c1c);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ed-muted[b-zkp8xq5zil] { color: var(--sedna-text-tertiary, #9ca3af); }

.ed-stato[b-zkp8xq5zil] {
    display: inline-block;
    padding: 0.05rem 0.5rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 600;
    white-space: nowrap;
}

.ed-stato--errore[b-zkp8xq5zil] {
    background: var(--sedna-error-100, #fee2e2);
    color: var(--sedna-error-700, #b91c1c);
}

.ed-stato--attesa[b-zkp8xq5zil] {
    background: var(--sedna-warning-100, #fef3c7);
    color: var(--sedna-warning-800, #92400e);
}

.ed-stato--ok[b-zkp8xq5zil] {
    background: var(--sedna-success-100, #dcfce7);
    color: var(--sedna-success-700, #15803d);
}

.ed-vuoto[b-zkp8xq5zil] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    padding: 2.5rem 1rem;
    color: var(--sedna-text-tertiary, #9ca3af);
}

.ed-vuoto i[b-zkp8xq5zil] { font-size: 1.75rem; }
/* /Pages/Documenti/EvasionePage.razor.rz.scp.css */
/* ═══ Evasione / trasformazione documenti ═══ */

/* Layout pagina dal guscio globale .sedna-page (sedna.page.css). Qui solo le
   integrazioni: la griglia (step 1) riempie il body e scrolla internamente;
   lo step 2 (form + righe) scrolla nel proprio body. */
.evasione-page[b-ad41mdbjo5]  .sedna-dx-grid {
    height: 100%;
    max-height: none;
}

.evasione-page[b-ad41mdbjo5]  .dxbl-grid-data-container {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* Step 2: piccolo respiro sotto e a lato dello scroll interno. */
.ev-step2[b-ad41mdbjo5] {
    padding-bottom: 0.5rem;
}

/* ========================================
   TOOLBAR — searchbox custom (pattern lista Clienti)
   Search + filtri tipo/periodo nella stessa riga della toolbar della griglia.
   ======================================== */
.toolbar[b-ad41mdbjo5] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-ad41mdbjo5] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-ad41mdbjo5] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-ad41mdbjo5] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-ad41mdbjo5]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-ad41mdbjo5] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 900px) {
    .toolbar .search[b-ad41mdbjo5] {
        width: 100%;
    }
}

.ev-filtri[b-ad41mdbjo5] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ev-filtri__lbl[b-ad41mdbjo5] { font-size: 0.75rem; color: var(--sedna-text-secondary); }
.ev-filtri[b-ad41mdbjo5]  .ev-filtri__tipo { width: 220px; }
.ev-filtri[b-ad41mdbjo5]  .ev-filtri__date { width: 130px; }

.ev-selezione-hint[b-ad41mdbjo5] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
    padding: 8px 14px;
    background: var(--sedna-primary-subtle);
    border: 1px solid var(--sedna-primary);
    border-radius: var(--sedna-radius-md, 0.375rem);
    font-size: 0.8125rem;
    color: var(--sedna-text);
}

.ev-selezione-hint i[b-ad41mdbjo5] { color: var(--sedna-primary); }

.ev-selezione-hint__warn[b-ad41mdbjo5] {
    margin-left: auto;
    color: var(--sedna-warning-700);
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.ev-dest-box[b-ad41mdbjo5], .ev-righe-box[b-ad41mdbjo5] {
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.375rem);
    padding: 10px 14px;
}

.ev-dest-box__title[b-ad41mdbjo5] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.8125rem;
    font-weight: 700;
    margin-bottom: 8px;
}

.ev-dest-box__title i[b-ad41mdbjo5] { color: var(--sedna-primary); }

.ev-dest-box__hint[b-ad41mdbjo5] {
    font-weight: 400;
    font-size: 0.75rem;
    color: var(--sedna-text-tertiary);
    margin-left: 8px;
}

.ev-righe-loading[b-ad41mdbjo5] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 24px;
    justify-content: center;
    color: var(--sedna-text-secondary);
    font-size: 0.875rem;
}

.ev-righe-table[b-ad41mdbjo5] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.ev-righe-table th[b-ad41mdbjo5] {
    font-size: 0.65625rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    text-align: left;
    padding: 5px 8px;
    border-bottom: 1px solid var(--sedna-border);
}

.ev-righe-table td[b-ad41mdbjo5] {
    padding: 4px 8px;
    border-bottom: 1px solid var(--sedna-border-light);
    vertical-align: middle;
}

.ev-righe-table .num[b-ad41mdbjo5] { text-align: right; font-variant-numeric: tabular-nums; }
.ev-righe-table .mono[b-ad41mdbjo5] { font-variant-numeric: tabular-nums; white-space: nowrap; }

.ev-riga--esclusa td[b-ad41mdbjo5] { opacity: 0.45; }

.ev-gruppo[b-ad41mdbjo5] {
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--sedna-text-secondary);
}

.ev-gruppi-banner[b-ad41mdbjo5] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    background: var(--sedna-primary-subtle);
    border: 1px solid var(--sedna-primary);
    border-radius: var(--sedna-radius-md, 0.375rem);
    font-size: 0.8125rem;
}

.ev-gruppi-banner i[b-ad41mdbjo5] { color: var(--sedna-primary); font-size: 1rem; }

.ev-righe-table[b-ad41mdbjo5]  .ev-qta-input { width: 120px; }

/* Banner troncamento (F8): la lista ha un tetto di 500 righe, oltre si AVVISA
   invece di tagliare in silenzio. */
.ev-troncati[b-ad41mdbjo5] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.25rem 0;
    padding: 0.4rem 0.75rem;
    font-size: 0.75rem;
    color: var(--sedna-warning-800, #92400e);
    background: var(--sedna-warning-50, #fffbeb);
    border: 1px solid var(--sedna-warning-300, #fcd34d);
    border-radius: var(--sedna-radius-md, 0.5rem);
}
/* /Pages/Documenti/FatturaElettronica/FatturePassivePage.razor.rz.scp.css */
/* ═══ Fatture Passive — design FatturePassive.html ═══ */

/* No-scroll layout: header + tab fissi, scrolla solo il corpo della griglia.
   Altezza/overflow/padding orizzontale dal guscio globale .sedna-page
   (sedna.page.css). gap:0 perche' la spaziatura verticale qui e' gestita dai
   margin-bottom di header/tab (il gap del guscio raddoppierebbe lo spazio). */
.fpassive-page[b-3he0ketr7h] {
    /* ⚠️ min-height:0 sulla RADICE: senza, un figlio flex non può rimpicciolirsi sotto il
       suo contenuto e la catena delle altezze si rompe a metà — la griglia smette di
       ricevere l'altezza che le spetta e si accontenta delle righe che ha. È la stessa
       riga che regge il bilancio giornaliero. */
    min-height: 0;
    display: flex;
    flex-direction: column;
    /* Lo stesso respiro del ciclo attivo. Con gap:0 le schede di stato risultavano
       incollate all'intestazione sopra e alla griglia sotto (Antonio, 20/08): due pagine
       gemelle non possono avere due spaziature. */
    gap: 10px;
    padding-bottom: 1.5rem;
    width: 100%;
    min-width: 0;
    /* ⚠️ NIENTE TETTO DI LARGHEZZA (Antonio, 20/08: «sembrano avere un padding
       orizzontale maggiore degli altri»). C'era `max-width: 1600px; margin: 0 auto`:
       su uno schermo largo la pagina restava centrata a 1600 e il resto diventava
       margine — mentre l'elenco documenti e il registro IVA non hanno nessun tetto e
       arrivano al bordo. Non era piu' padding: era la pagina che si rifiutava di
       crescere. Il respiro laterale lo da' gia' il guscio .sedna-page, uguale per
       tutti. */
}
/* ───── Header compatto (stessa card del SednaPageHeader, contenuto del mock) ───── */
.fp-head[b-3he0ketr7h] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, 0.75rem);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
    padding: 8px var(--sedna-space-4, 1rem);
    margin-bottom: 10px;
}
.fp-back[b-3he0ketr7h] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 26px;
    padding: 0 11px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: 999px;
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    white-space: nowrap;
}
.fp-back:hover[b-3he0ketr7h] {
    border-color: var(--sedna-primary);
    color: var(--sedna-primary);
}
.fp-head__title[b-3he0ketr7h] {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
    min-width: 0;
}
.fp-head__title h1[b-3he0ketr7h] {
    margin: 0;
    font-size: 0.9375rem;
    font-weight: 650;
    letter-spacing: -0.01em;
    color: var(--sedna-text);
}
.fp-head__sub[b-3he0ketr7h] {
    font-size: 0.72rem;
    color: var(--sedna-text-secondary);
}
.fp-head__sp[b-3he0ketr7h] { flex: 1; }
.fp-head__actions[b-3he0ketr7h] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

/* ───── Griglia full-height (header, summary e pager sempre visibili) ───── */
/* ⚠️ LA GRIGLIA OCCUPA L'ALTEZZA ANCHE CON POCHE RIGHE (Antonio, 19/08). Prima si
   fermava all'altezza delle righe e sotto restava una fascia bianca: su una pagina
   inchiodata quella fascia non è spazio libero, è spazio sprecato — e con l'intestazione
   a mezz'aria l'elenco sembra finito quando invece è solo corto.
   `align-self: stretch` serve perché il wrapper è figlio di una colonna flex: senza,
   in alcune combinazioni si allinea al contenuto invece di stirarsi. */
[b-3he0ketr7h] .sedna-datagrid-wrapper {
    flex: 1 1 auto;
    align-self: stretch;
    min-height: 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
}
[b-3he0ketr7h] .dx-datagrid,
[b-3he0ketr7h] .dxbl-grid {
    height: 100%;
    width: 100%;
    max-width: 100%;
}
[b-3he0ketr7h] .dx-datagrid-headers,
[b-3he0ketr7h] .dx-datagrid-rowsview {
    max-height: none;
}
[b-3he0ketr7h] .dx-datagrid-rowsview {
    flex: 1 1 auto;
    overflow-y: auto;
}
/* ========================================
   TOOLBAR — searchbox custom (pattern lista Clienti)
   Search dentro la toolbar della griglia (stessa riga di Colonne/Esporta).
   ======================================== */
.toolbar[b-3he0ketr7h] {
    display: flex;
    align-items: center;
    gap: 12px;
}
.toolbar .search[b-3he0ketr7h] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}
    .toolbar .search i[b-3he0ketr7h] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }
    .toolbar .search input[b-3he0ketr7h] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }
        .toolbar .search input[b-3he0ketr7h]::placeholder {
            color: var(--sedna-text-tertiary);
        }
        .toolbar .search input:focus[b-3he0ketr7h] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }
@media (max-width: 760px) {
    .toolbar[b-3he0ketr7h] {
        flex-wrap: wrap;
    }
    .toolbar .search[b-3he0ketr7h] {
        width: 100%;
    }
}
/* ───── Tipografia celle (look del mock: fornitore in evidenza, numeri mono) ───── */
.fp-sogg[b-3he0ketr7h] { font-weight: 600; color: var(--sedna-text); }
.fp-mono[b-3he0ketr7h],
.fp-dt[b-3he0ketr7h],
.fp-num[b-3he0ketr7h],
.fp-docnum[b-3he0ketr7h] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
    font-size: 0.78rem;
}
.fp-mono[b-3he0ketr7h] { color: var(--sedna-text); }
.fp-docnum[b-3he0ketr7h] { font-weight: 650; color: var(--sedna-text); }
.fp-dt[b-3he0ketr7h] { color: var(--sedna-text-secondary); }
.fp-num[b-3he0ketr7h] {
    display: block;
    text-align: right;
    color: var(--sedna-text);
}
/* ───── Badge stato (mock .badge-stato; solo i due stati che il BE conosce) ───── */
.fp-badge[b-3he0ketr7h] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 10px;
    border-radius: 999px;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    white-space: nowrap;
}
.fp-badge i[b-3he0ketr7h] { font-size: 0.72rem; }
.fp-badge--visionare[b-3he0ketr7h] {
    background: var(--sedna-warning-50, #fff8e1);
    color: var(--sedna-warning-700, #b07400);
}
.fp-badge--letta[b-3he0ketr7h] {
    background: var(--sedna-success-50, #e8f5e9);
    color: var(--sedna-success-700, #2e7d32);
}
/* Righe non lette in grassetto (classe applicata al <tr> DX via CustomizeElement,
   fuori dallo scope: serve ::deep). */
[b-3he0ketr7h] .fp-unread td {
    font-weight: 600;
}
/* ═══ Drawer anteprima fattura ═══ */
.fp-drawer-ov[b-3he0ketr7h] {
    position: fixed;
    inset: 0;
    /* ⚠️ SOTTO LE FINESTRE MODALI, tutte (misurato il 29/08). Il drawer stava a 1090/1095 e
       il popup di DevExpress vive dentro un `dxbl-modal-root` a **1055**: l'anteprima della
       fattura chiesta DAL pannello compariva dietro al pannello stesso.
       ⚠️ Il primo tentativo era alzare il popup a 1200 e NON ha funzionato, per una ragione
       che vale la pena scrivere: quello z-index cadeva su un elemento `position: relative`
       dentro il modal-root, quindi valeva solo DENTRO quel contenitore — contro il drawer
       continuava a contare il 1055 del genitore.
       Abbassare il pannello è anche la regola giusta: un pannello di pagina sta sotto le
       finestre modali per definizione, e così vale per QUALUNQUE popup si apra da qui, non
       solo per questo. */
    z-index: 1040;
    background: rgba(16, 24, 40, 0.35);
    display: none;
}
.fp-drawer-ov.open[b-3he0ketr7h] { display: block; }
.fp-drawer[b-3he0ketr7h] {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 1045;
    width: min(480px, 92vw);
    background: var(--sedna-surface);
    border-left: 1px solid var(--sedna-border);
    box-shadow: -8px 0 30px rgba(16, 24, 40, 0.16);
    transform: translateX(100%);
    transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    outline: none;
}
.fp-drawer.open[b-3he0ketr7h] { transform: none; }
@media (prefers-reduced-motion: reduce) {
    .fp-drawer[b-3he0ketr7h] { transition: none; }
}
.fp-drawer__head[b-3he0ketr7h] {
    flex: none;
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 13px 16px;
    border-bottom: 1px solid var(--sedna-border);
}
.fp-drawer__head-text[b-3he0ketr7h] { min-width: 0; }
.fp-drawer__head h2[b-3he0ketr7h] {
    margin: 0;
    font-size: 0.9375rem;
    font-weight: 650;
    color: var(--sedna-text);
    overflow: hidden;
    text-overflow: ellipsis;
}
.fp-drawer__sub[b-3he0ketr7h] {
    font-size: 0.72rem;
    color: var(--sedna-text-secondary);
    margin-top: 2px;
}
.fp-drawer__x[b-3he0ketr7h] {
    margin-left: auto;
    flex: none;
    width: 28px;
    height: 28px;
    display: grid;
    place-items: center;
    border: none;
    background: transparent;
    border-radius: 5px;
    color: var(--sedna-text-secondary);
    cursor: pointer;
}
.fp-drawer__x:hover[b-3he0ketr7h] { background: var(--sedna-bg); color: var(--sedna-text); }
.fp-drawer__body[b-3he0ketr7h] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 14px 16px;
}
.fp-drawer__body h4[b-3he0ketr7h] {
    margin: 16px 0 8px;
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
    display: flex;
    gap: 7px;
    align-items: center;
}
.fp-drawer__body h4:first-child[b-3he0ketr7h] { margin-top: 0; }
.fp-drawer__body h4 i[b-3he0ketr7h] { color: var(--sedna-text-tertiary); }
.fp-kv[b-3he0ketr7h] {
    display: grid;
    grid-template-columns: 130px 1fr;
    gap: 5px 12px;
    font-size: 0.78rem;
    margin-bottom: 6px;
}
.fp-kv .k[b-3he0ketr7h] {
    color: var(--sedna-text-tertiary);
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-weight: 600;
    padding-top: 1px;
}
.fp-kv .v[b-3he0ketr7h] {
    color: var(--sedna-text);
    min-width: 0;
    overflow-wrap: anywhere;
}
.fp-kv .v.mono[b-3he0ketr7h] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
}
.fp-drawer__gap[b-3he0ketr7h] {
    display: flex;
    gap: 8px;
    align-items: flex-start;
    margin-top: 16px;
    padding: 9px 12px;
    background: var(--sedna-bg);
    border: 1px solid var(--sedna-border-light);
    border-radius: var(--sedna-radius-md, 0.5rem);
    font-size: 0.75rem;
    line-height: 1.45;
    color: var(--sedna-text-secondary);
}
.fp-drawer__gap i[b-3he0ketr7h] {
    color: var(--sedna-text-tertiary);
    margin-top: 1px;
    flex: none;
}
.fp-drawer__foot[b-3he0ketr7h] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 16px;
    border-top: 1px solid var(--sedna-border);
}
.fp-drawer__foot-sp[b-3he0ketr7h] { flex: 1; }
/* ── Barra delle azioni sulla selezione: compare solo con righe spuntate ── */
.fpassive-bulk[b-3he0ketr7h] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 8px;
    padding: 6px 10px;
    background: var(--sedna-primary-subtle, #eff6ff);
    border: 1px solid var(--sedna-primary-200, #bfdbfe);
    border-radius: var(--sedna-radius-md, 0.5rem);
}
.fpassive-bulk__cnt[b-3he0ketr7h] {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-primary-700, #1d4ed8);
}
.fpassive-bulk__sp[b-3he0ketr7h] { flex: 1; }
/* ── Contenitore dei filtri (SednaForm) ──────────────────────────────────────
   ⚠️ 30px riservati in coda alla RONDELLINA dell'ordine campi: e' posizionata in
   assoluto nell'angolo del form e senza spazio finisce sopra il pulsante «Filtra».
   ⚠️ E sta APPOGGIATA SUL BORDO SUPERIORE (top negativo), non in linea coi pulsanti:
   alla stessa altezza di «Filtra» sembrava un pulsante di impostazioni della pagina.
   ⚠️ I token di altezza scendono ai componenti figli: cosi' il pulsante «Filtra» e'
   ALTO COME I CAMPI accanto, invece di essere il solito bottone da 28px che sballa la
   riga. Vale per ogni barra filtri, non solo per questa. */
[b-3he0ketr7h] .fpassive-form {
    flex: 1 1 auto;
    min-width: 0;
    padding-right: 30px;
    --sef-gear-top: -11px;
    --sef-gear-right: 2px;
    --sedna-control-height-sm: var(--sedna-input-height, 22px);
    --sedna-control-height-md: var(--sedna-input-height, 22px);
}
/* ⚠️ NIENTE flex-wrap QUI: la classe .sedna-filterrow dice «una riga sola», e questa
   regola — che arriva dopo nel foglio — la contraddiceva. Il risultato era la barra del
   passivo su TRE righe: periodo, mittente, pulsante. Le due classi convivono
   sull'elemento, quindi vince l'ultima scritta: le regole gemelle vanno tolte, non
   riscritte uguali. */
.fpassive-toolbar[b-3he0ketr7h] {
    align-items: center;
    gap: 6px;
}
.fpassive-toolbar__lbl[b-3he0ketr7h] {
    font-size: 0.72rem;
    color: var(--sedna-text-tertiary);
    white-space: nowrap;
}
/* 140px: «gg/mm/aaaa» piu' l'icona del calendario. A 112 la data si taglia. */
[b-3he0ketr7h] .fpassive-toolbar__date {
    flex: 0 0 140px;
    width: 140px;
}
/* ⚠️ ::deep, come per le date: la classe finisce sulla radice di un COMPONENTE, che
   non porta lo scope di questa pagina. Senza, la regola non lo raggiunge e il campo
   mittente si allarga per tutta la riga — che e' esattamente quello che faceva. */
[b-3he0ketr7h] .fpassive-toolbar__testo {
    flex: 0 0 180px;
    width: 180px;
}

/* Il campo del numero e' STRETTO: ci sta un numero di fattura, non una denominazione.
   La larghezza recuperata va alle date, che altrimenti si leggono a meta'. */
[b-3he0ketr7h] .fpassive-toolbar__num {
    flex: 0 0 72px;
    width: 72px;
}

/* ── Gli avvisi della precompilazione ──
   Un elenco, non un paragrafo: sono cose separate, e ognuna richiede un gesto diverso
   (scegliere il fornitore, agganciare un articolo, scegliere il codice IVA). Un blocco
   di testo unico li fa leggere come un unico problema generico. */
.fp-avvisi[b-3he0ketr7h] { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 8px; }

.fp-avviso[b-3he0ketr7h] {
    display: flex;
    gap: 9px;
    font-size: 0.8125rem;
    line-height: 1.5;
}

.fp-avviso > i[b-3he0ketr7h] { color: var(--sedna-warning-600, #d97706); flex: none; margin-top: 2px; }

/* La nota sulle righe senza articolo: dice cosa fare perché non succeda più, ed è la
   parte che rende il lavoro permanente invece di ripetersi a ogni fattura. */
.fp-avviso__nota[b-3he0ketr7h] { color: var(--sedna-text-secondary); font-style: normal; }

/* ═══ La proposta del mappaggio, e come cambiarla ═══
   Due tendine in una cella: stanno una sopra l'altra perché in fila su 300px il codice della
   causale sparirebbe dentro il campo, ed è proprio quello che si deve leggere. */
.fp-scelte[b-3he0ketr7h] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    width: 100%;
}

.fp-scelta[b-3he0ketr7h] {
    display: flex;
    align-items: center;
    gap: 4px;
    min-width: 0;
}

.fp-scelta > i[b-3he0ketr7h] {
    flex: none;
    font-size: 0.72rem;
    color: var(--sedna-text-tertiary);
}

/* ⚠️ Un <select> nudo, non un lookup: sono due per riga per cinquanta righe, e un componente
   ricco qui si paga in scorrimento. Le liste sono corte (configurazioni e causali di una
   ditta), quindi la tendina nativa basta e resta veloce. */
.fp-scelta__sel[b-3he0ketr7h] {
    flex: 1 1 auto;
    min-width: 0;
    height: var(--sedna-input-height, 22px);
    font-size: var(--sedna-input-font-size, 12px);
    padding: 0 2px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text);
}

.fp-scelta__sel:focus-visible[b-3he0ketr7h] {
    outline: 2px solid var(--sedna-primary);
    outline-offset: 0;
}

/* Il trattino di «non lo sappiamo»: si vede che è una cella vuota per un motivo, non un dato
   scritto male. */
.fp-vuoto[b-3he0ketr7h] {
    color: var(--sedna-text-tertiary);
}


/* ⚠️ Sopra il pannello laterale (1095) ma sotto l'anteprima XML (1200): mentre legge la fattura
   non si deve poter premere niente, nemmeno nel pannello da cui si e' partiti. */
.fp-velo[b-3he0ketr7h] {
    position: fixed;
    inset: 0;
    z-index: 1150;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(16, 24, 40, .35);
    backdrop-filter: blur(1px);
}

/* Il badge «registrata» diventa cliccabile: porta al movimento o al documento. Resta un badge
   — non un pulsante — perché la cosa che comunica è ancora uno STATO; il clic è un di più che
   si scopre passandoci sopra. */
.fp-badge--link[b-3he0ketr7h] {
    border: 0;
    cursor: pointer;
    font: inherit;
}

.fp-badge--link:hover:not(:disabled)[b-3he0ketr7h] {
    text-decoration: underline;
}

.fp-badge--link:disabled[b-3he0ketr7h] {
    cursor: default;
}

/* Il numero accanto allo stato: è quello che si cerca per ritrovare la registrazione. */
.fp-badge__n[b-3he0ketr7h] {
    margin-left: 4px;
    font-weight: 700;
}
/* /Pages/Documenti/FatturaElettronica/ImpostazioniFePage.razor.rz.scp.css */
/* ═══ Impostazioni Fattura Elettronica.
   Il form vive sui componenti del design system (SednaPageHead, DxFormLayout,
   SednaTextBox/ComboBox/Switch): qui resta solo quello che i componenti non hanno —
   la FASCIA D'AMBIENTE, l'esito della prova di connessione e due note.
   Le vecchie classi .fcard/.fgrid/.in/.seg/.secret sono sparite con gli input grezzi. ═══ */

/* ── Fascia d'ambiente ──────────────────────────────────────────────────────────
   Produzione e prova NON si somigliano: colore, bordo e peso diversi. Chi guarda
   la pagina di sfuggita deve capire dov'è prima ancora di leggere. */
.impfe-amb[b-bon6toyr6k] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 12px;
    padding: 9px 14px;
    border: 1px solid var(--sedna-border);
    border-left-width: 4px;
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

.impfe-amb i[b-bon6toyr6k] {
    font-size: 1.05rem;
    flex-shrink: 0;
}

.impfe-amb__txt[b-bon6toyr6k] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 4px 10px;
    min-width: 0;
}

.impfe-amb__txt strong[b-bon6toyr6k] {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.impfe-amb__txt span[b-bon6toyr6k] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

/* Produzione: rosso pieno, il segno più forte della pagina. */
.impfe-amb--prod[b-bon6toyr6k] {
    border-color: var(--sedna-error-600, #e53935);
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.08));
}

.impfe-amb--prod i[b-bon6toyr6k],
.impfe-amb--prod .impfe-amb__txt strong[b-bon6toyr6k] {
    color: var(--sedna-error-700, #c62828);
}

/* Prova: informativo e quieto — è lo stato in cui si lavora tranquilli. */
.impfe-amb--prova[b-bon6toyr6k] {
    border-color: var(--sedna-info-600, #00acc1);
    background: var(--sedna-info-50, rgba(0, 172, 193, 0.08));
}

.impfe-amb--prova i[b-bon6toyr6k],
.impfe-amb--prova .impfe-amb__txt strong[b-bon6toyr6k] {
    color: var(--sedna-info-700, #00838f);
}

/* Non dichiarato: giallo. Non è uno stato di riposo, è una cosa da sistemare. */
.impfe-amb--ignoto[b-bon6toyr6k] {
    border-color: var(--sedna-warning-600, #ffb300);
    background: var(--sedna-warning-50, rgba(255, 179, 0, 0.1));
}

.impfe-amb--ignoto i[b-bon6toyr6k],
.impfe-amb--ignoto .impfe-amb__txt strong[b-bon6toyr6k] {
    color: var(--sedna-warning-700, #ff8f00);
}

/* ── L'indirizzo smentisce l'etichetta ──────────────────────────────────────────
   Deve battere la fascia d'ambiente che sta appena sopra: quella dice "prova" in
   azzurro tranquillo, questa dice che l'azzurro sta mentendo. Se avesse lo stesso
   peso vincerebbe la prima, che è più grande e viene prima. */
.impfe-discorda[b-bon6toyr6k] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-top: 8px;
    padding: 11px 14px;
    border: 2px solid var(--sedna-error-600, #e53935);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.1));
}

.impfe-discorda i[b-bon6toyr6k] {
    font-size: 1.15rem;
    line-height: 1.35;
    flex-shrink: 0;
    color: var(--sedna-error-700, #c62828);
}

.impfe-discorda__txt[b-bon6toyr6k] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.impfe-discorda__txt strong[b-bon6toyr6k] {
    font-size: 0.8125rem;
    color: var(--sedna-error-700, #c62828);
}

.impfe-discorda__txt span[b-bon6toyr6k] {
    font-size: 0.75rem;
    line-height: 1.5;
    color: var(--sedna-text);
    overflow-wrap: anywhere;
}

/* ── Esito della prova di connessione ───────────────────────────────────────── */
.impfe-prova[b-bon6toyr6k] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-top: 10px;
    padding: 10px 14px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

.impfe-prova i[b-bon6toyr6k] {
    font-size: 1rem;
    line-height: 1.4;
    flex-shrink: 0;
}

.impfe-prova__txt[b-bon6toyr6k] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    flex: 1;
}

.impfe-prova__txt strong[b-bon6toyr6k] {
    font-size: 0.8125rem;
}

.impfe-prova__det[b-bon6toyr6k] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
    /* Il messaggio del provider arriva com'è: se è lungo va a capo, non si taglia —
       è esattamente il pezzo che serve per capire cosa non va. */
    overflow-wrap: anywhere;
}

.impfe-prova--ok[b-bon6toyr6k] {
    border-color: var(--sedna-success-600, #43a047);
    background: var(--sedna-success-50, rgba(67, 160, 71, 0.08));
}

.impfe-prova--ok i[b-bon6toyr6k] {
    color: var(--sedna-success-700, #2e7d32);
}

.impfe-prova--ko[b-bon6toyr6k] {
    border-color: var(--sedna-error-600, #e53935);
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.08));
}

.impfe-prova--ko i[b-bon6toyr6k] {
    color: var(--sedna-error-700, #c62828);
}

.impfe-prova__x[b-bon6toyr6k] {
    background: none;
    border: 0;
    padding: 2px 4px;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    line-height: 1;
}

.impfe-prova__x:hover[b-bon6toyr6k] {
    color: var(--sedna-text);
}

/* ── Note di riga ───────────────────────────────────────────────────────────── */
.impfe-nota[b-bon6toyr6k] {
    font-size: 0.75rem;
    line-height: 1.45;
    color: var(--sedna-text-secondary);
    padding-top: 3px;
}

.impfe-nota--warn[b-bon6toyr6k] {
    display: flex;
    align-items: flex-start;
    gap: 7px;
    padding: 8px 11px;
    border: 1px solid var(--sedna-warning-600, #ffb300);
    border-radius: var(--sedna-radius-sm);
    background: var(--sedna-warning-50, rgba(255, 179, 0, 0.1));
    color: var(--sedna-text);
}

.impfe-nota--warn i[b-bon6toyr6k] {
    color: var(--sedna-warning-700, #ff8f00);
    flex-shrink: 0;
    line-height: 1.45;
}

/* ── Sola lettura (ultimo scarico) ──────────────────────────────────────────── */
.impfe-lettura[b-bon6toyr6k] {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
    font-variant-numeric: tabular-nums;
    min-height: var(--sedna-input-height, 22px);
}

.impfe-lettura i[b-bon6toyr6k] {
    color: var(--sedna-text-tertiary);
}

/* ── COSA RISPONDE IL PROVIDER ──────────────────────────────────────────────────
   Stessa famiglia visiva della prova di connessione (bordo, superficie, raggio):
   sono due risposte alla stessa domanda «il canale funziona?» e devono somigliarsi.
   Qui pero' NON c'e' un verde/rosso di riquadro: l'esito non e' binario — «risponde
   ma non aggancia» e' il caso interessante, e dipingerlo di rosso lo farebbe leggere
   come un guasto del canale, che non e'. Il colore sta sul singolo contatore. */
.impfe-esiti[b-bon6toyr6k] {
    margin-top: 10px;
    padding: 10px 14px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

.impfe-esiti__capo[b-bon6toyr6k] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

.impfe-esiti__capo > i[b-bon6toyr6k] {
    font-size: 1rem;
    line-height: 1.4;
    flex-shrink: 0;
    color: var(--sedna-text-secondary);
}

.impfe-esiti__txt[b-bon6toyr6k] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    flex: 1;
}

.impfe-esiti__txt strong[b-bon6toyr6k] {
    font-size: 0.8125rem;
}

.impfe-esiti__det[b-bon6toyr6k] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.impfe-esiti__giorni[b-bon6toyr6k] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.impfe-esiti__giorni label[b-bon6toyr6k] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    margin: 0;
}

.impfe-esiti__conti[b-bon6toyr6k] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 8px;
}

.impfe-esiti__conto[b-bon6toyr6k] {
    font-size: 0.75rem;
    padding: 3px 8px;
    border-radius: var(--sedna-radius-sm);
    background: var(--sedna-surface-alt, rgba(0, 0, 0, 0.04));
    color: var(--sedna-text-secondary);
}

.impfe-esiti__conto b[b-bon6toyr6k] {
    color: var(--sedna-text);
}

/* Zero agganci CON esiti in arrivo: e' il caso da guardare, ed e' l'unico giallo. */
.impfe-esiti__conto--ko[b-bon6toyr6k] {
    background: var(--sedna-warning-50, rgba(245, 124, 0, 0.10));
    color: var(--sedna-warning-700, #ef6c00);
}

.impfe-esiti__conto--attesa[b-bon6toyr6k] {
    background: var(--sedna-info-50, rgba(2, 136, 209, 0.10));
    color: var(--sedna-info-700, #0277bd);
}

/* La tabella scorre da sola: i nomi file XML sono lunghi e non devono allargare la
   pagina — regola di casa, il corpo non scorre mai in orizzontale. */
.impfe-esiti__tab[b-bon6toyr6k] {
    display: block;
    overflow-x: auto;
    width: 100%;
    margin-top: 10px;
    border-collapse: collapse;
    font-size: 0.75rem;
    white-space: nowrap;
}

.impfe-esiti__tab th[b-bon6toyr6k],
.impfe-esiti__tab td[b-bon6toyr6k] {
    padding: 4px 10px 4px 0;
    text-align: left;
    border-bottom: 1px solid var(--sedna-border-light));
}

.impfe-esiti__tab th[b-bon6toyr6k] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    font-weight: 600;
}

.impfe-esiti__orfano td[b-bon6toyr6k] {
    color: var(--sedna-text-secondary);
}

.impfe-esiti__orfano-txt[b-bon6toyr6k] {
    color: var(--sedna-warning-700, #ef6c00);
}

.impfe-esiti__senza[b-bon6toyr6k] {
    margin-top: 10px;
    font-size: 0.75rem;
}

.impfe-esiti__senza strong[b-bon6toyr6k] {
    font-size: 0.75rem;
}

.impfe-esiti__senza ul[b-bon6toyr6k] {
    margin: 4px 0 0;
    padding-left: 18px;
    color: var(--sedna-text-secondary);
}

/* ⚠️ `.mono` NON e' una classe globale: nel foglio di casa esiste solo dentro altri
   contesti (`.mc .mono`, `.sedna-page__sub .mono`). Scritta qui e basta non avrebbe
   fatto niente — e' la trappola del CSS a contesto, gia' pagata due volte. I nomi file
   XML e i progressivi si confrontano a colpo d'occhio solo se le cifre incolonnano. */
.impfe-esiti .mono[b-bon6toyr6k] {
    font-family: var(--sedna-font-mono, "JetBrains Mono", ui-monospace, monospace);
    font-variant-numeric: tabular-nums;
}
/* /Pages/Documenti/FatturaElettronica/MappaggioFePage.razor.rz.scp.css */
.mfe-page[b-62nfszvxiy] {
    min-height: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100%;
    min-width: 0;
    padding-bottom: 1rem;
}

/* La nota sta SOPRA la tabella e non in un tooltip: chi apre questa pagina la prima volta
   deve sapere che sta decidendo su quale registro IVA finiscono le fatture ricevute, non
   «associando due codici». Una spiegazione che si legge solo passandoci sopra col mouse
   non la legge chi non sospetta di averne bisogno. */
.mfe-nota[b-62nfszvxiy] {
    flex: none;
    display: flex;
    gap: 9px;
    padding: 10px 12px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: var(--sedna-surface-variant, #f8fafc);
    font-size: 0.75rem;
    line-height: 1.55;
    color: var(--sedna-text-secondary);
}

.mfe-nota > i[b-62nfszvxiy] { color: var(--sedna-primary); font-size: 0.9rem; }
.mfe-nota strong[b-62nfszvxiy] { color: var(--sedna-text); }

.mfe-corpo[b-62nfszvxiy] { overflow: auto; }

.mfe-attesa[b-62nfszvxiy] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 20px;
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
}

.mfe-tab[b-62nfszvxiy] {
    width: 100%;
    max-width: 900px;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.mfe-tab thead th[b-62nfszvxiy] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--sedna-surface);
    border-bottom: 1px solid var(--sedna-border);
    padding: 6px 10px;
    text-align: left;
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-text-tertiary);
}

.mfe-tab td[b-62nfszvxiy] {
    padding: 4px 10px;
    border-bottom: 1px solid var(--sedna-border-light, #f1f5f9);
    vertical-align: middle;
}

.mfe-td[b-62nfszvxiy] { width: 330px; }

/* Il codice si legge per primo — è quello che arriva nella fattura — e la descrizione
   gli sta accanto in tono minore: serve a riconoscerlo, non a cercarlo. */
.mfe-codice[b-62nfszvxiy] {
    display: inline-block;
    width: 58px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text);
}

.mfe-desc[b-62nfszvxiy] { color: var(--sedna-text-secondary); }

/* Una riga già mappata si distingue in modo delicato: il colpo d'occhio deve dire
   quante ne restano da decidere, senza trasformare la tabella in un semaforo. */
.mfe-riga--scelta .mfe-codice[b-62nfszvxiy] { color: var(--sedna-primary); }

[b-62nfszvxiy] .mfe-combo { width: 100%; max-width: 420px; }
/* /Pages/Documenti/FatturaElettronica/SituazioneFePage.razor.rz.scp.css */
/* ═══ Situazione Fattura Elettronica ═══
   Restyle su mockup SituazioneFE.html/fe.css. I token del mock (-wash/-tint/-ink)
   non esistono nel design system del portale: tradotti su -subtle/-50/-700. */

/* No-scroll layout: header + tab + bulk fissi, scrolla solo il corpo della griglia.
   Altezza/overflow/padding orizzontale dal guscio globale .sedna-page
   (sedna.page.css); qui restano solo max-width + centratura e il gap verticale. */
.sitfe-page[b-0n95kfpti1] {
    /* ⚠️ min-height:0 sulla RADICE: senza, un figlio flex non può rimpicciolirsi sotto il
       suo contenuto e la catena delle altezze si rompe a metà — la griglia smette di
       ricevere l'altezza che le spetta e si accontenta delle righe che ha. È la stessa
       riga che regge il bilancio giornaliero. */
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding-bottom: 1rem;
    width: 100%;
    min-width: 0;
    /* ⚠️ NIENTE TETTO DI LARGHEZZA (Antonio, 20/08: «sembrano avere un padding
       orizzontale maggiore degli altri»). C'era `max-width: 1600px; margin: 0 auto`:
       su uno schermo largo la pagina restava centrata a 1600 e il resto diventava
       margine — mentre l'elenco documenti e il registro IVA non hanno nessun tetto e
       arrivano al bordo. Non era piu' padding: era la pagina che si rifiutava di
       crescere. Il respiro laterale lo da' gia' il guscio .sedna-page, uguale per
       tutti. */
    gap: 10px;
}
/* ── Header di pagina (card) ── */
.sitfe-head[b-0n95kfpti1] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 12px;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, 0.75rem);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
    padding: 8px var(--sedna-space-4, 1rem);
}
.sitfe-back[b-0n95kfpti1] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 28px;
    padding: 0 10px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: 999px;
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    white-space: nowrap;
}
.sitfe-back:hover[b-0n95kfpti1] {
    border-color: var(--sedna-primary);
    color: var(--sedna-primary);
}
.sitfe-head__title[b-0n95kfpti1] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
}
.sitfe-head__title h1[b-0n95kfpti1] {
    margin: 0;
    font-size: 0.9375rem;
    font-weight: 650;
    letter-spacing: -0.01em;
    color: var(--sedna-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.sitfe-head__sub[b-0n95kfpti1] {
    font-size: 0.72rem;
    color: var(--sedna-text-secondary);
    white-space: nowrap;
}
.sitfe-head__sp[b-0n95kfpti1] { flex: 1; }
.sitfe-head__actions[b-0n95kfpti1] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex: none;
}

/* ── Pannello inline motivo scarto SDI ── */
.sitfe-scarto[b-0n95kfpti1] {
    flex: none;
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 10px 12px 12px 14px;
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-600);
    border-radius: var(--sedna-radius-md, 0.5rem);
}
.sitfe-scarto__ico[b-0n95kfpti1] {
    width: 30px;
    height: 30px;
    border-radius: 8px;
    background: var(--sedna-surface);
    color: var(--sedna-error-700);
    display: grid;
    place-items: center;
    flex: none;
    font-size: 0.9rem;
}
.sitfe-scarto__body[b-0n95kfpti1] { flex: 1; min-width: 0; }
.sitfe-scarto__cod[b-0n95kfpti1] {
    font-weight: 700;
    color: var(--sedna-error-700);
    font-size: 0.78rem;
}
.sitfe-scarto__body p[b-0n95kfpti1] {
    margin: 2px 0 8px;
    font-size: 0.78rem;
    color: var(--sedna-text);
    line-height: 1.45;
}
.sitfe-scarto__acts[b-0n95kfpti1] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
.sitfe-scarto__x[b-0n95kfpti1] {
    flex: none;
    width: 26px;
    height: 26px;
    display: grid;
    place-items: center;
    border: none;
    background: transparent;
    border-radius: 5px;
    color: var(--sedna-error-700);
    cursor: pointer;
    font-size: 0.8rem;
}
.sitfe-scarto__x:hover[b-0n95kfpti1] { background: var(--sedna-surface); }
/* ── Barra azioni massive (compare con la selezione) ── */
/* ⚠️ SOTTILE, perche' adesso e' SEMPRE a video: quello che prima era un avviso
   momentaneo e' diventato una riga fissa, e una riga fissa alta si paga in altezza della
   griglia a ogni schermata. Padding dimezzato e pulsanti a 22px. */
.sitfe-bulk[b-0n95kfpti1] {
    flex: none;
    /* Sotto la griglia: un filo di stacco, o sembra il piede della tabella. */
    margin-top: 6px;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    padding: 3px 10px;
    background: var(--sedna-primary-subtle);
    border: 1px solid var(--sedna-primary);
    border-radius: var(--sedna-radius-md, 0.5rem);
}
.sitfe-bulk__cnt[b-0n95kfpti1] {
    font-size: 0.8125rem;
    font-weight: 650;
    color: var(--sedna-primary);
}
.sitfe-bulk__desel[b-0n95kfpti1] {
    border: none;
    background: none;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
}
.sitfe-bulk__desel:hover[b-0n95kfpti1] { color: var(--sedna-text); }
/* ⚠️ FILETTI, NON SPAZIATORI ELASTICI. Con `flex: 1` i tre separatori si
   prendevano tutto lo spazio libero dividendoselo — 54px l'uno, misurati — e spingevano
   l'ultimo pulsante («Segna come inviata») su una riga sotto. Facevano il contrario del
   loro mestiere: dovevano separare tre gruppi di comandi e invece li allontanavano fino a
   spezzare la barra. Ora sono un filo verticale: separano e costano 13px. */
.sitfe-bulk__sp[b-0n95kfpti1] {
    flex: none;
    width: 1px;
    align-self: stretch;
    margin: 3px 6px;
    background: var(--sedna-border);
}
/* ── Griglia: riempie l'altezza residua, scrolla solo il corpo ── */
/* ⚠️ LA GRIGLIA OCCUPA L'ALTEZZA ANCHE CON POCHE RIGHE (Antonio, 19/08). Prima si
   fermava all'altezza delle righe e sotto restava una fascia bianca: su una pagina
   inchiodata quella fascia non è spazio libero, è spazio sprecato — e con l'intestazione
   a mezz'aria l'elenco sembra finito quando invece è solo corto.
   `align-self: stretch` serve perché il wrapper è figlio di una colonna flex: senza,
   in alcune combinazioni si allinea al contenuto invece di stirarsi. */
[b-0n95kfpti1] .sedna-datagrid-wrapper {
    flex: 1 1 auto;
    align-self: stretch;
    min-height: 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
}
[b-0n95kfpti1] .dx-datagrid,
[b-0n95kfpti1] .dxbl-grid {
    height: 100%;
    width: 100%;
    max-width: 100%;
}
[b-0n95kfpti1] .dx-datagrid-headers,
[b-0n95kfpti1] .dx-datagrid-rowsview {
    max-height: none;
}
[b-0n95kfpti1] .dx-datagrid-rowsview {
    flex: 1 1 auto;
    overflow-y: auto;
}
/* ========================================
   TOOLBAR — searchbox custom (pattern lista Clienti)
   Search + filtro periodo nella stessa riga della toolbar della griglia.
   ======================================== */
.toolbar[b-0n95kfpti1] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}
.toolbar .search[b-0n95kfpti1] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}
    .toolbar .search i[b-0n95kfpti1] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }
    .toolbar .search input[b-0n95kfpti1] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }
        .toolbar .search input[b-0n95kfpti1]::placeholder {
            color: var(--sedna-text-tertiary);
        }
        .toolbar .search input:focus[b-0n95kfpti1] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }
@media (max-width: 900px) {
    .toolbar .search[b-0n95kfpti1] {
        width: 100%;
    }
}
/* Toolbar: filtro periodo accanto alla searchbox. */
.sitfe-toolbar[b-0n95kfpti1] {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: var(--sedna-space-2, .5rem);
}
.sitfe-toolbar__lbl[b-0n95kfpti1] {
    flex: 0 0 auto;
    font-size: var(--sedna-text-xs, .75rem);
    color: var(--sedna-text-secondary);
}
/* ⚠️ 112px NON BASTAVANO per «gg/mm/aaaa» piu' l'icona del calendario: la data
   veniva tagliata e non si leggeva (Antonio, 20/08). Lo spazio si recupera dai campi
   «n. doc. da/a», che contengono numeri corti e ne chiedevano 72. */
[b-0n95kfpti1] .sitfe-toolbar__date {
    flex: 0 0 140px;
    width: 140px;
}
/* ── Celle: numero documento, cliente, esito errore ── */
.sitfe-docnum[b-0n95kfpti1] {
    font-family: var(--sedna-font-mono, ui-monospace, Menlo, Consolas, monospace);
    font-weight: 650;
}
.sitfe-cliente .cod[b-0n95kfpti1] {
    font-family: var(--sedna-font-mono, ui-monospace, Menlo, Consolas, monospace);
    font-weight: 700;
    color: var(--sedna-text-secondary);
}
.sitfe-esito-err[b-0n95kfpti1] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--sedna-error-700);
    font-size: 0.78rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}
/* Riga scartata: tinta tenue con accento a sinistra (classe posta da CustomizeElement). */
[b-0n95kfpti1] .sitfe-row-scarto td {
    background: var(--sedna-error-50) !important;
}
[b-0n95kfpti1] .sitfe-row-scarto td:first-child {
    box-shadow: inset 3px 0 0 0 var(--sedna-error-600);
}
/* ── Pipeline "semaforo" inline (3 dot: XML · Invio · Esito) ── */
.sitfe-pipe[b-0n95kfpti1] {
    display: inline-flex;
    align-items: center;
    gap: 0;
    vertical-align: middle;
}
.sitfe-pipe .pd[b-0n95kfpti1] {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    flex: none;
    background: var(--sedna-surface-variant);
    border: 2px solid var(--sedna-border);
    display: grid;
    place-items: center;
}
.sitfe-pipe .pd i[b-0n95kfpti1] {
    font-size: 7px;
    color: var(--sedna-surface);
    line-height: 1;
}
.sitfe-pipe .pl[b-0n95kfpti1] {
    width: 14px;
    height: 2px;
    background: var(--sedna-border);
    flex: none;
}
.sitfe-pipe .pd.done[b-0n95kfpti1] {
    background: var(--sedna-success-600);
    border-color: var(--sedna-success-600);
}
.sitfe-pipe .pl.done[b-0n95kfpti1] { background: var(--sedna-success-600); }
.sitfe-pipe .pd.cur[b-0n95kfpti1] {
    background: var(--sedna-surface);
    border-color: var(--sedna-primary);
}
.sitfe-pipe .pd.cur[b-0n95kfpti1]::after {
    content: "";
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--sedna-primary);
}
.sitfe-pipe .pd.err[b-0n95kfpti1] {
    background: var(--sedna-error-600);
    border-color: var(--sedna-error-600);
}
.sitfe-pipe-lbl[b-0n95kfpti1] {
    font-size: 0.72rem;
    font-weight: 650;
    margin-left: 9px;
    vertical-align: middle;
}
.sitfe-pipe-lbl.grey[b-0n95kfpti1] { color: var(--sedna-text-tertiary); }
.sitfe-pipe-lbl.blue[b-0n95kfpti1] { color: var(--sedna-primary); }
.sitfe-pipe-lbl.green[b-0n95kfpti1] { color: var(--sedna-success-700); }
.sitfe-pipe-lbl.red[b-0n95kfpti1] { color: var(--sedna-error-700); }
/* Solo in prova: trasmessa a un canale di collaudo, MAI arrivata al SdI. Il colore
   info la separa sia dal blu «inviato» sia dal verde «con esito». */
.sitfe-pipe-lbl.prova[b-0n95kfpti1] { color: var(--sedna-info-700, #1565c0); font-style: italic; }
/* I filtri aggiunti in barra (numero, cliente, ragione sociale).
   Larghezze fisse e piccole: la barra deve restare su UNA riga su un portatile 14",
   che e' lo schermo su cui questa pagina si usa davvero. Sotto, va a capo da se'. */
.sitfe-toolbar__sep[b-0n95kfpti1] {
    width: 1px;
    align-self: stretch;
    margin: 0 4px;
    background: var(--sedna-border-light, #eef0f3);
}
[b-0n95kfpti1] .sitfe-toolbar__num { flex: 0 0 56px; width: 56px; }
[b-0n95kfpti1] .sitfe-toolbar__testo { flex: 0 0 170px; width: 170px; }
[b-0n95kfpti1] .sitfe-toolbar__lookup { flex: 0 0 190px; width: 190px; }
.sitfe-toolbar__pulisci[b-0n95kfpti1] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    border: 0;
    background: transparent;
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    cursor: pointer;
    padding: 2px 6px;
    border-radius: var(--sedna-radius-sm);
}
.sitfe-toolbar__pulisci:hover[b-0n95kfpti1] { background: var(--sedna-surface-hover); color: var(--sedna-text); }
/* ── Contenitore dei filtri (SednaForm) ──────────────────────────────────────
   ⚠️ 30px riservati in coda alla RONDELLINA dell'ordine campi: e' posizionata in
   assoluto nell'angolo del form e senza spazio finisce sopra il pulsante «Filtra».
   ⚠️ E sta APPOGGIATA SUL BORDO SUPERIORE (top negativo), non in linea coi pulsanti:
   alla stessa altezza di «Filtra» sembrava un pulsante di impostazioni della pagina.
   ⚠️ I token di altezza scendono ai componenti figli: cosi' il pulsante «Filtra» e'
   ALTO COME I CAMPI accanto, invece di essere il solito bottone da 28px che sballa la
   riga. Vale per ogni barra filtri, non solo per questa. */
[b-0n95kfpti1] .sitfe-form {
    flex: 1 1 auto;
    min-width: 0;
    padding-right: 30px;
    --sef-gear-top: -11px;
    --sef-gear-right: 2px;
    --sedna-control-height-sm: var(--sedna-input-height, 22px);
    --sedna-control-height-md: var(--sedna-input-height, 22px);
}
/* ── Finestra della forzatura dello stato di invio ── */
.sitfe-forza[b-0n95kfpti1] { display: flex; flex-direction: column; gap: 10px; }
.sitfe-forza__testo[b-0n95kfpti1] { margin: 0; font-size: 0.8125rem; }
.sitfe-forza__nota[b-0n95kfpti1] {
    margin: 0;
    font-size: 0.75rem;
    line-height: 1.5;
    color: var(--sedna-text-secondary);
}
.sitfe-forza__lbl[b-0n95kfpti1] {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--sedna-text-tertiary);
}

.sitfe-bulk[b-0n95kfpti1]  .dxbl-btn,
.sitfe-bulk[b-0n95kfpti1]  button {
    min-height: 22px;
    height: 22px;
    padding-top: 0;
    padding-bottom: 0;
}

/* Senza selezione la barra resta, ma in tono minore: c'e' e non chiede attenzione. */
.sitfe-bulk--vuota[b-0n95kfpti1] {
    background: var(--sedna-surface-variant, #f8fafc);
    border-color: var(--sedna-border);
}

.sitfe-bulk--vuota .sitfe-bulk__cnt[b-0n95kfpti1] { color: var(--sedna-text-tertiary); }


/* ═══ RIFIUTATA DAL PROVIDER, e IN INVIO ═══
   Due stati che prima non si vedevano. Il rifiuto e' arancione e non rosso: la fattura non e'
   stata respinta dallo Stato, e' che non e' proprio partita — si corregge e si rimanda, che e'
   una gravita' diversa dallo scarto. */
.sitfe-esito-rif[b-0n95kfpti1] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    color: var(--sedna-warning-700);
    font-weight: var(--sedna-font-semibold);
}

/* In invio: grigio e discreto: non e' ne' un guaio ne' un traguardo, e' un'attesa. */
.sitfe-esito-inv[b-0n95kfpti1] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    color: var(--sedna-text-secondary);
    font-style: italic;
}

/* ── Il perche' dell'esito ──────────────────────────────────────────────────
   ⚠️ Piccolo e accanto alla descrizione, non un pulsante vero: sta DENTRO una cella
      di griglia, e un controllo a piena taglia per riga farebbe crescere l'altezza di
      tutte le righe — comprese le migliaia che un motivo non ce l'hanno. */
/* ⚠️ Il testo cede, il pulsante no: su una fattura scartata la descrizione è lunga, e
      senza `min-width: 0` il testo si rifiuta di stringersi spingendo fuori il «perché»
      proprio dalla riga che ne ha più bisogno. */
.sitfe-esito-cella[b-0n95kfpti1] {
    display: flex;
    align-items: center;
    gap: 2px;
    min-width: 0;
}

.sitfe-esito-cella > :first-child[b-0n95kfpti1] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sitfe-perche[b-0n95kfpti1] {
    flex: 0 0 auto;
    border: 0;
    background: transparent;
    color: var(--sedna-color-text-secondary);
    cursor: pointer;
    padding: 0 0 0 .25rem;
    line-height: 1;
    font-size: .95em;
}

.sitfe-perche:hover:not(:disabled)[b-0n95kfpti1] { color: var(--sedna-color-primary); }
.sitfe-perche:disabled[b-0n95kfpti1] { opacity: .45; cursor: default; }

/* ── La finestra del motivo ─────────────────────────────────────────────── */
.sitfe-motivo[b-0n95kfpti1] { display: flex; flex-direction: column; gap: .75rem; }

/* ⚠️ La frase e' la cosa per cui si e' aperta la finestra: si legge per prima e
      senza sforzo. Puo' contenere piu' errori uniti con «·», quindi va a capo da sola. */
.sitfe-motivo__frase[b-0n95kfpti1] {
    font-size: 1.0625rem;
    line-height: 1.5;
    color: var(--sedna-color-text-primary);
}

.sitfe-motivo__cod[b-0n95kfpti1],
.sitfe-motivo__quando[b-0n95kfpti1] {
    font-size: .8125rem;
    color: var(--sedna-color-text-secondary);
}
/* /Pages/Documenti/MerceProduttori/ImpostazioniInserimentoMerceProduttoriPage.razor.rz.scp.css */
/* IMPOSTAZIONI DI INSERIMENTO MERCE PRODUTTORI
   Sette interruttori: pochi, quindi ognuno si può permettere la riga che spiega
   cosa fa. È la differenza fra una pagina di caselle e una pagina che si legge. */

.mpins-imp[b-9xfm97j0q0] {
    padding-bottom: 1.5rem;
}

/* La spiegazione sotto ciascun parametro: secondaria per colore e misura — si
   legge quando serve e non compete con l'etichetta, che è il nome del vecchio.
   Il rientro la allinea al testo della casella, non al quadratino. */
.mpins-imp__nota[b-9xfm97j0q0] {
    margin: 0.15rem 0 0.35rem 1.6rem;
    max-width: 78ch;
    font-size: 0.75rem;
    line-height: 1.45;
    color: var(--sedna-text-secondary, #64748b);
}

    .mpins-imp__nota code[b-9xfm97j0q0] {
        font-size: 0.72rem;
        padding: 0 0.2rem;
        border-radius: 3px;
        background: var(--sedna-surface-2, #f1f5f9);
    }

/* Il gruppo dei tre inerti: si distingue dal resto senza gridare. Una banda a
   sinistra e uno sfondo appena percettibile bastano a dire «questi sono un'altra
   cosa» — spegnere le caselle no, perché il valore si salva davvero. */
.mpins-imp__gruppo-inerte[b-9xfm97j0q0] {
    opacity: 0.92;
}

.mpins-imp__avviso[b-9xfm97j0q0] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.5rem 0.7rem;
    margin-bottom: 0.35rem;
    border-left: 3px solid var(--sedna-warning-500, #f59e0b);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-warning-subtle, #fffbeb);
    font-size: 0.78rem;
    line-height: 1.45;
    color: var(--sedna-text, #0f172a);
}

    .mpins-imp__avviso i[b-9xfm97j0q0] {
        margin-top: 0.1rem;
        color: var(--sedna-warning-600, #d97706);
    }

.mpins-imp__nota--inerte[b-9xfm97j0q0] {
    font-style: italic;
}

@media (max-width: 640px) {
    .mpins-imp__nota[b-9xfm97j0q0] {
        margin-left: 0;
    }
}
/* /Pages/Documenti/MerceProduttori/ImpostazioniLiquidazionePage.razor.rz.scp.css */
/* Impostazioni della liquidazione: tre riquadri corti, uno per domanda.
   Stessa forma delle altre pagine di impostazioni del modulo. */
.implig-attesa[b-a8p4hklpy4] { display: flex; justify-content: center; padding: 40px 0; }

.implig-sez[b-a8p4hklpy4] {
    border: 1px solid var(--sedna-border, #e5e7eb);
    border-radius: var(--sedna-radius-md, .375rem);
    padding: 8px 12px 12px;
    margin-bottom: 12px;
}

.implig-sez__tit[b-a8p4hklpy4] {
    margin: 0 0 8px; padding-bottom: 4px;
    border-bottom: 1px solid var(--sedna-divider, #eef2f7);
    font-size: 0.6875rem; font-weight: 700; letter-spacing: .06em;
    text-transform: uppercase; color: var(--sedna-text-secondary);
}

/* Tre colonne sui monitor larghi, una sola quando non ci stanno: i parametri sono corti
   e impilarli tutti farebbe una pagina lunga il doppio dello schermo. */
.implig-griglia[b-a8p4hklpy4] {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 10px 22px; align-items: start;
}

.implig-campo[b-a8p4hklpy4] { display: flex; flex-direction: column; gap: 2px; }
.implig-campo > label[b-a8p4hklpy4] {
    font-size: 0.6875rem; font-weight: 600; letter-spacing: .03em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
}

/* La riga sotto il campo: dice COSA FA il parametro. Un parametro senza spiegazione si
   lascia com'e' per paura, ed e' il modo in cui una configurazione smette di essere usata. */
.implig-nota[b-a8p4hklpy4] {
    font-size: 0.7rem; line-height: 1.35; color: var(--sedna-text-tertiary);
}

.implig-azioni[b-a8p4hklpy4] { display: flex; justify-content: flex-end; gap: 8px; margin-top: 4px; }
/* /Pages/Documenti/MerceProduttori/ImpostazioniMerceProduttoriPage.razor.rz.scp.css */
/* IMPOSTAZIONI MERCE PRODUTTORI
   Cinquanta parametri su cinque tab: le note sono quello che tiene la pagina
   leggibile, perché il nome di un parametro legacy non dice mai cosa fa. */

.merceprod-imp[b-097iel8ifn] {
    padding-bottom: 1.5rem;
}

/* La spiegazione accanto o sotto un parametro. Secondaria per colore e misura:
   si legge quando serve, e non compete con l'etichetta. */
.merceprod-imp__nota[b-097iel8ifn] {
    margin: 0.15rem 0 0.25rem 0;
    max-width: 86ch;
    font-size: 0.75rem;
    line-height: 1.45;
    color: var(--sedna-text-secondary, #64748b);
}

    .merceprod-imp__nota code[b-097iel8ifn] {
        font-size: 0.72rem;
        padding: 0 0.2rem;
        border-radius: 3px;
        background: var(--sedna-surface-2, #f1f5f9);
    }

/* Il parametro che oggi non fa niente: il corsivo lo stacca dalle note che
   descrivono un effetto REALE, senza spegnere la casella — il valore si salva
   davvero e chi lo mette lo ritroverà. */
.merceprod-imp__nota--inerte[b-097iel8ifn] {
    font-style: italic;
}

/* L'avviso di gruppo: una banda a sinistra basta a dire «questi sono un'altra
   cosa» senza trasformare la pagina in una bacheca di allarmi. */
.merceprod-imp__avviso[b-097iel8ifn] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.5rem 0.7rem;
    margin-bottom: 0.35rem;
    border-left: 3px solid var(--sedna-warning-500, #f59e0b);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-warning-subtle, #fffbeb);
    font-size: 0.78rem;
    line-height: 1.45;
    color: var(--sedna-text, #0f172a);
}

    .merceprod-imp__avviso i[b-097iel8ifn] {
        margin-top: 0.1rem;
        color: var(--sedna-warning-600, #d97706);
    }

    .merceprod-imp__avviso code[b-097iel8ifn] {
        font-size: 0.72rem;
        padding: 0 0.2rem;
        border-radius: 3px;
        background: rgba(255, 255, 255, 0.6);
    }
/* /Pages/Documenti/MerceProduttori/InserimentoMerceProduttoriBanco.razor.rz.scp.css */
/* ═══ INSERIMENTO MERCE PRODUTTORI — il banco di lavoro ═══
   Tre fasce verticali: le coordinate della sessione, la griglia (che si prende
   tutto lo spazio che avanza), i totali. La finestra è larga e bassa di proposito:
   quello che serve mentre si digita è VEDERE MOLTE RIGHE INSIEME — è così che ci si
   accorge di aver battuto due volte la stessa pesata. */

/* ---------------------------------------------------------------------------
   TESTATA: le coordinate, su una riga sola
   Non vanno a capo finché c'è spazio, e quando non ce n'è scorrono invece di
   impilarsi: la fascia deve restare alta quanto una riga, o si mangia lo spazio
   della griglia, che è quello che conta.
   --------------------------------------------------------------------------- */
.mp-ins-testata[b-7qk06mnyq8] {
    display: flex;
    align-items: flex-end;
    gap: 10px;
    flex-wrap: wrap;
    padding: 2px 0 10px;
    border-bottom: 1px solid var(--sedna-border-light);
    margin-bottom: 8px;
}

.mp-ins-campo[b-7qk06mnyq8] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex: none;
    width: 140px;
}

/* La griglia è l'elastico del popup: testata, fascia lotto e totali tengono la
   loro altezza, lei prende il resto e lo segue nel resize (il flex sul body del
   popup sta in app.css — è markup DevExpress, il CSS isolato non lo raggiunge). */
.mp-ins-grid-host[b-7qk06mnyq8] { flex: 1 1 auto; min-height: 160px; display: flex; flex-direction: column; }
.mp-ins-grid-host[b-7qk06mnyq8]  .sedna-editable-grid { flex: 1 1 auto; min-height: 0; }

.mp-ins-campo--largo[b-7qk06mnyq8] { width: 260px; }
/* ⚠️ Larghezza sul CONTENUTO, non fissa: dentro ci stanno coppie input+pulsante
   (lotto con lente, i due Rip.) e una colonna a 110px fissi li faceva sbordare
   dal popup sovrapponendoli — visto sul Mac a 1512px. */
.mp-ins-campo--stretto[b-7qk06mnyq8] { width: auto; min-width: 84px; }
.mp-ins-rip-num[b-7qk06mnyq8] { width: 96px; }

.mp-ins-campo > label[b-7qk06mnyq8] {
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-text-secondary);
}

.mp-ins-input[b-7qk06mnyq8] {
    height: var(--sedna-input-height, 22px);
    font-size: var(--sedna-input-font-size, 0.75rem);
    font-family: var(--sedna-font-sans, inherit);
    padding: 0 6px;
    width: 100%;
    border: 1px solid var(--sedna-border-light);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface, #fff);
    color: var(--sedna-text);
}

.mp-ins-input:focus[b-7qk06mnyq8] {
    outline: none;
    border-color: var(--sedna-primary);
    box-shadow: 0 0 0 2px var(--sedna-primary-soft, rgba(59, 130, 246, 0.25));
}

.mp-ins-input:disabled[b-7qk06mnyq8] {
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-secondary);
}

/* I due «Rip.»: spinti a destra e staccati dalle coordinate, perché non sono
   coordinate — sono due AZIONI che riscrivono tutte le righe insieme, e vanno
   lette come tali prima di premerle. */
.mp-ins-rip[b-7qk06mnyq8] {
    display: flex;
    gap: 10px;
    margin-left: auto;
    padding-left: 14px;
    border-left: 1px solid var(--sedna-border-light);
}

.mp-ins-rip__riga[b-7qk06mnyq8] {
    display: flex;
    align-items: center;
    gap: 4px;
}

/* I pulsantini accanto agli input (lente lotto, sgancio, i due ⟳) si allineano
   all'ALTEZZA DEGLI INPUT (22px): i bottoni dell'app stanno a ~28px di serie e
   qui sporgevano sopra e sotto la riga — visto sul Mac. */
.mp-ins-rip__riga[b-7qk06mnyq8]  .dxbl-btn {
    height: var(--sedna-input-height, 22px);
    min-height: var(--sedna-input-height, 22px);
    padding: 0 7px;
}
.mp-ins-rip__riga[b-7qk06mnyq8]  .dxbl-btn .dxbl-image { font-size: 0.75rem; }

.mp-ins-errore[b-7qk06mnyq8] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    margin-bottom: 8px;
    font-size: 0.8125rem;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-danger-soft, #fef2f2);
    color: var(--sedna-danger, #b91c1c);
    border: 1px solid var(--sedna-danger, #b91c1c);
}

/* L'esito del «Salva e Inserisci», detto DENTRO la finestra: dopo il salvataggio la
   griglia si azzera sotto le mani, e senza una riga che dica «sono entrate» sembra
   che le righe siano sparite. Un toast di pagina, con la modal aperta, finirebbe
   sotto l'overlay. */
.mp-ins-esito[b-7qk06mnyq8] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    margin-bottom: 8px;
    font-size: 0.8125rem;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-success-soft, #ecfdf5);
    color: var(--sedna-success, #047857);
    border: 1px solid var(--sedna-success, #047857);
}

/* ---------------------------------------------------------------------------
   LA GRIGLIA
   Altezza a finestra (non a contenuto): con trenta righe la modal non deve
   crescere oltre lo schermo — scorre la griglia, non la pagina, così testata e
   totali restano sempre a vista mentre si digita.
   --------------------------------------------------------------------------- */
.mp-ins-grid-host[b-7qk06mnyq8] {
    max-height: min(56vh, 620px);
    overflow: auto;
}

/* Celle in sola lettura: stessa altezza e stesso font degli editor, così l'occhio
   legge UNA tabella e non due. La differenza fra «qui si scrive» e «qui no» la fa
   lo sfondo lavato, non un carattere diverso. Stesse regole del registro. */
.mp-ins-grid-host[b-7qk06mnyq8]  .mp-ins-ro {
    display: flex;
    align-items: center;
    height: 1.375rem;
    padding: 0 4px;
    font-size: 0.75rem;
    color: var(--sedna-text);
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.mp-ins-grid-host[b-7qk06mnyq8]  .mp-ins-ro--num,
.mp-ins-grid-host[b-7qk06mnyq8]  .mp-ins-num {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
}

.mp-ins-grid-host[b-7qk06mnyq8]  .mp-ins-ro--num { justify-content: flex-end; }

/* Colonne CALCOLATE: sfondo appena lavato, così si vede che il numero lo fa il
   motore prima di provare a batterlo. Restano scrivibili — forzarle è previsto. */
.mp-ins-grid-host[b-7qk06mnyq8]  td.mp-td-calc { background: var(--sedna-surface-variant); }
.mp-ins-grid-host[b-7qk06mnyq8]  td.mp-td-ro .mp-ins-ro { color: var(--sedna-text-secondary); }
.mp-ins-grid-host[b-7qk06mnyq8]  td.mp-td-lookup { padding-left: 2px; padding-right: 2px; }

.mp-ins-grid-host[b-7qk06mnyq8]  .mp-ins-tipo {
    height: 1.375rem;
    width: 100%;
    font-size: 0.6875rem;
    font-weight: 600;
    border: 1px solid transparent;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text);
    cursor: pointer;
}
.mp-ins-grid-host[b-7qk06mnyq8]  .mp-ins-tipo:focus { outline: none; border-color: var(--sedna-primary); }

/* ⚠️ QUI STAVANO le regole della colonna azioni (.mp-ins-azioni/.mp-ins-azione):
   tolte col 2026-08-06 insieme alla colonna. Le quattro azioni di riga adesso
   stanno nel MENU DEL TASTO DESTRO, che è dove le tiene il vecchio, e il loro
   aspetto lo veste la griglia (.seg-rowmenu__consumer nella libreria): la pagina
   scrive i <button> e basta. */

/* Somme di colonna nel piede della griglia. */
.mp-ins-somme[b-7qk06mnyq8] {
    display: flex;
    gap: 18px;
    justify-content: flex-end;
    padding: 4px 8px;
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.mp-ins-somme strong[b-7qk06mnyq8] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text);
}

/* ---------------------------------------------------------------------------
   TOTALI DI SESSIONE
   Merce e imballaggi separati, poi il blocco imponibile/IVA/totale: sono due
   letture diverse — la prima dice COSA si è battuto, la seconda QUANTO fa.
   --------------------------------------------------------------------------- */
.mp-ins-totali[b-7qk06mnyq8] {
    display: flex;
    gap: 6px;
    justify-content: flex-end;
    align-items: stretch;
    flex-wrap: wrap;
    margin-top: 10px;
    padding-top: 8px;
    border-top: 1px solid var(--sedna-border-light);
}

.mp-ins-tot[b-7qk06mnyq8] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 108px;
    padding: 4px 10px;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-variant);
}

.mp-ins-tot > span[b-7qk06mnyq8] {
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-text-secondary);
}

.mp-ins-tot > strong[b-7qk06mnyq8] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
    font-size: 0.8125rem;
    text-align: right;
}

/* La provvigione si TRATTIENE: si mostra col segno meno e in colore diverso, come
   nel piede del registro — è l'unica voce che va nella direzione opposta. */
.mp-ins-tot--neg[b-7qk06mnyq8] { color: var(--sedna-danger, #b91c1c); }

.mp-ins-tot--sep[b-7qk06mnyq8] { margin-left: 14px; }

.mp-ins-tot--forte[b-7qk06mnyq8] {
    background: var(--sedna-primary-soft, rgba(59, 130, 246, 0.12));
}
.mp-ins-tot--forte > strong[b-7qk06mnyq8] { font-size: 0.9375rem; }

/* ---------------------------------------------------------------------------
   PIEDE
   Il contatore a sinistra non è decorazione: dice quante righe partiranno
   davvero — cioè senza quelle vuote, che al salvataggio si saltano. È il numero
   da confrontare con le pesate che si avevano in mano.
   --------------------------------------------------------------------------- */
/* Il banco riempie la cornice che lo ospita — il body flex della modal o il corpo
   della pagina — e la griglia al suo interno è l'elastico. */
.mp-ins-banco[b-7qk06mnyq8] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.mp-ins-piede[b-7qk06mnyq8] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding-top: 8px;
    margin-top: 8px;
    border-top: 1px solid var(--sedna-border-light);
}

.mp-ins-piede__conta[b-7qk06mnyq8] {
    margin-right: auto;
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

/* ═══ L'aggancio al lotto ═══ */
.mp-ins-anno[b-7qk06mnyq8] { width: 76px; }
.mp-ins-lotto[b-7qk06mnyq8] { width: 110px; }
.mp-ins-ro--testata[b-7qk06mnyq8] {
    display: inline-block; line-height: var(--sedna-input-height, 22px);
    font-size: 0.8125rem; font-weight: 600; color: var(--sedna-text);
    max-width: 260px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* La fotografia della ricezione: una fascia sola, read-only, coi numeri in mono.
   Diff.Netto cambia colore: verde quando quadra, ambra quando manca merce. */
.mp-ins-lotto-fascia[b-7qk06mnyq8] {
    display: flex; flex-wrap: wrap; align-items: flex-end; gap: 6px 16px;
    padding: 6px 12px; margin-bottom: 8px;
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .375rem);
}
.mp-ins-lf[b-7qk06mnyq8] { display: inline-flex; flex-direction: column; gap: 1px; min-width: 0; }
.mp-ins-lf em[b-7qk06mnyq8] {
    font-style: normal; font-size: 0.625rem; font-weight: 600;
    letter-spacing: .04em; text-transform: uppercase; color: var(--sedna-text-tertiary);
}
.mp-ins-lf b[b-7qk06mnyq8] {
    font-size: 0.8125rem; font-weight: 600;
    font-variant-numeric: tabular-nums; white-space: nowrap;
    overflow: hidden; text-overflow: ellipsis; max-width: 220px;
}
.mp-ins-lf--des[b-7qk06mnyq8] { max-width: 240px; }
.mp-ins-lf--sep[b-7qk06mnyq8] { margin-left: auto; padding-left: 16px; border-left: 1px solid var(--sedna-border); }
.mp-ins-lf--ok b[b-7qk06mnyq8] { color: var(--sedna-success-600, #2e7d32); }
.mp-ins-lf--sbil b[b-7qk06mnyq8] { color: var(--sedna-warning-700, #b45309); }

/* ═══ La lente dei lotti ═══ */
.mp-ins-lente-cerca[b-7qk06mnyq8] { margin-bottom: 8px; }
.mp-ins-lente-cerca .mp-ins-input[b-7qk06mnyq8] { width: 100%; }
.mp-ins-lente-vuota[b-7qk06mnyq8] {
    padding: 24px 12px; text-align: center;
    font-size: 0.8125rem; color: var(--sedna-text-secondary);
}
.mp-ins-lente-host[b-7qk06mnyq8] { max-height: 55vh; overflow: auto; }
.mp-ins-lente[b-7qk06mnyq8] { width: 100%; border-collapse: collapse; font-size: 0.8125rem; }
.mp-ins-lente th[b-7qk06mnyq8] {
    position: sticky; top: 0; background: var(--sedna-surface);
    text-align: left; font-size: 0.65rem; font-weight: 600; letter-spacing: .04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
    padding: 4px 8px; border-bottom: 1px solid var(--sedna-border);
}
.mp-ins-lente td[b-7qk06mnyq8] {
    padding: 3px 8px; border-bottom: 1px solid var(--sedna-border-light);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 260px;
}
.mp-ins-lente th.num[b-7qk06mnyq8], .mp-ins-lente td.num[b-7qk06mnyq8] {
    text-align: right; font-variant-numeric: tabular-nums;
}
.mp-ins-lente tbody tr[b-7qk06mnyq8] { cursor: pointer; }
.mp-ins-lente tbody tr:hover[b-7qk06mnyq8] { background: var(--sedna-surface-variant); }
/* /Pages/Documenti/MerceProduttori/InserimentoMerceProduttoriPage.razor.rz.scp.css */
/* ═══ INSERIMENTO MERCE PRODUTTORI — LA PAGINA ═══
   Pagina inchiodata: header suo, e il banco è l'elastico che riempie lo schermo.
   Le righe scrollano dentro la griglia, non nella pagina. */

.insmp-page[b-rplunrt1n4] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: calc(100dvh - 24px - var(--sedna-shell-dy, 0px));
}

.insmp-body[b-rplunrt1n4] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    /* ⚠️ Senza, la pagina cresce col contenuto e la griglia non ha un'altezza da
       riempire: il piede-somme si incollava all'ultima riga a metà schermo invece
       di stare in fondo, subito prima dei totali. */
    overflow: hidden;
    margin-top: 8px;
    padding: 10px 14px;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem);
    box-shadow: var(--sedna-shadow-xs);
}

.insmp-body[b-rplunrt1n4]  .mp-ins-banco { flex: 1 1 auto; min-height: 0; }

.insmp-attesa[b-rplunrt1n4] {
    padding: 40px 0;
    text-align: center;
    color: var(--sedna-text-secondary);
    font-size: 0.875rem;
}
/* /Pages/Documenti/MerceProduttori/LiquidaDaMenuPage.razor.rz.scp.css */
/* L'ingresso dal MENU: i criteri stanno nella pagina, non in una finestra. Dal registro
   merce produttori invece la stessa cosa è una modal, perché lì dietro c'è un giornale con
   delle righe spuntate che deve restare a vista. */

.liquida-menu__nota[b-x5i6oktnr4] {
    max-width: 90ch;
    margin: 0.5rem 0 0.75rem;
    font-size: 0.8125rem;
    line-height: 1.5;
    color: var(--sedna-text-secondary);
}

/* La pagina scorre nel suo corpo, non tutta intera: i criteri sono tanti e su un portatile
   non ci stanno, ma l'intestazione con «Elenco» e «Impostazioni» deve restare raggiungibile
   senza tornare in cima. */
.entity-page[b-x5i6oktnr4]  .merceprod-liq-inline {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    padding-right: 0.25rem;
}

/* I comandi in fondo ai criteri, allineati a destra come nel piede della finestra: è lo
   stesso gesto, e cambiargli posto fra le due strade sarebbe cambiarlo per niente. */
.entity-page[b-x5i6oktnr4]  .merceprod-liq-inline__azioni {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 0.75rem 0 0.25rem;
    border-top: 1px solid var(--sedna-border);
    margin-top: 0.75rem;
    position: sticky;
    bottom: 0;
    background: var(--sedna-bg, var(--sedna-surface));
}
/* /Pages/Documenti/MerceProduttori/LiquidazioneOpzioniPopup.razor.rz.scp.css */

/* ── LA DISPOSIZIONE DEL VECCHIO: filtri a sinistra, numerazione a destra ──
   La colonna della numerazione è STRETTA e fissa: dentro ci stanno tre campi corti
   (numero, sezionale, lettera) e allargarla vorrebbe dire togliere spazio ai filtri, dove
   invece ci sono i nomi dei fornitori — che sono lunghi. In finestra stretta le due
   colonne si impilano, la numerazione sotto: è l'ordine in cui si compila. */
/* ⚠️ Le proporzioni del vecchio: i filtri prendono quasi tutto, la numerazione e' una
   colonna stretta a destra (nel vecchio e' circa un sesto della finestra). A sinistra si
   leggono ragioni sociali intere — «1075 - MOSCHETTI MANUEL» — a destra tre campi da
   pochi caratteri. */
.merceprod-liq-alto[b-sry6vdohax] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 14rem;
    gap: 12px;
    align-items: start;
}

@media (max-width: 900px) {
    .merceprod-liq-alto[b-sry6vdohax] { grid-template-columns: minmax(0, 1fr); }
}

/* Senza filtri (selezione dalla griglia) la numerazione non deve prendersi mezza
   finestra: resta a sinistra, della sua larghezza. */
.merceprod-liq-alto:has(> .merceprod-liq-sez--numeraz:only-child)[b-sry6vdohax] {
    grid-template-columns: 15rem;
}

/* ⚠️ E SENZA NUMERAZIONE i filtri si riprendono tutta la riga (Antonio, 2026-08-18: «le
   impostazioni stampa si spostano a seconda della presenza della numerazione»). Senza
   questa regola la colonna destra resterebbe riservata anche da vuota: mezza finestra di
   aria a destra dei filtri, e la sensazione che la finestra cambi forma da sola.
   La sezione della STAMPA invece non si muove mai: sta fuori da questa riga, sotto, a
   tutta larghezza — è la costante che tiene ferma la finestra. */
.merceprod-liq-alto:has(> .merceprod-liq-sez--filtri:only-child)[b-sry6vdohax] {
    grid-template-columns: minmax(0, 1fr);
}

/* I tre campi della numerazione uno sotto l'altro, come nel vecchio. */
.merceprod-liq-sez--numeraz .merceprod-liq-campi[b-sry6vdohax] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}


/* ═══ IL CARTELLO DELLA STAMPA DEFINITIVA ═══
   Colore d'avviso e non d'errore: non c'e' niente di sbagliato: c'e' qualcosa di
   irreversibile. Sta nel piede, dove va l'occhio prima di premere. */
.merceprod-liq-definitiva[b-sry6vdohax] {
    display: flex;
    gap: var(--sedna-space-2);
    align-items: flex-start;
    margin: var(--sedna-space-2) 0;
    padding: var(--sedna-space-2) var(--sedna-space-3);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-warning-50);
    border: 1px solid color-mix(in srgb, var(--sedna-warning-500) 45%, transparent);
    color: var(--sedna-warning-700);
    font-size: var(--sedna-text-sm);
    line-height: var(--sedna-leading-relaxed);
}

.merceprod-liq-definitiva i[b-sry6vdohax] { font-size: 1rem; line-height: 1.4; }
/* /Pages/Documenti/MerceProduttori/LiquidazioneProduttoriPage.razor.rz.scp.css */
/* ═══ Il piano di liquidazione ═══
   Pagina a lettura, non a griglia: si scorre il corpo, la barra della decisione resta
   in fondo. È l'unica pulsantiera che NON sta nell'action bar — si preme dopo aver
   letto quello che sta sopra, non prima. */
.liqprod-page[b-v2vshg938y] { display: flex; flex-direction: column; min-height: 0; }

.liqprod-body[b-v2vshg938y] {
    flex: 1 1 auto; min-height: 0; overflow-y: auto;
    display: flex; flex-direction: column; gap: 10px;
    padding: 2px 2px 8px;
}

.liqprod-attesa[b-v2vshg938y] { display: flex; justify-content: center; padding: 48px 0; }
.liqprod-vuoto__azioni[b-v2vshg938y] { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }

/* ── La fascia di stato ─────────────────────────────────────────────────────── */
.liqprod-stato[b-v2vshg938y] {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 8px 12px; border-radius: var(--sedna-radius-md, .5rem);
    border: 1px solid var(--sedna-border); background: var(--sedna-surface-variant);
    flex-shrink: 0;
}
.liqprod-stato__testo[b-v2vshg938y] { display: flex; align-items: center; gap: 10px; }
.liqprod-stato__icona[b-v2vshg938y] { font-size: 1.15rem; color: var(--sedna-text-secondary); }
.liqprod-stato__eti[b-v2vshg938y] {
    display: block; font-size: 0.8125rem; font-weight: 700; color: var(--sedna-text);
}
.liqprod-stato__frase[b-v2vshg938y] {
    display: block; font-size: 0.75rem; color: var(--sedna-text-secondary);
}

.liqprod-stato--attesa[b-v2vshg938y] { border-color: var(--sedna-primary); }
.liqprod-stato--attesa .liqprod-stato__icona[b-v2vshg938y] { color: var(--sedna-primary); }
.liqprod-stato--ok .liqprod-stato__icona[b-v2vshg938y] { color: var(--sedna-success, #16a34a); }
.liqprod-stato--ko .liqprod-stato__icona[b-v2vshg938y] { color: var(--sedna-danger, #dc2626); }

/* La rotellina gira solo mentre il lavoro gira davvero: un'animazione su uno stato
   fermo direbbe che sta succedendo qualcosa quando non succede niente. */
.liqprod-gira[b-v2vshg938y] { animation: liqprod-rot-b-v2vshg938y 1.1s linear infinite; display: inline-block; }
@keyframes liqprod-rot-b-v2vshg938y { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
    .liqprod-gira[b-v2vshg938y] { animation: none; }
}

/* ── Il conto alla rovescia del blocco ──────────────────────────────────────── */
.liqprod-lease[b-v2vshg938y] {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 10px; border-radius: var(--sedna-radius-input, .375rem);
    background: var(--sedna-surface); border: 1px solid var(--sedna-border-light);
    font-size: 0.75rem; color: var(--sedna-text-secondary); white-space: nowrap;
}
.liqprod-lease__val[b-v2vshg938y] {
    font-variant-numeric: tabular-nums; font-weight: 700; font-size: 0.875rem;
    color: var(--sedna-text);
}
/* Sotto i tre minuti cambia colore: non è un allarme, è il momento in cui conviene
   decidere invece di continuare a leggere. */
.liqprod-lease--corto[b-v2vshg938y] { border-color: var(--sedna-warning, #d97706); }
.liqprod-lease--corto .liqprod-lease__val[b-v2vshg938y] { color: var(--sedna-warning, #d97706); }

/* ── Problemi ed esito ──────────────────────────────────────────────────────── */
.liqprod-problemi[b-v2vshg938y], .liqprod-esito[b-v2vshg938y] { flex-shrink: 0; }
.liqprod-esito__nota[b-v2vshg938y] {
    margin: 6px 0 0; font-size: 0.75rem; color: var(--sedna-text-secondary);
}
.liqprod-errore[b-v2vshg938y] { margin-top: 6px; }
.liqprod-errore__tag[b-v2vshg938y] {
    display: inline-block; margin-right: 6px; padding: 1px 7px;
    border-radius: 999px; font-size: 0.6875rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: .03em;
    background: var(--sedna-surface); border: 1px solid var(--sedna-border);
}
.liqprod-errore__msg[b-v2vshg938y] {
    margin: 6px 0 0; font-family: var(--sedna-font-mono, ui-monospace, monospace);
    font-size: 0.75rem; white-space: pre-wrap; word-break: break-word;
}

/* ── I numeri ───────────────────────────────────────────────────────────────── */
.liqprod-kpi[b-v2vshg938y] {
    display: flex; flex-wrap: wrap; gap: 8px; flex-shrink: 0;
}
.liqprod-kpi__box[b-v2vshg938y] {
    flex: 1 1 110px; min-width: 100px;
    display: flex; flex-direction: column; gap: 1px;
    padding: 7px 11px; border-radius: var(--sedna-radius-md, .5rem);
    border: 1px solid var(--sedna-border-light); background: var(--sedna-surface);
}
.liqprod-kpi__val[b-v2vshg938y] {
    font-size: 1.0625rem; font-weight: 700; color: var(--sedna-text);
    font-variant-numeric: tabular-nums;
}
.liqprod-kpi__lbl[b-v2vshg938y] {
    font-size: 0.625rem; font-weight: 600; letter-spacing: .04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
}
.liqprod-kpi__box--num[b-v2vshg938y] { align-items: flex-end; }
.liqprod-kpi__box--tot[b-v2vshg938y] { border-color: var(--sedna-primary); }

/* ── La tabella dei documenti ───────────────────────────────────────────────── */
.liqprod-doc[b-v2vshg938y] { display: flex; flex-direction: column; gap: 6px; }
.liqprod-doc__head[b-v2vshg938y] {
    display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
}
.liqprod-doc__titolo[b-v2vshg938y] {
    margin: 0; font-size: 0.8125rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: .04em; color: var(--sedna-text-secondary);
}
.liqprod-doc__nota[b-v2vshg938y] { font-size: 0.75rem; color: var(--sedna-text-tertiary); }
.liqprod-doc__vuoto[b-v2vshg938y] { font-size: 0.8125rem; color: var(--sedna-text-secondary); }

/* Larga: scorre DENTRO il suo contenitore, non fa scorrere la pagina di lato. */
.liqprod-tab-wrap[b-v2vshg938y] { overflow-x: auto; }
.liqprod-tab[b-v2vshg938y] {
    width: 100%; border-collapse: collapse; font-size: 0.75rem;
}
.liqprod-tab th[b-v2vshg938y] {
    text-align: left; padding: 5px 8px; white-space: nowrap;
    font-size: 0.625rem; font-weight: 700; letter-spacing: .04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
    border-bottom: 1px solid var(--sedna-border);
}
.liqprod-tab td[b-v2vshg938y] {
    padding: 5px 8px; border-bottom: 1px solid var(--sedna-border-light);
    color: var(--sedna-text);
}
.liqprod-tab .num[b-v2vshg938y] { text-align: right; font-variant-numeric: tabular-nums; }
.liqprod-tab .mono[b-v2vshg938y] { font-family: var(--sedna-font-mono, ui-monospace, monospace); }
.liqprod-tot[b-v2vshg938y] { font-weight: 700; }
.liqprod-cfg[b-v2vshg938y] {
    margin-left: 5px; font-size: 0.6875rem; color: var(--sedna-text-tertiary);
}
/* «(da assegnare)» in tono minore: è una promessa, non un dato. */
.liqprod-danum[b-v2vshg938y] { color: var(--sedna-text-tertiary); font-style: italic; white-space: nowrap; }
.liqprod-perche[b-v2vshg938y] { color: var(--sedna-text-secondary); }
.liqprod-tab--problemi[b-v2vshg938y] { margin-top: 6px; }

/* ── La barra della decisione ───────────────────────────────────────────────── */
.liqprod-decisione[b-v2vshg938y] {
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; flex-wrap: wrap; flex-shrink: 0;
    padding: 9px 12px; margin-top: 6px;
    border-top: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
}
.liqprod-decisione__frase[b-v2vshg938y] { font-size: 0.8125rem; color: var(--sedna-text-secondary); }
.liqprod-decisione__stop[b-v2vshg938y] {
    display: inline-flex; align-items: center; gap: 6px;
    color: var(--sedna-danger, #dc2626); font-weight: 600;
}
.liqprod-decisione__azioni[b-v2vshg938y] { display: flex; gap: 8px; margin-left: auto; }

/* ── I criteri con cui il piano è partito ──
   Riga di servizio: si legge quando serve rispondere a «perché questi produttori», e
   non deve competere con i problemi o coi totali. Da qui la tinta smorzata e il
   monospazio sui valori, che sono codici e date. */
.liqprod-criteri[b-v2vshg938y] {
    display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; flex-shrink: 0;
    padding: 6px 10px; border-radius: var(--sedna-radius-input, .375rem);
    background: var(--sedna-surface-variant); border: 1px solid var(--sedna-border-light);
    font-size: 0.75rem; color: var(--sedna-text-secondary);
}
.liqprod-criteri > i[b-v2vshg938y] { color: var(--sedna-text-tertiary); }
.liqprod-criteri__testo[b-v2vshg938y] {
    font-family: var(--sedna-font-mono, ui-monospace, monospace);
    word-break: break-word; min-width: 0;
}
/* Da selezione o da filtri: è la differenza che spiega un piano più grande del previsto,
   quindi si stacca invece di sciogliersi nella riga. */
.liqprod-criteri__origine[b-v2vshg938y] {
    margin-left: auto; white-space: nowrap;
    font-style: italic; color: var(--sedna-text-tertiary);
}

/* ── Avanzamento della generazione (consegna Bruno §1.9) ──
   Il nome conta più della percentuale: e' quello che distingue un lavoro che procede da
   uno bloccato. Sul fallito resta la sola frase (v. il commento nel markup). */
.liqprod-avanzamento[b-v2vshg938y] {
    display: flex; align-items: center; gap: 10px;
    margin: 8px 0 4px;
    font-size: 0.8125rem; color: var(--sedna-text-secondary);
}
.liqprod-avanzamento__barra[b-v2vshg938y] {
    flex: 0 0 220px; height: 8px;
    background: var(--sedna-surface-variant, #eef2f7);
    border-radius: 999px; overflow: hidden;
}
.liqprod-avanzamento__barra > span[b-v2vshg938y] {
    display: block; height: 100%;
    background: var(--sedna-primary, #2563eb);
    transition: width 0.4s ease-out;
}
.liqprod-avanzamento__perc[b-v2vshg938y] { font-weight: 600; color: var(--sedna-text); }
.liqprod-avanzamento__chi[b-v2vshg938y] { font-style: italic; }
.liqprod-avanzamento--ko .liqprod-avanzamento__chi[b-v2vshg938y] { color: var(--sedna-danger-700, #b91c1c); }

/* Il sottotitolo di una tessera KPI: «trattenuta dalla ditta» sotto la provvigione —
   distingue il numero dall'imponibile senza bisogno di spiegazioni altrove. */
.liqprod-kpi__sub[b-v2vshg938y] {
    display: block;
    font-size: 0.65rem; line-height: 1.2;
    color: var(--sedna-text-tertiary);
}

/* Barra INDETERMINATA per il tratto del salvataggio (v. il markup). */
.liqprod-avanzamento__barra--indet > span[b-v2vshg938y] {
    width: 40%;
    animation: liqprod-scorre-b-v2vshg938y 1.1s ease-in-out infinite;
}
@keyframes liqprod-scorre-b-v2vshg938y {
    0%   { transform: translateX(-100%); }
    100% { transform: translateX(250%); }
}


/* La conferma della generazione: il numero di documenti in grassetto, il resto piano.
   Chi legge questa finestra sta decidendo, non leggendo. */
.mpliq-conferma p[b-v2vshg938y] { margin: 0 0 var(--sedna-space-2); line-height: var(--sedna-leading-relaxed); }

.mpliq-conferma__nota[b-v2vshg938y] {
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
    margin-bottom: 0;
}
/* /Pages/Documenti/MerceProduttori/ProcessiLiquidazionePage.razor.rz.scp.css */
/* ═══ Elenco dei processi di liquidazione ═══
   Righe-scheda e non griglia: ogni processo porta con sé i criteri con cui è partito,
   e quelli sono una frase, non una cella. */
.liqproc-page[b-wim6ixoo2k] { display: flex; flex-direction: column; min-height: 0; }

.liqproc-body[b-wim6ixoo2k] {
    flex: 1 1 auto; min-height: 0; overflow-y: auto;
    display: flex; flex-direction: column; gap: 8px; padding: 2px 2px 8px;
}
.liqproc-attesa[b-wim6ixoo2k] { display: flex; justify-content: center; padding: 48px 0; }

.liqproc-riga[b-wim6ixoo2k] {
    padding: 8px 12px; border-radius: var(--sedna-radius-md, .5rem);
    border: 1px solid var(--sedna-border-light); background: var(--sedna-surface);
    border-left-width: 3px;
}
/* La tinta sta sul bordo sinistro, non sullo sfondo: un elenco di schede colorate
   diventa illeggibile appena i processi sono più di tre. */
.liqproc-riga--corso[b-wim6ixoo2k] { border-left-color: var(--sedna-primary); }
.liqproc-riga--ok[b-wim6ixoo2k] { border-left-color: var(--sedna-success, #16a34a); }
.liqproc-riga--ko[b-wim6ixoo2k] { border-left-color: var(--sedna-danger, #dc2626); }
.liqproc-riga--chiuso[b-wim6ixoo2k] { border-left-color: var(--sedna-border); }

.liqproc-riga__capo[b-wim6ixoo2k] {
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
}
.liqproc-stato[b-wim6ixoo2k] {
    font-size: 0.6875rem; font-weight: 700; letter-spacing: .04em;
    text-transform: uppercase; color: var(--sedna-text-secondary);
    min-width: 130px;
}
.liqproc-riga--ko .liqproc-stato[b-wim6ixoo2k] { color: var(--sedna-danger, #dc2626); }
.liqproc-riga--ok .liqproc-stato[b-wim6ixoo2k] { color: var(--sedna-success, #16a34a); }
.liqproc-riga--corso .liqproc-stato[b-wim6ixoo2k] { color: var(--sedna-primary); }

/* La targhetta «prova»: si legge, non grida. Deve distinguere una prova riuscita da una
   liquidazione annullata — che nell'elenco si somigliano — senza rubare la scena allo stato. */
.liqproc-prova[b-wim6ixoo2k] {
    font-size: 0.6875rem; font-weight: 600; letter-spacing: .02em;
    padding: 1px 7px; border-radius: 999px; white-space: nowrap;
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface-2, rgba(127, 127, 127, .12));
    border: 1px solid var(--sedna-border, rgba(127, 127, 127, .28));
}

.liqproc-quando[b-wim6ixoo2k] {
    font-size: 0.75rem; color: var(--sedna-text); font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.liqproc-chi[b-wim6ixoo2k] { font-size: 0.75rem; color: var(--sedna-text-secondary); }

.liqproc-conta[b-wim6ixoo2k] { display: inline-flex; gap: 12px; font-size: 0.75rem; color: var(--sedna-text-secondary); }
.liqproc-conta strong[b-wim6ixoo2k] { color: var(--sedna-text); font-variant-numeric: tabular-nums; }

.liqproc-azioni[b-wim6ixoo2k] { display: inline-flex; gap: 6px; margin-left: auto; }

.liqproc-param[b-wim6ixoo2k] {
    display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
    margin-top: 4px; font-size: 0.75rem; color: var(--sedna-text-secondary);
}
.liqproc-param > i[b-wim6ixoo2k] { color: var(--sedna-text-tertiary); }

.liqproc-json[b-wim6ixoo2k] {
    margin: 6px 0 0; padding: 8px 10px; overflow-x: auto;
    border-radius: var(--sedna-radius-input, .375rem);
    background: var(--sedna-surface-variant); border: 1px solid var(--sedna-border-light);
    font-family: var(--sedna-font-mono, ui-monospace, monospace); font-size: 0.6875rem;
    white-space: pre-wrap; word-break: break-word;
}

.liqproc-errore[b-wim6ixoo2k] { margin-top: 6px; font-size: 0.75rem; }
.liqproc-errore__tag[b-wim6ixoo2k] {
    display: inline-block; margin-right: 6px; padding: 1px 7px;
    border-radius: 999px; font-size: 0.625rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: .03em;
    background: var(--sedna-surface-variant); border: 1px solid var(--sedna-border);
    color: var(--sedna-text-secondary);
}
.liqproc-errore__msg[b-wim6ixoo2k] {
    font-family: var(--sedna-font-mono, ui-monospace, monospace);
    color: var(--sedna-danger, #dc2626); word-break: break-word;
}

/* Da selezione o da filtri, e l'avanzamento: due informazioni che prima si scoprivano
   solo aprendo il piano — un clic per qualcosa che deve stare nella riga. */
.liqproc-origine[b-wim6ixoo2k] {
    font-style: italic; color: var(--sedna-text-tertiary); white-space: nowrap;
}
.liqproc-avanz[b-wim6ixoo2k] {
    font-variant-numeric: tabular-nums; color: var(--sedna-primary); white-space: nowrap;
}

/* ── Archiviazione e avanzamento (consegna Bruno §1.8-1.9) ── */

/* L'interruttore degli archiviati sta nella barra del titolo, accanto al pulsante che li
   crea: si accende per andare a riprendere quello che si è appena messo via. */
.liqproc-toggle[b-wim6ixoo2k] {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 0.75rem; color: var(--sedna-text-secondary);
    cursor: pointer; user-select: none;
}

/* L'avanzamento: barra sottile, percentuale, e SOPRATTUTTO il nome — è quello che
   distingue un lavoro che procede da uno bloccato. */
.liqproc-progress[b-wim6ixoo2k] {
    display: flex; align-items: center; gap: 10px;
    margin-top: 6px;
    font-size: 0.75rem; color: var(--sedna-text-secondary);
}
.liqproc-progress__barra[b-wim6ixoo2k] {
    flex: 0 0 160px; height: 6px;
    background: var(--sedna-surface-variant, #eef2f7);
    border-radius: 999px; overflow: hidden;
}
.liqproc-progress__barra > span[b-wim6ixoo2k] {
    display: block; height: 100%;
    background: var(--sedna-primary, #2563eb);
    transition: width 0.4s ease-out;
}
.liqproc-progress__perc[b-wim6ixoo2k] { font-weight: 600; color: var(--sedna-text); }
.liqproc-progress__chi[b-wim6ixoo2k] { font-style: italic; }

/* ── I criteri esatti, in italiano ──
   Due colonne: etichetta e valore. I criteri NON impostati restano visibili ma tenui —
   quando un piano esce piu' grande del previsto la risposta e' quasi sempre un intervallo
   che nessuno ha ristretto, e un elenco dei soli campi pieni non lo fa vedere. */
.liqproc-voci[b-wim6ixoo2k] { margin: 4px 0 6px; display: flex; flex-direction: column; gap: 2px; }
.liqproc-voci__riga[b-wim6ixoo2k] {
    display: grid; grid-template-columns: 190px 1fr; gap: 8px;
    font-size: 0.75rem;
}
.liqproc-voci__riga > dt[b-wim6ixoo2k] { color: var(--sedna-text-tertiary); font-weight: 600; }
.liqproc-voci__riga > dd[b-wim6ixoo2k] { margin: 0; color: var(--sedna-text); }
.liqproc-voci__riga--aperta > dt[b-wim6ixoo2k],
.liqproc-voci__riga--aperta > dd[b-wim6ixoo2k] { color: var(--sedna-text-tertiary); font-weight: 400; }

/* Barra INDETERMINATA: il tratto del salvataggio non ha una percentuale che si muove, e
   una barra ferma per venti secondi somiglia a un processo morto. */
.liqproc-progress__barra--indet > span[b-wim6ixoo2k] {
    width: 40%;
    animation: liqproc-scorre-b-wim6ixoo2k 1.1s ease-in-out infinite;
}
@keyframes liqproc-scorre-b-wim6ixoo2k {
    0%   { transform: translateX(-100%); }
    100% { transform: translateX(250%); }
}
/* /Pages/Documenti/MerceProduttori/RegistroMerceProduttoriPage.razor.rz.scp.css */
/* ═══ Controllo Merce Produttori ═══ */

/* ============================================================================
   FILTRI — i principali su UNA riga, il resto negli avanzati
   Prima stavano dentro lo slot ToolbarActions della griglia: nella stessa barra
   di ricerca, contatore, Esporta e Colonne, senza etichette e senza larghezze
   proprie. Quattro combo che si prendono lo spazio che trovano in una barra che
   va a capo (flex-wrap della .ssg__toolbar) = filtri sparsi su tre righe e
   «Pulisci» da solo in fondo.
   Qui sono righe di PAGINA: nowrap, cosi' una riga resta una riga, e scroll
   orizzontale come ultima risorsa invece del capo (nello scadenzario e nel
   bilancio la scelta e' la stessa). Ordine verticale: principali → avanzati
   (a scomparsa) → chip dei filtri attivi.
   ============================================================================ */
.mp-filters[b-r7r8rwve7d] {
    flex: none;
    padding: 4px 0 8px;
}

/* LA FASCIA E' IN DUE PEZZI: i criteri, che scorrono quando non ci stanno, e i comandi,
   che non scorrono mai. Su schermo stretto «Filtra» e «Avanzati» se ne andavano insieme
   ai filtri — e sono i due che servono sempre. Scorrono i criteri, non i comandi. */
.mp-filter-bar[b-r7r8rwve7d] {
    display: flex;
    align-items: flex-end;
    gap: 8px;
}

.mp-filter-row[b-r7r8rwve7d] {
    display: flex;
    align-items: flex-end;
    gap: 8px;
    flex-wrap: nowrap;
    overflow-x: auto;
    padding-bottom: 2px;
}

/* min-width:0 e' quello che fa scorrere i criteri invece di allargare la fascia: senza,
   un figlio flex non scende sotto la larghezza del proprio contenuto e la barra di
   scorrimento comparirebbe sulla PAGINA, portandosi via anche i comandi. */
.mp-filter-bar > .mp-filter-row[b-r7r8rwve7d] {
    flex: 1 1 auto;
    min-width: 0;
}

/* I comandi: fermi, a destra, sulla stessa base degli input (padding-bottom uguale a
   quello della riga che scorre, o starebbero due pixel piu' in basso). */
.mp-filter-cmds[b-r7r8rwve7d] {
    flex: none;
    display: flex;
    align-items: flex-end;
    gap: 8px;
    padding-bottom: 2px;
}
/* Nessun filtro si allunga o si comprime: le larghezze sono quelle tarate sotto. */
.mp-filter-row > *[b-r7r8rwve7d] { flex: none; }

.fg[b-r7r8rwve7d] { display: flex; flex-direction: column; gap: 4px; }
.fg .fl[b-r7r8rwve7d] {
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    white-space: nowrap;
}

/* ---------------------------------------------------------------------------
   Larghezze dei combo, tarate sulla VOCE PIU' LUNGA di ciascuna tendina.
   I SednaComboBox sono componenti FIGLI (root .sedna-combobox-native, width
   100%) con scope CSS proprio: le regole scoped della pagina non li raggiungono
   se non passando da un selettore della pagina + ::deep.
   --------------------------------------------------------------------------- */

/* Ogni tendina e' larga quanto la sua VOCE PIU' LUNGA, non quanto le altre: e' la
   richiesta di Antonio («ridimensiona in base a quello che potranno contenere») ed
   e' anche l'unico modo di farle stare tutte su una riga sola. Regola spannometrica
   usata qui: ~6,2px per carattere a 12px + 26px di cornice e chevron.

   Base: «Controllate», «Stampati», 11-12 caratteri. */
.mp-filter-row[b-r7r8rwve7d]  .mp-se { width: 112px; }

/* Controllo: la voce piu' lunga e' «Da controllare», 14 caratteri. */
.mp-filter-row[b-r7r8rwve7d]  .mp-se--ctrl { width: 128px; }

/* Documenti: «Non Stampati», 12 caratteri. */
.mp-filter-row[b-r7r8rwve7d]  .mp-se--stampa { width: 118px; }

/* Tipo Merce: ora la voce piu' lunga e' «Tutti (escluso IM-PC)», 21 caratteri. */
.mp-filter-row[b-r7r8rwve7d]  .mp-se--merce { width: 156px; }

/* Tipo Doc.: i codici tipo documento sono corti (3-5 caratteri), ma la tendina si
   riempie coi valori della ditta e non si sa quanto lunghi: 96px reggono i casi
   normali (i codici tipo documento sono 3-5 caratteri), e la tendina aperta e'
   larga quanto serve (min-width 100%, non width). */
.mp-filter-row[b-r7r8rwve7d]  .mp-se--doc { width: 96px; }

/* Righe a zero: «Righe diverse 0», 15 caratteri. */
.mp-filter-row[b-r7r8rwve7d]  .mp-se--zero { width: 128px; }

/* Sotto Fam.: le voci sono «CODICE - Descrizione» e non hanno un tetto. 138px
   tengono i casi normali e il resto va in ellissi: la scelta la si fa dalla
   tendina aperta, che e' larga quanto serve (min-width 100%, non width). */
.mp-filter-row[b-r7r8rwve7d]  .mp-se--sfam { width: 138px; }

/* For.Cont: «For. Non Contabilizzati», 23 caratteri — la voce piu' lunga di tutta
   la fascia. Sta negli avanzati, dove lo spazio non e' conteso. */
.mp-filter-row[b-r7r8rwve7d]  .mp-se--cont { width: 168px; }

/* Tipo Articolo: «Imballaggi», ma sta negli avanzati dove lo spazio non e' conteso. */
.mp-filter-row[b-r7r8rwve7d]  .mp-se--tipoart { width: 120px; }

/* Tipo For.: la voce piu' lunga e' «Produttore (P)», 14 caratteri. */
.mp-filter-row[b-r7r8rwve7d]  .mp-se--tipofor { width: 128px; }

/* ---------------------------------------------------------------------------
   Le due date
   --------------------------------------------------------------------------- */
.mp-daterange[b-r7r8rwve7d] { display: flex; align-items: center; gap: 4px; }
.mp-daterange .sep[b-r7r8rwve7d] { color: var(--sedna-text-tertiary); font-size: 0.75rem; }
.mp-datew[b-r7r8rwve7d] { display: inline-flex; }

/* dd/MM/yyyy = dieci caratteri, e la casella deve farli vedere TUTTI.
   Nemmeno 116px bastavano, e questa volta il conto e' misurato sulla pagina vera
   invece che stimato:
     testo "03/08/2026" alla font reale (12px)   61px
     padding dell'input (5 + 2)                   7px
     pulsante di azzeramento                     18px
     pulsante del calendario                     31px
     bordi                                        2px
                                            -------------
                                                119px  ->  a 116 la data andava in
   ellissi ("03/08/2...") e restavano 54px di testo visibile su 61 necessari.
   128px lasciano il margine per il cursore e per le font leggermente piu' larghe.

   ⚠️ NON E' SOLO ESTETICA. Con la data troncata non si vede DOVE si sta scrivendo, e
   un clic in mezzo alla casella cade sul MESE invece che sul giorno: da li' in poi la
   mask DevExpress riempie le sezioni a partire dal mese e il giorno digitato finisce
   nel mese — il giorno resta quello di prima. E' il meccanismo con cui il periodo
   sembrava "tornare a oggi" (v. la guardia della mask in SednaDateEdit).

   ⚠️ La regola vale per TUTTE le caselle data della fascia, non solo per la prima
   coppia: sono tutte marcate .mp-date, ed e' l'unico punto in cui si tocca la loro
   larghezza. Oggi la coppia e' una sola; una seconda nascerebbe gia' giusta. */
/* 140, non 128: col pulsante di clear dentro, a 128 la data maschera va in
   ellipsis — stesso numero già misurato sul bilancio giornaliero (2026-08-05). */
/* Larghezza dal contenuto: vedi SednaDateEdit. */
.mp-filter-row[b-r7r8rwve7d]  .mp-date { width: calc(10ch + 3.75rem); }
.mp-filter-row[b-r7r8rwve7d]  .mp-date .dxbl-edit { min-width: 0; }

/* Il date edit e' un componente figlio e nasce PIU' ALTO dei combo: senza
   riportarlo all'altezza degli input la riga si allinea su di lui e tutto il
   resto sembra sfalsato. */
.mp-filter-row[b-r7r8rwve7d]  .mp-date .dxbl-edit,
.mp-filter-row[b-r7r8rwve7d]  .mp-date input[type="text"] {
    height: var(--sedna-input-height, 1.375rem);
    min-height: var(--sedna-input-height, 1.375rem);
}

/* ---------------------------------------------------------------------------
   Campi di testo degli avanzati
   Input HTML della pagina, non wrapper DevExpress: con @bind:event="oninput" il
   valore e' committato a ogni tasto, quindi non esiste il caso "digitato ma non
   ancora nel binding" che sui campi con mask obbliga a rileggere il testo a video.
   --------------------------------------------------------------------------- */
.mp-inp[b-r7r8rwve7d] {
    box-sizing: border-box;
    width: 150px;
    height: var(--sedna-input-height, 1.375rem);
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-input, .375rem);
    padding: 0 8px;
    font-family: inherit;
    font-size: var(--sedna-input-font-size, 0.75rem);
    color: var(--sedna-text);
    outline: none;
}
.mp-inp[b-r7r8rwve7d]::placeholder { color: var(--sedna-text-tertiary); }
.mp-inp:focus[b-r7r8rwve7d] { border-color: var(--sedna-primary); box-shadow: 0 0 0 2px var(--sedna-primary-subtle); }
/* Il lotto e' un numero: mono e cifre a larghezza fissa, come nelle celle. */
.mp-inp--lotto[b-r7r8rwve7d] { width: 120px; font-family: var(--sedna-font-mono); font-variant-numeric: tabular-nums; }

/* ---------------------------------------------------------------------------
   Filtra / Avanzati
   Sono COMANDI, non campi: piu' bassi dei filtri, come nel bilancio e nello
   scadenzario. Bottoni della pagina e non SednaButton perche' quello nasce sui
   28px della pulsantiera e sfalsava la riga.
   --------------------------------------------------------------------------- */
.mp-apply[b-r7r8rwve7d],
.mp-adv[b-r7r8rwve7d] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    gap: 6px;
    /* ALTI COME GLI INPUT della fascia, non come i bottoni dell'app. Nel design system
       gli input stanno sul token (20-22px) e i bottoni su control-height-md (~28px):
       qui i due comandi sono in riga con le tendine e le caselle data, e due altezze
       diverse nella stessa riga si vedono. Il token si legge SOLO qui — l'altezza
       generale dei bottoni non si tocca, o cambierebbe ogni pulsante dell'applicazione. */
    height: var(--sedna-input-height, 1.375rem);
    padding: 0 10px;
    line-height: 1;
    border-radius: var(--sedna-radius-base, .375rem);
    font-size: 0.75rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    white-space: nowrap;
}

.mp-apply[b-r7r8rwve7d] {
    border: 1px solid var(--sedna-primary);
    background: var(--sedna-primary);
    color: var(--sedna-text-inverse, #fff);
}
.mp-apply:hover:not(:disabled)[b-r7r8rwve7d] { background: var(--sedna-primary-hover); border-color: var(--sedna-primary-hover); }
.mp-apply:disabled[b-r7r8rwve7d] { opacity: .6; cursor: default; }
/* Filtri toccati e non applicati: il pulsante lo DICE (e la griglia resta vuota).
   Senza questo segnale, "ho cambiato il periodo e non e' cambiato niente" e'
   indistinguibile da "non ci sono righe in quel periodo".
   Anello FERMO e non un lampeggio: e' la stessa resa della scheda contabile, e su
   una pagina che si guarda per leggere numeri un'animazione perpetua da' solo
   fastidio. */
.mp-apply.pending[b-r7r8rwve7d] { box-shadow: 0 0 0 3px var(--sedna-primary-subtle); }

.mp-adv[b-r7r8rwve7d] {
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
}
.mp-adv:hover[b-r7r8rwve7d] { color: var(--sedna-text); border-color: var(--sedna-border-strong); }
.mp-adv.open[b-r7r8rwve7d] { color: var(--sedna-primary); border-color: var(--sedna-primary); }

/* Pallino col numero di filtri avanzati attivi: a pannello CHIUSO e' l'unico
   segnale che la lista e' ristretta da qualcosa che non si vede. */
.mp-adv__n[b-r7r8rwve7d] {
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 999px;
    background: var(--sedna-primary);
    color: var(--sedna-text-inverse, #fff);
    font-size: 0.625rem;
    line-height: 16px;
    text-align: center;
}

.mp-apply:focus-visible[b-r7r8rwve7d],
.mp-adv:focus-visible[b-r7r8rwve7d] { outline: 2px solid var(--sedna-primary); outline-offset: 1px; }

/* Seconda riga (avanzati): stessa griglia della prima, un filo staccata.
   Ma qui i filtri VANNO A CAPO, al contrario della riga principale. Sono
   diventati tredici (i cinque criteri del vecchio che prima non avevano un
   campo: cliente, agente cliente, buono, lettera, tipo fornitore) e su una riga
   sola sarebbero finiti dietro uno scorrimento orizzontale — cioe' nascosti, in
   un pannello che si apre APPOSTA per vederli. Qui lo spazio verticale c'e' (il
   pannello e' a scomparsa e spinge in giu' la griglia solo quando e' aperto),
   quindi il capo e' gratis e lo scorrimento no.
   Con l'andare a capo l'overflow non serve piu': via anche il ritaglio, che su
   questa fascia era costato le tendine dei combo (v. 9cfef30). */
.mp-filter-row--adv[b-r7r8rwve7d] {
    padding-top: 6px;
    flex-wrap: wrap;
    overflow-x: visible;
    row-gap: 8px;
}

/* ---------------------------------------------------------------------------
   Chip dei filtri attivi
   Sono cio' che rende sicuro nascondere dei filtri in un accordion: dicono cosa
   sta restringendo la lista anche a pannello chiuso.
   --------------------------------------------------------------------------- */
.mp-chips[b-r7r8rwve7d] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 0 2px; }
.fchip[b-r7r8rwve7d] {
    display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 5px 0 10px;
    border-radius: 999px; background: var(--sedna-surface-variant); color: var(--sedna-text);
    font-size: 0.75rem; font-weight: 600; white-space: nowrap;
}
.fchip .k[b-r7r8rwve7d] { color: var(--sedna-text-tertiary); font-weight: 500; }
.fchip .x[b-r7r8rwve7d] {
    width: 18px; height: 18px; flex: none; display: grid; place-items: center; border: none;
    background: transparent; color: var(--sedna-text-tertiary); cursor: pointer;
    border-radius: 50%; font-size: 0.7rem; padding: 0;
}
.fchip .x:hover[b-r7r8rwve7d] { background: var(--sedna-border-strong); color: var(--sedna-text); }
.mp-chips__clear[b-r7r8rwve7d] {
    background: none; border: none; cursor: pointer; color: var(--sedna-primary);
    font-size: 0.75rem; font-weight: 600; font-family: inherit; margin-left: 2px;
}
.mp-chips__clear:hover[b-r7r8rwve7d] { text-decoration: underline; }

/* ============================================================================
   LA GRIGLIA EDITABILE
   La SednaEditableGrid nasce senza altezza propria (nel corpo documento sta dentro
   una card che scorre con la pagina): qui vive nel guscio .sedna-page, dove scrolla
   solo il corpo. Quindi la si fa colonna flex e si da' lo scroll al suo wrapper,
   con le intestazioni appiccicate in alto — su una lista di qualche centinaio di
   righe, perdere i nomi di colonna dopo due schermate vuol dire non sapere piu' cosa
   si sta guardando.
   Tutto quello che sta DENTRO la griglia e' di un componente figlio: ::deep.
   ============================================================================ */
.mp-grid-host[b-r7r8rwve7d] {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1 1 auto;
}

.mp-grid-host[b-r7r8rwve7d]  .sedna-editable-grid {
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1 1 auto;
}

.mp-grid-host[b-r7r8rwve7d]  .sedna-editable-grid__wrapper {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
}

/* ⚠️ IL CORPO ALTO QUANTO LA PAGINA, coi totali ANCORATI IN BASSO.
   Con quattro righe la tabella restava alta quattro righe: i totali si appiccicavano
   all'ultima riga e sotto restava mezza pagina bianca, col paginatore staccato in
   fondo — «dalla foto sembra tagliata».
   FillEmptySpace era GIA' acceso e non bastava: la riga-filler della griglia e' alta
   il 100% del suo contenitore, ma una TABELLA nasce alta quanto il contenuto, quindi
   quel 100% era il 100% di niente. Stirando la tabella al wrapper il filler prende
   l'altezza che avanza e il tfoot dei totali va a fondo.
   Su una tabella l'altezza vale come MINIMO: a pagina piena non taglia niente, cresce
   col contenuto e lo scroll resta quello del wrapper. */
.mp-grid-host[b-r7r8rwve7d]  .sedna-editable-grid__table {
    height: 100%;
}

.mp-grid-host[b-r7r8rwve7d]  .sedna-editable-grid__table thead th {
    position: sticky;
    top: 0;
    z-index: 3;
}

/* Il paginatore sta in fondo alla griglia e non scorre con le righe: e' il comando
   con cui ci si sposta nel registro, e cercarlo scorrendo non e' un modo di usarlo. */
.mp-grid-host[b-r7r8rwve7d]  .seg-pager { flex: none; }

/* Il piede dei totali resta a video mentre la lista scorre: e' il numero su cui si
   decide di liquidare, e cercarlo scorrendo fino in fondo non e' un modo di leggerlo. */
.mp-grid-host[b-r7r8rwve7d]  .sedna-editable-grid__table tfoot {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: var(--sedna-surface);
}

/* Loader di marca sopra la griglia: velo, non sostituzione — cosi' intestazioni e
   barra restano dove sono e il layout non balla a ogni «Filtra». */
.mp-caricamento[b-r7r8rwve7d] {
    position: absolute;
    inset: 0;
    z-index: 10;
    display: grid;
    place-items: center;
    background: color-mix(in srgb, var(--sedna-surface) 78%, transparent);
}

/* ---------------------------------------------------------------------------
   Barra della griglia: ricerca, selezione, export
   --------------------------------------------------------------------------- */
/* Il fornitore della riga col fuoco, IN FONDO alla barra della griglia.
   Larghezza FISSA: il nome cambia a ogni riga e, se la scatola lo seguisse, la barra si
   riassesterebbe sotto il cursore mentre si scorre. Il nome lungo va in ellissi e resta
   per intero nel title.
   In fondo, e non in mezzo: cosi' quando non c'e' una riga a fuoco l'elemento puo'
   sparire del tutto senza lasciare un buco e senza spostare gli altri comandi — le due
   esigenze (niente spazio vuoto, larghezza stabile) si tengono insieme solo qui. */
.mp-gfor[b-r7r8rwve7d] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    flex: 0 0 auto;
    width: 230px;
    min-width: 0;
    height: 22px;
    color: var(--sedna-text-secondary);
    font-size: 0.7rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.mp-gfor b[b-r7r8rwve7d] { color: var(--sedna-text); font-weight: 700; }
.mp-gfor i[b-r7r8rwve7d] { color: var(--sedna-text-tertiary); }

.mp-gsearch[b-r7r8rwve7d] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 8px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, .375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text-tertiary);
    font-size: 0.7rem;
}
.mp-gsearch:focus-within[b-r7r8rwve7d] { border-color: var(--sedna-primary); box-shadow: 0 0 0 2px var(--sedna-primary-subtle); }
.mp-gsearch input[b-r7r8rwve7d] {
    width: 190px;
    border: none;
    outline: none;
    background: transparent;
    font-family: inherit;
    font-size: var(--sedna-input-font-size, 0.75rem);
    color: var(--sedna-text);
}

.mp-gsel[b-r7r8rwve7d],
.mp-gselall[b-r7r8rwve7d],
.mp-gsaving[b-r7r8rwve7d],
.mp-gexport[b-r7r8rwve7d] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 8px;
    border-radius: var(--sedna-radius-base, .375rem);
    font-size: 0.7rem;
    font-weight: 600;
    font-family: inherit;
    white-space: nowrap;
}

.mp-gsel[b-r7r8rwve7d] { background: var(--sedna-primary-subtle); color: var(--sedna-primary); border: 1px solid transparent; }
.mp-gsel button[b-r7r8rwve7d] {
    display: grid; place-items: center; width: 16px; height: 16px; padding: 0;
    border: none; background: transparent; color: inherit; cursor: pointer; border-radius: 50%;
}
.mp-gsel button:hover[b-r7r8rwve7d] { background: var(--sedna-surface); }

.mp-gselall[b-r7r8rwve7d],
.mp-gexport[b-r7r8rwve7d] {
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    cursor: pointer;
}
.mp-gselall:hover:not(:disabled)[b-r7r8rwve7d],
.mp-gexport:hover:not(:disabled)[b-r7r8rwve7d] { color: var(--sedna-text); border-color: var(--sedna-border-strong); }
.mp-gexport:disabled[b-r7r8rwve7d] { opacity: .5; cursor: default; }
/* Il CSV e' l'alternativa di chi lo apre con altro: sta accanto all'Excel, piu'
   piccolo, perche' e' la scelta meno frequente delle due. */
.mp-gexport--csv[b-r7r8rwve7d] { padding: 0 6px; font-size: 0.65rem; }

/* «sto salvando»: un segnale piccolo e fermo. La riga ha gia' il suo, questo dice
   soltanto che c'e' del traffico in corso. */
.mp-gsaving[b-r7r8rwve7d] { color: var(--sedna-text-tertiary); }
.mp-gsaving > i[b-r7r8rwve7d] { animation: mp-gira-b-r7r8rwve7d 1s linear infinite; }
@keyframes mp-gira-b-r7r8rwve7d { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
    .mp-gsaving > i[b-r7r8rwve7d] { animation: none; }
}

/* ---------------------------------------------------------------------------
   Stato vuoto e piede dei totali (slot della griglia: ::deep)
   --------------------------------------------------------------------------- */
.mp-grid-host[b-r7r8rwve7d]  .mp-vuoto {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 28px 12px;
    color: var(--sedna-text-secondary);
    font-size: 0.8rem;
    white-space: normal;
}
.mp-grid-host[b-r7r8rwve7d]  .mp-vuoto > i { font-size: 1.6rem; color: var(--sedna-text-tertiary); }
.mp-grid-host[b-r7r8rwve7d]  .mp-vuoto > strong { color: var(--sedna-text); font-size: 0.875rem; }

/* ═══ LA STRISCIA DEI TOTALI ═══
   Sorella della griglia dentro .mp-grid-host, NON dentro la tabella: cosi' non finisce
   nel contenitore che scorre in orizzontale. Era li' che stava, ed era il difetto —
   tredici valori etichettati che scorrono con le colonne non si vedono mai piu' della
   meta'.
   flex-wrap: se non ci stanno su una riga vanno a capo. Non si mandano fuori vista, e
   non si accorciano fino a diventare indovinelli. */
.mp-totali[b-r7r8rwve7d] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    /* Lo stacco fra i due GRUPPI e' piu' largo di quello fra le voci: e' cosi' che si
       legge che pesi e denaro sono due cose diverse, senza una riga verticale che,
       quando i gruppi vanno a capo, resterebbe a mezz'aria. */
    /* ⚠️ SU UNA RIGA SOLA anche sul MacBook 14" (Antonio, 2026-08-05): niente capo.
       Le misure qui sotto sono tarate perche' tredici tessere entrino in ~1250px
       (1512 di schermo meno la barra laterale): spazi e padding al minimo leggibile.
       Lo scroll orizzontale resta come ESTREMA RATIO per i periodi lunghi con
       importi a sette cifre, che non entrano fisicamente — meglio uno scroll raro
       che due righe fisse. */
    flex-wrap: nowrap;
    overflow-x: auto;
    gap: 2px 12px;
    /* ═══ STESSA VESTE DEL PIEDE DARE/AVERE DI PRIMA NOTA ═══
       Antonio, 2026-08-04: «rendi la riga dei totali con lo stesso stile della riga
       totali dare e avere in movimento contabile». Non e' una preferenza estetica: due
       schermate che fanno la stessa cosa — chiudere in fondo con i numeri che contano —
       devono avere la stessa faccia, o l'utente deve impararle come se fossero due
       programmi. Misure e colori sono copiati da .pn-quadratura, non reinventati simili:
       se un domani cambia quella, questa va cambiata di conseguenza (o meglio, si
       promuove il blocco nel design system, che e' il posto suo).

       Prima era una striscia con un filo sopra; ora e' una BANDA staccata — bordo su
       tutti e quattro i lati, angoli tondi, un filo di distacco dalla griglia — che si
       legge come un piede e non come l'ultima riga della tabella. */
    margin-top: 0.375rem;
    padding: 0.375rem 0.75rem;
    border: 1px solid color-mix(in srgb, var(--sedna-primary) 40%, transparent);
    border-radius: var(--sedna-radius-md, 0.375rem);
    background: var(--sedna-surface, #fff);
    box-shadow: var(--sedna-shadow-xs);
    /* ⚠️ 0.8125rem, non 0.7rem (Antonio: «i totali in basso devono essere piu' grandi»).
       Erano 11px: la misura delle note a pie' di pagina, su numeri che sono il motivo per
       cui si guarda questa schermata. E' anche la misura di .pn-quadratura. */
    font-size: 0.8125rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    line-height: 1.5;
}
.mp-totali__g[b-r7r8rwve7d] {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 4px;
    min-width: 0;
}
/* Il gruppo dei PESI tiene il fianco sinistro, quello del DENARO il destro: su una riga
   sola restano ai due capi come nel vecchio, e quando vanno a capo ognuno resta dalla
   sua parte invece di ammucchiarsi al centro. */
.mp-totali__g:first-child[b-r7r8rwve7d] { margin-right: auto; }

.mp-totali__n[b-r7r8rwve7d] { margin-right: auto; color: var(--sedna-text-tertiary); }

/* ── OGNI VOCE E' UNA TESSERA VERTICALE: etichetta SOPRA, numero SOTTO ──
   (Antonio, 2026-08-05: «le label allineate orizzontalmente col testo... mettile
   sopra».) La costruzione resta quella dei badge di prima nota — chip neutro con
   gli angoli tondi — ma l'asse gira: con tredici voci in fila l'etichetta di
   fianco allargava ogni chip e la striscia andava a capo; sopra, ogni tessera e'
   stretta quanto il suo numero e la riga tiene.
   ⚠️ Chip NEUTRO, non giallo/verde: quei due colori nel nostro linguaggio vogliono dire
   Dare e Avere (token --sedna-dare/--sedna-avere), e qui non c'e' nessun dare e nessun
   avere. Prendere il colore insieme alla forma avrebbe detto una cosa falsa. */
.mp-totali__v[b-r7r8rwve7d] {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
    padding: 2px 6px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border-light);
    color: var(--sedna-text);
    font-weight: 700;
    font-size: 0.75rem;
    white-space: nowrap;
    line-height: 1.2;
}

/* L'ETICHETTA sta SOPRA, piccola e maiuscola; il NUMERO sotto, grande e in nero.
   Stessa gerarchia dei badge di prima nota: si cerca il numero, la parola dice
   soltanto quale numero e'. (L'<em> viene prima nel markup: con l'asse in colonna
   finisce sopra da solo, senza `order`.) */
.mp-totali__v em[b-r7r8rwve7d] {
    font-style: normal;
    font-weight: 700;
    font-size: 0.5625rem;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
    margin-right: 0;
}

/* IMPONIBILE e TOTALE sono i due che si cercano davvero: chip in tinta primaria, come
   in prima nota i due badge colorati sono gli unici a staccarsi dal fondo. */
.mp-totali__v--forte[b-r7r8rwve7d] {
    background: var(--sedna-primary-subtle);
    border-color: color-mix(in srgb, var(--sedna-primary) 35%, transparent);
    font-size: 0.8125rem;
}
.mp-totali__v--forte em[b-r7r8rwve7d] { font-size: 0.5625rem; color: var(--sedna-primary); }

/* Totali in aggiornamento: sbiadiscono invece di sparire. Toglierli farebbe ballare
   l'altezza a ogni «Filtra»; lasciarli pieni li spaccerebbe per freschi mentre sono
   ancora quelli del filtro di prima. */
.mp-totali--attesa[b-r7r8rwve7d] { opacity: 0.45; }

/* Il piede include modifiche non ancora salvate: una nota, non un allarme — la
   riga si sta ancora scrivendo e va bene cosi'. Colore d'avviso tenue, mai rosso:
   non c'e' niente di sbagliato da correggere. */
.mp-totali__stima[b-r7r8rwve7d] {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 2px 8px; border-radius: 999px;
    font-size: 0.6875rem; font-weight: 600; white-space: nowrap;
    background: var(--sedna-warning-50); color: #92600e;
    border: 1px solid color-mix(in srgb, var(--sedna-warning-500) 40%, transparent);
}

/* ---------------------------------------------------------------------------
   Le celle in SOLA LETTURA
   Vestite come gli editor — stessa altezza, stesso font, stesso allineamento — cosi'
   l'occhio legge UNA tabella e non due. La differenza fra «qui si scrive» e «qui no»
   la fa lo sfondo lavato delle colonne calcolate, non un carattere diverso.
   (Le «righe congelate» della finestra attiva qui non esistono: la griglia impagina
   dal server, quindi le righe a video sono tutte editor.)
   --------------------------------------------------------------------------- */
.mp-grid-host[b-r7r8rwve7d]  .mp-ro {
    display: flex;
    align-items: center;
    height: 1.375rem;
    padding: 0 4px;
    font-family: var(--sedna-font-sans, inherit);
    font-size: 0.75rem;
    font-weight: 400;
    color: var(--sedna-text);
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

/* I numeri in mono e allineati a destra come negli editor: una colonna di numeri
   con cifre di larghezza diversa non si confronta a occhio. */
.mp-grid-host[b-r7r8rwve7d]  .mp-ro--num,
.mp-grid-host[b-r7r8rwve7d]  .mp-num {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
}
.mp-grid-host[b-r7r8rwve7d]  .mp-ro--num { justify-content: flex-end; }

/* COLLI e P.NETTO: i due numeri che l'occhio cerca per primi su ogni riga
   (Antonio, 2026-08-05). Semibold, non bold: si devono staccare dal resto
   senza urlare — vale sia per la cella editabile che per quella bloccata. */
.mp-grid-host[b-r7r8rwve7d]  td.mp-td-forte .mp-ro--num,
.mp-grid-host[b-r7r8rwve7d]  td.mp-td-forte .mp-num input { font-weight: 600; }
.mp-grid-host[b-r7r8rwve7d]  .merceprod-editgrid td[style*="center"] .sedna-native-input { text-align: center; }

/* Colonne CALCOLATE e di sola lettura: sfondo appena lavato, cosi' si vede che non
   sono caselle in cui scrivere prima di provarci. */
.mp-grid-host[b-r7r8rwve7d]  td.mp-td-calc { background: var(--sedna-surface-variant); }
.mp-grid-host[b-r7r8rwve7d]  td.mp-td-calc .mp-ro,
.mp-grid-host[b-r7r8rwve7d]  td.mp-td-ro .mp-ro { color: var(--sedna-text-secondary); }

/* Spunta di selezione ed esito: celle di servizio, niente padding sprecato. */
.mp-grid-host[b-r7r8rwve7d]  td.mp-td-sel,
.mp-grid-host[b-r7r8rwve7d]  td.mp-td-salv { padding-left: 2px; padding-right: 2px; }
.mp-grid-host[b-r7r8rwve7d]  .mp-sel { cursor: pointer; margin: 0; }

.mp-grid-host[b-r7r8rwve7d]  .mp-sv { font-size: 0.8rem; line-height: 1; }
.mp-grid-host[b-r7r8rwve7d]  .mp-sv--ok { color: var(--sedna-success-600, #1a7f37); }
.mp-grid-host[b-r7r8rwve7d]  .mp-sv--wip { color: var(--sedna-text-tertiary); animation: mp-gira-b-r7r8rwve7d 1s linear infinite; }
.mp-grid-host[b-r7r8rwve7d]  button.mp-sv--ko {
    border: none; background: transparent; padding: 0; cursor: pointer;
    color: var(--sedna-danger-600, #dc2626);
}

/* Celle dei flag (Stampati / St.DDT / St.FA) */
.mp-grid-host[b-r7r8rwve7d]  .mp-flag-on { color: var(--sedna-success-600, #1a7f37); }
.mp-grid-host[b-r7r8rwve7d]  .mp-flag-off { color: var(--sedna-text-tertiary); }

/* ---------------------------------------------------------------------------
   Lo stato della riga
   E' l'altra meta' del salvataggio implicito: se la riga parte da sola quando la si
   lascia, che sia partita — e com'e' finita — si deve vedere senza cercarlo. Tinte
   TENUI e sul bordo sinistro: la griglia non deve diventare un semaforo.
   ⚠️ I selettori di riga vanno via ::deep: le righe sono componenti figli.
   --------------------------------------------------------------------------- */
.mp-grid-host[b-r7r8rwve7d]  tr.mp-riga--ok > td { box-shadow: inset 3px 0 0 -1px var(--sedna-success-600, #1a7f37); }
.mp-grid-host[b-r7r8rwve7d]  tr.mp-riga--ok > td:not(:first-child) { box-shadow: none; }

.mp-grid-host[b-r7r8rwve7d]  tr.mp-riga--wip > td { background: var(--sedna-surface-variant); }

.mp-grid-host[b-r7r8rwve7d]  tr.mp-riga--ko > td {
    background: var(--sedna-danger-50, #fef2f2);
}
.mp-grid-host[b-r7r8rwve7d]  tr.mp-riga--ko > td:first-child {
    box-shadow: inset 3px 0 0 -1px var(--sedna-danger-600, #dc2626);
}

/* Riga LIQUIDATA: non si tocca. Il grigio dice che e' chiusa, non che e' spenta —
   si legge benissimo, e la scheda resta raggiungibile dalle azioni. */
.mp-grid-host[b-r7r8rwve7d]  tr.mp-riga--bloccata > td { background: color-mix(in srgb, var(--sedna-surface-variant) 60%, transparent); }
.mp-grid-host[b-r7r8rwve7d]  tr.mp-riga--bloccata .mp-ro { color: var(--sedna-text-secondary); }

/* «IN LIQUIDAZIONE»: la riga è in lavorazione ADESSO, e si veste di attesa — un velo
   ambrato appena accennato, non il grigio di «liquidata». La differenza conta: il grigio
   dice «è finita e non si tocca più», questo dice «ci stanno lavorando, fra poco torna
   tua». Tenue di proposito: sono righe che si contano a decine e un fondo carico
   trasformerebbe la griglia in un semaforo. */
.mp-grid-host[b-r7r8rwve7d]  tr.mp-riga--liq > td { background: color-mix(in srgb, var(--sedna-warning-500, #f59e0b) 8%, transparent); }
.mp-grid-host[b-r7r8rwve7d]  tr.mp-riga--liq .mp-ro { color: var(--sedna-text-secondary); }

/* «DA RIVEDERE»: un BORDO, non un fondo.
   Il fondo dice come sta andando il SALVATAGGIO (errore, in corso, salvata, bloccata) e
   di quelli ne vince uno solo. Questo dice un'altra cosa — «il documento e' cambiato
   sotto: guarda i numeri» — e il caso tipico e' proprio la riga che e' ENTRAMBE, perche'
   e' in quanto stampata che il server l'ha marcata invece di rigenerarla. Con due fondi
   uno vincerebbe e l'altro sparirebbe: informazione persa dietro una regola di priorita'.
   ⚠️ box-shadow inset e non border-left: un bordo sulla prima cella allargherebbe la
   colonna e disallineerebbe l'intestazione, che qui e' larga quanto la colonna. */
.mp-grid-host[b-r7r8rwve7d]  tr.mp-riga--rivedere > td:first-child {
    box-shadow: inset 3px 0 0 var(--sedna-warning, #d97706);
}

/* Il triangolo nella colonna «DA RIV.», per chi la apre dal selettore. */
.mp-grid-host[b-r7r8rwve7d]  .mp-rivedere__i { color: var(--sedna-warning, #d97706); }

/* ---------------------------------------------------------------------------
   Pannello delle righe non salvate
   Sta SOPRA la griglia e ci resta finche' non si risolve: un toast di tre secondi,
   su una griglia dove si corregge riga per riga, dice «qualcosa e' andato storto» e
   poi non si sa piu' di quale riga si parlasse.
   --------------------------------------------------------------------------- */
.mp-ko[b-r7r8rwve7d] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin: 6px 0 2px;
    padding: 8px 10px;
    border-left: 3px solid var(--sedna-danger-600, #dc2626);
    background: var(--sedna-danger-50, #fef2f2);
    border-radius: var(--sedna-radius-sm, .25rem);
    font-size: 0.75rem;
}

.mp-ko__head[b-r7r8rwve7d] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mp-ko__head > i[b-r7r8rwve7d] { color: var(--sedna-danger-600, #dc2626); }
.mp-ko__head > span[b-r7r8rwve7d] { color: var(--sedna-text-secondary); }

.mp-ko__riga[b-r7r8rwve7d] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 4px 6px;
    background: var(--sedna-surface);
    border-radius: var(--sedna-radius-sm, .25rem);
}
/* Conflitto = non e' un guasto, e' un'altra persona: colore d'avviso, non di
   errore, perche' non c'e' niente di rotto e i dati sono ancora tutti li'. */
.mp-ko__riga--conflitto > .mp-ko__chi > i[b-r7r8rwve7d] { color: var(--sedna-warning-700, #b45309); }

.mp-ko__chi[b-r7r8rwve7d] { display: inline-flex; align-items: baseline; gap: 6px; min-width: 0; }
.mp-ko__chi > i[b-r7r8rwve7d] { color: var(--sedna-danger-600, #dc2626); }
.mp-ko__dett[b-r7r8rwve7d] { color: var(--sedna-text-tertiary); }
.mp-ko__msg[b-r7r8rwve7d] { flex: 1 1 200px; min-width: 0; color: var(--sedna-text-secondary); }

.mp-ko__cmd[b-r7r8rwve7d] { display: inline-flex; gap: 6px; margin-left: auto; }
.mp-ko__cmd button[b-r7r8rwve7d] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 22px;
    padding: 0 8px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-family: inherit;
    font-size: 0.7rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
}
.mp-ko__cmd button:hover:not(:disabled)[b-r7r8rwve7d] { color: var(--sedna-text); border-color: var(--sedna-border-strong); }
.mp-ko__cmd button:disabled[b-r7r8rwve7d] { opacity: .5; cursor: default; }
.mp-ko__cmd .mp-ko__cmd--pri[b-r7r8rwve7d] { border-color: var(--sedna-primary); color: var(--sedna-primary); }

/* ---------------------------------------------------------------------------
   Intervalli «dal → al»
   Due campi corti e una freccia: i codici di fornitore, mezzadro, articolo e lotto
   nel legacy stanno in 6-8 caratteri, quindi 78px bastano e avanzano. Sono la voce
   che si ripete di piu' nella fascia (quattro intervalli): ogni pixel di troppo qui
   si moltiplica per quattro ed e' quello che manda la riga a capo su un 14".
   --------------------------------------------------------------------------- */
.mp-range[b-r7r8rwve7d] { display: flex; align-items: center; gap: 4px; }
.mp-range .sep[b-r7r8rwve7d] { color: var(--sedna-text-tertiary); font-size: 0.75rem; }
/* 66px = otto caratteri a 12px piu' la cornice: i codici legacy di fornitore,
   mezzadro e articolo ci stanno tutti. MISURATO: a 78px la fascia sforava di 5px su
   un 1366 e di 91 su un 1280 — e questi quattro campi si ripetono, quindi ogni pixel
   qui vale per quattro. */
.mp-inp--cod[b-r7r8rwve7d] { width: 66px; }
.mp-inp--num[b-r7r8rwve7d] { width: 90px; }
/* «Let.» e' una lettera, al massimo due: piu' larga sarebbe solo aria. */
.mp-inp--let[b-r7r8rwve7d] { width: 52px; text-transform: uppercase; }

/* ---------------------------------------------------------------------------
   Gli estremi che sono LOOKUP (fornitore, mezzadro, articolo, agente)
   Stesso posto e stesso mestiere dei campi qui sopra — un codice in un
   intervallo — ma con tendina, ricerca e ricerca avanzata. Costano 14px in piu'
   di chevron, e QUATTRO di loro stanno nella riga sempre a video: per non
   rimangiarsi la larghezza misurata sopra, il testo dentro respira un po' meno
   (4px invece di 8) e resta l'area utile di prima. Bilancio sulla riga
   principale: +10px per campo, dentro il margine che c'era su un 1366.
   Il codice basta perche' il resto si legge: passandoci sopra c'e' il tooltip
   «codice — ragione sociale», e la tendina mostra le due colonne.
   --------------------------------------------------------------------------- */
.mp-filter-row[b-r7r8rwve7d]  .mp-lk { flex: none; }
.mp-filter-row[b-r7r8rwve7d]  .mp-lk--cod { width: 76px; }
/* I codici articolo sono i piu' lunghi (e con gli zeri davanti): stanno negli
   avanzati, dove lo spazio non e' conteso. */
.mp-filter-row[b-r7r8rwve7d]  .mp-lk--art { width: 110px; }
.mp-filter-row[b-r7r8rwve7d]  .mp-lk > .sedna-lookup-native__input { padding: 0 4px; }

/* Cella che ACCETTEREBBE la scrittura ma non adesso (manca il dato da cui dipende):
   si vede che e' spenta, e il tooltip dice cosa riempire prima. */
.mp-grid-host[b-r7r8rwve7d]  .mp-ro--muto { color: var(--sedna-text-tertiary); font-style: italic; }

/* Tendina dei tipi (fornitore, articolo) dentro la cella: stessa altezza e stesso
   carattere degli input della griglia, cosi' la riga non si scompone. */
.mp-grid-host[b-r7r8rwve7d]  .mp-sel-tipo {
    box-sizing: border-box;
    width: 100%;
    height: 1.375rem;
    padding: 0 2px;
    border: 1px solid transparent;
    border-radius: 4px;
    background: transparent;
    font-family: var(--sedna-font-sans, inherit);
    font-size: 0.75rem;
    color: var(--sedna-text);
    cursor: pointer;
}
.mp-grid-host[b-r7r8rwve7d]  .mp-sel-tipo:hover { border-color: var(--sedna-border); }
.mp-grid-host[b-r7r8rwve7d]  .mp-sel-tipo:focus { outline: none; border-color: var(--sedna-primary); }

/* La cella con la lookup IVA: il chevron sta dentro il componente, qui serve solo che
   la cella non stringa il campo. */
.mp-grid-host[b-r7r8rwve7d]  td.mp-td-lookup { padding-left: 2px; padding-right: 2px; }

/* ═══ ALTEZZA DI RIGA UNICA ═══
   Nel vecchio le righe erano tutte uguali, ed e' la prima cosa che si guarda. Ma non e'
   solo estetica: righe di altezza diversa fanno sbagliare qualunque stima basata
   sull'altezza di riga (la trappola gia' pagata sullo scadenziario), e lo scorrimento
   comincia a saltare.
   Passo FISSO sulle celle del corpo — 27px, lo stesso del corpo documento — cosi'
   nessuna cella puo' far crescere la sua riga: quello che non ci sta viene ritagliato,
   non mandato a capo. */
/* Escluse la riga-filler — la sua altezza e' quella che AVANZA (v. FillEmptySpace), e un
   passo fisso la bloccherebbe a 27px riaprendo il buco sotto i totali — e il segnaposto
   dello stato vuoto, che deve poter tenere alto il corpo mentre il messaggio ci sta
   sopra. */
.mp-grid-host[b-r7r8rwve7d]  .sedna-editable-grid__table > tbody > tr:not(.sedna-editable-grid__filler):not(.sedna-editable-grid__empty-row) > td {
    height: 27px;
    padding-top: 0;
    padding-bottom: 0;
    overflow: hidden;
}

/* La cella di STATO: pillola dello stato + contrassegni, tutti su UNA riga.
   nowrap e non wrap: il capo e' esattamente quello che raddoppiava l'altezza. */
.mp-grid-host[b-r7r8rwve7d]  .merceprod-status-cell {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 4px;
    overflow: hidden;
    min-width: 0;
}

/* I contrassegni: icone piccole, colore semantico, nessuna cornice. Non devono
   competere con la pillola dello stato — la accompagnano. */
.mp-grid-host[b-r7r8rwve7d]  .mp-mark {
    flex: none;
    font-size: 0.7rem;
    line-height: 1;
}
.mp-grid-host[b-r7r8rwve7d]  .mp-mark--man { color: var(--sedna-warning-700, #b45309); }
.mp-grid-host[b-r7r8rwve7d]  .mp-mark--avv { color: var(--sedna-danger-600, #dc2626); }
/* «In liquidazione»: tinta d'ATTESA, non d'allarme — è un blocco che passa da solo in
   pochi minuti, e vestirlo di rosso come «con avviso» direbbe che è successo qualcosa
   di storto. La clessidra e l'ora nel tooltip fanno il resto. */
.mp-grid-host[b-r7r8rwve7d]  .mp-mark--liq { color: var(--sedna-warning-600, #d97706); }

/* Casella data in cella: e' un input nativo (type=date), quindi il browser ci mette la
   sua iconcina. Stessa altezza e stesso carattere degli altri input della griglia. */
.mp-grid-host[b-r7r8rwve7d]  .mp-data {
    width: 100%;
    font-variant-numeric: tabular-nums;
}
.mp-grid-host[b-r7r8rwve7d]  .mp-data::-webkit-calendar-picker-indicator {
    padding: 0;
    margin-left: 2px;
    opacity: 0.45;
    cursor: pointer;
}
.mp-grid-host[b-r7r8rwve7d]  .mp-data:hover::-webkit-calendar-picker-indicator { opacity: 0.8; }

/* Tipo data: la voce piu' lunga e' «Data documento», 14 caratteri. */
.mp-filter-row[b-r7r8rwve7d]  .mp-se--tipodata { width: 128px; }

/* «Avanzati» come ICON BUTTON: quadrato, senza etichetta. Il nome resta nel title e
   nell'aria-label — un pulsante senza testo che non si sa cosa faccia e' un enigma, non
   un'icona. Il pallino col numero di filtri attivi resta, ed e' anzi l'unica cosa che
   dice che sotto c'e' qualcosa: senza etichetta conta doppio. */
.mp-adv--icona[b-r7r8rwve7d] {
    width: 26px;
    padding: 0;
    position: relative;
}

.mp-adv--icona .mp-adv__n[b-r7r8rwve7d] {
    position: absolute;
    top: -5px;
    right: -5px;
    min-width: 14px;
    height: 14px;
    padding: 0 3px;
    font-size: 0.55rem;
    line-height: 14px;
    box-shadow: 0 0 0 2px var(--sedna-surface);
}

/* Il trattino del «non lo so» (colonna Scarto €): piu' chiaro dei numeri, cosi' si legge
   come assenza di dato e non come un valore. Non e' uno zero e non deve sembrarlo. */
.mp-grid-host[b-r7r8rwve7d]  .mp-nonso { color: var(--sedna-text-tertiary); }

/* Il numero del documento di vendita: si CLICCA e apre la fattura.
   Se restasse identico alle altre celle in sola lettura nessuno proverebbe a cliccarlo,
   e la funzione esisterebbe solo nel codice. Reso come collegamento — colore del
   primario, sottolineatura all'avvicinarsi, cursore a manina — dentro l'altezza di riga
   della griglia, senza sfondo ne' bordo: e' una cella, non un pulsante.
   fuori dal giro del Tab (tabindex -1 sul markup): il Tab in questa griglia serve a
   passare da un campo da scrivere all'altro, e questo non si scrive. */
.mp-grid-host[b-r7r8rwve7d]  .mp-doclink {
    display: block;
    width: 100%;
    padding: 0;
    border: none;
    background: none;
    font: inherit;
    text-align: inherit;
    color: var(--sedna-primary);
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.mp-grid-host[b-r7r8rwve7d]  .mp-doclink:hover { text-decoration: underline; }

/* Riga liquidata nel vecchio, senza il legame travasato: il trattino e' un dato
   MANCANTE dichiarato, non una cella vuota. Grigio e in corsivo, cosi' non si
   confonde con un numero che non c'e' perche' la riga non e' liquidata. */
.mp-grid-host[b-r7r8rwve7d]  .mp-cv-manca {
    color: var(--sedna-text-tertiary);
    font-style: italic;
    cursor: help;
}

/* ═══ INTESTAZIONI CENTRATE ═══
   Vale per l'INTESTAZIONE, non per il contenuto: i numeri restano a destra e i testi a
   sinistra, che sono due cose diverse.
   ⚠️ Non si puo' fare con «thead th { text-align: center }»: il th porta un
   text-align INLINE, messo dalla griglia dal TextAlign della colonna (che governa la
   cella), e lo stile inline batte il foglio. Si centra quindi la DIDASCALIA: il suo
   text-align comanda il proprio contenuto, qualunque cosa dica il th.
   Regola sul th e non per colonna: vale anche per le colonne che compaiono solo dal
   selettore, senza doverle marcare una per una.
   ⚠️ ::deep obbligatorio — la radice del componente figlio non porta l'attributo di
   scope della pagina, e senza la regola resta inerte (la trappola del filler). */
.mp-grid-host[b-r7r8rwve7d]  .sedna-editable-grid__table thead th > .seg-th-caption {
    display: block;
    width: 100%;
    max-width: 100%;
    text-align: center;
}


/* L'avviso sul disallineamento fra la data della griglia e quella della liquidazione:
   sta dentro il riepilogo dei criteri, ma deve staccarsi da esso — e' l'unica riga che
   dice «attenzione, non e' quello che vedi». */
[b-r7r8rwve7d] .merceprod-liq-criteri--attenzione {
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px solid color-mix(in srgb, var(--sedna-warning-500) 45%, transparent);
}
/* /Pages/Documenti/RicezioneMerce/ConfigurazioneLottoEditor.razor.rz.scp.css */
/* Configurazione lotto: l'anteprima del codice, i segnaposti e il contatore. */

.cfg-lotto__anteprima[b-pj8p8eiuqi] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-height: var(--sedna-input-height, 22px);
}

.cfg-lotto__codice[b-pj8p8eiuqi] {
    font-family: var(--sedna-font-mono, ui-monospace, "Cascadia Mono", Consolas, monospace);
    font-size: 0.8125rem;
    padding: 0.125rem 0.375rem;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-sunken, rgba(0, 0, 0, 0.04));
    color: var(--sedna-text);
}

.cfg-lotto__nota[b-pj8p8eiuqi] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.cfg-lotto__segnaposti[b-pj8p8eiuqi] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.cfg-lotto__avviso[b-pj8p8eiuqi] {
    display: flex;
    align-items: flex-start;
    gap: 0.375rem;
    margin-top: 0.375rem;
    font-size: 0.75rem;
    line-height: 1.4;
    color: var(--sedna-warning-text, #8a5300);
}

.cfg-lotto__avviso .bi[b-pj8p8eiuqi] {
    flex: 0 0 auto;
    margin-top: 0.0625rem;
}

.cfg-lotto__contatori[b-pj8p8eiuqi] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* Riga del contatore: l'anno, il numero da riscrivere, il codice che ne esce, il gesto.
   A schermo stretto va a capo invece di comprimere la casella del numero. */
.cfg-lotto__riga[b-pj8p8eiuqi] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}

/* ⚠️ La casella si stringe con una classe NOSTRA, non col nome interno di DevExpress:
   la regola precedente puntava a `.dxbl-spin-edit` e non agganciava niente — a video il
   campo prendeva tutta la larghezza della pagina per un numero di due cifre. Una regola
   che non matcha non si vede finche' non si guarda lo schermo. */
.cfg-lotto__riga[b-pj8p8eiuqi]  .cfg-lotto__num {
    flex: 0 0 7rem;
    max-width: 7rem;
}

/* Anno e serie sulla stessa riga: la serie e' un dettaglio dell'anno, non un secondo dato.
   La larghezza minima incolonna i cinque contatori, cosi' le caselle partono tutte da li'. */
.cfg-lotto__anno[b-pj8p8eiuqi] {
    display: flex;
    align-items: baseline;
    gap: 0.375rem;
    min-width: 10rem;
    font-weight: 600;
    font-size: 0.8125rem;
}

/* ═══ SERIE DEL LOTTO PER TIPO ARTICOLO ═══ */
.cfg-serie[b-pj8p8eiuqi] {
    margin-top: var(--sedna-space-4);
    padding-top: var(--sedna-space-3);
    border-top: 1px solid var(--sedna-border);
}

.cfg-serie__testa[b-pj8p8eiuqi] { display: flex; align-items: center; gap: var(--sedna-space-2); flex-wrap: wrap; }
.cfg-serie__titolo[b-pj8p8eiuqi] { margin: 0 auto 0 0; font-size: var(--sedna-text-sm); font-weight: var(--sedna-font-semibold); display: flex; align-items: center; gap: 0.4rem; }

.cfg-serie__intro[b-pj8p8eiuqi] { margin: var(--sedna-space-2) 0; font-size: var(--sedna-text-xs, 0.75rem); color: var(--sedna-text-secondary); }

.cfg-serie__tab[b-pj8p8eiuqi] { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--sedna-text-xs, 0.75rem); }
.cfg-serie__tab th[b-pj8p8eiuqi] {
    text-align: left; padding: 3px 6px; font-size: 0.65rem; text-transform: uppercase;
    letter-spacing: 0.04em; color: var(--sedna-text-tertiary); font-weight: var(--sedna-font-semibold);
    border-bottom: 1px solid var(--sedna-border);
}
.cfg-serie__tab td[b-pj8p8eiuqi] { padding: 3px 6px; border-bottom: 1px solid var(--sedna-border-light, #f0f1f3); vertical-align: middle; }
.cfg-serie__c[b-pj8p8eiuqi] { text-align: center; width: 70px; }

/* Larghezze per contenuto: serie e lettera sono 1-3 caratteri, il tipo articolo una
   parola; lo spazio elastico va tutto al formato personalizzato, che coi segnaposto
   si allunga davvero. Le width sui TH bastano: le celle seguono la colonna. */
.cfg-serie__tipo[b-pj8p8eiuqi] { width: 11rem; }
.cfg-serie__stretta[b-pj8p8eiuqi] { width: 5.5rem; }
.cfg-serie__formato[b-pj8p8eiuqi] { width: auto; min-width: 16rem; }

/* Il posto vuoto lo dice: una tabella vuota senza parole sembra un caricamento che non finisce. */
.cfg-serie__vuoto[b-pj8p8eiuqi] { text-align: center; color: var(--sedna-text-tertiary); font-style: italic; padding: var(--sedna-space-3); }

.cfg-serie__cod[b-pj8p8eiuqi] { font-family: var(--sedna-font-mono, monospace); color: var(--sedna-text-secondary); }

.cfg-serie__via[b-pj8p8eiuqi] {
    border: 0; background: none; color: var(--sedna-text-tertiary); cursor: pointer; padding: 2px 4px;
    border-radius: var(--sedna-radius-sm);
}
.cfg-serie__via:hover[b-pj8p8eiuqi] { color: var(--sedna-error-700); background: var(--sedna-error-50, #fef2f2); }

.cfg-serie__stato[b-pj8p8eiuqi] { padding: var(--sedna-space-3); color: var(--sedna-text-secondary); display: flex; align-items: center; gap: 0.5rem; }
.cfg-serie__stato--err[b-pj8p8eiuqi] { color: var(--sedna-error-700); }

/* Le due note: la prima spiega perche' i codici possono sembrare uguali, la seconda avvisa che
   la riga imballo smette di ereditare. Sono le due domande che arriveranno. */
.cfg-serie__nota[b-pj8p8eiuqi] {
    display: flex; align-items: flex-start; gap: 0.4rem;
    margin-top: var(--sedna-space-2); padding: var(--sedna-space-2);
    border-left: 3px solid var(--sedna-info-600, #2563eb);
    background: var(--sedna-info-50, #eff6ff);
    border-radius: var(--sedna-radius-sm);
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-text-secondary);
}

.cfg-serie__nota--attenzione[b-pj8p8eiuqi] {
    border-left-color: var(--sedna-warning-600, #d97706);
    background: var(--sedna-warning-50, #fffbeb);
}

/* Il nome della serie accanto all'anno: con più serie, l'anno da solo non identifica il
   contatore — e sbagliare riga qui vuol dire rigenerare codici già emessi. */
.cfg-lotto__serie[b-pj8p8eiuqi] {
    display: inline;
    font-style: normal;
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-text-tertiary);
}
/* /Pages/Documenti/RicezioneMerce/InserimentoRicezioneMerceModal.razor.rz.scp.css */
/* ═══ INSERIMENTO RICEZIONE MERCE — la FINESTRA del vecchio come modal ═══
   Tre fasce: testata (coordinate e satelliti), griglia del blocchetto, totali.
   Larga e bassa come la modal di merce produttori: mentre si digita serve
   VEDERE le righe, non un form. */

/* ── Testata ── */
.insrm-testata[b-kvbh8taahm] {
    display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 18px;
    padding: 8px 0 10px;
}
.insrm-f[b-kvbh8taahm] { display: flex; flex-direction: column; gap: 2px; }
.insrm-f label[b-kvbh8taahm] {
    font-size: 0.65rem; font-weight: 600; letter-spacing: .04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
}
.insrm-hint[b-kvbh8taahm] { text-transform: none; letter-spacing: 0; font-weight: 400; }
.insrm-testata[b-kvbh8taahm]  .insrm-date { width: 140px; }
.insrm-f--for[b-kvbh8taahm] { min-width: 280px; }
.insrm-azioni[b-kvbh8taahm] { margin-left: auto; display: flex; gap: 8px; }

.insrm-errore[b-kvbh8taahm] {
    display: flex; align-items: center; gap: 8px;
    padding: 8px 12px; border-radius: var(--sedna-radius-md, .375rem);
    background: var(--sedna-error-50); color: var(--sedna-error-700);
    border: 1px solid color-mix(in srgb, var(--sedna-error-500) 45%, transparent);
    font-size: 0.8125rem; margin-bottom: 8px;
}

/* ── Griglia: l'ELASTICO del popup — prende tutta l'altezza disponibile e la
   segue nel resize, anche a corpo vuoto (il flex sul body del popup sta in
   app.css: è markup DevExpress, il CSS isolato non lo raggiunge). ── */
.insrm-grid-host[b-kvbh8taahm] { flex: 1 1 auto; min-height: 160px; display: flex; flex-direction: column; }
.insrm-grid-host[b-kvbh8taahm]  .sedna-editable-grid { flex: 1 1 auto; min-height: 0; }

/* Il footer del popup: l'informazione di seduta a sinistra, i pulsanti a destra. */
.insrm-foot-info[b-kvbh8taahm] {
    margin-right: auto; align-self: center;
    font-size: 0.75rem; color: var(--sedna-text-tertiary);
}

/* Numeri in mono e allineati a destra, come le altre griglie dell'app.
   VINCOLO (memoria lookup nativo): i selettori di riga passano SEMPRE da ::deep. */
.insrm-grid-host[b-kvbh8taahm]  .insrm-ro--num,
.insrm-grid-host[b-kvbh8taahm]  .insrm-num {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-variant-numeric: tabular-nums;
}
.insrm-grid-host[b-kvbh8taahm]  .insrm-ro--num { display: flex; justify-content: flex-end; }
.insrm-grid-host[b-kvbh8taahm]  .insrm-ro { color: var(--sedna-text-secondary); }

/* Colli e P.Netto: gli stessi numeri forti di merce produttori. */
.insrm-grid-host[b-kvbh8taahm]  td.insrm-td-forte .insrm-ro--num,
.insrm-grid-host[b-kvbh8taahm]  td.insrm-td-forte .insrm-num input { font-weight: 600; }

/* La data della riga: input nativo, largo quanto la cella (senza, il calendario di
   Chrome taglia l'anno e si legge «07/08/20…»). */
.insrm-grid-host[b-kvbh8taahm]  .insrm-data { width: 100%; }

/* Il lotto che VERRÀ: si distingue da quello vero, perché è una previsione. */
.insrm-grid-host[b-kvbh8taahm]  .insrm-lotto-prossimo {
    font-style: italic;
    color: var(--sedna-text-tertiary);
}

.insrm-grid-host[b-kvbh8taahm]  .insrm-ok { color: var(--sedna-success-600, #2e7d32); }
.insrm-grid-host[b-kvbh8taahm]  .insrm-imb { color: var(--sedna-text-tertiary); }

/* Spunta in cella (Ctrl): centrata e fuori dal giro di tabulazione — il flusso
   da tastiera del blocchetto passa per i campi che si digitano, non per lei. */
.insrm-grid-host[b-kvbh8taahm]  .insrm-chk { display: block; margin: 0 auto; cursor: pointer; }
.insrm-grid-host[b-kvbh8taahm]  .insrm-chk:disabled { cursor: default; opacity: 0.55; }

/* ── Piede: i totali di seduta ── */
.insrm-piede[b-kvbh8taahm] {
    display: flex; justify-content: flex-end; gap: 12px;
    padding: 8px 12px; margin-top: 8px;
    background: var(--sedna-surface); border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .5rem); box-shadow: var(--sedna-shadow-xs);
}
.insrm-tot[b-kvbh8taahm] {
    display: inline-flex; flex-direction: column; align-items: flex-end;
    padding: 2px 10px; font-size: 0.875rem; font-weight: 700;
    font-variant-numeric: tabular-nums;
}
.insrm-tot em[b-kvbh8taahm] {
    font-style: normal; font-weight: 700; font-size: 0.625rem;
    letter-spacing: .03em; text-transform: uppercase; color: var(--sedna-text-tertiary);
}

/* ── Modal pesate ── */
.insrm-pesate[b-kvbh8taahm] { width: 100%; border-collapse: collapse; font-size: 0.8125rem; margin-bottom: 10px; }
.insrm-pesate th[b-kvbh8taahm] {
    text-align: left; font-size: 0.65rem; font-weight: 600; letter-spacing: .04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
    padding: 4px 6px; border-bottom: 1px solid var(--sedna-border);
}
.insrm-pesate td[b-kvbh8taahm] { padding: 3px 6px; border-bottom: 1px solid var(--sedna-border-light); }
.insrm-pesate tfoot td[b-kvbh8taahm] { font-weight: 700; border-top: 1px solid var(--sedna-border-strong); border-bottom: none; }
.insrm-pin[b-kvbh8taahm] {
    width: 90px; border: 1px solid var(--sedna-border); border-radius: var(--sedna-radius-input, .375rem);
    background: var(--sedna-surface); font: inherit; color: var(--sedna-text);
    padding: 2px 6px; height: var(--sedna-input-height, 22px);
    font-variant-numeric: tabular-nums; text-align: right;
}
.insrm-pin:focus[b-kvbh8taahm] { outline: none; border-color: var(--sedna-primary); background: var(--sedna-input-focus-bg); }
.insrm-pdel[b-kvbh8taahm] { border: none; background: transparent; cursor: pointer; color: var(--sedna-text-tertiary); padding: 2px 6px; }
.insrm-pdel:hover[b-kvbh8taahm] { color: var(--sedna-error); }

/* ── Modal media ── */
.insrm-media[b-kvbh8taahm] { display: flex; flex-direction: column; gap: 8px; }
.insrm-media label[b-kvbh8taahm] {
    display: flex; justify-content: space-between; align-items: center; gap: 10px;
    font-size: 0.8125rem; color: var(--sedna-text);
}
.insrm-media__ris[b-kvbh8taahm] {
    display: flex; flex-direction: column; gap: 4px; margin-top: 6px;
    padding: 8px 10px; border-radius: var(--sedna-radius-md, .375rem);
    background: var(--sedna-surface-variant); font-size: 0.8125rem;
}

/* ═══ «Prossimo lotto»: un'ANTEPRIMA, e si vede che lo è ═══
   Non è un campo: è una previsione. Perciò niente cornice da input — che inviterebbe a
   digitarci dentro e prometterebbe un numero «tuo» — ma il valore in mono, nel tono dei
   dati di servizio. Il numero definitivo lo assegna il salvataggio. */
.insrm-lotto__val[b-kvbh8taahm] {
    display: inline-flex;
    align-items: center;
    height: var(--sedna-input-height, 22px);
    padding: 0 8px;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: var(--sedna-input-font-size, 0.75rem);
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface-variant);
    border-radius: var(--sedna-radius-input, 0.375rem);
    white-space: nowrap;
}
/* /Pages/Documenti/RicezioneMerce/RicezioneMercePage.razor.rz.scp.css */
.ricezione-badges[b-cgtx0e2tia] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 0.25rem 0 0.5rem;
}

.ricezione-badge[b-cgtx0e2tia] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.2rem 0.6rem;
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--sedna-text-secondary, #475569);
    background: var(--sedna-surface-2, #f1f5f9);
    border: 1px solid var(--sedna-border, #e2e8f0);
    border-radius: var(--sedna-radius-input, 0.375rem);
}

.ricezione-badge i[b-cgtx0e2tia] {
    color: var(--sedna-primary-600, #2563eb);
}

.ricezione-badge--muted[b-cgtx0e2tia] {
    color: var(--sedna-text-tertiary, #94a3b8);
    background: transparent;
    border-style: dashed;
}

.ricezione-badge--muted i[b-cgtx0e2tia] {
    color: var(--sedna-text-tertiary, #94a3b8);
}
/* /Pages/Documenti/RicezioneMerce/RicezioniMercePage.razor.rz.scp.css */
/* ═══ Lista Ricezione Merce ═══ */

/* Layout pagina e wrapper griglia dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). Qui solo l'integrazione griglia
   e la riga filtri periodo/produttore nella toolbar. */
.ricezioni-list-page[b-s5gcyp3gdx]  .ricezioni-grid {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
}

.sedna-datagrid-wrapper[b-s5gcyp3gdx] {
    /* flex/overflow dal guscio (.sedna-page__body--host); resta solo il respiro sotto */
    margin-bottom: 0.5rem;
}

/* ========================================
   TOOLBAR — searchbox custom (pattern lista Clienti)
   Search + filtri produttore/periodo nella stessa riga della toolbar.
   ======================================== */
.toolbar[b-s5gcyp3gdx] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-s5gcyp3gdx] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-s5gcyp3gdx] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-s5gcyp3gdx] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-s5gcyp3gdx]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-s5gcyp3gdx] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 900px) {
    .toolbar .search[b-s5gcyp3gdx] {
        width: 100%;
    }
}

/* ── Filtri periodo/produttore nella ToolbarTemplate della griglia ── */
.doc-filtri-toolbar[b-s5gcyp3gdx] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.doc-filtri-toolbar__lbl[b-s5gcyp3gdx] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.doc-filtri-toolbar[b-s5gcyp3gdx]  .doc-filtri-toolbar__tipo {
    width: 220px;
}

.doc-filtri-toolbar[b-s5gcyp3gdx]  .doc-filtri-toolbar__date {
    width: 130px;
}

/* ═══ Totali di piede del giornale (TotaliFinali del vecchio): etichette sopra,
   una riga sola — lo stesso vestito dei totali di merce produttori. ═══ */
.ricezioni-totali[b-s5gcyp3gdx] {
    display: flex; flex-wrap: nowrap; overflow-x: auto; justify-content: flex-end;
    gap: 2px 12px; padding: 6px 10px; margin-top: 6px;
    background: var(--sedna-surface); border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .5rem); box-shadow: var(--sedna-shadow-xs);
    /* ⚠️ La footbar NON si schiaccia quando la griglia cresce (pager compreso):
       è l'ultima voce della colonna flex e senza questo il flex la comprimeva
       fino a renderla illeggibile — visto filtrando dal 2000 a oggi. */
    flex-shrink: 0; min-height: 46px;
}
.ricezioni-totali .rt--vuoto[b-s5gcyp3gdx] {
    font-size: 0.75rem; color: var(--sedna-text-tertiary); align-self: center;
}

/* ═══ La riga dei filtri del vecchio: etichette sopra, campi sotto, Filtra in fondo ═══
   RIGA DI PAGINA, non toolbar della griglia (2026-08-06). Sta sopra la barra della
   griglia — che resta quella della ricerca, del contatore e di «Colonne» — e non
   scorre con le righe: i criteri devono restare a video mentre si guarda il risultato
   di quei criteri. */
.ric-filtri[b-s5gcyp3gdx] {
    display: flex; flex-wrap: wrap; align-items: flex-end; gap: 6px 10px;
    padding: 2px 0 6px; flex-shrink: 0;
}
/* Etichetta sopra, i DUE campi «dal/al» AFFIANCATI sotto.
   Era una colonna semplice: la label andava sopra ma i due estremi dell'intervallo si
   impilavano uno sull'altro, e la riga dei filtri diventava alta tre volte tanto. La
   griglia 2×N tiene la label a cavallo delle due colonne e gli estremi in linea, che è
   come si legge un intervallo. */
.ric-filtri__grp[b-s5gcyp3gdx] {
    display: inline-grid; grid-template-columns: repeat(2, auto);
    align-items: end; gap: 2px;
}
.ric-filtri__grp > label[b-s5gcyp3gdx] {
    grid-column: 1 / -1;
    font-size: 0.625rem; font-weight: 600; letter-spacing: .04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary); white-space: nowrap;
}
/* I gruppi con un campo solo (le tendine) non devono lasciare mezza colonna vuota. */
.ric-filtri__grp > select[b-s5gcyp3gdx] { grid-column: 1 / -1; }
.ric-filtri__grp > input[b-s5gcyp3gdx], .ric-filtri__grp > select[b-s5gcyp3gdx] { vertical-align: bottom; }
/* I comandi in fondo alla riga: i criteri si leggono da sinistra, cosa farne sta a
   destra. margin-left:auto solo quando la riga NON è andata a capo — se va a capo
   restano comunque in coda, che è dove li si cerca. */
.ric-filtri__cmd[b-s5gcyp3gdx] {
    display: inline-flex; align-items: flex-end; gap: 6px; margin-left: auto;
}
/* Misure tarate perche' TUTTO stia su UNA riga sul 14" (1512px, sidebar aperta):
   sette gruppi piu' i tre comandi. Ogni campo e' largo quanto basta al suo contenuto —
   un codice articolo qui e' un estremo di intervallo, non una descrizione. */
.ric-filtri__cod[b-s5gcyp3gdx], .ric-filtri__sel[b-s5gcyp3gdx] {
    height: var(--sedna-input-height, 22px);
    font-size: var(--sedna-input-font-size, 0.75rem);
    padding: 0 6px; width: 62px;
    border: 1px solid var(--sedna-border-light);
    border-radius: var(--sedna-radius-input, .375rem);
    background: var(--sedna-surface); color: var(--sedna-text);
}
.ric-filtri__sel[b-s5gcyp3gdx] { width: 82px; }
.ric-filtri__cod:focus[b-s5gcyp3gdx], .ric-filtri__sel:focus[b-s5gcyp3gdx] {
    outline: none; border-color: var(--sedna-primary);
}
.ric-filtri__grp input + input[b-s5gcyp3gdx] { margin-left: 2px; }
/* 140 e non 118: sotto quella misura la maschera della data va in ELLIPSIS per far
   posto al pulsante di azzeramento, e si legge «06/08/2…». Stessa misura e stesso
   motivo del bilancio giornaliero. */
.ric-filtri[b-s5gcyp3gdx]  .ric-filtri__date { width: 140px; }

/* Le lookup dei codici (fornitore, mezzadro, articolo): larghe quanto basta a leggere
   un codice e l'inizio della descrizione. Più strette diventavano un campo in cui non
   si vede cosa si è scelto — che era il difetto delle caselle di testo di prima. */
.ric-filtri[b-s5gcyp3gdx]  .ric-filtri__lk { width: 150px; }

/* ⚠️ I COMANDI ALTI QUANTO I FILTRI (Antonio, 2026-08-07: «i tasti Oggi, Azzera e Filtra
   sono troppo alti, devono rispettare l'altezza dei filtri»). I pulsanti dell'app stanno
   di serie su control-height-md (~28px) perché di norma vivono in una barra azioni; qui
   stanno in una riga di campi alti 22, e due altezze diverse sulla stessa riga si vedono
   tutte. La misura va imposta all'elemento DevExpress interno: il wrapper non ha
   un'altezza propria da correggere. */
.ric-filtri__cmd[b-s5gcyp3gdx]  .dxbl-btn,
.ric-filtri__cmd[b-s5gcyp3gdx]  button {
    height: var(--sedna-input-height, 22px);
    min-height: 0;
    padding: 0 8px;
    font-size: var(--sedna-input-font-size, 0.75rem);
    line-height: 1;
}

/* ═══ Il RIFERIMENTO della riga attiva: la barra di stato del vecchio ═══ */
.ricezioni-rif[b-s5gcyp3gdx] {
    display: flex; align-items: center; gap: 8px; flex-shrink: 0;
    padding: 4px 10px; margin-top: 6px;
    font-size: 0.75rem; color: var(--sedna-text-secondary);
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .375rem);
}
.ricezioni-rif--presa[b-s5gcyp3gdx] {
    color: var(--sedna-warning-700, #b45309);
    border-color: color-mix(in srgb, var(--sedna-warning-500, #f59e0b) 45%, transparent);
    background: color-mix(in srgb, var(--sedna-warning-500, #f59e0b) 8%, var(--sedna-surface));
}
.ricezioni-preso[b-s5gcyp3gdx] { color: var(--sedna-warning-600, #d97706); }

/* ═══ Menu contestuale della riga ═══ */
.ricezioni-ctx-overlay[b-s5gcyp3gdx] { position: fixed; inset: 0; z-index: 1400; }
.ricezioni-ctx[b-s5gcyp3gdx] {
    position: fixed; z-index: 1401; min-width: 170px;
    background: var(--sedna-surface); border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .5rem); box-shadow: var(--sedna-shadow-lg);
    padding: 4px; display: flex; flex-direction: column;
}
.ricezioni-ctx__voce[b-s5gcyp3gdx] {
    display: flex; align-items: center; gap: 8px;
    border: none; background: transparent; cursor: pointer;
    font-size: 0.8125rem; color: var(--sedna-text);
    padding: 6px 10px; border-radius: var(--sedna-radius-sm, .25rem); text-align: left;
}
.ricezioni-ctx__voce:hover:not(:disabled)[b-s5gcyp3gdx] { background: var(--sedna-surface-variant); }
.ricezioni-ctx__voce:disabled[b-s5gcyp3gdx] { color: var(--sedna-text-tertiary); cursor: not-allowed; }
.ricezioni-ctx__voce--ko:not(:disabled)[b-s5gcyp3gdx] { color: var(--sedna-error-600, #dc2626); }
.ricezioni-totali .rt[b-s5gcyp3gdx] {
    display: inline-flex; flex-direction: column; align-items: flex-end;
    padding: 2px 6px; font-size: 0.75rem; white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
.ricezioni-totali .rt em[b-s5gcyp3gdx] {
    font-style: normal; font-weight: 600; font-size: 0.5625rem;
    letter-spacing: .03em; text-transform: uppercase; color: var(--sedna-text-tertiary);
}
.ricezioni-totali .rt b[b-s5gcyp3gdx] { font-weight: 600; }
.ricezioni-totali .rt--forte b[b-s5gcyp3gdx] { font-weight: 700; font-size: 0.8125rem; }

.ricezioni-grid[b-s5gcyp3gdx]  .ricezioni-check { color: var(--sedna-success-600, #2e7d32); }

/* ═══ LA BANDA «LISTA FILTRATA» ═══
   Nel vecchio è rossa, e per una ragione: dice che quello che si sta guardando NON è tutto.
   Qui è ambra — avviso, non errore: non c'è niente di rotto, c'è una lista ristretta da un
   gesto. Ma deve saltare all'occhio, o si scambia il filtro per merce mancante. */
.ric-filtrata[b-s5gcyp3gdx] {
    display: flex;
    align-items: center;
    gap: var(--sedna-space-2);
    padding: 4px var(--sedna-space-3);
    margin-bottom: var(--sedna-space-2);
    border-left: 4px solid var(--sedna-warning-600, #d97706);
    background: var(--sedna-warning-50, #fffbeb);
    border-radius: var(--sedna-radius-sm);
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-warning-800, #92400e);
}

/* La via d'uscita sta nella banda stessa: nel vecchio si tornava indietro ricliccando la
   stessa cella — un gesto che bisogna sapere, e che nessuno scrive da nessuna parte. */
.ric-filtrata__via[b-s5gcyp3gdx] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    border: 1px solid var(--sedna-warning-600, #d97706);
    background: transparent;
    color: inherit;
    border-radius: var(--sedna-radius-sm);
    padding: 1px 8px;
    font-size: var(--sedna-text-xs, 0.75rem);
    cursor: pointer;
    white-space: nowrap;
}

.ric-filtrata__via:hover[b-s5gcyp3gdx] { background: var(--sedna-warning-100, #fef3c7); }

/* ═══ LE DUE COLONNE CHE SI SCRIVONO IN GRIGLIA ═══
   Sono l'eccezione in un giornale che per il resto è in sola lettura: devono sembrare
   scrivibili, o nessuno prova a scriverci. */
.ricezioni-ctrl[b-s5gcyp3gdx] {
    cursor: pointer;
    accent-color: var(--sedna-primary);
}

.ricezioni-ctrl:disabled[b-s5gcyp3gdx] { cursor: not-allowed; opacity: 0.45; }

.ricezioni-nota[b-s5gcyp3gdx] {
    width: 100%;
    height: var(--sedna-input-height, 1.375rem);
    border: 1px solid transparent;          /* si vede solo al passaggio: in una griglia
                                               fitta, cento cornici sono rumore */
    border-radius: var(--sedna-radius-sm);
    background: transparent;
    font: inherit;
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-text);
    padding: 0 4px;
}

.ricezioni-nota:hover:not(:disabled)[b-s5gcyp3gdx] { border-color: var(--sedna-border); background: var(--sedna-surface); }
.ricezioni-nota:focus[b-s5gcyp3gdx] { border-color: var(--sedna-primary); background: var(--sedna-surface); outline: none; }
.ricezioni-nota:disabled[b-s5gcyp3gdx] { cursor: not-allowed; color: var(--sedna-text-tertiary); }

/* ═══ I COLORI DI RIGA DEL GIORNALE ═══
   Nel vecchio sono cinque regole (RicezioneMerceView.xaml:2058-2086). Qui ce ne sono tre —
   quelle di cui la riga di lista porta il dato — e usano i token degli stati invece dei colori
   letterali dell'originale (Linen, LightCoral): dicono la stessa cosa e restano leggibili anche
   in tema scuro, dove un LightCoral fisso diventerebbe illeggibile.

   ⚠️ Tinte MOLTO tenui, e testo mai schiarito: sono decine di righe affiancate, e un fondo
   troppo carico rende faticoso leggere i numeri — che sono la ragione per cui si guarda il
   giornale. Il colore deve farsi notare di sfuggita, non imporsi. */

/* PRESA in merce produttori: la riga non si modifica e non si elimina (il server risponde 409).
   È il colore più forte dei tre perché è l'unico che dice «non ci lavorare». */
.ric-r--presa > .ssg__td[b-s5gcyp3gdx] {
    background: var(--sedna-error-50, #fef2f2);
}

.ric-r--presa:hover > .ssg__td[b-s5gcyp3gdx] {
    background: var(--sedna-error-100, #fee2e2);
}

/* LAVORATA: la merce è entrata in lavorazione. Si può ancora guardare, ma il lotto non accetta
   più accodamenti — è la regola che protegge la tracciabilità. */
.ric-r--lavorata > .ssg__td[b-s5gcyp3gdx] {
    background: var(--sedna-warning-50, #fffbeb);
}

.ric-r--lavorata:hover > .ssg__td[b-s5gcyp3gdx] {
    background: var(--sedna-warning-100, #fef3c7);
}

/* RESO: merce che torna indietro. Nel vecchio è una spunta in colonna; qui anche una tinta,
   perché in mezzo a cento entrate un reso che si legge solo da una casella si perde. */
.ric-r--reso > .ssg__td[b-s5gcyp3gdx] {
    background: var(--sedna-info-50, #eff6ff);
}

.ric-r--reso:hover > .ssg__td[b-s5gcyp3gdx] {
    background: var(--sedna-info-100, #dbeafe);
}

/* ⚠️ La riga ATTIVA e la riga SPUNTATA vincono sul colore di stato: sono lo stato della
   NAVIGAZIONE — dove sono, cosa ho scelto — e se il colore di stato le coprisse non si
   capirebbe più su quale riga si sta lavorando. Stessa convenzione di tutte le griglie. */
.ric-r.ssg__row--active > .ssg__td[b-s5gcyp3gdx] { background: var(--sedna-surface-variant, #eeeeee); }
.ric-r.ssg__row--selected > .ssg__td[b-s5gcyp3gdx] { background: var(--sedna-primary-subtle, #dbeafe); }

/* La legenda dei colori: minuta, in fondo alla fascia filtri. Serve la prima settimana. */
.ric-legenda[b-s5gcyp3gdx] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.65rem;
    color: var(--sedna-text-tertiary);
    white-space: nowrap;
}

.ric-legenda__v[b-s5gcyp3gdx] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 2px;
    border: 1px solid var(--sedna-border);
    margin-left: 0.4rem;
}

.ric-legenda__v--presa[b-s5gcyp3gdx] { background: var(--sedna-error-50, #fef2f2); }
.ric-legenda__v--lavorata[b-s5gcyp3gdx] { background: var(--sedna-warning-50, #fffbeb); }
.ric-legenda__v--reso[b-s5gcyp3gdx] { background: var(--sedna-info-50, #eff6ff); }

/* Riga presa da un documento d'acquisto: e' l'altro modo in cui smette di essere
   disponibile. Tinta diversa dalla presa in merce produttori — sono due percorsi
   diversi, e confonderli vorrebbe dire cercare la riga nel posto sbagliato. */
[b-s5gcyp3gdx] .ric-r--presa-acq > td {
    background: var(--sedna-info-subtle, rgba(13, 110, 253, 0.07));
}
/* /Pages/Magazzino/ChiusuraMagazzinoPage.razor.rz.scp.css */
/* Chiusura di magazzino: la maschera deve SPIEGARE, perché la funzione fa una cosa
   invisibile. La fascia che lo dice sta in cima, prima dei campi — non in fondo, dove
   la leggerebbe solo chi ha già premuto. */

.chiu__body[b-jkdcvv7yv4] {
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding-bottom: 24px;
}

.chiu__spiega[b-jkdcvv7yv4] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 14px;
    font-size: 0.8125rem;
    line-height: 1.55;
    border: 1px solid var(--sedna-info-600, #0288d1);
    background: var(--sedna-info-50, rgba(2, 136, 209, 0.08));
    border-radius: var(--sedna-radius-md);
}

.chiu__spiega i[b-jkdcvv7yv4] {
    color: var(--sedna-info-700, #0277bd);
    flex-shrink: 0;
    line-height: 1.5;
}

.chiu__card[b-jkdcvv7yv4] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

.chiu__card--ok[b-jkdcvv7yv4] {
    border-color: var(--sedna-success-600, #43a047);
}

.chiu__card--ok .chiu__card-h[b-jkdcvv7yv4] {
    color: var(--sedna-success-700, #2e7d32);
}

.chiu__card-h[b-jkdcvv7yv4] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    font-size: 0.8125rem;
    font-weight: 600;
    border-bottom: 1px solid var(--sedna-border-light));
}

.chiu__card-h__sub[b-jkdcvv7yv4] {
    margin-left: auto;
    font-weight: 400;
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.chiu__card-b[b-jkdcvv7yv4] {
    padding: 12px 14px;
}

.chiu__form[b-jkdcvv7yv4] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    padding: 12px 14px;
}

.chiu__f[b-jkdcvv7yv4] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 190px;
}

.chiu__f--largo[b-jkdcvv7yv4] {
    min-width: 260px;
    flex: 1;
}

.chiu__f label[b-jkdcvv7yv4] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    margin: 0;
}

.chiu__avviso[b-jkdcvv7yv4] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 0 14px 12px;
    padding: 8px 12px;
    font-size: 0.8125rem;
    border-radius: var(--sedna-radius-md);
    border: 1px solid var(--sedna-border);
}

.chiu__avviso--attenzione[b-jkdcvv7yv4] {
    border-color: var(--sedna-warning-600, #f57c00);
    background: var(--sedna-warning-50, rgba(245, 124, 0, 0.10));
    color: var(--sedna-warning-700, #ef6c00);
}

.chiu__avviso--info[b-jkdcvv7yv4] {
    border-color: var(--sedna-info-600, #0288d1);
    background: var(--sedna-info-50, rgba(2, 136, 209, 0.08));
    color: var(--sedna-info-700, #0277bd);
}

.chiu__conferma[b-jkdcvv7yv4] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 0 14px 12px;
}

/* I numeri del riepilogo grandi: sono la prova che qualcosa è successo, su una funzione
   che a video non muove niente. */
.chiu__numeri[b-jkdcvv7yv4] {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    margin-bottom: 10px;
}

.chiu__n[b-jkdcvv7yv4] {
    display: flex;
    flex-direction: column;
}

.chiu__n b[b-jkdcvv7yv4] {
    font-size: 1.25rem;
    font-variant-numeric: tabular-nums;
}

.chiu__n span[b-jkdcvv7yv4] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
}

.chiu__n--data b[b-jkdcvv7yv4] {
    color: var(--sedna-success-700, #2e7d32);
}

.chiu__nota[b-jkdcvv7yv4] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
    margin: 0 0 6px;
    line-height: 1.55;
}

.chiu__tab[b-jkdcvv7yv4] {
    display: block;
    overflow-x: auto;
    width: 100%;
    border-collapse: collapse;
    font-size: 0.75rem;
}

.chiu__tab th[b-jkdcvv7yv4],
.chiu__tab td[b-jkdcvv7yv4] {
    padding: 4px 14px 4px 0;
    text-align: left;
    white-space: nowrap;
    border-bottom: 1px solid var(--sedna-border-light));
}

.chiu__tab th[b-jkdcvv7yv4] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    font-weight: 600;
}

.chiu__tab .num[b-jkdcvv7yv4] {
    text-align: right;
}

.chiu__tab .mono[b-jkdcvv7yv4] {
    font-family: var(--sedna-font-mono, "JetBrains Mono", ui-monospace, monospace);
    font-variant-numeric: tabular-nums;
}

/* Il valore è un numero di bilancio: si legge come gli altri, non più piccolo. */
.chiu__n--valore b[b-jkdcvv7yv4] {
    color: var(--sedna-text);
}

/* L'avviso dentro la card dell'esito non ha i margini della fascia in testata. */
.chiu__avviso--dentro[b-jkdcvv7yv4] {
    margin: 0 0 10px;
}

/* Il promemoria delle due causali: una riga, non due tendine. Le causali si
   scelgono una volta l'anno e restano; tenerle a video sempre significa
   chiedere ogni volta una cosa gia' decisa. */
.chiu__promemoria[b-jkdcvv7yv4] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
}
.chiu__promemoria--manca[b-jkdcvv7yv4] {
    color: var(--sedna-warning-700, #ef6c00);
}
.chiu__promemoria--manca > i[b-jkdcvv7yv4] { margin-right: 0.25rem; }

/* Il mix sotto il totale: piccolo e su riga sua — accompagna il numero, non
   compete con lui. */
.chiu__mix[b-jkdcvv7yv4] {
    display: block;
    margin-top: 0.15rem;
    font-size: 0.72rem;
    font-weight: 400;
    color: var(--sedna-text-tertiary);
    white-space: normal;
}

/* La riga che spiega cosa fa il criterio scelto: cambia col criterio, e senza
   di essa «…poi l'ultimo prezzo d'acquisto» non dice cosa succede a chi quel
   prezzo non ce l'ha. */
.chiu__aiuto[b-jkdcvv7yv4] {
    display: block;
    margin-top: 0.2rem;
    font-size: 0.75rem;
    line-height: 1.35;
    color: var(--sedna-text-secondary);
}

/* ── QUALI MAGAZZINI ───────────────────────────────────────────────────────────
   Caselle e non una tendina: chiudere piu' di un magazzino e' normale a fine
   esercizio, e con una tendina a scelta singola servirebbero tre giri della
   maschera per fare una cosa sola. */

.chiu__mag-v[b-jkdcvv7yv4] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.3rem 0.6rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    font-size: 0.8125rem;
    cursor: pointer;
}

.chiu__mag-v--on[b-jkdcvv7yv4] {
    border-color: var(--sedna-primary);
    background: var(--sedna-primary-subtle);
}

.chiu__mag-d[b-jkdcvv7yv4] {
    color: var(--sedna-text-secondary);
}

/* Gia' chiuso: si dice ACCANTO alla voce, non dopo aver premuto. Una nuova
   chiusura deve essere a una data successiva, e scoprirlo dall'errore e' tardi. */
.chiu__mag-ch[b-jkdcvv7yv4] {
    font-size: 0.72rem;
    color: var(--sedna-warning-700, #ef6c00);
    white-space: nowrap;
}

/* ── LA PROVA ──────────────────────────────────────────────────────────────────
   La fascia in cima dice per prima cosa che non ha scritto niente: questa
   schermata assomiglia all'esito di una chiusura riuscita, e chi la vede dopo
   aver premuto un pulsante puo' crederci. */
.chiu__nonscrive[b-jkdcvv7yv4] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.5rem 0.7rem;
    margin-bottom: 0.75rem;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-success-subtle, #e8f5e9);
    color: var(--sedna-success-800, #1b5e20);
    font-size: 0.8125rem;
    line-height: 1.4;
}

.chiu__prova-mag + .chiu__prova-mag[b-jkdcvv7yv4] {
    margin-top: 1rem;
    padding-top: 0.75rem;
    border-top: 1px dashed var(--sedna-border);
}

.chiu__prova-tit[b-jkdcvv7yv4] {
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
    font-size: 0.875rem;
    margin-bottom: 0.3rem;
}

.chiu__prova-riga[b-jkdcvv7yv4] {
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
    margin: 0 0 0.4rem;
}

/* Gli scarti in evidenza: sono la riga che spiega perche' la griglia delle
   giacenze somma un numero diverso da quello della chiusura. */
.chiu__scarti[b-jkdcvv7yv4] {
    color: var(--sedna-warning-700, #ef6c00);
}

.chiu__tab--prova[b-jkdcvv7yv4] {
    width: auto;
    min-width: min(560px, 100%);
}

.chiu__tab--prova th.chiu__rk[b-jkdcvv7yv4] {
    text-align: left;
    font-weight: 500;
    color: var(--sedna-text-secondary);
    white-space: nowrap;
}

/* La colonna del criterio SCELTO si stacca: fra tre numeri simili, quello che
   verra' davvero applicato deve trovarsi senza rileggere l'intestazione. */
.chiu__col--scelta[b-jkdcvv7yv4] {
    background: var(--sedna-primary-subtle);
}

.chiu__col-tag[b-jkdcvv7yv4] {
    display: block;
    font-size: 0.62rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-primary);
}

.chiu__val[b-jkdcvv7yv4] {
    font-size: 0.95rem;
    font-weight: 600;
}

/* Il peso senza valore non e' una nota a pie' di pagina: su CVF e' l'87% del
   peso anche col criterio piu' permissivo, ed e' il numero che decide se quella
   chiusura si puo' portare in bilancio. */
.chiu__r--senza td[b-jkdcvv7yv4] {
    color: var(--sedna-warning-700, #ef6c00);
}

.chiu__pct[b-jkdcvv7yv4] {
    display: block;
    font-size: 0.7rem;
    color: var(--sedna-text-tertiary);
}

.chiu__nota--dritta[b-jkdcvv7yv4] {
    display: flex;
    align-items: flex-start;
    gap: 0.45rem;
    margin-top: 0.75rem;
    line-height: 1.45;
}

/* ── IL LAVORO CHE STA GIRANDO ─────────────────────────────────────────────── */
.chiu__lavori[b-jkdcvv7yv4] {
    list-style: none;
    margin: 0 0 0.5rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.chiu__lavori li[b-jkdcvv7yv4] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.8125rem;
}

.chiu__lavoro-st[b-jkdcvv7yv4] {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-tertiary);
}

/* ══ IL DISEGNO DEL 27/08 ═══════════════════════════════════════════════════════
   Due card affiancate: a sinistra QUANDO e CON COSA, a destra SU COSA. Sono due
   domande diverse, e in colonna unica la seconda finiva sotto la piega su un
   portatile — cioe' la si rispondeva senza averla vista.
   Sotto i 1100px tornano in colonna: affiancate diventerebbero due strisce
   strette in cui la descrizione del magazzino non ci sta piu'. */
.chiu__due[b-jkdcvv7yv4] {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
    gap: 0.625rem;
    align-items: start;
}

@media (max-width: 1100px) {
    .chiu__due[b-jkdcvv7yv4] { grid-template-columns: minmax(0, 1fr); }
}

.chiu__card--mag .chiu__mag-l[b-jkdcvv7yv4] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    gap: 0.375rem;
    padding: 0 0.875rem 0.75rem;
}

.chiu__card-h__sp[b-jkdcvv7yv4] { flex: 1; }

/* ── LE CAUSALI A PASTIGLIA ───────────────────────────────────────────────────
   Col verso addosso: freccia in su su quella che azzera, in giu' su quella che
   riapre. Scambiarle e' l'errore che questa maschera puo' fare, e in riga
   discorsiva le due si somigliavano. */
.chiu__cau[b-jkdcvv7yv4] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    height: 22px;
    padding: 0 0.55rem;
    border-radius: 999px;
    font-family: var(--sedna-font-mono, ui-monospace, monospace);
    font-size: 0.6875rem;
    font-weight: 600;
    white-space: nowrap;
}

.chiu__cau > i[b-jkdcvv7yv4] { font-size: 0.625rem; }

.chiu__cau--giu[b-jkdcvv7yv4] {
    background: var(--sedna-error-subtle, #ffebee);
    color: var(--sedna-error-700, #d32f2f);
}

.chiu__cau--su[b-jkdcvv7yv4] {
    background: var(--sedna-success-subtle, #e8f5e9);
    color: var(--sedna-success-700, #388e3c);
}

.chiu__cau-t[b-jkdcvv7yv4] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

/* La scorciatoia dentro l'avviso: dire dove si corregge e non portarci vuol dire
   che quasi nessuno lo corregge. */
.chiu__vai[b-jkdcvv7yv4] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    height: 24px;
    padding: 0 0.6rem;
    margin-left: auto;
    border: 1px solid currentColor;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    font-size: 0.72rem;
    font-weight: 500;
    color: inherit;
    text-decoration: none;
    white-space: nowrap;
    flex: none;
}

.chiu__vai:hover[b-jkdcvv7yv4] { background: var(--sedna-surface-variant); }

.chiu__vai > i[b-jkdcvv7yv4] { font-size: 0.625rem; }

/* ── LA TABELLA ───────────────────────────────────────────────────────────────
   Intestazione ferma scorrendo: su un cliente con qualche anno di esercizio
   queste righe sono decine, e una colonna di date senza intestazione non si
   legge. Zebra tenue, non righe colorate: e' un registro, non un cruscotto. */
.chiu__tab thead th[b-jkdcvv7yv4] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--sedna-surface);
    border-bottom: 1px solid var(--sedna-border);
}

.chiu__tab tbody tr:nth-child(even)[b-jkdcvv7yv4] {
    background: var(--sedna-surface-variant, #fcfcfc);
}

.chiu__tab-cod[b-jkdcvv7yv4] {
    font-weight: 600;
    color: var(--sedna-text-secondary);
    margin-right: 0.3rem;
}

/* «Riaperto dal» e' il giorno da cui si torna a scrivere: si legge meno forte di
   «chiuso fino al», che e' il fatto, ma c'e' — chi deve registrare guarda questo. */
.chiu__tab-dal[b-jkdcvv7yv4] { color: var(--sedna-text-secondary); }

/* Lo stato vuoto col suo segno: una riga di testo in una card alta sembra un
   caricamento che non e' finito. */
.chiu__vuoto[b-jkdcvv7yv4] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
    padding: 1.75rem 0.875rem;
    color: var(--sedna-text-tertiary);
}

.chiu__vuoto > i[b-jkdcvv7yv4] { font-size: 1.375rem; }

.chiu__vuoto > span[b-jkdcvv7yv4] { font-size: 0.78rem; }

/* Cosa manca per poter chiudere: sotto le card, non accanto a un pulsante che
   ora sta in cima. */
.chiu__manca[b-jkdcvv7yv4] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0;
}

/* ── RIFINITURE VISTE A VIDEO (27/08) ────────────────────────────────────────
   Le due pastiglie delle causali stavano IMPILATE e centrate: `.chiu__f` mette
   il flusso in colonna — giusto per «etichetta sopra il campo» — e il riquadro
   del promemoria non lo raddrizzava. Con quattro pezzi in riga (pastiglia,
   parola, pastiglia, parola) la colonna diventava una torre di quattro piani. */
.chiu__promemoria[b-jkdcvv7yv4] {
    flex-direction: row;
    justify-content: flex-start;
}

/* La descrizione del magazzino andava a capo su tre righe dentro la casella,
   che diventava alta il triplo delle altre. Una riga con i puntini: il codice
   e' quello che identifica, la descrizione accompagna. */
.chiu__mag-v[b-jkdcvv7yv4] {
    min-width: 0;
}

.chiu__mag-v .chiu__mag-d[b-jkdcvv7yv4] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.chiu__mag-ch[b-jkdcvv7yv4] {
    flex: none;
}

/* Il conteggio nel titolo della card: e' un numero, non una didascalia. */
.chiu__card-h__n[b-jkdcvv7yv4] {
    font-family: var(--sedna-font-mono, ui-monospace, monospace);
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    background: var(--sedna-surface-variant);
    border-radius: 999px;
    padding: 0.1rem 0.45rem;
    text-transform: none;
    letter-spacing: 0;
}

/* Il numero del movimento, cliccabile: STESSA veste del mastrino (.smm-nlink),
   perche' e' la stessa cosa — un numero su cui si preme per aprire il movimento.
   Due gesti uguali che si vedono diversi sono due gesti da imparare due volte. */
.chiu__nlink[b-jkdcvv7yv4] {
    border: none;
    background: transparent;
    padding: 0;
    color: var(--sedna-primary);
    cursor: pointer;
    font: inherit;
}

.chiu__nlink:hover[b-jkdcvv7yv4] { text-decoration: underline; }

.chiu__nomov[b-jkdcvv7yv4] { color: var(--sedna-text-tertiary); }

/* ── IL METODO, L'AGGREGAZIONE, L'AZZERAMENTO ────────────────────────────────── */

/* Il metodo si legge anche a pannello chiuso: e' la scelta che sposta di piu' il
   numero finale, e tenerla dietro a «Cambia» vorrebbe dire chiudere il magazzino
   senza sapere con che regola. */
.chiu__met[b-jkdcvv7yv4] {
    display: inline-flex;
    align-items: center;
    height: 20px;
    padding: 0 0.45rem;
    border-radius: 999px;
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-secondary);
    font-size: 0.68rem;
    font-weight: 600;
    white-space: nowrap;
}

.chiu__met--agg[b-jkdcvv7yv4] {
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
}

.chiu__check[b-jkdcvv7yv4] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8125rem;
    cursor: pointer;
    text-transform: none;
    letter-spacing: 0;
    color: var(--sedna-text);
}

/* Il commutatore del confronto: due scelte, non due pulsanti — si vede quale
   delle due si sta guardando. */
.chiu__sw[b-jkdcvv7yv4] {
    display: inline-flex;
    border: 1px solid var(--sedna-border);
    border-radius: 999px;
    overflow: hidden;
}

.chiu__sw > button[b-jkdcvv7yv4] {
    border: none;
    background: transparent;
    padding: 0.1rem 0.6rem;
    font: inherit;
    font-size: 0.68rem;
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    color: var(--sedna-text-secondary);
    cursor: pointer;
}

.chiu__sw > button.is-on[b-jkdcvv7yv4] {
    background: var(--sedna-primary);
    color: #fff;
}

/* «Azzerato» accanto alla data: chi guarda l'elenco fra sei mesi deve capire in un
   colpo d'occhio perche' da quella data il magazzino e' vuoto. Colore d'allarme,
   perche' quella riga racconta un magazzino svuotato, non un punto fermo. */
.chiu__azz[b-jkdcvv7yv4] {
    display: inline-block;
    margin-left: 0.35rem;
    padding: 0 0.4rem;
    border-radius: 999px;
    background: var(--sedna-error-subtle, #ffebee);
    color: var(--sedna-error-700, #d32f2f);
    font-family: inherit;
    font-size: 0.62rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    vertical-align: middle;
}

/* ── «Sto lavorando», detto dove si guarda ─────────────────────────────────
   ⚠️ In cima al corpo, non nella testata: chi ha appena cliccato «Riapri» su una riga
      guarda quella riga, e una rotella nell'intestazione non ce l'ha nel campo visivo. */
.chiu__lavoro[b-jkdcvv7yv4] {
    display: flex;
    align-items: center;
    gap: .625rem;
    padding: .625rem .875rem;
    margin-bottom: .75rem;
    border: 1px solid var(--sedna-color-primary-200, #bfdbfe);
    border-radius: var(--sedna-radius-md, .5rem);
    background: var(--sedna-color-primary-50, #eff6ff);
    color: var(--sedna-color-text-primary);
    font-size: .8125rem;
}
/* /Pages/Magazzino/GiacenzaAllaDataPage.razor.rz.scp.css */
/* Giacenza a una data: una domanda, una risposta, e la quadratura dietro un gesto. */
   invisibile. La fascia che lo dice sta in cima[b-ribbw0ieyi], prima dei campi — non in fondo[b-ribbw0ieyi], dove
   la leggerebbe solo chi ha già premuto. */

.gdata__body[b-ribbw0ieyi] {
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding-bottom: 24px;
}

.gdata__spiega[b-ribbw0ieyi] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 14px;
    font-size: 0.8125rem;
    line-height: 1.55;
    border: 1px solid var(--sedna-info-600, #0288d1);
    background: var(--sedna-info-50, rgba(2, 136, 209, 0.08));
    border-radius: var(--sedna-radius-md);
}

.gdata__spiega i[b-ribbw0ieyi] {
    color: var(--sedna-info-700, #0277bd);
    flex-shrink: 0;
    line-height: 1.5;
}

.gdata__card[b-ribbw0ieyi] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

.gdata__card--ok[b-ribbw0ieyi] {
    border-color: var(--sedna-success-600, #43a047);
}

.gdata__card--ok .gdata__card-h[b-ribbw0ieyi] {
    color: var(--sedna-success-700, #2e7d32);
}

.gdata__card-h[b-ribbw0ieyi] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    font-size: 0.8125rem;
    font-weight: 600;
    border-bottom: 1px solid var(--sedna-border-light));
}

.gdata__card-h__sub[b-ribbw0ieyi] {
    margin-left: auto;
    font-weight: 400;
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.gdata__card-b[b-ribbw0ieyi] {
    padding: 12px 14px;
}

.gdata__form[b-ribbw0ieyi] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    padding: 12px 14px;
}

.gdata__f[b-ribbw0ieyi] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 190px;
}

.gdata__f--largo[b-ribbw0ieyi] {
    min-width: 260px;
    flex: 1;
}

.gdata__f label[b-ribbw0ieyi] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    margin: 0;
}

.gdata__avviso[b-ribbw0ieyi] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 0 14px 12px;
    padding: 8px 12px;
    font-size: 0.8125rem;
    border-radius: var(--sedna-radius-md);
    border: 1px solid var(--sedna-border);
}

.gdata__avviso--attenzione[b-ribbw0ieyi] {
    border-color: var(--sedna-warning-600, #f57c00);
    background: var(--sedna-warning-50, rgba(245, 124, 0, 0.10));
    color: var(--sedna-warning-700, #ef6c00);
}

.gdata__avviso--info[b-ribbw0ieyi] {
    border-color: var(--sedna-info-600, #0288d1);
    background: var(--sedna-info-50, rgba(2, 136, 209, 0.08));
    color: var(--sedna-info-700, #0277bd);
}

.gdata__conferma[b-ribbw0ieyi] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 0 14px 12px;
}

/* I numeri del riepilogo grandi: sono la prova che qualcosa è successo, su una funzione
   che a video non muove niente. */
.gdata__numeri[b-ribbw0ieyi] {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    margin-bottom: 10px;
}

.gdata__n[b-ribbw0ieyi] {
    display: flex;
    flex-direction: column;
}

.gdata__n b[b-ribbw0ieyi] {
    font-size: 1.25rem;
    font-variant-numeric: tabular-nums;
}

.gdata__n span[b-ribbw0ieyi] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
}

.gdata__n--data b[b-ribbw0ieyi] {
    color: var(--sedna-success-700, #2e7d32);
}

.gdata__nota[b-ribbw0ieyi] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
    margin: 0 0 6px;
    line-height: 1.55;
}

.gdata__tab[b-ribbw0ieyi] {
    display: block;
    overflow-x: auto;
    width: 100%;
    border-collapse: collapse;
    font-size: 0.75rem;
}

.gdata__tab th[b-ribbw0ieyi],
.gdata__tab td[b-ribbw0ieyi] {
    padding: 4px 14px 4px 0;
    text-align: left;
    white-space: nowrap;
    border-bottom: 1px solid var(--sedna-border-light));
}

.gdata__tab th[b-ribbw0ieyi] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    font-weight: 600;
}

.gdata__tab .num[b-ribbw0ieyi] {
    text-align: right;
}

.gdata__tab .mono[b-ribbw0ieyi] {
    font-family: var(--sedna-font-mono, "JetBrains Mono", ui-monospace, monospace);
    font-variant-numeric: tabular-nums;
}

/* Il valore è un numero di bilancio: si legge come gli altri, non più piccolo. */
.gdata__n--valore b[b-ribbw0ieyi] {
    color: var(--sedna-text);
}

/* L'avviso dentro la card dell'esito non ha i margini della fascia in testata. */
.gdata__avviso--dentro[b-ribbw0ieyi] {
    margin: 0 0 10px;
}

.gdata__f--btn[b-ribbw0ieyi] {
    min-width: auto;
    justify-content: flex-end;
}

.gdata__avviso--ok[b-ribbw0ieyi] {
    border-color: var(--sedna-success-600, #43a047);
    background: var(--sedna-success-50, rgba(67, 160, 71, 0.08));
    color: var(--sedna-success-700, #2e7d32);
}

.gdata__avviso--ko[b-ribbw0ieyi] {
    border-color: var(--sedna-error-600, #e53935);
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.08));
    color: var(--sedna-error-700, #c62828);
}

/* Le partite NEGATIVE si vedono: sono buchi dello storico — merce uscita senza essere
   mai entrata — e sono le stesse che una chiusura scarterebbe. */
.gdata__negativa td[b-ribbw0ieyi] {
    color: var(--sedna-error-700, #c62828);
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.04));
}

.gdata__parziale[b-ribbw0ieyi] {
    color: var(--sedna-warning-700, #ef6c00);
}

/* ── «Sto leggendo», mentre il server macina ───────────────────────────────
   ⚠️ Prende il posto che prenderanno i risultati, così l'occhio è già dove comparirà
      la risposta: una rotella altrove fa cercare due volte. */
.gdata__lavoro[b-ribbw0ieyi] {
    display: flex;
    align-items: center;
    gap: .625rem;
    padding: .75rem 1rem;
    color: var(--sedna-color-text-primary);
    font-size: .8125rem;
}
/* /Pages/Magazzino/GiacenzePage.razor.rz.scp.css */
/* ═══ Giacenze di Magazzino (consultazione) ═══ */

/* La pagina riempie l'altezza visibile e la griglia prende tutto lo spazio
   residuo: header colonne, riga totali (summary) e pager restano SEMPRE
   visibili, le righe scrollano internamente (guscio globale .sedna-page). */
.giacenze-page[b-83940hanv0]  .giacenze-grid {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
}

/* ========================================
   TOOLBAR — searchbox custom + filtri (pattern lista Documenti)
   ======================================== */
.toolbar[b-83940hanv0] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-83940hanv0] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 260px;
}

    .toolbar .search i[b-83940hanv0] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-83940hanv0] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-83940hanv0]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-83940hanv0] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 900px) {
    .toolbar .search[b-83940hanv0] {
        width: 100%;
    }
}

.giac-filtri-toolbar[b-83940hanv0] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

/* I lookup vanno INCAPSULATI a larghezza fissa: la CssClass del SednaLookup
   finisce sul combo interno, ma il wrapper .sedna-lookup-container resta a
   larghezza piena e manderebbe la toolbar su piu' righe. */
.giac-f[b-83940hanv0] { flex: none; }

/* ⚠️ LARGHEZZE MISURATE, NON A OCCHIO (Antonio, 25/08) — stesso metodo della fascia del
   mastrino (SituazioneMovimentiMagazzinoPage.razor.css). Ogni numero e' il testo piu'
   lungo che quel campo puo' mostrare, a 12px Inter, piu' il contorno (18px di padding +
   14px di lente + 2px di bordi = 34):

     Tipo       «Merce, imb., pedane»  117 + 34 = 151  -> 155   (era 165)
     Magazzino  «Tutti i magazzini»     92 + 34 = 126  -> 140   (era 170)

   Il TIPO si tara sul PLACEHOLDER, non sulle voci: «Merce, imb., pedane» e' piu' largo
   di «AC — Accessori» (92) e di «3 tipi» (28). E' lo stato piu' largo, ed e' anche quello
   di partenza.

   ⚠️ L'ARTICOLO NON HA PIU' UNA LARGHEZZA FISSA, e non e' un dettaglio: era 210px sempre,
   che e' troppo per il placeholder e troppo poco per «20003 — stella di natale albero
   vaso 24x1». Adesso e' l'unico elastico e si prende l'avanzo della riga — sulla larghezza
   di lavoro atterra sui 284px, e si stringe fino a 130 quando la riga si affolla. E' il
   campo con le descrizioni lunghe: e' giusto che l'avanzo tocchi a lui.

   Il LOTTO resta a 110px (vedi .giac-filtri-toolbar__lotto): un codice lotto misura 85 e
   con i 20px di padding fa 107. Era gia' giusto. */
.giac-f--tipo[b-83940hanv0] { flex: 0 1 155px; min-width: 130px; }
.giac-f--articolo[b-83940hanv0] { flex: 1 1 160px; min-width: 130px; }
.giac-f--magazzino[b-83940hanv0] { flex: 0 1 140px; min-width: 120px; }

    .giac-f[b-83940hanv0]  .sedna-lookup-container,
    .giac-f[b-83940hanv0]  .dxbl-combobox,
    .giac-f[b-83940hanv0]  .giac-filtri-toolbar__articolo,
    .giac-f[b-83940hanv0]  .giac-filtri-toolbar__magazzino { width: 100%; }

/* Input lotto: stesso vestito della searchbox, monospace per il codice. */
.giac-filtri-toolbar__lotto[b-83940hanv0] {
    width: 110px;
    height: var(--sedna-input-height, 2.125rem);
    padding: 0 10px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    border-radius: var(--sedna-radius-input, 0.375rem);
    font-size: 0.8125rem;
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    color: var(--sedna-text);
}

    .giac-filtri-toolbar__lotto[b-83940hanv0]::placeholder {
        color: var(--sedna-text-tertiary);
        font-family: inherit;
    }

    .giac-filtri-toolbar__lotto:focus[b-83940hanv0] {
        background: var(--sedna-surface);
        border-color: var(--sedna-primary);
        outline: none;
        box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
    }

/* ⚠️ Il TESTO su fondo warning prende `--sedna-text`, non un colore della scala warning: il 700 di
   quella scala e' l'arancione di marca (#ffa000) e su #fff8e1 fa circa 1,9:1. Verificato oggi su
   un altro foglio. `--sedna-text` si inverte insieme al fondo e regge in tutti e due i temi; il
   segnale «avviso» resta al fondo, al bordo e all'icona. */
.giac-trunc-warning[b-83940hanv0] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-text);
    background: var(--sedna-warning-50);
    border: 1px solid var(--sedna-warning-600);
    border-radius: 999px;
    padding: 2px 10px;
}

/* ========================================
   CELLE — codici in monospace, valori assenti smorzati
   ======================================== */
.giac-mono[b-83940hanv0] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.9em;
}

.giac-empty[b-83940hanv0] {
    color: var(--sedna-text-tertiary);
}

/* ========================================
   MODAL DETTAGLIO (read-only)
   Il DxPopup rende il body fuori dal DOM della pagina: niente ::deep,
   solo classi dirette sugli elementi scritti in questo file.
   ======================================== */
.giac-detail-loading[b-83940hanv0] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 16px 4px;
    color: var(--sedna-text-secondary);
    font-size: 0.8125rem;
}

.giac-detail[b-83940hanv0] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.giac-detail__row[b-83940hanv0] {
    display: grid;
    grid-template-columns: 110px 1fr;
    gap: 10px;
    align-items: baseline;
}

.giac-detail__lbl[b-83940hanv0] {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
}

.giac-detail__val[b-83940hanv0] {
    font-size: 0.8125rem;
    color: var(--sedna-text);
}

.giac-detail__nums[b-83940hanv0] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    margin-top: 6px;
    padding: 10px 12px;
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
}

.giac-detail__num[b-83940hanv0] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.giac-detail__big[b-83940hanv0] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 1.0625rem;
    font-weight: 600;
    color: var(--sedna-text);
    font-variant-numeric: tabular-nums;
}

.giac-detail__meta[b-83940hanv0] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 6px;
    font-size: 0.75rem;
    color: var(--sedna-text-tertiary);
}

/* Codice e ragione sociale del fornitore nella stessa cella: il codice in evidenza
   (e' quello che si cerca), il nome accanto piu' tenue — come le altre coppie
   codice-descrizione della pagina. */
.giac-forn-desc[b-83940hanv0] {
    color: var(--sedna-text-secondary);
}

/* Il filtro sulle quantità: largo quanto basta a leggere «Diverse da zero» senza troncare. */
.giac-f--qta[b-83940hanv0] {
    min-width: 148px;
}



/* ── La verifica di quadratura, scritta sulla riga ──────────────────────────── */

/* ⚠️ Tre stati, tre pesi visivi diversi. La cella VUOTA («mai verificata») non ha
      classe: non deve attirare l'occhio, perché «non lo so» non è una notizia. */
.giac-ver[b-83940hanv0] { display: inline-flex; align-items: center; gap: 4px; font-size: .78rem; }

.giac-ver--ok[b-83940hanv0] { color: var(--sedna-success-700, #15803d); }
.giac-ver--ko[b-83940hanv0] { color: var(--sedna-error-700, #b91c1c); font-weight: 600; }

/* ⚠️ SPENTA, senza simbolo: la partita si è mossa dopo il controllo, quindi la data dice
      «l'avevi guardata allora», non «è a posto». Un ✓ grigio si legge lo stesso come ✓. */
.giac-ver--scaduta[b-83940hanv0] { color: var(--sedna-text-tertiary); font-style: italic; }

.giac-ver__num[b-83940hanv0] { font-size: .75rem; color: var(--sedna-error-700, #b91c1c); }

/* ⚠️ Sfondo tenue e non testo rosso su tutta la riga: la riga deve saltare all'occhio
      scorrendo, ma i numeri dentro devono restare leggibili — sono quelli che si confrontano. */
[b-83940hanv0] .giac-riga--non-quadra > td { background: var(--sedna-error-50, #fef2f2); }

/* ── Il pannello dell'esito ─────────────────────────────────────────────────── */
.giac-quad[b-83940hanv0] {
    margin: .75rem 0;
    padding: .75rem 1rem;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .5rem);
    background: var(--sedna-surface);
}

.giac-quad__esito[b-83940hanv0] { font-size: .875rem; }
.giac-quad__ok[b-83940hanv0] { color: var(--sedna-success-700, #15803d); display: inline-flex; align-items: center; gap: .5rem; }
.giac-quad__ko[b-83940hanv0] { color: var(--sedna-error-700, #b91c1c); display: inline-flex; align-items: center; gap: .5rem; }

.giac-quad__azioni[b-83940hanv0] { margin-top: .75rem; display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }

/* ⚠️ La nota sta PRIMA dei pulsanti e occupa tutta la riga: è quello che bisogna aver letto
      prima di premere, non una postilla da leggere dopo aver riscritto novemila giacenze. */
.giac-quad__nota[b-83940hanv0] {
    flex: 1 0 100%;
    margin: 0 0 .5rem;
    font-size: .8125rem;
    color: var(--sedna-color-text-secondary);
}

.giac-quad__ant[b-83940hanv0] {
    margin-top: .625rem;
    font-size: .8125rem;
    color: var(--sedna-text);
}

.giac-quad__fatto[b-83940hanv0] { margin-left: .5rem; color: var(--sedna-success-700, #15803d); font-weight: 600; }

/* ⚠️ Le tre misure una sotto l'altra e non in fila: in fila su una colonna stretta vanno a
      capo dove capita, e due numeri spezzati si confrontano peggio di tre allineati. */
.giac-ver__num[b-83940hanv0] { display: flex; flex-direction: column; line-height: 1.35; }

/* ⚠️ Si evidenzia SOLO la misura che non torna. Metterle in rosso tutte e tre farebbe cercare
      a mente quale delle tre è colpevole — che è il lavoro che questa colonna deve risparmiare. */
.giac-ver__diff[b-83940hanv0] { color: var(--sedna-error-700, #b91c1c); font-weight: 600; }

/* Il velo, con la stessa forma dell'altra pagina: chi passa dall'una all'altra riconosce il segnale. */
.giac-quad--lavoro[b-83940hanv0] { display: flex; align-items: center; gap: .625rem; font-size: .8125rem; }
/* /Pages/Magazzino/MovimentiList.razor.rz.scp.css */
/* ═══ Movimenti di Magazzino (lista) ═══ */

/* Griglia a piena altezza dentro il guscio .sedna-page (righe scrollano,
   header/summary/pager sempre visibili). */
.movimenti-page[b-st38klqpm4]  .movimenti-grid {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
}

/* ========================================
   TOOLBAR — searchbox custom + filtri (pattern lista Documenti/Giacenze)
   ======================================== */
.toolbar[b-st38klqpm4] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-st38klqpm4] {
    position: relative;
    flex: none;
    width: 280px;
}

    .toolbar .search i[b-st38klqpm4] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-st38klqpm4] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-st38klqpm4]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-st38klqpm4] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

@media (max-width: 900px) {
    .toolbar .search[b-st38klqpm4] {
        width: 100%;
    }
}

.mov-filtri-toolbar[b-st38klqpm4] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.mov-filtri-toolbar__lbl[b-st38klqpm4] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-text-secondary);
}

.mov-filtri-toolbar[b-st38klqpm4]  .mov-filtri-toolbar__date {
    width: 120px;
}

/* Lookup incapsulati a larghezza fissa (v. GiacenzePage: il wrapper
   .sedna-lookup-container resterebbe a larghezza piena). */
.mov-f[b-st38klqpm4] { flex: none; }
.mov-f--causale[b-st38klqpm4] { width: 190px; }
.mov-f--magazzino[b-st38klqpm4] { width: 170px; }

    .mov-f[b-st38klqpm4]  .sedna-lookup-container,
    .mov-f[b-st38klqpm4]  .dxbl-combobox,
    .mov-f[b-st38klqpm4]  .mov-filtri-toolbar__causale,
    .mov-f[b-st38klqpm4]  .mov-filtri-toolbar__magazzino { width: 100%; }

/* ⚠️ Il TESTO su fondo warning prende `--sedna-text`, non un colore della scala warning: il 700 di
   quella scala e' l'arancione di marca (#ffa000) e su #fff8e1 fa circa 1,9:1. Verificato oggi su
   un altro foglio. `--sedna-text` si inverte insieme al fondo e regge in tutti e due i temi; il
   segnale «avviso» resta al fondo, al bordo e all'icona. */
.mov-trunc-warning[b-st38klqpm4] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-text);
    background: var(--sedna-warning-50);
    border: 1px solid var(--sedna-warning-600);
    border-radius: 999px;
    padding: 2px 10px;
}

/* ========================================
   CELLE — codici monospace, chip segno/origine
   ======================================== */
.mov-mono[b-st38klqpm4] {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.9em;
}

.mov-empty[b-st38klqpm4] {
    color: var(--sedna-text-tertiary);
}

.mov-segno[b-st38klqpm4] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.75rem;
    font-weight: 600;
}

.mov-segno--carico[b-st38klqpm4] {
    color: var(--sedna-success-700, #15803d);
}

.mov-segno--scarico[b-st38klqpm4] {
    color: var(--sedna-error-700);
}

.mov-origine[b-st38klqpm4] {
    display: inline-flex;
    align-items: center;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    padding: 1px 8px;
    border-radius: 999px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-secondary);
}

.mov-origine--man[b-st38klqpm4] {
    border-color: var(--sedna-primary);
    color: var(--sedna-primary);
    background: var(--sedna-primary-subtle);
}
/* /Pages/Magazzino/MovimentoNewPage.razor.rz.scp.css */
/* ═══ Nuovo Movimento di Magazzino (inserimento manuale) ═══ */

/* Chip segno (dettato dalla causale): mostrato accanto alla causale e nel
   footer della griglia righe. */
.mov-new-segno[b-fj7xs6955o] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 3px 10px;
    border-radius: 999px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
}

.mov-new-segno--vuoto[b-fj7xs6955o] {
    color: var(--sedna-text-tertiary);
    font-weight: 500;
}

.mov-new-segno--carico[b-fj7xs6955o] {
    color: var(--sedna-success-700, #15803d);
    border-color: var(--sedna-success-600, #16a34a);
    background: var(--sedna-success-50, #f0fdf4);
}

.mov-new-segno--scarico[b-fj7xs6955o] {
    color: var(--sedna-danger-700, #b91c1c);
    border-color: var(--sedna-danger-600, #dc2626);
    background: var(--sedna-danger-50, #fef2f2);
}

/* ── Card righe ── */
.mov-new-righe[b-fj7xs6955o] {
    display: flex;
    flex-direction: column;
}

.mov-new-righe__footer[b-fj7xs6955o] {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    padding: 8px 12px;
    border: 1px solid var(--sedna-border);
    border-top: none;
    border-radius: 0 0 var(--sedna-radius-input, 0.375rem) var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface-variant);
}

.mov-new-righe__spacer[b-fj7xs6955o] {
    flex: 1 1 auto;
}

.mov-new-tot[b-fj7xs6955o] {
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
}

    .mov-new-tot strong[b-fj7xs6955o] {
        color: var(--sedna-text);
        font-variant-numeric: tabular-nums;
    }

/* Celle read-only e codici nella griglia righe: la griglia renderizza le celle
   dentro il componente → selettori via ::deep (vincolo SednaEditableGridRowView). */
.mov-new-righe[b-fj7xs6955o]  .mov-new-cell-readonly {
    color: var(--sedna-text-secondary);
    font-size: 0.8125rem;
    padding: 0 6px;
}

.mov-new-righe[b-fj7xs6955o]  .mov-new-mono {
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.9em;
}

.mov-new-righe[b-fj7xs6955o]  .mov-new-qta {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

/* ══ La maschera in alto, la griglia grande ══════════════════════════════════
   Antonio, 26/08: «i campi in alto e la griglia che occupa la maggior parte
   dell'altezza, un po' come in movimento contabile».

   ⚠️ Il difetto non erano i campi, era lo SPAZIO FRA i campi: quindici righe di
   dati occupavano due terzi della pagina e alla griglia — la sola cosa su cui si
   lavora davvero — ne restava un quinto, quattro righe visibili. Un movimento di
   magazzino se ne compila dieci, di righe.

   Lo schema e' quello gia' collaudato in Prima Nota (.entity-page--pn): la pagina
   e' una colonna flex, la testata sta al suo, la card delle righe e' l'elemento
   elastico e scrolla DENTRO — mai la pagina intera. ══════════════════════════ */

/* Righe del form piu' fitte. I margini di serie di DxFormLayout sono pensati per
   una maschera con dieci campi in croce, non per una testata di documento. */
/* Misurato sul vivo: ogni riga porta `margin: 6px 0`, cioe' 12px fra una riga e
   l'altra su righe alte 32 — piu' di un terzo dello spazio e' vuoto. Alla griglia
   restavano 111px, quattro righe. */
.movimento-new-page[b-fj7xs6955o]  .dxbl-fl-item {
    margin: 2px 0;
}
.movimento-new-page[b-fj7xs6955o]  .dxbl-fl-gd {
    margin: 2px 0;
}
.movimento-new-page[b-fj7xs6955o]  .dxbl-fl-group-body {
    padding-top: 0.2rem;
    padding-bottom: 0.2rem;
}
.movimento-new-page[b-fj7xs6955o]  .dxbl-fl-group {
    margin-bottom: 0.35rem;
}

/* Campi larghi quanto il dato che portano, non quanto la colonna che li ospita.
   ⚠️ Le date sono dd/MM/yyyy: dieci caratteri piu' il calendario. Un campo largo
   il triplo non fa entrare piu' niente, toglie solo il posto al campo accanto. */
.movimento-new-page[b-fj7xs6955o]  .mov-f--data .dxbl-fl-ctrl { max-width: 8.5rem; }
.movimento-new-page[b-fj7xs6955o]  .mov-f--num  .dxbl-fl-ctrl { max-width: 13rem; }   /* fino a 25 caratteri */
.movimento-new-page[b-fj7xs6955o]  .mov-f--lett .dxbl-fl-ctrl { max-width: 4.5rem; }

/* ── La colonna elastica ── */
.entity-page.movimento-new-page[b-fj7xs6955o] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}
.movimento-new-page .mov-new-righe[b-fj7xs6955o] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}
.movimento-new-page[b-fj7xs6955o]  .mov-new-righe-grid {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}
/* Il corpo della griglia scrolla al suo interno: intestazione colonne e totali
   restano fermi, e la pagina non scrolla mai per intero. */
.movimento-new-page[b-fj7xs6955o]  .mov-new-righe-grid .sedna-editable-grid__wrapper {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
}

/* ── L'etichetta larga quanto la parola ───────────────────────────────────────
   Misurato: DevExpress dà all'etichetta una casella di larghezza FISSA — 114px
   per «Causale», 159px per «Mov.», che è lungo quattro caratteri. Il vuoto fra
   etichetta e campo non è un margine da limare: è casella vuota (Antonio, 26/08).

   ⚠️ La casella fissa serve dove i campi stanno UNO SOTTO L'ALTRO, perché
   allinea le etichette in colonna. Qui i campi stanno in fila — Causale,
   Magazzino, Note fianco a fianco — e non c'è nessuna colonna da allineare: la
   larghezza fissa costa e basta. Per questo la correzione è di QUESTA pagina e
   non del design system: altrove quell'allineamento e' proprio il punto. */
.movimento-new-page[b-fj7xs6955o]  .dxbl-fl-item-horizontal > .dxbl-fl-cpt {
    flex: 0 0 auto;
    width: auto;
    min-width: 0;
    padding-right: 0.5rem;
}
.movimento-new-page[b-fj7xs6955o]  .dxbl-fl-item-horizontal > .dxbl-fl-ctrl {
    flex: 1 1 auto;
    min-width: 0;
}

/* L'avviso «questo non si salva ancora»: si vede, ma non urla — il movimento si
   salva lo stesso, e' UN campo che non passa. */
.mov-new-avviso[b-fj7xs6955o] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    margin: 0.4rem 0;
    padding: 0.45rem 0.7rem;
    border: 1px solid var(--sedna-warning-300, #ffe0a3);
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: var(--sedna-warning-50, #fff8e6);
    font-size: 0.8125rem;
    line-height: 1.35;
}
.mov-new-avviso > i[b-fj7xs6955o] { color: var(--sedna-warning-700, #ef6c00); }

/* ══ LA SCHEDA MOVIMENTO SUL DISEGNO DI ROBERTO ═══════════════════════════════
   ⚠️ I COLORI VENGONO DAI TOKEN, non dagli esadecimali del mock. Il disegno scrive
   #e0e0e0, #616161, #1e88e5: copiarli avrebbe fatto una pagina che ignora il tema
   scuro e che smette di somigliare al resto il giorno che i token cambiano. Quello
   che si prende dal disegno sono le MISURE e la disposizione — quelle sì, alla
   lettera: 28px di campo, etichetta 11px sopra, due colonne, il divisorio a
   sinistra della colonna dei soggetti. ═══════════════════════════════════════ */

.mov-card[b-fj7xs6955o] {
    /* ⚠️ LA SCALA E' QUELLA DEL MOVIMENTO CONTABILE, e non e' una preferenza:
       chi passa dalla prima nota al movimento di magazzino vede la stessa maschera
       con gli stessi campi nella stessa misura, e non deve rimettere a fuoco.
       I numeri vengono dalla testata di prima nota (PrimaNotaTestata.razor.css,
       blocco «scala FISSA compatta»): etichetta 10,5px, campo 12px su 20px di
       altezza. Qui erano 11px MAIUSCOLI su un campo che respirava di piu' — due
       maschere che fanno la stessa cosa e sembrano di due programmi diversi.
       ⚠️ L'altezza si FISSA a 20px invece di lasciare il clamp 20-22px dei token:
       il campo del movimento contabile e' forzato a 20 dal suo foglio, e un campo
       che cresce col viewport accanto a uno che non cresce si vede. */
    --sedna-input-height: 1.25rem;
    --sedna-input-font-size: 0.75rem;

    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border-light);
    border-radius: var(--sedna-radius-lg, 0.75rem);
    padding: 0.6rem 0.85rem;
    box-shadow: var(--sedna-shadow-sm, 0 1px 2px rgba(0,0,0,.05));
    margin-bottom: 0.5rem;
}

/* Due colonne: a sinistra quello che si compila, a destra chi c'è dietro.
   La destra ha un minimo perché sotto i 300px i lookup diventano illeggibili. */
.mov-griglia[b-fj7xs6955o] {
    display: grid;
    grid-template-columns: minmax(0, 2.4fr) minmax(300px, 1fr);
    gap: 0.5rem 1.25rem;
    align-items: start;
}
.mov-col[b-fj7xs6955o] { display: flex; flex-direction: column; gap: 0.3rem; min-width: 0; }
.mov-col--dx[b-fj7xs6955o] {
    border-left: 1px solid var(--sedna-border-light);
    padding-left: 1rem;
}

.mov-riga[b-fj7xs6955o] { display: grid; gap: 0.25rem 0.75rem; align-items: end; }
.mov-riga--2[b-fj7xs6955o] { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
/* ⚠️ Larghezze dal disegno e dal DATO: le date sono dd/MM/yyyy e la lettera è di
   tre caratteri. Un campo largo il triplo non fa entrare niente di più, toglie
   solo il posto al campo accanto. */
.mov-riga--doc[b-fj7xs6955o]  { grid-template-columns: 150px minmax(0, 1fr) 62px 150px; }
.mov-riga--prot[b-fj7xs6955o] { grid-template-columns: 150px minmax(0, 1fr) 62px; }

.mov-f[b-fj7xs6955o] { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
/* ⚠️ SENZA MAIUSCOLE, come le caption della prima nota. La' il maiuscolo era stato
   tolto apposta («affettazione locale», dice il commento nel suo foglio) perche' ne'
   il design system ne' le altre maschere lo usano sui form: qui era rimasto, ed e' la
   ragione per cui le due testate sembravano diverse anche a parita' di misure. */
.mov-f > label[b-fj7xs6955o] {
    font-size: 0.65625rem;
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
    line-height: 1.2;
    color: var(--sedna-text-secondary);
}
.mov-req[b-fj7xs6955o] { color: var(--sedna-error-600, #dc2626); }

.mov-sotto[b-fj7xs6955o] {
    margin-top: 0.15rem;
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--sedna-text-tertiary);
}
.mov-sotto > span[b-fj7xs6955o] { font-weight: 500; text-transform: none; letter-spacing: 0; }

.mov-f[b-fj7xs6955o]  .mov-mono input { font-family: var(--sedna-font-mono, 'JetBrains Mono', monospace); }
.mov-f[b-fj7xs6955o]  .mov-centro input { text-align: center; text-transform: uppercase; }


/* Sottotitolo della testata: numero, stato, segno. */
.mov-sub[b-fj7xs6955o] { display: inline-flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.mov-sub__num[b-fj7xs6955o] { font-family: var(--sedna-font-mono, 'JetBrains Mono', monospace); color: var(--sedna-text-secondary); }
.mov-sub__stato[b-fj7xs6955o] {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 1px 0.5rem;
    border-radius: 999px;
}
.mov-sub__stato--new[b-fj7xs6955o] { color: var(--sedna-success-700, #2e7d32); background: var(--sedna-success-50, #e8f5e9); }
.mov-sub__stato--mod[b-fj7xs6955o] { color: var(--sedna-primary); background: var(--sedna-primary-50, #e3f2fd); }


.mov-new-tot--forte[b-fj7xs6955o] { font-size: 0.8125rem; }
.mov-new-tot--forte strong[b-fj7xs6955o] { font-size: 0.875rem; }

/* Il numero del movimento sulla riga del titolo: stesso badge di Prima Nota, così
   le due maschere si leggono allo stesso modo. In creazione porta un trattino —
   il numero lo assegna il salvataggio, e per i movimenti non esiste un «prossimo»
   da chiedere al server: inventarlo vorrebbe dire mostrare un numero che potrebbe
   non toccare a questo movimento. */
.mov-numbadge[b-fj7xs6955o] {
    display: inline-flex;
    align-items: center;
    padding: 0.05rem 0.5rem;
    border-radius: 0.375rem;
    border: 1px solid var(--sedna-info-500, #38bdf8);
    background: transparent;
    color: var(--sedna-text);
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1.3;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* Causale stretta, descrizione accanto, magazzino stretto: il codice è corto e
   la descrizione si legge nel campo di fianco (o nella tendina). */
.mov-riga--caus[b-fj7xs6955o] { grid-template-columns: 130px minmax(0, 1fr) 150px; }
.mov-f[b-fj7xs6955o]  .mov-desc input { color: var(--sedna-text-secondary); }

/* Numero grande sulla prima riga, natura del documento piccola sotto: stesso
   blocco del movimento contabile, così le due maschere si leggono uguali. */
.mov-head[b-fj7xs6955o] { display: flex; flex-direction: column; gap: 0.1rem; }
.mov-head__riga[b-fj7xs6955o] { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.mov-head__sub[b-fj7xs6955o] {
    font-size: 0.75rem;
    font-weight: 400;
    color: var(--sedna-text-tertiary);
    line-height: 1.2;
}

/* Il tipo riga: una tendina stretta, come nel documento. */
.mov-tipo-select[b-fj7xs6955o] {
    width: 100%;
    height: var(--sedna-input-height, 1.375rem);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    font-family: var(--sedna-font-mono, monospace);
    font-size: 0.72rem;
    padding: 0 0.2rem;
}

/* Il perche' accanto all'etichetta di un campo spento: «di vendita» sul fornitore
   quando la causale e' di vendita. Un campo spento senza motivo sembra un guasto. */
.mov-f__spento[b-fj7xs6955o] {
    margin-left: 0.3rem;
    padding: 0 0.3rem;
    border-radius: 0.2rem;
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-tertiary);
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

/* ═══ LA VISTA: quel poco che la modifica non ha ═══════════════════════════════
   Il resto della pagina è lo stesso markup con i campi spenti, quindi qui non c'è
   un foglio parallelo: solo la pillola della provenienza e la riga di chi ha
   scritto il movimento, che in modifica non hanno senso. */

/* Da dove viene il movimento: manuale, da un documento, da una ricezione. Quando
   ha un'origine ci si clicca sopra e si va lì — è l'unica azione utile su un
   movimento che non si può correggere da qui. */
.mov-orig[b-fj7xs6955o] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.6875rem;
    font-weight: 600;
    padding: 2px 9px;
    border-radius: 999px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-secondary);
    font-family: inherit;
    line-height: 1.4;
}

.mov-orig--link[b-fj7xs6955o] {
    cursor: pointer;
    border-color: var(--sedna-primary);
    color: var(--sedna-primary);
    background: var(--sedna-primary-subtle);
}

    .mov-orig--link:hover[b-fj7xs6955o] {
        background: var(--sedna-primary);
        color: #fff;
    }

/* Chi l'ha scritto e quando: su un movimento che sposta giacenze è la prima
   domanda quando i conti non tornano. */
.mov-meta[b-fj7xs6955o] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 10px;
    font-size: 0.75rem;
    color: var(--sedna-text-tertiary);
}
/* /Pages/Magazzino/RimanenzeInizialiPage.razor.rz.scp.css */
/* Rimanenze iniziali: una maschera di lavoro, non una lista. Le sezioni sono passi —
   dove e quando, cosa, com'è andata — e si leggono dall'alto in basso. */

.rimini__body[b-qvv9648qka] {
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding-bottom: 24px;
}

.rimini__card[b-qvv9648qka] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-surface);
}

.rimini__card-h[b-qvv9648qka] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    font-size: 0.8125rem;
    font-weight: 600;
    border-bottom: 1px solid var(--sedna-border-light));
}

.rimini__card-h__sub[b-qvv9648qka] {
    margin-left: auto;
    font-weight: 400;
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.rimini__card-b[b-qvv9648qka] {
    padding: 12px 14px;
}

.rimini__card-b p[b-qvv9648qka] {
    margin: 0 0 8px;
    font-size: 0.8125rem;
}

/* I tre esiti hanno un bordo che li distingue a colpo d'occhio: «c'era già» NON è rosso,
   perché non è un errore — è un fatto. */
.rimini__card--ok[b-qvv9648qka] {
    border-color: var(--sedna-success-600, #43a047);
}

.rimini__card--ok .rimini__card-h[b-qvv9648qka] {
    color: var(--sedna-success-700, #2e7d32);
}

.rimini__card--info[b-qvv9648qka] {
    border-color: var(--sedna-info-600, #0288d1);
}

.rimini__card--info .rimini__card-h[b-qvv9648qka] {
    color: var(--sedna-info-700, #0277bd);
}

.rimini__card--ko[b-qvv9648qka] {
    border-color: var(--sedna-error-600, #e53935);
}

.rimini__card--ko .rimini__card-h[b-qvv9648qka] {
    color: var(--sedna-error-700, #c62828);
}

.rimini__testata[b-qvv9648qka] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    padding: 12px 14px;
}

.rimini__f[b-qvv9648qka] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 180px;
}

.rimini__f--largo[b-qvv9648qka] {
    min-width: 280px;
    flex: 1;
}

.rimini__f label[b-qvv9648qka] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    margin: 0;
}

.rimini__aiuto[b-qvv9648qka] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
    margin-bottom: 8px;
    line-height: 1.5;
}

.rimini__aiuto code[b-qvv9648qka] {
    background: var(--sedna-surface-alt, rgba(0, 0, 0, 0.05));
    padding: 1px 5px;
    border-radius: 4px;
    font-size: 0.7188rem;
}

/* L'area d'incolla è grande di proposito: ci si butta dentro un foglio intero, e una
   casella piccola suggerirebbe che ci vanno due righe. */
.rimini__incolla[b-qvv9648qka] {
    width: 100%;
    font-family: var(--sedna-font-mono, "JetBrains Mono", ui-monospace, monospace);
    font-size: 0.75rem;
    padding: 8px 10px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 6px);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    resize: vertical;
}

.rimini__azioni[b-qvv9648qka] {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}

.rimini__avviso[b-qvv9648qka] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 0 14px 12px;
    padding: 8px 12px;
    font-size: 0.8125rem;
    border-radius: var(--sedna-radius-md);
    border: 1px solid var(--sedna-border);
}

.rimini__avviso ul[b-qvv9648qka] {
    margin: 4px 0 0;
    padding-left: 18px;
    font-size: 0.75rem;
}

.rimini__avviso--stop[b-qvv9648qka] {
    border-color: var(--sedna-error-600, #e53935);
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.08));
    color: var(--sedna-error-700, #c62828);
}

.rimini__avviso--attenzione[b-qvv9648qka] {
    margin: 12px 0 0;
    border-color: var(--sedna-warning-600, #f57c00);
    background: var(--sedna-warning-50, rgba(245, 124, 0, 0.10));
    color: var(--sedna-warning-700, #ef6c00);
}

/* La tabella scorre da sola: le descrizioni sono lunghe e il corpo pagina non deve mai
   scorrere in orizzontale. */
.rimini__tab[b-qvv9648qka] {
    display: block;
    overflow-x: auto;
    max-height: 420px;
    overflow-y: auto;
    width: 100%;
    border-collapse: collapse;
    font-size: 0.75rem;
}

.rimini__tab th[b-qvv9648qka],
.rimini__tab td[b-qvv9648qka] {
    padding: 4px 12px 4px 0;
    text-align: left;
    white-space: nowrap;
    border-bottom: 1px solid var(--sedna-border-light));
}

.rimini__tab th[b-qvv9648qka] {
    position: sticky;
    top: 0;
    background: var(--sedna-surface);
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    font-weight: 600;
}

.rimini__tab .num[b-qvv9648qka] {
    text-align: right;
}

.rimini__tab .mono[b-qvv9648qka] {
    font-family: var(--sedna-font-mono, "JetBrains Mono", ui-monospace, monospace);
    font-variant-numeric: tabular-nums;
}

.rimini__x[b-qvv9648qka] {
    background: none;
    border: 0;
    padding: 1px 4px;
    color: var(--sedna-text-tertiary, var(--sedna-text-secondary));
    cursor: pointer;
}

.rimini__x:hover[b-qvv9648qka] {
    color: var(--sedna-error-700, #c62828);
}

.rimini__conferma[b-qvv9648qka] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.rimini__nota[b-qvv9648qka] {
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}
/* /Pages/Magazzino/SituazioneMagazzinoPage.razor.rz.scp.css */
/* ═══ SITUAZIONE DI MAGAZZINO PERSONALIZZATA ═══
   La pagina è una fascia di filtri, un piede di totali e la griglia — che è l'unica zona che
   scrolla. Stessa impalcatura del mastrino: chi conosce quella si orienta qui senza impararla. */

/* ⚠️ NIENTE `height` QUI (Bruno, 08/09, misurato nel DOM: la griglia era alta 157.927 px).
   Altezza e overflow vengono dal guscio globale `.sedna-page` — `height: calc(100dvh - inset)`,
   `overflow: hidden` — e la mia `height: 100%` li SOVRASCRIVEVA: il 100% di un padre alto `auto`
   non risolve, la catena collassava, e il Virtualize prendeva lo spazio di tutte le righe
   (5.929 × 28 px). Risultato: scorreva la PAGINA invece della griglia, e il piede coi totali
   finiva centocinquantottomila pixel più in basso.
   ⚠️ Non è un caso isolato: il mastrino ha lo stesso commento in cima al suo foglio — «altezza,
   overflow e padding vengono dal guscio globale». Qui va solo ciò che è proprio di questa pagina. */

/* ── I filtri: una riga che va a capo, non una colonna ─────────────────────────
   ⚠️ Con una colonna, su un portatile da 14" la griglia comincia sotto la piega e la prima
   cosa che si vede di una situazione è il modulo per chiederla. */
.sit-filtri[b-6x4qqgdjzx] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: .5rem .75rem;
    padding: .5rem .75rem;
    background: var(--sedna-surface-variant);
    border-bottom: 1px solid var(--sedna-border);
}

.sit-filtri .f[b-6x4qqgdjzx] {
    display: flex;
    flex-direction: column;
    gap: .15rem;
    min-width: 8rem;
}

.sit-filtri .f label[b-6x4qqgdjzx] {
    font-size: var(--sedna-text-xs, .7rem);
    text-transform: uppercase;
    letter-spacing: .03em;
    /* ⚠️ `--sedna-text-secondary`: `--sedna-color-text-secondary` NON esiste nei token del kit, e
       `var()` prendeva il ripiego in silenzio — l'etichetta restava #6c757d anche col tema scuro. */
    color: var(--sedna-text-secondary);
}

.sit-filtri__azioni[b-6x4qqgdjzx] {
    display: flex;
    align-items: flex-end;
    gap: .375rem;
    margin-left: auto;
}

/* I due comandi alti QUANTO I CAMPI (Antonio, 11/09: «i pulsanti filtra e azzera sono troppo
   alti, devono adeguarsi alla dimensione dei campi di filtro»).
   ⚠️ `SizeMode.Small` da solo non basta: scende a `--sedna-control-height-sm` (22-26px), che e'
   comunque piu' alto dei campi (`--sedna-input-height`, 20-22px). I due token non sono lo stesso
   e non si inseguono: qui serve proprio quello degli INPUT, perche' e' con quelli che i pulsanti
   stanno in riga.
   ⚠️ `::deep`: SednaButton e' un componente figlio e ha il suo scope CSS — senza, questa regola
   non lo raggiunge e sembra non aver fatto niente.
   ⚠️ La classe e' `sedna-button`, LETTA in `SednaButton.GetCssClass()`, non `sedna-btn` che avevo
   scritto a memoria: un selettore che non aggancia niente non da' nessun errore, compila e passa
   i test — si vede solo guardando. */
.sit-filtri__azioni[b-6x4qqgdjzx]  .sedna-button {
    height: var(--sedna-input-height);
    min-height: var(--sedna-input-height);
    padding-block: 0;
    line-height: 1;
}

/* ── Le sorgenti, dentro la finestra (Antonio, 11/09) ─────────────────────────
   Erano una fascia SOPRA i filtri. Diceva la cosa giusta nel posto giusto — con cosa sono fatti
   i numeri sta vicino alle date e all'articolo — ma si apriva spingendo la griglia in basso, e
   chi la apriva per chiedersi «e senza i documenti di trasporto?» perdeva di vista i numeri che
   stava per cambiare.
   ⚠️ Il conteggio resta sul PULSANTE in testata anche a finestra chiusa: e' l'unico posto che
   dice che i numeri a video sono presi con meno documenti del solito.
   ⚠️ Niente sfondo ne' bordo qui: li mette la finestra. Ripeterli disegnerebbe un riquadro dentro
   un riquadro.
   ⚠️ Tolte `.sit-sorg__top` e `.sit-sorg__gesti` INSIEME al loro markup — titolo e comandi ora
   stanno nell'intestazione e nel piede della finestra. Una regola orfana sopravvive ai
   trasferimenti e poi riappare addosso a un elemento che si chiama per caso allo stesso modo. */
.sit-sorg[b-6x4qqgdjzx] {
    display: flex;
    flex-direction: column;
    gap: .25rem;
}

/* ⚠️ Tutta la riga e' il bersaglio, non la sola casella: sono righe alte poco, e una casella da
   tredici pixel si manca. */
.sit-sorg__riga[b-6x4qqgdjzx] {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .2rem .25rem;
    font-size: .8125rem;
    border-radius: var(--sedna-radius-sm, .25rem);
    cursor: pointer;
}

.sit-sorg__riga:hover[b-6x4qqgdjzx] { background: var(--sedna-surface-variant); }

/* ── Due colonne affiancate: entrata e uscita ──────────────────────────────────
   ⚠️ `1fr 1fr` fisse, non `auto-fit`: le due colonne devono restare dove sono anche quando una si
   svuota. Se collassassero, «le uscite» cambierebbero posto sotto gli occhi di chi le sta
   spuntando. Sotto i 40rem vanno una sotto l'altra, che e' l'unico caso in cui muoversi e' meglio
   che stringere. */
.sit-sorg__colonne[b-6x4qqgdjzx] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .25rem 1.25rem;
}

@media (max-width: 40rem) {
    .sit-sorg__colonne[b-6x4qqgdjzx] { grid-template-columns: 1fr; }
}

.sit-sorg__col[b-6x4qqgdjzx] { display: flex; flex-direction: column; gap: .1rem; min-width: 0; }

.sit-sorg__coltop[b-6x4qqgdjzx] {
    display: flex;
    align-items: baseline;
    gap: .5rem;
    padding: .15rem .25rem;
    border-bottom: 1px solid var(--sedna-border);
}

.sit-sorg__coltop strong[b-6x4qqgdjzx] {
    font-size: var(--sedna-text-xs, .7rem);
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--sedna-color-text-secondary, #6c757d);
}

.sit-sorg__coln[b-6x4qqgdjzx] { font-size: var(--sedna-text-xs, .7rem); color: var(--sedna-text-secondary); }

/* Il «Nessuna» di colonna: un collegamento e non un bottone: e' un gesto minuto accanto a
   un'intestazione, e un bottone vero peserebbe piu' della colonna che governa. */
.sit-sorg__link[b-6x4qqgdjzx] {
    margin-left: auto;
    padding: 0;
    border: 0;
    background: none;
    font-size: var(--sedna-text-xs, .7rem);
    color: var(--sedna-primary);
    cursor: pointer;
}

.sit-sorg__link:hover[b-6x4qqgdjzx] { text-decoration: underline; }

/* ⚠️ Un trattino, non il nulla: una colonna vuota che sparisce si legge come «non esiste», e
   invece vuol dire «questa situazione non conta niente in quel verso» — che e' un'informazione. */
.sit-sorg__vuota[b-6x4qqgdjzx] {
    padding: .25rem;
    font-size: .8125rem;
    color: var(--sedna-text-secondary);
}

/* ⚠️ IL TESTO PRENDE `--sedna-text`, NON `--sedna-warning-700` (Bruno, 10/09, misurato).
   Passando ai token veri avevo messo il 700 della scala warning come colore del testo: nella scala
   quello e' un ARANCIONE DI MARCA (#ffa000), non un colore da leggere. Su fondo #fff8e1 dava un
   contrasto di ~1,9:1 a 13px — il ripiego finto di prima (#664d03) ne dava ~8. Cioe' il passaggio
   ai token «giusti» aveva PEGGIORATO la leggibilita': un token esistente ma del ruolo sbagliato e'
   un difetto nuovo, non la correzione di quello vecchio.
   ⚠️ `--sedna-text` funziona in tutti e due i temi perche' si inverte insieme al fondo: chiaro su
   warning-50 scuro nel tema scuro, scuro su #fff8e1 nel chiaro. Il segnale «e' un avviso» resta
   al fondo, al bordo e all'icona — e non deve stare nel colore del testo comunque, perche' un
   colore da solo non e' leggibile da tutti. */

/* ── La fascia del dettaglio di un gruppo ──────────────────────────────────────
   ⚠️ RIMESSA il 10/09: l'avevo portata via col taglio delle bande (`fc6d48f7`), e il markup era
   rimasto. Il risultato era una fascia TRASPARENTE — il testo e il pulsante c'erano, ma si
   leggevano come una riga qualsiasi sopra i filtri, e il commento nel markup continuava a dire
   «la via d'uscita, e si vede». Un taglio grosso non lo prendono ne' la compilazione ne' i test:
   il CSS non si compila e non si prova.
   ⚠️ E i colori adesso vengono da token che ESISTONO (`--sedna-warning-*`, gli stessi del badge):
   prima erano `--sedna-color-warning-bg` e compagni, che non esistono — quindi il giallo era il
   ripiego fisso `#fff3cd`, uguale in tema chiaro e scuro. */
.sit-solo[b-6x4qqgdjzx] {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .4rem .75rem;
    font-size: .8125rem;
    color: var(--sedna-text);
    background: var(--sedna-warning-50);
    border-bottom: 1px solid var(--sedna-warning-500);
}

/* L'icona porta il colore dell'avviso: e' un segno, non una parola da leggere. */
.sit-solo > i[b-6x4qqgdjzx] { color: var(--sedna-warning-700); }

.sit-solo > :last-child[b-6x4qqgdjzx] { margin-left: auto; }

/* ── La riga-gruppo ───────────────────────────────────────────────────────────
   ⚠️ NIENTE `color` QUI. C'era `var(--sedna-text)` su un pulsante: il ripiego e'
   scuro, e nel tema scuro sarebbe rimasto scuro su fondo scuro. Adesso il nome e' testo ed eredita
   dalla cella, che il tema lo sa gia' — e non c'e' piu' niente da ricordarsi di aggiornare. */
.sit-gruppo__et[b-6x4qqgdjzx] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ⚠️ L'icona si vede passandoci sopra: su centodiciannove righe un comando sempre acceso pesa.
   Resta raggiungibile da tastiera — nasconderlo a chi non usa il mouse sarebbe toglierlo. */
.sit-gruppo__solo[b-6x4qqgdjzx] {
    margin-left: .35rem;
    padding: 0 .2rem;
    border: 0;
    background: none;
    font-size: .72rem;
    color: var(--sedna-color-text-secondary, #6c757d);
    opacity: 0;
    cursor: pointer;
}

tr:hover .sit-gruppo__solo[b-6x4qqgdjzx],
.sit-gruppo__solo:focus-visible[b-6x4qqgdjzx] { opacity: 1; }

.sit-gruppo__solo:hover[b-6x4qqgdjzx] { color: var(--sedna-primary); }

.sit-sorg__nota[b-6x4qqgdjzx] {
    padding-top: .25rem;
    font-size: var(--sedna-text-xs, .7rem);
    color: var(--sedna-color-text-secondary, #6c757d);
}

/* ⚠️ Il piede lo dice in tono d'avviso, non da nota a pie' di pagina: e' la ragione per cui questo
   saldo non e' confrontabile con quello di prima. */
.sit-foot__parziale[b-6x4qqgdjzx] {
    margin-left: .375rem;
    font-weight: 600;
    color: var(--sedna-text);
}

/* ⚠️ IL PIEDE DI TESTO NON C'E' PIU' (Bruno, 08/09): i totali stanno SOTTO le colonne, in
   griglia, dove si vede a quale colonna appartiene ogni numero. Una riga di testo sopra la
   griglia costringeva a rileggere l'etichetta per ognuno. */

.sit-grid[b-6x4qqgdjzx] {
    flex: 1 1 auto;
    min-height: 0;
}

/* ── Il verso: una lettera, non una parola ─────────────────────────────────────
   ⚠️ È il dato da cui dipende ogni totale, e sta su ogni riga: si deve leggere scorrendo
   la colonna, non fermandosi a leggerla. */
.sit-verso[b-6x4qqgdjzx] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: var(--sedna-radius-sm, .25rem);
    font-size: .6875rem;
    font-weight: 700;
    line-height: 1;
}

.sit-verso--e[b-6x4qqgdjzx] { color: #0f5132; background: #d1e7dd; }
.sit-verso--u[b-6x4qqgdjzx] { color: #842029; background: #f8d7da; }

/* ── La riga DERIVATA: non esiste sul documento ────────────────────────────────
   ⚠️ Si deve vedere che è ricavata (dalla tara o dalla pedana di una riga merce), perché il
   giorno che un totale non torna si deve capire da dove viene. Un numero derivato che sembra
   letto è il modo più silenzioso di sbagliare.
   ⚠️ Un corsivo tenue e un'etichetta, non un colore d'allarme: non è un errore, è una
   provenienza — e su CVF sono la maggioranza delle righe imballaggio (587 contro 2). */
[b-6x4qqgdjzx] tr.sit-riga--derivata td {
    font-style: italic;
    color: var(--sedna-color-text-secondary, #6c757d);
}

.sit-derivata[b-6x4qqgdjzx] {
    margin-left: .25rem;
    padding: 0 .25rem;
    border-radius: var(--sedna-radius-sm, .25rem);
    font-size: .625rem;
    font-style: normal;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--sedna-color-text-secondary, #6c757d);
    background: var(--sedna-surface-variant);
}

/* ── Le bande di gruppo ──────────────────────────────────────────────────────── */
/* ⚠️ QUI C'ERA IL CSS DELLE BANDE e dei due pulsanti «chiudi/apri tutto». Tolto col resto il
   10/09: senza il gesto che ci portava, quella vista era irraggiungibile. Un foglio di stile che
   descrive cose che non compaiono e' una mappa di una citta' demolita. */

/* ── Il piede ──────────────────────────────────────────────────────────────────
   ⚠️ Non e' il ritorno della riga di testo che Bruno aveva fatto togliere: quella stava SOPRA la
   griglia e non diceva a quale colonna appartenesse ogni numero. I totali sotto le colonne
   restano. Questo dice l'altra meta' — a quante righe si riferiscono, e da dove vengono. */
.sit-foot[b-6x4qqgdjzx] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: clamp(18px, 3vw, 40px);
    padding: 8px clamp(14px, 1.5vw, 20px);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem);
    background: var(--sedna-surface-variant);
}

/* Senza risposta il piede si sbiadisce invece di mostrare tre zeri: uno zero e' un numero, e
   «non lo so ancora» non lo e'. */
.sit-foot.vuoto[b-6x4qqgdjzx] { opacity: .55; }

.sit-foot__ambito[b-6x4qqgdjzx] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: .6875rem;
    font-weight: 600;
    letter-spacing: .02em;
    color: var(--sedna-color-text-secondary, #6c757d);
    white-space: nowrap;
}

/* L'avviso dei gruppi doppi: si nota ma non allarma — non e' un errore dell'utente e non blocca
   niente, e' un dato del server che vale la pena raccontare a chi lo puo' correggere. */
.sit-foot__avviso[b-6x4qqgdjzx] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: .6875rem;
    font-weight: 600;
    color: var(--sedna-text);
}

.sit-foot__avviso > i[b-6x4qqgdjzx] { color: var(--sedna-warning-700); }

.sit-tot[b-6x4qqgdjzx] { display: flex; align-items: baseline; gap: 9px; }

.sit-tot .k[b-6x4qqgdjzx] {
    font-size: .6875rem;
    font-weight: 600;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--sedna-color-text-secondary, #6c757d);
}

.sit-tot .v[b-6x4qqgdjzx] {
    font-family: var(--sedna-font-mono, "JetBrains Mono", monospace);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    font-size: .95rem;
    color: var(--sedna-text);
    white-space: nowrap;
}

.sit-tot .v.neg[b-6x4qqgdjzx] { color: var(--sedna-error-700); }

/* ⚠️ I TRE NUMERI IN LINEA: entrata, uscita, saldo (Bruno, 10/09). Erano impilati, entrata sopra
   e uscita sotto, col saldo di fianco. La ragione del cambio la da' la griglia stessa: sopra il
   piede le colonne sono gia' affiancate — COLLI E, COLLI U, SALDO COLLI — e ripetere quell'ordine
   fa leggere il piede come la continuazione della griglia invece che come un'altra cosa. */
.sit-tot__eu[b-6x4qqgdjzx] {
    display: inline-flex;
    align-items: baseline;
    gap: .4rem;
    font-family: var(--sedna-font-mono, "JetBrains Mono", monospace);
    font-variant-numeric: tabular-nums;
    font-size: .6875rem;
}

.sit-tot__eu .e[b-6x4qqgdjzx] { color: var(--sedna-success-600, #16a34a); }
.sit-tot__eu .u[b-6x4qqgdjzx] { color: var(--sedna-error-600, #dc2626); }

.sit-tot.grand[b-6x4qqgdjzx] { margin-left: auto; }

/* ── Nessuna situazione: si offre il gesto, non si mostra il vuoto ───────────── */
.sit-vuoto[b-6x4qqgdjzx] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .75rem;
    max-width: 34rem;
    margin: 3rem auto;
    padding: 2rem;
    text-align: center;
}

.sit-vuoto i[b-6x4qqgdjzx] {
    font-size: 2.5rem;
    color: var(--sedna-text-secondary);
}

.sit-vuoto h3[b-6x4qqgdjzx] { margin: 0; font-size: 1.125rem; }

.sit-vuoto p[b-6x4qqgdjzx] {
    margin: 0;
    color: var(--sedna-color-text-secondary, #6c757d);
    font-size: .8125rem;
    line-height: 1.5;
}

.sit-vuoto__err[b-6x4qqgdjzx] { color: var(--sedna-error-700); }

/* ── Le lenti stanno un po' più larghe dei campi corti ── */
.sit-filtri .f--lente[b-6x4qqgdjzx] { min-width: 13rem; }

/* ── Il documento in una cella sola: «VFI 617/A» ──────────────────────────────
   Il tipo in tondo tenue, il numero in evidenza: si cerca il numero, il tipo lo si legge di
   conseguenza. */
.sit-doc__tipo[b-6x4qqgdjzx] {
    color: var(--sedna-color-text-secondary, #6c757d);
    font-size: var(--sedna-text-xs, .75rem);
}

.sit-doc__num[b-6x4qqgdjzx] { margin-left: .25rem; font-variant-numeric: tabular-nums; }

/* ⚠️ IL NEGATIVO SI VEDE: un saldo sotto zero e' la cosa per cui si guarda un saldo, e col
   segno meno soltanto si perde scorrendo una colonna di numeri. */
[b-6x4qqgdjzx] td.sit-neg { color: var(--sedna-error-700); }
/* /Pages/Magazzino/SituazioneMovimentiMagazzinoPage.razor.rz.scp.css */
/* SITUAZIONE MOVIMENTI MAGAZZINO
   Altezza, overflow e padding orizzontale vengono dal guscio globale .sedna-page
   (sedna.page.css): la pagina non scrolla, scorre solo il corpo della griglia
   (.sedna-page__body--host) mentre testata, fascia filtri e piede dei totali
   restano fermi. Qui c'è solo ciò che è proprio di questa pagina.
   ATTENZIONE: i selettori che pescano DENTRO la griglia (righe, celle) devono
   passare da ::deep, altrimenti il CSS isolato non li raggiunge. */

/* Filtri su una riga, come la scheda contabile (allineati in basso perché
   hanno le etichettine sopra: il gap e il wrap li dà .sedna-page__tools). */
.smm-filtri[b-8u077o611k] {
    align-items: flex-end;
    gap: 10px;
}

.smm-f[b-8u077o611k] { display: flex; flex-direction: column; gap: 3px; }
.smm-f label[b-8u077o611k] {
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-tertiary);
}
/* ⚠️ TUTTA LA FASCIA STA SU UNA RIGA, E CI STA PER MISURA (Antonio, 25/08).
   Ogni larghezza qui sotto e' il testo piu' lungo che quel campo puo' mostrare, misurato
   a 12px Inter — il font vero della fascia — piu' il suo contorno (18px di padding,
   14px la lente o 28px tendina+X, 2px di bordi). Prima erano numeri tondi a occhio, e
   il conto non tornava: la fascia sfondava e «Raggruppa per» e Filtra andavano a capo.

     Tipo           «5 tipi»                28 + 34 =  62  ->  70
     Magazzino      «Tutti i magazzini»     92 + 34 = 126  -> 140
     Lotto          un codice lotto         85 + 20 = 105  -> 110
     Tipo data      «Data registrazione»   104 + 48 = 152  -> 156
     Raggruppa per  «Nessuno (dettaglio)»  112 + 48 = 160  -> 164

   ⚠️ «TIPO» ERA LARGO 150px PER MOSTRARE «Tutti». Da solo sprecava 88px: e' li' che
   stavano i pixel che mancavano al resto della fascia, non nell'articolo.

   ⚠️ DUE CAMPI SONO CRESCIUTI, e non e' una distrazione: «Tipo data» e «Raggruppa per»
   stavano a 150px e le loro voci piu' lunghe ne chiedono 152 e 160 — troncavano gia'
   prima, e nessuno se n'era accorto perche' le voci corte sono quelle predefinite.

   L'ARTICOLO prende quel che resta (flex: 1) e sulla larghezza di lavoro atterra sui
   ~200px: e' il campo con le descrizioni lunghe, quindi e' giusto che si tenga
   l'avanzo — ma non deve piu' pigliarsi 341px come quando era l'unico elastico. */
.smm-f--art[b-8u077o611k] { flex: 1 1 200px; min-width: 170px; }
.smm-f--mag[b-8u077o611k] { flex: 0 1 140px; min-width: 120px; }
.smm-f--lotto[b-8u077o611k] { flex: 0 1 110px; min-width: 90px; }
/* ⚠️ LE DATE SI TARANO SUL LORO CONTENUTO, NON SUL DEFAULT DEVEXPRESS (Antonio, 25/08).
   Lasciate a «auto» prendevano i 180px di serie di DxDateEdit per mostrare dieci
   caratteri: due campi larghi il doppio del necessario, che spingevano «Tipo data»,
   «Raggruppa per» e il pulsante Filtra su una seconda riga.

   I 112px sono un conto, non un occhio — misurato a video sullo staging:
     9px  padding sinistro dell'input
   + 63px il testo «31/12/2026» (12px Inter: il font vero della fascia)
   +  2px padding destro
   + 31px il pulsante del calendario
   +  2px i bordi
   = 107, arrotondati a 112.

   ⚠️ NEL CONTO NON C'E' IL PULSANTE DI PULIZIA, ed e' una scelta, non una svista
   (Antonio, 25/08). I due campi sono SednaDateEdit T="DateTime" — NON nullable — e
   DevExpress la X non la disegna proprio, su un campo che non si puo' svuotare:
   verificato a video con valore dentro, in hover e col focus nel campo. Prenotarle
   comunque il posto voleva dire 32px di vuoto su ogni campo per un pulsante che non
   arriva mai. Se un domani i campi diventano DateTime? la X compare e questa riga
   torna a `flex: 0 0 9rem` (144px: +31 del pulsante, +4 di gap fra i due).

   Se cambia il formato (dd/MM/yy, o una data con l'ora) va rifatto il conto. */
.smm-f--data[b-8u077o611k] { flex: 0 0 7rem; }

/* Il campo deve STARE nei 144px, non sporgere: DxDateEdit ha una larghezza propria e
   il guscio di SednaDateEdit e' display:contents, quindi non fa da tramite. */
.smm-f--data[b-8u077o611k]  .sedna-dateedit {
    width: 100%;
    min-width: 0;
}
.smm-f--tipodata[b-8u077o611k] { flex: 0 1 156px; min-width: 130px; }
.smm-f--raggruppa[b-8u077o611k] { flex: 0 1 164px; min-width: 136px; }

/* Il multiselect dei tipi non mostra i tipi: mostra «Tutti» o «3 tipi». Sette caratteri,
   non serve la larghezza di una descrizione. */
.smm-f--tipoart[b-8u077o611k] { flex: 0 1 70px; min-width: 62px; }
.smm-f--btn[b-8u077o611k] { flex: 0 0 auto; }
/* Il pulsante Filtra all'altezza degli input (evita che "sbordi" verso l'alto). */
.smm-f--btn[b-8u077o611k]  button {
    height: var(--sedna-input-height, 1.375rem);
    min-height: var(--sedna-input-height, 1.375rem);
    padding-top: 0;
    padding-bottom: 0;
}

/* ⚠️ Il TESTO su fondo warning prende `--sedna-text`, non un colore della scala warning: il 700 di
   quella scala e' l'arancione di marca (#ffa000) e su #fff8e1 fa circa 1,9:1. Verificato oggi su
   un altro foglio. `--sedna-text` si inverte insieme al fondo e regge in tutti e due i temi; il
   segnale «avviso» resta al fondo, al bordo e all'icona. */
/* Avviso "ordinato per colonna": il raggruppamento è spento e la rimanenza
   progressiva non si legge come progressione. Con la via del ritorno accanto. */
.smm-avviso[b-8u077o611k] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.7rem;
    color: var(--sedna-text);
    background: var(--sedna-warning-50);
    border: 1px solid var(--sedna-warning-500);
    border-radius: var(--sedna-radius-base, .5rem);
    padding: 3px 9px;
    align-self: flex-end;
}
.smm-avviso__azione[b-8u077o611k] {
    border: 0;
    background: transparent;
    padding: 0;
    font: inherit;
    color: inherit;
    text-decoration: underline;
    cursor: pointer;
}
.smm-avviso__azione:hover[b-8u077o611k] { color: var(--sedna-text); }

.smm-in[b-8u077o611k] {
    height: var(--sedna-input-height, 1.375rem);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    padding: 0 var(--sedna-input-padding-x, 0.5rem);
    font-size: var(--sedna-input-font-size, 0.75rem);
    width: 100%;
}
.smm-in:focus[b-8u077o611k] {
    outline: none;
    border-color: var(--sedna-focus-color, var(--sedna-primary));
    box-shadow: var(--sedna-input-focus-bar), var(--sedna-focus-ring);
}

/* Intestazione di gruppo (righe master come nel vecchio). */
.smm-grid[b-8u077o611k]  .smm-group {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 2px 8px;
    font-size: 0.78rem;
}
.smm-grid[b-8u077o611k]  .smm-group__desc { color: var(--sedna-text-secondary); }

/* Colonne: rimanenza gialla, carico (entrata) verde, scarico (uscita) rosso, Rim.Netto in evidenza. */
.smm-grid[b-8u077o611k]  td.smm-rim { background: color-mix(in srgb, var(--sedna-warning-500) 20%, transparent); }
.smm-grid[b-8u077o611k]  td.smm-carico { background: color-mix(in srgb, var(--sedna-primary, #2196f3) 10%, transparent); }
.smm-grid[b-8u077o611k]  td.smm-scarico { background: color-mix(in srgb, var(--sedna-success-500, #22c55e) 14%, transparent); }
.smm-grid[b-8u077o611k]  td.smm-carico .mono { color: var(--sedna-text); font-weight: 600; }
.smm-grid[b-8u077o611k]  td.smm-scarico .mono { color: var(--sedna-text); font-weight: 600; }
.smm-grid[b-8u077o611k]  .smm-giac { font-weight: 700; }
.smm-grid[b-8u077o611k]  .caus-cod { color: var(--sedna-text-tertiary); margin-right: 5px; }
.smm-grid[b-8u077o611k]  .mono { font-family: var(--sedna-font-mono, "JetBrains Mono", monospace); font-variant-numeric: tabular-nums; }

/* Piede coi totali del mastrino (il .sedna-page__foot lo tiene fermo). */
.smm-foot[b-8u077o611k] {
    display: flex;
    align-items: center;
    gap: clamp(18px, 3vw, 40px);
    flex-wrap: wrap;
    padding: 8px clamp(14px, 1.5vw, 20px);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, .75rem);
    background: var(--sedna-surface-variant);
}
.smm-foot.vuoto[b-8u077o611k] { opacity: 0.55; }
/* A quale insieme si riferiscono i totali: sta nel piede, accanto ai numeri che
   qualifica, non in un tooltip che nessuno apre. */
.smm-foot__ambito[b-8u077o611k] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--sedna-text-tertiary);
    white-space: nowrap;
}
.smm-tot[b-8u077o611k] { display: flex; align-items: baseline; gap: 9px; }
.smm-tot .k[b-8u077o611k] {
    font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.04em;
    text-transform: uppercase; color: var(--sedna-text-tertiary);
}
.smm-tot .v[b-8u077o611k] {
    font-family: var(--sedna-font-mono, "JetBrains Mono", monospace);
    font-variant-numeric: tabular-nums;
    font-weight: 600; font-size: 0.95rem; color: var(--sedna-text); white-space: nowrap;
}
.smm-tot .v.carico[b-8u077o611k] { color: var(--sedna-success-600, #16a34a); }
.smm-tot .v.scarico[b-8u077o611k] { color: var(--sedna-error-600, #dc2626); }
.smm-tot.grand[b-8u077o611k] { margin-left: auto; }
.smm-tot.grand .k[b-8u077o611k] { color: var(--sedna-text); }
.smm-tot.grand .v[b-8u077o611k] { font-size: 1.1rem; font-weight: 700; }

/* Accordion filtri avanzati (chiuso di default): non deve rubare altezza al corpo. */
.smm-adv[b-8u077o611k] {
    flex: none;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base, .5rem);
    background: var(--sedna-surface);
}
.smm-adv > summary[b-8u077o611k] {
    cursor: pointer;
    padding: 6px 12px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-text-secondary);
    display: flex;
    align-items: center;
    gap: 7px;
    user-select: none;
}
.smm-adv > summary[b-8u077o611k]::-webkit-details-marker { display: none; }
.smm-adv[open] > summary[b-8u077o611k] { border-bottom: 1px solid var(--sedna-border-light, #eee); }
.smm-adv__body[b-8u077o611k] {
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 10px;
    padding: 10px 12px;
}

/* L'avviso di magazzino chiuso: informativo, non allarmante — i conti sono giusti,
   e' il PERIODO che va saputo. */
.smm-avviso--chiuso[b-8u077o611k] {
    color: var(--sedna-text-secondary);
}
.smm-avviso--chiuso .bi-lock-fill[b-8u077o611k] {
    color: var(--sedna-warning-700, #ef6c00);
}

/* Il numero movimento come collegamento: si vede che si può premere, ma resta
   un numero — niente sottolineatura fissa, che su una colonna di cifre diventa
   rumore riga dopo riga. */
.smm-nlink[b-8u077o611k] {
    border: none;
    background: transparent;
    padding: 0;
    color: var(--sedna-primary);
    cursor: pointer;
    font: inherit;
}
.smm-nlink:hover[b-8u077o611k] { text-decoration: underline; }

/* ── LE BANDE DI GRUPPO ───────────────────────────────────────────────────────
   Sobrie di proposito (Antonio, 27/08: «mantenendo sempre un design sobrio, non
   invasivo come quello attuale»): niente colore di riempimento, solo un filo
   sopra e il testo in grassetto. E' un registro, non un cruscotto. */
.smm-grid[b-8u077o611k]  tr.ssg__group-row td {
    background: var(--sedna-surface-variant);
    border-top: 1px solid var(--sedna-border);
    padding: 0.1rem 0.5rem;
}

/* Tutta la banda e' il pulsante: su una riga alta ventidue pixel un chevron di
   dieci si manca. */
/* ⚠️ QUI C'ERA IL CSS DELLE BANDE e dei due pulsanti «chiudi/apri tutto». Tolto col resto il
   10/09: senza il gesto che ci portava, quella vista e' irraggiungibile, e un foglio di stile che
   descrive cose che non compaiono e' una mappa di una citta' demolita. */

/* ── La riga-gruppo ───────────────────────────────────────────────────────────
   ⚠️ Il nome e' TESTO, non un pulsante: eredita il colore dalla cella, che il tema sa gia'. Il
   gesto e' l'icona, e si vede passando sopra la riga — su tante righe un comando sempre acceso
   pesa. Resta raggiungibile da tastiera: nasconderlo a chi non usa il mouse sarebbe toglierlo. */
.smm-gruppo__et[b-8u077o611k] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.smm-gruppo__solo[b-8u077o611k] {
    margin-left: 0.35rem;
    padding: 0 0.2rem;
    border: 0;
    background: none;
    font-size: 0.72rem;
    color: var(--sedna-text-secondary);
    opacity: 0;
    cursor: pointer;
}

tr:hover .smm-gruppo__solo[b-8u077o611k],
.smm-gruppo__solo:focus-visible[b-8u077o611k] { opacity: 1; }

.smm-gruppo__solo:hover[b-8u077o611k] { color: var(--sedna-primary); }

/* ⚠️ IL TESTO PRENDE `--sedna-text`, NON `--sedna-warning-700` (Bruno, 10/09, misurato).
   Passando ai token veri avevo messo il 700 della scala warning come colore del testo: nella scala
   quello e' un ARANCIONE DI MARCA (#ffa000), non un colore da leggere. Su fondo #fff8e1 dava un
   contrasto di ~1,9:1 a 13px — il ripiego finto di prima (#664d03) ne dava ~8. Cioe' il passaggio
   ai token «giusti» aveva PEGGIORATO la leggibilita': un token esistente ma del ruolo sbagliato e'
   un difetto nuovo, non la correzione di quello vecchio.
   ⚠️ `--sedna-text` funziona in tutti e due i temi perche' si inverte insieme al fondo: chiaro su
   warning-50 scuro nel tema scuro, scuro su #fff8e1 nel chiaro. Il segnale «e' un avviso» resta
   al fondo, al bordo e all'icona — e non deve stare nel colore del testo comunque, perche' un
   colore da solo non e' leggibile da tutti. */

/* ── La fascia del dettaglio di un gruppo ──────────────────────────────────────
   ⚠️ Colori dai token che ESISTONO (`--sedna-warning-*`, gli stessi del badge). Sulla situazione
   avevo usato `--sedna-color-warning-bg` e simili, che non esistono: `var()` con un nome
   inesistente non fallisce, prende il ripiego — e il tema non toccava niente, in silenzio. */
.smm-solo[b-8u077o611k] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.75rem;
    font-size: 0.8125rem;
    color: var(--sedna-text);
    background: var(--sedna-warning-50);
    border-bottom: 1px solid var(--sedna-warning-500);
}

/* L'icona porta il colore dell'avviso: e' un segno, non una parola da leggere. */
.smm-solo > i[b-8u077o611k] { color: var(--sedna-warning-700); }

.smm-solo > :last-child[b-8u077o611k] { margin-left: auto; }

/* ⚠️ Un link che sta dentro una cella di griglia: niente padding e niente altezza propria,
      o la riga cresce e con lei tutte le altre — comprese le migliaia che un documento non
      ce l'hanno. */
.smm-doc-link[b-8u077o611k] {
    border: 0;
    background: none;
    padding: 0;
    color: var(--sedna-primary);
    cursor: pointer;
    font: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.smm-doc-link:hover[b-8u077o611k] { color: var(--sedna-primary-hover); }
/* /Pages/Magazzino/SituazioniMagazzinoPage.razor.rz.scp.css */
/* ═══ L'EDITOR DELLE SITUAZIONI ═══ */

/* L'altezza la dà `.sedna-page`: qui non si tocca (v. il commento gemello nella
   consultazione). */
.sitdef-page[b-8ho53v07al] { overflow-y: auto; }

.sitdef-err[b-8ho53v07al] {
    margin: 0 .75rem;
    padding: .5rem .75rem;
    font-size: .8125rem;
    color: var(--sedna-error-700);
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-500);
    border-radius: var(--sedna-radius-sm, .25rem);
}

/* ── La lista: schede, non righe ───────────────────────────────────────────────
   Le situazioni sono poche (tre di fabbrica, qualcuna in più) e ognuna va letta per intero —
   porta, quante sorgenti, come raggruppa. Una tabella avrebbe fatto scorrere gli occhi in
   orizzontale per tre dati. */
.sitdef-lista[b-8ho53v07al] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
    gap: .625rem;
    padding: 0 .75rem;
}

.sitdef-card[b-8ho53v07al] {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    padding: .625rem .75rem;
    text-align: left;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, .5rem);
    cursor: pointer;
}

.sitdef-card:hover[b-8ho53v07al] { border-color: var(--sedna-primary); }

.sitdef-card__top[b-8ho53v07al] { display: flex; align-items: center; gap: .375rem; }

.sitdef-card__cod[b-8ho53v07al] {
    font-family: var(--sedna-font-mono, monospace);
    font-weight: 600;
    font-size: .8125rem;
}

.sitdef-card__pred[b-8ho53v07al],
.sitdef-card__off[b-8ho53v07al] {
    padding: 0 .3rem;
    border-radius: var(--sedna-radius-sm, .25rem);
    font-size: .625rem;
    text-transform: uppercase;
    letter-spacing: .03em;
}

.sitdef-card__pred[b-8ho53v07al] { color: #0f5132; background: #d1e7dd; }
.sitdef-card__off[b-8ho53v07al] { color: #664d03; background: #fff3cd; }

.sitdef-card__desc[b-8ho53v07al] { font-size: .8125rem; }

.sitdef-card__meta[b-8ho53v07al] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    font-size: var(--sedna-text-xs, .75rem);
    color: var(--sedna-color-text-secondary, #6c757d);
}

/* ── La scheda ─────────────────────────────────────────────────────────────── */
.sitdef-scheda[b-8ho53v07al] { display: flex; flex-direction: column; gap: .75rem; padding: 0 .75rem 1rem; }

.sitdef-campi[b-8ho53v07al] {
    display: flex;
    flex-wrap: wrap;
    gap: .625rem .875rem;
    align-items: flex-start;
}

.sitdef-campi .f[b-8ho53v07al] { display: flex; flex-direction: column; gap: .15rem; min-width: 9rem; }
.sitdef-campi .f--largo[b-8ho53v07al] { flex: 1 1 18rem; }
.sitdef-campi .f--check[b-8ho53v07al] { flex-direction: row; align-items: center; gap: .875rem; padding-top: 1.1rem; }

.sitdef-campi label[b-8ho53v07al] {
    font-size: var(--sedna-text-xs, .7rem);
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--sedna-color-text-secondary, #6c757d);
}

.sitdef-campi small[b-8ho53v07al] {
    font-size: var(--sedna-text-xs, .7rem);
    color: var(--sedna-color-text-secondary, #6c757d);
}

/* La porta bloccata: si vede che è chiusa, e il titolo dice perché. */
.sitdef-fisso[b-8ho53v07al] {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    padding: .25rem .5rem;
    font-size: .8125rem;
    background: var(--sedna-surface-variant);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, .375rem);
}

.sitdef-h[b-8ho53v07al] { margin: .5rem 0 0; font-size: .95rem; }
.sitdef-h small[b-8ho53v07al] { font-weight: 400; color: var(--sedna-color-text-secondary, #6c757d); font-size: .75rem; }

/* ── Le sorgenti: UNA RIGA per sorgente ───────────────────────────────────────
   ⚠️ Lo era già nell'intenzione, non nel fatto (Bruno, 08/09): ogni sorgente occupava ~115 px
   perché i componenti dentro si prendevano tutta la larghezza e andavano a capo — la
   predefinita MERCE, che ha OTTO sorgenti, non stava in una schermata. Adesso le larghezze
   sono dichiarate e la riga NON va a capo: si scorre in verticale l'elenco, non ogni voce.
   ⚠️ Il verso incolonnato è il punto: è la cosa che si confronta fra una sorgente e l'altra —
   «questi entrano, quelli escono» si legge scendendo, non aprendo otto schede. */
.sitdef-sorgenti[b-8ho53v07al] { display: flex; flex-direction: column; gap: .25rem; }

.sitdef-sorg[b-8ho53v07al] {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: .5rem;
    padding: .25rem .5rem;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-sm, .25rem);
    overflow-x: auto;
}

/* ⚠️ I componenti del design system nascono a `width: 100%`: senza queste larghezze la riga
   diventa una colonna. Si dichiarano qui e non a occhio dentro il markup. */
.sitdef-sorg > *[b-8ho53v07al] { flex: none; }
.sitdef-sorg[b-8ho53v07al]  .sedna-lookup,
.sitdef-sorg[b-8ho53v07al]  .sedna-combobox,
.sitdef-sorg[b-8ho53v07al]  .dxbl-edit { width: 100%; min-width: 0; }
.sitdef-sorg[b-8ho53v07al]  label { white-space: nowrap; }

/* ⚠️ Spenta si vede ma non sparisce: una sorgente disattivata è una decisione, e resta
   modificabile. Nasconderla farebbe credere che non ci sia. */
.sitdef-sorg--off[b-8ho53v07al] { opacity: .55; }

/* La sorgente è la colonna che porta l'informazione: è l'unica che può crescere. */
.sitdef-sorg__doc[b-8ho53v07al] { flex: 1 1 18rem !important; min-width: 14rem; }

.sitdef-sorg__nd[b-8ho53v07al] {
    font-size: .8125rem;
    color: var(--sedna-color-text-secondary, #6c757d);
}

.sitdef-sorg__righe[b-8ho53v07al] { width: 8.5rem; }

/* Il verso: UN interruttore che si inverte, azzurro in entrata e verde in uscita.
   ⚠️ FONDO TINTO E LETTERA SCURA, non fondo pieno e lettera bianca. `--sedna-info-600` è
   #00acc1 e `--sedna-success-600` è #43a047: il bianco sopra sta intorno a 3:1, sotto il
   minimo per un testo di 12px — è lo stesso errore che ho già fatto oggi mettendo l'arancione
   di marca come colore di testo. Qui il colore sta nel FONDO e nel BORDO, dove non deve essere
   letto, e la lettera resta `--sedna-text`, che si inverte insieme al tema.
   ⚠️ Il colore non è mai l'unico segno: la lettera cambia (E/U) e il titolo lo dice a parole.
   Azzurro e verde sono proprio la coppia che si confonde più spesso. */
.sitdef-verso[b-8ho53v07al] {
    width: 1.9rem;
    padding: .2rem 0;
    font-size: .75rem;
    font-weight: 700;
    font-family: inherit;
    color: var(--sedna-text);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-sm, .25rem);
    cursor: pointer;
    text-align: center;
    /* ⚠️ NIENTE `transition` (visto a video sulla 1025). L'avevo messa per ammorbidire il cambio,
       e faceva proprio il danno che il colore doveva evitare: passando a U il FONDO diventava
       verde subito — `color-mix()` non si interpola, quindi scatta — ma il BORDO restava azzurro,
       fermo a metà di una transizione che non finiva mai. Risultato: fondo verde e bordo
       d'entrata sullo stesso bottone, cioè i due segni che si contraddicono.
       Misurato: con la transizione `borderTopColor` = rgb(0,172,193); spegnendola sullo stesso
       elemento, rgb(67,160,71). Non è il token sbagliato, è l'animazione.
       Un interruttore di stato non ha bisogno di dissolvenze: deve dire cos'è, subito. */
}

.sitdef-verso--e[b-8ho53v07al] {
    background: color-mix(in srgb, var(--sedna-info-600) 18%, transparent);
    border-color: var(--sedna-info-600);
}

.sitdef-verso--u[b-8ho53v07al] {
    background: color-mix(in srgb, var(--sedna-success-600) 18%, transparent);
    border-color: var(--sedna-success-600);
}

.sitdef-verso--e:hover[b-8ho53v07al] { background: color-mix(in srgb, var(--sedna-info-600) 30%, transparent); }
.sitdef-verso--u:hover[b-8ho53v07al] { background: color-mix(in srgb, var(--sedna-success-600) 30%, transparent); }

.sitdef-verso:focus-visible[b-8ho53v07al] { outline: 2px solid var(--sedna-primary); outline-offset: 1px; }

/* `.sitdef-azioni` tolta con la barra in fondo alla scheda: i comandi stanno in testata
   (Antonio, 11/09). Regola cancellata insieme al markup — una regola orfana sopravvive ai
   trasferimenti e poi riappare addosso a un elemento che si chiama per caso allo stesso modo. */

.sitdef-vuoto[b-8ho53v07al] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .75rem;
    max-width: 32rem;
    margin: 3rem auto;
    text-align: center;
}

.sitdef-vuoto i[b-8ho53v07al] { font-size: 2.5rem; color: var(--sedna-text-secondary); }
.sitdef-vuoto h3[b-8ho53v07al] { margin: 0; font-size: 1.125rem; }
.sitdef-vuoto p[b-8ho53v07al] { margin: 0; font-size: .8125rem; color: var(--sedna-text-secondary); }
/* /Pages/Reporting/ReportDesignerPage.razor.rz.scp.css */
/* Le due bande in cima al designer.

   ⚠️ `sedna-banda-errore` esisteva nel markup e NON aveva stile da nessuna parte: un
   messaggio d'errore che si distingue dal resto della pagina solo per l'icona. Visto
   aggiungendo la banda dei modelli di fabbrica, e sistemato qui insieme a quella —
   sono la stessa cosa e devono somigliarsi. */
.sedna-banda-errore[b-bam1r1h5xl],
.sedna-banda-avviso[b-bam1r1h5xl] {
    display: flex;
    align-items: flex-start;
    gap: .6rem;
    margin-bottom: .75rem;
    padding: .6rem .8rem;
    border-radius: var(--sedna-radius-md, .5rem);
    font-size: .8125rem;
    line-height: 1.45;
}

.sedna-banda-errore > i[b-bam1r1h5xl],
.sedna-banda-avviso > i[b-bam1r1h5xl] {
    flex: 0 0 auto;
    margin-top: .1rem;
    font-size: .875rem;
}

.sedna-banda-errore[b-bam1r1h5xl] {
    background: var(--sedna-state-error-bg, #fdecea);
    color: var(--sedna-error-700, #d32f2f);
}

/* Un avviso, non un allarme: il salvataggio funziona, cambia solo dove finisce. */
.sedna-banda-avviso[b-bam1r1h5xl] {
    background: var(--sedna-state-warning-bg, #fff8e1);
    color: var(--sedna-color-text-primary);
}
/* /Pages/Settings/RolesPage.razor.rz.scp.css */
.roles-page[b-e93my64pl5] { display: flex; flex-direction: column; height: calc(100vh - 16px - var(--sedna-shell-dy, 0px)); gap: 8px; }

.rp-create[b-e93my64pl5] {
    display: flex; gap: 8px; align-items: center;
    background: var(--sedna-surface, #fff); border: 1px solid var(--sedna-border, #e4e7eb);
    border-radius: 10px; padding: 10px 12px;
}
.rp-create[b-e93my64pl5]  .rp-create__in { max-width: 280px; min-width: 200px; }

.rp-loading[b-e93my64pl5] { padding: 24px; color: var(--sedna-text-tertiary, #8b929b); display: flex; gap: 8px; align-items: center; }

.rp-body[b-e93my64pl5] { display: grid; grid-template-columns: 280px 1fr; gap: 14px; flex: 1; min-height: 0; }

/* ── lista ruoli ── */
.rp-roles[b-e93my64pl5] {
    display: flex; flex-direction: column; gap: 6px; overflow-y: auto;
    padding-right: 4px;
}
.rp-role[b-e93my64pl5] {
    text-align: left; border: 1px solid var(--sedna-border, #e4e7eb); background: var(--sedna-surface, #fff);
    border-radius: 10px; padding: 10px 12px; cursor: pointer; display: flex; flex-direction: column; gap: 3px;
    transition: border-color .15s, background .15s;
}
.rp-role:hover[b-e93my64pl5] { background: var(--sedna-surface-3, #eef0f3); }
.rp-role.active[b-e93my64pl5] { border-color: var(--sedna-primary, #1e88e5); background: var(--sedna-primary-soft, #e3f2fd); }
.rp-role__top[b-e93my64pl5] { display: flex; align-items: center; gap: 8px; }
.rp-role__name[b-e93my64pl5] { font-weight: 600; font-size: .9rem; color: var(--sedna-text, #1c2127); }
.rp-role__desc[b-e93my64pl5] { font-size: .75rem; color: var(--sedna-text-tertiary, #8b929b); line-height: 1.35; }
.rp-tag[b-e93my64pl5] { font-size: .625rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: 1px 7px; border-radius: 999px; margin-left: auto; }
.rp-tag--sys[b-e93my64pl5] { background: #eef0f3; color: #8b929b; }
.rp-tag--custom[b-e93my64pl5] { background: #e3f2fd; color: #1976d2; }

/* ── matrice permessi ── */
.rp-perms[b-e93my64pl5] {
    border: 1px solid var(--sedna-border, #e4e7eb); border-radius: 12px; background: var(--sedna-surface, #fff);
    overflow-y: auto; padding: 4px 0;
}
.rp-empty[b-e93my64pl5] { padding: 40px; text-align: center; color: var(--sedna-text-tertiary, #8b929b); display: flex; gap: 8px; align-items: center; justify-content: center; }
.rp-perms__head[b-e93my64pl5] {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
    padding: 14px 18px; border-bottom: 1px solid var(--sedna-border-light); position: sticky; top: 0;
    background: var(--sedna-surface, #fff); z-index: 1;
}
.rp-perms__head h3[b-e93my64pl5] { margin: 0; font-size: 1.05rem; font-weight: 600; }
.rp-perms__head p[b-e93my64pl5] { margin: 2px 0 0; font-size: .8rem; color: var(--sedna-text-tertiary, #8b929b); }
.rp-note[b-e93my64pl5] { font-size: .75rem; color: #b26a00; background: #fff6e6; border: 1px solid #ffe0a3; border-radius: 8px; padding: 6px 10px; max-width: 320px; }
.rp-note i[b-e93my64pl5] { margin-right: 4px; }

.rp-mod[b-e93my64pl5] { padding: 6px 0; }
.rp-mod__name[b-e93my64pl5] { font-size: .65rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--sedna-text-tertiary, #8b929b); padding: 10px 18px 4px; }
.rp-row[b-e93my64pl5] { display: flex; align-items: center; gap: 12px; padding: 5px 18px; }
.rp-row:hover[b-e93my64pl5] { background: var(--sedna-surface-2, #f6f7f9); }
.rp-row__entity[b-e93my64pl5] { flex: 0 0 200px; font-size: .82rem; color: var(--sedna-text, #1c2127); }
.rp-row__actions[b-e93my64pl5] { display: flex; flex-wrap: wrap; gap: 6px; }
.rp-chk[b-e93my64pl5] {
    display: inline-flex; align-items: center; gap: 5px; font-size: .75rem; cursor: pointer;
    border: 1px solid var(--sedna-border, #e4e7eb); border-radius: 999px; padding: 2px 10px 2px 7px;
    color: var(--sedna-text-secondary, #59616b); user-select: none;
}
.rp-chk.on[b-e93my64pl5] { border-color: var(--sedna-primary, #1e88e5); background: var(--sedna-primary-soft, #e3f2fd); color: var(--sedna-primary, #1e88e5); font-weight: 600; }
.rp-chk input[b-e93my64pl5] { accent-color: var(--sedna-primary, #1e88e5); }
.rp-chk input:disabled[b-e93my64pl5] { cursor: not-allowed; }
/* /Pages/Subscriptions/Pay.razor.rz.scp.css */

/* Imponibile e IVA sotto il totale: si leggono, non si gridano. Il numero grande resta
   quello che verrà addebitato — questi due servono a chi deve registrare la fattura. */
.pay-scomposizione[b-orqg97qr3q] {
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
}

/* ═══ Il riquadro delle coordinate bancarie ═══
   ⚠️ Niente `bg-light` di Bootstrap: nel tema scuro esce una card CHIARA con sopra il
   testo chiaro, e quello che si legge peggio è proprio l'IBAN — cioè il dato per cui il
   riquadro esiste. I colori vengono dai token, che il tema scuro ridefinisce da sé. */
.pay-coord[b-orqg97qr3q] {
    max-width: 400px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text);
}

.pay-coord .card-header[b-orqg97qr3q] {
    border-bottom: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text);
}

/* IBAN e causale: si copiano a mano guardandoli, quindi non devono andare a capo e devono
   scorrere se il riquadro è stretto. */
.pay-coord__v[b-orqg97qr3q] {
    display: block;
    overflow-x: auto;
    max-width: 100%;
    color: var(--sedna-text);
    white-space: nowrap;
}
/* /Pages/Subscriptions/UpgradePlan.razor.rz.scp.css */
/* ═══ Il riquadro delle coordinate bancarie ═══
   ⚠️ Niente `bg-light` di Bootstrap: nel tema scuro esce una card CHIARA con sopra il
   testo chiaro, e quello che si legge peggio è proprio l'IBAN — cioè il dato per cui il
   riquadro esiste. I colori vengono dai token, che il tema scuro ridefinisce da sé.
   Stessa correzione della pagina Paga. */
.upg-coord[b-n4a1zbef0o] {
    max-width: 400px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-text);
}

.upg-coord .card-header[b-n4a1zbef0o] {
    border-bottom: 1px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text);
}

/* IBAN e causale: si copiano a mano guardandoli, quindi non vanno a capo e scorrono se il
   riquadro è stretto. */
.upg-coord__v[b-n4a1zbef0o] {
    display: block;
    overflow-x: auto;
    max-width: 100%;
    color: var(--sedna-text);
    white-space: nowrap;
}
/* /Shared/Components/AvvisoAllineamentoMagazzino.razor.rz.scp.css */
/* Avviso allineamento magazzino: una FASCIA DI UNA RIGA sopra la griglia.

   Budget: il guscio .sedna-page da' alle liste una riga per i filtri e tutto il resto
   alla griglia. Questa fascia vive dentro quel budget - padding ridotto rispetto a
   .sedna-alert di serie, testo sm, niente margini verticali (il gap lo mette il
   guscio) e flex:none, cosi' non ruba altezza scrollabile alla griglia. */
.alm[b-9ktg7hwzdb] {
    flex: none;
    padding: 0.375rem 0.625rem;
    gap: 0.5rem;
    align-items: center;
    font-size: 0.8125rem;
}

.alm__icon[b-9ktg7hwzdb] {
    width: 1rem;
    height: 1rem;
    font-size: 0.9375rem;
    line-height: 1;
    display: grid;
    place-items: center;
}

.alm__content[b-9ktg7hwzdb] {
    min-width: 0;
}

/* Le due frasi (coda e lotti) stanno in linea quando c'e' spazio e vanno a capo
   quando non ce n'e': su un 14" ne compare comunque una intera. */
.alm__testo[b-9ktg7hwzdb] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 0.75rem;
    line-height: 1.35;
}

.alm__frase[b-9ktg7hwzdb] {
    min-width: 0;
}

/* Il perimetro e' testo di lettura, non un'etichetta: tinta piu' quieta e
   interlinea comoda, perche' spiega e non allarma. */
.alm__perimetro[b-9ktg7hwzdb] {
    margin: 0.375rem 0 0;
    font-size: 0.75rem;
    line-height: 1.45;
    opacity: 0.85;
}

.alm__azioni[b-9ktg7hwzdb] {
    flex: none;
    display: flex;
    align-items: center;
    gap: 0.25rem;
    margin-left: auto;
}

/* Schermi bassi/stretti: le azioni scendono sotto il testo invece di comprimerlo. */
@media (max-width: 900px) {
    .alm[b-9ktg7hwzdb] {
        flex-wrap: wrap;
    }

    .alm__azioni[b-9ktg7hwzdb] {
        margin-left: 0;
    }
}

/* ── Elenco delle righe senza lotto (modal) ──
   Tabella semplice e non una griglia: sono poche righe, raggruppate per movimento, e
   servono a LEGGERE dove intervenire — filtri e ordinamenti qui sarebbero arredamento. */
.alm__caricamento[b-9ktg7hwzdb] { display: flex; justify-content: center; padding: 1.5rem 0; }

.alm__nota[b-9ktg7hwzdb] {
    margin: 0 0 0.75rem;
    font-size: 0.75rem;
    color: var(--sedna-text-secondary, #64748b);
}

.alm__nota--tronca[b-9ktg7hwzdb] { margin-top: 0.75rem; font-style: italic; }
.alm__vuoto[b-9ktg7hwzdb] { margin: 0; font-size: 0.8125rem; }

.alm__mov[b-9ktg7hwzdb] { margin-bottom: 1rem; }

.alm__mov-head[b-9ktg7hwzdb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.25rem 0.5rem;
    background: var(--sedna-surface-2, #f1f5f9);
    border-radius: var(--sedna-radius-input, 0.375rem);
}

.alm__mov-num[b-9ktg7hwzdb] { font-weight: 600; font-size: 0.8125rem; }
.alm__mov-meta[b-9ktg7hwzdb] { font-size: 0.6875rem; color: var(--sedna-text-secondary, #64748b); }

/* Il conteggio a destra: si legge come etichetta della banda, non come un dato in mezzo. */
.alm__mov-conta[b-9ktg7hwzdb] {
    margin-left: auto;
    font-size: 0.6875rem;
    color: var(--sedna-text-secondary, #64748b);
    white-space: nowrap;
}

.alm__tab[b-9ktg7hwzdb] { width: 100%; border-collapse: collapse; font-size: 0.75rem; }

.alm__tab th[b-9ktg7hwzdb] {
    text-align: left;
    font-weight: 600;
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--sedna-text-secondary, #64748b);
    padding: 0.25rem 0.375rem;
    border-bottom: 1px solid var(--sedna-border, #e2e8f0);
}

.alm__tab td[b-9ktg7hwzdb] {
    padding: 0.1875rem 0.375rem;
    border-bottom: 1px solid var(--sedna-border-light);
}

.alm__tab .num[b-9ktg7hwzdb] { text-align: right; font-variant-numeric: tabular-nums; }
.alm__tab .mono[b-9ktg7hwzdb] { font-family: var(--sedna-font-mono, ui-monospace, monospace); }
/* /Shared/Components/AvvisoLiquidazioneInCorso.razor.rz.scp.css */
/* Fascia «liquidazione in corso»: UNA riga sopra la griglia.

   Stesso budget dell'avviso di allineamento magazzino, e per lo stesso motivo: il guscio
   .sedna-page dà alle liste una riga ai filtri e tutto il resto alla griglia. Padding
   ridotto rispetto a .sedna-alert di serie, niente margini verticali (il gap lo mette il
   guscio) e flex:none, così non ruba altezza scrollabile alle righe. */
.alq[b-lsc9327qhc] {
    flex: none;
    padding: 0.375rem 0.625rem;
    gap: 0.5rem;
    align-items: center;
    font-size: 0.8125rem;
}

.alq__icon[b-lsc9327qhc] {
    width: 1rem;
    height: 1rem;
    font-size: 0.9375rem;
    line-height: 1;
    display: grid;
    place-items: center;
}

.alq__content[b-lsc9327qhc] { min-width: 0; }
.alq__frase[b-lsc9327qhc] { line-height: 1.35; }

/* I comandi restano in coda alla riga e non vanno a capo da soli: sono due, e su un 14"
   devono stare a destra della frase senza spingerla fuori. */
.alq__azioni[b-lsc9327qhc] {
    display: inline-flex;
    gap: 0.375rem;
    margin-left: auto;
    flex-shrink: 0;
}
/* /Shared/Components/CentroNotifiche.razor.rz.scp.css */
/* ═══ Centro notifiche ═══
   Il guscio (pannello, backdrop, riga) è quello delle BOZZE — classi globali in app.css —
   perché sono la stessa cosa vista dall'utente: un pannellino che scende dalla barra degli
   strumenti. Riusarlo tiene le due cose identiche invece di farle assomigliare. Qui sotto
   c'è solo quello che le notifiche hanno in più. */

/* ⚠️ Dal 29/08 il pannello è una FINESTRA CENTRALE come la coda dei lavori, non più una
   tendina appesa alla campanella: in quel formato ci stavano poche righe e il messaggio
   importante scorreva via — ed è il motivo per cui i rifiuti delle azioni massive passavano
   inosservati. Qui resta solo la lista, che scorre dentro la finestra. */
.cn-lista[b-e66abzckmy] {
    max-height: min(68vh, 620px);
    overflow-y: auto;
}

/* I gesti in cima, con l'etichetta: nella finestra grande lo spazio c'è, e tre icone mute
   costringevano a passarci sopra per sapere cosa facevano. */
.cn-azioni[b-e66abzckmy] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 0 0 10px;
    border-bottom: 1px solid var(--sedna-border-light);
    margin-bottom: 6px;
}

/* Stati vuoti e messaggi di servizio: tono minore, mai un blocco d'allarme per «non c'è
   niente». */
.cn-vuoto[b-e66abzckmy] {
    padding: 14px 12px;
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
    text-align: center;
}

/* «Non sono riuscito a leggerle» è un'altra cosa da «non ce n'è»: si vede. */
.cn-vuoto--ko[b-e66abzckmy] {
    color: var(--sedna-danger-600, #dc2626);
}

.cn-item[b-e66abzckmy] {
    align-items: flex-start;
    gap: 8px;
    cursor: pointer;
}

/* Una notifica SENZA rotta non è cliccabile, e il puntatore deve dirlo prima del clic:
   promettere un salto che non c'è è peggio che non prometterlo. */
.cn-item--muta[b-e66abzckmy] {
    cursor: default;
}

/* Già letta: resta leggibile ma arretra. Non sparisce — si va a rileggerle, ed è il motivo
   per cui l'elenco non mostra solo le non lette. */
.cn-item--letta[b-e66abzckmy] {
    opacity: 0.62;
}

.cn-item__icona[b-e66abzckmy] {
    font-size: 1rem;
    flex: none;
    margin-top: 1px;
}

/* Il colore lo dà il LIVELLO, non il tipo: due notifiche della stessa famiglia possono
   essere andate bene o male, ed è quello che l'occhio deve cogliere per primo. */
.cn-item__icona--ok[b-e66abzckmy] { color: var(--sedna-success-600, #059669); }
.cn-item__icona--ko[b-e66abzckmy] { color: var(--sedna-danger-600, #dc2626); }
.cn-item__icona--avv[b-e66abzckmy] { color: var(--sedna-warning-600, #d97706); }
.cn-item__icona--info[b-e66abzckmy] { color: var(--sedna-primary, #2563eb); }

.cn-item__msg[b-e66abzckmy] {
    font-size: 0.75rem;
    line-height: 1.35;
    color: var(--sedna-text-secondary);
    margin: 2px 0;
}

/* Il pallino della singola riga: dice QUALI sono da leggere, dove il badge sulla campanella
   dice solo quante. Serve dopo aver aperto il pannello, quando il numero non basta più. */
.cn-item__pallino[b-e66abzckmy] {
    flex: none;
    width: 7px;
    height: 7px;
    margin-top: 6px;
    border-radius: 50%;
    background: var(--sedna-primary, #2563eb);
}

/* I gesti di testata: discreti, non devono competere con le notifiche stesse. */
.cn-tutte[b-e66abzckmy] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: .75rem;
    border: none;
    background: transparent;
    color: var(--sedna-text-secondary);
    cursor: pointer;
    padding: 2px 6px;
    border-radius: var(--sedna-radius-sm, 0.25rem);
}

.cn-tutte:hover[b-e66abzckmy] {
    background: var(--sedna-surface-variant);
    color: var(--sedna-text);
}

/* «Mostra le precedenti»: sta in fondo alla lista, dove si arriva scorrendo.
   Non è un pulsante di comando — è la continuazione dell'elenco — quindi ha il
   peso di una riga, non quello di un'azione. */
.cn-altre[b-e66abzckmy] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    width: 100%;
    padding: 0.5rem;
    border: 0;
    border-top: 1px solid var(--sedna-border-light);
    background: transparent;
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
}

.cn-altre:hover:not(:disabled)[b-e66abzckmy] {
    background: var(--sedna-surface-hover);
    color: var(--sedna-primary);
}

.cn-altre:disabled[b-e66abzckmy] {
    opacity: 0.5;
    cursor: default;
}

/* Il gruppetto di gesti nell'intestazione: il primo prende lo spazio che avanza e spinge gli
   altri a destra, quelli dopo stanno attaccati. Sono tre icone piccole di proposito — la
   finestra serve a leggere le notifiche, non a comandarle. */
.cn-tutte--stretta[b-e66abzckmy] {
    margin-left: 0;
}

.cn-tutte:disabled[b-e66abzckmy] {
    opacity: 0.45;
    cursor: default;
}

/* La X di riga: si vede solo passandoci sopra (o col fuoco da tastiera, che non e' un
   dettaglio — una X che compare solo col mouse non esiste per chi va di Tab). Sta ferma
   nello spazio suo, cosi' comparendo non sposta il testo della notifica. */
.cn-item__x[b-e66abzckmy] {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    margin-top: 1px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: var(--sedna-text-tertiary);
    font-size: 0.62rem;
    cursor: pointer;
    opacity: 0;
    transition: opacity .12s ease;
}

.cn-item:hover .cn-item__x[b-e66abzckmy],
.cn-item__x:focus-visible[b-e66abzckmy] {
    opacity: 1;
}

.cn-item__x:hover:not(:disabled)[b-e66abzckmy] {
    background: var(--sedna-error-subtle, #ffebee);
    color: var(--sedna-error-700, #d32f2f);
}

.cn-item__x:disabled[b-e66abzckmy] {
    opacity: 0.4;
    cursor: progress;
}

/* ⚠️ Il conto dice quante se ne stanno VEDENDO, non quante ce ne sono: un totale non esiste
   e non lo si chiede — sarebbe una domanda al server per sapere quando spegnere un pulsante
   che la risposta stessa dice gia'. Stessa riga della coda dei processi. */
.cn-sfoglia[b-e66abzckmy] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.5rem 12px;
    border-top: 1px solid var(--sedna-border-light);
    font-size: 0.72rem;
    color: var(--sedna-text-tertiary);
}

.cn-fine[b-e66abzckmy] {
    font-style: italic;
}
/* /Shared/Components/CodaProcessi.razor.rz.scp.css */
/* La coda dei lavori del server: una finestra di controllo, non una pagina.
   Densa e leggibile, senza cromature — chi la apre sta cercando una cosa sola. */

.coda[b-yw14f2qc15] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-width: 0;
}

.coda__capo[b-yw14f2qc15] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.coda__tit[b-yw14f2qc15] {
    font-size: 0.8125rem;
    font-weight: 600;
}

.coda__vuoto[b-yw14f2qc15] {
    padding: 18px 4px;
    font-size: 0.8125rem;
    color: var(--sedna-text-secondary);
    text-align: center;
}

.coda__errore[b-yw14f2qc15] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 8px 12px;
    font-size: 0.8125rem;
    border: 1px solid var(--sedna-error-600, #e53935);
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.08));
    border-radius: var(--sedna-radius-md);
}

.coda__errore i[b-yw14f2qc15] {
    color: var(--sedna-error-700, #c62828);
    flex-shrink: 0;
}

/* Il conto dei non riusciti: sta in cima perché è il motivo per cui si apre la finestra. */
.coda__somma[b-yw14f2qc15] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    font-size: 0.8125rem;
    border-radius: var(--sedna-radius-md);
}

.coda__somma--ko[b-yw14f2qc15] {
    border: 1px solid var(--sedna-error-600, #e53935);
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.08));
    color: var(--sedna-error-700, #c62828);
}

/* La tabella scorre da sola: il messaggio d'errore è lungo e non deve allargare la
   finestra — il corpo non scorre mai in orizzontale. */
.coda__tab[b-yw14f2qc15] {
    display: block;
    overflow-x: auto;
    width: 100%;
    border-collapse: collapse;
    font-size: 0.75rem;
}

.coda__tab th[b-yw14f2qc15],
.coda__tab td[b-yw14f2qc15] {
    padding: 5px 12px 5px 0;
    text-align: left;
    vertical-align: top;
    border-bottom: 1px solid var(--sedna-border-light));
}

.coda__tab th[b-yw14f2qc15] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    font-weight: 600;
    white-space: nowrap;
}

.coda__quando[b-yw14f2qc15] {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    color: var(--sedna-text-secondary);
}

/* Il messaggio d'errore va a capo: è il pezzo che serve per capire, e tagliarlo
   toglierebbe proprio la causa. Un tetto c'è, per non far diventare la riga un muro. */
.coda__esito[b-yw14f2qc15] {
    max-width: 460px;
}

.coda__msg[b-yw14f2qc15] {
    display: block;
    overflow-wrap: anywhere;
    color: var(--sedna-error-700, #c62828);
}

.coda__attesa[b-yw14f2qc15] {
    color: var(--sedna-text-tertiary, var(--sedna-text-secondary));
    font-style: italic;
}

.coda__tent[b-yw14f2qc15] {
    margin-left: 6px;
    color: var(--sedna-text-secondary);
}

/* Gli stati. ⚠️ «Riprova da sé» ha un colore SUO, diverso dal rosso: mescolarlo coi
   non riusciti farebbe rilanciare a mano un lavoro che sta già ripartendo. */
.coda__stato[b-yw14f2qc15] {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 999px;
    font-size: 0.6875rem;
    white-space: nowrap;
    background: var(--sedna-surface-alt, rgba(0, 0, 0, 0.05));
    color: var(--sedna-text-secondary);
}

.coda__stato--ok[b-yw14f2qc15] {
    background: var(--sedna-success-50, rgba(67, 160, 71, 0.12));
    color: var(--sedna-success-700, #2e7d32);
}

.coda__stato--ko[b-yw14f2qc15] {
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.12));
    color: var(--sedna-error-700, #c62828);
}

.coda__stato--riprova[b-yw14f2qc15] {
    background: var(--sedna-warning-50, rgba(245, 124, 0, 0.14));
    color: var(--sedna-warning-700, #ef6c00);
}

.coda__stato--corso[b-yw14f2qc15],
.coda__stato--coda[b-yw14f2qc15] {
    background: var(--sedna-info-50, rgba(2, 136, 209, 0.12));
    color: var(--sedna-info-700, #0277bd);
}

.coda__riga--ko td[b-yw14f2qc15] {
    background: var(--sedna-error-50, rgba(229, 57, 53, 0.04));
}

.coda__riga--riprova td[b-yw14f2qc15] {
    background: var(--sedna-warning-50, rgba(245, 124, 0, 0.05));
}

/* La X che archivia un fallito: sta in fondo alla riga, discreta, e compare solo
   dove ha senso — sulle righe che non si possono archiviare non c'è un pulsante
   spento, non c'è niente. Un pulsante grigio su ogni riga è rumore. */
.coda__th-az[b-yw14f2qc15] { width: 32px; }

.coda__az[b-yw14f2qc15] { text-align: right; }

.coda__x[b-yw14f2qc15] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: var(--sedna-text-tertiary);
    font-size: 0.62rem;
    cursor: pointer;
}

.coda__x:hover:not(:disabled)[b-yw14f2qc15] {
    background: var(--sedna-error-subtle, #ffebee);
    color: var(--sedna-error-700, #d32f2f);
}

.coda__x:disabled[b-yw14f2qc15] { opacity: 0.4; cursor: progress; }

/* ── Sfogliare lo storico ────────────────────────────────────────────────────
   ⚠️ Il conto qui dice quante se ne stanno VEDENDO, non quante ce ne sono: un
   totale non esiste e non lo si chiede — sarebbe una domanda al server per
   sapere quando spegnere un pulsante che la risposta stessa dice già. */
.coda__sfoglia[b-yw14f2qc15] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--sedna-border-light);
    font-size: 0.75rem;
    color: var(--sedna-text-tertiary);
}

.coda__fine[b-yw14f2qc15] {
    font-style: italic;
}
/* /Shared/Components/CondizioniDaAccettare.razor.rz.scp.css */
/* Le condizioni del servizio, da accettare.

   Stessa famiglia del velo della licenza: una scheda centrata su un velo che copre tutto.
   ⚠️ Ma qui la scheda è PIÙ ALTA e scorre dentro: i documenti possono essere tre o cinque,
   e il pulsante «Accetta e continua» deve restare raggiungibile senza far scorrere la pagina
   sotto — che sotto non c'è. */

.cond-velo[b-kz12fm39hl] {
    position: fixed;
    inset: 0;
    z-index: 2100;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    overflow: auto;
    background: color-mix(in srgb, var(--sedna-surface) 92%, transparent);
    backdrop-filter: blur(3px);
}

.cond[b-kz12fm39hl] {
    width: min(680px, 100%);
    max-height: calc(100dvh - 40px);
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 22px 24px;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: 14px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, .14);
}

/* ── Testa ─────────────────────────────────────────────────────────────────── */
.cond__testa[b-kz12fm39hl] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 12px;
}

.cond__seg[b-kz12fm39hl] {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: color-mix(in srgb, var(--sedna-primary) 12%, transparent);
    color: var(--sedna-primary);
    font-size: 1.3rem;
}

.cond__t[b-kz12fm39hl] {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 600;
    line-height: 1.3;
}

.cond__s[b-kz12fm39hl] {
    margin: 3px 0 0;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
    line-height: 1.45;
}

/* ⚠️ «BOZZA» si vede: senza, chi legge crede di aver firmato qualcosa che vale. */
.cond__bozza[b-kz12fm39hl] {
    margin-left: auto;
    align-self: flex-start;
    padding: 2px 9px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--sedna-warning-600) 18%, transparent);
    color: var(--sedna-warning-700, var(--sedna-warning-600));
    font-size: var(--sedna-text-xs);
    font-weight: 700;
    letter-spacing: .03em;
    white-space: nowrap;
}

/* ── I documenti ───────────────────────────────────────────────────────────── */
.cond__docs[b-kz12fm39hl] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
    overflow: auto;
}

.cond-doc[b-kz12fm39hl] {
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    padding: 12px 14px;
}

.cond-doc__h[b-kz12fm39hl] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 4px 10px;
}

.cond-doc__t[b-kz12fm39hl] { font-size: var(--sedna-text-sm); font-weight: 600; }

.cond-doc__v[b-kz12fm39hl] { font-size: var(--sedna-text-xs); color: var(--sedna-text-tertiary); }

.cond-doc__bozza[b-kz12fm39hl] {
    padding: 0 6px;
    border-radius: 999px;
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-tertiary);
    font-size: var(--sedna-text-xs);
}

.cond-doc__leggi[b-kz12fm39hl] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border: 1px solid var(--sedna-border);
    background: var(--sedna-surface);
    color: var(--sedna-primary);
    border-radius: var(--sedna-radius-input, 0.375rem);
    padding: 3px 10px;
    font: inherit;
    font-size: var(--sedna-text-xs);
    cursor: pointer;
}

.cond-doc__leggi:hover[b-kz12fm39hl] { background: var(--sedna-surface-hover); }
.cond-doc__leggi:focus-visible[b-kz12fm39hl] { outline: 2px solid var(--sedna-primary); outline-offset: 1px; }

.cond-doc__cambia[b-kz12fm39hl] {
    margin-top: 8px;
    padding: 7px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: color-mix(in srgb, var(--sedna-info-600) 9%, transparent);
    font-size: var(--sedna-text-xs);
    line-height: 1.45;
}

/* ⚠️ La casella e il suo testo sono UN bersaglio solo (è un <label>): il testo della spunta
   è lungo, e costringere a centrare una casella da 14px è un modo di far sbagliare. */
.cond-doc__spunta[b-kz12fm39hl] {
    margin-top: 10px;
    display: flex;
    align-items: flex-start;
    gap: 9px;
    cursor: pointer;
    font-size: var(--sedna-text-sm);
    line-height: 1.45;
}

.cond-doc__spunta input[b-kz12fm39hl] {
    flex: none;
    margin-top: 2px;
    width: 17px;
    height: 17px;
    cursor: pointer;
    accent-color: var(--sedna-primary);
}

/* ── Fondo ─────────────────────────────────────────────────────────────────── */
.cond__no[b-kz12fm39hl] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 8px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-600);
    font-size: var(--sedna-text-sm);
    line-height: 1.45;
}

.cond__fondo[b-kz12fm39hl] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-top: 4px;
    border-top: 1px solid var(--sedna-border);
}

.cond__ok[b-kz12fm39hl] {
    flex: 1;
    padding: 10px 18px;
    border: 0;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-primary);
    color: #fff;
    font: inherit;
    font-size: var(--sedna-text-base);
    font-weight: 600;
    cursor: pointer;
}

.cond__ok:hover:not(:disabled)[b-kz12fm39hl] { filter: brightness(1.06); }
.cond__ok:disabled[b-kz12fm39hl] { opacity: .5; cursor: not-allowed; }
.cond__ok:focus-visible[b-kz12fm39hl] { outline: 2px solid var(--sedna-primary); outline-offset: 2px; }

.cond__esci[b-kz12fm39hl] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 16px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    font: inherit;
    font-size: var(--sedna-text-sm);
    cursor: pointer;
}

.cond__esci:hover[b-kz12fm39hl] { background: var(--sedna-surface-hover); }

.cond__esci--piccolo[b-kz12fm39hl] { flex: none; }

.cond__nonadmin[b-kz12fm39hl] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
}

.cond__nonadmin p[b-kz12fm39hl] {
    margin: 0;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
    line-height: 1.5;
}

/* ── Il testo del documento ────────────────────────────────────────────────── */
.cond-testo[b-kz12fm39hl] {
    max-height: 66vh;
    overflow: auto;
    padding: 4px 6px 4px 2px;
    font-size: var(--sedna-text-sm);
    line-height: 1.6;
}

.cond-testo__attesa[b-kz12fm39hl] { display: flex; justify-content: center; padding: 24px 0; }

/* ⚠️ ::deep È OBBLIGATORIO QUI, e non è uno stile: il testo del documento nasce da una
   MarkupString, cioè viene creato a RUNTIME. Lo scoped CSS mette l'attributo di scopo solo
   sugli elementi scritti nel .razor a compilazione, quindi un `<h3>` nato dal Markdown non
   ce l'ha — e una regola `.cond-testo h3` (che diventa `h3[b-xxx]`) non aggancerebbe NIENTE.
   Il documento uscirebbe senza formattazione, e la cosa si vedrebbe solo a video. */
.cond-testo[b-kz12fm39hl]  h3 { font-size: 1.05rem; margin: 18px 0 8px; }
.cond-testo[b-kz12fm39hl]  h4 { font-size: .95rem; margin: 16px 0 6px; }
.cond-testo[b-kz12fm39hl]  h5,
.cond-testo[b-kz12fm39hl]  h6 { font-size: .9rem; margin: 14px 0 6px; }
.cond-testo[b-kz12fm39hl]  p { margin: 0 0 10px; }
.cond-testo[b-kz12fm39hl]  ul { margin: 0 0 10px; padding-left: 20px; }
.cond-testo[b-kz12fm39hl]  li { margin-bottom: 4px; }
.cond-testo[b-kz12fm39hl]  hr { border: 0; border-top: 1px solid var(--sedna-border); margin: 16px 0; }

.cond-testo[b-kz12fm39hl]  blockquote {
    margin: 0 0 10px;
    padding: 8px 12px;
    border-left: 3px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-secondary);
}

.cond-testo[b-kz12fm39hl]  code {
    font-family: var(--sedna-font-mono, ui-monospace, monospace);
    background: var(--sedna-surface-variant);
    padding: 1px 4px;
    border-radius: 4px;
}
/* /Shared/Components/ConflittoConcorrenzaDialog.razor.rz.scp.css */
.conflitto p[b-0e38alojw0] { margin: 0 0 var(--sedna-space-3); line-height: var(--sedna-leading-relaxed); }

/* La riga che dice «non hai perso niente» è la prima cosa che deve entrare in testa: sta
   staccata dal resto, su fondo verde, perché chi legge questa finestra la legge in ansia. */
.conflitto__rassicura[b-0e38alojw0] {
    display: flex;
    gap: var(--sedna-space-2);
    align-items: flex-start;
    padding: var(--sedna-space-3);
    border-radius: var(--sedna-radius-md);
    background: var(--sedna-success-50);
    border: 1px solid color-mix(in srgb, var(--sedna-success-500) 30%, transparent);
    color: var(--sedna-success-700);
}

.conflitto__rassicura i[b-0e38alojw0] { font-size: 1.1rem; line-height: 1.3; }

.conflitto__cosa-fare[b-0e38alojw0] { font-weight: var(--sedna-font-semibold); margin-bottom: var(--sedna-space-1); }

.conflitto__passi[b-0e38alojw0] {
    margin: 0 0 var(--sedna-space-3);
    padding-left: 1.35rem;
    line-height: var(--sedna-leading-relaxed);
}

.conflitto__passi li + li[b-0e38alojw0] { margin-top: var(--sedna-space-1); }

/* L'avvertenza sul ricarico sta ATTACCATA al pulsante che lo fa, non in cima al testo: la si
   legge nel momento in cui si sta per premerlo. */
.conflitto__nota[b-0e38alojw0] {
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
    margin-bottom: 0;
}
/* /Shared/Components/DocumentoAnteprimaModal.razor.rz.scp.css */
/* Anteprima documento — sezioni aggiunte il 30/07 (sconti/provvigione di testata e
   castelletto IVA), in sola lettura.

   ⚠️ Le classi .mc* di questa modal vivono in wwwroot/css/app.css come globali, perche'
   la condividono due modali di moduli diversi. Le regole NUOVE stanno qui, scoped: sono
   solo di questo componente, e app.css e' un file che in questo periodo tocca mezzo
   mondo — aggiungerci righe vuol dire litigare per un file che non e' di nessuno. */

.ap-sez[b-35h55tgp5o] {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid var(--sedna-border-light, #eef0f3);
}

/* Titoletto di sezione: piccolo e in maiuscoletto, deve dire "qui comincia un'altra
   cosa" senza competere col contenuto — e' una vista di consultazione, non un form. */
.ap-sez__t[b-35h55tgp5o] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 8px;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--sedna-text-secondary);
}

.ap-sez__t i[b-35h55tgp5o] {
    font-size: 0.8rem;
    color: var(--sedna-text-tertiary);
}

/* La sezione sconti riusa .mc__head (griglia di campi) di app.css: qui serve solo
   togliere il margine che quella ha in cima alla modal. */
.ap-sez .mc__head[b-35h55tgp5o] {
    margin-top: 0;
}

.ap-nota[b-35h55tgp5o] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
    font-size: 0.75rem;
    color: var(--sedna-text-secondary);
}

.ap-nota i[b-35h55tgp5o] {
    color: var(--sedna-primary);
}

/* ═══ MODIFICA: la fattura vera dentro la finestra ═══
   Il piede del popup e' fisso per costruzione (DxPopup): a scorrere e' il corpo. Quello che
   serve qui e' che a scorrere siano le SOLE RIGHE della griglia, non tutto l'editor con
   l'intestazione delle colonne che se ne va via.

   ⚠️ La regola d'oro di SednaEditableGrid: le righe scorrono solo se il contenitore ha
   un'ALTEZZA, altrimenti la griglia cresce e a scorrere e' la finestra. Qui l'altezza gliela
   da' la modal: 92vh meno header, piede e il resto del documento (testata + piede documento).
   Con `height: auto` l'intestazione delle colonne uscirebbe di scena scorrendo. */
/* ═══ MODIFICA: la fattura vera dentro la finestra ═══
   La catena delle altezze (corpo del popup -> editor -> griglia che scorre) sta UNA volta
   in sedna.components.css, classe .sedna-modal-editor: tre catene uguali scritte a mano
   divergono, e la volta dopo se ne correggono due su tre.
   Qui resta solo quello che la libreria non puo' sapere: come si chiama la card delle
   righe DI QUESTA pagina, e i due margini da togliere in finestra. */

/* L'anello di mezzo: la card delle righe si prende quello che avanza dopo testata e
   piede del documento, cosi' a cedere sono le RIGHE visibili e non il piede della
   finestra. Senza questa riga la catena si spezza qui, in silenzio. */
.mc-edit[b-35h55tgp5o]  .doc-righe-card {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* E la root del componente griglia, che sta in mezzo fra la card e il wrapper. */
.mc-edit[b-35h55tgp5o]  .doc-righe-grid {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* «Risparmiando spazio dove possibile»: in una finestra ogni riga di contorno e' una
   riga di corpo in meno. */
.mc-edit[b-35h55tgp5o]  .doc-righe-card { margin-top: 4px; }
.mc-edit[b-35h55tgp5o]  .doc-piede { margin-bottom: 0; }
/* /Shared/Components/DraftIndicator.razor.rz.scp.css */
.draft-indicator-container[b-h4gtmblsgr] {
    position: fixed;
    bottom: 5rem;
    right: calc(var(--sedna-space-6, 1.5rem) + 3.5rem);
    z-index: 1050;
}

/* FAB stile bozze - arancione/warning */
[b-h4gtmblsgr] .sedna-fab--drafts {
    position: relative;
    width: 3rem;
    height: 3rem;
    border-radius: 50%;
    border: 1px solid rgba(245, 158, 11, 0.3);
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(12px);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
    opacity: 0.85;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0, 0, 0, 0.06);
}

[b-h4gtmblsgr] .sedna-fab--drafts:hover {
    opacity: 1;
    transform: scale(1.1);
    border-color: rgba(245, 158, 11, 0.5);
    box-shadow: 0 8px 20px rgba(245, 158, 11, 0.2), 0 2px 6px rgba(0, 0, 0, 0.1);
}

[b-h4gtmblsgr] .sedna-fab--drafts .sedna-fab__icon {
    font-size: 1.25rem;
    color: var(--sedna-warning-600, #f59e0b);
}

[b-h4gtmblsgr] .sedna-fab__badge--warning {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 1.25rem;
    height: 1.25rem;
    border-radius: 9999px;
    background: var(--sedna-warning-600, #f59e0b);
    color: var(--sedna-text-inverse, #fff);
    font-size: 0.625rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 0.25rem;
    line-height: 1;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}

/* Dark theme */
:global(.sedna-theme-dark)[b-h4gtmblsgr]  .sedna-fab--drafts {
    background: rgba(30, 30, 30, 0.9);
}

/* Panel flyout */
.draft-panel[b-h4gtmblsgr] {
    position: absolute;
    bottom: calc(100% + 0.5rem);
    right: 0;
    width: 320px;
    max-height: 400px;
    background: var(--sedna-surface, #fff);
    border: 1px solid var(--sedna-border, #e5e7eb);
    border-radius: var(--sedna-radius-lg, 0.5rem);
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.15), 0 2px 10px rgba(0, 0, 0, 0.08);
    overflow: hidden;
    z-index: 1060;
    animation: draft-panel-in-b-h4gtmblsgr 0.15s ease-out;
}

@keyframes draft-panel-in-b-h4gtmblsgr {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.draft-panel__header[b-h4gtmblsgr] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--sedna-border, #e5e7eb);
    font-size: 0.875rem;
}

.draft-panel__close[b-h4gtmblsgr] {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--sedna-text-secondary, #6b7280);
    padding: 0.25rem;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    display: flex;
    align-items: center;
}

.draft-panel__close:hover[b-h4gtmblsgr] {
    background: var(--sedna-surface-hover, #f3f4f6);
    color: var(--sedna-text, #111827);
}

.draft-panel__body[b-h4gtmblsgr] {
    overflow-y: auto;
    max-height: 320px;
}

.draft-item[b-h4gtmblsgr] {
    display: flex;
    align-items: center;
    border-bottom: 1px solid var(--sedna-border-light, #f3f4f6);
}

.draft-item:last-child[b-h4gtmblsgr] {
    border-bottom: none;
}

.draft-item__content[b-h4gtmblsgr] {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.625rem 1rem;
    cursor: pointer;
    transition: background 0.15s;
}

.draft-item__content:hover[b-h4gtmblsgr] {
    background: var(--sedna-surface-hover, #f9fafb);
}

.draft-item__icon[b-h4gtmblsgr] {
    width: 2rem;
    height: 2rem;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    background: color-mix(in srgb, var(--sedna-warning-600, #f59e0b) 10%, transparent);
    color: var(--sedna-warning-600, #f59e0b);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 0.875rem;
}

.draft-item__info[b-h4gtmblsgr] {
    flex: 1;
    min-width: 0;
}

.draft-item__label[b-h4gtmblsgr] {
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--sedna-text, #111827);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.draft-item__time[b-h4gtmblsgr] {
    font-size: 0.6875rem;
    color: var(--sedna-text-secondary, #6b7280);
    margin-top: 0.125rem;
}

.draft-item__discard[b-h4gtmblsgr] {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--sedna-text-secondary, #9ca3af);
    padding: 0.5rem;
    margin-right: 0.5rem;
    border-radius: var(--sedna-radius-sm, 0.25rem);
    display: flex;
    align-items: center;
    font-size: 1rem;
    transition: all 0.15s;
}

.draft-item__discard:hover[b-h4gtmblsgr] {
    color: var(--sedna-error, #ef4444);
    background: color-mix(in srgb, var(--sedna-error, #ef4444) 10%, transparent);
}

/* Responsive */
@media (max-width: 768px) {
    .draft-indicator-container[b-h4gtmblsgr] {
        bottom: 4rem;
        right: calc(var(--sedna-space-4, 1rem) + 3.25rem);
    }

    [b-h4gtmblsgr] .sedna-fab--drafts {
        width: 2.75rem;
        height: 2.75rem;
    }

    .draft-panel[b-h4gtmblsgr] {
        width: 280px;
        right: -2rem;
    }
}

@media (max-width: 480px) {
    .draft-indicator-container[b-h4gtmblsgr] {
        bottom: 3.5rem;
        right: calc(var(--sedna-space-3, 0.75rem) + 3rem);
    }

    [b-h4gtmblsgr] .sedna-fab--drafts {
        width: 2.5rem;
        height: 2.5rem;
    }

    .draft-panel[b-h4gtmblsgr] {
        width: 260px;
        right: -3rem;
    }
}
/* /Shared/Components/InformativaPrivacy.razor.rz.scp.css */
/* L'informativa privacy e la fascia dei documenti aggiornati.

   ⚠️ La fascia è LEGGERA di proposito: non c'è niente da firmare, e un riquadro forte per un
   aggiornamento formale insegnerebbe a ignorare anche quelli che contano. */

.infp-fascia[b-8bbsbngdga] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 8px 16px 0;
    padding: 7px 12px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: color-mix(in srgb, var(--sedna-info-600) 9%, transparent);
    border: 1px solid color-mix(in srgb, var(--sedna-info-600) 28%, transparent);
    font-size: var(--sedna-text-sm);
    line-height: 1.45;
}

.infp-fascia > i[b-8bbsbngdga] { color: var(--sedna-info-600); flex: none; }

.infp-fascia__leggi[b-8bbsbngdga] {
    border: 0;
    background: transparent;
    color: var(--sedna-primary);
    font: inherit;
    font-size: inherit;
    text-decoration: underline;
    cursor: pointer;
    padding: 0 2px;
}

.infp-fascia__x[b-8bbsbngdga] {
    margin-left: auto;
    flex: none;
    border: 0;
    background: transparent;
    color: var(--sedna-text-tertiary);
    cursor: pointer;
    padding: 2px 4px;
    border-radius: 4px;
}

.infp-fascia__x:hover[b-8bbsbngdga] { color: var(--sedna-text); background: var(--sedna-surface-hover); }

/* ── Il testo ─────────────────────────────────────────────────────────────── */
.infp-testo[b-8bbsbngdga] {
    max-height: 66vh;
    overflow: auto;
    padding: 4px 6px 4px 2px;
    font-size: var(--sedna-text-sm);
    line-height: 1.6;
}

.infp-testo__attesa[b-8bbsbngdga] { display: flex; justify-content: center; padding: 24px 0; }

.infp-no[b-8bbsbngdga] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 8px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: var(--sedna-error-50);
    border: 1px solid var(--sedna-error-600);
}

/* ⚠️ ::deep obbligatorio: il testo nasce da una MarkupString, cioè a runtime, e gli elementi
   creati così NON hanno l'attributo dello scoped CSS. Senza, l'informativa esce senza
   formattazione — e la cosa si vede solo a video. */
.infp-testo[b-8bbsbngdga]  h3 { font-size: 1.05rem; margin: 18px 0 8px; }
.infp-testo[b-8bbsbngdga]  h4 { font-size: .95rem; margin: 16px 0 6px; }
.infp-testo[b-8bbsbngdga]  h5,
.infp-testo[b-8bbsbngdga]  h6 { font-size: .9rem; margin: 14px 0 6px; }
.infp-testo[b-8bbsbngdga]  p { margin: 0 0 10px; }
.infp-testo[b-8bbsbngdga]  ul { margin: 0 0 10px; padding-left: 20px; }
.infp-testo[b-8bbsbngdga]  li { margin-bottom: 4px; }
.infp-testo[b-8bbsbngdga]  hr { border: 0; border-top: 1px solid var(--sedna-border); margin: 16px 0; }

.infp-testo[b-8bbsbngdga]  blockquote {
    margin: 0 0 10px;
    padding: 8px 12px;
    border-left: 3px solid var(--sedna-border);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-secondary);
}
/* /Shared/Components/LinkLegali.razor.rz.scp.css */
/* I link legali: piccoli, sempre presenti, mai invadenti. */

.linkleg[b-s1iw0v687n] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-tertiary);
}

.linkleg__l[b-s1iw0v687n] {
    border: 0;
    background: transparent;
    color: var(--sedna-text-secondary);
    font: inherit;
    font-size: inherit;
    text-decoration: underline;
    cursor: pointer;
    padding: 0;
}

.linkleg__l:hover[b-s1iw0v687n] { color: var(--sedna-primary); }
.linkleg__l:focus-visible[b-s1iw0v687n] { outline: 2px solid var(--sedna-primary); outline-offset: 2px; border-radius: 2px; }

.linkleg__p[b-s1iw0v687n] { opacity: .6; }

/* Nella pagina di login stanno centrati sotto la scheda. */
.linkleg--login[b-s1iw0v687n] { justify-content: center; width: 100%; margin-top: 14px; }

.linkleg-testo[b-s1iw0v687n] {
    max-height: 66vh;
    overflow: auto;
    padding: 4px 6px 4px 2px;
    font-size: var(--sedna-text-sm);
    line-height: 1.6;
}

.linkleg-testo__attesa[b-s1iw0v687n] { display: flex; justify-content: center; padding: 24px 0; }

.linkleg-no[b-s1iw0v687n] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 8px 10px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-secondary);
    font-size: var(--sedna-text-sm);
}

/* ⚠️ ::deep: il testo nasce da una MarkupString, cioè a runtime, e non ha l'attributo dello
   scoped CSS. Senza, il documento esce senza formattazione. */
.linkleg-testo[b-s1iw0v687n]  h3 { font-size: 1.05rem; margin: 18px 0 8px; }
.linkleg-testo[b-s1iw0v687n]  h4 { font-size: .95rem; margin: 16px 0 6px; }
.linkleg-testo[b-s1iw0v687n]  h5,
.linkleg-testo[b-s1iw0v687n]  h6 { font-size: .9rem; margin: 14px 0 6px; }
.linkleg-testo[b-s1iw0v687n]  p { margin: 0 0 10px; }
.linkleg-testo[b-s1iw0v687n]  ul { margin: 0 0 10px; padding-left: 20px; }
.linkleg-testo[b-s1iw0v687n]  li { margin-bottom: 4px; }
.linkleg-testo[b-s1iw0v687n]  hr { border: 0; border-top: 1px solid var(--sedna-border); margin: 16px 0; }
/* /Shared/Components/PrimoAvvio.razor.rz.scp.css */
/* «Prima di cominciare»: il pannello del primo avvio, in cima alla home.

   Sta SOPRA l'hero e non dentro: l'hero è una schermata di benvenuto che si guarda tutto il
   giorno, questo è un elenco di cose da fare che deve sparire. Tenerli separati vuol dire
   che quando sparisce non lascia un buco nel disegno.

   ⚠️ NIENTE ALTEZZA FISSA, NIENTE overflow: il pannello è alto quanto il suo contenuto e si
   vede per intero. Se non ci sta, scorre la PAGINA. Un elenco di cose da fare di cui non si
   vede l'ultima riga è il modo migliore per farla dimenticare (visto a video il 14/09: la
   riga dei magazzini finiva sotto il riquadro blu).

   ⚠️ Tutti i colori dai token: il pannello si vede anche in tema scuro, ed è la prima cosa
   che un cliente nuovo guarda. */

.pavv[b-bjfrtzkmo9] {
    position: relative;
    z-index: 1;
    margin: 12px 16px;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md, 0.5rem);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 4px 16px rgba(0, 0, 0, .04);
}

/* ── Testa ─────────────────────────────────────────────────────────────────────
   Icona, titolo, avanzamento e «nascondi»: quattro cose su una riga sola, che va a capo
   da sola quando la finestra è stretta. */
.pavv__h[b-bjfrtzkmo9] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px 14px;
    padding: 12px 14px;
    border-bottom: 1px solid var(--sedna-border);
}

.pavv__icona[b-bjfrtzkmo9] {
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: color-mix(in srgb, var(--sedna-primary) 12%, transparent);
    color: var(--sedna-primary);
    font-size: 1.15rem;
}

.pavv.is-pronta .pavv__icona[b-bjfrtzkmo9] {
    background: color-mix(in srgb, var(--sedna-success-600) 14%, transparent);
    color: var(--sedna-success-600);
}

.pavv__testo[b-bjfrtzkmo9] { min-width: 180px; flex: 1 1 220px; }

.pavv__t[b-bjfrtzkmo9] { display: block; font-size: var(--sedna-text-base); font-weight: 600; }

.pavv__sub[b-bjfrtzkmo9] { font-size: var(--sedna-text-sm); color: var(--sedna-text-secondary); }

/* ── L'avanzamento ─────────────────────────────────────────────────────────────
   ⚠️ La frazione sopra la barra e non dentro: dentro sarebbe illeggibile a metà
   riempimento, quando il testo sta a cavallo fra il pieno e il vuoto. */
.pavv__avanz[b-bjfrtzkmo9] {
    flex: 0 1 200px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 140px;
}

.pavv__avanz-n[b-bjfrtzkmo9] {
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    font-variant-numeric: tabular-nums;
}

.pavv__barra[b-bjfrtzkmo9] {
    height: 6px;
    border-radius: 999px;
    background: var(--sedna-surface-variant);
    overflow: hidden;
}

.pavv__barra-p[b-bjfrtzkmo9] {
    height: 100%;
    border-radius: 999px;
    background: var(--sedna-primary);
    transition: width .3s ease;
}

.pavv.is-pronta .pavv__barra-p[b-bjfrtzkmo9] { background: var(--sedna-success-600); }

.pavv__x[b-bjfrtzkmo9] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border: 1px solid transparent;
    background: transparent;
    color: var(--sedna-text-secondary);
    cursor: pointer;
    padding: 4px 8px;
    border-radius: var(--sedna-radius-input, 0.375rem);
    font: inherit;
    font-size: var(--sedna-text-xs);
}

.pavv__x:hover[b-bjfrtzkmo9] {
    color: var(--sedna-text);
    background: var(--sedna-surface-hover);
    border-color: var(--sedna-border);
}

.pavv__x:focus-visible[b-bjfrtzkmo9] { outline: 2px solid var(--sedna-primary); outline-offset: 1px; }

/* Sotto i 560px resta la sola X: la parola occuperebbe metà riga. */
@media (max-width: 560px) {
    .pavv__x-t[b-bjfrtzkmo9] { display: none; }
}

/* ── I passi ─────────────────────────────────────────────────────────────────── */
.pavv__passi[b-bjfrtzkmo9] { margin: 0; padding: 0; list-style: none; }

.pavv-passo[b-bjfrtzkmo9] {
    display: grid;
    grid-template-columns: 30px 1fr auto;
    align-items: start;
    gap: 4px 12px;
    padding: 11px 14px;
    border-bottom: 1px solid var(--sedna-border);
}

.pavv-passo:last-child[b-bjfrtzkmo9] { border-bottom: 0; }

/* ⚠️ Il prossimo da fare si distingue, ma con un filo di fondo e una striscia a sinistra:
   è un suggerimento su dove guardare, non un allarme. */
.pavv-passo.is-prossimo[b-bjfrtzkmo9] {
    background: color-mix(in srgb, var(--sedna-primary) 5%, transparent);
    box-shadow: inset 3px 0 0 var(--sedna-primary);
}

/* ⚠️ Fatto = ATTENUATO, non nascosto: sparire vorrebbe dire perdere la prova che è stato
   fatto, ed è proprio quella che dà il senso di avanzamento. */
.pavv-passo.is-fatto[b-bjfrtzkmo9] { opacity: .62; }

.pavv-passo__ico[b-bjfrtzkmo9] {
    grid-row: span 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 8px;
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-secondary);
    font-size: 1.05rem;
}

.pavv-passo.is-fatto .pavv-passo__ico[b-bjfrtzkmo9] {
    background: color-mix(in srgb, var(--sedna-success-600) 14%, transparent);
    color: var(--sedna-success-600);
}

.pavv-passo.is-prossimo .pavv-passo__ico[b-bjfrtzkmo9] {
    background: color-mix(in srgb, var(--sedna-primary) 14%, transparent);
    color: var(--sedna-primary);
}

.pavv-passo__c[b-bjfrtzkmo9] { min-width: 0; }

.pavv-passo__t[b-bjfrtzkmo9] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 4px 8px;
}

.pavv-passo__nome[b-bjfrtzkmo9] { font-size: var(--sedna-text-sm); font-weight: 600; }

.pavv-passo__s[b-bjfrtzkmo9] {
    margin-top: 2px;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
    line-height: 1.45;
}

/* ── Le targhette ──────────────────────────────────────────────────────────────
   Uno stato si legge meglio in una targhetta che in un corsivo. */
.pavv-tag[b-bjfrtzkmo9] {
    display: inline-block;
    padding: 0 7px;
    border-radius: 999px;
    font-size: var(--sedna-text-xs);
    font-weight: 600;
    line-height: 1.7;
    white-space: nowrap;
}

.pavv-tag--ok[b-bjfrtzkmo9] {
    background: color-mix(in srgb, var(--sedna-success-600) 14%, transparent);
    color: var(--sedna-success-600);
}

.pavv-tag--noi[b-bjfrtzkmo9] {
    background: color-mix(in srgb, var(--sedna-info-600) 14%, transparent);
    color: var(--sedna-info-600);
}

.pavv-tag--opt[b-bjfrtzkmo9] {
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-tertiary);
    font-weight: 500;
}

/* ── I campi che mancano, in fila ────────────────────────────────────────────── */
.pavv-passo__m[b-bjfrtzkmo9] {
    margin-top: 6px;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 5px 6px;
}

.pavv-passo__m-e[b-bjfrtzkmo9] {
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-tertiary);
}

.pavv-manca[b-bjfrtzkmo9] {
    display: inline-block;
    padding: 0 7px;
    border-radius: var(--sedna-radius-input, 0.375rem);
    border: 1px dashed var(--sedna-border);
    background: var(--sedna-surface-variant);
    color: var(--sedna-text-secondary);
    font-size: var(--sedna-text-xs);
    line-height: 1.7;
}

/* ── L'azione ────────────────────────────────────────────────────────────────── */
.pavv-passo__a[b-bjfrtzkmo9] {
    grid-row: span 2;
    align-self: center;
    display: flex;
    align-items: center;
    gap: 8px;
}

.pavv-passo__attesa[b-bjfrtzkmo9] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-info-600);
    white-space: nowrap;
}

/* Finestra stretta: l'azione va sotto il testo invece di schiacciarlo. */
@media (max-width: 700px) {
    .pavv-passo[b-bjfrtzkmo9] {
        grid-template-columns: 30px 1fr;
    }

    .pavv-passo__a[b-bjfrtzkmo9] {
        grid-row: auto;
        grid-column: 2;
        margin-top: 8px;
    }
}

/* ── La riga che resta quando il pannello è nascosto ──────────────────────────
   ⚠️ Serve a poterlo RIAPRIRE: «Nascondi per ora» senza un modo di tornarci fa sparire
   per la sessione una cosa che l'utente voleva solo togliersi dagli occhi.

   ⚠️ Niente classe `pavv`: così la Home torna a disegnarsi, che è quello che uno chiede
   premendo «Nascondi per ora». */
.pavv-mini[b-bjfrtzkmo9] {
    display: flex;
    align-items: center;
    gap: 9px;
    margin: 8px 16px 0;
    padding: 6px 12px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
}

.pavv-mini > i[b-bjfrtzkmo9] { color: var(--sedna-primary); }

.pavv-mini__m[b-bjfrtzkmo9] {
    margin-left: auto;
    border: 0;
    background: transparent;
    color: var(--sedna-primary);
    font: inherit;
    font-size: inherit;
    text-decoration: underline;
    cursor: pointer;
    padding: 0 2px;
}

.pavv-mini__m:focus-visible[b-bjfrtzkmo9] { outline: 2px solid var(--sedna-primary); outline-offset: 2px; }
/* /Shared/Components/ScaricaDatiDitta.razor.rz.scp.css */
/* «Scarica i dati della ditta».

   ⚠️ Volutamente SOBRIO: è una garanzia, non una funzione da pubblicizzare. Chi lo cerca lo
   trova; chi non lo cerca non deve inciamparci. */

.scdd[b-5nm9w4t9qt] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 14px;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-surface);
    color: var(--sedna-text);
    font: inherit;
    font-size: var(--sedna-text-sm);
    cursor: pointer;
}

.scdd:hover:not(:disabled)[b-5nm9w4t9qt] { background: var(--sedna-surface-hover); }
.scdd:disabled[b-5nm9w4t9qt] { opacity: .7; cursor: progress; }
.scdd:focus-visible[b-5nm9w4t9qt] { outline: 2px solid var(--sedna-primary); outline-offset: 1px; }

/* Dentro il velo della licenza: piccolo e in fondo, sotto l'azione principale. */
.scdd--velo[b-5nm9w4t9qt] {
    border-color: transparent;
    background: transparent;
    color: var(--sedna-text-secondary);
    font-size: var(--sedna-text-xs);
    padding: 4px 8px;
}

.scdd--velo:hover:not(:disabled)[b-5nm9w4t9qt] {
    color: var(--sedna-text);
    background: var(--sedna-surface-hover);
}

.scdd__no[b-5nm9w4t9qt] {
    margin-top: 6px;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-error-700, var(--sedna-error-600));
    line-height: 1.45;
}
/* /Shared/Components/SednaStampaButton.razor.rz.scp.css */
/* Pulsante Stampa dell'action bar.

   Il pulsante NON e' stilato qui: e' un SednaButton con le stesse primitive degli altri
   (secondary/outline/Small), quindi altezza e aspetto arrivano dal design system.

   ⚠️ Qui NON si scrivono colori letterali, nemmeno come fallback di var(): un fallback e'
   comunque un colore fuori palette, e sui temi (chiaro/scuro) va per conto suo appena il
   token cambia. Si usano solo i token di sedna.tokens.css. */

.sedna-stampa[b-19rdp0xcd0] {
    position: relative;
    display: inline-flex;   /* inline-flex, non inline-block: allinea al resto della barra */
    align-items: center;
}

/* ── Tendina ── */
.sedna-stampa__menu[b-19rdp0xcd0] {
    position: absolute;
    top: calc(100% + 4px);
    right: 0;
    z-index: 1080;                 /* sopra la barra filtri, che ritagliava le tendine */
    min-width: 15rem;
    max-height: 22rem;
    overflow-y: auto;
    padding: .25rem;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    box-shadow: var(--sedna-shadow-lg);
}

/* Riga della tendina: il nome (stampa) e la matita (modifica). La matita compare
   all'hover — sta li' per chi la cerca, senza aggiungere rumore a chi vuole solo
   stampare. Su touch, dove l'hover non esiste, resta sempre visibile. */
.sedna-stampa__riga[b-19rdp0xcd0] {
    display: flex;
    align-items: center;
}

.sedna-stampa__riga:hover[b-19rdp0xcd0] {
    background: var(--sedna-surface-hover);
    border-radius: var(--sedna-radius-sm);
}

.sedna-stampa__modifica[b-19rdp0xcd0] {
    flex: 0 0 auto;
    padding: .35rem .5rem;
    border: 0;
    border-radius: var(--sedna-radius-sm);
    background: transparent;
    color: var(--sedna-color-text-secondary);
    font-size: .8125rem;
    cursor: pointer;
    opacity: 0;
}

.sedna-stampa__riga:hover .sedna-stampa__modifica[b-19rdp0xcd0],
.sedna-stampa__modifica:focus-visible[b-19rdp0xcd0] {
    opacity: 1;
}

@media (hover: none) {
    .sedna-stampa__modifica[b-19rdp0xcd0] { opacity: 1; }
}

.sedna-stampa__voce[b-19rdp0xcd0] {
    display: flex;
    align-items: center;
    gap: .5rem;
    width: 100%;
    padding: .4rem .6rem;
    border: 0;
    border-radius: var(--sedna-radius-sm);
    background: transparent;
    color: inherit;
    font-size: .875rem;
    text-align: left;
    cursor: pointer;
}

.sedna-stampa__voce:hover[b-19rdp0xcd0] {
    background: var(--sedna-surface-hover);
}

/* Dentro una riga lo sfondo lo mette la riga stessa: altrimenti si vedrebbero due
   rettangoli evidenziati leggermente diversi, uno dentro l'altro. */
.sedna-stampa__riga .sedna-stampa__voce:hover[b-19rdp0xcd0] {
    background: transparent;
}

/* La stella: dice quale report esce dal pulsante, e lo cambia.

   ⚠️ Quella ACCESA resta visibile sempre, anche senza hover — e' l'unico posto in cui si
   legge quale report stampa il clic sinistro, e nasconderla fino al passaggio del mouse
   vorrebbe dire nasconderla a chi non sa di doverla cercare. Le altre compaiono all'hover
   come la matita: sono un'azione, non un'informazione. */
.sedna-stampa__stella[b-19rdp0xcd0] {
    flex: 0 0 auto;
    padding: .35rem .35rem;
    border: 0;
    border-radius: var(--sedna-radius-sm);
    background: transparent;
    color: var(--sedna-color-text-secondary);
    font-size: .8125rem;
    cursor: pointer;
    opacity: 0;
}

.sedna-stampa__riga:hover .sedna-stampa__stella[b-19rdp0xcd0],
.sedna-stampa__stella:focus-visible[b-19rdp0xcd0],
.sedna-stampa__stella--on[b-19rdp0xcd0] {
    opacity: 1;
}

.sedna-stampa__stella--on[b-19rdp0xcd0] {
    color: var(--sedna-warning-600);
}

@media (hover: none) {
    .sedna-stampa__stella[b-19rdp0xcd0] { opacity: 1; }
}

.sedna-stampa__voce--muta[b-19rdp0xcd0] {
    color: var(--sedna-color-text-secondary);
    cursor: default;
}

.sedna-stampa__voce--muta:hover[b-19rdp0xcd0] {
    background: transparent;
}

.sedna-stampa__voce--secondaria[b-19rdp0xcd0] {
    color: var(--sedna-color-text-secondary);
}

.sedna-stampa__separatore[b-19rdp0xcd0] {
    height: 1px;
    margin: .25rem .3rem;
    background: var(--sedna-border-light);
}

/* ── Avviso (stampa in coda, o rifiutata) ──
   Sta sotto il pulsante e non in un toast: dice PERCHE' la stampa non parte ("sono 62.000
   righe, restringi i filtri"), ed e' un'informazione da rileggere mentre si cambiano i
   filtri, non una notifica che sparisce da sola. Per lo stesso motivo si chiude a mano.

   Sfondo di stato invece del bordo laterale colorato: comunica la stessa cosa senza la
   banda spessa su un lato. */
.sedna-stampa__avviso[b-19rdp0xcd0] {
    position: absolute;
    top: calc(100% + 4px);
    right: 0;
    z-index: 1080;
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    width: 22rem;
    padding: .55rem .7rem;
    background: var(--sedna-state-warning-bg);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-md);
    box-shadow: var(--sedna-shadow-lg);
    color: inherit;
    font-size: .8125rem;
    line-height: 1.35;
    text-align: left;
}

.sedna-stampa__chiudi[b-19rdp0xcd0] {
    flex: 0 0 auto;
    margin-left: auto;
    padding: 0 .15rem;
    border: 0;
    background: transparent;
    color: var(--sedna-color-text-secondary);
    font-size: .75rem;
    cursor: pointer;
}

/* Il cestino nel menu dei report: rosso solo al passaggio del mouse. Sempre rosso, in una
   colonnina di quattro icone, tirerebbe l'occhio sull'unica azione che non si annulla. */
.sedna-stampa__modifica--rischio:hover[b-19rdp0xcd0] {
    color: var(--sedna-error-700);
    border-color: var(--sedna-error-700);
}

/* ═══ IMPOSTAZIONI DI STAMPA ═══ */
.sedna-stampa__imp[b-19rdp0xcd0] { display: flex; flex-direction: column; gap: var(--sedna-space-2); }

.sedna-stampa__imp-intro[b-19rdp0xcd0] { margin: 0; color: var(--sedna-text-secondary); font-size: var(--sedna-text-sm); }

.sedna-stampa__imp-voce[b-19rdp0xcd0] {
    display: flex;
    align-items: flex-start;
    gap: var(--sedna-space-2);
    padding: var(--sedna-space-2);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-base);
    cursor: pointer;
}

.sedna-stampa__imp-voce:hover[b-19rdp0xcd0] { border-color: var(--sedna-primary); }

.sedna-stampa__imp-voce span[b-19rdp0xcd0] { display: flex; flex-direction: column; gap: 1px; }
.sedna-stampa__imp-voce strong[b-19rdp0xcd0] { font-size: var(--sedna-text-sm); font-weight: var(--sedna-font-semibold); }

/* La spiegazione sotto ogni scelta: senza, «stampa subito» e «scarica il PDF» sembrano la
   stessa cosa a chi non le ha mai provate. */
.sedna-stampa__imp-voce em[b-19rdp0xcd0] {
    font-style: normal;
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-text-secondary);
}

.sedna-stampa__imp-nota[b-19rdp0xcd0] {
    margin: 0;
    display: flex;
    align-items: flex-start;
    gap: 0.35rem;
    font-size: var(--sedna-text-xs, 0.75rem);
    color: var(--sedna-text-tertiary);
}

/* Il lucchetto dei modelli di fabbrica.

   ⚠️ SEMPRE VISIBILE, non al passaggio del mouse come la stella: dice perche' su quella
   riga manca la matita, e una spiegazione che compare solo quando si passa sopra non
   spiega niente a chi si sta chiedendo dove sia finito il comando. Tenue pero': e' una
   nota, non un avviso. */
.sedna-stampa__fabbrica[b-19rdp0xcd0] {
    margin-left: .45rem;
    padding: .05rem .3rem;
    border-radius: var(--sedna-radius-sm);
    background: var(--sedna-color-surface-2, rgba(0, 0, 0, .05));
    color: var(--sedna-color-text-tertiary, var(--sedna-color-text-secondary));
    font-size: .625rem;
    letter-spacing: .02em;
    white-space: nowrap;
    vertical-align: baseline;
}

.sedna-stampa__fabbrica > i[b-19rdp0xcd0] {
    font-size: .5625rem;
}
/* /Shared/Components/SimpleLookupPage.razor.rz.scp.css */
/* Layout pagina + wrapper griglia dal guscio globale .sedna-page /
   .sedna-page__body--host (sedna.page.css). Qui solo il fill interno
   della griglia DevExpress e i vincoli della modale Crea/Modifica. */

/* ========================================
   TOOLBAR — searchbox custom, come Clienti
   Search custom nella toolbar interna della griglia (stessa riga di Esporta):
   niente riga dedicata sopra la griglia. Copre tutte le tabelle Codice+Descr.
   ======================================== */
.toolbar[b-tmrntxqrq8] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.toolbar .search[b-tmrntxqrq8] {
    /* Dentro la toolbar DX l'item non si allarga col flex: larghezza fissa. */
    position: relative;
    flex: none;
    width: 340px;
}

    .toolbar .search i[b-tmrntxqrq8] {
        position: absolute;
        left: 11px;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sedna-text-tertiary);
        font-size: 0.95rem;
        pointer-events: none;
    }

    .toolbar .search input[b-tmrntxqrq8] {
        width: 100%;
        height: var(--sedna-input-height, 2.125rem);
        padding: 0 12px 0 34px;
        border: 1px solid var(--sedna-border);
        background: var(--sedna-surface-variant);
        border-radius: var(--sedna-radius-input, 0.375rem);
        font-size: 0.8125rem;
        font-family: inherit;
        color: var(--sedna-text);
    }

        .toolbar .search input[b-tmrntxqrq8]::placeholder {
            color: var(--sedna-text-tertiary);
        }

        .toolbar .search input:focus[b-tmrntxqrq8] {
            background: var(--sedna-surface);
            border-color: var(--sedna-primary);
            outline: none;
            box-shadow: 0 0 0 3px var(--sedna-primary-subtle);
        }

[b-tmrntxqrq8] .dx-datagrid {
    height: 100%;
}

[b-tmrntxqrq8] .dx-datagrid-headers,
[b-tmrntxqrq8] .dx-datagrid-rowsview {
    max-height: none;
}

[b-tmrntxqrq8] .dx-datagrid-rowsview {
    flex: 1 1 auto;
    overflow-y: auto;
}

/* DISTILL: vincola l'altezza del body della modale Crea/Modifica
   così il footer (Annulla/Salva) resta sempre visibile anche con
   molti ExtraFormFields. */
[b-tmrntxqrq8] .dxbl-popup-body {
    max-height: 70vh;
    overflow-y: auto;
}
/* /Shared/Components/SpiaProcessi.razor.rz.scp.css */
/* ── L'ICONA CHE GIRA ────────────────────────────────────────────────────────
   ⚠️ Serve a distinguere due badge che dicevano cose opposte con lo stesso
   aspetto (Bruno, 28/08): «2 non riusciti» chiede di intervenire, «1 in corso»
   chiede di aspettare. Il colore da solo non basta — si legge dopo la forma, e
   non si legge affatto per chi non distingue quei due toni.

   ⚠️ Il movimento si ferma per chi ha chiesto meno animazioni: un'icona che
   gira all'infinito in un angolo dello schermo è esattamente ciò che quella
   preferenza serve a togliere. Il badge resta, e il badge è l'informazione. */
.spia-gira[b-4dn1u7m3zd] {
    display: inline-block;
    animation: spia-giro-b-4dn1u7m3zd 1.6s linear infinite;
}

@keyframes spia-giro-b-4dn1u7m3zd {
    to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
    .spia-gira[b-4dn1u7m3zd] { animation: none; }
}
/* /Shared/Components/ViesConfermaDialog.razor.rz.scp.css */
.vies-conf__intro[b-lbnfz8gw2u] { margin: 0 0 var(--sedna-space-3); line-height: var(--sedna-leading-relaxed); }

.vies-conf__tab[b-lbnfz8gw2u] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--sedna-text-sm);
}

.vies-conf__tab th[b-lbnfz8gw2u] {
    text-align: left;
    font-size: var(--sedna-text-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--sedna-text-secondary);
    font-weight: var(--sedna-font-semibold);
    padding: 0 0.5rem 0.25rem;
    border-bottom: 1px solid var(--sedna-border-light, #eee);
}

.vies-conf__tab td[b-lbnfz8gw2u] {
    padding: 0.3rem 0.5rem;
    border-bottom: 1px solid var(--sedna-border-light, #eee);
    vertical-align: top;
}

.vies-conf__ck[b-lbnfz8gw2u] { width: 30px; text-align: center; }
.vies-conf__ck input[b-lbnfz8gw2u] { accent-color: var(--sedna-primary); }

.vies-conf__nome[b-lbnfz8gw2u] { font-weight: var(--sedna-font-semibold); white-space: nowrap; }

/* Il valore che arriva è quello su cui si decide: è lui a stare in evidenza, non quello
   che si ha già. */
.vies-conf__nuovo[b-lbnfz8gw2u] { font-weight: var(--sedna-font-semibold); }

.vies-conf__ora[b-lbnfz8gw2u] { color: var(--sedna-text-secondary); }

.vies-conf__vuoto[b-lbnfz8gw2u] {
    font-style: italic;
    color: var(--sedna-text-tertiary, #9ca3af);
}

/* Riga già allineata: resta leggibile ma smette di chiedere attenzione — non c'è niente
   da decidere. */
.vies-conf__riga--uguale td[b-lbnfz8gw2u] { opacity: 0.6; }

.vies-conf__uguale[b-lbnfz8gw2u] {
    margin-left: 0.4rem;
    font-size: var(--sedna-text-xs);
    font-weight: var(--sedna-font-normal);
    color: var(--sedna-success-700);
}

.vies-conf__nota[b-lbnfz8gw2u] {
    margin: var(--sedna-space-3) 0 0;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
    line-height: var(--sedna-leading-relaxed);
}
/* /Shared/Components/VisualizzatoreFatturaPa.razor.rz.scp.css */
/* La fattura «di carta»: un foglio bianco con margini, dentro una finestra del portale.

   Il modello mentale è la carta, non la scheda dati: per questo il foglio ha una larghezza
   fissa in millimetri (A4 meno i margini) e non si allarga con la finestra. Un documento che
   si stira fino a 2000px smette di somigliare a una fattura, e la somiglianza qui è la
   funzione, non la decorazione. */

/* ⚠️ IL FOGLIO E' IL CONTENUTO, la cornice si fa da parte (Antonio, 22/08). Prima la barra e
   la nota prendevano una fascia alta quanto tre righe di fattura, e il documento — che e' la
   ragione della finestra — restava in secondo piano. Ora lo spazio va tutto al foglio: la
   barra e' due icone, e il resto e' documento. */
.fpa[b-4q5yjlxfu2] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-height: 0;
}

/* ── Barra: la scelta della vista, e la nota su cosa si sta guardando ── */
.fpa__barra[b-4q5yjlxfu2] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.fpa__sp[b-4q5yjlxfu2] { flex: 1; }

/* Il segno «com'e' stata composta»: minuto, in fondo alla barra, con la frase intera nel
   tooltip. Serve a fidarsi di quello che si vede, non a essere letto ogni volta. */
.fpa__segno[b-4q5yjlxfu2] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.625rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--sedna-text-tertiary);
    cursor: help;
}

.fpa__segno--ripiego[b-4q5yjlxfu2] { color: var(--sedna-warning-700); }

.fpa__vista[b-4q5yjlxfu2] {
    display: inline-flex;
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-input, 0.375rem);
    overflow: hidden;
}

.fpa__vista-b[b-4q5yjlxfu2] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border: 0;
    background: var(--sedna-surface);
    color: var(--sedna-text-secondary);
    font-size: 0.75rem;
    padding: 4px 10px;
    cursor: pointer;
}

.fpa__vista-b:hover[b-4q5yjlxfu2] { background: var(--sedna-surface-hover); }

.fpa__vista-b.on[b-4q5yjlxfu2] {
    background: var(--sedna-primary);
    color: #fff;
}

.fpa__vista-b i[b-4q5yjlxfu2] { line-height: 0; }

.fpa__ripiego[b-4q5yjlxfu2] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

/* ── Il tracciato grezzo: nessuna riformattazione, è il file com'è ── */
.fpa__xml[b-4q5yjlxfu2] {
    margin: 0;
    max-height: min(78vh, 62rem);
    overflow: auto;
    padding: 12px;
    background: var(--sedna-surface-variant, #f7f8fa);
    border: 1px solid var(--sedna-border-light, #eef0f3);
    border-radius: var(--sedna-radius-md);
    font-family: var(--sedna-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
    font-size: 0.75rem;
    line-height: 1.5;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

/* ── Il foglio ── */
/* ── Il riquadro col foglio dell'SdI ──
   Altezza fissa e scorrimento INTERNO: un iframe `sandbox` non puo' eseguire script,
   quindi non puo' dire quanto e' alto il suo contenuto. Meglio un riquadro onesto che
   scorre di uno che si allunga a caso o che taglia la fattura a meta'. */
.fpa__sdi[b-4q5yjlxfu2] {
    width: 100%;
    /* ⚠️ Alto quanto la finestra concede: 62vh su una modal da 94vh lasciava un terzo di
       spazio vuoto sotto il documento. */
    height: min(78vh, 62rem);
    min-height: 24rem;
    border: 1px solid var(--sedna-border-light, #eef0f3);
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: #fff;   /* ⚠️ Bianco anche in tema scuro: e' carta, e stampata esce bianca. */
    box-shadow: var(--sedna-shadow-lg);
}

/* ── IL FOGLIO ────────────────────────────────────────────────────────────
   Struttura e diciture sono quelle del foglio di stile dell'Agenzia delle Entrate —
   quello che chiunque abbia aperto una fattura elettronica riconosce a colpo d'occhio:
   bande di sezione, caselle con l'etichetta sopra e il valore sotto, tabelle bordate.
   Il file dell'Agenzia NON e' ridistribuibile, quindi qui non c'e' niente di loro: e'
   markup nostro che ne rifa' la forma. La riga in fondo lo dice a chi guarda. */

.fpa__foglio[b-4q5yjlxfu2] {
    width: 210mm;
    max-width: 100%;
    margin: 0 auto;
    padding: 10mm 10mm 8mm;
    background: #fff;
    color: #1a1a1a;
    border: 1px solid var(--sedna-border-light, #eef0f3);
    box-shadow: var(--sedna-shadow-lg);
    font-family: Arial, Helvetica, "Segoe UI", sans-serif;
    font-size: 0.75rem;
    line-height: 1.4;
    max-height: min(78vh, 62rem);
    overflow: auto;
}

/* ⚠️ Il foglio è bianco anche in tema scuro, di proposito: è carta. Un documento fiscale
   in negativo non si legge come un documento, e stampato uscirebbe comunque bianco —
   mostrarlo scuro a video e chiaro sulla carta sarebbe la sorpresa peggiore. */

/* ── La banda del titolo, in cima ── */
.fpa__banda-titolo[b-4q5yjlxfu2] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    background: #1f3864;
    color: #fff;
    padding: 8px 12px;
    font-size: 0.9375rem;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.fpa__versione[b-4q5yjlxfu2] {
    font-size: 0.6875rem;
    font-weight: 400;
    opacity: 0.85;
}

/* ── Banda di sezione ── */
.fpa__sez[b-4q5yjlxfu2] {
    margin-top: 10px;
    background: #dce6f1;
    color: #1f3864;
    border: 1px solid #b8c9de;
    padding: 4px 8px;
    font-weight: 700;
    font-size: 0.75rem;
}

/* ── Griglia di caselle: etichetta sopra, valore sotto ──
   auto-fit + minmax: le caselle si dispongono da sole, e una sezione con due campi non
   lascia sette buchi. Il bordo condiviso viene dal collasso dei margini negativi. */
.fpa__griglia[b-4q5yjlxfu2] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    border: 1px solid #cfd8e3;
    border-top: 0;
}

.fpa__griglia--larga[b-4q5yjlxfu2] {
    grid-template-columns: 1fr;
}

.fpa__campo[b-4q5yjlxfu2] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: 4px 8px;
    border-right: 1px solid #e6ebf1;
    border-bottom: 1px solid #e6ebf1;
    min-width: 0;
}

.fpa__et[b-4q5yjlxfu2] {
    font-size: 0.625rem;
    color: #5a6b80;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.fpa__val[b-4q5yjlxfu2] {
    font-size: 0.75rem;
    color: #111;
    font-weight: 600;
    overflow-wrap: anywhere;
}

/* ── Tabelle ──
   Il wrapper scorre da solo: la tabella delle linee ha nove colonne e su una finestra
   stretta uscirebbe dal foglio, portandosi dietro la pagina. */
.fpa__tabwrap[b-4q5yjlxfu2] {
    overflow-x: auto;
    border: 1px solid #cfd8e3;
    border-top: 0;
}

.fpa table.fpa__tab[b-4q5yjlxfu2] {
    width: 100%;
    border-collapse: collapse;
    margin: 0;
    font-size: 0.6875rem;
}

.fpa .fpa__tab th[b-4q5yjlxfu2] {
    text-align: left;
    background: #eef3f9;
    color: #1f3864;
    border: 1px solid #dfe6ee;
    padding: 4px 6px;
    font-weight: 700;
    white-space: nowrap;
}

.fpa .fpa__tab td[b-4q5yjlxfu2] {
    padding: 4px 6px;
    border: 1px solid #edf1f5;
    vertical-align: top;
}

.fpa .fpa__tab tr:nth-child(even) td[b-4q5yjlxfu2] { background: #fafbfd; }

.fpa .fpa__tab th.n[b-4q5yjlxfu2],
.fpa .fpa__tab td.n[b-4q5yjlxfu2] { text-align: right; }

.fpa .mono[b-4q5yjlxfu2] {
    font-family: var(--sedna-font-mono, ui-monospace, "SFMono-Regular", Menlo, monospace);
    font-size: 0.6875rem;
}

/* ── Il totale, in evidenza ── */
.fpa__totale-doc[b-4q5yjlxfu2] {
    display: flex;
    justify-content: flex-end;
    align-items: baseline;
    gap: 16px;
    margin-top: 10px;
    padding: 6px 10px;
    background: #f2f6fb;
    border: 1px solid #cfd8e3;
    font-weight: 700;
}

.fpa__totale-doc .n[b-4q5yjlxfu2] {
    font-size: 0.9375rem;
    font-variant-numeric: tabular-nums;
}

.fpa__disclaimer[b-4q5yjlxfu2] {
    margin-top: 14px;
    padding-top: 8px;
    border-top: 1px solid #ddd;
    font-size: 0.6875rem;
    line-height: 1.4;
    color: #666;
}

/* ── STAMPA ──────────────────────────────────────────────────────────────
   Una fattura la si stampa, o la si salva in PDF dal browser: senza queste regole
   uscirebbero anche la finestra del portale, i suoi bordi e i pulsanti della vista.
   Si stampa il foglio e basta. */
@media print {
    .fpa__barra[b-4q5yjlxfu2],
    .fpa__nota-barra[b-4q5yjlxfu2] { display: none !important; }

    .fpa__sdi[b-4q5yjlxfu2] {
        height: auto;
        min-height: 100vh;
        border: 0;
        box-shadow: none;
    }

    .fpa__foglio[b-4q5yjlxfu2] {
        width: auto;
        max-height: none;
        overflow: visible;
        border: 0;
        box-shadow: none;
        padding: 0;
        font-size: 10pt;
    }

    /* Una riga della tabella spezzata a metà fra due pagine rende illeggibile un importo. */
    .fpa tr[b-4q5yjlxfu2] { break-inside: avoid; }

    .fpa thead[b-4q5yjlxfu2] { display: table-header-group; }

    .fpa__disclaimer[b-4q5yjlxfu2] { color: #000; }
}
/* /Shared/MainLayout.razor.rz.scp.css */

/* Tenant Selector in Sidebar */
.tenant-selector[b-251s7vpb5e] {
    margin-bottom: 0.5rem;
}

.tenant-selector__btn[b-251s7vpb5e] {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem;
    background: var(--sedna-surface-variant, #f5f5f5);
    border: 1px solid var(--sedna-border, #e0e0e0);
    border-radius: 8px;
    color: var(--sedna-text, #212121);
    transition: background-color 0.15s ease, border-color 0.15s ease;
    cursor: pointer;
}

    .tenant-selector__btn:hover:not(:disabled)[b-251s7vpb5e] {
        background: var(--sedna-surface-hover, #eeeeee);
        border-color: var(--sedna-border-strong, #bdbdbd);
    }

    .tenant-selector__btn:disabled[b-251s7vpb5e] {
        opacity: 0.6;
        cursor: not-allowed;
    }

    .tenant-selector__btn.dropdown-toggle[b-251s7vpb5e]::after {
        display: none;
    }

    .tenant-selector__btn > i.bi-building[b-251s7vpb5e] {
        font-size: 1.25rem;
        color: var(--sedna-primary, #1e88e5);
    }

.tenant-selector__info[b-251s7vpb5e] {
    flex: 1;
    text-align: left;
    display: flex;
    flex-direction: column;
    line-height: 1.3;
}

.tenant-selector__name[b-251s7vpb5e] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--sedna-text, #212121);
}

.tenant-selector__role[b-251s7vpb5e] {
    font-size: 0.75rem;
    color: var(--sedna-text-tertiary, #757575);
}

/* User Menu in Sidebar */
.user-menu[b-251s7vpb5e] {
    margin-top: 0.5rem;
}

.user-menu__btn[b-251s7vpb5e] {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem;
    background: var(--sedna-surface-variant, #f5f5f5);
    border: 1px solid var(--sedna-border, #e0e0e0);
    border-radius: 8px;
    color: var(--sedna-text, #212121);
    transition: background-color 0.15s ease, border-color 0.15s ease;
    cursor: pointer;
}

    .user-menu__btn:hover[b-251s7vpb5e] {
        background: var(--sedna-surface-hover, #eeeeee);
        border-color: var(--sedna-border-strong, #bdbdbd);
    }

    .user-menu__btn.dropdown-toggle[b-251s7vpb5e]::after {
        display: none;
    }

.user-menu__avatar[b-251s7vpb5e] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    /* D29: gradient diagonale 135deg → background solido (anti-pattern AI tell).
       Il colore semantico del primary brand è sufficiente per identificare
       l'utente; le iniziali bianche hanno contrasto AAA. */
    background: var(--sedna-primary, #1e88e5);
    color: var(--sedna-on-primary, #fff);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.875rem;
    font-weight: 600;
    text-transform: none;
    flex-shrink: 0;
}

.user-menu__avatar--small[b-251s7vpb5e] {
    width: 32px;
    height: 32px;
    font-size: 0.75rem;
}

.user-menu__info[b-251s7vpb5e] {
    flex: 1;
    
    text-align: left;
    display: flex;
    flex-direction: column;
    line-height: 1.3;
    overflow: hidden;
}

.user-menu__name[b-251s7vpb5e] {
    color: var(--sedna-text);
    font-size: 0.875rem;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.user-menu__email[b-251s7vpb5e] {
    color: var(--sedna-text-tertiary, #757575);
    font-size: 0.75rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Collapsed Sidebar Icon Buttons */
.sidebar-icon-btn[b-251s7vpb5e] {
    width: 100%;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--sedna-surface-variant, #f5f5f5);
    border: 1px solid var(--sedna-border, #e0e0e0);
    border-radius: 8px;
    color: var(--sedna-text-secondary, #616161);
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
    margin-bottom: 0.5rem;
    font-size: 1.25rem;
}

    .sidebar-icon-btn:hover:not(:disabled)[b-251s7vpb5e] {
        background: var(--sedna-surface-hover, #eeeeee);
        border-color: var(--sedna-border-strong, #bdbdbd);
    }

    .sidebar-icon-btn:disabled[b-251s7vpb5e] {
        opacity: 0.6;
        cursor: not-allowed;
    }

    .sidebar-icon-btn.dropdown-toggle[b-251s7vpb5e]::after {
        display: none;
    }

/* Dropdown Menus */
.dropdown-menu[b-251s7vpb5e] {
    border: 1px solid var(--sedna-border, #e9ecef);
    border-radius: 8px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.1);
    padding: 0.5rem;
    min-width: 220px;
}

.dropdown-item[b-251s7vpb5e] {
    border-radius: 6px;
    padding: 0.5rem 0.75rem;
    font-size: 0.875rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

    .dropdown-item:hover[b-251s7vpb5e] {
        background: var(--sedna-surface-hover, #f5f5f5);
    }

    .dropdown-item.text-danger:hover[b-251s7vpb5e] {
        background: var(--sedna-error-50, #fee);
    }

.dropdown-header[b-251s7vpb5e] {
    padding: 0.5rem 0.75rem;
    font-size: 0.875rem;
}

/* Payment Banner — D29 fix
   Prima: gradient orizzontale neon (#ffc107→#ffca2c warning, #dc3545→#e35d6a
   danger) → anti-pattern "AI marketing banner". Adesso: background tinted soft
   (50/100) + accent border-bottom semantico — design sobrio enterprise. */
.payment-banner[b-251s7vpb5e] {
    background: var(--sedna-warning-50, #fffbeb);
    border-bottom: 1px solid var(--sedna-warning-500, #f59e0b);
    padding: 0.75rem 1.5rem;
}

.payment-banner-content[b-251s7vpb5e] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
}

.payment-banner-text[b-251s7vpb5e] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--sedna-warning-700, #b45309);
    flex: 1;
}

.payment-banner-danger[b-251s7vpb5e] {
    background: var(--sedna-error-50, #fef2f2);
    border-bottom-color: var(--sedna-error-500, #ef4444);
}

    .payment-banner-danger .payment-banner-text[b-251s7vpb5e] {
        color: var(--sedna-error-700, #d32f2f);
    }

/* Responsive */
@media (max-width: 768px) {
    .tenant-selector__name[b-251s7vpb5e], .user-menu__email[b-251s7vpb5e] {
        max-width: 150px;
    }
}


/* Preferences Panel compatto nel dropdown */
.dropdown-menu .sedna-preferences-panel[b-251s7vpb5e] {
    padding: 0;
    margin: 0;
}

.dropdown-menu .preference-group[b-251s7vpb5e] {
    margin-bottom: 0.75rem;
}

.dropdown-menu .preference-label[b-251s7vpb5e] {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sedna-text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 0.5rem;
    display: block;
}

.dropdown-menu .btn-group[b-251s7vpb5e] {
    width: 100%;
}

    .dropdown-menu .btn-group .btn[b-251s7vpb5e] {
        font-size: 0.75rem;
        padding: 0.375rem 0.5rem;
        flex: 1;
    }

/* Icone più piccole nel dropdown */
.dropdown-menu .preference-group .bi[b-251s7vpb5e] {
    font-size: 0.875rem;
}




/* ── SPIA DEL PAGAMENTO nella barra strumenti ──────────────────────────────────
   Prende il posto della fascia finché i giorni sono tanti: stessa notizia, zero
   righe di schermo. Ambra come la fascia, così si riconosce come la stessa cosa;
   il numero nel badge sono i giorni che restano. */
.sb-tool--pagamento[b-251s7vpb5e] {
    color: var(--sedna-warning-700, #b45309);
}

.sb-tool--pagamento:hover[b-251s7vpb5e] {
    color: var(--sedna-warning-700, #b45309);
    background: var(--sedna-warning-50, #fffbeb);
}

/* Il badge dei giorni è ambra come quello delle bozze, ma qui il numero SCENDE:
   non conta cose da fare, conta tempo che resta. Per questo non usa il rosso finché
   la fascia non torna — il rosso è del «adesso», e l'avviso di allora è la fascia. */
.sb-tool--pagamento .tool-badge--warn[b-251s7vpb5e] {
    background: var(--sedna-warning-600, #d97706);
}

/* ── Bonifico dichiarato e non ancora confermato ────────────────────────────────
   Una FASCIA e non un velo: qui si lavora. Il velo è per quando non si può. */
.bonifico-attesa[b-251s7vpb5e] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 14px;
    background: var(--sedna-warning-50, #fff8e1);
    border-bottom: 1px solid var(--sedna-warning-600, #ffb300);
    color: var(--sedna-text);
    font-size: var(--sedna-text-sm);
    line-height: 1.4;
}

.bonifico-attesa code[b-251s7vpb5e] {
    background: var(--sedna-surface);
    padding: 0 4px;
    border-radius: 3px;
}

.bonifico-attesa__caus[b-251s7vpb5e] { margin-left: 6px; }

.bonifico-attesa__link[b-251s7vpb5e] { margin-left: auto; white-space: nowrap; }

/* ═══ IL VELO DELLA LICENZA FERMA ══════════════════════════════════════════════
   ⚠️ Prima `suspended-overlay` NON AVEVA NESSUNA REGOLA: il velo si reggeva sulle sole
   classi di utilità Bootstrap dei figli. Ecco perché si vedeva allineato a sinistra su
   fondo grigio e «sembrava un errore, non una pagina del prodotto» (Bruno, 14/09). È la
   schermata su cui un cliente che ha finito la prova decide se pagarci.

   ⚠️ Copre tutto ed è FISSO: sotto c'è il portale, e lasciarne una parte usabile
   darebbe l'idea che si possa ancora lavorare un po'. */
.suspended-overlay[b-251s7vpb5e] {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    overflow: auto;
    background: color-mix(in srgb, var(--sedna-surface) 88%, transparent);
    backdrop-filter: blur(3px);
}

.lic[b-251s7vpb5e] {
    width: min(520px, 100%);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 10px;
    padding: 30px 28px;
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: 14px;
    box-shadow: 0 10px 40px rgba(0, 0, 0, .14);
}

/* ⚠️ Il rosso SOLO qui, sul segnale: fondo rosso + titolo rosso + pulsante rosso
   dicevano la stessa cosa tre volte, e nessuno dei tre restava il segnale. */
.lic__seg[b-251s7vpb5e] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--sedna-warning-600) 16%, transparent);
    color: var(--sedna-warning-700, var(--sedna-warning-600));
    font-size: 1.6rem;
}

.lic__seg.is-grave[b-251s7vpb5e] {
    background: color-mix(in srgb, var(--sedna-error-600) 14%, transparent);
    color: var(--sedna-error-700, var(--sedna-error-600));
}

.lic__t[b-251s7vpb5e] {
    margin: 4px 0 0;
    font-size: 1.35rem;
    font-weight: 600;
    line-height: 1.25;
    color: var(--sedna-text);
}

.lic__s[b-251s7vpb5e] {
    margin: 0;
    font-size: var(--sedna-text-sm);
    color: var(--sedna-text-secondary);
    line-height: 1.5;
}

/* La riga che risponde alla prima domanda di chiunque: «e i miei dati?». */
.lic__dati[b-251s7vpb5e] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 2px 0 6px;
    padding: 7px 12px;
    border-radius: var(--sedna-radius-md, 0.5rem);
    background: color-mix(in srgb, var(--sedna-success-600) 10%, transparent);
    color: var(--sedna-text);
    font-size: var(--sedna-text-sm);
}

.lic__dati > i[b-251s7vpb5e] { color: var(--sedna-success-600); }

.lic__cta[b-251s7vpb5e] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 11px 18px;
    border: 0;
    border-radius: var(--sedna-radius-input, 0.375rem);
    background: var(--sedna-primary);
    color: #fff;
    font: inherit;
    font-size: var(--sedna-text-base);
    font-weight: 600;
    cursor: pointer;
}

.lic__cta:hover[b-251s7vpb5e] { filter: brightness(1.06); }
.lic__cta:focus-visible[b-251s7vpb5e] { outline: 2px solid var(--sedna-primary); outline-offset: 2px; }

.lic__come[b-251s7vpb5e] { font-size: var(--sedna-text-xs); color: var(--sedna-text-tertiary); }

.lic__aiuto[b-251s7vpb5e] {
    margin-top: 6px;
    padding-top: 12px;
    border-top: 1px solid var(--sedna-border);
    width: 100%;
    font-size: var(--sedna-text-xs);
    color: var(--sedna-text-secondary);
}

.lic__aiuto a[b-251s7vpb5e] { color: var(--sedna-primary); }
/* /Shared/SessionExpiredGuard.razor.rz.scp.css */
/* Avviso di sessione scaduta — sopra tutto (sidebar 1030, modal 1100) */
.seg-overlay[b-2c6e4bupnp] {
    position: fixed;
    inset: 0;
    z-index: 2000;
    background: rgba(16, 24, 40, 0.55);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.seg-modal[b-2c6e4bupnp] {
    width: min(420px, 100%);
    background: var(--sedna-surface);
    border: 1px solid var(--sedna-border);
    border-radius: var(--sedna-radius-lg, 0.75rem);
    box-shadow: 0 12px 40px rgba(16, 24, 40, 0.25);
    padding: 28px;
    text-align: center;
}

.seg-ico[b-2c6e4bupnp] {
    width: 56px;
    height: 56px;
    margin: 0 auto 16px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--sedna-primary-subtle);
    color: var(--sedna-primary);
    font-size: 1.6rem;
}

.seg-modal h2[b-2c6e4bupnp] {
    margin: 0 0 8px;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--sedna-text);
}

.seg-modal p[b-2c6e4bupnp] {
    margin: 0 0 22px;
    font-size: 0.9375rem;
    color: var(--sedna-text-secondary);
    line-height: 1.5;
}

.seg-btn[b-2c6e4bupnp] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 42px;
    padding: 0 22px;
    border-radius: var(--sedna-radius-base, 0.375rem);
    border: none;
    background: var(--sedna-primary);
    color: var(--sedna-on-primary, #fff);
    font-size: 0.9375rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
}

.seg-btn:hover[b-2c6e4bupnp] {
    background: var(--sedna-primary-hover);
}

.seg-btn:focus-visible[b-2c6e4bupnp] {
    outline: 2px solid var(--sedna-primary);
    outline-offset: 2px;
}
/* /Shared/Workspace/SednaWorkspaceHost.razor.rz.scp.css */
/* I pannelli riempiono la colonna flex di .sedna-main-content__inner.
   Il pannello inattivo e' display:none: istanza viva, zero layout e zero paint. */
.sw-panes[b-guuapbsifp] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

.sw-pane[b-guuapbsifp] {
    display: none;
}

.sw-pane--active[b-guuapbsifp] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
}

/* ═══ SCHERMO DIVISO ═════════════════════════════════════════════════════════
   Due pannelli affiancati con un divisore trascinabile. `--sw-split` è la larghezza del
   pannello di sinistra e la scrive il JS a ogni fotogramma del trascinamento: una proprietà
   CSS, nessun giro in Blazor.
   ⚠️ `min-width: 0` su tutti e due: senza, una griglia larga impedisce al flex di stringere
   il pannello e il divisore si pianta: si trascina e non si muove niente. */
.sw-panes--diviso[b-guuapbsifp] {
    flex-direction: row;
    position: relative;
    --sw-split: 50%;
}

.sw-panes--diviso .sw-pane--visibile[b-guuapbsifp] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    min-width: 0;
    overflow: hidden;
}

.sw-panes--diviso .sw-pane--sx[b-guuapbsifp] { flex: 0 0 calc(var(--sw-split) - (var(--sw-split-larghezza, 6px) / 2)); }
.sw-panes--diviso .sw-pane--dx[b-guuapbsifp] { flex: 1 1 0; }

/* Il pannello di destra si stacca con un filo, così le due pagine non sembrano una sola. */
.sw-panes--diviso .sw-pane--dx[b-guuapbsifp] { border-left: 1px solid var(--sedna-border); }

/* ⚠️ La scheda ATTIVA si riconosce anche a schermo diviso: senza un segno, chi guarda non sa
   quale delle due riceve i tasti — e lo scopre premendoli. */
.sw-panes--diviso .sw-pane--active[b-guuapbsifp] { box-shadow: inset 0 2px 0 var(--sedna-primary); }

.sw-split[b-guuapbsifp] {
    --sw-split-larghezza: 6px;
    position: absolute;
    top: 0;
    bottom: 0;
    left: var(--sw-split);
    width: var(--sw-split-larghezza);
    transform: translateX(-50%);
    z-index: 20;
    cursor: col-resize;
    background: transparent;
    /* Il bersaglio è 6px ma il segno è 1px: una maniglia va PRESA facilmente e vista appena. */
    touch-action: none;
}

.sw-split[b-guuapbsifp]::after {
    content: "";
    position: absolute;
    inset-block: 0;
    left: 50%;
    width: 1px;
    transform: translateX(-50%);
    background: var(--sedna-border);
}

.sw-split:hover[b-guuapbsifp]::after,
.sw-split.is-trascinando[b-guuapbsifp]::after { width: 3px; background: var(--sedna-primary); }
