<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OmniaFlow | Automatización & IA</title>
<!-- 1. Carga de Estilos (Tailwind CSS) -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- 2. Carga de React (El Motor) -->
<script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
<!-- 3. Carga de Babel (El Traductor de Código) -->
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<!-- Fuentes -->
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
body { font-family: 'Plus Jakarta Sans', sans-serif; background-color: #F5F5F0; }
html { scroll-behavior: smooth; }
/* Animaciones suaves */
@keyframes float {
0% { transform: translateY(0px); }
50% { transform: translateY(-10px); }
100% { transform: translateY(0px); }
}
.animate-float { animation: float 6s ease-in-out infinite; }
</style>
</head>
<body>
<div id="root"></div>
<script type="text/babel">
const { useState, useEffect } = React;
// --- SISTEMA DE ICONOS SVG NATIVOS (Sin dependencias externas) ---
// Esto elimina el error "Cannot read properties of undefined (reading 'forwardRef')"
const Icons = {
ArrowRight: <path d="M5 12h14M12 5l7 7-7 7"/>,
Cpu: <><rect x="4" y="4" width="16" height="16" rx="2"/><rect x="9" y="9" width="6" height="6"/><path d="M9 1v3M15 1v3M9 20v3M15 20v3M20 9h3M20 14h3M1 9h3M1 14h3"/></>,
Menu: <><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></>,
X: <><path d="M18 6 6 18"/><path d="m6 6 12 12"/></>,
BrainCircuit: <><path d="M12 4.5a2.5 2.5 0 0 0-4.96-.46 2.5 2.5 0 0 0-1.98 3 2.5 2.5 0 0 0-1.32 3 2.5 2.5 0 0 0 .5 3.19 2.5 2.5 0 0 0 2.26 1.77 2.5 2.5 0 0 0 5 .04 2.5 2.5 0 0 0 5-.05 2.5 2.5 0 1 0 5-5 2.5 2.5 0 1 0-4.96-5 2.5 2.5 0 0 0-4.54 1.5"/><path d="M12 13.5V20"/><path d="M16 16.5h4"/><path d="M4 16.5h4"/></>,
Code2: <><path d="m18 16 4-4-4-4"/><path d="m6 8-4 4 4 4"/><path d="m14.5 4-5 16"/></>,
Zap: <polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/>,
CheckCircle2: <><circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/></>,
Rocket: <><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"/><path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"/><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/></>,
Mail: <><rect width="20" height="16" x="2" y="4" rx="2"/><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/></>
};
const Icon = ({ name, size = 24, className = "" }) => {
const content = Icons[name];
if (!content) return null;
return (
<svg
xmlns="http://www.w3.org/2000/svg"
width={size}
height={size}
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth="2"
strokeLinecap="round"
strokeLinejoin="round"
className={className}
>
{content}
</svg>
);
};
// --- COMPONENTE PRINCIPAL ---
const OmniaFlowSite = () => {
const [isScrolled, setIsScrolled] = useState(false);
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
useEffect(() => {
const handleScroll = () => setIsScrolled(window.scrollY > 20);
window.addEventListener('scroll', handleScroll);
return () => window.removeEventListener('scroll', handleScroll);
}, []);
const scrollTo = (id) => {
setIsMobileMenuOpen(false);
const el = document.getElementById(id);
if(el) el.scrollIntoView({ behavior: 'smooth' });
};
return (
<div className="min-h-screen text-[#183B56] overflow-x-hidden selection:bg-[#5432D3] selection:text-white">
{/* --- NAVBAR --- */}
<nav className={`fixed top-0 w-full z-50 transition-all duration-300 ${isScrolled ? 'bg-white/95 backdrop-blur shadow-sm py-4' : 'bg-transparent py-6'}`}>
<div className="container mx-auto px-6 flex justify-between items-center">
{/* Logo */}
<div className="flex items-center gap-3 cursor-pointer" onClick={() => scrollTo('hero')}>
<div className="relative h-10 w-auto">
{/* Intenta cargar el logo, si falla muestra texto fallback */}
<img
src="omniaflow automation logo.jpg"
alt="OmniaFlow"
className="h-10 w-auto object-contain"
onError={(e) => {
e.target.style.display = 'none';
document.getElementById('logo-text-fallback').style.display = 'flex';
}}
/>
<div id="logo-text-fallback" className="hidden items-center gap-2 font-bold text-2xl tracking-tighter">
<div className="w-8 h-8 rounded-lg bg-gradient-to-r from-[#5432D3] to-[#8F5EF8] flex items-center justify-center text-white">
<Icon name="Cpu" size={20} />
</div>
<span>Omnia<span className="text-[#5432D3]">Flow</span></span>
</div>
</div>
</div>
{/* Desktop Menu */}
<div className="hidden md:flex items-center gap-8 font-medium text-sm">
<button onClick={() => scrollTo('servicios')} className="hover:text-[#5432D3] transition-colors">Soluciones</button>
<button onClick={() => scrollTo('ecosistema')} className="hover:text-[#5432D3] transition-colors">Ecosistema</button>
<button onClick={() => scrollTo('nosotros')} className="hover:text-[#5432D3] transition-colors">Nosotros</button>
<button onClick={() => scrollTo('contacto')} className="px-5 py-2.5 rounded-full text-white font-semibold shadow-lg shadow-indigo-500/30 hover:shadow-indigo-500/50 hover:-translate-y-0.5 transition-all bg-gradient-to-r from-[#5432D3] to-[#8F5EF8]">
Agenda una Demo
</button>
</div>
{/* Mobile Toggle */}
<button className="md:hidden" onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}>
<Icon name={isMobileMenuOpen ? "X" : "Menu"} size={28} />
</button>
</div>
{/* Mobile Menu */}
{isMobileMenuOpen && (
<div className="absolute top-full left-0 w-full bg-white border-b border-gray-100 shadow-xl p-6 flex flex-col gap-4 md:hidden">
<button onClick={() => scrollTo('servicios')} className="text-left py-2 font-medium">Soluciones</button>
<button onClick={() => scrollTo('ecosistema')} className="text-left py-2 font-medium">Ecosistema</button>
<button onClick={() => scrollTo('contacto')} className="w-full py-3 rounded-lg text-white font-semibold bg-[#5432D3]">Agenda una Demo</button>
</div>
)}
</nav>
{/* --- HERO SECTION --- */}
<section id="hero" className="relative pt-32 pb-20 lg:pt-48 lg:pb-32 overflow-hidden">
<div className="absolute top-0 right-0 w-[600px] h-[600px] bg-[#5432D3] rounded-full mix-blend-multiply filter blur-[128px] opacity-10 animate-float"></div>
<div className="absolute bottom-0 left-0 w-[500px] h-[500px] bg-[#8F5EF8] rounded-full mix-blend-multiply filter blur-[128px] opacity-10 animate-float" style={{animationDelay: '2s'}}></div>
<div className="container mx-auto px-6 relative z-10 text-center">
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-indigo-50 border border-indigo-100 text-indigo-700 text-xs font-bold uppercase tracking-wide mb-6">
<span className="w-2 h-2 rounded-full bg-indigo-600 animate-pulse"></span>
Innovación en Inteligencia Artificial
</div>
<h1 className="text-5xl md:text-7xl font-bold mb-8 leading-tight tracking-tight">
Transformamos datos en <br/>
<span className="text-transparent bg-clip-text bg-gradient-to-r from-[#5432D3] to-[#8F5EF8]">
Decisiones Inteligentes
</span>
</h1>
<p className="text-xl text-slate-600 mb-10 max-w-2xl mx-auto leading-relaxed">
OmniaFlow integra soluciones de automatización y agentes de IA para escalar negocios modernos. El futuro no es solo digital, es cognitivo.
</p>
<div className="flex flex-col sm:flex-row items-center justify-center gap-4">
<button onClick={() => scrollTo('contacto')} className="px-8 py-4 rounded-full text-white font-bold text-lg shadow-xl shadow-indigo-600/20 hover:shadow-indigo-600/40 hover:-translate-y-1 transition-all bg-gradient-to-r from-[#5432D3] to-[#8F5EF8] flex items-center justify-center gap-2">
Comenzar Transformación <Icon name="ArrowRight" size={20} />
</button>
<button onClick={() => scrollTo('ecosistema')} className="px-8 py-4 rounded-full bg-white text-[#183B56] border border-slate-200 font-bold text-lg hover:bg-slate-50 transition-all">
Ver Productos
</button>
</div>
</div>
</section>
{/* --- CLIENTES / TRUST --- */}
<section className="bg-white py-12 border-y border-slate-100">
<div className="container mx-auto px-6">
<p className="text-center text-slate-400 font-semibold text-sm uppercase tracking-widest mb-8">Empresas que confían en el futuro</p>
<div className="flex flex-wrap justify-center gap-12 opacity-50 grayscale hover:grayscale-0 transition-all duration-500">
{['TechCorp', 'InnovaHealth', 'FutureFit', 'DataSphere'].map((brand, i) => (
<div key={i} className="text-xl font-bold flex items-center gap-2">
<div className="w-6 h-6 bg-slate-300 rounded-full"></div> {brand}
</div>
))}
</div>
</div>
</section>
{/* --- SERVICIOS --- */}
<section id="servicios" className="py-24">
<div className="container mx-auto px-6">
<div className="mb-16">
<h2 className="text-3xl md:text-4xl font-bold mb-4">Soluciones Integrales</h2>
<div className="w-20 h-1.5 bg-gradient-to-r from-[#5432D3] to-[#8F5EF8] rounded-full mb-6"></div>
<p className="text-lg text-slate-600 max-w-2xl">
Diseñamos la arquitectura tecnológica que tu empresa necesita para operar de manera autónoma.
</p>
</div>
<div className="grid md:grid-cols-3 gap-8">
{[
{ icon: "BrainCircuit", title: "Consultoría IA", desc: "Auditoría tecnológica y desarrollo de estrategias para implementar LLMs en procesos críticos." },
{ icon: "Code2", title: "Desarrollo a Medida", desc: "Software escalable y soluciones SaaS construidas sobre arquitecturas robustas." },
{ icon: "Zap", title: "Automatización", desc: "Elimina tareas repetitivas. Conectamos CRM, ventas y soporte en un flujo inteligente." }
].map((service, i) => (
<div key={i} className="bg-white p-8 rounded-2xl shadow-sm border border-slate-100 hover:shadow-xl hover:shadow-indigo-100/50 hover:-translate-y-2 transition-all group">
<div className="w-14 h-14 rounded-xl bg-indigo-50 flex items-center justify-center mb-6 group-hover:bg-[#5432D3] transition-colors">
<div className="text-[#5432D3] group-hover:text-white transition-colors">
<Icon name={service.icon} size={32} />
</div>
</div>
<h3 className="text-xl font-bold mb-3">{service.title}</h3>
<p className="text-slate-600 mb-4">{service.desc}</p>
<a href="#contacto" className="text-[#5432D3] font-semibold flex items-center gap-1 group-hover:gap-2 transition-all">Saber más <Icon name="ArrowRight" size={16}/></a>
</div>
))}
</div>
</div>
</section>
{/* --- ECOSISTEMA (Responde247) --- */}
<section id="ecosistema" className="py-24 bg-[#183B56] text-white relative overflow-hidden">
<div className="container mx-auto px-6 relative z-10">
<div className="flex flex-col lg:flex-row items-center gap-16">
<div className="lg:w-1/2">
<div className="inline-block px-3 py-1 bg-white/10 rounded-full text-xs font-bold tracking-wider mb-6 border border-white/10">PRODUCTO ESTRELLA</div>
<h2 className="text-4xl md:text-5xl font-bold mb-6 leading-tight">
Conoce <span className="text-transparent bg-clip-text bg-gradient-to-r from-blue-400 to-emerald-400">Responde247</span>
</h2>
<p className="text-blue-100 text-lg mb-8 leading-relaxed">
El agente de IA que vive en tu WhatsApp e Instagram, agendando citas y respondiendo dudas mientras duermes.
</p>
<ul className="space-y-4 mb-10">
{["Respuestas en < 3 segundos.", "Integración nativa Meta.", "Agenda sincronizada."].map((item, i) => (
<li key={i} className="flex items-center gap-3">
<div className="w-6 h-6 rounded-full bg-emerald-500/20 flex items-center justify-center text-emerald-400"><Icon name="CheckCircle2" size={14} /></div>
<span className="font-medium text-blue-50">{item}</span>
</li>
))}
</ul>
<button onClick={() => scrollTo('contacto')} className="bg-white text-[#183B56] px-8 py-3 rounded-lg font-bold hover:bg-blue-50 transition-colors flex items-center gap-2">
Explorar Responde247 <Icon name="Rocket" size={18} className="text-[#5432D3]" />
</button>
</div>
<div className="lg:w-1/2">
<div className="bg-white/5 backdrop-blur-lg border border-white/10 p-6 rounded-2xl shadow-2xl">
<div className="flex items-center gap-4 mb-6 border-b border-white/10 pb-4">
<div className="w-10 h-10 rounded-full bg-gradient-to-tr from-blue-500 to-emerald-400 flex items-center justify-center text-white font-bold text-xs">R247</div>
<div>
<div className="font-bold text-white">Asistente Virtual</div>
<div className="text-xs text-emerald-400 flex items-center gap-1"><span className="w-1.5 h-1.5 bg-emerald-400 rounded-full animate-pulse"></span> En línea</div>
</div>
</div>
<div className="space-y-4 text-sm font-medium">
<div className="bg-white/10 p-3 rounded-lg rounded-tl-none max-w-[80%] text-blue-100">Hola, ¿precios de la membresía? 🏋️</div>
<div className="bg-gradient-to-r from-blue-600 to-emerald-600 p-3 rounded-lg rounded-tr-none max-w-[85%] ml-auto text-white">¡Hola! Tenemos un 20% de descuento hoy. Queda en $450/mes. ¿Agendamos visita? 🤖</div>
</div>
</div>
</div>
</div>
</div>
</section>
{/* --- CONTACTO --- */}
<section id="contacto" className="py-24 relative overflow-hidden">
<div className="container mx-auto px-6 relative z-10">
<div className="bg-[#183B56] rounded-3xl p-8 md:p-16 text-white shadow-2xl overflow-hidden relative">
<div className="grid lg:grid-cols-2 gap-12 items-center relative z-10">
<div>
<h2 className="text-3xl md:text-4xl font-bold mb-6">¿Listo para escalar?</h2>
<p className="text-blue-100 mb-8 text-lg">Déjanos tus datos y analizaremos tu caso sin costo.</p>
<div className="space-y-6">
<div className="flex items-center gap-4">
<div className="w-12 h-12 rounded-full bg-white/10 flex items-center justify-center"><Icon name="Mail" className="text-blue-200" /></div>
<div><p className="text-sm text-blue-300">Email</p><p className="font-medium">contacto@omniaflow.tech</p></div>
</div>
</div>
</div>
<div className="bg-white text-[#183B56] p-8 rounded-2xl shadow-lg">
<form className="space-y-4" onSubmit={(e) => e.preventDefault()}>
<div>
<label className="block text-sm font-semibold mb-2">Nombre</label>
<input type="text" className="w-full px-4 py-3 rounded-lg bg-slate-50 border border-slate-200 focus:border-[#5432D3] outline-none" placeholder="Tu nombre" />
</div>
<div>
<label className="block text-sm font-semibold mb-2">Empresa</label>
<input type="text" className="w-full px-4 py-3 rounded-lg bg-slate-50 border border-slate-200 focus:border-[#5432D3] outline-none" placeholder="Tu negocio" />
</div>
<button className="w-full py-4 rounded-lg text-white font-bold text-lg bg-gradient-to-r from-[#5432D3] to-[#8F5EF8] hover:shadow-lg transition-all">
Solicitar Auditoría
</button>
</form>
</div>
</div>
</div>
</div>
</section>
<footer className="bg-[#183B56] text-blue-200 py-12 text-center text-sm border-t border-white/10">
<p>© 2024 OmniaFlow Automation Systems. Todos los derechos reservados.</p>
</footer>
</div>
);
};
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<OmniaFlowSite />);
</script>
</body>
</html>