# Estado del proyecto

Última actualización: 16 de julio de 2026.

## Resumen

CalcuPet cuenta con una primera versión funcional completa, construida como SPA estática y lista para publicarse en un hosting como Cloudflare Pages. Todo el cálculo se ejecuta en el navegador; no existen backend, base de datos, autenticación, analítica ni dependencias de terceros.

## Implementado

### Cálculo y validación

- Calculadora para perros y gatos adultos.
- Estimación de calorías diarias mediante RER y multiplicadores de especie, esterilización, actividad, objetivo y edad sénior.
- Estimaciones de cantidad de alimento, agua, rango de peso ideal y máximo de premios.
- Cálculo de gramos diarios con la Energía Metabolizable presente en el campo, sin volver a una constante fija en kcal/g.
- Selector de alimento seco, húmedo o mixto, con ayuda contextual y validación entre 100 y 10.000 kcal/kg.
- Valores sugeridos editables por tipo: 3500 kcal/kg para Seco, 1000 kcal/kg para Húmedo y 2250 kcal/kg para Mixto; cada cambio de tipo carga su referencia.
- Estado explícito para distinguir un valor sugerido de uno manual por su procedencia, no por comparación numérica.
- Resultado y resumen copiable diferenciados entre estimación sugerida y cálculo con densidad específica, con aclaración de un solo producto para Mixto.
- Selector visual opcional de condición corporal (BCS) en cinco niveles, con nivel 3 (ideal) como valor interno predeterminado.
- El BCS aporta contexto educativo y no interviene en las fórmulas ni los multiplicadores nutricionales.
- Límites de peso y edad diferenciados por especie, con protección defensiva en el motor de cálculo.
- Compatibilidad con decimales escritos con punto o coma.
- Flujo de cálculo en dos etapas: el primer resultado requiere una pulsación válida en «Calcular» y habilita desde entonces el recálculo automático.
- En modo reactivo, debounce de 250 ms en campos escritos y actualización inmediata para selectores y BCS.
- Después del primer resultado, validación progresiva durante la edición; «Calcular» conserva siempre la validación completa y el foco en el primer error.
- Un único flujo de procesamiento para recálculo automático y submit; las fórmulas nutricionales permanecen sin cambios.

### Experiencia de usuario

- Resultado único que se actualiza con cada estado válido y se retira si los datos visibles quedan incompletos o inválidos.
- Resumen copiable al portapapeles y alternativa compatible con navegadores sin Clipboard API moderna.
- Estados inicial, válido e incompleto claramente diferenciados, además de interpretación del resultado, tarjeta contextual de BCS y aviso veterinario.
- Guía desplegable para identificar la condición corporal mediante observación y palpación.
- Guía desplegable para localizar la Energía Metabolizable en el envase y nota dinámica para alimentación mixta.
- Bloque educativo interno en resultados, configurable desde `js/config.js`, con acceso a Guías Nutricionales y sin enlaces afiliados activos.
- Bloque SEO «Cómo funciona la calculadora».
- Footer institucional sin redes sociales, con jerarquía para guías, transparencia, recursos, misión y enlaces legales.
- Páginas independientes para Guías Nutricionales, Metodología y Transparencia, Recursos, Misión, Contacto, Aviso Legal y Privacidad.
- Referencias oficiales enlazadas a WSAVA, FEDIAF, NRC, AAFCO y Manual MSD, con ampliación bibliográfica pendiente de revisión formal.
- Restauración del scroll al inicio y botón flotante «Volver arriba» después de 300 px.

### Diseño y accesibilidad

- Diseño responsive y Mobile First, con CSS modular, tokens globales y convención BEM.
- Design System documentado con paleta, tipografía, espaciado, componentes y reglas de uso.
- Formulario protagonista en verde institucional y CTA ámbar con estados `hover`, `active`, foco y deshabilitado.
- Microinteracciones para controles y aparición del resultado.
- Hero simplificado con una propuesta de valor breve y directa.
- Tipografía secundaria del formulario reforzada para facilitar la lectura en móvil sin perder compacidad en escritorio.
- Texto oscuro de alto contraste en las guías educativas sobre superficies claras.
- Selector BCS compacto operable con mouse, teclado y pantallas táctiles, con estado comunicado mediante `aria-pressed`.
- Foco visible, etiquetas persistentes, mensajes con `aria-live`, ayuda desplegable accesible y áreas táctiles de al menos 44 px en los controles principales.
- Respeto por `prefers-reduced-motion`.
- Logotipo, iconos e ilustraciones SVG almacenados localmente.

### Arquitectura y despliegue

- HTML5, CSS3 y JavaScript puro con módulos ES.
- Separación entre coordinación reactiva, cálculo, tablas, constantes, validación, renderizado, portapapeles y comportamiento de scroll.
- Configuración desacoplada del bloque complementario de resultados: `educational` se renderiza en UI y `none` permite retirarlo sin modificar cálculos.
- Utilidad reutilizable de debounce con cancelación del temporizador pendiente para evitar cálculos y renderizados duplicados.
- Función pura y reutilizable para convertir calorías diarias y kcal/kg en gramos diarios.
- Sin instalación ni compilación: basta un servidor HTTP estático.
- Configuración apta para desplegar la raíz del repositorio en Cloudflare Pages u otro hosting estático.
- Arquitectura multipágina estática con rutas limpias y un módulo CSS compartido para contenido institucional.

## Limitaciones conocidas

- La monetización afiliada está aplazada: el MVP actual prioriza utilidad, confianza y crecimiento de tráfico, y no muestra enlaces afiliados activos.
- La opción «Mixto» calcula un producto a la vez; todavía no distribuye automáticamente las calorías entre alimento seco y húmedo.
- La precisión del resultado en gramos depende de que el usuario ingrese correctamente las kcal/kg publicadas por el fabricante.
- Las referencias de 3500, 1000 y 2250 kcal/kg son orientativas y pueden diferir de la energía real; en Mixto, 2250 no representa una combinación exacta ni sustituye el dato del producto calculado.
- El BCS depende de la apreciación del usuario y no sustituye una evaluación morfológica profesional.
- La herramienta está dirigida a animales adultos sanos; no cubre crecimiento, embarazo, lactancia, enfermedades ni dietas terapéuticas.
- No existe una suite automatizada de pruebas, linting ni integración continua.
- No hay modo oscuro ni persistencia de resultados.

## Próximos pasos recomendados

1. Permitir distribuir calorías entre dos productos independientes en alimentación mixta.
2. Evaluar una posible monetización afiliada solo en una fase futura, con audiencia consolidada, enlaces definitivos y etiquetado transparente.
3. Añadir pruebas unitarias permanentes para cálculos, límites, normalización decimal y validaciones.
4. Realizar una auditoría automatizada y manual de accesibilidad y compatibilidad entre navegadores.
5. Incorporar metadatos sociales, favicon alternativo y configuración de dominio antes del lanzamiento público.
6. Evaluar modo oscuro y persistencia local solo si aportan valor al uso real.

## Criterio de versión actual

La versión actual se considera un MVP funcional enfocado en utilidad, confianza y crecimiento de tráfico. Puede desplegarse como publicación informativa con un bloque educativo interno y sin enlaces afiliados activos. La arquitectura permite sustituir o retirar ese bloque desde presentación y configuración, sin intervenir en el motor de cálculo. Antes de usarlo como referencia nutricional pública debe completarse la validación profesional de los criterios de cálculo y de la guía BCS. El usuario debe verificar siempre que la Energía Metabolizable coincida con la etiqueta del producto utilizado.
