/* Blackstock — Home page (with 3 hero variants) */ /* HERO A — Visual product hero (estilo "Dentro"). * Eyebrow + headline corto + sub 1 línea + 2 CTAs + mockup grande del panel. * Debajo: 4 KPI tiles. Sin paredes de texto. */ const HeroA = ({ onCTA }) => (
{/* Hero — Manifesto editorial */}
RESELLERS ACTIVOS · MAYO 2026 VINTED EU · OS
{/* Claim: tipografía manifesto. Línea 1 grande mate, línea 2 acid emphasis */}

Convierte China en dinero.

{/* Subcopy mono — ancla operativa, no marketing */}

—— SISTEMA OPERATIVO PARA REVENTA EN VINTED EU ——

Restocker, IA y multicuenta en una sola pantalla. Pensado para resellers que tratan esto como un negocio.

{/* Big mockup — el panel funcionando */}
{window.FullPanelMockup ? : }
{/* KPI tiles debajo — números aterrizados */}
{[ { v: '+3h', l: 'al día sin tareas manuales', color: 'acid' }, { v: '×2.1', l: 'margen medio sobre coste' }, { v: '4', l: 'cuentas en paralelo' }, { v: '99.9%', l: 'uptime sync · 30d' }, ].map((p, i) => (
{p.v}
{p.l}
))}
); /* HERO B — Editorial / typographic */ const HeroB = ({ onCTA }) => (
{/* Top meta bar */}
EDICIÓN 03 / 2026 EL SISTEMA OPERATIVO PARA REVENDER EN VINTED MADRID · ES
{/* Massive typography */}

De ropa a
cashflow ← noun. lo que pasa cuando
automatizas tu reventa

en 14 días.

{/* Bottom row */}
EL PROBLEMA

Compras barato, vendes manual. 8h al día publicando, respondiendo y republicando. Sin saber qué precio poner. Sin saber qué se vende.

BLACKSTOCK

Bot de mercado que te dice qué comprar. Multicuenta. IA que negocia, ofrece y republica. Academia paso a paso. Una suscripción.

● ACCESO INMEDIATO · CANCELAS CUANDO QUIERAS
{/* Marquee */} ); /* HERO C — Interactive calculator */ const HeroC = ({ onCTA }) => { const [budget, setBudget] = React.useState(500); const [hours, setHours] = React.useState(2); // Modelo realista: margen ×2.1 sobre coste, esfuerzo escalado por horas/día const monthlyRevenue = Math.round(budget * 2.1 * (hours / 2) * 1.05); const monthlyProfit = Math.round(monthlyRevenue - budget); const itemsPerMonth = Math.round((budget / 8) * (hours / 2) * 1.4); return (
{/* Left */}
SIMULADOR EN VIVO

Calcula lo que ganarías
con Blackstock.

Mueve los controles según tu situación. Estimación basada en datos reales de los +30 resellers activos en el sistema este mes.

{/* Budget slider */}
PRESUPUESTO MENSUAL DE COMPRA {budget}€
{/* Hours slider */}
HORAS AL DÍA QUE LE DEDICAS {hours}h
{/* Right: result card */}
PROYECCIÓN MENSUAL
{monthlyProfit.toLocaleString('es-ES')}€
beneficio neto estimado · margen ×3.2 medio
FACTURACIÓN
{monthlyRevenue.toLocaleString('es-ES')}€
UNIDADES
{itemsPerMonth}
HORAS AHORRADAS
{Math.round(hours * 30 * 0.7)}h
Recuperas la suscripción con solo 2 ventas al mes.
); }; const BSSlider = ({ value, min, max, step, onChange }) => { const pct = ((value - min) / (max - min)) * 100; return (
onChange(parseFloat(e.target.value))} style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', opacity: 0, cursor: 'pointer', }} />
); }; /* Marquee strip */ const Marquee = () => { const items = [ 'BOT DE MERCADO 24/7', 'IA NEGOCIADORA', 'MULTICUENTA SIN VPN', 'RESTOCKS AUTO', 'ACADEMIA INCLUIDA', 'PANEL UNIFICADO', 'ANTI-DETECCIÓN', '+30 RESELLERS ACTIVOS', ]; return (
{[...items, ...items, ...items].map((item, i) => ( {item} ))}
); }; /* ─── Mini-mockups visuales para VisualSections ─────────────── */ /* Pedidos — tabla con 5 filas y badges de estado */ const PedidosMockup = () => (
LIVE PEDIDOS · ÚLTIMA HORA
+5
{[ ['BS-1284', 'Carhartt Detroit M', '@archive.dpt', '92€', 'pagado'], ['BS-1283', 'Acne scarf wool', '@nordic.studio', '78€', 'enviado'], ['BS-1282', 'Birkenstock Boston 42', '@maison.eu', '65€', 'oferta IA'], ['BS-1281', 'Levi\'s 501 MIUSA W32', '@archive.dpt', '54€', 'enviado'], ['BS-1280', 'Stüssy 8-Ball 90s', '@nordic.studio', '48€', 'pagado'], ].map((r, i) => (
{r[0]} {r[1]} {r[2]} {r[3]} {r[4] === 'oferta IA' ? '● ' : ''}{r[4]}
))}
); /* Restocker — cola de re-publicaciones con timer */ const RestockerMockup = () => (
ACTIVO RESTOCKER · 24/7
48
{[ { p: 'Our Legacy denim 33', s: 'Publicado hace 4m', tone: 'ok' }, { p: 'Arc\'teryx Beta AR · M', s: 'En cola · 18m', tone: 'wait' }, { p: 'Diesel archive denim 30', s: 'Programado 19:15', tone: 'wait' }, { p: 'Salomon XT-6 41', s: 'En cola · 34m', tone: 'wait' }, ].map((r, i) => (
{r.p}
{r.s}
))}
); /* Inventario — barras de stock por producto */ const InventarioMockup = () => { const items = [ { n: 'Carhartt Detroit M', s: 4, m: 6, p: 67, tone: '' }, { n: 'Acne scarf wool', s: 1, m: 4, p: 25, tone: 'crit' }, { n: 'Birkenstock Boston 42', s: 2, m: 5, p: 40, tone: 'warn' }, { n: 'Levi\'s 501 MIUSA', s: 3, m: 5, p: 60, tone: '' }, { n: 'Stüssy 8-Ball 90s', s: 6, m: 8, p: 75, tone: '' }, ]; return (
STOCK INVENTARIO · UNIFICADO
{items.length} REFS
{items.map((it, i) => (
{it.n}
{it.s}/{it.m} {it.tone === 'crit' ? BAJO : null} {it.tone === 'warn' ? MEDIO : null} {!it.tone ? OK : null}
))}
); }; /* Etiquetas — preview tipo tracking */ const LabelMockup = () => (
0.9s ETIQUETA · CDN PROPIO
14 HOY
BS-1284 · Correos Express
De: @archive.dpt
Para: Aitana V. — C/ Aribau 142, 08036 Barcelona
Peso: 0.6 kg · Servicio: 48h
); /* Contabilidad — KPIs financieros */ const FinanzasMockup = () => (
FINANZAS MAYO 2026
+7% MoM
{[ ['archive.dpt', '+ 1.940€'], ['nordic.studio', '+ 870€'], ['maison.eu', '+ 450€'], ].map((r, i) => (
{r[0]} {r[1]}
))}
); /* VisualSections — sustituye HowItWorks/FeaturesGrid/Capabilities con * un encadenado de FeatureSplit + mockup. Cada sección es visual. */ const VisualSections = () => { const Split = window.FeatureSplit; if (!Split) return null; return ( <> } /> } /> } /> } /> } /> } /> } /> } /> ); }; window.PedidosMockup = PedidosMockup; window.RestockerMockup = RestockerMockup; window.InventarioMockup = InventarioMockup; window.LabelMockup = LabelMockup; window.FinanzasMockup = FinanzasMockup; window.VisualSections = VisualSections; /* Section: Cómo funciona (3 pasos) — DEPRECATED, mantenido por canvas */ const HowItWorks = () => { const steps = [ { n: '01', label: 'COMPRAS BARATO', title: 'El bot te dice qué comprar.', body: 'Pegas un producto de China, AliExpress o cualquier mayorista. El bot analiza Vinted EU en tiempo real y te dice precio medio, demanda, competencia y si vale la pena.', detail: ['Análisis sin registro', 'Demanda 7d / 30d', 'Top sellers similares', 'Precio sugerido por talla'], }, { n: '02', label: 'PUBLICAS UNA VEZ', title: 'Lo subes y olvidas.', body: 'El sistema crea la ficha optimizada (título, descripción, hashtags), la replica en N cuentas en paralelo y la republica automáticamente cuando pierde visibilidad.', detail: ['Multicuenta sin VPN', 'Restocks automáticos', 'A/B de fotos y precio', 'Anti-detección integrado'], }, { n: '03', label: 'LA IA VENDE', title: 'Negocia, ofrece y cierra.', body: 'Responde mensajes, gestiona contraofertas y aplica ofertas a interesados según las reglas que tú marcas. Tú solo confirmas envíos desde el panel unificado.', detail: ['IA conversacional', 'Reglas de oferta', 'Likes inteligentes', 'Panel multicuenta único'], }, ]; return (
CÓMO FUNCIONA

Tres pasos.

{steps.map((s, i) => (
{s.n}
{s.label}

{s.title}

{s.body}

{s.detail.map((d, j) => (
{d}
))}
))}
); }; /* Section: Features grid (the system) */ const FeaturesGrid = () => { const features = [ { tag: 'RESTOCKER', title: 'Republica con anti-detección', body: 'Cooldown 30m, rotación de photo sets contra pHash, reescritura de copy con IA y bajada de precio escalonada.', span: 2 }, { tag: 'IA INBOX', title: 'Smart Offers', body: 'Acepta, contraoferta o rechaza según tus reglas de margen y comprador.', span: 1 }, { tag: 'HUB', title: 'Multicuenta nativa', body: 'Cookies, sesiones y settings aislados por cuenta. Sin VPN, sin cruces.', span: 1 }, { tag: 'ETIQUETAS', title: 'Impresión local automática', body: 'Puente local Mac/Win/Linux: la etiqueta llega a tu impresora sin diálogo.', span: 1 }, { tag: 'BAZOOKA', title: 'Worker remoto 24/7', body: 'Cola de productos que ejecuta una máquina remota. No depende de tu navegador.', span: 1 }, ]; return (
EL SISTEMA

Una suscripción.
Todo dentro.

{features.map((f, i) => (
{ e.currentTarget.style.borderColor = 'var(--line-acid)'; }} onMouseLeave={e => { e.currentTarget.style.borderColor = 'var(--line)'; }} >
{f.tag}

{f.title}

{f.body}

INCLUIDO →
))}
); }; /* Section: Casos de éxito */ const Cases = () => { const cases = [ { name: 'Marc V.', age: 26, city: 'Barcelona', before: '210€/mes', after: '1.180€/mes', months: 5, quote: 'Compraba archive en mercadillos los sábados. Con Blackstock paso de tener 12 prendas listadas a 60. La IA me ahorra responder mensajes mientras trabajo.', }, { name: 'Andrea P.', age: 31, city: 'Madrid', before: '0€', after: '720€/mes', months: 3, quote: 'Empecé vendiendo mi armario y ropa de mi hermana. Lo importante para mí ha sido el panel: ver el inventario y la contabilidad reales sin Excel.', }, { name: 'Diego R.', age: 24, city: 'Valencia', before: '380€/mes', after: '2.140€/mes', months: 7, quote: 'Llevo 3 cuentas con vintage y workwear. El restocker mantiene los listings arriba sin que toque el móvil. Es un trabajo, no una pasión.', }, ]; return (
CASOS REALES

Datos reales.
Cuentas reales.

{cases.map((c, i) => (
{c.name}
{c.age} · {c.city}
VERIFICADO
ANTES
{c.before}
AHORA · {c.months} MESES
{c.after}

"{c.quote}"

))}
{/* Aggregate stats */}
{[ { v: '+74.000€', l: 'facturados por resellers activos este mes' }, { v: '×2.1', l: 'margen medio sobre coste' }, { v: '91%', l: 'mantienen suscripción tras mes 1' }, { v: '4.8/5', l: 'rating · resellers verificados' }, ].map((s, i) => (
{s.v}
{s.l}
))}
); }; /* Section: Pricing — solo planes mensuales reales */ const Pricing = ({ onCTA }) => { const plans = [ { code: 'basic', name: 'BASIC', tag: 'Estándar', price: 22.90, desc: 'Todo Blackstock + Anty. Opera desde tu equipo.', features: [ '★ Blackstock Anty · navegador antidetect privado', 'Restocker · Smart Agent · IA Inbox', 'Multicuenta nativa', 'Panel operativo + inventario', 'Pedidos sincronizados + etiquetas', 'Analytics + automatizaciones', 'Academia paso a paso', 'Soporte por email', ], cta: 'Agendar llamada', highlight: false, }, { code: 'pro', name: 'PRO', tag: 'Incluye Bazooka', price: 149.90, desc: 'Todo Blackstock + Bazooka. Infraestructura remota 24/7.', features: [ 'Todo lo de BASIC', '★ Bazooka · worker remoto 24/7', 'Ejecución cloud persistente', 'Automatizaciones sin tu ordenador', 'Infraestructura dedicada', ], cta: 'Agendar llamada', highlight: true, }, ]; return (
PLANES MENSUALES

Planes.

Acceso bajo llamada. Te ayudamos a elegir plan en 15 minutos. Sin permanencia.

{plans.map((p, i) => (
{p.highlight && (
★ INCLUYE BAZOOKA
)}
{p.name} {p.tag}
{p.price}€ /mes

{p.desc}

    {p.features.map((f, j) => (
  • {f}
  • ))}
))}
● ACCESO BAJO LLAMADA ● SIN PERMANENCIA ● CANCELAS CUANDO QUIERAS
); }; /* FAQ */ const FAQ = () => { const items = [ { q: '¿Qué pasa si no he vendido nada en mi vida?', a: 'La academia (incluida) te lleva desde cero: cómo elegir producto, fotos, descripciones, precios. Muchos resellers empezaron sin experiencia previa, pero con tiempo para tratar esto como un proyecto serio.' }, { q: '¿Vinted me puede banear por usar automatizaciones?', a: 'Blackstock opera dentro de patrones humanos: jitter aleatorio, ventanas de pausa y aprobación manual de las acciones críticas. Aun así, ninguna automatización elimina el riesgo al 100%; eres tú quien lo asume sobre tus cuentas.' }, { q: '¿Cuánto tardo en recuperar la inversión?', a: 'BASIC son 22,90€/mes. Con un margen sano y un par de ventas a la semana, la suscripción se cubre sola. No prometemos resultados: depende de tu producto, fotos y tiempo invertido.' }, { q: '¿Puedo cancelar cuando quiera?', a: 'Sí, sin permanencia. Cancelas desde tu panel cuando quieras. Mantienes acceso hasta el final del mes pagado. Sin preguntas, sin retención.' }, { q: '¿Y Hacienda?', a: 'En España, Vinted reporta operaciones desde 2.000€ o 30 ventas anuales (DAC7). En la academia te explicamos cómo declarar correctamente según tu volumen.' }, { q: '¿Cuántas cuentas de Vinted puedo gestionar?', a: 'Sin límite. La extensión es multicuenta nativa: aisla cookies, sesiones y settings por cuenta. Recomendado un perfil de Chrome distinto por cuenta con más de 500 ítems.' }, { q: '¿La impresión de etiquetas es realmente automática?', a: 'Sí. Un puente local en tu equipo (Mac, Windows o Linux) recibe el PDF y lo manda a tu impresora sin diálogo. Detecta pedidos nuevos cada 20 minutos.' }, { q: '¿Funciona en países fuera de España?', a: 'Sí. Soporta los 27 dominios Vinted EU activos: España, Francia, Italia, Alemania, UK, NL, BE, PT, PL, CZ, SK, LT, LV, EE, HU, RO, AT, DK, FI, SE, IE, LU, HR, SI, GR + .com / .co.uk.' }, ]; const [open, setOpen] = React.useState(0); return (
DUDAS FRECUENTES

FAQ.

{items.map((it, i) => (

{it.a}

))}
); }; /* Capabilities — explica las funciones premium con cards * Cada card describe un módulo del sistema. Animaciones via [data-bs-reveal]. */ const Capabilities = () => { const items = [ { tab: 'restocker', tag: 'AUTOMATIZACIÓN', title: 'Restocker 24/7', body: 'Re-publica tus productos cada 30 minutos para mantenerlos arriba del feed. Sin tocar el móvil, sin riesgo de baneo.', icon: 'M21 12a9 9 0 1 1-3-6.7L21 8V3 M21 12h-5', }, { tab: 'smart', tag: 'IA EN ESPAÑOL', title: 'Smart Agent', body: 'Negocia ofertas y responde dudas en tu nombre con tono natural. Tú defines márgenes y reglas, él ejecuta.', icon: 'M12 2v3 M12 19v3 M4.2 4.2l2.1 2.1 M17.7 17.7l2.1 2.1 M2 12h3 M19 12h3', }, { tab: 'pedidos', tag: 'TIEMPO REAL', title: 'Sincronización de pedidos', body: 'Capturamos cada pedido al instante en cuanto entra. Etiqueta lista en menos de 1 segundo y enviada al panel.', icon: 'M3 7h18 M3 12h18 M3 17h18', }, { tab: 'multicuenta', tag: 'MULTICUENTA', title: 'Varias cuentas, un panel', body: 'Gestiona hasta 4 cuentas Vinted desde un único dashboard. Sin saltar entre logins, con IPs únicas por cuenta.', icon: 'M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2 M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z M23 21v-2a4 4 0 0 0-3-3.87 M16 3.13a4 4 0 0 1 0 7.75', }, { tab: 'labels', tag: 'CDN PROPIO', title: 'Etiquetas instantáneas', body: 'Generamos cada etiqueta de envío en 0.9s y la guardamos en cdn.blackstock.es para acceso permanente desde cualquier dispositivo.', icon: 'M3 5a2 2 0 0 1 2-2h7l9 9-7 7-9-9V5z M7 9.5h.01', }, { tab: 'inbox', tag: 'IA CONTEXTUAL', title: 'IA Inbox unificado', body: 'Todos los mensajes en un mismo sitio, resumidos y priorizados por IA. Lo urgente lo ves; lo trivial se responde solo.', icon: 'M22 12h-6l-2 3h-4l-2-3H2 M5.5 5h13l3.5 7v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-6l3.5-7z', }, { tab: 'multicuenta', tag: 'CLOUD WORKER', title: 'Worker remoto', body: 'Tus cuentas operan desde nuestra infraestructura cloud. Restocker y Smart Agent siguen activos aunque cierres el portátil.', icon: 'M18 10a8 8 0 0 0-15.78-1A6 6 0 0 0 4 21h13a5 5 0 0 0 1-9.9z', }, { tab: 'inventario', tag: 'STOCK', title: 'Inventario unificado', body: 'Una sola fuente de verdad para todas tus cuentas. Alertas automáticas de stock crítico antes de quedarte sin producto.', icon: 'M3 9h18 M3 15h18 M5 5h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2z', }, { tab: 'contabilidad', tag: 'FINANZAS', title: 'Contabilidad real', body: 'Beneficio neto, comisiones, gastos de envío y márgenes. Listo para exportar a tu gestor sin hojas de cálculo manuales.', icon: 'M12 1v22 M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6', }, { tab: 'dashboard', tag: 'INSIGHTS', title: 'Dashboard ejecutivo', body: 'Ingresos, pedidos, márgenes y rendimiento por cuenta. Decisiones basadas en datos reales, no en sensaciones.', icon: 'M3 12h4l3-9 4 18 3-9h4', }, { tab: 'smart', tag: 'OFERTAS', title: 'Auto-negociación', body: 'Acepta automáticamente ofertas que cumplen tu margen mínimo y contraofertea las demás. Sin perder ventas mientras duermes.', icon: 'M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z M12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6z', }, { tab: 'dashboard', tag: 'FORMACIÓN', title: 'Academia incluida', body: 'Acceso al programa Blackstock Academy: curso completo de reventa en Vinted, comunidad privada y soporte directo.', icon: 'M22 10v6 M2 10l10-5 10 5-10 5z M6 12v5c3 3 9 3 12 0v-5', }, ]; return (
TODO EL SISTEMA

Doce módulos. Un único panel.

Cada parte del sistema está pensada para sustituir una hora de trabajo manual al día. Toca cualquiera para ver una demo en vivo.

{items.map((it, i) => ( ))}
); }; /* Team section — real team photo */ const Team = () => (
Equipo Blackstock en el almacén
EQUIPO REAL
HQ · ALMACÉN 2026
DETRÁS DEL HUB

No somos un curso.
Vendemos lo mismo que tú.

Blackstock lo construye gente que enviaba paquetes cada día. Cada feature del Hub sale de una fricción real en nuestro propio almacén.

{[ { v: '+12.000', l: 'pedidos enviados\npor el equipo' }, { v: '4 años', l: 'vendiendo en\nVinted EU' }, { v: '24/7', l: 'el Hub corre\ntambién para nosotros' }, ].map((s, i) => (
{s.v}
{s.l}
))}
); /* Final CTA */ const FinalCTA = ({ onCTA }) => (
EMPEZAR HOY

Convierte China en dinero.

Sistema operativo para reventa en Vinted EU. Desde 22,90€/mes, sin permanencia.

); /* Top banner */ const TopBanner = () => (
✦  RESELLERS ACTIVOS · MAYO 2026  ✦  PLAZAS LIMITADAS  ✦  BASIC DESDE 22,90€/MES · SIN PERMANENCIA  ✦
); /* HomeAntyTeaser · bloque para invitar a la página dedicada de Anty * desde la home. Es solo un teaser — el detalle premium vive en /anty. */ const HomeAntyTeaser = ({ onNavigate, onCTA }) => (
NUEVO · INCLUIDO EN BASIC

Blackstock Anty.
Tu navegador privado.

Chromium aislado por cuenta con TLS Safari iOS, fingerprint por perfil y proxy dedicado. Sin antidetects de pago. Sin contaminación entre sesiones.

    {['TLS JA3 Safari iOS', 'WebRTC guard MV3', 'iOS Deep Profile', 'Vault local cifrado'].map((f, i) => (
  • {f}
  • ))}
BLACKSTOCK ANTY · DASHBOARD
{[ { i: 'M', n: 'Maria · Vinted ES', s: 'Activo', c: '#B6FF00', sc: '#B6FF00' }, { i: 'L', n: 'Lucia FR', s: 'Parado', c: '#60A5FA', sc: 'var(--fg-3)' }, { i: 'B', n: 'Bot warmup', s: 'Parado', c: '#F59E0B', sc: 'var(--fg-3)' }, { i: 'A', n: 'Anna DE', s: 'Activo', c: '#A78BFA', sc: '#B6FF00' }, ].map((p, i) => (
{p.i}
{p.n}
{p.s}
))}
Licencia activa
year · expira 11 may 2027
); window.HomeAntyTeaser = HomeAntyTeaser; const HomePage = ({ heroVariant = 'A', onNavigate, onCTA }) => { const Hero = heroVariant === 'B' ? HeroB : heroVariant === 'C' ? HeroC : HeroA; return (