# Issues #6 y #7 - Implementación Completa ## Resumen de Implementación Se han completado exitosamente los Issues #6 (Sistema de tipografías autohospedadas) y #7 (Header sticky con menú hamburguesa). --- ## Issue #6: Sistema de Tipografías Autohospedadas ### Archivos Creados #### 1. `assets/css/fonts.css` **Ubicación:** `D:\_Desarrollo\02AnalisisDePreciosUnitarios\analisisdepreciosunitarios.com\wp-content\themes\apus-theme\assets\css\fonts.css` **Características:** - Define system font stacks optimizados para performance - Incluye 6 familias de fuentes: - System UI (general content) - Sans-serif (clean & modern) - Serif (elegant & traditional) - Monospace (code blocks) - Humanist (friendly) - Geometric (modern) - CSS custom properties para fácil customización - Sección comentada para agregar @font-face declarations personalizadas - Utilidades de tipografía (font-weight, font-size, line-height, etc.) - Optimización de font-display: swap para mejor LCP - Soporte para font smoothing #### 2. `inc/customizer-fonts.php` **Ubicación:** `D:\_Desarrollo\02AnalisisDePreciosUnitarios\analisisdepreciosunitarios.com\wp-content\themes\apus-theme\inc\customizer-fonts.php` **Características:** - Panel de tipografía en el Customizer de WordPress - Toggle para alternar entre custom fonts y system fonts - Selector de estrategia font-display (auto, block, swap, fallback, optional) - Opción para preload de fuentes personalizadas - Body class automático (`use-custom-fonts` o `use-system-fonts`) - Hooks para preload de fuentes en el `
` - Funciones de sanitización seguras - Active callbacks para mostrar/ocultar opciones condicionalmente ### Archivos Modificados #### 1. `inc/enqueue-scripts.php` **Cambios:** - Agregada función `apus_enqueue_fonts()` con prioridad 1 - Bootstrap CSS ahora depende de `apus-fonts` - Header CSS ahora depende de `apus-fonts` - Orden de carga optimizado: fonts → bootstrap → header #### 2. `style.css` **Cambios en `:root`:** - Variables de tipografía expandidas: - `--font-primary`, `--font-secondary`, `--font-headings`, `--font-code` - `--font-size-xs` hasta `--font-size-4xl` - `--line-height-none` hasta `--line-height-loose` - `--font-weight-light` hasta `--font-weight-bold` - Agregadas variables para header: - `--header-height: 70px` - `--header-bg: #ffffff` - `--header-shadow` - Agregadas variables de z-index: - `--z-header: 1000` - `--z-mobile-menu: 999` - `--z-overlay: 998` **Cambios en headings (h1-h6):** - Uso de `var(--font-headings)` - Uso de `var(--font-weight-semibold)` - Uso de `var(--line-height-tight)` #### 3. `functions.php` **Cambios:** - Agregada inclusión de `inc/customizer-fonts.php` después de `enqueue-scripts.php` --- ## Issue #7: Header Sticky con Menú Hamburguesa ### Archivos Creados #### 1. `assets/css/header.css` **Ubicación:** `D:\_Desarrollo\02AnalisisDePreciosUnitarios\analisisdepreciosunitarios.com\wp-content\themes\apus-theme\assets\css\header.css` **Características:** **Header Base:** - Sticky positioning con `position: sticky; top: 0` - Shadow mejorada al hacer scroll - Transiciones suaves - Z-index controlado por variable CSS - Container con max-width 1200px **Site Branding:** - Logo responsive (50px mobile, 60px desktop) - Site title con hover states - Site description estilizada - Focus states accesibles (outline 2px) **Desktop Navigation:** - Display flex horizontal - Hover states con background - Current page indicator - Submenu dropdown con animaciones - Focus-within para accesibilidad - Border radius 4px en items **Mobile Menu Toggle:** - Botón hamburguesa 44x44px (touch target WCAG) - Animación de 3 líneas a X - Estados hover y focus - Transform transitions suaves **Mobile Menu:** - Slide-in desde la derecha - Width 280px (85% max) - Overlay con backdrop - Header fijo dentro del menu - Scroll overflow en contenido - Border left indicator en items activos **Responsive Breakpoints:** - Mobile: < 768px (hamburger menu) - Tablet: 768px+ (desktop nav visible) - Desktop: 1024px+ (spacing mejorado) - Large: 1200px+ (full width) **Accesibilidad:** - High contrast mode support - Prefers-reduced-motion support - Print styles - Focus visible en todos los elementos interactivos #### 2. `assets/js/header.js` **Ubicación:** `D:\_Desarrollo\02AnalisisDePreciosUnitarios\analisisdepreciosunitarios.com\wp-content\themes\apus-theme\assets\js\header.js` **Características:** **Mobile Menu Toggle:** - Open/close con botón hamburguesa - Close con botón X - Close al hacer click en overlay - Close al presionar Escape - Close al hacer click en link del menu - Close automático en resize a desktop - Animación de transformación del icono **ARIA Attributes:** - `aria-expanded` en toggle button - `aria-hidden` en menu y overlay - `aria-controls` para relación button-menu - `aria-label` descriptivos **Body Scroll Locking:** - Clase `mobile-menu-open` en body - Overflow hidden cuando menu activo - Restauración al cerrar **Sticky Header Behavior:** - Detección de scroll - Clase `scrolled` después de 100px - Shadow mejorada al scrollear - Evento scroll con `passive: true` para performance **Smooth Scroll:** - Scroll suave a anchors en la página - Offset por altura del header - Respeta `prefers-reduced-motion` - Update de URL hash - Focus en elemento target para accesibilidad **Keyboard Navigation:** - Enter/Space abre submenus - Escape cierra submenus - Tab navigation con focus trap en mobile menu - Focus restoration al cerrar menu **Focus Trap:** - Ciclo de tab dentro del mobile menu - Shift+Tab reverse - First/last element cycling **Performance:** - Event listeners con debounce en resize - Passive scroll listeners - CSS transforms para animaciones (GPU accelerated) - Transition none con prefers-reduced-motion ### Archivos Modificados #### 1. `header.php` **Estructura actualizada:** ```html