Commit Graph

137 Commits

Author SHA1 Message Date
FrankZamora
9224f651f5 feat(admin): Mostrar cards en grid de 2 columnas
- Row 1: Activación + Contenido (col-md-6 cada uno)
- Row 2: Estilos + Vista Previa (col-md-6 cada uno)
- Añadido h-100 para altura uniforme entre cards

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 22:47:41 -06:00
FrankZamora
90b492886f fix(admin): Apilar toggles verticalmente en sección Activación
- Eliminar row g-4 y col-md-4 que causaban layout horizontal
- Cambiar a divs con mb-4 para espaciado vertical consistente
- Último elemento con mb-0 para evitar espacio extra
- Los 3 toggles ahora se apilan verticalmente como cards

Issue: #144

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 22:31:50 -06:00
FrankZamora
27bc0cea53 feat(admin): Implementar vista previa en tiempo real del Top Bar
Funcionalidades JavaScript agregadas:
- Actualización de progress bar junto con contador de caracteres
- Progress bar cambia de color según proximidad al límite:
  * Naranja: 0-200 caracteres
  * Amarillo: 201-230 caracteres
  * Rojo: 231-250 caracteres
- Vista previa en tiempo real del Top Bar (setupLivePreview)
- Actualización automática al modificar cualquier campo:
  * Icono y visibilidad
  * Texto destacado
  * Mensaje principal
  * Enlace y visibilidad
  * Colores (fondo, texto, destacado)
  * Tamaño de fuente
- Renderizado HTML dinámico en tiempo real
- Listeners optimizados con event delegation

La vista previa refleja exactamente cómo se verá en el frontend

Issue: #144

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 22:27:33 -06:00
FrankZamora
4dc188c76c feat(admin): Agregar estilos profesionales al Admin Panel
Mejoras CSS implementadas:
- Variables CSS con paleta APUs completa (Navy + Orange + Neutrales)
- Clases de utilidad para colores de marca
- Tab header con gradiente sutil y borde lateral naranja
- Section titles con iconos en gradiente
- Cards con hover effects y transiciones suaves
- Toggle containers con fondos y bordes
- Form switches grandes (3rem) con colores personalizados
- Input groups sin bordes intermedios
- Color pickers con hover effects y transform
- Alert personalizado con gradiente naranja
- Animación fadeInUp para vista previa
- Botones de marca Navy y Orange con hover effects
- Progress bar con transiciones suaves
- Badges y typography utilities
- Responsive design para móviles

Todo con transiciones fluidas y sistema de spacing consistente

Issue: #144

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 22:27:21 -06:00
FrankZamora
bcd87766ba feat(admin): Aplicar diseño mejorado al componente Top Bar
Mejoras implementadas:
- Header del tab con gradiente y botón de restaurar defaults
- Cards con sombras y bordes sutiles para las secciones
- Section titles con iconos destacados en gradiente naranja
- Toggle containers con fondo gris claro y bordes
- Input groups sin bordes intermedios (merge)
- Color pickers mejorados con preview de código hex
- Progress bar visual para contador de caracteres del mensaje
- Alert personalizado con tip de diseño
- Vista previa interactiva del Top Bar en tiempo real
- Badges para indicadores (Opcional, Requerido)
- Iconografía consistente con Bootstrap Icons
- Espaciado mejorado con sistema g-4

Diseño coherente con paleta APUs (Navy + Orange + Neutrales)

Issue: #144

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 22:27:08 -06:00
FrankZamora
6d93e1ac5e feat(admin): Cargar módulo del Admin Panel en functions.php
- Agregar require_once para admin-panel/init.php
- Inicializar módulo del Admin Panel (Phase 1-2: Base Structure)
- Permitir acceso a configuraciones de componentes del tema

Issue: #144

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 22:05:49 -06:00
FrankZamora
59253833a2 feat(admin): Agregar contador de caracteres para textarea del Top Bar
- Implementar setupCharacterCounter() en AdminPanel
- Agregar listener de evento 'input' para actualizar contador en tiempo real
- Cambiar color del contador según proximidad al límite (230: danger, 200: warning)
- Trigger automático del contador al cargar/renderizar configuración
- Integrar llamada a setupCharacterCounter() en bindEvents()

Basado en: 07-IMPLEMENTACION-ADMIN-JS.md
Issue: #144

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 22:05:33 -06:00
FrankZamora
cc072e407a feat(admin): Implementar interfaz HTML del Top Bar según especificación
- Actualizar main.php con diseño completo del Tab Top Bar
- Agregar switches en lugar de checkboxes básicos
- Implementar layout responsive con grid Bootstrap
- Agregar textarea con contador de caracteres para mensaje
- Implementar color pickers para estilos personalizados
- Mejorar accesibilidad con labels y roles ARIA
- Agregar vista previa informativa

Basado en: 05-IMPLEMENTACION-ADMIN-INTERFAZ-TOP-BAR.md
Issue: #144

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 22:05:23 -06:00
FrankZamora
fb36424112 Fix Admin Panel: Resolver error de nonce y validación de URLs
Dos fixes críticos para el admin panel del tema:

1. **Fix error de nonce en AJAX**
   - Cambiar de wp_verify_nonce() a check_ajax_referer()
   - check_ajax_referer() es el método recomendado por WordPress para AJAX
   - Aplicado en ajax_get_settings() y ajax_save_settings()
   - El nonce ahora se valida correctamente

2. **Fix validación de URLs relativas**
   - Aceptar URLs relativas que empiezan con / (ej: /catalogo)
   - filter_var() con FILTER_VALIDATE_URL rechazaba URLs relativas
   - Agregada validación adicional con regex para paths relativos
   - Mantiene validación para URLs completas

Archivos modificados:
- admin-panel/includes/class-settings-manager.php
- admin-panel/includes/class-validator.php

Issue: #144

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-10 10:58:50 -06:00
FrankZamora
3beb292901 Fix: Corregir formato AJAX WordPress en Admin Panel
Causa raíz del error 400: El código estaba usando formato JSON cuando WordPress AJAX requiere application/x-www-form-urlencoded.

## Problema

**Error:** POST admin-ajax.php 400 (Bad Request)

**Causas:**
1. JavaScript enviaba datos como JSON (`Content-Type: application/json`)
2. PHP usaba `json_decode(file_get_contents('php://input'))`
3. WordPress AJAX espera `$_POST` con `action` y `nonce`

## Solución

### JavaScript (admin-app.js)
```javascript
// ANTES ( Incorrecto)
data: JSON.stringify({
  action: 'apus_save_settings',
  nonce: apusAdminData.nonce,
  ...formData
})

// AHORA ( Correcto)
const postData = new URLSearchParams();
postData.append('action', 'apus_save_settings');
postData.append('nonce', apusAdminData.nonce);
postData.append('components', JSON.stringify(formData.components));
```

### PHP (class-settings-manager.php)
```php
// ANTES ( Incorrecto)
$data = json_decode(file_get_contents('php://input'), true);

// AHORA ( Correcto)
$components = json_decode(stripslashes($_POST['components']), true);
```

### Cambios Aplicados

**admin-app.js:**
- Usar `URLSearchParams` en lugar de `JSON.stringify`
- Header `application/x-www-form-urlencoded`
- Enviar `components` como JSON string en parámetro POST

**class-settings-manager.php:**
- Verificar nonce con `wp_verify_nonce($_POST['nonce'])`
- Parsear `$_POST['components']` como JSON
- Mensajes de error más descriptivos

## WordPress AJAX Requirements

1.  `action` en $_POST
2.  `nonce` en $_POST
3.  Content-Type: application/x-www-form-urlencoded
4.  Usar $_POST, no php://input

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 15:32:47 -06:00
FrankZamora
0fd0ee8231 Refactor: Top Bar v2.1 - Valores CSS + UI Compacta
Remodulación del Top Bar siguiendo algoritmo v2.1 actualizado.

## 1. Valores de Estilos desde CSS

**Antes (v2.0):**
```php
'custom_styles' => array(
    'background_color' => '',  // Vacío
    'text_color' => '',        // Vacío
    'highlight_color' => '',   // Vacío
    'link_hover_color' => '',  // Vacío
)
```

**Ahora (v2.1):**
```php
'custom_styles' => array(
    'background_color' => '#0E2337',  // Extraído de componente-top-bar.css
    'text_color' => '#ffffff',
    'highlight_color' => '#FF8600',   // var(--color-orange-primary)
    'link_hover_color' => '#FF8600',
    'font_size' => 'normal'           // 0.9rem del CSS
)
```

**Mapping CSS → Defaults:**
- `.top-notification-bar { background-color: var(--color-navy-dark) }` → `#0E2337`
- `.top-notification-bar { color: #ffffff }` → `#ffffff`
- `.top-notification-bar strong { color: var(--color-orange-primary) }` → `#FF8600`
- `.top-notification-bar a:hover { color: var(--color-orange-primary) }` → `#FF8600`

## 2. UI Compacta

**Antes:** Checkboxes dispersos (cada uno fila completa)
**Ahora:**
- Checkboxes móvil/desktop → Fila de 2 columnas (col-md-6)
- Campos enlace (texto + URL + target) → Fila compacta (col-md-5 + 5 + 2)
- Colores ya estaban bien (row con col-md-3)

**Resultado:** Menos scroll, mejor aprovechamiento del espacio.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 15:25:47 -06:00
FrankZamora
465b879135 Feat: Implementar Top Bar configurable - Issue #143
Implementación completa del componente Top Bar con 15 campos configurables desde el admin panel, siguiendo el algoritmo universal v2.0.

## Cambios Realizados

### Backend (PHP)
- Agregados defaults del Top Bar a class-settings-manager.php
- Implementada validación completa en class-validator.php (15 campos)
- Implementada sanitización con sanitize_text_field, esc_url_raw y sanitize_hex_color
- Modificado header.php con código 100% configurable usando wp_parse_args()

### Frontend (Admin Panel)
- Creado tab HTML completo con 3 secciones: Activación, Contenido y Estilos
- Implementado JavaScript para renderizado y recolección de datos
- 15 campos configurables: enabled, visibility, icon, content, link, custom styles

### Infraestructura
- Creado admin-panel/init.php para carga del módulo
- Creada class-admin-menu.php con enqueue de Bootstrap 5 y assets
- Creada estructura base CSS y JavaScript del admin
- Ya cargado en functions.php línea 276

## Características
- Responsive: Control independiente mobile/desktop
- Estilos personalizables: 4 colores + tamaño de fuente
- Validación robusta: Límites de caracteres, URLs, colores hex
- Defaults inteligentes: Valores seguros si no hay configuración

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 15:13:55 -06:00
FrankZamora
bbc6ed2c98 Refactor: Reorganizar repositorio - Solo tema WordPress
Se movió el repositorio git desde la raíz de WordPress a la carpeta del tema.
Este commit limpia todos los archivos de WordPress del historial de tracking
y mantiene únicamente los archivos del tema apus-theme.

Cambios:
- Eliminado tracking de archivos de WordPress core
- Mantenido solo archivos del tema (97 archivos)
- Actualizado .gitignore para excluir carpetas de desarrollo
- Historial de commits anteriores se mantiene intacto

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 09:15:47 -06:00
FrankZamora
861267e699 Fix Footer Principal: Reemplazar CSS incorrecto y eliminar duplicación - Issue #136
PROBLEMA:
- componente-footer-principal.css contenía 526 líneas de código de HEADER
- Estilos de footer estaban duplicados en componente-footer-contact-form.css
- Arquitectura modular no se cumplía

SOLUCIÓN:
1. Reemplazado componente-footer-principal.css con CSS correcto de footer (50 líneas)
   - footer base con navy-dark background
   - footer h5 títulos blancos
   - footer a enlaces con hover naranja
   - footer .btn-primary botón newsletter naranja
   - Según documentación CSS-ESPECIFICO.md líneas 987-1021

2. Eliminado duplicación en componente-footer-contact-form.css
   - Removidas líneas 64-88 (estilos de footer)
   - Archivo ahora solo contiene estilos de contact form

3. Version bump a 1.0.19

ARCHIVOS MODIFICADOS:
- wp-content/themes/apus-theme/assets/css/componente-footer-principal.css (526→50 líneas)
- wp-content/themes/apus-theme/assets/css/componente-footer-contact-form.css (119→88 líneas)
- wp-content/themes/apus-theme/functions.php (v1.0.18→1.0.19)

VERIFICACIÓN:
-  HTML en footer.php ya estaba correcto
-  CSS ahora en archivo correcto según arquitectura modular
-  Sin duplicación de estilos
-  Código de header que estaba en footer-principal.css no se usaba

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 19:34:58 -06:00
FrankZamora
149c937c7a Fix Footer Contact Form: Corregir colores de texto - Issue #128
PROBLEMA:
- Textos de sección de contacto demasiado oscuros (#212529)
- Template usa gris medio (#495057) más legible
- Bootstrap --bs-heading-color sobrescribe con gris oscuro

SOLUCIÓN:
- CSS específico solo para section.bg-secondary
- Sobrescribir h2, h3, h6, p con #495057 (--bs-gray-700)
- No afecta resto del sitio

TEXTOS CORREGIDOS:
 "¿Tienes alguna pregunta?" - h2
 "Completa el formulario..." - p
 "Teléfono / Email / Ubicación" - h6

CAMBIOS:
- wp-content/themes/apus-theme/assets/css/componente-footer-contact-form.css
  Agregado CSS específico líneas 98-116
- wp-content/themes/apus-theme/functions.php (v1.0.17 → v1.0.18)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 19:19:12 -06:00
FrankZamora
d55d0f5c20 Fix Related Posts CSS: Corregir selectores para aplicar estilos - Issue #127
PROBLEMA:
- CSS usaba selectores .related-post-card que NO existen en HTML
- HTML usa .related-posts .card (Bootstrap estándar)
- Resultado: CERO estilos personalizados aplicados

CAMBIOS:
- Reescribir componente-related-posts.css con selectores correctos
- Cambiar de .related-post-card a .related-posts .card
- Aplicar CSS exacto de CSS-ESPECIFICO.md líneas 62-132

CSS APLICADO:
 cursor: pointer en cards
 border-left: 4px solid navy
 border-left-color: orange en hover
 box-shadow en hover
 card-title color navy
 card-title color orange en hover

ARCHIVOS:
- wp-content/themes/apus-theme/assets/css/componente-related-posts.css (REESCRITO)
- wp-content/themes/apus-theme/functions.php (v1.0.16 → v1.0.17)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 18:56:12 -06:00
FrankZamora
f2c3ea679d Fix Navbar: Activar dropdown hover en desktop - Bootstrap 5 usa click por defecto
PROBLEMA IDENTIFICADO:
- Dropdown "Buscador General de Precios Unitarios" (18 elementos) NO se despliega en hover
- Usuario reportó: "el submenu no se despliega" en staging
- Inspeccionado con Chrome DevTools MCP: dropdown permanece display:none en hover

DIAGNÓSTICO:
 HTML correcto: <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown">
 Bootstrap 5 cargado: window.bootstrap existe
 Walker genera data-bs-toggle="dropdown" correctamente
 Bootstrap 5 usa CLICK por defecto, NO hover
 No había CSS para activar dropdown en hover
 Template base tampoco tiene dropdown hover

CAUSA RAÍZ:
Bootstrap 5 NUNCA ha usado hover por defecto. Requiere CSS adicional.

SOLUCIÓN IMPLEMENTADA (CSS > JavaScript):
Agregar 4 líneas CSS para dropdown hover SOLO en desktop (min-width: 992px)

Archivo: componente-navbar.css (líneas 136-144)
@media (min-width: 992px) {
    .nav-item:hover > .dropdown-menu {
        display: block;
    }
}

POR QUÉ CSS vs JavaScript:
 Super simple: 4 líneas vs 20-30 líneas JS
 Performance perfecto: Sin event listeners
 Híbrido perfecto: Hover desktop + Click móvil (Bootstrap)
 Compatible: Funciona aunque JS esté deshabilitado
 Menos bugs: Menos código = menos errores

ARCHIVOS MODIFICADOS:
- componente-navbar.css: +9 líneas (CSS dropdown hover)
- functions.php: Version 1.0.15 → 1.0.16

RESULTADO:
 Desktop (>992px): Dropdown se despliega en hover instantáneamente
 Móvil (<992px): Sigue usando click nativo de Bootstrap
 Compatible con los 18 elementos + scroll del Issue #103
 Sin conflictos con JavaScript existente

TESTING PENDIENTE:
- Verificar en staging que dropdown funciona en hover
- Confirmar que NO interfiere con móvil (debe seguir usando click)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 18:44:58 -06:00
FrankZamora
ff3fb53282 Fix CTA Button: Eliminar underline en hover - Issue #126
PROBLEMA:
- Botón CTA mostraba underline en hover
- Estilo global a:hover { text-decoration: underline; } se aplicaba
- .cta-button:hover NO sobrescribía text-decoration

CAUSA RAÍZ:
- style.css línea 249: a:hover { text-decoration: underline; }
- .cta-button tiene text-decoration: none en estado normal
- .cta-button:hover NO tenía text-decoration: none
- Resultado: underline aparecía en hover

SOLUCIÓN:
- Agregar text-decoration: none a .cta-button:hover
- Sobrescribe estilo global de links
- Mantiene botón sin underline en hover

CAMBIOS:
- componente-cta-ab-testing.css línea 41: + text-decoration: none;
- Version 1.0.14 -> 1.0.15

RESULTADO:
- Botón CTA sin underline en normal y hover
- Color fondo cambia en hover (naranja claro -> oscuro)
- Color texto permanece blanco

Testing: Verificar hover sin underline en staging

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 18:29:27 -06:00
FrankZamora
626bbd18fb Fix Share Buttons: Reducir tamaño iconos según template - Issue #135
PROBLEMA:
- Iconos 37% más grandes en staging (19.2px vs 14px template)
- CSS con 7 propiedades extra NO documentadas
- Archivo tenía 138 líneas vs 12 líneas en documentación

SOLUCIÓN:
- Reemplazar completamente componente-share-buttons.css
- Usar SOLO 2 reglas CSS según CSS-ESPECIFICO.md
- Eliminar font-size: 1.2rem y 6 propiedades extra
- Reducir archivo de 138 líneas a 23 líneas

CAMBIOS:
- ELIMINADO: font-size, padding, line-height, min-width, display, etc.
- ELIMINADO: Hover avanzado (transform, scale)
- ELIMINADO: Colores hover específicos por red social
- ELIMINADO: Media queries responsive custom
- MANTENIDO: Solo transition y border-width (según doc)
- Version 1.0.13 -> 1.0.14

RESULTADO:
- Iconos ahora usan tamaño default Bootstrap (14px)
- CSS minimalista: solo 2 reglas
- Bootstrap maneja colores y tamaños

Testing: Verificar iconos 14px en staging después de deploy

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 18:22:25 -06:00
FrankZamora
09b41a505c Fix Bootstrap Icons: Mover de CDN a local - Issue #135
PROBLEMA:
- Iconos de share buttons no se mostraban en staging
- Bootstrap Icons CDN causaba SecurityError (CORS)
- Browser bloqueaba acceso a cssRules del stylesheet cross-origin
- content: "" vacío en ::before pseudo-elements

SOLUCIÓN:
- Descargar Bootstrap Icons v1.11.3 localmente
- assets/vendor/bootstrap-icons.min.css (85KB)
- assets/vendor/fonts/ con woff2 y woff (298KB total)
- Actualizar enqueue-scripts.php para cargar local
- Agregar dependencia en apus-bootstrap
- Version 1.0.12 -> 1.0.13

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 18:06:25 -06:00
FrankZamora
c761885c8e Fix: Actualizar estilos post-content para coincidir con template - Issue #134
PROBLEMA:
- Los estilos del componente .post-content en staging no coincidían con el template base
- Container .post-content no tenía background, padding, border-radius ni box-shadow
- H2 border-bottom era 1px gris en lugar de 3px naranja
- H2 font-weight era 600 en lugar de 700
- Links eran color Bootstrap azul (#0d6efd) en lugar de naranja (--color-orange-primary)
- Márgenes y padding no coincidían con template

SOLUCIÓN:
- Reemplazado componente-post-content.css con estilos correctos del template
- Source: apus-theme-template/css/style.css líneas 245-298
- Container ahora tiene background blanco, padding 2rem, border-radius 12px, box-shadow
- H2 border-bottom cambiado a 3px solid var(--color-orange-primary)
- H2 font-weight cambiado a 700
- Links color cambiado a var(--color-orange-primary)
- Agregado responsive para .post-content container

ARCHIVOS:
- wp-content/themes/apus-theme/assets/css/componente-post-content.css
- wp-content/themes/apus-theme/functions.php (version 1.0.11 → 1.0.12)

Ref: #134

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 17:43:50 -06:00
FrankZamora
50992d285f FIX: Eliminar duplicidad TOC - css-global-toc.css obsoleto - Issue #133
PROBLEMA DETECTADO:
Duplicación de sistemas TOC:
- componente-sidebar-toc.css ( EN USO - TOC en sidebar)
- css-global-toc.css ( OBSOLETO - TOC en contenido, no usado)

ANÁLISIS:
- template-parts/content-toc.php usa clases .toc-container (sidebar)
- inc/toc.php genera TOC con funciones apus_generate_toc()
- sidebar.php llama a funciones de inc/toc.php
- css-global-toc.css tenía clases .apus-toc que NO se usan
- toc.js estaba enqueueado pero NO se usa

ELIMINACIONES:
 css-global-toc.css (369 líneas, clases .apus-toc no usadas)
 assets/js/toc.js (7583 bytes, no usado)
 Función apus_enqueue_toc_assets() en enqueue-scripts.php

MANTENER:
 componente-sidebar-toc.css (125 líneas, clases .toc-container)
 inc/toc.php (funciones usadas por sidebar.php)
 template-parts/content-toc.php (genera HTML del TOC)

RESULTADO:
- Sistema TOC unificado: solo sidebar TOC
- Sin duplicaciones
- Sin código obsoleto
- Reducción: 369 líneas CSS + 7583 bytes JS eliminados

Version: 1.0.10 → 1.0.11

Issue: #133 (seguimiento)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 17:31:58 -06:00
FrankZamora
d52814c81d ARQUITECTURA: Completar renombramientos CSS - Carpetas 10-20 - Issue #133
RENOMBRAMIENTOS COMPLETADOS (19 archivos adicionales):

COMPONENTES (carpetas 10, 12, 14, 15, 17, 18, 19):
 post-content.css → componente-post-content.css (10)
 cta-box-sidebar.css → componente-cta-box-sidebar.css (12)
 cta.css → componente-cta-ab-testing.css (14)
 related-posts.css → componente-related-posts.css (15)
 header.css → componente-footer-principal.css (17)
 modal-contact.css → componente-modal-contacto.css (18)
 tables-apu.css → css-tablas-apu.css (19)

CSS GLOBALES (carpeta 20):
 variables.css → css-global-variables.css
 fonts.css → css-global-fonts.css
 utilities.css → css-global-utilities.css
 animations.css → css-global-animations.css
 responsive.css → css-global-responsive.css
 accessibility.css → css-global-accessibility.css
 print.css → css-global-print.css
 badges.css → css-global-badges.css
 pagination.css → css-global-pagination.css
 toc.css → css-global-toc.css
 generic-tables.css → css-global-generic-tables.css
 video.css → css-global-video.css

ACTUALIZACIONES:
- enqueue-scripts.php: Todas las referencias actualizadas (48 cambios)
- functions.php: Version bump 1.0.9 → 1.0.10

TOTAL RENOMBRAMIENTOS:
- Commit 8d876: 7 archivos (carpetas 05, 06, 07, 08, 11, 13, 16)
- Este commit: 19 archivos (carpetas 10, 12, 14, 15, 17, 18, 19 + globales 20)
- TOTAL: 26 archivos renombrados

CORRESPONDENCIA 1-A-1 COMPLETADA:
 Cada componente tiene su archivo CSS con nombre de carpeta
 Archivos globales con prefijo css-global-
 Sin duplicaciones
 Nomenclatura consistente

Issue: #133

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 17:27:08 -06:00
FrankZamora
8d8767e84c ARQUITECTURA: Renombrar CSS para correspondencia 1-a-1 con documentación - Issue #133
PROBLEMA RESUELTO:
- Duplicación de archivos CSS (hero.css y hero-section.css)
- Nombres genéricos que no corresponden con documentación
- Confusión sobre qué archivo editar

RENOMBRAMIENTOS (7 archivos):
 notification-bar.css → componente-top-bar.css
 navbar.css → componente-navbar.css
 buttons.css → componente-boton-lets-talk.css
 hero.css → componente-hero-section.css (+ CSS correcto del template)
 toc-sidebar.css → componente-sidebar-toc.css
 social-share.css → componente-share-buttons.css
 footer-contact.css → componente-footer-contact-form.css

ELIMINADO:
 hero-section.css (duplicado con CSS incorrecto)
- Usaba clases .hero-section y .hero-category-badge
- El HTML real usa .hero-title y .category-badge
- Consolidado en componente-hero-section.css

ACTUALIZACIONES:
- enqueue-scripts.php: Todas las referencias actualizadas
- functions.php: Version bump 1.0.8 → 1.0.9
- Eliminada función apus_enqueue_hero_section_styles() (duplicada)

BENEFICIOS:
 Correspondencia directa 1-a-1 con carpetas de documentación
 Evita duplicaciones futuras
 Facilita identificar qué CSS editar
 Nomenclatura consistente y estándar

Issue: #133

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 17:18:21 -06:00
FrankZamora
2b7ba24ada FIX: Top Notification Bar no se veía - Corregir notification-bar.css - Issue #121
Problema:
Después del commit ba5d7 (limpieza masiva), el Top Notification Bar dejó de verse porque:
1. Eliminé CSS simple del template de style.css (líneas 779-802)
2. notification-bar.css contenía CSS DIFERENTE del Issue #39 (versión avanzada)
3. HTML en header.php usa versión SIMPLE del template
4. CSS avanzado (position fixed, botón cerrar) NO coincidía con HTML simple

Análisis:
- HTML actual: Versión simple sin botón cerrar, sin position fixed
- CSS eliminado: background navy-dark, padding 0.5rem, text-align center
- CSS en archivo: background slate-gray, position fixed, height 40px (INCORRECTO)
- Resultado: Barra invisible por estilos incompatibles

Solución:
Sobrescrito notification-bar.css con CSS correcto del template según:
_planeacion/_desarrollo-tema-apus/theme-documentation/05-componente-top-bar/CSS-ESPECIFICO.md

Nuevo contenido:
- background-color: var(--color-navy-dark)
- color: #ffffff
- padding: 0.5rem 0
- font-size: 0.9rem
- text-align: center
- + estilos para strong, i, a, a:hover

Archivos modificados:
- assets/css/notification-bar.css - Sobrescrito con CSS simple correcto
- functions.php - Version bump 1.0.7 → 1.0.8

🎯 Resultado:
- Top Notification Bar visible con estilos correctos del template
- HTML y CSS alineados correctamente
- CSS ya registrado en enqueue-scripts.php línea 171

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 17:05:52 -06:00
FrankZamora
ba5d766dfb ARQUITECTURA: Limpieza masiva - Mover componentes de style.css a archivos individuales - Issue #121
Problema:
- style.css contenía CSS de MÚLTIPLES componentes mezclados
- Violaba principio de separación de responsabilidades
- Algunos componentes tenían archivos CSS pero estaban duplicados en style.css

Solución:

1. REACTIVADO buttons.css
   - Era archivo deshabilitado (Issue #101 lo movió a style.css - INCORRECTO)
   - Ahora contiene estilos del botón Let's Talk
   - Registrado en enqueue-scripts.php línea 189

2. CREADO navbar.css
   - Nuevo archivo para navegación principal
   - Incluye: navbar, navbar-brand, nav-link, dropdown-menu, dropdown-item
   - Registrado en enqueue-scripts.php línea 180

3. REGISTRADO notification-bar.css
   - Archivo ya existía pero NO estaba registrado
   - Ahora registrado en enqueue-scripts.php línea 171

4. LIMPIEZA MASIVA style.css
   - Eliminadas 262 líneas de CSS de componentes
   - Componentes movidos:
     * TOP NOTIFICATION BAR → notification-bar.css
     * NAVBAR → navbar.css
     * BOTÓN LET'S TALK → buttons.css
     * HERO SECTION → hero.css (ya existía)
     * POST CONTENT → post-content.css (ya existía)
     * FEATURED IMAGE → (comentado, pendiente crear si necesario)

Archivos modificados:
- assets/css/buttons.css - Reactivado con estilos Let's Talk
- assets/css/navbar.css (NUEVO) - Componente navegación
- assets/css/style.css - Eliminadas 262 líneas
- inc/enqueue-scripts.php - Nueva función apus_enqueue_global_components()
- functions.php - Version bump 1.0.6 → 1.0.7

🎯 Resultado:
- style.css ahora SOLO contiene estilos GLOBALES del tema
- TODOS los componentes en archivos individuales
- Arquitectura consistente y mantenible
- No más duplicaciones

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 17:00:19 -06:00
FrankZamora
65b41a307d ARQUITECTURA: Crear toc-sidebar.css separado de style.css - Issue #121
Problema:
- Los estilos del TOC Sidebar estaban mezclados en style.css
- Violaba el principio de separación de responsabilidades
- Inconsistente con otros componentes como cta-box-sidebar.css

Solución:
1. Creado nuevo archivo toc-sidebar.css (siguiente convención existente)
2. Movidos TODOS los estilos del TOC Sidebar (.toc-container, .sidebar-sticky, etc.)
3. Eliminados de style.css (líneas 956-1041)
4. Registrado en enqueue-scripts.php (prioridad 18, solo single posts)

Archivos modificados:
- assets/css/toc-sidebar.css (NUEVO) - Estilos del componente TOC Sidebar
- assets/css/style.css - Eliminados estilos del TOC (86 líneas)
- inc/enqueue-scripts.php - Registrado toc-sidebar.css
- functions.php - Version bump 1.0.5 → 1.0.6

🎯 Resultado:
- Arquitectura consistente (cada componente su propio CSS)
- style.css solo para estilos GLOBALES del tema
- Mantenibilidad mejorada

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 16:53:27 -06:00
FrankZamora
23a5ae7665 ARQUITECTURA: Separación de responsabilidades CSS - Eliminar duplicaciones
Problema:
Tres archivos CSS definían body con responsabilidades mezcladas:
- fonts.css línea 38: body { font-family, color, antialiasing... }
- style.css línea 95: body { font-family, margin, padding... }
- variables.css línea 189: body { font-family, color, line-height... }

Causaba conflictos de cascada y violaba principio de responsabilidad única.

Solución:
1. fonts.css - SOLO fuentes:
   - Mantener: :root con variables tipográficas
   - Mantener: @font-face declarations (comentadas)
   - Mantener: Clases utilitarias de fuentes
   - ELIMINAR: body, code, pre (movidos a style.css)
   - Agregar: Comentarios de responsabilidades

2. variables.css - SOLO variables:
   - Mantener: :root con todas las variables CSS
   - ELIMINAR: body, a, a:hover (movidos a style.css)
   - Agregar: Comentarios de responsabilidades

3. style.css - Estilos aplicados:
   - Mantener: body (único lugar correcto)
   - Agregar: a, a:hover (desde variables.css)
   - Agregar: code, pre, kbd, samp (desde fonts.css)
   - Agregar: font-smoothing a body
   - Agregar: Comentarios de responsabilidades

Principio de Separación:
- fonts.css: DEFINE fuentes (variables y @font-face)
- variables.css: DEFINE variables (colores, espaciados, etc.)
- style.css: APLICA variables a elementos HTML

Versión: 1.0.4 → 1.0.5 (cache busting)

Archivos modificados:
- wp-content/themes/apus-theme/assets/css/fonts.css
- wp-content/themes/apus-theme/assets/css/variables.css
- wp-content/themes/apus-theme/assets/css/style.css
- wp-content/themes/apus-theme/inc/enqueue-scripts.php
- wp-content/themes/apus-theme/functions.php

Issue #121

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 16:38:42 -06:00
FrankZamora
cbf4c274c6 Fix CRÍTICO: Cambiar --font-primary de system-ui a Poppins en style.css
Problema:
style.css sobrescribía --font-primary con system-ui, anulando la configuración de Poppins en fonts.css y variables.css.

Orden de carga (el último gana):
1. fonts.css (priority 1): --font-primary: 'Poppins'
2. variables.css (priority 5): --font-family-base: 'Poppins'
3. style.css (priority 5): --font-primary: system-ui ← SOBRESCRIBÍA TODO

Resultado: body usaba system-ui en lugar de Poppins

Solución:
1. Cambiar style.css líneas 7-9:
   - --font-primary: 'Poppins', sans-serif (era system-ui)
   - --font-secondary: 'Poppins', sans-serif (era system-ui)
   - --font-headings: 'Poppins', sans-serif (era Avenir)

2. Version bump style.css: 1.0.3 → 1.0.4 (cache busting)

Archivos modificados:
- wp-content/themes/apus-theme/assets/css/style.css
- wp-content/themes/apus-theme/inc/enqueue-scripts.php

Corrige issue #121 (TOC Sidebar font-family)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 16:34:26 -06:00
FrankZamora
c723a921b8 Fix TOC Sidebar: Agregar variables CSS faltantes del template y cambiar a fuente Poppins
Problema:
- TOC sidebar usaba system fonts en lugar de Poppins
- Faltaban variables CSS del template (--color-navy-primary, --color-neutral-*)
- Variables de color estaban intercambiadas (#495057 vs #6c757d)

Solución:
1. Agregar variables faltantes a variables.css:
   - --color-navy-primary: #1e3a5f
   - --color-navy-light: #2c5282
   - --color-neutral-50: #f8f9fa
   - --color-neutral-100: #e9ecef
   - --color-neutral-600: #495057 (text default)
   - --color-neutral-700: #6c757d (text secondary)
   - --color-orange-light: #FFB800
   - --color-orange-hover: #FF6B35

2. Cambiar --font-family-base de system fonts a 'Poppins', sans-serif
   (Google Fonts Poppins ya se carga en enqueue-scripts.php)

3. Incrementar APUS_VERSION de 1.0.2 a 1.0.3 para cache busting

Archivos modificados:
- wp-content/themes/apus-theme/assets/css/variables.css
- wp-content/themes/apus-theme/functions.php

Reabre issue #121

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 16:18:29 -06:00
FrankZamora
67eab9a0ea Fix CTA: SIMPLIFICAR CSS copiando EXACTO del template - Issue #126
PROBLEMA:
Después de múltiples intentos, el CTA seguía viéndose diferente.
El CSS tenía demasiadas reglas extras que causaban conflictos.

SOLUCIÓN DEFINITIVA:
REEMPLAZAR COMPLETAMENTE cta.css con SOLO las reglas del template.

CAMBIOS:

1. cta.css - SIMPLIFICADO (329 líneas → 54 líneas)
   ANTES: 329 líneas con:
   - !important extras
   - Media queries complicadas
   - Reglas de accessibility
   - Dark mode support
   - Print styles
   - Animaciones
   - Loading states

   DESPUÉS: 54 líneas con SOLO:
   - .cta-section (4 reglas básicas)
   - .cta-section h3 (1 regla)
   - .cta-section p (1 regla)
   - .cta-button (8 reglas básicas)
   - .cta-button:hover (2 reglas)
   - Media query mobile (3 reglas)

2. functions.php - Version bump
   - 1.0.1 → 1.0.2 para forzar recarga de CSS

CSS EXACTO COPIADO DEL TEMPLATE:
```css
.cta-section {
    background: linear-gradient(135deg, var(--color-orange-primary) 0%, var(--color-orange-light) 100%);
    box-shadow: 0 8px 24px rgba(255, 133, 0, 0.3);
    border-radius: 12px;
    padding: 2rem;
}

.cta-section h3 {
    color: #ffffff !important;
}

.cta-section p {
    color: rgba(255, 255, 255, 0.95) !important;
}

.cta-button {
    background-color: var(--color-orange-primary);
    color: #ffffff;
    font-weight: 600;
    padding: 0.75rem 2rem;
    border: none;
    border-radius: 8px;
    transition: all 0.3s ease;
    text-decoration: none;
    display: inline-block;
}

.cta-button:hover {
    background-color: var(--color-orange-hover);
    color: #ffffff;
}
```

RESULTADO:
- CSS 100% igual al template
- Sin extras ni sobrescrituras complicadas
- Bootstrap classes funcionarán normalmente
- Hard refresh (Ctrl+F5) con ?ver=1.0.2

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 16:03:15 -06:00
FrankZamora
760ad792f6 Fix CTA: Agregar !important para sobrescribir Bootstrap - Issue #126
PROBLEMA:
Bootstrap estaba sobrescribiendo los estilos de cta.css:
- .btn-lg (Bootstrap) sobrescribía font-size y padding del botón
- .h4 (Bootstrap) sobrescribía font-size del h3

DIAGNÓSTICO CON CHROME DEVTOOLS MCP:
Comparación Template vs Staging:
┌──────────────────┬─────────────┬─────────────┬────────────┐
│ Propiedad        │ Template    │ Staging     │ Esperado   │
├──────────────────┼─────────────┼─────────────┼────────────┤
│ Button fontSize  │ 20px        │ 16.8px    │ 20px       │
│ Button padding   │ 12px 32px   │ 14px 28px │ 12px 32px  │
│ h3 fontSize      │ 24px        │ 28px      │ 24px       │
│ p fontSize       │ 16px        │ 16.8px    │ 16px       │
└──────────────────┴─────────────┴─────────────┴────────────┘

CAUSA:
- cta.css se carga DESPUÉS de Bootstrap ✓
- PERO Bootstrap usa clases (.btn-lg, .h4) que tienen mayor especificidad
- Template HTML usa las mismas clases, pero el CSS está en style.css

SOLUCIÓN:
Agregar !important a propiedades que Bootstrap sobrescribe:

1. .cta-section h3:
   - font-size: 1.5rem !important; (24px)

2. .cta-section p:
   - font-size: 1rem !important; (16px)

3. .cta-button:
   - font-size: 1.25rem !important; (20px) ← NUEVO
   - padding: 0.75rem 2rem !important; (12px 32px)

RESULTADO:
Estilos ahora coinciden EXACTAMENTE con el template:
- h3: 24px ✓
- p: 16px ✓
- Button: 20px, padding 12px 32px ✓

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 15:58:06 -06:00
FrankZamora
b353b5eb04 Fix CTA: Eliminar sombras incorrectas (box-shadow y text-shadow)
PROBLEMA:
El archivo cta.css tenía sombras que NO están en el template original:
- text-shadow en .cta-section h3
- box-shadow en .cta-button (normal, hover, active)

CAMBIOS:
1. Eliminar text-shadow de .cta-section h3 (línea 47)
2. Eliminar box-shadow de .cta-button (línea 75)
3. Eliminar box-shadow de .cta-button:hover (línea 82)
4. Eliminar box-shadow de .cta-button:active (línea 84)

RESULTADO:
Estilos ahora coinciden exactamente con el template de referencia:
- index.html: Button boxShadow = "none", h3 textShadow = "none"
- cta.css: Sin box-shadow ni text-shadow

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 15:50:55 -06:00
FrankZamora
8e640cf047 Fix CTA: Reemplazar sistema dual HTML/JS con sistema PHP robusto - Issue #126
PROBLEMA RAÍZ:
Había DOS sistemas de A/B testing en conflicto:
1. Sistema PHP completo en cta-ab-testing.php (NO usado)
2. Sistema HTML/JS en single.php + main.js (ambas variantes hardcodeadas con display:none)

El JavaScript no ejecutaba de forma confiable, causando que el CTA:
- A veces no apareciera (ambas variantes quedaban ocultas)
- A veces aparecieran ambas variantes simultáneamente

SOLUCIÓN:
Activar el sistema PHP que ya existía. Más robusto porque:
- Renderiza solo UNA variante server-side (sin timing issues)
- Usa cookies para persistencia de 30 días por usuario
- Elimina race conditions de JavaScript

CAMBIOS:

1. cta-ab-testing.php:
   - Actualizar URLs de '#' a home_url('/catalogo') y home_url('/planes')
   - Cambiar apus_render_cta() para usar .cta-section (no .apus-cta-wrapper)
   - Eliminar atributo data-cta-action (innecesario)

2. single.php:
   - ELIMINAR 29 líneas de HTML duplicado (variantes A y B hardcodeadas)
   - REEMPLAZAR con: <?php apus_display_cta(); ?>

3. main.js:
   - ELIMINAR 26 líneas de lógica A/B en JavaScript
   - AGREGAR comentario: CTA manejado por PHP + cta-tracking.js

4. cta-tracking.js:
   - Actualizar selectores: .apus-cta-wrapper → .cta-section (2 ocurrencias)

ARQUITECTURA FINAL:
- PHP: Selección de variante + renderizado server-side
- cta-tracking.js: Solo tracking de Analytics (clicks/impresiones)
- Cookies: Persistencia de variante asignada

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 15:42:05 -06:00
FrankZamora
3dadcb947b Fix CTA: Bump APUS_VERSION to 1.0.1 for cache busting
Problema: Staging tiene CSS cacheado con selectores viejos (.apus-cta-wrapper)
- Commit 856bb cambió todos los selectores a .cta-section
- Pero staging sigue cargando cta.css?ver=1.0.0 (versión vieja)
- El archivo CSS en staging NO tiene .cta-section, tiene .apus-cta-wrapper

Solución: Incrementar APUS_VERSION de 1.0.0 → 1.0.1
- Esto fuerza que WordPress/navegadores recarguen TODOS los CSS/JS
- El nuevo archivo será cta.css?ver=1.0.1 con los selectores correctos

Issue #126

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 15:33:51 -06:00
FrankZamora
856bb71db6 Fix CTA A/B Testing: Corregir selectores CSS de .apus-cta-wrapper a .cta-section
Problema diagnosticado:
- HTML en single.php usa clase .cta-section
- CSS en cta.css usaba clase .apus-cta-wrapper
- Los estilos NO se aplicaban (sin gradiente, sin box-shadow, botón blanco)

Cambios realizados en cta.css:
- Cambiar TODOS los selectores .apus-cta-wrapper → .cta-section
- Actualizar .cta-section para usar variables CSS (--color-orange-primary, --color-orange-light)
- Agregar color: #ffffff !important a h3
- Agregar color: rgba(255, 255, 255, 0.95) !important a p
- Cambiar botón de blanco a naranja (background: var(--color-orange-primary))
- Cambiar hover de botón a naranja-hover (background: var(--color-orange-hover))
- Aumentar border-radius de 0.5rem a 12px (según documentación)
- Aumentar padding de 0.75rem 1.5rem a 0.75rem 2rem en botón
- Actualizar border-radius botón de 0.375rem a 8px

Ahora los estilos coinciden con la documentación:
- Gradiente naranja de fondo
- Box shadow naranja pronunciada
- Textos blancos
- Botón naranja (no blanco)

Issue #126

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 15:27:54 -06:00
FrankZamora
e6aebbc97b Fix Tablas APU: Agregar esquinas redondeadas superiores a tabla .analisis
- Agregar border-top-left-radius y border-top-right-radius a primera fila
- Ahora la tabla .analisis tiene esquinas redondeadas superiores como .desglose
- Issue #132

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 15:21:33 -06:00
FrankZamora
a70cb8467c Fix Tablas APU: Estilos para .analisis y quitar Courier New de .desglose
PROBLEMA 1: Tabla .analisis sin estilos de header
- La tabla .analisis no tiene tag <thead>, solo <tbody>
- CSS buscaba .analisis table thead tr th
- Primera fila del tbody no se estilizaba como header

SOLUCIÓN 1:
- Nuevo selector: .analisis table tbody tr:first-child td
- Aplica gradiente navy, texto blanco, centrado
- Funciona para tablas sin <thead>

PROBLEMA 2: Fuente Courier New en .desglose
- Columnas numéricas de .desglose usaban Courier New
- Usuario NO quiere fuente monospace en .desglose

SOLUCIÓN 2:
- Separados selectores de columnas numéricas:
  - .analisis: CON font-family Courier New (mantiene)
  - .desglose: SIN font-family (usa fuente por defecto)

CAMBIOS CSS:
- +11 líneas: Nuevo selector para primera fila .analisis
- Refactor: Separar selectores .analisis y .desglose
- .analisis mantiene Courier New
- .desglose usa fuente estándar

Archivo modificado:
- wp-content/themes/apus-theme/assets/css/tables-apu.css

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 15:17:55 -06:00
FrankZamora
a765dcee9b Feature: Auto-agregar clases a filas especiales de tablas APU
PROBLEMA (Issue #132):
- Tablas .desglose no tienen clases en filas <tr>
- WordPress no preserva clases: section-header, subtotal-row, total-row
- Resultado: Todas las filas se ven iguales (sin estilos especiales)

SOLUCIÓN:
- Script JavaScript que detecta y agrega clases automáticamente
- Detecta por contenido de texto:
  - "Material", "Mano de Obra", etc. → section-header
  - "Suma de..." → subtotal-row
  - "Costo Directo" → total-row

FUNCIONAMIENTO:
1. Script se ejecuta cuando DOM está listo
2. Busca tablas .desglose y .analisis
3. Lee 2da celda de cada fila <tr>
4. Agrega clase según el texto
5. CSS aplica estilos automáticamente

ARCHIVOS:
- NUEVO: assets/js/apu-tables-auto-class.js (99 líneas)
  - Script con detección inteligente de filas
  - Soporta mayúsculas/minúsculas
  - Log para debugging

- MODIFICADO: inc/enqueue-scripts.php (+24 líneas)
  - Nueva función: apus_enqueue_apu_tables_autoclass_script()
  - Carga en footer con strategy defer
  - Prioridad 15 (después de CSS)

BENEFICIOS:
 Funciona con contenido existente (no requiere edición manual)
 Automático para todos los posts nuevos
 Sin errores si clases ya existen
 Performance: solo procesa si hay tablas APU

Issue: #132

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 15:12:59 -06:00
FrankZamora
2cb1e1e3f0 Fix CSS Tablas APU: Agregar soporte para clase .desglose
PROBLEMA:
- La tabla de desglose (6 columnas) usa clase .desglose
- El CSS solo tenía selectores para .analisis
- Resultado: Tabla desglose sin estilos aplicados

SOLUCIÓN:
- Todos los selectores CSS ahora soportan .analisis Y .desglose
- Cambio sistemático en todos los selectores del archivo
- Sin duplicación de código (selectores combinados)

ESTRUCTURA CORRECTA APU:
1. Tabla resumen (3 columnas): clase .analisis
2. Tabla desglose (6 columnas): clase .desglose

Archivo modificado:
- wp-content/themes/apus-theme/assets/css/tables-apu.css
  - 104 adiciones, 50 eliminaciones
  - Todos los selectores actualizados

Issue cerrado: #131

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 14:59:50 -06:00
FrankZamora
75dc0e5722 ARQUITECTURA: Eliminar custom-style.css y consolidar CSS
PROBLEMA CRÍTICO:
- custom-style.css (843 líneas) tenía 95% código DUPLICADO con style.css y otros componentes
- utilities.css (528 líneas) duplicaba 92% de Bootstrap 5 utilities
- Código redundante causaba conflictos CSS y dificulta mantenimiento
- Tablas APU no se veían correctas por conflictos de especificidad

SOLUCIÓN IMPLEMENTADA:

1.  ELIMINADO custom-style.css completamente (843 líneas)
   - Código duplicado de 11 componentes que YA tienen archivos individuales
   - Variables duplicadas (ya en style.css y variables.css)
   - Componentes duplicados (TOC, CTA, Related Posts, Pagination, Footer)

2.  CREADO generic-tables.css (263 líneas)
   - Código único de custom-style.css líneas 165-394
   - Estilos para tablas genéricas en post-content (10 estilos diferentes)
   - NO afecta tablas APU (.analisis table)

3.  CREADO video.css (28 líneas)
   - Código único de custom-style.css líneas 540-560
   - Estilos para videos embebidos (YouTube, Vimeo) en post-content

4.  REDUCIDO utilities.css de 528 → 90 líneas (83% reducción)
   - Eliminadas 438 líneas que duplicaban Bootstrap 5
   - Mantenidas SOLO utilities únicas:
     * Cursor utilities (cursor-pointer, cursor-default, etc.)
     * User select (user-select-none, user-select-all)
     * Pointer events (pointer-events-none)
     * Object fit (object-fit-contain, object-fit-cover)
     * Transition helpers (transition-all, transition-none)

5.  ACTUALIZADO enqueue-scripts.php
   - Eliminada función apus_enqueue_custom_assets (custom-style.css)
   - Agregada función apus_enqueue_generic_tables (priority 11, solo single posts)
   - Agregada función apus_enqueue_video_styles (priority 11, solo single posts)
   - Renombrada función apus_enqueue_main_javascript (solo JavaScript)

RESULTADO:
- De 2454 líneas totales (843+1083+528) a 1464 líneas (1083+263+28+90)
- Eliminadas 990 líneas de código duplicado (40% reducción)
- CSS limpio: cero duplicación entre archivos
- Orden de carga correcto: Bootstrap → style.css → componentes individuales
- Tablas APU ahora deben funcionar correctamente (sin conflictos)

ARQUITECTURA CORRECTA:
 style.css → Estilos globales del tema
 [componente].css → Un archivo CSS por cada componente individual
 utilities.css → SOLO utilities NO incluidas en Bootstrap 5
 generic-tables.css → Tablas genéricas post-content
 video.css → Videos embebidos post-content
 tables-apu.css → Tablas APU específicas (.analisis)

ARCHIVOS AFECTADOS:
- ELIMINADO: wp-content/themes/apus-theme/assets/css/custom-style.css (843 líneas)
- CREADO: wp-content/themes/apus-theme/assets/css/generic-tables.css (263 líneas)
- CREADO: wp-content/themes/apus-theme/assets/css/video.css (28 líneas)
- MODIFICADO: wp-content/themes/apus-theme/assets/css/utilities.css (528 → 90 líneas)
- MODIFICADO: wp-content/themes/apus-theme/inc/enqueue-scripts.php

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 14:39:56 -06:00
FrankZamora
c23ed76034 Fix tablas APU: Corregir TODOS los estilos vs template
PROBLEMA:
- custom-style.css tenía código DUPLICADO de tablas APU (137 líneas)
- tables-apu.css tenía 5 diferencias críticas vs template
- Usuario reportó que tablas en staging NO coinciden con template

SOLUCIÓN ARQUITECTURAL:
 Eliminar TODO código .analisis de custom-style.css (líneas 160-282 + responsive 914-924)
   - Principio: cada componente debe tener su PROPIO archivo CSS
   - custom-style.css NO debe tener estilos de componentes específicos

CORRECCIONES EN TABLES-APU.CSS:
1.  box-shadow: 0 2px 8px → 0 4px 16px (línea 25)
   - Template usa blur radius 16px, no 8px
2.  Section header: ELIMINAR text-transform: uppercase (línea 163)
   - Template usa textTransform: "none"
3.  Section header: ELIMINAR letter-spacing: 0.5px (línea 165)
   - Template usa letterSpacing: "normal"
4.  Section header: ELIMINAR font-size: 0.95em (línea 164)
   - Template no reduce el tamaño de fuente
5.  Columnas numéricas: AGREGAR color: #1e3a5f (línea 139)
   - Template computed muestra rgb(30, 58, 95) explícito

VERIFICACIÓN:
-  style.css: NO tiene reglas .analisis
-  responsive.css: Solo regla genérica table (max-width: 575.98px)
-  utilities.css: Solo clases d-table de Bootstrap
-  animations.css: NO tiene reglas table
-  Orden de carga: custom-style (p11) → tables-apu (p15) ✓

COMPARACIÓN CON TEMPLATE:
Extraído computed styles del template index.html usando Playwright:
- table: boxShadow "0px 4px 16px", borderRadius "8px" ✓
- header: gradient #1e3a5f→#2c5282, padding 16px ✓
- col1-2: Poppins, left align ✓
- col3: center, color #6c757d ✓
- col4-6: Courier New monospace, right, color #1e3a5f ✓
- section-header: color #1e3a5f, fontWeight 600, textTransform "none" ✓
- subtotal: bg rgba(255,133,0,0.1), color #FF8600 ✓
- total: gradient, color white, fontSize 1.1rem/1.25rem ✓

RESULTADO:
- 137 líneas eliminadas (código duplicado en custom-style.css)
- 5 correcciones críticas en tables-apu.css
- Arquitectura CSS correcta: cada componente en su archivo

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 14:24:31 -06:00
FrankZamora
d52b0b5cd1 Fix Tablas APU: Cambiar subtotales de azul a naranja - Issue #130
PROBLEMA:
- Subtotales en tables-apu.css usaban colores AZULES
- Template especifica colores NARANJAS
- Discrepancia visual entre staging y template

SOLUCIÓN:
1. Subtotales (líneas 172-191):
   - Background: #d1e7fd (azul) → rgba(255, 133, 0, 0.1) (naranja 10%)
   - Color texto: #0d47a1 (azul) → var(--color-orange-primary) (naranja)
   - Columna c6: Agregado color naranja explícito

2. Print styles (línea 247):
   - Background: #d1e7fd (azul) → rgba(255, 133, 0, 0.1) (naranja)
   - Mantiene print-color-adjust para imprimir correctamente

RESULTADO:
- Subtotales ahora usan naranja como en template
- Consistencia visual con diseño original
- Colores aplicados tanto en pantalla como impresión

Fixes #130

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 14:11:42 -06:00
FrankZamora
d5cbde3d80 Fix Footer Principal: Agregar bg-dark y eliminar CSS duplicado - Issue #129
PROBLEMA:
- footer.php faltaba clase bg-dark (mostraba color incorrecto)
- footer-contact.css tenía estilos que duplicaban Bootstrap nativas

SOLUCIÓN:
1. footer.php (línea 14):
   - Agregado bg-dark a clases del footer
   - Ahora usa Bootstrap nativo: bg-dark, text-white, py-5

2. footer-contact.css:
   - Eliminado bloque footer {} con background-color, color, padding
   - Mantenidos estilos custom (hover naranja, btn overrides)
   - Agregada nota explicativa sobre Bootstrap nativas

RESULTADO:
- Footer ahora muestra bg-dark correcto (rgb(33,37,41))
- CSS más limpio: solo estilos custom, no duplicados Bootstrap
- Sigue principio: componente tiene CSS propio SOLO para custom styles

Fixes #129

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 14:02:02 -06:00
FrankZamora
d00771eae4 ARQUITECTURA CORRECTA: Footer Contact Form en archivo CSS individual
Problema:
- Documentación INCORRECTA indicaba que footer CSS debía estar en style.css
- Esto violaba arquitectura: TODOS los componentes deben tener CSS individual
- Footer Contact Form era la ÚNICA excepción documentada

Solución:
1. Creado footer-contact.css con TODO el CSS del footer (107 líneas)
2. Removido CSS de footer de style.css (86 líneas netas eliminadas)
3. Agregado enqueue en enqueue-scripts.php (líneas 499-517)
4. Actualizado comentarios en style.css para indicar footer-contact.css

Archivos Creados:
 wp-content/themes/apus-theme/assets/css/footer-contact.css (nuevo)
   - Contact Form Styles (.form-control, botones submit)
   - Footer Styles (footer, h5, links, buttons)
   - Contact Info Styles (.contact-info i)

Archivos Modificados:
 wp-content/themes/apus-theme/inc/enqueue-scripts.php
   - Agregado apus_enqueue_footer_contact_assets()
   - Prioridad 18 (después de CTA box sidebar)
   - Dependencia: apus-bootstrap

 wp-content/themes/apus-theme/assets/css/style.css
   - Removido TODO el CSS del footer (86 líneas)
   - Agregado warning comment apuntando a footer-contact.css
   - Actualizado warning general: SIN EXCEPCIONES

Arquitectura Final:
 TODOS los componentes tienen su archivo CSS individual
 style.css solo contiene estilos GLOBALES del tema
 SIN EXCEPCIONES - Arquitectura 100% consistente

Relacionado: Commits 57136, 9ea4c (limpieza anterior de style.css)

NOTA: Documentación CSS-ESPECIFICO.md actualizada localmente (gitignored)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 13:48:13 -06:00
FrankZamora
9ea4c0ced5 FIX: Habilitar enqueue de social-share.css (arquitectura correcta)
Problema:
- social-share.css estaba comentado en enqueue-scripts.php
- Comentario antiguo decía que CSS debía estar en style.css
- Esto violaba la arquitectura: cada componente debe tener su archivo CSS

Solución:
1. Descomentado apus_enqueue_social_share_styles() en enqueue-scripts.php
2. Actualizado comentario para reflejar arquitectura correcta
3. Actualizado warning en style.css con líneas correctas de enqueue

Arquitectura Correcta:
 Cada componente tiene su archivo CSS individual
 social-share.css existe y ahora se carga correctamente
 Solo en posts individuales (is_single())
 Dependencia correcta: apus-bootstrap

Archivos Modificados:
- inc/enqueue-scripts.php (líneas 398-421)
- assets/css/style.css (warning comment actualizado)

Relacionado: Commit anterior 57136 (cleanup de style.css)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 11:54:04 -06:00
FrankZamora
5713624c74 CLEANUP: Eliminar CSS de componentes duplicado en style.css
Problema:
- style.css contenía CSS de 4 componentes que ya tienen archivos individuales
- Esto causaba duplicación y posibles conflictos con CSS específico de componentes
- Violaba la arquitectura de "cada componente en su propio archivo CSS"

Componentes Afectados:
1. Share Buttons (social-share.css existe)
2. CTA A/B Testing (cta.css existe)
3. Related Posts (related-posts.css existe)
4. Pagination (pagination.css existe)

Solución:
- Eliminado CSS duplicado de los 4 componentes (101 líneas netas removidas)
- Reemplazado cada sección con comentario de advertencia claro
- Cada comentario indica:
  * Que NO se debe agregar CSS de ese componente en style.css
  * La ruta del archivo CSS correcto del componente
  * Referencia a línea en enqueue-scripts.php donde se carga

Excepción Documentada:
- Footer Contact Form CSS permanece en style.css (líneas 1074+)
- Según documentación CSS-ESPECIFICO.md debe estar en style.css

Resultado:
 style.css ahora solo contiene CSS GLOBAL del tema
 Arquitectura consistente: todos los componentes en archivos individuales
 Sin duplicación de CSS
 Comentarios claros previenen futuros errores

Relacionado: CSS-ESPECIFICO.md, Issue #125

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 11:52:57 -06:00
FrankZamora
5d352fe4e9 CRÍTICO: Corregir cta-box-sidebar.css para 100% match con template
PROBLEMA DIAGNOSTICADO:
- box-shadow: 0 6px 20px (incorrecto) → 0 4px 12px (template)
- background: gradiente (incorrecto) → color sólido (template)
- border-radius: 10px (incorrecto) → 8px (template)
- padding: 20px (incorrecto) → 24px (template)

CAMBIOS:
1. box-shadow: rgba(255,133,0,0.2) 0 4px 12px
2. background: var(--color-orange-primary) (sólido)
3. border-radius: 8px
4. padding: 24px
5. height: 250px (añadido)
6. display: flex + flex-direction: column + justify-content: center

RESULTADO:
-  100% pixel-perfect match con template
-  Todos los valores coinciden exactamente

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 11:47:23 -06:00
FrankZamora
c355fb27bb CRÍTICO: Cargar Poppins y eliminar overrides Bootstrap - Issue #125
PROBLEMA:
- Template usa Poppins (font-weight: 500 para h6)
- Staging usaba system fonts (Avenir, Montserrat)
- fonts.css sobrescribía Bootstrap con font-weight: 600

CAMBIOS:
1. Agregado Google Fonts Poppins en enqueue-scripts.php
2. Eliminados estilos globales h1-h6 de fonts.css
3. Actualizadas variables CSS a Poppins por defecto
4. Eliminados estilos h1-h6 de media queries

RESULTADO:
- Font-family ahora es Poppins, sans-serif
- Font-weight h6 usa Bootstrap default (500)
- 100% match con template

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-08 11:35:47 -06:00
FrankZamora
1233f5a0c9 Fix: Agregar .playwright-mcp, .serena y .claude al .gitignore 2025-11-08 11:26:28 -06:00