{"id":983,"date":"2026-08-20T02:22:47","date_gmt":"2026-08-20T07:22:47","guid":{"rendered":"https:\/\/nucleo.miespaciodigital.net\/?page_id=983"},"modified":"2026-09-09T00:01:33","modified_gmt":"2026-09-09T05:01:33","slug":"tablero-general","status":"publish","type":"page","link":"https:\/\/miespaciodigital.net\/auditoria\/","title":{"rendered":"Tablero General"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"983\" class=\"elementor elementor-983\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c9b98fa e-con e-atomic-element e-flexbox-base e-46fe582 \" data-id=\"c9b98fa\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"c9b98fa\" data-e-type=\"e-flexbox\" data-id=\"c9b98fa\">\n    <div class=\"elementor-element elementor-element-2588bcf e-con e-atomic-element e-flexbox-base \" data-id=\"2588bcf\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2588bcf\" data-e-type=\"e-flexbox\" data-id=\"2588bcf\">\n    \t\t<div class=\"elementor-element elementor-element-11625c7 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"11625c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\r\n<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>N\u00facleo \u2014 Tablero General<\/title>\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n  :root{\r\n    --ink:#132029;\r\n    --ink-soft:#3d4d55;\r\n    --paper:#F4F2EC;\r\n    --paper-raised:#FFFFFF;\r\n    --line:#DDD8CB;\r\n    --navy:#12303D;\r\n    --navy-soft:#1C3E4E;\r\n    --gold:#C98A3B;\r\n    --gold-soft:#E8C899;\r\n    --green:#3A7D57;\r\n    --green-bg:#E4EEE6;\r\n    --amber:#B8862F;\r\n    --amber-bg:#F2E9D6;\r\n    --red:#B4432B;\r\n    --red-bg:#F3E1DB;\r\n    --radius:14px;\r\n    --shadow: 0 1px 2px rgba(19,32,41,0.06), 0 8px 24px -12px rgba(19,32,41,0.18);\r\n  }\r\n  *{box-sizing:border-box;}\r\n  html,body{margin:0;padding:0;}\r\n  body{\r\n    background:var(--paper);\r\n    color:var(--ink);\r\n    font-family:'IBM Plex Sans', sans-serif;\r\n    -webkit-font-smoothing:antialiased;\r\n  }\r\n  .app{\r\n    display:grid;\r\n    width:100vw;\r\nmax-width:100vw;\r\nbox-sizing:border-box;\r\n    grid-template-columns:260px 1fr;\r\n    min-height:100vh;\r\n  }\r\n\r\n  \/* SIDEBAR *\/\r\n  .sidebar{\r\n    background:var(--navy);\r\n    color:#EDEBE2;\r\n    padding:28px 20px 20px;\r\n    display:flex;\r\n    flex-direction:column;\r\n    gap:28px;\r\n  }\r\n  .brand{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:10px;\r\n  }\r\n  .brand-mark{\r\n    width:34px;height:34px;border-radius:50%;\r\n    background:radial-gradient(circle at 35% 30%, var(--gold-soft), var(--gold) 60%);\r\n    box-shadow: inset 0 0 0 2px rgba(255,255,255,0.25);\r\n    flex-shrink:0;\r\n  }\r\n  .brand-name{\r\n    font-family:'Fraunces', serif;\r\n    font-weight:600;\r\n    font-size:1.25rem;\r\n    letter-spacing:0.01em;\r\n  }\r\n  .brand-sub{\r\n    font-size:0.7rem;\r\n    color:#9FB2BC;\r\n    letter-spacing:0.06em;\r\n    text-transform:uppercase;\r\n    margin-top:-22px;\r\n    margin-left:44px;\r\n  }\r\n  nav{display:flex;flex-direction:column;gap:2px;margin-top:6px;}\r\n  .nav-item{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:10px;\r\n    padding:10px 12px;\r\n    border-radius:8px;\r\n    font-size:0.87rem;\r\n    color:#C7D3D8;\r\n    text-decoration:none;\r\n    cursor:pointer;\r\n    transition:background 0.15s ease, color 0.15s ease;\r\n  }\r\n  .nav-item .num{\r\n    font-family:'IBM Plex Mono', monospace;\r\n    font-size:0.72rem;\r\n    color:#7C929B;\r\n    width:16px;\r\n  }\r\n  .nav-item:hover{background:rgba(255,255,255,0.06); color:#fff;}\r\n  .nav-item.active{\r\n    background:var(--navy-soft);\r\n    color:#fff;\r\n    box-shadow: inset 3px 0 0 var(--gold);\r\n  }\r\n  .nav-item.active .num{color:var(--gold);}\r\n  .nav-sub{margin-left:26px; display:flex; flex-direction:column; gap:1px;}\r\n  .nav-sub .nav-item{font-size:0.8rem; padding:7px 12px; color:#9FB2BC;}\r\n\r\n  .sidebar-footer{\r\n    margin-top:auto;\r\n    font-size:0.72rem;\r\n    color:#7C929B;\r\n    padding-top:16px;\r\n    border-top:1px solid rgba(255,255,255,0.1);\r\n  }\r\n\r\n  \/* MAIN *\/\r\n  main{padding:32px 40px 60px; max-width:1180px;}\r\n  .topbar{\r\n    display:flex;\r\n    justify-content:space-between;\r\n    align-items:flex-start;\r\n    margin-bottom:30px;\r\n    flex-wrap:wrap;\r\n    gap:16px;\r\n  }\r\n  .eyebrow{\r\n    font-family:'IBM Plex Mono', monospace;\r\n    font-size:0.72rem;\r\n    letter-spacing:0.08em;\r\n    text-transform:uppercase;\r\n    color:var(--gold);\r\n    margin-bottom:6px;\r\n  }\r\n  h1{\r\n    font-family:'Fraunces', serif;\r\n    font-weight:600;\r\n    font-size:2rem;\r\n    margin:0;\r\n    color:var(--navy);\r\n  }\r\n  .subtitle{color:var(--ink-soft); font-size:0.95rem; margin-top:6px;}\r\n  .user-chip{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:10px;\r\n    background:var(--paper-raised);\r\n    border:1px solid var(--line);\r\n    border-radius:999px;\r\n    padding:6px 14px 6px 6px;\r\n    box-shadow:var(--shadow);\r\n  }\r\n  .user-avatar{\r\n    width:30px;height:30px;border-radius:50%;\r\n    background:var(--navy);\r\n    color:#EDEBE2;\r\n    display:flex;align-items:center;justify-content:center;\r\n    font-size:0.75rem;font-weight:600;\r\n    font-family:'IBM Plex Mono',monospace;\r\n  }\r\n  .user-chip .name{font-size:0.82rem;font-weight:500;}\r\n  .user-chip .role{font-size:0.72rem;color:var(--ink-soft);}\r\n\r\n  \/* CORE \/ SIGNATURE ELEMENT *\/\r\n  .core-section{\r\n    background:var(--paper-raised);\r\n    border:1px solid var(--line);\r\n    border-radius:var(--radius);\r\n    box-shadow:var(--shadow);\r\n    padding:32px;\r\n    display:grid;\r\n    grid-template-columns:auto 1fr;\r\n    gap:40px;\r\n    align-items:center;\r\n    margin-bottom:28px;\r\n  }\r\n  .core-ring-wrap{position:relative; width:200px; height:200px;}\r\n  .core-ring-wrap svg{width:100%;height:100%;}\r\n  .core-center{\r\n    position:absolute; inset:0;\r\n    display:flex; flex-direction:column;\r\n    align-items:center; justify-content:center;\r\n  }\r\n  .core-center .total{\r\n    font-family:'Fraunces', serif;\r\n    font-size:2.6rem;\r\n    font-weight:600;\r\n    color:var(--navy);\r\n    line-height:1;\r\n  }\r\n  .core-center .label{\r\n    font-size:0.68rem;\r\n    text-transform:uppercase;\r\n    letter-spacing:0.06em;\r\n    color:var(--ink-soft);\r\n    margin-top:4px;\r\n  }\r\n  .core-legend{display:flex; flex-direction:column; gap:14px;}\r\n  .core-legend h2{\r\n    font-family:'Fraunces', serif;\r\n    font-size:1.15rem;\r\n    margin:0 0 4px;\r\n    color:var(--navy);\r\n    font-weight:600;\r\n  }\r\n  .core-legend .desc{font-size:0.85rem;color:var(--ink-soft); margin-bottom:6px; max-width:46ch;}\r\n  .legend-row{display:flex; align-items:center; gap:12px;}\r\n  .legend-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0;}\r\n  .legend-text{font-size:0.88rem;}\r\n  .legend-count{font-family:'IBM Plex Mono',monospace; font-weight:500; margin-left:auto;}\r\n\r\n  \/* GRID CARDS *\/\r\n  .kpi-grid{\r\n    display:grid;\r\n    grid-template-columns:repeat(4,1fr);\r\n    gap:16px;\r\n    margin-bottom:28px;\r\n  }\r\n  .kpi-card{\r\n    background:var(--paper-raised);\r\n    border:1px solid var(--line);\r\n    border-radius:var(--radius);\r\n    padding:20px;\r\n    box-shadow:var(--shadow);\r\n    position:relative;\r\n    overflow:hidden;\r\n  }\r\n  .kpi-card::before{\r\n    content:\"\";\r\n    position:absolute; top:0; left:0; right:0; height:3px;\r\n  }\r\n  .kpi-card.green::before{background:var(--green);}\r\n  .kpi-card.amber::before{background:var(--amber);}\r\n  .kpi-card.red::before{background:var(--red);}\r\n  .kpi-card.neutral::before{background:var(--navy);}\r\n  .kpi-label{font-size:0.78rem; color:var(--ink-soft); margin-bottom:8px;}\r\n  .kpi-value{\r\n    font-family:'Fraunces', serif;\r\n    font-size:2.1rem;\r\n    font-weight:600;\r\n  }\r\n  .kpi-card.green .kpi-value{color:var(--green);}\r\n  .kpi-card.amber .kpi-value{color:var(--amber);}\r\n  .kpi-card.red .kpi-value{color:var(--red);}\r\n  .kpi-card.neutral .kpi-value{color:var(--navy);}\r\n  .kpi-caption{font-size:0.76rem; color:var(--ink-soft); margin-top:6px;}\r\n\r\n  \/* TWO COLUMN: alerts + quick access *\/\r\n  .cols{display:grid; grid-template-columns:1.2fr 1fr; gap:20px;}\r\n  .panel{\r\n    background:var(--paper-raised);\r\n    border:1px solid var(--line);\r\n    border-radius:var(--radius);\r\n    box-shadow:var(--shadow);\r\n    padding:24px;\r\n  }\r\n  .panel h3{\r\n    font-family:'Fraunces', serif;\r\n    font-size:1.05rem;\r\n    margin:0 0 16px;\r\n    color:var(--navy);\r\n    font-weight:600;\r\n    display:flex; align-items:center; justify-content:space-between;\r\n  }\r\n  .panel h3 .count{\r\n    font-family:'IBM Plex Mono',monospace;\r\n    font-size:0.75rem;\r\n    color:#fff;\r\n    background:var(--red);\r\n    padding:2px 8px;\r\n    border-radius:999px;\r\n  }\r\n  .alert-item{\r\n    display:flex; gap:12px;\r\n    padding:12px 0;\r\n    border-bottom:1px solid var(--line);\r\n  }\r\n  .alert-item:last-child{border-bottom:none; padding-bottom:0;}\r\n  .alert-dot{\r\n    width:8px;height:8px;border-radius:50%;\r\n    margin-top:6px; flex-shrink:0;\r\n  }\r\n  .alert-dot.red{background:var(--red);}\r\n  .alert-dot.amber{background:var(--amber);}\r\n  .alert-title{font-size:0.88rem; font-weight:500;}\r\n  .alert-meta{font-size:0.76rem; color:var(--ink-soft); margin-top:2px;}\r\n  .alert-code{font-family:'IBM Plex Mono',monospace; font-size:0.72rem; color:var(--gold); margin-right:6px;}\r\n\r\n  .access-grid{display:flex; flex-direction:column; gap:10px;}\r\n  .access-item{\r\n    display:flex; align-items:center; gap:12px;\r\n    padding:12px 14px;\r\n    border:1px solid var(--line);\r\n    border-radius:10px;\r\n    text-decoration:none;\r\n    color:var(--ink);\r\n    transition:border-color 0.15s ease, transform 0.15s ease;\r\n    cursor:pointer;\r\n  }\r\n  .access-item:hover{border-color:var(--gold); transform:translateX(2px);}\r\n  .access-num{\r\n    font-family:'IBM Plex Mono',monospace;\r\n    font-size:0.75rem;\r\n    color:var(--gold);\r\n    width:20px;\r\n  }\r\n  .access-name{font-size:0.87rem; font-weight:500;}\r\n  .access-arrow{margin-left:auto; color:var(--ink-soft); font-size:0.9rem;}\r\n\r\n  .demo-note{\r\n    margin-top:24px;\r\n    font-size:0.78rem;\r\n    color:var(--ink-soft);\r\n    text-align:center;\r\n    padding:14px;\r\n    border:1px dashed var(--line);\r\n    border-radius:10px;\r\n    background:rgba(201,138,59,0.05);\r\n  }\r\n\r\n  @media (max-width:920px){\r\n    .app{grid-template-columns:1fr;}\r\n    .sidebar{display:none;}\r\n    .kpi-grid{grid-template-columns:repeat(2,1fr);}\r\n    .cols{grid-template-columns:1fr;}\r\n    .core-section{grid-template-columns:1fr; text-align:center;}\r\n    .core-legend{align-items:center;}\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"app\">\r\n\r\n  <aside class=\"sidebar\">\r\n <div class=\"brand\">\r\n  <img decoding=\"async\" src=\"https:\/\/miespaciodigital.net\/auditoria\/wp-content\/uploads\/2026\/09\/LOGO1.jpg\"\r\n       alt=\"N\u00daCLEO\"\r\n       style=\"width:100%; max-width:190px; height:auto; display:block;\">\r\n<\/div>\r\n\r\n   <nav>\r\n\r\n  <a class=\"nav-item active\"\r\n     href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/tablero-general\/\">\r\n    <span class=\"num\">01<\/span> Tablero General\r\n  <\/a>\r\n\r\n  <a class=\"nav-item\"\r\n     href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/atencion-ciudadana-tupa\/\">\r\n    <span class=\"num\">02<\/span> Atenci\u00f3n Ciudadana\r\n  <\/a>\r\n <a class=\"nav-item\"\r\n   href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/asistente-interno-ia\/\">\r\n  <span class=\"num\">03<\/span> Asistente Interno (IA)\r\n<\/a>\r\n  <a class=\"nav-item\">\r\n    <span class=\"num\">04<\/span> Gesti\u00f3n por Resultados\r\n  <\/a>\r\n\r\n  <div class=\"nav-sub\">\r\n\r\n    <a class=\"nav-item\"\r\n       href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/4-gestion-por-resultados\/acciones-correctivas-2\/\">\r\n      Acciones Correctivas\r\n    <\/a>\r\n\r\n    <a class=\"nav-item\"\r\n       href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/4-gestion-por-resultados\/indicadores-kpi-2\/\">\r\n      Indicadores KPI\r\n    <\/a>\r\n\r\n    <a class=\"nav-item\"\r\n       href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/4-gestion-por-resultados\/matriz-raci-v2\/\">\r\n      Matriz RACI\r\n    <\/a>\r\n\r\n    <a class=\"nav-item\"\r\n       href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/4-gestion-por-resultados\/metas-y-linea-base-2\/\">\r\n      Metas y L\u00ednea Base\r\n    <\/a>\r\n\r\n    <a class=\"nav-item\"\r\n       href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/4-gestion-por-resultados\/seguimiento-de-resultados\/\">\r\n      Seguimiento de Resultados-v2\r\n    <\/a>\r\n\r\n  <\/div>\r\n\r\n  <a class=\"nav-item\"\r\n     href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/5-planeamiento-y-presupuesto\/\">\r\n    <span class=\"num\">05<\/span> Planeamiento y Presupuesto\r\n  <\/a>\r\n\r\n  <a class=\"nav-item\"\r\n     href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/auditoria-y-control\/\">\r\n    <span class=\"num\">06<\/span> Auditor\u00eda y Control\r\n  <\/a>\r\n\r\n  <a class=\"nav-item\"\r\n     href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/informes-y-rendicion-sistema\/\">\r\n    <span class=\"num\">07<\/span> Informes y Rendici\u00f3n\r\n  <\/a>\r\n\r\n  <a class=\"nav-item\"\r\n     href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-organismos-de-gobierno\/\">\r\n    <span class=\"num\">08<\/span> Configuraci\u00f3n\r\n  <\/a>\r\n\r\n  <a class=\"nav-item\"\r\n     href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/ayuda-y-soporte-2\/\">\r\n    <span class=\"num\">09<\/span> Ayuda y Soporte\r\n  <\/a>\r\n<a class=\"nav-item\"\r\n   href=\"https:\/\/miespaciodigital.net\/auditoria\/anticorrupcion-y-meritocracia-con-nucleo\/\">\r\n  <span class=\"num\">10<\/span> Evoluci\u00f3n Estrat\u00e9gica\r\n<\/a>\r\n<a class=\"nav-item\"\r\n   href=\"https:\/\/miespaciodigital.net\/auditoria\/manual-de-operaciones-nucleo\/\">\r\n  <span class=\"num\">11<\/span> Manual de Operaciones\r\n<\/a>\r\n\r\n<a class=\"nav-item\"\r\n   href=\"https:\/\/miespaciodigital.net\/auditoria\/centro-de-ayuda-y-tutorial-nucleo\/\">\r\n  <span class=\"num\">12<\/span> Centro de Ayuda y Tutorial\r\n<\/a>\r\n<\/nav>\r\n    <div class=\"sidebar-footer\">\r\n      NUCLEO \u00b7 Gesti\u00f3n P\u00fablica con IA<br>\r\nSesi\u00f3n institucional segura\r\n    <\/div>\r\n  <\/aside>\r\n\r\n  <main>\r\n    <div class=\"topbar\">\r\n      <div>\r\n        <div class=\"eyebrow\">Tablero General<\/div>\r\n        <h1>Resumen de gesti\u00f3n institucional<\/h1>\r\n        <div class=\"subtitle\">Estado de metas, alertas y accesos r\u00e1pidos \u2014 actualizado hoy, 10:42 a.m.<\/div>\r\n      <\/div>\r\n      <div class=\"user-chip\">\r\n        <div class=\"user-avatar\">DM<\/div>\r\n        <div>\r\n          <div class=\"name\" id=\"nucleo-institucion-nombre\">Demo institucional<\/div>\r\n<div class=\"role\" id=\"nucleo-usuario-rol\">Gerente General<\/div>        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- SIGNATURE ELEMENT: nucleus ring -->\r\n    <section class=\"core-section\">\r\n      <div class=\"core-ring-wrap\">\r\n        <svg viewBox=\"0 0 200 200\">\r\n          <circle cx=\"100\" cy=\"100\" r=\"86\" fill=\"none\" stroke=\"#E9E5D8\" stroke-width=\"14\"\/>\r\n         <!-- green -->\r\n<circle id=\"nucleo-ring-verde\"\r\n  cx=\"100\" cy=\"100\" r=\"86\"\r\n  fill=\"none\"\r\n  stroke=\"#3A7D57\"\r\n  stroke-width=\"14\"\r\n  stroke-dasharray=\"336 540\"\r\n  stroke-dashoffset=\"0\"\r\n  stroke-linecap=\"round\"\r\n  transform=\"rotate(-90 100 100)\" \/>\r\n\r\n<!-- amber -->\r\n<circle id=\"nucleo-ring-amarillo\"\r\n  cx=\"100\" cy=\"100\" r=\"86\"\r\n  fill=\"none\"\r\n  stroke=\"#B8862F\"\r\n  stroke-width=\"14\"\r\n  stroke-dasharray=\"124 540\"\r\n  stroke-dashoffset=\"-336\"\r\n  stroke-linecap=\"round\"\r\n  transform=\"rotate(-90 100 100)\" \/>\r\n\r\n<!-- red -->\r\n<circle id=\"nucleo-ring-rojo\"\r\n  cx=\"100\" cy=\"100\" r=\"86\"\r\n  fill=\"none\"\r\n  stroke=\"#B4432B\"\r\n  stroke-width=\"14\"\r\n  stroke-dasharray=\"80 540\"\r\n  stroke-dashoffset=\"-460\"\r\n  stroke-linecap=\"round\"\r\n  transform=\"rotate(-90 100 100)\" \/>\r\n        <\/svg>\r\n        <div class=\"core-center\">\r\n        \r\n          <div class=\"total\" id=\"nucleo-total-metas\">26<\/div>\r\n          <div class=\"label\">Metas activas<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"core-legend\">\r\n        <h2>Avance general de la gesti\u00f3n<\/h2>\r\n        <div class=\"desc\">Cada meta institucional orbita este n\u00facleo seg\u00fan su estado. As\u00ed se ve, de un vistazo, si la gesti\u00f3n avanza como fue planificada.<\/div>\r\n        <div class=\"legend-row\">\r\n          <div class=\"legend-dot\" style=\"background:var(--green);\"><\/div>\r\n          <div class=\"legend-text\">Metas en verde \u2014 seg\u00fan lo planificado<\/div>\r\n          <div class=\"legend-count\" id=\"nucleo-legend-verdes\">16<\/div>\r\n        <\/div>\r\n        <div class=\"legend-row\">\r\n          <div class=\"legend-dot\" style=\"background:var(--amber);\"><\/div>\r\n          <div class=\"legend-text\">Metas en amarillo \u2014 con retraso o riesgo<\/div>\r\n         <div class=\"legend-count\" id=\"nucleo-legend-amarillas\">6<\/div>\r\n        <\/div>\r\n        <div class=\"legend-row\">\r\n          <div class=\"legend-dot\" style=\"background:var(--red);\"><\/div>\r\n          <div class=\"legend-text\">Metas en rojo \u2014 incumplidas o cr\u00edticas<\/div>\r\n          <div class=\"legend-count\" id=\"nucleo-legend-rojas\">4<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <!-- KPI CARDS -->\r\n    <div class=\"kpi-grid\">\r\n\r\n        <div class=\"kpi-card green\">\r\n  <div class=\"kpi-label\">Metas en verde<\/div>\r\n  <div class=\"kpi-value\" id=\"nucleo-card-verdes\">16<\/div>\r\n  <div class=\"kpi-caption\" id=\"nucleo-pct-verdes\">61.5% del total<\/div>\r\n<\/div>\r\n\r\n<div class=\"kpi-card amber\">\r\n  <div class=\"kpi-label\">Metas en amarillo<\/div>\r\n  <div class=\"kpi-value\" id=\"nucleo-card-amarillas\">6<\/div>\r\n  <div class=\"kpi-caption\" id=\"nucleo-pct-amarillas\">23.1% del total<\/div>\r\n<\/div>\r\n\r\n<div class=\"kpi-card red\">\r\n  <div class=\"kpi-label\">Metas en rojo<\/div>\r\n  <div class=\"kpi-value\" id=\"nucleo-card-rojas\">4<\/div>\r\n  <div class=\"kpi-caption\" id=\"nucleo-pct-rojas\">15.4% del total<\/div>\r\n<\/div>\r\n\r\n<div class=\"kpi-card neutral\">\r\n  <div class=\"kpi-label\">Alertas activas<\/div>\r\n  <div class=\"kpi-value\" id=\"nucleo-card-alertas\">7<\/div>\r\n  <div class=\"kpi-caption\">Requieren atenci\u00f3n inmediata<\/div>\r\n<\/div>\r\n<\/div>\r\n    <!-- ALERTS + QUICK ACCESS -->\r\n    <div class=\"cols\">\r\n      <div class=\"panel\">\r\n        <h3>Alertas que requieren atenci\u00f3n <span class=\"count\" id=\"nucleo-alert-count\">7<\/span><\/h3>\r\n<div id=\"nucleo-alert-list\"><\/div>\r\n    \r\n      <\/div>\r\n\r\n      <div class=\"panel\">\r\n        <h3>Accesos r\u00e1pidos<\/h3>\r\n        <div class=\"access-grid\">\r\n          <a class=\"access-item\" href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/4-gestion-por-resultados\/\">\r\n            <span class=\"access-num\">04<\/span>\r\n            <span class=\"access-name\">Gesti\u00f3n por Resultados<\/span>\r\n            <span class=\"access-arrow\">\u2192<\/span>\r\n          <\/a>\r\n          <a class=\"access-item\" href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/5-planeamiento-y-presupuesto\/\">\r\n            <span class=\"access-num\">05<\/span>\r\n            <span class=\"access-name\">Planeamiento y Presupuesto<\/span>\r\n            <span class=\"access-arrow\">\u2192<\/span>\r\n          <\/a>\r\n          <a class=\"access-item\" href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/auditoria-y-control\/\">\r\n            <span class=\"access-num\">06<\/span>\r\n            <span class=\"access-name\">Auditor\u00eda y Control<\/span>\r\n            <span class=\"access-arrow\">\u2192<\/span>\r\n          <\/a>\r\n          <a class=\"access-item\" href=\"https:\/\/miespaciodigital.net\/auditoria\/plataforma-saas-de-gestion-digital\/informes-y-rendicion-de-sistema\/\">\r\n            <span class=\"access-num\">07<\/span>\r\n            <span class=\"access-name\">Informes y Rendici\u00f3n de Cuentas<\/span>\r\n            <span class=\"access-arrow\">\u2192<\/span>\r\n          <\/a>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"demo-note\">\r\n      Datos conectados en tiempo real con el Backend NUCLEO. La informaci\u00f3n mostrada corresponde a la instituci\u00f3n del usuario autenticado.\r\n    <\/div>\r\n  <\/main>\r\n<\/div>\r\n<script>\r\nwindow.addEventListener('load', async function () {\r\n\r\n  const SUPABASE_URL =\r\n    'https:\/\/gpvhswppvuogtqgmudng.supabase.co';\r\n\r\n  const SUPABASE_KEY =\r\n    'sb_publishable_DWrUYYSvQpvVYZsNhRTrzg_wdfA8M_h';\r\n\r\n  const nucleo = window.supabase.createClient(\r\n    SUPABASE_URL,\r\n    SUPABASE_KEY\r\n  );\r\n\r\n  const { data: sessionData } =\r\n    await nucleo.auth.getSession();\r\n\r\n  if (!sessionData.session) {\r\n    console.log('NUCLEO: no existe sesi\u00f3n activa.');\r\n    return;\r\n  }\r\n\r\n  const usuarioId = sessionData.session.user.id;\r\n\r\n  let { data: membresias, error: errorMembresias } =\r\n    await nucleo\r\n      .from('membresias_institucion')\r\n      .select('institucion_id, es_principal, estado')\r\n      .eq('usuario_id', usuarioId)\r\n      .eq('estado', 'activo')\r\n      .order('es_principal', { ascending: false });\r\n\r\n  if (errorMembresias || !membresias || membresias.length === 0) {\r\n    console.log('NUCLEO: no se encontr\u00f3 instituci\u00f3n activa.');\r\n    return;\r\n  }\r\nconst institucionId = membresias[0].institucion_id;\r\nconst { data: institucion, error: errorInstitucion } =\r\n    await nucleo\r\n        .from('instituciones')\r\n        .select('nombre')\r\n        .eq('id', institucionId)\r\n        .single();\r\n\r\nif (!errorInstitucion && institucion) {\r\n    document.getElementById('nucleo-institucion-nombre').textContent =\r\n        institucion.nombre;\r\n}\r\nconst { data: usuarioRol, error: errorUsuarioRol } =\r\n    await nucleo\r\n        .from('usuario_roles')\r\n        .select('rol_id, roles(nombre)')\r\n        .eq('usuario_id', usuarioId)\r\n        .eq('institucion_id', institucionId)\r\n        .eq('activo', true)\r\n        .limit(1)\r\n        .maybeSingle();\r\n\r\nif (!errorUsuarioRol && usuarioRol && usuarioRol.roles) {\r\n    document.getElementById('nucleo-usuario-rol').textContent =\r\n        usuarioRol.roles.nombre;\r\n}\r\n  \/\/ METAS ACTIVAS\r\nconst { data: metas, error: errorMetas } =\r\n    await nucleo\r\n        .from('metas')\r\n        .select('id')\r\n        .eq('institucion_id', institucionId)\r\n        .eq('estado', 'activo');\r\n\r\nif (errorMetas) {\r\n    console.log('NUCLEO: error leyendo metas', errorMetas);\r\n    return;\r\n}\r\n\r\nconst metaIds = (metas || []).map(m => m.id);\r\nconst totalMetas = metaIds.length;\r\n\r\n\r\n\/\/ \u00daLTIMO SEGUIMIENTO DE CADA META\r\nlet verdes = 0;\r\nlet amarillas = 0;\r\nlet rojas = 0;\r\n\r\nif (metaIds.length > 0) {\r\n\r\n    const { data: seguimientos, error: errorSeguimientos } =\r\n        await nucleo\r\n            .from('seguimientos')\r\n            .select('meta_id, estado, fecha_seguimiento, created_at')\r\n            .eq('institucion_id', institucionId)\r\n            .in('meta_id', metaIds)\r\n            .order('fecha_seguimiento', { ascending: false })\r\n            .order('created_at', { ascending: false });\r\n\r\n    if (!errorSeguimientos && seguimientos) {\r\n\r\n        const ultimoEstado = new Map();\r\n\r\n        seguimientos.forEach(s => {\r\n            if (!ultimoEstado.has(s.meta_id)) {\r\n                ultimoEstado.set(s.meta_id, s.estado);\r\n            }\r\n        });\r\n\r\n        ultimoEstado.forEach(estado => {\r\n            if (estado === 'verde') verdes++;\r\n            if (estado === 'amarillo') amarillas++;\r\n            if (estado === 'rojo') rojas++;\r\n        });\r\n    }\r\n}\r\n\r\n\r\n\/\/ ALERTAS ACTIVAS\r\nconst { data: alertas, count: alertasActivas, error: errorAlertas } =\r\n    await nucleo\r\n        .from('alertas')\r\n        .select(\r\n            'id, tipo, nivel, titulo, mensaje, fecha_generacion, estado',\r\n            { count: 'exact' }\r\n        )\r\n        .eq('institucion_id', institucionId)\r\n        .neq('estado', 'cerrada')\r\n        .order('fecha_generacion', { ascending: false });\r\n\/\/ ACTUALIZAR TABLERO\r\ndocument.getElementById('nucleo-alert-count').textContent = alertasActivas ?? 0;\r\nconst listaAlertas = document.getElementById('nucleo-alert-list');\r\n\r\nif (listaAlertas) {\r\n    listaAlertas.innerHTML = '';\r\n\r\n    (alertas || []).forEach(alerta => {\r\n        listaAlertas.innerHTML += `\r\n            <div class=\"alert-item\">\r\n                <div class=\"alert-dot red\"><\/div>\r\n                <div>\r\n                    <div class=\"alert-title\">\r\n                        <span class=\"alert-code\">AL-${alerta.id}<\/span>\r\n                        ${alerta.titulo}\r\n                    <\/div>\r\n                    <div class=\"alert-meta\">${alerta.mensaje}<\/div>\r\n                <\/div>\r\n            <\/div>\r\n        `;\r\n    });\r\n}\r\ndocument.getElementById('nucleo-total-metas').textContent = totalMetas;\r\n\r\ndocument.getElementById('nucleo-legend-verdes').textContent = verdes;\r\ndocument.getElementById('nucleo-legend-amarillas').textContent = amarillas;\r\ndocument.getElementById('nucleo-legend-rojas').textContent = rojas;\r\n\r\ndocument.getElementById('nucleo-card-verdes').textContent = verdes;\r\ndocument.getElementById('nucleo-card-amarillas').textContent = amarillas;\r\ndocument.getElementById('nucleo-card-rojas').textContent = rojas;\r\ndocument.getElementById('nucleo-card-alertas').textContent = alertasActivas ?? 0;\r\ndocument.getElementById('nucleo-pct-verdes').textContent = totalMetas ? ((verdes \/ totalMetas) * 100).toFixed(1) + '% del total' : '0.0% del total';\r\ndocument.getElementById('nucleo-pct-amarillas').textContent = totalMetas ? ((amarillas \/ totalMetas) * 100).toFixed(1) + '% del total' : '0.0% del total';\r\ndocument.getElementById('nucleo-pct-rojas').textContent = totalMetas ? ((rojas \/ totalMetas) * 100).toFixed(1) + '% del total' : '0.0% del total';\r\n\/\/ GRAFICO DINAMICO DE METAS\r\nconst circunferencia = 540;\r\n\r\nconst pctVerde = totalMetas > 0 ? verdes \/ totalMetas : 0;\r\nconst pctAmarillo = totalMetas > 0 ? amarillas \/ totalMetas : 0;\r\nconst pctRojo = totalMetas > 0 ? rojas \/ totalMetas : 0;\r\n\r\nconst ringVerde = document.getElementById('nucleo-ring-verde');\r\nconst ringAmarillo = document.getElementById('nucleo-ring-amarillo');\r\nconst ringRojo = document.getElementById('nucleo-ring-rojo');\r\nringVerde.style.stroke = '#3A7D57';\r\nringAmarillo.style.stroke = '#B8862F';\r\nringRojo.style.stroke = '#B4432B';\r\nringVerde.setAttribute(\r\n    'stroke-dasharray',\r\n    `${pctVerde * circunferencia} ${circunferencia}`\r\n);\r\nringVerde.setAttribute('stroke-dashoffset', '0');\r\n\r\nringAmarillo.setAttribute(\r\n    'stroke-dasharray',\r\n    `${pctAmarillo * circunferencia} ${circunferencia}`\r\n);\r\nringAmarillo.setAttribute(\r\n    'stroke-dashoffset',\r\n    `${-(pctVerde * circunferencia)}`\r\n);\r\n\r\nringRojo.setAttribute(\r\n    'stroke-dasharray',\r\n    `${pctRojo * circunferencia} ${circunferencia}`\r\n);\r\nringRojo.setAttribute(\r\n    'stroke-dashoffset',\r\n    `${-((pctVerde + pctAmarillo) * circunferencia)}`\r\n);});\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>N\u00facleo \u2014 Tablero General 01 Tablero General 02 Atenci\u00f3n Ciudadana 03 Asistente Interno (IA) 04 Gesti\u00f3n por Resultados Acciones Correctivas Indicadores KPI Matriz RACI Metas y L\u00ednea Base Seguimiento de Resultados-v2 05 Planeamiento y Presupuesto 06 Auditor\u00eda y Control 07 Informes y Rendici\u00f3n 08 Configuraci\u00f3n 09 Ayuda y Soporte 10 Evoluci\u00f3n Estrat\u00e9gica 11 Manual de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":638,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-983","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/miespaciodigital.net\/auditoria\/wp-json\/wp\/v2\/pages\/983","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/miespaciodigital.net\/auditoria\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/miespaciodigital.net\/auditoria\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/miespaciodigital.net\/auditoria\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/miespaciodigital.net\/auditoria\/wp-json\/wp\/v2\/comments?post=983"}],"version-history":[{"count":106,"href":"https:\/\/miespaciodigital.net\/auditoria\/wp-json\/wp\/v2\/pages\/983\/revisions"}],"predecessor-version":[{"id":2255,"href":"https:\/\/miespaciodigital.net\/auditoria\/wp-json\/wp\/v2\/pages\/983\/revisions\/2255"}],"up":[{"embeddable":true,"href":"https:\/\/miespaciodigital.net\/auditoria\/wp-json\/wp\/v2\/pages\/638"}],"wp:attachment":[{"href":"https:\/\/miespaciodigital.net\/auditoria\/wp-json\/wp\/v2\/media?parent=983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}