Add Privacy Policy and Terms and Conditions pages for IDE Consultores

This commit is contained in:
2026-10-18 03:23:09 -03:00
parent b15c3e0119
commit 66b9292c4c
18 changed files with 905 additions and 157 deletions
+47 -15
View File
@@ -1,12 +1,24 @@
const nodosData = [
// Reemplaza el src con la ruta real de tus logos
{ id: 'tl', x0: 220, y0: 140, r: 70, color: '#16a085', html: '<img src="assets/logos/excellence_b.png" alt="EXCELLENCE">' },
{ id: 'bl', x0: 200, y0: 420, r: 70, color: '#f39200', html: '<img src="assets/logos/projects_b.png" alt="PROJECTS">' },
{ id: 'tr', x0: 780, y0: 110, r: 70, color: '#c41230', html: '<img src="assets/logos/academy_b.png" alt="ACADEMY">' },
{ id: 'br', x0: 750, y0: 400, r: 70, color: '#0061a0', html: '<img src="assets/logos/digital_b.png" alt="DIGITAL">' },
{ id: 'c', x0: 500, y0: 280, r: 85, color: '#ffffff', html: '<img src="assets/logos/ide.png" alt="EL TODO">' }
{ id: 'tl', x0: 220, y0: 140, r: 70, color: '#009e8f', unit: 'excellence', label: 'IDE Excellence', html: '<img src="assets/logos/excellence_b.png" alt="EXCELLENCE">' },
{ id: 'bl', x0: 200, y0: 420, r: 70, color: '#f28c2b', unit: 'projects', label: 'IDE Projects', html: '<img src="assets/logos/projects_b.png" alt="PROJECTS">' },
{ id: 'tr', x0: 780, y0: 110, r: 70, color: '#c8102e', unit: 'academy', label: 'IDE Academy', html: '<img src="assets/logos/academy_b.png" alt="ACADEMY">' },
{ id: 'br', x0: 750, y0: 400, r: 70, color: '#1d71b8', unit: 'digital', label: 'IDE Digital', html: '<img src="assets/logos/digital_b.png" alt="DIGITAL">' },
{ id: 'c', x0: 500, y0: 280, r: 85, color: '#ffffff', unit: null, label: null, html: '<img src="assets/logos/ide.png" alt="EL TODO">' }
];
const reduceMotion = window.matchMedia &&
window.matchMedia('(prefers-reduced-motion: reduce)').matches;
// Abrir la unidad correspondiente desde un nodo del ecosistema
function abrirNodo(nodo) {
if (!nodo || !nodo.unit) return;
if (nodo.unit === 'academy') { window.location.href = 'ide-academy.html'; return; }
if (window.EcoIDE && typeof window.EcoIDE.open === 'function') {
window.EcoIDE.open(nodo.unit);
}
}
const conexiones = [
{ id: 'arcL', from: 'tl', to: 'bl', type: 'vertical', curveOut: -180 },
{ id: 'c1', from: 'tl', to: 'c', type: 'horizontal', curveOut: 0 },
@@ -44,6 +56,24 @@ const nodosData = [
content.innerHTML = nodo.html;
el.appendChild(content);
if (nodo.unit) {
el.setAttribute('role', 'button');
el.setAttribute('tabindex', '0');
el.setAttribute('aria-label', `Ver ${nodo.label}`);
el.style.cursor = 'pointer';
el.addEventListener('click', () => abrirNodo(nodo));
el.addEventListener('keydown', (e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
abrirNodo(nodo);
}
});
} else {
el.classList.add('nodo-circulo--static');
el.style.cursor = 'default';
}
contenedorNodos.appendChild(el);
nodo.el = el;
});
@@ -138,16 +168,18 @@ const nodosData = [
});
// 3. Lógica de salto entre carriles
setInterval(() => {
conexiones.forEach(conn => {
conn.pulsos.forEach(p => {
if (Math.random() > 0.8) {
p.currentOffset = offsetsLineas[Math.floor(Math.random() * offsetsLineas.length)];
p.needsPathUpdate = true; // Avisamos que en el próximo frame debe cambiar de ruta
}
if (!reduceMotion) {
setInterval(() => {
conexiones.forEach(conn => {
conn.pulsos.forEach(p => {
if (Math.random() > 0.8) {
p.currentOffset = offsetsLineas[Math.floor(Math.random() * offsetsLineas.length)];
p.needsPathUpdate = true; // Avisamos que en el próximo frame debe cambiar de ruta
}
});
});
});
}, 1200);
}, 1200);
}
// 4. Motor de Animación Ultraligero
let animando = false;
@@ -169,7 +201,7 @@ function animarFrame() {
}
function iniciarAnimacion() {
if (animando) return;
if (reduceMotion || animando) return;
animando = true;
rafId = requestAnimationFrame(animarFrame);
}