Fichas de cada parche

No necesitas todos los parches.
Necesitas los tuyos.

Dime tu nombre, desde qué país me escribes y cómo te sientes. Al final te digo con qué parche empezar, cuáles te convienen después y cuánto te costaría con el envío y el impuesto ya incluidos.

Antes que nada, por si es la primera vez que oyes de esto.

Un parche LifeWave se pega en la piel como una curita, se trae 12 horas y se tira. No se toma, no se inyecta y no lleva medicamento. Nada entra a tu cuerpo.

Lo que hace es reflejar tu propio calor corporal como luz de muy bajo nivel. Esa luz funciona como una señal, igual que cuando te da el sol y tu cuerpo produce vitamina D por su cuenta.

Antes que nada: no todos pagan lo mismo

El precio de los parches depende de qué tipo de cuenta abras, y abrir la buena no cuesta nada. Esto es lo que cambia.

Cliente

X39 a $150 · complementos a $80

Compras directo, sin abrir nada. Es la opción más cara y casi nadie tendría por qué quedarse aquí.

Cliente preferente

X39 a $100 · complementos desde $50

Abrirla es gratis. Mismo producto, mismo envío, menos dinero. Aquí es donde empieza la mayoría.

Cliente Preferente Plus

Mismos precios, más 25 USD al año

Pagas la anualidad una sola vez y recibes 10 parches de regalo cada mes: 120 al año. Si juntas 3 clientes, LifeWave te devuelve 100 USD en monedero.

Socio de marca

Precio de mayoreo

Para quien además de usarlos quiere venderlos. Se entra con un paquete de arranque, no con piezas sueltas.

Ficha técnica de cada parche

Qué hace, para quién es y cómo se usa. Toca el que quieras revisar.

/* ============================================================ 3. ESTADO Y LÓGICA ============================================================ */ let step = 0; let answers = {}; let tier = "preferente"; let currentRec = null; let priorityPatch = null, priorityLabel = null, pendientes = []; let soloPrevencion = false; let user = {nombre:"", pais:""}; const $ = id => document.getElementById(id); const toolEl = $("tool"), resEl = $("result"), qArea = $("question-area"), navEl = $("nav"); const PAISES = {mx:"México", us:"Estados Unidos"}; $("start").addEventListener("click", () => { answers = {}; resEl.classList.add("hidden"); toolEl.classList.remove("hidden"); showIntro(); irA(toolEl); }); function showIntro(){ $("progress").innerHTML = ""; qArea.innerHTML = `
Antes de empezar

Dime cómo te llamas y desde dónde me escribes.

Con tu nombre te hablo directo, y con tu país te calculo los precios como te van a llegar a ti.

${Object.keys(PAISES).map(k=>` `).join("")}
`; qArea.querySelectorAll("[data-pais]").forEach(b=>b.addEventListener("click",()=>{ user.nombre = $("uname").value.trim(); user.pais = b.dataset.pais; showIntro(); checkIntro(); })); $("uname").addEventListener("input", checkIntro); $("uname").addEventListener("keydown", e=>{ if(e.key==="Enter" && user.pais && $("uname").value.trim()) startQuestions(); }); navEl.innerHTML = ``; $("goQ").addEventListener("click", startQuestions); checkIntro(); } function checkIntro(){ const ok = $("uname") && $("uname").value.trim().length>0 && !!user.pais; if($("goQ")) $("goQ").disabled = !ok; if($("introHint")) $("introHint").textContent = ok ? "" : "Falta tu nombre o tu país."; } function startQuestions(){ const n = $("uname") ? $("uname").value.trim() : user.nombre; if(!n || !user.pais) return checkIntro(); user.nombre = n.split(" ")[0]; goStep(0); } const esMX = () => user.pais === "mx"; const conNombre = t => t.replace(/\{n\}/g, user.nombre || ""); /* Al cambiar de paso, la altura del contenido cambia mucho (la pregunta 2 es larga y la 3 corta). Sin esto, el navegador conserva el scroll y la persona termina viendo otra sección. */ function irA(el){ const quieto = typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches; const y = el.getBoundingClientRect().top + window.scrollY - 70; window.scrollTo({top:y, behavior: quieto ? "auto" : "smooth"}); } function goStep(n){ step = n; render(); irA(toolEl); } /* Las áreas que la persona marcó en la pregunta 2. */ function areasElegidas(){ const Q = QUESTIONS.find(q=>q.id==="areas"); return (answers.areas||[]).map(i=>Q.opts[i].area); } /* La pregunta de síntomas solo muestra lo de las áreas marcadas. Se conserva el índice original de cada opción para que la respuesta no se descuadre. */ function opcionesVisibles(Q){ const todas = Q.opts.map((o,i)=>({o,i})); if(Q.id !== "sintomas") return todas; const areas = areasElegidas(); return todas.filter(x => areas.includes(x.o.area)); } /* Si alguien regresa y quita un área, se van también sus síntomas marcados. */ function podarSintomas(){ const areas = areasElegidas(); const Q = QUESTIONS.find(q=>q.id==="sintomas"); if(answers.sintomas) answers.sintomas = answers.sintomas.filter(i => areas.includes(Q.opts[i].area)); } function render(){ const Q = QUESTIONS[step]; $("progress").innerHTML = QUESTIONS.map((_,i)=>``).join(""); const picked = answers[Q.id] || (Q.type==="multi" ? [] : null); const isSel = i => Q.type==="multi" ? picked.includes(i) : picked===i; const vis = opcionesVisibles(Q); let areaPrev = null; qArea.innerHTML = `
Pregunta ${step+1} de ${QUESTIONS.length}

${conNombre(Q.q)}

${conNombre(Q.help)}

${vis.map(({o,i})=>{ let cab = ""; if(Q.id==="sintomas" && o.area !== areaPrev){ cab = `
${AREAS[o.area]||""}
`; areaPrev = o.area; } if(o.sep) cab = `
`; return `${cab} `; }).join("")}
`; qArea.querySelectorAll(".opt").forEach(btn=>{ btn.addEventListener("click", ()=>{ const i = +btn.dataset.i; const o = Q.opts[i]; if(o.escape) return showEscape(); if(Q.type==="multi"){ const arr = answers[Q.id] || []; answers[Q.id] = arr.includes(i) ? arr.filter(x=>x!==i) : [...arr,i]; if(Q.id==="areas") podarSintomas(); render(); } else { answers[Q.id] = i; if(step < QUESTIONS.length-1){ goStep(step+1); } else { finish(); } } }); }); let ready = true, aviso = ""; if(Q.type==="single" && answers[Q.id]===undefined){ ready = false; aviso = "Elige una opción para continuar."; } if(Q.id==="areas" && !(answers.areas||[]).length){ ready = false; aviso = "Marca al menos una para seguir."; } navEl.innerHTML = ` ${Q.type==="multi" ? `` : ''} ${!ready ? `${aviso}` : ''} `; $("back").addEventListener("click", ()=>{ if(step>0){ goStep(step-1); } else { showIntro(); irA(toolEl); } }); if($("next")) $("next").addEventListener("click", ()=>{ if(!ready) return; if(step

${user.nombre ? `${user.nombre}, lo tuyo merece una plática` : "Lo tuyo merece una plática"}, no un cuestionario.

Hay cosas que no se resuelven con una lista de opciones. Escríbeme y lo vemos con calma, sin compromiso.

Los parches son productos de bienestar general y no sustituyen ningún tratamiento. Si tomas medicamento, síguelo tomando igual.

`; $("again").addEventListener("click", ()=>{ answers={}; resEl.classList.add("hidden"); toolEl.classList.remove("hidden"); goStep(0); }); irA(resEl); } function score(){ const sc = {}; QUESTIONS.forEach(Q=>{ const a = answers[Q.id]; if(a===undefined) return; const list = Q.type==="multi" ? a : [a]; list.forEach(i=>{ const s = Q.opts[i].s || {}; for(const k in s) sc[k] = (sc[k]||0) + s[k]; }); }); return sc; } function finish(){ const sc = score(); const nOpt = QUESTIONS.find(q=>q.id==="alcance").opts[answers.alcance]; const n = nOpt ? nOpt.n : 2; const areas = areasElegidas(); soloPrevencion = areas.includes("prevencion") && areas.every(a=>a==="prevencion"); // La recomendación se ordena según todas las respuestas del cuestionario. priorityPatch = null; priorityLabel = null; const ranked = Object.keys(PATCHES) .filter(k=>k!=="x39" && k!==priorityPatch) .map(k=>({k, v: sc[k]||0})) .sort((a,b)=>b.v-a.v) .filter(x=>x.v>0) .map(x=>x.k); const list = priorityPatch ? [priorityPatch, ...ranked] : ranked; currentRec = list.slice(0,n); if(n > 0 && !currentRec.length) currentRec = ["aeon"]; pendientes = list.slice(n, n+2); // lo que sus respuestas pedían pero no cupo toolEl.classList.add("hidden"); resEl.classList.remove("hidden"); drawResult(); irA(resEl); } /* Las dudas que frenan una compra cuando nadie las contesta. Van en el resultado, que es justo donde aparecen: ya vio qué le toca y cuánto cuesta. */ const FAQ = [ { q:"¿Qué es un parche de fototerapia?", a:"Un parche que se pega en la piel, se trae 12 horas y se tira. Por dentro lleva cristales de aminoácidos y azúcares, no medicamento. No se toma, no se inyecta, y nada de lo que trae atraviesa la piel." }, { q:"¿Cómo funciona si no me mete nada al cuerpo?", a:"El parche está diseñado para no respirar: sella el calor de tu cuerpo y con ese calor activa los cristales, que estimulan la piel con luz de muy bajo nivel. Esa luz es una señal. Es el mismo principio de salir al sol y que tu cuerpo produzca vitamina D: la luz provoca el efecto, sin que te metan nada." }, { q:"¿Se siente algo al ponérselo?", a:"Casi siempre no, y es normal. No es un parche de calor ni de mentol. David Schmidt, el inventor, lo compara con tomarte una vitamina: no la sientes pasar, pero está trabajando. Si esperas una sensación al momento, te vas a decepcionar. Lo que se nota es cómo te sientes a los días, no al pegarlo." }, { q:"¿En cuánto tiempo se nota?", a:"Depende de la persona y de lo que busques. Hay quien nota descanso o energía en los primeros días y hay quien tarda semanas. En los estudios de LifeWave los cambios se miden en periodos de 30 a 60 días de uso constante. Lo que sí te digo de una vez: no es cosa de probarlo un día." }, { q:"¿Hay algo que ayude a que funcionen mejor?", a:"Tomar agua, y no es un consejo de relleno. La deshidratación limita la conductividad del tejido, y si el tejido no conduce bien, el parche rinde menos. Lo mismo con dormir y comer decente: el parche acompaña a tu cuerpo, no lo sustituye." }, { q:"Tomo medicamento. ¿Puedo usarlos?", a:"Los parches son productos de bienestar general y no sustituyen ningún tratamiento. Si tomas medicamento, síguelo tomando igual: esto se suma a lo que ya haces, no lo reemplaza, y no se deja nada por empezar a usarlos." } ]; const REASON = { x49:"Porque quieres un cuerpo que aguante lo que le pidas: músculo, hueso, cartílago y tendón.", icewave:"Porque ya llevas tiempo acomodando tu día alrededor de lo que te duele.", energy:"Porque te falta pila justo cuando más la necesitas: al final del día.", sp6:"Porque lo tuyo no es solo el apetito: es la química de fondo que maneja ánimo, digestión y hormonas.", aeon:"Porque tu cuerpo se acuesta pero tu cabeza se queda trabajando.", glutathione:"Porque tu cuerpo carga con el desgaste de tu ritmo, y eso se nota en todo lo demás.", carnosine:"Porque quieres llegar a los años que siguen con la cabeza ágil y el cuerpo fuerte.", alavida:"Porque quieres cuidar cómo te ves desde la raíz, no solo por encima.", silent:"Porque duermes, pero no amaneces descansado." }; function drawResult(){ const comps = currentRec; resEl.innerHTML = `

${soloPrevencion ? (user.nombre ? `${user.nombre}, lo tuyo no es un problema que arreglar` : "Lo tuyo no es un problema que arreglar") : (user.nombre ? `${user.nombre}, este es tu protocolo` : "Tu protocolo sugerido")}

${soloPrevencion ? `Es mantenimiento, y para eso el X39 es exactamente el producto: es el de bienestar general de LifeWave, el que se recomienda para cualquiera.${comps.length ? " Estos otros lo refuerzan, pero la base ya la tienes." : " No necesitas más por ahora."}` : `${priorityLabel ? `Lo que me dijiste que más te urge es ${priorityLabel}${comps.length?", así que eso va atendido sí o sí. ":". "}` : ""}${comps.length ? `Empieza por el X39: los demás se suman encima, no lo reemplazan.` : `Escogiste arrancar solo con el X39, y es la decisión correcta para empezar: es el que pega más amplio y el que LifeWave recomienda como primero para todos.`}`}

X39

Tu punto de partida

${soloPrevencion ? "Despierta a tus propias células madre, las que reparan lo que se va desgastando con los años. Justo por eso es el indicado cuando no traes una queja puntual: no persigue un síntoma, sostiene todo el cuerpo." : "Es el parche que despierta a tus propias células madre, las que reparan lo que se va desgastando con los años. Por eso no atiende un síntoma: atiende la razón de fondo. Todo lo demás construye encima de él."}

${comps.map(k=>`

${PATCHES[k].name}

${k===priorityPatch?"Atiende tu prioridad":"Complemento"}

${REASON[k]||PATCHES[k].short}

`).join("")} ${pendientes.length ? `

${comps.length ? "Lo que te convendría sumar más adelante" : "Cuando quieras ir por más"}

Por lo que marcaste, estos dos también te tocaban. No hay prisa: el X39 primero, y estos cuando lo sientas.

` : ""}

Cuánto te saldría

Ya incluye envío e impuesto. Toca cada cuenta para ver cuánto cambia tu total.

¿Y esto qué es, exactamente?

Si es tu primera vez con los parches, seguro traes estas dudas. Toca la que quieras.

${FAQ.map(f=>`
${f.q}
${f.a}
`).join("")}
`; resEl.querySelectorAll("[data-ficha]").forEach(b=>b.addEventListener("click",()=>openFicha(b.dataset.ficha))); $("again").addEventListener("click", ()=>{ answers={}; resEl.classList.add("hidden"); toolEl.classList.remove("hidden"); goStep(0); }); $("tiers").querySelectorAll(".tier").forEach(b=>b.addEventListener("click",()=>{ tier=b.dataset.tier; drawPrices(); })); drawPrices(); } function compUnitPrice(count, t){ if(t==="cliente") return 80; if(count>=3) return 50; if(count===2) return 60; return 70; } function computeTotal(t){ const stemPrice = t==="cliente" ? 150 : 100; const comps = currentRec.filter(k=>PATCHES[k].kind==="comp"); const stems = currentRec.filter(k=>PATCHES[k].kind==="stem"); const unit = compUnitPrice(comps.length, t); const sub = stemPrice + stems.length*stemPrice + comps.length*unit; const rate = IMPUESTO[user.pais] ?? IMPUESTO.mx; const tax = (sub + ENVIO_USD) * rate; const membresia = t==="preferentePlus" ? MEMBRESIA_PLUS : 0; const recurrente = sub + ENVIO_USD + tax; // lo que pagas cada pedido const total = recurrente + membresia; // este pedido, con la anualidad return {stemPrice, comps, stems, unit, sub, tax, total, rate, membresia, recurrente}; } const mxn = usd => "$" + (Math.round(usd*TIPO_CAMBIO/10)*10).toLocaleString("es-MX") + " MXN"; const usd = n => "$" + n.toFixed(2); function drawPrices(){ $("tiers").querySelectorAll(".tier").forEach(b=>b.classList.toggle("sel", b.dataset.tier===tier)); if(tier==="socio"){ $("breakdown").innerHTML = `

Socio de marca es para quien además de usarlos quiere venderlos. Se entra con un paquete de arranque, y el paquete no es una cuota: es producto que te llevas.

${PAQUETES.map((q,i)=>` `).join("")}
Cómo se arman los puntos
    ${GUIA_PUNTOS.map(x=>`
  • ${x}
  • `).join("")}
Por qué conmigo
    ${BENEFICIOS_SOCIO.map(x=>`
  • ${x}
  • `).join("")}

Los precios en pesos son aproximados y cambian según el dólar del día de la compra. Esto es una oportunidad de negocio, no un sueldo: lo que ganes depende de lo que trabajes y no hay ingresos garantizados.

`; $("breakdown").querySelectorAll("[data-paq]").forEach(b=>b.addEventListener("click",()=>{ paquete = paquete === +b.dataset.paq ? null : +b.dataset.paq; drawPrices(); })); buildWA(null); return; } const c = computeTotal(tier); let rows = [`
X39 — parche base$${c.stemPrice}
`]; c.stems.forEach(k=>rows.push(`
${PATCHES[k].name} — activación celular$${c.stemPrice}
`)); c.comps.forEach(k=>rows.push(`
${PATCHES[k].name}$${c.unit}
`)); rows.push(`
Subtotal de producto$${c.sub}
`); rows.push(`
Envío$${ENVIO_USD}
`); rows.push(`
Impuesto (${Math.round(c.rate*100)}%${esMX()?"":", estimado"})${usd(c.tax)}
`); if(c.membresia) rows.push(`
Membresía Plus, se paga una vez al año$${c.membresia}
`); rows.push(`
${c.membresia?"Total de este pedido":"Total"}${usd(c.total)} USD
`); if(esMX()) rows.push(`
Aproximado en pesos, a $${TIPO_CAMBIO.toFixed(2)} por dólar~${mxn(c.total)}
`); if(c.membresia) rows.push(`
Tus siguientes pedidos del año, ya sin la membresía${usd(c.recurrente)} USD
`); let note = esMX() ? `El cobro de LifeWave es en dólares. El monto en pesos es solo una referencia, calculada a $${TIPO_CAMBIO.toFixed(2)} por dólar. Lo pusimos un poco arriba del tipo de cambio del día a propósito, porque tu banco cobra una comisión por pagar en moneda extranjera. Lo más probable es que pagues eso o un poco menos.` : `El impuesto es un estimado: el sales tax cambia según tu estado, así que el monto final puede moverse un poco en el checkout.`; if(tier==="cliente"){ const pref = computeTotal("preferente").total; note = `Como cliente preferente este mismo pedido te quedaría en ${usd(pref)} USD${esMX()?`, unos ${mxn(pref)}`:""}. Abrir esa cuenta no cuesta nada, pregúntame cómo. ` + note; } else if(tier==="preferentePlus"){ note = `Los 25 USD de la membresía se pagan una sola vez al año y te dan 10 parches de regalo cada mes, o sea 120 parches al año por 25 dólares. Si además juntas 3 clientes (la tuya cuenta como una), LifeWave te da 100 USD en monedero electrónico. ` + note; } else if(c.comps.length<3){ note = `Entre más complementos llevas, más baja el precio por pieza: 1 a $70, 2 a $60 cada uno, 3 a $50 cada uno. ` + note; } $("breakdown").innerHTML = `
${rows.join("")}

${note}

`; buildWA(c.total); } function buildWA(total){ const tierName = {cliente:"Cliente", preferente:"Cliente preferente", preferentePlus:"Cliente Preferente Plus", socio:"Socio de marca"}[tier]; const lista = ["X39", ...currentRec.map(k=>PATCHES[k].name)].join(", "); const linea = total === null ? (paquete !== null ? `Me interesa el paquete ${PAQUETES[paquete].n}, de $${PAQUETES[paquete].usd.toLocaleString("en-US")} USD.` : "Quiero que me expliques los paquetes de socio de marca.") : `Total con envío e impuesto: ${usd(total)} USD${esMX()?` (aprox. ${mxn(total)} a $${TIPO_CAMBIO.toFixed(2)})`:""}`; const msg = `Hola ${NOMBRE_CORTO}, soy ${user.nombre||"una persona"} y contesté el cuestionario de los parches. Escribo desde: ${PAISES[user.pais]||"—"} ${priorityLabel ? `Lo que más me urge: ${priorityLabel}\n` : ""}Esto me salió: ${lista} Tipo de cuenta: ${tierName} ${linea} Quiero que me expliques cómo empezar.`; $("wa").href = `https://wa.me/${WA}?text=${encodeURIComponent(msg)}`; } /* ============================================================ 4. BIBLIOTECA Y FICHAS ============================================================ */ $("brandName").innerHTML = `${NOMBRE_CORTO} · LifeWave`; $("footerLine").textContent = `${NOMBRE} · Distribuidor independiente LifeWave · WhatsApp ${WA_VISIBLE}`; document.title = `Asesor de Parches — ${NOMBRE}`; /* Tema claro por defecto: se lee mejor. El oscuro queda a un toque. */ (function(){ const btn = $("tema"); const set = modo => { document.documentElement.setAttribute("data-theme", modo); btn.textContent = modo === "dark" ? "Fondo claro" : "Fondo oscuro"; try{ localStorage.setItem("tema", modo); }catch(e){} }; let guardado = "light"; try{ guardado = localStorage.getItem("tema") || "light"; }catch(e){} set(guardado); btn.addEventListener("click", ()=> set( document.documentElement.getAttribute("data-theme") === "dark" ? "light" : "dark" )); })(); $("grid").innerHTML = Object.keys(PATCHES).map(k=>` `).join(""); document.querySelectorAll("#grid [data-ficha]").forEach(b=>b.addEventListener("click",()=>openFicha(b.dataset.ficha))); function openFicha(k){ const p = PATCHES[k]; const listas = (p.peptidos ? `
Qué péptidos y moléculas estimula
    ${p.peptidos.map(x=>`
  • ${x}
  • `).join("")}
` : "") + (p.hacen ? `
Y qué hacen por ti
    ${p.hacen.map(x=>`
  • ${x}
  • `).join("")}
` : "") + (p.cuanto ? `
${p.cuanto.titulo}
${p.cuanto.filas.map((f,i)=>` `).join("")}
${f[0]}${f[1]}

${p.cuanto.pie}

` : ""); $("sheet").innerHTML = `

${p.name}

${p.kind==="stem"?"Activación celular":"Complemento"}

${p.punch}

Qué hace
${p.que}
Lo que cambia en tu día
${p.cambia}
${listas}
Por qué funciona
${p.como}
Es para ti si
${p.para}
Cómo se usa
${p.uso}
Dónde se coloca
${p.donde}
Combina bien con
${p.combina}
Nota
${p.nota?p.nota+" ":""}Producto de bienestar general. No trata ni cura enfermedades. Sigue siempre el instructivo que viene en la caja.
`; $("overlay").classList.add("open"); document.body.style.overflow="hidden"; $("closeSheet").addEventListener("click", closeFicha); $("closeSheet").focus(); } function closeFicha(){ $("overlay").classList.remove("open"); document.body.style.overflow=""; } $("overlay").addEventListener("click", e=>{ if(e.target===$("overlay")) closeFicha(); }); document.addEventListener("keydown", e=>{ if(e.key==="Escape") closeFicha(); });