/*
 * Stili esclusivi del Viewer. Shell, sidebar, header, card, griglie e tabelle
 * arrivano senza modifiche dagli asset CFO HUB Desktop sincronizzati.
 */
.hidden { display: none !important; }

/* Phone navigation has its own readable scale above the 1280px report. */
body.viewer-mobile-navigation .app-sidebar {
    zoom: var(--viewer-sidebar-zoom);
    --cfo-sidebar-width: min(var(--viewer-sidebar-max-width), calc(var(--viewer-sidebar-width) - 24px));
    width: var(--cfo-sidebar-width) !important;
    height: var(--viewer-sidebar-height) !important;
    max-height: var(--viewer-sidebar-height);
    z-index: 1055;
}
body.viewer-mobile-navigation .sidebar-toggle-btn {
    zoom: var(--viewer-navigation-zoom);
    --cfo-sidebar-width: min(340px, calc(var(--viewer-navigation-width) - 24px));
}
body.viewer-mobile-navigation .app-wrapper > .main-content {
    margin-left: 0 !important;
    width: 100% !important;
    padding-top: calc(68px * var(--viewer-navigation-zoom)) !important;
}
body.viewer-mobile-navigation .sidebar-mobile-backdrop:not(.hidden) {
    display: block !important;
    position: fixed;
    inset: 0;
    z-index: 1050;
    background: rgba(15, 23, 42, .32);
}

/* La shell Desktop usa un selettore piu specifico con display !important.
 * Manteniamo quindi fail-closed la sidebar finche Auth non la abilita. */
.app-sidebar.hidden { display: none !important; }

@media (prefers-reduced-motion: reduce) {
    .app-sidebar,
    .app-wrapper > .main-content,
    .sidebar-toggle-btn,
    .sidebar-mobile-backdrop,
    .cfo-tree-branch,
    .cfo-tree-chevron {
        transition: none !important;
    }
}

.cfo-brand-logo {
    width: 92px !important;
    height: auto !important;
}

.sidebar-client-placeholder {
    flex: 0 0 22px;
    width: 22px;
    color: var(--cfo-sidebar-muted);
    text-align: center;
}

.viewer-account {
    display: grid;
    gap: 8px;
    border-top: 1px solid var(--cfo-sidebar-line);
}

.viewer-account small {
    color: var(--cfo-sidebar-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cfo-tree-shell .viewer-account .btn {
    border-color: var(--cfo-sidebar-line);
    background: transparent;
    color: var(--cfo-sidebar-text);
}

.cfo-tree-shell .viewer-account .btn:hover,
.cfo-tree-shell .viewer-account .btn:focus-visible {
    border-color: var(--cfo-sidebar-active);
    background: var(--cfo-sidebar-hover);
    color: var(--cfo-sidebar-text);
}

/* I gruppi Viewer sono button; gli anchor Desktop occupano gia tutta la riga. */
.app-sidebar #main-navigation > .sidebar-nav-group > .sidebar-parent-link {
    width: 100%;
    text-align: left;
}

.viewer-panel,
.app-view {
    width: 100%;
}

/* The previous view remains visible while its successor loads. Once the new
   section is shown, fade it in without moving large report layouts. */
@supports (transition-behavior: allow-discrete) {
    .app-view {
        opacity: 1;
        transition: opacity .14s ease-out;
    }
    @starting-style {
        .app-view:not(.hidden) { opacity: 0; }
    }
}

@media (prefers-reduced-motion: reduce) {
    .app-view { transition: none !important; }
}

.viewer-home-decision-root {
    min-width: 0;
}

button.home-decision-primary,
.home-decision-menu-item {
    appearance: none;
    border: 0;
    font-family: inherit;
    text-align: left;
    cursor: pointer;
}

.home-decision-menu-item {
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    min-height: 38px;
    padding: 8px 9px;
    border-radius: 6px;
    background: transparent;
    color: #24324a;
    font-size: .78rem;
    font-weight: 650;
}

.home-decision-menu-item:hover,
.home-decision-menu-item:focus-visible {
    background: #edf4fe;
    color: #124f96;
    outline: none;
}

.home-decision-menu-item i {
    color: #1768c4;
}

.viewer-chart-card {
    height: 400px;
}

.viewer-chart-card canvas {
    width: 100% !important;
    height: 100% !important;
}

.message {
    margin-bottom: 16px;
    padding: 10px 12px;
    border: 1px solid #b8d7f4;
    border-radius: 7px;
    background: #eef7ff;
    color: #174e90;
    font-size: .82rem;
}

.message.error {
    border-color: #efb6b1;
    background: #fff1f0;
    color: #9d2117;
}
#agent-report-notice { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: .9rem; }
#agent-report-notice > span { flex: 1 1 280px; }
#agent-report-notice > small { flex-basis: 100%; color: #9d2117; }
#agent-report-notice .btn { min-height: 44px; }

footer {
    padding: 24px 0 4px;
    color: #8791a2;
    text-align: center;
    font-size: .68rem;
}

/* Login: usa gli stessi controlli Bootstrap ma senza la shell laterale. */
.app-wrapper > .main-content.login-layout {
    display: grid;
    place-items: center;
    width: 100% !important;
    min-height: 100vh;
    margin-left: 0 !important;
    padding: 24px !important;
    background: radial-gradient(circle at top, #edf4ff, #f5f7fb 48%) !important;
}

.login-panel {
    width: min(450px, 100%);
    padding: 32px;
    border: 1px solid var(--cfo-line);
    border-top: 4px solid var(--cfo-primary);
    border-radius: 8px;
    background: #fff;
    box-shadow: var(--cfo-t-shadow, 0 8px 22px rgba(15, 23, 42, .08));
}

.session-restore-panel {
    display: grid;
    justify-items: center;
    gap: 14px;
    text-align: center;
}

.session-restore-panel .spinner-border {
    width: 2rem;
    height: 2rem;
    color: var(--cfo-primary);
}

.login-brand {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 24px;
}

.login-brand img {
    width: 76px;
    height: 54px;
    object-fit: contain;
}

.login-brand strong,
.login-brand span {
    display: block;
}

.login-brand strong {
    color: #162b66;
    font-size: 1.25rem;
    font-weight: 850;
}

.login-brand span {
    color: var(--cfo-muted);
    font-size: .78rem;
}

.login-client-brand {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: -8px 0 22px;
    padding: 12px 14px;
    border: 1px solid #dbe5f4;
    border-radius: 8px;
    background: #f8fbff;
}

.login-client-brand.compact { margin: 0; }
.login-client-brand img { width: 74px; height: 50px; object-fit: contain; }
.login-client-brand div { min-width: 0; }
.login-client-brand span,
.login-client-brand strong { display: block; }
.login-client-brand span { color: var(--cfo-muted); font-size: .68rem; }
.login-client-brand strong { overflow-wrap: anywhere; color: #162b66; font-size: .9rem; }

.login-panel h1 {
    margin: 12px 0 6px;
    font-size: 1.55rem;
}

.login-panel > p {
    margin: 0 0 22px;
    color: var(--cfo-muted);
}

.login-panel form,
.account-dialog form {
    display: grid;
    gap: 14px;
}

.login-panel label,
.account-dialog label {
    display: grid;
    gap: 5px;
    color: #344054;
    font-size: .78rem;
    font-weight: 750;
}

.login-note {
    display: block;
    margin-top: 18px;
    color: #8791a2;
    text-align: center;
    font-size: .68rem;
}

.login-install-app {
    display: grid;
    gap: 8px;
    margin-top: 16px;
    text-align: center;
}

.login-install-app .btn { min-height: 44px; }
.login-install-app small { color: var(--cfo-muted); font-size: .72rem; }
.viewer-install-app { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 16px; padding: 12px 14px; border: 1px solid #c9d8e9; border-radius: 10px; background: #f1f5fa; color: var(--cfo-ink); }
.viewer-install-app > span { flex: 1 1 270px; }
.viewer-install-app > small { flex-basis: 100%; color: var(--cfo-muted); }
.viewer-install-app .btn { min-height: 44px; }
.install-app-dialog > section { padding: 24px; }
.install-app-dialog > section > p { margin-top: 14px; }
.install-app-dialog ol { display: grid; gap: 10px; margin: 18px 0; padding-left: 1.4rem; color: var(--cfo-ink); font-size: .86rem; }
.install-app-dialog .install-app-note { display: flex; gap: 8px; padding: 12px; border-radius: 8px; color: #315b58; background: #edf8f6; }

.account-dialog {
    width: min(500px, calc(100% - 32px));
    padding: 0;
    border: 1px solid var(--cfo-line);
    border-radius: 8px;
    box-shadow: 0 24px 60px rgba(15, 23, 42, .23);
}

.account-dialog::backdrop { background: rgba(15, 23, 42, .48); }
.account-dialog form { padding: 24px; }
.account-dialog p,
.account-dialog small { margin: 0; color: var(--cfo-muted); font-size: .75rem; }
.dialog-heading { display: flex; justify-content: space-between; gap: 16px; }
.dialog-heading h2 { margin: 6px 0 0; font-size: 1.25rem; }
.dialog-close { border: 0; background: transparent; color: var(--cfo-muted); font-size: 1.5rem; cursor: pointer; }
.dialog-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 4px; }

.security-report-dialog {
    width: min(980px, calc(100% - 32px));
    max-height: min(92vh, 980px);
    padding: 0;
    overflow: hidden;
    border: 1px solid var(--cfo-line);
    border-radius: 10px;
    box-shadow: 0 24px 70px rgba(15, 23, 42, .28);
}

.security-report-dialog::backdrop { background: rgba(15, 23, 42, .58); }
.security-report-dialog > article { padding: 26px; max-height: min(92vh, 980px); overflow: auto; }
.security-report-heading { align-items: flex-start; }
.security-report-heading h2 { margin: 7px 0 0; color: #172554; font-size: 1.45rem; }
.security-report-meta { display: flex; flex-wrap: wrap; gap: 8px 20px; margin: 18px 0 10px; color: #475467; font-size: .76rem; }
.security-report-meta i { color: var(--cfo-success); }
.security-report-summary { margin: 0 0 20px; padding: 14px 16px; border-left: 4px solid var(--cfo-primary); border-radius: 6px; background: #f4f8ff; color: #344054; line-height: 1.55; }
.security-controls-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.security-control-card,
.security-report-section { padding: 16px 18px; border: 1px solid #dfe6f1; border-radius: 8px; background: #fff; }
.security-control-card h3,
.security-report-section h3 { display: flex; align-items: center; gap: 9px; margin: 0 0 10px; color: #172554; font-size: .93rem; }
.security-control-card h3 i,
.security-report-section h3 i { color: var(--cfo-primary); font-size: 1.05rem; }
.security-control-card ul,
.security-report-section ul { margin: 0; padding-left: 19px; color: #475467; font-size: .78rem; line-height: 1.55; }
.security-control-card li + li,
.security-report-section li + li { margin-top: 6px; }
.security-report-section { margin-top: 14px; }
.security-report-limits { background: #fafbfc; }
.security-acknowledgement { display: flex; align-items: flex-start; gap: 10px; margin-top: 14px; padding: 12px 14px; border: 1px solid #b9d8cb; border-radius: 7px; background: #eef8f3; color: #185c43; font-size: .76rem; line-height: 1.45; }
.security-acknowledgement i { margin-top: 1px; }
.security-report-dialog .message { margin: 14px 0 0; }
.security-report-actions { position: sticky; bottom: -26px; margin: 18px -26px -26px; padding: 15px 26px; border-top: 1px solid var(--cfo-line); background: rgba(255, 255, 255, .98); }

@media (max-width: 780px) {
    .viewer-stats { margin-bottom: 1.5rem !important; }
    .viewer-chart-card { height: 330px; padding: 14px !important; }
    .dialog-actions { flex-direction: column-reverse; }
    .dialog-actions .btn { width: 100%; }
    .security-report-dialog { width: calc(100% - 16px); max-height: 96vh; }
    .security-report-dialog > article { max-height: 96vh; padding: 18px; }
    .security-controls-grid { grid-template-columns: 1fr; }
    .security-report-heading h2 { font-size: 1.2rem; }
    .security-report-actions { bottom: -18px; margin: 16px -18px -18px; padding: 12px 18px; }
}

@media print {
    body:has(#security-report-dialog[open]) > :not(#security-report-dialog) { display: none !important; }
    #security-report-dialog[open] { position: static; display: block; width: 100%; max-height: none; overflow: visible; border: 0; box-shadow: none; }
    #security-report-dialog[open] > article { max-height: none; overflow: visible; padding: 0; }
    #security-report-dialog[open] .dialog-close,
    #security-report-dialog[open] .security-report-actions,
    #security-report-dialog[open] .message { display: none !important; }
    #security-report-dialog[open] .security-controls-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #security-report-dialog[open] .security-control-card,
    #security-report-dialog[open] .security-report-section { break-inside: avoid; }

    body.cfo-executive-report #app-sidebar,
    body.cfo-executive-report #sidebar-toggle,
    body.cfo-executive-report #sidebar-backdrop,
    body.cfo-executive-report #login-panel,
    body.cfo-executive-report #viewer-install-app,
    body.cfo-executive-report #viewer-panel > #message {
        display: none !important;
    }

    body.cfo-executive-report .app-wrapper {
        display: block !important;
    }

    body.cfo-executive-report #app-main {
        width: 100% !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: visible !important;
    }

    body.cfo-executive-report #viewer-panel {
        display: block !important;
    }

    body.cfo-executive-report #viewer-panel > .app-view:not(.cfo-print-root):not(.cfo-print-root-ancestor) {
        display: none !important;
    }

    body.cfo-executive-report #viewer-panel > .app-view.cfo-print-root,
    body.cfo-executive-report #viewer-panel > .app-view.cfo-print-root-ancestor {
        display: block !important;
    }

    body.cfo-executive-report #analysis-view.cfo-print-root-ancestor > :not(.cfo-print-root) {
        display: none !important;
    }

    body.cfo-executive-report #analysis-mirror.cfo-print-root {
        display: block !important;
        width: 100% !important;
        overflow: visible !important;
    }
}

.viewer-readonly-mirror {
    display: block;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    overflow: clip;
}
.viewer-mirror-suppressed { display: none !important; }

.viewer-pull-refresh {
    --viewer-pull-progress: 0;
    position: fixed;
    top: max(10px, env(safe-area-inset-top));
    left: 50%;
    z-index: 2200;
    min-height: 38px;
    padding: 9px 15px;
    border: 1px solid rgba(13, 110, 253, .28);
    border-radius: 999px;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 8px 24px rgba(15, 23, 42, .18);
    color: #174a7c;
    font-size: .82rem;
    font-weight: 700;
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, calc(-54px + (48px * var(--viewer-pull-progress))));
    transition: opacity .12s ease, transform .12s ease;
}
.viewer-pull-refresh.is-visible { opacity: 1; }
.viewer-pull-refresh.is-ready,
.viewer-pull-refresh.is-refreshing {
    border-color: rgba(13, 110, 253, .52);
    color: #073b75;
    transform: translate(-50%, 0);
}
.viewer-pull-refresh.is-refreshing::before {
    display: inline-block;
    width: .8rem;
    height: .8rem;
    margin-right: .5rem;
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    content: '';
    animation: viewer-pull-refresh-spin .7s linear infinite;
}
@keyframes viewer-pull-refresh-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
    .viewer-pull-refresh { transition: none; }
    .viewer-pull-refresh.is-refreshing::before { animation: none; border-right-color: currentColor; }
}

.app-view .table-responsive {
    max-width: 100%;
    -webkit-overflow-scrolling: touch;
}

/* On a zoomed phone, a table at its horizontal edge must hand the gesture
   to the visual viewport so the rest of the report remains reachable. */
@media (pointer: coarse) {
    .app-view :is(.table-responsive, .cfo-sticky-table, .pluri-matrix-scroll,
        .annual-progression-scroll, .gesteco-year-table, .gesteco-year-scroll,
        .ce-table, .finance-preview-table-wrap, .financial-preview-wrap) {
        overscroll-behavior-inline: auto !important;
    }
}

@media (max-width: 520px) {
    .login-panel { padding: 24px 20px; }
}

.viewer-dto-table {
    min-width: 980px;
    font-variant-numeric: tabular-nums;
}

.viewer-dto-table th:first-child,
.viewer-dto-table td:first-child {
    position: sticky;
    left: 0;
    z-index: 1;
    min-width: 260px;
    text-align: left;
    background: #fff;
}

.viewer-dto-table .dto-row.group > * {
    background: #eef5ff;
    color: #122044;
    font-weight: 800;
}

.viewer-dto-table .dto-row.group.revenue > *,
.viewer-dto-table .dto-row.group.entry > * {
    background: #ecfdf3;
    color: #087a4b;
}

.viewer-dto-table .dto-row.group.expense > *,
.viewer-dto-table .dto-row.group.cost > * {
    background: #fff7ed;
    color: #b54708;
}

.viewer-dto-table .dto-row.detail th {
    padding-left: 1.5rem;
    font-weight: 500;
}

.viewer-dto-table td span,
.viewer-dto-table td b {
    display: block;
    white-space: nowrap;
}

.viewer-dto-table td b { color: #16479a; }

@media (max-width: 780px) {
    .viewer-dto-table { min-width: 820px; }
    .viewer-dto-table th:first-child,
    .viewer-dto-table td:first-child { min-width: 210px; }
    .viewer-feedback .btn { min-width: 52px; }
    .configuration-card { padding: 16px !important; }
    .configuration-table { min-width: 680px; }
}
.configuration-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;margin-bottom:2rem}.configuration-card-wide{grid-column:1/-1}.configuration-card h2{color:var(--cfo-ink,#172033)}.configuration-table{font-size:.86rem;margin-bottom:0}.configuration-table th{white-space:nowrap;background:#f7f9fc;color:#344054}.configuration-table td{max-width:28rem;overflow-wrap:anywhere}.configuration-links{display:flex;flex-wrap:wrap;gap:.35rem;min-width:12rem}.configuration-endpoint{display:inline-flex;align-items:center;padding:.24rem .5rem;border:1px solid #c9d8f2;border-radius:.45rem;background:#f5f8ff;color:#1f4f9f;text-decoration:none;font-weight:600;white-space:nowrap}.configuration-endpoint:hover{background:#e8f0ff;text-decoration:none}.configuration-empty{color:#667085;text-align:center;padding:1.5rem!important}.access-module-badge{display:inline-block;margin:.1rem .2rem .1rem 0;padding:.18rem .45rem;border-radius:999px;background:#e8f0ff;color:#1f4f9f;font-size:.76rem;font-weight:600}@media(max-width:900px){.configuration-grid{grid-template-columns:1fr}.configuration-card-wide{grid-column:auto}}
.viewer-intelligence { border-left: 4px solid #6f42c1 !important; background: linear-gradient(145deg, #f8f5ff, #fff); }
.viewer-intelligence-summary { font-size: 1.02rem; color: #243047; }
.viewer-intelligence h6 { color: #5b36a8; margin-top: 1rem; }
.viewer-intelligence ul { margin-bottom: .75rem; }
.viewer-evidence summary { cursor: pointer; color: #5b36a8; font-weight: 600; }
.viewer-evidence-list { display: grid; gap: .5rem; margin: .75rem 0 0; padding: 0; list-style: none; }
.viewer-evidence-list li { border: 1px solid #e8e2f5; border-radius: .65rem; padding: .6rem .75rem; background: #fff; overflow-wrap: anywhere; }
.viewer-feedback { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; }
.table-theme-dialog{width:min(1180px,calc(100vw - 32px));max-width:1180px}.table-theme-dialog>section{padding:24px}.viewer-theme-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;max-height:min(62vh,680px);overflow:auto;padding:4px}.viewer-theme-option{position:relative;display:grid;align-content:start;min-height:255px;padding:15px;border:1px solid #dfe7f2;border-radius:10px;background:#fff;cursor:pointer;transition:.15s ease}.viewer-theme-option:hover{border-color:#9bb8e5;box-shadow:0 8px 22px rgba(18,32,68,.09);transform:translateY(-1px)}.viewer-theme-option:has(input:checked){border:2px solid #2459ad;padding:14px;box-shadow:0 0 0 3px rgba(36,89,173,.1)}.viewer-theme-option input{position:absolute;top:14px;right:14px;width:17px;height:17px;accent-color:#2459ad}.viewer-theme-option>i{display:grid;width:34px;height:34px;margin-bottom:10px;place-items:center;border-radius:9px;color:#16479a;background:#edf4ff}.viewer-theme-option>strong{padding-right:22px;color:#122044;font-size:.84rem}.viewer-theme-option>small{min-height:3.8em;margin-top:5px;color:#667085;font-size:.69rem;line-height:1.4}.viewer-theme-family{align-self:end;margin-top:9px;color:#2459ad;font-size:.62rem;font-weight:900;text-transform:uppercase}.viewer-theme-preview{display:block;margin-top:11px;padding:7px;color:var(--cfo-t-text);background:var(--cfo-t-bg);border:1px solid var(--cfo-t-border);border-radius:var(--cfo-t-radius);box-shadow:var(--cfo-t-shadow);font-family:var(--cfo-t-font-family);font-variant-numeric:tabular-nums;overflow:hidden}.viewer-theme-preview-table{display:grid;gap:2px}.viewer-theme-preview-row{display:grid;grid-template-columns:minmax(0,1.25fr) repeat(2,minmax(0,.78fr));background:var(--cfo-t-surface);border-bottom:1px solid var(--cfo-t-grid)}.viewer-theme-preview-cell{min-width:0;padding:4px 5px;color:var(--cfo-t-text);font-size:.54rem;line-height:1.2;text-align:right;white-space:nowrap}.viewer-theme-preview-cell:first-child{text-align:left;overflow:hidden;text-overflow:ellipsis}.preview-row-0{background:var(--cfo-t-header);border-color:var(--cfo-t-border)}.preview-row-0 .viewer-theme-preview-cell{color:var(--cfo-t-header-text);font-size:.49rem;font-weight:850;letter-spacing:.02em;text-transform:uppercase}.preview-row-1 .preview-column-0{color:var(--cfo-t-entry);font-weight:800}.preview-row-2 .preview-column-0{color:var(--cfo-t-expense);font-weight:800}.preview-row-3{background:var(--cfo-t-balance-soft);border-top:2px solid var(--cfo-t-balance);border-bottom:0}.preview-row-3 .viewer-theme-preview-cell{color:var(--cfo-t-balance);font-weight:850}.viewer-theme-preview[data-theme="boardroom_bands"] .viewer-theme-preview-table,.viewer-theme-preview[data-theme="modular_cards"] .viewer-theme-preview-table{gap:5px}.viewer-theme-preview[data-theme="boardroom_bands"] .viewer-theme-preview-row,.viewer-theme-preview[data-theme="modular_cards"] .viewer-theme-preview-row{border:1px solid var(--cfo-t-grid);border-radius:5px;box-shadow:var(--cfo-t-shadow)}.viewer-theme-preview[data-theme="bilancio_editoriale"] .preview-row-3,.viewer-theme-preview[data-theme="minimal_finance"] .preview-row-3{border-top:3px double var(--cfo-t-text)}.viewer-theme-preview[data-theme="variance_heatmap"] :is(.preview-row-1,.preview-row-2) :is(.preview-column-1,.preview-column-2){margin:2px;border-radius:999px;font-weight:800}.viewer-theme-preview[data-theme="variance_heatmap"] .preview-row-1 :is(.preview-column-1,.preview-column-2){color:var(--cfo-t-good);background:var(--cfo-t-entry-soft)}.viewer-theme-preview[data-theme="variance_heatmap"] .preview-row-2 :is(.preview-column-1,.preview-column-2){color:var(--cfo-t-bad);background:var(--cfo-t-expense-soft)}.viewer-theme-preview[data-theme="audit_compact"]{padding:4px}.viewer-theme-preview[data-theme="audit_compact"] .viewer-theme-preview-table{gap:0}.viewer-theme-preview[data-theme="audit_compact"] .viewer-theme-preview-cell{padding:2px 4px;font-size:.49rem}.viewer-theme-preview[data-theme="orizzonte_pluriennale"] .preview-column-1,.viewer-theme-preview[data-theme="focus_colonne"] .preview-column-2{background:var(--cfo-t-balance-soft);box-shadow:inset 1px 0 var(--cfo-t-border),inset -1px 0 var(--cfo-t-border)}.viewer-theme-preview[data-theme="minimal_finance"]{border-inline:0}.viewer-theme-preview[data-theme="minimal_finance"] .viewer-theme-preview-row{background:transparent}.viewer-theme-preview[data-theme="control_room"] .viewer-theme-preview-row{background:var(--cfo-t-surface-alt)}.table-theme-actions{margin-top:20px;flex-wrap:wrap}@media(max-width:1100px){.viewer-theme-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:680px){.table-theme-dialog>section{padding:16px}.viewer-theme-grid{grid-template-columns:1fr;max-height:56vh}.viewer-theme-option{min-height:235px}.viewer-theme-option>small{min-height:0}.viewer-theme-preview-cell{font-size:.62rem}.table-theme-actions .btn{width:100%;margin:0!important}}

.settings-dialog {
    width: min(620px, calc(100% - 32px));
}

.settings-dialog > section {
    padding: 26px;
}

.settings-dialog > section > p {
    margin-top: 12px;
    line-height: 1.5;
}

.settings-section-list {
    display: grid;
    gap: 12px;
    margin-top: 22px;
}

.settings-section-card {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr) auto;
    align-items: center;
    gap: 14px;
    width: 100%;
    min-height: 86px;
    padding: 15px 18px;
    border: 1px solid #5966ff;
    border-radius: 9px;
    background: #fff;
    color: #5960ef;
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.settings-section-card:hover,
.settings-section-card:focus-visible {
    border-color: #3446df;
    box-shadow: 0 8px 22px rgba(72, 83, 230, .13);
    outline: 0;
    transform: translateY(-1px);
}

.settings-section-card > i:first-child {
    display: grid;
    width: 42px;
    height: 42px;
    place-items: center;
    border-radius: 50%;
    background: #f1f2ff;
    font-size: 1.22rem;
}

.settings-section-card span,
.settings-section-card strong,
.settings-section-card small {
    display: block;
}

.settings-section-card strong {
    color: #5259e8;
    font-size: 1rem;
    font-weight: 700;
}

.settings-section-card small {
    margin-top: 4px;
    color: #667085;
    font-size: .72rem;
    line-height: 1.45;
}

.settings-section-arrow {
    color: #8d95b2;
    font-size: .9rem;
}

@media (max-width: 560px) {
    .settings-dialog {
        width: calc(100% - 16px);
    }

    .settings-dialog > section {
        padding: 18px;
    }

    .settings-section-card {
        grid-template-columns: 36px minmax(0, 1fr);
        min-height: 78px;
        padding: 13px;
    }

    .settings-section-card > i:first-child {
        width: 36px;
        height: 36px;
    }

    .settings-section-arrow {
        display: none;
    }
}

/* Selettore cliente Viewer: evita il picker nativo a tutto schermo su touch. */
.cfo-tree-panel .sidebar-client-selector.is-enhanced {
    position: relative;
    display: block;
    width: 100%;
    min-width: 0;
    padding: 0;
    border: 0;
    background: transparent;
    overflow: visible;
}

.cfo-tree-panel .sidebar-client-selector.is-enhanced > .sidebar-context-select {
    position: absolute;
    width: 1px;
    height: 1px;
    min-height: 0;
    margin: -1px;
    padding: 0;
    border: 0;
    clip-path: inset(50%);
    overflow: hidden;
    white-space: nowrap;
}

.cfo-tree-panel .sidebar-client-trigger {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    width: 100%;
    min-height: 44px;
    padding: 6px 9px;
    border: 1px solid var(--cfo-sidebar-glass-line);
    border-radius: 9px;
    background: var(--cfo-sidebar-glass-strong);
    color: var(--cfo-sidebar-text);
    font: inherit;
    text-align: left;
    cursor: pointer;
    appearance: none;
}

.cfo-tree-panel .sidebar-client-trigger[hidden],
.cfo-tree-panel .sidebar-client-menu[hidden] {
    display: none;
}

.cfo-tree-panel .sidebar-client-trigger:hover,
.cfo-tree-panel .sidebar-client-trigger:focus-visible,
.cfo-tree-panel .sidebar-client-selector.is-open .sidebar-client-trigger {
    border-color: var(--cfo-sidebar-active);
    outline: 0;
    box-shadow: 0 0 0 3px rgba(211, 169, 75, .22);
}

.cfo-tree-panel .sidebar-client-trigger:disabled {
    cursor: default;
}

.cfo-tree-panel .sidebar-client-trigger[aria-busy="true"] {
    opacity: .72;
    pointer-events: none;
}

.cfo-tree-panel .sidebar-client-trigger .bi-chevron-down {
    font-size: .72rem;
    transition: transform 160ms ease;
}

.cfo-tree-panel .sidebar-client-selector.is-open .sidebar-client-trigger .bi-chevron-down {
    transform: rotate(180deg);
}

.cfo-tree-panel .sidebar-client-logo,
.cfo-tree-panel .sidebar-client-avatar,
.cfo-tree-panel .sidebar-client-option-logo {
    width: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    min-height: 28px !important;
    max-width: 28px !important;
    max-height: 28px !important;
    border: 1px solid var(--cfo-sidebar-line);
    border-radius: 8px;
    object-fit: contain;
    background: #fff;
}

.cfo-tree-panel .sidebar-client-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--cfo-sidebar-active);
    color: var(--cfo-sidebar-active-ink);
    font-size: .72rem;
    font-weight: 800;
}

.cfo-tree-panel .sidebar-client-name,
.cfo-tree-panel .sidebar-client-option-name {
    min-width: 0;
    color: inherit;
    font-size: .78rem;
    font-weight: 800;
    line-height: 1.2;
}

.cfo-tree-panel .sidebar-client-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cfo-tree-panel .sidebar-client-menu {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 1100;
    width: 100%;
    min-width: 0;
    max-height: min(320px, calc(100vh - 40px));
    padding: 6px;
    border: 1px solid var(--cfo-sidebar-line);
    border-radius: 10px;
    background: var(--cfo-sidebar-bg-deep);
    box-shadow: 0 16px 36px rgba(5, 43, 42, .34);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.cfo-tree-panel .sidebar-client-option {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr) 16px;
    align-items: center;
    gap: 8px;
    width: 100%;
    min-height: 44px;
    padding: 6px 7px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: var(--cfo-sidebar-text);
    font: inherit;
    text-align: left;
    cursor: pointer;
    appearance: none;
}

.cfo-tree-panel .sidebar-client-option:hover,
.cfo-tree-panel .sidebar-client-option:focus-visible {
    background: var(--cfo-sidebar-hover);
    color: var(--cfo-sidebar-text);
    outline: 0;
}

.cfo-tree-panel .sidebar-client-option[aria-selected="true"] {
    background: var(--cfo-sidebar-active);
    color: var(--cfo-sidebar-active-ink);
}

.cfo-tree-panel .sidebar-client-option-check {
    visibility: hidden;
}

.cfo-tree-panel .sidebar-client-option[aria-selected="true"] .sidebar-client-option-check {
    visibility: visible;
}
/* Viewer mobile shell: keep the menu control in its own compositor layer while long reports scroll. */
@media (max-width: 640px) {
    body:not(.viewer-mobile-navigation) :is(#crm-direzione-view, #crm-agente-view) > .page-title-card {
        margin-top: 3rem !important;
    }
}
body.cfo-ui-touch .sidebar-toggle-btn {
    position: fixed !important;
    z-index: 2147483000;
    isolation: isolate;
    backface-visibility: hidden;
    transform: translate3d(0, 0, 0);
    will-change: left, transform;
    touch-action: manipulation;
}

.viewer-update-notice {
    box-sizing: border-box;
    width: min(28rem, calc(100% - 2rem));
    max-width: none;
    max-height: calc(100% - 2rem);
    margin: auto;
    padding: 1.5rem;
    border: 1px solid #8caac9;
    border-radius: 1rem;
    background: #fff;
    color: #17324f;
    box-shadow: 0 1rem 3rem rgb(8 29 51 / 25%);
    font: 400 1rem/1.5 system-ui, sans-serif;
    text-align: center;
}
.viewer-update-notice::backdrop { background: rgb(8 29 51 / 72%); }
.viewer-update-notice h2 { margin: 0 0 .75rem; font: 700 1.5rem/1.2 system-ui, sans-serif; }
.viewer-update-notice p { margin: 0 0 1.5rem; }
.viewer-update-action {
    min-height: 3rem;
    min-width: 10rem;
    padding: .65rem 1.25rem;
    border: 0;
    border-radius: .6rem;
    background: #174d85;
    color: #fff;
    font: 700 1rem/1.3 system-ui, sans-serif;
    cursor: pointer;
}
.viewer-update-action:disabled { opacity: .65; cursor: wait; }
.viewer-update-notice button:focus-visible { outline: 3px solid #f2aa3b; outline-offset: 2px; }

