{"id":17083,"date":"2026-05-14T11:49:50","date_gmt":"2026-05-14T09:49:50","guid":{"rendered":"https:\/\/www2.neodatagroup.ai\/?page_id=17083"},"modified":"2026-05-14T11:51:36","modified_gmt":"2026-05-14T09:51:36","slug":"rapid-prototyping","status":"publish","type":"page","link":"https:\/\/neodatagroup.ai\/it\/rapid-prototyping\/","title":{"rendered":"Rapid Prototyping"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"17083\" class=\"elementor elementor-17083\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bb0c470 e-con-full e-flex e-con e-parent\" data-id=\"bb0c470\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8c75f5d elementor-widget elementor-widget-template\" data-id=\"8c75f5d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"page\" data-elementor-id=\"17072\" class=\"elementor elementor-17072\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dac3f38 e-con-full e-flex e-con e-child\" data-id=\"dac3f38\" 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-cf87ceb sfumatura elementor-widget elementor-widget-heading\" data-id=\"cf87ceb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Rapid Protopying<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6075d2e elementor-widget elementor-widget-text-editor\" data-id=\"6075d2e\" 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><span class=\"a_GcMg font-feature-liga-off font-feature-clig-off font-feature-calt-off text-decoration-none text-strikethrough-none\">From business idea to a first working prototype in 2 weeks<\/span><\/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-4a7e4558 e-flex e-con-boxed e-con e-parent\" data-id=\"4a7e4558\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2692082b elementor-widget elementor-widget-heading\" data-id=\"2692082b\" 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\"><p><span class=\"neo-eyebrow-marker\">THE UNCOMFORTABLE TRUTH<\/span><\/p><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-638bd4fe elementor-widget__width-initial elementor-widget-mobile__width-initial elementor-widget elementor-widget-heading\" data-id=\"638bd4fe\" 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\">The real challenge is not AI.<br><b><span class=\"neo-purple\">It's implementation.<\/span><\/b><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-312408e5 elementor-widget elementor-widget-html\" data-id=\"312408e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@300;400;500;600;700;900&amp;display=swap\" rel=\"stylesheet\">\r\n\r\n<style>\r\n  .s95, .s95 * { font-family: 'DM Sans', sans-serif !important; box-sizing: border-box; margin: 0; padding: 0; }\r\n\r\n  .s95 {\r\n    width: 100%;\r\n    background: #ffffff;\r\n    padding: 96px 0;\r\n    position: relative;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .s95__inner {\r\n    position: relative;\r\n    z-index: 1;\r\n    max-width: 1100px;\r\n    margin: 0 auto;\r\n    padding: 0 44px;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    gap: 56px;\r\n  }\r\n\r\n  \/* \u2500\u2500 STAT \u2500\u2500 *\/\r\n  .s95__stat {\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    gap: 16px;\r\n    text-align: center;\r\n    opacity: 0;\r\n    transform: translateY(32px);\r\n    transition: opacity 0.8s ease, transform 0.8s cubic-bezier(0.22,1,0.36,1);\r\n  }\r\n  .s95.is-visible .s95__stat { opacity:1; transform:translateY(0); }\r\n\r\n  .s95__number {\r\n    font-size: clamp(200px, 14vw, 260px);\r\n    font-weight: 900;\r\n    line-height: 1;\r\n    letter-spacing: -0.04em;\r\n    color: #7D3FA2;\r\n  }\r\n  .s95__number span { color: rgba(123,45,139,0.45); }\r\n  #s95-counter { color: #7D3FA2; }\r\n\r\n  .s95__stat-desc {\r\n    font-size: clamp(26px, 1.6vw, 20px);\r\n    font-weight: 400;\r\n    color: #1A1A1A;\r\n    max-width: 720px;\r\n    line-height: 1.65;\r\n  }\r\n  .s95__stat-desc strong { color: #1A1A1A; font-weight: 600; }\r\n\r\n  .s95__source {\r\n    font-size: 12px;\r\n    font-weight: 400;\r\n    color: #9CA3AF;\r\n    letter-spacing: 0.04em;\r\n    margin-top: -8px;\r\n  }\r\n\r\n  \/* \u2500\u2500 DIVIDER \u2500\u2500 *\/\r\n  .s95__divider {\r\n    width: 1px;\r\n    height: 48px;\r\n    background: linear-gradient(180deg, transparent, rgba(123,45,139,0.25), transparent);\r\n  }\r\n\r\n  \/* \u2500\u2500 COPY BLOCK \u2500\u2500 *\/\r\n  .s95__copy {\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    gap: 24px;\r\n    text-align: center;\r\n    max-width: 800px;\r\n    opacity: 0;\r\n    transform: translateY(24px);\r\n    transition: opacity 0.8s ease 0.2s, transform 0.8s cubic-bezier(0.22,1,0.36,1) 0.2s;\r\n  }\r\n  .s95.is-visible .s95__copy { opacity:1; transform:translateY(0); }\r\n\r\n  .s95__headline {\r\n    font-size: clamp(42px, 2.8vw, 32px);\r\n    font-weight: 700;\r\n    color: #1A1A1A;\r\n    line-height: 1.25;\r\n  }\r\n  .s95__headline em {\r\n    font-style: normal;\r\n    color: #7B2D8B;\r\n  }\r\n\r\n  .s95__body {\r\n    font-size: 18px;\r\n    font-weight: 400;\r\n    color: #1A1A1A;\r\n    line-height: 1.8;\r\n    max-width: 720px;\r\n  }\r\n  .s95__body strong { color: #1A1A1A; font-weight: 600; }\r\n\r\n  \/* \u2500\u2500 HIGHLIGHT BOX \u2500\u2500 *\/\r\n  .s95__highlight {\r\n    background: transparent;\r\n    border: none;\r\n    border-left: 3px solid #7B2D8B;\r\n    border-radius: 0;\r\n    padding: 16px 28px;\r\n    text-align: left;\r\n    max-width: 680px;\r\n    opacity: 0;\r\n    transform: translateY(20px);\r\n    transition: opacity 0.8s ease 0.4s, transform 0.8s cubic-bezier(0.22,1,0.36,1) 0.4s;\r\n  }\r\n  .s95.is-visible .s95__highlight { opacity:1; transform:translateY(0); }\r\n\r\n  .s95__highlight-title {\r\n    font-size: 40px;\r\n    font-weight: 700;\r\n    color: #7B2D8B;\r\n    margin-bottom: 8px;\r\n    line-height: 1.1;\r\n  }\r\n  .s95__highlight-text {\r\n    font-size: 20px;\r\n    font-weight: 400;\r\n    color: #4B5563;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  \/* \u2500\u2500 RESPONSIVE \u2500\u2500 *\/\r\n  @media (max-width: 768px) {\r\n    .s95 { padding: 20px 0; }\r\n    .s95__inner { padding: 0 23px; gap: 20px; }\r\n    .s95__number { font-size: 96px; }\r\n    .s95, .s95__stat, .s95__copy, .s95__highlight { opacity:1 !important; transform:none !important; }\r\n  }\r\n<\/style>\r\n\r\n<section class=\"s95\" id=\"s95-section\">\r\n  <div class=\"s95__inner\">\r\n\r\n    <div class=\"s95__stat\">\r\n      <div class=\"s95__number\"><span id=\"s95-counter\">0<\/span><span>%<\/span><\/div>\r\n      <p class=\"s95__stat-desc\">of companies <strong>struggle to harness the full potential of AI.<\/strong><\/p>\r\n      <span class=\"s95__source\">* MIT \u2014 The Gen AI Divide: State of AI in Business 2025<\/span>\r\n    <\/div>\r\n\r\n    <div class=\"s95__divider\"><\/div>\r\n\r\n    <div class=\"s95__copy\">\r\n      <h2 class=\"s95__headline\">The gap between <em>AI ambition<\/em><br>and AI reality.<\/h2>\r\n      <p class=\"s95__body\">Most companies do not lack ambition. They have use cases, management support, and access to technology. What is missing is a <strong>fast, low-risk path from idea to working system<\/strong> \u2014 without long discovery phases, unclear priorities, or costly vendor lock-in.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"s95__highlight\">\r\n      <div class=\"s95__highlight-title\">We bridge that gap.<\/div>\r\n      <div class=\"s95__highlight-text\">From AI confusion to a working prototype in days.<\/div>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n(function() {\r\n  var section = document.getElementById('s95-section');\r\n  if (!section) return;\r\n\r\n  var animated = false;\r\n\r\n  function animateCounter() {\r\n    if (animated) return;\r\n    animated = true;\r\n    var el = document.getElementById('s95-counter');\r\n    var start = 0;\r\n    var end = 95;\r\n    var duration = 1800;\r\n    var startTime = null;\r\n\r\n    function easeOutCubic(t) { return 1 - Math.pow(1 - t, 3); }\r\n\r\n    function step(timestamp) {\r\n      if (!startTime) startTime = timestamp;\r\n      var elapsed = timestamp - startTime;\r\n      var progress = Math.min(elapsed \/ duration, 1);\r\n      var value = Math.round(easeOutCubic(progress) * end);\r\n      el.textContent = value;\r\n      if (progress < 1) requestAnimationFrame(step);\r\n    }\r\n    requestAnimationFrame(step);\r\n  }\r\n\r\n  if (window.innerWidth <= 768) {\r\n    section.classList.add('is-visible');\r\n    animateCounter();\r\n    return;\r\n  }\r\n\r\n  new IntersectionObserver(function(entries) {\r\n    entries.forEach(function(e) {\r\n      if (e.isIntersecting) {\r\n        section.classList.add('is-visible');\r\n        animateCounter();\r\n      }\r\n    });\r\n  }, { threshold: 0.15 }).observe(section);\r\n})();\r\n<\/script>\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-3602d3e2 e-flex e-con-boxed e-con e-parent\" data-id=\"3602d3e2\" 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-725580b4 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"725580b4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-577200fa elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"577200fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:ital,wght@0,400;0,500;0,600;0,700;1,700&display=swap\" rel=\"stylesheet\">\n\n<style>\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n    \/* force DM Sans throughout the widget *\/\n    .hww-track, .hww-track * {\n      font-family: 'DM Sans', sans-serif !important;\n    }\n\n    \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n       SCROLL TRACK \u2014 tall container that gives\n       \"room\" for the sticky section to animate\n    \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n    .hww-track {\n      position: relative;\n      height: 220vh; \/* 100vh sticky + spazio sufficiente per i 3 step *\/\n    }\n\n    \/* \u2500\u2500 sticky panel \u2500\u2500 *\/\n    .hww-sticky {\n      position: sticky;\n      top: 0;\n      height: 100vh;\n      overflow: hidden;\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      padding: 0 128px;\n      background: #ffffff;\n    }\n\n    \/* \u2500\u2500 inner layout \u2500\u2500 *\/\n    .hww-inner {\n      width: 100%;\n    }\n\n    \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n       TIMELINE\n    \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n    .hww-timeline {\n      position: relative;\n      display: flex;\n      align-items: flex-start;\n      gap: 0;\n    }\n\n    \/* the horizontal progress line *\/\n    .hww-line-track {\n      position: absolute;\n      top: 23px; \/* center of bubble *\/\n      left: 23px;\n      right: 23px;\n      height: 1px;\n      background: #E5E7EB;\n      z-index: 0;\n    }\n    .hww-line-fill {\n      position: absolute;\n      top: 0; left: 0;\n      width: 0%;\n      height: 100%;\n      background: linear-gradient(90deg, #7B2D8B 0%, rgba(123,45,139,0.4) 100%);\n      transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1);\n    }\n\n    \/* \u2500\u2500 single step \u2500\u2500 *\/\n    .hww-step {\n      flex: 1;\n      position: relative;\n      z-index: 1;\n      padding: 0 32px 0 0;\n      opacity: 0;\n      transform: translateY(28px) scale(0.98);\n      transition:\n        opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1),\n        transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);\n    }\n    .hww-step.visible { opacity: 1; transform: translateY(0) scale(1); }\n    .hww-step:last-child { padding-right: 0; }\n\n    \/* bubble *\/\n    .hww-bubble {\n      width: 46px; height: 46px;\n      border-radius: 50%;\n      background: #ffffff;\n      border: 1.5px solid #E5E7EB;\n      display: flex; align-items: center; justify-content: center;\n      font-family: 'DM Sans', sans-serif !important; font-weight: 600;\n      font-size: 16px; letter-spacing: 0.06em;\n      color: #6B7280;\n      margin-bottom: 28px;\n      position: relative;\n      box-shadow: 0 0 0 5px #ffffff;\n      transition: border-color 0.4s, color 0.4s, background 0.4s;\n    }\n    .hww-step.visible .hww-bubble {\n      border-color: #7B2D8B;\n      color: #7B2D8B;\n    }\n    \/* pulse ring when active *\/\n    .hww-bubble::after {\n      content: '';\n      position: absolute; inset: -6px;\n      border-radius: 50%;\n      border: 1px solid rgba(123,45,139,0);\n      transition: border-color 0.4s;\n    }\n    .hww-step.visible .hww-bubble::after {\n      border-color: rgba(123,45,139,0.2);\n    }\n\n    \/* circle *\/\n    .hww-circle {\n      width: clamp(140px, 15vw, 190px);\n      height: clamp(140px, 15vw, 190px);\n      border-radius: 50%;\n      border: 3px solid rgba(123,45,139,0.25);\n      display: flex; align-items: center; justify-content: center;\n      margin-bottom: 28px;\n      position: relative;\n      opacity: 0;\n      transform: scale(0.75);\n      transition: opacity 0.6s cubic-bezier(0.22,1,0.36,1) 0.1s,\n                  transform 0.6s cubic-bezier(0.22,1,0.36,1) 0.1s,\n                  border-color 0.4s ease,\n                  background 0.4s ease;\n    }\n    .hww-step.visible .hww-circle {\n      opacity: 1; transform: scale(1);\n    }\n    \/* fill on hover *\/\n    .hww-step:hover .hww-circle {\n      border-color: #7B2D8B;\n      background: rgba(123,45,139,0.06);\n    }\n    \/* subtle inner ring *\/\n    .hww-circle::before {\n      content: '';\n      position: absolute; inset: 8px;\n      border-radius: 50%;\n      border: 1px solid rgba(123,45,139,0.1);\n      transition: border-color 0.4s;\n    }\n    .hww-step:hover .hww-circle::before {\n      border-color: rgba(123,45,139,0.25);\n    }\n    .hww-circle-inner {\n      font-family: 'DM Sans', sans-serif !important;\n      font-size: clamp(18px, 1.8vw, 24px);\n      color: #7B2D8B;\n      font-weight: 700;\n      letter-spacing: -0.01em;\n      position: relative; z-index: 1;\n    }\n\n    \/* hww-name removed \u2014 label is inside circle *\/\n\n    \/* desc *\/\n    .hww-desc {\n      font-size: 18px;\n      font-weight: 400; color: #6B7280;\n      line-height: 1.75; max-width: 260px;\n      margin-top: 12px;\n      opacity: 0;\n      transform: translateY(8px);\n      transition: opacity 0.5s ease 0.25s, transform 0.5s ease 0.25s;\n    }\n    .hww-step.visible .hww-desc { opacity: 1; transform: translateY(0); }\n\n    \/* badge *\/\n    .hww-badge {\n      display: inline-flex; align-items: center; gap: 6px;\n      margin-top: 20px;\n      padding: 4px 12px; border-radius: 999px;\n      background: #F3E8F7;\n      font-size: 14px; font-weight: 600;\n      letter-spacing: 0.08em; text-transform: uppercase;\n      color: #7B2D8B;\n      opacity: 0;\n      transition: opacity 0.4s ease 0.35s;\n    }\n    .hww-step.visible .hww-badge { opacity: 1; }\n\n    \/* \u2500\u2500 progress indicator \u2500\u2500 *\/\n    .hww-progress {\n      position: absolute;\n      bottom: 32px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex; gap: 8px;\n      opacity: 0;\n      transition: opacity 0.4s ease;\n    }\n    .hww-progress.visible { opacity: 1; }\n    .hww-progress-dot {\n      width: 6px; height: 6px; border-radius: 50%;\n      background: #E5E7EB;\n      transition: background 0.3s, transform 0.3s;\n    }\n    .hww-progress-dot.active {\n      background: #7B2D8B;\n      transform: scale(1.3);\n    }\n\n    \/* \u2500\u2500 scroll hint \u2500\u2500 *\/\n    .hww-hint {\n      position: absolute;\n      bottom: 32px;\n      right: 64px;\n      display: flex; align-items: center; gap: 8px;\n      font-size: 15px; font-weight: 500;\n      letter-spacing: 0.08em; text-transform: uppercase;\n      color: rgba(107,114,128,0.5);\n      opacity: 0;\n      transition: opacity 0.4s ease;\n    }\n    .hww-hint.visible { opacity: 1; }\n    .hww-hint-icon {\n      width: 20px; height: 32px;\n      border-radius: 10px;\n      border: 1.5px solid rgba(107,114,128,0.3);\n      position: relative;\n      display: flex; justify-content: center;\n    }\n    .hww-hint-wheel {\n      width: 3px; height: 6px;\n      background: rgba(107,114,128,0.5);\n      border-radius: 2px;\n      position: absolute;\n      top: 5px;\n      animation: wheel 1.5s ease-in-out infinite;\n    }\n    @keyframes wheel {\n      0%   { transform: translateY(0); opacity: 1; }\n      80%  { transform: translateY(10px); opacity: 0; }\n      100% { transform: translateY(0); opacity: 0; }\n    }\n\n\n    \/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n       RESPONSIVE \u2014 disable sticky on mobile\n    \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n    @media (max-width: 768px) {\n      .hww-track { height: auto; }\n      .hww-sticky {\n        position: relative;\n        height: auto;\n        padding: 64px 24px;\n        overflow: visible;\n      }\n      .hww-timeline { flex-direction: column; gap: 48px; }\n      .hww-line-track { display: none; }\n      .hww-step { opacity: 1; transform: none; padding: 0; }\n      .hww-bubble { margin-bottom: 20px; }\n      .hww-circle {\n        opacity: 1; transform: scale(1);\n        width: clamp(120px, 40vw, 160px);\n        height: clamp(120px, 40vw, 160px);\n        margin-bottom: 20px;\n      }\n      .hww-circle-inner { font-size: 18px; }\n      .hww-desc { opacity: 1; transform: none; font-size: 16px; max-width: 100%; }\n      .hww-badge { opacity: 1; }\n      .hww-progress { display: none; }\n      .hww-hint { display: none; }\n      .hww-cta-wrap { position: static; opacity: 1; transform: none; margin-top: 48px; }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      .hww-step, .hww-icon, .hww-desc, .hww-badge {\n        opacity: 1; transform: none; transition: none;\n      }\n      .hww-name::after { width: 100%; transition: none; }\n    }\n  <\/style>\n\n<!-- \u2550\u2550\u2550 SCROLL TRACK \u2550\u2550\u2550 -->\n<div class=\"hww-track\" id=\"hww-track\">\n  <div class=\"hww-sticky\" id=\"hww-sticky\">\n    <div class=\"hww-inner\">\n\n      <!-- header -->\n\n      <!-- header -->\n      <div style=\"margin-bottom:36px;\">\n        <div style=\"display:inline-flex;align-items:center;gap:8px;padding:5px 14px;border-radius:999px;background:#F3E8F7;border:1px solid rgba(123,45,139,0.2);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;color:#7B2D8B;margin-bottom:14px;\">\n          <span style=\"width:5px;height:5px;border-radius:50%;background:#7B2D8B;display:inline-block;\"><\/span>\n          How we work\n        <\/div>\n        <h2 style=\"font-family:'DM Sans',sans-serif!important;font-size:clamp(26px,3vw,40px);font-weight:700;line-height:1.15;color:#1A1A1A;margin:0;\">From idea to functional prototype.<br><span style=\"color:#7B2D8B;\">In just two weeks.<\/span><\/h2>\n      <\/div>\n\n      <!-- timeline -->\n      <div class=\"hww-timeline\" id=\"hww-timeline\">\n\n        <!-- progress line -->\n        <div class=\"hww-line-track\">\n          <div class=\"hww-line-fill\" id=\"hww-line-fill\"><\/div>\n        <\/div>\n\n        <!-- step 1 \u2014 Understand -->\n        <div class=\"hww-step\" id=\"hww-step-0\">\n          <div class=\"hww-bubble\">01<\/div>\n          <div class=\"hww-circle\">\n            <div class=\"hww-circle-inner\">Understand<\/div>\n          <\/div>\n          <p class=\"hww-desc\">A focused session to identify where AI creates measurable value in your daily workflows.<\/p>\n          <span class=\"hww-badge\">Week 0<\/span>\n        <\/div>\n\n        <!-- step 2 \u2014 Prototype -->\n        <div class=\"hww-step\" id=\"hww-step-1\">\n          <div class=\"hww-bubble\">02<\/div>\n          <div class=\"hww-circle\">\n            <div class=\"hww-circle-inner\">Prototype<\/div>\n          <\/div>\n          <p class=\"hww-desc\">A functional prototype on your real data in a two-week sprint. No surprises.<\/p>\n          <span class=\"hww-badge\">Week 2<\/span>\n        <\/div>\n\n        <!-- step 3 \u2014 Deploy -->\n        <div class=\"hww-step\" id=\"hww-step-2\">\n          <div class=\"hww-bubble\">03<\/div>\n          <div class=\"hww-circle\">\n            <div class=\"hww-circle-inner\">Deploy<\/div>\n          <\/div>\n          <p class=\"hww-desc\">We integrate the solution into your infrastructure, scale it, and provide ongoing support.<\/p>\n          <span class=\"hww-badge\">Custom weeks<\/span>\n        <\/div>\n\n      <\/div><!-- \/timeline -->\n    <\/div><!-- \/inner -->\n\n    <!-- progress dots -->\n    <div class=\"hww-progress\" id=\"hww-progress\">\n      <div class=\"hww-progress-dot\" id=\"hww-dot-0\"><\/div>\n      <div class=\"hww-progress-dot\" id=\"hww-dot-1\"><\/div>\n      <div class=\"hww-progress-dot\" id=\"hww-dot-2\"><\/div>\n    <\/div>\n\n    <!-- scroll hint -->\n    <div class=\"hww-hint\" id=\"hww-hint\">\n      <span>scroll<\/span>\n      <div class=\"hww-hint-icon\">\n        <div class=\"hww-hint-wheel\"><\/div>\n      <\/div>\n    <\/div>\n\n  <\/div><!-- \/sticky -->\n<\/div><!-- \/track -->\n\n\n<script>\n(function() {\n  var track    = document.getElementById('hww-track');\n  var steps    = [0,1,2].map(function(i){ return document.getElementById('hww-step-'+i); });\n  var dots     = [0,1,2].map(function(i){ return document.getElementById('hww-dot-'+i); });\n  var lineFill = document.getElementById('hww-line-fill');\n  var progress = document.getElementById('hww-progress');\n  var hint     = document.getElementById('hww-hint');\n\n  if (window.innerWidth <= 768) return;\n\n  var thresholds = [0.08, 0.36, 0.62];\n\n  function update() {\n    var rect    = track.getBoundingClientRect();\n    var trackH  = track.offsetHeight;\n    var vh      = window.innerHeight;\n    var scrolled = -rect.top;\n    var total   = trackH - vh;\n    var pct     = Math.max(0, Math.min(1, scrolled \/ total));\n\n    \/* show\/hide hint and progress *\/\n    if (pct > 0.01) {\n      hint.classList.add('visible');\n      progress.classList.add('visible');\n    } else {\n      hint.classList.remove('visible');\n      progress.classList.remove('visible');\n    }\n\n    \/* steps \u2014 add or REMOVE visible based on current pct *\/\n    thresholds.forEach(function(thr, i) {\n      if (pct >= thr) {\n        steps[i].classList.add('visible');\n        dots[i].classList.add('active');\n      } else {\n        steps[i].classList.remove('visible');\n        dots[i].classList.remove('active');\n      }\n    });\n\n    \/* line fill *\/\n    var linePct = 0;\n    if (pct >= thresholds[2]) {\n      linePct = 100;\n    } else if (pct >= thresholds[1]) {\n      var t = (pct - thresholds[1]) \/ (thresholds[2] - thresholds[1]);\n      linePct = 50 + t * 50;\n    } else if (pct >= thresholds[0]) {\n      var t = (pct - thresholds[0]) \/ (thresholds[1] - thresholds[0]);\n      linePct = t * 50;\n    }\n    lineFill.style.width = linePct + '%';\n  }\n\n  window.addEventListener('scroll', update, { passive: true });\n  update();\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-326eaee1 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"326eaee1\" 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-md\" href=\"#elementor-action%3Aaction%3Dpopup%3Aopen%26settings%3DeyJpZCI6IjM1MyIsInRvZ2dsZSI6dHJ1ZX0%3D\">\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\">Book a 30 minute strategy call<\/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\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-21ca3256 e-flex e-con-boxed elementor-invisible e-con e-parent\" data-id=\"21ca3256\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;animation&quot;:&quot;fadeIn&quot;,&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7c466165 reveal-up elementor-widget elementor-widget-heading\" data-id=\"7c466165\" 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\"><span class=\"neo-purple\" style=\"font-weight: 500\"><font color=\"#000000\">See AI working with your data<\/font><\/span><br><font color=\"#7d3fa2\"><b>Fixed Scope. No surprises.<\/b><\/font><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6391f6bd elementor-widget elementor-widget-html\" data-id=\"6391f6bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@300;400;500;600;700;900&amp;display=swap\" rel=\"stylesheet\">\n\n<style>\n  .rpd, .rpd * { font-family: 'DM Sans', sans-serif !important; box-sizing: border-box; margin: 0; padding: 0; }\n  .rpd { width: 100%; }\n\n  \/* \u2500\u2500 SECTION \u2500\u2500 *\/\n  .rpd__section {\n    padding: 80px 0;\n    border-bottom: 1px solid #F3E8F7;\n  }\n  .rpd__section:last-child { border-bottom: none; }\n\n  .rpd__inner {\n    max-width: 1100px;\n    margin: 0 auto;\n    padding: 0 48px;\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 72px;\n    align-items: center;\n  }\n\n  \/* \u2500\u2500 TEXT \u2500\u2500 *\/\n  .rpd__text {\n    opacity: 0; transform: translateY(28px);\n    transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.22,1,0.36,1);\n  }\n  .rpd__section.is-visible .rpd__text { opacity:1; transform:translateY(0); }\n\n  .rpd__step-tag {\n    display: inline-flex; align-items: center; gap: 8px;\n    font-size: 11px; font-weight: 700;\n    letter-spacing: 0.14em; text-transform: uppercase;\n    color: #7B2D8B; margin-bottom: 20px;\n  }\n  .rpd__step-dot {\n    width: 5px; height: 5px; border-radius: 50%;\n    background: #7B2D8B; flex-shrink: 0;\n  }\n\n  .rpd__heading {\n    font-size: clamp(28px, 3vw, 40px);\n    font-weight: 800; color: #1A1A1A;\n    letter-spacing: -0.02em; line-height: 1.15;\n    margin-bottom: 20px;\n  }\n  .rpd__heading em { font-style: normal; color: #7B2D8B; }\n\n  .rpd__body {\n    font-size: 17px; font-weight: 400;\n    color: #4B5563; line-height: 1.8;\n    margin-bottom: 28px;\n  }\n  .rpd__body strong { font-weight: 600; color: #1A1A1A; }\n\n  .rpd__list {\n    list-style: none; padding: 0;\n    display: flex; flex-direction: column; gap: 12px;\n  }\n  .rpd__list li {\n    display: flex; align-items: flex-start; gap: 10px;\n    font-size: 15px; color: #4B5563; line-height: 1.55;\n  }\n  .rpd__list li::before {\n    content: '\u2192'; color: #7B2D8B;\n    font-weight: 700; flex-shrink: 0; margin-top: 1px;\n  }\n\n  .rpd__duration {\n    display: inline-block; margin-top: 28px;\n    font-size: 12px; font-weight: 700;\n    letter-spacing: 0.12em; text-transform: uppercase;\n    color: #7B2D8B; background: #F3E8F7;\n    padding: 6px 14px; border-radius: 20px;\n  }\n\n  \/* \u2500\u2500 SVG VISUAL \u2500\u2500 *\/\n  .rpd__visual {\n    opacity: 0; transform: translateY(20px);\n    transition: opacity 0.7s ease 0.15s, transform 0.7s cubic-bezier(0.22,1,0.36,1) 0.15s;\n  }\n  .rpd__section.is-visible .rpd__visual { opacity:1; transform:translateY(0); }\n\n  .rpd__visual svg { width: 100%; height: auto; }\n\n  \/* \u2500\u2500 ANIMATIONS inside SVGs \u2500\u2500 *\/\n\n  \/* UNDERSTAND \u2014 nodes appearing *\/\n  .u-node { opacity: 0; animation: uNodeIn 0.5s ease forwards; }\n  .u-node:nth-child(1) { animation-delay: 0.2s; }\n  .u-node:nth-child(2) { animation-delay: 0.6s; }\n  .u-node:nth-child(3) { animation-delay: 1.0s; }\n  .u-node:nth-child(4) { animation-delay: 1.4s; }\n  @keyframes uNodeIn { to { opacity:1; } }\n\n  .u-line { stroke-dasharray: 120; stroke-dashoffset: 120; animation: uLineIn 0.6s ease forwards; }\n  .u-line:nth-child(1) { animation-delay: 0.8s; }\n  .u-line:nth-child(2) { animation-delay: 1.1s; }\n  .u-line:nth-child(3) { animation-delay: 1.4s; }\n  @keyframes uLineIn { to { stroke-dashoffset: 0; } }\n\n  .u-pulse { animation: uPulse 2.5s ease-in-out infinite 1.8s; }\n  @keyframes uPulse { 0%,100%{r:10;opacity:0.15;} 50%{r:18;opacity:0.05;} }\n\n  \/* PROTOTYPE \u2014 blocks building *\/\n  .p-block { opacity: 0; transform: translateY(8px); animation: pBlockIn 0.4s ease forwards; }\n  .p-block:nth-child(1) { animation-delay: 0.3s; }\n  .p-block:nth-child(2) { animation-delay: 0.7s; }\n  .p-block:nth-child(3) { animation-delay: 1.1s; }\n  .p-block:nth-child(4) { animation-delay: 1.5s; }\n  .p-block:nth-child(5) { animation-delay: 1.9s; }\n  @keyframes pBlockIn { to { opacity:1; transform:translateY(0); } }\n\n  .p-cursor { animation: pCursorBlink 1s step-end infinite 2.2s; }\n  @keyframes pCursorBlink { 0%,100%{opacity:1;} 50%{opacity:0;} }\n\n  .p-bar { animation: pBarGrow 1.2s ease forwards 0.5s; transform-origin: left center; transform: scaleX(0); }\n  @keyframes pBarGrow { to { transform: scaleX(1); } }\n\n  \/* DEPLOY \u2014 signal radiating *\/\n  .d-ring { opacity: 0; animation: dRingOut 2.5s ease-out infinite; }\n  .d-ring:nth-child(1) { animation-delay: 0s; }\n  .d-ring:nth-child(2) { animation-delay: 0.7s; }\n  .d-ring:nth-child(3) { animation-delay: 1.4s; }\n  @keyframes dRingOut {\n    0%   { opacity:0.5; r:12; stroke-width:2; }\n    100% { opacity:0; r:55; stroke-width:0.5; }\n  }\n\n  .d-node { animation: dNodePulse 2s ease-in-out infinite; }\n  .d-node:nth-child(odd) { animation-delay: 0.4s; }\n  @keyframes dNodePulse { 0%,100%{opacity:0.6;} 50%{opacity:1;} }\n\n  .d-line { stroke-dasharray: 80; stroke-dashoffset: 80; animation: dLineIn 0.6s ease forwards; }\n  .d-line:nth-child(1) { animation-delay: 0.4s; }\n  .d-line:nth-child(2) { animation-delay: 0.7s; }\n  .d-line:nth-child(3) { animation-delay: 1.0s; }\n  .d-line:nth-child(4) { animation-delay: 1.3s; }\n  @keyframes dLineIn { to { stroke-dashoffset: 0; } }\n\n  \/* \u2500\u2500 RESPONSIVE \u2500\u2500 *\/\n  @media (max-width: 900px) {\n    .rpd__inner { grid-template-columns: 1fr; gap: 36px; padding: 0 24px; }\n    .rpd__section { padding: 56px 0; }\n    .rpd__visual { order: -1; }\n    .rpd__text, .rpd__visual { opacity:1; transform:none; }\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .rpd__text, .rpd__visual { opacity:1; transform:none; transition:none; }\n    .u-node, .u-line, .p-block, .p-bar, .d-ring, .d-node, .d-line { animation:none; opacity:1; stroke-dashoffset:0; transform:none; }\n  }\n<\/style>\n\n<div class=\"rpd\" id=\"rpd-wrap\">\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 STEP 1 \u2014 UNDERSTAND \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"rpd__section\" id=\"rpd-s1\">\n    <div class=\"rpd__inner\">\n      <div class=\"rpd__text\">\n        <div class=\"rpd__step-tag\"><span class=\"rpd__step-dot\"><\/span>Step 01 \u2014 Understand<\/div>\n        <h2 class=\"rpd__heading\">We map <em>your problem.<\/em><br>Not a generic one.<\/h2>\n        <p class=\"rpd__body\">Before writing a single line of code, we sit down with your team. A <strong>focused session<\/strong> to understand your data, your workflows, and the real business challenge behind the request. We identify where AI creates measurable value \u2014 and where it's noise.<\/p>\n        <ul class=\"rpd__list\">\n          <li>Business problem mapping with your stakeholders<\/li>\n          <li>Audit of available data and existing systems<\/li>\n          <li>Use case prioritization by impact and feasibility<\/li>\n          <li>Definition of measurable success criteria<\/li>\n        <\/ul>\n        <span class=\"rpd__duration\">1 \u2013 2 days<\/span>\n      <\/div>\n      <div class=\"rpd__visual\">\n        <svg viewBox=\"0 0 400 320\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\">\n          <rect width=\"400\" height=\"320\" rx=\"20\" fill=\"#F9F5FF\"\/>\n\n          <!-- connecting lines -->\n          <line class=\"u-line\" x1=\"200\" y1=\"160\" x2=\"100\" y2=\"90\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n          <line class=\"u-line\" x1=\"200\" y1=\"160\" x2=\"300\" y2=\"90\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n          <line class=\"u-line\" x1=\"200\" y1=\"160\" x2=\"120\" y2=\"240\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n\n          <!-- pulse rings -->\n          <circle class=\"u-pulse\" cx=\"200\" cy=\"160\" r=\"10\" fill=\"#7B2D8B\" opacity=\"0.12\"\/>\n\n          <!-- central node -->\n          <g class=\"u-node\">\n            <circle cx=\"200\" cy=\"160\" r=\"28\" fill=\"#7B2D8B\" opacity=\"0.12\"\/>\n            <circle cx=\"200\" cy=\"160\" r=\"18\" fill=\"#7B2D8B\"\/>\n            <text x=\"200\" y=\"165\" font-family=\"DM Sans,sans-serif\" font-size=\"11\" font-weight=\"700\" fill=\"white\" text-anchor=\"middle\">YOU<\/text>\n          <\/g>\n\n          <!-- satellite nodes -->\n          <g class=\"u-node\">\n            <rect x=\"60\" y=\"60\" width=\"82\" height=\"40\" rx=\"10\" fill=\"white\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n            <text x=\"101\" y=\"85\" font-family=\"DM Sans,sans-serif\" font-size=\"10\" font-weight=\"600\" fill=\"#7B2D8B\" text-anchor=\"middle\">Your Data<\/text>\n          <\/g>\n          <g class=\"u-node\">\n            <rect x=\"258\" y=\"60\" width=\"82\" height=\"40\" rx=\"10\" fill=\"white\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n            <text x=\"299\" y=\"85\" font-family=\"DM Sans,sans-serif\" font-size=\"10\" font-weight=\"600\" fill=\"#7B2D8B\" text-anchor=\"middle\">Workflows<\/text>\n          <\/g>\n          <g class=\"u-node\">\n            <rect x=\"55\" y=\"210\" width=\"94\" height=\"40\" rx=\"10\" fill=\"white\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n            <text x=\"102\" y=\"235\" font-family=\"DM Sans,sans-serif\" font-size=\"10\" font-weight=\"600\" fill=\"#7B2D8B\" text-anchor=\"middle\">Business Goal<\/text>\n          <\/g>\n\n          <!-- output tag -->\n          <g class=\"u-node\">\n            <rect x=\"240\" y=\"210\" width=\"120\" height=\"42\" rx=\"10\" fill=\"#7B2D8B\"\/>\n            <text x=\"300\" y=\"230\" font-family=\"DM Sans,sans-serif\" font-size=\"9\" font-weight=\"700\" fill=\"rgba(255,255,255,0.6)\" text-anchor=\"middle\" letter-spacing=\"2\">OUTPUT<\/text>\n            <text x=\"300\" y=\"244\" font-family=\"DM Sans,sans-serif\" font-size=\"10\" font-weight=\"700\" fill=\"white\" text-anchor=\"middle\">Use Case Map<\/text>\n          <\/g>\n        <\/svg>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 STEP 2 \u2014 PROTOTYPE \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"rpd__section\" id=\"rpd-s2\">\n    <div class=\"rpd__inner\">\n      <div class=\"rpd__text\">\n        <div class=\"rpd__step-tag\"><span class=\"rpd__step-dot\"><\/span>Step 02 \u2014 Prototype<\/div>\n        <h2 class=\"rpd__heading\">A working solution.<br><em>In two weeks.<\/em><\/h2>\n        <p class=\"rpd__body\">Not a slide deck. Not a mockup. A <strong>functional prototype built on your real data<\/strong>, running in your environment, that you can test, evaluate, and show to stakeholders before committing to anything larger.<\/p>\n        <ul class=\"rpd__list\">\n          <li>Built on your actual data, not generic samples<\/li>\n          <li>Fixed two-week sprint, fixed scope<\/li>\n          <li>Testable output you can evaluate with your team<\/li>\n          <li>No commitment to a full project required<\/li>\n        <\/ul>\n        <span class=\"rpd__duration\">2 weeks<\/span>\n      <\/div>\n      <div class=\"rpd__visual\">\n        <svg viewBox=\"0 0 400 320\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\">\n          <rect width=\"400\" height=\"320\" rx=\"20\" fill=\"#0F0520\"\/>\n\n          <!-- window chrome -->\n          <rect x=\"30\" y=\"30\" width=\"340\" height=\"260\" rx=\"12\" fill=\"#1A0A2E\" stroke=\"rgba(255,255,255,0.08)\" stroke-width=\"1\"\/>\n          <rect x=\"30\" y=\"30\" width=\"340\" height=\"32\" rx=\"12\" fill=\"rgba(255,255,255,0.04)\"\/>\n          <circle cx=\"52\" cy=\"46\" r=\"5\" fill=\"#FF5F57\" opacity=\"0.7\"\/>\n          <circle cx=\"68\" cy=\"46\" r=\"5\" fill=\"#FFBD2E\" opacity=\"0.7\"\/>\n          <circle cx=\"84\" cy=\"46\" r=\"5\" fill=\"#28C840\" opacity=\"0.7\"\/>\n\n          <!-- code blocks -->\n          <g class=\"p-block\">\n            <rect x=\"50\" y=\"80\" width=\"140\" height=\"10\" rx=\"3\" fill=\"#7B2D8B\" opacity=\"0.7\"\/>\n          <\/g>\n          <g class=\"p-block\">\n            <rect x=\"50\" y=\"100\" width=\"200\" height=\"10\" rx=\"3\" fill=\"rgba(255,255,255,0.12)\"\/>\n          <\/g>\n          <g class=\"p-block\">\n            <rect x=\"68\" y=\"120\" width=\"160\" height=\"10\" rx=\"3\" fill=\"rgba(255,255,255,0.08)\"\/>\n          <\/g>\n          <g class=\"p-block\">\n            <rect x=\"68\" y=\"140\" width=\"120\" height=\"10\" rx=\"3\" fill=\"#7B2D8B\" opacity=\"0.5\"\/>\n          <\/g>\n          <g class=\"p-block\">\n            <rect x=\"50\" y=\"160\" width=\"180\" height=\"10\" rx=\"3\" fill=\"rgba(255,255,255,0.08)\"\/>\n          <\/g>\n\n          <!-- progress bar -->\n          <rect x=\"50\" y=\"200\" width=\"300\" height=\"6\" rx=\"3\" fill=\"rgba(255,255,255,0.06)\"\/>\n          <rect class=\"p-bar\" x=\"50\" y=\"200\" width=\"300\" height=\"6\" rx=\"3\" fill=\"#7B2D8B\"\/>\n\n          <!-- status -->\n          <g class=\"p-block\">\n            <rect x=\"50\" y=\"230\" width=\"90\" height=\"24\" rx=\"6\" fill=\"rgba(123,45,139,0.3)\" stroke=\"rgba(123,45,139,0.4)\" stroke-width=\"1\"\/>\n            <text x=\"95\" y=\"246\" font-family=\"DM Sans,sans-serif\" font-size=\"9\" font-weight=\"700\" fill=\"#C084D4\" text-anchor=\"middle\">RUNNING<\/text>\n          <\/g>\n          <g class=\"p-block\">\n            <text x=\"200\" y=\"246\" font-family=\"DM Sans,sans-serif\" font-size=\"10\" fill=\"rgba(255,255,255,0.35)\" text-anchor=\"middle\">Sprint day 11\/14<\/text>\n          <\/g>\n\n          <!-- cursor -->\n          <rect class=\"p-cursor\" x=\"220\" y=\"158\" width=\"2\" height=\"14\" rx=\"1\" fill=\"#C084D4\"\/>\n        <\/svg>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 STEP 3 \u2014 DEPLOY \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"rpd__section\" id=\"rpd-s3\">\n    <div class=\"rpd__inner\">\n      <div class=\"rpd__text\">\n        <div class=\"rpd__step-tag\"><span class=\"rpd__step-dot\"><\/span>Step 03 \u2014 Deploy<\/div>\n        <h2 class=\"rpd__heading\">From prototype<br>to <em>production.<\/em><\/h2>\n        <p class=\"rpd__body\">Once the prototype is validated, we integrate the solution into your infrastructure and scale it to production. We stay on as your <strong>technical partner<\/strong> \u2014 not a vendor that disappears after delivery.<\/p>\n        <ul class=\"rpd__list\">\n          <li>Full integration with your existing infrastructure<\/li>\n          <li>Production-grade scaling and reliability<\/li>\n          <li>Ongoing technical support and monitoring<\/li>\n          <li>Continuous improvement based on real usage<\/li>\n        <\/ul>\n        <span class=\"rpd__duration\">Ongoing partnership<\/span>\n      <\/div>\n      <div class=\"rpd__visual\">\n        <svg viewBox=\"0 0 400 320\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\">\n          <rect width=\"400\" height=\"320\" rx=\"20\" fill=\"#F9F5FF\"\/>\n\n          <!-- center hub -->\n          <circle class=\"d-ring\" cx=\"200\" cy=\"160\" r=\"12\" stroke=\"#7B2D8B\" stroke-width=\"2\"\/>\n          <circle class=\"d-ring\" cx=\"200\" cy=\"160\" r=\"12\" stroke=\"#7B2D8B\" stroke-width=\"1.5\"\/>\n          <circle class=\"d-ring\" cx=\"200\" cy=\"160\" r=\"12\" stroke=\"#7B2D8B\" stroke-width=\"1\"\/>\n          <circle cx=\"200\" cy=\"160\" r=\"14\" fill=\"#7B2D8B\"\/>\n          <text x=\"200\" y=\"164\" font-family=\"DM Sans,sans-serif\" font-size=\"9\" font-weight=\"700\" fill=\"white\" text-anchor=\"middle\">LIVE<\/text>\n\n          <!-- connection lines -->\n          <line class=\"d-line\" x1=\"200\" y1=\"146\" x2=\"200\" y2=\"72\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n          <line class=\"d-line\" x1=\"186\" y1=\"153\" x2=\"110\" y2=\"110\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n          <line class=\"d-line\" x1=\"186\" y1=\"168\" x2=\"110\" y2=\"220\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n          <line class=\"d-line\" x1=\"214\" y1=\"153\" x2=\"290\" y2=\"110\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n\n          <!-- connected nodes -->\n          <g class=\"d-node\">\n            <rect x=\"152\" y=\"44\" width=\"96\" height=\"36\" rx=\"8\" fill=\"white\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n            <text x=\"200\" y=\"66\" font-family=\"DM Sans,sans-serif\" font-size=\"9\" font-weight=\"600\" fill=\"#4B5563\" text-anchor=\"middle\">Infrastructure<\/text>\n          <\/g>\n          <g class=\"d-node\">\n            <rect x=\"55\" y=\"90\" width=\"72\" height=\"36\" rx=\"8\" fill=\"white\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n            <text x=\"91\" y=\"112\" font-family=\"DM Sans,sans-serif\" font-size=\"9\" font-weight=\"600\" fill=\"#4B5563\" text-anchor=\"middle\">CRM \/ ERP<\/text>\n          <\/g>\n          <g class=\"d-node\">\n            <rect x=\"55\" y=\"202\" width=\"72\" height=\"36\" rx=\"8\" fill=\"white\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n            <text x=\"91\" y=\"224\" font-family=\"DM Sans,sans-serif\" font-size=\"9\" font-weight=\"600\" fill=\"#4B5563\" text-anchor=\"middle\">Data Lake<\/text>\n          <\/g>\n          <g class=\"d-node\">\n            <rect x=\"270\" y=\"90\" width=\"72\" height=\"36\" rx=\"8\" fill=\"white\" stroke=\"#DDD6FE\" stroke-width=\"1.5\"\/>\n            <text x=\"306\" y=\"112\" font-family=\"DM Sans,sans-serif\" font-size=\"9\" font-weight=\"600\" fill=\"#4B5563\" text-anchor=\"middle\">API Layer<\/text>\n          <\/g>\n\n          <!-- status badge -->\n          <rect x=\"252\" y=\"210\" width=\"112\" height=\"52\" rx=\"10\" fill=\"#7B2D8B\"\/>\n          <text x=\"308\" y=\"232\" font-family=\"DM Sans,sans-serif\" font-size=\"8\" font-weight=\"700\" fill=\"rgba(255,255,255,0.55)\" text-anchor=\"middle\" letter-spacing=\"1.5\">UPTIME<\/text>\n          <text x=\"308\" y=\"251\" font-family=\"DM Sans,sans-serif\" font-size=\"18\" font-weight=\"900\" fill=\"white\" text-anchor=\"middle\">99.9%<\/text>\n        <\/svg>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<script>\n(function() {\n  var sections = document.querySelectorAll('.rpd__section');\n  if (window.innerWidth <= 900) {\n    sections.forEach(function(s) { s.classList.add('is-visible'); });\n    return;\n  }\n  var obs = new IntersectionObserver(function(entries) {\n    entries.forEach(function(e) {\n      if (e.isIntersecting) { e.target.classList.add('is-visible'); }\n    });\n  }, { threshold: 0.2 });\n  sections.forEach(function(s) { obs.observe(s); });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e2a9490 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"e2a9490\" 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-md\" href=\"#elementor-action%3Aaction%3Dpopup%3Aopen%26settings%3DeyJpZCI6IjM1MyIsInRvZ2dsZSI6dHJ1ZX0%3D\">\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\">Book a 30 minute strategy call<\/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\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-19e318ee e-flex e-con-boxed e-con e-parent\" data-id=\"19e318ee\" 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-2518e78a elementor-widget elementor-widget-html\" data-id=\"2518e78a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>\n(() => {\n  const section = document.querySelector('.neo-scrollbg');\n  if (!section) return;\n\n  const video = section.querySelector('video.neoVideo');\n  if (!video) return;\n\n  video.pause();\n\n  const clamp = (v, min, max) => Math.min(Math.max(v, min), max);\n\n  let targetTime = 0;\n  let currentTime = 0;\n  let last = 0;\n  const FPS = 30;                \/\/ prova 24 o 30\n  const FRAME = 1000 \/ FPS;\n  const SMOOTH = 0.18;           \/\/ 0.12-0.25 (pi\u00f9 alto = pi\u00f9 \u201cmorbido\u201d ma pi\u00f9 lag)\n\n  function computeTarget() {\n    const rect = section.getBoundingClientRect();\n    const vh = window.innerHeight;\n    const raw = (vh - rect.top) \/ (vh + rect.height);\n    const progress = clamp(raw, 0, 1);\n\n    if (isFinite(video.duration) && video.duration > 0) {\n      targetTime = progress * video.duration;\n    }\n  }\n\n  function tick(ts) {\n    if (ts - last >= FRAME) {\n      last = ts;\n\n      \/\/ easing verso il target\n      currentTime += (targetTime - currentTime) * SMOOTH;\n\n      \/\/ evita micro-aggiornamenti inutili\n      if (Math.abs(video.currentTime - currentTime) > 0.02) {\n        video.currentTime = currentTime;\n      }\n    }\n    requestAnimationFrame(tick);\n  }\n\n  function onScroll() { computeTarget(); }\n  function onResize() { computeTarget(); }\n\n  video.addEventListener('loadedmetadata', () => {\n    computeTarget();\n    currentTime = video.currentTime || 0;\n    requestAnimationFrame(tick);\n  });\n\n  window.addEventListener('scroll', onScroll, { passive: true });\n  window.addEventListener('resize', onResize);\n})();\n<\/script>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function () {\n  const markers = document.querySelectorAll('.neo-eyebrow-marker');\n\n  function updateMarkerProgress() {\n    markers.forEach(el => {\n      const rect = el.getBoundingClientRect();\n      const windowHeight = window.innerHeight;\n\n      \/\/ Inizio effetto a 25% viewport, fine a 55%\n      const start = windowHeight * 0.75;\n      const end = windowHeight * 0.45;\n\n      const progress = 1 - (rect.top - end) \/ (start - end);\n      const clamped = Math.min(Math.max(progress, 0), 1);\n      el.style.setProperty('--marker-progress', clamped.toFixed(3));\n    });\n  }\n\n  window.addEventListener('scroll', updateMarkerProgress);\n  window.addEventListener('resize', updateMarkerProgress);\n  updateMarkerProgress(); \/\/ iniziale\n});\n<\/script>\n\n<script>\n    document.addEventListener(\"scroll\", () => {\n  document.querySelectorAll(\".neo-scroll-color\").forEach(el => {\n    const rect = el.getBoundingClientRect();\n    const vh = window.innerHeight;\n\n    const start = vh * 0.75;\n    const end = vh * 0.45;\n\n    let progress = 1 - (rect.top - end) \/ (start - end);\n    progress = Math.min(Math.max(progress, 0), 1);\n\n    el.style.setProperty(\"--progress\", progress.toFixed(3));\n  });\n});\n<\/script>\n\n<script>\n(function() {\n  var obs = new IntersectionObserver(function(entries) {\n    entries.forEach(function(e) {\n      if (e.isIntersecting) e.target.classList.add('is-visible');\n    });\n  }, { threshold: 0.15 });\n  document.querySelectorAll('.reveal-up').forEach(function(el) {\n    obs.observe(el);\n  });\n})();\n<\/script>\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\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","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-17083","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Rapid Prototyping - Neodata Group S.r.l<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/neodatagroup.ai\/it\/rapid-prototyping\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rapid Prototyping - Neodata Group S.r.l\" \/>\n<meta property=\"og:url\" content=\"https:\/\/neodatagroup.ai\/it\/rapid-prototyping\/\" \/>\n<meta property=\"og:site_name\" content=\"Neodata Group S.r.l\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-14T09:51:36+00:00\" \/>\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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/neodatagroup.ai\\\/it\\\/rapid-prototyping\\\/\",\"url\":\"https:\\\/\\\/neodatagroup.ai\\\/it\\\/rapid-prototyping\\\/\",\"name\":\"Rapid Prototyping - Neodata Group S.r.l\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/neodatagroup.ai\\\/#website\"},\"datePublished\":\"2026-05-14T09:49:50+00:00\",\"dateModified\":\"2026-05-14T09:51:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/neodatagroup.ai\\\/it\\\/rapid-prototyping\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/neodatagroup.ai\\\/it\\\/rapid-prototyping\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/neodatagroup.ai\\\/it\\\/rapid-prototyping\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/neodatagroup.ai\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rapid Prototyping\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/neodatagroup.ai\\\/#website\",\"url\":\"https:\\\/\\\/neodatagroup.ai\\\/\",\"name\":\"Neodata Group S.r.l\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/neodatagroup.ai\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/neodatagroup.ai\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/neodatagroup.ai\\\/#organization\",\"name\":\"Neodata Group S.r.l\",\"url\":\"https:\\\/\\\/neodatagroup.ai\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/neodatagroup.ai\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/neodatagroup.ai\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo_neodata-2.svg\",\"contentUrl\":\"https:\\\/\\\/neodatagroup.ai\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logo_neodata-2.svg\",\"width\":207,\"height\":56,\"caption\":\"Neodata Group S.r.l\"},\"image\":{\"@id\":\"https:\\\/\\\/neodatagroup.ai\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Rapid Prototyping - Neodata Group S.r.l","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:\/\/neodatagroup.ai\/it\/rapid-prototyping\/","og_locale":"it_IT","og_type":"article","og_title":"Rapid Prototyping - Neodata Group S.r.l","og_url":"https:\/\/neodatagroup.ai\/it\/rapid-prototyping\/","og_site_name":"Neodata Group S.r.l","article_modified_time":"2026-05-14T09:51:36+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/neodatagroup.ai\/it\/rapid-prototyping\/","url":"https:\/\/neodatagroup.ai\/it\/rapid-prototyping\/","name":"Rapid Prototyping - Neodata Group S.r.l","isPartOf":{"@id":"https:\/\/neodatagroup.ai\/#website"},"datePublished":"2026-05-14T09:49:50+00:00","dateModified":"2026-05-14T09:51:36+00:00","breadcrumb":{"@id":"https:\/\/neodatagroup.ai\/it\/rapid-prototyping\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/neodatagroup.ai\/it\/rapid-prototyping\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/neodatagroup.ai\/it\/rapid-prototyping\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/neodatagroup.ai\/"},{"@type":"ListItem","position":2,"name":"Rapid Prototyping"}]},{"@type":"WebSite","@id":"https:\/\/neodatagroup.ai\/#website","url":"https:\/\/neodatagroup.ai\/","name":"Neodata Group S.r.l","description":"","publisher":{"@id":"https:\/\/neodatagroup.ai\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/neodatagroup.ai\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/neodatagroup.ai\/#organization","name":"Neodata Group S.r.l","url":"https:\/\/neodatagroup.ai\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/neodatagroup.ai\/#\/schema\/logo\/image\/","url":"https:\/\/neodatagroup.ai\/wp-content\/uploads\/2026\/04\/logo_neodata-2.svg","contentUrl":"https:\/\/neodatagroup.ai\/wp-content\/uploads\/2026\/04\/logo_neodata-2.svg","width":207,"height":56,"caption":"Neodata Group S.r.l"},"image":{"@id":"https:\/\/neodatagroup.ai\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/neodatagroup.ai\/it\/wp-json\/wp\/v2\/pages\/17083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/neodatagroup.ai\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/neodatagroup.ai\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/neodatagroup.ai\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/neodatagroup.ai\/it\/wp-json\/wp\/v2\/comments?post=17083"}],"version-history":[{"count":7,"href":"https:\/\/neodatagroup.ai\/it\/wp-json\/wp\/v2\/pages\/17083\/revisions"}],"predecessor-version":[{"id":17090,"href":"https:\/\/neodatagroup.ai\/it\/wp-json\/wp\/v2\/pages\/17083\/revisions\/17090"}],"wp:attachment":[{"href":"https:\/\/neodatagroup.ai\/it\/wp-json\/wp\/v2\/media?parent=17083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}