{"id":172,"date":"2026-09-04T21:36:00","date_gmt":"2026-09-04T21:36:00","guid":{"rendered":"https:\/\/meridiano60.com\/home\/?page_id=172"},"modified":"2026-09-04T21:47:30","modified_gmt":"2026-09-04T21:47:30","slug":"test-readiness-ia","status":"publish","type":"page","link":"https:\/\/meridiano60.com\/home\/test-readiness-ia\/","title":{"rendered":"Diag\u00f3stico de readiness para la IA Ag\u00e9ntica"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>\u00bfTu empresa est\u00e1 lista para IA ag\u00e9ntica? \u2014 Diagn\u00f3stico<\/title>\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=Spectral:ital,wght@0,400;0,500;0,600;0,700;1,400&#038;family=IBM+Plex+Sans:wght@400;500;600&#038;family=IBM+Plex+Mono:wght@400;500&#038;display=swap\" rel=\"stylesheet\">\n<style>\n  :root{\n    --ink:#16233B; --ink-soft:#2E4058; --paper:#FFFFFF; --paper-flat:#F2F2F2;\n    --line:#DCDCDC; --copper:#B5592E; --teal:#3C6E71;\n    --good:#5C7A52; --mid:#B4863A; --bad:#A8412E; --white:#FFFFFF;\n    --serif:'Spectral', Georgia, serif; --sans:'IBM Plex Sans', -apple-system, sans-serif; --mono:'IBM Plex Mono', monospace;\n  }\n  *{box-sizing:border-box;}\n  html,body{margin:0;padding:0;}\n  body{\n    background:var(--ink); color:var(--ink);\n    font-family:var(--sans); line-height:1.5;\n    min-height:100vh; display:flex; justify-content:center;\n    padding:0;\n  }\n  .stage{\n    width:100%; max-width:480px; background:var(--paper);\n    min-height:100vh; position:relative; overflow:hidden;\n    display:flex; flex-direction:column;\n  }\n\n  \/* ---------- progreso ---------- *\/\n  .progress-bar{ height:3px; background:var(--paper-flat); position:sticky; top:0; z-index:5; }\n  .progress-fill{ height:100%; background:var(--copper); width:0%; transition:width .35s ease; }\n\n  .top-meta{\n    display:flex; justify-content:space-between; align-items:center;\n    padding:16px 24px 0; font-family:var(--mono); font-size:11px; color:var(--ink-soft); letter-spacing:.02em;\n  }\n\n  \/* ---------- pantallas ---------- *\/\n  .screen{\n    display:none; flex:1; flex-direction:column; padding:20px 28px 32px;\n    animation: rise .35s ease;\n  }\n  .screen.active{ display:flex; }\n  #questions-mount{ display:contents; }\n  @keyframes rise{ from{ opacity:0; transform:translateY(10px);} to{ opacity:1; transform:translateY(0);} }\n  @media (prefers-reduced-motion: reduce){ .screen{ animation:none; } }\n\n  \/* --- portada --- *\/\n  #screen-intro{ justify-content:center; text-align:left; }\n  .kicker-line{ font-family:var(--mono); font-size:11.5px; color:var(--copper); margin-bottom:18px; }\n  #screen-intro h1{\n    font-family:var(--serif); font-weight:600; font-size:clamp(26px,7vw,34px);\n    margin:0 0 16px 0; color:var(--ink); max-width:15ch;\n  }\n  #screen-intro p{ font-size:15px; color:var(--ink-soft); max-width:38ch; margin:0 0 28px 0; }\n  .intro-facts{ display:flex; flex-direction:column; gap:10px; margin-bottom:34px; }\n  .intro-fact{ display:flex; gap:10px; font-size:13.5px; color:var(--ink-soft); }\n  .intro-fact::before{ content:\"\u2014\"; color:var(--copper); flex-shrink:0; }\n\n  \/* --- preguntas --- *\/\n  .block-label{ font-family:var(--mono); font-size:11px; color:var(--teal); letter-spacing:.03em; margin-bottom:14px; }\n  .question-text{\n    font-family:var(--serif); font-weight:600; font-size:clamp(21px,6vw,25px);\n    color:var(--ink); margin:0 0 30px 0; max-width:22ch;\n  }\n  .options{ display:flex; flex-direction:column; gap:10px; }\n  .option{\n    border:1px solid var(--line); background:var(--white); border-radius:2px;\n    padding:15px 16px; font-size:14.5px; color:var(--ink); text-align:left;\n    cursor:pointer; transition:border-color .15s ease, background .15s ease;\n    display:flex; justify-content:space-between; align-items:center; gap:10px;\n  }\n  .option:hover{ border-color:var(--ink-soft); }\n  .option.selected{ border-color:var(--copper); background:#FBF3EE; }\n  .option .mark{\n    width:16px; height:16px; border-radius:50%; border:1.5px solid var(--line);\n    flex-shrink:0; position:relative;\n  }\n  .option.selected .mark{ border-color:var(--copper); }\n  .option.selected .mark::after{\n    content:\"\"; position:absolute; inset:3px; border-radius:50%; background:var(--copper);\n  }\n\n  .nav-row{ margin-top:auto; padding-top:28px; display:flex; justify-content:space-between; align-items:center; }\n  .nav-btn{\n    font-family:var(--sans); font-size:13.5px; font-weight:500; border:none; cursor:pointer;\n    background:none; color:var(--ink-soft); padding:10px 4px;\n  }\n  .nav-btn.next{\n    background:var(--ink); color:var(--paper); padding:12px 22px; border-radius:2px;\n    opacity:.35; pointer-events:none; transition:opacity .15s ease;\n  }\n  .nav-btn.next.enabled{ opacity:1; pointer-events:auto; }\n  .nav-btn.next:hover.enabled{ background:var(--copper); }\n\n  .start-btn{\n    font-family:var(--sans); font-size:14.5px; font-weight:500; background:var(--copper);\n    color:var(--white); border:none; padding:14px 24px; border-radius:2px; cursor:pointer; width:100%;\n  }\n  .start-btn:hover{ background:#9C4A26; }\n\n  \/* --- resultado --- *\/\n  #screen-result{ align-items:center; text-align:center; padding-top:34px; }\n  .gauge-wrap{ width:230px; margin:0 auto 8px; }\n  .gauge-value{ font-family:var(--mono); font-size:13px; color:var(--ink-soft); margin-top:-6px; }\n  .band-name{\n    font-family:var(--serif); font-weight:600; font-size:23px; margin:14px 0 6px; color:var(--ink);\n  }\n  .band-sub{ font-size:13.5px; color:var(--ink-soft); max-width:34ch; margin:0 auto 26px; }\n\n  .breakdown{ width:100%; text-align:left; margin-bottom:26px; }\n  .breakdown-row{\n    display:flex; justify-content:space-between; align-items:center;\n    padding:9px 0; border-bottom:1px solid var(--line); font-size:13px; color:var(--ink-soft);\n  }\n  .breakdown-row b{ color:var(--ink); font-weight:500; }\n  .breakdown-tag{\n    font-family:var(--mono); font-size:10.5px; padding:2px 8px; border-radius:20px; color:var(--white);\n  }\n\n  \/* --- panel bloqueado --- *\/\n  .lockbox{\n    width:100%; border:1px solid var(--line); background:var(--paper-flat);\n    padding:22px 20px; position:relative; overflow:hidden; text-align:left;\n  }\n  .lockbox-blur{ filter:blur(5px); opacity:.55; user-select:none; pointer-events:none; }\n  .lockbox-blur p{ font-size:13px; color:var(--ink-soft); margin:0 0 8px; }\n  .lockbox-blur p:last-child{ margin-bottom:0; }\n  .lock-overlay{\n    position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center;\n    text-align:center; padding:24px; background:rgba(242,242,242,.92);\n  }\n  .lock-icon{ font-size:20px; margin-bottom:10px; }\n  .lock-title{ font-family:var(--serif); font-weight:600; font-size:17px; color:var(--ink); margin:0 0 6px; }\n  .lock-sub{ font-size:12.5px; color:var(--ink-soft); max-width:30ch; margin:0 0 18px; }\n  .unlock-btn{\n    font-family:var(--sans); font-size:14px; font-weight:500; background:var(--copper); color:var(--white);\n    border:none; padding:13px 22px; border-radius:2px; cursor:pointer; width:100%; max-width:260px;\n  }\n  .unlock-btn:hover{ background:#9C4A26; }\n  .code-toggle{\n    font-family:var(--mono); font-size:11px; color:var(--ink-soft); background:none; border:none;\n    cursor:pointer; margin-top:14px; text-decoration:underline; text-underline-offset:2px;\n  }\n  .code-row{ display:none; margin-top:12px; gap:8px; width:100%; max-width:280px; }\n  .code-row.open{ display:flex; }\n  .code-row input{\n    flex:1; font-family:var(--mono); font-size:13px; border:1px solid var(--line); border-radius:2px; padding:9px 10px;\n  }\n  .code-row button{\n    font-family:var(--sans); font-size:13px; border:1px solid var(--ink); background:var(--white);\n    padding:0 14px; border-radius:2px; cursor:pointer;\n  }\n  .code-error{ font-size:11.5px; color:var(--bad); margin-top:8px; display:none; }\n\n  \/* --- desbloqueado --- *\/\n  #unlocked-content{ display:none; width:100%; text-align:left; margin-top:6px; }\n  #unlocked-content.open{ display:block; }\n  .unlocked-block{ margin-bottom:20px; }\n  .unlocked-block h3{ font-family:var(--serif); font-size:15.5px; font-weight:600; margin:0 0 8px; color:var(--ink); }\n  .unlocked-block p, .unlocked-block li{ font-size:13.5px; color:var(--ink-soft); }\n  .unlocked-block ul{ margin:0; padding-left:18px; }\n  .unlocked-block li{ margin-bottom:5px; }\n  .restart-link{ font-family:var(--mono); font-size:11.5px; color:var(--ink-soft); text-align:center; margin-top:26px; display:block; }\n\n  .brand-foot{\n    text-align:center; font-family:var(--mono); font-size:10.5px; color:#8A806C;\n    padding:18px 24px 26px;\n  }\n<\/style>\n<\/head>\n<body>\n\n<div class=\"stage\">\n  <div class=\"progress-bar\"><div class=\"progress-fill\" id=\"progressFill\"><\/div><\/div>\n  <div class=\"top-meta\">\n    <span id=\"stepLabel\">Diagn\u00f3stico<\/span>\n    <span id=\"stepCount\"><\/span>\n  <\/div>\n\n  <!-- ============ PORTADA ============ -->\n  <div class=\"screen active\" id=\"screen-intro\">\n    <div class=\"kicker-line\">Assessment \u00b7 conocimiento organizacional<\/div>\n    <h1>\u00bfTu empresa est\u00e1 lista para atenci\u00f3n ag\u00e9ntica con IA?<\/h1>\n    <p>8 preguntas para saber si tu base de conocimiento va a sostener un asistente de IA, o si va a alucinar sobre informaci\u00f3n desactualizada.<\/p>\n    <div class=\"intro-facts\">\n      <div class=\"intro-fact\">El 73% de los despliegues de IA\/RAG fallan en el primer a\u00f1o por la base de conocimiento, no por el modelo.<\/div>\n      <div class=\"intro-fact\">El 42% del conocimiento cr\u00edtico vive solo en la cabeza de una persona.<\/div>\n      <div class=\"intro-fact\">Toma 2 minutos. Al final ves tu nivel de riesgo.<\/div>\n    <\/div>\n    <button class=\"start-btn\" onclick=\"goTo(1)\">Empezar diagn\u00f3stico<\/button>\n  <\/div>\n\n  <!-- ============ PREGUNTAS (generadas por JS) ============ -->\n  <div id=\"questions-mount\"><\/div>\n\n  <!-- ============ RESULTADO ============ -->\n  <div class=\"screen\" id=\"screen-result\">\n    <div class=\"gauge-wrap\">\n      <svg viewBox=\"0 0 220 130\" id=\"gaugeSvg\">\n        <path d=\"M 20 110 A 90 90 0 0 1 200 110\" fill=\"none\" stroke=\"#DCDCDC\" stroke-width=\"14\" stroke-linecap=\"round\"\/>\n        <path id=\"gaugeArc\" d=\"M 20 110 A 90 90 0 0 1 200 110\" fill=\"none\" stroke=\"var(--good)\" stroke-width=\"14\" stroke-linecap=\"round\"\n              stroke-dasharray=\"283\" stroke-dashoffset=\"283\" style=\"transition:stroke-dashoffset 1s ease, stroke 1s ease;\"\/>\n        <line id=\"gaugeNeedle\" x1=\"110\" y1=\"110\" x2=\"110\" y2=\"35\" stroke=\"var(--ink)\" stroke-width=\"3\" stroke-linecap=\"round\"\n              style=\"transform-origin:110px 110px; transform:rotate(-90deg); transition:transform 1s ease;\"\/>\n        <circle cx=\"110\" cy=\"110\" r=\"6\" fill=\"var(--ink)\"\/>\n      <\/svg>\n      <div class=\"gauge-value\" id=\"gaugeValue\">0 \/ 16 puntos de riesgo<\/div>\n    <\/div>\n\n    <div class=\"band-name\" id=\"bandName\">Calculando\u2026<\/div>\n    <div class=\"band-sub\" id=\"bandSub\"><\/div>\n\n    <div class=\"breakdown\" id=\"breakdown\"><\/div>\n\n    <div class=\"lockbox\">\n      <div class=\"lockbox-blur\">\n        <p><b>Plan de acci\u00f3n priorizado<\/b> seg\u00fan tus 3 respuestas de mayor riesgo, con el orden exacto en que abordarlas.<\/p>\n        <p><b>Comparativa<\/b> contra empresas de tu mismo tama\u00f1o que ya hicieron este diagn\u00f3stico.<\/p>\n        <p><b>Acceso<\/b> al mapa de conocimiento, checklist de gobernanza IA y plan de transferencia \u2014 las herramientas para resolver cada punto marcado.<\/p>\n      <\/div>\n      <div class=\"lock-overlay\">\n        <div class=\"lock-icon\">\ud83d\udd12<\/div>\n        <div class=\"lock-title\">Tu diagn\u00f3stico completo est\u00e1 listo<\/div>\n        <div class=\"lock-sub\">Desbloque\u00e1 el detalle, el plan de acci\u00f3n y las plantillas de trabajo.<\/div>\n        <button class=\"unlock-btn\" onclick=\"goToPayment()\">Desbloquear diagn\u00f3stico \u2014 $12.000<\/button>\n        <button class=\"code-toggle\" onclick=\"toggleCode()\">Ya pagu\u00e9, tengo un c\u00f3digo<\/button>\n        <div class=\"code-row\" id=\"codeRow\">\n          <input type=\"text\" id=\"codeInput\" placeholder=\"C\u00f3digo de acceso\" autocomplete=\"off\">\n          <button onclick=\"checkCode()\">Validar<\/button>\n        <\/div>\n        <div class=\"code-error\" id=\"codeError\">C\u00f3digo incorrecto. Revis\u00e1 el que te enviamos por DM.<\/div>\n      <\/div>\n    <\/div>\n\n    <div id=\"unlocked-content\">\n      <div class=\"unlocked-block\">\n        <h3>Tu plan de acci\u00f3n priorizado<\/h3>\n        <ul id=\"actionList\"><\/ul>\n      <\/div>\n      <div class=\"unlocked-block\">\n        <h3>Pr\u00f3ximo paso<\/h3>\n        <p>Con este resultado ya pod\u00e9s completar el mapa de conocimiento y el checklist de gobernanza de IA para poner fecha a cada punto marcado.<\/p>\n      <\/div>\n    <\/div>\n\n    <a class=\"restart-link\" onclick=\"restart()\" href=\"javascript:void(0)\">Volver a empezar<\/a>\n  <\/div>\n\n  <div class=\"brand-foot\">Diagn\u00f3stico de conocimiento organizacional \u00b7 uso interno de referencia<\/div>\n<\/div>\n\n<script>\n  \/* =========================================================\n     CONFIGURACI\u00d3N \u2014 editar ac\u00e1\n     ========================================================= *\/\n  const PAYMENT_URL = \"https:\/\/tu-link-de-pago.com\"; \/\/ reemplazar por el link real (Gumroad \/ Hotmart \/ Stripe Payment Link)\n  const VALID_CODES = [\"DESBLOQUEO2026\"]; \/\/ c\u00f3digos que envi\u00e1s manualmente por DM tras confirmar el pago\n\n  \/* =========================================================\n     PREGUNTAS\n     value = puntos de riesgo (0 = mejor, 2 = peor)\n     ========================================================= *\/\n  const questions = [\n    {\n      block: \"Concentraci\u00f3n de conocimiento\",\n      text: \"\u00bfHay alg\u00fan proceso cr\u00edtico que dependa por completo de una sola persona?\",\n      options: [\n        { label: \"No, est\u00e1 repartido en el equipo\", value: 0 },\n        { label: \"Parcialmente, en 1 o 2 procesos\", value: 1 },\n        { label: \"S\u00ed, en varios procesos clave\", value: 2 }\n      ]\n    },\n    {\n      block: \"Concentraci\u00f3n de conocimiento\",\n      text: \"Si esa persona se fuera ma\u00f1ana, \u00bfel equipo podr\u00eda seguir operando sin fricci\u00f3n?\",\n      options: [\n        { label: \"S\u00ed, sin problema\", value: 0 },\n        { label: \"Con dificultad, pero s\u00ed\", value: 1 },\n        { label: \"No, se frenar\u00eda el proceso\", value: 2 }\n      ]\n    },\n    {\n      block: \"Calidad de la documentaci\u00f3n\",\n      text: \"\u00bfTus documentos internos muestran fecha de \u00faltima actualizaci\u00f3n?\",\n      options: [\n        { label: \"S\u00ed, en casi todos\", value: 0 },\n        { label: \"En algunos\", value: 1 },\n        { label: \"No lo sabemos\", value: 2 }\n      ]\n    },\n    {\n      block: \"Calidad de la documentaci\u00f3n\",\n      text: \"\u00bfSab\u00e9s qu\u00e9 porcentaje de tu base de conocimiento est\u00e1 desactualizado?\",\n      options: [\n        { label: \"S\u00ed, lo medimos\", value: 0 },\n        { label: \"Una estimaci\u00f3n aproximada\", value: 1 },\n        { label: \"No tenemos idea\", value: 2 }\n      ]\n    },\n    {\n      block: \"Fragmentaci\u00f3n de herramientas\",\n      text: \"\u00bfEn cu\u00e1ntas plataformas distintas vive la informaci\u00f3n de tu equipo?\",\n      options: [\n        { label: \"1 sola, centralizada\", value: 0 },\n        { label: \"Entre 2 y 4\", value: 1 },\n        { label: \"5 o m\u00e1s\", value: 2 }\n      ]\n    },\n    {\n      block: \"Fragmentaci\u00f3n de herramientas\",\n      text: \"\u00bfExiste una b\u00fasqueda \u00fanica, o cada \u00e1rea busca por su cuenta?\",\n      options: [\n        { label: \"B\u00fasqueda unificada\", value: 0 },\n        { label: \"Parcialmente unificada\", value: 1 },\n        { label: \"Cada \u00e1rea busca por separado\", value: 2 }\n      ]\n    },\n    {\n      block: \"Medici\u00f3n\",\n      text: \"\u00bfMed\u00eds cu\u00e1nto tiempo pierde tu equipo buscando informaci\u00f3n que ya existe?\",\n      options: [\n        { label: \"S\u00ed, con datos concretos\", value: 0 },\n        { label: \"Alguna vez, sin seguimiento\", value: 1 },\n        { label: \"No lo medimos\", value: 2 }\n      ]\n    },\n    {\n      block: \"Gobernanza de IA\",\n      text: \"Antes de dar acceso a un asistente de IA a tus documentos, \u00bften\u00e9s un proceso para curar y mantener esa base al d\u00eda?\",\n      options: [\n        { label: \"S\u00ed, est\u00e1 definido\", value: 0 },\n        { label: \"Est\u00e1 en planes\", value: 1 },\n        { label: \"No existe ese proceso\", value: 2 }\n      ]\n    }\n  ];\n\n  const answers = new Array(questions.length).fill(null);\n  let currentScreen = 0; \/\/ 0 = intro, 1..N = preguntas, N+1 = resultado\n  const totalScreens = questions.length + 2;\n\n  \/* ---------- construir preguntas ---------- *\/\n  const mount = document.getElementById('questions-mount');\n  questions.forEach((q, i) => {\n    const div = document.createElement('div');\n    div.className = 'screen';\n    div.id = 'q-' + i;\n    let optionsHtml = q.options.map((opt, oi) => `\n      <div class=\"option\" data-value=\"${opt.value}\" onclick=\"selectOption(${i}, ${oi}, this)\">\n        <span>${opt.label}<\/span>\n        <span class=\"mark\"><\/span>\n      <\/div>\n    `).join('');\n    div.innerHTML = `\n      <div class=\"block-label\">${q.block}<\/div>\n      <div class=\"question-text\">${q.text}<\/div>\n      <div class=\"options\">${optionsHtml}<\/div>\n      <div class=\"nav-row\">\n        <button class=\"nav-btn\" onclick=\"goTo(${i})\">Atr\u00e1s<\/button>\n        <button class=\"nav-btn next\" id=\"next-${i}\" onclick=\"goTo(${i + 2})\">Siguiente<\/button>\n      <\/div>\n    `;\n    mount.appendChild(div);\n  });\n\n  function selectOption(qIndex, optIndex, el){\n    answers[qIndex] = questions[qIndex].options[optIndex].value;\n    const parent = el.parentElement;\n    Array.from(parent.children).forEach(c => c.classList.remove('selected'));\n    el.classList.add('selected');\n    document.getElementById('next-' + qIndex).classList.add('enabled');\n  }\n\n  function allScreenEls(){\n    return [\n      document.getElementById('screen-intro'),\n      ...questions.map((_, i) => document.getElementById('q-' + i)),\n      document.getElementById('screen-result')\n    ];\n  }\n\n  function goTo(index){\n    const screens = allScreenEls();\n    screens.forEach(s => s.classList.remove('active'));\n    screens[index].classList.add('active');\n    currentScreen = index;\n\n    const pct = Math.round((index \/ (totalScreens - 1)) * 100);\n    document.getElementById('progressFill').style.width = pct + '%';\n\n    const stepLabel = document.getElementById('stepLabel');\n    const stepCount = document.getElementById('stepCount');\n    if(index === 0){\n      stepLabel.textContent = 'Diagn\u00f3stico';\n      stepCount.textContent = '';\n    } else if(index === totalScreens - 1){\n      stepLabel.textContent = 'Resultado';\n      stepCount.textContent = '';\n      computeResult();\n    } else {\n      stepLabel.textContent = questions[index - 1].block;\n      stepCount.textContent = index + ' \/ ' + questions.length;\n    }\n    window.scrollTo(0,0);\n  }\n\n  \/* ---------- resultado ---------- *\/\n  function computeResult(){\n    const score = answers.reduce((s, v) => s + (v ?? 0), 0);\n    const max = questions.length * 2;\n\n    document.getElementById('gaugeValue').textContent = score + ' \/ ' + max + ' puntos de riesgo';\n\n    let band, sub, color;\n    if(score <= 5){\n      band = 'Listo para pilotar';\n      sub = 'Tu base de conocimiento tiene buen respaldo. Pod\u00e9s avanzar con un piloto de IA acotado y controlado.';\n      color = 'var(--good)';\n    } else if(score <= 10){\n      band = 'Riesgo moderado';\n      sub = 'Hay puntos ciegos que un asistente de IA va a heredar. Conviene resolverlos antes de escalar el piloto.';\n      color = 'var(--mid)';\n    } else {\n      band = 'Alto riesgo';\n      sub = 'Lanzar un asistente de IA hoy amplificar\u00eda problemas ya existentes en vez de resolverlos.';\n      color = 'var(--bad)';\n    }\n\n    document.getElementById('bandName').textContent = band;\n    document.getElementById('bandSub').textContent = sub;\n\n    \/\/ gauge: 0 -> -90deg, max -> 90deg ; arc offset 283 -> 0\n    const frac = score \/ max;\n    const offset = 283 - (283 * frac);\n    const angle = -90 + (180 * frac);\n    setTimeout(() => {\n      const arc = document.getElementById('gaugeArc');\n      arc.style.strokeDashoffset = offset;\n      arc.style.stroke = color;\n      document.getElementById('gaugeNeedle').style.transform = `rotate(${angle}deg)`;\n    }, 100);\n\n    \/\/ breakdown por bloque\n    const blocks = {};\n    questions.forEach((q, i) => {\n      if(!blocks[q.block]) blocks[q.block] = { total: 0, max: 0 };\n      blocks[q.block].total += answers[i] ?? 0;\n      blocks[q.block].max += 2;\n    });\n    const breakdownEl = document.getElementById('breakdown');\n    breakdownEl.innerHTML = '';\n    const actionList = [];\n    Object.entries(blocks).forEach(([name, v]) => {\n      const pctBlock = v.total \/ v.max;\n      let tag, tagColor;\n      if(pctBlock <= 0.25){ tag='Bajo'; tagColor='var(--good)'; }\n      else if(pctBlock <= 0.65){ tag='Medio'; tagColor='var(--mid)'; actionList.push(name); }\n      else { tag='Alto'; tagColor='var(--bad)'; actionList.unshift(name); }\n\n      const row = document.createElement('div');\n      row.className = 'breakdown-row';\n      row.innerHTML = `<b>${name}<\/b><span class=\"breakdown-tag\" style=\"background:${tagColor}\">${tag}<\/span>`;\n      breakdownEl.appendChild(row);\n    });\n\n    const actionListEl = document.getElementById('actionList');\n    actionListEl.innerHTML = actionList.length\n      ? actionList.map(a => `<li>${a}<\/li>`).join('')\n      : '<li>Ning\u00fan \u00e1rea en riesgo alto o medio \u2014 manten\u00e9 la revisi\u00f3n cada 6 meses.<\/li>';\n  }\n\n  \/* ---------- desbloqueo ---------- *\/\n  function goToPayment(){\n    window.open(PAYMENT_URL, '_blank');\n  }\n  function toggleCode(){\n    document.getElementById('codeRow').classList.toggle('open');\n  }\n  function checkCode(){\n    const val = document.getElementById('codeInput').value.trim().toUpperCase();\n    const errorEl = document.getElementById('codeError');\n    if(VALID_CODES.includes(val)){\n      errorEl.style.display = 'none';\n      document.querySelector('.lockbox').style.display = 'none';\n      document.getElementById('unlocked-content').classList.add('open');\n    } else {\n      errorEl.style.display = 'block';\n    }\n  }\n\n  function restart(){\n    answers.fill(null);\n    document.querySelectorAll('.option.selected').forEach(o => o.classList.remove('selected'));\n    document.querySelectorAll('.nav-btn.next').forEach(b => b.classList.remove('enabled'));\n    document.querySelector('.lockbox').style.display = 'block';\n    document.getElementById('unlocked-content').classList.remove('open');\n    goTo(0);\n  }\n<\/script>\n\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfTu empresa est\u00e1 lista para IA ag\u00e9ntica? \u2014 Diagn\u00f3stico Diagn\u00f3stico Assessment \u00b7 conocimiento organizacional \u00bfTu empresa est\u00e1 lista para atenci\u00f3n ag\u00e9ntica con IA? 8 preguntas para saber si tu base de conocimiento va a sostener un asistente de IA, o si va a alucinar sobre informaci\u00f3n desactualizada. El 73% de los despliegues de IA\/RAG fallan [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-172","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/meridiano60.com\/home\/wp-json\/wp\/v2\/pages\/172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/meridiano60.com\/home\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/meridiano60.com\/home\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/meridiano60.com\/home\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/meridiano60.com\/home\/wp-json\/wp\/v2\/comments?post=172"}],"version-history":[{"count":3,"href":"https:\/\/meridiano60.com\/home\/wp-json\/wp\/v2\/pages\/172\/revisions"}],"predecessor-version":[{"id":181,"href":"https:\/\/meridiano60.com\/home\/wp-json\/wp\/v2\/pages\/172\/revisions\/181"}],"wp:attachment":[{"href":"https:\/\/meridiano60.com\/home\/wp-json\/wp\/v2\/media?parent=172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}