PROBLEMA DIAGNOSTICADO:
- Botones de paginación se veían azules en staging
- Agregué CSS a style.css pero existe pagination.css separado
- pagination.css se carga DESPUÉS y sobreescribía con colores Bootstrap azules
SOLUCIÓN IMPLEMENTADA:
- Editar pagination.css directamente (archivo específico de paginación)
- Reemplazar TODOS los #0d6efd (azul Bootstrap) con var(--color-orange-primary)
- Actualizar gradientes azules a naranja sólido
- Actualizar rgba de box-shadows (de azul a naranja)
- Incluye estilos para hover, focus, active y dark mode
ARCHIVOS MODIFICADOS:
- wp-content/themes/apus-theme/assets/css/pagination.css
* Línea 37: color hover naranja
* Línea 38-39: background y border hover naranja
* Línea 41: box-shadow naranja
* Línea 46-48: focus naranja
* Línea 50: box-shadow focus naranja
* Línea 56-57: active background naranja (sin gradiente)
* Línea 59: box-shadow active naranja
* Línea 64: active hover background light orange
* Línea 66: box-shadow active hover naranja
* Línea 185: dark mode border naranja
* Línea 189: dark mode active naranja
VALIDACIÓN:
- ✅ Diagnosticado con Playwright (network requests)
- ✅ Identificado orden de carga: style.css → pagination.css
- ✅ Documentado en Issue #127
Referencias: Issue #127🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Agregar estilos de paginación (líneas 1157-1179)
- Botones normales: gris oscuro
- Botones hover: naranja con fondo transparente 10%
- Botón activo: naranja sólido
- Problema identificado con MCP Playwright
- Causa raíz: Documentación incompleta (faltaba CSS del template original)
- CSS verificado con MCP Serena en línea 1157
Referencias: Issue #127🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implementar estilos completos en style.css (líneas 1111-1155)
- Border izquierdo visual indicator (gris → naranja hover)
- Cards altura uniforme con height 100%
- Uso estratégico de !important para override de Bootstrap
- Cursor pointer y transiciones suaves
- HTML ya existía en single.php (sin cambios)
Referencias: Issue #127🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA ROOT CAUSE FINAL:
theme.css tenía MÚLTIPLES reglas sobrescribiendo Bootstrap:
- .btn y button (background-color global)
- .btn:focus, button:focus (box-shadow)
- .btn:disabled, button:disabled (opacity)
- .btn-secondary, .btn-success, .btn-danger, etc. (colores)
- .btn-sm, .btn-lg (tamaños)
TODAS estas reglas sobrescribían btn-outline de Bootstrap
SOLUCIÓN DEFINITIVA:
- ELIMINADAS todas las reglas globales .btn y button
- ELIMINADAS todas las variantes .btn-*
- ELIMINADOS tamaños .btn-sm y .btn-lg
- Mantener SOLO estilos para inputs SIN clases btn
- Bootstrap maneja TODO lo relacionado con botones
Archivos modificados:
- assets/css/theme.css (eliminadas ~80 líneas de CSS)
RESULTADO:
Bootstrap btn-outline-* funciona SIN interferencia
Fixes#124🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA ROOT CAUSE:
theme.css aplicaba background-color a TODOS los .btn (línea 335)
Esto sobrescribía btn-outline-* de Bootstrap
ANÁLISIS:
- Template original NO tiene theme.css
- theme.css es archivo adicional con reglas conflictivas
- Reglas globales .btn y button sobrescriben Bootstrap
SOLUCIÓN:
- Eliminar selectores button y .btn de theme.css
- Mantener SOLO estilos para inputs SIN clases Bootstrap
- Usar :not([class*="btn"]) para excluir elementos con clases btn
RESULTADO:
- Bootstrap maneja btn-outline correctamente
- Sin conflictos de especificidad CSS
- Inputs sin clases mantienen estilos por defecto
Archivo modificado:
- assets/css/theme.css (líneas 316-348)
Fixes#124🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA:
- social-share.css se estaba cargando con CSS adicional no documentado
- custom-style.css tenía reglas duplicadas
- Múltiples archivos CSS causaban conflictos
SOLUCIÓN:
- Deshabilitado enqueue de social-share.css en enqueue-scripts.php
- Eliminado CSS duplicado de custom-style.css
- Mantener SOLO las 2 reglas en style.css según documentación
Archivos modificados:
- inc/enqueue-scripts.php (deshabilitado líneas 398-416)
- assets/css/custom-style.css (eliminado líneas 659-666)
Según: theme-documentation/13-componente-share-buttons/CSS-ESPECIFICO.md
Solo debe haber 2 reglas CSS + Bootstrap outline classes
Fixes#124🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA:
- Los botones de compartir se mostraban con fondo azul sólido en lugar de outline
- theme.css aplicaba background-color: var(--primary-color) a TODOS los .btn
SOLUCIÓN:
- Modificar selector en theme.css para excluir botones con "outline" en clase
- Usar :not([class*="outline"]) para preservar estilos Bootstrap outline
Fixes#124🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
CAMBIOS EN HTML (single.php):
- Remover botón de Email (no en documentación)
- Remover texto de botones (solo iconos)
- Agregar aria-label a todos los botones para accesibilidad
- Cambiar Instagram a onclick alert en vez de link directo
- Cambiar WhatsApp URL a api.whatsapp.com/send
- Actualizar rel de "noopener" a "noopener noreferrer"
- Agregar comentarios HTML para cada botón
CAMBIOS EN CSS (style.css):
- Agregar reglas específicas para .share-buttons .btn
- border-width: 2px (más grueso que Bootstrap default)
- transition: all 0.3s ease
- box-shadow en hover para efecto de elevación
Archivos modificados:
- wp-content/themes/apus-theme/single.php (líneas 72-120)
- wp-content/themes/apus-theme/assets/css/style.css (líneas 1054-1063)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- CREAR: template-parts/content-toc.php
* Función PHP apu_generate_toc() para generar TOC automáticamente
* Regex para buscar H2 con atributo ID
* Solo se muestra en is_single()
- MODIFICAR: single.php (sidebar)
* Agregar div.sidebar-sticky wrapper
* Integrar get_template_part('template-parts/content', 'toc')
* Preparar espacio para CTA Box (componente 12)
- MODIFICAR: style.css (+87 líneas)
* 9 selectores CSS + 4 pseudo-elementos scrollbar
* Sticky positioning (top: 85px)
* Max-height calculado con calc()
* Scroll interno con overflow-y: auto
* Min-height: 0 (crítico para scroll en flexbox)
* Border-left indicator (navy, NO naranja)
* Scrollbar personalizado 6px (solo Webkit)
- MODIFICAR: main.js (+66 líneas)
* Función updateActiveSection() para ScrollSpy
* Algoritmo SIMPLE: verifica si pasaste el top
* Offset scroll: navbarHeight + 100
* Smooth scroll: navbarHeight + 40
* Selector .toc-container a (NO .toc-link)
* NO tiene auto-scroll del TOC
* NO actualiza URL con history.pushState()
Características:
✅ Generación automática desde H2 con ID
✅ ScrollSpy custom (JavaScript vanilla, NO Bootstrap)
✅ Sticky positioning con flexbox
✅ Scroll interno solo en lista
✅ Border-left indicator activo
✅ Scrollbar delgado personalizado
Selectores REALES usados:
- .toc-container a (NO .toc-link)
- .toc-container h4 (NO .toc-title)
- .toc-container li (NO .toc-list li)
🎨 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Cambiar <div> a <article> para mejor semántica HTML
- Agregar CSS completo con 9 selectores:
* .post-content: Contenedor con fondo, padding, shadow
* .post-content h2: Border-bottom naranja 3px
* .post-content h3: Color navy light para jerarquía
* .post-content p: Line-height 1.8 para legibilidad
* .post-content ul/ol: Listas estilizadas
* .post-content li: Items con espaciado
* .post-content strong: Color navy para destacar
* .post-content a: Enlaces naranjas con underline
* .post-content a:hover: Hover naranja oscuro
Archivos modificados:
- wp-content/themes/apus-theme/single.php (líneas 61, 70)
- wp-content/themes/apus-theme/assets/css/style.css (líneas 865-921)
🎨 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA:
- hero.css y badges.css tenían estilos de .category-badge-hero que NO existen en template
- Estos archivos sobrescribían los estilos correctos de style.css
- Template original SOLO tiene .category-badge en style.css, NO tiene clase -hero
ARCHIVOS AFECTADOS:
1. badges.css - VACIADO COMPLETO:
- Eliminado .category-badge (líneas 15-38) - duplicado, NO en template
- Eliminado .category-badge-hero (líneas 41-56) - NO existe en template
- Eliminado responsive (líneas 59-68) - duplicado
- Total: 58 líneas eliminadas
2. hero.css - VACIADO COMPLETO:
- Eliminado .category-badge-hero (líneas 16-31) - NO existe en template
- Eliminado hover (líneas 33-38) - NO en template
- Eliminado i (líneas 40-42) - NO en template
- Eliminado responsive (líneas 45-50) - NO en template
- Total: 40 líneas eliminadas
ESTILOS CORRECTOS:
Todos los estilos del hero section y badges están en style.css líneas 812-848
según template original apus-theme-template/css/style.css líneas 186-222
TEMPLATE ORIGINAL SOLO TIENE:
- .hero-title
- .hero-title h1
- .category-badge
- .category-badge:hover
- .category-badge i
NO TIENE clase .category-badge-hero específica.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA CRÍTICO ENCONTRADO:
El archivo hero-section.css (Issue #40, prioridad 20) tenía OTRA definición
de .hero-title con margin: 1rem 0; que causaba 16px de espacio entre navbar y hero.
Como se cargaba DESPUÉS de style.css (prioridad 5), sobrescribía los estilos
y agregaba el margin no deseado.
CAMBIOS:
- Eliminado .hero-title completo (líneas 30-37) incluyendo margin: 1rem 0
- Eliminado .hero-title del @media responsive (líneas 57-59)
- Mantenido solo .hero-meta, .hero-category-badge, etc.
RESUMEN DE DUPLICACIONES ELIMINADAS:
1. hero.css - .hero-title eliminado ✓
2. custom-style.css - .hero-title eliminado ✓
3. hero-section.css - .hero-title eliminado ✓
AHORA .hero-title solo existe UNA VEZ en style.css como debe ser.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA RAÍZ:
- .hero-title estaba definido en 4 archivos diferentes (style.css, hero.css, custom-style.css)
- Había propiedades incorrectas agregadas (margin-bottom: 0 en .navbar, margin-top: 0 en .hero-title)
- Estas propiedades NO existen en el template original
CAMBIOS REALIZADOS:
1. hero.css:
- Eliminado .hero-title completo (líneas 15-24)
- Eliminado .hero-title del media query responsive (líneas 57-64)
- Mantenido solo .category-badge-hero y su responsive
2. custom-style.css:
- Eliminado .hero-title completo (líneas 88-92)
- Eliminado .hero-title h1 (líneas 94-100)
- Eliminado .category-badge (líneas 102-124)
- Dejado comentario indicando que CSS está en style.css
3. style.css:
- Eliminado margin-bottom: 0 de .navbar (línea 696)
- Eliminado margin-top: 0 de .hero-title (línea 817)
RESULTADO:
- .hero-title ahora solo está definido UNA VEZ en style.css
- CSS coincide EXACTAMENTE con el template original
- Sin propiedades extras que no existen en template
- Sin duplicaciones de código
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
CAMBIOS IMPLEMENTADOS:
1. HTML en single.php (líneas 53-58):
- Cambiar contenedor de 'mb-4' a 'featured-image-container my-4'
- Cambiar tamaño de imagen de 'large' a 'full' (calidad completa)
- Simplificar clases de imagen: solo 'img-fluid' (sin w-100 ni rounded)
- Agregar atributo 'loading' => 'lazy' para lazy loading nativo
2. CSS en style.css (líneas 852-865):
- Agregar estilos completos del componente Featured Image
- Border radius: 12px en contenedor
- Box shadow: 0 8px 24px rgba(0, 0, 0, 0.1)
- Overflow hidden: CRÍTICO para que border-radius funcione
- Display block en img: elimina espacio extra de 4px
- Margin: 2rem vertical para separación
ESPECIFICACIONES TÉCNICAS:
- CSS aplicado en contenedor (más eficiente que en img)
- Overflow hidden asegura que border-radius funcione correctamente
- Display block elimina espacio inline predeterminado del navegador
- Lazy loading mejora performance (carga solo al hacer scroll)
- Tamaño 'full' muestra imagen en calidad original
DOCUMENTACIÓN SEGUIDA:
- theme-documentation/09-componente-featured-image/COMPONENTE-FEATURED-IMAGE.md
- theme-documentation/09-componente-featured-image/CSS-ESPECIFICO.md
Fixes#110🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA:
Existía un gap/espacio visible entre el navbar y el hero section.
CAMBIOS:
1. header.php (línea 88):
- Eliminada línea en blanco después de </nav>
- HTML ahora termina directamente sin saltos extra
2. style.css - .navbar (línea 696):
- Agregado margin-bottom: 0
- Asegura que navbar no tenga margen inferior
3. style.css - .hero-title (línea 816):
- Agregado margin-top: 0
- Asegura que hero no tenga margen superior
RESULTADO:
✓ Navbar y hero section pegados sin espacio
✓ Diseño limpio y continuo
✓ Sticky navbar sigue funcionando
Fixes#108🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA:
Submenu "Buscador General de Precios Unitarios" tiene 18 elementos
y se oculta fuera de la pantalla, haciendo inaccesibles los últimos.
CAMBIOS:
1. Reducir padding vertical de .dropdown-item (0.625rem → 0.5rem)
- Ahorra ~64px total con 18 elementos
- Elementos más compactos visualmente
2. Agregar max-height: 70vh a .dropdown-menu
- Permite ver ~10-12 elementos simultáneamente
- Todos los 18 elementos accesibles mediante scroll
3. Activar overflow-y: auto
- Scroll vertical aparece automáticamente si necesario
- Solo cuando contenido excede 70vh
4. Mejorar UX del scroll
- scroll-behavior: smooth (scroll suave)
- Scrollbar personalizado (6px, color gris)
- scrollbar-width: thin (Firefox)
- Custom webkit scrollbar (Chrome, Safari, Edge)
RESULTADO:
✅ Todos los 18 elementos del submenu son accesibles
✅ Scroll vertical suave y con estilo personalizado
✅ Elementos más compactos pero legibles
✅ Funciona en todos los navegadores modernos
Fixes#103🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA:
Código comentado es BASURA. No debe permanecer en archivos de producción.
Para eso existe Git - historial completo disponible si se necesita.
ARCHIVOS LIMPIADOS:
1. buttons.css:
- ANTES: 54 líneas (header + código comentado)
- AHORA: 9 líneas (solo header indicando deshabilitación)
- ELIMINADO: ~45 líneas de CSS comentado
2. custom-style.css:
- ELIMINADO: ~84 líneas de navbar comentado (líneas 86-166)
- ELIMINADO: ~23 líneas de botón comentado (líneas 168-190)
- REEMPLAZADO: con 1 línea de nota breve
- ANTES: 107 líneas de código basura comentado
- AHORA: 1 línea de referencia
3. enqueue-scripts.php:
- ELIMINADO: ~13 líneas de enqueue buttons.css comentado
- ELIMINADO: ~33 líneas de enqueue notification-bar comentado
- AHORA: Código limpio sin basura
TOTAL ELIMINADO: ~152 líneas de código comentado basura
PRINCIPIO:
- Código comentado = basura
- Git guarda historial completo
- Si se necesita algo, está en el commit anterior
- Archivos de producción deben estar limpios
REFERENCIAS:
- CSS correcto está en: assets/css/style.css
- Historial en Git si se necesita código anterior
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA IDENTIFICADO:
- En commit anterior (41b12) solo comenté el ENQUEUE de buttons.css
- El archivo buttons.css TODAVÍA contenía CSS ACTIVO (sin comentar)
- Este CSS con gradiente incorrecto podía seguir aplicándose por:
* Cache de WordPress/navegador
* Referencias directas al archivo
* Plugins que cargan todos los CSS de la carpeta
SÍNTOMAS:
- Botón Let's Talk mostraba gradiente en lugar de color sólido
- No coincidía con template fuente apus-theme-template/css/style.css
ANÁLISIS CSS:
buttons.css tenía (INCORRECTO):
- background: linear-gradient(135deg, #FF6B35 0%, #FF8C42 100%)
- transform: translateY(-2px) en hover
- box-shadow no presente en template
- Media query responsive no documentada
Template fuente tiene (CORRECTO):
- background-color: var(--color-orange-primary) - Color SÓLIDO
- Sin transform
- Sin box-shadow extra
- Sin media queries
SOLUCIÓN:
- Comentado TODO el contenido CSS de buttons.css
- Archivo ahora solo contiene comentarios
- CSS correcto permanece en assets/css/style.css (líneas 766-785)
- Eliminada cualquier posibilidad de conflicto
ARCHIVOS MODIFICADOS:
- wp-content/themes/apus-theme/assets/css/buttons.css
* TODO el CSS convertido a comentarios
* Agregado header explicando el problema
* Referencia a ubicación correcta del CSS
VERIFICACIÓN:
✅ style.css tiene CSS correcto (idéntico a template fuente)
✅ custom-style.css tiene CSS comentado (sin conflicto)
✅ enqueue-scripts.php tiene enqueue comentado (sin carga)
✅ buttons.css ahora completamente deshabilitado (sin CSS activo)
REFERENCIAS:
- Template CSS: apus-theme-template/css/style.css líneas 163-180
- Issue: #101🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMAS CORREGIDOS:
1. CSS duplicado en custom-style.css y buttons.css
2. buttons.css tenía implementación INCORRECTA:
- Usaba gradiente en lugar de color sólido
- Agregaba efectos de transform/shadow no presentes en template
- Tenía media queries responsive no documentadas
3. CSS no estaba en ubicación documentada (style.css)
ANÁLISIS DE IMPLEMENTACIONES:
buttons.css (INCORRECTO - deshabilitado):
- ❌ background: linear-gradient() - Template usa color sólido
- ❌ transform: translateY(-2px) en hover - NO en template
- ❌ box-shadow con valores no documentados
- ❌ Estado :active no presente en template
- ❌ Media query responsive no en template
custom-style.css (CORRECTO pero ubicación incorrecta):
- ✅ background-color: var(--color-orange-primary) - Sólido
- ✅ Hover a var(--color-orange-hover)
- ✅ Sin transform ni shadow extra
- ✅ IDÉNTICO al template fuente
SOLUCIÓN IMPLEMENTADA:
1. style.css:
- Agregado CSS correcto al final (líneas 766-785)
- Comentario separador: /* === BOTÓN LET'S TALK === */
- CSS idéntico a template fuente
2. custom-style.css:
- Comentado CSS duplicado (líneas 168-190)
- Agregado nota de nueva ubicación
3. enqueue-scripts.php:
- Comentado enqueue de buttons.css (líneas 101-113)
- Agregado nota explicando por qué se deshabilitó
IMPLEMENTACIÓN COMPLETA:
✅ HTML: header.php (líneas 80-83) - SUPERIOR a template (i18n)
✅ CSS: assets/css/style.css (líneas 766-785) - IDÉNTICO a template
❌ buttons.css: DESHABILITADO (implementación incorrecta)
REFERENCIAS:
- Template HTML: apus-theme-template/index.html líneas 132-134
- Template CSS: apus-theme-template/css/style.css líneas 163-180
- Documentación: theme-documentation/07-componente-boton-lets-talk/
ISSUE: #101🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
PROBLEMA:
- Implementación previa NO coincidía con template fuente apus-theme-template/index.html
- HTML tenía estructura compleja con spans responsive e i18n
- CSS cargaba archivo separado notification-bar.css (253 líneas) con animaciones innecesarias
- Faltaban variables de color APU en style.css
SOLUCIÓN:
1. header.php (líneas 23-32):
- Reemplazado HTML complejo con estructura simple del template
- Eliminado texto responsive innecesario
- Cambiado de múltiples <span> a un solo <span><strong>Nuevo:</strong> texto</span>
- Agregado clases text-white y text-decoration-underline al enlace
2. assets/css/style.css:
- Agregadas variables de color APU (líneas 49-55):
--color-navy-dark, --color-navy-primary, --color-orange-primary, etc.
- Agregado CSS de Top Notification Bar (líneas 658-685)
- Solo 28 líneas de CSS limpio sin animaciones ni JavaScript
3. inc/enqueue-scripts.php:
- Comentada función apus_enqueue_notification_bar_assets()
- CSS ahora en style.css principal, no en archivo separado
- Componente no requiere JavaScript
FUENTE DE VERDAD:
- apus-theme-template/index.html (líneas 55-63)
- apus-theme-template/css/style.css (líneas 57-80)
ISSUE: #97🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cambios realizados:
- NUEVO: Crear assets/css/style.css con CSS base del tema (650 líneas)
- MODIFICADO: style.css - Dejar solo header obligatorio de WordPress (~25 líneas)
- MODIFICADO: enqueue-scripts.php - Agregar carga de assets/css/style.css
Detalles:
- Mover todo el CSS de style.css (variables, reset, typography, layouts)
a assets/css/style.css para cumplir con arquitectura modular
- style.css ahora contiene SOLO el comentario header de WordPress
- Agregar función apus_enqueue_main_stylesheet() con filemtime()
para cache busting
- Orden de carga: Bootstrap → Variables → style.css → componentes
Validación FASE 1 completada:
✅ style.css con header WordPress
✅ functions.php completo
✅ index.php con The Loop
✅ assets/css/style.css creado
✅ assets/js/main.js existe
✅ Arquitectura modular respetada
Referencia: _planeacion/_desarrollo-tema-apus/theme-documentation/03-fase-1-cimiento/
Closes#95🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Todos los componentes del NIVEL 2 ya están implementados correctamente:
- ✅ Notification Bar (#49)
- ✅ Navbar (#50)
- ✅ Hero Section (#51)
- ✅ Sidebar (#52)
- ✅ Footer (#53)
Solo se actualizó notification-bar.css para usar variables CSS.
Próximo paso: NIVEL 3 (Refinamientos visuales)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implementación de CIMIENTOS del tema según template index.html.
Sin estos cambios NO se puede avanzar a componentes visuales.
**Issue #47: Estructura HTML Base**
- single.php: Reemplazada estructura con Grid Bootstrap exacto del template
- Agregado: <div class="container"> → <div class="row">
- Columna principal: <div class="col-lg-9"> (línea 28)
- Columna sidebar: <div class="col-lg-3"> (línea 244)
- Eliminado: <div class="content-wrapper"> (obsoleto)
- Estructura ahora coincide 100% con template líneas 347-350
**Issue #48: Sistema de Variables CSS**
- Creado: assets/css/variables.css (180 líneas)
- 50+ variables CSS de colores paleta RDash
- Variables tipográficas (fonts, sizes, weights)
- Variables de espaciado y bordes
- Variables de sombras y transiciones
- Variables de gradientes del template
- Registrado en enqueue-scripts.php (línea 51-58)
- Dependencia: se carga DESPUÉS de Bootstrap
**Archivos Modificados:**
- wp-content/themes/apus-theme/single.php
- wp-content/themes/apus-theme/inc/enqueue-scripts.php
**Archivos Creados:**
- wp-content/themes/apus-theme/assets/css/variables.css
**Referencia Template:**
D:\_Desarrollo\02AnalisisDePreciosUnitarios\analisisdepreciosunitarios.com\_planeacion\theme-template\index.html
**Resultado:**
NIVEL 1 (CIMIENTOS) está completo. Ahora se puede avanzar a NIVEL 2 (Componentes Principales).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implementación completa de navbar sticky con menú hamburguesa responsive según especificaciones del template del cliente:
**Archivos Modificados:**
- header.php: Reescritura completa con navbar Bootstrap 5, sticky positioning, y responsive hamburger menu
- functions.php: Agregado require para nav-walker.php
- inc/enqueue-scripts.php: Agregado enqueue de custom-style.css y main.js
**Archivos Creados:**
- assets/css/custom-style.css: Estilos navbar con animaciones (gradient underline, dropdown slideDown, etc.)
- assets/js/main.js: JavaScript para scroll effect, active menu highlight, y mobile auto-close
- inc/nav-walker.php: Bootstrap 5 Nav Walker para dropdowns WordPress
**Características:**
✅ Navbar sticky con transición de sombra al hacer scroll
✅ Gradient underline animation en hover de nav-links
✅ Dropdown menus con animación slideDown
✅ Menú hamburguesa responsive (< 991px)
✅ Auto-close mobile menu al hacer click en enlaces
✅ Active menu item highlighting
✅ Smooth scroll para anchor links
✅ Skip link para accesibilidad
✅ Compatible con WordPress menu system
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Cambios realizados:
- Actualizado assets/css/fonts.css con stack de system fonts del template
- System fonts por defecto (máximo rendimiento, 0 KB descargados)
- Poppins opcional (comentado, para activar desde Customizer)
- Variables CSS actualizadas (--font-system, --font-primary, --font-headings)
- Utilidades de fuentes (font-weight, font-size, line-height)
- Responsive font sizes para móvil, tablet y desktop
- Font smoothing para mejor renderizado
Stack de system fonts:
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif
Beneficios:
✅ 0 HTTP requests
✅ 0 KB descargados
✅ Mejor LCP y Core Web Vitals
✅ Sin FOIT/FOUT
Customizer ya configurado en inc/customizer-fonts.php para activar
Poppins opcional si el usuario lo requiere.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Se implementa tema WordPress personalizado para Análisis de Precios Unitarios con funcionalidades avanzadas:
- Sistema de templates (front-page, single, archive, page, 404, search)
- Integración de Bootstrap 5.3.8 con estructura modular de assets
- Panel de opciones del tema con Customizer API
- Optimizaciones de rendimiento (Critical CSS, Image Optimization, Performance)
- Funcionalidades SEO y compatibilidad con Rank Math
- Sistema de posts relacionados y tabla de contenidos
- Badge de categorías y manejo de AdSense diferido
- Tipografías Google Fonts configurables
- Documentación completa del tema y guías de uso
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>