/* =========================================================
   Prospects — design tokens e componenti condivisi
   ========================================================= */

:root {
  --color-bg: #F6F5F2;
  --color-surface: #FFFFFF;
  --color-border: #E3E1DB;
  --color-border-strong: #D3D0C8;
  --color-ink: #14181C;
  --color-ink-muted: #5B6570;
  --color-ink-faint: #8A8F98;

  --color-primary: #1F5B52;
  --color-primary-hover: #163F39;
  --color-primary-tint: #E4EEEC;

  --color-danger: #B3261E;
  --color-danger-tint: #FBEAE9;
  --color-warning: #A15C00;
  --color-warning-tint: #FBF0DF;

  --status-da-contattare: #A16207;
  --status-da-contattare-tint: #FEF9C3;
  --status-attesa-primo-contatto: #7C3AED;
  --status-attesa-primo-contatto-tint: #EDE9FE;
  --status-contattato: #0284C7;
  --status-contattato-tint: #E0F2FE;
  --status-in-attesa: #2563EB;
  --status-in-attesa-tint: #DBEAFE;
  --status-da-ricontattare: #1E3A8A;
  --status-da-ricontattare-tint: #BFDBFE;
  --status-confermato: #15803D;
  --status-confermato-tint: #DCFCE7;
  --status-perso: #C2410C;
  --status-perso-tint: #FFEDD5;
  --status-chiuso: #B91C1C;
  --status-chiuso-tint: #FEE2E2;

  --font-display: 'Fraunces', Georgia, serif;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  --radius-sm: 6px;
  --radius: 10px;
  --radius-lg: 14px;
  --shadow-card: 0 1px 2px rgba(20,24,28,0.06), 0 1px 1px rgba(20,24,28,0.04);
  --shadow-modal: 0 20px 50px rgba(20,24,28,0.25);
}

@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-ink);
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--color-primary); }
a:hover { color: var(--color-primary-hover); }

h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 600;
  line-height: 1.2;
  margin: 0 0 0.4em 0;
  color: var(--color-ink);
}
h1 { font-size: 1.9rem; }
h2 { font-size: 1.3rem; margin-top: 1.6em; }
h3 { font-size: 1.05rem; font-family: var(--font-body); font-weight: 600; }

:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

.page {
  max-width: 980px;
  margin: 0 auto;
  padding: 0 20px 60px 20px;
}
.page-wide {
  max-width: 1600px;
  width: 92%;
}

/* --- Barra superiore --- */
.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 22px 0 18px 0;
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 24px;
  flex-wrap: wrap;
  gap: 12px;
}
.topbar .brand {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 1.4rem;
  color: var(--color-ink);
  text-decoration: none;
}
.topbar-links { display: flex; align-items: center; gap: 14px; }
.back-link {
  color: var(--color-ink-muted);
  text-decoration: none;
  font-size: 0.92rem;
}
.back-link:hover { color: var(--color-ink); }

/* --- Bottoni --- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 16px;
  border-radius: var(--radius-sm);
  border: 1px solid transparent;
  font-family: var(--font-body);
  font-size: 0.92rem;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  transition: background-color 120ms ease, border-color 120ms ease, transform 60ms ease;
}
.btn:active { transform: translateY(1px); }
.btn-primary {
  background: var(--color-primary);
  color: #fff;
}
.btn-primary:hover { background: var(--color-primary-hover); color: #fff; }
.btn-secondary {
  background: var(--color-surface);
  border-color: var(--color-border-strong);
  color: var(--color-ink);
}
.btn-secondary:hover { border-color: var(--color-ink-faint); }
.btn-ghost {
  background: transparent;
  color: var(--color-ink-muted);
  padding: 9px 10px;
}
.btn-ghost:hover { color: var(--color-ink); }
.btn-danger-outline {
  background: var(--color-surface);
  border-color: var(--color-danger);
  color: var(--color-danger);
}
.btn-danger-outline:hover { background: var(--color-danger-tint); }
.btn-danger {
  background: var(--color-danger);
  color: #fff;
}
.btn-danger:hover { background: #8F1D17; color: #fff; }
.btn-sm { padding: 5px 10px; font-size: 0.8rem; }
.btn:disabled { opacity: 0.55; cursor: not-allowed; }

/* --- Card --- */
.card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card);
  padding: 22px;
}
.card + .card { margin-top: 16px; }

/* --- Barra filtri --- */
.filter-bar {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
  margin: 18px 0 20px 0;
}
.filter-bar select,
.filter-bar input[type="text"] {
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid var(--color-border-strong);
  background: var(--color-surface);
  font-family: var(--font-body);
  font-size: 0.88rem;
  color: var(--color-ink);
}
.filter-bar input[type="text"] { min-width: 200px; }

/* --- Tabella moderna, degrada a card sotto i 720px --- */
.table-wrap {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow-x: auto;
  background: var(--color-surface);
  box-shadow: var(--shadow-card);
}
table.modern {
  width: 100%;
  border-collapse: collapse;
}
table.modern thead th {
  text-align: left;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--color-ink-muted);
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-border);
  background: #FBFAF8;
  white-space: nowrap;
}
.th-sort {
  color: var(--color-ink-muted);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  cursor: pointer;
}
.th-sort:hover { color: var(--color-ink); }
.th-sort span { font-size: 0.7rem; color: var(--color-primary); }
table.modern tbody td {
  padding: 13px 16px;
  border-bottom: 1px solid var(--color-border);
  font-size: 0.92rem;
  vertical-align: middle;
  white-space: nowrap;
}
table.modern tbody tr:last-child td { border-bottom: none; }
table.modern tbody tr:hover { background: #FBFAF8; }
table.modern a { text-decoration: none; font-weight: 600; }
table.modern a:hover { text-decoration: underline; }

@media (max-width: 720px) {
  table.modern thead { display: none; }
  table.modern, table.modern tbody, table.modern tr, table.modern td { display: block; width: 100%; }
  table.modern tr {
    padding: 14px 16px;
    border-bottom: 1px solid var(--color-border);
  }
  table.modern td {
    border: none;
    padding: 4px 0;
    display: flex;
    justify-content: space-between;
    gap: 12px;
    white-space: normal;
  }
  table.modern td::before {
    content: attr(data-label);
    font-size: 0.76rem;
    color: var(--color-ink-muted);
    font-weight: 600;
  }
}

/* --- Tabelle ad altezza limitata: intestazione e prima/ultima colonna fisse ---
   Si attiva aggiungendo la classe "fissa" a .table-wrap (Dashboard, Lead in
   attesa). L'area della tabella scorre al suo interno, quindi la barra di
   scorrimento orizzontale resta sempre visibile in fondo all'area, senza
   dover scendere fino alla fine della pagina. Prima colonna (Azienda) e
   ultima (Azioni) restano ferme mentre si scorre di lato. */
.table-wrap.fissa {
  max-height: calc(100vh - 330px);
  min-height: 240px;
  overflow: auto;
}
/* con "collapse" i bordi delle celle fisse non le seguirebbero nello scroll */
.table-wrap.fissa table.modern { border-collapse: separate; border-spacing: 0; }
.table-wrap.fissa table.modern thead th { position: sticky; top: 0; z-index: 3; }
.table-wrap.fissa table.modern th:first-child,
.table-wrap.fissa table.modern td:first-child {
  position: sticky; left: 0; box-shadow: 1px 0 0 var(--color-border);
}
.table-wrap.fissa table.modern th:last-child,
.table-wrap.fissa table.modern td:last-child {
  position: sticky; right: 0; box-shadow: -1px 0 0 var(--color-border);
}
.table-wrap.fissa table.modern thead th:first-child,
.table-wrap.fissa table.modern thead th:last-child { z-index: 5; }
/* le celle fisse devono avere uno sfondo pieno, altrimenti si vede il contenuto che scorre sotto */
.table-wrap.fissa table.modern tbody td:first-child,
.table-wrap.fissa table.modern tbody td:last-child { z-index: 2; background: var(--color-surface); }
.table-wrap.fissa table.modern tbody tr:hover td:first-child,
.table-wrap.fissa table.modern tbody tr:hover td:last-child { background: #FBFAF8; }

@media (max-width: 720px) {
  /* sotto i 720px la tabella e' gia' a schede: niente altezza limitata ne' colonne fisse */
  .table-wrap.fissa { max-height: none; min-height: 0; overflow: visible; }
  .table-wrap.fissa table.modern thead th,
  .table-wrap.fissa table.modern th:first-child,
  .table-wrap.fissa table.modern td:first-child,
  .table-wrap.fissa table.modern th:last-child,
  .table-wrap.fissa table.modern td:last-child { position: static; box-shadow: none; }
  .table-wrap.fissa table.modern tbody td:first-child,
  .table-wrap.fissa table.modern tbody td:last-child,
  .table-wrap.fissa table.modern tbody tr:hover td:first-child,
  .table-wrap.fissa table.modern tbody tr:hover td:last-child { background: transparent; }
}

/* --- Barra di paginazione sotto le tabelle --- */
.paginazione {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px 16px;
  margin-top: 12px;
  font-size: 0.85rem;
  color: var(--color-ink-muted);
}
.paginazione:empty { display: none; }
.pag-controlli { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.pag-controlli label { display: inline-flex; align-items: center; gap: 6px; margin-right: 8px; }
.pag-controlli select {
  padding: 4px 8px;
  font-family: inherit;
  font-size: 0.85rem;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-ink);
}
.pag-controlli .pag-info { padding: 0 6px; color: var(--color-ink); }
.pag-controlli .btn[disabled],
.pag-controlli .btn-disabilitato { opacity: 0.45; pointer-events: none; }

/* --- Badge di stato (colore per attributo data-stato, niente mapping Java) --- */
.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 600;
  white-space: nowrap;
}
[data-stato="IN_ATTESA_PRIMO_CONTATTO"] .badge { background: var(--status-attesa-primo-contatto-tint); color: var(--status-attesa-primo-contatto); }
[data-stato="DA_CONTATTARE"] .badge { background: var(--status-da-contattare-tint); color: var(--status-da-contattare); }
[data-stato="CONTATTATO"] .badge { background: var(--status-contattato-tint); color: var(--status-contattato); }
[data-stato="IN_ATTESA_RISPOSTA"] .badge { background: var(--status-in-attesa-tint); color: var(--status-in-attesa); }
[data-stato="DA_RICONTATTARE"] .badge { background: var(--status-da-ricontattare-tint); color: var(--status-da-ricontattare); }
[data-stato="CONFERMATO"] .badge { background: var(--status-confermato-tint); color: var(--status-confermato); }
[data-stato="PERSO"] .badge { background: var(--status-perso-tint); color: var(--status-perso); }
[data-stato="CHIUSO"] .badge { background: var(--status-chiuso-tint); color: var(--status-chiuso); }

.tag-fonte {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 0.76rem;
  font-weight: 600;
  color: var(--color-ink-muted);
  background: #EFEFED;
  border: 1px solid transparent;
  white-space: nowrap;
}
.tag-fonte[data-fonte="LINKEDIN"] { background: #E7F1FB; color: #0A66C2; }
.tag-fonte[data-fonte="LEAD_GEN"] { background: #FCE7F3; color: #BE185D; }
.tag-fonte[data-fonte="ALTRO"] { background: #EFEFED; color: var(--color-ink-muted); }

/* --- Stato vuoto --- */
.empty-state {
  text-align: center;
  padding: 50px 20px;
  color: var(--color-ink-muted);
}

/* --- Form --- */
.field-row { display: flex; gap: 12px; }
.field-row .field { flex: 1; }
.field { margin-bottom: 16px; }
.field label {
  display: block;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--color-ink-muted);
  margin-bottom: 5px;
}
.field input[type="text"],
.field input[type="email"],
.field select,
.field textarea {
  width: 100%;
  padding: 10px 12px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--color-border-strong);
  background: var(--color-surface);
  font-family: var(--font-body);
  font-size: 0.92rem;
  color: var(--color-ink);
}
.field textarea { resize: vertical; min-height: 160px; }
.field textarea.textarea-nota { min-height: 80px; }
.field input:focus, .field select:focus, .field textarea:focus {
  border-color: var(--color-primary);
}

/* --- Banner di allerta (GDPR / ambiguità) --- */
.alert-banner {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 12px 14px;
  border-radius: var(--radius);
  background: var(--color-danger-tint);
  border: 1px solid rgba(179,38,30,0.25);
  color: var(--color-danger);
  font-size: 0.9rem;
  font-weight: 600;
  margin: 14px 0;
}
.info-banner {
  padding: 12px 14px;
  border-radius: var(--radius);
  background: var(--color-primary-tint);
  border: 1px solid rgba(31,91,82,0.2);
  color: var(--color-primary);
  font-size: 0.9rem;
  margin: 14px 0;
}

/* --- Liste candidati (matching aziende/contatti) --- */
.candidate-list { list-style: none; padding: 0; margin: 12px 0; display: flex; flex-direction: column; gap: 8px; }
.candidate-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  background: #FBFAF8;
}

/* --- Layout a due colonne --- */
.grid-fixed-left { display: grid; grid-template-columns: 300px 1fr; gap: 24px; align-items: start; }
.grid-lead-layout { display: grid; grid-template-columns: 420px 1fr; gap: 24px; align-items: start; }
.grid-equal { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px 24px; }
.grid-auto-3 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 16px;
  align-items: start;
}
@media (max-width: 900px) {
  .grid-lead-layout { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .grid-fixed-left, .grid-equal, .grid-3 { grid-template-columns: 1fr; }
}
.info-item strong {
  display: block;
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--color-ink-muted);
  margin-bottom: 3px;
}
.info-item a, .info-item span { font-size: 0.92rem; }

/* --- Documenti --- */
.upload-row { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.doc-list { list-style: none; padding: 0; margin: 14px 0 0 0; display: flex; flex-direction: column; gap: 8px; }
.doc-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius);
  background: #FBFAF8;
}
.doc-item a { font-weight: 600; text-decoration: none; }
.doc-item a:hover { text-decoration: underline; }
.doc-meta { font-size: 0.78rem; color: var(--color-ink-muted); margin-top: 2px; }

/* --- Storico interazioni --- */
.timeline { list-style: none; padding: 0; margin: 0; }
.timeline li {
  padding: 12px 0;
  border-bottom: 1px solid var(--color-border);
  font-size: 0.9rem;
}
.timeline li:last-child { border-bottom: none; }
.timeline .ts { color: var(--color-ink-faint); font-size: 0.8rem; display: block; margin-bottom: 2px; }
.timeline .nota-testo { white-space: pre-wrap; }

/* =========================================================
   Modale di progresso ("Analizza")
   ========================================================= */
.modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(20,24,28,0.45);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 100;
  padding: 20px;
}
.modal-overlay.visibile { display: flex; }
.modal {
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-modal);
  padding: 28px;
  width: 100%;
  max-width: 420px;
}
.modal h3 { margin-bottom: 4px; }
.modal .modal-sottotitolo {
  color: var(--color-ink-muted);
  font-size: 0.86rem;
  margin-bottom: 18px;
}

.step-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 14px; }
.step {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 0.9rem;
  color: var(--color-ink-faint);
}
.step-icon {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 2px solid var(--color-border-strong);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}
.step.attivo { color: var(--color-ink); }
.step.attivo .step-icon {
  border-color: var(--color-primary);
  border-top-color: transparent;
  animation: girare 700ms linear infinite;
}
.step.fatto { color: var(--color-ink); }
.step.fatto .step-icon {
  border-color: var(--color-primary);
  background: var(--color-primary);
}
.step.fatto .step-icon::after {
  content: "";
  width: 5px;
  height: 9px;
  border-right: 2px solid #fff;
  border-bottom: 2px solid #fff;
  transform: rotate(45deg) translate(-1px, -1px);
}
.step.errore { color: var(--color-danger); }
.step.errore .step-icon { border-color: var(--color-danger); }
.step.errore .step-icon::after { content: "!"; color: var(--color-danger); font-weight: 700; font-size: 0.8rem; }

@keyframes girare { to { transform: rotate(360deg); } }

.modal-errore-testo {
  margin-top: 16px;
  padding: 10px 12px;
  background: var(--color-danger-tint);
  color: var(--color-danger);
  border-radius: var(--radius-sm);
  font-size: 0.86rem;
}
.modal-azioni { margin-top: 20px; display: flex; justify-content: flex-end; gap: 8px; }

/* --- Import lead: campi compatti e avviso duplicati --- */
.grid-compatto { gap: 8px 12px; }
.grid-compatto .field { margin-bottom: 0; }
.grid-compatto .field label { font-size: 0.75rem; margin-bottom: 2px; }
.grid-compatto .field input[type="text"] { padding: 4px 8px; font-size: 0.85rem; }
.alert-duplicato {
  padding: 8px 12px;
  border-radius: var(--radius);
  background: var(--color-danger-tint);
  border: 1px solid rgba(179,38,30,0.25);
  color: var(--color-danger);
  font-size: 0.78rem;
  margin: 10px 0;
}
.alert-duplicato ul { margin: 4px 0 0 0; padding-left: 20px; font-weight: 400; }
.alert-duplicato li { margin: 1px 0; }

/* --- Dashboard: indicatore "quota Afterbit" --- */
.quota-card { margin: 18px 0; }
.quota-intestazione { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; flex-wrap: wrap; }
.quota-titolo { font-family: var(--font-display); font-size: 1.25rem; margin: 0; }
.quota-sotto { font-size: 0.82rem; color: var(--color-ink-muted); margin-top: 2px; }
.quota-controlli { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.quota-controlli select {
  padding: 5px 10px; border-radius: var(--radius-sm); border: 1px solid var(--color-border-strong);
  background: var(--color-surface); font-family: var(--font-body); font-size: 0.85rem; text-transform: capitalize;
}
.quota-corpo { margin-top: 16px; }
.quota-tessere { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; }
.quota-tessera { background: var(--color-bg); border: 1px solid var(--color-border); border-radius: var(--radius); padding: 12px 14px; }
.quota-tessera.quota-ok { background: var(--status-confermato-tint); border-color: transparent; }
.quota-tessera.quota-manca { background: var(--color-danger-tint); border-color: transparent; }
.quota-tessera.quota-manca .quota-tessera-valore { color: var(--color-danger); }
.quota-tessera.quota-ok .quota-tessera-valore { color: var(--status-confermato); }
.quota-tessera-etichetta { font-size: 0.75rem; font-weight: 600; color: var(--color-ink-muted); text-transform: uppercase; letter-spacing: 0.03em; }
.quota-tessera-valore { font-size: 1.35rem; font-weight: 700; margin-top: 4px; font-variant-numeric: tabular-nums; }
.quota-barra { height: 10px; border-radius: 999px; background: var(--color-border); margin-top: 14px; overflow: hidden; }
.quota-barra-riempimento { height: 100%; border-radius: 999px; transition: width 0.4s ease, background 0.4s ease; }
.quota-percentuale { margin-top: 6px; font-size: 0.8rem; color: var(--color-ink-muted); }
.quota-formula { margin-top: 8px; color: var(--color-ink-muted); }
.quota-gruppo { font-size: 0.75rem; font-weight: 700; color: var(--color-ink-faint); text-transform: uppercase; letter-spacing: 0.03em; margin: 10px 0 4px 0; }
.quota-voci-totale td { border-top: 1px solid var(--color-border); font-weight: 700; padding-top: 5px; }
.quota-nondisp { margin-top: 12px; font-size: 0.88rem; color: var(--color-warning); background: var(--color-warning-tint); padding: 10px 12px; border-radius: var(--radius-sm); }
.quota-dettaglio { margin-top: 12px; font-size: 0.85rem; }
.quota-dettaglio summary { cursor: pointer; color: var(--color-ink-muted); font-weight: 600; }
.quota-voci { margin-top: 8px; border-collapse: collapse; min-width: 280px; }
.quota-voci td { padding: 3px 18px 3px 0; }
.quota-voce-importo { text-align: right; font-variant-numeric: tabular-nums; }
.quota-nota { margin-top: 8px; color: var(--color-ink-faint); font-size: 0.78rem; }
.quota-campo { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.quota-campo label { font-size: 0.88rem; font-weight: 600; color: var(--color-ink-muted); }
.quota-campo input {
  width: 150px; padding: 6px 10px; text-align: right; border-radius: var(--radius-sm);
  border: 1px solid var(--color-border-strong); font-family: var(--font-body); font-size: 0.92rem;
}
.quota-totale-modale { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--color-border); text-align: right; font-size: 0.95rem; }

/* --- Popup andamento quota --- */
.andamento-filtri { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; margin: 6px 0 14px 0; }
.andamento-gruppo { display: flex; align-items: center; gap: 6px; }
.andamento-etichetta { font-size: 0.85rem; font-weight: 600; color: var(--color-ink-muted); }
.andamento-gruppo select {
  padding: 6px 10px; border-radius: var(--radius-sm); border: 1px solid var(--color-border-strong);
  background: var(--color-surface); font-family: var(--font-body); font-size: 0.88rem;
}
.andamento-risultato { min-height: 120px; margin-bottom: 8px; }
.andamento-vuoto { color: var(--color-ink-faint); font-size: 0.9rem; padding: 36px 0; text-align: center; }
.andamento-legenda { display: flex; gap: 22px; flex-wrap: wrap; font-size: 0.82rem; color: var(--color-ink-muted); margin-bottom: 6px; }
.andamento-legenda span { display: inline-flex; align-items: center; gap: 7px; }
.and-chiave { display: inline-block; width: 18px; height: 0; border-top: 2px solid; }
.and-chiave-utile { border-color: #1F5B52; }
.and-chiave-obiettivo { border-color: #8A8F98; border-top-style: dashed; }
.andamento-grafico { position: relative; }
.andamento-svg { width: 100%; height: auto; display: block; }
.and-griglia { stroke: var(--color-border); stroke-width: 1; }
.and-zero { stroke: var(--color-border-strong); }
.and-testo { font-family: var(--font-body); font-size: 11.5px; fill: var(--color-ink-muted); }
.and-diretta { fill: var(--color-ink); font-weight: 600; }
.and-linea-utile { fill: none; stroke: #1F5B52; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.and-linea-obiettivo { fill: none; stroke: #8A8F98; stroke-width: 2; stroke-dasharray: 6 5; }
.and-punto-utile { fill: #1F5B52; stroke: var(--color-surface); stroke-width: 2; }
.and-punto-obiettivo { fill: #8A8F98; stroke: var(--color-surface); stroke-width: 2; }
.and-cross { stroke: var(--color-ink-faint); stroke-width: 1; }
.and-hit { fill: transparent; cursor: crosshair; }
.and-tooltip {
  position: absolute; pointer-events: none; min-width: 190px; padding: 10px 12px;
  background: var(--color-surface); border: 1px solid var(--color-border-strong);
  border-radius: var(--radius); box-shadow: var(--shadow-modal); font-size: 0.82rem; z-index: 5;
}
.and-tip-titolo { font-weight: 700; text-transform: capitalize; margin-bottom: 6px; }
.and-tip-riga { display: flex; align-items: center; gap: 8px; margin: 3px 0; }
.and-tip-riga strong { font-variant-numeric: tabular-nums; min-width: 92px; }
.and-tip-riga span { color: var(--color-ink-muted); }
.and-tip-stato { margin-top: 7px; padding-top: 6px; border-top: 1px solid var(--color-border); font-weight: 600; }
.quota-ok-testo { color: var(--status-confermato); }
.quota-manca-testo { color: var(--color-danger); }
.andamento-tabella { max-height: 360px; overflow: auto; }
.andamento-tabella th.num, .andamento-tabella td.num { text-align: right; font-variant-numeric: tabular-nums; }

/* Ricerca email clienti (Contabilita') */
.email-ricerca { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 14px; }
.email-ricerca input[type="text"] { flex: 1 1 260px; min-width: 200px; padding: 8px 12px; border: 1px solid var(--color-border, #DDD6CC); border-radius: 8px; font: inherit; }
.email-password-opzione { display: inline-flex; align-items: center; gap: 6px; font-size: 0.85rem; color: var(--color-ink-muted); margin-left: 6px; }
.email-avviso { font-size: 0.85rem; color: var(--color-ink-muted); margin-top: 8px; }
.email-sezione { margin-top: 20px; }
.email-sezione-testa { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 8px; }
.email-sezione-testa h3 { margin: 0; font-size: 1rem; }
.email-conteggio { display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: 10px; background: #F1EDE6; font-size: 0.75rem; font-weight: 600; }
.email-sezione-corpo { font-size: 0.9rem; color: var(--color-ink-muted); padding: 6px 0; }
.email-errore { color: var(--color-danger); }
.email-cella-password { font-family: ui-monospace, Menlo, Consolas, monospace; }

.posta-tabella { width: 100%; border-collapse: collapse; margin-top: 12px; font-size: 0.88rem; }
.posta-tabella th { text-align: left; font-size: 0.78rem; color: var(--color-ink-muted); padding: 0 6px 4px 0; }
.posta-tabella td { padding: 3px 6px 3px 0; font-weight: 600; color: var(--color-ink-muted); }
.posta-tabella input { width: 100%; padding: 6px 8px; border-radius: var(--radius-sm); border: 1px solid var(--color-border-strong); font-family: var(--font-body); font-size: 0.88rem; box-sizing: border-box; }
.posta-tabella td:nth-child(3) input, .posta-tabella td:nth-child(4) input { width: 80px; text-align: right; }

/* Griglia a 4 colonne (card lead importati); .span-2 occupa due colonne */
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px 24px; }
.grid-4 .span-2 { grid-column: span 2; }
@media (max-width: 900px) { .grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .grid-4 { grid-template-columns: 1fr; } .grid-4 .span-2 { grid-column: auto; } }
.grid-4.grid-compatto { gap: 8px 12px; }

/* Crediti da incassare (Contabilita') */
.crediti-riepilogo { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin-top: 14px; }
.crediti-tessera { padding: 10px 14px; border: 1px solid var(--color-border); border-radius: var(--radius); background: #FBFAF8; }
.crediti-tessera-etichetta { font-size: 0.75rem; font-weight: 600; color: var(--color-ink-muted); }
.crediti-tessera-valore { font-size: 1.25rem; font-weight: 700; margin-top: 2px; font-variant-numeric: tabular-nums; }
.crediti-tessera-scaduto .crediti-tessera-valore { color: var(--color-danger); }
.crediti-filtri { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: space-between; margin: 16px 0 10px; }
.crediti-fasce { display: flex; flex-wrap: wrap; gap: 6px; }
.crediti-chip { border: 1px solid var(--color-border-strong); background: #fff; border-radius: 999px; padding: 4px 12px; font: inherit; font-size: 0.8rem; cursor: pointer; }
.crediti-chip.attivo { background: #1F5C54; border-color: #1F5C54; color: #fff; }
.crediti-filtri input[type="text"] { padding: 6px 12px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm); font: inherit; min-width: 220px; }
.crediti-tabella th.ordinabile { cursor: pointer; user-select: none; white-space: nowrap; }
.crediti-tabella td.num, .modal .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.crediti-tabella th:nth-child(3), .crediti-tabella th:nth-child(4), .crediti-tabella th:nth-child(5) { text-align: right; }
.crediti-riga { cursor: pointer; }
.crediti-nome { font-weight: 600; }
.crediti-contatto { color: var(--color-ink-muted); font-size: 0.82rem; }
.crediti-badge { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 0.78rem; font-weight: 600; white-space: nowrap; }
.crediti-badge.crediti-fascia-oltre-90 { background: #F8D7D3; color: #8C1D13; }
.crediti-badge.crediti-fascia-61-90 { background: #FBE0CC; color: #8A3B0B; }
.crediti-badge.crediti-fascia-31-60 { background: #FCEFC7; color: #7A5A00; }
.crediti-badge.crediti-fascia-0-30 { background: #E3F1EC; color: #1F5C54; }
.crediti-badge.crediti-fascia-a-credito { background: #E7E7F3; color: #3A3A7A; }

.crediti-invio { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--color-border); }
.crediti-invio-titolo { font-size: 0.9rem; font-weight: 700; margin-bottom: 8px; }
.crediti-invio-riga { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.crediti-invio-riga input[type="text"] { flex: 1 1 300px; padding: 8px 12px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm); font: inherit; }
.crediti-esito { margin-top: 8px; font-size: 0.88rem; }
.crediti-esito.ok { color: #1F5C54; font-weight: 600; }
.crediti-esito.errore { color: var(--color-danger); font-weight: 600; }

.crediti-col-spunta { width: 34px; text-align: center; }
.crediti-col-spunta input { width: 16px; height: 16px; cursor: pointer; }
.crediti-conteggio { margin-top: 8px; font-size: 0.85rem; font-weight: 600; color: var(--color-ink-muted); }

.crediti-note { width: 100%; box-sizing: border-box; margin-top: 10px; padding: 8px 10px; font: inherit; border: 1px solid #D3D0C8; border-radius: 6px; resize: vertical; min-height: 64px; }
.crediti-note-barra { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 10px; align-items: center; }
.crediti-note-barra .btn { padding: 4px 10px; min-width: 32px; }
.crediti-note-barra select { padding: 4px 6px; border: 1px solid #D3D0C8; border-radius: 6px; background: #fff; font: inherit; }
div.crediti-note { min-height: 72px; max-height: 260px; overflow-y: auto; margin-top: 6px; background: #fff; line-height: 1.5; }
div.crediti-note:empty::before { content: attr(data-placeholder); color: #8A877F; pointer-events: none; }
div.crediti-note:focus { outline: 2px solid #1F5C54; outline-offset: 0; }

/* --- Menu principale a sinistra --- */
:root { --menu-larghezza: 248px; --menu-sfondo: #163F39; }
body.con-menu { padding-left: var(--menu-larghezza); }
.sidebar {
  position: fixed; top: 0; left: 0; bottom: 0; width: var(--menu-larghezza); z-index: 60;
  display: flex; flex-direction: column; gap: 6px;
  background: var(--menu-sfondo); color: #E4EEEC; padding: 22px 14px 18px 14px; box-sizing: border-box;
  overflow-y: auto;
}
.sidebar .logo {
  display: flex; align-items: center; gap: 12px; text-decoration: none; color: #fff;
  padding: 2px 8px 6px 8px;
}
.logo-orario {
  padding: 0 8px 14px 8px; margin-bottom: 8px; border-bottom: 1px solid rgba(255, 255, 255, .16);
  font-size: .68rem; line-height: 1.3; letter-spacing: .02em; color: rgba(255, 255, 255, .62); text-transform: capitalize;
  font-variant-numeric: tabular-nums;
}
.logo-marchio { display: inline-flex; gap: 2px; padding: 3px; border: 2px solid #fff; border-radius: 3px; flex-shrink: 0; }
.logo-marchio span {
  display: inline-block; width: 15px; height: 24px; line-height: 24px; text-align: center; background: #fff; color: var(--menu-sfondo);
  font: 700 16px/24px var(--font-body);
}
.logo-testo { display: flex; flex-direction: column; line-height: 1; }
.logo-nome { font: 700 1.2rem/1.1 var(--font-body); letter-spacing: .24em; }
.logo-crm { font: 600 .78rem/1 var(--font-body); letter-spacing: .5em; margin-top: 6px; color: #9CC9C0; }
.menu-gruppo { display: flex; flex-direction: column; gap: 2px; margin-bottom: 10px; }
.menu-titolo { font-size: .7rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #8FB8AF; padding: 10px 12px 6px 12px; }
.menu-voce {
  display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-radius: var(--radius-sm);
  color: #E4EEEC; text-decoration: none; font-size: .94rem; font-weight: 500;
  transition: background-color 120ms ease;
}
.menu-voce:hover { background: rgba(255, 255, 255, .09); color: #fff; }
.menu-voce.attiva { background: #fff; color: var(--menu-sfondo); font-weight: 700; }
.menu-ico { width: 20px; text-align: center; font-size: 1.05rem; flex-shrink: 0; opacity: .9; }
.menu-esci { margin-top: auto; padding-top: 14px; }
.menu-esci .btn { width: 100%; justify-content: center; }
.menu-toggle, .menu-sfondo { display: none; }
@media (max-width: 900px) {
  body.con-menu { padding-left: 0; padding-top: 52px; }
  .sidebar { transform: translateX(-100%); transition: transform 180ms ease; box-shadow: 0 0 30px rgba(0, 0, 0, .3); }
  body.menu-aperto .sidebar { transform: none; }
  .menu-toggle {
    display: block; position: fixed; top: 8px; left: 10px; z-index: 55; width: 40px; height: 36px; font-size: 1.2rem; cursor: pointer;
    background: var(--menu-sfondo); color: #fff; border: 0; border-radius: var(--radius-sm);
  }
  body.menu-aperto .menu-sfondo { display: block; position: fixed; inset: 0; z-index: 50; background: rgba(0, 0, 0, .35); }
}
body.con-menu .page { padding-top: 28px; }

/* --- Errore di connessione al database --- */
.db-errore { background: var(--color-danger-tint); border: 1px solid var(--color-danger); border-left-width: 6px; border-radius: var(--radius-sm); padding: 14px 18px; margin: 0 0 20px 0; color: #5C130F; }
.db-errore-titolo { font-weight: 700; font-size: 1.05rem; color: var(--color-danger); margin-bottom: 4px; }
.db-errore-testo { font-size: .92rem; line-height: 1.5; }
.db-errore ul { margin: 8px 0 12px 0; padding-left: 20px; font-size: .88rem; }

/* --- Popup "Email di primo contatto": largo, a due colonne (testo | anteprima) su schermi grandi --- */
.modal.modal-email { max-width: min(1800px, 98vw); max-height: 94vh; overflow-y: auto; }
.email-editor-griglia { display: grid; grid-template-columns: 1fr; gap: 0 22px;
  grid-template-areas: "labc" "edit" "nota" "laba" "prev"; margin-bottom: 8px; }
.email-editor-griglia label { display: block; font-size: 0.85rem; font-weight: 600; color: var(--color-ink-muted); margin: 0 0 5px 0; }
.ee-lab-corpo { grid-area: labc; } .ee-editor { grid-area: edit; } .ee-nota { grid-area: nota; }
.ee-lab-anteprima { grid-area: laba; margin-top: 10px !important; } .ee-anteprima-box { grid-area: prev; }
.ee-editor textarea { display: block; width: 100%; box-sizing: border-box; height: 300px; min-height: 0; resize: vertical; border-top-left-radius: 0; border-top-right-radius: 0; font-size: 0.9rem; }
/* anteprima: stessa altezza dell'area di scrittura (barra + textarea); il contenuto scorre dentro il riquadro */
.ee-anteprima-box { position: relative; height: 300px; }
.ee-anteprima-box .email-anteprima { position: absolute; inset: 0; min-height: 0; max-height: none; box-sizing: border-box; }
@media (min-width: 1100px) {
  .email-editor-griglia { grid-template-columns: 1fr 1fr; grid-template-areas: "labc laba" "edit prev" "nota ."; }
  .ee-lab-anteprima { margin-top: 0 !important; }
  .ee-anteprima-box { height: auto; }
}
.modal-email .field { margin-bottom: 8px; }
.hint-inline { font-weight: 400; font-size: 0.75rem; color: var(--color-ink-muted); }
.email-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; padding: 6px; border: 1px solid var(--color-border-strong); border-bottom: 0; border-radius: var(--radius-sm) var(--radius-sm) 0 0; background: #F4F2EE; }
.email-toolbar .btn { min-width: 34px; justify-content: center; }
.email-toolbar-sep { width: 1px; height: 22px; background: var(--color-border-strong); margin: 0 4px; }
.email-formattazione-nota { font-size: 0.75rem; color: var(--color-ink-muted); margin: 6px 0 0 0; line-height: 1.5; }
.email-formattazione-nota code { font-size: 0.72rem; background: #F4F2EE; padding: 1px 4px; border-radius: 3px; }
.email-anteprima { font-size: 0.9rem; background: #FBFAF8; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 14px; overflow-y: auto; line-height: 1.6; }

/* Dimensione carattere e sorgente HTML nella barra di formattazione */
.email-toolbar select { width: 98px; padding: 4px 2px; border: 1px solid var(--color-border-strong); border-radius: 6px; background: #fff; font: inherit; font-size: 0.85rem; }
.email-toolbar .btn.attivo { background: #1F5C54; color: #fff; border-color: #1F5C54; }
.email-toolbar.sorgente-attivo button:not([data-azione="sorgente"]), .email-toolbar.sorgente-attivo select { opacity: .45; pointer-events: none; }
textarea.email-sorgente-html { width: 100%; box-sizing: border-box; padding: 8px 10px; border: 1px solid var(--color-border-strong); border-radius: 0 0 var(--radius-sm) var(--radius-sm); white-space: pre-wrap; resize: vertical; }
.ee-editor textarea.email-sorgente-html { height: 300px; resize: none; }
textarea[hidden] { display: none !important; }
textarea.crediti-note-sorgente { width: 100%; box-sizing: border-box; margin-top: 6px; min-height: 110px; padding: 8px 10px; border: 1px solid #D3D0C8; border-radius: 6px; font: 0.82rem ui-monospace, Consolas, monospace; background: #F8F7F4; }
.crediti-note-barra.sorgente-attivo > :not(#creditiNoteSorgenteBtn) { opacity: .45; pointer-events: none; }
.crediti-note-barra .btn.attivo { background: #1F5C54; color: #fff; border-color: #1F5C54; }

/* Pagina Modello email: editor e anteprima affiancati */
.modello-griglia { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 1200px) { .modello-griglia { grid-template-columns: 1fr 1fr; } }
.modello-griglia label { display: block; margin-bottom: 6px; font-size: 0.85rem; }
.modello-griglia .mg-editor textarea { display: block; width: 100%; box-sizing: border-box; height: 420px; resize: vertical; }
.modello-griglia textarea.email-sorgente-html { height: 420px; resize: none; }
.modello-oggetto-anteprima { font-weight: 600; font-size: 0.9rem; min-height: 1.2em; margin-bottom: 6px; }
.modello-anteprima-box { height: 420px; overflow: auto; padding: 12px 14px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm); background: #fff; box-sizing: border-box; }

/* --- Log azioni: tabella compatta e badge dell'esito --- */
table.modern.log-tab thead th { padding: 7px 12px; font-size: 0.72rem; }
table.modern.log-tab tbody td { padding: 4px 12px; font-size: 0.8rem; line-height: 1.25; }
table.modern.log-tab td.log-dettaglio { font-size: 0.78rem; color: var(--color-ink-muted); white-space: normal; }
.badge-esito { display: inline-block; min-width: 38px; text-align: center; padding: 1px 8px; border-radius: 999px; font-size: 0.74rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.badge-esito.ok { background: #E1F0EA; color: #1F5C54; }          /* 2xx */
.badge-esito.info { background: #E6EDF7; color: #1A4FA0; }        /* 1xx / 3xx */
.badge-esito.avviso { background: #FBEBD0; color: #9A5B00; }      /* 4xx */
.badge-esito.errore { background: #F8DEDB; color: #B3261E; }      /* 5xx */
.badge-esito.nd { background: #EEECE6; color: #6B6860; }          /* nessun esito */

/* --- Popup "Modifica contatto" (lead in attesa): piu' largo --- */
.modal.modal-modifica { max-width: min(1000px, 96vw); max-height: 94vh; overflow-y: auto; }
.modal-modifica .campo-esteso { grid-column: 1 / -1; }
.modal-modifica .campo-esteso textarea { min-height: 90px; }

/* --- Riga Oggetto + conferma di lettura (popup email di primo contatto) --- */
.oggetto-riga { display: flex; align-items: flex-end; gap: 16px; }
.oggetto-riga .field-oggetto { flex: 1; min-width: 0; }
.oggetto-riga .conferma-lettura { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; font-size: .85rem; padding-bottom: 10px; cursor: pointer; }
@media (max-width: 700px) { .oggetto-riga { flex-direction: column; align-items: stretch; gap: 0; } .oggetto-riga .conferma-lettura { padding: 0 0 10px; } }

/* --- Scheda contatto, card "Modifica dati": righe piu' ravvicinate --- */
.card.modifica-dati .grid-3 { gap: 6px 20px; }
.card.modifica-dati .field { margin-bottom: 2px; }
.card.modifica-dati .field label { margin-bottom: 3px; }
.card.modifica-dati .field input[type="text"], .card.modifica-dati .field select { padding-top: 7px; padding-bottom: 7px; }
.card.modifica-dati .campo-esteso { grid-column: 1 / -1; }
.card.modifica-dati .campo-esteso textarea { min-height: 60px; }
.card.modifica-dati > .btn { margin-top: 8px; }

/* Popup "Modifica contatto": righe piu' ravvicinate */
.modal-modifica .grid-3 { gap: 6px 20px; }
.modal-modifica .field { margin-bottom: 2px; }
.modal-modifica .field label { margin-bottom: 3px; }
.modal-modifica .field input[type="text"], .modal-modifica .field select { padding-top: 7px; padding-bottom: 7px; }
.modal-modifica .campo-esteso textarea { min-height: 64px; }
.modal-modifica .modal-azioni { margin-top: 12px; }

/* --- Campi che hanno generato un possibile duplicato --- */
.field.campo-conflitto input, .field.campo-conflitto select, .field.campo-conflitto textarea {
  border-color: #D98A1F; background: #FFF7E8; box-shadow: 0 0 0 2px rgba(217, 138, 31, .22);
}
.field.campo-conflitto > label { color: #9A5B00; }
.tag-conflitto { display: inline-block; margin-left: 6px; padding: 0 7px; border-radius: 999px; background: #FBEBD0; color: #9A5B00; font-size: .68rem; font-weight: 700; letter-spacing: .01em; vertical-align: 1px; cursor: help; white-space: nowrap; }

/* Elenco dei possibili duplicati con il motivo di ciascuno */
.alert-duplicato ul.elenco-motivi { list-style: none; margin: 2px 0 4px 0; padding-left: 14px; }
.alert-duplicato ul.elenco-motivi li { margin: 2px 0; }
.motivo-duplicato { font-weight: 400; color: var(--color-ink-muted); }

/* --- Allegati dell'email di primo contatto (popup) --- */
.allegati-box { border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm); background: #FBFAF8; padding: 8px 12px; margin: 4px 0 10px 0; }
.allegati-titolo { font-size: .85rem; font-weight: 600; margin-bottom: 4px; }
.allegati-elenco { display: flex; flex-direction: column; gap: 2px; margin-bottom: 6px; }
.allegato-riga { display: flex; align-items: center; gap: 8px; font-size: .88rem; cursor: pointer; }
.allegato-nome { font-weight: 600; }
.allegati-azioni { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }

.allegato-elimina { margin-left: auto; padding: 0 6px; line-height: 1.3; color: var(--color-danger); }
.allegato-elimina:hover { background: var(--color-danger); color: #fff; }

/* Popup email: destinatario, destinatario test, oggetto e conferma di lettura sulla stessa riga */
.riga-invio { display: flex; align-items: flex-end; gap: 14px; }
.riga-invio .field-dest { flex: 1 1 0; min-width: 0; }
.riga-invio .field-oggetto { flex: 1.4 1 0; min-width: 0; }
.riga-invio .conferma-lettura { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; font-size: .85rem; padding-bottom: 10px; cursor: pointer; }
@media (max-width: 900px) { .riga-invio { flex-wrap: wrap; } .riga-invio .field-dest, .riga-invio .field-oggetto { flex: 1 1 100%; } }

/* Logo aziendale (immagine) nel menu laterale */
.logo-immagine { height: 38px; width: auto; border-radius: 3px; flex-shrink: 0; display: block; }

/* Dashboard: contatori dei lead per stato, con i colori degli stati */
.conteggi-stato { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px 0; }
.conteggio-stato { display: inline-flex; align-items: center; gap: 8px; padding: 4px 12px; border-radius: 999px; font-size: .8rem; font-weight: 600; text-decoration: none; border: 1.5px solid transparent; white-space: nowrap; }
.conteggio-stato .conteggio-numero { font-variant-numeric: tabular-nums; font-weight: 700; font-size: .9rem; }
.conteggio-stato:hover { filter: brightness(.96); }
.conteggio-stato.attivo { border-color: currentColor; }
.conteggio-stato.totale { background: #EEECE6; color: #3D3B36; }
.conteggio-stato[data-stato="IN_ATTESA_PRIMO_CONTATTO"] { background: var(--status-attesa-primo-contatto-tint); color: var(--status-attesa-primo-contatto); }
.conteggio-stato[data-stato="DA_CONTATTARE"] { background: var(--status-da-contattare-tint); color: var(--status-da-contattare); }
.conteggio-stato[data-stato="CONTATTATO"] { background: var(--status-contattato-tint); color: var(--status-contattato); }
.conteggio-stato[data-stato="IN_ATTESA_RISPOSTA"] { background: var(--status-in-attesa-tint); color: var(--status-in-attesa); }
.conteggio-stato[data-stato="DA_RICONTATTARE"] { background: var(--status-da-ricontattare-tint); color: var(--status-da-ricontattare); }
.conteggio-stato[data-stato="CONFERMATO"] { background: var(--status-confermato-tint); color: var(--status-confermato); }
.conteggio-stato[data-stato="PERSO"] { background: var(--status-perso-tint); color: var(--status-perso); }
.conteggio-stato[data-stato="CHIUSO"] { background: var(--status-chiuso-tint); color: var(--status-chiuso); }

/* Popup Email di primo contatto: pulsante Chiudi arancione e X in alto a destra */
.modal-email { position: relative; }
.btn-chiudi-arancio { background: #E8710A; color: #fff; border: 1px solid #E8710A; }
.btn-chiudi-arancio:hover { background: #C85F06; border-color: #C85F06; color: #fff; }
.modal-x { position: absolute; top: 10px; right: 12px; width: 32px; height: 32px; border: none; border-radius: 50%; background: transparent; color: var(--color-ink-muted); font-size: 1.1rem; line-height: 1; cursor: pointer; z-index: 2; }
.modal-x:hover { background: #EEECE6; color: var(--color-ink); }

/* Ricerca clienti (Amministrazione) */
.clienti-filtri { margin: 14px 0 18px 0; }
.clienti-filtri-griglia { display: flex; flex-wrap: wrap; gap: 12px 14px; }
.clienti-campo { display: flex; flex-direction: column; gap: 4px; font-size: .78rem; font-weight: 600; color: var(--color-ink-muted); flex: 1 1 190px; min-width: 150px; }
.clienti-campo-largo { flex: 2 1 320px; }
.clienti-campo-corto { flex: 0 1 120px; min-width: 100px; }
.clienti-campo input, .clienti-campo select { padding: 8px 12px; border-radius: 8px; border: 1px solid var(--color-border-strong); background: var(--color-surface); font: 400 .9rem var(--font-body); color: var(--color-ink); }
.clienti-filtri-azioni { display: flex; align-items: center; gap: 10px; margin-top: 14px; flex-wrap: wrap; }

/* Variante "fissa-prima": resta ferma solo la prima colonna (es. Ricerca clienti), l'ultima scorre normalmente */
.table-wrap.fissa.fissa-prima table.modern th:last-child,
.table-wrap.fissa.fissa-prima table.modern td:last-child { position: static; box-shadow: none; }
.table-wrap.fissa.fissa-prima table.modern thead th:last-child { position: sticky; top: 0; z-index: 3; }
.table-wrap.fissa.fissa-prima table.modern tbody td:last-child { background: transparent; }
.table-wrap.fissa.fissa-prima table.modern tbody tr:hover td:last-child { background: transparent; }

/* Ricerca clienti: popup note e colonna azioni */
.note-cliente { white-space: pre-wrap; max-height: 60vh; overflow: auto; padding: 12px 14px; background: #FBFAF8; border: 1px solid var(--color-border); border-radius: 8px; font-size: .92rem; line-height: 1.5; }
.clienti-azioni { white-space: nowrap; }
.modal-overlay .modal { position: relative; }

/* Popup email: selettore del mittente, prima del destinatario */
.riga-invio .field-mittente { flex: 0 1 270px; min-width: 200px; }
.riga-invio .field-mittente select { width: 100%; box-sizing: border-box; padding: 12px 10px; font-size: .95rem; border-radius: 10px; border: 1.5px solid var(--color-border-strong); background: var(--color-surface); }
@media (max-width: 1250px) { .riga-invio { flex-wrap: wrap; } .riga-invio .field-mittente, .riga-invio .field-dest { flex: 1 1 30%; } .riga-invio .field-oggetto { flex: 1 1 60%; } }

/* Discorso a freddo */
.discorso-griglia { display: grid; grid-template-columns: 1fr; gap: 16px; align-items: start; }
@media (min-width: 1000px) { .discorso-griglia { grid-template-columns: 1fr 1fr; } }
.discorso-testo { display: block; width: 100%; box-sizing: border-box; min-height: 380px; resize: vertical; border-top-left-radius: 0; border-top-right-radius: 0; font-size: .95rem; line-height: 1.5; }
.discorso-azioni { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 12px; }
.discorso-anteprima { font-size: 1.15rem; line-height: 1.7; min-height: 380px; }

.colonna-card { display: flex; flex-direction: column; gap: 16px; }

.barra-html { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 8px; }

/* Dashboard compatta + icona "apri in nuova scheda" */
table.modern.compatta thead th { padding: 7px 10px; }
table.modern.compatta tbody td { padding: 5px 10px; font-size: 0.88rem; }
table.modern.compatta .badge { padding-top: 1px; padding-bottom: 1px; }
a.apri-nuova-scheda { display: inline-flex; vertical-align: middle; margin-left: 6px; color: var(--color-ink-muted); opacity: .75; }
a.apri-nuova-scheda:hover { color: var(--color-primary); opacity: 1; text-decoration: none; }

/* Card "Invia email" della scheda contatto */
.field input[type="email"] { transition: border-color .15s, box-shadow .15s; }
.field input[type="email"]:focus, .field input[type="text"]:focus { outline: none; box-shadow: 0 0 0 3px rgba(31, 91, 82, .14); }
.dim-testo { display: inline-flex; align-items: center; gap: 4px; margin-left: auto; font-size: .78rem; color: var(--color-ink-muted); }
.barra-html .dim-testo { margin-left: auto; }

/* Dashboard: card "Da ricontattare" */
.card.ricontatti { margin-top: 24px; }
.card.ricontatti h3 { margin-top: 0; }
.conteggio-ricontatti { font-size: .75rem; font-weight: 600; padding: 1px 8px; border-radius: 999px; background: var(--status-da-ricontattare-tint, #EEE); color: var(--status-da-ricontattare, inherit); vertical-align: middle; }
.ricontatti-sotto { color: var(--color-ink-muted); font-size: .85rem; margin: -6px 0 10px; }
.ricontatti-nota { white-space: normal; max-width: 520px; min-width: 260px; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* Chat AI */
.chat-avvisi { display: grid; gap: 10px; margin-top: 14px; }
.chat-avvisi .info-banner { font-size: .88rem; line-height: 1.45; }
.chat-card { display: flex; flex-direction: column; gap: 12px; }
.chat-barra { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.chat-barra select { min-width: 260px; padding: 7px 10px; border-radius: var(--radius-sm); border: 1px solid var(--color-border-strong); background: var(--color-surface); font-family: var(--font-body); }
.chat-nuova { margin-left: auto; }
.chat-messaggi { height: 56vh; min-height: 300px; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; padding: 4px 2px; }
.chat-vuota { color: var(--color-ink-muted); margin: auto; max-width: 520px; text-align: center; font-size: .92rem; }
.chat-msg { max-width: 88%; padding: 10px 14px; border-radius: 12px; border: 1px solid var(--color-border); }
.chat-user { align-self: flex-end; background: #E8F1EF; }
.chat-assistant { align-self: flex-start; background: var(--color-surface); }
.chat-attesa { opacity: .6; font-style: italic; }
.chat-errore-msg { border-color: var(--color-danger); color: var(--color-danger); }
.chat-chi { font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--color-ink-muted); margin-bottom: 3px; }
.chat-testo { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.5; font-size: .93rem; }
.chat-codice { background: #F5F4F0; border-radius: 6px; padding: 8px 10px; margin: 6px 0; font-family: ui-monospace, Consolas, monospace; font-size: .8rem; white-space: pre-wrap; overflow-wrap: anywhere; }
.chat-esito { max-height: 220px; overflow: auto; }
.chat-query { margin-top: 8px; font-size: .82rem; }
.chat-query summary { cursor: pointer; color: var(--color-ink-muted); }
.chat-db { font-size: .7rem; font-weight: 700; padding: 1px 7px; border-radius: 999px; background: #EEE; }
.chat-errore { color: var(--color-danger); font-size: .75rem; }
.chat-input { display: flex; gap: 10px; align-items: flex-end; }
.chat-input textarea { flex: 1; resize: vertical; min-height: 52px; padding: 10px 12px; border-radius: var(--radius-sm); border: 1px solid var(--color-border-strong); font-family: var(--font-body); font-size: .93rem; }
.chat-input textarea:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(31, 91, 82, .14); }

/* Chat AI: pannello messaggi con l'LLM */
.chat-log { margin-top: 14px; }
.chat-log > summary { cursor: pointer; font-weight: 600; }
.chat-log-barra { display: flex; align-items: center; gap: 8px; margin: 10px 0; flex-wrap: wrap; }
.chat-log-contenuto { display: flex; flex-direction: column; gap: 6px; }
.chat-log-voce { border: 1px solid var(--color-border); border-radius: 8px; padding: 6px 10px; font-size: .85rem; }
.chat-log-voce > summary { cursor: pointer; }
.chat-log-errore { border-color: var(--color-danger); }
.chat-log-voce .chat-codice { max-height: 320px; overflow: auto; }

/* Fatturato (Amministrazione) */
.fat-nota { color: var(--color-ink-muted); font-size: .85rem; margin-top: -6px; line-height: 1.45; }
.fat-filtri { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin-bottom: 14px; }
.fat-campo { display: flex; flex-direction: column; gap: 4px; font-size: .78rem; font-weight: 600; color: var(--color-ink-muted); }
.fat-campo-largo { flex: 1; min-width: 200px; }
.fat-campo input, .fat-campo select, .fat-mini select { padding: 7px 10px; border-radius: var(--radius-sm); border: 1px solid var(--color-border-strong); background: var(--color-surface); font-family: var(--font-body); font-size: .9rem; color: var(--color-ink); }
.fat-azioni { display: flex; gap: 8px; }
.fat-periodo { font-size: .85rem; color: var(--color-ink-muted); margin: 4px 0 10px; }
.fat-kpi { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin-bottom: 16px; }
.fat-kpi-box { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 12px 14px; box-shadow: var(--shadow-card); }
.fat-k-ricavi { border-top: 3px solid var(--color-primary); }
.fat-k-utile { border-top: 3px solid #D97B29; }
.fat-kpi-et { font-size: .75rem; font-weight: 600; color: var(--color-ink-muted); text-transform: uppercase; letter-spacing: .03em; }
.fat-kpi-val { font-size: 1.35rem; font-weight: 700; margin: 4px 0 2px; font-variant-numeric: tabular-nums; }
.fat-kpi-sub { font-size: .78rem; color: var(--color-ink-muted); min-height: 1.1em; }
.fat-var { font-weight: 600; }
.fat-su { color: #1B7F4B; }
.fat-giu { color: var(--color-danger); }
.fat-titolo { margin: 0 0 8px; }
.fat-legenda { display: flex; gap: 16px; font-size: .8rem; color: var(--color-ink-muted); margin-bottom: 6px; }
.fat-chip { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 5px; }
.fat-ricavi { background: var(--color-primary); }
.fat-costi { background: #B8B2A7; }
.fat-utile { background: #D97B29; }
.fat-grafico { width: 100%; }
.fat-svg { width: 100%; height: auto; }
.fat-griglia { stroke: var(--color-border); stroke-width: 1; }
.fat-zero { stroke: var(--color-border-strong); stroke-width: 1.5; }
.fat-asse { font-size: 11px; fill: var(--color-ink-muted); font-family: var(--font-body); }
.fat-barra-ricavi { fill: var(--color-primary); }
.fat-barra-costi { fill: #B8B2A7; }
.fat-linea-utile { stroke: #D97B29; stroke-width: 2.5; }
.fat-punto-utile { fill: #D97B29; stroke: #fff; stroke-width: 1.5; }
.fat-due { display: grid; grid-template-columns: 1fr; gap: 16px; margin: 16px 0; }
@media (min-width: 1000px) { .fat-due { grid-template-columns: 1fr 1fr; } }
.fat-riga { display: grid; grid-template-columns: 22px minmax(120px, 1.2fr) minmax(80px, 1fr) auto auto; gap: 8px; align-items: center; padding: 4px 0; font-size: .86rem; }
.fat-pos { color: var(--color-ink-faint); font-variant-numeric: tabular-nums; }
.fat-nome { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fat-barra-box { background: #F0EEE9; border-radius: 4px; height: 10px; overflow: hidden; }
.fat-barra { display: block; height: 100%; background: var(--color-primary); border-radius: 4px; }
.fat-barra-alt { background: #D97B29; }
.fat-val { font-weight: 600; font-variant-numeric: tabular-nums; text-align: right; }
.fat-quota { color: var(--color-ink-muted); font-size: .78rem; min-width: 52px; text-align: right; }
.fat-vuoto { color: var(--color-ink-muted); text-align: center; padding: 18px 0; font-size: .9rem; }
.fat-testata-tabella { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.fat-mini { display: flex; align-items: center; gap: 6px; font-size: .8rem; color: var(--color-ink-muted); margin-left: auto; }
.fat-num { text-align: right !important; font-variant-numeric: tabular-nums; }
.fat-attesa { text-align: center; color: var(--color-ink-muted); padding: 20px; }

/* Fatturato: esportazione PDF (stampa del browser) */
.fat-stampa-titolo { display: none; }
@media print {
    @page { size: A4; margin: 12mm; }
    .sidebar, .menu-toggle, .menu-sfondo, .fat-filtri, .fat-nota, .fat-azioni, #fatErrore, #fatAttesa,
    #fatRisultati button, #fatRisultati select, #fatRisultati .fat-mini { display: none !important; }
    body, body.con-menu { background: #fff !important; padding: 0 !important; margin: 0 !important; }
    .page, .page-wide { margin: 0 !important; max-width: none !important; padding: 0 !important; width: 100% !important; }
    .fat-stampa-titolo { display: block; font-size: .8rem; color: #555; margin-bottom: 4px; }
    h1 { font-size: 1.3rem; margin: 0 0 6px; }
    .card, .fat-kpi-box { break-inside: avoid; page-break-inside: avoid; box-shadow: none !important; }
    .fat-due { display: block !important; }
    .fat-due > .card { margin-bottom: 10px; }
    #fatTabella tr { break-inside: avoid; }
    #fatRisultati, .fat-svg, .fat-kpi-box, .fat-chip, svg rect {
        -webkit-print-color-adjust: exact; print-color-adjust: exact;
    }
}

/* Lavori e servizi */
.ls-totale td { font-weight: 700; border-top: 2px solid var(--color-border-strong); background: var(--color-surface-alt, #faf8f4); }
@media print {
    #lsFiltri, #lsErrore, #lsAttesa, #lsTabLavori a.th-sort, #lsTabServizi a.th-sort { pointer-events: none; }
    #lsFiltri, #lsErrore, #lsAttesa, .hint-inline { display: none !important; }
    #lsCardLavori, #lsCardServizi { break-inside: auto; page-break-inside: auto; }
    #lsTabLavori tr, #lsTabServizi tr { break-inside: avoid; }
    #lsTabLavori thead, #lsTabServizi thead { display: table-header-group; }
    #lsTabLavori, #lsTabServizi { font-size: 9px; }
    .ls-totale td { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* Fatturato: costi fuori dal gestionale */
.fat-extra-periodo { font-size: .88rem; margin: 0 0 8px; }
.fat-azioni-col { white-space: nowrap; text-align: right; }
@media print {
    .fat-costi-form, #fatExtraErrore, .fat-azioni-col { display: none !important; }
}

/* Lavori e servizi: note e link cliente */
.ls-nota-btn { background: none; border: 0; cursor: pointer; font-size: 1rem; padding: 0 4px; line-height: 1; }
.ls-nota-btn:hover { transform: scale(1.15); }
.ls-nota-testo { display: none; }
.ls-filtra { text-decoration: none; color: var(--color-ink-muted); font-size: .85rem; }
@media print {
    .ls-nota-btn, .ls-filtra { display: none !important; }
    .ls-col-nota { display: none; }
    body.stampa-note .ls-col-nota { display: table-cell; max-width: 70mm; }
    body.stampa-note .ls-nota-testo { display: block; white-space: pre-wrap; word-break: break-word; }
    #notaOverlay { display: none !important; }
}

/* Fatture emesse */
.fe-sel { width: 1%; white-space: nowrap; }
@media print {
    #feFiltri, #feErrore, #feAttesa, #feInvio, .fe-sel, .hint-inline { display: none !important; }
    #feTabella a.th-sort { pointer-events: none; }
    #feTabella tr { break-inside: avoid; }
    #feTabella thead { display: table-header-group; }
    #feTabella { font-size: 9px; }
}
.card.ricontatti { margin-top: 0; margin-bottom: 20px; }
