# Corrección: Ubicación de Fuentes Tipográficas

**Fecha**: 2025-01-27  
**Motivo**: Las fuentes son parte de la identidad de marca del proyecto, no del sistema base

---

## 🎯 Problema Identificado

Las fuentes tipográficas fueron incorrectamente ubicadas en `config/cd-system.php` cuando deberían estar en `config/site.php`, ya que son parte de la **identidad de marca de cada proyecto**, no del sistema base.

### Separación de Responsabilidades

- **`cd-system.php`**: Configuración del sistema base (framework)
  - Versión del sistema
  - Módulos disponibles
  - Configuración de seguridad/rendimiento
  - **NO debe contener identidad de marca**

- **`site.php`**: Configuración del proyecto/cliente
  - Nombre del proyecto
  - SEO y meta tags
  - **Fuentes tipográficas (identidad de marca)** ✅
  - Assets del proyecto
  - Contenido específico

---

## ✅ Cambios Realizados

### 1. Movimiento de Fuentes a `site.php`

**Antes** (incorrecto):
```php
// config/cd-system.php
'theme' => [
  'fonts' => [
    'primary' => ['name' => 'Montserrat', ...],
    // ...
  ],
],
```

**Después** (correcto):
```php
// config/site.php
'theme' => [
  'mode' => 'light',
  'fonts' => [
    'primary' => [
      'name' => 'Montserrat',
      'source' => 'local',
      'path' => 'template/css/fonts/montserrat/',
      'weights' => [300, 400, 500, 600, 700],
      'styles' => ['normal', 'italic'],
    ],
    // ...
  ],
],
```

### 2. Limpieza de `cd-system.php`

**Cambio**: Las fuentes en `cd-system.php` ahora son solo valores por defecto mínimos para fallback:

```php
// config/cd-system.php
'theme' => [
  'demo' => 'demo-law-firm-2',
  'skin' => 'auto',
  // Fuentes por defecto del sistema (solo para fallback)
  'fonts' => [
    'primary' => 'Lexend',
    'secondary' => 'Lexend',
    'tertiary' => 'Open Sans',
  ],
],
```

### 3. Actualización de Helpers

**Estrategia de Prioridad**:
1. **Primero**: `site.theme.fonts` (identidad de marca del proyecto)
2. **Fallback**: `cd-system.theme.fonts` (valores por defecto del sistema)

**Funciones actualizadas**:
- `get_theme_font($type)` - Lee primero de `site.theme.fonts`
- `get_google_fonts_url()` - Lee primero de `site.theme.fonts`
- `get_dynamic_css_variables()` - Lee primero de `site.theme.fonts`

**Código de ejemplo**:
```php
// Prioridad 1: site.theme.fonts (identidad de marca del proyecto)
$fonts = config('site.theme.fonts', []);

// Prioridad 2: cd-system.theme.fonts (fallback del sistema)
if (empty($fonts)) {
    $fonts = config('cd-system.theme.fonts', []);
}
```

---

## 📊 Estructura Final

### `config/site.php`
```php
'theme' => [
  'mode' => 'light',  // Modo visual del proyecto
  'fonts' => [         // ✅ IDENTIDAD DE MARCA DEL PROYECTO
    'primary' => [...],
    'secondary' => [...],
    'tertiary' => [...],
  ],
],
```

### `config/cd-system.php`
```php
'theme' => [
  'demo' => 'demo-law-firm-2',  // Demo del sistema
  'skin' => 'auto',              // Skin del sistema
  'fonts' => [                   // Solo fallback (valores por defecto)
    'primary' => 'Lexend',
    'secondary' => 'Lexend',
    'tertiary' => 'Open Sans',
  ],
],
```

---

## 🔄 Compatibilidad

### Hacia Atrás
- ✅ Helpers mantienen compatibilidad con `cd-system.theme.fonts`
- ✅ Si no hay fuentes en `site.php`, usa fallback del sistema
- ✅ Soporta formato string (legacy) y array (nuevo)

### Migración
Para proyectos existentes:
1. Mover configuración de fuentes de `cd-system.php` a `site.php`
2. Colocar bajo `site.theme.fonts`
3. Los helpers automáticamente usarán la nueva ubicación

---

## ✅ Validación

- ✅ Sintaxis PHP validada
- ✅ Helpers actualizados correctamente
- ✅ Separación de responsabilidades clara
- ✅ Compatibilidad hacia atrás mantenida

---

## 📝 Lecciones Aprendidas

1. **Separación de Responsabilidades**: 
   - Sistema base vs. Identidad del proyecto
   - `cd-system.php` = Framework
   - `site.php` = Proyecto/Cliente

2. **Identidad de Marca**:
   - Fuentes, logos, colores = Identidad del proyecto
   - Deben estar en `site.php`, no en `cd-system.php`

3. **Fallbacks Inteligentes**:
   - Helpers leen primero del proyecto
   - Fallback al sistema si no está definido
   - Mantiene compatibilidad

---

**Estado**: ✅ Corregido y Validado
