/*
 * theme.css — Design Tokens & Component Classes
 * Fuente única de verdad para colores, tipografía, espaciado y componentes.
 * No sobreescribe Bootstrap ni app.css. Se usa en templates nuevos/editados.
 */

/* ============================================================
   TOKENS — Variables globales
   ============================================================ */
:root {
  /* Colores principales */
  --crm-primary:         #0d6efd;
  --crm-primary-hover:   #0b5ed7;
  --crm-primary-light:   rgba(13, 110, 253, 0.12);

  --crm-success:         #198754;
  --crm-danger:          #dc3545;
  --crm-warning:         #ffc107;
  --crm-orange:          #fd7e14;
  --crm-purple:          #6f42c1;
  --crm-info:            #0bb2d3;

  /* Texto */
  --crm-text:            #4c5258;
  --crm-text-heading:    #212529;
  --crm-text-muted:      #6c757d;
  --crm-text-light:      #adb5bd;

  /* Fondos */
  --crm-bg-body:         #f4f4f4;
  --crm-bg-card:         #ffffff;
  --crm-bg-input:        #ffffff;

  /* Bordes */
  --crm-border:          #dee2e6;
  --crm-border-input:    #ced4da;
  --crm-radius-sm:       0.25rem;
  --crm-radius:          0.375rem;
  --crm-radius-lg:       0.5rem;
  --crm-radius-xl:       0.75rem;

  /* Sombras */
  --crm-shadow-sm:       0 1px 3px rgba(0, 0, 0, 0.08);
  --crm-shadow:          0 4px 12px rgba(0, 0, 0, 0.10);
  --crm-shadow-lg:       0 8px 24px rgba(0, 0, 0, 0.12);

  /* Tipografía */
  --crm-font:            'Roboto', sans-serif;
  --crm-font-size:       14px;
  --crm-font-size-sm:    12px;
  --crm-font-size-lg:    16px;
  --crm-line-height:     1.5;

  /* Inputs */
  --crm-input-height:    38px;
  --crm-input-padding:   0.45rem 0.75rem;
  --crm-input-focus-shadow: 0 0 0 3px rgba(13, 110, 253, 0.18);

  /* Sidebar / Layout */
  --crm-sidebar-width:   260px;
  --crm-topbar-height:   60px;
}

/* ============================================================
   DARK THEME — Overrides de tokens
   ============================================================ */
.dark-theme {
  --crm-text:            #b8bcc2;
  --crm-text-heading:    #e2e3e4;
  --crm-text-muted:      #7a8087;
  --crm-text-light:      #50555a;

  --crm-bg-body:         #121314;
  --crm-bg-card:         #191a1b;
  --crm-bg-input:        #151516;

  --crm-border:          #2a2b2c;
  --crm-border-input:    #303233;

  --crm-shadow-sm:       0 1px 3px rgba(0, 0, 0, 0.35);
  --crm-shadow:          0 4px 12px rgba(0, 0, 0, 0.45);
}

/* ============================================================
   COMPONENTES REUTILIZABLES
   ============================================================ */

/* --- Card --- */
.crm-card {
  background: var(--crm-bg-card);
  border: 1px solid var(--crm-border);
  border-radius: var(--crm-radius-lg);
  box-shadow: var(--crm-shadow-sm);
}

.crm-card-body {
  padding: 1.25rem;
}

/* --- Inputs & Selects --- */
.crm-input,
.crm-select {
  height: var(--crm-input-height);
  width: 100%;
  border: 1px solid var(--crm-border-input);
  border-radius: var(--crm-radius);
  background: var(--crm-bg-input);
  color: var(--crm-text);
  font-family: var(--crm-font);
  font-size: var(--crm-font-size);
  padding: var(--crm-input-padding);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
  outline: none;
  appearance: none;
}

.crm-input:focus,
.crm-select:focus {
  border-color: var(--crm-primary);
  box-shadow: var(--crm-input-focus-shadow);
}

.crm-input::placeholder {
  color: var(--crm-text-light);
}

.crm-input:disabled,
.crm-select:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  background: var(--crm-bg-body);
}

/* Select arrow */
.crm-select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath fill='%236c757d' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.75rem center;
  padding-right: 2.25rem;
}

/* --- Labels --- */
.crm-label {
  font-size: var(--crm-font-size-sm);
  font-weight: 500;
  color: var(--crm-text);
  margin-bottom: 0.35rem;
  display: flex;
  align-items: center;
  gap: 0.35rem;
  user-select: none;
}

.crm-label i {
  font-size: 0.85rem;
  color: var(--crm-text-muted);
}

/* --- Títulos de sección --- */
.crm-section-label {
  font-size: var(--crm-font-size-sm);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--crm-text-muted);
  border-bottom: 1px solid var(--crm-border);
  padding-bottom: 0.4rem;
  margin-bottom: 1rem;
}

/* --- Step badge (formularios multi-paso) --- */
.crm-step-badge {
  width: 28px;
  height: 28px;
  min-width: 28px;
  border-radius: 7px;
  background: var(--crm-primary);
  color: #ffffff;
  font-size: 0.8rem;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
}

.crm-step-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1.25rem;
}

.crm-step-title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--crm-text-heading);
  margin: 0;
}

/* --- Botones --- */
.crm-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.45rem 1.1rem;
  font-size: var(--crm-font-size);
  font-weight: 500;
  border-radius: var(--crm-radius);
  border: 1px solid transparent;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, opacity 0.15s;
  text-decoration: none;
  white-space: nowrap;
}

.crm-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.crm-btn-primary {
  background: var(--crm-primary);
  color: #ffffff;
  border-color: var(--crm-primary);
}

.crm-btn-primary:hover:not(:disabled) {
  background: var(--crm-primary-hover);
  border-color: var(--crm-primary-hover);
  color: #ffffff;
}

.crm-btn-outline {
  background: transparent;
  color: var(--crm-text);
  border-color: var(--crm-border-input);
}

.crm-btn-outline:hover:not(:disabled) {
  background: var(--crm-bg-body);
  color: var(--crm-text-heading);
}

.crm-btn-danger {
  background: var(--crm-danger);
  color: #ffffff;
  border-color: var(--crm-danger);
}

.crm-btn-danger:hover:not(:disabled) {
  background: #b91c1c;
  border-color: #b91c1c;
  color: #ffffff;
}

/* --- Alertas --- */
.crm-alert {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.8rem 1rem;
  border-radius: var(--crm-radius-lg);
  font-size: var(--crm-font-size);
  border: 1px solid transparent;
}

.crm-alert-error {
  background: #fef2f2;
  border-color: #fecaca;
  color: #b91c1c;
}

.crm-alert-success {
  background: #f0fdf4;
  border-color: #bbf7d0;
  color: #166534;
}

.crm-alert-warning {
  background: #fffbeb;
  border-color: #fde68a;
  color: #92400e;
}

.dark-theme .crm-alert-error {
  background: rgba(185, 28, 28, 0.12);
  border-color: rgba(185, 28, 28, 0.3);
  color: #f87171;
}

.dark-theme .crm-alert-success {
  background: rgba(22, 101, 52, 0.15);
  border-color: rgba(22, 101, 52, 0.3);
  color: #4ade80;
}

/* --- Texto utilitario --- */
.crm-text-muted   { color: var(--crm-text-muted)   !important; }
.crm-text-heading { color: var(--crm-text-heading)  !important; }
.crm-text-primary { color: var(--crm-primary)       !important; }
.crm-text-sm      { font-size: var(--crm-font-size-sm) !important; }

/* --- Badge de estado --- */
.crm-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  padding: 0.2rem 0.6rem;
  border-radius: 999px;
  font-size: var(--crm-font-size-sm);
  font-weight: 500;
}

.crm-badge-primary { background: var(--crm-primary-light); color: var(--crm-primary); }
.crm-badge-success { background: rgba(25,135,84,.12);      color: var(--crm-success); }
.crm-badge-danger  { background: rgba(220,53,69,.12);      color: var(--crm-danger);  }
.crm-badge-warning { background: rgba(255,193,7,.15);      color: #856404;            }

/* --- Divider --- */
.crm-divider {
  border: none;
  border-top: 1px solid var(--crm-border);
  margin: 1.25rem 0;
}

/* --- Formulario grupo --- */
.crm-field {
  display: flex;
  flex-direction: column;
  gap: 0;
}
