{"id":17428,"date":"2026-10-09T18:54:13","date_gmt":"2026-10-10T00:54:13","guid":{"rendered":"https:\/\/velaproducciones.com\/?page_id=17428"},"modified":"2026-10-16T14:17:29","modified_gmt":"2026-10-16T20:17:29","slug":"arquitectura-del-emprendedor","status":"publish","type":"page","link":"https:\/\/velaproducciones.com\/en\/arquitectura-del-emprendedor\/","title":{"rendered":"Entrepreneur Blueprint"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"17428\" class=\"elementor elementor-17428 elementor-bc-flex-widget\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f2f80bba elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f2f80bba\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-16f138d1\" data-id=\"16f138d1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-43ceb1ee elementor-widget elementor-widget-html\" data-id=\"43ceb1ee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- Arquitectura del Emprendedor \u00b7 Vela Producciones \u00b7 v2 \u00b7 generado por generar-snippet.py (no editar a mano: editar el .v2.html y volver a generar) -->\n<!-- Tipograf\u00eda Inter, la misma del Generador de Buyer Persona. -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap\" rel=\"stylesheet\">\n<style>\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   ARQUITECTURA DEL EMPRENDEDOR \u00b7 Vela Producciones\n   Mismo lenguaje visual que el Generador de Buyer Persona:\n   Inter \u00b7 fondo #f9f8ff \u00b7 tarjetas blancas con sombra profunda \u00b7 degradados\n   \u00edndigo (#6254e7 \u2192 #9289f1) y esmeralda (#10b981 \u2192 #34d399) \u00b7 notas post-it.\n   Sin Tailwind ni librer\u00edas: todo el CSS va aqu\u00ed, as\u00ed la herramienta no depende\n   de ninguna CDN para verse bien.\n   \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n:root{\n  --indigo:#6254e7; --indigo-claro:#9289f1; --indigo-oscuro:#4a3ccb; --indigo-suave:#f4f2ff;\n  --esmeralda:#10b981; --esmeralda-claro:#34d399;\n  --ambar:#f59e0b; --rojo:#e11d48;\n  --slate-900:#0f172a; --slate-700:#334155; --slate-500:#696687; --slate-300:#cbd5e1; --slate-200:#e2ddf9;\n  --fondo:#f9f8ff; --blanco:#fff;\n  --sombra:0 20px 25px -5px rgb(0 0 0 \/ .1), 0 8px 10px -6px rgb(0 0 0 \/ .1);\n  --sombra-suave:0 4px 14px 0 rgb(0 0 0 \/ .1);\n}\n*{box-sizing:border-box}\n.aemp{\n  margin:0; padding:0; font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;\n  background:var(--fondo); color:var(--slate-700); line-height:1.6; -webkit-font-smoothing:antialiased;\n}\n\/* El tema del sitio (ewebot) impone su tipograf\u00eda a los t\u00edtulos con reglas m\u00e1s espec\u00edficas\n   (`.elementor-widget-heading h1.elementor-heading-title {font-family:Nunito}`), as\u00ed que aqu\u00ed\n   Inter va con !important: la herramienta tiene que verse igual que el Generador de Buyer Persona\n   aunque el tema cambie sus fuentes. Es el \u00fanico !important del archivo y est\u00e1 acotado a .aemp. *\/\n.aemp, .aemp *{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif !important}\n.aemp-contenedor{max-width:1100px; margin:0 auto; padding:2rem 1rem 4rem}\n.aemp h1,.aemp h2,.aemp h3,.aemp h4{color:var(--slate-900); line-height:1.25; margin:0 0 .75rem}\n.aemp h1{font-size:clamp(1.75rem,4vw,2.5rem); font-weight:800; letter-spacing:-.02em}\n.aemp h2{font-size:clamp(1.35rem,3vw,1.75rem); font-weight:800; letter-spacing:-.01em}\n.aemp h3{font-size:1.125rem; font-weight:700}\n.aemp h4{font-size:1rem; font-weight:700}\n.aemp p{margin:0 0 1rem}\n.aemp a{color:var(--indigo-oscuro)}\n.aemp .gris{color:var(--slate-500)}\n.aemp .chico{font-size:.875rem}\n.aemp .micro{font-size:.8rem}\n.aemp .oculto{display:none !important}\n\n\/* \u2500\u2500 tarjetas \u2500\u2500 *\/\n.blanco{background:var(--blanco); border-radius:1rem; padding:2rem; box-shadow:var(--sombra); margin-bottom:1.5rem}\n.blanco.ajustado{padding:1.25rem}\n.post-it{box-shadow:10px 10px 25px rgba(0,0,0,.1); transition:transform .3s ease, box-shadow .3s ease;\n  padding:1.5rem; border-radius:.75rem; margin-bottom:1.5rem}\n.post-it:hover{transform:rotate(0deg) translateY(-3px) !important; box-shadow:14px 14px 30px rgba(0,0,0,.14)}\n.post-it-amarillo{background:#fef9c3; transform:rotate(-1.2deg)}\n.post-it-rosa{background:#fce7f3; transform:rotate(1deg)}\n.post-it-azul{background:#dbeafe; transform:rotate(-.8deg)}\n.post-it-verde{background:#dcfce7; transform:rotate(1.1deg)}\n.post-it-morado{background:#e2ddf9; transform:rotate(-.5deg)}\n\n\/* \u2500\u2500 encabezado \u2500\u2500 *\/\n.cabecera{display:flex; flex-wrap:wrap; gap:1.5rem; align-items:center; justify-content:space-between;\n  border-bottom:1px solid var(--slate-200); padding-bottom:1.5rem; margin-bottom:1.5rem}\n.cabecera .titulos{flex:1 1 320px}\n.etiqueta{display:inline-block; font-size:.75rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase;\n  color:var(--indigo-oscuro); background:var(--indigo-suave); padding:.35rem .75rem; border-radius:999px; margin-bottom:.75rem}\n.marcador{text-align:center; min-width:190px}\n.marcador .numero{font-size:2.75rem; font-weight:900; color:var(--slate-900); line-height:1}\n.marcador .de{font-size:.9rem; color:var(--slate-500); font-weight:600}\n.barra{height:.75rem; background:var(--slate-200); border-radius:999px; overflow:hidden; margin:.75rem 0 .5rem}\n.barra > span{display:block; height:100%; width:0; border-radius:999px; transition:width .4s ease, background-color .3s}\n.barra-indigo > span{background:linear-gradient(to right,var(--indigo),var(--indigo-claro))}\n.barra-verde > span{background:linear-gradient(to right,var(--esmeralda),var(--esmeralda-claro))}\n.barra-ambar > span{background:linear-gradient(to right,#f59e0b,#fbbf24)}\n.barra-rojo > span{background:linear-gradient(to right,#e11d48,#fb7185)}\n.pastilla{display:inline-block; font-size:.75rem; font-weight:700; padding:.25rem .75rem; border-radius:999px; border:1px solid}\n.pastilla-verde{background:#d1fae5; color:#065f46; border-color:#6ee7b7}\n.pastilla-ambar{background:#fef3c7; color:#92400e; border-color:#fcd34d}\n.pastilla-rojo{background:#ffe4e6; color:#9f1239; border-color:#fda4af}\n.pastilla-indigo{background:var(--indigo-suave); color:var(--indigo-oscuro); border-color:#e2ddf9}\n.pastilla-gris{background:#f1f5f9; color:var(--slate-500); border-color:var(--slate-300)}\n\n\/* \u2500\u2500 pesta\u00f1as \u2500\u2500 *\/\n.pestanas{display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:1.5rem}\n.pestana{background:var(--blanco); border:1px solid var(--slate-200); color:var(--slate-700); font-weight:700;\n  font-size:.9rem; padding:.7rem 1.1rem; border-radius:.75rem; cursor:pointer; transition:all .2s; box-shadow:var(--sombra-suave)}\n.pestana:hover{border-color:#e2ddf9; transform:translateY(-2px)}\n.pestana.activa{background-image:linear-gradient(to right,var(--indigo),var(--indigo-claro)); color:#fff; border-color:transparent}\n.pestana .num{display:inline-block; background:rgba(255,255,255,.25); border-radius:.4rem; padding:0 .4rem; margin-right:.4rem; font-weight:800}\n.pestana:not(.activa) .num{background:var(--indigo-suave); color:var(--indigo-oscuro)}\n\n\/* \u2500\u2500 formulario \u2500\u2500 *\/\n.form-label{font-weight:600; color:var(--slate-700); margin-bottom:.75rem; display:block}\n.form-input,.form-select,.form-textarea{width:100%; border:1px solid #d1d5db; border-radius:.75rem; padding:.75rem 1rem;\n  color:var(--slate-700); transition:all .2s ease-in-out; background-color:#f9fafb; font-family:inherit; font-size:1rem}\n.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none; border-color:#4f46e5; box-shadow:0 0 0 3px rgba(79,70,229,.2); background:#fff}\n\n\/* \u2500\u2500 preguntas \u2500\u2500 *\/\n.pregunta{border:1px solid var(--slate-200); border-radius:1rem; padding:1.5rem; margin-bottom:1.5rem; background:var(--blanco);\n  transition:border-color .2s, box-shadow .2s}\n.pregunta.respondida{border-color:#e2ddf9; box-shadow:0 8px 20px -12px rgba(79,70,229,.45)}\n.pregunta-cabecera{display:flex; flex-wrap:wrap; gap:.75rem; align-items:center; justify-content:space-between; margin-bottom:.75rem}\n.pregunta-numero{display:flex; align-items:center; justify-content:center; width:2.25rem; height:2.25rem; border-radius:.75rem;\n  background-image:linear-gradient(to right,var(--indigo),var(--indigo-claro)); color:#fff; font-weight:800; flex:0 0 auto}\n.pregunta-titulo{display:flex; gap:.85rem; align-items:flex-start; flex:1 1 260px}\n.pregunta-titulo h3{margin:0}\n.dilema{font-weight:600; color:var(--slate-900); margin:.25rem 0 1rem}\n.realidad{background:#fff7ed; border-left:4px solid #fb923c; border-radius:.5rem; padding:.85rem 1rem; margin-bottom:1.25rem; font-size:.9rem; color:#7c2d12}\n.realidad strong{color:#9a3412}\n.opciones{display:grid; gap:.6rem}\n.opcion{display:flex; gap:.75rem; align-items:flex-start; border:2px solid var(--slate-200); border-radius:.75rem;\n  padding:.85rem 1rem; cursor:pointer; transition:all .2s ease-in-out; background:var(--blanco); text-align:left; font:inherit; color:inherit; width:100%}\n.opcion:hover{border-color:#e2ddf9; transform:translateY(-2px)}\n.opcion .nivel{flex:0 0 auto; width:1.75rem; height:1.75rem; border-radius:.5rem; background:#f1f5f9; color:var(--slate-500);\n  display:flex; align-items:center; justify-content:center; font-weight:800; font-size:.85rem}\n.opcion .texto{font-size:.925rem}\n.opcion[aria-pressed=\"true\"]{background:var(--indigo-suave); border-color:var(--indigo); color:var(--indigo-oscuro); font-weight:600}\n.opcion[aria-pressed=\"true\"] .nivel{background:var(--indigo); color:#fff}\n.opcion:focus-visible{outline:3px solid rgba(99,102,241,.4); outline-offset:2px}\n.consejo{background:var(--indigo-suave); border-radius:.75rem; padding:1rem 1.25rem; margin-top:1rem; font-size:.9rem}\n.consejo strong{color:var(--indigo-oscuro)}\n.primer-paso{background:#ecfdf5; border-left:4px solid var(--esmeralda); border-radius:.5rem; padding:.75rem 1rem; margin-top:.75rem; font-size:.9rem; color:#065f46}\n\n\/* \u2500\u2500 botones \u2500\u2500 *\/\n.btn{font-weight:700; padding:1rem 2rem; border-radius:.75rem; transition:all .2s; border:none; cursor:pointer;\n  box-shadow:var(--sombra-suave); display:inline-flex; align-items:center; justify-content:center; gap:.6rem; font-family:inherit; font-size:1rem}\n.btn:disabled{opacity:.7; cursor:not-allowed}\n.btn-primario{background-image:linear-gradient(to right,var(--indigo),var(--indigo-claro)); color:#fff}\n.btn-primario:hover:not(:disabled){transform:translateY(-2px); box-shadow:0 10px 20px -5px rgba(99,102,241,.4)}\n.btn-secundario{background-image:linear-gradient(to right,var(--esmeralda),var(--esmeralda-claro)); color:#fff}\n.btn-secundario:hover:not(:disabled){transform:translateY(-2px); box-shadow:0 10px 20px -5px rgba(16,185,129,.4)}\n.btn-neutro{background:var(--blanco); color:var(--slate-700); border:1px solid var(--slate-200)}\n.btn-neutro:hover:not(:disabled){border-color:#e2ddf9; color:var(--indigo-oscuro); transform:translateY(-2px)}\n.btn-bloque{width:100%}\n.acciones{display:flex; flex-wrap:wrap; gap:.75rem; margin-top:1.5rem}\n.acciones .btn{flex:1 1 200px}\n.spinner{border:3px solid rgba(255,255,255,.3); width:20px; height:20px; border-radius:50%; border-left-color:#fff; animation:girar 1s linear infinite}\n@keyframes girar{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}\n\n\/* \u2500\u2500 resultados \u2500\u2500 *\/\n.rejilla{display:grid; gap:1.25rem}\n@media(min-width:760px){.rejilla-2{grid-template-columns:1fr 1fr}.rejilla-4{grid-template-columns:repeat(4,1fr)}}\n.dimension{border:1px solid var(--slate-200); border-radius:.85rem; padding:1rem; background:var(--blanco)}\n.dimension .encabezado{display:flex; justify-content:space-between; align-items:baseline; gap:.5rem; margin-bottom:.35rem}\n.dimension .nombre{font-weight:700; font-size:.9rem; color:var(--slate-900)}\n.dimension .valor{font-weight:800; color:var(--slate-900)}\n.fortaleza,.alerta{border-radius:.75rem; padding:.9rem 1rem; font-size:.9rem; margin-bottom:.6rem}\n.fortaleza{background:#ecfdf5; border-left:4px solid var(--esmeralda); color:#065f46}\n.alerta{background:#fff1f2; border-left:4px solid var(--rojo); color:#9f1239}\n.prioridad{display:flex; gap:.85rem; align-items:flex-start; padding:.85rem 0; border-bottom:1px dashed var(--slate-200)}\n.prioridad:last-child{border-bottom:none}\n.prioridad .orden{flex:0 0 auto; width:1.9rem; height:1.9rem; border-radius:.6rem; background-image:linear-gradient(to right,var(--indigo),var(--indigo-claro));\n  color:#fff; font-weight:800; display:flex; align-items:center; justify-content:center; font-size:.85rem}\n.lista{list-style:none; padding:0; margin:0}\n.lista li{position:relative; padding-left:1.6rem; margin-bottom:.6rem}\n.lista li:before{content:'\u25b8'; position:absolute; left:.35rem; color:var(--indigo); font-weight:800}\n.pasos{list-style:none; padding:0; margin:0}\n.pasos li{display:flex; gap:.85rem; margin-bottom:.85rem}\n.pasos .cuando{flex:0 0 auto; font-weight:800; color:var(--indigo-oscuro); background:var(--indigo-suave); border-radius:.5rem; padding:.15rem .6rem; font-size:.8rem; height:fit-content}\n.tarjeta-modulo{border:1px solid var(--slate-200); border-radius:1rem; padding:1.5rem; background:var(--blanco); margin-bottom:1.25rem}\n.numero-modulo{display:inline-flex; align-items:center; justify-content:center; width:2.5rem; height:2.5rem; border-radius:.85rem;\n  background-image:linear-gradient(to right,var(--esmeralda),var(--esmeralda-claro)); color:#fff; font-weight:900; font-size:1.1rem; margin-bottom:.75rem}\n.tarea{display:flex; gap:.75rem; align-items:flex-start; padding:.6rem .75rem; border:1px solid var(--slate-200); border-radius:.6rem; margin-bottom:.5rem; cursor:pointer; transition:all .2s}\n.tarea:hover{border-color:#a7f3d0; background:#f0fdf4}\n.tarea input{margin-top:.3rem; accent-color:var(--esmeralda); width:1.1rem; height:1.1rem}\n.tarea.hecha{opacity:.65; text-decoration:line-through}\n.kpi{display:flex; justify-content:space-between; gap:1rem; padding:.6rem 0; border-bottom:1px dashed var(--slate-200); font-size:.9rem}\n.kpi:last-child{border-bottom:none}\n.nota{font-size:.85rem; color:var(--slate-500); background:#f9f8ff; border:1px dashed var(--slate-300); border-radius:.75rem; padding:.85rem 1rem}\n.aviso{background:#fffbeb; border-left:4px solid #f59e0b; border-radius:.5rem; padding:.85rem 1rem; font-size:.9rem; color:#78350f; margin-bottom:1rem}\n.aviso.ok{background:#ecfdf5; border-left-color:var(--esmeralda); color:#065f46}\n\n\/* \u2500\u2500 acciones dentro de la fila de pesta\u00f1as (0.1 y 0.2) \u2500\u2500 *\/\n.pestanas{gap:.45rem; align-items:stretch}\n.pestanas .pestana{padding:.6rem .8rem; font-size:.86rem; white-space:nowrap}\n.pestana.accion-pestana{border-style:dashed; border-color:var(--slate-200); color:var(--slate-700); background:#fff}\n.pestana.accion-pestana:hover{border-color:#e2ddf9; color:var(--indigo-oscuro); background:var(--indigo-suave)}\n@media (max-width:900px){\n  .pestanas .pestana{padding:.55rem .7rem; font-size:.82rem}\n  .pestanas .pestana .num{margin-right:.3rem}\n}\n@media (max-width:640px){\n  .pestanas{display:grid; grid-template-columns:1fr 1fr}\n  .pestanas .pestana{white-space:normal; text-align:left}\n}\n\n\/* \u2500\u2500 aviso flotante (toast) \u2500\u2500 *\/\n.brindis{position:fixed; left:50%; bottom:1.5rem; transform:translateX(-50%) translateY(150%);\n  background:var(--slate-900); color:#fff; padding:.85rem 1.4rem; border-radius:.75rem; font-weight:600; font-size:.9rem;\n  box-shadow:0 12px 30px rgba(0,0,0,.35); transition:transform .35s ease; z-index:9999; max-width:90vw}\n.brindis.visible{transform:translateX(-50%) translateY(0)}\n\n\/* \u2500\u2500 impresi\u00f3n \/ PDF \u2500\u2500 *\/\n@media print{\n  .aemp{background:#fff}\n  .pestanas,.acciones,.no-imprimir{display:none !important}\n  .blanco,.post-it,.pregunta,.tarjeta-modulo{box-shadow:none !important; border:1px solid #e2ddf9; transform:none !important; page-break-inside:avoid}\n  .aemp-contenedor{max-width:100%; padding:0}\n  a[href]:after{content:''}\n}\n@media (prefers-reduced-motion:reduce){*{animation:none !important; transition:none !important}}\n\/* VELA-ANTIDESBORDE-INICIO *\/\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   ANTI-DESBORDE \u2014 texto que no cabe dentro de su cuadro\n   \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   POR QU\u00c9 EXISTE (medido el 2026-10-10, reportado por Carla): en la ficha del Buyer\n   Persona las etiquetas del perfil llevan `w-24` (ancho fijo de 96 px) y textos como\n   \u00abCanales de Contacto Preferidos:\u00bb miden m\u00e1s del doble: se sal\u00edan del cuadro y se\n   montaban encima del valor. En m\u00f3vil, adem\u00e1s, la lista no pod\u00eda partirse en dos\n   l\u00edneas porque el <li> era `flex` sin `wrap`.\n\n   Las cuatro reglas que resuelven el 90% de estos casos:\n     1. `min-width: 0` en los hijos de flex y grid: sin esto, un hijo nunca se encoge\n        por debajo del tama\u00f1o de su contenido (el desborde cl\u00e1sico de flexbox).\n     2. `flex-wrap: wrap` para que el valor baje a la l\u00ednea siguiente.\n     3. `overflow-wrap: anywhere` para palabras largu\u00edsimas (correos, URLs, nombres).\n     4. Anchos fijos fuera: `width: auto` con `min-width`, en lugar de un ancho cerrado.\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n\/* 1 \u00b7 los hijos de flex y grid pueden encogerse *\/\n.rejilla > *, .fila-campos > *, .grid > *, .flex > * { min-width: 0; }\n.rejilla, .fila-campos { grid-auto-columns: minmax(0, 1fr); }\n\n\/* 2 \u00b7 el texto largo se parte en vez de salirse *\/\n.aemp, .aemp, .aemp p, .aemp p, .aemp li, .aemp li, .aemp td, .aemp td,\n.aemp .dato, .aemp .dato, .aemp .titulo, .aemp .titulo {\n  overflow-wrap: anywhere;\n  word-break: normal;\n}\n\n\/* 3 \u00b7 etiquetas y valores que se acomodan solos (fichas de datos) *\/\n.pareja { display: flex; flex-wrap: wrap; align-items: flex-start; gap: .15rem .45rem; }\n.pareja .rotulo { flex: 0 1 auto; min-width: 5.5rem; font-weight: 700; }\n.pareja .valor { flex: 1 1 8rem; min-width: 0; }\n\n\/* 4 \u00b7 t\u00edtulos con espacio para las letras que bajan (g, j, p, y) *\/\n.aemp h1, .aemp h1, .aemp h2, .aemp h2, .aemp h3, .aemp h3 { line-height: 1.25; padding-bottom: .1em; }\n\n\/* 5 \u00b7 pastillas y botones: nunca cortan su texto *\/\n.pastilla, .btn, .pestana { overflow-wrap: anywhere; }\n.btn { white-space: normal; }\n\n\/* 6 \u00b7 tablas anchas: se desplazan en horizontal, no se salen de la pantalla *\/\n.tabla-contenedor { overflow-x: auto; -webkit-overflow-scrolling: touch; }\n\n\/* 7 \u00b7 en pantallas peque\u00f1as, menos relleno y todo a una columna *\/\n@media (max-width: 640px) {\n  .blanco { padding: 1.25rem; }\n  .post-it { padding: 1.15rem; }\n  .acciones .btn, .acciones-resultado .btn { flex: 1 1 100%; }\n  .metric .dato, .metrica .dato { font-size: 1.35rem; }\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   8 \u00b7 BOTONES: el tema del sitio les pone altura fija\n   \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   MEDIDO el 2026-10-10 (la causa del \u00abtexto cortado por la mitad\u00bb que report\u00f3 Carla):\n   el tema ewebot trae en su hoja de estilos\n\n       button, input[type=\"submit\"] { height: 50px; }\n\n   Con eso, cada bot\u00f3n de nuestras herramientas quedaba clavado en 50 px de alto.\n   Las opciones del test \u2014que llevan una frase entera\u2014 necesitaban entre 85 y 132 px,\n   as\u00ed que se ve\u00edan cortadas a la mitad. Lo mismo val\u00eda para cualquier bot\u00f3n con dos\n   l\u00edneas de texto.\n\n   Estas reglas devuelven la altura autom\u00e1tica a TODO lo que sea nuestro, sin tocar el\n   tema ni los botones del resto del sitio.\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.aemp button, .aemp .btn, .aemp .opcion, .aemp .pestana, .aemp .tarea,\n.aemp button, .aemp .btn, .aemp .opcion, .aemp .pestana, .aemp .tarea {\n  height: auto !important;\n  min-height: 0;\n  max-height: none;\n  overflow: visible;\n}\n\/* El tema tambi\u00e9n pone los botones en MAY\u00daSCULAS: aqu\u00ed manda la tipograf\u00eda de la\n   herramienta, que es la misma del Generador de Buyer Persona. *\/\n.aemp button, .aemp .btn, .aemp .opcion, .aemp .pestana,\n.aemp button, .aemp .btn, .aemp .opcion, .aemp .pestana { text-transform: none; }\n\/* Y los botones no parten su texto en dos l\u00edneas raras: se acomodan y crecen. *\/\n.aemp .btn, .aemp .btn { white-space: normal; }\n\/* VELA-ANTIDESBORDE-FIN *\/\n\n\/* \u2500\u2500 paleta pastel y color por funci\u00f3n (archivo compartido) \u2500\u2500 *\/\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   PALETA PASTEL Y COLOR POR FUNCI\u00d3N \u00b7 Herramientas de Vela Producciones\n   \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   Pedido de Carla (2026-10-10): \u00abasignar colores espec\u00edficos a todos los botones y\n   tarjetas de cada herramienta, asegurando coherencia visual entre ellas\u2026 y aplicar\n   sombras tanto a las tarjetas como a los botones para aportar profundidad\u00bb.\n   Referencia de color: las tarjetas (post-it) del Generador de Buyer Persona, que ya\n   usaban esta paleta suave:\n       amarillo #fef9c3 \u00b7 rosa #fce7f3 \u00b7 azul #dbeafe \u00b7 verde #dcfce7 \u00b7 lila #e2ddf9\n   (m\u00e1s el lila clar\u00edsimo #f4f2ff que la ficha ya usaba en la cita y el avatar).\n\n   ESTE ARCHIVO ES LA \u00daNICA FUENTE DE LA PALETA. Se inyecta, tal cual, en las cinco\n   herramientas:\n     \u00b7 las tres nuevas (Calculadora, Validador, Plan de contenido) \u2014 v\u00eda `generar.py`,\n       que ya pega `diseno.css` + `anti-desborde.css`;\n     \u00b7 \u00abArquitectura del Emprendedor\u00bb \u2014 v\u00eda `generar-snippet.py`;\n     \u00b7 el Generador de Buyer Persona \u2014 v\u00eda `parche-buyer-persona.py`.\n   Cambiar un color aqu\u00ed lo cambia en las cinco. Nada de copias.\n\n   \u2500\u2500 REGLA DE COLOR DE LOS BOTONES (una funci\u00f3n = un color) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     \u00edndigo   .btn-primario    producir el resultado: Generar, Calcular, Analizar, Armar plan\n     esmeralda .btn-secundario  sacar el documento: Imprimir, Descargar \/ Guardar en PDF\n     rosa     .btn-reiniciar    empezar de nuevo: Reiniciar, Borrar, Crear otro perfil\n     amarillo .btn-ejemplo      ver un ejemplo \/ cargar datos de muestra\n     azul     .btn-copiar       copiar al portapapeles (resumen, enlace, tabla)\n     lila     .btn-neutro       todo lo dem\u00e1s (volver, cerrar, ayuda, seg\u00fan)\n\n   \u2500\u2500 REGLA DE COLOR DE LAS TARJETAS (un significado = un color) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     lila     .tono-lila        el resultado: lo que la persona se lleva\n     azul     .tono-azul        n\u00fameros, c\u00e1lculos, datos duros\n     verde    .tono-verde       lo que est\u00e1 bien, lo validado, el plan a seguir\n     amarillo .tono-amarillo    aviso, riesgo, cuidado, lo que hay que vigilar\n     rosa     .tono-rosa        pasos, proceso, personas\n     \u00edndigo   .tono-indigo      dato de entrada, nota neutral\n\n   Las sombras van en dos escalas (reposo y elevada) para que todo tenga la misma\n   profundidad: `--sombra-tarjeta` \/ `--sombra-tarjeta-alto` y `--sombra-boton` \/\n   `--sombra-boton-alto`.\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n:root{\n  \/* \u2500\u2500 paleta pastel (referencia: las tarjetas del Buyer Persona) \u2500\u2500 *\/\n  --p-lila:#e2ddf9;      --p-lila-borde:#ddd6fe;      --p-lila-texto:#5b21b6;\n  --p-azul:#dbeafe;      --p-azul-borde:#bfdbfe;      --p-azul-texto:#1e40af;\n  --p-verde:#dcfce7;     --p-verde-borde:#bbf7d0;     --p-verde-texto:#166534;\n  --p-amarillo:#fef9c3;  --p-amarillo-borde:#fde68a;  --p-amarillo-texto:#854d0e;\n  --p-rosa:#fce7f3;      --p-rosa-borde:#fbcfe8;      --p-rosa-texto:#9d174d;\n  --p-indigo:#f4f2ff;    --p-indigo-borde:#e2ddf9;    --p-indigo-texto:#3730a3;\n\n  \/* \u2500\u2500 sombras: la misma profundidad en todas las herramientas \u2500\u2500 *\/\n  --sombra-tarjeta:0 12px 28px -14px rgba(15,23,42,.30), 0 2px 6px -2px rgba(15,23,42,.06);\n  --sombra-tarjeta-alto:0 22px 40px -18px rgba(15,23,42,.34), 0 3px 8px -2px rgba(15,23,42,.07);\n  --sombra-post-it:10px 10px 25px rgba(0,0,0,.10);\n  --sombra-post-it-alto:14px 14px 30px rgba(0,0,0,.14);\n  --sombra-boton:0 4px 12px -2px rgba(15,23,42,.18);\n  --sombra-boton-alto:0 12px 22px -8px rgba(15,23,42,.34);\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 TARJETAS: una sola profundidad \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   Todas las tarjetas de las cinco herramientas comparten radio y sombra. Los post-it del\n   Buyer Persona conservan su sombra desplazada y su inclinaci\u00f3n: es su se\u00f1o de identidad. *\/\n.blanco,.tarjeta-modulo,.pregunta,.dimension,.metrica,.consejo,.nota,.aviso,.realidad,\n.pasos-vacio,.resultado-caja,\n\/* las tarjetas de la ficha del Buyer Persona: misma profundidad que las dem\u00e1s *\/\n.whiteboard,.infographic-section,.strategy-item,.infographic-quote{\n  box-shadow:var(--sombra-tarjeta);\n  transition:transform .25s ease, box-shadow .25s ease;\n}\n.blanco:hover,.tarjeta-modulo:hover,.dimension:hover,.metrica:hover{\n  box-shadow:var(--sombra-tarjeta-alto);\n  transform:translateY(-2px);\n}\n.post-it{box-shadow:var(--sombra-post-it)}\n.post-it:hover{box-shadow:var(--sombra-post-it-alto)}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 TONOS PASTEL DE TARJETA \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   Se pone la clase en la tarjeta (`.blanco.tono-azul`) y el color viene de aqu\u00ed. *\/\n.tono-lila{background:var(--p-lila); border:1px solid var(--p-lila-borde)}\n.tono-azul{background:var(--p-azul); border:1px solid var(--p-azul-borde)}\n.tono-verde{background:var(--p-verde); border:1px solid var(--p-verde-borde)}\n.tono-amarillo{background:var(--p-amarillo); border:1px solid var(--p-amarillo-borde)}\n.tono-rosa{background:var(--p-rosa); border:1px solid var(--p-rosa-borde)}\n.tono-indigo{background:var(--p-indigo); border:1px solid var(--p-indigo-borde)}\n\n\/* El texto de una tarjeta pastel pide m\u00e1s contraste que el gris pizarra normal. *\/\n.tono-lila h2,.tono-lila h3,.tono-lila h4,.tono-lila .rotulo,.tono-lila .nombre{color:var(--p-lila-texto)}\n.tono-azul h2,.tono-azul h3,.tono-azul h4,.tono-azul .rotulo,.tono-azul .nombre{color:var(--p-azul-texto)}\n.tono-verde h2,.tono-verde h3,.tono-verde h4,.tono-verde .rotulo,.tono-verde .nombre{color:var(--p-verde-texto)}\n.tono-amarillo h2,.tono-amarillo h3,.tono-amarillo h4,.tono-amarillo .rotulo,.tono-amarillo .nombre{color:var(--p-amarillo-texto)}\n.tono-rosa h2,.tono-rosa h3,.tono-rosa h4,.tono-rosa .rotulo,.tono-rosa .nombre{color:var(--p-rosa-texto)}\n.tono-indigo h2,.tono-indigo h3,.tono-indigo h4,.tono-indigo .rotulo,.tono-indigo .nombre{color:var(--p-indigo-texto)}\n.tono-lila .gris,.tono-azul .gris,.tono-verde .gris,.tono-amarillo .gris,.tono-rosa .gris,\n.tono-indigo .gris{color:#475569}\n\n\/* Los recuadros de dentro de una tarjeta pastel se quedan claros para que se distingan. *\/\n.tono-lila .consejo,.tono-azul .consejo,.tono-verde .consejo,.tono-amarillo .consejo,\n.tono-rosa .consejo,.tono-indigo .consejo{background:rgba(255,255,255,.65)}\n.tono-lila .nota,.tono-azul .nota,.tono-verde .nota,.tono-amarillo .nota,\n.tono-rosa .nota,.tono-indigo .nota{background:rgba(255,255,255,.65)}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 BOTONES: un color por funci\u00f3n, con sombra \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.btn{box-shadow:var(--sombra-boton)}\n\/* El relleno se declara DOS veces a prop\u00f3sito: el tema del sitio pinta los <button> con un gris\n   (#efefef) y, si el degradado tardara en pintarse, se ver\u00eda el gris por debajo. Con\n   `background-color` del mismo tono, el bot\u00f3n nunca aparece gris. *\/\n.btn-primario{background-color:#6254e7; background-image:linear-gradient(to right,#6254e7,#9289f1); color:#fff}\n.btn-primario:hover:not(:disabled){transform:translateY(-2px);\n  box-shadow:0 14px 26px -10px rgba(99,102,241,.65)}\n.btn-secundario{background-color:#10b981; background-image:linear-gradient(to right,#10b981,#34d399); color:#fff}\n.btn-secundario:hover:not(:disabled){transform:translateY(-2px);\n  box-shadow:0 14px 26px -10px rgba(16,185,129,.65)}\n.btn-reiniciar{background:var(--p-rosa); border:1px solid var(--p-rosa-borde); color:var(--p-rosa-texto);\n  box-shadow:0 8px 18px -8px rgba(236,72,153,.55)}\n.btn-reiniciar:hover:not(:disabled){transform:translateY(-2px); border-color:#f9a8d4;\n  box-shadow:0 14px 26px -10px rgba(236,72,153,.6)}\n.btn-ejemplo{background:var(--p-amarillo); border:1px solid var(--p-amarillo-borde); color:var(--p-amarillo-texto);\n  box-shadow:0 8px 18px -8px rgba(245,158,11,.55)}\n.btn-ejemplo:hover:not(:disabled){transform:translateY(-2px); border-color:#fcd34d;\n  box-shadow:0 14px 26px -10px rgba(245,158,11,.6)}\n.btn-copiar{background:var(--p-azul); border:1px solid var(--p-azul-borde); color:var(--p-azul-texto);\n  box-shadow:0 8px 18px -8px rgba(59,130,246,.55)}\n.btn-copiar:hover:not(:disabled){transform:translateY(-2px); border-color:#93c5fd;\n  box-shadow:0 14px 26px -10px rgba(59,130,246,.6)}\n.btn-neutro{background:var(--p-indigo); border:1px solid var(--p-indigo-borde); color:var(--p-indigo-texto);\n  box-shadow:0 8px 18px -8px rgba(99,102,241,.45)}\n.btn-neutro:hover:not(:disabled){transform:translateY(-2px); border-color:#a5b4fc; color:#312e81;\n  box-shadow:0 14px 26px -10px rgba(99,102,241,.5)}\n\n\/* Al pulsar, el bot\u00f3n se hunde: da sensaci\u00f3n de que respondi\u00f3. *\/\n.btn:active:not(:disabled){transform:translateY(0); box-shadow:var(--sombra-boton)}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 PESTA\u00d1AS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   La pesta\u00f1a activa va en \u00edndigo (es la que produce), las dem\u00e1s en blanco con sombra. *\/\n.pestana{box-shadow:var(--sombra-boton)}\n.pestana.activa{box-shadow:0 10px 20px -8px rgba(99,102,241,.6)}\n\n\/* En impresi\u00f3n, nada de sombras ni elevaciones: el papel no las tiene. *\/\n@media print{\n  .blanco,.tarjeta-modulo,.pregunta,.dimension,.metrica,.consejo,.nota,.aviso,.post-it,.pestana,.btn{\n    box-shadow:none !important; transform:none !important;\n  }\n}\n@media (prefers-reduced-motion:reduce){\n  .blanco,.tarjeta-modulo,.dimension,.metrica,.post-it,.btn,.pestana{transition:none !important}\n}\n<\/style>\n<div class=\"aemp\">\n<div class=\"aemp-contenedor\">\n\n  <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 ENCABEZADO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n  <div class=\"blanco tono-verde\">\n    <div class=\"cabecera\">\n      <div class=\"titulos\">\n        <span class=\"etiqueta\">Herramienta gratuita \u00b7 Vela Producciones<\/span>\n        <h1>Arquitectura del Emprendedor<\/h1>\n        <p class=\"gris\" style=\"margin:0\">Diagn\u00f3stico en <strong>10 preguntas<\/strong> para saber si tu negocio\n          escala o si depende de ti para todo.<\/p>\n      <\/div>\n      <div class=\"marcador\">\n        <span class=\"pastilla pastilla-gris\" id=\"insignia-nivel\">Sin responder<\/span>\n        <div class=\"numero\" id=\"puntaje-global\">0<\/div>\n        <div class=\"de\">de 50 puntos<\/div>\n        <div class=\"barra barra-indigo\" id=\"barra-cabecera\"><span style=\"width:0%\"><\/span><\/div>\n        <div class=\"micro gris\"><span id=\"pct-global\">0%<\/span> de solidez \u00b7 <span id=\"contador-respuestas\">0 de 10 respondidas<\/span><\/div>\n      <\/div>\n    <\/div>\n\n    <p style=\"margin-bottom:.5rem\"><strong>La idea central:<\/strong> tu negocio no llega m\u00e1s lejos de donde\n      llegas t\u00fa. Vender da el primer empuj\u00f3n, pero lo que sostiene el crecimiento son cuatro cosas: saber qu\u00e9\n      problema resuelves, tener sistemas que funcionen sin ti, gente que te corrija y estudiar con horario.<\/p>\n    <p class=\"gris chico\" style=\"margin:0\">Responde con honestidad: el valor de este test est\u00e1 en la\n      incomodidad de la respuesta sincera, no en la puntuaci\u00f3n bonita. Tus respuestas se guardan\n      <strong>solo en tu navegador<\/strong> (nada se env\u00eda a ning\u00fan servidor) y puedes borrarlas cuando quieras.<\/p>\n  <\/div>\n\n  <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 BARRA DE ARRIBA: acciones (0.1 y 0.2) y pesta\u00f1as (1 a 4) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n       Carla (2026-10-10): \u00abCargar ejemplo\u00bb, \u00abReiniciar\u00bb y las cuatro pesta\u00f1as van en la MISMA fila,\n       en la MISMA fila que las pesta\u00f1as, para que se lean en orden: 0.1 \u00b7 0.2 \u00b7 1 \u00b7 2 \u00b7 3 \u00b7 4.\n       Los dos botones siguen tambi\u00e9n al final de la p\u00e1gina: arriba para encontrarlos, abajo\n       para usarlos al terminar. -->\n  <div class=\"pestanas no-imprimir\" role=\"tablist\">\n    <button class=\"pestana accion-pestana btn-ejemplo\" id=\"btn-ejemplo-top\" data-accion=\"ejemplo\">\n      <span class=\"num\">0.1<\/span>Cargar ejemplo<\/button>\n    <button class=\"pestana accion-pestana btn-reiniciar\" id=\"btn-reiniciar-top\" data-accion=\"reiniciar\">\n      <span class=\"num\">0.2<\/span>Reiniciar<\/button>\n    <button class=\"pestana activa\" role=\"tab\" aria-selected=\"true\" data-panel=\"panel-cuestionario\"><span class=\"num\">1<\/span>Cuestionario<\/button>\n    <button class=\"pestana\" role=\"tab\" aria-selected=\"false\" data-panel=\"panel-veredicto\"><span class=\"num\">2<\/span>Resultado<\/button>\n    <button class=\"pestana\" role=\"tab\" aria-selected=\"false\" data-panel=\"panel-plan\"><span class=\"num\">3<\/span>Plan de 30 d\u00edas<\/button>\n    <button class=\"pestana\" role=\"tab\" aria-selected=\"false\" data-panel=\"panel-modulos\"><span class=\"num\">4<\/span>Aceleradores<\/button>\n  <\/div>\n\n  <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 PANEL 1: CUESTIONARIO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n  <section id=\"panel-cuestionario\" role=\"tabpanel\">\n    <div class=\"blanco ajustado tono-indigo\">\n      <h2 style=\"margin-bottom:.35rem\">Las 10 preguntas de la realidad<\/h2>\n      <p class=\"gris chico\" style=\"margin-bottom:.75rem\">Cada pregunta tiene 5 niveles: el 1 es lo m\u00e1s flojo y\n        el 5 lo m\u00e1s s\u00f3lido. Elige el que describa tu situaci\u00f3n <em>de hoy<\/em>, no la que te gustar\u00eda tener.\n        Al elegir ver\u00e1s qu\u00e9 significa ese nivel y un primer paso para mejorar.<\/p>\n      <div class=\"barra barra-indigo\"><span id=\"barra-cuestionario\" style=\"width:0%\"><\/span><\/div>\n      <div class=\"micro gris\" id=\"texto-progreso\">Empieza por la pregunta 1. Se guarda solo.<\/div>\n    <\/div>\n\n    <div id=\"lista-preguntas\"><\/div>\n\n    <div class=\"acciones no-imprimir\">\n      <button class=\"btn btn-primario\" id=\"btn-veredicto\">Ver veredicto ejecutivo <span aria-hidden=\"true\">\u2192<\/span><\/button>\n      <button class=\"btn btn-ejemplo\" id=\"btn-ejemplo\" data-accion=\"ejemplo\">Cargar un ejemplo<\/button>\n      <button class=\"btn btn-reiniciar\" id=\"btn-reiniciar\" data-accion=\"reiniciar\">Reiniciar respuestas<\/button>\n    <\/div>\n    <p class=\"nota no-imprimir\" style=\"margin-top:1rem\">\u00bfQuieres compartir tu diagn\u00f3stico con alguien?\n      En la pesta\u00f1a del veredicto hay un bot\u00f3n <strong>\u00abCopiar enlace con mis respuestas\u00bb<\/strong>: quien lo\n      abra ver\u00e1 el mismo cuestionario ya contestado, sin enviar nada a ning\u00fan servidor.<\/p>\n  <\/section>\n\n  <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 PANEL 2: VEREDICTO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n  <section id=\"panel-veredicto\" role=\"tabpanel\" class=\"oculto\">\n    <div id=\"aviso-veredicto\"><\/div>\n\n    <div class=\"blanco tono-lila\">\n      <h2>Resultado global consolidado<\/h2>\n      <div class=\"rejilla rejilla-2\" style=\"align-items:center\">\n        <div>\n          <div class=\"numero\" style=\"font-size:3.5rem; font-weight:900; color:var(--slate-900); line-height:1\" id=\"veredicto-puntaje\">0<\/div>\n          <div class=\"gris\" style=\"font-weight:600\">de 50 puntos \u00b7 <span id=\"veredicto-pct\">0%<\/span> de solidez<\/div>\n          <div id=\"veredicto-insignia\" style=\"margin-top:.75rem\"><\/div>\n        <\/div>\n        <div>\n          <h3 style=\"margin-bottom:.35rem\">Nivel de madurez<\/h3>\n          <p id=\"veredicto-nivel\" style=\"font-weight:700; color:var(--slate-900)\"><\/p>\n          <p class=\"chico gris\" id=\"veredicto-lectura\"><\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"blanco tono-azul\">\n      <h2>Salud por dimensi\u00f3n<\/h2>\n      <p class=\"gris chico\">Las cuatro \u00e1reas cr\u00edticas de la arquitectura. Una sola dimensi\u00f3n d\u00e9bil\n        hunde el conjunto: el negocio avanza al ritmo de la m\u00e1s floja.<\/p>\n      <div class=\"rejilla rejilla-2\" id=\"dimensiones\"><\/div>\n    <\/div>\n\n    <div class=\"post-it post-it-rosa\" id=\"cuello-botella\">\n      <h3 style=\"margin-bottom:.35rem\">Cuello de botella cr\u00edtico<\/h3>\n      <p id=\"cuello-texto\" style=\"margin:0\"><\/p>\n    <\/div>\n\n    <div class=\"blanco tono-amarillo\">\n      <h2>Mapa de fortalezas y alertas<\/h2>\n      <p class=\"gris chico\">Lo que ya juega a tu favor y lo que hoy te est\u00e1 frenando.<\/p>\n      <div id=\"fortalezas\"><\/div>\n      <div id=\"alertas\" style=\"margin-top:1rem\"><\/div>\n    <\/div>\n\n    <div class=\"blanco tono-rosa\">\n      <h2>Por d\u00f3nde empezar<\/h2>\n      <p class=\"gris chico\">Tus cinco puntos m\u00e1s flojos, del m\u00e1s urgente al menos. Los pasos concretos est\u00e1n en\n        el <strong>plan de 30 d\u00edas<\/strong>.<\/p>\n      <div id=\"prioridades\"><\/div>\n    <\/div>\n\n    <div class=\"blanco tono-indigo\">\n      <h2>Lectura pregunta por pregunta<\/h2>\n      <p class=\"gris chico\">Qu\u00e9 significa el nivel que elegiste en cada dilema. Los pasos concretos, ya\n        ordenados, est\u00e1n en tu <strong>plan de 30 d\u00edas<\/strong>.<\/p>\n      <div id=\"prescripciones\"><\/div>\n    <\/div>\n\n    <div class=\"acciones no-imprimir\">\n      <button class=\"btn btn-primario\" id=\"btn-plan\">Ver mi plan de 30 d\u00edas <span aria-hidden=\"true\">\u2192<\/span><\/button>\n      <button class=\"btn btn-copiar\" id=\"btn-copiar\">Copiar el reporte<\/button>\n      <button class=\"btn btn-copiar\" id=\"btn-enlace\">Copiar enlace con mis respuestas<\/button>\n      <button class=\"btn btn-secundario\" id=\"btn-imprimir\">Imprimir \/ Guardar en PDF<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 PANEL 3: PLAN \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n  <section id=\"panel-plan\" role=\"tabpanel\" class=\"oculto\">\n    <div class=\"blanco\">\n      <span class=\"etiqueta\">Tu plan, no un plan gen\u00e9rico<\/span>\n      <h2>Plan de 30 d\u00edas<\/h2>\n      <p class=\"gris\">Se arma con tus respuestas, en tres etapas cortas: primero lo que te devuelve tiempo o\n        dinero, despu\u00e9s el orden que te quita trabajo de encima y al final la red y el estudio que sostienen el\n        crecimiento. Marca cada tarea: se guarda en tu navegador.<\/p>\n      <div id=\"plan\"><\/div>\n    <\/div>\n\n    <div class=\"blanco tono-azul\">\n      <h2>Indicadores para medir el avance<\/h2>\n      <p class=\"gris chico\">Cuatro n\u00fameros para revisar el mismo d\u00eda de cada mes. Sin esto, el plan se queda en buenas intenciones.<\/p>\n      <div id=\"kpis\"><\/div>\n      <p class=\"nota\" style=\"margin-top:1rem\">Sugerencia: agenda ya <strong>45 minutos el primer lunes de cada\n        mes<\/strong> para revisar estos cuatro n\u00fameros. Es la cita que m\u00e1s te va a rendir.<\/p>\n    <\/div>\n\n    <div class=\"acciones no-imprimir\">\n      <button class=\"btn btn-neutro\" id=\"btn-volver-cuestionario\">\u2190 Ajustar respuestas<\/button>\n      <button class=\"btn btn-secundario\" id=\"btn-imprimir-2\">Imprimir \/ Guardar en PDF<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 PANEL 4: ACELERADORES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n  <section id=\"panel-modulos\" role=\"tabpanel\" class=\"oculto\">\n    <div class=\"blanco tono-lila\">\n      <span class=\"etiqueta\">Los cinco no negociables<\/span>\n      <h2>Los cinco aceleradores de la arquitectura<\/h2>\n      <p class=\"gris\">No son cursos ni teor\u00eda: son cinco reg\u00edmenes de trabajo, uno por cada cosa que de\n        verdad mueve un negocio \u2014prop\u00f3sito, relaciones, aprendizaje, sistemas y n\u00fameros\u2014. Aplicados seis\n        meses seguidos, cambian el tama\u00f1o de la empresa porque cambian el tama\u00f1o de quien la dirige.<\/p>\n    <\/div>\n    <div id=\"modulos\"><\/div>\n    <div class=\"post-it post-it-verde\">\n      <h3 style=\"margin-bottom:.35rem\">Compromiso m\u00ednimo viable<\/h3>\n      <p style=\"margin:0\">Dos conexiones estrat\u00e9gicas al mes, un libro t\u00e9cnico al mes, un \u00abno\u00bb con criterio,\n        un procedimiento escrito y 45 minutos cada lunes con tus n\u00fameros. Si no cabe ni esto en tu agenda,\n        el problema no es de tiempo: es de prioridad. Escribe en tu calendario la primera fecha ahora mismo.<\/p>\n    <\/div>\n    <div class=\"acciones no-imprimir\">\n      <button class=\"btn btn-neutro\" id=\"btn-volver-cuestionario-2\">\u2190 Volver al cuestionario<\/button>\n    <\/div>\n  <\/section>\n\n  <p class=\"micro gris\" style=\"text-align:center; margin-top:2rem\">\n    Herramienta de <strong>Vela Producciones<\/strong> \u00b7 Diagn\u00f3stico orientativo, no sustituye una consultor\u00eda\n    ni asesor\u00eda legal, fiscal o financiera. Tus respuestas nunca salen de tu navegador.\n  <\/p>\n<\/div>\n\n<div class=\"brindis\" id=\"brindis\" role=\"status\" aria-live=\"polite\"><\/div>\n\n<script>\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   ARQUITECTURA DEL EMPRENDEDOR \u2014 l\u00f3gica de la herramienta\n   Sin dependencias. Todo el estado vive en el navegador (localStorage + #hash).\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n(function () {\n  'use strict';\n\n  \/* \u2500\u2500 1. LAS CUATRO DIMENSIONES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  const DIMENSIONES = [\n    { id: 'dim1', nombre: 'Prop\u00f3sito y principios', corto: 'Prop\u00f3sito',\n      icono: '\ud83e\udded',\n      resumen: 'Qu\u00e9 problema resuelves de verdad y con qu\u00e9 reglas decides.',\n      referencia: 'Una empresa fuerte aqu\u00ed explica en una frase qu\u00e9 hace, para qui\u00e9n y por qu\u00e9 seguir\u00e1 haciendo falta dentro de cinco a\u00f1os.' },\n    { id: 'dim2', nombre: 'Operaci\u00f3n y n\u00fameros', corto: 'Operaci\u00f3n',\n      icono: '\u2699\ufe0f',\n      resumen: 'Si el negocio camina sin ti, con margen sano y foco en lo que s\u00ed paga.',\n      referencia: 'Una empresa fuerte aqu\u00ed sabe cu\u00e1nto gana, tiene sus procesos escritos y aguanta dos semanas sin el due\u00f1o.' },\n    { id: 'dim3', nombre: 'Relaciones e influencia', corto: 'Relaciones',\n      icono: '\ud83e\udd1d',\n      resumen: 'Qui\u00e9n te corrige, qui\u00e9n te abre puertas y con qui\u00e9n te comparas.',\n      referencia: 'Una empresa fuerte aqu\u00ed tiene mentores que van delante, alguien que le dice la verdad y una red que no depende de vender.' },\n    { id: 'dim4', nombre: 'Aprendizaje y coherencia', corto: 'Aprendizaje',\n      icono: '\ud83d\udcda',\n      resumen: 'Si lo que dices, lo que haces y lo que sabes van juntos, tambi\u00e9n en los meses dif\u00edciles.',\n      referencia: 'Una empresa fuerte aqu\u00ed estudia con horario, no por urgencia, y lo que promete lo cumple.' }\n  ];\n\n  \/* \u2500\u2500 2. LAS DIEZ PREGUNTAS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  \/* Cada nivel: descripci\u00f3n concreta + consejo + primer paso accionable. *\/\n  const PREGUNTAS = [\n    {\n      id: 'q1', dim: 'dim1', num: 1,\n      titulo: '\\u00bfSabes qu\\u00e9 problema resuelves, o solo apagas incendios?',\n      dilema: '\\u00bfTu negocio existe por algo que seguir\\u00e1 importando en cinco a\\u00f1os, o vives de lo que cae cada semana?',\n      realidad: 'Vender todas las semanas no es tener un negocio s\\u00f3lido. Muchos negocios que venden bien desaparecen cuando el mercado cambia, porque nunca se preguntaron qu\\u00e9 necesidad real estaban resolviendo.',\n      nivel: [\n        'Vendo lo que va cayendo. Compito por precio y no sabr\\u00eda decir qu\\u00e9 problema resuelvo.',\n        'Conozco a mi cliente, pero solo reacciono a lo que pide.',\n        'Resuelvo algo concreto y \\u00fatil, pero no pienso en c\\u00f3mo cambiar\\u00e1 el mercado.',\n        'Tengo claro qu\\u00e9 ayudo a conseguir y hacia d\\u00f3nde va mi sector.',\n        'S\\u00e9 qu\\u00e9 problema resuelvo, por qu\\u00e9 me prefieren a m\\u00ed y por qu\\u00e9 voy a seguir haciendo falta.'\n      ],\n      alerta: 'Con 1 o 2, el negocio es fr\\u00e1gil aunque hoy venda.',\n      paso: 'Escribe en una frase qu\\u00e9 haces y para qui\\u00e9n: \\u00abAyudo a ___ a ___\\u00bb. Si no te sale, ese es el trabajo de este mes.',\n      consejo: {\n        bajo: 'Reserva medio d\\u00eda para estudiar tu mercado: qu\\u00e9 est\\u00e1 cambiando y en qu\\u00e9 puedes ser el mejor.',\n        medio: 'Tienes claro el d\\u00eda a d\\u00eda, pero no por qu\\u00e9 te eligen. Escribe tu raz\\u00f3n de ser y qu\\u00e9 respondes cuando llega alguien m\\u00e1s barato.',\n        alto: 'Vas bien. Escribe eso que ya sabes y comp\\u00e1rtelo con tu equipo: sirve para decidir qu\\u00e9 no hacer.'\n      }\n    },\n    {\n      id: 'q2', dim: 'dim1', num: 2,\n      titulo: '\\u00bfTu equipo decide bien cuando t\\u00fa no est\\u00e1s?',\n      dilema: '\\u00bfPueden resolver un problema o decir que no a un cliente sin llamarte?',\n      realidad: 'Si todo tiene que pasar por ti \\u2014cada descuento, cada reclamo, cada caso raro\\u2014 no tienes empresa: tienes un trabajo con ayudantes. Y crece solo hasta donde llega tu agenda.',\n      nivel: [\n        'No hay reglas: cada quien resuelve como puede.',\n        'Hay valores escritos que nadie usa; con prisa se hace todo de cualquier manera.',\n        'Las reglas est\\u00e1n en la cabeza de una o dos personas de confianza.',\n        'Hay reglas escritas y el equipo resuelve casi todo sin m\\u00ed.',\n        'El equipo decide bien sin consultarme; yo me ocupo de lo importante.'\n      ],\n      alerta: 'Pasar las reglas de tu cabeza al papel es el cambio m\\u00e1s barato que existe.',\n      paso: 'Escribe hoy tus 5 reglas no negociables (media p\\u00e1gina) y rev\\u00edsalas ma\\u00f1ana con el equipo con un caso real que sali\\u00f3 mal.',\n      consejo: {\n        bajo: 'Escribe tus 5 reglas no negociables y pract\\u00edcalas con casos reales: qu\\u00e9 se hace cuando alguien pide algo que baja la calidad.',\n        medio: 'Tus reglas existen, pero viven en pocas cabezas. Escr\\u00edbelas, convi\\u00e9rtelas en lista de verificaci\\u00f3n y deja que el equipo decida.',\n        alto: 'Tu equipo funciona. Revisa las reglas una vez al a\\u00f1o y \\u00fasalas al contratar: no metas a quien no las comparte.'\n      }\n    },\n    {\n      id: 'q3', dim: 'dim2', num: 3,\n      titulo: '\\u00bfSabes decir no?',\n      dilema: '\\u00bfPuedes rechazar clientes o trabajos que no te convienen, aunque paguen?',\n      realidad: 'Lo que te quita margen no es vender poco: son los clientes que no encajan y las urgencias de otros. Cada \\u00absi\\u00bb de m\\u00e1s le quita tiempo al \\u00absi\\u00bb que importa.',\n      nivel: [\n        'Acepto todo lo que aparezca: necesito el dinero y no tengo criterio.',\n        'S\\u00e9 que hay clientes que me desgastan, pero no logro decir no.',\n        'Tengo criterios, aunque en la pr\\u00e1ctica me cuesta aplicarlos.',\n        'Rechazo con criterio lo que no encaja y lo digo sin pelear.',\n        'Tengo un filtro claro y lo aplico: mi tiempo y mi margen est\\u00e1n protegidos.'\n      ],\n      alerta: 'Un cliente que no encaja se paga tres veces: el trabajo, el desgaste y lo que dejas de hacer.',\n      paso: 'Mira tus 10 clientes o proyectos actuales y marca los dos que dan menos margen y m\\u00e1s desgaste. Ponles fecha de salida.',\n      consejo: {\n        bajo: 'Escribe c\\u00f3mo es tu cliente ideal y, sobre todo, c\\u00f3mo NO es. Empieza diciendo no a un caso por mes: el ingreso se repone, el desgaste no.',\n        medio: 'Ya tienes el criterio, te falta pr\\u00e1ctica. Prepara una frase para decir no sin da\\u00f1ar la relaci\\u00f3n y \\u00fasala en el pr\\u00f3ximo pedido que no encaje.',\n        alto: 'Tu filtro funciona. Cuenta cu\\u00e1nto tiempo te devolvi\\u00f3 ese no y \\u00fasalo en la venta que s\\u00ed quieres.'\n      }\n    },\n    {\n      id: 'q4', dim: 'dim2', num: 4,\n      titulo: '\\u00bfSabes cu\\u00e1nto ganas de verdad?',\n      dilema: '\\u00bfConoces tu margen y sabes si podr\\u00e1s pagar los pr\\u00f3ximos meses?',\n      realidad: 'Vender mucho y quedarte sin dinero es la forma m\\u00e1s com\\u00fan de quebrar en un negocio que \\u00abva bien\\u00bb. Lo que entra y lo que de verdad queda son dos cosas distintas.',\n      nivel: [\n        'No s\\u00e9 cu\\u00e1nto gano; mezclo mi dinero con el del negocio.',\n        'Miro el saldo del banco: si hay dinero, creo que va bien.',\n        'S\\u00e9 mi margen m\\u00e1s o menos, pero no miro m\\u00e1s all\\u00e1 del mes.',\n        'S\\u00e9 cu\\u00e1nto gano por producto o servicio y reviso la caja cada semana.',\n        'S\\u00e9 mi margen por l\\u00ednea, tengo la caja proyectada, guardo para impuestos y decido con n\\u00fameros.'\n      ],\n      alerta: 'Este es el punto que m\\u00e1s r\\u00e1pido hunde negocios que parec\\u00edan sanos.',\n      paso: 'Calcula hoy cu\\u00e1nto ganas en tus tres servicios o productos principales: precio menos costos, incluido tu tiempo.',\n      consejo: {\n        bajo: 'Urgente: separa el dinero del negocio del tuyo, calcula el margen de cada producto y revisa la caja cada semana. Sin esto, lo dem\\u00e1s es a ciegas.',\n        medio: 'Vas cerca. Convierte el c\\u00e1lculo en rutina: una hora cada lunes para ver caja, cobros pendientes y margen de lo vendido.',\n        alto: 'Tienes control. \\u00dasalo para invertir con criterio y mant\\u00e9n una reserva de al menos tres meses de gastos fijos.'\n      }\n    },\n    {\n      id: 'q5', dim: 'dim2', num: 5,\n      titulo: '\\u00bfPuedes desaparecer dos semanas?',\n      dilema: '\\u00bfEl negocio camina sin ti una quincena, sin que caigan las ventas ni la calidad?',\n      realidad: 'La prueba de fuego es tu ausencia. Si todo pasa por ti, no tienes un negocio: tienes un trabajo que adem\\u00e1s no puedes dejar.',\n      nivel: [\n        'Si me voy, todo se detiene.',\n        'Puedo faltar un d\\u00eda, pero vuelvo a una monta\\u00f1a de pendientes.',\n        'Lo rutinario camina sin m\\u00ed, pero lo importante me espera.',\n        'Puedo irme una o dos semanas: hay procesos y responsables.',\n        'El negocio camina y crece sin m\\u00ed; mi tiempo va en estrategia y en el equipo.'\n      ],\n      alerta: 'Delegar no es repartir tareas: es dejar que otros decidan, con reglas claras.',\n      paso: 'Escoge una tarea que hagas todos los d\\u00edas, escribe c\\u00f3mo se hace paso a paso y ens\\u00e9\\u00f1asela a alguien esta semana.',\n      consejo: {\n        bajo: 'Empieza por una tarea repetitiva: escribe el procedimiento, entrena a alguien y no la vuelvas a hacer. Una por mes.',\n        medio: 'Ya delegas tareas. Ahora delega decisiones: define hasta d\\u00f3nde puede decidir cada quien sin consultarte.',\n        alto: 'Tienes un negocio, no un empleo. Deja por escrito c\\u00f3mo se hacen las cosas, para cuando crezca el equipo.'\n      }\n    },\n    {\n      id: 'q6', dim: 'dim3', num: 6,\n      titulo: '\\u00bfAlguien te dice la verdad?',\n      dilema: '\\u00bfHay alguien con criterio, que no dependa de ti, que te contradiga?',\n      realidad: 'El equipo calla por respeto y los proveedores son amables. As\\u00ed el due\\u00f1o termina rodeado de gente que aplaude mientras los problemas crecen sin que nadie los nombre.',\n      nivel: [\n        'Nadie me contradice: decido solo.',\n        'Tengo con qui\\u00e9n hablar, pero me dicen lo que quiero o\\u00edr.',\n        'Mis socios o pares opinan, pero no hay alguien que me revise de verdad.',\n        'Tengo a alguien de confianza que me contradice con argumentos.',\n        'Tengo un mentor o un consejo con independencia real y reviso con ellos lo importante.'\n      ],\n      alerta: 'Si nadie te corrige, aprendes solo a golpe de errores caros.',\n      paso: 'Escribe los nombres de 5 personas que podr\\u00edan decirte la verdad y escr\\u00edbele hoy a una para una conversaci\\u00f3n de 45 minutos al mes.',\n      consejo: {\n        bajo: 'Busca ya un contrapeso: un par con m\\u00e1s camino, un mentor o un peque\\u00f1o consejo. Con reunirse una vez al mes ya cambian tus decisiones.',\n        medio: 'Tienes con qui\\u00e9n hablar, pero sin fecha fija. Agenda el mes, lleva n\\u00fameros y pide la cr\\u00edtica antes de la opini\\u00f3n.',\n        alto: 'Tu red te protege. Devuelve el favor: presenta a dos emprendedores que se necesitan, sin cobrar nada.'\n      }\n    },\n    {\n      id: 'q7', dim: 'dim3', num: 7,\n      titulo: '\\u00bfCon qui\\u00e9n te sientas a la mesa?',\n      dilema: '\\u00bfTu c\\u00edrculo te empuja hacia arriba o solo te acompa\\u00f1a donde ya est\\u00e1s?',\n      realidad: 'Si siempre eres el m\\u00e1s experimentado de la mesa, esa mesa te est\\u00e1 frenando. Crecer pide espacios donde aprendas, aunque incomoden.',\n      nivel: [\n        'Casi no tengo red: solo clientes, empleados y familia.',\n        'Me junto con emprendedores del mismo tama\\u00f1o, con los mismos problemas.',\n        'Tengo contactos, pero sin plan: voy a eventos cuando sale algo.',\n        'Busco espacios donde aprendo y conozco gente que va m\\u00e1s adelante.',\n        'Hablo con gente que va varios pasos delante y entro a espacios donde soy de los menos experimentados.'\n      ],\n      alerta: 'Una conversaci\\u00f3n con la persona correcta te puede ahorrar un a\\u00f1o de pruebas.',\n      paso: 'Elige 3 personas que ya lograron lo que t\\u00fa quieres. Escr\\u00edbeles algo \\u00fatil antes de pedir nada: un contacto, un dato, una recomendaci\\u00f3n.',\n      consejo: {\n        bajo: 'Reserva dos ma\\u00f1anas al mes solo para conocer gente: c\\u00e1maras, gremios, foros de tu sector. Ve con una pregunta concreta, no a repartir tarjetas.',\n        medio: 'Suma espacios de m\\u00e1s nivel: consejos, programas o mentor\\u00edas. Pagar por estar en una mesa mejor suele salir barato.',\n        alto: 'Tu red ya trabaja para ti. Mant\\u00e9n un registro de a qui\\u00e9n ayudaste y a qui\\u00e9n puedes presentar cada mes.'\n      }\n    },\n    {\n      id: 'q8', dim: 'dim4', num: 8,\n      titulo: '\\u00bfEstudias con horario o solo cuando hay problema?',\n      dilema: '\\u00bfTienes horas fijas para aprender, o aprendes solo cuando algo se rompe?',\n      realidad: 'Casi todos dicen que aprenden todo el tiempo, pero ver videos sueltos no es formaci\\u00f3n. Lo que cambia un negocio es estudiar un tema a fondo y aplicarlo.',\n      nivel: [\n        'No leo ni estudio: aprendo a golpes.',\n        'Veo contenido suelto en redes, sin m\\u00e9todo.',\n        'Estudio de vez en cuando, cuando algo me preocupa.',\n        'Tengo un horario fijo de estudio y aplico lo que aprendo.',\n        'Estudio con horario, hago formaci\\u00f3n cada trimestre y cada aprendizaje se vuelve un proceso o una decisi\\u00f3n.'\n      ],\n      alerta: 'Aprender sin aplicar da la sensaci\\u00f3n de avanzar. Aplicar sin aprender te vuelve lento y caro.',\n      paso: 'Aparta 5 horas a la semana en tu calendario, con d\\u00eda y hora. En la primera, elige un tema y define c\\u00f3mo vas a medirlo en 30 d\\u00edas.',\n      consejo: {\n        bajo: 'Empieza por el tema que hoy te cuesta dinero. Una hora al d\\u00eda, un tema por mes. Sin buscar el curso perfecto.',\n        medio: 'Ya estudias: ahora pide resultados. Cada libro o curso debe terminar en un cambio concreto en menos de 30 d\\u00edas.',\n        alto: 'Tu m\\u00e9todo funciona. Sube el nivel: ense\\u00f1a lo que aprendes al equipo, porque explicarlo ordena el criterio.'\n      }\n    },\n    {\n      id: 'q9', dim: 'dim4', num: 9,\n      titulo: '\\u00bfLo que prometes es lo que puedes cumplir?',\n      dilema: '\\u00bfTu promesa comercial se parece a lo que tu equipo y tus n\\u00fameros pueden sostener?',\n      realidad: 'Es f\\u00e1cil prometer m\\u00e1s de lo que la operaci\\u00f3n aguanta. Cuando eso pasa, cada cliente nuevo es un riesgo para tu reputaci\\u00f3n y un desgaste para el equipo.',\n      nivel: [\n        'Prometo m\\u00e1s de lo que puedo y lo arreglo improvisando.',\n        'Hablo de la empresa que quiero tener, no de la que tengo.',\n        'Hay coherencia casi siempre, pero la urgencia me hace prometer de m\\u00e1s.',\n        'Lo que prometo lo sostengo con procesos, equipo y recursos.',\n        'Lo que digo y lo que hago coinciden, y lo compruebo con datos: si no puedo cumplirlo, no lo prometo.'\n      ],\n      alerta: 'Una promesa incumplida cuesta m\\u00e1s que la venta que trajo.',\n      paso: 'Toma tu propuesta principal y resp\\u00f3ndete: \\u00bfqu\\u00e9 necesito tener hoy para cumplirla siempre igual? Anota lo que falta.',\n      consejo: {\n        bajo: 'Baja la promesa hasta poder cumplirla siempre. Es mejor vender menos y sostenerlo que crecer sobre una reputaci\\u00f3n fr\\u00e1gil.',\n        medio: 'Vas alineado. Escribe los casos en que no puedes cumplir y define la regla: qu\\u00e9 se ofrece, qu\\u00e9 no y con qu\\u00e9 l\\u00edmites.',\n        alto: 'Tu coherencia vende. Mu\\u00e9strala: casos reales, pruebas y datos. La transparencia es tu mejor argumento.'\n      }\n    },\n    {\n      id: 'q10', dim: 'dim4', num: 10,\n      titulo: '\\u00bfC\\u00f3mo decides cuando est\\u00e1s agotado?',\n      dilema: '\\u00bfCu\\u00e1ntas decisiones importantes has tomado \\u00faltimamente desde el cansancio?',\n      realidad: 'El cansancio no es una medalla: te hace decidir peor. Un due\\u00f1o agotado contrata mal, vende barato y trata mal a su equipo. Y eso se ve en los n\\u00fameros tres meses despu\\u00e9s.',\n      nivel: [\n        'Vivo apagando fuegos: duermo mal y decido seg\\u00fan el \\u00e1nimo del d\\u00eda.',\n        'Trabajo demasiado y lo s\\u00e9, pero no veo c\\u00f3mo parar.',\n        'Tengo ritmos razonables, aunque en las crisis los pierdo.',\n        'Duermo, hago ejercicio y descanso de verdad cada semana.',\n        'Mi ritmo es sostenible: descanso, delego presi\\u00f3n y decido con la cabeza fr\\u00eda, tambi\\u00e9n en meses dif\\u00edciles.'\n      ],\n      alerta: 'Tu negocio no puede ser m\\u00e1s estable que t\\u00fa.',\n      paso: 'Aplica la regla de las 24 horas: ninguna decisi\\u00f3n importante \\u2014contratar, invertir, aceptar un cliente grande\\u2014 el mismo d\\u00eda que la sientes urgente.',\n      consejo: {\n        bajo: 'Antes de cualquier plan de crecimiento, arregla el sue\\u00f1o y el descanso. Parece blando y es la decisi\\u00f3n m\\u00e1s rentable del mes.',\n        medio: 'Tienes ritmo, pero se rompe en crisis. Define de antemano qu\\u00e9 se puede pausar y qui\\u00e9n decide si t\\u00fa no est\\u00e1s en condiciones.',\n        alto: 'Tu estabilidad es una ventaja. Prot\\u00e9gela con la misma disciplina con la que cuidas el dinero.'\n      }\n    }\n  ];\n\n  \/* \u2500\u2500 3. LOS CINCO ACELERADORES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  const MODULOS = [\n    {\n      n: 1,\n      titulo: 'Estrategia de capital social',\n      subtitulo: 'Ampliar el c\u00edrculo de influencia',\n      tesis: 'Ninguna empresa supera el techo relacional de quien la lidera. La soledad del emprendedor es la causa silenciosa de las decisiones caras: nadie le discute, nadie le muestra un camino ya recorrido.',\n      puntos: [\n        { t: 'Mentores a 5-10 pasos adelante', d: 'Identifica a tres empresarios que ya operan y facturan lo que t\u00fa quieres alcanzar en cinco a\u00f1os. Consultar solo con pares que est\u00e1n donde t\u00fa est\u00e1s te da compa\u00f1\u00eda, no perspectiva.' },\n        { t: 'Reciprocidad de valor previo', d: 'No pidas tiempo sin aportar algo: env\u00eda un prospecto calificado, un dato de su sector, una herramienta que le ahorre trabajo. La puerta se abre con lo que das antes de pedir.' },\n        { t: 'Si\u00e9ntate donde seas el menos experimentado', d: 'Si en tu mesa eres el referente indiscutible, la mesa te est\u00e1 frenando. Invierte en espacios de mayor nivel aunque incomoden: ah\u00ed es donde cambia tu criterio.' },\n        { t: 'Contrapeso cr\u00edtico formal', d: 'Un consejo consultivo, un mentor o un par con recorrido que revise tus decisiones importantes una vez al mes y tenga permiso expl\u00edcito de contradecirte.' }\n      ],\n      compromiso: 'Agendar 2 conexiones estrat\u00e9gicas al mes, con una pregunta concreta y un aporte previo.',\n      tareas: [\n        'Tengo una lista escrita de 3 mentores o consejeros objetivo y les he escrito algo \u00fatil.',\n        'Tengo una reuni\u00f3n mensual fija con alguien que me contradice con fundamento.',\n        'Entr\u00e9 (o agend\u00e9 entrar) a un espacio donde soy de los menos experimentados.',\n        'Di de alta un registro simple de a qui\u00e9n ayud\u00e9 este mes y a qui\u00e9n puedo conectar.'\n      ]\n    },\n    {\n      n: 2,\n      titulo: 'Profesionalizaci\u00f3n continua',\n      subtitulo: 'Conocimiento y habilidades cr\u00edticas',\n      tesis: 'El instinto comercial valida la idea; solo el conocimiento t\u00e9cnico y la gobernanza sostienen una empresa. La diferencia entre crecer y estancarse suele ser una sola habilidad que no se domina: n\u00fameros, sistemas, ventas o tecnolog\u00eda.',\n      puntos: [\n        { t: 'Bloque de oro: 5 horas semanales', d: 'Un espacio inamovible en el calendario. Sustituye el consumo pasivo de redes por estudio disciplinado: finanzas, liderazgo, ventas, operaciones o inteligencia artificial.' },\n        { t: 'Las cuatro disciplinas base', d: '(a) Finanzas duras: flujo de caja proyectado, margen y capital de trabajo. (b) Sistemas: procesos escritos para delegar. (c) IA y automatizaci\u00f3n: productividad y reducci\u00f3n de costos. (d) Ventas complejas: negociaci\u00f3n y ciclos largos.' },\n        { t: 'Auditor\u00eda de aplicaci\u00f3n', d: 'Aprender sin ejecutar genera ilusi\u00f3n de progreso. Cada concepto nuevo debe convertirse en un procedimiento, un indicador o una decisi\u00f3n concreta en menos de 30 d\u00edas.' },\n        { t: 'Formaci\u00f3n trimestral formal', d: 'Un curso, un taller o una mentor\u00eda pagada cada tres meses, elegida por la brecha que m\u00e1s te cuesta dinero hoy, no por lo que suena interesante.' }\n      ],\n      compromiso: 'Un libro t\u00e9cnico al mes y una capacitaci\u00f3n formal al trimestre, cada una con su cambio aplicado.',\n      tareas: [\n        'Bloque\u00e9 en el calendario mis 5 horas semanales de estudio, con nombre y hora.',\n        'Eleg\u00ed el tema del mes por su impacto en dinero, no por gusto.',\n        'Convert\u00ed el \u00faltimo aprendizaje en un procedimiento, un indicador o una decisi\u00f3n.',\n        'Agend\u00e9 mi formaci\u00f3n formal del pr\u00f3ximo trimestre.'\n      ]\n    },\n    {\n      n: 3,\n      titulo: 'Foco y descarte',\n      subtitulo: 'Decidir qu\u00e9 NO hacer',\n      tesis: 'Tu recurso m\u00e1s caro no es el dinero: es tu atenci\u00f3n. Un negocio sin filtro crece en desorden: m\u00e1s clientes que no encajan, m\u00e1s proyectos a medias y una agenda que decide por ti. El crecimiento empieza cuando aprendes a decir no con criterio.',\n      puntos: [\n        { t: 'Criterios escritos de cliente', d: 'Define en media p\u00e1gina c\u00f3mo es tu cliente ideal y, sobre todo, c\u00f3mo NO es. Sin ese filtro, cada pedido raro se convierte en una excepci\u00f3n que te cuesta margen.' },\n        { t: 'Una lista de lo que dejas de hacer', d: 'Cada trimestre, revisa tus servicios, tus canales y tus clientes. Marca el 20% que da el 80% del margen y pon fecha de salida ordenada a lo que solo da desgaste.' },\n        { t: 'La regla del no informado', d: 'Aprende a rechazar sin da\u00f1ar la relaci\u00f3n: agradece, explica en una frase por qu\u00e9 no encaja y deja una puerta abierta. Cuesta menos que un proyecto mal vendido.' },\n        { t: 'Bloques de trabajo profundo', d: 'Dos bloques a la semana sin interrupciones para lo que de verdad mueve el negocio. Lo urgente siempre gana si no le pones puerta cerrada.' }\n      ],\n      compromiso: 'Un \u00abno\u00bb con criterio al mes y una hora semanal revisando qu\u00e9 est\u00e1s haciendo que ya no vale la pena.',\n      tareas: [\n        'Escrib\u00ed mis criterios de cliente ideal y de cliente que no acepto.',\n        'Identifiqu\u00e9 el servicio o canal que m\u00e1s desgaste da y menos margen deja, con fecha de salida.',\n        'Tengo preparada mi frase para decir no sin da\u00f1ar la relaci\u00f3n y ya la us\u00e9 una vez.',\n        'Bloque\u00e9 en el calendario dos espacios de trabajo profundo a la semana.'\n      ]\n    },\n    {\n      n: 4,\n      titulo: 'Sistemas y delegaci\u00f3n real',\n      subtitulo: 'La empresa que funciona sin el due\u00f1o',\n      tesis: 'Repartir tareas no es delegar: delegar es transferir decisiones con reglas claras. Mientras todo lo importante pase por tu cabeza, el negocio tiene el tama\u00f1o de tu agenda y no del mercado.',\n      puntos: [\n        { t: 'Un procedimiento por mes', d: 'Elige la tarea que m\u00e1s se repite, escr\u00edbela paso a paso (con capturas o un video de dos minutos) y entr\u00e9nala con alguien. Al a\u00f1o son doce procesos fuera de tu cabeza.' },\n        { t: 'Delegar decisiones, no tareas', d: 'Define hasta d\u00f3nde puede decidir cada persona sin consultarte: montos, tipo de caso y cu\u00e1ndo s\u00ed deben llamarte. Sin l\u00edmites claros, el equipo consulta todo y t\u00fa sigues siendo el cuello de botella.' },\n        { t: 'Un tablero simple', d: 'Un lugar \u2014una hoja, un tablero, un grupo de WhatsApp\u2014 donde se vea qu\u00e9 est\u00e1 pendiente, qui\u00e9n lo tiene y para cu\u00e1ndo. No hace falta software caro: hace falta que exista.' },\n        { t: 'La prueba de las dos semanas', d: 'Reserva dos semanas fuera y anota todo lo que se detuvo. Esa lista es tu plan de sistematizaci\u00f3n de los pr\u00f3ximos seis meses.' }\n      ],\n      compromiso: 'Un procedimiento escrito y una decisi\u00f3n transferida cada mes, con la prueba de las dos semanas una vez al a\u00f1o.',\n      tareas: [\n        'Escrib\u00ed el procedimiento de la tarea que m\u00e1s repito y lo entren\u00e9 con alguien.',\n        'Defin\u00ed l\u00edmites de decisi\u00f3n por persona (montos y casos) y se los comuniqu\u00e9.',\n        'Arm\u00e9 un tablero simple donde se ve qu\u00e9 est\u00e1 pendiente y qui\u00e9n lo tiene.',\n        'Agend\u00e9 en el calendario la prueba de las dos semanas fuera del negocio.'\n      ]\n    },\n    {\n      n: 5,\n      titulo: 'Disciplina de n\u00fameros',\n      subtitulo: 'Una hora a la semana que decide m\u00e1s que cualquier reuni\u00f3n',\n      tesis: 'La mayor\u00eda de negocios peque\u00f1os no quiebran por vender poco, sino por no ver a tiempo lo que estaba pasando. Cuarenta y cinco minutos cada lunes mirando tres n\u00fameros evitan decisiones tomadas con miedo o con ilusi\u00f3n.',\n      puntos: [\n        { t: 'La cita de los lunes', d: 'Cuarenta y cinco minutos, siempre el mismo d\u00eda: cu\u00e1nto dinero entr\u00f3, cu\u00e1nto sali\u00f3 y cu\u00e1nto est\u00e1 pendiente de cobro. Si no est\u00e1 en el calendario, no ocurre.' },\n        { t: 'Los tres n\u00fameros del mes', d: 'Margen real por l\u00ednea (lo que de verdad dejas despu\u00e9s de todos los costos), semanas de caja (cu\u00e1ntas aguantas sin cobrar nada) y cu\u00e1nto de tu tiempo se va en tareas que otro podr\u00eda hacer.' },\n        { t: 'Reserva antes de gastar', d: 'Separa en el momento en que cobras: impuestos, un colch\u00f3n para meses flojos y tu propio pago. Lo que sobra despu\u00e9s de eso es lo que se puede invertir.' },\n        { t: 'Una hoja, no un sistema', d: 'Con una hoja de c\u00e1lculo bien armada se gobierna un negocio peque\u00f1o. La herramienta no es el problema: el problema es mirarla. Empieza simple y no la cambies cada mes.' }\n      ],\n      compromiso: 'Cuarenta y cinco minutos cada lunes con los tres n\u00fameros, y la reserva de impuestos separada desde el primer d\u00eda.',\n      tareas: [\n        'Agend\u00e9 la cita de los lunes a una hora fija y no la muevo.',\n        'Calcul\u00e9 mi margen real por producto o servicio (incluido mi tiempo).',\n        'S\u00e9 cu\u00e1ntas semanas de caja tengo hoy y cu\u00e1l es mi meta.',\n        'Abr\u00ed una cuenta o sobre separado para impuestos y reserva.'\n      ]\n    }\n  ];\n\n  \/* \u2500\u2500 4. ESTADO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  const CLAVE_GUARDADO = 'vela_arquitectura_emprendedor_v2';\n  const estado = { respuestas: {}, tareas: {} };\n\n  const $ = (sel) => document.querySelector(sel);\n  const $$ = (sel) => Array.prototype.slice.call(document.querySelectorAll(sel));\n\n  function avisar(texto) {\n    const t = $('#brindis');\n    t.textContent = texto;\n    t.classList.add('visible');\n    clearTimeout(avisar._t);\n    avisar._t = setTimeout(() => t.classList.remove('visible'), 2600);\n  }\n\n  \/* \u2500\u2500 5. PINTAR EL CUESTIONARIO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function pintarPreguntas() {\n    const cont = $('#lista-preguntas');\n    cont.innerHTML = PREGUNTAS.map((p) => {\n      const dim = DIMENSIONES.find((d) => d.id === p.dim);\n      const opciones = p.nivel.map((texto, i) => `\n        <button type=\"button\" class=\"opcion\" role=\"radio\" aria-pressed=\"false\"\n                data-pregunta=\"${p.id}\" data-valor=\"${i + 1}\"\n                aria-label=\"Nivel ${i + 1} de 5: ${escapar(texto).slice(0, 80)}\">\n          <span class=\"nivel\">${i + 1}<\/span>\n          <span class=\"texto\">${escapar(texto)}<\/span>\n        <\/button>`).join('');\n      return `\n      <article class=\"pregunta\" id=\"pregunta-${p.id}\">\n        <div class=\"pregunta-cabecera\">\n          <div class=\"pregunta-titulo\">\n            <span class=\"pregunta-numero\">${p.num}<\/span>\n            <div>\n              <h3>${escapar(p.titulo)}<\/h3>\n              <span class=\"pastilla pastilla-indigo micro\">${dim.icono} ${escapar(dim.nombre)}<\/span>\n            <\/div>\n          <\/div>\n          <span class=\"pastilla pastilla-gris micro\" id=\"marca-${p.id}\">Sin responder<\/span>\n        <\/div>\n        <p class=\"dilema\">${escapar(p.dilema)}<\/p>\n        <div class=\"realidad\"><strong>La realidad inc\u00f3moda:<\/strong> ${escapar(p.realidad)}<\/div>\n        <div class=\"opciones\" role=\"radiogroup\" aria-label=\"${escapar(p.titulo)}\">${opciones}<\/div>\n        <div id=\"detalle-${p.id}\"><\/div>\n      <\/article>`;\n    }).join('');\n  }\n\n  function escapar(s) {\n    return String(s == null ? '' : s)\n      .replace(\/&\/g, '&amp;').replace(\/<\/g, '&lt;').replace(\/>\/g, '&gt;')\n      .replace(\/\"\/g, '&quot;').replace(\/'\/g, '&#39;');\n  }\n\n  \/* \u2500\u2500 6. C\u00c1LCULOS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function respondidas() {\n    return PREGUNTAS.filter((p) => estado.respuestas[p.id]).length;\n  }\n  function puntaje(filtro) {\n    const lista = filtro ? PREGUNTAS.filter(filtro) : PREGUNTAS;\n    return lista.reduce((suma, p) => suma + (estado.respuestas[p.id] || 0), 0);\n  }\n  function porcentaje(valor, maximo) {\n    return maximo ? Math.round((valor \/ maximo) * 100) : 0;\n  }\n  function nivelGlobal(total) {\n    if (total >= 40) return { clave: 'solido', nombre: 'Arquitectura madura', pastilla: 'pastilla-verde' };\n    if (total >= 25) return { clave: 'transicion', nombre: 'En transici\u00f3n', pastilla: 'pastilla-ambar' };\n    return { clave: 'critico', nombre: 'Zona cr\u00edtica', pastilla: 'pastilla-rojo' };\n  }\n  function nivelDimension(pct) {\n    if (pct >= 80) return { texto: 'S\u00f3lida', pastilla: 'pastilla-verde' };\n    if (pct >= 50) return { texto: 'En transici\u00f3n', pastilla: 'pastilla-ambar' };\n    return { texto: 'Cr\u00edtica', pastilla: 'pastilla-rojo' };\n  }\n  function consejoDe(p, valor) {\n    if (valor <= 2) return { clave: 'bajo', etiqueta: 'Nivel cr\u00edtico' };\n    if (valor === 3) return { clave: 'medio', etiqueta: 'Nivel en transici\u00f3n' };\n    return { clave: 'alto', etiqueta: 'Nivel s\u00f3lido' };\n  }\n\n  \/* \u2500\u2500 7. REFRESCAR INTERFAZ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function refrescar() {\n    const total = puntaje(null);\n    const n = respondidas();\n    const pct = porcentaje(total, 50);\n\n    $('#puntaje-global').textContent = total;\n    $('#pct-global').textContent = pct + '%';\n    $('#contador-respuestas').textContent = n + ' de 10 respondidas';\n    const barraCabecera = $('#barra-cabecera');\n    barraCabecera.className = 'barra ' + (total >= 40 ? 'barra-verde' : total >= 25 ? 'barra-ambar' : 'barra-rojo');\n    barraCabecera.firstElementChild.style.width = pct + '%';\n    const nivel = nivelGlobal(total);\n    const insignia = $('#insignia-nivel');\n    insignia.className = 'pastilla ' + (n === 0 ? 'pastilla-gris' : nivel.pastilla);\n    insignia.textContent = n === 0 ? 'Sin responder' : nivel.nombre + ' \u00b7 ' + n + '\/10';\n\n    $('#barra-cuestionario').style.width = porcentaje(n, 10) + '%';\n    $('#texto-progreso').textContent = n === 0\n      ? 'Empieza por la pregunta 1. Se guarda solo.'\n      : (n < 10 ? 'Te faltan ' + (10 - n) + ' preguntas. El veredicto ya se calcula con lo que llevas.' : 'Cuestionario completo. Mira tu veredicto.');\n\n    PREGUNTAS.forEach((p) => {\n      const valor = estado.respuestas[p.id];\n      $$('.opcion[data-pregunta=\"' + p.id + '\"]').forEach((b) => {\n        b.setAttribute('aria-pressed', String(Number(b.dataset.valor) === Number(valor)));\n      });\n      const marca = $('#marca-' + p.id);\n      const tarjeta = $('#pregunta-' + p.id);\n      if (valor) {\n        tarjeta.classList.add('respondida');\n        const c = consejoDe(p, valor);\n        marca.className = 'pastilla micro ' + (valor <= 2 ? 'pastilla-rojo' : valor === 3 ? 'pastilla-ambar' : 'pastilla-verde');\n        marca.textContent = valor + '\/5 \u00b7 ' + c.etiqueta;\n        $('#detalle-' + p.id).innerHTML =\n          '<div class=\"consejo\"><strong>' + c.etiqueta + ':<\/strong> ' + escapar(p.consejo[c.clave]) + '<\/div>' +\n          '<div class=\"primer-paso\"><strong>Primer paso:<\/strong> ' + escapar(p.paso) + '<\/div>';\n      } else {\n        tarjeta.classList.remove('respondida');\n        marca.className = 'pastilla pastilla-gris micro';\n        marca.textContent = 'Sin responder';\n        $('#detalle-' + p.id).innerHTML = '';\n      }\n    });\n\n    refrescarVeredicto();\n    refrescarPlan();\n    guardar();\n  }\n\n  function refrescarVeredicto() {\n    const total = puntaje(null);\n    const n = respondidas();\n    const pct = porcentaje(total, 50);\n    const nivel = nivelGlobal(total);\n\n    $('#veredicto-puntaje').textContent = total;\n    $('#veredicto-pct').textContent = pct + '%';\n    $('#veredicto-insignia').innerHTML = '<span class=\"pastilla ' + nivel.pastilla + '\" style=\"font-size:.9rem; padding:.4rem 1rem\">' +\n      (n === 0 ? 'A\u00fan sin datos' : nivel.nombre + ' (' + total + ' de 50 puntos)') + '<\/span>';\n\n    const lecturas = {\n      solido: 'Tienes fundamentos: prop\u00f3sito claro, operaci\u00f3n que no depende de tu presencia, una red que te corrige y disciplina de aprendizaje. El siguiente salto no es trabajar m\u00e1s, es escalar lo que ya funciona: sistematizar, delegar decisiones y elegir mejor con qui\u00e9n crecer.',\n      transicion: 'Hay tracci\u00f3n, pero el techo est\u00e1 en los sistemas y en las relaciones. Vendes y operas, y aun as\u00ed todo pasa por ti. Prioriza documentar procesos, ordenar n\u00fameros y construir el contrapeso que te falta.',\n      critico: 'Est\u00e1s sosteniendo el negocio con esfuerzo personal y eso tiene fecha de vencimiento. Antes de cualquier plan de crecimiento, atiende lo b\u00e1sico: margen y caja, una tarea delegada de verdad y alguien con criterio que te diga la verdad.'\n    };\n    $('#veredicto-nivel').textContent = nivel.nombre;\n    $('#veredicto-lectura').textContent = lecturas[nivel.clave];\n\n    const aviso = $('#aviso-veredicto');\n    if (n === 0) {\n      aviso.innerHTML = '<div class=\"aviso\"><strong>Responde al menos una pregunta<\/strong> para ver tu veredicto. Puedes empezar por la pregunta 1 y volver aqu\u00ed cuando quieras: el resultado se recalcula solo.<\/div>';\n    } else if (n < 10) {\n      aviso.innerHTML = '<div class=\"aviso\">Veredicto calculado con <strong>' + n + ' de 10<\/strong> respuestas. Las que faltan no cuentan ni a favor ni en contra; para el diagn\u00f3stico completo, resp\u00f3ndelas todas.<\/div>';\n    } else {\n      aviso.innerHTML = '<div class=\"aviso ok\"><strong>Cuestionario completo.<\/strong> Este veredicto ya refleja tu realidad tal como la describiste.<\/div>';\n    }\n\n    \/* dimensiones *\/\n    $('#dimensiones').innerHTML = DIMENSIONES.map((d) => {\n      const suyas = PREGUNTAS.filter((p) => p.dim === d.id);\n      const hechas = suyas.filter((p) => estado.respuestas[p.id]).length;\n      const max = suyas.length * 5;\n      const pctDim = porcentaje(puntaje((p) => p.dim === d.id), max);\n      const nd = nivelDimension(pctDim);\n      return '<div class=\"dimension\">' +\n        '<div class=\"encabezado\"><span class=\"nombre\">' + d.icono + ' ' + escapar(d.nombre) + '<\/span>' +\n        '<span class=\"valor\">' + pctDim + '%<\/span><\/div>' +\n        '<div class=\"barra ' + (pctDim >= 80 ? 'barra-verde' : pctDim >= 50 ? 'barra-ambar' : 'barra-rojo') + '\"><span style=\"width:' + pctDim + '%\"><\/span><\/div>' +\n        '<div class=\"micro gris\">' + escapar(d.resumen) + '<\/div>' +\n        '<div style=\"margin-top:.5rem\"><span class=\"pastilla ' + nd.pastilla + ' micro\">' + nd.texto + '<\/span>' +\n        (hechas < suyas.length ? ' <span class=\"pastilla pastilla-gris micro\">' + hechas + '\/' + suyas.length + ' respondidas<\/span>' : '') + '<\/div>' +\n        '<div class=\"micro gris\" style=\"margin-top:.5rem\"><strong>Referencia:<\/strong> ' + escapar(d.referencia) + '<\/div>' +\n        '<\/div>';\n    }).join('');\n\n    \/* cuello de botella *\/\n    const respondidasLista = PREGUNTAS.filter((p) => estado.respuestas[p.id]);\n    if (!respondidasLista.length) {\n      $('#cuello-texto').textContent = 'Responde el cuestionario para identificar tu cuello de botella: la pregunta con la calificaci\u00f3n m\u00e1s baja se\u00f1ala el punto que hoy frena todo lo dem\u00e1s.';\n    } else {\n      const peor = respondidasLista.slice().sort((a, b) => estado.respuestas[a.id] - estado.respuestas[b.id])[0];\n      const dim = DIMENSIONES.find((d) => d.id === peor.dim);\n      $('#cuello-texto').innerHTML = '<strong>' + escapar(peor.titulo) + '<\/strong> (' + dim.nombre.toLowerCase() +\n        ', ' + estado.respuestas[peor.id] + '\/5). ' + escapar(peor.consejo[consejoDe(peor, estado.respuestas[peor.id]).clave]);\n    }\n\n    \/* fortalezas y alertas *\/\n    const fuertes = respondidasLista.filter((p) => estado.respuestas[p.id] >= 4).sort((a, b) => estado.respuestas[b.id] - estado.respuestas[a.id]);\n    const debiles = respondidasLista.filter((p) => estado.respuestas[p.id] <= 2).sort((a, b) => estado.respuestas[a.id] - estado.respuestas[b.id]);\n    $('#fortalezas').innerHTML = fuertes.length\n      ? fuertes.map((p) => '<div class=\"fortaleza\"><strong>' + escapar(p.titulo) + '<\/strong> \u2014 ' + escapar(p.consejo.alto) + '<\/div>').join('')\n      : '<div class=\"alerta\">Todav\u00eda no hay fortalezas marcadas (niveles 4 o 5). No es un juicio: es el punto de partida.<\/div>';\n    $('#alertas').innerHTML = debiles.length\n      ? debiles.map((p) => '<div class=\"alerta\"><strong>' + escapar(p.titulo) + '<\/strong> \u2014 ' + escapar(p.consejo.bajo) + '<\/div>').join('')\n      : '<div class=\"fortaleza\">Sin alertas cr\u00edticas: ninguna respuesta qued\u00f3 en nivel 1 o 2. Mant\u00e9n el ritmo y sube las que est\u00e1n en 3.<\/div>';\n\n    \/* prioridades *\/\n    const orden = respondidasLista.slice().sort((a, b) => estado.respuestas[a.id] - estado.respuestas[b.id]).slice(0, 5);\n    $('#prioridades').innerHTML = orden.length\n      ? orden.map((p, i) => {\n          const dim = DIMENSIONES.find((d) => d.id === p.dim);\n          return '<div class=\"prioridad\"><span class=\"orden\">' + (i + 1) + '<\/span><div>' +\n            '<strong>' + escapar(p.titulo) + '<\/strong> <span class=\"pastilla pastilla-gris micro\">' + dim.corto +\n            '<\/span> <span class=\"pastilla ' + (estado.respuestas[p.id] <= 2 ? 'pastilla-rojo' : 'pastilla-ambar') +\n            ' micro\">' + estado.respuestas[p.id] + '\/5<\/span><\/div><\/div>';\n        }).join('')\n      : '<p class=\"gris chico\">El orden de intervenci\u00f3n aparece cuando respondas las preguntas.<\/p>';\n\n    \/* prescripciones *\/\n    $('#prescripciones').innerHTML = PREGUNTAS.map((p) => {\n      const valor = estado.respuestas[p.id];\n      if (!valor) {\n        return '<div class=\"prioridad\"><span class=\"orden\" style=\"background:#e2ddf9; color:#696687\">' + p.num + '<\/span><div>' +\n          '<strong>' + escapar(p.titulo) + '<\/strong><div class=\"chico gris\">Sin responder: elige un nivel para ver la prescripci\u00f3n.<\/div><\/div><\/div>';\n      }\n      const c = consejoDe(p, valor);\n      return '<div class=\"prioridad\"><span class=\"orden\">' + p.num + '<\/span><div>' +\n        '<strong>' + escapar(p.titulo) + '<\/strong> <span class=\"pastilla ' +\n        (valor <= 2 ? 'pastilla-rojo' : valor === 3 ? 'pastilla-ambar' : 'pastilla-verde') + ' micro\">' + valor + '\/5<\/span>' +\n        '<div class=\"chico\">' + escapar(p.consejo[c.clave]) + '<\/div><\/div><\/div>';\n    }).join('');\n  }\n\n  \/* \u2500\u2500 8. PLAN DE 30 D\u00cdAS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function refrescarPlan() {\n    const lista = PREGUNTAS.filter((p) => estado.respuestas[p.id]);\n    const cont = $('#plan');\n\n    if (!lista.length) {\n      cont.innerHTML = '<p class=\"gris\">Tu plan se arma con tus respuestas. Responde el cuestionario y vuelve aqu\u00ed: se llenar\u00e1 con los pasos de las preguntas donde hoy est\u00e1s m\u00e1s d\u00e9bil.<\/p>' +\n        '<div id=\"kpis-vacio\">' + kpisHTML() + '<\/div>';\n      $('#kpis').innerHTML = '';\n      return;\n    }\n\n    const peores = lista.slice().sort((a, b) => estado.respuestas[a.id] - estado.respuestas[b.id]);\n\n    \/* CADA PREGUNTA SALE UNA SOLA VEZ (arreglado el 2026-10-10).\n       Antes las tres etapas se calculaban por separado y una misma pregunta pod\u00eda cumplir dos\n       condiciones: su paso aparec\u00eda en \u00abD\u00edas 1-7\u00bb y otra vez en \u00abD\u00edas 8-15\u00bb. Carla lo vio con\n       \u00ab\u00bfPuedes desaparecer dos semanas?\u00bb y \u00ab\u00bfCon qui\u00e9n te sientas a la mesa?\u00bb.\n       Ahora se van marcando las usadas: cada etapa toma sus dos siguientes m\u00e1s flojas y, si a\n       alguna le faltan, se rellena con las que queden. Siempre seis acciones distintas. *\/\n    const usadas = {};\n    const tomar = (candidatas, cuantas) => {\n      const elegidas = candidatas.filter((p) => !usadas[p.id]).slice(0, cuantas);\n      elegidas.forEach((p) => { usadas[p.id] = true; });\n      return elegidas;\n    };\n    const urgentes = tomar(peores, 2);\n    const operativas = tomar(peores.filter((p) => p.dim === 'dim2' || p.dim === 'dim1'), 2);\n    const relacionales = tomar(peores.filter((p) => p.dim === 'dim3' || p.dim === 'dim4'), 2);\n    \/\/ Relleno: si una etapa se qued\u00f3 corta (porque sus dimensiones ya se usaron), se completa con\n    \/\/ las preguntas m\u00e1s flojas que a\u00fan no aparecen, para que el plan siempre traiga seis acciones.\n    const completar = (bloque) => (bloque.length >= 2 ? bloque : bloque.concat(tomar(peores, 2 - bloque.length)));\n    const etapas = [completar(urgentes), completar(operativas), completar(relacionales)];\n\n    const bloque = (titulo, subtitulo, items, cuando) => {\n      if (!items.length) return '';\n      return '<h3 style=\"margin-top:1.5rem\">' + titulo + '<\/h3><p class=\"gris chico\">' + subtitulo + '<\/p><ol class=\"pasos\">' +\n        items.map((p) => '<li><span class=\"cuando\">' + cuando + '<\/span><div><strong>' +\n          escapar(p.titulo) + '<\/strong><div class=\"chico\">' + escapar(p.paso) + '<\/div><\/div><\/li>').join('') + '<\/ol>';\n    };\n\n    cont.innerHTML =\n      bloque('D\u00edas 1 a 7 \u00b7 Lo primero', 'Lo que devuelve tiempo o dinero ya. No cuesta dinero: cuesta decidirlo.', etapas[0], 'D\u00edas 1-7') +\n      bloque('D\u00edas 8 a 15 \u00b7 Orden y n\u00fameros', 'Lo que te quita trabajo de encima: procesos escritos, margen claro y la caja a la vista.', etapas[1], 'D\u00edas 8-15') +\n      bloque('D\u00edas 16 a 30 \u00b7 Red y aprendizaje', 'Lo que sostiene el crecimiento cuando ya hay orden: quien te corrige y lo que estudias con horario.', etapas[2], 'D\u00edas 16-30') +\n      '<h3 style=\"margin-top:1.5rem\">Compromisos de los cinco aceleradores<\/h3>' +\n      '<div id=\"tareas-plan\"><\/div>';\n\n    \/* tareas marcables de los m\u00f3dulos *\/\n    const contenedorTareas = $('#tareas-plan');\n    if (contenedorTareas) {\n      contenedorTareas.innerHTML = MODULOS.map((m) => '<div style=\"margin-bottom:1rem\"><strong>' + m.n + '. ' + escapar(m.titulo) + '<\/strong>' +\n        m.tareas.map((t, i) => {\n          const clave = 'm' + m.n + '-' + i;\n          const hecha = !!estado.tareas[clave];\n          return '<label class=\"tarea' + (hecha ? ' hecha' : '') + '\"><input type=\"checkbox\" data-tarea=\"' + clave + '\"' + (hecha ? ' checked' : '') + '><span>' + escapar(t) + '<\/span><\/label>';\n        }).join('') + '<\/div>').join('');\n    }\n\n    $('#kpis').innerHTML = kpisHTML();\n  }\n\n  function kpisHTML() {\n    const definicion = [\n      ['Lo que de verdad ganas', 'Lo que cobras menos los costos, incluido tu tiempo. Decide qu\u00e9 vendes y qu\u00e9 dejas de vender.'],\n      ['Semanas de caja', 'Cu\u00e1ntas semanas aguantas sin cobrar nada nuevo. Si son menos de cuatro, es tu prioridad n\u00famero uno.'],\n      ['Tus horas en la operaci\u00f3n', 'Cu\u00e1nto de tu semana se va en tareas que otro podr\u00eda hacer con un procedimiento escrito. Tiene que bajar.'],\n      ['Decisiones sin ti', 'Cu\u00e1ntas cosas resolvi\u00f3 tu equipo sin consultarte. Si sube, est\u00e1 creciendo el negocio y no solo t\u00fa.']\n    ];\n    return definicion.map((k) => '<div class=\"kpi\"><div><strong>' + k[0] + '<\/strong><div class=\"micro gris\">' + k[1] + '<\/div><\/div>' +\n      '<div class=\"micro gris\" style=\"white-space:nowrap\">Valor actual: ______<br>Meta a 30 d\u00edas: ______<\/div><\/div>').join('');\n  }\n\n  \/* \u2500\u2500 9. ACELERADORES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function pintarModulos() {\n    \/* Cada acelerador lleva su propio tono pastel, en ciclo (Carla, 2026-10-10): as\u00ed los cinco se\n       distinguen de un golpe de vista y la paleta es la misma de las tarjetas del Buyer Persona. *\/\n    const TONOS = ['tono-lila', 'tono-azul', 'tono-amarillo', 'tono-verde', 'tono-rosa'];\n    $('#modulos').innerHTML = MODULOS.map((m, i) => `\n      <div class=\"tarjeta-modulo ${TONOS[i % TONOS.length]}\">\n        <div class=\"numero-modulo\">${m.n}<\/div>\n        <h3>${escapar(m.titulo)}<\/h3>\n        <p class=\"pastilla pastilla-indigo micro\" style=\"margin-bottom:.75rem\">${escapar(m.subtitulo)}<\/p>\n        <p>${escapar(m.tesis)}<\/p>\n        <div class=\"rejilla rejilla-2\">\n          ${m.puntos.map((pt) => `<div><h4 style=\"margin-bottom:.25rem\">${escapar(pt.t)}<\/h4><p class=\"chico gris\" style=\"margin:0\">${escapar(pt.d)}<\/p><\/div>`).join('')}\n        <\/div>\n        <div class=\"primer-paso\" style=\"margin-top:1rem\"><strong>Compromiso de ejecuci\u00f3n:<\/strong> ${escapar(m.compromiso)}<\/div>\n      <\/div>`).join('');\n  }\n\n  \/* \u2500\u2500 10. GUARDAR \/ CARGAR \/ COMPARTIR \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function guardar() {\n    try {\n      localStorage.setItem(CLAVE_GUARDADO, JSON.stringify({ respuestas: estado.respuestas, tareas: estado.tareas }));\n    } catch (e) { \/* modo privado: la herramienta sigue funcionando sin guardar *\/ }\n  }\n\n  function cargar() {\n    \/* 1) respuestas en el enlace compartido (#r=q1-4,q2-3) *\/\n    let desdeEnlace = null;\n    try {\n      const hash = decodeURIComponent(window.location.hash || '');\n      const m = hash.match(\/r=([^&]+)\/);\n      if (m) {\n        desdeEnlace = {};\n        m[1].split(',').forEach((par) => {\n          const [id, v] = par.split('-');\n          if (id && v && Number(v) >= 1 && Number(v) <= 5) desdeEnlace[id] = Number(v);\n        });\n      }\n    } catch (e) { \/* enlace inv\u00e1lido: se ignora *\/ }\n\n    if (desdeEnlace && Object.keys(desdeEnlace).length) {\n      estado.respuestas = desdeEnlace;\n      avisar('Respuestas cargadas desde el enlace compartido.');\n      return;\n    }\n\n    \/* 2) respuestas guardadas en este navegador *\/\n    try {\n      const crudo = localStorage.getItem(CLAVE_GUARDADO);\n      if (!crudo) return;\n      const d = JSON.parse(crudo) || {};\n      if (d.respuestas) estado.respuestas = d.respuestas;\n      if (d.tareas) estado.tareas = d.tareas;\n    } catch (e) { \/* dato corrupto: se empieza limpio *\/ }\n  }\n\n  function enlaceConRespuestas() {\n    const partes = PREGUNTAS.filter((p) => estado.respuestas[p.id]).map((p) => p.id + '-' + estado.respuestas[p.id]);\n    const base = window.location.href.split('#')[0];\n    return partes.length ? base + '#r=' + partes.join(',') : base;\n  }\n\n  \/* \u2500\u2500 11. REPORTE EN TEXTO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function reporteTexto() {\n    const total = puntaje(null);\n    const n = respondidas();\n    const nivel = nivelGlobal(total);\n    const l = [];\n    l.push('ARQUITECTURA DEL EMPRENDEDOR \u2014 Diagn\u00f3stico');\n    l.push('Vela Producciones \u00b7 ' + new Date().toLocaleDateString('es-GT'));\n    l.push('');\n    l.push('PUNTAJE GLOBAL: ' + total + '\/50 (' + porcentaje(total, 50) + '% de solidez) \u00b7 ' + nivel.nombre);\n    l.push('Respondidas: ' + n + ' de 10');\n    l.push('');\n    l.push('SALUD POR DIMENSI\u00d3N');\n    DIMENSIONES.forEach((d) => {\n      const suyas = PREGUNTAS.filter((p) => p.dim === d.id);\n      const max = suyas.length * 5;\n      l.push('  - ' + d.nombre + ': ' + porcentaje(puntaje((p) => p.dim === d.id), max) + '%');\n    });\n    l.push('');\n    l.push('RESPUESTAS Y PRESCRIPCIONES');\n    PREGUNTAS.forEach((p) => {\n      const v = estado.respuestas[p.id];\n      l.push('  ' + p.num + '. ' + p.titulo);\n      l.push('     Nivel: ' + (v ? v + '\/5' : 'sin responder'));\n      if (v) {\n        l.push('     Le\u00eddo: ' + p.nivel[v - 1]);\n        l.push('     Recomendaci\u00f3n: ' + p.consejo[consejoDe(p, v).clave]);\n        l.push('     Primer paso: ' + p.paso);\n      }\n      l.push('');\n    });\n    l.push('ACELERADORES NO NEGOCIABLES');\n    MODULOS.forEach((m) => {\n      l.push('  ' + m.n + '. ' + m.titulo + ' \u2014 ' + m.compromiso);\n      m.tareas.forEach((t) => l.push('     [' + (estado.tareas['m' + m.n + '-' + m.tareas.indexOf(t)] ? 'x' : ' ') + '] ' + t));\n    });\n    l.push('');\n    l.push('Herramienta gratuita de Vela Producciones \u00b7 velaproducciones.com');\n    return l.join('\\n');\n  }\n\n  function copiar(texto, mensaje) {\n    const listo = () => avisar(mensaje);\n    if (navigator.clipboard && navigator.clipboard.writeText) {\n      navigator.clipboard.writeText(texto).then(listo, () => copiarViejo(texto, listo));\n    } else {\n      copiarViejo(texto, listo);\n    }\n  }\n  function copiarViejo(texto, listo) {\n    const ta = document.createElement('textarea');\n    ta.value = texto;\n    ta.setAttribute('readonly', '');\n    ta.style.position = 'absolute';\n    ta.style.left = '-9999px';\n    document.body.appendChild(ta);\n    ta.select();\n    try { document.execCommand('copy'); listo(); } catch (e) { avisar('No se pudo copiar: selecciona el texto a mano.'); }\n    document.body.removeChild(ta);\n  }\n\n  \/* \u2500\u2500 12. PESTA\u00d1AS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function mostrarPanel(id) {\n    \/\/ Guarda: si el id no es un panel de verdad, no se toca nada (antes se ocultaba todo).\n    if (!id || !document.getElementById(id)) { return; }\n    ['panel-cuestionario', 'panel-veredicto', 'panel-plan', 'panel-modulos'].forEach((p) => {\n      const el = document.getElementById(p);\n      if (el) el.classList.toggle('oculto', p !== id);\n    });\n    $$('.pestana[data-panel]').forEach((b) => {\n      const activa = b.dataset.panel === id;\n      b.classList.toggle('activa', activa);\n      b.setAttribute('aria-selected', String(activa));\n    });\n    window.scrollTo({ top: $('.pestanas').offsetTop - 20, behavior: 'smooth' });\n    if (id === 'panel-veredicto') refrescarVeredicto();\n    if (id === 'panel-plan') refrescarPlan();\n  }\n\n  \/* \u2500\u2500 13. EVENTOS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  function eventos() {\n    document.addEventListener('click', (e) => {\n      const opcion = e.target.closest('.opcion');\n      if (opcion) {\n        const id = opcion.dataset.pregunta;\n        const valor = Number(opcion.dataset.valor);\n        estado.respuestas[id] = (estado.respuestas[id] === valor) ? null : valor;\n        if (!estado.respuestas[id]) delete estado.respuestas[id];\n        refrescar();\n        return;\n      }\n      const tarea = e.target.closest('.tarea input[data-tarea]');\n      if (tarea) {\n        estado.tareas[tarea.dataset.tarea] = tarea.checked;\n        tarea.closest('.tarea').classList.toggle('hecha', tarea.checked);\n        guardar();\n        return;\n      }\n      \/\/ OJO: solo las pesta\u00f1as de verdad (.pestana[data-panel]). Los botones de acci\u00f3n comparten\n      \/\/ la clase para verse igual, y si entran aqu\u00ed llaman a mostrarPanel(undefined), que ocultaba\n      \/\/ TODAS las secciones: el ejemplo se cargaba pero la pantalla quedaba vac\u00eda.\n      const pestana = e.target.closest('.pestana[data-panel]');\n      if (pestana) { mostrarPanel(pestana.dataset.panel); return; }\n    });\n\n    $('#btn-veredicto').addEventListener('click', () => mostrarPanel('panel-veredicto'));\n    $('#btn-plan').addEventListener('click', () => mostrarPanel('panel-plan'));\n    $('#btn-volver-cuestionario').addEventListener('click', () => mostrarPanel('panel-cuestionario'));\n    $('#btn-volver-cuestionario-2').addEventListener('click', () => mostrarPanel('panel-cuestionario'));\n\n    $('#btn-imprimir').addEventListener('click', () => window.print());\n    $('#btn-imprimir-2').addEventListener('click', () => window.print());\n    $('#btn-copiar').addEventListener('click', () => copiar(reporteTexto(), 'Reporte copiado al portapapeles.'));\n    $('#btn-enlace').addEventListener('click', () => {\n      const url = enlaceConRespuestas();\n      window.history.replaceState(null, '', url);\n      copiar(url, 'Enlace copiado: quien lo abra ver\u00e1 tus respuestas.');\n    });\n\n    \/\/ Los botones de ARRIBA (0.1 y 0.2) disparan la misma acci\u00f3n que los de abajo: un solo c\u00f3digo.\n    ['btn-ejemplo-top', 'btn-reiniciar-top'].forEach((id) => {\n      const boton = document.getElementById(id);\n      if (!boton) { return; }\n      boton.addEventListener('click', () => {\n        const gemelo = document.getElementById(id === 'btn-ejemplo-top' ? 'btn-ejemplo' : 'btn-reiniciar');\n        if (gemelo) { gemelo.click(); }\n      });\n    });\n\n    $('#btn-reiniciar').addEventListener('click', () => {\n      if (!window.confirm('\u00bfBorrar todas tus respuestas y empezar de cero?')) return;\n      estado.respuestas = {};\n      estado.tareas = {};\n      window.history.replaceState(null, '', window.location.href.split('#')[0]);\n      try { localStorage.removeItem(CLAVE_GUARDADO); } catch (e) { \/* nada *\/ }\n      refrescar();\n      avisar('Listo: cuestionario en blanco.');\n    });\n\n    $('#btn-ejemplo').addEventListener('click', () => {\n      \/* Ejemplo realista: negocio con ventas pero sin sistemas ni red. *\/\n      estado.respuestas = { q1: 3, q2: 2, q3: 2, q4: 2, q5: 1, q6: 2, q7: 1, q8: 3, q9: 3, q10: 2 };\n      mostrarPanel('panel-cuestionario');   \/\/ que las respuestas se VEAN, no solo se carguen\n      refrescar();\n      avisar('Ejemplo cargado: las 10 respuestas est\u00e1n marcadas en azul. Rev\u00edsalas y cambia lo que quieras.');\n      const primera = document.getElementById('pregunta-q1');\n      if (primera && primera.scrollIntoView) { primera.scrollIntoView({ behavior: 'smooth', block: 'start' }); }\n    });\n  }\n\n  \/* \u2500\u2500 14. ARRANQUE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n  pintarPreguntas();\n  pintarModulos();\n  cargar();\n  eventos();\n  refrescar();\n})();\n<\/script>\n<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-17428","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Arquitectura del Emprendedor: test de realidad para tu negocio | Vela Producciones<\/title>\n<meta name=\"description\" content=\"Diagn\u00f3stico gratuito en 10 preguntas para saber si tu negocio escala o depende de ti: prop\u00f3sito, operaci\u00f3n, relaciones y aprendizaje. Con plan de 30 d\u00edas.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/velaproducciones.com\/en\/arquitectura-del-emprendedor\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arquitectura del Emprendedor: test de realidad para tu negocio | Vela Producciones\" \/>\n<meta property=\"og:description\" content=\"Diagn\u00f3stico gratuito en 10 preguntas para saber si tu negocio escala o depende de ti: prop\u00f3sito, operaci\u00f3n, relaciones y aprendizaje. Con plan de 30 d\u00edas.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/velaproducciones.com\/en\/arquitectura-del-emprendedor\/\" \/>\n<meta property=\"og:site_name\" content=\"Vela Producciones\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-16T20:17:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/velaproducciones.com\/wp-content\/uploads\/2024\/11\/vela-producciones.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1080\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/velaproducciones.com\\\/arquitectura-del-emprendedor\\\/\",\"url\":\"https:\\\/\\\/velaproducciones.com\\\/arquitectura-del-emprendedor\\\/\",\"name\":\"Arquitectura del Emprendedor: test de realidad para tu negocio | Vela Producciones\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/velaproducciones.com\\\/#website\"},\"datePublished\":\"2026-10-10T00:54:13+00:00\",\"dateModified\":\"2026-10-16T20:17:29+00:00\",\"description\":\"Diagn\u00f3stico gratuito en 10 preguntas para saber si tu negocio escala o depende de ti: prop\u00f3sito, operaci\u00f3n, relaciones y aprendizaje. Con plan de 30 d\u00edas.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/velaproducciones.com\\\/arquitectura-del-emprendedor\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/velaproducciones.com\\\/arquitectura-del-emprendedor\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/velaproducciones.com\\\/arquitectura-del-emprendedor\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/velaproducciones.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Arquitectura del Emprendedor\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/velaproducciones.com\\\/#website\",\"url\":\"https:\\\/\\\/velaproducciones.com\\\/\",\"name\":\"Vela Producciones\",\"description\":\"Creaci\u00f3n y Manejo de P\u00e1ginas WEB, Optimizaci\u00f3n SEO y de Estrategias de Marketing Digital\",\"publisher\":{\"@id\":\"https:\\\/\\\/velaproducciones.com\\\/#organization\"},\"alternateName\":\"VelaWeb\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/velaproducciones.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Organization\",\"LocalBusiness\",\"ProfessionalService\"],\"@id\":\"https:\\\/\\\/velaproducciones.com\\\/#organization\",\"name\":\"Vela Producciones\",\"alternateName\":[\"Grupo Vela S.A.\",\"Vela Producciones Guatemala\"],\"url\":\"https:\\\/\\\/velaproducciones.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/velaproducciones.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/velaproducciones.com\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Logo_Vela_Producciones-500x500-1.png\",\"contentUrl\":\"https:\\\/\\\/velaproducciones.com\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Logo_Vela_Producciones-500x500-1.png\",\"width\":540,\"height\":540,\"caption\":\"Grupo Vela S.A.\"},\"image\":{\"@id\":\"https:\\\/\\\/velaproducciones.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/velaproducciones\",\"https:\\\/\\\/www.instagram.com\\\/velawebproducciones\\\/\",\"https:\\\/\\\/www.facebook.com\\\/VelaWebProducciones\"],\"legalName\":\"Grupo Vela S.A.\",\"description\":\"Vela Producciones es la divisi\u00f3n comercial de Grupo Vela S.A. para marketing digital, producci\u00f3n audiovisual y eventos, en Ciudad de Guatemala. Estrategia, contenido, posicionamiento (SEO y visibilidad en asistentes de IA), pauta y producci\u00f3n, con medici\u00f3n.\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Edificio 01010, oficina 702\",\"addressLocality\":\"Ciudad de Guatemala\",\"addressRegion\":\"Guatemala\",\"postalCode\":\"01010\",\"addressCountry\":\"GT\"},\"telephone\":\"+502 2220-9556\",\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer service\",\"telephone\":\"+502 2220-9556\",\"areaServed\":\"GT\",\"availableLanguage\":[\"es\"]},{\"@type\":\"ContactPoint\",\"contactType\":\"sales\",\"telephone\":\"+1 305 447-7124\",\"areaServed\":\"US\",\"availableLanguage\":[\"es\",\"en\"]}],\"areaServed\":[{\"@type\":\"Country\",\"name\":\"Guatemala\"},{\"@type\":\"Country\",\"name\":\"Estados Unidos\"}],\"openingHoursSpecification\":[{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\"opens\":\"09:00\",\"closes\":\"17:00\"}],\"knowsAbout\":[\"Marketing digital\",\"Posicionamiento en buscadores (SEO)\",\"Visibilidad en asistentes de IA (GEO y AEO)\",\"Comercio electr\u00f3nico y WooCommerce\",\"Redes sociales\",\"Google Ads y Meta Ads\",\"Producci\u00f3n audiovisual\",\"Transmisi\u00f3n de eventos\",\"Fotograf\u00eda comercial\",\"Anal\u00edtica y medici\u00f3n\"],\"hasOfferCatalog\":{\"@type\":\"OfferCatalog\",\"name\":\"Servicios de Vela Producciones\",\"itemListElement\":[{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Desarrollo web y ecommerce\",\"description\":\"Sitios web, tiendas en l\u00ednea, optimizaci\u00f3n de velocidad y estructura t\u00e9cnica.\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Posicionamiento SEO\",\"description\":\"Optimizaci\u00f3n org\u00e1nica: investigaci\u00f3n de palabras clave, contenido, enlazado interno y t\u00e9cnico.\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"GEO y AEO (visibilidad en asistentes de IA)\",\"description\":\"Optimizaci\u00f3n para que ChatGPT, Gemini y Perplexity citen y recomienden la marca: datos estructurados, entidad consistente y medici\u00f3n.\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Redes sociales\",\"description\":\"Estrategia, producci\u00f3n de contenido y calendarizaci\u00f3n para Instagram, Facebook, TikTok y LinkedIn.\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Campa\u00f1as SEM y pauta digital\",\"description\":\"Google Ads, Meta Ads y TikTok Ads, con seguimiento de conversiones.\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Producci\u00f3n de video corporativo\",\"description\":\"Spots publicitarios, videos institucionales, reels y piezas narrativas para marca.\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Transmisiones y cobertura de eventos\",\"description\":\"Producci\u00f3n multic\u00e1mara, streaming en vivo y cobertura para eventos corporativos.\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Fotograf\u00eda comercial\",\"description\":\"Producto, corporativa y de eventos.\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Dise\u00f1o de marca e identidad visual\",\"description\":\"Logotipo, manual de marca y aplicaciones.\"}},{\"@type\":\"Offer\",\"itemOffered\":{\"@type\":\"Service\",\"name\":\"Anal\u00edtica y reportes\",\"description\":\"Configuraci\u00f3n de medici\u00f3n y reportes de resultados por canal.\"}}]}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arquitectura del Emprendedor: test de realidad para tu negocio | Vela Producciones","description":"Diagn\u00f3stico gratuito en 10 preguntas para saber si tu negocio escala o depende de ti: prop\u00f3sito, operaci\u00f3n, relaciones y aprendizaje. Con plan de 30 d\u00edas.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/velaproducciones.com\/en\/arquitectura-del-emprendedor\/","og_locale":"en_US","og_type":"article","og_title":"Arquitectura del Emprendedor: test de realidad para tu negocio | Vela Producciones","og_description":"Diagn\u00f3stico gratuito en 10 preguntas para saber si tu negocio escala o depende de ti: prop\u00f3sito, operaci\u00f3n, relaciones y aprendizaje. Con plan de 30 d\u00edas.","og_url":"https:\/\/velaproducciones.com\/en\/arquitectura-del-emprendedor\/","og_site_name":"Vela Producciones","article_modified_time":"2026-10-16T20:17:29+00:00","og_image":[{"width":1080,"height":1080,"url":"https:\/\/velaproducciones.com\/wp-content\/uploads\/2024\/11\/vela-producciones.png","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/velaproducciones.com\/arquitectura-del-emprendedor\/","url":"https:\/\/velaproducciones.com\/arquitectura-del-emprendedor\/","name":"Arquitectura del Emprendedor: test de realidad para tu negocio | Vela Producciones","isPartOf":{"@id":"https:\/\/velaproducciones.com\/#website"},"datePublished":"2026-10-10T00:54:13+00:00","dateModified":"2026-10-16T20:17:29+00:00","description":"Diagn\u00f3stico gratuito en 10 preguntas para saber si tu negocio escala o depende de ti: prop\u00f3sito, operaci\u00f3n, relaciones y aprendizaje. Con plan de 30 d\u00edas.","breadcrumb":{"@id":"https:\/\/velaproducciones.com\/arquitectura-del-emprendedor\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/velaproducciones.com\/arquitectura-del-emprendedor\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/velaproducciones.com\/arquitectura-del-emprendedor\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/velaproducciones.com\/"},{"@type":"ListItem","position":2,"name":"Arquitectura del Emprendedor"}]},{"@type":"WebSite","@id":"https:\/\/velaproducciones.com\/#website","url":"https:\/\/velaproducciones.com\/","name":"Vela Producciones","description":"Creaci\u00f3n y Manejo de P\u00e1ginas WEB, Optimizaci\u00f3n SEO y de Estrategias de Marketing Digital","publisher":{"@id":"https:\/\/velaproducciones.com\/#organization"},"alternateName":"VelaWeb","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/velaproducciones.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Organization","LocalBusiness","ProfessionalService"],"@id":"https:\/\/velaproducciones.com\/#organization","name":"Vela Producciones","alternateName":["Grupo Vela S.A.","Vela Producciones Guatemala"],"url":"https:\/\/velaproducciones.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/velaproducciones.com\/#\/schema\/logo\/image\/","url":"https:\/\/velaproducciones.com\/wp-content\/uploads\/2024\/11\/Logo_Vela_Producciones-500x500-1.png","contentUrl":"https:\/\/velaproducciones.com\/wp-content\/uploads\/2024\/11\/Logo_Vela_Producciones-500x500-1.png","width":540,"height":540,"caption":"Grupo Vela S.A."},"image":{"@id":"https:\/\/velaproducciones.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/velaproducciones","https:\/\/www.instagram.com\/velawebproducciones\/","https:\/\/www.facebook.com\/VelaWebProducciones"],"legalName":"Grupo Vela S.A.","description":"Vela Producciones es la divisi\u00f3n comercial de Grupo Vela S.A. para marketing digital, producci\u00f3n audiovisual y eventos, en Ciudad de Guatemala. Estrategia, contenido, posicionamiento (SEO y visibilidad en asistentes de IA), pauta y producci\u00f3n, con medici\u00f3n.","address":{"@type":"PostalAddress","streetAddress":"Edificio 01010, oficina 702","addressLocality":"Ciudad de Guatemala","addressRegion":"Guatemala","postalCode":"01010","addressCountry":"GT"},"telephone":"+502 2220-9556","contactPoint":[{"@type":"ContactPoint","contactType":"customer service","telephone":"+502 2220-9556","areaServed":"GT","availableLanguage":["es"]},{"@type":"ContactPoint","contactType":"sales","telephone":"+1 305 447-7124","areaServed":"US","availableLanguage":["es","en"]}],"areaServed":[{"@type":"Country","name":"Guatemala"},{"@type":"Country","name":"Estados Unidos"}],"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"09:00","closes":"17:00"}],"knowsAbout":["Marketing digital","Posicionamiento en buscadores (SEO)","Visibilidad en asistentes de IA (GEO y AEO)","Comercio electr\u00f3nico y WooCommerce","Redes sociales","Google Ads y Meta Ads","Producci\u00f3n audiovisual","Transmisi\u00f3n de eventos","Fotograf\u00eda comercial","Anal\u00edtica y medici\u00f3n"],"hasOfferCatalog":{"@type":"OfferCatalog","name":"Servicios de Vela Producciones","itemListElement":[{"@type":"Offer","itemOffered":{"@type":"Service","name":"Desarrollo web y ecommerce","description":"Sitios web, tiendas en l\u00ednea, optimizaci\u00f3n de velocidad y estructura t\u00e9cnica."}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Posicionamiento SEO","description":"Optimizaci\u00f3n org\u00e1nica: investigaci\u00f3n de palabras clave, contenido, enlazado interno y t\u00e9cnico."}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"GEO y AEO (visibilidad en asistentes de IA)","description":"Optimizaci\u00f3n para que ChatGPT, Gemini y Perplexity citen y recomienden la marca: datos estructurados, entidad consistente y medici\u00f3n."}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Redes sociales","description":"Estrategia, producci\u00f3n de contenido y calendarizaci\u00f3n para Instagram, Facebook, TikTok y LinkedIn."}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Campa\u00f1as SEM y pauta digital","description":"Google Ads, Meta Ads y TikTok Ads, con seguimiento de conversiones."}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Producci\u00f3n de video corporativo","description":"Spots publicitarios, videos institucionales, reels y piezas narrativas para marca."}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Transmisiones y cobertura de eventos","description":"Producci\u00f3n multic\u00e1mara, streaming en vivo y cobertura para eventos corporativos."}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Fotograf\u00eda comercial","description":"Producto, corporativa y de eventos."}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Dise\u00f1o de marca e identidad visual","description":"Logotipo, manual de marca y aplicaciones."}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Anal\u00edtica y reportes","description":"Configuraci\u00f3n de medici\u00f3n y reportes de resultados por canal."}}]}}]}},"_links":{"self":[{"href":"https:\/\/velaproducciones.com\/en\/wp-json\/wp\/v2\/pages\/17428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/velaproducciones.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/velaproducciones.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/velaproducciones.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/velaproducciones.com\/en\/wp-json\/wp\/v2\/comments?post=17428"}],"version-history":[{"count":5,"href":"https:\/\/velaproducciones.com\/en\/wp-json\/wp\/v2\/pages\/17428\/revisions"}],"predecessor-version":[{"id":17443,"href":"https:\/\/velaproducciones.com\/en\/wp-json\/wp\/v2\/pages\/17428\/revisions\/17443"}],"wp:attachment":[{"href":"https:\/\/velaproducciones.com\/en\/wp-json\/wp\/v2\/media?parent=17428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}