/* ==========================================================================
   LAIO CRM — Design System
   Stile: Flat Design (UI/UX Pro Max — best for SaaS/dashboards/admin)
   Type:  Fira Sans (UI) + Fira Code (dati) — pairing "Dashboard Data"
   Regole applicate: contrasto >= 4.5:1, focus sempre visibile,
                     transizioni 150-200ms, prefers-reduced-motion,
                     nessuna emoji come icona (SVG inline), touch target 44px
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Manrope:wght@400;500;600;700;800&display=swap');

/* --------------------------------------------------------------- TOKENS -- */
:root {
  /* Colore — palette "Professional blue + deal green" */
  --primary: #2563EB;
  --primary-hover: #1D4ED8;
  --primary-soft: #EFF6FF;
  --on-primary: #FFFFFF;

  --accent: #047857;          /* verde "affare chiuso" — scurito per WCAG 4.5:1 */
  --accent-hover: #065F46;
  --accent-soft: #ECFDF5;
  --on-accent: #FFFFFF;

  --bg: #F8FAFC;
  --fg: #0F172A;
  --card: #FFFFFF;
  --card-fg: #0F172A;
  --muted: #F1F5F9;
  --muted-fg: #475569;
  --border: #E2E8F0;
  --border-strong: #CBD5E1;

  --danger: #B91C1C;      /* scurito per WCAG 4.5:1 su danger-soft */
  --danger-soft: #FEF2F2;
  --on-danger: #FFFFFF;
  --warn: #B45309;
  --warn-soft: #FFFBEB;
  --info-soft: #EFF6FF;

  --ring: #2563EB;

  /* Forma e ritmo */
  --r-sm: 4px;
  --r: 8px;
  --r-lg: 12px;
  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px;
  --sp-4: 16px; --sp-5: 24px; --sp-6: 32px; --sp-7: 48px;

  --sidebar-w: 236px;
  --t: 160ms ease;

  --font: 'Fira Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --mono: 'Fira Code', ui-monospace, SFMono-Regular, Menlo, monospace;

  /* Elevazione minima: il Flat Design usa i bordi, non le ombre */
  --shadow-sticky: 0 1px 0 var(--border);
  --shadow-pop: 0 4px 16px rgba(15, 23, 42, 0.10);
}

/* Dark mode: rispetta la preferenza di sistema, si può forzare con data-theme */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --primary: #60A5FA;  --primary-hover: #93C5FD; --primary-soft: #1E293B; --on-primary: #0B1220;
    --accent: #34D399;   --accent-hover: #6EE7B7;  --accent-soft: #052E23;  --on-accent: #052E16;
    --bg: #0B1220;       --fg: #E2E8F0;
    --card: #131C2E;     --card-fg: #E2E8F0;
    --muted: #1B2537;    --muted-fg: #94A3B8;
    --border: #253044;   --border-strong: #35435C;
    --danger: #F87171;   --danger-soft: #3B1418;   --on-danger: #1A0A0C;
    --warn: #FBBF24;     --warn-soft: #3A2A05;
    --info-soft: #17233A;
    --ring: #60A5FA;
    --shadow-pop: 0 4px 16px rgba(0, 0, 0, 0.45);
  }
}
:root[data-theme="dark"] {
  --primary: #60A5FA;  --primary-hover: #93C5FD; --primary-soft: #1E293B; --on-primary: #0B1220;
  --accent: #34D399;   --accent-hover: #6EE7B7;  --accent-soft: #052E23;  --on-accent: #052E16;
  --bg: #0B1220;       --fg: #E2E8F0;
  --card: #131C2E;     --card-fg: #E2E8F0;
  --muted: #1B2537;    --muted-fg: #94A3B8;
  --border: #253044;   --border-strong: #35435C;
  --danger: #F87171;   --danger-soft: #3B1418;   --on-danger: #1A0A0C;
  --warn: #FBBF24;     --warn-soft: #3A2A05;
  --info-soft: #17233A;
  --ring: #60A5FA;
  --shadow-pop: 0 4px 16px rgba(0, 0, 0, 0.45);
}

/* ---------------------------------------------------------------- BASE -- */
*, *::before, *::after { box-sizing: border-box; }

/* `hidden` deve vincere sulle classi che impostano display (.field è flex),
   altrimenti un campo nascosto via attributo resta visibile. */
[hidden] { display: none !important; }

html { -webkit-text-size-adjust: 100%; }

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

h1, h2, h3 { margin: 0; font-weight: 600; letter-spacing: -0.01em; line-height: 1.25; }
h1 { font-size: 1.5rem; }
h2 { font-size: 1.0625rem; }
h3 { font-size: 0.9375rem; }
p { margin: 0 0 var(--sp-3); }

a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }

/* Focus visibile su OGNI controllo operabile — WCAG, severity High */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 2px solid var(--ring);
  outline-offset: 2px;
  border-radius: var(--r-sm);
}

/* Rispetta le preferenze di movimento — WCAG, severity High */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

.skip-link {
  position: absolute; left: var(--sp-2); top: -60px;
  background: var(--primary); color: var(--on-primary);
  padding: var(--sp-2) var(--sp-4); border-radius: var(--r); z-index: 200;
  transition: top var(--t);
}
.skip-link:focus { top: var(--sp-2); text-decoration: none; }

.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.icon { width: 18px; height: 18px; flex: none; stroke-width: 2; }
.icon-sm { width: 15px; height: 15px; flex: none; stroke-width: 2; }

/* --------------------------------------------------------------- SHELL -- */
.app-shell { display: grid; grid-template-columns: var(--sidebar-w) 1fr; min-height: 100vh; }

.sidebar {
  background: var(--card);
  border-right: 1px solid var(--border);
  display: flex; flex-direction: column;
  padding: var(--sp-4) var(--sp-3);
  gap: var(--sp-5);
  position: sticky; top: 0; height: 100vh; overflow-y: auto;
}

.brand { display: flex; align-items: center; gap: var(--sp-2); padding: 0 var(--sp-2); }
.brand a { display: flex; align-items: center; gap: var(--sp-2); color: var(--fg); font-weight: 700; font-size: 1.0625rem; letter-spacing: -0.02em; }
.brand a:hover { text-decoration: none; }
.brand-mark {
  width: 28px; height: 28px; border-radius: var(--r-sm);
  background: var(--primary); color: var(--on-primary);
  display: grid; place-items: center; font-size: 0.75rem; font-weight: 700;
  font-family: var(--mono);
}

.nav { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.nav-label {
  font-size: 0.6875rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.06em; color: var(--muted-fg);
  padding: var(--sp-3) var(--sp-2) var(--sp-1);
}
.nav-item {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: 9px var(--sp-3); border-radius: var(--r);
  color: var(--muted-fg); font-weight: 500; font-size: 0.9375rem;
  transition: background var(--t), color var(--t);
  min-height: 40px;
}
.nav-item:hover { background: var(--muted); color: var(--fg); text-decoration: none; }
.nav-item[aria-current="page"] { background: var(--primary-soft); color: var(--primary); font-weight: 600; }
.nav-item .count {
  margin-left: auto; font-family: var(--mono); font-size: 0.75rem;
  background: var(--muted); color: var(--muted-fg);
  padding: 1px 7px; border-radius: 99px; font-weight: 500;
}
.nav-item .count.alert { background: var(--danger-soft); color: var(--danger); }

.side-foot { border-top: 1px solid var(--border); padding-top: var(--sp-3); }
.who { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-2); }
.avatar {
  width: 32px; height: 32px; border-radius: 99px; flex: none;
  background: var(--primary-soft); color: var(--primary);
  display: grid; place-items: center; font-weight: 600; font-size: 0.8125rem;
}
.who-txt { min-width: 0; }
.who-name { font-weight: 600; font-size: 0.875rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.who-role { font-size: 0.75rem; color: var(--muted-fg); }

.main { min-width: 0; padding: var(--sp-5) var(--sp-6) var(--sp-7); }
.main-wide { max-width: 1440px; }

.page-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: var(--sp-4); flex-wrap: wrap; margin-bottom: var(--sp-5);
}
.page-title { display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap; }
.page-sub { color: var(--muted-fg); font-size: 0.875rem; margin-top: 2px; }
.head-actions { display: flex; gap: var(--sp-2); align-items: center; flex-wrap: wrap; }

.back-link {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  color: var(--muted-fg); font-size: 0.875rem; margin-bottom: var(--sp-3);
}
.back-link:hover { color: var(--fg); text-decoration: none; }

/* ------------------------------------------------------------- BUTTONS -- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-2);
  min-height: 38px; padding: 8px 14px;
  font-family: inherit; font-size: 0.875rem; font-weight: 500; line-height: 1;
  border: 1px solid var(--border-strong); border-radius: var(--r);
  background: var(--card); color: var(--fg);
  cursor: pointer; white-space: nowrap;
  transition: background var(--t), border-color var(--t), color var(--t);
}
.btn:hover { background: var(--muted); text-decoration: none; }
.btn:active { transform: translateY(0.5px); }

.btn-primary { background: var(--primary); border-color: var(--primary); color: var(--on-primary); font-weight: 600; }
.btn-primary:hover { background: var(--primary-hover); border-color: var(--primary-hover); }

.btn-accent { background: var(--accent); border-color: var(--accent); color: var(--on-accent); font-weight: 600; }
.btn-accent:hover { background: var(--accent-hover); border-color: var(--accent-hover); }

.btn-danger { color: var(--danger); border-color: var(--border-strong); }
.btn-danger:hover { background: var(--danger-soft); border-color: var(--danger); }

.btn-ghost { border-color: transparent; background: transparent; color: var(--muted-fg); }
.btn-ghost:hover { background: var(--muted); color: var(--fg); }

.btn-sm { min-height: 32px; padding: 5px 10px; font-size: 0.8125rem; }
.btn-block { width: 100%; }
.btn[disabled] { opacity: 0.5; cursor: not-allowed; }

/* Default per i <button> non classificati, così nulla resta scoperto */
button:not([class]) {
  min-height: 38px; padding: 8px 14px; font-family: inherit; font-size: 0.875rem;
  font-weight: 600; border: 1px solid var(--primary); border-radius: var(--r);
  background: var(--primary); color: var(--on-primary); cursor: pointer;
  transition: background var(--t);
}
button:not([class]):hover { background: var(--primary-hover); }

.kbd {
  font-family: var(--mono); font-size: 0.6875rem; line-height: 1;
  padding: 3px 5px; border: 1px solid var(--border-strong);
  border-bottom-width: 2px; border-radius: var(--r-sm);
  background: var(--muted); color: var(--muted-fg);
}

/* --------------------------------------------------------------- CARDS -- */
.card {
  background: var(--card); border: 1px solid var(--border);
  border-radius: var(--r-lg); padding: var(--sp-4) var(--sp-5);
  margin-bottom: var(--sp-4);
}
.card-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--sp-3); margin-bottom: var(--sp-3); flex-wrap: wrap;
}
.card-head h2 { display: flex; align-items: center; gap: var(--sp-2); }

.stat-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: var(--sp-3); margin-bottom: var(--sp-5);
}
.stat {
  background: var(--card); border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: var(--sp-4); display: flex; flex-direction: column; gap: 2px;
  transition: border-color var(--t);
}
a.stat:hover { border-color: var(--primary); text-decoration: none; }
.stat-num { font-family: var(--mono); font-size: 1.875rem; font-weight: 600; letter-spacing: -0.03em; line-height: 1.1; }
.stat-label { font-size: 0.8125rem; color: var(--muted-fg); }
.stat-foot { font-size: 0.75rem; color: var(--primary); margin-top: var(--sp-2); display: flex; align-items: center; gap: 4px; }
.stat.is-danger .stat-num { color: var(--danger); }
.stat.is-warn .stat-num { color: var(--warn); }
.stat.is-accent .stat-num { color: var(--accent); }

/* --------------------------------------------------- CODA DI LAVORO -- */
.queue { display: flex; flex-direction: column; gap: var(--sp-2); }
.queue-item {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-3); border: 1px solid var(--border);
  border-radius: var(--r); background: var(--card);
  transition: border-color var(--t), background var(--t);
}
.queue-item:hover { border-color: var(--border-strong); background: var(--muted); }
.queue-item.is-late { border-left: 3px solid var(--danger); background: var(--danger-soft); }
.queue-item.is-today { border-left: 3px solid var(--primary); }
.queue-main { flex: 1; min-width: 0; }
.queue-title { font-weight: 600; display: block; color: var(--fg); }
.queue-title:hover { color: var(--primary); }
.queue-meta {
  font-size: 0.8125rem; color: var(--muted-fg);
  display: flex; gap: var(--sp-2); flex-wrap: wrap; align-items: center; margin-top: 2px;
}
.queue-note {
  font-size: 0.8125rem; color: var(--muted-fg); font-style: italic;
  margin-top: 4px; overflow: hidden; text-overflow: ellipsis;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.queue-actions { display: flex; gap: var(--sp-2); flex: none; }
.queue-when { font-family: var(--mono); font-size: 0.8125rem; font-weight: 500; flex: none; min-width: 74px; }
.queue-when.late { color: var(--danger); }

/* -------------------------------------------------------------- TABLE -- */
.table-wrap {
  border: 1px solid var(--border); border-radius: var(--r-lg);
  overflow: auto; background: var(--card); max-height: 70vh;
}
.tbl { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 0.875rem; }
/* Regola "Table Handling": su schermo stretto la tabella scorre in
   orizzontale invece di schiacciare le colonne e far diventare le righe
   alte 200px. min-width sul contenuto, overflow sul contenitore. */
.table-wrap > .tbl { min-width: 720px; }
.table-wrap > .tbl.table-compact { min-width: 560px; }
.tbl th {
  position: sticky; top: 0; z-index: 2;
  background: var(--muted); color: var(--muted-fg);
  font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em;
  text-align: left; padding: 10px var(--sp-3);
  border-bottom: 1px solid var(--border); box-shadow: var(--shadow-sticky);
  white-space: nowrap;
}
.tbl td { padding: 10px var(--sp-3); border-bottom: 1px solid var(--border); vertical-align: middle; }
.tbl tbody tr:last-child td { border-bottom: none; }
.tbl tbody tr { transition: background var(--t); }
.tbl tbody tr:hover { background: var(--muted); }
.tbl tbody tr.is-selected { background: var(--primary-soft); }
.tbl .num { font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
.tbl .row-import td { color: var(--muted-fg); font-style: italic; }
.tbl tr.row-danger td { background: var(--danger-soft); }
.tbl .cell-strong { font-weight: 600; }
.tbl .col-check { width: 40px; }
.table-compact td, .table-compact th { padding: 7px var(--sp-3); }

/* Una colonna di testo libero (le note) può gonfiare una riga a 250px e
   rompere la scansione verticale della tabella. La limitiamo a 2 righe:
   il testo completo resta nel title e nella scheda azienda. */
.tbl .cell-note {
  max-width: 260px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; text-overflow: ellipsis;
}

/* ------------------------------------------------------------- BADGES -- */
.badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 9px; border-radius: 99px;
  font-size: 0.75rem; font-weight: 600; line-height: 1.5;
  background: var(--muted); color: var(--muted-fg); white-space: nowrap;
}
.badge-lead-nuovo          { background: var(--muted);      color: var(--muted-fg); }
.badge-contattato          { background: var(--info-soft);  color: var(--primary); }
.badge-trattativa-in-corso { background: var(--primary-soft);color: var(--primary); }
.badge-cliente-attivo      { background: var(--accent-soft);color: var(--accent); }
.badge-ricontattare        { background: var(--warn-soft);  color: var(--warn); }
.badge-non-interessato,
.badge-perso               { background: var(--danger-soft);color: var(--danger); }
.badge-warn   { background: var(--warn-soft);   color: var(--warn); }
.badge-danger { background: var(--danger-soft); color: var(--danger); }
.badge-accent { background: var(--accent-soft); color: var(--accent); }
.badge-info   { background: var(--primary-soft);color: var(--primary); }

.dot { width: 7px; height: 7px; border-radius: 99px; background: currentColor; flex: none; }

/* -------------------------------------------------------------- FORMS -- */
.field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.field > span, .field-label {
  font-size: 0.8125rem; font-weight: 500; color: var(--fg);
  display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap;
}
.field-hint { font-size: 0.75rem; color: var(--muted-fg); font-weight: 400; }

input[type=text], input[type=date], input[type=time], input[type=email],
input[type=search], input[type=tel], input[type=url], select, textarea {
  font-family: inherit; font-size: 0.875rem; color: var(--fg);
  background: var(--card);
  padding: 8px 10px; min-height: 38px;
  border: 1px solid var(--border-strong); border-radius: var(--r);
  transition: border-color var(--t), box-shadow var(--t);
  width: 100%;
}
textarea { min-height: 64px; resize: vertical; line-height: 1.5; }
input:hover, select:hover, textarea:hover { border-color: var(--muted-fg); }
input:focus, select:focus, textarea:focus {
  outline: none; border-color: var(--ring);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 22%, transparent);
}
input::placeholder, textarea::placeholder { color: var(--muted-fg); opacity: 1; }
select {
  cursor: pointer; appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 10px center; padding-right: 32px;
}

/* Errore inline agganciato al campo — WCAG, severity High */
.field-error {
  display: flex; align-items: flex-start; gap: 5px;
  font-size: 0.8125rem; color: var(--danger); font-weight: 500;
}
.has-error input, .has-error select, .has-error textarea { border-color: var(--danger); }
.has-error input:focus, .has-error select:focus, .has-error textarea:focus {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--danger) 22%, transparent);
}

/* Riepilogo errori in cima al form, focusabile */
.error-summary {
  background: var(--danger-soft); border: 1px solid var(--danger);
  border-radius: var(--r); padding: var(--sp-3) var(--sp-4); margin-bottom: var(--sp-4);
}
.error-summary h3 { color: var(--danger); font-size: 0.9375rem; margin-bottom: var(--sp-2); }
.error-summary ul { margin: 0; padding-left: 18px; font-size: 0.875rem; }
.error-summary a { color: var(--danger); font-weight: 500; }

.check {
  display: inline-flex; align-items: center; gap: var(--sp-2);
  font-size: 0.875rem; cursor: pointer; min-height: 38px; user-select: none;
}
.check input[type=checkbox] {
  width: 17px; height: 17px; min-height: 0; accent-color: var(--primary);
  cursor: pointer; flex: none; margin: 0;
}

.grid-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: var(--sp-3); }
.grid-form .full { grid-column: 1 / -1; }
.form-actions {
  grid-column: 1 / -1; display: flex; gap: var(--sp-2); align-items: center;
  padding-top: var(--sp-2); flex-wrap: wrap;
}

.filters {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: var(--sp-3); align-items: end;
}
.filters .filters-actions { display: flex; gap: var(--sp-2); align-items: center; }
.filter-bar {
  background: var(--card); border: 1px solid var(--border);
  border-radius: var(--r-lg); padding: var(--sp-4); margin-bottom: var(--sp-4);
}
.search-field { position: relative; }
.search-field .icon { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: var(--muted-fg); }
.search-field input { padding-left: 34px; }

.chips { display: flex; gap: var(--sp-2); flex-wrap: wrap; margin-top: var(--sp-3); }
.chip {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--primary-soft); color: var(--primary);
  padding: 3px 6px 3px 10px; border-radius: 99px; font-size: 0.8125rem; font-weight: 500;
}
.chip a { color: inherit; display: grid; place-items: center; width: 18px; height: 18px; border-radius: 99px; }
.chip a:hover { background: color-mix(in srgb, var(--primary) 18%, transparent); text-decoration: none; }

/* ------------------------------------------------------ BARRA MASSIVA -- */
.bulk-bar {
  position: sticky; bottom: var(--sp-4); z-index: 20;
  display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap;
  background: var(--fg); color: var(--bg);
  border-radius: var(--r-lg); padding: var(--sp-3) var(--sp-4);
  margin-top: var(--sp-4); box-shadow: var(--shadow-pop);
}
.bulk-bar[hidden] { display: none; }
.bulk-count { font-family: var(--mono); font-weight: 600; }
.bulk-bar select {
  background: var(--card); color: var(--fg); min-height: 34px;
  border-color: var(--border-strong); width: auto; min-width: 170px;
}
.bulk-bar .btn { min-height: 34px; }
.bulk-spacer { flex: 1; }

/* --------------------------------------------------------- PAGINAZIONE -- */
.pager {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--sp-3); flex-wrap: wrap; margin-top: var(--sp-4);
}
.pager-info { font-size: 0.875rem; color: var(--muted-fg); }
.pager-info strong { font-family: var(--mono); color: var(--fg); font-weight: 600; }
.pager-nav { display: flex; gap: var(--sp-2); align-items: center; }
.pager-nav .page-num { font-family: var(--mono); font-size: 0.875rem; color: var(--muted-fg); padding: 0 var(--sp-2); }

/* ---------------------------------------------------------- EMPTY/TOAST -- */
.empty {
  text-align: center; padding: var(--sp-6) var(--sp-4); color: var(--muted-fg);
  display: flex; flex-direction: column; align-items: center; gap: var(--sp-2);
}
.empty-icon {
  width: 44px; height: 44px; border-radius: 99px; background: var(--muted);
  display: grid; place-items: center; color: var(--muted-fg); margin-bottom: var(--sp-1);
}
.empty h3 { color: var(--fg); }
.empty p { max-width: 42ch; margin: 0; font-size: 0.875rem; }
.empty .btn { margin-top: var(--sp-3); }

.empty-inline { color: var(--muted-fg); font-size: 0.875rem; padding: var(--sp-3) 0; }

.toasts {
  position: fixed; top: var(--sp-4); right: var(--sp-4); z-index: 100;
  display: flex; flex-direction: column; gap: var(--sp-2); max-width: min(380px, calc(100vw - 32px));
}
.toast {
  display: flex; align-items: flex-start; gap: var(--sp-2);
  background: var(--card); border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: var(--r); padding: var(--sp-3) var(--sp-4);
  box-shadow: var(--shadow-pop); font-size: 0.875rem;
  animation: toast-in 180ms ease;
}
.toast.is-warn { border-left-color: var(--warn); }
.toast.is-danger { border-left-color: var(--danger); }
.toast-close { margin-left: auto; background: none; border: none; cursor: pointer; color: var(--muted-fg); padding: 0 2px; min-height: 0; }
@keyframes toast-in { from { opacity: 0; transform: translateX(12px); } to { opacity: 1; transform: none; } }

/* ------------------------------------------------------------- DETAIL -- */
.detail-grid { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: var(--sp-4); align-items: start; }
.detail-side { position: sticky; top: var(--sp-4); display: flex; flex-direction: column; gap: var(--sp-4); }

.kv { display: grid; grid-template-columns: auto 1fr; gap: var(--sp-2) var(--sp-3); font-size: 0.875rem; }
.kv dt { color: var(--muted-fg); }
.kv dd { margin: 0; overflow-wrap: anywhere; }

.prod-card { border: 1px solid var(--border); border-radius: var(--r); margin-bottom: var(--sp-3); overflow: hidden; }
.prod-head {
  display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap;
  padding: var(--sp-3) var(--sp-4); background: var(--muted); border-bottom: 1px solid var(--border);
}
.prod-head strong { font-size: 0.9375rem; }
.prod-body { padding: var(--sp-3) var(--sp-4); }
.prod-last { font-size: 0.875rem; color: var(--muted-fg); }
.prod-last em { color: var(--fg); font-style: italic; }

/* Il form di registrazione azione è SEMPRE visibile: è l'azione n.1 */
.action-form { background: var(--muted); border-top: 1px solid var(--border); padding: var(--sp-3) var(--sp-4); }
.action-form .grid-form { gap: var(--sp-2) var(--sp-3); }

.recall-field { transition: box-shadow var(--t), background var(--t); border-radius: var(--r); }
.recall-field.is-required { box-shadow: 0 0 0 2px var(--warn); padding: var(--sp-2); background: var(--warn-soft); }

details.disclosure { border-top: 1px solid var(--border); }
details.disclosure > summary {
  cursor: pointer; padding: var(--sp-3) var(--sp-4); font-size: 0.875rem;
  font-weight: 500; color: var(--muted-fg); list-style: none;
  display: flex; align-items: center; gap: var(--sp-2); min-height: 44px;
  transition: background var(--t), color var(--t);
}
details.disclosure > summary:hover { background: var(--muted); color: var(--fg); }
details.disclosure > summary::-webkit-details-marker { display: none; }
details.disclosure > summary .chev { transition: transform var(--t); }
details.disclosure[open] > summary .chev { transform: rotate(90deg); }
details.disclosure > .disclosure-body { padding: 0 var(--sp-4) var(--sp-4); }

.timeline { display: flex; flex-direction: column; gap: 0; }
.timeline-row {
  display: grid; grid-template-columns: 86px 1fr; gap: var(--sp-3);
  padding: var(--sp-3) 0; border-bottom: 1px solid var(--border); font-size: 0.875rem;
}
.timeline-row:last-child { border-bottom: none; }
.timeline-date { font-family: var(--mono); font-size: 0.8125rem; color: var(--muted-fg); }
.timeline-meta { display: flex; gap: var(--sp-2); flex-wrap: wrap; align-items: center; margin-bottom: 2px; }
.timeline-note { color: var(--muted-fg); }
.timeline-row.is-import { opacity: 0.72; }

.muted { color: var(--muted-fg); }
.mono { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.stack { display: flex; flex-direction: column; gap: var(--sp-3); }
.row { display: flex; gap: var(--sp-2); align-items: center; flex-wrap: wrap; }

/* --------------------------------------------------------------- LOGIN -- */
.login-wrap { min-height: 100vh; display: grid; place-items: center; padding: var(--sp-4); }
.login-card {
  width: 100%; max-width: 380px; background: var(--card);
  border: 1px solid var(--border); border-radius: var(--r-lg);
  padding: var(--sp-6); text-align: center;
}
.login-card .brand-mark { width: 44px; height: 44px; font-size: 1rem; margin: 0 auto var(--sp-4); }
.login-card h1 { margin-bottom: var(--sp-1); }
.login-card p { color: var(--muted-fg); font-size: 0.875rem; margin-bottom: var(--sp-5); }
.login-card select { margin-bottom: var(--sp-3); }

/* ---------------------------------------------------------- RESPONSIVE -- */
.mobile-bar { display: none; }

@media (max-width: 1024px) {
  .detail-grid { grid-template-columns: 1fr; }
  .detail-side { position: static; }
  .main { padding: var(--sp-4) var(--sp-4) var(--sp-6); }
}

@media (max-width: 768px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar {
    position: fixed; inset: 0 auto 0 0; width: min(84vw, var(--sidebar-w));
    z-index: 60; transform: translateX(-100%); transition: transform var(--t);
    box-shadow: var(--shadow-pop);
  }
  .sidebar.is-open { transform: none; }
  .mobile-bar {
    display: flex; align-items: center; gap: var(--sp-3);
    padding: var(--sp-2) var(--sp-3); background: var(--card);
    border-bottom: 1px solid var(--border); position: sticky; top: 0; z-index: 50;
  }
  .scrim { position: fixed; inset: 0; background: rgba(15,23,42,0.45); z-index: 55; }
  .scrim[hidden] { display: none; }
  .table-wrap { max-height: none; }
  .page-head { flex-direction: column; align-items: stretch; }
  .head-actions .btn { flex: 1; }
  .toasts { left: var(--sp-3); right: var(--sp-3); max-width: none; }
  .bulk-bar { position: fixed; left: var(--sp-3); right: var(--sp-3); bottom: var(--sp-3); margin: 0; }
}

@media (max-width: 480px) {
  body { font-size: 14px; }
  .main { padding: var(--sp-3) var(--sp-3) var(--sp-6); }
  .card { padding: var(--sp-3) var(--sp-4); }
  .queue-item { flex-wrap: wrap; }
  .queue-actions { width: 100%; }
  .queue-actions .btn { flex: 1; }
}

@media print {
  .sidebar, .mobile-bar, .bulk-bar, .toasts, .head-actions, .filter-bar { display: none !important; }
  .app-shell { grid-template-columns: 1fr; }
  .table-wrap { max-height: none; border: none; }
}

/* ---------------------------------------------------- v2: BARRE IMBUTO -- */
.barra-riga { display: grid; grid-template-columns: 150px 1fr 48px; gap: var(--sp-3); align-items: center; }
.barra-etichetta { font-size: 0.8125rem; color: var(--muted-fg); }
.barra-pista { background: var(--muted); border-radius: var(--r-sm); height: 22px; overflow: hidden; }
.barra-piena { display: block; height: 100%; background: var(--border-strong); border-radius: var(--r-sm); transition: width var(--t); }
.barra-numero { font-size: 0.8125rem; text-align: right; font-weight: 600; }

.barra-lead-nuovo          { background: var(--border-strong); }
.barra-contattato          { background: color-mix(in srgb, var(--primary) 45%, var(--muted)); }
.barra-ricontattare        { background: var(--warn); }
.barra-trattativa-in-corso { background: var(--primary); }
.barra-cliente-attivo      { background: var(--accent); }
.barra-non-interessato,
.barra-perso               { background: color-mix(in srgb, var(--danger) 55%, var(--muted)); }

@media (max-width: 480px) {
  .barra-riga { grid-template-columns: 110px 1fr 40px; gap: var(--sp-2); }
}

/* ------------------------------------------------- v2: BARRA ANNULLA -- */
.undo-bar {
  position: fixed; left: 50%; bottom: var(--sp-4); transform: translateX(-50%);
  z-index: 90; display: flex; align-items: center; gap: var(--sp-3);
  background: var(--fg); color: var(--bg);
  border-radius: 99px; padding: var(--sp-2) var(--sp-2) var(--sp-2) var(--sp-4);
  box-shadow: var(--shadow-pop); font-size: 0.875rem;
  max-width: calc(100vw - 32px);
}
.undo-bar .btn { min-height: 32px; background: var(--bg); color: var(--fg); border-color: transparent; }
.undo-bar .btn:hover { background: var(--muted); }
.undo-bar span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* --------------------------------------------------- v2: SOLDI E RISCHIO -- */
.money { font-family: var(--mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
.money-big { font-size: 1.5rem; font-weight: 600; letter-spacing: -0.02em; }
.prob { font-family: var(--mono); font-size: 0.75rem; color: var(--muted-fg); }

.valore-form {
  display: flex; gap: var(--sp-2); align-items: flex-end; flex-wrap: wrap;
  padding: var(--sp-3) var(--sp-4); border-top: 1px solid var(--border);
  background: var(--card);
}
.valore-form .field { flex: 1; min-width: 130px; }

.riga-scoperta { border-left: 3px solid var(--warn); }

.avviso {
  display: flex; gap: var(--sp-3); align-items: flex-start;
  background: var(--warn-soft); border: 1px solid var(--warn);
  border-radius: var(--r); padding: var(--sp-3) var(--sp-4); margin-bottom: var(--sp-4);
  font-size: 0.875rem;
}
.avviso strong { display: block; margin-bottom: 2px; }
.avviso .icon, .avviso .icon-sm { color: var(--warn); }

@media (max-width: 600px) {
  .undo-bar { left: var(--sp-3); right: var(--sp-3); transform: none; border-radius: var(--r-lg); }
}

/* =================================================================
   VERSIONE SEMPLICE
   Una schermata = una domanda. Colonna unica, testo grande, un bottone
   principale per schermata. Il resto sta dietro «Dettagli».
   ================================================================= */

/* ---- Oggi: «Chiama questi» ---- */
.chiama { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.chiama-riga { border-bottom: 1px solid var(--border); }
.chiama-riga:last-child { border-bottom: none; }
.chiama-link {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-2); color: var(--fg); border-radius: var(--r);
  transition: background var(--t);
}
.chiama-link:hover { background: var(--muted); text-decoration: none; }
.chiama-testo { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.chiama-nome { font-weight: 600; font-size: 1rem; }
.chiama-motivo { font-size: 0.875rem; color: var(--muted-fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chiama-riga.is-scaduto .chiama-motivo { color: var(--danger); font-weight: 500; }
.chiama-riga.is-oggi .chiama-motivo { color: var(--primary); font-weight: 500; }
.chiama-altri { margin: var(--sp-3) 0 0; font-size: 0.875rem; color: var(--muted-fg); }

/* ---- Scheda azienda ---- */
.scheda { max-width: 720px; }
.scheda-nome { font-size: 1.75rem; margin-top: var(--sp-2); }
.scheda-contatti { display: flex; gap: var(--sp-2); flex-wrap: wrap; margin: var(--sp-4) 0; }
.btn-grande { min-height: 48px; padding: 12px 18px; font-size: 1rem; }

.registra { margin-bottom: var(--sp-4); }
.registra > summary { list-style: none; cursor: pointer; }
.registra > summary::-webkit-details-marker { display: none; }
.registra[open] > summary { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.registra-form {
  display: flex; flex-direction: column; gap: var(--sp-3);
  background: var(--card); border: 1px solid var(--border); border-top: none;
  border-radius: 0 0 var(--r-lg) var(--r-lg); padding: var(--sp-4) var(--sp-5);
}

.piccolo > summary { font-size: 0.8125rem; color: var(--muted-fg); cursor: pointer; }
.piccolo-corpo { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); margin-top: var(--sp-2); }

.scheda-blocco { padding: var(--sp-4) var(--sp-5); }
.scheda-titolo { font-size: 0.8125rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.05em; color: var(--muted-fg); margin-bottom: var(--sp-2); }
.ultima { margin: 0; }
.ultima-nota { margin: var(--sp-1) 0 0; color: var(--muted-fg); font-style: italic; }

.punti { list-style: none; margin: 0; padding: 0; }
.punti li { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap;
  padding: var(--sp-2) 0; border-bottom: 1px solid var(--border); }
.punti li:last-child { border-bottom: none; }
.punti-prossimo { margin-left: auto; font-size: 0.875rem; color: var(--muted-fg); }
.testo-warn { color: var(--warn); font-weight: 500; }

.dettagli { margin-top: var(--sp-4); }
.dettagli > summary {
  list-style: none; cursor: pointer; display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-3) 0; color: var(--muted-fg); font-weight: 500;
}
.dettagli > summary::-webkit-details-marker { display: none; }
.dettagli > summary .chev { transition: transform var(--t); }
.dettagli[open] > summary .chev { transform: rotate(90deg); }
.dettagli-corpo { display: flex; flex-direction: column; gap: var(--sp-5);
  border-top: 1px solid var(--border); padding-top: var(--sp-4); }
.dettagli-corpo h3 { font-size: 1rem; margin-bottom: var(--sp-3); }
.riga-semplice { font-size: 0.875rem; margin: 0 0 var(--sp-2); }

.avviso-stop { border-color: var(--danger); background: var(--danger-soft); }
.avviso-stop .icon { color: var(--danger); }

/* ---- Numeri ---- */
.numeri-dettagli > summary { list-style: none; cursor: pointer; color: var(--muted-fg);
  font-weight: 500; padding: var(--sp-3) 0; display: flex; align-items: center; gap: var(--sp-2); }
.numeri-dettagli > summary::-webkit-details-marker { display: none; }
.numeri-dettagli[open] > summary .chev { transform: rotate(90deg); }

/* ---- Aziende: filtri avanzati chiusi ---- */
.cerca-riga { display: flex; gap: var(--sp-2); align-items: center; }
.cerca-riga .search-field { flex: 1; }
.filtri-altri > summary { font-size: 0.875rem; color: var(--muted-fg); cursor: pointer; margin-top: var(--sp-3); }
.filtri-altri[open] > summary { margin-bottom: var(--sp-3); }

@media (max-width: 480px) {
  .chiama-link .badge { display: none; }
  .piccolo-corpo { grid-template-columns: 1fr; }
  .scheda-nome { font-size: 1.375rem; }
}

/* Le colonne di una griglia non si stringono sotto la larghezza minima del
   loro contenuto: una tabella larga 720px allargava tutta la pagina su
   telefono, e ogni cosa sbordava a destra. Con min-width: 0 la colonna resta
   larga quanto lo schermo e la tabella scorre dentro il suo riquadro. */
.app-shell > * { min-width: 0; }

/* La lente usa la classe icon-sm, non icon: la regola di posizionamento non
   la prendeva e l'icona finiva sopra la casella invece che dentro. */
.search-field { display: block; }
.search-field .icon-sm { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--muted-fg); pointer-events: none; }

/* =================================================================
   UNA COSA ALLA VOLTA
   Oggi mostra una sola azienda. Registrare = toccare un bottone, poi una
   data già pronta. Niente menu a tendina, niente calendario se non serve.
   Colonna stretta (640px) centrata: l'occhio non deve viaggiare.
   ================================================================= */

.oggi { max-width: 640px; margin: 0 auto; display: flex; flex-direction: column; gap: var(--sp-5); }
.oggi-testa h1 { font-size: 1.875rem; letter-spacing: -0.02em; margin: 0; }
.oggi-data { margin: 0 0 2px; color: var(--muted-fg); font-size: 0.9375rem; }
.progresso { margin-top: var(--sp-3); display: flex; align-items: center; gap: var(--sp-3); }
.progresso-barra { flex: 1; height: 8px; background: var(--muted); border-radius: 99px; overflow: hidden; }
.progresso-barra span { display: block; height: 100%; background: var(--accent); border-radius: 99px;
  transition: width 400ms ease; min-width: 8px; }
.progresso-testo { margin: 0; font-size: 0.875rem; color: var(--muted-fg); white-space: nowrap; }
.progresso-testo strong { color: var(--fg); }

.focus {
  background: var(--card); border: 1px solid var(--border); border-radius: 20px;
  padding: var(--sp-6); box-shadow: 0 1px 2px rgba(15,23,42,.04), 0 8px 24px rgba(15,23,42,.06);
}
.focus-perche { margin: 0 0 var(--sp-1); font-size: 0.875rem; font-weight: 600; color: var(--muted-fg); }
.focus-perche.is-scaduto { color: var(--danger); }
.focus-perche.is-oggi { color: var(--primary); }
.focus-nome { font-size: 2rem; line-height: 1.15; letter-spacing: -0.02em; margin: 0; }
.focus-nome a { color: var(--fg); }
.focus-nome a:hover { color: var(--primary); text-decoration: none; }
.focus-sotto { margin: var(--sp-2) 0 var(--sp-5); display: flex; gap: var(--sp-2); align-items: center;
  flex-wrap: wrap; color: var(--muted-fg); }

.btn-chiama {
  display: flex; align-items: center; justify-content: center; gap: var(--sp-3);
  min-height: 60px; padding: 14px 20px; border-radius: 16px;
  background: var(--accent); color: var(--on-accent); font-size: 1.375rem; font-weight: 600;
  transition: background var(--t), transform var(--t);
}
.btn-chiama:hover { background: var(--accent-hover); text-decoration: none; color: var(--on-accent); }
.btn-chiama:active { transform: scale(0.99); }
.btn-chiama .icon { width: 24px; height: 24px; }
.focus-referente { margin: var(--sp-2) 0 0; text-align: center; color: var(--muted-fg); font-size: 0.9375rem; }

.focus-memo { margin: var(--sp-5) 0; display: flex; flex-direction: column; gap: var(--sp-2); }
.focus-memo p { margin: 0; padding: var(--sp-3) var(--sp-4); background: var(--muted); border-radius: 12px; font-size: 0.9375rem; }
.memo-chi { display: block; font-size: 0.75rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.04em; color: var(--muted-fg); margin-bottom: 2px; }
.focus-memo .memo-warn { background: var(--warn-soft); color: var(--warn); display: flex; gap: var(--sp-2); align-items: flex-start; }

/* ---- Registrazione rapida ---- */
.rapido { display: flex; flex-direction: column; gap: var(--sp-5); }
.gruppo { border: 0; padding: 0; margin: 0; min-width: 0; }
.gruppo legend { font-size: 1.0625rem; font-weight: 600; margin-bottom: var(--sp-3); padding: 0; }
.passo2 { display: flex; flex-direction: column; gap: var(--sp-4); }

.esiti { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--sp-2); }
.esiti.esiti-2 { grid-template-columns: repeat(2, 1fr); }
.esito { position: relative; cursor: pointer; }
.esito input, .segmento input { position: absolute; opacity: 0; pointer-events: none; }
.esito > span.esito-icona {
  display: grid; place-items: center; height: 56px; border-radius: 14px;
  background: var(--muted); color: var(--muted-fg); border: 2px solid transparent;
  transition: background var(--t), color var(--t), border-color var(--t), transform var(--t);
}
.esito .esito-icona .icon { width: 24px; height: 24px; }
.esito-testo { display: block; text-align: center; font-size: 0.8125rem; font-weight: 500; margin-top: 6px; line-height: 1.2; }
.esito:hover .esito-icona { background: var(--border); color: var(--fg); }
.esito:active .esito-icona { transform: scale(0.96); }
.esito input:focus-visible + .esito-icona { outline: 2px solid var(--ring); outline-offset: 2px; }
.esito input:checked + .esito-icona { color: #fff; }
.tono-neutro input:checked + .esito-icona { background: #475569; }
.tono-blu    input:checked + .esito-icona { background: var(--primary); color: var(--on-primary); }
.tono-verde  input:checked + .esito-icona { background: var(--accent); color: var(--on-accent); }
.tono-rosso  input:checked + .esito-icona { background: var(--danger); color: var(--on-danger); }
.esito input:checked ~ .esito-testo { font-weight: 700; }

.segmenti { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.segmento { position: relative; cursor: pointer; }
.segmento > span {
  display: flex; flex-direction: column; justify-content: center; min-height: 44px;
  padding: 8px 14px; border-radius: 12px; border: 1.5px solid var(--border-strong);
  font-weight: 500; font-size: 0.9375rem; line-height: 1.2;
  transition: background var(--t), border-color var(--t), color var(--t);
}
.segmento small { font-size: 0.75rem; font-weight: 400; color: var(--muted-fg); }
.segmento:hover > span { border-color: var(--primary); }
.segmento input:checked + span { background: var(--primary); border-color: var(--primary); color: var(--on-primary); }
.segmento input:checked + span small { color: inherit; opacity: 0.85; }
.segmento input:focus-visible + span { outline: 2px solid var(--ring); outline-offset: 2px; }
.data-altro, .rinnovo-altro { margin-top: var(--sp-2); max-width: 220px; }

.rapido textarea { border-radius: 12px; font-size: 0.9375rem; }
.rapido .btn-grande { min-height: 52px; border-radius: 14px; font-size: 1.0625rem; }

.focus-piedi { display: flex; justify-content: space-between; gap: var(--sp-2); flex-wrap: wrap;
  margin-top: var(--sp-4); padding-top: var(--sp-3); border-top: 1px solid var(--border); }

/* ---- Le prossime, la squadra ---- */
.poi-titolo { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em;
  color: var(--muted-fg); margin: 0 0 var(--sp-2); }
.poi ol { list-style: none; margin: 0; padding: 0; }
.poi li { display: flex; justify-content: space-between; gap: var(--sp-3); padding: var(--sp-2) 0;
  border-bottom: 1px solid var(--border); color: var(--muted-fg); font-size: 0.9375rem; }
.poi li:last-child { border-bottom: 0; }
.poi li small { white-space: nowrap; }
.saltati { display: flex; gap: var(--sp-2); align-items: center; justify-content: center;
  font-size: 0.875rem; color: var(--muted-fg); }
.btn-link { background: none; border: 0; padding: 0; color: var(--primary); font: inherit; cursor: pointer; text-decoration: underline; }
.squadra ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.squadra li { display: flex; align-items: center; gap: var(--sp-2); padding: 4px 12px 4px 4px;
  background: var(--card); border: 1px solid var(--border); border-radius: 99px; font-size: 0.875rem; }
.squadra li.io { border-color: var(--primary); }
.squadra .avatar { width: 26px; height: 26px; font-size: 0.6875rem; }

.focus-vuoto { text-align: center; padding: var(--sp-7) var(--sp-5); }
.focus-vuoto h2 { font-size: 1.5rem; margin: var(--sp-3) 0 var(--sp-1); }
.vuoto-icona { display: inline-grid; place-items: center; width: 64px; height: 64px; border-radius: 99px;
  background: var(--accent-soft); color: var(--accent); }
.vuoto-icona .icon { width: 32px; height: 32px; }

/* ---- Scheda ---- */
.scheda { max-width: 640px; margin: 0 auto; }
.stati-riga { list-style: none; margin: var(--sp-3) 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.stati-riga li { display: flex; gap: var(--sp-2); align-items: center; flex-wrap: wrap; font-size: 0.9375rem; }
.scheda-contatti .btn-chiama { flex: 1; min-width: 240px; }
.scheda-registra { margin: var(--sp-4) 0 var(--sp-6); padding: var(--sp-5); }

.storia-lista { list-style: none; margin: 0; padding: 0; }
.storia-voce { display: grid; grid-template-columns: 20px 1fr; gap: var(--sp-3); padding-bottom: var(--sp-4); position: relative; }
.storia-voce::before { content: ""; position: absolute; left: 6px; top: 16px; bottom: 0; width: 2px; background: var(--border); }
.storia-voce:last-child::before { display: none; }
.storia-punto { width: 14px; height: 14px; border-radius: 99px; margin-top: 3px; background: var(--border-strong); border: 3px solid var(--bg); box-sizing: content-box; margin-left: -3px; }
.storia-voce.is-parlato .storia-punto { background: var(--accent); }
.storia-voce.is-vuoto .storia-punto { background: var(--muted-fg); }
.storia-voce.is-import { opacity: 0.7; }
.storia-voce p { margin: 0; }
.storia-meta { font-size: 0.8125rem; color: var(--muted-fg); }
.storia-meta strong { color: var(--fg); }
.storia-cosa { font-weight: 500; }
.storia-nota { margin-top: 4px !important; padding: var(--sp-2) var(--sp-3); background: var(--card);
  border: 1px solid var(--border); border-radius: 4px 12px 12px 12px; font-size: 0.9375rem; }
.storia-altre > summary { cursor: pointer; color: var(--primary); font-size: 0.875rem; margin: 0 0 var(--sp-3) 32px; }

@media (max-width: 640px) {
  .focus { padding: var(--sp-5) var(--sp-4); border-radius: 16px; }
  .focus-nome { font-size: 1.5rem; }
  .esiti { grid-template-columns: repeat(3, 1fr); row-gap: var(--sp-3); }
  .segmento { flex: 1 1 calc(50% - var(--sp-2)); }
}
.segmenti-date { display: grid; grid-template-columns: repeat(5, 1fr); }
.segmenti-date .segmento > span { height: 100%; }
@media (max-width: 640px) { .segmenti-date { grid-template-columns: repeat(2, 1fr); } }
.testo-danger { color: var(--danger); font-weight: 500; }
.prodotto-nuovo { margin-top: var(--sp-2); max-width: 320px; }
.segmento > span .icon-sm { display: inline; vertical-align: -2px; margin-right: 2px; }
.segmento > span.segmento-altro { flex-direction: row; align-items: center; gap: 4px; }
.segmento > span.segmento-altro { white-space: nowrap; }

/* ---- Ora precisa, con chi hai parlato ---- */
.sotto-legenda { font-size: 0.9375rem; font-weight: 600; margin: var(--sp-4) 0 var(--sp-2); }
.ora-precisa { width: 130px; min-height: 44px; border-radius: 12px; font-size: 1rem; }
.persona-nuova { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-2); margin-top: var(--sp-3); }
.persona-nuova input[name="contatto_nome"] { grid-column: 1 / -1; }
.persona-nuova[hidden] { display: none; }
.spunta-riferimento { margin-top: var(--sp-3); font-size: 0.9375rem; }
@media (max-width: 640px) { .persona-nuova { grid-template-columns: 1fr; } }

/* ---- Tre volte senza risposta, «Mai più» ---- */
.avviso-vuoto { display: flex; gap: var(--sp-3); align-items: flex-start; padding: var(--sp-3) var(--sp-4);
  background: var(--warn-soft); color: var(--warn); border-radius: 12px; }
.avviso-vuoto[hidden] { display: none; }
.avviso-vuoto p { margin: 0; color: var(--fg); font-size: 0.9375rem; }
.avviso-vuoto .icon { flex-shrink: 0; margin-top: 2px; }
.segmento-stop input:checked + span { background: var(--danger); border-color: var(--danger); color: var(--on-danger); }
.sotto-nota { margin: var(--sp-2) 0 0; font-size: 0.875rem; color: var(--danger); }
.segmenti-date.segmenti-5 { grid-template-columns: repeat(5, 1fr); }

/* ---- Temperatura ---- */
.temp { display: inline-block; font-size: 0.6875rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em;
  padding: 2px 8px; border-radius: 99px; margin-right: 6px; vertical-align: 1px; }
.temp-caldo { background: #FEE2E2; color: #B91C1C; }
.temp-tiepido { background: var(--warn-soft); color: var(--warn); }
.temp-freddo { background: var(--primary-soft); color: var(--primary); }
.temp-irraggiungibile { background: var(--muted); color: var(--muted-fg); }
:root[data-theme="dark"] .temp-caldo { background: var(--danger-soft); color: var(--danger); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .temp-caldo { background: var(--danger-soft); color: var(--danger); } }

/* ---- Non chiamare più ---- */
.stop { margin-top: var(--sp-3); }
.stop > summary { list-style: none; cursor: pointer; font-size: 0.875rem; color: var(--danger);
  display: inline-flex; align-items: center; gap: 6px; padding: 6px 0; }
.stop > summary::-webkit-details-marker { display: none; }
.stop-form { display: flex; flex-direction: column; gap: var(--sp-3); margin-top: var(--sp-3);
  padding: var(--sp-4); border: 1px solid var(--danger); border-radius: 14px; background: var(--danger-soft); }
.stop-spiega { margin: 0; font-size: 0.875rem; }
.segmenti-colonna { flex-direction: column; align-items: stretch; }
.segmento-stop-scelta input:checked + span, .stop-form .segmento input:checked + span { background: var(--danger); border-color: var(--danger); color: var(--on-danger); }
.stop-form .segmento > span { background: var(--card); }
.btn-stop { background: var(--danger); border-color: var(--danger); color: var(--on-danger); font-weight: 600; min-height: 48px; }
.btn-stop:hover { filter: brightness(0.92); }
.avviso-stop-grande { border: 1.5px solid var(--danger); background: var(--danger-soft); border-radius: 16px;
  padding: var(--sp-4) var(--sp-5); margin: var(--sp-4) 0; }
.avviso-stop-grande h2 { color: var(--danger); font-size: 1.25rem; display: flex; gap: var(--sp-2); align-items: center; margin: 0 0 var(--sp-2); }
.avviso-stop-grande p { margin: 0 0 var(--sp-1); }
.scheda-temp { margin: var(--sp-3) 0 0; font-size: 0.9375rem; color: var(--muted-fg); } .prodotto-percorso { padding: var(--sp-2) 0; border-bottom: 1px solid var(--border); } .prodotto-percorso:last-child { border-bottom: 0; }

/* ---- Nuova azienda ---- */
.btn-nuova { margin: 0 var(--sp-3) var(--sp-3); min-height: 44px; border-radius: 12px; }
.nuova-form { display: flex; flex-direction: column; gap: var(--sp-4); margin-top: var(--sp-4); }
.due { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); }
.doppi { padding: var(--sp-4); border-radius: 14px; background: var(--warn-soft); border: 1px solid var(--warn); }
.doppi h2 { font-size: 1.0625rem; display: flex; gap: var(--sp-2); align-items: center; color: var(--warn); margin: 0 0 var(--sp-1); }
.doppi p { margin: 0 0 var(--sp-2); }
.doppi ul { list-style: none; margin: 0 0 var(--sp-3); padding: 0; }
.doppi li a { display: flex; flex-direction: column; padding: var(--sp-2) var(--sp-3); border-radius: 10px; background: var(--card); margin-bottom: 6px; color: var(--fg); }
.doppi li a:hover { text-decoration: none; outline: 2px solid var(--primary); }
.doppi li .muted { font-size: 0.8125rem; }
@media (max-width: 640px) { .due { grid-template-columns: 1fr; } }


/* =================================================================
   PALETTE LAIO STUDIO
   Nero e il rosso del cuore nel logo (#A3302E), carattere Manrope come
   su laiostudio.ch. Il nero fa le azioni principali, il rosso è la firma
   (menu attivo, «Aggiungi azienda», avvisi importanti). Il verde resta
   SOLO sul bottone per chiamare: è l'unica cosa che deve saltare all'occhio.
   ================================================================= */
:root {
  --font: 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

  --brand: #A3302E; --brand-hover: #862624; --brand-soft: #F7EAE9; --on-brand: #FFFFFF;

  --primary: #111111; --primary-hover: #2B2B2B; --primary-soft: #EFEDEA; --on-primary: #FFFFFF;
  --accent: #047857; --accent-hover: #065F46; --accent-soft: #ECFDF5; --on-accent: #FFFFFF;

  --bg: #F7F6F4; --fg: #111111;
  --card: #FFFFFF; --card-fg: #111111;
  --muted: #F0EEEB; --muted-fg: #5C5752;
  --border: #E7E3DF; --border-strong: #CFC9C3;
  --danger: #A3302E; --danger-soft: #F7EAE9; --on-danger: #FFFFFF;
  --info-soft: #EFEDEA;
  --ring: #A3302E;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --brand: #E0615E; --brand-hover: #EA8583; --brand-soft: #2E1716; --on-brand: #140707;
    --primary: #F2F0EE; --primary-hover: #FFFFFF; --primary-soft: #262422; --on-primary: #111111;
    --bg: #0E0E0E; --fg: #F2F0EE;
    --card: #181716; --card-fg: #F2F0EE;
    --muted: #22201F; --muted-fg: #A8A29E;
    --border: #2E2B29; --border-strong: #45403C;
    --danger: #E0615E; --danger-soft: #2E1716; --on-danger: #140707;
    --info-soft: #262422;
    --ring: #E0615E;
  }
}
:root[data-theme="dark"] {
  --brand: #E0615E; --brand-hover: #EA8583; --brand-soft: #2E1716; --on-brand: #140707;
  --primary: #F2F0EE; --primary-hover: #FFFFFF; --primary-soft: #262422; --on-primary: #111111;
  --bg: #0E0E0E; --fg: #F2F0EE;
  --card: #181716; --card-fg: #F2F0EE;
  --muted: #22201F; --muted-fg: #A8A29E;
  --border: #2E2B29; --border-strong: #45403C;
  --danger: #E0615E; --danger-soft: #2E1716; --on-danger: #140707;
  --info-soft: #262422;
  --ring: #E0615E;
}

body { font-feature-settings: "tnum" 1; }
h1, h2, h3, .focus-nome, .oggi-testa h1, .scheda-nome { font-weight: 800; letter-spacing: -0.025em; }
a { color: var(--brand); }
.focus-nome a, .chiama-link { color: var(--fg); }
.focus-nome a:hover { color: var(--brand); }

/* firma rossa */
.brand-mark { background: var(--brand) !important; color: var(--on-brand) !important; }
.nav-item[aria-current="page"] { background: var(--brand-soft); color: var(--brand); }
.nav-item[aria-current="page"] .icon { color: var(--brand); }
.btn-nuova { background: var(--brand); border-color: var(--brand); color: var(--on-brand); }
.btn-nuova:hover { background: var(--brand-hover); border-color: var(--brand-hover); color: var(--on-brand); }
.progresso-barra span { background: var(--brand); }
.focus-perche.is-oggi { color: var(--fg); }
.temp-caldo { background: var(--brand-soft); color: var(--brand); }
.temp-freddo { background: var(--muted); color: var(--muted-fg); }
.badge-info { background: var(--muted); color: var(--fg); }

/* i cinque esiti: nero per i tentativi, rosso LAIO per l'interesse,
   verde per la vendita, grigio scuro per il no */
.tono-neutro input:checked + .esito-icona { background: var(--primary); color: var(--on-primary); }
.tono-blu    input:checked + .esito-icona { background: var(--brand); color: var(--on-brand); }
.tono-rosso  input:checked + .esito-icona { background: #4A4541; color: #FFFFFF; }

/* il titolo della telefonata */
.telefonata-titolo { font-size: 1.375rem; margin: 0 0 var(--sp-4); }
.telefonata-dopo { display: flex; align-items: center; gap: var(--sp-3); margin: var(--sp-5) 0 var(--sp-4);
  color: var(--muted-fg); font-size: 0.8125rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; }
.telefonata-dopo::before, .telefonata-dopo::after { content: ""; flex: 1; height: 1px; background: var(--border); }

/* manca il numero */
.manca-numero { padding: var(--sp-4); border: 1.5px dashed var(--border-strong); border-radius: 16px; }
.manca-numero label { display: flex; gap: var(--sp-2); align-items: center; font-weight: 600; margin-bottom: var(--sp-2); }
.manca-numero-riga { display: flex; gap: var(--sp-2); }
.manca-numero-riga input { flex: 1; min-height: 48px; font-size: 1.125rem; border-radius: 12px; }
.manca-numero-riga .btn { min-height: 48px; border-radius: 12px; }

.scheda-registra { margin-top: var(--sp-5); }
.btn-nuova { white-space: normal; justify-content: flex-start; text-align: left; line-height: 1.25;
  padding: 10px 14px; font-weight: 700; gap: 10px; }
.btn-nuova .icon-sm { flex-shrink: 0; width: 18px; height: 18px; }
.segmento-data > span { font-size: 0.875rem; padding: 8px 10px; }

/* I controlli nativi (caselle, calendario) seguono il tema della PAGINA,
   non quello del sistema: prima con il Mac in scuro le caselle vuote
   sembravano già spuntate. */
:root { color-scheme: light; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { color-scheme: dark; } }
:root[data-theme="dark"] { color-scheme: dark; }
:root[data-theme="light"] { color-scheme: light; }
input[type=checkbox], input[type=radio] { accent-color: var(--brand); }

/* nomi negli elenchi: neri, rossi solo al passaggio */
.tbl td a, .cell-strong a { color: var(--fg); font-weight: 600; }
.tbl td a:hover, .cell-strong a:hover { color: var(--brand); }

/* ---- Zone ---- */
.zone-blocco { margin-top: var(--sp-5); }
.zone-lista { list-style: none; margin: 0 0 var(--sp-3); padding: 0; }
.zone-lista li { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-2) 0; border-bottom: 1px solid var(--border); }
.zone-lista li:last-child { border-bottom: 0; }
.zone-cap { font-size: 1.125rem; font-weight: 700; width: 64px; }
.zone-nome { flex: 1; color: var(--muted-fg); font-size: 0.9375rem; }
.zone-azioni select { width: auto; min-width: 140px; }
.zone-nuova { display: grid; grid-template-columns: 140px 1fr 140px auto; gap: var(--sp-2); }
.zone-anteprima { list-style: none; margin: 0 0 var(--sp-4); padding: 0; }
.zone-anteprima li { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid var(--border); }
.zone-sconosciute { display: flex; gap: var(--sp-2); align-items: flex-start; margin: var(--sp-4) 0 0; font-size: 0.875rem; color: var(--muted-fg); }
@media (max-width: 640px) { .zone-nuova { grid-template-columns: 1fr; } }
.cap-comune { display: grid; grid-template-columns: 84px 1fr; gap: var(--sp-2); }

/* ---- Passaggio fra colleghi ---- */
.passaggio p { margin: 0 0 var(--sp-3); }
.passaggio-stato { display: flex; gap: var(--sp-2); align-items: flex-start; padding: var(--sp-3) var(--sp-4);
  background: var(--muted); border-radius: 12px; }
.richiesta-card { border: 1.5px solid var(--brand); }
.richiesta-titolo { font-size: 1.25rem; font-weight: 600; margin: var(--sp-1) 0 var(--sp-2); }
.richiesta-titolo a { color: var(--fg); font-weight: 800; }
.richiesta-msg { font-style: italic; color: var(--muted-fg); margin: 0 0 var(--sp-3); }
.richiesta-form { display: flex; flex-direction: column; gap: var(--sp-2); }
.richiesta-bottoni { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-2); }
.richiesta-bottoni .btn { min-height: 48px; border-radius: 12px; }
.risposta-passaggio { display: flex; gap: var(--sp-2); align-items: flex-start; margin: 0; padding: var(--sp-3) var(--sp-4);
  border-radius: 12px; background: var(--card); border: 1px solid var(--border); }
.risposta-passaggio.is-si { border-color: var(--accent); }
.risposta-passaggio.is-si .icon-sm { color: var(--accent); }
.risposta-passaggio em { color: var(--muted-fg); margin-left: 4px; }

/* ---- Accesso ---- */
.login-nomi { display: flex; flex-direction: column; gap: var(--sp-2); }
.login-nome { justify-content: flex-start; gap: var(--sp-3); border-radius: 14px; font-weight: 600; }
.login-nome .avatar { width: 32px; height: 32px; font-size: 0.75rem; }
.login-lucchetto { margin-left: auto; color: var(--muted-fg); }
.login-errore { color: var(--danger); background: var(--danger-soft); padding: var(--sp-2) var(--sp-3); border-radius: 10px; font-size: 0.875rem; }
.login-card input[type=password] { min-height: 48px; font-size: 1.0625rem; margin-bottom: var(--sp-3); }

/* ---------- Segni della scheda: più sedi, azienda estera ---------- */
.scheda-segni { margin: calc(-1 * var(--sp-2, 8px)) 0 var(--sp-4, 16px); display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-size: 0.875rem; }
.segno { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 0.75rem; font-weight: 600;
  background: var(--muted); color: var(--fg); border: 1px solid var(--border, #e2ded8); white-space: nowrap; }
.segno-estera { background: transparent; color: var(--brand, #A3302E); border-color: var(--brand, #A3302E); }
.check-sedi > span { display: flex; align-items: center; gap: 8px; }
.check-sedi input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--brand, #A3302E); }
.assegna-card { border: 1.5px solid var(--brand); display: grid; gap: var(--sp-3); }
.assegna-card form .btn { width: 100%; }
.undo-bar .btn.btn-primary { background: var(--brand); color: #fff; }
.undo-bar .btn.btn-primary:hover { background: var(--brand-hover); }
.undo-bar form { margin: 0; }

/* ---------- Importa ---------- */
.carica { display: grid; gap: var(--sp-3); }
.carica-zona { position: relative; display: grid; justify-items: center; gap: 6px; padding: var(--sp-6) var(--sp-4);
  border: 2px dashed var(--border-strong); border-radius: var(--r-lg); text-align: center; cursor: pointer; transition: border-color var(--t), background var(--t); }
.carica-zona:hover, .carica-zona.sopra { border-color: var(--brand); background: var(--brand-soft); }
.carica-zona.ha-file { border-style: solid; border-color: var(--fg); }
.carica-zona input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.carica-icona svg { width: 32px; height: 32px; color: var(--brand); }
.importa-regole ul { margin: var(--sp-2) 0 0; padding-left: 1.1em; display: grid; gap: 4px; font-size: 0.9rem; }
.importa-storico { margin-top: var(--sp-5); }
.importa-storico ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-2); }
.importa-storico li { display: flex; justify-content: space-between; align-items: center; gap: var(--sp-3);
  padding: var(--sp-3); border: 1px solid var(--border); border-radius: var(--r); }
.importa-storico li > div { display: grid; gap: 2px; min-width: 0; }
.importa-storico li.is-annullata { opacity: .55; }
.importa-numeri { font-size: 0.8125rem; }
.importa-piano { display: grid; gap: var(--sp-4); }
.piano-numeri { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-2); }
.piano-numeri div { display: grid; gap: 2px; padding: var(--sp-3); border-radius: var(--r); background: var(--muted); }
.piano-numeri strong { font-size: 1.75rem; line-height: 1; }
.piano-numeri span { font-size: 0.8125rem; color: var(--muted-fg); }
.piano-righe, .piano-doppi { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; font-size: 0.9375rem; }
.piano-righe li, .piano-doppi li { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; }
.check-riga { display: flex; gap: 10px; align-items: center; font-size: 0.9375rem; }
.check-riga input { width: 18px; height: 18px; accent-color: var(--brand); }
.fogli { margin-bottom: var(--sp-4); flex-wrap: wrap; }
.segmento-link { padding: 6px 12px; border: 1px solid var(--border); border-radius: 999px; text-decoration: none; color: var(--fg); font-size: 0.875rem; }
.segmento-link.is-on { background: var(--fg); color: var(--bg); border-color: var(--fg); }
.colonne { margin-top: var(--sp-4); }
.colonne-tab { width: 100%; border-collapse: collapse; margin-top: var(--sp-2); }
.colonne-tab td { padding: 8px 4px; border-top: 1px solid var(--border); vertical-align: top; font-size: 0.875rem; }
.colonne-tab td:last-child { width: 45%; }
.colonne-tab select { width: 100%; }
@media (max-width: 560px) { .piano-numeri strong { font-size: 1.35rem; } }
.codice-box { border: 1.5px solid var(--brand); text-align: center; display: grid; gap: var(--sp-2); margin-bottom: var(--sp-4); }
.codice-grande { font-size: 2.25rem; font-weight: 700; letter-spacing: .12em; margin: 0; }
.login-invito { display: grid; gap: var(--sp-3); text-align: left; }
.backup-ora { display: grid; gap: var(--sp-3); }
.scarica-icona { transform: rotate(180deg); }
