{"id":2376,"date":"2026-10-21T08:33:04","date_gmt":"2026-10-21T06:33:04","guid":{"rendered":"https:\/\/onode.es\/zero\/"},"modified":"2026-10-25T21:04:45","modified_gmt":"2026-10-25T20:04:45","slug":"zero","status":"publish","type":"page","link":"https:\/\/onode.es\/en\/zero\/","title":{"rendered":"ZERO"},"content":{"rendered":"<div class=\"et_pb_section_0 et_pb_section et_section_regular et_block_section et_animated hero-manchas onode-fluid-section\">\n<div class=\"et_pb_row_0 et_pb_row et_block_row\">\n<div class=\"et_pb_column_0 et_pb_column et_pb_column_4_4 et-last-child et_block_column et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_code_0 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><!-- ============================================================\n  EFECTO MANCHAS ANIMADAS \u2014 onode.thelab.es\n  Pegar en un m\u00f3dulo \"C\u00f3digo\" de Divi dentro de la secci\u00f3n hero.\n  La secci\u00f3n debe tener la clase CSS personalizada: hero-manchas\n  ============================================================ --><style id=\"blob-style\">.hero-manchas {\n    position: fixed !important;\n    overflow: hidden !important;\n    top: 0px!important;\n  }\n  #blob-canvas-wrapper {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    z-index: 0;\n  }\n  \/* Degradado inferior hacia blanco *\/\n  #blob-canvas-wrapper::after {\n    content: '';\n    position: absolute;\n    bottom: 0; left: 0; right: 0;\n    height: 45%;\n    \/*background: linear-gradient(to bottom, transparent, #91C0DB);*\/\n    pointer-events: none;\n    z-index: 2;\n  }\n  #blob-canvas {\n    width: 100%;\n    height: 100%;\n    display: block;\n    filter: blur(72px) saturate(1.4);\n  }\n  .hero-manchas > *:not(#blob-canvas-wrapper) {\n    position: relative;\n    z-index: 1;\n  }\n<\/style><script>(function () {\n\n  \/* ===== Ajustes de color de las manchas =====\n     color: en RGB \u00b7 alpha: intensidad (0 = invisible, 1 = color s\u00f3lido) *\/\n  var NARANJA   = [214, 112, 72];   \/* #D67048 *\/\n  var MELOCOTON = [247, 189, 137];  \/* #F7BD89 *\/\n  var INTENSIDAD_MANCHA_1 = 0.45;   \/* mancha grande, en naranja #D67048 (antes #F7BD89 al 0.33) *\/\n  var INTENSIDAD_MANCHA_2 = 0.60;   \/* mancha secundaria, en melocot\u00f3n #F7BD89 (antes 0.19) *\/\n  var COLOR_HASTA_LA_MITAD = 0.60;  \/* cu\u00e1nto color conserva la mancha a mitad de su radio (antes 0.45) *\/\n\n  function initBlobs() {\n    var hero = document.querySelector('.hero-manchas');\n    if (!hero || document.getElementById('blob-canvas-wrapper')) return;\n \n    \/* --- Canvas --- *\/\n    var wrapper = document.createElement('div');\n    wrapper.id = 'blob-canvas-wrapper';\n    var canvas = document.createElement('canvas');\n    canvas.id = 'blob-canvas';\n    wrapper.appendChild(canvas);\n    hero.insertBefore(wrapper, hero.firstChild);\n \n    var ctx = canvas.getContext('2d');\n    var W, H;\n    function resize() { W = canvas.width = hero.offsetWidth; H = canvas.height = hero.offsetHeight; }\n    resize();\n    window.addEventListener('resize', resize);\n \n    \/* --- Rat\u00f3n: solo activo mientras se mueve --- *\/\n    var mouse = { x: 0, y: 0, active: false };\n    var mouseTimer = null;\n    document.addEventListener('mousemove', function (e) {\n      var rect = hero.getBoundingClientRect();\n      mouse.x = e.clientX - rect.left;\n      mouse.y = e.clientY - rect.top;\n      mouse.active = true;\n      clearTimeout(mouseTimer);\n      mouseTimer = setTimeout(function () { mouse.active = false; }, 300);\n    });\n \n    \/* --- Manchas --- *\/\n    var blobs = [\n      {\n        x: W * 0.28, y: H * 0.45,\n        vx: 1.1, vy: 0.75,\n        r: 680,\n        color: NARANJA, alpha: INTENSIDAD_MANCHA_1,\n        ox: [{ a: 1.4, f: 0.009 }, { a: 0.7, f: 0.017 }],\n        oy: [{ a: 1.0, f: 0.007 }, { a: 0.8, f: 0.013 }],\n        phase: 0,\n        attract: 0.008\n      },\n      {\n        x: W * 0.68, y: H * 0.52,\n        vx: -0.9, vy: 0.85,\n        r: 600,\n        color: MELOCOTON, alpha: INTENSIDAD_MANCHA_2,\n        ox: [{ a: 1.2, f: 0.008 }, { a: 0.7, f: 0.015 }],\n        oy: [{ a: 1.1, f: 0.011 }, { a: 0.6, f: 0.006 }],\n        phase: 2.5,\n        attract: 0.007\n      }\n    ];\n \n    function drawBlob(b) {\n      var r = b.color[0], g = b.color[1], bl = b.color[2];\n      var grad = ctx.createRadialGradient(b.x, b.y, 0, b.x, b.y, b.r);\n      grad.addColorStop(0,   'rgba('+r+','+g+','+bl+','+b.alpha+')');\n      grad.addColorStop(0.5, 'rgba('+r+','+g+','+bl+','+(b.alpha*COLOR_HASTA_LA_MITAD)+')');\n      grad.addColorStop(1,   'rgba('+r+','+g+','+bl+',0)');\n      ctx.beginPath();\n      ctx.arc(b.x, b.y, b.r, 0, Math.PI * 2);\n      ctx.fillStyle = grad;\n      ctx.fill();\n    }\n \n    var t = 0;\n    function animate() {\n      t++;\n      ctx.clearRect(0, 0, W, H);\n \n      blobs.forEach(function (b) {\n        \/* Movimiento aut\u00f3nomo: velocidad base + oscilaciones en capas *\/\n        var driftX = b.ox.reduce(function (s, o) { return s + Math.sin(t * o.f + b.phase) * o.a; }, 0);\n        var driftY = b.oy.reduce(function (s, o) { return s + Math.cos(t * o.f + b.phase) * o.a; }, 0);\n        b.x += b.vx + driftX;\n        b.y += b.vy + driftY;\n \n        \/* Atracci\u00f3n solo cuando el rat\u00f3n se est\u00e1 moviendo *\/\n        if (mouse.active) {\n          b.x += (mouse.x - b.x) * b.attract;\n          b.y += (mouse.y - b.y) * b.attract;\n        }\n \n        \/* Rebote suave en bordes *\/\n        var m = b.r * 0.2;\n        if (b.x < m)     { b.x = m;     b.vx =  Math.abs(b.vx); }\n        if (b.x > W - m) { b.x = W - m; b.vx = -Math.abs(b.vx); }\n        if (b.y < m)     { b.y = m;     b.vy =  Math.abs(b.vy); }\n        if (b.y > H - m) { b.y = H - m; b.vy = -Math.abs(b.vy); }\n \n        drawBlob(b);\n      });\n \n      requestAnimationFrame(animate);\n    }\n    animate();\n  }\n \n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initBlobs);\n  } else {\n    initBlobs();\n  }\n})();\n<\/script><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_1 et_pb_section et_section_regular et_flex_section et_animated\">\n<div class=\"et_pb_row_1 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_1 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_animated et_flex_column_3_5 et_flex_column_2_5_tablet et_flex_column_24_24_phone\">\n\n\n<div class=\"et_pb_image_0 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/Logo-Zero-blanco-2.svg\" title=\"Logo-Zero-White\" class=\"wp-image-2143\" alt=\"Clara&#039;s Logo\" \/><\/span><\/div>\n\n<div class=\"et_pb_text_1 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module text-typing\"><div class=\"et_pb_text_inner\"><h1 class=\"onode-zero__titulo onode-zero__titulo--typing typing-finalizado\" data-typing-preparado=\"true\">Document anonymization platform with Artificial Intelligence<\/h1>\n<\/div><\/div>\n\n<div class=\"et_pb_text_2 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>The software that protects your data by keeping information always within the organization. Zero combines AI, rules, and human supervision to anonymize in an agile and traceable way.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_0_wrapper\"><a class=\"et_pb_button_0 et_pb_button et_pb_bg_layout_light et_pb_module et_flex_module btn-degradado-zero\" href=\"#asistente-chatbot-onode\">Request a demo<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_2 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_2 et_pb_row et_flex_row et_animated\">\n<div class=\"et_pb_column_2 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_3 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module\"><div class=\"et_pb_text_inner\"><h3>ZERO, your anonymization platform<\/h3>\n<\/div><\/div>\n\n<div class=\"et_pb_text_4 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>A comprehensive platform to make anonymization a process, not a task.<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_3 et_pb_row et_flex_row et_animated\">\n<div class=\"et_pb_column_3 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_2_5 et_flex_column_2_5_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_5 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p data-pm-slice=\"1 1 []\">Reviewing documents one by one requires time and resources, and increases the risk of human error. Moreover, covering text with a black box does not guarantee that the information is permanently deleted.<\/p>\n<p style=\"text-align: left;\">ZERO turns anonymization into an automated, controlled, and demonstrable process, integrating information processing, traceability, and the certification of every operation into a single platform.<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_4 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_3_5 et_flex_column_3_5_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_code_1 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@300;400;500;600&amp;display=swap\" rel=\"stylesheet\"><style>.onode-pestanas {\n\t--pest-fondo: rgba(247, 189, 137, 0.29); \/* #F7BD89 al 29% *\/\n\t--pest-activo: #325572;\n\t--pest-inactivo: #a3abb4;\n\t--pest-titulo: #D67048;\n\t--pest-texto: #325572;\n\tbackground: var(--pest-fondo);\n\tborder-radius: 12px;\n\tpadding: 48px 56px 56px;\n\tmax-width: 100%;\n\tbox-sizing: border-box;\n\tfont-family: 'Outfit', sans-serif;\n}\n.onode-pestanas *, .onode-pestanas *::before, .onode-pestanas *::after { box-sizing: border-box; }\n\/* ---------- Pesta\u00f1as ---------- *\/\n.onode-pestanas__lista {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 10px 40px;\n\tmargin: 0 0 24px;\n\tpadding: 0;\n\tlist-style: none;\n}\n.onode-pestanas__tab {\n\tappearance: none;\n\tbackground: none !important;\n\tborder: 0 !important;\n\tborder-bottom: 2px solid transparent !important;\n\tborder-radius: 0 !important;\n\tpadding: 0 0 6px !important;\n\tmargin: 0 !important;\n\tfont-family: 'Outfit', sans-serif !important;\n\tfont-size: 22px !important;\n\tfont-weight: 400 !important;\n\tline-height: 1.3 !important;\n\tcolor: var(--pest-inactivo) !important;\n\tcursor: pointer;\n\ttransition: color .25s ease, border-color .25s ease;\n}\n.onode-pestanas__tab:hover {\n\tcolor: var(--pest-activo) !important;\n\tborder-bottom-color: var(--pest-inactivo) !important;\n}\n.onode-pestanas__tab[aria-selected=\"true\"] {\n\tcolor: var(--pest-activo) !important;\n\tborder-bottom-color: var(--pest-activo) !important;\n}\n.onode-pestanas__tab:focus-visible {\n\toutline: 2px solid var(--pest-titulo);\n\toutline-offset: 4px;\n}\n\/* ---------- Contenido (todos los paneles ocupan el mismo sitio: el bloque no salta de altura) ---------- *\/\n.onode-pestanas__paneles {\n\tdisplay: grid;\n}\n.onode-pestanas__panel {\n\tgrid-area: 1 \/ 1;\n\topacity: 0;\n\tvisibility: hidden;\n\ttransform: translateY(6px);\n\ttransition: opacity .35s ease, transform .35s ease, visibility 0s linear .35s;\n}\n.onode-pestanas__panel.is-activo {\n\topacity: 1;\n\tvisibility: visible;\n\ttransform: none;\n\ttransition: opacity .35s ease, transform .35s ease, visibility 0s;\n}\n.onode-pestanas__panel h3 {\n\tfont-family: 'Outfit', sans-serif !important;\n\tfont-size: 36px !important;\n\tfont-weight: 600 !important;\n\tline-height: 1.2 !important;\n\tcolor: var(--pest-titulo) !important;\n\tmargin: 0 0 10px !important;\n\tpadding: 0 !important;\n}\n.onode-pestanas__panel p {\n\tfont-family: 'Outfit', sans-serif !important;\n\tfont-size: 24px !important;\n\tfont-weight: 400 !important;\n\tline-height: 1.35 !important;\n\tcolor: var(--pest-texto) !important;\n\tmargin: 0 !important;\n\tpadding: 0 !important;\n\tmax-width: none;\n}\n\/* ---------- M\u00f3vil ---------- *\/\n@media (max-width: 767px) {\n\t.onode-pestanas { padding: 32px 24px 36px; }\n\t\/* CAMBIO M\u00d3VIL: pesta\u00f1as en dos columnas (dos en cada fila) *\/\n\t.onode-pestanas__lista {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: repeat(2, minmax(0, 1fr));\n\t\tgap: 12px 16px;\n\t\tmargin-bottom: 20px;\n\t}\n\t.onode-pestanas__tab {\n\t\tfont-size: 18px !important;\n\t\tjustify-self: start;   \/* el subrayado ocupa solo el ancho del texto *\/\n\t\ttext-align: left;\n\t}\n\t.onode-pestanas__panel h3 { font-size: 32px !important; }  \/* CAMBIO M\u00d3VIL: t\u00edtulo algo m\u00e1s grande (antes 28px) *\/\n\t.onode-pestanas__panel p { font-size: 17px !important; }   \/* CAMBIO M\u00d3VIL: texto a 17px (antes 20px) *\/\n}\n<\/style><div class=\"onode-pestanas\"><div class=\"onode-pestanas__lista\" role=\"tablist\"><button type=\"button\" class=\"onode-pestanas__tab\" role=\"tab\" aria-selected=\"true\">\/automatitza<\/button><button type=\"button\" class=\"onode-pestanas__tab\" role=\"tab\" aria-selected=\"false\" tabindex=\"-1\">\/personalitza<\/button><button type=\"button\" class=\"onode-pestanas__tab\" role=\"tab\" aria-selected=\"false\" tabindex=\"-1\">\/controla<\/button><button type=\"button\" class=\"onode-pestanas__tab\" role=\"tab\" aria-selected=\"false\" tabindex=\"-1\">\/demostra<\/button><\/div><div class=\"onode-pestanas__paneles\"><div class=\"onode-pestanas__panel is-activo\" role=\"tabpanel\"><h3>Automatitza<\/h3><p>La IA analitza cada document i detecta les dades personals de manera autom\u00e0tica, tamb\u00e9 en documents escanejats<\/p><\/div><div class=\"onode-pestanas__panel\" role=\"tabpanel\"><h3>Personalitza<\/h3><p>Inclou perfils segons tipus de document, finalitat, categories de dades i nivell de risc.<\/p><\/div><div class=\"onode-pestanas__panel\" role=\"tabpanel\"><h3>Controla<\/h3><p>IA, regles i supervisi\u00f3 humana: cada organitzaci\u00f3 decideix com verifica els seus documents i ZERO s'adequa.<\/p><\/div><div class=\"onode-pestanas__panel\" role=\"tabpanel\"><h3>Demostra<\/h3><p>Cada anonimitzaci\u00f3 genera un certificat i queda registrada en l'hist\u00f2ric d'activitat.<\/p><\/div><\/div><\/div><script>(function () {\n\t\/* ---- Ajustes de tiempo (en milisegundos) ---- *\/\n\tvar INTERVALO = 2000; \/\/ tiempo que se muestra cada pesta\u00f1a\n\tvar ESPERA = 3000;    \/\/ tiempo que espera antes de volver al modo autom\u00e1tico\n\n\tvar movimientoReducido = window.matchMedia &amp;&amp; window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n\tdocument.querySelectorAll('.onode-pestanas').forEach(function (bloque) {\n\t\tif (bloque.dataset.listo) return;\n\t\tbloque.dataset.listo = '1';\n\t\tvar tabs = Array.prototype.slice.call(bloque.querySelectorAll('.onode-pestanas__tab'));\n\t\tvar paneles = bloque.querySelectorAll('.onode-pestanas__panel');\n\t\tvar actual = 0;\n\t\tvar temporizador = null;\n\t\tvar ratonEncima = false;\n\t\tvar focoTeclado = false;\n\n\t\tfunction activar(i, enfocar) {\n\t\t\tactual = i;\n\t\t\ttabs.forEach(function (tab, j) {\n\t\t\t\tvar activo = (i === j);\n\t\t\t\ttab.setAttribute('aria-selected', activo ? 'true' : 'false');\n\t\t\t\ttab.setAttribute('tabindex', activo ? '0' : '-1');\n\t\t\t\tif (paneles[j]) {\n\t\t\t\t\tpaneles[j].classList.toggle('is-activo', activo);\n\t\t\t\t\tpaneles[j].setAttribute('aria-hidden', activo ? 'false' : 'true');\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (enfocar) tabs[i].focus();\n\t\t}\n\n\t\tfunction parar() {\n\t\t\tclearTimeout(temporizador);\n\t\t\ttemporizador = null;\n\t\t}\n\n\t\tfunction programar(ms) {\n\t\t\tparar();\n\t\t\tif (movimientoReducido || ratonEncima || focoTeclado) return;\n\t\t\ttemporizador = setTimeout(function () {\n\t\t\t\tactivar((actual + 1) % tabs.length, false);\n\t\t\t\tprogramar(INTERVALO);\n\t\t\t}, ms);\n\t\t}\n\n\t\t\/* Pausa al pasar el rat\u00f3n por encima del bloque *\/\n\t\tbloque.addEventListener('pointerenter', function (e) {\n\t\t\tif (e.pointerType !== 'mouse') return;\n\t\t\tratonEncima = true;\n\t\t\tparar();\n\t\t});\n\t\t\/* Al quitar el rat\u00f3n, espera un poco y vuelve al autom\u00e1tico *\/\n\t\tbloque.addEventListener('pointerleave', function (e) {\n\t\t\tif (e.pointerType !== 'mouse') return;\n\t\t\tratonEncima = false;\n\t\t\tprogramar(ESPERA);\n\t\t});\n\n\t\t\/* Pausa mientras se navega con el teclado dentro del bloque *\/\n\t\tbloque.addEventListener('focusin', function (e) {\n\t\t\tvar visible = false;\n\t\t\ttry { visible = e.target.matches(':focus-visible'); } catch (err) {}\n\t\t\tif (visible) {\n\t\t\t\tfocoTeclado = true;\n\t\t\t\tparar();\n\t\t\t}\n\t\t});\n\t\tbloque.addEventListener('focusout', function (e) {\n\t\t\tif (bloque.contains(e.relatedTarget)) return;\n\t\t\tfocoTeclado = false;\n\t\t\tprogramar(ESPERA);\n\t\t});\n\n\t\ttabs.forEach(function (tab, i) {\n\t\t\ttab.addEventListener('click', function () {\n\t\t\t\tactivar(i, false);\n\t\t\t\tprogramar(ESPERA); \/\/ en m\u00f3vil: tras tocar, espera y vuelve al autom\u00e1tico\n\t\t\t});\n\t\t\ttab.addEventListener('keydown', function (e) {\n\t\t\t\tif (e.key === 'ArrowRight') { e.preventDefault(); activar((i + 1) % tabs.length, true); }\n\t\t\t\tif (e.key === 'ArrowLeft')  { e.preventDefault(); activar((i - 1 + tabs.length) % tabs.length, true); }\n\t\t\t});\n\t\t});\n\n\t\tactivar(0, false);\n\t\tprogramar(INTERVALO);\n\t});\n})();\n<\/script><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_3 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_4 et_pb_row et_flex_row et_animated\">\n<div class=\"et_pb_column_5 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_6 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module\"><div class=\"et_pb_text_inner\"><h3>Two functionalities, one platform<\/h3>\n<\/div><\/div>\n\n<div class=\"et_pb_text_7 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p data-pm-slice=\"1 1 []\">Protegeix els documents que publiques i la informaci\u00f3 que comparteixes<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_5 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_6 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_animated et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_code_2 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><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=Outfit:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\n<style>\n.onode-zmod {\n\t--zm-naranja: #D67048;\n\t--zm-naranja-claro: #D6704852; \/* #D67048 al 32% *\/\n\t--zm-melocoton-suave: rgba(247, 189, 137, 0.2); \/* #F7BD89 al 20% *\/\n\t--zm-azul: #325572;\n\t--zm-blanco: #ffffff;\n\t--zm-rojo: #B42318;\n\t--zm-rojo-fondo: rgba(180, 35, 24, 0.1);\n\t--zm-verde: #15803D;\n\t--zm-verde-fondo: rgba(21, 128, 61, 0.1);\n\tfont-family: 'Outfit', sans-serif;\n\tcolor: var(--zm-azul);\n\twidth: 100%;\n}\n.onode-zmod *, .onode-zmod *::before, .onode-zmod *::after { box-sizing: border-box; }\n.onode-zmod :where(p, h3, h4, ul, li) { margin: 0; padding: 0; }\n.onode-zmod p { max-width: none !important; } \/* el tema limita el ancho de los p\u00e1rrafos: aqu\u00ed ocupan todo el espacio *\/\n\/* ---------- Tarjeta ---------- *\/\n.zm-tarjeta {\n\tbackground: var(--zm-blanco);\n\tborder-radius: 16px;\n\tpadding: 36px 28px 40px;\n}\n.zm-paneles { display: grid; }\n.zm-panel {\n\tgrid-area: 1 \/ 1;\n\topacity: 0;\n\tvisibility: hidden;\n\ttransition: opacity .35s ease, visibility 0s linear .35s;\n}\n.zm-panel.is-activo {\n\topacity: 1;\n\tvisibility: visible;\n\ttransition: opacity .35s ease, visibility 0s;\n}\n\/* ---------- Pesta\u00f1as (texto subrayado) ---------- *\/\n.zm-tabs {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\talign-items: flex-end;\n\tgap: 12px 48px;\n\tmargin-bottom: 36px;\n}\n.zm-tab {\n\tappearance: none;\n\tbackground: none !important;\n\tborder: 0 !important;\n\tborder-bottom: 2px solid var(--zm-naranja-claro) !important;\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n\tpadding: 0 0 6px !important;\n\tcursor: pointer;\n\tfont-family: 'Outfit', sans-serif !important;\n\ttext-align: left;\n\ttransition: border-color .25s ease;\n}\n.zm-tab__nombre {\n\tdisplay: inline-grid;\n\tcolor: var(--zm-naranja);\n\topacity: .6;\n\tfont-size: 24px;\n\tfont-weight: 400;\n\tline-height: 1.3;\n\ttransition: opacity .25s ease;\n}\n\/* Reserva el ancho de la versi\u00f3n en negrita para que las pesta\u00f1as no se muevan al cambiar *\/\n.zm-tab__nombre::after {\n\tcontent: attr(data-texto);\n\tfont-weight: 600;\n\theight: 0;\n\tvisibility: hidden;\n\toverflow: hidden;\n\tpointer-events: none;\n}\n.zm-tab:hover .zm-tab__nombre { opacity: 1; }\n.zm-tab[aria-selected=\"true\"] {\n\tborder-bottom-color: var(--zm-naranja) !important;\n\tcursor: default;\n}\n.zm-tab[aria-selected=\"true\"] .zm-tab__nombre {\n\topacity: 1;\n\tfont-weight: 600;\n}\n.zm-tab:focus-visible { outline: 2px solid var(--zm-azul); outline-offset: 4px; }\n\/* ---------- Contenido ---------- *\/\n.zm-intro {\n\tfont-size: 30px !important;\n\tfont-weight: 600 !important;\n\tline-height: 1.3 !important;\n\tcolor: var(--zm-azul) !important;\n\tmargin-bottom: 32px !important;\n}\n.zm-intro--con-sub { margin-bottom: 10px !important; }\n.zm-subintro {\n\tfont-size: 22px !important;\n\tfont-weight: 400 !important;\n\tline-height: 1.4 !important;\n\tcolor: var(--zm-azul) !important;\n\tmargin-bottom: 32px !important;\n}\n.zm-subtitulo {\n\tdisplay: inline-block;\n\tfont-size: 24px !important;\n\tfont-weight: 600 !important;\n\tline-height: 1.2 !important;\n\tcolor: var(--zm-naranja) !important;\n\tpadding: 0 18px 4px 0 !important;\n\tborder-bottom: 1px solid var(--zm-naranja-claro);\n\tmargin-bottom: 12px !important;\n}\n\/* ---------- M\u00f3dulo 1: listado + antes \/ despu\u00e9s ---------- *\/\n.zm-arriba {\n\tdisplay: grid;\n\tgrid-template-columns: minmax(0, 2fr) minmax(0, 3fr); \/* derecha m\u00e1s ancha *\/\n\tgap: 40px;\n\talign-items: stretch;\n}\n\/* Columna izquierda: listado centrado y \"Com funciona\" abajo, a la altura del final de la caja *\/\n.zm-izquierda {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: flex-start;\n}\n.zm-lista { list-style: none !important; padding: 0 !important; margin: 0 !important; }\n.zm-izquierda .zm-lista { margin: auto 0 !important; }\n.zm-lista li {\n\tlist-style: none !important;\n\tposition: relative;\n\tpadding-left: 26px !important;\n\tmargin: 0 0 14px !important;\n\tfont-size: 22px; \/* mismo tama\u00f1o que el subt\u00edtulo del m\u00f3dulo 2 *\/\n\tline-height: 1.4;\n\tcolor: var(--zm-azul);\n}\n.zm-lista li:last-child { margin-bottom: 0 !important; }\n.zm-lista li::marker { content: ''; }\n.zm-lista li::before {\n\tcontent: '';\n\tposition: absolute;\n\tleft: 8px;\n\ttop: .62em;\n\twidth: 5px;\n\theight: 5px;\n\tborder-radius: 50%;\n\tbackground: var(--zm-azul);\n}\n.zm-como-arriba { margin: 24px 0 0 !important; }\n.zm-como-abajo { display: none !important; }\n.zm-como { margin-top: 12px; }\n\/* ---------- Comparador \"antes \/ despu\u00e9s\" (base) ---------- *\/\n.zc-caja {\n\t--pos: 50%;\n\tposition: relative;\n\tborder: 1px solid var(--zm-naranja);\n\tborder-radius: 14px;\n\toverflow: hidden;\n\tbackground: #fff;\n\tcursor: col-resize;\n\ttouch-action: pan-y;\n\tuser-select: none;\n\t-webkit-user-select: none;\n}\n.zc-etiqueta {\n\tposition: absolute;\n\ttop: 10px;\n\tleft: 10px;\n\tz-index: 3;\n\tbackground: var(--zm-azul);\n\tcolor: #fff;\n\tfont-size: 18px;\n\tfont-weight: 500;\n\tline-height: 1;\n\tpadding: 8px 28px;\n\tborder-radius: 999px;\n}\n.zc-capas { display: grid; }\n.zc-capa {\n\tgrid-area: 1 \/ 1;\n\tpadding: 62px 44px 32px;\n\tfont-size: 18px !important;\n\tline-height: 1.5 !important;\n\tcolor: var(--zm-azul) !important;\n\tmax-width: none !important;\n\twidth: 100%;\n}\n.zc-capa--antes   { clip-path: inset(0 calc(100% - var(--pos)) 0 0); }\n.zc-capa--despues { clip-path: inset(0 0 0 var(--pos)); }\n.zc-dato {\n\tdisplay: inline-block;\n\twhite-space: nowrap;\n\tposition: relative;\n}\n\/* Caja fluida: los datos se parten como texto normal, el texto llena todo el ancho *\/\n.zc-caja--fluida .zc-dato {\n\tdisplay: inline;\n\twhite-space: normal;\n}\n\/* \u2026salvo los datos enmascarados, que se mantienen en una pieza para que las dos capas coincidan *\/\n.zc-caja--fluida .zc-dato.zc-dato--fijo {\n\tdisplay: inline-block;\n\twhite-space: nowrap;\n}\n\/* Eliminado: el dato desaparece (queda su hueco para que el texto no se mueva) *\/\n.zc-dato--eliminar { color: transparent !important; }\n\/* Enmascarado y marcador: el texto original queda invisible y encima se pinta la alternativa *\/\n.zc-dato--mascara,\n.zc-dato--token { color: transparent !important; }\n.zc-dato--mascara::after,\n.zc-dato--token::after {\n\tcontent: attr(data-alt);\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\twidth: 100%;\n\theight: 100%;\n\toverflow: hidden;\n\twhite-space: nowrap;\n}\n.zc-dato--mascara::after { color: var(--zm-azul); text-align: left; }\n.zc-dato--token::after { text-align: center; }\n.zc-linea {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: var(--pos);\n\twidth: 1px;\n\tbackground: var(--zm-azul);\n\tz-index: 2;\n\tpointer-events: none;\n}\n.zc-punto {\n\tposition: absolute;\n\ttop: 58%;\n\tleft: 50%;\n\twidth: 14px;\n\theight: 14px;\n\tborder-radius: 50%;\n\tbackground: var(--zm-naranja);\n\ttransform: translate(-50%, -50%);\n}\n\/* ---------- Pasos (comunes a los dos m\u00f3dulos) ---------- *\/\n.zm-paso__cabecera {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: 14px;\n\tmargin-bottom: 12px;\n}\n.zm-paso__num {\n\tfont-size: 30px;\n\tfont-weight: 600;\n\tline-height: 1;\n\tcolor: var(--zm-naranja);\n}\n.zm-paso__titulo {\n\tfont-family: 'Outfit', sans-serif !important;\n\tfont-size: 28px !important;\n\tfont-weight: 600 !important;\n\tline-height: 1.2 !important;\n\tcolor: var(--zm-azul) !important;\n\tmargin: 0 !important;\n\tpadding: 0 !important;\n}\n.zm-paso__texto {\n\tfont-size: 18px !important;\n\tline-height: 1.4 !important;\n\tcolor: var(--zm-azul) !important;\n}\n\/* Flecha centrada en el hueco entre columnas *\/\n.zm-flecha--entre {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: calc(100% + var(--zm-hueco) \/ 2);\n\twidth: 34px;\n\theight: 16px;\n\ttransform: translate(-50%, -50%);\n\tcolor: var(--zm-naranja);\n}\n\/* ---------- M\u00f3dulo 1: pasos en cajas ---------- *\/\n.zm-pasos {\n\t--zm-hueco: 56px;\n\tdisplay: grid;\n\tgrid-template-columns: repeat(3, minmax(0, 1fr));\n\tgap: var(--zm-hueco);\n\tmargin-top: 22px;\n}\n.zm-paso {\n\tposition: relative;\n\tbackground: var(--zm-melocoton-suave);\n\tborder-radius: 16px;\n\tpadding: 26px 28px 28px;\n}\n\/* ---------- M\u00f3dulo 2: flujo de tres pasos con bloques ---------- *\/\n.zf-flujo {\n\t--zm-hueco: 56px;\n\tdisplay: grid;\n\tgrid-template-columns: repeat(3, minmax(0, 1fr));\n\tgrid-template-rows: auto auto; \/* fila 1: pasos \u00b7 fila 2: bloques (todos a la misma altura) *\/\n\tgrid-auto-flow: column;\n\tcolumn-gap: var(--zm-hueco);\n\trow-gap: 24px;\n\tmargin-top: 22px;\n}\n\/* Cada paso con su bloque va agrupado (para el carrusel de m\u00f3vil);\n   en ordenador y tablet el grupo \"desaparece\" y la rejilla funciona como siempre *\/\n.zf-slide { display: contents; }\n.zf-celda {\n\tposition: relative;\n\tdisplay: flex;\n}\n.zf-bloque {\n\tposition: relative;\n\tflex: 1 1 auto;\n\tbackground: var(--zm-blanco);\n\tborder: 1px solid var(--zm-naranja);\n\tborder-radius: 14px;\n\toverflow: hidden;\n}\n.zf-etiqueta {\n\tposition: absolute;\n\ttop: 22px;\n\tleft: 26px;\n\tz-index: 3;\n\tfont-size: 18px;\n\tfont-weight: 600;\n\tline-height: 1;\n\tletter-spacing: .08em;\n\ttext-transform: uppercase;\n}\n.zf-texto,\n.zf-bloque .zc-capa {\n\tpadding: 56px 26px 20px !important;\n\tfont-size: 20px !important;\n\tline-height: 1.75 !important;\n\tcolor: var(--zm-azul) !important;\n}\n\/* Datos resaltados *\/\n.zf-bloque .zc-dato {\n\tpadding: 0 8px;\n\tborder-radius: 6px;\n\tfont-weight: 500;\n}\n\/* Bloque 1: texto original (datos en rojo) *\/\n.zf-bloque--original .zf-etiqueta { color: var(--zm-azul); }\n.zf-bloque--original .zc-dato { background: var(--zm-rojo-fondo); color: var(--zm-rojo); }\n\/* Bloque 2: lo que se env\u00eda al LLM (comparador, bloque destacado) *\/\n.zc-caja.zf-bloque--llm {\n\tbackground: var(--zm-melocoton-suave);\n\tborder: 2px solid var(--zm-naranja);\n\tborder-radius: 14px;\n}\n.zf-bloque--llm .zf-etiqueta { color: var(--zm-naranja); }\n.zf-bloque--llm .zc-dato { background: var(--zm-rojo-fondo); color: var(--zm-rojo); }\n.zf-bloque--llm .zc-dato--token::after {\n\tbackground: var(--zm-naranja);\n\tcolor: var(--zm-blanco);\n\tborder-radius: 6px;\n\tfont-size: inherit;\n\tline-height: inherit;\n\tfont-weight: 500;\n}\n\/* Bloque 3: respuesta reidentificada (datos en verde) *\/\n.zf-bloque--restituido .zf-etiqueta { color: var(--zm-verde); }\n.zf-bloque--restituido .zc-dato { background: var(--zm-verde-fondo); color: var(--zm-verde); }\n\/* ---------- Navegaci\u00f3n de los carruseles (oculta en ordenador y tablet) ---------- *\/\n.zm-nav { display: none; }\n\/* ---------- Tablet ---------- *\/\n@media (max-width: 980px) {\n\t\/* Una sola columna: \"Com funciona\" vuelve a su sitio, debajo de la caja *\/\n\t.zm-arriba { grid-template-columns: 1fr; gap: 30px; }\n\t.zm-izquierda .zm-lista { margin: 0 !important; }\n\t.zm-como-arriba { display: none !important; }\n\t.zm-como-abajo { display: inline-block !important; }\n\t.zm-como { margin-top: 36px; }\n\t.zm-intro { font-size: 26px !important; }\n\t.zm-subintro { font-size: 20px !important; }\n\t.zm-lista li { font-size: 20px; }\n\t.zm-pasos, .zf-flujo { --zm-hueco: 46px; }\n\t.zm-paso { padding: 22px 22px 24px; }\n\t.zm-paso__titulo { font-size: 24px !important; }\n\t.zm-paso__num { font-size: 26px; }\n\t.zm-flecha--entre { width: 28px; }\n\t.zf-etiqueta { left: 20px; }\n\t.zf-texto, .zf-bloque .zc-capa { padding: 54px 20px 18px !important; font-size: 18px !important; }\n\t.zm-tabs { gap: 12px 32px; }\n\t.zm-tab__nombre { font-size: 22px; }\n}\n\/* Una columna: la flecha apunta hacia abajo *\/\n@media (max-width: 860px) {\n\t.zm-pasos { --zm-hueco: 48px; grid-template-columns: 1fr; }\n\t.zf-flujo {\n\t\tgrid-template-columns: 1fr;\n\t\tgrid-template-rows: none;\n\t\tgrid-auto-flow: row;\n\t\trow-gap: 16px;\n\t}\n\t.zf-slide:not(:last-child) .zf-celda { margin-bottom: 40px; }\n\t.zm-flecha--entre {\n\t\ttop: calc(100% + var(--zm-hueco) \/ 2);\n\t\tleft: 50%;\n\t\twidth: 30px;\n\t\ttransform: translate(-50%, -50%) rotate(90deg);\n\t}\n\t.zf-celda .zm-flecha--entre { top: calc(100% + 28px); } \/* centrada entre el bloque y el paso siguiente *\/\n}\n\/* ---------- M\u00f3vil ---------- *\/\n@media (max-width: 767px) {\n\t.zm-tarjeta { padding: 26px 18px 30px; }\n\t.zm-tabs { flex-wrap: nowrap; gap: 20px; margin-bottom: 26px; }\n\t.zm-tab { flex: 0 1 auto; }\n\t.zm-tab__nombre { font-size: 18px; }\n\t\/* Tama\u00f1os de texto en m\u00f3vil (m\u00ednimo 16px) *\/\n\t.zm-intro { font-size: 24px !important; margin-bottom: 22px !important; }\n\t.zm-intro--con-sub { margin-bottom: 8px !important; }\n\t.zm-subintro { font-size: 18px !important; margin-bottom: 24px !important; }\n\t.zm-subtitulo { font-size: 20px !important; }\n\t.zm-lista li { font-size: 17px; }\n\t.zc-capa { padding: 60px 20px 24px; font-size: 16px !important; }\n\t.zc-etiqueta { font-size: 16px; padding: 8px 20px; }\n\t.zm-como { margin-top: 30px; }\n\t.zm-paso { padding: 20px 20px 22px; }   \/* cajas de la primera pesta\u00f1a: como estaban *\/\n\t.zm-paso__cabecera { gap: 10px; margin-bottom: 8px; }\n\t.zm-paso__num { font-size: 22px; }\n\t.zm-paso__titulo { font-size: 20px !important; }\n\t.zm-paso__texto { font-size: 16px !important; }\n\t\/* ===== Cajas de la segunda pesta\u00f1a =====\n\t   CAMBIO M\u00d3VIL: la etiqueta y el texto van juntos, alineados a la izquierda,\n\t   y el conjunto queda centrado en vertical dentro de la caja *\/\n\t.zf-bloque {\n\t\tmin-height: 230px;   \/* cajas m\u00e1s altas *\/\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tpadding: 24px 0;\n\t}\n\t.zf-etiqueta {\n\t\tposition: relative;  \/* deja de flotar arriba: va justo encima del texto *\/\n\t\ttop: auto;\n\t\tleft: auto;\n\t\tdisplay: block;\n\t\tmargin: 0 20px 10px;\n\t\tfont-size: 16px;\n\t\tline-height: 1.25;\n\t}\n\t.zf-texto, .zf-bloque .zc-capa {\n\t\tpadding: 0 20px !important;   \/* sin hueco entre la etiqueta y el texto *\/\n\t\tfont-size: 16px !important;\n\t}\n\t.zf-bloque .zc-capas { width: 100%; }\n\t\/* Segunda pesta\u00f1a con m\u00e1s espacio vertical\n\t   (para compensar que es m\u00e1s baja que la primera) *\/\n\t.zm-panel--m2 { padding-top: 10px; }\n\t.zm-panel--m2 .zm-intro--con-sub { margin-bottom: 16px !important; }\n\t.zm-panel--m2 .zm-subintro { margin-bottom: 40px !important; }\n\t.zm-panel--m2 .zm-subtitulo { margin-bottom: 16px !important; }\n\t.zm-panel--m2 .zf-flujo { margin-top: 28px; }\n\t.zm-panel--m2 .zm-nav { margin-top: 28px; }\n\t\/* ===== Carrusel lateral de \"Com funciona\" =====\n\t   El paso visible queda centrado y asoman los de los dos lados *\/\n\t.zm-carrusel {\n\t\tposition: relative;\n\t\tdisplay: grid;\n\t\tgrid-template-columns: none;\n\t\tgrid-template-rows: none;\n\t\tgrid-auto-flow: column;\n\t\tgrid-auto-columns: 100%;  \/* cada paso ocupa el hueco central (el ancho menos el relleno de los lados) *\/\n\t\tgap: 16px;\n\t\toverflow-x: auto;\n\t\toverflow-y: hidden;\n\t\tscroll-snap-type: x mandatory;\n\t\tmargin-left: -18px;\n\t\tmargin-right: -18px;\n\t\tpadding: 0 10% 4px;       \/* lo que asoma de los pasos de los lados *\/\n\t\t-webkit-overflow-scrolling: touch;\n\t\tscrollbar-width: none;\n\t}\n\t.zm-carrusel::-webkit-scrollbar { display: none; }\n\t.zm-carrusel > * {\n\t\tscroll-snap-align: center;\n\t\tmin-width: 0;\n\t}\n\t\/* Las flechas entre pasos se sustituyen por la navegaci\u00f3n del carrusel *\/\n\t.zm-carrusel .zm-flecha--entre { display: none; }\n\t\/* ===== M\u00f3dulo 2: cada diapositiva lleva el paso arriba y su caja de ejemplo debajo =====\n\t   Las tres cajas de ejemplo miden siempre lo mismo de alto.\n\t   La rejilla tiene dos filas compartidas por todas las diapositivas:\n\t   fila 1 = textos de los pasos (iguala su altura), fila 2 = cajas (todas iguales)\n\t   CAMBIO M\u00d3VIL: 40px de separaci\u00f3n entre el texto del paso y su caja *\/\n\t.zf-flujo.zm-carrusel {\n\t\tgrid-template-rows: auto auto;\n\t\trow-gap: 40px;\n\t}\n\t\/* Si el navegador es antiguo y no admite esta rejilla compartida, cada diapositiva se apila sola *\/\n\t.zf-slide {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 40px;\n\t\tgrid-row: span 2;\n\t}\n\t@supports (grid-template-rows: subgrid) {\n\t\t.zf-slide {\n\t\t\tdisplay: grid;\n\t\t\tgrid-template-rows: subgrid;\n\t\t\trow-gap: 40px;   \/* antes estaba a 0 y anulaba la separaci\u00f3n *\/\n\t\t}\n\t}\n\t.zf-slide .zf-celda,\n\t.zf-slide:not(:last-child) .zf-celda {\n\t\tmargin-bottom: 0;\n\t\tflex: 1 1 auto;\n\t}\n\t\/* Navegaci\u00f3n: flecha anterior, puntos y flecha siguiente *\/\n\t.zm-nav {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tgap: 16px;\n\t\tmargin-top: 20px;\n\t}\n\t.zm-nav__btn {\n\t\tappearance: none;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 40px;\n\t\theight: 40px;\n\t\tpadding: 0 !important;\n\t\tmargin: 0 !important;\n\t\tborder: 1.5px solid var(--zm-naranja) !important;\n\t\tborder-radius: 50% !important;\n\t\tbackground: var(--zm-blanco) !important;\n\t\tcolor: var(--zm-naranja);\n\t\tcursor: pointer;\n\t\ttransition: opacity .25s ease, background-color .25s ease;\n\t}\n\t.zm-nav__btn svg { width: 16px; height: 16px; }\n\t.zm-nav__btn:disabled { opacity: .35; cursor: default; }\n\t.zm-nav__btn:focus-visible { outline: 2px solid var(--zm-azul); outline-offset: 3px; }\n\t.zm-nav__puntos { display: flex; align-items: center; gap: 8px; }\n\t.zm-nav__punto {\n\t\tappearance: none;\n\t\twidth: 8px;\n\t\theight: 8px;\n\t\tpadding: 0 !important;\n\t\tmargin: 0 !important;\n\t\tborder: 0 !important;\n\t\tborder-radius: 50% !important;\n\t\tbackground: var(--zm-naranja-claro) !important;\n\t\tcursor: pointer;\n\t\ttransition: background-color .25s ease, transform .25s ease;\n\t}\n\t.zm-nav__punto.is-activo {\n\t\tbackground: var(--zm-naranja) !important;\n\t\ttransform: scale(1.25);\n\t}\n}\n<\/style>\n<div id=\"onode-zmod-1\" class=\"onode-zmod\">\n\t<div class=\"zm-tarjeta\">\n\t\t<div class=\"zm-tabs\" role=\"tablist\">\n\t\t\t<button type=\"button\" class=\"zm-tab\" role=\"tab\" aria-selected=\"true\">\n\t\t\t\t<span class=\"zm-tab__nombre\" data-texto=\"Document anonymisation\">Document anonymisation<\/span>\n\t\t\t<\/button>\n\t\t\t<button type=\"button\" class=\"zm-tab\" role=\"tab\" aria-selected=\"false\" tabindex=\"-1\">\n\t\t\t\t<span class=\"zm-tab__nombre\" data-texto=\"Protection against external AIs\">Protection against external AIs<\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t\t<div class=\"zm-paneles\">\n\t\t\t<!-- ===== M\u00f3dulo 1 ===== -->\n\t\t\t<div class=\"zm-panel is-activo\" role=\"tabpanel\">\n\t\t\t\t<p class=\"zm-intro\">Anonymise reports, resolutions, contracts, minutes or any other documentation before publishing or sharing it.<\/p>\n\t\t\t\t<!-- Dos columnas: listado a la izquierda (m\u00e1s estrecha), antes \/ despu\u00e9s a la derecha (m\u00e1s ancha) -->\n\t\t\t\t<div class=\"zm-arriba\">\n\t\t\t\t\t<div class=\"zm-izquierda\">\n\t\t\t\t\t\t<ul class=\"zm-lista\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li>AI detection and validated rules, including scanned documents.<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li>Configurable human review and risk checker.<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<li>Irreversible removal, with a certificate for every document.<\/li>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<!-- \"Com funciona\" subido: en ordenador queda a la izquierda, a la altura del final de la caja -->\n\t\t\t\t\t\t<h3 class=\"zm-subtitulo zm-como-arriba\">How it works<\/h3>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div class=\"zc-caja zc-caja--fluida\" style=\"--pos:50%\"><span class=\"zc-etiqueta\">Anonymisation<\/span><div class=\"zc-capas\"><p class=\"zc-capa zc-capa--antes\">A grant of \u20ac1,200 is approved for <span class=\"zc-dato\">Alejandro Garc\u00eda<\/span>, ID number <span class=\"zc-dato zc-dato--fijo\">1234567-X<\/span>, resident in <span class=\"zc-dato\">X\u00e0tiva<\/span>, under the 2026 call for fa\u00e7ade rehabilitation.<\/p><p class=\"zc-capa zc-capa--despues\" aria-hidden=\"true\">A grant of \u20ac1,200 is approved for <span class=\"zc-dato zc-dato--eliminar\" data-alt=\"\">Alejandro Garc\u00eda<\/span>, ID number <span class=\"zc-dato zc-dato--mascara zc-dato--fijo\" data-alt=\"123****-X\">1234567-X<\/span>, resident in <span class=\"zc-dato zc-dato--eliminar\" data-alt=\"\">X\u00e0tiva<\/span>, under the 2026 call for fa\u00e7ade rehabilitation.<\/p><\/div><span class=\"zc-linea\" aria-hidden=\"true\"><span class=\"zc-punto\"><\/span><\/span><\/div>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"zm-como\">\n\t\t\t\t\t<h3 class=\"zm-subtitulo zm-como-abajo\">How it works<\/h3>\n\t\t\t\t\t<div class=\"zm-pasos zm-carrusel\"><div class=\"zm-paso\"><div class=\"zm-paso__cabecera\"><span class=\"zm-paso__num\">01.<\/span><h4 class=\"zm-paso__titulo\">Upload<\/h4><\/div><p class=\"zm-paso__texto\">Upload a single document or process large volumes of documents in different formats (PDF, DOCX, ODT, TXT, XLSX, ODS, CSV, PNG, JPG).<\/p><svg class=\"zm-flecha zm-flecha--entre\" viewBox=\"0 0 34 16\" aria-hidden=\"true\"><path d=\"M0 8h31M24 1l7 7-7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\/><\/svg><\/div><div class=\"zm-paso\"><div class=\"zm-paso__cabecera\"><span class=\"zm-paso__num\">02.<\/span><h4 class=\"zm-paso__titulo\">Analyse<\/h4><\/div><p class=\"zm-paso__texto\">ZERO identifies personal data using AI and the profile rules, preconfigured and tailored to your organisation.<\/p><svg class=\"zm-flecha zm-flecha--entre\" viewBox=\"0 0 34 16\" aria-hidden=\"true\"><path d=\"M0 8h31M24 1l7 7-7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\/><\/svg><\/div><div class=\"zm-paso\"><div class=\"zm-paso__cabecera\"><span class=\"zm-paso__num\">03.<\/span><h4 class=\"zm-paso__titulo\">Verify<\/h4><\/div><p class=\"zm-paso__texto\">The checker reviews the result and enables human oversight for a verified outcome.<\/p><\/div><\/div><div class=\"zm-nav\" data-ir=\"Go to step\"><button type=\"button\" class=\"zm-nav__btn zm-nav__btn--prev\" aria-label=\"Previous step\"><svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M10 3 5 8l5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button><div class=\"zm-nav__puntos\"><\/div><button type=\"button\" class=\"zm-nav__btn zm-nav__btn--next\" aria-label=\"Next step\"><svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M6 3l5 5-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button><\/div>\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<!-- ===== M\u00f3dulo 2 ===== -->\n\t\t\t<div class=\"zm-panel zm-panel--m2\" role=\"tabpanel\" aria-hidden=\"true\">\n\t\t\t\t<p class=\"zm-intro zm-intro--con-sub\">Use generative AI without exposing a single piece of personal data.<\/p>\n\t\t\t\t<p class=\"zm-subintro\">Protect personal data before uploading information to a large language model (LLM) such as ChatGPT, Copilot, Gemini or Claude.<\/p>\n\t\t\t\t<h3 class=\"zm-subtitulo\">How it works<\/h3>\n\t\t\t\t<!-- Tres pasos: cada uno con su explicaci\u00f3n arriba y su bloque de ejemplo debajo (en m\u00f3vil, carrusel lateral) -->\n\t\t\t\t<div class=\"zf-flujo zm-carrusel\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"zf-slide\">\n\t\t\t\t\t\t\t<div class=\"zf-paso\">\n\t\t\t\t\t\t\t\t<div class=\"zm-paso__cabecera\"><span class=\"zm-paso__num\">01.<\/span><h4 class=\"zm-paso__titulo\">Enter<\/h4><\/div>\t\t\t\t\t\t\t\t<p class=\"zm-paso__texto\">Paste or upload the text or document you want to work with.<\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"zf-celda\">\n\t\t\t\t\t\t\t\t<div class=\"zf-bloque zf-bloque--original\"><span class=\"zf-etiqueta\">Your text<\/span><p class=\"zf-texto\">Summarise the case file of <span class=\"zc-dato zc-dato--fijo\">Laura G\u00f3mez Rivas<\/span>, ID number <span class=\"zc-dato zc-dato--fijo\">12345678Z<\/span>.<\/p><\/div>\t\t\t\t\t\t\t\t<svg class=\"zm-flecha zm-flecha--entre\" viewBox=\"0 0 34 16\" aria-hidden=\"true\"><path d=\"M0 8h31M24 1l7 7-7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\/><\/svg>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"zf-slide\">\n\t\t\t\t\t\t\t<div class=\"zf-paso\">\n\t\t\t\t\t\t\t\t<div class=\"zm-paso__cabecera\"><span class=\"zm-paso__num\">02.<\/span><h4 class=\"zm-paso__titulo\">Protect by tokenisation<\/h4><\/div>\t\t\t\t\t\t\t\t<p class=\"zm-paso__texto\">ZERO replaces personal data with placeholders before the text reaches the LLM, which only sees the protected version.<\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"zf-celda\">\n\t\t\t\t\t\t\t\t<div class=\"zc-caja zf-bloque zf-bloque--llm\" style=\"--pos:50%\"><span class=\"zf-etiqueta\">Sent to the LLM<\/span><div class=\"zc-capas\"><p class=\"zc-capa zc-capa--antes\">Summarise the case file of <span class=\"zc-dato zc-dato--fijo\">Laura G\u00f3mez Rivas<\/span>, ID number <span class=\"zc-dato zc-dato--fijo\">12345678Z<\/span>.<\/p><p class=\"zc-capa zc-capa--despues\" aria-hidden=\"true\">Summarise the case file of <span class=\"zc-dato zc-dato--token zc-dato--fijo\" data-alt=\"[PERSON_1]\">Laura G\u00f3mez Rivas<\/span>, ID number <span class=\"zc-dato zc-dato--token zc-dato--fijo\" data-alt=\"[ID_1]\">12345678Z<\/span>.<\/p><\/div><span class=\"zc-linea\" aria-hidden=\"true\"><span class=\"zc-punto\"><\/span><\/span><\/div>\t\t\t\t\t\t\t\t<svg class=\"zm-flecha zm-flecha--entre\" viewBox=\"0 0 34 16\" aria-hidden=\"true\"><path d=\"M0 8h31M24 1l7 7-7 7\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\/><\/svg>\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"zf-slide\">\n\t\t\t\t\t\t\t<div class=\"zf-paso\">\n\t\t\t\t\t\t\t\t<div class=\"zm-paso__cabecera\"><span class=\"zm-paso__num\">03.<\/span><h4 class=\"zm-paso__titulo\">Restore<\/h4><\/div>\t\t\t\t\t\t\t\t<p class=\"zm-paso__texto\">Paste the LLM&#039;s response into ZERO so it replaces the tokens with the original personal data.<\/p>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"zf-celda\">\n\t\t\t\t\t\t\t\t<div class=\"zf-bloque zf-bloque--restituido\"><span class=\"zf-etiqueta\">Re-identified within ZERO<\/span><p class=\"zf-texto\"><span class=\"zc-dato\">Laura G\u00f3mez Rivas<\/span> is applying for a grant for\u2026<\/p><\/div>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"zm-nav\" data-ir=\"Go to step\"><button type=\"button\" class=\"zm-nav__btn zm-nav__btn--prev\" aria-label=\"Previous step\"><svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M10 3 5 8l5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button><div class=\"zm-nav__puntos\"><\/div><button type=\"button\" class=\"zm-nav__btn zm-nav__btn--next\" aria-label=\"Next step\"><svg viewBox=\"0 0 16 16\" aria-hidden=\"true\"><path d=\"M6 3l5 5-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button><\/div>\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n<script>\n(function () {\n\tvar bloque = document.getElementById('onode-zmod-1');\n\tif (!bloque) return;\n\tvar reducirMovimiento = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\t\/* ----- Pesta\u00f1as ----- *\/\n\tvar tabs = Array.prototype.slice.call(bloque.querySelectorAll('.zm-tab'));\n\tvar paneles = bloque.querySelectorAll('.zm-panel');\n\tfunction activar(i, enfocar) {\n\t\ttabs.forEach(function (tab, j) {\n\t\t\tvar activo = (i === j);\n\t\t\ttab.setAttribute('aria-selected', activo ? 'true' : 'false');\n\t\t\ttab.setAttribute('tabindex', activo ? '0' : '-1');\n\t\t\tpaneles[j].classList.toggle('is-activo', activo);\n\t\t\tpaneles[j].setAttribute('aria-hidden', activo ? 'false' : 'true');\n\t\t});\n\t\tif (enfocar) tabs[i].focus();\n\t}\n\ttabs.forEach(function (tab, i) {\n\t\ttab.addEventListener('click', function () { activar(i, false); });\n\t\ttab.addEventListener('keydown', function (e) {\n\t\t\tif (e.key === 'ArrowRight') { e.preventDefault(); activar((i + 1) % tabs.length, true); }\n\t\t\tif (e.key === 'ArrowLeft')  { e.preventDefault(); activar((i - 1 + tabs.length) % tabs.length, true); }\n\t\t});\n\t});\n\t\/* ----- Comparador \"antes \/ despu\u00e9s\": sigue al rat\u00f3n (o al dedo en m\u00f3vil) ----- *\/\n\tbloque.querySelectorAll('.zc-caja').forEach(function (caja) {\n\t\tvar arrastrando = false;\n\t\tfunction mover(x) {\n\t\t\tvar r = caja.getBoundingClientRect();\n\t\t\tvar pos = Math.min(100, Math.max(0, (x - r.left) \/ r.width * 100));\n\t\t\tcaja.style.setProperty('--pos', pos + '%');\n\t\t}\n\t\tcaja.addEventListener('pointermove', function (e) {\n\t\t\tif (e.pointerType === 'mouse' || arrastrando) mover(e.clientX);\n\t\t});\n\t\tcaja.addEventListener('pointerdown', function (e) {\n\t\t\tarrastrando = true;\n\t\t\tmover(e.clientX);\n\t\t});\n\t\twindow.addEventListener('pointerup', function () { arrastrando = false; });\n\t\tcaja.addEventListener('pointercancel', function () { arrastrando = false; });\n\t});\n\t\/* ----- Carruseles de \"Com funciona\" (solo se usan en m\u00f3vil) -----\n\t   Nunca avanzan solos: se pasan con el dedo, con las flechas o tocando los puntos.\n\t   El paso visible queda siempre centrado. *\/\n\tbloque.querySelectorAll('.zm-carrusel').forEach(function (carrusel) {\n\t\tvar nav = carrusel.nextElementSibling;\n\t\tif (!nav || !nav.classList.contains('zm-nav')) return;\n\t\tvar diapositivas = Array.prototype.slice.call(carrusel.children);\n\t\tvar anterior = nav.querySelector('.zm-nav__btn--prev');\n\t\tvar siguiente = nav.querySelector('.zm-nav__btn--next');\n\t\tvar contenedorPuntos = nav.querySelector('.zm-nav__puntos');\n\t\tvar etiquetaIr = nav.getAttribute('data-ir') || '';\n\t\tvar puntos = diapositivas.map(function (d, i) {\n\t\t\tvar punto = document.createElement('button');\n\t\t\tpunto.type = 'button';\n\t\t\tpunto.className = 'zm-nav__punto';\n\t\t\tpunto.setAttribute('aria-label', etiquetaIr + ' ' + (i + 1));\n\t\t\tpunto.addEventListener('click', function () { irA(i); });\n\t\t\tcontenedorPuntos.appendChild(punto);\n\t\t\treturn punto;\n\t\t});\n\t\t\/* Diapositiva que est\u00e1 ahora en el centro *\/\n\t\tfunction indiceActual() {\n\t\t\tvar centro = carrusel.scrollLeft + carrusel.clientWidth \/ 2;\n\t\t\tvar mejor = 0;\n\t\t\tvar distancia = Infinity;\n\t\t\tdiapositivas.forEach(function (d, i) {\n\t\t\t\tvar dif = Math.abs(d.offsetLeft + d.offsetWidth \/ 2 - centro);\n\t\t\t\tif (dif < distancia) { distancia = dif; mejor = i; }\n\t\t\t});\n\t\t\treturn mejor;\n\t\t}\n\t\t\/* Lleva una diapositiva al centro *\/\n\t\tfunction irA(i) {\n\t\t\ti = Math.max(0, Math.min(diapositivas.length - 1, i));\n\t\t\tvar d = diapositivas[i];\n\t\t\tcarrusel.scrollTo({\n\t\t\t\tleft: d.offsetLeft + d.offsetWidth \/ 2 - carrusel.clientWidth \/ 2,\n\t\t\t\tbehavior: reducirMovimiento ? 'auto' : 'smooth'\n\t\t\t});\n\t\t}\n\t\tfunction actualizar() {\n\t\t\tvar actual = indiceActual();\n\t\t\tpuntos.forEach(function (p, j) { p.classList.toggle('is-activo', j === actual); });\n\t\t\tanterior.disabled = actual === 0;\n\t\t\tsiguiente.disabled = actual === diapositivas.length - 1;\n\t\t}\n\t\tvar pendiente = false;\n\t\tcarrusel.addEventListener('scroll', function () {\n\t\t\tif (pendiente) return;\n\t\t\tpendiente = true;\n\t\t\trequestAnimationFrame(function () {\n\t\t\t\tpendiente = false;\n\t\t\t\tactualizar();\n\t\t\t});\n\t\t}, { passive: true });\n\t\tanterior.addEventListener('click', function () { irA(indiceActual() - 1); });\n\t\tsiguiente.addEventListener('click', function () { irA(indiceActual() + 1); });\n\t\twindow.addEventListener('resize', actualizar);\n\t\tactualizar();\n\t});\n})();\n<\/script>\n\t<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_4 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_6 et_pb_row et_flex_row et_animated\">\n<div class=\"et_pb_column_7 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_8 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module\"><div class=\"et_pb_text_inner\"><h3>Features and functionalities<\/h3>\n<\/div><\/div>\n\n<div class=\"et_pb_text_9 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>AI that protects your data without taking it out of your organization<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_10 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p style=\"text-align: left;\">ZERO runs the AI locally. The content of the documents is not communicated to third parties: the documents remain within the organization, and only the hash associated with the certification is retained.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_group_carousel_0 et_pb_group_carousel et_pb_group et_pb_module et_pb_group_carousel_arrows_outside et_pb_group_carousel_dots_center et_pb_group_carousel_dots_below et_pb_group_carousel_slides_3 carrusel-misma-altura carrusel-drag\"><div class=\"et_pb_group_carousel_container\"><div class=\"et_pb_group_carousel_track\"><div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_0 et_pb_group et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_1 et_pb_image et_pb_module et_flex_module icono-slider\"><span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/ia-local-zero.svg\" title=\"local ia zero\" class=\"wp-image-2384\" \/><\/span><\/div>\n\n<div class=\"et_pb_text_11 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Local AI<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_12 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>100% processing within your infrastructure. No communications to third parties.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_code_3 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><style>.onode-etiquetas {\n\t--etq-color: #325572;\n\t--etq-espacio: 14px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--etq-espacio);\n\twidth: 100%;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n}\n.onode-etiqueta {\n\tdisplay: inline-block;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tbox-sizing: border-box;\n\tfont-family: 'Outfit', sans-serif;\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tline-height: 1.25;\n\tcolor: var(--etq-color);\n\tborder: 1px solid var(--etq-color);\n\tborder-radius: 6px;\n\tpadding: 9px 22px;\n\twhite-space: normal;\n\toverflow-wrap: break-word;\n\tword-break: normal;\n\tbackground: transparent;\n}\n@media (max-width: 767px) {\n\t.onode-etiquetas { --etq-espacio: 10px; }\n\t.onode-etiqueta { padding: 8px 16px; font-size: 17px; }\n}\n<\/style><div class=\"onode-etiquetas\"><span class=\"onode-etiqueta\">IA local<\/span><span class=\"onode-etiqueta\">Plantilles IA<\/span><span class=\"onode-etiqueta\">Ajust de llindars<\/span><\/div><\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_1 et_pb_group et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_2 et_pb_image et_pb_module et_flex_module icono-slider\"><span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/motor-dual.svg\" title=\"motor dual\" class=\"wp-image-2378\" \/><\/span><\/div>\n\n<div class=\"et_pb_text_13 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Motor dual<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_14 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Entity-adapted data rules and parameterized AI analysis.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_code_4 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><style>.onode-etiquetas {\n\t--etq-color: #325572;\n\t--etq-espacio: 14px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--etq-espacio);\n\twidth: 100%;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n}\n.onode-etiqueta {\n\tdisplay: inline-block;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tbox-sizing: border-box;\n\tfont-family: 'Outfit', sans-serif;\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tline-height: 1.25;\n\tcolor: var(--etq-color);\n\tborder: 1px solid var(--etq-color);\n\tborder-radius: 6px;\n\tpadding: 9px 22px;\n\twhite-space: normal;\n\toverflow-wrap: break-word;\n\tword-break: normal;\n\tbackground: transparent;\n}\n@media (max-width: 767px) {\n\t.onode-etiquetas { --etq-espacio: 10px; }\n\t.onode-etiqueta { padding: 8px 16px; font-size: 17px; }\n}\n<\/style><div class=\"onode-etiquetas\"><span class=\"onode-etiqueta\">Detecci\u00f3 dual<\/span><span class=\"onode-etiqueta\">OCR per a escanejats<\/span><span class=\"onode-etiqueta\">Infotipos<\/span><span class=\"onode-etiqueta\">Llistes blanques i negres<\/span><\/div><\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_2 et_pb_group et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_3 et_pb_image et_pb_module et_flex_module icono-slider\"><span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/criteri-huma.svg\" title=\"human criterion\" class=\"wp-image-2379\" \/><\/span><\/div>\n\n<div class=\"et_pb_text_15 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Human criterion<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_16 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Verify the results generated and apply the legal criteria set by the Data Protection Officer (DPO).<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_code_5 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><style>.onode-etiquetas {\n\t--etq-color: #325572;\n\t--etq-espacio: 14px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--etq-espacio);\n\twidth: 100%;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n}\n.onode-etiqueta {\n\tdisplay: inline-block;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tbox-sizing: border-box;\n\tfont-family: 'Outfit', sans-serif;\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tline-height: 1.25;\n\tcolor: var(--etq-color);\n\tborder: 1px solid var(--etq-color);\n\tborder-radius: 6px;\n\tpadding: 9px 22px;\n\twhite-space: normal;\n\toverflow-wrap: break-word;\n\tword-break: normal;\n\tbackground: transparent;\n}\n@media (max-width: 767px) {\n\t.onode-etiquetas { --etq-espacio: 10px; }\n\t.onode-etiqueta { padding: 8px 16px; font-size: 17px; }\n}\n<\/style><div class=\"onode-etiquetas\"><span class=\"onode-etiqueta\">Revisi\u00f3 humana<\/span><span class=\"onode-etiqueta\">Fluxos de revisi\u00f3<\/span><span class=\"onode-etiqueta\">Verificador configurable<\/span><\/div><\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_3 et_pb_group et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_4 et_pb_image et_pb_module et_flex_module icono-slider\"><span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/privacitat.svg\" title=\"privacy\" class=\"wp-image-2380\" \/><\/span><\/div>\n\n<div class=\"et_pb_text_17 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Privacy by design and by default<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_18 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Data protection from the source and tailored measures to secure information.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_code_6 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><style>.onode-etiquetas {\n\t--etq-color: #325572;\n\t--etq-espacio: 14px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--etq-espacio);\n\twidth: 100%;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n}\n.onode-etiqueta {\n\tdisplay: inline-block;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tbox-sizing: border-box;\n\tfont-family: 'Outfit', sans-serif;\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tline-height: 1.25;\n\tcolor: var(--etq-color);\n\tborder: 1px solid var(--etq-color);\n\tborder-radius: 6px;\n\tpadding: 9px 22px;\n\twhite-space: normal;\n\toverflow-wrap: break-word;\n\tword-break: normal;\n\tbackground: transparent;\n}\n@media (max-width: 767px) {\n\t.onode-etiquetas { --etq-espacio: 10px; }\n\t.onode-etiqueta { padding: 8px 16px; font-size: 17px; }\n}\n<\/style><div class=\"onode-etiquetas\"><span class=\"onode-etiqueta\">Pol\u00edtiques de conservaci\u00f3 i minimitzaci\u00f3 de dades<\/span><span class=\"onode-etiqueta\">Responsabilitat proactiva (accountability)<\/span><\/div><\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_4 et_pb_group et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_5 et_pb_image et_pb_module et_flex_module icono-slider\"><span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/eliminacio.svg\" title=\"elimination\" class=\"wp-image-2381\" \/><\/span><\/div>\n\n<div class=\"et_pb_text_19 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Real elimination and evidence<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_20 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>The text is irreversibly destroyed, not just covered up, and every document processed is certified.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_code_7 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><style>.onode-etiquetas {\n\t--etq-color: #325572;\n\t--etq-espacio: 14px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--etq-espacio);\n\twidth: 100%;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n}\n.onode-etiqueta {\n\tdisplay: inline-block;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tbox-sizing: border-box;\n\tfont-family: 'Outfit', sans-serif;\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tline-height: 1.25;\n\tcolor: var(--etq-color);\n\tborder: 1px solid var(--etq-color);\n\tborder-radius: 6px;\n\tpadding: 9px 22px;\n\twhite-space: normal;\n\toverflow-wrap: break-word;\n\tword-break: normal;\n\tbackground: transparent;\n}\n@media (max-width: 767px) {\n\t.onode-etiquetas { --etq-espacio: 10px; }\n\t.onode-etiqueta { padding: 8px 16px; font-size: 17px; }\n}\n<\/style><div class=\"onode-etiquetas\"><span class=\"onode-etiqueta\">Neteja de metadades<\/span><span class=\"onode-etiqueta\">Certificaci\u00f3<\/span><span class=\"onode-etiqueta\">Hash d'integritat<\/span><span class=\"onode-etiqueta\">Registre d'auditoria<\/span><\/div><\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_5 et_pb_group et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_6 et_pb_image et_pb_module et_flex_module icono-slider\"><span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/gestio.svg\" title=\"management\" class=\"wp-image-2382\" \/><\/span><\/div>\n\n<div class=\"et_pb_text_21 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Management and scale<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_22 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Organize users, units, and large volumes of documents from a single environment.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_code_8 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><style>.onode-etiquetas {\n\t--etq-color: #325572;\n\t--etq-espacio: 14px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--etq-espacio);\n\twidth: 100%;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n}\n.onode-etiqueta {\n\tdisplay: inline-block;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tbox-sizing: border-box;\n\tfont-family: 'Outfit', sans-serif;\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tline-height: 1.25;\n\tcolor: var(--etq-color);\n\tborder: 1px solid var(--etq-color);\n\tborder-radius: 6px;\n\tpadding: 9px 22px;\n\twhite-space: normal;\n\toverflow-wrap: break-word;\n\tword-break: normal;\n\tbackground: transparent;\n}\n@media (max-width: 767px) {\n\t.onode-etiquetas { --etq-espacio: 10px; }\n\t.onode-etiqueta { padding: 8px 16px; font-size: 17px; }\n}\n<\/style><div class=\"onode-etiquetas\"><span class=\"onode-etiqueta\">Usuaris i permisos<\/span><span class=\"onode-etiqueta\">Organitzaci\u00f3 per unitats<\/span><span class=\"onode-etiqueta\">Processament massiu d'informaci\u00f3<\/span><span class=\"onode-etiqueta\">Cat\u00e0legs exportables i importables<\/span><\/div><\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_6 et_pb_group et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_7 et_pb_image et_pb_module et_flex_module icono-slider\"><span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/personalitzacio.svg\" title=\"personalization\" class=\"wp-image-2383\" \/><\/span><\/div>\n\n<div class=\"et_pb_text_23 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Personalization<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_24 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Criterion by purpose and document type, adapted to the entity and unscheduled.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_code_9 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><style>.onode-etiquetas {\n\t--etq-color: #325572;\n\t--etq-espacio: 14px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--etq-espacio);\n\twidth: 100%;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n}\n.onode-etiqueta {\n\tdisplay: inline-block;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tbox-sizing: border-box;\n\tfont-family: 'Outfit', sans-serif;\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tline-height: 1.25;\n\tcolor: var(--etq-color);\n\tborder: 1px solid var(--etq-color);\n\tborder-radius: 6px;\n\tpadding: 9px 22px;\n\twhite-space: normal;\n\toverflow-wrap: break-word;\n\tword-break: normal;\n\tbackground: transparent;\n}\n@media (max-width: 767px) {\n\t.onode-etiquetas { --etq-espacio: 10px; }\n\t.onode-etiqueta { padding: 8px 16px; font-size: 17px; }\n}\n<\/style><div class=\"onode-etiquetas\"><span class=\"onode-etiqueta\">Perfils d'anonimitzaci\u00f3<\/span><span class=\"onode-etiqueta\">Tipus documentals<\/span><span class=\"onode-etiqueta\">Infotipos<\/span><span class=\"onode-etiqueta\">Categories de dades<\/span><span class=\"onode-etiqueta\">Llistes blanques i negres<\/span><\/div><\/div><\/div>\n<\/div><\/div><div class=\"et_pb_group_carousel_slide\"><div class=\"et_pb_group_7 et_pb_group et-last-child et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_image_8 et_pb_image et_pb_module et_flex_module icono-slider\"><span class=\"et_pb_image_wrap\"><img decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/privacitat.svg\" title=\"privacy\" class=\"wp-image-2380\" \/><\/span><\/div>\n\n<div class=\"et_pb_text_25 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span>Security and confidentiality<\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_26 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span>Compliance with the technical and organizational measures of the ENSi and the GDPR-LOPDGDD<\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_code_10 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><style>.onode-etiquetas {\n\t--etq-color: #325572;\n\t--etq-espacio: 14px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: var(--etq-espacio);\n\twidth: 100%;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tmargin: 0;\n\tpadding: 0;\n\tbox-sizing: border-box;\n}\n.onode-etiqueta {\n\tdisplay: inline-block;\n\tmax-width: 100%;\n\tmin-width: 0;\n\tbox-sizing: border-box;\n\tfont-family: 'Outfit', sans-serif;\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tline-height: 1.25;\n\tcolor: var(--etq-color);\n\tborder: 1px solid var(--etq-color);\n\tborder-radius: 6px;\n\tpadding: 9px 22px;\n\twhite-space: normal;\n\toverflow-wrap: break-word;\n\tword-break: normal;\n\tbackground: transparent;\n}\n@media (max-width: 767px) {\n\t.onode-etiquetas { --etq-espacio: 10px; }\n\t.onode-etiqueta { padding: 8px 16px; font-size: 17px; }\n}\n<\/style><div class=\"onode-etiquetas\"><span class=\"onode-etiqueta\">Mesures t\u00e8cniques i organitzatives de seguretat<\/span><span class=\"onode-etiqueta\">Mesures de seguretat conforme al ENS<\/span><\/div><\/div><\/div>\n<\/div><\/div><\/div><\/div><span class=\"et_pb_group_carousel_arrow et_pb_group_carousel_arrow_prev\" role=\"button\" tabindex=\"0\" aria-label=\"Previous slide\"><span class=\"et-pb-icon\">4<\/span><\/span><span class=\"et_pb_group_carousel_arrow et_pb_group_carousel_arrow_next\" role=\"button\" tabindex=\"0\" aria-label=\"Next slide\"><span class=\"et-pb-icon\">5<\/span><\/span><div class=\"et_pb_group_carousel_dots\"><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_5 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_7 et_pb_row et_flex_row et_animated\">\n<div class=\"et_pb_column_8 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_27 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module\"><div class=\"et_pb_text_inner\"><h3>Security and control<\/h3>\n<\/div><\/div>\n\n<div class=\"et_pb_text_28 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Automation, yes. Loss of control, never.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_29 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>ZERO proposes, your team decides. Each process has the level of intervention it needs, and control is always in the hands of the organization.<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_8 et_pb_row et_flex_row et_animated\">\n<div class=\"et_pb_column_9 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_code_11 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><style>\/* El m\u00f3dulo que contiene los pasos ocupa todo el ancho disponible *\/\n.et_pb_module:has(> * > .onode-pasos),\n.et_pb_module:has(> .onode-pasos),\n.et_pb_code_inner:has(> .onode-pasos) {\n\twidth: 100% !important;\n\tmax-width: none !important;\n}\n.onode-pasos {\n\t--p-azul: #325572;\n\t--p-naranja: #D67048;\n\t--p-naranja-claro: #D6704852; \/* #D67048 al 32% *\/\n\t--p-melocoton: #F7BD89;\n\t--p-gris: #F1F1F1;\n\t--p-linea: #EDEDED;\n\t--p-circulo: 140px;\n\t--p-icono: 76px;\n\t--p-hueco: 24px;\n\twidth: 100%;\n\tmax-width: none;\n\tdisplay: grid;\n\tgrid-template-columns: repeat(5, minmax(0, 1fr));\n\tgap: 40px var(--p-hueco);\n\tmargin: 0;\n\tpadding: 0;\n\tfont-family: 'Outfit', sans-serif;\n\ttext-align: center;\n}\n.onode-pasos *, .onode-pasos *::before, .onode-pasos *::after { box-sizing: border-box; }\n.onode-paso {\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tmin-width: 0;\n}\n\/* Raya que une cada c\u00edrculo con el siguiente *\/\n.onode-paso:not(:last-child)::before {\n\tcontent: '';\n\tposition: absolute;\n\tz-index: 0;\n\ttop: calc(var(--p-circulo) \/ 2 - 3px);\n\tleft: 50%;\n\twidth: calc(100% + var(--p-hueco));\n\theight: 6px;\n\tbackground: var(--p-linea);\n}\n\/* C\u00edrculo *\/\n.onode-paso__circulo {\n\tposition: relative;\n\tz-index: 1;\n\twidth: var(--p-circulo);\n\theight: var(--p-circulo);\n\tborder-radius: 50%;\n\tbackground: var(--p-gris);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-bottom: 28px;\n\tflex: 0 0 auto;\n}\n\/* Icono: se pinta con el color que toque a partir del SVG que subas *\/\n.onode-paso__icono {\n\tdisplay: block;\n\t\/* --escala en cada icono permite agrandar los que se ven m\u00e1s peque\u00f1os *\/\n\twidth: calc(var(--p-icono) * var(--escala, 1));\n\theight: calc(var(--p-icono) * var(--escala, 1));\n\tbackground-color: var(--p-naranja);\n\t-webkit-mask: var(--icono) center \/ contain no-repeat;\n\t        mask: var(--icono) center \/ contain no-repeat;\n}\n\/* Variantes de color *\/\n.onode-paso--melocoton .onode-paso__circulo { background: var(--p-melocoton); }\n.onode-paso--naranja .onode-paso__circulo { background: var(--p-naranja); }\n.onode-paso--melocoton .onode-paso__icono,\n.onode-paso--naranja .onode-paso__icono { background-color: #ffffff; }\n\/* Textos (m\u00ednimo 20px) *\/\n.onode-paso__num {\n\tdisplay: block;\n\tfont-size: 20px;\n\tfont-weight: 400;\n\tletter-spacing: .06em;\n\ttext-transform: uppercase;\n\tcolor: var(--p-azul);\n\tmargin: 0 0 12px;\n}\n.onode-paso__titulo {\n\tfont-family: 'Outfit', sans-serif !important;\n\tfont-size: 28px !important;\n\tfont-weight: 600 !important;\n\tline-height: 1.2 !important;\n\tcolor: var(--p-azul) !important;\n\tmargin: 0 0 14px !important;\n\tpadding: 0 !important;\n}\n.onode-paso__texto {\n\tfont-size: 20px !important;\n\tline-height: 1.4 !important;\n\tcolor: var(--p-azul) !important;\n\tmargin: 0 !important;\n\tpadding: 0 !important;\n\tmax-width: 280px;\n}\n\/* Puntos del carrusel: ocultos en ordenador y tablet *\/\n.onode-pasos-puntos { display: none; }\n\/* Tablet: c\u00edrculos algo m\u00e1s peque\u00f1os *\/\n@media (max-width: 1280px) {\n\t.onode-pasos { --p-circulo: 110px; --p-icono: 60px; }\n\t.onode-paso__titulo { font-size: 24px !important; }\n}\n\/* M\u00f3vil: carrusel lateral (un paso centrado y asoman los de los lados) *\/\n@media (max-width: 767px) {\n\t.onode-pasos {\n\t\t--p-hueco: 20px;\n\t\t--p-circulo: 100px;\n\t\t--p-icono: 54px;\n\t\tposition: relative;\n\t\tdisplay: grid;\n\t\tgrid-template-columns: none;\n\t\tgrid-auto-flow: column;\n\t\tgrid-auto-columns: 78%;\n\t\tgap: var(--p-hueco);\n\t\toverflow-x: auto;\n\t\toverflow-y: hidden;\n\t\tscroll-snap-type: x mandatory;\n\t\tpadding: 0 11% 4px;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tscrollbar-width: none;\n\t\ttext-align: center;\n\t}\n\t.onode-pasos::-webkit-scrollbar { display: none; }\n\t.onode-paso { scroll-snap-align: center; }\n\t.onode-paso__circulo { margin-bottom: 20px; }\n\t\/* Tama\u00f1os de texto en m\u00f3vil *\/\n\t.onode-paso__num { font-size: 16px; margin: 0 0 8px; }\n\t.onode-paso__titulo { font-size: 22px !important; margin-bottom: 8px !important; }\n\t.onode-paso__texto { font-size: 17px !important; max-width: 260px; }\n\t\/* Puntos debajo, en el naranja de Zero *\/\n\t.onode-pasos-puntos {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tgap: 8px;\n\t\tmargin-top: 20px;\n\t}\n\t.onode-pasos-punto {\n\t\tappearance: none;\n\t\twidth: 8px;\n\t\theight: 8px;\n\t\tpadding: 0 !important;\n\t\tmargin: 0 !important;\n\t\tborder: 0 !important;\n\t\tborder-radius: 50% !important;\n\t\tbackground: #D6704852 !important;\n\t\tcursor: pointer;\n\t\ttransition: background-color .25s ease, transform .25s ease;\n\t}\n\t.onode-pasos-punto.is-activo {\n\t\tbackground: #D67048 !important;\n\t\ttransform: scale(1.25);\n\t}\n\t.onode-pasos-punto:focus-visible { outline: 2px solid #325572; outline-offset: 3px; }\n}\n<\/style><div class=\"onode-pasos\"><div class=\"onode-paso\"><div class=\"onode-paso__circulo\"><span class=\"onode-paso__icono\" style=\"--icono:url('https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/analisis-ia.svg')\"><\/span><\/div><span class=\"onode-paso__num\">Pas 1<\/span><h4 class=\"onode-paso__titulo\">An\u00e0lisi IA<\/h4><p class=\"onode-paso__texto\">Noms, organitzacions, context.<\/p><\/div><div class=\"onode-paso\"><div class=\"onode-paso__circulo\"><span class=\"onode-paso__icono\" style=\"--icono:url('https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/regles.svg')\"><\/span><\/div><span class=\"onode-paso__num\">Pas 2<\/span><h4 class=\"onode-paso__titulo\">Regles Preestablides<\/h4><p class=\"onode-paso__texto\">Identificadors validats i llistes pr\u00f2pies.<\/p><\/div><div class=\"onode-paso\"><div class=\"onode-paso__circulo\"><span class=\"onode-paso__icono\" style=\"--icono:url('https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/verificador.svg')\"><\/span><\/div><span class=\"onode-paso__num\">Pas 3<\/span><h4 class=\"onode-paso__titulo\">Verificador<\/h4><p class=\"onode-paso__texto\">Avisa o bloqueja segons el risc.<\/p><\/div><div class=\"onode-paso onode-paso--melocoton\"><div class=\"onode-paso__circulo\"><span class=\"onode-paso__icono\" style=\"--icono:url('https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/revisio-humana.svg'); --escala:1.2\"><\/span><\/div><span class=\"onode-paso__num\">Pas 4<\/span><h4 class=\"onode-paso__titulo\">Revisi\u00f3 humana<\/h4><p class=\"onode-paso__texto\">Validar, corregir o rebutjar.<\/p><\/div><div class=\"onode-paso onode-paso--naranja\"><div class=\"onode-paso__circulo\"><span class=\"onode-paso__icono\" style=\"--icono:url('https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/certificacion.svg'); --escala:1.25\"><\/span><\/div><span class=\"onode-paso__num\">Pas 5<\/span><h4 class=\"onode-paso__titulo\">Certificaci\u00f3<\/h4><p class=\"onode-paso__texto\">Tra\u00e7abilitat de l'operaci\u00f3 i evid\u00e8ncia del tractament.<\/p><\/div><\/div><div class=\"onode-pasos-puntos\"><\/div><script>(function () {\n\t\/* ===== Ajustes del carrusel de m\u00f3vil (en milisegundos) ===== *\/\n\tvar INTERVALO = 3500; \/\/ tiempo que se muestra cada paso antes de pasar al siguiente\n\tvar ESPERA = 6000;    \/\/ tras tocarlo o deslizarlo, tiempo sin tocar antes de volver a avanzar solo\n\tvar MOVIL = '(max-width: 767px)';\n\n\tvar movimientoReducido = window.matchMedia &amp;&amp; window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n\tdocument.querySelectorAll('.onode-pasos').forEach(function (carrusel) {\n\t\tif (carrusel.dataset.listo) return;\n\t\tcarrusel.dataset.listo = '1';\n\n\t\tvar pasos = Array.prototype.slice.call(carrusel.querySelectorAll('.onode-paso'));\n\t\tif (!pasos.length) return;\n\n\t\t\/* Contenedor de los puntos (justo debajo del carrusel) *\/\n\t\tvar contenedorPuntos = carrusel.nextElementSibling;\n\t\tif (!contenedorPuntos || !contenedorPuntos.classList.contains('onode-pasos-puntos')) {\n\t\t\tcontenedorPuntos = document.createElement('div');\n\t\t\tcontenedorPuntos.className = 'onode-pasos-puntos';\n\t\t\tcarrusel.parentNode.insertBefore(contenedorPuntos, carrusel.nextSibling);\n\t\t}\n\n\t\tfunction esMovil() {\n\t\t\treturn window.matchMedia(MOVIL).matches;\n\t\t}\n\n\t\t\/* Paso que est\u00e1 ahora en el centro *\/\n\t\tfunction indiceActual() {\n\t\t\tvar centro = carrusel.scrollLeft + carrusel.clientWidth \/ 2;\n\t\t\tvar mejor = 0;\n\t\t\tvar distancia = Infinity;\n\t\t\tpasos.forEach(function (paso, i) {\n\t\t\t\tvar dif = Math.abs(paso.offsetLeft + paso.offsetWidth \/ 2 - centro);\n\t\t\t\tif (dif < distancia) { distancia = dif; mejor = i; }\n\t\t\t});\n\t\t\treturn mejor;\n\t\t}\n\n\t\tfunction irA(i) {\n\t\t\tvar paso = pasos[i];\n\t\t\tcarrusel.scrollTo({\n\t\t\t\tleft: paso.offsetLeft + paso.offsetWidth \/ 2 - carrusel.clientWidth \/ 2,\n\t\t\t\tbehavior: movimientoReducido ? 'auto' : 'smooth'\n\t\t\t});\n\t\t}\n\n\t\t\/* Puntos *\/\n\t\tvar puntos = pasos.map(function (paso, i) {\n\t\t\tvar punto = document.createElement('button');\n\t\t\tpunto.type = 'button';\n\t\t\tpunto.className = 'onode-pasos-punto';\n\t\t\tvar num = paso.querySelector('.onode-paso__num');\n\t\t\tpunto.setAttribute('aria-label', num ? num.textContent.trim() : String(i + 1));\n\t\t\tpunto.addEventListener('click', function () {\n\t\t\t\tpausar();\n\t\t\t\tirA(i);\n\t\t\t});\n\t\t\tcontenedorPuntos.appendChild(punto);\n\t\t\treturn punto;\n\t\t});\n\n\t\tfunction actualizarPuntos() {\n\t\t\tvar actual = indiceActual();\n\t\t\tpuntos.forEach(function (p, j) { p.classList.toggle('is-activo', j === actual); });\n\t\t}\n\n\t\tvar pendiente = false;\n\t\tcarrusel.addEventListener('scroll', function () {\n\t\t\tif (pendiente) return;\n\t\t\tpendiente = true;\n\t\t\trequestAnimationFrame(function () {\n\t\t\t\tpendiente = false;\n\t\t\t\tactualizarPuntos();\n\t\t\t});\n\t\t}, { passive: true });\n\n\t\t\/* ----- Avance autom\u00e1tico (solo en m\u00f3vil) ----- *\/\n\t\tvar temporizador = null;\n\t\tvar visible = true;\n\t\tvar pausadoHasta = 0;\n\n\t\tfunction programar(ms) {\n\t\t\tclearTimeout(temporizador);\n\t\t\tif (movimientoReducido) return;\n\t\t\ttemporizador = setTimeout(avanzar, ms);\n\t\t}\n\n\t\tfunction avanzar() {\n\t\t\tvar ahora = Date.now();\n\t\t\tif (esMovil() &amp;&amp; visible &amp;&amp; ahora >= pausadoHasta) {\n\t\t\t\tirA((indiceActual() + 1) % pasos.length);\n\t\t\t\tprogramar(INTERVALO);\n\t\t\t} else {\n\t\t\t\tprogramar(Math.max(INTERVALO, pausadoHasta - ahora));\n\t\t\t}\n\t\t}\n\n\t\t\/* Al tocarlo, deslizarlo o seleccionar un paso, se para;\n\t\t   vuelve a avanzar solo cuando pasa ESPERA sin tocarlo *\/\n\t\tfunction pausar() {\n\t\t\tpausadoHasta = Date.now() + ESPERA;\n\t\t\tprogramar(ESPERA);\n\t\t}\n\t\tcarrusel.addEventListener('pointerdown', pausar);\n\t\tcarrusel.addEventListener('touchstart', pausar, { passive: true });\n\t\tcarrusel.addEventListener('wheel', pausar, { passive: true });\n\t\tcarrusel.addEventListener('focusin', pausar);\n\n\t\t\/* Solo avanza mientras el carrusel se ve en pantalla *\/\n\t\tif ('IntersectionObserver' in window) {\n\t\t\tnew IntersectionObserver(function (entradas) {\n\t\t\t\tvisible = entradas[0].isIntersecting;\n\t\t\t}, { threshold: 0.3 }).observe(carrusel);\n\t\t}\n\n\t\twindow.addEventListener('resize', actualizarPuntos);\n\t\tactualizarPuntos();\n\t\tprogramar(INTERVALO);\n\t});\n})();\n<\/script><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_6 et_pb_section et_section_regular et_flex_section et_pb_section_parallax\"><span class=\"et-pb-parallax-wrapper\"><span class=\"et-pb-parallax-background et-pb-parallax-background--css et-pb-parallax-background-module--divi-section-6\" style=\"background-image:url(https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/Fondo-zero-final.png);background-color:hsl(from #0d1b28 calc(h + 0) calc(s + 0) calc(l + 0) \/ 0.8);background-blend-mode:multiply\"><\/span><\/span>\n<div class=\"et_pb_row_9 et_pb_row et_flex_row et_animated\">\n<div class=\"et_pb_column_10 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_30 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module\"><div class=\"et_pb_text_inner\"><h3>Who is Zero for?<\/h3>\n<\/div><\/div>\n\n<div class=\"et_pb_text_31 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>For organizations that need to protect information without stopping using it<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_10 et_pb_row et_flex_row et_animated\">\n<div class=\"et_pb_column_11 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_32 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module\"><div class=\"et_pb_text_inner\"><p><span>Public Administration<\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_33 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Transparency and privacy, in balance.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_34 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><ul>\n<li><strong>Publish without exposing.<\/strong> Documentation for transparency portals with reduced data exposure.<\/li>\n<\/ul>\n<\/div><\/div>\n\n<div class=\"et_pb_text_35 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><ul>\n<li><strong>Less manual review<\/strong> of files with sensitive information.<\/li>\n<\/ul>\n<\/div><\/div>\n\n<div class=\"et_pb_text_36 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><ul>\n<li><strong>More traceability:<\/strong> evidence of the treatment performed.<\/li>\n<\/ul>\n<\/div><\/div>\n\n<div class=\"et_pb_text_37 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><ul>\n<li><strong>Standardized compliance<\/strong> in large-scale document volumes.<\/li>\n<\/ul>\n<\/div><\/div>\n\n<div class=\"et_pb_text_38 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Compatible with your transparency portal, regardless of the provider. Adapted to the co-official languages.<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_12 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_39 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module\"><div class=\"et_pb_text_inner\"><p>Companies<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_40 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Protect the information that drives your business.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_41 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><ul>\n<li><strong>Lower risk<\/strong> of exposure of customer and supplier data.<\/li>\n<\/ul>\n<\/div><\/div>\n\n<div class=\"et_pb_text_42 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><ul>\n<li><strong>Automated repetitive processes<\/strong> and standardized policies.<\/li>\n<\/ul>\n<\/div><\/div>\n\n<div class=\"et_pb_text_43 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><ul>\n<li><strong>Simpler audits<\/strong> thanks to the activity log.<\/li>\n<\/ul>\n<\/div><\/div>\n\n<div class=\"et_pb_text_44 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><ul>\n<li><strong>Departments<\/strong> and differentiated access levels.<\/li>\n<\/ul>\n<\/div><\/div>\n\n<div class=\"et_pb_text_45 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Law firms, insurance companies, healthcare, engineering, and any organization with large volumes of documents.<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_7 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_11 et_pb_row et_flex_row et_animated\">\n<div class=\"et_pb_column_13 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_3_5 et_flex_column_3_5_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_46 et_pb_text et_pb_bg_layout_light et_pb_module et_block_module\"><div class=\"et_pb_text_inner\"><h3>Our team<\/h3>\n<\/div><\/div>\n\n<div class=\"et_pb_text_47 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>ONode, the strategic partner that understands your needs<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_48 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p style=\"text-align: justify;\">At ONode, we have an expert team in data protection, information security, and software development. That's why, in addition to the platform, we offer specialized legal advice and customize the Zero Platform to your organization's specific needs.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_49 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p style=\"text-align: justify;\">Specialized Legal Advice<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_50 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p style=\"text-align: justify;\">Regulatory compliance with GDPR-LOPDGDD and ENS-ISO 27001<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_51 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p style=\"text-align: justify;\">Adaptation of the platform to your organization<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_52 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p style=\"text-align: justify;\">Data Protection Officer (DPO) Service<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_53 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p style=\"text-align: justify;\">Complementary data protection and information security services<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_1_wrapper\"><a class=\"et_pb_button_1 et_pb_button et_pb_bg_layout_dark et_pb_module et_flex_module onode-btn-conoce\" href=\"https:\/\/onode.es\/en\/about-onode\/\">Meet us<\/a><\/div>\n<\/div>\n\n<div class=\"et_pb_column_14 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_2_5 et_flex_column_2_5_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_image_9 et_pb_image et_pb_module et_flex_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/imagen-estatica-2-1.jpg\" alt=\"Oficina\" title=\"static-image-2\" width=\"1066\" height=\"1268\" srcset=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/imagen-estatica-2-1.jpg 1066w, https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/imagen-estatica-2-1-980x1166.jpg 980w, https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/imagen-estatica-2-1-480x571.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1066px, 100vw\" class=\"wp-image-1377\" \/><\/span><\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2376","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/pages\/2376","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/comments?post=2376"}],"version-history":[{"count":2,"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/pages\/2376\/revisions"}],"predecessor-version":[{"id":2390,"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/pages\/2376\/revisions\/2390"}],"wp:attachment":[{"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/media?parent=2376"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}