.cursor-pointer {
      cursor: pointer;
}

/* ============================================================
   Ricerca globale topbar (gc-search)
   ============================================================ */
#gc-search-wrap {
    width: 640px;
    max-width: 100%;
}
#gc-search-wrap .topbar-search {
    width: 640px;
    max-width: 100%;
    padding-right: 2.25rem;
}
.gc-search-panel {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 1080;
    width: 640px;
    max-width: calc(100vw - 32px);
    background: var(--bs-body-bg, #fff);
    border: 1px solid var(--bs-border-color, #e5e7eb);
    border-radius: .6rem;
    box-shadow: 0 14px 36px rgba(15, 23, 42, .14);
    max-height: 75vh;
    overflow-y: auto;
    padding: .35rem 0;
}
.gc-search-panel .gc-search-group-label {
    font-size: .7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--bs-secondary-color, #6b7280);
    padding: .55rem .95rem .3rem;
    display: flex;
    align-items: center;
    gap: .4rem;
    border-top: 1px solid var(--bs-border-color, #f1f3f5);
}
.gc-search-panel .gc-search-group-label:first-child {
    border-top: 0;
}
.gc-search-panel .gc-search-item {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: start;
    gap: .25rem 1rem;
    padding: .55rem .95rem;
    color: var(--bs-body-color, #111);
    text-decoration: none;
    cursor: pointer;
    line-height: 1.25;
}
.gc-search-panel .gc-search-item:hover {
    background: var(--app-surface-sunken);
}
.gc-search-panel .gc-search-item.is-active {
    background: var(--app-accent-subtle);
}
.gc-search-panel .gc-search-main {
    min-width: 0;
}
.gc-search-panel .gc-search-title {
    font-weight: 500;
    font-size: .9375rem;
    color: var(--bs-body-color, #111827);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.gc-search-panel .gc-search-sub {
    font-size: .8125rem;
    color: var(--bs-secondary-color, #6b7280);
    margin-top: .1rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.gc-search-panel .gc-search-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .15rem;
    white-space: nowrap;
    padding-top: 1px;
}
.gc-search-panel .gc-search-chip {
    font-size: .72rem;
    font-weight: 600;
    line-height: 1;
    padding: .25rem .5rem;
    border-radius: 999px;
    letter-spacing: .01em;
    background: var(--bs-secondary-bg, #eef0f3);
    color: var(--bs-secondary-color, #4b5563);
    border: 1px solid transparent;
}
.gc-search-panel .gc-chip-primary {
    background: var(--app-accent-subtle);
    color: var(--app-accent-text);
}
.gc-search-panel .gc-chip-mono {
    background: transparent;
    color: var(--bs-body-color, #111827);
    border-color: var(--bs-border-color, #e5e7eb);
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum";
    font-weight: 600;
}
.gc-search-panel .gc-chip-neutral {
    background: var(--bs-tertiary-bg, #f3f4f6);
    color: var(--bs-secondary-color, #6b7280);
}
.gc-search-panel .gc-search-meta-sub {
    font-size: .75rem;
    color: var(--bs-secondary-color, #6b7280);
    font-variant-numeric: tabular-nums;
}
.gc-search-panel .gc-search-empty,
.gc-search-panel .gc-search-loading {
    padding: .95rem;
    text-align: center;
    color: var(--bs-secondary-color, #6b7280);
    font-size: .9rem;
}
.gc-search-panel mark {
    background: var(--app-accent-subtle);
    color: var(--app-accent-text);
    padding: 0 .1rem;
    border-radius: .15rem;
    font-weight: 600;
}

/* =========================================================
   Gestione Credito — stili modulo (portati da iliopesca)
   ========================================================= */

/* Cifre tabellari: niente shift orizzontale su colonne valuta/numeriche */
.tabular-nums,
table.gc-tabular td.text-end,
table.gc-tabular th.text-end,
table.gc-tabular .fw-bold,
table.gc-tabular .fw-semibold.text-end {
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum";
}

/* Off-canvas dettaglio entità */
.gc-offcanvas-md { width: 600px; max-width: 100%; }

/* Timeline esposizione cliente: riempie la card e scrolla internamente */
.card-body:has(> .gc-timeline-scroll) { display: flex; flex-direction: column; min-height: 0; }
.gc-timeline-scroll { flex: 1 1 0; min-height: 0; overflow-y: auto; }

/* Iconcina info (componente gc/metric-info) */
.gc-info { display: inline-flex; align-items: center; cursor: help; opacity: .55; vertical-align: -.1em; }
.gc-info > svg, .gc-info > i { width: .9em; height: .9em; }
.gc-info:hover, .gc-info:focus-visible { opacity: .9; }

/* Righe e card cliccabili: si comportano come link (JS delegato in gc-helpers.js) */
.gc-tabular tbody tr[data-href],
tr[data-href] { cursor: pointer; transition: background-color .12s ease; }
.gc-tabular tbody tr[data-href]:hover,
tr[data-href]:hover { background-color: var(--bs-primary-bg-subtle, #e8ecfb) !important; }
.gc-tabular tbody tr[data-href]:focus-visible,
tr[data-href]:focus-visible { outline: 2px solid var(--app-accent); outline-offset: -2px; }
/* Chevron affordance a destra */
tr[data-href] td:last-child { position: relative; padding-right: 1.75rem !important; }
tr[data-href] td:last-child::after {
    content: "\203A"; position: absolute; right: .6rem; top: 50%; transform: translateY(-50%);
    color: var(--bs-secondary-color, #98a6ad); font-size: 1.25rem; font-weight: 600; line-height: 1;
    opacity: .45; transition: opacity .12s ease, transform .12s ease, color .12s ease; pointer-events: none;
}
tr[data-href]:hover td:last-child::after { opacity: 1; color: var(--app-accent); transform: translateY(-50%) translateX(3px); }
/* Celle con bottoni azione: niente chevron (evita overlap) */
tr[data-href] td.gc-actions-cell { padding-right: .5rem !important; }
tr[data-href] td.gc-actions-cell::after { content: none; }

/* Link nelle tabelle GC e link "promosso" */
.gc-tabular tbody a[href] { text-decoration: none; }
.gc-tabular tbody a[href]:hover,
.gc-tabular tbody a[href]:focus-visible,
.gc-tabular tbody tr[data-href]:hover a[href].fw-medium,
.gc-tabular tbody tr[data-href]:hover a[href].link-reset,
a.gc-link:hover, a.gc-link:focus-visible,
.gc-tabular tbody tr[data-href]:hover a.gc-link {
    color: var(--app-accent); text-decoration: underline; text-underline-offset: 2px;
}
a.gc-link, a.gc-link:visited { color: inherit; text-decoration: none; }

/* Card cliccabile (griglia clienti) */
.card[data-href] { cursor: pointer; transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
.card[data-href]:hover { border-color: var(--app-accent); box-shadow: var(--app-shadow-hover); }
.card[data-href]:focus-visible { outline: 2px solid var(--app-accent); outline-offset: 2px; }

/* Leggibilità (DESIGN.md §3 — Regola del Corpo Minimo Leggibile): il tema rende
   fs-xxs/fs-xs ~10px. Floor GLOBALE a ≥13px + sizing delle tabelle dato, così ogni
   pagina (moduli, tools, ui-kit) rispetta il minimo senza wrapper dedicati. */
.fs-xxs { font-size: .8125rem !important; }
.fs-xs  { font-size: .8125rem !important; }
table.gc-tabular { font-size: .9375rem; }
table.gc-tabular thead th { font-size: .8125rem; }
/* Affinamenti specifici delle pagine Gestione Credito */
.gc-scope .fs-sm  { font-size: .875rem  !important; }
.gc-scope .fs-md  { font-size: 1rem     !important; }
.gc-scope .small, .gc-scope small { font-size: .8125rem !important; }
.gc-scope .small .small, .gc-scope small small { font-size: 1em !important; }
/* ============================================================
   Chip / badge — più respiro e un filo più grandi, icona inclusa.
   Globale (vedi DESIGN.md §5). La spaziatura icona↔testo la dà `gap`,
   non i margini: così le icone interne restano centrate e ariose.
   ============================================================ */
.badge {
    display: inline-flex;
    align-items: center;
    gap: .4em;
    padding: .42em .72em;
    font-size: .8125rem;
    font-weight: 500;
    line-height: 1.1;
    vertical-align: middle;
}
.badge > svg,
.badge > i[data-lucide] {
    width: 1.05em;
    height: 1.05em;
    margin: 0;              /* spaziatura via gap, non via me-1 */
    flex: 0 0 auto;
}

/* ============================================================
   UI Kit / style-guide — helper condivisi (pagine /ui-kit/*)
   ============================================================ */
.uikit-eyebrow { font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: var(--app-ink-muted); }
.uikit-section { margin-bottom: 2.5rem; }
.uikit-section > h4 { font-weight: 600; letter-spacing: -.005em; margin-bottom: .25rem; }
.uikit-lead { color: var(--app-ink-muted); font-size: .9rem; margin-bottom: 1rem; max-width: 72ch; }
.uikit-demo { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.uikit-swatch-label { font-size: .72rem; color: var(--app-ink-muted); font-family: ui-monospace, SFMono-Regular, monospace; }
/* ── Analisi · markdown viewer ────────────────────────────────────────── */
.md-body { color: var(--app-ink); line-height: 1.62; }
.md-body > :first-child { margin-top: 0; }
.md-body h1, .md-body h2, .md-body h3, .md-body h4 {
    font-weight: 700; line-height: 1.25; margin: 1.6em 0 .6em; letter-spacing: -.01em;
}
.md-body h1 { font-size: 1.55rem; }
.md-body h2 { font-size: 1.25rem; padding-bottom: .3em; border-bottom: 1px solid var(--app-border); }
.md-body h3 { font-size: 1.08rem; }
.md-body h4 { font-size: 1rem; }
.md-body p, .md-body ul, .md-body ol { margin: 0 0 1em; }
.md-body ul, .md-body ol { padding-left: 1.4em; }
.md-body li { margin-bottom: .25em; }
.md-body a { color: var(--app-accent); text-underline-offset: 2px; }
.md-body strong { font-weight: 600; }
.md-body code {
    font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace; font-size: .85em;
    background: var(--app-surface-sunken); border: 1px solid var(--app-border);
    padding: .12em .4em; border-radius: var(--app-radius-sm);
}
.md-body pre {
    background: var(--app-surface-sunken); border: 1px solid var(--app-border);
    border-radius: var(--app-radius); padding: 1em; overflow: auto; margin: 0 0 1.2em;
}
.md-body pre code { background: none; border: 0; padding: 0; font-size: .85em; }
.md-body blockquote {
    margin: 0 0 1em; padding: .2em 1em; border-left: 3px solid var(--app-border);
    color: var(--app-ink-muted);
}
.md-body table {
    width: 100%; border-collapse: collapse; margin: 0 0 1.2em;
    font-size: .9rem; font-variant-numeric: tabular-nums;
}
.md-body th, .md-body td {
    border: 1px solid var(--app-border); padding: .45em .7em; text-align: left; vertical-align: top;
}
.md-body thead th {
    background: var(--app-surface-sunken); font-weight: 600;
    text-transform: uppercase; font-size: .72rem; letter-spacing: .02em; color: var(--app-ink-muted);
}
.md-body tbody tr:hover { background: var(--app-surface-sunken); }
.md-body hr { border: 0; border-top: 1px solid var(--app-border); margin: 1.6em 0; }
.md-body img { max-width: 100%; }
.analisi-doc.active i { color: var(--app-on-accent); }

/* ── Respiro verticale del contenuto ──────────────────────────────────────
   Il template lascia .content-page con padding-top:0 sotto la topbar sticky,
   così il primo elemento (es. titolo pagina) risulta incollato all'header.
   Diamo a OGNI pagina un respiro sopra (sotto la topbar) e sotto (prima del footer). */
.content-page > .container-fluid {
    padding-top: var(--app-space-5);    /* 1.5rem sotto la topbar */
    padding-bottom: var(--app-space-6); /* 2rem prima del footer */
}
