{"id":2493,"date":"2026-01-30T16:44:49","date_gmt":"2026-01-30T16:44:49","guid":{"rendered":"https:\/\/kshuttle.io\/?page_id=2493"},"modified":"2026-08-07T08:27:01","modified_gmt":"2026-08-07T08:27:01","slug":"regulatory-data-platform-company","status":"publish","type":"page","link":"https:\/\/kshuttle.io\/en\/regulatory-data-platform-company\/","title":{"rendered":"Company"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2493\" class=\"elementor elementor-2493 elementor-60\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c9c2872 e-flex e-con-boxed e-con e-parent\" data-id=\"c9c2872\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-542cc74 e-flex e-con-boxed e-con e-parent\" data-id=\"542cc74\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ab5d31e elementor-widget elementor-widget-spacer\" data-id=\"ab5d31e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1928f44 e-con-full animated-slow e-flex elementor-invisible e-con e-child\" data-id=\"1928f44\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eef24d1 elementor-widget elementor-widget-heading\" data-id=\"eef24d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h5 class=\"elementor-heading-title elementor-size-default\">Since 2011<\/h5>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7d23d80 elementor-widget elementor-widget-heading\" data-id=\"7d23d80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">kShuttle<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bc2f267 elementor-widget elementor-widget-html\" data-id=\"bc2f267\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div\r\n  class=\"ks-rotating-words\"\r\n  aria-label=\"Expertise, technologie, recherche, intelligence artificielle, confiance et communaut\u00e9\"\r\n>\r\n  <span class=\"ks-rotating-words__slot\" aria-hidden=\"true\">\r\n    <span class=\"ks-rotating-words__word is-current\">\r\n      expertise\r\n    <\/span>\r\n\r\n    <span class=\"ks-rotating-words__word is-waiting\"><\/span>\r\n  <\/span>\r\n<\/div>\r\n\r\n<style>\r\n  .ks-rotating-words {\r\n    --ks-word-color: #4364F7;\r\n    --ks-font-size: 114px;\r\n\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n\r\n    width: 100%;\r\n    margin: 0;\r\n    padding: 0;\r\n\r\n    font-family: \"Inter\", Arial, sans-serif !important;\r\n    font-size: var(--ks-font-size) !important;\r\n    font-weight: 500;\r\n    line-height: 1;\r\n    letter-spacing: -0.045em;\r\n  }\r\n\r\n  .ks-rotating-words__slot {\r\n    position: relative;\r\n    display: block;\r\n\r\n    width: var(--ks-slot-width, 320px);\r\n    height: 1.15em;\r\n\r\n    overflow: hidden;\r\n    text-align: center;\r\n\r\n    -webkit-mask-image: linear-gradient(\r\n      to bottom,\r\n      transparent 0%,\r\n      #000 12%,\r\n      #000 88%,\r\n      transparent 100%\r\n    );\r\n\r\n    mask-image: linear-gradient(\r\n      to bottom,\r\n      transparent 0%,\r\n      #000 12%,\r\n      #000 88%,\r\n      transparent 100%\r\n    );\r\n  }\r\n\r\n  .ks-rotating-words__word {\r\n    position: absolute;\r\n    top: 50%;\r\n    left: 50%;\r\n\r\n    display: block;\r\n    width: max-content;\r\n\r\n    color: var(--ks-word-color);\r\n    font-family: inherit !important;\r\n    font-size: inherit !important;\r\n    font-weight: inherit;\r\n    line-height: 1;\r\n    white-space: nowrap;\r\n\r\n    transform-origin: center;\r\n\r\n    transition:\r\n      transform 700ms cubic-bezier(0.22, 1, 0.36, 1),\r\n      opacity 500ms ease,\r\n      filter 600ms ease;\r\n  }\r\n\r\n  .ks-rotating-words__word.is-current {\r\n    opacity: 1;\r\n    filter: blur(0);\r\n    transform: translate(-50%, -50%);\r\n  }\r\n\r\n  .ks-rotating-words__word.is-leaving {\r\n    opacity: 0;\r\n    filter: blur(6px);\r\n    transform: translate(-50%, -165%);\r\n  }\r\n\r\n  .ks-rotating-words__word.is-waiting {\r\n    opacity: 0;\r\n    filter: blur(6px);\r\n    transform: translate(-50%, 65%);\r\n    transition: none;\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .ks-rotating-words {\r\n      --ks-font-size: 42px;\r\n    }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .ks-rotating-words__word {\r\n      transition: none;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n  (() => {\r\n    const components = document.querySelectorAll(\r\n      \".ks-rotating-words:not([data-rotating-ready])\"\r\n    );\r\n\r\n    components.forEach((component) => {\r\n      component.dataset.rotatingReady = \"true\";\r\n\r\n      const words = [\r\n        \"expertise\",\r\n        \"sustainability\",\r\n        \"technology\",\r\n        \"research\",\r\n        \"AI\",\r\n        \"trust\",\r\n        \"community\"\r\n      ];\r\n\r\n      const slot = component.querySelector(\r\n        \".ks-rotating-words__slot\"\r\n      );\r\n\r\n      const elements = Array.from(\r\n        component.querySelectorAll(\r\n          \".ks-rotating-words__word\"\r\n        )\r\n      );\r\n\r\n      const reducedMotion = window.matchMedia(\r\n        \"(prefers-reduced-motion: reduce)\"\r\n      ).matches;\r\n\r\n      const displayDuration = 2400;\r\n      const transitionDuration = 700;\r\n\r\n      let currentIndex = 0;\r\n      let currentElement = elements[0];\r\n      let waitingElement = elements[1];\r\n      let timer;\r\n\r\n      function measureWords() {\r\n        const measure = document.createElement(\"span\");\r\n\r\n        measure.style.position = \"absolute\";\r\n        measure.style.visibility = \"hidden\";\r\n        measure.style.pointerEvents = \"none\";\r\n        measure.style.whiteSpace = \"nowrap\";\r\n        measure.style.fontFamily = \"inherit\";\r\n        measure.style.fontSize = \"inherit\";\r\n        measure.style.fontWeight = \"inherit\";\r\n        measure.style.letterSpacing = \"inherit\";\r\n\r\n        component.appendChild(measure);\r\n\r\n        let maximumWidth = 0;\r\n\r\n        words.forEach((word) => {\r\n          measure.textContent = word;\r\n\r\n          maximumWidth = Math.max(\r\n            maximumWidth,\r\n            measure.getBoundingClientRect().width\r\n          );\r\n        });\r\n\r\n        measure.remove();\r\n\r\n        slot.style.setProperty(\r\n          \"--ks-slot-width\",\r\n          `${Math.ceil(maximumWidth + 20)}px`\r\n        );\r\n      }\r\n\r\n      function scheduleNextWord() {\r\n        window.clearTimeout(timer);\r\n\r\n        if (!reducedMotion) {\r\n          timer = window.setTimeout(\r\n            showNextWord,\r\n            displayDuration\r\n          );\r\n        }\r\n      }\r\n\r\n      function showNextWord() {\r\n        const nextIndex =\r\n          (currentIndex + 1) % words.length;\r\n\r\n        waitingElement.textContent = words[nextIndex];\r\n\r\n        waitingElement.className =\r\n          \"ks-rotating-words__word is-waiting\";\r\n\r\n        void waitingElement.offsetHeight;\r\n\r\n        currentElement.className =\r\n          \"ks-rotating-words__word is-leaving\";\r\n\r\n        waitingElement.className =\r\n          \"ks-rotating-words__word is-current\";\r\n\r\n        window.setTimeout(() => {\r\n          currentElement.textContent = \"\";\r\n\r\n          currentElement.className =\r\n            \"ks-rotating-words__word is-waiting\";\r\n\r\n          const previousElement = currentElement;\r\n\r\n          currentElement = waitingElement;\r\n          waitingElement = previousElement;\r\n          currentIndex = nextIndex;\r\n\r\n          scheduleNextWord();\r\n        }, transitionDuration);\r\n      }\r\n\r\n      if (document.fonts && document.fonts.ready) {\r\n        document.fonts.ready.then(measureWords);\r\n      } else {\r\n        measureWords();\r\n      }\r\n\r\n      window.addEventListener(\"resize\", measureWords);\r\n\r\n      scheduleNextWord();\r\n    });\r\n  })();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3acd768 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"3acd768\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Business expertise, technology, research and AI: we bring together the skills needed to rethink how organisations use their data.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<a class=\"elementor-element elementor-element-49d2e23 e-flex e-con-boxed e-con e-child\" data-id=\"49d2e23\" data-element_type=\"container\" data-e-type=\"container\" href=\"#plus\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7a011fc elementor-widget elementor-widget-text-editor\" data-id=\"7a011fc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Discover kShuttle<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5b0fc05 picto elementor-widget elementor-widget-image\" data-id=\"5b0fc05\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"#kshuttle-words\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"25\" height=\"31\" src=\"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/02\/picto-more.png\" class=\"attachment-full size-full wp-image-526\" alt=\"\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a346762 e-con-full e-flex e-con e-parent\" data-id=\"a346762\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-254ee0b elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"254ee0b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div\r\n  class=\"ks-retro-seine\"\r\n  role=\"img\"\r\n  aria-label=\"Paysage r\u00e9tro monochrome repr\u00e9sentant La D\u00e9fense, les quais arbor\u00e9s et la Seine\"\r\n>\r\n  <canvas class=\"ks-retro-seine__canvas\"><\/canvas>\r\n<\/div>\r\n\r\n<style>\r\n  .ks-retro-seine {\r\n    position: relative;\r\n    width: 100%;\r\n    height: 440px;\r\n    overflow: hidden;\r\n    background: #ffffff;\r\n    pointer-events: none;\r\n    isolation: isolate;\r\n  }\r\n\r\n  .ks-retro-seine__canvas {\r\n    position: absolute;\r\n    inset: 0;\r\n    display: block;\r\n    width: 100%;\r\n    height: 100%;\r\n\r\n    image-rendering: pixelated;\r\n    image-rendering: crisp-edges;\r\n  }\r\n\r\n  \/*\r\n    L\u00e9ger fondu sur les c\u00f4t\u00e9s pour mieux int\u00e9grer\r\n    l'animation entre deux containers.\r\n  *\/\r\n  .ks-retro-seine {\r\n    -webkit-mask-image: linear-gradient(\r\n      to right,\r\n      transparent 0%,\r\n      #000 5%,\r\n      #000 95%,\r\n      transparent 100%\r\n    );\r\n\r\n    mask-image: linear-gradient(\r\n      to right,\r\n      transparent 0%,\r\n      #000 5%,\r\n      #000 95%,\r\n      transparent 100%\r\n    );\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .ks-retro-seine {\r\n      height: 320px;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n  (() => {\r\n    const scenes = document.querySelectorAll(\r\n      \".ks-retro-seine:not([data-retro-ready])\"\r\n    );\r\n\r\n    scenes.forEach((scene) => {\r\n      scene.dataset.retroReady = \"true\";\r\n\r\n      const canvas = scene.querySelector(\r\n        \".ks-retro-seine__canvas\"\r\n      );\r\n\r\n      const context = canvas.getContext(\"2d\");\r\n\r\n      const reducedMotion = window.matchMedia(\r\n        \"(prefers-reduced-motion: reduce)\"\r\n      ).matches;\r\n\r\n      const colours = {\r\n        white: \"#ffffff\",\r\n        pale: \"#edf3ff\",\r\n        light: \"#d5e2ff\",\r\n        soft: \"#b8ccff\",\r\n        medium: \"#829ff1\",\r\n        blue: \"#5477db\",\r\n        dark: \"#1d347f\"\r\n      };\r\n\r\n      \/*\r\n        R\u00e9glage global de la vitesse.\r\n        1 = vitesse actuelle.\r\n        0.7 = plus lent.\r\n        1.3 = plus rapide.\r\n      *\/\r\n      const sceneSpeed = 0.8;\r\n\r\n      let width = 0;\r\n      let height = 0;\r\n      let pixelRatio = 1;\r\n\r\n      let animationFrame = null;\r\n      let sceneVisible = true;\r\n      let lastTime = 0;\r\n      let elapsedTime = 0;\r\n\r\n      function pixelRect(x, y, w, h, colour) {\r\n        context.fillStyle = colour;\r\n\r\n        context.fillRect(\r\n          Math.round(x),\r\n          Math.round(y),\r\n          Math.round(w),\r\n          Math.round(h)\r\n        );\r\n      }\r\n\r\n      function pixelLine(\r\n        x1,\r\n        y1,\r\n        x2,\r\n        y2,\r\n        colour,\r\n        lineWidth = 1\r\n      ) {\r\n        context.beginPath();\r\n        context.moveTo(\r\n          Math.round(x1),\r\n          Math.round(y1)\r\n        );\r\n\r\n        context.lineTo(\r\n          Math.round(x2),\r\n          Math.round(y2)\r\n        );\r\n\r\n        context.strokeStyle = colour;\r\n        context.lineWidth = lineWidth;\r\n        context.stroke();\r\n      }\r\n\r\n      function resizeCanvas() {\r\n        const bounds = scene.getBoundingClientRect();\r\n\r\n        width = bounds.width;\r\n        height = bounds.height;\r\n\r\n        pixelRatio = Math.min(\r\n          window.devicePixelRatio || 1,\r\n          2\r\n        );\r\n\r\n        canvas.width = Math.round(\r\n          width * pixelRatio\r\n        );\r\n\r\n        canvas.height = Math.round(\r\n          height * pixelRatio\r\n        );\r\n\r\n        canvas.style.width = `${width}px`;\r\n        canvas.style.height = `${height}px`;\r\n\r\n        context.setTransform(\r\n          pixelRatio,\r\n          0,\r\n          0,\r\n          pixelRatio,\r\n          0,\r\n          0\r\n        );\r\n\r\n        if (reducedMotion) {\r\n          drawScene(0);\r\n        }\r\n      }\r\n\r\n      function drawSun() {\r\n        const x = width * 0.78;\r\n        const y = height * 0.21;\r\n        const radius = Math.min(\r\n          width,\r\n          height\r\n        ) * 0.072;\r\n\r\n        context.save();\r\n\r\n        context.beginPath();\r\n        context.arc(\r\n          x,\r\n          y,\r\n          radius,\r\n          0,\r\n          Math.PI * 2\r\n        );\r\n\r\n        context.fillStyle = colours.pale;\r\n        context.fill();\r\n\r\n        context.strokeStyle = colours.soft;\r\n        context.lineWidth = 2;\r\n        context.stroke();\r\n\r\n        context.clip();\r\n\r\n        for (\r\n          let line = -radius;\r\n          line <= radius;\r\n          line += 8\r\n        ) {\r\n          pixelLine(\r\n            x - radius,\r\n            y + line,\r\n            x + radius,\r\n            y + line,\r\n            colours.white,\r\n            2\r\n          );\r\n        }\r\n\r\n        context.restore();\r\n      }\r\n\r\n      function drawCloud(x, y, scale) {\r\n        const colour = colours.pale;\r\n\r\n        pixelRect(\r\n          x,\r\n          y + 8 * scale,\r\n          38 * scale,\r\n          6 * scale,\r\n          colour\r\n        );\r\n\r\n        pixelRect(\r\n          x + 7 * scale,\r\n          y + 3 * scale,\r\n          24 * scale,\r\n          8 * scale,\r\n          colour\r\n        );\r\n\r\n        pixelRect(\r\n          x + 14 * scale,\r\n          y,\r\n          12 * scale,\r\n          6 * scale,\r\n          colour\r\n        );\r\n      }\r\n\r\n      function drawClouds(time) {\r\n        const offset =\r\n          (time * 4 * sceneSpeed) %\r\n          (width + 240);\r\n\r\n        drawCloud(\r\n          width + 70 - offset,\r\n          height * 0.13,\r\n          1\r\n        );\r\n\r\n        drawCloud(\r\n          width + 330 - offset,\r\n          height * 0.29,\r\n          0.75\r\n        );\r\n\r\n        drawCloud(\r\n          width + 610 - offset,\r\n          height * 0.08,\r\n          0.6\r\n        );\r\n      }\r\n\r\n      function drawTower(\r\n        x,\r\n        baseY,\r\n        buildingWidth,\r\n        buildingHeight,\r\n        bodyColour,\r\n        windowColour,\r\n        variant\r\n      ) {\r\n        if (variant === \"angled\") {\r\n          context.beginPath();\r\n\r\n          context.moveTo(\r\n            x + buildingWidth * 0.14,\r\n            baseY - buildingHeight\r\n          );\r\n\r\n          context.lineTo(\r\n            x + buildingWidth * 0.88,\r\n            baseY - buildingHeight\r\n          );\r\n\r\n          context.lineTo(\r\n            x + buildingWidth,\r\n            baseY\r\n          );\r\n\r\n          context.lineTo(\r\n            x,\r\n            baseY\r\n          );\r\n\r\n          context.closePath();\r\n\r\n          context.fillStyle = bodyColour;\r\n          context.fill();\r\n        } else {\r\n          pixelRect(\r\n            x,\r\n            baseY - buildingHeight,\r\n            buildingWidth,\r\n            buildingHeight,\r\n            bodyColour\r\n          );\r\n        }\r\n\r\n        const columnCount = Math.max(\r\n          2,\r\n          Math.floor(buildingWidth \/ 15)\r\n        );\r\n\r\n        const rowCount = Math.max(\r\n          3,\r\n          Math.floor(buildingHeight \/ 17)\r\n        );\r\n\r\n        for (\r\n          let row = 0;\r\n          row < rowCount;\r\n          row++\r\n        ) {\r\n          for (\r\n            let column = 0;\r\n            column < columnCount;\r\n            column++\r\n          ) {\r\n            if (\r\n              (row + column + variant.length) %\r\n                3 !==\r\n              1\r\n            ) {\r\n              continue;\r\n            }\r\n\r\n            const windowWidth = Math.max(\r\n              3,\r\n              buildingWidth \/\r\n                (columnCount * 2.8)\r\n            );\r\n\r\n            const windowX =\r\n              x +\r\n              5 +\r\n              column *\r\n                ((buildingWidth - 10) \/\r\n                  columnCount);\r\n\r\n            const windowY =\r\n              baseY -\r\n              buildingHeight +\r\n              8 +\r\n              row * 14;\r\n\r\n            pixelRect(\r\n              windowX,\r\n              windowY,\r\n              windowWidth,\r\n              4,\r\n              windowColour\r\n            );\r\n          }\r\n        }\r\n      }\r\n\r\n      function drawArche(\r\n        x,\r\n        baseY,\r\n        scale,\r\n        bodyColour\r\n      ) {\r\n        const archeWidth = 82 * scale;\r\n        const archeHeight = 92 * scale;\r\n        const pillarWidth = 19 * scale;\r\n        const topHeight = 20 * scale;\r\n\r\n        pixelRect(\r\n          x,\r\n          baseY - archeHeight,\r\n          archeWidth,\r\n          archeHeight,\r\n          bodyColour\r\n        );\r\n\r\n        pixelRect(\r\n          x + pillarWidth,\r\n          baseY -\r\n            archeHeight +\r\n            topHeight,\r\n          archeWidth - pillarWidth * 2,\r\n          archeHeight - topHeight,\r\n          colours.white\r\n        );\r\n\r\n        context.strokeStyle = colours.soft;\r\n        context.lineWidth = 1;\r\n\r\n        context.strokeRect(\r\n          Math.round(x + pillarWidth + 3),\r\n          Math.round(\r\n            baseY -\r\n              archeHeight +\r\n              topHeight +\r\n              3\r\n          ),\r\n          Math.round(\r\n            archeWidth -\r\n              pillarWidth * 2 -\r\n              6\r\n          ),\r\n          Math.round(\r\n            archeHeight -\r\n              topHeight -\r\n              6\r\n          )\r\n        );\r\n      }\r\n\r\n      function drawSkylineLayer(\r\n        time,\r\n        layer\r\n      ) {\r\n        const skylineBase =\r\n          height * 0.665;\r\n\r\n        const layerSettings =\r\n          layer === \"far\"\r\n            ? {\r\n                speed: 5,\r\n                scale: 0.77,\r\n                body: colours.light,\r\n                windows: colours.white,\r\n                spacing: 700\r\n              }\r\n            : {\r\n                speed: 10,\r\n                scale: 1,\r\n                body: colours.medium,\r\n                windows: colours.pale,\r\n                spacing: 760\r\n              };\r\n\r\n        const offset =\r\n          (time *\r\n            layerSettings.speed *\r\n            sceneSpeed) %\r\n          layerSettings.spacing;\r\n\r\n        const buildings = [\r\n          {\r\n            x: -30,\r\n            w: 46,\r\n            h: 120,\r\n            type: \"tower\",\r\n            variant: \"straight\"\r\n          },\r\n          {\r\n            x: 34,\r\n            w: 56,\r\n            h: 168,\r\n            type: \"tower\",\r\n            variant: \"angled\"\r\n          },\r\n          {\r\n            x: 116,\r\n            w: 40,\r\n            h: 105,\r\n            type: \"tower\",\r\n            variant: \"straight\"\r\n          },\r\n          {\r\n            x: 178,\r\n            type: \"arche\"\r\n          },\r\n          {\r\n            x: 286,\r\n            w: 48,\r\n            h: 154,\r\n            type: \"tower\",\r\n            variant: \"straight\"\r\n          },\r\n          {\r\n            x: 356,\r\n            w: 34,\r\n            h: 112,\r\n            type: \"tower\",\r\n            variant: \"angled\"\r\n          },\r\n          {\r\n            x: 416,\r\n            w: 62,\r\n            h: 139,\r\n            type: \"tower\",\r\n            variant: \"straight\"\r\n          },\r\n          {\r\n            x: 502,\r\n            w: 42,\r\n            h: 98,\r\n            type: \"tower\",\r\n            variant: \"straight\"\r\n          },\r\n          {\r\n            x: 566,\r\n            w: 65,\r\n            h: 166,\r\n            type: \"tower\",\r\n            variant: \"angled\"\r\n          },\r\n          {\r\n            x: 652,\r\n            w: 45,\r\n            h: 122,\r\n            type: \"tower\",\r\n            variant: \"straight\"\r\n          }\r\n        ];\r\n\r\n        const repetitions =\r\n          Math.ceil(\r\n            width \/\r\n              layerSettings.spacing\r\n          ) + 2;\r\n\r\n        for (\r\n          let repeat = -1;\r\n          repeat < repetitions;\r\n          repeat++\r\n        ) {\r\n          buildings.forEach((building) => {\r\n            const x =\r\n              building.x +\r\n              repeat *\r\n                layerSettings.spacing -\r\n              offset;\r\n\r\n            if (\r\n              x < -140 ||\r\n              x > width + 140\r\n            ) {\r\n              return;\r\n            }\r\n\r\n            if (building.type === \"arche\") {\r\n              drawArche(\r\n                x,\r\n                skylineBase,\r\n                layerSettings.scale,\r\n                layerSettings.body\r\n              );\r\n            } else {\r\n              drawTower(\r\n                x,\r\n                skylineBase,\r\n                building.w *\r\n                  layerSettings.scale,\r\n                building.h *\r\n                  layerSettings.scale,\r\n                layerSettings.body,\r\n                layerSettings.windows,\r\n                building.variant\r\n              );\r\n            }\r\n          });\r\n        }\r\n      }\r\n\r\n      function drawQuay() {\r\n        const skylineBase =\r\n          height * 0.665;\r\n\r\n        const riverStart =\r\n          height * 0.765;\r\n\r\n        pixelRect(\r\n          0,\r\n          skylineBase,\r\n          width,\r\n          riverStart - skylineBase,\r\n          colours.white\r\n        );\r\n\r\n        pixelLine(\r\n          0,\r\n          skylineBase,\r\n          width,\r\n          skylineBase,\r\n          colours.soft,\r\n          2\r\n        );\r\n\r\n        pixelRect(\r\n          0,\r\n          riverStart - 10,\r\n          width,\r\n          10,\r\n          colours.light\r\n        );\r\n\r\n        pixelLine(\r\n          0,\r\n          riverStart,\r\n          width,\r\n          riverStart,\r\n          colours.blue,\r\n          2\r\n        );\r\n      }\r\n\r\n      function drawTree(\r\n        x,\r\n        groundY,\r\n        scale,\r\n        colour\r\n      ) {\r\n        const trunkWidth = 4 * scale;\r\n        const trunkHeight = 22 * scale;\r\n\r\n        pixelRect(\r\n          x - trunkWidth \/ 2,\r\n          groundY - trunkHeight,\r\n          trunkWidth,\r\n          trunkHeight,\r\n          colour\r\n        );\r\n\r\n        pixelRect(\r\n          x - 13 * scale,\r\n          groundY -\r\n            trunkHeight -\r\n            16 * scale,\r\n          26 * scale,\r\n          11 * scale,\r\n          colours.light\r\n        );\r\n\r\n        pixelRect(\r\n          x - 9 * scale,\r\n          groundY -\r\n            trunkHeight -\r\n            24 * scale,\r\n          18 * scale,\r\n          10 * scale,\r\n          colours.soft\r\n        );\r\n\r\n        pixelRect(\r\n          x - 5 * scale,\r\n          groundY -\r\n            trunkHeight -\r\n            30 * scale,\r\n          10 * scale,\r\n          8 * scale,\r\n          colours.medium\r\n        );\r\n      }\r\n\r\n      function drawTrees(time) {\r\n        const treeSpacing = 125;\r\n\r\n        const offset =\r\n          (time * 14 * sceneSpeed) %\r\n          treeSpacing;\r\n\r\n        const groundY =\r\n          height * 0.755;\r\n\r\n        const count =\r\n          Math.ceil(width \/ treeSpacing) +\r\n          3;\r\n\r\n        for (\r\n          let index = -2;\r\n          index < count;\r\n          index++\r\n        ) {\r\n          const x =\r\n            index * treeSpacing - offset;\r\n\r\n          const scale =\r\n            index % 3 === 0\r\n              ? 0.92\r\n              : index % 2 === 0\r\n                ? 0.72\r\n                : 0.82;\r\n\r\n          drawTree(\r\n            x,\r\n            groundY,\r\n            scale,\r\n            colours.dark\r\n          );\r\n        }\r\n      }\r\n\r\n      function drawBench(\r\n        x,\r\n        groundY\r\n      ) {\r\n        pixelRect(\r\n          x,\r\n          groundY - 12,\r\n          28,\r\n          4,\r\n          colours.blue\r\n        );\r\n\r\n        pixelRect(\r\n          x + 3,\r\n          groundY - 8,\r\n          3,\r\n          8,\r\n          colours.dark\r\n        );\r\n\r\n        pixelRect(\r\n          x + 22,\r\n          groundY - 8,\r\n          3,\r\n          8,\r\n          colours.dark\r\n        );\r\n      }\r\n\r\n      function drawQuayDetails(time) {\r\n        const spacing = 420;\r\n\r\n        const offset =\r\n          (time * 14 * sceneSpeed) %\r\n          spacing;\r\n\r\n        const groundY =\r\n          height * 0.757;\r\n\r\n        for (\r\n          let index = -1;\r\n          index <\r\n          Math.ceil(width \/ spacing) + 2;\r\n          index++\r\n        ) {\r\n          const x =\r\n            index * spacing +\r\n            160 -\r\n            offset;\r\n\r\n          drawBench(\r\n            x,\r\n            groundY\r\n          );\r\n        }\r\n      }\r\n\r\n      function drawCharacter(time) {\r\n        const baseX =\r\n          width * 0.28;\r\n\r\n        const groundY =\r\n          height * 0.757;\r\n\r\n        const walk =\r\n          Math.sin(time * 7);\r\n\r\n        const bob =\r\n          Math.abs(\r\n            Math.sin(time * 7)\r\n          ) * 1.5;\r\n\r\n        const characterColour =\r\n          colours.dark;\r\n\r\n        pixelRect(\r\n          baseX - 5,\r\n          groundY - 42 - bob,\r\n          11,\r\n          11,\r\n          characterColour\r\n        );\r\n\r\n        pixelRect(\r\n          baseX - 3,\r\n          groundY - 31 - bob,\r\n          7,\r\n          17,\r\n          colours.blue\r\n        );\r\n\r\n        pixelRect(\r\n          baseX - 7,\r\n          groundY - 27 - bob,\r\n          4,\r\n          11,\r\n          characterColour\r\n        );\r\n\r\n        pixelRect(\r\n          baseX + 4,\r\n          groundY - 25 - bob,\r\n          4,\r\n          10,\r\n          characterColour\r\n        );\r\n\r\n        pixelRect(\r\n          baseX - 3,\r\n          groundY - 14 - bob,\r\n          3,\r\n          13 + walk * 2,\r\n          characterColour\r\n        );\r\n\r\n        pixelRect(\r\n          baseX + 2,\r\n          groundY - 14 - bob,\r\n          3,\r\n          13 - walk * 2,\r\n          characterColour\r\n        );\r\n\r\n        pixelRect(\r\n          baseX - 8,\r\n          groundY + 2,\r\n          18,\r\n          3,\r\n          colours.light\r\n        );\r\n      }\r\n\r\n      function drawRiver(time) {\r\n        const riverTop =\r\n          height * 0.765;\r\n\r\n        pixelRect(\r\n          0,\r\n          riverTop,\r\n          width,\r\n          height - riverTop,\r\n          colours.white\r\n        );\r\n\r\n        const lineSpacing = 24;\r\n\r\n        for (\r\n          let row = 0;\r\n          row < 7;\r\n          row++\r\n        ) {\r\n          const y =\r\n            riverTop +\r\n            16 +\r\n            row * lineSpacing;\r\n\r\n          const direction =\r\n            row % 2 === 0 ? 1 : -1;\r\n\r\n          const speed =\r\n            10 + row * 2;\r\n\r\n          const offset =\r\n            (time *\r\n              speed *\r\n              sceneSpeed *\r\n              direction) %\r\n            110;\r\n\r\n          for (\r\n            let index = -2;\r\n            index <\r\n            Math.ceil(width \/ 110) + 2;\r\n            index++\r\n          ) {\r\n            const x =\r\n              index * 110 + offset;\r\n\r\n            const lineWidth =\r\n              34 + (row % 3) * 12;\r\n\r\n            pixelRect(\r\n              x,\r\n              y,\r\n              lineWidth,\r\n              row % 2 === 0 ? 2 : 1,\r\n              row % 3 === 0\r\n                ? colours.medium\r\n                : colours.light\r\n            );\r\n          }\r\n        }\r\n\r\n        \/*\r\n          Reflets verticaux tr\u00e8s l\u00e9gers.\r\n        *\/\r\n        for (\r\n          let index = 0;\r\n          index < 14;\r\n          index++\r\n        ) {\r\n          const reflectionX =\r\n            ((index * 93 -\r\n              time *\r\n                3 *\r\n                sceneSpeed) %\r\n              (width + 100)) -\r\n            50;\r\n\r\n          const reflectionHeight =\r\n            12 + (index % 4) * 7;\r\n\r\n          pixelRect(\r\n            reflectionX,\r\n            riverTop + 12,\r\n            2,\r\n            reflectionHeight,\r\n            colours.pale\r\n          );\r\n        }\r\n      }\r\n\r\n      function drawBoat(time) {\r\n        const riverTop =\r\n          height * 0.765;\r\n\r\n        const travelWidth =\r\n          width + 260;\r\n\r\n        const boatX =\r\n          width +\r\n          130 -\r\n          ((time *\r\n            22 *\r\n            sceneSpeed) %\r\n            travelWidth);\r\n\r\n        const boatY =\r\n          riverTop +\r\n          height * 0.12;\r\n\r\n        pixelRect(\r\n          boatX,\r\n          boatY,\r\n          62,\r\n          8,\r\n          colours.blue\r\n        );\r\n\r\n        pixelRect(\r\n          boatX + 8,\r\n          boatY - 14,\r\n          38,\r\n          14,\r\n          colours.light\r\n        );\r\n\r\n        pixelRect(\r\n          boatX + 14,\r\n          boatY - 10,\r\n          8,\r\n          5,\r\n          colours.white\r\n        );\r\n\r\n        pixelRect(\r\n          boatX + 27,\r\n          boatY - 10,\r\n          8,\r\n          5,\r\n          colours.white\r\n        );\r\n\r\n        pixelRect(\r\n          boatX + 42,\r\n          boatY - 21,\r\n          3,\r\n          8,\r\n          colours.dark\r\n        );\r\n\r\n        pixelRect(\r\n          boatX + 6,\r\n          boatY + 13,\r\n          52,\r\n          2,\r\n          colours.light\r\n        );\r\n      }\r\n\r\n      function drawScanlines() {\r\n        context.save();\r\n\r\n        context.globalAlpha = 0.15;\r\n\r\n        for (\r\n          let y = 0;\r\n          y < height;\r\n          y += 5\r\n        ) {\r\n          pixelRect(\r\n            0,\r\n            y,\r\n            width,\r\n            1,\r\n            colours.pale\r\n          );\r\n        }\r\n\r\n        context.restore();\r\n      }\r\n\r\n      function drawScene(time) {\r\n        context.clearRect(\r\n          0,\r\n          0,\r\n          width,\r\n          height\r\n        );\r\n\r\n        pixelRect(\r\n          0,\r\n          0,\r\n          width,\r\n          height,\r\n          colours.white\r\n        );\r\n\r\n        drawSun();\r\n        drawClouds(time);\r\n\r\n        drawSkylineLayer(\r\n          time,\r\n          \"far\"\r\n        );\r\n\r\n        drawSkylineLayer(\r\n          time,\r\n          \"near\"\r\n        );\r\n\r\n        drawQuay();\r\n        drawTrees(time);\r\n        drawQuayDetails(time);\r\n        drawCharacter(time);\r\n\r\n        drawRiver(time);\r\n        drawBoat(time);\r\n\r\n        drawScanlines();\r\n      }\r\n\r\n      function animate(timestamp) {\r\n        if (!lastTime) {\r\n          lastTime = timestamp;\r\n        }\r\n\r\n        const delta = Math.min(\r\n          (timestamp - lastTime) \/ 1000,\r\n          0.05\r\n        );\r\n\r\n        lastTime = timestamp;\r\n        elapsedTime += delta;\r\n\r\n        drawScene(elapsedTime);\r\n\r\n        if (\r\n          sceneVisible &&\r\n          !reducedMotion\r\n        ) {\r\n          animationFrame =\r\n            requestAnimationFrame(\r\n              animate\r\n            );\r\n        }\r\n      }\r\n\r\n      const resizeObserver =\r\n        new ResizeObserver(() => {\r\n          resizeCanvas();\r\n        });\r\n\r\n      const visibilityObserver =\r\n        new IntersectionObserver(\r\n          ([entry]) => {\r\n            sceneVisible =\r\n              entry.isIntersecting;\r\n\r\n            cancelAnimationFrame(\r\n              animationFrame\r\n            );\r\n\r\n            if (\r\n              sceneVisible &&\r\n              !reducedMotion\r\n            ) {\r\n              lastTime = 0;\r\n\r\n              animationFrame =\r\n                requestAnimationFrame(\r\n                  animate\r\n                );\r\n            }\r\n          },\r\n          {\r\n            threshold: 0.05\r\n          }\r\n        );\r\n\r\n      resizeObserver.observe(scene);\r\n      visibilityObserver.observe(scene);\r\n\r\n      resizeCanvas();\r\n\r\n      if (!reducedMotion) {\r\n        animationFrame =\r\n          requestAnimationFrame(\r\n            animate\r\n          );\r\n      }\r\n    });\r\n  })();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fa40498 e-con-full animated-slow e-flex elementor-invisible e-con e-parent\" data-id=\"fa40498\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6dc3a13 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"6dc3a13\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Our journey<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3a93206 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"3a93206\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Built on regulatory expertise. Driven by technology.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a68e96 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"6a68e96\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>kShuttle was built around complex regulations and real operational needs. That first-hand understanding now shapes our product development, research programmes and work on new uses of artificial intelligence.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-43aa395 e-con-full e-flex e-con e-child\" data-id=\"43aa395\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-2b8b110 e-flex e-con-boxed e-con e-child\" data-id=\"2b8b110\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4e1cab4 e-con-full card-up e-flex e-con e-child\" data-id=\"4e1cab4\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a3ffce4 elementor-widget elementor-widget-text-editor\" data-id=\"a3ffce4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Expertise as<\/p><p>the starting point<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f774f46 elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"f774f46\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>01<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ef01473 e-con-full card-down e-flex e-con e-child\" data-id=\"ef01473\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a805a45 elementor-widget elementor-widget-text-editor\" data-id=\"a805a45\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>We understand the regulatory frameworks, data and processes that organisations need to manage.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c37d81 elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"5c37d81\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>01<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7d22b04 e-flex e-con-boxed e-con e-child\" data-id=\"7d22b04\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-0bbefa3 e-con-full card-up e-flex e-con e-child\" data-id=\"0bbefa3\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7372688 elementor-widget elementor-widget-text-editor\" data-id=\"7372688\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Product as the<\/p><p>response<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-727f12b elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"727f12b\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>02<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c24e0df e-con-full card-down e-flex e-con e-child\" data-id=\"c24e0df\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-701589d elementor-widget elementor-widget-text-editor\" data-id=\"701589d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Our teams turn this expertise into solutions that structure data, rules and workflows within one shared environment.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ade49d7 elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"ade49d7\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>02<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-38b6c35 e-flex e-con-boxed e-con e-child\" data-id=\"38b6c35\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4a80de9 e-con-full card-up e-flex e-con e-child\" data-id=\"4a80de9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e08ed28 elementor-widget elementor-widget-text-editor\" data-id=\"e08ed28\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Research as the<\/p><p>driving force<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c93ea45 elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"c93ea45\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>03<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-273186e e-con-full card-down e-flex e-con e-child\" data-id=\"273186e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-84d5f78 elementor-widget elementor-widget-text-editor\" data-id=\"84d5f78\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>We explore new ways to analyse, produce and surface information to expand how ExRP\u00ae can be used.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cbab73b elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"cbab73b\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>03<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-85b80a5 e-flex e-con-boxed e-con e-child\" data-id=\"85b80a5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-d16be00 e-con-full card-up e-flex e-con e-child\" data-id=\"d16be00\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-82fcc41 elementor-widget elementor-widget-text-editor\" data-id=\"82fcc41\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>AI as the next step<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8eed8f elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"a8eed8f\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>04<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d96fb56 e-con-full card-down e-flex e-con e-child\" data-id=\"d96fb56\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b22467c elementor-widget elementor-widget-text-editor\" data-id=\"b22467c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>We are bringing AI into our product thinking and R&amp;D, with a constant focus on control, reliability and real business value.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-86206de elementor-absolute elementor-widget elementor-widget-text-editor\" data-id=\"86206de\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>04<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bb87a69 e-flex e-con-boxed e-con e-parent\" data-id=\"bb87a69\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dd6c905 elementor-widget elementor-widget-html\" data-id=\"dd6c905\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"ks-partner-photo-section\" aria-label=\"Galerie photos partenaires kShuttle\">\r\n  <div class=\"ks-partner-photo-grid\">\r\n\r\n\r\n    <figure class=\"ks-partner-photo-card\">\r\n      <img decoding=\"async\" src=\"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/05\/IMG_8084-scaled.jpg\" alt=\"Photo partenaire kShuttle 6\">\r\n    <\/figure>\r\n\r\n    <figure class=\"ks-partner-photo-card\">\r\n      <img decoding=\"async\" src=\"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/05\/IMG_8190-scaled.jpg\" alt=\"Photo partenaire kShuttle 7\">\r\n    <\/figure>\r\n\r\n    <figure class=\"ks-partner-photo-card\">\r\n      <img decoding=\"async\" src=\"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/05\/IMG_8207-scaled.jpg\" alt=\"Photo partenaire kShuttle 8\">\r\n    <\/figure>\r\n\r\n    <figure class=\"ks-partner-photo-card\">\r\n      <img decoding=\"async\" src=\"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/05\/IMG_6628-scaled.jpg\" alt=\"Photo partenaire kShuttle 9\">\r\n    <\/figure>\r\n\r\n    <figure class=\"ks-partner-photo-card\">\r\n      <img decoding=\"async\" src=\"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/05\/IMG_6902-scaled.jpg\" alt=\"Photo partenaire kShuttle 10\">\r\n    <\/figure>\r\n\r\n  <\/div>\r\n<\/section>\r\n\r\n<style>\r\n  .ks-partner-photo-section {\r\n    width: 100%;\r\n    margin: 48px auto;\r\n    font-family: \"Inter\", Arial, sans-serif;\r\n    display: block;\r\n  }\r\n\r\n  .ks-partner-photo-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(5, minmax(0, 1fr));\r\n    gap: 14px;\r\n    width: 100%;\r\n  }\r\n\r\n  .ks-partner-photo-card {\r\n    position: relative;\r\n    margin: 0;\r\n    width: 100%;\r\n    min-height: 160px;\r\n    aspect-ratio: 1 \/ 1;\r\n    overflow: hidden;\r\n    border-radius: 22px;\r\n    background: transparent;\r\n    box-shadow: 0 14px 34px rgba(16, 24, 40, 0.10);\r\n    transition: transform 0.35s ease, box-shadow 0.35s ease;\r\n  }\r\n\r\n  .ks-partner-photo-card img {\r\n    width: 100%;\r\n    height: 100%;\r\n    min-height: 160px;\r\n    display: block;\r\n    object-fit: cover;\r\n    transform: scale(1);\r\n    transition: transform 0.5s ease, filter 0.5s ease;\r\n  }\r\n\r\n  .ks-partner-photo-card:hover {\r\n    transform: translateY(-6px);\r\n    box-shadow: 0 20px 44px rgba(16, 24, 40, 0.18);\r\n  }\r\n\r\n  .ks-partner-photo-card:hover img {\r\n    transform: scale(1.25);\r\n    filter: brightness(0.9);\r\n  }\r\n\r\n  @media (max-width: 768px) {\r\n  .ks-partner-photo-section,\r\n  .ks-partner-photo-grid,\r\n  .ks-partner-photo-card,\r\n  .ks-partner-photo-card img {\r\n    display: block !important;\r\n    visibility: visible !important;\r\n    opacity: 1 !important;\r\n    filter: none !important;\r\n  }\r\n\r\n  .ks-partner-photo-grid {\r\n    display: grid !important;\r\n    grid-template-columns: 1fr !important;\r\n    gap: 18px !important;\r\n  }\r\n\r\n  .ks-partner-photo-card {\r\n    width: 100% !important;\r\n    height: 280px !important;\r\n    background: transparent !important;\r\n  }\r\n\r\n  .ks-partner-photo-card img {\r\n    width: 100% !important;\r\n    height: 100% !important;\r\n    object-fit: cover !important;\r\n  }\r\n}\r\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-74ec3d2 e-con-full e-flex e-con e-parent\" data-id=\"74ec3d2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6b0e17b elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"6b0e17b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The kShuttle team<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a8334e elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"6a8334e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Different disciplines. One product vision.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e0843a1 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"e0843a1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Regulatory experts, consultants, developers, and product, data and research teams bring complementary perspectives to move ExRP\u00ae forward together.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-060e49c e-grid e-con-boxed e-con e-child\" data-id=\"060e49c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2c6c9fd animated-slow elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"2c6c9fd\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:60}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>5<br \/>Locations<\/p><p>worldwide<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fdb32a3 animated-slow elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"fdb32a3\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:40}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>160<br \/>Team<\/p><p>members<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e89b39a animated-slow elementor-invisible elementor-widget elementor-widget-text-editor\" data-id=\"e89b39a\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:65}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>84\/100<br \/>Gender Index<\/p><p>(2025)<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-45e07f9 e-con-full animated-slow e-flex elementor-invisible e-con e-parent\" data-id=\"45e07f9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bfb5c86 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"bfb5c86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Research &amp; Development<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3214274 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"3214274\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Exploring tomorrow\u2019s use cases, today<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-97126b7 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"97126b7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Our product, business and technology teams work together to evolve ExRP\u00ae, test new ways of using data and define where AI can create meaningful value in regulatory and business processes.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0eb0dc2 elementor-widget__width-initial elementor-arrows-position-inside elementor-widget elementor-widget-n-carousel\" data-id=\"0eb0dc2\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;carousel_items&quot;:[{&quot;slide_title&quot;:&quot;Faire \\u00e9voluer la plateforme&quot;,&quot;_id&quot;:&quot;afd461a&quot;},{&quot;slide_title&quot;:&quot;Exp\\u00e9rimenter de nouveaux usages&quot;,&quot;_id&quot;:&quot;11bf119&quot;},{&quot;slide_title&quot;:&quot;Encadrer l\\u2019IA&quot;,&quot;_id&quot;:&quot;c7f75fc&quot;}],&quot;slides_to_show&quot;:&quot;3&quot;,&quot;slides_to_scroll&quot;:&quot;1&quot;,&quot;speed&quot;:700,&quot;image_spacing_custom&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:16,&quot;sizes&quot;:[]},&quot;slides_to_show_tablet&quot;:&quot;2&quot;,&quot;slides_to_show_mobile&quot;:&quot;1&quot;,&quot;autoplay&quot;:&quot;yes&quot;,&quot;autoplay_speed&quot;:5000,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;pause_on_interaction&quot;:&quot;yes&quot;,&quot;arrows&quot;:&quot;yes&quot;,&quot;image_spacing_custom_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;image_spacing_custom_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"nested-carousel.default\">\n\t\t\t\t\t\t\t<div class=\"e-n-carousel swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Carousel clients\" dir=\"ltr\">\n\t\t\t<div class=\"swiper-wrapper\" aria-live=\"off\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"1\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"1 of 3\">\n\t\t\t\t\t\t\t<a class=\"elementor-element elementor-element-3b10b30 e-flex e-con-boxed e-con e-child\" data-id=\"3b10b30\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\" href=\"#preuve-cma-cgm\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fd26c5a elementor-widget elementor-widget-text-editor\" data-id=\"fd26c5a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Advancing the platform<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-446d6d2 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"446d6d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Continuously expand ExRP\u00ae\u2019s capabilities across data structuring, automation, analysis and reporting.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"2\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"2 of 3\">\n\t\t\t\t\t\t\t<a class=\"elementor-element elementor-element-559f6b9 e-flex e-con-boxed e-con e-child\" data-id=\"559f6b9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\" href=\"#preuve-cma-cgm\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a39ddc1 elementor-widget elementor-widget-text-editor\" data-id=\"a39ddc1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Exploring new use cases<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1a9f984 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"1a9f984\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Test new ways to support teams, make information easier to access and simplify complex processes.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" data-slide=\"3\" role=\"group\" aria-roledescription=\"slide\" aria-label=\"3 of 3\">\n\t\t\t\t\t\t\t<a class=\"elementor-element elementor-element-6f57238 e-flex e-con-boxed e-con e-child\" data-id=\"6f57238\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\" href=\"#preuve-cma-cgm\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3b5d69 elementor-widget elementor-widget-text-editor\" data-id=\"f3b5d69\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Developing AI with control<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c3a295d elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"c3a295d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Design useful, understandable and controlled AI use cases aligned with requirements for security, traceability and data governance.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\" aria-label=\"Previous\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-left\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\" aria-label=\"Next\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-right\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-aef0182 e-con-full animated-slow e-flex elementor-invisible e-con e-parent\" data-id=\"aef0182\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeInUp&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d88c2ca elementor-widget-mobile__width-initial elementor-widget elementor-widget-heading\" data-id=\"d88c2ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Shape what comes next for your data<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-413fb35 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"413fb35\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Tell us about your organisation, your data and what you want to change. Together, we\u2019ll explore the most relevant path forward.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-358bbb7 elementor-align-center elementor-widget__width-initial elementor-mobile-align-center elementor-widget elementor-widget-button\" data-id=\"358bbb7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/kshuttle.io\/en\/request-demo\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Talk to our team<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>kShuttle is a technology company developing ExRP\u00ae, a regulatory and business data platform designed to structure ESG, tax and financial data.<\/p>\n","protected":false},"author":1,"featured_media":5734,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_angie_page":false,"content-type":"","footnotes":""},"class_list":["post-2493","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>kShuttle | Regulatory &amp; Business Data Platform Company<\/title>\n<meta name=\"description\" content=\"kShuttle develops ExRP\u00ae, a regulatory and business data platform designed to structure ESG, tax and financial data within a controlled cloud environment.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kshuttle.io\/entreprise\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"kShuttle | Regulatory &amp; Business Data Platform Company\" \/>\n<meta property=\"og:description\" content=\"kShuttle develops ExRP\u00ae, a regulatory and business data platform designed to structure ESG, tax and financial data within a controlled cloud environment.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kshuttle.io\/entreprise\/\" \/>\n<meta property=\"og:site_name\" content=\"kShuttle\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-07T08:27:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/02\/photos-entreprise.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"366\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/kshuttle.io\\\/entreprise\\\/\",\"url\":\"https:\\\/\\\/kshuttle.io\\\/entreprise\\\/\",\"name\":\"kShuttle | Regulatory & Business Data Platform Company\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kshuttle.io\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/kshuttle.io\\\/entreprise\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/kshuttle.io\\\/entreprise\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/kshuttle.io\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Capture-decran-2026-08-07-115117.png\",\"datePublished\":\"2026-01-30T16:44:49+00:00\",\"dateModified\":\"2026-08-07T08:27:01+00:00\",\"description\":\"kShuttle develops ExRP\u00ae, a regulatory and business data platform designed to structure ESG, tax and financial data within a controlled cloud environment.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/kshuttle.io\\\/entreprise\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/kshuttle.io\\\/entreprise\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/kshuttle.io\\\/entreprise\\\/#primaryimage\",\"url\":\"https:\\\/\\\/kshuttle.io\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Capture-decran-2026-08-07-115117.png\",\"contentUrl\":\"https:\\\/\\\/kshuttle.io\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/Capture-decran-2026-08-07-115117.png\",\"width\":513,\"height\":329,\"caption\":\"Paysage de la D\u00e9fense en mode pixelart pour kShuttle\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/kshuttle.io\\\/entreprise\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/kshuttle.io\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Company\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/kshuttle.io\\\/#website\",\"url\":\"https:\\\/\\\/kshuttle.io\\\/\",\"name\":\"kShuttle\",\"description\":\"La plateforme qui pilote vos donn\u00e9es strat\u00e9giques\",\"publisher\":{\"@id\":\"https:\\\/\\\/kshuttle.io\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/kshuttle.io\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/kshuttle.io\\\/#organization\",\"name\":\"kShuttle\",\"url\":\"https:\\\/\\\/kshuttle.io\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/kshuttle.io\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/kshuttle.io\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/logo-kshuttle-2.png\",\"contentUrl\":\"https:\\\/\\\/kshuttle.io\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/logo-kshuttle-2.png\",\"width\":170,\"height\":48,\"caption\":\"kShuttle\"},\"image\":{\"@id\":\"https:\\\/\\\/kshuttle.io\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/kshuttle\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"kShuttle | Regulatory & Business Data Platform Company","description":"kShuttle develops ExRP\u00ae, a regulatory and business data platform designed to structure ESG, tax and financial data within a controlled cloud environment.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kshuttle.io\/entreprise\/","og_locale":"en_US","og_type":"article","og_title":"kShuttle | Regulatory & Business Data Platform Company","og_description":"kShuttle develops ExRP\u00ae, a regulatory and business data platform designed to structure ESG, tax and financial data within a controlled cloud environment.","og_url":"https:\/\/kshuttle.io\/entreprise\/","og_site_name":"kShuttle","article_modified_time":"2026-08-07T08:27:01+00:00","og_image":[{"width":1280,"height":366,"url":"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/02\/photos-entreprise.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/kshuttle.io\/entreprise\/","url":"https:\/\/kshuttle.io\/entreprise\/","name":"kShuttle | Regulatory & Business Data Platform Company","isPartOf":{"@id":"https:\/\/kshuttle.io\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kshuttle.io\/entreprise\/#primaryimage"},"image":{"@id":"https:\/\/kshuttle.io\/entreprise\/#primaryimage"},"thumbnailUrl":"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/08\/Capture-decran-2026-08-07-115117.png","datePublished":"2026-01-30T16:44:49+00:00","dateModified":"2026-08-07T08:27:01+00:00","description":"kShuttle develops ExRP\u00ae, a regulatory and business data platform designed to structure ESG, tax and financial data within a controlled cloud environment.","breadcrumb":{"@id":"https:\/\/kshuttle.io\/entreprise\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kshuttle.io\/entreprise\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kshuttle.io\/entreprise\/#primaryimage","url":"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/08\/Capture-decran-2026-08-07-115117.png","contentUrl":"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/08\/Capture-decran-2026-08-07-115117.png","width":513,"height":329,"caption":"Paysage de la D\u00e9fense en mode pixelart pour kShuttle"},{"@type":"BreadcrumbList","@id":"https:\/\/kshuttle.io\/entreprise\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/kshuttle.io\/"},{"@type":"ListItem","position":2,"name":"Company"}]},{"@type":"WebSite","@id":"https:\/\/kshuttle.io\/#website","url":"https:\/\/kshuttle.io\/","name":"kShuttle","description":"La plateforme qui pilote vos donn\u00e9es strat\u00e9giques","publisher":{"@id":"https:\/\/kshuttle.io\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kshuttle.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/kshuttle.io\/#organization","name":"kShuttle","url":"https:\/\/kshuttle.io\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kshuttle.io\/#\/schema\/logo\/image\/","url":"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/01\/logo-kshuttle-2.png","contentUrl":"https:\/\/kshuttle.io\/wp-content\/uploads\/2026\/01\/logo-kshuttle-2.png","width":170,"height":48,"caption":"kShuttle"},"image":{"@id":"https:\/\/kshuttle.io\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/kshuttle\/"]}]}},"_links":{"self":[{"href":"https:\/\/kshuttle.io\/en\/wp-json\/wp\/v2\/pages\/2493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kshuttle.io\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kshuttle.io\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kshuttle.io\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kshuttle.io\/en\/wp-json\/wp\/v2\/comments?post=2493"}],"version-history":[{"count":49,"href":"https:\/\/kshuttle.io\/en\/wp-json\/wp\/v2\/pages\/2493\/revisions"}],"predecessor-version":[{"id":5732,"href":"https:\/\/kshuttle.io\/en\/wp-json\/wp\/v2\/pages\/2493\/revisions\/5732"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kshuttle.io\/en\/wp-json\/wp\/v2\/media\/5734"}],"wp:attachment":[{"href":"https:\/\/kshuttle.io\/en\/wp-json\/wp\/v2\/media?parent=2493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}