Files
odoo-expertos.com/index.html
T
2026-08-28 10:11:11 -03:00

1521 lines
76 KiB
HTML

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Servicios profesionales de Odoo ERP para empresas latinoamericanas. Implementación, personalización y soporte técnico especializado con 280% ROI - Odoo Expertos | ES">
<meta name="keywords" content="Odoo ERP, Implementación Odoo, Consultoría ERP, Software empresarial, Automatización de procesos, Transformación digital">
<meta name="author" content="Apex AI Research Labs LLC">
<meta name="google-site-verification" content="tOsk9rzJjNNP1cAgXGfQH_6Li9pGc4qy4LaSwQ-ADng" />
<link rel="canonical" href="https://www.odoo-expertos.com/">
<link rel="alternate" hreflang="es" href="https://www.odoo-expertos.com/" />
<link rel="alternate" hreflang="en" href="https://www.odoo-expertos.com/en/" />
<link rel="alternate" hreflang="de" href="https://www.odoo-expertos.com/de/" />
<link rel="alternate" hreflang="fr" href="https://www.odoo-expertos.com/fr/" />
<link rel="alternate" hreflang="pt" href="https://www.odoo-expertos.com/pt/" />
<link rel="alternate" hreflang="ar" href="https://www.odoo-expertos.com/ar/" />
<link rel="alternate" hreflang="x-default" href="https://www.odoo-expertos.com/" />
<title>Odoo Expertos - Consultoría ERP Profesional | 280% ROI</title>
<!-- No preconnect needed - D3 loads on demand, no external images -->
<!-- Favicon -->
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="alternate icon" href="/favicon.ico">
<!-- Critical CSS Inlined for Faster LCP -->
<style>
/* Critical CSS for above-the-fold content */
:root{--primary-color:#FF6B35;--secondary-color:#FF8A50;--text-color:#E0E0E0;--bg-dark:#1a1a1a;--bg-darker:#0f0f0f;--light-bg:#2a2a2a;--white:#FFFFFF;--transition-smooth:0.3s cubic-bezier(0.16,1,0.3,1)}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;line-height:1.6;color:var(--text-color);background-color:var(--bg-dark)}
.container{max-width:1200px;margin:0 auto;padding:0 20px}
h1{font-weight:700;line-height:1.2;margin-bottom:1rem;color:var(--white);font-size:2.5rem}
.site-header{background-color:var(--bg-darker);position:sticky;top:0;z-index:1000;border-bottom:2px solid var(--primary-color)}
.navbar{padding:1rem 0}
.navbar .container{display:flex;justify-content:space-between;align-items:center}
.logo{font-size:1.8rem;font-weight:700;color:var(--primary-color);text-decoration:none}
.logo-text{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.nav-toggle{display:none;flex-direction:column;background:none;border:none;cursor:pointer;padding:0.5rem}
.nav-list{display:flex;list-style:none;gap:2rem}
.nav-list a{font-weight:500;padding:0.5rem 1rem;border-radius:5px;color:var(--text-color);text-decoration:none}
.hero{min-height:100vh;display:flex;align-items:center;position:relative;background:linear-gradient(135deg,#0f0f0f 0%,#1a1a1a 100%);overflow:hidden}
.hero-content{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center}
.hero h1{font-size:clamp(2.5rem,5vw,4rem);font-weight:800;line-height:1.1;margin-bottom:1.5rem;color:var(--primary-color)}
.btn{display:inline-block;padding:0.8rem 2rem;border-radius:5px;font-weight:600;cursor:pointer;text-align:center;text-decoration:none}
.btn-primary{background-color:var(--primary-color);color:var(--white)}
@media(max-width:768px){.nav-toggle{display:flex}.hero-content{grid-template-columns:1fr;text-align:center}}
</style>
<!-- Load full CSS asynchronously -->
<link rel="preload" href="/css/main.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="/css/main.min.css"></noscript>
<!-- D3.js will be loaded dynamically when needed -->
<link rel="stylesheet" href="/css/homepage-extra.min.css">
<!-- Structured Data - Organization and WebSite Schema -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Odoo Expertos",
"url": "https://www.odoo-expertos.com",
"logo": "https://www.odoo-expertos.com/favicon.svg",
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer service",
"availableLanguage": ["Spanish", "English", "German", "French", "Portuguese", "Arabic"]
},
"sameAs": []
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "Odoo Expertos",
"url": "https://www.odoo-expertos.com",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.odoo-expertos.com/search?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}
</script>
</head>
<body>
<!-- SVG Icon Definitions (Hidden) -->
<svg style="display: none;">
<defs>
<symbol id="icon-automation" viewBox="0 0 24 24">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
</symbol>
<symbol id="icon-ai" viewBox="0 0 24 24">
<path d="M21 10.12h-6.78l2.74-2.82c-2.73-2.7-7.15-2.8-9.88-.1-2.73 2.71-2.73 7.08 0 9.79 2.73 2.71 7.15 2.71 9.88 0C18.32 15.65 19 14.08 19 12.1h2c0 1.98-.88 4.55-2.64 6.29-3.51 3.48-9.21 3.48-12.72 0-3.5-3.47-3.53-9.11-.02-12.58 3.51-3.47 9.14-3.47 12.65 0L21 3v7.12zM12.5 8v4.25l3.5 2.08-.72 1.21L11 13V8h1.5z"/>
</symbol>
<symbol id="icon-whatsapp" viewBox="0 0 24 24">
<path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.149-.67.149-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.074-.297-.149-1.255-.462-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.521.151-.172.2-.296.3-.495.099-.198.05-.372-.025-.521-.075-.148-.669-1.611-.916-2.206-.242-.579-.487-.501-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.263.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.719 2.006-1.413.248-.695.248-1.29.173-1.414z"/>
</symbol>
<symbol id="icon-global" viewBox="0 0 24 24">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.94-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"/>
</symbol>
</defs>
</svg>
<!-- Interactive Background -->
<div class="interactive-background"></div>
<!-- Scroll Progress -->
<div class="scroll-progress"></div>
<!-- Header Component (Inlined for Performance) -->
<header class="site-header"><nav class="navbar"><div class="container"><div class="nav-brand"><a href="/" class="logo"><span class="logo-text">Odoo Expertos</span></a></div><button class="nav-toggle" aria-label="Toggle navigation"><span></span><span></span><span></span></button><div class="nav-menu"><ul class="nav-list"><li><a href="/">Inicio</a></li><li><a href="/odoo/">Odoo</a></li><li><a href="/odoo-ia/">Odoo IA</a></li><li><a href="/odoo-hosting/">Hosting Odoo</a></li></ul></div></div></nav></header>
<main role="main">
<!-- Hero Section -->
<section class="hero">
<div class="container">
<div class="hero-content">
<div class="hero-text">
<h1>Implementacion Odoo con IA para <span style="color: var(--primary-color);">Captar Nuevos Clientes</span></h1>
<p>100+ empresas latinoamericanas usan Odoo con IA para automatizar procesos 24/7. Aprende a implementarlo en tu negocio con guias practicas y consultoria experta.</p>
<div class="hero-buttons">
<a href="#packages" class="btn btn-primary" style="background: var(--primary-color); border-color: var(--primary-color);">Ver paquetes de implementacion</a>
<a href="#calculator" class="btn btn-secondary" style="color: var(--primary-color); border-color: var(--primary-color);">Calcular ahorro estimado</a>
</div>
</div>
<div class="hero-animation">
<div class="ecosystem-map-simulation">
<!-- Static SVG placeholder for faster LCP -->
<svg viewBox="0 0 500 400" style="width: 100%; height: 100%;">
<circle cx="250" cy="200" r="50" fill="#FF6B35" opacity="0.8"/>
<circle cx="370" cy="120" r="30" fill="#FF8A50" opacity="0.6"/>
<circle cx="370" cy="280" r="30" fill="#FF8A50" opacity="0.6"/>
<circle cx="130" cy="120" r="30" fill="#FF8A50" opacity="0.6"/>
<circle cx="130" cy="280" r="30" fill="#FF8A50" opacity="0.6"/>
<path d="M250,200 L370,120 M250,200 L370,280 M250,200 L130,120 M250,200 L130,280" stroke="#FF6B35" stroke-width="2" opacity="0.4" fill="none"/>
<text x="250" y="205" text-anchor="middle" fill="white" font-weight="bold" font-size="14">ODOO</text>
</svg>
</div>
</div>
</div>
</div>
</section>
<!-- Interactive Package Selector -->
<section id="packages" class="section">
<div class="container">
<div class="section-title">
<h2 style="color: var(--primary-color);">Elige tu plan de implementacion Odoo</h2>
<p>Tres niveles disenados segun el tamano y madurez de tu empresa. Compara funcionalidades, alcance y tiempos de puesta en marcha.</p>
</div>
<div class="package-selector">
<div class="package-tabs">
<div class="package-tab active" data-package="starter">
<strong style="color: var(--primary-color);">🗿 DESTRUCTOR</strong><br>
<small>Aniquila Rivales Pequeños</small>
</div>
<div class="package-tab" data-package="growth">
<strong style="color: var(--primary-color);">👑 DOMINADOR</strong><br>
<small>Aplasta la Competencia</small>
</div>
<div class="package-tab" data-package="enterprise">
<strong style="color: var(--primary-color);">🏆 EMPERADOR</strong><br>
<small>Destruye Corporaciones</small>
</div>
</div>
<div class="package-content active" id="starter-content">
<div class="cards-grid">
<div class="modern-card">
<h3>📊 Implementación Básica</h3>
<p>Configuración esencial de módulos core: CRM, Ventas, Inventario y Contabilidad básica para empresas de hasta 50 empleados.</p>
<div class="roi-metric">
<span class="roi-value counter" data-target="600">$0</span>
<div class="roi-label">Desde USD</div>
</div>
</div>
<div class="modern-card">
<h3>🎯 Capacitación Incluida</h3>
<p>20 horas de formación para usuarios clave, documentación completa y soporte técnico por 3 meses.</p>
<ul>
<li>Formación usuarios finales</li>
<li>Documentación personalizada</li>
<li>Soporte 3 meses</li>
</ul>
</div>
</div>
</div>
<div class="package-content" id="growth-content">
<div class="cards-grid">
<div class="modern-card">
<h3>🚀 Implementación Avanzada</h3>
<p>Solución completa con automatizaciones, integraciones personalizadas y módulos especializados para empresas de 50-200 empleados.</p>
<div class="roi-metric">
<span class="roi-value counter" data-target="1400">$0</span>
<div class="roi-label">Desde USD</div>
</div>
</div>
<div class="modern-card">
<h3>⚡ Optimización de Procesos</h3>
<p>Análisis de flujos de trabajo, automatización de procesos repetitivos y desarrollo de reportes personalizados.</p>
<ul>
<li>Automatizaciones avanzadas</li>
<li>Integraciones API</li>
<li>Reportes personalizados</li>
<li>Soporte 6 meses</li>
</ul>
</div>
</div>
</div>
<div class="package-content" id="enterprise-content">
<div class="cards-grid">
<div class="modern-card">
<h3>🏢 Solución Empresarial</h3>
<p>Implementación completa multi-empresa con alta disponibilidad, seguridad avanzada y arquitectura escalable para 200+ empleados.</p>
<div class="roi-metric">
<span class="roi-value counter" data-target="3000">$0</span>
<div class="roi-label">Desde USD</div>
</div>
</div>
<div class="modern-card">
<h3>🛡️ Soporte Premium</h3>
<p>Soporte 24/7, actualizaciones automáticas, monitoreo proactivo y consultoría estratégica continua.</p>
<ul>
<li>Soporte 24/7</li>
<li>Consultoría estratégica</li>
<li>Monitoreo proactivo</li>
<li>SLA garantizado</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Compliance Activity Feed -->
<section class="section">
<div class="container">
<div class="section-title">
<h2 style="color: var(--primary-color);">Resultados de clientes en vivo</h2>
<p>Casos reales recientes de empresas que implementaron Odoo con IA en LATAM y obtuvieron mejoras medibles en su operacion.</p>
</div>
<div class="activity-feed" style="border: 2px solid var(--primary-color); background: rgba(255, 68, 68, 0.05);">
<div class="activity-item">
<div class="activity-icon" style="background: var(--primary-color);">💥</div>
<div class="activity-content">
<div class="activity-title" style="color: var(--primary-color); font-weight: bold;">COMPETIDOR ELIMINADO - México</div>
<div class="activity-desc">Manufactura robó 40% de market share con automatización</div>
</div>
<div class="activity-time">2 min</div>
</div>
<div class="activity-item">
<div class="activity-icon" style="background: var(--primary-color);">💣</div>
<div class="activity-content">
<div class="activity-title" style="color: var(--primary-color); font-weight: bold;">RIVAL DESTRUIDO - Colombia</div>
<div class="activity-desc">Retail chain aplastó competencia con IA predictiva</div>
</div>
<div class="activity-time">5 min</div>
</div>
<div class="activity-item">
<div class="activity-icon" style="background: var(--primary-color);">⚔️</div>
<div class="activity-content">
<div class="activity-title" style="color: var(--primary-color); font-weight: bold;">Caso de exito - Argentina</div>
<div class="activity-desc">B2B aniquiló 3 competidores con automatización 24/7</div>
</div>
<div class="activity-time">8 min</div>
</div>
<div class="activity-item">
<div class="activity-icon" style="background: var(--primary-color);">💀</div>
<div class="activity-content">
<div class="activity-title" style="color: var(--primary-color); font-weight: bold;">COMPETENCIA EXTERMINADA - Chile</div>
<div class="activity-desc">Distribuidor robó clientes con facturación instantánea</div>
</div>
<div class="activity-time">12 min</div>
</div>
<div class="activity-item">
<div class="activity-icon" style="background: var(--primary-color);">👑</div>
<div class="activity-content">
<div class="activity-title" style="color: var(--primary-color); font-weight: bold;">MONOPOLIO ESTABLECIDO - Perú</div>
<div class="activity-desc">Logística dominó sector con automatización de rutas</div>
</div>
<div class="activity-time">15 min</div>
</div>
</div>
</div>
</section>
<!-- ROI Calculator -->
<section id="calculator" class="section">
<div class="container">
<div class="roi-calculator">
<div class="section-title">
<h2>💰 CALCULADORA DE PÉRDIDAS DIARIAS 💰</h2>
<p style="color: var(--primary-color); font-weight: 700;">Calcula el ahorro estimado al automatizar tu operacion con Odoo y un agente de IA.</p>
</div>
<div class="calculator-slider">
<label for="employees">Número de Empleados: <span id="employee-count">50</span></label>
<div class="slider-container">
<input type="range" id="employees" class="slider" min="10" max="500" value="50">
</div>
</div>
<div class="calculator-slider">
<label for="revenue">Ingresos Anuales (USD): $<span id="revenue-amount">500,000</span></label>
<div class="slider-container">
<input type="range" id="revenue" class="slider" min="100000" max="10000000" value="500000" step="50000">
</div>
</div>
<div class="roi-results">
<div class="roi-metric">
<div class="roi-value counter" id="efficiency-gain">25%</div>
<div class="roi-label">Ganancia en Eficiencia</div>
</div>
<div class="roi-metric">
<div class="roi-value counter" id="cost-savings">$125,000</div>
<div class="roi-label">Ahorro Anual</div>
</div>
<div class="roi-metric">
<div class="roi-value counter" id="roi-percentage">280%</div>
<div class="roi-label">ROI Primer Año</div>
</div>
<div class="roi-metric">
<div class="roi-value counter" id="payback-period">4.3</div>
<div class="roi-label">Meses de Retorno</div>
</div>
</div>
</div>
</div>
</section>
<!-- Feature Toggles -->
<section class="section">
<div class="container">
<div class="section-title">
<h2>Funcionalidades Clave de Nuestros Servicios</h2>
<p>Explora las capacidades que transformarán tu empresa</p>
</div>
<div class="feature-toggles">
<div class="toggle-item" data-feature="automation">
<div class="toggle-header">
<h3>🤖 Automatización de Procesos</h3>
<div class="toggle-switch">
<div class="toggle-knob"></div>
</div>
</div>
<div class="toggle-content">
<p>Automatiza tareas repetitivas, workflows de aprobación y notificaciones. Reduce errores humanos hasta 90% y libera tiempo para actividades estratégicas.</p>
<ul>
<li>Workflows automáticos</li>
<li>Notificaciones inteligentes</li>
<li>Aprobaciones digitales</li>
</ul>
</div>
</div>
<div class="toggle-item" data-feature="integration">
<div class="toggle-header">
<h3>🔗 Integraciones Avanzadas</h3>
<div class="toggle-switch">
<div class="toggle-knob"></div>
</div>
</div>
<div class="toggle-content">
<p>Conecta Odoo con todos tus sistemas existentes: e-commerce, facturación electrónica, bancos, plataformas de marketing y más.</p>
<ul>
<li>APIs personalizadas</li>
<li>Sincronización en tiempo real</li>
<li>Conectores pre-construidos</li>
</ul>
</div>
</div>
<div class="toggle-item" data-feature="analytics">
<div class="toggle-header">
<h3>📊 Analítica Avanzada</h3>
<div class="toggle-switch">
<div class="toggle-knob"></div>
</div>
</div>
<div class="toggle-content">
<p>Dashboards interactivos, reportes predictivos y análisis de tendencias que impulsan la toma de decisiones basada en datos.</p>
<ul>
<li>Dashboards personalizados</li>
<li>Análisis predictivo</li>
<li>Reportes automáticos</li>
</ul>
</div>
</div>
<div class="toggle-item" data-feature="mobile">
<div class="toggle-header">
<h3>📱 Acceso Móvil Completo</h3>
<div class="toggle-switch">
<div class="toggle-knob"></div>
</div>
</div>
<div class="toggle-content">
<p>Accede a todas las funcionalidades desde cualquier dispositivo. Apps nativas para iOS y Android con sincronización offline.</p>
<ul>
<li>Apps nativas móviles</li>
<li>Modo offline</li>
<li>Geolocalización</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<!-- Client Testimonials Carousel -->
<section class="section">
<div class="container">
<div class="section-title">
<h2>Testimonios de clientes</h2>
<p>Empresarios que implementaron Odoo con IA y compartieron sus resultados verificables.</p>
</div>
<div class="testimonials-carousel">
<div class="testimonials-container">
<div class="testimonial-slide">
<div class="testimonial-content">
"Superamos a 3 competidores principales en 6 meses. Mi empresa lidera el sector con 73% del mercado segun datos internos, y ganamos nuevos territorios cada semana gracias a la automatizacion con Odoo."
</div>
<div class="testimonial-author">
<div class="author-avatar">MG</div>
<div class="author-info">
<h4>María González</h4>
<p>👑 EMPERATRIZ DIGITAL, Distribuidora Central</p>
</div>
</div>
</div>
<div class="testimonial-slide">
<div class="testimonial-content">
"<span style='color: var(--primary-color); font-weight: bold;'>ANIQUILAMOS</span> la eficiencia de la competencia. De 50 órdenes diarias SALTAMOS a 200 sin contratar a nadie. Nuestros rivales siguen luchando con procesos manuales mientras nosotros <span style='color: var(--secondary-color); font-weight: bold;'>DOMINAMOS</span> con automatización letal."
</div>
<div class="testimonial-author">
<div class="author-avatar">AR</div>
<div class="author-info">
<h4>Alejandro Ruiz</h4>
<p>⚔️ COMANDANTE DE OPERACIONES, IndustriasTech</p>
</div>
</div>
</div>
<div class="testimonial-slide">
<div class="testimonial-content">
"Su soporte es una <span style='color: var(--primary-color); font-weight: bold;'>MÁQUINA DE GUERRA</span>. Responden en segundos y ELIMINAN problemas antes de que afecten nuestro imperio. 2 años APLASTANDO competidores juntos. La confianza es <span style='color: var(--secondary-color); font-weight: bold;'>TOTAL</span>."
</div>
<div class="testimonial-author">
<div class="author-avatar">CS</div>
<div class="author-info">
<h4>Carlos Salinas</h4>
<p>🛡️ GENERAL DE TECNOLOGÍA, RetailPlus</p>
</div>
</div>
</div>
</div>
<div class="carousel-indicators">
<div class="indicator active" data-slide="0"></div>
<div class="indicator" data-slide="1"></div>
<div class="indicator" data-slide="2"></div>
</div>
</div>
</div>
</section>
<!-- Visual Benefits Section -->
<section class="visual-benefits">
<div class="container">
<div class="section-title text-center">
<h2>Beneficios Visuales de Nuestras Soluciones</h2>
<p>Descubre cómo transformamos los procesos empresariales con tecnología avanzada</p>
</div>
<div class="benefits-grid">
<div class="benefit-card fade-in-up">
<div class="benefit-image" style="background: linear-gradient(135deg, #2a2a2a 0%, #3a3a3a 100%); display: flex; align-items: center; justify-content: center;"><svg width="80" height="80" fill="#FF6B35"><use href="#icon-automation"/></svg></div>
<div class="benefit-content">
<div class="benefit-icon">📋</div>
<h3 class="benefit-title">Automatización de Cumplimiento</h3>
<p class="benefit-description">Sistemas automatizados que garantizan el cumplimiento normativo y fiscal en tiempo real, eliminando errores manuales y reduciendo riesgos.</p>
<ul class="benefit-features">
<li>Facturación electrónica automática</li>
<li>Reportes fiscales en tiempo real</li>
<li>Auditorías automatizadas</li>
<li>Cumplimiento multi-país</li>
</ul>
</div>
</div>
<div class="benefit-card fade-in-up">
<div class="benefit-image" style="background: linear-gradient(135deg, #2a2a2a 0%, #3a3a3a 100%); display: flex; align-items: center; justify-content: center;"><svg width="80" height="80" fill="#FF6B35"><use href="#icon-ai"/></svg></div>
<div class="benefit-content">
<div class="benefit-icon">🤖</div>
<h3 class="benefit-title">Inteligencia Artificial Empresarial</h3>
<p class="benefit-description">Análisis predictivos y automatización inteligente que optimizan la toma de decisiones y predicen tendencias del mercado.</p>
<ul class="benefit-features">
<li>Análisis predictivo de ventas</li>
<li>Optimización de inventarios</li>
<li>Detección de patrones</li>
<li>Recomendaciones automáticas</li>
</ul>
</div>
</div>
<div class="benefit-card fade-in-up">
<div class="benefit-image" style="background: linear-gradient(135deg, #2a2a2a 0%, #3a3a3a 100%); display: flex; align-items: center; justify-content: center;"><svg width="80" height="80" fill="#FF6B35"><use href="#icon-whatsapp"/></svg></div>
<div class="benefit-content">
<div class="benefit-icon">💬</div>
<h3 class="benefit-title">Integración WhatsApp Business</h3>
<p class="benefit-description">Comunicación directa con clientes a través de WhatsApp integrado al CRM, automatizando respuestas y gestionando conversaciones.</p>
<ul class="benefit-features">
<li>Chatbots automatizados</li>
<li>Integración CRM completa</li>
<li>Seguimiento de conversaciones</li>
<li>Notificaciones inteligentes</li>
</ul>
</div>
</div>
<div class="benefit-card fade-in-up">
<div class="benefit-image" style="background: linear-gradient(135deg, #2a2a2a 0%, #3a3a3a 100%); display: flex; align-items: center; justify-content: center;"><svg width="80" height="80" fill="#FF6B35"><use href="#icon-global"/></svg></div>
<div class="benefit-content">
<div class="benefit-icon">🌎</div>
<h3 class="benefit-title">Soporte Multi-País</h3>
<p class="benefit-description">Experiencia especializada en implementaciones para empresas que operan en múltiples países latinoamericanos.</p>
<ul class="benefit-features">
<li>Configuración multi-moneda</li>
<li>Adaptación normativa local</li>
<li>Soporte en español</li>
<li>Horarios locales extendidos</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<!-- Success Stories Gallery -->
<section class="success-stories">
<div class="container">
<div class="section-title text-center">
<h2>Historias de Éxito Comprobadas</h2>
<p>Casos reales de transformación empresarial en Latinoamérica</p>
</div>
<div class="stories-grid">
<div class="story-card fade-in-up">
<div class="story-image" style="background: linear-gradient(135deg, #FF6B35 0%, #FF8A50 100%); display: flex; align-items: center; justify-content: center; color: white; font-size: 48px; font-weight: bold;">
<div class="story-overlay">
<div class="story-stat">65%</div>
<div class="story-stat-label">Reducción de Costos</div>
</div>
</div>
<div class="story-content">
<h3 class="story-title">Transformación Retail Colombiana</h3>
<p class="story-description">Una cadena de retail colombiana automatizó completamente su gestión de inventarios y ventas, logrando una reducción del 65% en costos operativos y expandiéndose a 25 nuevas ubicaciones en solo 18 meses.</p>
<div class="story-location">🇨🇴 Bogotá, Colombia</div>
</div>
</div>
<div class="story-card fade-in-up">
<div class="story-image" style="background: linear-gradient(135deg, #FF6B35 0%, #FF8A50 100%); display: flex; align-items: center; justify-content: center; color: white; font-size: 48px; font-weight: bold;">
<div class="story-overlay">
<div class="story-stat">400%</div>
<div class="story-stat-label">Aumento Productividad</div>
</div>
</div>
<div class="story-content">
<h3 class="story-title">Manufactura Mexicana Inteligente</h3>
<p class="story-description">Empresa manufacturera mexicana implementó automatización de producción con Odoo, cuadruplicando su productividad y reduciendo desperdicios en 80%, convirtiéndose en líder del sector.</p>
<div class="story-location">🇲🇽 Guadalajara, México</div>
</div>
</div>
<div class="story-card fade-in-up">
<div class="story-image" style="background: linear-gradient(135deg, #FF6B35 0%, #FF8A50 100%); display: flex; align-items: center; justify-content: center; color: white; font-size: 48px; font-weight: bold;">
<div class="story-overlay">
<div class="story-stat">250%</div>
<div class="story-stat-label">Crecimiento Exportaciones</div>
</div>
</div>
<div class="story-content">
<h3 class="story-title">Exportación Argentina Exitosa</h3>
<p class="story-description">Empresa argentina de exportación de commodities triplicó sus operaciones internacionales gracias a la automatización de procesos de comercio exterior y gestión multi-moneda avanzada.</p>
<div class="story-location">🇦🇷 Buenos Aires, Argentina</div>
</div>
</div>
</div>
</div>
</section>
<!-- Team & Trust Section -->
<section class="team-trust">
<div class="container">
<div class="section-title text-center">
<h2>Experiencia Local, Estándares Globales</h2>
<p>Combinamos conocimiento local con certificaciones internacionales</p>
</div>
<div class="trust-grid">
<div class="trust-card fade-in-up">
<div class="trust-icon">🎓</div>
<h3 class="trust-title">Experticia Local Certificada</h3>
<p class="trust-description">Nuestro equipo combina años de experiencia en el mercado latinoamericano con certificaciones oficiales de Odoo, garantizando implementaciones de clase mundial.</p>
<div class="trust-badges">
<span class="trust-badge">Odoo Certified</span>
<span class="trust-badge">8+ Años Experiencia</span>
<span class="trust-badge">200+ Proyectos</span>
</div>
</div>
<div class="trust-card fade-in-up">
<div class="trust-icon">🤝</div>
<h3 class="trust-title">Alianzas Estratégicas</h3>
<p class="trust-description">Mantenemos partnerships con los principales proveedores de tecnología y consultores especializados en cada país, asegurando soporte local óptimo.</p>
<div class="trust-badges">
<span class="trust-badge">Partner Oficial</span>
<span class="trust-badge">Red Regional</span>
<span class="trust-badge">Soporte 24/7</span>
</div>
</div>
<div class="trust-card fade-in-up">
<div class="trust-icon">🔒</div>
<h3 class="trust-title">Seguridad y Cumplimiento</h3>
<p class="trust-description">Implementamos los más altos estándares de seguridad y cumplimiento normativo, adaptándonos a las regulaciones específicas de cada país.</p>
<div class="trust-badges">
<span class="trust-badge">ISO 27001</span>
<span class="trust-badge">GDPR Ready</span>
<span class="trust-badge">SOC 2</span>
</div>
</div>
</div>
</div>
</section>
<!-- Contact Section -->
<section id="contact" class="section">
<div class="container text-center">
<h2>¿Listo para Transformar tu Empresa?</h2>
<p class="mb-3">Solicita una consultoría gratuita y descubre el potencial de Odoo para tu negocio.</p>
<div class="hero-buttons">
<a href="mailto:consultas@odoo-expertos.com" class="btn btn-primary">Consultoría Gratuita</a>
<a href="tel:+1234567890" class="btn btn-secondary">Llamar Ahora</a>
</div>
<p class="mt-3" style="color: var(--primary-color); font-weight: 600;">🎯 Garantía de satisfacción del 100% en los primeros 30 días</p>
</div>
</section>
</main>
<!-- Floating Action Button -->
<div class="fab" onclick="scrollToTop()"></div>
<!-- Footer Component (Inlined for Performance) -->
<footer class="site-footer"><div class="container"><div class="footer-content"><div class="footer-section"><h3>Apex AI Research Labs LLC</h3><p>1309 Coffeen Avenue STE 1200<br>Sheridan Wyoming 82801<br>Estados Unidos</p><p>Propietaria:Olga Goertz</p></div><div class="footer-section"><h3>Contacto</h3><p>Email:<a href="mailto:info@odoo-expertos.com">info@odoo-expertos.com</a></p><p>Expertos en soluciones Odoo ERP</p></div><div class="footer-section"><h3>Enlaces Rápidos</h3><ul class="footer-links"><li><a href="/index.html">Inicio</a></li><li><a href="#modules">Módulos Odoo</a></li><li><a href="#benefits">Beneficios</a></li><li><a href="#community">Comunidad</a></li></ul></div><div class="footer-section"><h3>Legal</h3><ul class="footer-links"><li><a href="/legal-notice.html">Aviso Legal</a></li><li><a href="/privacy-policy.html">Política de Privacidad</a></li><li><a href="/cookie-policy.html">Política de Cookies</a></li><li><a href="/terms-of-use.html">Términos de Uso</a></li></ul></div></div><div class="footer-bottom"><p>&copy;2024 Apex AI Research Labs LLC. Todos los derechos reservados.</p></div></div></footer>
<!-- Defer non-critical JavaScript -->
<script src="/js/cookie-banner.min.js" defer></script>
<!-- Nav Toggle Handler (Critical, Inlined) -->
<script>
document.addEventListener('DOMContentLoaded',function(){
const navToggle=document.querySelector('.nav-toggle');
const navMenu=document.querySelector('.nav-menu');
if(navToggle){
navToggle.addEventListener('click',function(){
navMenu.classList.toggle('active');
navToggle.classList.toggle('active');
},{ passive: true });
}
});
</script>
<script>
// Additional initialization after DOM is ready
window.addEventListener('DOMContentLoaded', function() {
// No lazy loading needed - no external images used
});
// Load D3.js dynamically when needed
let d3Loaded = false;
function loadD3() {
return new Promise((resolve) => {
if (d3Loaded || window.d3) {
d3Loaded = true;
resolve();
return;
}
const script = document.createElement('script');
script.src = 'https://d3js.org/d3.v7.min.js';
script.onload = () => {
d3Loaded = true;
resolve();
};
document.head.appendChild(script);
});
}
// Advanced D3.js Ecosystem Visualization with Floating Particles
async function initEcosystemVisualization() {
const containerEl = document.querySelector('.ecosystem-map-simulation');
if (!containerEl) return;
await loadD3();
const container = d3.select('.ecosystem-map-simulation');
if (container.empty()) return;
const width = 500;
const height = 400;
container.selectAll("*").remove();
const svg = container.append('svg')
.attr('viewBox', `0 0 ${width} ${height}`)
.attr('preserveAspectRatio', 'xMidYMid meet')
.style('width', '100%')
.style('height', '100%');
// Create advanced gradient definitions
const defs = svg.append('defs');
// Main node gradient
const nodeGradient = defs.append('radialGradient')
.attr('id', 'nodeGradient')
.attr('cx', '30%').attr('cy', '30%')
.attr('r', '70%');
nodeGradient.append('stop').attr('offset', '0%').attr('stop-color', '#FF6B35');
nodeGradient.append('stop').attr('offset', '50%').attr('stop-color', '#FF6B35');
nodeGradient.append('stop').attr('offset', '100%').attr('stop-color', '#FFFFFF');
// Particle gradient
const particleGradient = defs.append('radialGradient')
.attr('id', 'particleGradient')
.attr('cx', '50%').attr('cy', '50%')
.attr('r', '50%');
particleGradient.append('stop').attr('offset', '0%').attr('stop-color', '#FF6B35').attr('stop-opacity', '0.8');
particleGradient.append('stop').attr('offset', '100%').attr('stop-color', '#FF6B35').attr('stop-opacity', '0.2');
// Glow filter
const filter = defs.append('filter')
.attr('id', 'glow')
.attr('x', '-50%').attr('y', '-50%')
.attr('width', '200%').attr('height', '200%');
filter.append('feGaussianBlur')
.attr('stdDeviation', '3')
.attr('result', 'coloredBlur');
const feMerge = filter.append('feMerge');
feMerge.append('feMergeNode').attr('in', 'coloredBlur');
feMerge.append('feMergeNode').attr('in', 'SourceGraphic');
// Create floating particles background
const particles = Array.from({length: 30}, (_, i) => ({
id: i,
x: Math.random() * width,
y: Math.random() * height,
vx: (Math.random() - 0.5) * 0.5,
vy: (Math.random() - 0.5) * 0.5,
r: Math.random() * 3 + 1,
opacity: Math.random() * 0.5 + 0.2
}));
const particleGroup = svg.append('g').attr('class', 'particles');
function animateParticles() {
particles.forEach(p => {
p.x += p.vx;
p.y += p.vy;
// Bounce off walls
if (p.x <= 0 || p.x >= width) p.vx *= -1;
if (p.y <= 0 || p.y >= height) p.vy *= -1;
// Keep in bounds
p.x = Math.max(0, Math.min(width, p.x));
p.y = Math.max(0, Math.min(height, p.y));
});
particleGroup.selectAll('.particle')
.data(particles)
.join('circle')
.attr('class', 'particle')
.attr('cx', d => d.x)
.attr('cy', d => d.y)
.attr('r', d => d.r)
.attr('fill', 'url(#particleGradient)')
.attr('opacity', d => d.opacity);
requestAnimationFrame(animateParticles);
}
animateParticles();
// Interactive network nodes data
const networkNodes = [
{id: 'odoo', x: width/2, y: height/2, r: 50, fixed: true, color: '#FF6B35', label: 'ODOO'},
{id: 'crm', x: width/2 + 120, y: height/2 - 80, r: 30, color: '#FF6B35', label: 'CRM'},
{id: 'sales', x: width/2 + 120, y: height/2 + 80, r: 30, color: '#FF8A50', label: 'Ventas'},
{id: 'inventory', x: width/2 - 120, y: height/2 - 80, r: 30, color: '#FF8A50', label: 'Stock'},
{id: 'accounting', x: width/2 - 120, y: height/2 + 80, r: 30, color: '#FF8A50', label: 'Conta'},
{id: 'hr', x: width/2, y: height/2 - 120, r: 25, color: '#FF6B35', label: 'RRHH'},
{id: 'manufacturing', x: width/2, y: height/2 + 120, r: 25, color: '#FF6B35', label: 'Mfg'}
];
const networkLinks = [
{source: 'odoo', target: 'crm'},
{source: 'odoo', target: 'sales'},
{source: 'odoo', target: 'inventory'},
{source: 'odoo', target: 'accounting'},
{source: 'odoo', target: 'hr'},
{source: 'odoo', target: 'manufacturing'},
{source: 'crm', target: 'sales'},
{source: 'inventory', target: 'accounting'}
];
// Force simulation
const simulation = d3.forceSimulation(networkNodes)
.force('link', d3.forceLink(networkLinks).id(d => d.id).distance(100).strength(0.1))
.force('charge', d3.forceManyBody().strength(-200))
.force('center', d3.forceCenter(width/2, height/2))
.force('collision', d3.forceCollide().radius(d => d.r + 5));
// Create links with morphing effects
const links = svg.append('g')
.selectAll('path')
.data(networkLinks)
.join('path')
.attr('fill', 'none')
.attr('stroke-width', 3)
.attr('stroke', '#FF6B35')
.attr('opacity', 0.6)
.style('filter', 'url(#glow)');
// Create nodes with advanced interactions
const nodes = svg.append('g')
.selectAll('g')
.data(networkNodes)
.join('g')
.style('cursor', 'pointer')
.call(d3.drag()
.on('start', dragstarted)
.on('drag', dragged)
.on('end', dragended));
// Node circles with pulsing animation
nodes.append('circle')
.attr('r', d => d.r)
.attr('fill', d => d.id === 'odoo' ? 'url(#nodeGradient)' : d.color)
.attr('stroke', '#1a1a1a')
.attr('stroke-width', 2)
.style('filter', 'url(#glow)')
.on('mouseover', function(event, d) {
d3.select(this)
.transition()
.duration(200)
.attr('r', d.r * 1.2)
.attr('stroke-width', 4);
// Highlight connected links
links.style('opacity', link =>
link.source.id === d.id || link.target.id === d.id ? 1 : 0.2
);
})
.on('mouseout', function(event, d) {
d3.select(this)
.transition()
.duration(200)
.attr('r', d.r)
.attr('stroke-width', 2);
links.style('opacity', 0.6);
});
// Node labels
nodes.append('text')
.attr('text-anchor', 'middle')
.attr('dy', '0.35em')
.attr('fill', 'white')
.attr('font-size', d => d.id === 'odoo' ? '14px' : '10px')
.attr('font-weight', 'bold')
.text(d => d.label);
// Pulsing rings around central node
const pulseRings = svg.append('g');
[1, 2, 3].forEach((ring, i) => {
pulseRings.append('circle')
.attr('cx', width/2)
.attr('cy', height/2)
.attr('r', 50)
.attr('fill', 'none')
.attr('stroke', '#FF6B35')
.attr('stroke-width', 2)
.attr('opacity', 0)
.transition()
.duration(2000)
.delay(i * 700)
.ease(d3.easeLinear)
.attr('r', 120)
.attr('opacity', 0.3)
.transition()
.duration(1000)
.attr('opacity', 0)
.on('end', function() {
d3.select(this).attr('r', 50).transition().delay(2100 - i * 700);
});
});
// Update positions on simulation tick
simulation.on('tick', () => {
links.attr('d', d => {
const dx = d.target.x - d.source.x;
const dy = d.target.y - d.source.y;
const dr = Math.sqrt(dx * dx + dy * dy) * 0.3;
return `M${d.source.x},${d.source.y}A${dr},${dr} 0 0,1 ${d.target.x},${d.target.y}`;
});
nodes.attr('transform', d => `translate(${d.x},${d.y})`);
});
// Drag functions
function dragstarted(event, d) {
if (!event.active) simulation.alphaTarget(0.3).restart();
d.fx = d.x;
d.fy = d.y;
}
function dragged(event, d) {
d.fx = event.x;
d.fy = event.y;
}
function dragended(event, d) {
if (!event.active) simulation.alphaTarget(0);
if (!d.fixed) {
d.fx = null;
d.fy = null;
}
}
// Energy waves animation
setInterval(() => {
svg.append('circle')
.attr('cx', width/2)
.attr('cy', height/2)
.attr('r', 0)
.attr('fill', 'none')
.attr('stroke', '#FF6B35')
.attr('stroke-width', 3)
.attr('opacity', 0.8)
.transition()
.duration(3000)
.ease(d3.easeCircleOut)
.attr('r', 200)
.attr('opacity', 0)
.remove();
}, 4000);
}
// Package Selector Logic
function initPackageSelector() {
const tabs = document.querySelectorAll('.package-tab');
const contents = document.querySelectorAll('.package-content');
tabs.forEach(tab => {
tab.addEventListener('click', () => {
// Remove active class from all tabs and contents
tabs.forEach(t => t.classList.remove('active'));
contents.forEach(c => c.classList.remove('active'));
// Add active class to clicked tab
tab.classList.add('active');
// Show corresponding content
const packageType = tab.dataset.package;
document.getElementById(`${packageType}-content`).classList.add('active');
// Animate counters
animateCounters();
});
});
}
// ROI Calculator Logic
function initROICalculator() {
const employeeSlider = document.getElementById('employees');
const revenueSlider = document.getElementById('revenue');
const employeeCount = document.getElementById('employee-count');
const revenueAmount = document.getElementById('revenue-amount');
function updateROI() {
const employees = parseInt(employeeSlider.value);
const revenue = parseInt(revenueSlider.value);
employeeCount.textContent = employees;
revenueAmount.textContent = revenue.toLocaleString();
// Calculate ROI metrics
const efficiencyGain = Math.min(45, Math.max(15, 20 + (employees / 20)));
const costSavings = Math.floor(revenue * 0.25);
const roiPercentage = Math.floor(200 + (employees / 2));
const paybackPeriod = Math.max(2.5, 8 - (employees / 50));
document.getElementById('efficiency-gain').textContent = `${Math.floor(efficiencyGain)}%`;
document.getElementById('cost-savings').textContent = `$${costSavings.toLocaleString()}`;
document.getElementById('roi-percentage').textContent = `${roiPercentage}%`;
document.getElementById('payback-period').textContent = paybackPeriod.toFixed(1);
}
employeeSlider.addEventListener('input', updateROI);
revenueSlider.addEventListener('input', updateROI);
updateROI(); // Initial calculation
}
// Feature Toggles Logic
function initFeatureToggles() {
const toggleItems = document.querySelectorAll('.toggle-item');
toggleItems.forEach(item => {
const toggleSwitch = item.querySelector('.toggle-switch');
item.addEventListener('click', () => {
const isActive = item.classList.contains('active');
// Close all other toggles
toggleItems.forEach(otherItem => {
otherItem.classList.remove('active');
otherItem.querySelector('.toggle-switch').classList.remove('active');
});
// Toggle current item
if (!isActive) {
item.classList.add('active');
toggleSwitch.classList.add('active');
}
});
});
}
// Testimonials Carousel Logic
function initTestimonialsCarousel() {
const container = document.querySelector('.testimonials-container');
const indicators = document.querySelectorAll('.indicator');
let currentSlide = 0;
const totalSlides = indicators.length;
function goToSlide(slideIndex) {
container.style.transform = `translateX(-${slideIndex * 100}%)`;
indicators.forEach(indicator => indicator.classList.remove('active'));
indicators[slideIndex].classList.add('active');
currentSlide = slideIndex;
}
indicators.forEach((indicator, index) => {
indicator.addEventListener('click', () => goToSlide(index));
});
// Auto-rotate testimonials
setInterval(() => {
currentSlide = (currentSlide + 1) % totalSlides;
goToSlide(currentSlide);
}, 5000);
}
// Real-time Activity Feed Animation
function initActivityFeed() {
const activities = [
{ icon: '💀', title: 'COMPETIDOR ELIMINADO - México', desc: 'Empresa rival perdió 67% de clientes tras nuestra implementación' },
{ icon: '⚔️', title: 'Caso de exito - Colombia', desc: 'Cliente capturo 40% del mercado local en 3 meses' },
{ icon: '👑', title: 'IMPERIO EXPANDIDO - Argentina', desc: 'Cliente abrió 12 sucursales nuevas destruyendo competencia' },
{ icon: '🔥', title: 'RIVAL PULVERIZADO - Chile', desc: 'Competidor cerró 8 locales tras perder clientes masivamente' },
{ icon: '💎', title: 'MONOPOLIO CREADO - Perú', desc: 'Cliente ahora controla 85% del sector en su región' },
{ icon: '🏆', title: 'Crecimiento sostenido - Ecuador', desc: 'Tras 6 meses, mejora medible en eficiencia operativa' },
{ icon: '⚡', title: 'ANIQUILACIÓN RÁPIDA - Bolivia', desc: 'Rival principal quebró en 4 meses tras perder clientes' },
{ icon: '🗡️', title: 'EXTERMINIO COMPLETO - Uruguay', desc: 'Cliente eliminó a 5 competidores en 8 meses' }
];
function addRandomActivity() {
const activityFeed = document.querySelector('.activity-feed');
const randomActivity = activities[Math.floor(Math.random() * activities.length)];
const timeAgo = Math.floor(Math.random() * 30) + 1;
const activityItem = document.createElement('div');
activityItem.className = 'activity-item';
activityItem.style.opacity = '0';
activityItem.style.transform = 'translateX(-20px)';
activityItem.innerHTML = `
<div class="activity-icon" style="background: var(--primary-color);">${randomActivity.icon}</div>
<div class="activity-content">
<div class="activity-title" style="color: var(--primary-color); font-weight: 900;">${randomActivity.title}</div>
<div class="activity-desc">${randomActivity.desc}</div>
</div>
<div class="activity-time">${timeAgo} min</div>
`;
// Add styling to make it more prominent
activityItem.style.borderLeft = '3px solid var(--primary-color)';
activityItem.style.background = 'rgba(255, 68, 68, 0.08)';
// Remove oldest item if more than 5
const existingItems = activityFeed.querySelectorAll('.activity-item');
if (existingItems.length >= 5) {
existingItems[existingItems.length - 1].remove();
}
// Add new item at the top
activityFeed.insertBefore(activityItem, activityFeed.firstChild);
// Animate in
setTimeout(() => {
activityItem.style.transition = 'all 0.5s ease';
activityItem.style.opacity = '1';
activityItem.style.transform = 'translateX(0)';
}, 100);
}
// Add new activity every 8 seconds
setInterval(addRandomActivity, 8000);
}
// Counter Animation
function animateCounters() {
const counters = document.querySelectorAll('.counter');
counters.forEach(counter => {
const target = parseInt(counter.dataset.target) || parseInt(counter.textContent.replace(/[^0-9]/g, ''));
let current = 0;
const increment = target / 50;
const timer = setInterval(() => {
current += increment;
if (current >= target) {
current = target;
clearInterval(timer);
}
if (counter.textContent.includes('$')) {
counter.textContent = `$${Math.floor(current).toLocaleString()}`;
} else if (counter.textContent.includes('%')) {
counter.textContent = `${Math.floor(current)}%`;
} else {
counter.textContent = Math.floor(current).toLocaleString();
}
}, 50);
});
}
// Scroll to top function
function scrollToTop() {
window.scrollTo({ top: 0, behavior: 'smooth' });
}
// Parallax effect for hero background
function initParallaxEffect() {
window.addEventListener('scroll', function() {
const scrolled = window.pageYOffset;
const parallax = document.querySelector('.hero');
if (parallax) {
const speed = scrolled * 0.5;
parallax.style.backgroundPositionY = speed + 'px';
}
}, { passive: true });
}
// Intersection Observer for animations
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver(function(entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
if (entry.target.classList.contains('fade-in-up')) {
entry.target.classList.add('visible');
} else {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
// Animate counters when they come into view
if (entry.target.classList.contains('roi-metric')) {
animateCounters();
}
// Animate story stats when hovering
if (entry.target.classList.contains('story-card')) {
initStoryAnimations(entry.target);
}
}
});
}, observerOptions);
// Initialize story card animations
function initStoryAnimations(card) {
const overlay = card.querySelector('.story-overlay');
const stat = card.querySelector('.story-stat');
if (stat && overlay) {
card.addEventListener('mouseenter', function() {
// Animate the statistic number
const target = parseInt(stat.textContent);
let current = 0;
const increment = target / 30;
const timer = setInterval(() => {
current += increment;
if (current >= target) {
current = target;
clearInterval(timer);
}
stat.textContent = Math.floor(current) + '%';
}, 50);
});
}
}
// Enhanced image loading with fade-in effect
function initImageLoading() {
const images = document.querySelectorAll('.benefit-image, .story-image');
images.forEach(img => {
const bgImage = new Image();
const bgUrl = img.style.backgroundImage.slice(5, -2);
bgImage.src = bgUrl;
bgImage.onload = function() {
img.style.opacity = '1';
img.style.transform = 'scale(1)';
};
// Set initial state
img.style.opacity = '0';
img.style.transform = 'scale(1.1)';
img.style.transition = 'opacity 0.8s ease, transform 0.8s ease';
});
}
// Staggered animation for benefit cards
function initStaggeredAnimations() {
const benefitCards = document.querySelectorAll('.benefit-card');
const storyCards = document.querySelectorAll('.story-card');
const trustCards = document.querySelectorAll('.trust-card');
// Add staggered delays
benefitCards.forEach((card, index) => {
card.style.transitionDelay = `${index * 0.2}s`;
});
storyCards.forEach((card, index) => {
card.style.transitionDelay = `${index * 0.3}s`;
});
trustCards.forEach((card, index) => {
card.style.transitionDelay = `${index * 0.2}s`;
});
}
// Enhanced hover effects for benefit cards
function initBenefitCardEffects() {
const benefitCards = document.querySelectorAll('.benefit-card');
benefitCards.forEach(card => {
const image = card.querySelector('.benefit-image');
const icon = card.querySelector('.benefit-icon');
card.addEventListener('mouseenter', function() {
if (icon) {
icon.style.transform = 'scale(1.1) rotate(5deg)';
}
});
card.addEventListener('mouseleave', function() {
if (icon) {
icon.style.transform = 'scale(1) rotate(0deg)';
}
});
});
}
// Initialize all components when DOM is loaded
document.addEventListener('DOMContentLoaded', function() {
// Defer D3 visualization until after page load to improve LCP
const ecosystemEl = document.querySelector('.ecosystem-map-simulation');
if (ecosystemEl) {
// Load D3.js after 3 seconds or on user interaction
let d3LoadTimeout = setTimeout(() => {
initEcosystemVisualization();
}, 3000);
// Load immediately on any user interaction
const loadOnInteraction = () => {
clearTimeout(d3LoadTimeout);
initEcosystemVisualization();
document.removeEventListener('click', loadOnInteraction);
document.removeEventListener('scroll', loadOnInteraction);
};
document.addEventListener('click', loadOnInteraction, { once: true });
document.addEventListener('scroll', loadOnInteraction, { once: true, passive: true });
}
initPackageSelector();
initROICalculator();
initFeatureToggles();
initTestimonialsCarousel();
initActivityFeed();
initParallaxEffect();
initImageLoading();
initStaggeredAnimations();
initBenefitCardEffects();
initAdvancedInteractions();
initEnhancedScrollAnimations();
initPerformanceOptimizations();
animateCounters();
// Observe elements for animations
document.querySelectorAll('.modern-card, .roi-metric, .toggle-item, .fade-in-up').forEach(el => {
if (!el.classList.contains('fade-in-up')) {
el.style.opacity = '0';
el.style.transform = 'translateY(20px)';
el.style.transition = 'opacity 0.6s ease, transform 0.6s ease';
}
observer.observe(el);
});
// Smooth scroll for anchor links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
});
});
// Advanced Interactive Features
function initAdvancedInteractions() {
// Interactive Background
const interactiveBackground = document.querySelector('.interactive-background');
document.addEventListener('mousemove', (e) => {
const x = (e.clientX / window.innerWidth) * 100;
const y = (e.clientY / window.innerHeight) * 100;
interactiveBackground.style.setProperty('--mouse-x', x + '%');
interactiveBackground.style.setProperty('--mouse-y', y + '%');
});
// Cursor Particle Trail
let particles = [];
document.addEventListener('mousemove', (e) => {
if (Math.random() > 0.8) { // Only create particles occasionally
const particle = document.createElement('div');
particle.className = 'cursor-particle';
particle.style.left = e.clientX + 'px';
particle.style.top = e.clientY + 'px';
document.body.appendChild(particle);
setTimeout(() => {
if (particle.parentNode) {
particle.parentNode.removeChild(particle);
}
}, 1000);
}
});
// Scroll Progress
const scrollProgress = document.querySelector('.scroll-progress');
window.addEventListener('scroll', () => {
const scrollTop = window.pageYOffset;
const docHeight = document.documentElement.scrollHeight - window.innerHeight;
const scrollPercent = (scrollTop / docHeight) * 100;
scrollProgress.style.width = scrollPercent + '%';
}, { passive: true });
// Magnetic Effect for Cards
const magneticElements = document.querySelectorAll('.modern-card, .benefit-card, .story-card, .trust-card');
magneticElements.forEach(element => {
element.classList.add('magnetic');
element.addEventListener('mousemove', (e) => {
const rect = element.getBoundingClientRect();
const x = e.clientX - rect.left - rect.width / 2;
const y = e.clientY - rect.top - rect.height / 2;
const moveX = x * 0.1;
const moveY = y * 0.1;
element.style.setProperty('--mouse-offset-x', moveX + 'px');
element.style.setProperty('--mouse-offset-y', moveY + 'px');
});
element.addEventListener('mouseleave', () => {
element.style.setProperty('--mouse-offset-x', '0px');
element.style.setProperty('--mouse-offset-y', '0px');
});
});
// Enhanced Button Effects
const buttons = document.querySelectorAll('.btn');
buttons.forEach(btn => {
btn.classList.add('liquid-btn');
btn.addEventListener('mouseenter', () => {
btn.style.transform = 'translateY(-3px) scale(1.05)';
});
btn.addEventListener('mouseleave', () => {
btn.style.transform = 'translateY(0) scale(1)';
});
});
// Removed glitch effects for clean design
}
// Enhanced Scroll Animations
function initEnhancedScrollAnimations() {
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -100px 0px'
};
const scrollObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.animation = 'slideInUp 0.8s ease forwards';
// Stagger animations for children
const children = entry.target.querySelectorAll('.modern-card, .benefit-card, .story-card, .trust-card');
children.forEach((child, index) => {
setTimeout(() => {
child.style.opacity = '1';
child.style.transform = 'translateY(0) rotateX(0) rotateY(0)';
}, index * 100);
});
}
});
}, observerOptions);
// Observe all sections
document.querySelectorAll('section').forEach(section => {
scrollObserver.observe(section);
});
}
// Performance Optimization
function initPerformanceOptimizations() {
// Debounce scroll events
let scrollTimeout;
const originalScrollHandler = window.onscroll;
window.onscroll = function() {
if (scrollTimeout) {
clearTimeout(scrollTimeout);
}
scrollTimeout = setTimeout(() => {
if (originalScrollHandler) {
originalScrollHandler();
}
}, 16); // ~60fps
};
// Reduce animation on mobile
if (window.innerWidth <= 768) {
document.documentElement.style.setProperty('--transition-smooth', '0.2s ease');
document.documentElement.style.setProperty('--transition-bounce', '0.3s ease');
}
// Preload critical animations
const criticalElements = document.querySelectorAll('.hero-animation, .ecosystem-map-simulation');
criticalElements.forEach(element => {
element.style.willChange = 'transform, opacity';
});
}
// Handle window resize
window.addEventListener('resize', function() {
// Only reinit if D3 is already loaded
if (window.d3 && document.querySelector('.ecosystem-map-simulation svg')) {
initEcosystemVisualization();
}
initPerformanceOptimizations();
}, { passive: true });
</script>
<!-- Performance Optimization with Upstash Cache -->
<script src="/performance-optimizer.js" defer></script>
<script src="/js/upstash-client.js" defer></script>
<!-- Vercel Analytics -->
<script defer src="/_vercel/insights/script.js"></script>
</body>
</html>