/**
 * variables.css — Sistema de Diseño Global (Design Tokens + Utilidades)
 * Portal Ciudadano Sisvantec V8.3
 *
 * ESTRUCTURA:
 *  1. TOKENS ─ Colores (estáticos + dinámicos desde Firebase)
 *  2. TOKENS ─ Tipografía
 *  3. TOKENS ─ Espaciado
 *  4. TOKENS ─ Bordes y Radios
 *  5. TOKENS ─ Sombras
 *  6. TOKENS ─ Transiciones y Z-index
 *  7. TOKENS ─ Derivados (hover, border, text, line-height)
 *  8. UTILIDADES ─ Colores de fondo y texto
 *  9. UTILIDADES ─ Botones
 * 10. UTILIDADES ─ Cards
 * 11. UTILIDADES ─ Badges
 */

/* ════════════════════════════════════════════════════════════════
   1. TOKENS — COLORES
   theme-init.js sobreescribe las variables --color-* en runtime
   usando los valores dinámicos de Firestore (branding_template).
   Las variables --primary-burgundy / --secondary-beige son los
   valores de fallback institucionales.
   ════════════════════════════════════════════════════════════════ */
:root {
  /* Paleta primaria (fallback estático — Sisvantec brand color, overrideado por theme-init.js) */
  --primary-burgundy: #1AB09C;
  --primary-burgundy-dark: #0A8074;
  --primary-burgundy-light: #3AC8B4;
  --primary-burgundy-soft: rgba(26, 176, 156, 0.1);

  /* Paleta secundaria — Sisvantec gray */
  --secondary-beige: #4A5559;
  --secondary-beige-dark: #2A3539;
  --secondary-beige-light: #6A7579;

  /* Acento — Sisvantec accent */
  --accent-gold: #D32F5F;
  --accent-gold-dark: #A31F3F;
  --accent-gold-light: #E34F7F;

  /* ── Variables dinámicas (populadas por theme-init.js) ────── */
  /* Inicializadas con los mismos valores que los fallbacks.     */
  --color-primary: var(--primary-burgundy);
  --color-primary-dark: var(--primary-burgundy-dark);
  --color-primary-light: var(--primary-burgundy-light);
  --color-primary-soft-bg: var(--primary-burgundy-soft);
  --color-primary-rgb: 122, 46, 61;

  --color-secondary: var(--secondary-beige);
  --color-secondary-dark: var(--secondary-beige-dark);
  --color-secondary-light: var(--secondary-beige-light);
  --color-secondary-rgb: 226, 217, 197;

  --color-accent: var(--accent-gold);
  --color-accent-rgb: 184, 134, 11;

  --color-background: #f8f9fa;
  --color-surface: #ffffff;

  /* DEPRECATED — Alias de retrocompatibilidad, usar --color-background y --gray-800 */
  --bg-light: var(--color-background);
  --text-dark: #2d3748;

  /* Escala de grises */
  --gray-50: #f8fafc;
  --gray-100: #f1f5f9;
  --gray-200: #e2e8f0;
  --gray-300: #cbd5e1;
  --gray-400: #94a3b8;
  --gray-500: #64748b;
  --gray-600: #475569;
  --gray-700: #334155;
  --gray-800: #1e293b;
  --gray-900: #0f172a;

  /* Colores semánticos */
  --success: #10b981;
  --success-light: #d1fae5;
  --warning: #f59e0b;
  --warning-light: #fef3c7;
  --danger: #ef4444;
  --danger-light: #fee2e2;
  --info: #3b82f6;
  --info-light: #dbeafe;

  /* Colores de estado V8 */
  --color-coral: #ff7f50;
  --color-coral-rgb: 255, 127, 80;
  --color-coral-bg: rgba(255, 127, 80, 0.15);
  --color-gray: #6b7280;
  --color-gray-rgb: 107, 114, 128;
  --color-gray-bg: rgba(107, 114, 128, 0.15);
  --color-teal: #0d9488;
  --color-teal-rgb: 13, 148, 136;
  --color-teal-bg: rgba(13, 148, 136, 0.15);

  /* DEPRECATED — Retrocompatibilidad de estado, usar --color-coral/gray/teal */
  --coral: var(--color-coral);
  --coral-light: var(--color-coral-bg);
  --gray: var(--color-gray);
  --gray-light: var(--color-gray-bg);
  --teal: var(--color-teal);
  --teal-light: var(--color-teal-bg);

  /* ════════════════════════════════════════════════════════════════
   2. TOKENS — TIPOGRAFÍA
   ════════════════════════════════════════════════════════════════ */
  --font-family:
    "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  --font-size-xs: 0.75rem; /* 12px */
  --font-size-sm: 0.875rem; /* 14px */
  --font-size-base: 1rem; /* 16px */
  --font-size-lg: 1.125rem; /* 18px */
  --font-size-xl: 1.25rem; /* 20px */
  --font-size-2xl: 1.5rem; /* 24px */
  --font-size-3xl: 1.875rem; /* 30px */
  --font-size-4xl: 2.25rem; /* 36px */

  --font-weight-normal: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
  --font-weight-extrabold: 800;

  /* ════════════════════════════════════════════════════════════════
   3. TOKENS — ESPACIADO
   ════════════════════════════════════════════════════════════════ */
  --spacing-1: 0.25rem; /*  4px */
  --spacing-2: 0.5rem; /*  8px */
  --spacing-3: 0.75rem; /* 12px */
  --spacing-4: 1rem; /* 16px */
  --spacing-5: 1.25rem; /* 20px */
  --spacing-6: 1.5rem; /* 24px */
  --spacing-8: 2rem; /* 32px */
  --spacing-10: 2.5rem; /* 40px */
  --spacing-12: 3rem; /* 48px */
  --spacing-16: 4rem; /* 64px */

  /* ════════════════════════════════════════════════════════════════
   4. TOKENS — BORDES Y RADIOS
   ════════════════════════════════════════════════════════════════ */
  --radius-sm: 0.25rem; /*  4px */
  --radius-md: 0.5rem; /*  8px */
  --radius-lg: 0.75rem; /* 12px */
  --radius-xl: 1rem; /* 16px */
  --radius-2xl: 1.5rem; /* 24px */
  --radius-full: 9999px;

  /* DEPRECATED — Alias de retrocompatibilidad, usar --radius-lg */
  --border-radius: 0.75rem; /* 12px — usado por global.css */
  --border-radius-md: 0.75rem; /* sobreescribible por theme-init.js */

  /* ════════════════════════════════════════════════════════════════
   5. TOKENS — SOMBRAS
   Sombras modernas con difuminado amplio y baja opacidad para
   profundidad sutil y limpia. Funcionan con cualquier fondo.
   ════════════════════════════════════════════════════════════════ */
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.06);
  --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.06), 0 1px 3px rgba(0, 0, 0, 0.04);
  --shadow-lg: 0 8px 30px rgba(0, 0, 0, 0.07), 0 2px 8px rgba(0, 0, 0, 0.04);
  --shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.04);

  /* Sombra de elevación para elementos interactivos al hover */
  --shadow-hover: 0 12px 36px rgba(0, 0, 0, 0.1), 0 4px 12px rgba(0, 0, 0, 0.05);

  /* DEPRECATED — Alias, usar --shadow-md. Sobreescribible por theme-init.js */
  --card-shadow: var(--shadow-md);
  --shadow-card: var(--card-shadow);

  /* ════════════════════════════════════════════════════════════════
   6. TOKENS — TRANSICIONES Y Z-INDEX
   ════════════════════════════════════════════════════════════════ */
  --transition-fast: 150ms ease-in-out;
  --transition-base: 200ms ease-in-out;
  --transition-slow: 300ms ease-in-out;

  --z-dropdown: 1000;
  --z-sticky: 1020;
  --z-fixed: 1030;
  --z-modal-backdrop: 1040;
  --z-modal: 1050;
  --z-popover: 1060;
  --z-tooltip: 1070;

  /* ════════════════════════════════════════════════════════════════
   7. TOKENS DERIVADOS — Computados desde los dinámicos
   theme-init.js también sobreescribe estos en runtime.
   ════════════════════════════════════════════════════════════════ */

  /* Hover/focus del color primario */
  --color-primary-hover: var(--primary-burgundy-dark);
  --shadow-focus-primary: 0 0 0 3px rgba(var(--color-primary-rgb), 0.1);

  /* Bordes */
  --color-border: var(--gray-200);

  /* Texto semántico */
  --color-text-primary: var(--gray-800);
  --color-text-secondary: var(--gray-500);
  --color-text-tertiary: var(--gray-400);

  /* Line-heights */
  --line-height-tight: 1.25;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.75;
}

/* ════════════════════════════════════════════════════════════════
   8. UTILIDADES — COLORES DE FONDO Y TEXTO
   ════════════════════════════════════════════════════════════════ */
.bg-primary {
  background-color: var(--color-primary) !important;
}
.bg-burgundy {
  background-color: var(--primary-burgundy) !important;
}
.bg-burgundy-soft {
  background-color: var(--primary-burgundy-soft) !important;
}
.bg-beige {
  background-color: var(--secondary-beige) !important;
}
.bg-gold {
  background-color: var(--accent-gold) !important;
}

.bg-coral {
  background-color: var(--color-coral) !important;
  color: #fff !important;
}
.bg-coral-light {
  background-color: var(--color-coral-bg) !important;
  color: var(--color-coral) !important;
}
.bg-gray-status {
  background-color: var(--color-gray) !important;
  color: #fff !important;
}
.bg-gray-light {
  background-color: var(--color-gray-bg) !important;
  color: var(--color-gray) !important;
}
.bg-teal {
  background-color: var(--color-teal) !important;
  color: #fff !important;
}
.bg-teal-light {
  background-color: var(--color-teal-bg) !important;
  color: var(--color-teal) !important;
}

.text-burgundy {
  color: var(--primary-burgundy) !important;
}
.text-beige {
  color: var(--secondary-beige) !important;
}
.text-gold {
  color: var(--accent-gold) !important;
}
.text-coral {
  color: var(--color-coral) !important;
}
.text-gray-status {
  color: var(--color-gray) !important;
}
.text-teal {
  color: var(--color-teal) !important;
}

.border-burgundy {
  border-color: var(--primary-burgundy) !important;
}

/* ════════════════════════════════════════════════════════════════
   9. UTILIDADES — BOTONES
   ════════════════════════════════════════════════════════════════ */
.btn-burgundy {
  background-color: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
}
.btn-burgundy:hover,
.btn-burgundy:focus {
  background-color: var(--color-primary-dark);
  border-color: var(--color-primary-dark);
  color: #fff;
}

.btn-outline-burgundy {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: transparent;
}
.btn-outline-burgundy:hover {
  background-color: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
}

.btn-secondary {
  background-color: var(--color-secondary);
  border-color: var(--color-secondary);
  color: var(--color-text-primary);
  transition: all var(--transition-base);
}
.btn-secondary:hover,
.btn-secondary:focus {
  background-color: var(--color-secondary-dark);
  border-color: var(--color-secondary-dark);
  color: var(--color-text-primary);
}

.btn-soft-secondary {
  background-color: var(--color-secondary-light);
  border-color: var(--color-secondary);
  color: var(--color-text-primary);
  transition: all var(--transition-base);
}
.btn-soft-secondary:hover,
.btn-soft-secondary:focus {
  background-color: var(--color-secondary);
  border-color: var(--color-secondary-dark);
  color: var(--color-text-primary);
}

.btn-secondary-beige {
  background-color: var(--secondary-beige-light);
  border-color: var(--secondary-beige);
  color: var(--primary-burgundy);
}
.btn-secondary-beige:hover {
  background-color: var(--secondary-beige);
  color: var(--primary-burgundy);
}

.btn-coral {
  background-color: var(--color-coral) !important;
  border-color: var(--color-coral) !important;
  color: #fff !important;
}
.btn-coral:hover {
  background-color: color-mix(in srgb, var(--color-coral) 85%, black) !important;
  border-color: color-mix(in srgb, var(--color-coral) 85%, black) !important;
}
.btn-gray-status {
  background-color: var(--color-gray) !important;
  border-color: var(--color-gray) !important;
  color: #fff !important;
}
.btn-gray-status:hover {
  background-color: var(--gray-600) !important;
  border-color: var(--gray-600) !important;
}
.btn-teal {
  background-color: var(--color-teal) !important;
  border-color: var(--color-teal) !important;
  color: #fff !important;
}
.btn-teal:hover {
  background-color: color-mix(in srgb, var(--color-teal) 85%, black) !important;
  border-color: color-mix(in srgb, var(--color-teal) 85%, black) !important;
}

/* ════════════════════════════════════════════════════════════════
   10. UTILIDADES — CARDS
   ════════════════════════════════════════════════════════════════ */

/* Card con acento izquierdo */
.card-burgundy {
  border-left: 4px solid var(--color-primary);
}

/* Card sin fondo (panel transparente, overlays) */
.card-transparent {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

/* ════════════════════════════════════════════════════════════════
   11. UTILIDADES — BADGES
   ════════════════════════════════════════════════════════════════ */
.badge-burgundy {
  background-color: var(--color-primary);
  color: #fff;
}

/* Badges de color de estado */
.badge-primary {
  background-color: var(--primary-burgundy-soft) !important;
  color: var(--primary-burgundy) !important;
}
.badge-secondary {
  background-color: var(--gray-100) !important;
  color: var(--gray-600) !important;
}
.badge-success {
  background-color: var(--success-light) !important;
  color: var(--success) !important;
}
.badge-warning {
  background-color: var(--warning-light) !important;
  color: var(--warning) !important;
}
.badge-danger {
  background-color: var(--danger-light) !important;
  color: var(--danger) !important;
}
.badge-info {
  background-color: var(--info-light) !important;
  color: var(--info) !important;
}

.badge-coral {
  background-color: var(--color-coral-bg) !important;
  color: var(--color-coral) !important;
  border: 1px solid rgba(255, 127, 80, 0.2);
}
.badge-gray {
  background-color: var(--color-gray-bg) !important;
  color: var(--color-gray) !important;
  border: 1px solid rgba(107, 114, 128, 0.2);
}
.badge-teal {
  background-color: var(--color-teal-bg) !important;
  color: var(--color-teal) !important;
  border: 1px solid rgba(13, 148, 136, 0.2);
}
