/* Cómo funciona — componentes (misma identidad que Home) */ const { useState, useEffect, useRef } = React; const HOME = "/"; const PLANES = "Ver planes disponibles.html"; const CONTACTO = "Solicitar diagnóstico.html"; function NavCF() { const [scrolled, setScrolled] = useState(false); useEffect(() => { const on = () => setScrolled(window.scrollY > 16); on(); window.addEventListener("scroll", on, { passive: true }); return () => window.removeEventListener("scroll", on); }, []); return (
Bacatá Dynamics Bacatá Dynamics
Volver al inicio Solicitar diagnóstico
); } const PIPE = [ { ico: , t: "Ideas", s: "Lo que su empresa necesita" }, { ico: , t: "Prioridades", s: "Ordenadas por impacto" }, { ico: , t: "Desarrollo", s: "Ejecución dedicada" }, { ico: , t: "Entrega", s: "Validada y documentada" }, { ico: , t: "Resultados", s: "Impacto medible" }, ]; function FlowPipe() { const [lit, setLit] = useState(0); useEffect(() => { const t = setInterval(() => setLit((l) => (l + 1) % PIPE.length), 1400); return () => clearInterval(t); }, []); return (
{PIPE.map((n, i) => (
{n.ico} {n.t}{n.s}
{i < PIPE.length - 1 &&
}
))}
); } function HeroCF() { const scrollTo = (id) => (e) => { e.preventDefault(); document.querySelector(id)?.scrollIntoView({ behavior: "smooth", block: "start" }); }; return (
Cómo funciona

Una forma más simple de ejecutar tecnología.

Usted prioriza. Nosotros diseñamos, desarrollamos, validamos y entregamos.

Software, automatización, inteligencia artificial y analítica ejecutados mediante un modelo de capacidad técnica bajo demanda.

); } const STAGES = [ { ico: , t: "Diagnóstico", d: "Comprendemos objetivos, restricciones y oportunidades para construir una hoja de ruta clara." }, { ico: , t: "Onboarding", d: "Preparamos el entorno de trabajo y alineamos prioridades, responsables y contexto." }, { ico: , t: "Priorización", d: "Convertimos necesidades en iniciativas concretas enfocadas en impacto." }, { ico: , t: "Ejecución", d: "Un equipo multidisciplinario desarrolla, valida y documenta cada entrega." }, { ico: , t: "Entrega continua", d: "Liberaciones frecuentes con seguimiento, mejora continua y soporte." }, ]; function Timeline() { const [active, setActive] = useState(0); const fill = (active / (STAGES.length - 1)) * 100; return (
El proceso

Un proceso diseñado para avanzar sin fricción.

Un modelo operativo claro desde el primer día.

{STAGES.map((s, i) => (
setActive(i)} onFocus={() => setActive(i)} tabIndex={0} >
{s.ico}
Paso {i + 1}

{s.t}

{s.d}

))}
); } const FLOW = [ { ico: , k: "01", t: "Cliente", d: "Define prioridades." }, { ico: , k: "02", t: "Backlog priorizado", d: "Organiza iniciativas." }, { ico: , k: "03", t: "Equipo Bacatá Dynamics", d: "Ejecuta y valida." }, { ico: , k: "04", t: "Resultados", d: "Genera impacto." }, ]; function FlowCentral() { return (
El modelo en movimiento

De la prioridad al resultado, sin fricción.

{[0, 0.68, 1.36, 2.04, 2.72].map((d, i) => ( ))}
{FLOW.map((b) => (
{b.ico}
{b.k}

{b.t}

{b.d}

))}
); } const PRINCIPLES = [ { ico: , t: "Claridad", d: "Una única fuente de prioridades y seguimiento." }, { ico: , t: "Velocidad", d: "Capacidad técnica lista para ejecutar." }, { ico: , t: "Continuidad", d: "Entregas constantes sin necesidad de ampliar estructura interna." }, { ico: , t: "Auditoría de valor", d: "Con la contratación anual, auditamos el área donde se implementará el proyecto para identificar las iniciativas de mayor rentabilidad." }, { ico: , t: "Sin comisión por rentabilidad", d: "Tarifa mensual fija: nunca cobramos un porcentaje de la rentabilidad que generan los proyectos entregados." }, ]; function Principios() { return (
Principios

Construido sobre certezas claras.

{PRINCIPLES.map((p, i) => (
{p.ico}

{p.t}

{p.d}

))}
); } function FinalCF() { return (
Empiece hoy

Menos coordinación.
Más ejecución.

Concentre a su equipo en las decisiones importantes. Nosotros nos encargamos de convertir prioridades en resultados.

); } function FooterCF() { return ( ); } function AppCF() { useReveal(0); return (
); } ReactDOM.createRoot(document.getElementById("root")).render();