/* CRM (pipeline de leads). Mismo lenguaje que Objetivos: neutros del sistema y
   un tono apagado por etapa (tokens --tone-* de design-tokens.css), siempre con
   punto + texto. Todo cuelga de #view-crm para no filtrarse a otras vistas. */
#view-crm .stage-prospecto         { --st: var(--tone-neutral); --st-bar: var(--tone-neutral-bar); --st-soft: var(--tone-neutral-soft); }
#view-crm .stage-propuesta_enviada { --st: var(--tone-info);    --st-bar: var(--tone-info-bar);    --st-soft: var(--tone-info-soft); }
#view-crm .stage-negociacion       { --st: var(--tone-warn);    --st-bar: var(--tone-warn-bar);    --st-soft: var(--tone-warn-soft); }
#view-crm .stage-cerrado_ganado    { --st: var(--tone-good);    --st-bar: var(--tone-good-bar);    --st-soft: var(--tone-good-soft); }
#view-crm .stage-cerrado_perdido   { --st: var(--tone-bad);     --st-bar: var(--tone-bad-bar);     --st-soft: var(--tone-bad-soft); }

#view-crm .crm-stack { display: flex; flex-direction: column; gap: 1.75rem; }
#view-crm .crm-dot { display: inline-block; width: 7px; height: 7px; border-radius: 999px; background: var(--st-bar); flex-shrink: 0; }

/* Cabecera */
#view-crm .crm-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem; }
#view-crm .crm-eyebrow { font-size: 0.75rem; font-weight: 500; color: var(--muted-foreground); letter-spacing: 0.04em; text-transform: uppercase; }
#view-crm .crm-title { font-size: 1.75rem; font-weight: 600; color: var(--foreground); line-height: 1.2; margin-top: 0.25rem; }
#view-crm .crm-sub { font-size: 0.875rem; color: var(--muted-foreground); margin-top: 0.375rem; }

/* Botones */
#view-crm .crm-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; min-height: 36px;
  padding: 0.5rem 0.875rem; border-radius: calc(var(--radius) - 2px);
  font-size: 0.8125rem; font-weight: 500; transition: background-color .15s, opacity .15s;
  border: 1px solid var(--border); background: var(--card); color: var(--foreground);
}
#view-crm .crm-btn:hover { background: var(--accent); }
#view-crm .crm-btn .ui-icon { font-size: 1rem; }
#view-crm .crm-btn-primary { background: var(--primary); border-color: var(--primary); color: var(--primary-foreground); }
#view-crm .crm-btn-primary:hover { background: var(--primary); opacity: 0.88; }
#view-crm .crm-btn:disabled { opacity: 0.6; cursor: progress; }
#view-crm .crm-icon-btn {
  display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 6px;
  color: var(--muted-foreground); transition: background-color .15s, color .15s;
}
#view-crm .crm-icon-btn .ui-icon { font-size: 1rem; }
#view-crm .crm-icon-btn:hover { background: var(--accent); color: var(--foreground); }
#view-crm .crm-icon-btn.is-danger:hover { background: var(--tone-bad-soft); color: var(--tone-bad); }

/* Resumen del pipeline: una franja, separadores de 1px */
#view-crm .crm-summary {
  display: grid; gap: 1px; grid-template-columns: repeat(2, minmax(0, 1fr));
  background: var(--border); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden;
}
#view-crm .crm-summary > :last-child { grid-column: span 2; }
@media (min-width: 768px) {
  #view-crm .crm-summary { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  #view-crm .crm-summary > :last-child { grid-column: auto; }
}
#view-crm .crm-summary-cell { background: var(--card); padding: 1rem 1.25rem; }
#view-crm .crm-summary-label { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; color: var(--muted-foreground); }
#view-crm .crm-summary-value { font-size: 1.5rem; font-weight: 600; letter-spacing: -0.02em; color: var(--foreground); margin-top: 0.25rem; }

/* Kanban: columnas neutras, scroll horizontal cuando no caben */
#view-crm .crm-board {
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(260px, 1fr); gap: 0.875rem;
  overflow-x: auto; padding-bottom: 0.5rem; scroll-snap-type: x proximity;
}
#view-crm .crm-col {
  display: flex; flex-direction: column; min-width: 0; scroll-snap-align: start;
  background: var(--background); border: 1px solid var(--border); border-radius: var(--radius); padding: 0.75rem;
}
.dark #view-crm .crm-col { background: color-mix(in srgb, var(--card) 55%, var(--background)); }
#view-crm .crm-col-head { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding: 0.25rem 0.25rem 0.75rem; }
#view-crm .crm-col-title { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8125rem; font-weight: 600; color: var(--foreground); }
#view-crm .crm-count {
  min-width: 1.5rem; padding: 0.0625rem 0.5rem; border-radius: 999px; text-align: center;
  font-size: 0.6875rem; font-weight: 500; color: var(--muted-foreground);
  background: var(--card); border: 1px solid var(--border); font-variant-numeric: tabular-nums;
}
#view-crm .crm-col-body { display: flex; flex-direction: column; gap: 0.5rem; min-height: 160px; }
#view-crm .crm-col-body:empty::before {
  content: 'Sin leads'; display: grid; place-items: center; min-height: 96px;
  border: 1px dashed var(--border); border-radius: calc(var(--radius) - 2px);
  font-size: 0.75rem; color: var(--muted-foreground);
}

#view-crm .crm-card {
  position: relative; padding: 0.875rem; cursor: pointer;
  background: var(--card); border: 1px solid var(--border); border-radius: calc(var(--radius) - 2px);
  transition: border-color .15s, box-shadow .15s;
}
#view-crm .crm-card:hover { border-color: var(--input); box-shadow: var(--shadow-sm); }
#view-crm .crm-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.5rem; }
#view-crm .crm-card-name { font-size: 0.8125rem; font-weight: 600; color: var(--foreground); line-height: 1.35; }
#view-crm .crm-card-company { font-size: 0.75rem; color: var(--muted-foreground); }
#view-crm .crm-card-actions { display: flex; gap: 0.125rem; margin: -0.25rem -0.375rem 0 0; }
@media (hover: hover) {
  #view-crm .crm-card-actions { opacity: 0; transition: opacity .15s; }
  #view-crm .crm-card:hover .crm-card-actions, #view-crm .crm-card:focus-within .crm-card-actions { opacity: 1; }
}
#view-crm .crm-card-project { font-size: 0.75rem; color: var(--sidebar-foreground); margin-top: 0.5rem; }
#view-crm .crm-card-amount { font-size: 0.9375rem; font-weight: 600; color: var(--foreground); letter-spacing: -0.01em; margin-top: 0.375rem; }
#view-crm .crm-card-notes { font-size: 0.75rem; color: var(--muted-foreground); margin-top: 0.375rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#view-crm .crm-card-date { font-size: 0.6875rem; color: var(--muted-foreground); margin-top: 0.625rem; }

#view-crm .crm-menu {
  position: absolute; right: 0.5rem; top: 2.25rem; z-index: 20; min-width: 190px; padding: 0.25rem;
  background: var(--popover); border: 1px solid var(--border); border-radius: calc(var(--radius) - 2px); box-shadow: var(--shadow-lg);
}
#view-crm .crm-menu button {
  display: flex; align-items: center; justify-content: flex-start; gap: 0.5rem; width: 100%; text-align: left;
  padding: 0.4375rem 0.625rem; border-radius: 6px; font-size: 0.8125rem; color: var(--foreground);
}
#view-crm .crm-menu button:hover { background: var(--accent); }
#view-crm .crm-menu button[aria-current="true"] { background: var(--muted); font-weight: 500; }

/* Tabla */
#view-crm section.crm-panel { padding: 0; overflow: hidden; }
#view-crm .crm-panel-head { padding: 1.125rem 1.5rem; border-bottom: 1px solid var(--border); }
#view-crm .crm-panel-head h2 { font-size: 1rem; font-weight: 600; color: var(--foreground); }
#view-crm .crm-panel-head p { font-size: 0.8125rem; color: var(--muted-foreground); margin-top: 0.125rem; }
#view-crm .list-table th { border-radius: 0; }
#view-crm .list-table td { color: var(--muted-foreground); }
#view-crm .list-table td.crm-strong { color: var(--foreground); font-weight: 500; font-variant-numeric: tabular-nums; }
#view-crm .crm-stage {
  display: inline-flex; align-items: center; gap: 0.375rem; white-space: nowrap;
  padding: 0.125rem 0.5rem; border-radius: 999px; font-size: 0.6875rem; font-weight: 500;
  color: var(--st); background: var(--st-soft);
}
#view-crm .crm-stage::before { content: ''; width: 6px; height: 6px; border-radius: 999px; background: var(--st-bar); }

/* Modales */
#view-crm .crm-overlay { background: rgb(9 9 11 / 0.45); backdrop-filter: blur(2px); padding: 1rem; }
#view-crm .crm-overlay.hidden { display: none; }
#view-crm .crm-dialog {
  width: 100%; max-width: 30rem; max-height: calc(100dvh - 2rem); overflow-y: auto;
  background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-xl);
}
#view-crm .crm-dialog-head { display: flex; align-items: center; justify-content: space-between; padding: 1.125rem 1.5rem; border-bottom: 1px solid var(--border); }
#view-crm .crm-dialog-head h3 { font-size: 1rem; font-weight: 600; color: var(--foreground); }
#view-crm .crm-dialog form { padding: 1.25rem 1.5rem 1.5rem; display: flex; flex-direction: column; gap: 1rem; }
#view-crm .crm-label { display: block; font-size: 0.8125rem; font-weight: 500; color: var(--foreground); margin-bottom: 0.375rem; }
#view-crm .crm-label em { font-style: normal; color: var(--muted-foreground); font-weight: 400; }
#view-crm .crm-field { width: 100%; min-height: 38px; padding: 0.5rem 0.75rem; font-size: 0.875rem; }
#view-crm .crm-field.pl-8 { padding-left: 2rem; }
#view-crm .crm-field.pr-9 { padding-right: 2.25rem; }
#view-crm .crm-field:focus { outline: none; border-color: var(--ring); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ring) 22%, transparent); }
#view-crm .crm-hint { font-size: 0.75rem; color: var(--muted-foreground); }
#view-crm .crm-link { display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.75rem; font-weight: 500; color: var(--foreground); text-decoration: underline; text-decoration-color: var(--border); text-underline-offset: 3px; }
#view-crm .crm-link:hover { text-decoration-color: currentColor; }
#view-crm .crm-dialog-foot { display: flex; gap: 0.625rem; justify-content: flex-end; padding-top: 0.5rem; }
@media (max-width: 480px) { #view-crm .crm-dialog-foot > * { flex: 1; } }

/* Las clases de componente no deben ganar a .hidden (el JS la conmuta) */
#view-crm .hidden { display: none; }

/* Aviso flotante (se monta en <body>, fuera de #view-crm) */
#crm-notification.crm-toast {
  display: flex; align-items: center; gap: 0.625rem; padding: 0.75rem 1rem; max-width: min(24rem, calc(100vw - 2rem));
  background: var(--popover); color: var(--foreground); border: 1px solid var(--border);
  border-radius: var(--radius); box-shadow: var(--shadow-lg); font-size: 0.8125rem; transition: opacity .3s;
}
#crm-notification.crm-toast .ui-icon { font-size: 1.125rem; color: var(--toast-tone, var(--muted-foreground)); }
#crm-notification.is-success { --toast-tone: var(--tone-good); }
#crm-notification.is-error { --toast-tone: var(--tone-bad); }
#crm-notification.is-info { --toast-tone: var(--tone-info); }
