{"id":1529,"date":"2026-09-28T12:45:54","date_gmt":"2026-09-28T10:45:54","guid":{"rendered":"https:\/\/onode.es\/services\/digital-government-2\/"},"modified":"2026-10-02T13:34:26","modified_gmt":"2026-10-02T11:34:26","slug":"digital-government-2","status":"publish","type":"page","link":"https:\/\/onode.es\/en\/services\/digital-government-2\/","title":{"rendered":"Digital Government"},"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  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: [123, 138, 196], alpha: 0.82,\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: [123, 138, 196], alpha: 0.48,\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*0.45)+')');\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\">\n<div class=\"et_pb_row_1 et_pb_row et_block_row\">\n<div class=\"et_pb_column_1 et_pb_column et_pb_column_4_4 et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_text_0 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Service<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_1 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>Digital Government & OGov<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_2 et_pb_section et_section_regular et_block_section\">\n<div class=\"et_pb_row_2 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_2 et_pb_column et-last-child et_block_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_2 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span>Public innovation, regulatory compliance, and engagement with citizens\u2014all within a single digital ecosystem.<\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_text_3 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;\"><span>In a context where citizens are demanding greater transparency, greater participation, and a more responsive government, <strong>Digital Government &<\/strong><\/span> <strong>OGov<\/strong> <span>offers an ecosystem of digital platforms designed to transform the relationship between public institutions and citizens.<\/span><\/p>\n<p style=\"text-align: justify;\"><span>Our solutions help public administrations <strong>innovate in their management, reduce administrative burdens, and ensure genuine and effective access to public information<\/strong>, while complying with current regulatory requirements and anticipating standards of good governance.<\/span><\/p>\n<\/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_3 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_3 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_4 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span>Our platforms<\/span><\/p>\n<\/div><\/div>\n\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><span>Solutions designed to improve your daily life, fully customizable to your needs<\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_code_1 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\n<div class=\"onode-plataformas\">\n\n  <!-- FOTO (solo en ordenador) -->\n  <div class=\"onode-plataformas__media\">\n    <div class=\"onode-plataformas__photo\">\n              <img class=\"onode-plat-photo is-active\" data-index=\"0\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/Lucida-scaled.jpeg\" alt=\"L\u00facida\" style=\"object-position: center top;\">\n              <img class=\"onode-plat-photo\" data-index=\"1\" loading=\"eager\" decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/ADA-scaled.jpeg\" alt=\"Ada\" style=\"object-position: center top;\">\n              <img class=\"onode-plat-photo\" data-index=\"2\" loading=\"eager\" decoding=\"async\" src=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/10\/Clara-scaled.jpeg\" alt=\"Clara\" style=\"object-position: center top;\">\n          <\/div>\n  <\/div>\n\n  <!-- ACORDE\u00d3N -->\n  <div class=\"onode-plataformas__list\">\n          <div class=\"onode-plataformas__item is-active\" data-index=\"0\" tabindex=\"0\" role=\"button\" aria-expanded=\"true\">\n        <div class=\"onode-plataformas__head\">\n          <div class=\"onode-plataformas__titles\">\n            <h3>L\u00facida<\/h3>\n            <p>Transparency Portal<\/p>\n          <\/div>\n          <span class=\"onode-plataformas__icon\" aria-hidden=\"true\"><\/span>\n        <\/div>\n        <div class=\"onode-plataformas__desc\">\n          <div class=\"onode-plataformas__desc-inner\">\n            <div class=\"onode-plataformas__desc-body\">\n              <div class=\"onode-plataformas__desc-text\">We centralise and publish, in a structured way, all of the organisation&#039;s institutional, regulatory, organisational and financial information, in compliance with transparency and good governance legislation. A single, well-organised and always up-to-date space that strengthens public trust in the institution.<\/div>\n              <a class=\"onode-plataformas__btn\" href=\"https:\/\/onode.es\/lucida\/\">\n                <span>Learn more<\/span>\n                <span class=\"onode-plataformas__btn-arrow\" aria-hidden=\"true\"><\/span>\n              <\/a>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n          <div class=\"onode-plataformas__item\" data-index=\"1\" tabindex=\"0\" role=\"button\" aria-expanded=\"false\">\n        <div class=\"onode-plataformas__head\">\n          <div class=\"onode-plataformas__titles\">\n            <h3>Ada<\/h3>\n            <p>Citizen Participation Portal<\/p>\n          <\/div>\n          <span class=\"onode-plataformas__icon\" aria-hidden=\"true\"><\/span>\n        <\/div>\n        <div class=\"onode-plataformas__desc\">\n          <div class=\"onode-plataformas__desc-inner\">\n            <div class=\"onode-plataformas__desc-body\">\n              <div class=\"onode-plataformas__desc-text\">Interactive spaces that open the administration up to citizens: participatory processes, public consultations, participatory budgeting and channels for collecting residents&#039; proposals. More direct, more accessible democracy, with full traceability of every process.<\/div>\n              <a class=\"onode-plataformas__btn\" href=\"https:\/\/onode.es\/ada\/\" tabindex=\"-1\">\n                <span>Learn more<\/span>\n                <span class=\"onode-plataformas__btn-arrow\" aria-hidden=\"true\"><\/span>\n              <\/a>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n          <div class=\"onode-plataformas__item\" data-index=\"2\" tabindex=\"0\" role=\"button\" aria-expanded=\"false\">\n        <div class=\"onode-plataformas__head\">\n          <div class=\"onode-plataformas__titles\">\n            <h3>Clara<\/h3>\n            <p>Economic and Budgetary Accountability Portal<\/p>\n          <\/div>\n          <span class=\"onode-plataformas__icon\" aria-hidden=\"true\"><\/span>\n        <\/div>\n        <div class=\"onode-plataformas__desc\">\n          <div class=\"onode-plataformas__desc-inner\">\n            <div class=\"onode-plataformas__desc-body\">\n              <div class=\"onode-plataformas__desc-text\">Clear, interactive and easy-to-understand visualisation of public spending: municipal budgets, budget execution, debt, public works and investments. We turn complex economic data into information anyone can understand, supporting citizen oversight of public finances.<\/div>\n              <a class=\"onode-plataformas__btn\" href=\"#\" tabindex=\"-1\">\n                <span>Learn more<\/span>\n                <span class=\"onode-plataformas__btn-arrow\" aria-hidden=\"true\"><\/span>\n              <\/a>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      <\/div>\n<\/div>\n\n<style>\n.onode-plataformas, .onode-plataformas *, .onode-plataformas *::before, .onode-plataformas *::after {\n  box-sizing: border-box;\n}\n.onode-plataformas {\n  --photo-min-height: 460px;\n  position: relative;\n  display: grid;\n  grid-template-columns: 0.9fr 1fr;\n  gap: 90px;\n  align-items: start;\n  width: 100%;\n  max-width: none;\n  margin: 0;\n  padding: 0;\n  font-family: 'Outfit', sans-serif;\n}\n\n\/* ---------- FOTO (ordenador) ---------- *\/\n\/* La altura la calcula el script: la del acorde\u00f3n con la descripci\u00f3n m\u00e1s larga abierta *\/\n.onode-plataformas__photo {\n  position: relative;\n  height: var(--photo-min-height);\n  min-height: var(--photo-min-height);\n  border-radius: 19px;\n  overflow: hidden;\n  background: #dfe6ea;\n}\n.onode-plataformas__photo img {\n  position: absolute;\n  inset: 0;\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  object-position: top;\n  display: block;\n  margin: 0;\n  opacity: 0;\n}\n.onode-plataformas__photo img.is-active {\n  opacity: 1;\n}\n.onode-plataformas__photo::after {\n  content: \"\";\n  position: absolute;\n  inset: 0;\n  background-color: #335673;\n  opacity: 0.4;\n  mix-blend-mode: multiply;\n  pointer-events: none;\n  z-index: 1;\n}\n\n\/* ---------- ACORDE\u00d3N ---------- *\/\n\/* Centrado en vertical respecto a la foto *\/\n.onode-plataformas__list {\n  position: relative;\n  z-index: 5;\n  align-self: center;\n  display: flex;\n  flex-direction: column;\n  margin-top: 0;\n  pointer-events: auto;\n}\n.onode-plataformas__item {\n  position: relative;\n  padding: 28px 0;\n  border-bottom: 1px solid #c3d0d9;\n  cursor: pointer;\n  outline: none;\n  pointer-events: auto;\n  transition: border-color .25s ease;\n}\n.onode-plataformas__item:first-child {\n  padding-top: 0;\n}\n.onode-plataformas__item:focus-visible {\n  outline: 2px solid #335673;\n  outline-offset: 4px;\n}\n.onode-plataformas__item.is-active {\n  border-bottom-color: #335673;\n}\n\n\/* Cabecera: t\u00edtulos a la izquierda, flecha a la derecha *\/\n.onode-plataformas__head {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 24px;\n}\n\/* T\u00edtulo de cada pesta\u00f1a (L\u00facida, Ada, Clara) *\/\n.onode-plataformas__item h3 {\n  margin: 0 0 2px;\n  font-size: 32px;\n  font-weight: 700;\n  line-height: 1.15;\n  color: #a3b7c4;\n  transition: color .25s ease;\n}\n.onode-plataformas__item p {\n  margin: 0;\n  font-size: 22px;\n  font-weight: 400;\n  color: #93a9b8;\n  transition: color .25s ease;\n}\n.onode-plataformas__item.is-active h3,\n.onode-plataformas__item.is-active p {\n  color: #335673;\n}\n\n\/* Flecha *\/\n.onode-plataformas__icon {\n  display: block;\n  flex: 0 0 auto;\n  width: 14px;\n  height: 14px;\n  margin-right: 6px;\n  border-right: 2px solid #93a9b8;\n  border-bottom: 2px solid #93a9b8;\n  transform: rotate(45deg);\n  transition: transform .3s ease, border-color .3s ease;\n}\n.onode-plataformas__item.is-active .onode-plataformas__icon {\n  transform: rotate(-135deg);\n  border-color: #335673;\n}\n\n\/* Descripci\u00f3n desplegable *\/\n.onode-plataformas__desc {\n  display: grid;\n  grid-template-rows: 0fr;\n  transition: grid-template-rows .35s ease;\n}\n.onode-plataformas__item.is-active .onode-plataformas__desc {\n  grid-template-rows: 1fr;\n}\n.onode-plataformas__desc-inner {\n  overflow: hidden;\n  min-height: 0;\n}\n\/* Bloque interior: texto + bot\u00f3n *\/\n.onode-plataformas__desc-body {\n  padding-top: 16px;\n}\n.onode-plataformas__desc-text {\n  color: #335673;\n  font-size: 20px;\n  line-height: 1.5;\n  font-weight: 300;\n}\n\n\/* ---------- BOT\u00d3N \"SABER-NE M\u00c9S\" ---------- *\/\n.onode-plataformas__btn {\n  display: inline-flex;\n  align-items: center;\n  gap: 12px;\n  margin-top: 22px;\n  padding: 11px 24px;\n  border: 1.5px solid #335673;\n  border-radius: 999px;\n  background: transparent;\n  color: #335673 !important;\n  font-family: 'Outfit', sans-serif;\n  font-size: 17px;\n  font-weight: 500;\n  line-height: 1.2;\n  text-decoration: none !important;\n  cursor: pointer;\n  transition: background-color .25s ease, color .25s ease;\n}\n.onode-plataformas__btn:hover,\n.onode-plataformas__btn:focus-visible {\n  background: #335673;\n  color: #fff !important;\n}\n.onode-plataformas__btn:focus-visible {\n  outline: 2px solid #335673;\n  outline-offset: 3px;\n}\n\/* Flechita del bot\u00f3n *\/\n.onode-plataformas__btn-arrow {\n  display: block;\n  width: 8px;\n  height: 8px;\n  border-top: 2px solid currentColor;\n  border-right: 2px solid currentColor;\n  transform: rotate(45deg);\n  transition: transform .25s ease;\n}\n.onode-plataformas__btn:hover .onode-plataformas__btn-arrow {\n  transform: translateX(4px) rotate(45deg);\n}\n\n\/* ---------- M\u00d3VIL ---------- *\/\n@media (max-width: 900px) {\n  .onode-plataformas {\n    grid-template-columns: 1fr;\n    gap: 0;\n    padding: 0;\n  }\n\n  \/* Se oculta la foto *\/\n  .onode-plataformas__media {\n    display: none;\n  }\n\n  .onode-plataformas__list {\n    margin-top: 0 !important;\n  }\n  .onode-plataformas__item {\n    padding: 22px 0;\n  }\n  .onode-plataformas__item:first-child {\n    padding-top: 22px;\n  }\n  .onode-plataformas__head {\n    gap: 16px;\n  }\n  .onode-plataformas__item h3 {\n    font-size: 24px;\n  }\n  .onode-plataformas__item p {\n    font-size: 18px;\n  }\n  .onode-plataformas__icon {\n    width: 12px;\n    height: 12px;\n    margin-right: 4px;\n  }\n  .onode-plataformas__desc-body {\n    padding-top: 14px;\n  }\n  .onode-plataformas__desc-text {\n    font-size: 17px;\n    line-height: 1.55;\n  }\n  .onode-plataformas__btn {\n    margin-top: 18px;\n    padding: 10px 20px;\n    font-size: 16px;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n\n  \/\/ Retardo antes de abrir al pasar el rat\u00f3n (0 = al instante)\n  var HOVER_DELAY = 0;\n  \/\/ Pausa breve mientras se abre una pesta\u00f1a (evita el efecto rebote)\n  var ANIMATION_LOCK = 250;\n\n  \/\/ \u00bfDispositivo con rat\u00f3n? (en m\u00f3vil\/tablet se sigue abriendo al tocar)\n  function canHover() {\n    return window.matchMedia &&\n      window.matchMedia('(hover: hover) and (pointer: fine)').matches &&\n      window.innerWidth > 900;\n  }\n\n  function initPlataformas(wrap) {\n    \/\/ Evita activar dos veces el mismo acorde\u00f3n\n    if (wrap.getAttribute(\"data-onode-init\") === \"1\") return;\n    wrap.setAttribute(\"data-onode-init\", \"1\");\n\n    var photos = wrap.querySelectorAll(\".onode-plat-photo\");\n    var items = wrap.querySelectorAll(\".onode-plataformas__item\");\n    var list = wrap.querySelector(\".onode-plataformas__list\");\n    var photoBox = wrap.querySelector(\".onode-plataformas__photo\");\n    var inners = wrap.querySelectorAll(\".onode-plataformas__desc-inner\");\n    \/\/ Se mide el bloque completo (texto + bot\u00f3n)\n    var texts = wrap.querySelectorAll(\".onode-plataformas__desc-body\");\n\n    var activeIndex = 0;\n    var hoveredIndex = -1;\n    var hoverTimer = null;\n    var lockUntil = 0;\n\n    photos.forEach(function (p) {\n      if (p.decode) {\n        p.decode().catch(function () {});\n      }\n    });\n\n    \/\/ Calcula la altura m\u00e1xima del acorde\u00f3n (con la descripci\u00f3n m\u00e1s larga abierta)\n    \/\/ y se la aplica a la foto para que no cambie de tama\u00f1o\n    function fixPhotoHeight() {\n      if (!photoBox || window.innerWidth <= 900) return;\n\n      \/\/ Altura del acorde\u00f3n sin ninguna descripci\u00f3n abierta\n      var openNow = 0;\n      inners.forEach(function (el) {\n        openNow += el.offsetHeight;\n      });\n      var closedHeight = list.offsetHeight - openNow;\n\n      \/\/ Descripci\u00f3n m\u00e1s alta (con su bot\u00f3n)\n      var maxDesc = 0;\n      texts.forEach(function (el) {\n        maxDesc = Math.max(maxDesc, el.offsetHeight);\n      });\n\n      photoBox.style.height = Math.ceil(closedHeight + maxDesc) + \"px\";\n    }\n\n    function setActive(index) {\n      if (index === activeIndex) return;\n      activeIndex = index;\n      lockUntil = Date.now() + ANIMATION_LOCK;\n\n      [items, photos].forEach(function (group) {\n        group.forEach(function (el) {\n          el.classList.toggle(\"is-active\", el.getAttribute(\"data-index\") === String(index));\n        });\n      });\n      items.forEach(function (el) {\n        var isOpen = el.getAttribute(\"data-index\") === String(index);\n        el.setAttribute(\"aria-expanded\", isOpen ? \"true\" : \"false\");\n\n        \/\/ El bot\u00f3n solo se puede seleccionar con el teclado si la pesta\u00f1a est\u00e1 abierta\n        var btn = el.querySelector(\".onode-plataformas__btn\");\n        if (btn) {\n          if (isOpen) {\n            btn.removeAttribute(\"tabindex\");\n          } else {\n            btn.setAttribute(\"tabindex\", \"-1\");\n          }\n        }\n      });\n    }\n\n    \/\/ Abrir por hover: al instante, o en cuanto termine la pausa\n    \/\/ si el rat\u00f3n sigue encima de esa pesta\u00f1a\n    function requestHover(index) {\n      clearTimeout(hoverTimer);\n      var wait = Math.max(HOVER_DELAY, lockUntil - Date.now(), 0);\n\n      if (wait === 0) {\n        setActive(index);\n        return;\n      }\n      hoverTimer = setTimeout(function () {\n        if (hoveredIndex === index) setActive(index);\n      }, wait);\n    }\n\n    items.forEach(function (item) {\n      var index = parseInt(item.getAttribute(\"data-index\"), 10);\n\n      \/\/ Clic (y toque en m\u00f3vil)\n      item.addEventListener(\"click\", function () {\n        clearTimeout(hoverTimer);\n        setActive(index);\n      });\n\n      \/\/ Teclado (solo cuando el foco est\u00e1 en la pesta\u00f1a, no en el bot\u00f3n)\n      item.addEventListener(\"keydown\", function (e) {\n        if (e.target !== item) return;\n        if (e.key === \"Enter\" || e.key === \" \") {\n          e.preventDefault();\n          setActive(index);\n        }\n      });\n\n      \/\/ Pasar el rat\u00f3n por encima (solo ordenador con rat\u00f3n)\n      \/\/ \"mousemove\": solo reacciona cuando el rat\u00f3n se mueve de verdad,\n      \/\/ no cuando la pesta\u00f1a se desplaza sola por debajo al abrirse otra.\n      item.addEventListener(\"mousemove\", function () {\n        if (!canHover()) return;\n        hoveredIndex = index;\n        if (index !== activeIndex) requestHover(index);\n      });\n\n      item.addEventListener(\"mouseleave\", function () {\n        if (hoveredIndex === index) hoveredIndex = -1;\n        clearTimeout(hoverTimer);\n      });\n    });\n\n    \/\/ Recalcular al cargar, al cargar la fuente y al cambiar el tama\u00f1o de la ventana\n    fixPhotoHeight();\n    if (document.fonts && document.fonts.ready) {\n      document.fonts.ready.then(fixPhotoHeight);\n    }\n    window.addEventListener(\"load\", fixPhotoHeight);\n    var resizeTimer;\n    window.addEventListener(\"resize\", function () {\n      clearTimeout(resizeTimer);\n      resizeTimer = setTimeout(fixPhotoHeight, 150);\n    });\n  }\n\n  function initAll() {\n    document.querySelectorAll(\".onode-plataformas\").forEach(initPlataformas);\n  }\n\n  \/\/ Espera a que la p\u00e1gina est\u00e9 cargada (por si un plugin mueve el script)\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initAll);\n  } else {\n    initAll();\n  }\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_4 et_pb_row et_flex_row\">\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_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_flex_module\"><div class=\"et_pb_text_inner\"><p><span>Technology in the Service of Good Governance<\/span><\/p>\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><span>All of our platforms share the same cross-functional technological approach:<\/span><\/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_5 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_image_0 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\/icono-reloj.png\" title=\"clock icon\" width=\"512\" height=\"512\" srcset=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/icono-reloj.png 512w, https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/icono-reloj-480x480.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 512px, 100vw\" class=\"wp-image-1450\" \/><\/span><\/div>\n<\/div>\n\n<div class=\"et_pb_column_6 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_image_1 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\/logo-api.png\" title=\"api icon\" width=\"512\" height=\"512\" srcset=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/logo-api.png 512w, https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/logo-api-480x480.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 512px, 100vw\" class=\"wp-image-1451\" \/><\/span><\/div>\n<\/div>\n\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_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_image_2 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\/logo-ai.png\" title=\"ai icon\" width=\"512\" height=\"512\" srcset=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/logo-ai.png 512w, https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/logo-ai-480x480.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 512px, 100vw\" class=\"wp-image-1452\" \/><\/span><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_6 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_8 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_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_flex_module\"><div class=\"et_pb_text_inner\"><p><span>Process Automation <\/span><span>(RPA)<\/span><\/p>\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><span>To streamline repetitive tasks and free up technical staff time for higher-value work.<\/span><\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_9 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone\">\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><span> <\/span><span>APIs<\/span><\/p>\n<\/div><\/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><span>Enabling platforms to communicate with each other and with other government information systems.<\/span><\/p>\n<\/div><\/div>\n<\/div>\n\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_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone\">\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><span>Artificial Intelligence Agents<\/span><\/p>\n<\/div><\/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><span>Improve and streamline internal processes;<\/span><span> increase the accessibility of published information;<span> <\/span><\/span><span>intelligently interconnect systems; <\/span>and <span>promote the reuse of public information.<\/span><\/p>\n<\/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\">\n<div class=\"et_pb_column_11 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_14 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p>A multidisciplinary team<\/p>\n<\/div><\/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><span>A multidisciplinary team<\/span><\/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 style=\"text-align: justify;\"><span>Behind every platform is a highly professional and multidisciplinary team: <strong>software developers, lawyers, political scientists, and journalists<\/strong>, along with other key specialists in public innovation and open government.<\/span><\/p>\n<p><span>This combination of technical, legal, and communications expertise ensures that our solutions not only work well, but are also legally sound, ethically responsible, and understandable to the public.<\/span><\/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_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_12 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_3 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\/07\/MARIA.jpg\" title=\"MARI\u0301A\" width=\"800\" height=\"960\" srcset=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/07\/MARIA.jpg 800w, https:\/\/onode.es\/wp-content\/uploads\/2026\/07\/MARIA-480x576.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 800px, 100vw\" class=\"wp-image-485\" \/><\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_6 et_pb_section et_section_regular et_flex_section\">\n<div class=\"et_pb_row_8 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_13 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_17 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span>Service Delivery Model<\/span><\/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><span>A common architecture designed to connect, automate, and simplify public administration<\/span><\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_9 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_14 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_image_4 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\/gif-nube.gif\" title=\"cloud gif\" width=\"1122\" height=\"793\" srcset=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/gif-nube.gif 1122w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1122px, 100vw\" class=\"wp-image-1454\" \/><\/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><span>Platform as a Service <\/span><span>(SaaS)<\/span><\/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 style=\"text-align: center;\"><span>Our platforms are offered under the <\/span><strong>SaaS (Software as a Service)<strong> <\/strong>model<\/strong><span>: rapid deployment, maintenance and updates included, scalability, and no need for the contracting entity to maintain its own infrastructure.<\/span><\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_15 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_image_5 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\/mazo-gif.gif\" title=\"deck gif\" width=\"1122\" height=\"793\" srcset=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/mazo-gif.gif 1122w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) 1122px, 100vw\" class=\"wp-image-1455\" \/><\/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 style=\"text-align: center;\"><span>Specialized Legal Advice<\/span><\/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 style=\"text-align: center;\"><span>Beyond technology, we offer personalized <strong>support and specialized legal advice<\/strong> to assist government agencies with all their legal and compliance needs related to transparency, citizen participation, data protection, access to information, and good governance.<\/span><\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_16 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_image_6 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\/bocafillos-gif.gif\" title=\"snack GIFs\" width=\"640\" height=\"640\" srcset=\"https:\/\/onode.es\/wp-content\/uploads\/2026\/09\/bocafillos-gif.gif 640w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 640px, 100vw\" class=\"wp-image-1456\" \/><\/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 style=\"text-align: center;\"><span>Accessible and understandable communication<\/span><\/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 style=\"text-align: center;\"><span>We design our tools with <strong>easy-to-read engines and conversational search capabilities<\/strong> so that citizens receive immediate answers in <strong>natural language<\/strong>, reducing cognitive barriers and bringing the institution closer to the public.<\/span><\/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_10 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_17 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_25 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module\"><div class=\"et_pb_text_inner\"><p><span>Success Stories<\/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>Discover how various organizations achieved their goals by relying on the ONode team<\/span><\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_11 et_pb_row et-vb-row--no-module et_flex_row\">\n<div class=\"et_pb_column_18 et_pb_column et_flex_column et_pb_column_empty et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone\"><\/div>\n\n<div class=\"et_pb_column_19 et_pb_column et-last-child et_flex_column et_pb_column_empty et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone\"><\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":1242,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-1529","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/pages\/1529","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=1529"}],"version-history":[{"count":15,"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/pages\/1529\/revisions"}],"predecessor-version":[{"id":1734,"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/pages\/1529\/revisions\/1734"}],"up":[{"embeddable":true,"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/pages\/1242"}],"wp:attachment":[{"href":"https:\/\/onode.es\/en\/wp-json\/wp\/v2\/media?parent=1529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}