{"id":7375,"date":"2026-04-27T12:25:59","date_gmt":"2026-04-27T10:25:59","guid":{"rendered":"https:\/\/icomuni.cat\/?page_id=7375"},"modified":"2026-05-20T16:55:29","modified_gmt":"2026-05-20T14:55:29","slug":"radiografia-real-de-tu-negocio-en-menos-de-1-minuto","status":"publish","type":"page","link":"https:\/\/icomuni.cat\/es\/radiografia-real-de-tu-negocio-en-menos-de-1-minuto\/","title":{"rendered":"Radiograf\u00eda de tu negocio (en menos de 1 minuto)"},"content":{"rendered":"<!-- BLOQUE GUTENBERG: PEGAR EN BLOQUE HTML PERSONALIZADO -->\n<div id=\"testApp\">\n\n<style>\n#testApp,\n#testApp * {\n  box-sizing: border-box;\n}\n\n#testApp {\n  --azul: #153C8D;\n  --lila: #6C63FF;\n  --lila-oscuro: #4F46E5;\n  --gris: #6B7280;\n  --gris-2: #E5E7EB;\n  --gris-3: #F8FAFC;\n  --negro: #111827;\n  --blanco: #FFFFFF;\n  --verde: #25D366;\n  --rojo: #EF4444;\n  --ambar: #F59E0B;\n  --ok: #10B981;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\n  width: min(100%, 920px);\n  margin: 38px auto;\n  color: var(--negro);\n}\n\n#testApp .test-hero,\n#testApp .test-card,\n#testApp .result {\n  background: rgba(255,255,255,0.94);\n  border: 1px solid rgba(108, 99, 255, 0.13);\n  border-radius: 28px;\n  box-shadow: 0 22px 65px rgba(17, 24, 39, 0.08);\n}\n\n#testApp .test-hero {\n  position: relative;\n  overflow: hidden;\n  padding: clamp(26px, 5vw, 46px);\n  margin-bottom: 28px;\n}\n\n#testApp .test-hero::before {\n  content: \"\";\n  position: absolute;\n  width: 260px;\n  height: 260px;\n  border-radius: 999px;\n  background: radial-gradient(circle, rgba(108,99,255,0.22), rgba(108,99,255,0));\n  top: -110px;\n  right: -80px;\n}\n\n#testApp .test-hero::after {\n  content: \"\";\n  position: absolute;\n  width: 190px;\n  height: 190px;\n  border-radius: 999px;\n  background: radial-gradient(circle, rgba(21,60,141,0.13), rgba(21,60,141,0));\n  bottom: -90px;\n  left: -70px;\n}\n\n#testApp .badge {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  background: rgba(108, 99, 255, 0.12);\n  color: var(--lila-oscuro);\n  padding: 9px 14px;\n  border-radius: 999px;\n  font-size: 14px;\n  line-height: 1;\n  font-weight: 800;\n  margin-bottom: 18px;\n}\n\n#testApp .badge::before {\n  content: \"\u25cf\";\n  color: var(--lila);\n  font-size: 12px;\n}\n\n#testApp h2 {\n  position: relative;\n  max-width: 760px;\n  margin: 0 0 14px;\n  color: var(--azul);\n  font-size: clamp(34px, 6vw, 58px);\n  line-height: 0.96;\n  letter-spacing: -2px;\n  font-weight: 900;\n}\n\n#testApp .subtitle {\n  position: relative;\n  max-width: 680px;\n  margin: 0;\n  color: var(--gris);\n  font-size: clamp(16px, 2vw, 19px);\n  line-height: 1.5;\n}\n\n#testApp .instructions {\n  position: relative;\n  margin-top: 24px;\n  padding: 17px 18px;\n  border-radius: 18px;\n  background: var(--gris-3);\n  color: #374151;\n  font-size: 15px;\n  border: 1px solid #EDF0F6;\n}\n\n#testApp .test-card {\n  padding: clamp(22px, 4vw, 34px);\n}\n\n#testApp .question {\n  position: relative;\n  display: grid;\n  grid-template-columns: 42px 1fr;\n  gap: 16px;\n  padding: 22px 0;\n  border-bottom: 1px solid #EEF0F4;\n}\n\n#testApp .question:first-child {\n  padding-top: 0;\n}\n\n#testApp .question:last-child {\n  border-bottom: 0;\n}\n\n#testApp .number {\n  width: 38px;\n  height: 38px;\n  border-radius: 14px;\n  background: linear-gradient(135deg, var(--azul), var(--lila));\n  color: var(--blanco);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-weight: 900;\n  box-shadow: 0 12px 22px rgba(108, 99, 255, 0.2);\n}\n\n#testApp .question-title {\n  margin: 0 0 4px;\n  color: var(--negro);\n  font-size: 18px;\n  line-height: 1.2;\n  font-weight: 900;\n}\n\n#testApp .question-text {\n  margin: 0 0 14px;\n  color: var(--gris);\n  font-size: 14.5px;\n  line-height: 1.45;\n}\n\n#testApp .range-row {\n  display: grid;\n  grid-template-columns: 25px 1fr 46px;\n  gap: 12px;\n  align-items: center;\n}\n\n#testApp .range-min {\n  color: var(--gris);\n  font-weight: 800;\n  font-size: 13px;\n}\n\n#testApp input[type=\"range\"] {\n  width: 100%;\n  height: 8px;\n  appearance: none;\n  background: linear-gradient(90deg, var(--lila) 0%, var(--lila) 44.4%, #E5E7EB 44.4%, #E5E7EB 100%);\n  border-radius: 999px;\n  outline: none;\n  cursor: pointer;\n}\n\n#testApp input[type=\"range\"]::-webkit-slider-thumb {\n  appearance: none;\n  width: 22px;\n  height: 22px;\n  border-radius: 50%;\n  background: var(--lila);\n  border: 4px solid #FFFFFF;\n  box-shadow: 0 7px 18px rgba(108, 99, 255, 0.38);\n}\n\n#testApp input[type=\"range\"]::-moz-range-thumb {\n  width: 16px;\n  height: 16px;\n  border-radius: 50%;\n  background: var(--lila);\n  border: 4px solid #FFFFFF;\n  box-shadow: 0 7px 18px rgba(108, 99, 255, 0.38);\n}\n\n#testApp .value {\n  min-width: 42px;\n  padding: 8px 0;\n  text-align: center;\n  border-radius: 12px;\n  background: #F1F5FF;\n  color: var(--azul);\n  font-weight: 900;\n  font-size: 15px;\n}\n\n#testApp .actions {\n  display: grid;\n  grid-template-columns: 1fr auto;\n  gap: 12px;\n  margin-top: 28px;\n}\n\n#testApp button {\n  border: 0;\n  border-radius: 16px;\n  padding: 16px 22px;\n  cursor: pointer;\n  font-size: 16px;\n  font-weight: 900;\n  transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;\n}\n\n#testApp .primary-btn {\n  background: linear-gradient(135deg, var(--lila), var(--azul));\n  color: white;\n  box-shadow: 0 16px 32px rgba(108, 99, 255, 0.26);\n}\n\n#testApp .secondary-btn {\n  background: #F3F4F6;\n  color: #374151;\n}\n\n#testApp button:hover {\n  transform: translateY(-2px);\n  opacity: 0.96;\n}\n\n#testApp .result {\n  display: none;\n  margin-top: 30px;\n  padding: clamp(24px, 4vw, 34px);\n}\n\n#testApp .loading-result {\n  display: none;\n  margin-top: 30px;\n  padding: 24px;\n  border-radius: 24px;\n  background: rgba(255,255,255,0.94);\n  border: 1px solid rgba(108, 99, 255, 0.13);\n  box-shadow: 0 22px 65px rgba(17, 24, 39, 0.08);\n  text-align: center;\n}\n\n#testApp .loading-result strong {\n  display: block;\n  color: var(--azul);\n  font-size: 22px;\n  margin-bottom: 8px;\n}\n\n#testApp .loading-result span {\n  color: var(--gris);\n}\n\n#testApp .loader {\n  width: 46px;\n  height: 46px;\n  border-radius: 50%;\n  border: 5px solid #E5E7EB;\n  border-top-color: var(--lila);\n  margin: 0 auto 16px;\n  animation: spinTestApp 0.9s linear infinite;\n}\n\n@keyframes spinTestApp {\n  to { transform: rotate(360deg); }\n}\n\n#testApp .result-grid {\n  display: grid;\n  grid-template-columns: 178px 1fr;\n  gap: 26px;\n  align-items: center;\n}\n\n#testApp .score-circle {\n  width: 170px;\n  height: 170px;\n  border-radius: 50%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-direction: column;\n  background: conic-gradient(var(--lila) 0deg, #E5E7EB 0deg);\n  position: relative;\n}\n\n#testApp .score-circle::before {\n  content: \"\";\n  position: absolute;\n  width: 126px;\n  height: 126px;\n  border-radius: 50%;\n  background: white;\n}\n\n#testApp #scoreNumber {\n  position: relative;\n  font-size: 44px;\n  line-height: 1;\n  color: var(--azul);\n  font-weight: 950;\n}\n\n#testApp .score-circle small {\n  position: relative;\n  color: var(--gris);\n  font-size: 13px;\n  font-weight: 800;\n}\n\n#testApp #resultTitle {\n  margin: 0 0 8px;\n  color: var(--azul);\n  font-size: clamp(26px, 4vw, 38px);\n  line-height: 1.05;\n  letter-spacing: -1px;\n  font-weight: 950;\n}\n\n#testApp #resultText {\n  margin: 0;\n  color: #374151;\n  font-size: 17px;\n  line-height: 1.5;\n}\n\n#testApp .alert {\n  margin-top: 16px;\n  padding: 15px 16px;\n  border-radius: 16px;\n  font-weight: 800;\n  line-height: 1.4;\n}\n\n#testApp .danger { background: rgba(239, 68, 68, 0.1); color: #991B1B; }\n#testApp .warning { background: rgba(245, 158, 11, 0.13); color: #92400E; }\n#testApp .success { background: rgba(16, 185, 129, 0.12); color: #065F46; }\n\n#testApp .blocks {\n  display: grid;\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n  gap: 14px;\n  margin-top: 28px;\n}\n\n#testApp .block {\n  background: var(--gris-3);\n  border: 1px solid #E8ECF3;\n  border-radius: 18px;\n  padding: 16px;\n}\n\n#testApp .block strong {\n  display: flex;\n  justify-content: space-between;\n  gap: 10px;\n  color: var(--negro);\n  font-size: 14.5px;\n  margin-bottom: 10px;\n}\n\n#testApp .block-score {\n  color: var(--azul);\n  white-space: nowrap;\n}\n\n#testApp .bar {\n  height: 10px;\n  border-radius: 999px;\n  background: #E5E7EB;\n  overflow: hidden;\n}\n\n#testApp .bar-fill {\n  height: 100%;\n  width: 0%;\n  border-radius: 999px;\n}\n\n#testApp .recommendations {\n  margin-top: 26px;\n  padding: 22px;\n  border-radius: 22px;\n  background: #F8FAFC;\n  border: 1px solid #E8ECF3;\n}\n\n#testApp .recommendations h4 {\n  margin: 0 0 12px;\n  color: var(--azul);\n  font-size: 22px;\n  font-weight: 950;\n}\n\n#testApp .recommendations ul {\n  margin: 0;\n  padding-left: 20px;\n}\n\n#testApp .recommendations li {\n  margin-bottom: 9px;\n  color: #374151;\n}\n\n#testApp .lead-box {\n  margin-top: 26px;\n  padding: 24px;\n  border-radius: 24px;\n  background: linear-gradient(135deg, var(--azul), var(--lila));\n  color: white;\n}\n\n#testApp .lead-box h4 {\n  margin: 0 0 8px;\n  color: white;\n  font-size: 25px;\n  font-weight: 950;\n}\n\n#testApp .lead-box p {\n  margin: 0 0 18px;\n  color: rgba(255,255,255,0.9);\n  font-size: 16px;\n}\n\n#testApp #whatsappCta {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n  padding: 14px 20px;\n  border-radius: 15px;\n  background: var(--verde);\n  color: white;\n  text-decoration: none;\n  font-weight: 950;\n  box-shadow: 0 14px 28px rgba(37, 211, 102, 0.25);\n}\n\n#testApp #whatsappCta::before {\n  content: \"\ud83d\udcac\";\n}\n\n@media (max-width: 720px) {\n  #testApp {\n    margin: 24px auto;\n  }\n\n  #testApp .question {\n    grid-template-columns: 1fr;\n    gap: 10px;\n  }\n\n  #testApp .number {\n    width: 34px;\n    height: 34px;\n  }\n\n  #testApp .actions {\n    grid-template-columns: 1fr;\n  }\n\n  #testApp .result-grid {\n    grid-template-columns: 1fr;\n    text-align: center;\n  }\n\n  #testApp .score-circle {\n    margin: 0 auto;\n  }\n\n  #testApp .blocks {\n    grid-template-columns: 1fr;\n  }\n}\n<\/style>\n\n<section class=\"test-hero\">\n  <span class=\"badge\">Autodiagn\u00f3stico de negocio online<\/span>\n  <h2>Radiograf\u00eda real de tu negocio (en menos de 1 minuto)<\/h2>\n  <p class=\"subtitle\">Mira lo que funciona, lo que falla y d\u00f3nde se te escapan clientes. Responde estas 10 preguntas y obt\u00e9n una imagen clara de tu negocio.<\/p>\n  <div class=\"instructions\">\n    Punt\u00faa cada apartado del <strong>1 al 10<\/strong>. 1 significa \u201clo tengo abandonado\u201d. 10 significa \u201clo tengo trabajado, medido y funcionando\u201d. Sin hacerse trampas al solitario, que luego vienen los disgustos.\n  <\/div>\n<\/section>\n\n<section class=\"test-card\">\n  <div id=\"questions\"><\/div>\n  <div class=\"actions\">\n    <button class=\"primary-btn\" onclick=\"openLeadForm()\">Ver mi diagn\u00f3stico<\/button>\n    <button class=\"secondary-btn\" onclick=\"resetTest()\">Reiniciar test<\/button>\n  <\/div>\n<\/section>\n\n<!-- FORMULARIO LEAD -->\n<div id=\"leadForm\" style=\"display:none; margin-top:20px; padding:24px; border-radius:20px; background:#fff; box-shadow:0 20px 50px rgba(0,0,0,0.1);\">\n  <h3 style=\"margin-top:0; color:#153C8D;\">\u00bfD\u00f3nde te env\u00edo tu diagn\u00f3stico?<\/h3>\n  <p style=\"color:#6B7280;\">Te lo guardo y adem\u00e1s te explico c\u00f3mo mejorarlo. Sin spam.<\/p>\n  <input id=\"nameInput\" type=\"text\" placeholder=\"Tu nombre\" style=\"width:100%; padding:12px; margin-bottom:10px; border-radius:10px; border:1px solid #ddd;\" \/>\n  <input id=\"emailInput\" type=\"email\" placeholder=\"Tu email\" style=\"width:100%; padding:12px; margin-bottom:14px; border-radius:10px; border:1px solid #ddd;\" \/>\n  <label style=\"display:flex; gap:10px; align-items:flex-start; margin:0 0 16px; color:#374151; font-size:14px; line-height:1.4; cursor:pointer;\">\n    <input id=\"privacyInput\" type=\"checkbox\" style=\"margin-top:3px; width:18px; height:18px; accent-color:#6C63FF; flex:0 0 auto;\" \/>\n    <span>He le\u00eddo y acepto la <a href=\"https:\/\/icomuni.cat\/es\/politica-de-privacidad-y-aviso-legal\/\" target=\"_blank\" rel=\"noopener\" style=\"color:#153C8D; font-weight:800; text-decoration:underline;\">pol\u00edtica de privacidad<\/a>.<\/span>\n  <\/label>\n  <button class=\"primary-btn\" onclick=\"submitLead()\">Ver mi diagn\u00f3stico<\/button>\n  <div id=\"leadError\" style=\"display:none; margin-top:12px; padding:12px; border-radius:12px; background:#FEF2F2; color:#991B1B; font-weight:700;\"><\/div>\n<\/div>\n\n<section class=\"loading-result\" id=\"loadingResult\">\n  <div class=\"loader\"><\/div>\n  <strong>Analizando tu negocio&#8230;<\/strong>\n  <span>Estamos buscando fugas, grietas y alguna que otra alarma digital.<\/span>\n<\/section>\n\n<section class=\"result\" id=\"result\">\n  <div class=\"result-grid\">\n    <div class=\"score-circle\" id=\"scoreCircle\">\n      <span id=\"scoreNumber\">0<\/span>\n      <small>\/100 puntos<\/small>\n    <\/div>\n    <div>\n      <h3 id=\"resultTitle\"><\/h3>\n      <p id=\"resultText\"><\/p>\n      <div class=\"alert\" id=\"resultAlert\"><\/div>\n    <\/div>\n  <\/div>\n\n  \n\n  <div class=\"recommendations\">\n    <h4>Top 3 fugas de dinero detectadas<\/h4>\n    <ul id=\"recommendationsList\"><\/ul>\n  <\/div>\n\n  <div class=\"lead-box\">\n    <h4>\u00bfQuieres mejorar este resultado?<\/h4>\n    <p>Escr\u00edbeme por WhatsApp y revisamos qu\u00e9 cambiar primero para captar m\u00e1s clientes sin improvisar ni tirar dinero en acciones sueltas.<\/p>\n    <a id=\"whatsappCta\" href=\"https:\/\/wa.me\/34665072118?text=Hola%2C%20acabo%20de%20hacer%20el%20test%20y%20quiero%20mejorar%20mi%20negocio\" target=\"_blank\" rel=\"noopener\">Quiero mejorar mi negocio<\/a>\n  <\/div>\n<\/section>\n\n<script>\nconst questions = [\n  {id:'control', title:'Control e indicadores', text:'\u00bfSabes cu\u00e1ntos leads entran, de d\u00f3nde vienen, cu\u00e1nto te cuesta conseguirlos y qu\u00e9 acciones generan ventas?', block:'Control y KPIs'},\n  {id:'diferenciacion', title:'Diferenciaci\u00f3n estrat\u00e9gica', text:'\u00bfSe entiende en 5 segundos por qu\u00e9 deber\u00edan elegirte a ti y no a otro que hace \u201cm\u00e1s o menos lo mismo\u201d?', block:'Diferenciaci\u00f3n'},\n  {id:'oferta', title:'Oferta y propuesta de valor', text:'\u00bfTu oferta es concreta, deseable y f\u00e1cil de entender, o parece una lista de servicios sin alma?', block:'Oferta'},\n  {id:'captacion', title:'Captaci\u00f3n de clientes', text:'\u00bfTienes un sistema constante para atraer clientes o dependes de recomendaciones, suerte y alg\u00fan santo digital?', block:'Captaci\u00f3n'},\n  {id:'publicidad', title:'Publicidad y canales', text:'\u00bfEst\u00e1s usando canales como Google Ads, Meta Ads, SEO, email o redes con una estrategia clara y medible?', block:'Publicidad'},\n  {id:'embudo', title:'Embudo de conversi\u00f3n', text:'\u00bfTienes definido qu\u00e9 pasa desde que alguien te descubre hasta que pide informaci\u00f3n, compra y vuelve?', block:'Embudo'},\n  {id:'comunicacion', title:'Comunicaci\u00f3n y storytelling', text:'\u00bfTu web y tus redes cuentan historias, muestran personas y generan confianza, o solo venden y venden como un cat\u00e1logo con ansiedad?', block:'Comunicaci\u00f3n'},\n  {id:'conversion', title:'Conversi\u00f3n web', text:'\u00bfTu web tiene llamadas a la acci\u00f3n claras, contacto f\u00e1cil, velocidad correcta y una experiencia pensada para convertir?', block:'Conversi\u00f3n'},\n  {id:'seguridad', title:'Seguridad y riesgo web', text:'\u00bfTu web est\u00e1 actualizada, tiene SSL, copias de seguridad, mantenimiento y protecci\u00f3n b\u00e1sica frente a problemas?', block:'Seguridad'},\n  {id:'ejecucion', title:'Ejecuci\u00f3n y mejora continua', text:'\u00bfPruebas, mides y corriges cada mes, o haces acciones sueltas esperando que el universo tenga un buen d\u00eda?', block:'Ejecuci\u00f3n'}\n];\n\nconst recommendations = {\n  control: 'Instala un cuadro b\u00e1sico de KPIs: leads, origen, coste, conversi\u00f3n y facturaci\u00f3n generada.',\n  diferenciacion: 'Reescribe tu propuesta de valor hasta que cualquier persona entienda por qu\u00e9 elegirte en 5 segundos.',\n  oferta: 'Crea una oferta de entrada concreta, f\u00e1cil de comprar y orientada a resolver un problema espec\u00edfico.',\n  captacion: 'Define un sistema semanal de captaci\u00f3n: contenido, SEO, campa\u00f1as, colaboraciones o prospecci\u00f3n.',\n  publicidad: 'Revisa si tus campa\u00f1as tienen objetivo, mensaje, medici\u00f3n y seguimiento. Clics sin clientes es tirar confeti caro.',\n  embudo: 'Dibuja el recorrido completo del cliente: descubre, conf\u00eda, contacta, compra y repite.',\n  comunicacion: 'A\u00f1ade historias, casos reales, caras del equipo y contenido que aporte valor antes de pedir la venta.',\n  conversion: 'Simplifica la web: CTA visible, WhatsApp o formulario corto, textos claros y p\u00e1ginas r\u00e1pidas.',\n  seguridad: 'Actualiza CMS, plugins, tema, PHP, SSL y programa copias de seguridad verificadas.',\n  ejecucion: 'Crea una rutina mensual: probar una mejora, medir resultado y decidir el siguiente cambio.'\n};\n\nfunction renderQuestions(){\n  const el = document.querySelector('#testApp #questions');\n  el.innerHTML = questions.map((q, index)=>`\n    <div class=\"question\">\n      <div class=\"number\">${index + 1}<\/div>\n      <div>\n        <h3 class=\"question-title\">${q.title}<\/h3>\n        <p class=\"question-text\">${q.text}<\/p>\n        <div class=\"range-row\">\n          <span class=\"range-min\">1<\/span>\n          <input type=\"range\" min=\"1\" max=\"10\" value=\"5\" id=\"${q.id}\" oninput=\"updateValue('${q.id}')\">\n          <span class=\"value\" id=\"${q.id}-value\">5<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n  `).join('');\n\n  questions.forEach(q => updateValue(q.id));\n}\n\nfunction updateValue(id){\n  const input = document.querySelector('#testApp #' + id);\n  const value = document.querySelector('#testApp #' + id + '-value');\n  if (!input || !value) return;\n  const percent = ((input.value - input.min) \/ (input.max - input.min)) * 100;\n  input.style.background = `linear-gradient(90deg, var(--lila) 0%, var(--lila) ${percent}%, #E5E7EB ${percent}%, #E5E7EB 100%)`;\n  value.textContent = input.value;\n}\n\nfunction openLeadForm(){\n  document.querySelector('#testApp #leadForm').style.display='block';\n  document.querySelector('#testApp #leadForm').scrollIntoView({behavior:'smooth'});\n}\n\nfunction submitLead(){\n  const name = document.querySelector('#testApp #nameInput').value.trim();\n  const email = document.querySelector('#testApp #emailInput').value.trim();\n  const privacyAccepted = document.querySelector('#testApp #privacyInput').checked;\n\n  const errorBox = document.querySelector('#testApp #leadError');\n  errorBox.style.display = 'none';\n  errorBox.textContent = '';\n\n  if(!name || !email){\n    errorBox.textContent = 'Por favor, completa nombre y email';\n    errorBox.style.display = 'block';\n    return;\n  }\n\n  if(!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)){\n    errorBox.textContent = 'Por favor, introduce un email v\u00e1lido';\n    errorBox.style.display = 'block';\n    return;\n  }\n\n  if(!privacyAccepted){\n    errorBox.textContent = 'Debes aceptar la pol\u00edtica de privacidad para ver el diagn\u00f3stico';\n    errorBox.style.display = 'block';\n    return;\n  }\n\n  let total = 0;\n  const scores = questions.map(q => {\n    const val = Number(document.querySelector('#testApp #' + q.id).value);\n    total += val;\n    return {...q, score: val};\n  });\n\n  let diagnosis = '';\n  if (total <= 40) {\n    diagnosis = 'Tu negocio est\u00e1 que se muere';\n  } else if (total <= 70) {\n    diagnosis = 'Tu negocio est\u00e1 regulinchis (pero se aguanta)';\n  } else {\n    diagnosis = 'Tu negocio va como una moto';\n  }\n\n  const weakAreas = getWeakestAreas(scores).map(item => `${item.block} (${item.score}\/10)`).join(', ');\n  const button = document.querySelector('#testApp #leadForm button');\n  const originalText = button.textContent;\n\n  button.textContent = 'Guardando diagn\u00f3stico...';\n  button.disabled = true;\n\n  fetch('\/wp-json\/icomuni\/v1\/mailrelay-lead', {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application\/json'\n    },\n    body: JSON.stringify({\n      name: name,\n      email: email,\n      score: total,\n      diagnosis: diagnosis,\n      weak_areas: weakAreas,\n      privacy_accepted: true,\n      privacy_url: 'https:\/\/icomuni.cat\/politica-de-privacitat-i-avis-legal\/'\n    })\n  })\n  .then(async response => {\n    const data = await response.json().catch(() => ({}));\n    if (!response.ok || data.success === false) {\n      throw new Error(data.message || 'No se ha podido guardar el lead. C\u00f3digo: ' + response.status);\n    }\n    return data;\n  })\n  .then(data => {\n    button.textContent = originalText;\n    button.disabled = false;\n    document.querySelector('#testApp #leadForm').style.display = 'none';\n    saveDiagnosticAndRedirect(total, diagnosis, weakAreas, scores);\n  })\n  .catch(error => {\n    console.error('Error al guardar el lead:', error);\n    button.textContent = originalText;\n    button.disabled = false;\n    errorBox.textContent = 'No se ha podido guardar el lead: ' + error.message;\n    errorBox.style.display = 'block';\n  });\n}\n\nfunction calculateResult(){\n  let total = 0;\n  const scores = questions.map(q=>{\n    const val = Number(document.querySelector('#testApp #' + q.id).value);\n    total += val;\n    return {...q, score: val};\n  });\n\n  const loading = document.querySelector('#testApp #loadingResult');\n  const result = document.querySelector('#testApp #result');\n\n  result.style.display = 'none';\n  loading.style.display = 'block';\n  loading.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\n  setTimeout(() => {\n    const title = document.querySelector('#testApp #resultTitle');\n    const text = document.querySelector('#testApp #resultText');\n    const alert = document.querySelector('#testApp #resultAlert');\n    const scoreNumber = document.querySelector('#testApp #scoreNumber');\n    const scoreCircle = document.querySelector('#testApp #scoreCircle');\n\n    alert.className = 'alert';\n    scoreNumber.textContent = total;\n    scoreCircle.style.background = `conic-gradient(${getScoreColor(total)} ${total * 3.6}deg, #E5E7EB ${total * 3.6}deg)`;\n\n    if(total <= 40){\n      title.textContent = 'Tu negocio est\u00e1 que se muere';\n      text.textContent = 'Ahora mismo tienes fugas serias: captaci\u00f3n irregular, mensaje d\u00e9bil y poca conversi\u00f3n. Est\u00e1s perdiendo clientes cada semana.';\n      alert.textContent = 'Prioridad: arreglar mensaje, captaci\u00f3n y conversi\u00f3n antes de invertir m\u00e1s dinero.';\n      alert.classList.add('danger');\n    } else if(total <= 70){\n      title.textContent = 'Tu negocio est\u00e1 regulinchis (pero se aguanta)';\n      text.textContent = 'Funcionas, pero sin sistema claro. Hay cosas que tiran, otras que frenan. Est\u00e1s dejando dinero encima de la mesa.';\n      alert.textContent = 'Prioridad: ordenar embudo, mejorar oferta y medir qu\u00e9 acciones traen clientes.';\n      alert.classList.add('warning');\n    } else {\n      title.textContent = 'Tu negocio va como una moto';\n      text.textContent = 'Tienes base s\u00f3lida y estructura. Ahora toca optimizar y escalar sin romper lo que ya funciona.';\n      alert.textContent = 'Prioridad: optimizar campa\u00f1as, conversi\u00f3n y recurrencia.';\n      alert.classList.add('success');\n    }\n\n    renderRecommendations(scores);\n    updateWhatsAppCta(total, title.textContent, scores);\n\n    loading.style.display = 'none';\n    result.style.display = 'block';\n    result.scrollIntoView({ behavior: 'smooth', block: 'start' });\n  }, 1400);\n}\n\nfunction getScoreColor(total){\n  if(total <= 40) return '#EF4444';\n  if(total <= 70) return '#F59E0B';\n  return '#10B981';\n}\n\n\n\nfunction getWeakestAreas(scores){\n  return [...scores].sort((a,b)=>a.score-b.score).slice(0,3);\n}\n\nfunction renderRecommendations(scores){\n  const weakest = getWeakestAreas(scores);\n  const list = document.querySelector('#testApp #recommendationsList');\n  list.innerHTML = weakest.map(item=>`<li><strong>${item.title}:<\/strong> ${recommendations[item.id]}<\/li>`).join('');\n}\n\nfunction updateWhatsAppCta(total, diagnosis, scores){\n  const weakest = getWeakestAreas(scores).map(item=>`${item.block} (${item.score}\/10)`).join(', ');\n  const msg = `Hola, acabo de hacer el test de la radiograf\u00eda de mi negocio.\\n\\nMi resultado ha sido: ${total}\/100.\\nDiagn\u00f3stico: ${diagnosis}.\\n\u00c1reas m\u00e1s d\u00e9biles: ${weakest}.\\n\\nQuiero mejorar mi negocio.`;\n  const cta = document.querySelector('#testApp #whatsappCta');\n  cta.href = `https:\/\/wa.me\/34665072118?text=${encodeURIComponent(msg)}`;\n}\n\nfunction resetTest(){\n  questions.forEach(q=>{\n    const input = document.querySelector('#testApp #' + q.id);\n    input.value = 5;\n    updateValue(q.id);\n  });\n  document.querySelector('#testApp #result').style.display = 'none';\n  document.querySelector('#testApp #leadForm').style.display = 'none';\n  document.querySelector('#testApp #loadingResult').style.display = 'none';\n  sessionStorage.removeItem('icomuniDiagnosticResult');\n}\n\nfunction saveDiagnosticAndRedirect(total, diagnosis, weakAreas, scores){\n  const diagnosticData = {\n    total: total,\n    diagnosis: diagnosis,\n    weakAreas: weakAreas,\n    scores: scores.map(item => ({ id: item.id, score: item.score })),\n    createdAt: new Date().toISOString()\n  };\n\n  sessionStorage.setItem('icomuniDiagnosticResult', JSON.stringify(diagnosticData));\n  window.location.href = '\/es\/diagnostico-enviado\/';\n}\n\nfunction restoreDiagnosticFromStorage(){\n  const urlParams = new URLSearchParams(window.location.search);\n  const shouldShowResult = urlParams.get('ver_resultado') === '1';\n  const storedData = sessionStorage.getItem('icomuniDiagnosticResult');\n\n  if(!shouldShowResult || !storedData) return;\n\n  try {\n    const data = JSON.parse(storedData);\n\n    if(data.scores && Array.isArray(data.scores)){\n      data.scores.forEach(item => {\n        const input = document.querySelector('#testApp #' + item.id);\n        if(input){\n          input.value = item.score;\n          updateValue(item.id);\n        }\n      });\n    }\n\n    calculateResult();\n  } catch(error){\n    console.error('No se pudo restaurar el diagn\u00f3stico:', error);\n  }\n}\n\nrenderQuestions();\nrestoreDiagnosticFromStorage();\n<\/script>\n\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","inline_featured_image":false,"footnotes":""},"class_list":["post-7375","page","type-page","status-publish","no-featured-image-padding"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/icomuni.cat\/es\/wp-json\/wp\/v2\/pages\/7375","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/icomuni.cat\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/icomuni.cat\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/icomuni.cat\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/icomuni.cat\/es\/wp-json\/wp\/v2\/comments?post=7375"}],"version-history":[{"count":19,"href":"https:\/\/icomuni.cat\/es\/wp-json\/wp\/v2\/pages\/7375\/revisions"}],"predecessor-version":[{"id":7407,"href":"https:\/\/icomuni.cat\/es\/wp-json\/wp\/v2\/pages\/7375\/revisions\/7407"}],"wp:attachment":[{"href":"https:\/\/icomuni.cat\/es\/wp-json\/wp\/v2\/media?parent=7375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}