{"id":219,"date":"2025-09-29T16:55:45","date_gmt":"2025-09-29T16:55:45","guid":{"rendered":"https:\/\/accons.ec\/nexdatta\/?page_id=219"},"modified":"2025-10-21T14:01:02","modified_gmt":"2025-10-21T14:01:02","slug":"servicios","status":"publish","type":"page","link":"https:\/\/nexdatta.com\/index.php\/servicios\/","title":{"rendered":"Servicios"},"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>Gesti\u00f3n Integral de Riesgos Financieros<\/title>\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;600&display=swap');\n\n:root {\n    --riesgos-primary-color: #02C5D7;\n    --riesgos-secondary-color: #00DBB2;\n    --riesgos-background-color: #0A192F;\n    --riesgos-text-color: #E6F1FF;\n    --riesgos-text-color-light: #A8B2D1;\n}\n\nbody {\n    background-color: var(--riesgos-background-color);\n    font-family: 'Poppins', sans-serif;\n    margin: 0;\n    color: var(--riesgos-text-color);\n    overflow-x: hidden;\n}\n\n.riesgos-section {\n    padding: 60px 20px;\n    text-align: center;\n}\n\n.riesgos-intro {\n    max-width: 800px;\n    margin: 0 auto 40px auto;\n}\n\n.riesgos-intro h1 {\n    font-size: clamp(2rem, 5vw, 3rem);\n    font-weight: 600;\n    color: var(--riesgos-text-color);\n    margin-bottom: 15px;\n}\n\n.riesgos-intro p {\n    font-size: clamp(1rem, 2.5vw, 1.1rem);\n    line-height: 1.6;\n    color: var(--riesgos-text-color-light);\n}\n\n.riesgos-container {\n    position: relative;\n    width: 100%;\n    max-width: 1000px;\n    height: 500px;\n    margin: 50px auto;\n}\n\n#riesgosCanvas {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 1;\n}\n\n.riesgos-details {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%) scale(0.9);\n    width: 90%;\n    max-width: 380px;\n    padding: 25px;\n    border-radius: 15px;\n    background: rgba(18, 42, 77, 0.6);\n    backdrop-filter: blur(10px);\n    -webkit-backdrop-filter: blur(10px);\n    border: 1px solid rgba(2, 197, 215, 0.3);\n    z-index: 10;\n    opacity: 0;\n    visibility: hidden;\n    transition: opacity 0.4s ease, transform 0.4s ease, visibility 0.4s;\n    text-align: left;\n}\n\n.riesgos-details.active {\n    opacity: 1;\n    visibility: visible;\n    transform: translate(-50%, -50%) scale(1);\n}\n\n.riesgos-details h2 {\n    margin: 0 0 15px 0;\n    color: var(--riesgos-primary-color);\n    font-size: 1.5rem;\n}\n\n.riesgos-details ul {\n    list-style: none;\n    padding: 0;\n    margin: 0;\n}\n\n.riesgos-details ul li {\n    color: var(--riesgos-text-color-light);\n    margin-bottom: 10px;\n    line-height: 1.5;\n    padding-left: 20px;\n    position: relative;\n}\n\n.riesgos-details ul li::before {\n    content: '\u2713';\n    position: absolute;\n    left: 0;\n    color: var(--riesgos-secondary-color);\n}\n\n.riesgos-close-btn {\n    position: absolute;\n    top: 15px;\n    right: 15px;\n    background: none;\n    border: none;\n    color: var(--riesgos-text-color-light);\n    font-size: 1.5rem;\n    cursor: pointer;\n    transition: color 0.3s ease;\n}\n\n.riesgos-close-btn:hover {\n    color: var(--riesgos-primary-color);\n}\n\n@media (max-width: 768px) {\n    .riesgos-container {\n        height: 600px;\n    }\n    .riesgos-details {\n        width: 85%;\n    }\n}\n<\/style>\n<\/head>\n<body>\n\n<section class=\"riesgos-section\">\n    <div class=\"riesgos-intro\">\n        <h1>Gesti\u00f3n Integral de Riesgos Financieros<\/h1>\n        <p>La Gesti\u00f3n Integral de Riesgos Financieros es fundamental para garantizar la estabilidad y crecimiento sostenible de las instituciones financieras en un entorno econ\u00f3mico din\u00e1mico. A trav\u00e9s de un enfoque estrat\u00e9gico, ofrecemos soluciones personalizadas para gestionar los diversos riesgos que enfrentan las organizaciones.<\/p>\n    <\/div>\n\n    <div class=\"riesgos-container\">\n        <canvas id=\"riesgosCanvas\"><\/canvas>\n        \n        <div id=\"riesgos-credito-details\" class=\"riesgos-details\">\n            <button class=\"riesgos-close-btn\">&times;<\/button>\n            <h2>Riesgo de Cr\u00e9dito<\/h2>\n            <ul>\n                <li>Modelos avanzados para prever riesgos y optimizar tu cartera.<\/li>\n                <li>Scoring crediticio basado en datos hist\u00f3ricos y an\u00e1lisis predictivo.<\/li>\n                <li>Automatizaci\u00f3n de procesos de evaluaci\u00f3n crediticia.<\/li>\n            <\/ul>\n        <\/div>\n\n        <div id=\"riesgos-liquidez-details\" class=\"riesgos-details\">\n            <button class=\"riesgos-close-btn\">&times;<\/button>\n            <h2>Riesgo de Liquidez<\/h2>\n            <ul>\n                <li>Implementaci\u00f3n de modelos avanzados para evaluar y gestionar el riesgo de liquidez a fin de anticipar posibles desequilibrios entre los activos l\u00edquidos y los pasivos exigibles.<\/li>\n                <li>Fortalecer la gesti\u00f3n de activos y pasivos y establecer planes de contingencia que aseguren la sostenibilidad de las operaciones.<\/li>\n                <li>Modelamiento de stress testing y back testing de liquidez.<\/li>\n            <\/ul>\n        <\/div>\n\n        <div id=\"riesgos-mercado-details\" class=\"riesgos-details\">\n            <button class=\"riesgos-close-btn\">&times;<\/button>\n            <h2>Riesgo de Mercado<\/h2>\n            <ul>\n                <li>An\u00e1lisis y gesti\u00f3n del impacto de las fluctuaciones del mercado sobre las operaciones de las empresas.<\/li>\n            <\/ul>\n        <\/div>\n        \n        <div id=\"riesgos-operativo-details\" class=\"riesgos-details\">\n            <button class=\"riesgos-close-btn\">&times;<\/button>\n            <h2>Riesgo Operativo<\/h2>\n            <ul>\n                <li>Metodolog\u00edas de gesti\u00f3n del riesgo operativo orientadas a reducir p\u00e9rdidas, fortalecer la resiliencia institucional y asegurar la continuidad del negocio.<\/li>\n                <li>Modelos avanzados para definici\u00f3n de apetito al riesgo operativo y l\u00edmites de tolerancia.<\/li>\n            <\/ul>\n        <\/div>\n    <\/div>\n<\/section>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n    const canvas = document.getElementById('riesgosCanvas');\n    const ctx = canvas.getContext('2d');\n    const container = document.querySelector('.riesgos-container');\n\n    let width = container.offsetWidth;\n    let height = container.offsetHeight;\n    canvas.width = width;\n    canvas.height = height;\n\n    let nodes = [];\n    const SMALL_NODE_COUNT = 80;\n    let hoveredNode = null;\n    let activeNode = null;\n\n    const colors = {\n        primary: 'rgba(2, 197, 215,',\n        secondary: 'rgba(0, 219, 178,',\n        particle: 'rgba(168, 178, 209,'\n    };\n    \n    const serviceNodes = [\n        { id: 'riesgos-credito', label: 'Riesgo de Cr\u00e9dito', x: 0, y: 0, radius: 12, isService: true },\n        { id: 'riesgos-liquidez', label: 'Riesgo de Liquidez', x: 0, y: 0, radius: 12, isService: true },\n        { id: 'riesgos-mercado', label: 'Riesgo de Mercado', x: 0, y: 0, radius: 12, isService: true },\n        { id: 'riesgos-operativo', label: 'Riesgo Operativo', x: 0, y: 0, radius: 12, isService: true }\n    ];\n\n    function positionServiceNodes() {\n        width = container.offsetWidth;\n        height = container.offsetHeight;\n        canvas.width = width;\n        canvas.height = height;\n        \n        const centerX = width \/ 2;\n        const centerY = height \/ 2;\n\n        if (width > 768) {\n            const radiusX = width * 0.35;\n            const radiusY = height * 0.25;\n            serviceNodes[0].x = centerX - radiusX;\n            serviceNodes[0].y = centerY - radiusY;\n            serviceNodes[1].x = centerX + radiusX;\n            serviceNodes[1].y = centerY - radiusY;\n            serviceNodes[2].x = centerX - radiusX;\n            serviceNodes[2].y = centerY + radiusY;\n            serviceNodes[3].x = centerX + radiusX;\n            serviceNodes[3].y = centerY + radiusY;\n        } else {\n            const gap = height * 0.2;\n            serviceNodes.forEach((node, i) => {\n                node.x = centerX;\n                node.y = (height * 0.2) + (i * gap);\n            });\n        }\n    }\n\n    function createParticles() {\n        nodes = [...serviceNodes];\n        for(let i = 0; i < SMALL_NODE_COUNT; i++) {\n            nodes.push({\n                x: Math.random() * width,\n                y: Math.random() * height,\n                vx: (Math.random() - 0.5) * 0.5,\n                vy: (Math.random() - 0.5) * 0.5,\n                radius: Math.random() * 1.5 + 1\n            });\n        }\n    }\n    \n    function animate() {\n        ctx.clearRect(0, 0, width, height);\n\n        nodes.forEach((node, i) => {\n            if (!node.isService) {\n                node.x += node.vx;\n                node.y += node.vy;\n                if (node.x < 0 || node.x > width) node.vx *= -1;\n                if (node.y < 0 || node.y > height) node.vy *= -1;\n            }\n\n            ctx.beginPath();\n            if (node.isService) {\n                const isHovered = hoveredNode && hoveredNode.id === node.id;\n                const isActive = activeNode && activeNode.id === node.id;\n                ctx.fillStyle = isActive ? colors.secondary + '1)' : colors.primary + '1)';\n                ctx.arc(node.x, node.y, node.radius + (isHovered ? 4 : 0) + (isActive ? 2 : 0), 0, Math.PI * 2);\n                \n                if (isHovered || isActive) {\n                    ctx.shadowColor = isActive ? colors.secondary + '0.7)' : colors.primary + '0.7)';\n                    ctx.shadowBlur = 20;\n                }\n            } else {\n                ctx.fillStyle = colors.particle + '0.8)';\n                ctx.arc(node.x, node.y, node.radius, 0, Math.PI * 2);\n            }\n            ctx.fill();\n            ctx.shadowColor = 'transparent';\n            ctx.shadowBlur = 0;\n\n            if (node.isService) {\n                ctx.fillStyle = '#E6F1FF';\n                ctx.font = '14px Poppins';\n                ctx.textAlign = 'center';\n                ctx.fillText(node.label, node.x, node.y + node.radius + 20);\n            }\n\n            for (let j = i + 1; j < nodes.length; j++) {\n                let otherNode = nodes[j];\n                let dist = Math.hypot(node.x - otherNode.x, node.y - otherNode.y);\n                let maxDist = node.isService || otherNode.isService ? 200 : 120;\n                \n                if (dist < maxDist) {\n                    ctx.beginPath();\n                    ctx.moveTo(node.x, node.y);\n                    ctx.lineTo(otherNode.x, otherNode.y);\n                    ctx.strokeStyle = (node.isService || otherNode.isService) ? \n                        colors.primary + ((1 - dist \/ maxDist) * 0.5) + ')' :\n                        colors.particle + ((1 - dist \/ maxDist) * 0.4) + ')';\n                    ctx.lineWidth = 1;\n                    ctx.stroke();\n                }\n            }\n        });\n\n        requestAnimationFrame(animate);\n    }\n\n    canvas.addEventListener('mousemove', (e) => {\n        const rect = canvas.getBoundingClientRect();\n        const mouseX = e.clientX - rect.left;\n        const mouseY = e.clientY - rect.top;\n\n        let foundNode = null;\n        serviceNodes.forEach(node => {\n            const dist = Math.hypot(mouseX - node.x, mouseY - node.y);\n            if (dist < node.radius + 15) foundNode = node;\n        });\n\n        hoveredNode = foundNode;\n        canvas.style.cursor = foundNode ? 'pointer' : 'default';\n    });\n\n    canvas.addEventListener('click', (e) => {\n        if (hoveredNode) {\n            activeNode = hoveredNode;\n            document.querySelectorAll('.riesgos-details').forEach(p => p.classList.remove('active'));\n            const panel = document.getElementById(`${hoveredNode.id}-details`);\n            panel.classList.add('active');\n        } else {\n            activeNode = null;\n            document.querySelectorAll('.riesgos-details').forEach(p => p.classList.remove('active'));\n        }\n    });\n    \n    document.querySelectorAll('.riesgos-close-btn').forEach(btn => {\n        btn.addEventListener('click', () => {\n            activeNode = null;\n            btn.parentElement.classList.remove('active');\n        });\n    });\n\n    window.addEventListener('resize', () => {\n        positionServiceNodes();\n    });\n\n    positionServiceNodes();\n    createParticles();\n    animate();\n});\n<\/script>\n\n<\/body>\n<\/html>\n\n\n\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>Anal\u00edtica de Datos Avanzada<\/title>\n<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;600&display=swap');\n\n:root {\n    --primary-color: #02C5D7;\n    --secondary-color: #00DBB2;\n    --background-color: #0A192F;\n    --text-color: #E6F1FF;\n    --text-color-light: #A8B2D1;\n}\n\nbody {\n    background-color: var(--background-color);\n    font-family: 'Poppins', sans-serif;\n    margin: 0;\n    color: var(--text-color);\n    overflow-x: hidden;\n}\n\n.data-universe-section {\n    padding: 60px 20px;\n    text-align: center;\n}\n\n.intro-content {\n    max-width: 800px;\n    margin: 0 auto 40px auto;\n}\n\n.intro-content h1 {\n    font-size: clamp(2rem, 5vw, 3rem);\n    font-weight: 600;\n    color: var(--text-color);\n    margin-bottom: 15px;\n}\n\n.intro-content p {\n    font-size: clamp(1rem, 2.5vw, 1.1rem);\n    line-height: 1.6;\n    color: var(--text-color-light);\n}\n\n.interactive-container {\n    position: relative;\n    width: 100%;\n    max-width: 1000px;\n    height: 500px;\n    margin: 50px auto;\n}\n\n#universeCanvas {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 1;\n}\n\n.service-details {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%) scale(0.9);\n    width: 90%;\n    max-width: 380px;\n    padding: 25px;\n    border-radius: 15px;\n    background: rgba(18, 42, 77, 0.6);\n    backdrop-filter: blur(10px);\n    -webkit-backdrop-filter: blur(10px);\n    border: 1px solid rgba(2, 197, 215, 0.3);\n    z-index: 10;\n    opacity: 0;\n    visibility: hidden;\n    transition: opacity 0.4s ease, transform 0.4s ease, visibility 0.4s;\n    text-align: left;\n}\n\n.service-details.active {\n    opacity: 1;\n    visibility: visible;\n    transform: translate(-50%, -50%) scale(1);\n}\n\n.service-details h2 {\n    margin: 0 0 15px 0;\n    color: var(--primary-color);\n    font-size: 1.5rem;\n}\n\n.service-details ul {\n    list-style: none;\n    padding: 0;\n    margin: 0;\n}\n\n.service-details ul li {\n    color: var(--text-color-light);\n    margin-bottom: 10px;\n    line-height: 1.5;\n    padding-left: 20px;\n    position: relative;\n}\n\n.service-details ul li::before {\n    content: '\u2713';\n    position: absolute;\n    left: 0;\n    color: var(--secondary-color);\n}\n\n.close-btn {\n    position: absolute;\n    top: 15px;\n    right: 15px;\n    background: none;\n    border: none;\n    color: var(--text-color-light);\n    font-size: 1.5rem;\n    cursor: pointer;\n    transition: color 0.3s ease;\n}\n\n.close-btn:hover {\n    color: var(--primary-color);\n}\n\n@media (max-width: 768px) {\n    .interactive-container {\n        height: 600px;\n    }\n    .service-details {\n        width: 85%;\n    }\n}\n<\/style>\n<\/head>\n<body>\n\n<section class=\"data-universe-section\">\n    <div class=\"intro-content\">\n        <h1>Un Universo de Datos a su Alcance<\/h1>\n        <p>Transforme sus datos en decisiones estrat\u00e9gicas. Nuestra plataforma integra Machine Learning, Business Intelligence y Miner\u00eda de Datos para ofrecerle modelos predictivos y una visi\u00f3n clara del comportamiento de sus clientes y del mercado.<\/p>\n    <\/div>\n\n    <div class=\"interactive-container\">\n        <canvas id=\"universeCanvas\"><\/canvas>\n        \n        <div id=\"ml-details\" class=\"service-details\">\n            <button class=\"close-btn\">&times;<\/button>\n            <h2>Machine Learning<\/h2>\n            <ul>\n                <li>Soluciones personalizadas para decisiones estrat\u00e9gicas.<\/li>\n                <li>An\u00e1lisis de tendencias de consumo y comportamiento.<\/li>\n                <li>Segmentaci\u00f3n avanzada para estrategias de mercado.<\/li>\n            <\/ul>\n        <\/div>\n\n        <div id=\"bi-details\" class=\"service-details\">\n            <button class=\"close-btn\">&times;<\/button>\n            <h2>Business Intelligence<\/h2>\n            <ul>\n                <li>Paneles din\u00e1micos integrando informaci\u00f3n clave.<\/li>\n                <li>Integraci\u00f3n con bases de datos y sistemas empresariales.<\/li>\n                <li>Informes automatizados para cumplimiento regulatorio.<\/li>\n            <\/ul>\n        <\/div>\n\n        <div id=\"dm-details\" class=\"service-details\">\n            <button class=\"close-btn\">&times;<\/button>\n            <h2>Miner\u00eda de Datos<\/h2>\n            <ul>\n                <li>Algoritmos para descubrir patrones ocultos en grandes vol\u00famenes de datos.<\/li>\n                <li>Generaci\u00f3n de modelos predictivos efectivos y precisos.<\/li>\n            <\/ul>\n        <\/div>\n        \n        <div id=\"cp-details\" class=\"service-details\">\n            <button class=\"close-btn\">&times;<\/button>\n            <h2>Servicios Personalizados<\/h2>\n            <ul>\n                <li>Soluciones a medida que fusionan informaci\u00f3n visual y textual.<\/li>\n                <li>Optimizaci\u00f3n de decisiones con datos estrat\u00e9gicos.<\/li>\n                <li>Refuerzo del mensaje mediante visualizaci\u00f3n de datos.<\/li>\n            <\/ul>\n        <\/div>\n    <\/div>\n<\/section>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n    const canvas = document.getElementById('universeCanvas');\n    const ctx = canvas.getContext('2d');\n    const container = document.querySelector('.interactive-container');\n\n    let width = container.offsetWidth;\n    let height = container.offsetHeight;\n    canvas.width = width;\n    canvas.height = height;\n\n    let nodes = [];\n    const SMALL_NODE_COUNT = 80;\n    let hoveredNode = null;\n    let activeNode = null;\n\n    const colors = {\n        primary: 'rgba(2, 197, 215,',\n        secondary: 'rgba(0, 219, 178,',\n        particle: 'rgba(168, 178, 209,'\n    };\n    \n    const serviceNodes = [\n        { id: 'ml', label: 'Machine Learning', x: 0, y: 0, radius: 12, isService: true },\n        { id: 'bi', label: 'Business Intelligence', x: 0, y: 0, radius: 12, isService: true },\n        { id: 'dm', label: 'Miner\u00eda de Datos', x: 0, y: 0, radius: 12, isService: true },\n        { id: 'cp', label: 'Servicios Personalizados', x: 0, y: 0, radius: 12, isService: true }\n    ];\n\n    function positionServiceNodes() {\n        width = container.offsetWidth;\n        height = container.offsetHeight;\n        canvas.width = width;\n        canvas.height = height;\n        \n        const centerX = width \/ 2;\n        const centerY = height \/ 2;\n\n        if (width > 768) {\n            const radiusX = width * 0.35;\n            const radiusY = height * 0.25;\n            serviceNodes[0].x = centerX - radiusX;\n            serviceNodes[0].y = centerY - radiusY;\n            serviceNodes[1].x = centerX + radiusX;\n            serviceNodes[1].y = centerY - radiusY;\n            serviceNodes[2].x = centerX - radiusX;\n            serviceNodes[2].y = centerY + radiusY;\n            serviceNodes[3].x = centerX + radiusX;\n            serviceNodes[3].y = centerY + radiusY;\n        } else {\n            const gap = height * 0.2;\n            serviceNodes.forEach((node, i) => {\n                node.x = centerX;\n                node.y = (height * 0.2) + (i * gap);\n            });\n        }\n    }\n\n    function createParticles() {\n        nodes = [...serviceNodes];\n        for(let i = 0; i < SMALL_NODE_COUNT; i++) {\n            nodes.push({\n                x: Math.random() * width,\n                y: Math.random() * height,\n                vx: (Math.random() - 0.5) * 0.5,\n                vy: (Math.random() - 0.5) * 0.5,\n                radius: Math.random() * 1.5 + 1\n            });\n        }\n    }\n    \n    function animate() {\n        ctx.clearRect(0, 0, width, height);\n\n        nodes.forEach((node, i) => {\n            if (!node.isService) {\n                node.x += node.vx;\n                node.y += node.vy;\n                if (node.x < 0 || node.x > width) node.vx *= -1;\n                if (node.y < 0 || node.y > height) node.vy *= -1;\n            }\n\n            ctx.beginPath();\n            if (node.isService) {\n                const isHovered = hoveredNode && hoveredNode.id === node.id;\n                const isActive = activeNode && activeNode.id === node.id;\n                ctx.fillStyle = isActive ? colors.secondary + '1)' : colors.primary + '1)';\n                ctx.arc(node.x, node.y, node.radius + (isHovered ? 4 : 0) + (isActive ? 2 : 0), 0, Math.PI * 2);\n                \n                if (isHovered || isActive) {\n                    ctx.shadowColor = isActive ? colors.secondary + '0.7)' : colors.primary + '0.7)';\n                    ctx.shadowBlur = 20;\n                }\n            } else {\n                ctx.fillStyle = colors.particle + '0.8)';\n                ctx.arc(node.x, node.y, node.radius, 0, Math.PI * 2);\n            }\n            ctx.fill();\n            ctx.shadowColor = 'transparent';\n            ctx.shadowBlur = 0;\n\n            if (node.isService) {\n                ctx.fillStyle = '#E6F1FF';\n                ctx.font = '14px Poppins';\n                ctx.textAlign = 'center';\n                ctx.fillText(node.label, node.x, node.y + node.radius + 20);\n            }\n\n            for (let j = i + 1; j < nodes.length; j++) {\n                let otherNode = nodes[j];\n                let dist = Math.hypot(node.x - otherNode.x, node.y - otherNode.y);\n                let maxDist = node.isService || otherNode.isService ? 200 : 120;\n                \n                if (dist < maxDist) {\n                    ctx.beginPath();\n                    ctx.moveTo(node.x, node.y);\n                    ctx.lineTo(otherNode.x, otherNode.y);\n                    ctx.strokeStyle = (node.isService || otherNode.isService) ? \n                        colors.primary + ((1 - dist \/ maxDist) * 0.5) + ')' :\n                        colors.particle + ((1 - dist \/ maxDist) * 0.4) + ')';\n                    ctx.lineWidth = 1;\n                    ctx.stroke();\n                }\n            }\n        });\n\n        requestAnimationFrame(animate);\n    }\n\n    canvas.addEventListener('mousemove', (e) => {\n        const rect = canvas.getBoundingClientRect();\n        const mouseX = e.clientX - rect.left;\n        const mouseY = e.clientY - rect.top;\n\n        let foundNode = null;\n        serviceNodes.forEach(node => {\n            const dist = Math.hypot(mouseX - node.x, mouseY - node.y);\n            if (dist < node.radius + 15) foundNode = node;\n        });\n\n        hoveredNode = foundNode;\n        canvas.style.cursor = foundNode ? 'pointer' : 'default';\n    });\n\n    canvas.addEventListener('click', (e) => {\n        if (hoveredNode) {\n            activeNode = hoveredNode;\n            document.querySelectorAll('.service-details').forEach(p => p.classList.remove('active'));\n            const panel = document.getElementById(`${hoveredNode.id}-details`);\n            panel.classList.add('active');\n        } else {\n            activeNode = null;\n            document.querySelectorAll('.service-details').forEach(p => p.classList.remove('active'));\n        }\n    });\n    \n    document.querySelectorAll('.close-btn').forEach(btn => {\n        btn.addEventListener('click', () => {\n            activeNode = null;\n            btn.parentElement.classList.remove('active');\n        });\n    });\n\n    window.addEventListener('resize', () => {\n        positionServiceNodes();\n    });\n\n    positionServiceNodes();\n    createParticles();\n    animate();\n});\n<\/script>\n\n<\/body>\n<\/html>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n\n<section class=\"servicios-complementarios\">\n  <div class=\"container\">\n    <!-- \u00cdcono principal -->\n    <div class=\"icono-estrategia-container\">\n      <div class=\"icono-estrategia\">\u2605<\/div>\n    <\/div>\n\n    <!-- T\u00edtulo dividido -->\n    <h1 class=\"titulo-servicio\">\n      <span class=\"linea-titulo\">Servicios<\/span><br>\n      <span class=\"linea-titulo color-acento\">Complementarios<\/span>\n    <\/h1>\n\n    <!-- Descripci\u00f3n general -->\n    <p class=\"descripcion-servicio\">\n      En un entorno empresarial cada vez m\u00e1s desafiante y din\u00e1mico, contar con un conjunto robusto de servicios complementarios es crucial para garantizar la resiliencia y el crecimiento sostenible. Nuestra oferta de servicios complementarios est\u00e1 dise\u00f1ada para ayudar a las organizaciones a superar obst\u00e1culos financieros, optimizar sus operaciones y garantizar su continuidad ante eventos adversos.\n    <\/p>\n    <p class=\"descripcion-servicio\">\n      Desde estrategias de recuperaci\u00f3n financiera hasta la implementaci\u00f3n de planes de continuidad del negocio (BCP), nuestros servicios est\u00e1n orientados a fortalecer la estabilidad y la capacidad de adaptaci\u00f3n de las empresas, mejorando su desempe\u00f1o en todos los frentes.\n    <\/p>\n\n    <div class=\"separador\"><\/div>\n\n    <!-- Tabla de servicios -->\n    <div class=\"tabla-servicios\">\n      <!-- CONSULTOR\u00cdA -->\n      <div class=\"fila\">\n        <div class=\"columna-titulo\">\n          <div class=\"icono-titulo\">\n            <img decoding=\"async\" src=\"https:\/\/nexdatta.com\/wp-content\/uploads\/2025\/10\/servicios-de-consultoria.png\" alt=\"Consultor\u00eda\">\n          <\/div>\n          Consultor\u00eda\n        <\/div>\n        <div class=\"columna-contenido\">\n          <ul>\n            <li>Dise\u00f1o de Marcos de Gesti\u00f3n de Riesgos.<\/li>\n            <li>Cumplimiento de normativas locales e internacionales (Basilea III, NIIF 9).<\/li>\n            <li>Implementaci\u00f3n de estructuras organizacionales para la identificaci\u00f3n, medici\u00f3n, monitoreo y control de riesgos.<\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n\n      <!-- CAPACITACI\u00d3N -->\n      <div class=\"fila\">\n        <div class=\"columna-titulo\">\n          <div class=\"icono-titulo\">\n            <img decoding=\"async\" src=\"https:\/\/nexdatta.com\/wp-content\/uploads\/2025\/10\/capacitacion.png\" alt=\"Capacitaci\u00f3n\">\n          <\/div>\n          Capacitaci\u00f3n\n        <\/div>\n        <div class=\"columna-contenido\">\n          <ul>\n            <li>Capacitaci\u00f3n y entrenamiento del personal en gesti\u00f3n integral de riesgos, uso de software de anal\u00edtica avanzada, desarrollo de modelos cuantitativos y visualizaci\u00f3n de datos para la toma de decisiones estrat\u00e9gicas.<\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n\n      <!-- VALORACI\u00d3N -->\n      <div class=\"fila\">\n        <div class=\"columna-titulo\">\n          <div class=\"icono-titulo\">\n            <img decoding=\"async\" src=\"https:\/\/nexdatta.com\/wp-content\/uploads\/2025\/10\/mercado.png\" alt=\"Valoraci\u00f3n de Empresas\">\n          <\/div>\n          Valoraci\u00f3n de Empresas\n        <\/div>\n        <div class=\"columna-contenido\">\n          <ul>\n            <li>Utilizar metodolog\u00edas est\u00e1ndar y otros ratios financieros.<\/li>\n            <li>Evaluar el impacto de las condiciones del mercado sobre la valoraci\u00f3n empresarial.<\/li>\n            <li>Ajustar la valoraci\u00f3n empresarial considerando factores espec\u00edficos como tama\u00f1o, crecimiento, rentabilidad y riesgos inherentes.<\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n\n      <!-- OUTSOURCING -->\n      <div class=\"fila\">\n        <div class=\"columna-titulo\">\n          <div class=\"icono-titulo\">\n            <img decoding=\"async\" src=\"https:\/\/nexdatta.com\/wp-content\/uploads\/2025\/10\/subcontratacion.png\" alt=\"Outsourcing de Riesgos\">\n          <\/div>\n          Outsourcing de Riesgos\n        <\/div>\n        <div class=\"columna-contenido\">\n          <ul>\n            <li>Externalizaci\u00f3n de funciones cr\u00edticas relacionadas con la evaluaci\u00f3n y gesti\u00f3n de riesgos financieros.<\/li>\n            <li>Supervisi\u00f3n y monitoreo continuo de riesgos.<\/li>\n            <li>Reportes peri\u00f3dicos personalizados para la alta direcci\u00f3n.<\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<style>\nbody {\n  margin: 0;\n  font-family: 'Montserrat', sans-serif;\n  background: #132646;\n  color: white;\n}\n\n\/* CONTENEDOR PRINCIPAL *\/\n.servicios-complementarios {\n  padding: 60px 20px;\n  max-width: 1000px;\n  margin: auto;\n}\n\n\/* ICONO PRINCIPAL *\/\n.icono-estrategia-container {\n  display: flex;\n  justify-content: center;\n  margin-bottom: 10px;\n}\n\n.icono-estrategia {\n  font-size: 2.5em;\n  color: #00DBB2;\n  animation: resplandor 1.8s infinite alternate;\n}\n\n@keyframes resplandor {\n  from { text-shadow: 0 0 10px #00DBB2; }\n  to { text-shadow: 0 0 25px #00DBB2; }\n}\n\n\/* T\u00cdTULO *\/\n.titulo-servicio {\n  font-size: 2.4em;\n  margin-bottom: 20px;\n  color: white;\n  text-align: center;\n  line-height: 1.2;\n  word-break: break-word;\n}\n\n.linea-titulo.color-acento {\n  color: #00DBB2;\n}\n\n\/* DESCRIPCI\u00d3N *\/\n.descripcion-servicio {\n  font-size: 1.1em;\n  margin-bottom: 20px;\n  color: white;\n  text-align: justify;\n}\n\n\/* SEPARADOR *\/\n.separador {\n  height: 2px;\n  width: 100%;\n  background: linear-gradient(to right, transparent, #00DBB2, transparent);\n  margin: 40px 0;\n}\n\n\/* TABLA DE SERVICIOS *\/\n.tabla-servicios {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 30px;\n}\n\n.fila {\n  display: grid;\n  grid-template-columns: 200px 1fr;\n  gap: 20px;\n  background: rgba(255, 255, 255, 0.05);\n  padding: 20px;\n  border-left: 4px solid #00DBB2;\n  border-radius: 8px;\n  transition: background 0.3s ease;\n}\n\n.fila:hover {\n  background: rgba(255, 255, 255, 0.1);\n}\n\n\/* T\u00cdTULO DE CADA SERVICIO *\/\n.columna-titulo {\n  font-weight: bold;\n  font-size: 1.2em;\n  color: #00DBB2;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  text-align: center;\n}\n\n\/* ICONOS DE SERVICIO *\/\n.icono-titulo img {\n  width: 50px;\n  margin-bottom: 8px;\n  filter: drop-shadow(0 0 10px #00DBB2);\n  animation: glow 2s infinite alternate;\n}\n\n@keyframes glow {\n  from { filter: drop-shadow(0 0 6px #00DBB2); }\n  to { filter: drop-shadow(0 0 20px #00DBB2); }\n}\n\n\/* CONTENIDO *\/\n.columna-contenido ul {\n  margin: 0;\n  padding-left: 20px;\n}\n\n.columna-contenido li {\n  margin-bottom: 8px;\n  line-height: 1.5em;\n}\n\n\/* RESPONSIVE *\/\n@media (max-width: 768px) {\n  .fila {\n    grid-template-columns: 1fr;\n    text-align: center;\n  }\n\n  .columna-contenido ul {\n    list-style: none;\n    padding: 0;\n  }\n\n  .columna-contenido li {\n    margin-bottom: 10px;\n  }\n\n  .titulo-servicio {\n    font-size: 1.9em;\n  }\n\n  .columna-titulo img {\n    width: 60px;\n  }\n\n  .servicios-complementarios {\n    overflow-x: hidden;\n  }\n}\n<\/style>\n\n\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Gesti\u00f3n Integral de Riesgos Financieros Gesti\u00f3n Integral de Riesgos Financieros La Gesti\u00f3n Integral de Riesgos Financieros es fundamental para garantizar [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-219","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nexdatta.com\/index.php\/wp-json\/wp\/v2\/pages\/219","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nexdatta.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nexdatta.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nexdatta.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nexdatta.com\/index.php\/wp-json\/wp\/v2\/comments?post=219"}],"version-history":[{"count":33,"href":"https:\/\/nexdatta.com\/index.php\/wp-json\/wp\/v2\/pages\/219\/revisions"}],"predecessor-version":[{"id":280,"href":"https:\/\/nexdatta.com\/index.php\/wp-json\/wp\/v2\/pages\/219\/revisions\/280"}],"wp:attachment":[{"href":"https:\/\/nexdatta.com\/index.php\/wp-json\/wp\/v2\/media?parent=219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}