/* Ultime compatibilita legacy: moduli proprietari, nessun nuovo foglio CSS.
   Tab compatti riutilizzabili; stato annullamento permanente, non feedback transitorio. */
:is(.app-frame-header-tabs--compact, .app-page-card-tabsbar.is-compact) .app-page-card-tabs-link {
    font-size: .82rem;
    white-space: nowrap;
}

:is(.app-frame-header-tabs--compact, .app-page-card-tabsbar.is-compact) .app-page-card-tabs-badge {
    font-size: .68rem;
}

.preventivo-servizi-modulo td.preventivo-table-col-sconto .app-inline-edit-value {
    line-height: 1.25;
}

.preventivo-finanziamento-riepilogo {
    white-space: pre-line;
}

.app-document-alert-danger {
    color: #7f1d2d;
}

.app-document-alert-danger strong {
    font-size: .98rem;
}

/*
 * FrameTrade UI - tipografia applicativa.
 *
 * Questo file e l'unico proprietario di famiglia, dimensioni, pesi,
 * interlinea e ruoli cromatici del testo condiviso. I componenti mantengono
 * nei rispettivi CSS soltanto layout, spaziature, superfici e comportamento.
 * I selettori storici restano affiancati come alias durante la migrazione.
 */

/* Ruoli testuali della timeline: identici in tutte le schede che la utilizzano. */
.app-activity-timeline-title {
    color: #0f172a;
    font-size: .92rem;
    font-weight: 700;
    line-height: 1.35;
}

.app-activity-timeline-meta {
    color: #64748b;
    font-size: .82rem;
    line-height: 1.4;
}

.app-activity-timeline-detail {
    color: #334155;
    font-size: .84rem;
    line-height: 1.45;
}

/* Font variabile ufficiale della piattaforma, normale e corsivo. */
@font-face {
    font-family: "Inter";
    src: url("../fonts/inter-4.1/InterVariable.woff2") format("woff2");
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
}

@font-face {
    font-family: "Inter";
    src: url("../fonts/inter-4.1/InterVariable-Italic.woff2") format("woff2");
    font-style: italic;
    font-weight: 100 900;
    font-display: swap;
}

/* Token tipografici condivisi: ogni ruolo semantico deriva da questi valori. */
:root {
    --app-font-family: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
    --bs-body-font-family: var(--app-font-family);
    --app-text-color: #172033;
    --app-text-heading-color: #16324f;
    --app-text-section-color: #14395f;
    --app-text-muted-color: #64748b;
    --app-text-control-size: .9375rem;
    --app-text-body-size: .92rem;
    --app-text-caption-size: .86rem;
    --app-text-label-size: .76rem;
}

/* Base globale: i controlli ereditano la stessa famiglia del documento. */
html,
body {
    font-family: var(--app-font-family);
}

button,
input,
optgroup,
select,
textarea {
    font-family: inherit;
}

/* Primitiva semantica per testi applicativi aggiunti o migrati. */
.app-text {
    color: var(--app-text-color);
    font-family: var(--app-font-family);
}

/* Titolo principale della pagina; app-page-card-title e l'alias storico. */
:is(.app-text--title, .app-page-card-title, .app-header-title) {
    color: var(--app-text-heading-color);
    font-size: 21px;
    font-weight: 700;
    line-height: 1.2;
}

/* Titolo semantico e titolo delle card interne alle pagine. */
:is(.app-text--heading, .app-page-card-section-title) {
    color: var(--app-text-section-color);
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.25;
}

/* Sottosezione storica: conserva la sua scala leggermente piu compatta. */
.app-section-subtitle {
    color: var(--app-text-heading-color);
    font-size: .95rem;
    font-weight: 700;
    line-height: 1.25;
}

/* Titolo delle sezioni interne a modali e pannelli laterali. */
:is(.app-overlay-section-title, .app-offcanvas-section-title) {
    color: var(--app-text-color);
    font-size: 1rem;
    font-weight: 700;
}

/* Sottotitolo contestuale della testata pagina. */
:is(.app-text--subtitle, .app-page-card-subtitle) {
    color: #5f7087;
    font-size: .9rem;
    font-weight: 500;
    line-height: 1.35;
}

/* Testo secondario e descrittivo, senza responsabilita di margini. */
:is(.app-text--muted, .app-overlay-section-description, .app-offcanvas-section-description) {
    color: var(--app-text-muted-color);
    font-size: var(--app-text-caption-size);
}

/* Metadato compatto dei filtri negli elenchi. */
.app-list-filter-meta {
    color: var(--app-text-muted-color);
    font-size: .8rem;
    font-weight: 400;
    line-height: 1.25;
    white-space: nowrap;
}

/* Metadati e identificativi tecnici presenti nelle testate delle schede. */
.app-page-card-header-meta {
    color: var(--app-text-muted-color);
    font-size: var(--app-text-caption-size);
    font-weight: 600;
    line-height: 1.35;
}

.app-page-card-header-meta strong {
    color: #334155;
    font-weight: 700;
}

.app-page-card-id {
    color: #334155;
    font-size: .95rem;
    font-weight: 700;
    line-height: 1;
}

/* Corpo del frame: scala compatta condivisa dalle schermate migrate. */
.app-frame {
    color: var(--app-text-color);
    font-size: .95rem;
}

/* Etichetta compatta dei campi floating. */
:is(.app-text--label, .app-floating-field-label) {
    color: var(--app-text-muted-color);
    font-size: var(--app-text-label-size);
    font-weight: 500;
    line-height: 1.2;
}

/* Indicazioni opzionali e placeholder di guida condividono il tono della label. */
.app-floating-field-label-optional {
    color: inherit;
    font-size: inherit;
    font-style: italic;
    font-weight: 400;
    line-height: inherit;
}

.app-optional-placeholder::placeholder,
.app-field-guidance-placeholder::placeholder,
select.app-optional-placeholder:has(option[value=""]:checked),
select.app-field-guidance-placeholder:has(option[value=""]:checked) {
    color: var(--app-text-muted-color);
    font-size: var(--app-text-label-size);
    font-style: italic;
    font-weight: 400;
    text-transform: none;
}

select.app-optional-placeholder option,
select.app-field-guidance-placeholder option {
    color: var(--app-text-color);
    font-size: var(--app-text-control-size);
    font-style: normal;
    font-weight: 400;
}

/* Valore dei controlli standard e dei controlli floating. */
:is(.app-input-field, .app-select-field),
.app-floating-field > :is(.form-control, .form-select, .app-input-field, .app-select-field),
.app-floating-field > .app-select-combo > :is(.form-control, .app-input-field),
.app-select-combo > .dropdown-menu .dropdown-item {
    font-size: var(--app-text-control-size);
    line-height: 1.35;
}

.app-input-field,
.app-select-field {
    color: var(--bs-body-color);
    font-weight: 400;
    line-height: 1.5;
}

/* Compatibilita per i campi che richiedono esplicitamente corpo a 14 px. */
.app-floating-field > .app-input-field.app-input-font-14 {
    font-size: 14px;
}

/* Coppie label/valore dei riepiloghi documentali readonly. */
.app-document-readonly-field,
.app-dati-standard-riga,
.app-dati-cliente,
.app-dati-cliente-riga {
    color: #334155;
    font-size: .875rem;
    line-height: 1.4;
}

.app-document-readonly-label {
    color: #0f172a;
    font-size: inherit;
    font-weight: 700;
    line-height: inherit;
    text-transform: none;
}

.app-document-readonly-value {
    color: #334155;
    font-size: inherit;
    font-weight: 400;
    line-height: inherit;
}

/* Valori descrittivi multilinea: conserva gli a capo senza regole per scheda. */
.app-document-readonly-value--multiline {
    white-space: pre-line;
}

/* Testi secondari dei risultati lookup. */
.app-lookup-result span {
    color: #697b8c;
    font-size: .82rem;
}

/* Opzioni del multiselect applicativo. */
.app-multiselect-option {
    font-size: var(--app-text-control-size);
    line-height: 1.35;
}

/* Titolo dell'accordion e label delle card form ancora legacy. */
.app-form-accordion .accordion-button,
.app-form-accordion .accordion-button:not(.collapsed) {
    color: #1f2937;
    font-weight: 700;
}

.app-section-card .form-label {
    color: #334155;
    font-size: .9rem;
    font-weight: 600;
}

.app-section-card :is(.form-control, .form-select) {
    line-height: 1.25;
}

/* Tipografia base delle tabelle, indipendente dalla loro collocazione. */
.app-table {
    color: var(--app-text-color);
    font-size: var(--app-text-body-size);
}

.app-table th {
    font-weight: 700;
}

/* Intestazioni delle tabelle contenute nelle schede, dashboard e overlay. */
:is(.app-frame-content-card-table, .app-frame-content-list-table--contained, .app-overlay-table, .app-dashboard-card-table) thead th,
:is(.app-frame-content-card-table, .app-frame-content-list-table--contained, .app-overlay-table, .app-dashboard-card-table) tbody th {
    color: #1f3550;
    font-size: .78rem;
    font-weight: 800;
    line-height: 1.2;
}

/* Intestazioni degli elenchi: resa invariata e distinta dalle tabelle di scheda. */
:is(.app-frame-content-list-table:not(.app-frame-content-list-table--contained), .app-overlay-table--list) thead th {
    color: #31445c;
    font-size: .78rem;
    font-weight: 800;
    line-height: 1.2;
    text-transform: uppercase;
}

/* Testi di raggruppamento presenti in alcuni elenchi complessi. */
.app-table-header-cell,
.app-table-group-title {
    color: #1f3550;
    font-weight: 800;
}

.app-table-group-summary {
    color: #52657d;
    font-size: .84rem;
    font-weight: 700;
}

/* Utility di peso: i nomi storici restano alias delle varianti app-text. */
:is(.app-text--weight-bold, .app-fw-bold) {
    font-weight: 700;
}

:is(.app-text--weight-semibold, .app-fw-semibold) {
    font-weight: 600;
}

:is(.app-text--weight-medium, .app-fw-medium) {
    font-weight: 500;
}
/* Titoli delle card legacy: tipografia centralizzata, layout in app-frame.css. */
.app-section-title {
    font-size: 1.02rem;
    font-weight: 700;
    color: #16324f;
}

/* Titoli legacy con testata: stessa scala dei titoli delle card composte. */
.app-section-card > .app-section-title:first-child,
.app-section-card > .d-flex:first-child:has(.app-section-title) .app-section-title {
    font-size: 1rem;
    line-height: 1.25;
}

/* Testi compatti condivisi da card legacy e riepiloghi documenti. */
.app-section-card .small p,
.scheda-preventivo-cliente-box .small p {
    line-height: 1.4;
    color: #334155;
}

.app-section-card .small p strong,
.scheda-preventivo-cliente-box .small p strong { color: #0f172a; }

/* Testi dei riepiloghi documentali: una base condivisa con i campi readonly.
   Le intestazioni anagrafiche conservano soltanto il ruolo cromatico distinto. */
.app-dati-standard-intestazione,
.app-dati-cliente-intestazione {
    font-size: .95rem;
    font-weight: 700;
    line-height: 1.35;
    overflow-wrap: anywhere;
}
.app-dati-standard-intestazione { color: #16324f; }
.app-dati-cliente-intestazione { color: #0f172a; }

.app-dati-standard-riga > *,
.app-dati-cliente-riga > * { overflow-wrap: anywhere; }

.app-dati-standard-riga > :first-child {
    color: #0f172a;
    font-weight: 700;
}

.app-document-total-highlight {
    font-size: 1rem;
    font-weight: 700;
    color: var(--bs-primary, #0d6efd);
}

.app-document-totals-card .app-dati-standard-riga { font-size: .9rem; }
.app-document-totals-section-label {
    color: #64748b;
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .02em;
    text-transform: uppercase;
}

/* Scala testuale comune dei badge documentali. */
.app-document-status-badge,
.app-document-header-state-badge {
    font-size: .78rem;
    font-weight: 700;
}
.app-document-status-badge { color: #1f4e79; }

/* Indirizzi, immagini e lookup azienda: pattern condivisi fra le schede.
   Alias storici conservati per i trigger esistenti; nessuna variante per pagina. */
.scheda-cliente-comune-option-main {
    font-weight: 700;
}

.scheda-cliente-comune-option-meta {
    color: #64748b;
    font-size: .82rem;
}

.app-image-upload-dropzone {
    color: inherit;
}

.app-image-upload-placeholder {
    color: #6f7f91;
    font-size: .875rem;
    font-weight: 600;
    line-height: 1.35;
}

.app-company-search-table-title {
    color: #0f2742;
    font-size: .92rem;
    font-weight: 800;
    line-height: 1.25;
}

.app-company-search-table-source {
    color: #64748b;
    font-size: .76rem;
    font-weight: 600;
    line-height: 1.25;
}

.app-company-search-table-row {
    color: #1f2937;
    font-size: .86rem;
    line-height: 1.3;
}

.app-company-search-table-label {
    color: #334155;
    font-weight: 400;
}

.app-company-search-table-value {
    color: #0f172a;
    font-weight: 750;
}

.app-company-search-state {
    color: var(--bs-secondary-color, #526176);
    font-size: .95rem;
}

/* Dashboard e picker: pattern condivisi, alias storici senza copie nelle pagine.
   Geometria, comandi, testi e icone restano nei rispettivi moduli proprietari. */
.dashboard-home .dashboard-lead {
    color: #526274;
}

.dashboard-home .dashboard-quick-card,
.dashboard-home .dashboard-quick-card a,
.dashboard-home .dashboard-link-card,
.dashboard-home .dashboard-link-card a {
    color: inherit;
}

.dashboard-home .dashboard-card-title {
    font-size: 1rem;
    font-weight: 700;
    color: #16324f;
}

.dashboard-home .dashboard-card-text {
    color: #5c6b7c;
    font-size: .94rem;
    line-height: 1.45;
}

.component-picker-title {
    font-weight: 700;
    line-height: 1.25;
}

.app-picker-card-title {
    color: #172033;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.3;
}

.app-picker-list-stage {
    color: #5c6877;
    font-weight: 700;
}

.app-picker-list-group-title {
    color: #172033;
    font-size: 1rem;
    font-weight: 700;
}

.app-picker-list-title {
    font-weight: 700;
}

.app-picker-list-description {
    color: #536174;
}

.app-picker-list-detail {
    color: #34495c;
}

.app-picker-list-price span {
    color: #536174;
}

.dashboard-home .dashboard-stat-value {
    font-size: 1.9rem;
    font-weight: 700;
    color: #16324f;
    line-height: 1;
}

.dashboard-home .dashboard-stat-label {
    color: #5c6b7c;
    font-size: .95rem;
}

.dashboard-home .dashboard-empty {
    color: #6c7a89;
}

/* Preview e optional prodotto: base condivisa tra preventivo e simulatore.
   Alias legacy preservati; proporzioni tecniche e specchiatura restano varianti. */
.scheda-prodotto-image-placeholder {
    color: #718096;
    font-size: .82rem;
}

.scheda-prodotto-component-value {
    color: #173d60;
    font-size: .88rem;
    font-weight: 600;
    white-space: nowrap;
}

.scheda-prodotto-component-label {
    font-size: var(--app-text-control-size);
}

/* Importo inline: peso del riepilogo economico. */
.app-prezzo-base-manuale { font-weight: 600; }

/* FE/FIR: varianti di resa, senza cambiare colgroup o contesto scheda/elenco.
   Gli alias mantengono il markup attuale; nessuna modifica ai documenti. */
.fornitore-fe-table .fornitore-fe-causale > span {
    white-space: nowrap;
}

.fornitore-fe-table tr > :nth-child(1),
.fornitore-fe-table tr > :nth-child(2),
.fornitore-fe-table tr > :nth-child(3),
.fornitore-fe-table tr > :nth-child(5),
.fornitore-fe-table tr > :nth-child(6),
.fornitore-fe-table tr > :last-child {
    white-space: nowrap;
}

.rentri-fir-table th,
.rentri-fir-table td {
    overflow-wrap: anywhere;
}

.rentri-fir-table .rentri-fir-pdf-cell {
    overflow-wrap: normal;
}

.app-table:has([data-bs-target^="#modalFeOptional"]) .badge {
    color: #475569;
    font-weight: 700;
}

.app-table:has([data-bs-target^="#modalFeOptional"]) .badge.bg-success {
    color: #15803d;
}

.app-table:has([data-bs-target^="#modalFeOptional"]) .badge.bg-secondary {
    color: #475569;
}

/* FIR mobile: righe a etichetta/valore, non nuove larghezze di colonna. */
@media (max-width: 767.98px) {
    .rentri-fir-table tbody td::before {
        color: #31445c;
        font-size: .75rem;
        font-weight: 800;
        line-height: 1.35;
        text-transform: uppercase;
    }
}

/* Titolo legacy: scala storica distinta, ruolo cromatico e peso condivisi. */
.app-header-title { font-size: 1.75rem; }
.preventivo-col-azioni { white-space: nowrap; }

/* Unificazione anagrafiche: pattern condiviso cliente/fornitore.
   Alias legacy preservati; struttura e controlli di scelta indipendenti dall'entita. */
.clienti-unificazione-page .app-page-card-subtitle {
    color: var(--app-text-muted, #64748b);
}

.app-form-choice-controls,
.clienti-unificazione-candidato-choices {
    font-size: .82rem;
    font-weight: 600;
}

.app-frame-content-card-choice-content > span,
.clienti-unificazione-candidato-content > span {
    color: var(--app-text-muted, #64748b);
    font-size: .875rem;
}

.clienti-unificazione-page .app-badge {
    font-size: .72rem;
    font-weight: 700;
    white-space: nowrap;
}

.clienti-unificazione-page .app-badge--success {
    color: #0d7142;
}

.clienti-unificazione-page .app-badge--warning {
    color: #7a5200;
}

.clienti-unificazione-reference-table th,
.clienti-unificazione-reference-table td {
    white-space: nowrap;
}
