Files
Autoparts-DB/dashboard/landing.html
consultoria-as e95f7cf684 feat: complete session — catalog, marketplace, WhatsApp, peer-to-peer, install scripts
Major features:
- Pixel-Perfect glassmorphism design (landing + POS + public catalog)
- OEM/Local catalog toggle with Nexpart taxonomy (14 groups, 108 subgroups, 558 part types)
- Marketplace B2B Phase 1 (bodegas, POs, status machine, WA+email notifications)
- Peer-to-peer inventory (multi-instance, LAN discovery)
- WhatsApp: photo→Vision AI, voice→Whisper, conversational quotations
- Smart unified search (VIN/plate/part_number/keyword auto-detect)
- Shop Supplies tab (vehicle-independent parts)
- Chatbot AI fallback chain (5 models) + response cache
- CSV inventory import tool + setup_instance.sh installer
- Tablet-responsive CSS + sidebar toggle
- Filters, export CSV, employee edit, business data save
- Quotation system (WA→POS) with auto-print on confirmation
- Live stats on landing page

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 05:35:53 +00:00

738 lines
38 KiB
HTML

<!DOCTYPE html>
<html lang="es" data-theme="industrial">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Nexus Autoparts — Sistema completo para refaccionarias</title>
<meta name="description" content="POS + Catalogo TecDoc 1.5M+ partes + Marketplace B2B + IA. Todo lo que necesita una refaccionaria en una sola plataforma.">
<script>
(function(){
var t = localStorage.getItem('nexus-theme') || 'industrial';
document.documentElement.setAttribute('data-theme', t);
})();
</script>
<link rel="stylesheet" href="/static/css/tokens.css">
<style>
/* ── Reset ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; scrollbar-width: none; }
html::-webkit-scrollbar { width: 0; }
body {
font-family: var(--font-body);
background: var(--color-bg-base);
color: var(--color-text-primary);
line-height: var(--leading-body);
min-height: 100vh;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow-x: hidden;
}
a { color: var(--color-text-accent); text-decoration: none; }
a:hover { text-decoration: underline; }
.container {
max-width: var(--content-xl);
margin: 0 auto;
padding: 0 var(--space-6);
}
/* ══════════════════════════════════════════════════════════════════
HEADER — Glassmorphism sticky
══════════════════════════════════════════════════════════════════ */
.site-header {
position: fixed; top: 0; left: 0; right: 0;
z-index: var(--z-sticky);
background: var(--glass-bg);
backdrop-filter: blur(var(--glass-blur));
-webkit-backdrop-filter: blur(var(--glass-blur));
border-bottom: 1px solid var(--glass-border);
transition: background 0.3s ease;
}
.site-header .container {
display: flex; align-items: center; justify-content: space-between; height: 64px;
}
.logo {
font-family: var(--font-heading); font-size: var(--text-h4);
font-weight: var(--heading-weight-primary);
color: var(--color-text-accent);
letter-spacing: var(--tracking-wide); text-transform: uppercase; text-decoration: none;
position: relative;
}
.logo::after {
content: ''; position: absolute; bottom: -4px; left: 0; right: 0;
height: 2px; background: var(--gradient-accent); border-radius: 1px; opacity: 0.6; filter: blur(2px);
}
.header-nav { display: flex; gap: var(--space-6); align-items: center; }
.header-nav a {
font-size: var(--text-body-sm); color: var(--color-text-secondary);
text-decoration: none; position: relative; padding: var(--space-1) 0; transition: color 0.2s ease;
}
.header-nav a:hover { color: var(--color-text-accent); text-decoration: none; }
.header-nav a::after {
content: ''; position: absolute; bottom: -2px; left: 0; width: 0; height: 2px;
background: var(--color-primary); transition: width 0.3s ease;
}
.header-nav a:hover::after { width: 100%; }
.header-actions { display: flex; gap: var(--space-3); align-items: center; }
.theme-toggle {
width: 40px; height: 40px; display: flex; align-items: center; justify-content: center;
background: transparent; border: 1px dashed var(--glass-border); border-radius: var(--radius-md);
color: var(--color-text-muted); cursor: pointer; font-size: 1.1rem; transition: var(--transition-fast);
}
.theme-toggle:hover {
border-color: var(--color-border-accent); color: var(--color-text-accent);
box-shadow: 0 0 12px var(--glow-color-soft);
}
/* ── Buttons ── */
.btn {
display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
padding: var(--space-2) var(--space-5); border-radius: var(--radius-md);
font-family: var(--font-body); font-size: var(--text-body-sm); font-weight: var(--font-weight-semibold);
cursor: pointer; border: 2px solid transparent; text-decoration: none;
transition: all 0.25s var(--ease-out); position: relative; overflow: hidden;
}
.btn:hover { text-decoration: none; }
.btn-primary {
background: var(--gradient-accent); color: var(--btn-primary-text); border: none;
box-shadow: 0 4px 0 var(--color-primary-active), 0 6px 12px var(--glow-color-soft);
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 6px 0 var(--color-primary-active), 0 10px 24px var(--glow-color);
}
.btn-primary:active {
transform: translateY(2px);
box-shadow: 0 2px 0 var(--color-primary-active), 0 3px 8px var(--glow-color-soft);
}
.btn-primary::after {
content: ''; position: absolute; top: 0; left: -100%; width: 60%; height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
transition: left 0.5s ease;
}
.btn-primary:hover::after { left: 120%; }
.btn-secondary {
background: var(--glass-bg); backdrop-filter: blur(8px);
color: var(--color-text-accent); border: 1px solid var(--color-border-accent);
}
.btn-secondary:hover { background: var(--color-primary-muted); box-shadow: 0 0 20px var(--glow-color-soft); }
.btn-lg { padding: var(--space-3) var(--space-8); font-size: var(--text-body); border-radius: var(--radius-lg); }
/* ══════════════════════════════════════════════════════════════════
HERO
══════════════════════════════════════════════════════════════════ */
.hero {
position: relative; min-height: 100vh; display: flex; align-items: center; justify-content: center;
overflow: hidden; padding-top: 64px;
}
#heroCanvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.hero::after {
content: ''; position: absolute; inset: 0;
background: radial-gradient(ellipse 60% 50% at 50% 40%, var(--glow-color-soft) 0%, transparent 70%);
pointer-events: none;
}
.hero-content { position: relative; z-index: 2; text-align: center; max-width: 900px; padding: var(--space-8) var(--space-6); }
.hero h1 {
font-family: var(--font-heading); font-size: clamp(2.5rem, 7vw, 4.5rem);
font-weight: var(--heading-weight-primary); line-height: 1.05; letter-spacing: var(--tracking-tight);
background: var(--gradient-text); background-size: 200% auto;
-webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
animation: nx-shimmer 4s linear infinite; margin-bottom: var(--space-3);
}
.hero .subtitle {
font-size: clamp(1rem, 2.5vw, 1.25rem); color: var(--color-text-secondary);
margin-bottom: var(--space-2); max-width: 650px; margin-left: auto; margin-right: auto;
}
.hero .typewriter-line {
display: inline-block; font-family: var(--font-mono); font-size: var(--text-body-sm);
color: var(--color-text-muted); background: var(--glass-bg); backdrop-filter: blur(8px);
padding: var(--space-1) var(--space-4); border-radius: var(--radius-md);
border: 1px dashed var(--glass-border); margin-bottom: var(--space-8); min-height: 2em;
}
.typewriter-cursor {
display: inline-block; width: 2px; height: 1em; background: var(--color-primary);
vertical-align: text-bottom; margin-left: 2px; animation: nx-typewriter-cursor 0.8s ease infinite;
}
.hero-buttons { display: flex; gap: var(--space-4); justify-content: center; flex-wrap: wrap; margin-bottom: var(--space-12); }
.hero-stats { display: flex; justify-content: center; gap: var(--space-6); flex-wrap: wrap; }
.stat-card {
background: var(--glass-bg); backdrop-filter: blur(var(--glass-blur));
border: 1px solid var(--glass-border); border-radius: var(--radius-lg);
padding: var(--space-5) var(--space-8); text-align: center; min-width: 140px;
transition: all 0.3s var(--ease-out);
}
.stat-card:hover { border-color: var(--color-border-accent); box-shadow: 0 0 24px var(--glow-color-soft); transform: translateY(-4px); }
.stat-card .number {
font-family: var(--font-heading); font-size: var(--text-h2); font-weight: var(--heading-weight-primary);
color: var(--color-text-accent); line-height: 1;
}
.stat-card .label {
font-size: var(--text-caption); color: var(--color-text-muted); margin-top: var(--space-1);
text-transform: uppercase; letter-spacing: var(--tracking-widest);
}
/* ══════════════════════════════════════════════════════════════════
SECTION CHROME — Terminal style separator
══════════════════════════════════════════════════════════════════ */
.section-chrome {
display: flex; align-items: center; justify-content: space-between;
padding: var(--space-3) var(--space-6); border-bottom: 1px solid var(--color-border);
background: var(--glass-bg); backdrop-filter: blur(8px);
}
.chrome-dots { display: flex; gap: 6px; }
.chrome-dots span { width: 10px; height: 10px; border-radius: var(--radius-full); border: 1.5px solid var(--color-text-muted); opacity: 0.3; }
.chrome-label {
font-family: var(--font-mono); font-size: var(--text-caption); color: var(--color-text-muted);
text-transform: uppercase; letter-spacing: var(--tracking-widest);
}
.chrome-star { color: var(--color-text-muted); opacity: 0.3; font-size: 14px; }
/* ══════════════════════════════════════════════════════════════════
PRODUCT SECTION — 3 columns with feature lists
══════════════════════════════════════════════════════════════════ */
.product { padding: var(--space-16) 0; }
.section-title {
font-family: var(--font-heading); font-size: var(--text-h2); font-weight: var(--heading-weight-primary);
text-align: center; margin-bottom: var(--space-3); letter-spacing: var(--heading-tracking-h2);
}
.section-subtitle {
text-align: center; font-size: var(--text-body); color: var(--color-text-secondary);
margin-bottom: var(--space-10); max-width: 600px; margin-left: auto; margin-right: auto;
}
.product-grid {
display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-5);
}
.product-card {
background: var(--glass-bg); backdrop-filter: blur(var(--glass-blur));
border: 1px solid var(--glass-border); border-radius: var(--radius-lg);
padding: var(--space-6); transition: all 0.35s var(--ease-out); position: relative; overflow: hidden;
}
.product-card::before {
content: ''; position: absolute; top: 0; left: 0; bottom: 0; width: 3px;
border-radius: 3px 0 0 3px;
}
.product-card:hover {
border-color: var(--color-border-accent);
box-shadow: 0 8px 32px var(--glow-color-soft);
transform: translateY(-3px);
}
.product-card--orange::before { background: var(--color-primary); }
.product-card--cyan::before { background: #00D4FF; }
.product-card--green::before { background: #3FB950; }
.product-card h3 {
font-family: var(--font-heading); font-size: var(--text-h6);
font-weight: var(--heading-weight-secondary); margin-bottom: var(--space-4);
}
.product-card--orange h3 { color: var(--color-text-accent); }
.product-card--cyan h3 { color: #00D4FF; }
.product-card--green h3 { color: #3FB950; }
.product-card ul { list-style: none; font-size: var(--text-body-sm); color: var(--color-text-secondary); }
.product-card ul li {
padding: var(--space-1) 0; line-height: 1.8;
}
.product-card ul li::before { margin-right: var(--space-2); }
.product-card--orange ul li::before { content: '▸ '; color: var(--color-text-accent); }
.product-card--cyan ul li::before { content: '▸ '; color: #00D4FF; }
.product-card--green ul li::before { content: '▸ '; color: #3FB950; }
/* Hardware banner */
.hw-banner {
margin-top: var(--space-6); text-align: center;
}
.hw-banner-inner {
display: inline-flex; align-items: center; gap: var(--space-4);
background: var(--glass-bg); backdrop-filter: blur(var(--glass-blur));
border: 1px dashed var(--glass-border); border-radius: var(--radius-lg);
padding: var(--space-4) var(--space-8); transition: all 0.3s var(--ease-out);
}
.hw-banner-inner:hover { border-color: var(--color-border-accent); box-shadow: 0 0 20px var(--glow-color-soft); }
.hw-banner-inner span:first-child { font-size: 1.5rem; }
.hw-banner-inner .hw-text { font-size: var(--text-body-sm); color: var(--color-text-secondary); text-align: left; }
.hw-banner-inner .hw-text strong { color: var(--color-text-accent); }
/* ══════════════════════════════════════════════════════════════════
HOW IT WORKS — Timeline
══════════════════════════════════════════════════════════════════ */
.how-it-works { padding: var(--space-16) 0; }
.steps { display: flex; justify-content: center; gap: 0; max-width: 900px; margin: 0 auto; position: relative; }
.steps::before {
content: ''; position: absolute; top: 28px; left: 15%; right: 15%; height: 2px;
background: linear-gradient(90deg, transparent, var(--color-border-accent), transparent); opacity: 0.3;
}
.step { flex: 1; text-align: center; padding: 0 var(--space-4); position: relative; }
.step-number {
display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px;
border-radius: var(--radius-full); background: var(--glass-bg); backdrop-filter: blur(8px);
border: 2px solid var(--color-border-accent); color: var(--color-text-accent);
font-family: var(--font-heading); font-size: var(--text-h3); font-weight: var(--heading-weight-primary);
margin-bottom: var(--space-4); position: relative; z-index: 1; transition: all 0.3s ease;
}
.step:hover .step-number {
box-shadow: 0 0 24px var(--glow-color), 0 0 48px var(--glow-color-soft);
background: var(--color-primary); color: var(--color-text-inverse);
}
.step h3 { font-family: var(--font-heading); font-size: var(--text-h5); font-weight: var(--heading-weight-secondary); margin-bottom: var(--space-2); }
.step p { font-size: var(--text-body-sm); color: var(--color-text-secondary); }
/* ══════════════════════════════════════════════════════════════════
DIFFERENTIATOR — Competitive highlight
══════════════════════════════════════════════════════════════════ */
.differentiator { padding: var(--space-16) 0; }
.diff-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--space-4); }
.diff-card {
background: var(--glass-bg); backdrop-filter: blur(var(--glass-blur));
border: 1px solid var(--glass-border); border-radius: var(--radius-lg);
padding: var(--space-6); text-align: center; transition: all 0.3s var(--ease-out);
}
.diff-card:hover { border-color: var(--color-border-accent); box-shadow: 0 4px 20px var(--glow-color-soft); transform: translateY(-3px); }
.diff-icon {
width: 48px; height: 48px; margin: 0 auto var(--space-3);
display: flex; align-items: center; justify-content: center;
background: var(--color-primary-muted); border: 1px dashed var(--color-border-accent);
border-radius: var(--radius-md); font-size: 1.3rem;
}
.diff-card h4 { font-family: var(--font-heading); font-size: var(--text-body); font-weight: var(--heading-weight-secondary); margin-bottom: var(--space-1); }
.diff-card p { font-size: var(--text-caption); color: var(--color-text-muted); }
/* ══════════════════════════════════════════════════════════════════
BRANDS MARQUEE
══════════════════════════════════════════════════════════════════ */
.brands-section {
padding: var(--space-12) 0; overflow: hidden;
border-top: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border);
}
.brands-header { display: flex; align-items: center; }
.brands-label {
flex-shrink: 0; width: 200px; padding: var(--space-6);
font-family: var(--font-heading); font-size: var(--text-body-sm); font-weight: var(--heading-weight-secondary);
color: var(--color-text-muted); text-transform: uppercase; letter-spacing: var(--tracking-widest);
border-right: 1px solid var(--color-border); text-align: center;
}
.marquee-track { flex: 1; overflow: hidden; position: relative; padding: var(--space-4) 0; }
.marquee-track::before, .marquee-track::after {
content: ''; position: absolute; top: 0; bottom: 0; width: 60px; z-index: 2; pointer-events: none;
}
.marquee-track::before { left: 0; background: linear-gradient(90deg, var(--color-bg-base), transparent); }
.marquee-track::after { right: 0; background: linear-gradient(270deg, var(--color-bg-base), transparent); }
.marquee-inner { display: flex; gap: var(--space-3); width: max-content; animation: nx-marquee 40s linear infinite; }
.marquee-inner:hover { animation-play-state: paused; }
.brand-tag {
display: inline-flex; align-items: center; padding: var(--space-2) var(--space-4);
background: var(--glass-bg); backdrop-filter: blur(8px);
border: 1px solid var(--glass-border); border-radius: var(--radius-md);
font-size: var(--text-body-sm); font-weight: var(--font-weight-semibold);
color: var(--color-text-secondary); letter-spacing: var(--tracking-wide);
white-space: nowrap; transition: all 0.25s ease; cursor: pointer;
}
.brand-tag:hover {
border-color: var(--color-border-accent); color: var(--color-text-accent);
box-shadow: 0 0 16px var(--glow-color-soft); text-decoration: none;
}
/* ══════════════════════════════════════════════════════════════════
PRICING PREVIEW
══════════════════════════════════════════════════════════════════ */
.pricing { padding: var(--space-16) 0; }
.pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--space-5); max-width: 900px; margin: 0 auto; }
.pricing-card {
background: var(--glass-bg); backdrop-filter: blur(var(--glass-blur));
border: 1px solid var(--glass-border); border-radius: var(--radius-lg);
padding: var(--space-6); text-align: center; transition: all 0.3s var(--ease-out);
}
.pricing-card:hover { border-color: var(--color-border-accent); box-shadow: 0 8px 32px var(--glow-color-soft); transform: translateY(-3px); }
.pricing-card.featured { border-color: var(--color-border-accent); }
.pricing-card h4 {
font-family: var(--font-heading); font-size: var(--text-h6); font-weight: var(--heading-weight-secondary);
margin-bottom: var(--space-2); color: var(--color-text-primary);
}
.pricing-price {
font-family: var(--font-heading); font-size: var(--text-h3); font-weight: var(--heading-weight-primary);
color: var(--color-text-accent); margin-bottom: var(--space-1);
}
.pricing-period { font-size: var(--text-caption); color: var(--color-text-muted); margin-bottom: var(--space-4); }
.pricing-card ul { list-style: none; text-align: left; font-size: var(--text-body-sm); color: var(--color-text-secondary); }
.pricing-card ul li { padding: 3px 0; }
.pricing-card ul li::before { content: '✓ '; color: var(--color-text-accent); }
/* ══════════════════════════════════════════════════════════════════
CONTACT
══════════════════════════════════════════════════════════════════ */
.contact { padding: var(--space-16) 0; }
.contact-grid {
display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: var(--space-6); max-width: 900px; margin: 0 auto;
}
.contact-card {
background: var(--glass-bg); backdrop-filter: blur(var(--glass-blur));
border: 1px solid var(--glass-border); border-radius: var(--radius-lg);
padding: var(--space-8); text-align: center; transition: all 0.3s var(--ease-out);
}
.contact-card:hover { border-color: var(--color-border-accent); box-shadow: 0 8px 32px var(--glow-color-soft); transform: translateY(-4px); }
.contact-icon {
width: 48px; height: 48px; display: inline-flex; align-items: center; justify-content: center;
background: var(--color-primary-muted); border: 1px dashed var(--color-border-accent);
border-radius: var(--radius-md); font-size: 1.3rem; margin-bottom: var(--space-4);
}
.contact-card h4 { font-family: var(--font-heading); font-size: var(--text-h6); font-weight: var(--heading-weight-secondary); margin-bottom: var(--space-2); }
.contact-card p, .contact-card a { font-size: var(--text-body-sm); color: var(--color-text-secondary); }
.btn-whatsapp {
display: inline-flex; align-items: center; gap: var(--space-2);
padding: var(--space-2) var(--space-5); background: #25D366; color: #fff;
border: none; border-radius: var(--radius-md); font-family: var(--font-body);
font-size: var(--text-body-sm); font-weight: var(--font-weight-semibold); cursor: pointer;
text-decoration: none; transition: all 0.25s ease;
box-shadow: 0 4px 0 #1aa84c, 0 6px 12px rgba(37,211,102,0.2);
}
.btn-whatsapp:hover { transform: translateY(-2px); box-shadow: 0 6px 0 #1aa84c, 0 10px 24px rgba(37,211,102,0.3); text-decoration: none; }
/* ══════════════════════════════════════════════════════════════════
FOOTER
══════════════════════════════════════════════════════════════════ */
.site-footer { border-top: 1px solid var(--color-border); padding: var(--space-10) 0 var(--space-6); position: relative; overflow: hidden; }
.footer-inner { display: flex; justify-content: space-between; align-items: flex-end; }
.footer-info { position: relative; z-index: 1; }
.footer-info .logo { font-size: var(--text-h5); display: block; margin-bottom: var(--space-2); }
.footer-info p { font-size: var(--text-caption); color: var(--color-text-muted); }
.footer-watermark {
font-family: var(--font-heading); font-size: clamp(4rem, 12vw, 10rem);
font-weight: var(--heading-weight-primary); color: var(--color-text-muted);
opacity: 0.06; line-height: 1; text-transform: uppercase; letter-spacing: var(--tracking-tight);
user-select: none; white-space: nowrap;
}
/* ── Responsive ── */
@media (max-width: 768px) {
.header-nav { display: none; }
.hero h1 { font-size: clamp(2rem, 8vw, 3.5rem); }
.hero-content { padding: var(--space-6) var(--space-4); }
.hero-buttons { flex-direction: column; align-items: center; }
.hero-stats { flex-direction: column; align-items: center; gap: var(--space-4); }
.stat-card { width: 100%; max-width: 280px; }
.product-grid { grid-template-columns: 1fr; }
.steps { flex-direction: column; gap: var(--space-8); }
.steps::before { display: none; }
.diff-grid { grid-template-columns: repeat(2, 1fr); }
.brands-header { flex-direction: column; }
.brands-label { width: 100%; border-right: none; border-bottom: 1px solid var(--color-border); padding: var(--space-3); }
.pricing-grid { grid-template-columns: 1fr; }
.footer-inner { flex-direction: column; align-items: center; text-align: center; gap: var(--space-4); }
.footer-watermark { font-size: 4rem; }
}
</style>
</head>
<body>
<!-- ══════════ HEADER ══════════ -->
<header class="site-header">
<div class="container">
<a href="/" class="logo">Nexus Autoparts</a>
<nav class="header-nav">
<a href="#product">Producto</a>
<a href="#how-it-works">Como Funciona</a>
<a href="#brands">Marcas</a>
<a href="#pricing">Planes</a>
<a href="#contact">Contacto</a>
</nav>
<div class="header-actions">
<button class="theme-toggle" onclick="toggleTheme()" title="Cambiar tema" id="themeToggle">
<span id="themeIcon">&#9790;</span>
</button>
<a href="/catalog" class="btn btn-primary">Ver Catalogo</a>
<a href="/pos/login" class="btn btn-secondary">Acceder POS</a>
</div>
</div>
</header>
<!-- ══════════ HERO ══════════ -->
<section class="hero" id="hero">
<canvas id="heroCanvas"></canvas>
<div class="hero-content">
<h1 class="nx-reveal">Nexus Autoparts</h1>
<p class="subtitle nx-reveal">Todo lo que necesita una refaccionaria en una sola plataforma. POS, inventario, catalogo TecDoc, facturacion, marketplace B2B e inteligencia artificial.</p>
<div class="typewriter-line nx-reveal">
<span id="typewriterText"></span><span class="typewriter-cursor"></span>
</div>
<div class="hero-buttons nx-reveal">
<a href="/catalog" class="btn btn-primary btn-lg">Explorar Catalogo</a>
<a href="/pos/login" class="btn btn-secondary btn-lg">Probar el POS</a>
</div>
<div class="hero-stats nx-stagger">
<div class="stat-card nx-reveal">
<div class="number" data-target="1500000" data-suffix="+" data-format="1.5M">1.5M+</div>
<div class="label">Partes OEM</div>
</div>
<div class="stat-card nx-reveal">
<div class="number" data-target="304000" data-suffix="+" data-format="304K">304K+</div>
<div class="label">Aftermarket</div>
</div>
<div class="stat-card nx-reveal">
<div class="number" data-target="15800000" data-suffix="+" data-format="15.8M">15.8M+</div>
<div class="label">Cross-Refs</div>
</div>
<div class="stat-card nx-reveal">
<div class="number" data-target="36" data-suffix="" data-format="num">36</div>
<div class="label">Marcas</div>
</div>
</div>
</div>
</section>
<!-- ══════════ PRODUCT — 3 columns ══════════ -->
<div class="section-chrome" id="product">
<div class="chrome-dots"><span></span><span></span><span></span></div>
<span class="chrome-label">product.tsx</span>
<span class="chrome-star">&#10022;</span>
</div>
<section class="product">
<div class="container">
<h2 class="section-title nx-reveal">El Producto</h2>
<p class="section-subtitle nx-reveal">El unico sistema que combina POS + Inventario + CFDI + Catalogo + Marketplace + IA en una sola plataforma</p>
<div class="product-grid nx-stagger">
<div class="product-card product-card--orange nx-reveal">
<h3>Ventas & POS</h3>
<ul>
<li>Punto de venta completo con F-keys y escaner</li>
<li>Caja registradora multi-caja, cortes X/Z</li>
<li>Cotizaciones, apartados, devoluciones</li>
<li>Clientes con credito y 3 niveles de precio</li>
<li>Facturacion CFDI 4.0 (Ingreso, Egreso, Pago)</li>
<li>Impresion termica ESC/POS</li>
<li>Contabilidad con polizas automaticas</li>
<li>Reportes: ventas, ABC, cortes, utilidad</li>
</ul>
</div>
<div class="product-card product-card--cyan nx-reveal">
<h3>Catalogo & Inventario</h3>
<ul>
<li>Catalogo TecDoc: 1.5M+ partes OEM</li>
<li>304K+ partes aftermarket con cross-refs</li>
<li>Navegacion: Ano > Marca > Modelo > Motor</li>
<li>VIN decoder + busqueda por placas MX</li>
<li>Inventario append-only, toma fisica</li>
<li>Imagenes de productos con upload masivo</li>
<li>Traduccion automatica EN > ES (326 partes)</li>
<li>Marketplace B2B: bodegas ↔ talleres</li>
</ul>
</div>
<div class="product-card product-card--green nx-reveal">
<h3>IA & Plataforma</h3>
<ul>
<li>Chatbot IA: diagnostico, cotizacion inteligente</li>
<li>Entrada por voz (Web Speech API)</li>
<li>Reconocimiento de partes por foto (Vision AI)</li>
<li>WhatsApp Business integrado (envio de cotizaciones)</li>
<li>Gestion de flotillas y mantenimiento</li>
<li>PWA + App Android, modo kiosko</li>
<li>Offline-first con sync automatico</li>
<li>2 temas, 2 idiomas (ES/EN), 2 monedas (MXN/USD)</li>
</ul>
</div>
</div>
<div class="hw-banner nx-reveal">
<div class="hw-banner-inner">
<span>&#128421;</span>
<div class="hw-text">A partir del plan <strong>Pro</strong>: servidor en <strong>rack 3D personalizado</strong> — Mini PC + switch + AP + UPS.<br>Todo incluido por <strong>$2,000 MXN/mes</strong>. Solo conectar y empezar a vender.</div>
</div>
</div>
</div>
</section>
<!-- ══════════ HOW IT WORKS ══════════ -->
<div class="section-chrome" id="how-it-works">
<div class="chrome-dots"><span></span><span></span><span></span></div>
<span class="chrome-label">workflow.tsx</span>
<span class="chrome-star">&#10022;</span>
</div>
<section class="how-it-works">
<div class="container">
<h2 class="section-title nx-reveal">Como Funciona</h2>
<div class="steps nx-stagger">
<div class="step nx-reveal">
<div class="step-number">1</div>
<h3>Instalamos el sistema</h3>
<p>Mini PC con el POS preinstalado. Solo conectar a internet y empezar a vender.</p>
</div>
<div class="step nx-reveal">
<div class="step-number">2</div>
<h3>Catalogo + Inventario</h3>
<p>Tu inventario conectado al catalogo TecDoc. Busca por vehiculo, parte o VIN.</p>
</div>
<div class="step nx-reveal">
<div class="step-number">3</div>
<h3>Vende y Crece</h3>
<p>POS, facturacion, marketplace B2B, WhatsApp e IA — todo desde un solo lugar.</p>
</div>
</div>
</div>
</section>
<!-- ══════════ DIFFERENTIATOR ══════════ -->
<div class="section-chrome">
<div class="chrome-dots"><span></span><span></span><span></span></div>
<span class="chrome-label">competitive.tsx</span>
<span class="chrome-star">&#10022;</span>
</div>
<section class="differentiator">
<div class="container">
<h2 class="section-title nx-reveal">Por que Nexus</h2>
<p class="section-subtitle nx-reveal">Lo que nos hace diferentes de Pitz, Meru, Jetz y los POS tradicionales</p>
<div class="diff-grid nx-stagger">
<div class="diff-card nx-reveal">
<div class="diff-icon">&#128269;</div>
<h4>Catalogo TecDoc</h4>
<p>1.5M+ partes con cross-references. Nadie mas lo tiene en MX.</p>
</div>
<div class="diff-card nx-reveal">
<div class="diff-icon">&#128176;</div>
<h4>POS + CFDI integrado</h4>
<p>No necesitas un sistema aparte para facturar. Todo en uno.</p>
</div>
<div class="diff-card nx-reveal">
<div class="diff-icon">&#129302;</div>
<h4>IA + WhatsApp</h4>
<p>Chatbot que diagnostica, cotiza y atiende por WhatsApp.</p>
</div>
<div class="diff-card nx-reveal">
<div class="diff-icon">&#128640;</div>
<h4>Marketplace B2B</h4>
<p>Conecta bodegas con talleres. Mas ventas, menos llamadas.</p>
</div>
<div class="diff-card nx-reveal">
<div class="diff-icon">&#128421;</div>
<h4>Hardware incluido</h4>
<p>Rack 3D con servidor. Renta todo por $2,000/mes.</p>
</div>
<div class="diff-card nx-reveal">
<div class="diff-icon">&#127760;</div>
<h4>Offline-first</h4>
<p>Funciona sin internet. PWA + Android + modo kiosko.</p>
</div>
</div>
</div>
</section>
<!-- ══════════ BRANDS MARQUEE ══════════ -->
<section class="brands-section" id="brands">
<div class="brands-header">
<div class="brands-label">36 Marcas</div>
<div class="marquee-track">
<div class="marquee-inner" id="brandsMarquee"></div>
</div>
</div>
</section>
<!-- ══════════ PRICING ══════════ -->
<div class="section-chrome" id="pricing">
<div class="chrome-dots"><span></span><span></span><span></span></div>
<span class="chrome-label">pricing.tsx</span>
<span class="chrome-star">&#10022;</span>
</div>
<section class="pricing">
<div class="container">
<h2 class="section-title nx-reveal">Planes</h2>
<p class="section-subtitle nx-reveal">Software desde $999/mes. Hardware incluido a partir del plan Pro.</p>
<div class="pricing-grid nx-stagger">
<div class="pricing-card nx-reveal">
<h4>Basico</h4>
<div class="pricing-price">$999</div>
<div class="pricing-period">MXN / mes — solo software</div>
<ul>
<li>POS + Inventario</li>
<li>Catalogo TecDoc</li>
<li>CFDI 4.0</li>
<li>Reportes basicos</li>
</ul>
</div>
<div class="pricing-card featured nx-reveal">
<h4>Pro</h4>
<div class="pricing-price">$2,000</div>
<div class="pricing-period">MXN / mes — hardware incluido</div>
<ul>
<li>Todo Basico +</li>
<li>Contabilidad automatica</li>
<li>Chatbot IA + WhatsApp</li>
<li>Marketplace B2B</li>
<li>&#128421; Mini PC + rack 3D + red incluidos</li>
</ul>
</div>
<div class="pricing-card nx-reveal">
<h4>Enterprise</h4>
<div class="pricing-price">$3,999</div>
<div class="pricing-period">MXN / mes — hardware incluido</div>
<ul>
<li>Todo Pro +</li>
<li>Flotillas + Multi-bodega</li>
<li>API dedicada</li>
<li>Soporte prioritario</li>
<li>&#128421; Hardware dedicado por sucursal</li>
</ul>
</div>
</div>
</div>
</section>
<!-- ══════════ CONTACT ══════════ -->
<div class="section-chrome" id="contact">
<div class="chrome-dots"><span></span><span></span><span></span></div>
<span class="chrome-label">contact.tsx</span>
<span class="chrome-star">&#10022;</span>
</div>
<section class="contact">
<div class="container">
<h2 class="section-title nx-reveal">Contacto</h2>
<div class="contact-grid nx-stagger">
<div class="contact-card nx-reveal">
<div class="contact-icon">&#9993;</div>
<h4>Email</h4>
<a href="mailto:ialcarazsalazar@consultoria-as.com">ialcarazsalazar@consultoria-as.com</a>
</div>
<div class="contact-card nx-reveal">
<div class="contact-icon">&#128241;</div>
<h4>WhatsApp</h4>
<a href="https://wa.me/526641234567" class="btn-whatsapp" target="_blank" rel="noopener">Enviar Mensaje</a>
</div>
<div class="contact-card nx-reveal">
<div class="contact-icon">&#128205;</div>
<h4>Ubicaciones</h4>
<p>Tijuana, B.C.</p>
<p>Guadalajara, Jal.</p>
<p>6 ciudades en expansion</p>
</div>
</div>
</div>
</section>
<!-- ══════════ FOOTER ══════════ -->
<footer class="site-footer">
<div class="container">
<div class="footer-inner">
<div class="footer-info">
<span class="logo">Nexus Autoparts</span>
<p>&copy; 2026 Nexus Autoparts — Consultoria AS. Todos los derechos reservados.</p>
</div>
<div class="footer-watermark" aria-hidden="true">NEXUS</div>
</div>
</div>
</footer>
<script src="/landing.js"></script>
</body>
</html>