PageSourceSearch

https://re-twin.webflow.io/

html re-twin.webflow.io collected 2026-10-03 13:38:22 UTC 174,544 bytes, 2,304 lines download raw bytes

1<!DOCTYPE html><!-- This site was created in Webflow. https://webflow.com --><!-- Last Published: Thu Oct 01 2026 11:51:23 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="re-twin.webflow.io" data-wf-page="69d32cb5aba469d7fb2a1b21" data-wf-site="69d32cb2aba469d7fb2a1ab8" lang="en"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>BESS Business Case &amp; Revenue Analytics Platform | Re-Twin Energy</title><link rel="alternate" hrefLang="x-default" href="https://re-twin.webflow.io/"/><link rel="alternate" hrefLang="en" href="https://re-twin.webflow.io/"/><link rel="alternate" hrefLang="de-DE" href="https://re-twin.webflow.io/de"/><link rel="alternate" hrefLang="es-ES" href="https://re-twin.webflow.io/es"/><meta content="Forecast BESS revenue and returns with Re-Twin&#x27;s AI digital twin. Evaluate the business case, benchmark performance, and find your most profitable setup." name="description"/><meta content="BESS Business Case &amp; Revenue Analytics Platform | Re-Twin Energy" property="og:title"/><meta content="Forecast BESS revenue and returns with Re-Twin&#x27;s AI digital twin. Evaluate the business case, benchmark performance, and find your most profitable setup." property="og:description"/><meta content="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6aa1662ce7d6dfa92e77451a_en%20-%20home.png" property="og:image"/><meta content="BESS Business Case &amp; Revenue Analytics Platform | Re-Twin Energy" name="twitter:title"/><meta content="Forecast BESS revenue and returns with Re-Twin&#x27;s AI digital twin. Evaluate the business case, benchmark performance, and find your most profitable setup." name="twitter:description"/><meta content="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6aa1662ce7d6dfa92e77451a_en%20-%20home.png" name="twitter:image"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="Webflow" name="generator"/><link href="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/css/re-twin.webflow.shared.9d5de96cd.min.css" rel="stylesheet" type="text/css" integrity="sha384-nV3pbNuV+5ZZkB26IMCBaABO4d09/qWcDGCKF7FdrL70XzdFBniUEjCziKUvp6mU" crossorigin="anonymous"/><link href="https://fonts.googleapis.com" rel="preconnect"/><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin="anonymous"/>
1<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js" type="text/javascript"></script>
1<script type="text/javascript">WebFont.load({  google: {    families: ["Montserrat:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic","IBM Plex Sans:300,400,500,600,700"]  }});</script>
1<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
1<link href="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a44ad287667e225cc506104_256%20px%20site%20icon.png" rel="icon" type="image/png" sizes="32x32" media="(prefers-color-scheme: light)"/><link href="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a44ad287667e225cc506104_256%20px%20site%20icon.png" rel="icon" type="image/png" sizes="32x32" media="(prefers-color-scheme: dark)"/><link href="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a44ad284900e705f00dca88_256%20px%20site%20icon.png" rel="icon" type="image/png" sizes="48x48"/><link href="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a44ad289562153f7bca621c_256%20px%20site%20icon.png" rel="apple-touch-icon" sizes="180x180"/><link href="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a44ad286f09565a4d047327_256%20px%20site%20icon.png" rel="icon" type="image/png" sizes="192x192"/><link href="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a44ad28a992163d1f6c4a35_256%20px%20site%20icon.png" rel="icon" type="image/png" sizes="512x512"/>
1<script type="application/ld+json">
2{
3  "@context": "https://schema.org",
4  "@graph": [
5    {
6      "@type": "Organization",
7      "@id": "https://re-twin.energy/#organization",
8      "name": "Re-Twin Energy",
9      "legalName": "Re-Twin Energy GmbH",
10      "url": "https://re-twin.energy/",
11      "logo": {
12        "@type": "ImageObject",
13        "url": "https://re-twin.energy/images/logo.png",
14        "width": 512,
15        "height": 512
16      },
17      "description": "Re-Twin Energy is the AI-powered digital twin platform for evaluating, benchmarking, and optimizing the profitability of battery energy storage systems (BESS).",
18      "foundingDate": "2023",
19      "sameAs": [
20        "https://www.linkedin.com/company/re-twin-energy",
21        "https://theorg.com/org/re-twin-energy"
22      ],
23      "contactPoint": {
24        "@type": "ContactPoint",
25        "contactType": "sales",
26        "email": "[email protected]",
27        "telephone": "+49-162-5926239",
28        "availableLanguage": ["en", "de", "es"]
29      }
30    },
31    {
32      "@type": "WebSite",
33      "@id": "https://re-twin.energy/#website",
34      "url": "https://re-twin.energy/",
35      "name": "Re-Twin Energy",
36      "publisher": { "@id": "https://re-twin.energy/#organization" },
37      "inLanguage": "en"
38    },
39    {
40      "@type": "SoftwareApplication",
41      "@id": "https://re-twin.energy/#software",
42      "name": "Re-Twin Energy Platform",
43      "url": "https://re-twin.energy/",
44      "applicationCategory": "BusinessApplication",
45      "operatingSystem": "Web-based",
46      "description": "AI digital twin platform that models battery energy storage (BESS) projects to forecast revenue, evaluate the business case, and benchmark performance across day-ahead, FCR, and aFRR markets.",
47      "featureList": [
48        "BESS revenue forecasting and investment analysis",
49        "Live benchmarking and virtual trading",
50        "Scenario comparison and optimization",
51        "Digital twin modeling of standalone and co-located storage"
52      ],
53      "publisher": { "@id": "https://re-twin.energy/#organization" },
54      "offers": {
55        "@type": "Offer",
56        "url": "https://re-twin.energy/pricing",
57        "availability": "https://schema.org/InStock"
58      }
59    },
60    {
61      "@type": "FAQPage",
62      "@id": "https://re-twin.energy/#faq",
63      "inLanguage": "en",
64      "mainEntity": [
65        {
66          "@type": "Question",
67          "name": "How to describe Re-Twin Energy in one sentence?",
68          "acceptedAnswer": {
69            "@type": "Answer",
70            "text": "Re-Twin is your AI-powered digital energy analyst for evaluating, simulating, and optimizing risk vs. return for battery assets."
71          }
72        },
73        {
74          "@type": "Question",
75          "name": "What is Re-Twin Energy's platform?",
76          "acceptedAnswer": {
77            "@type": "Answer",
78            "text": "Re-Twin Energy is an AI digital twin platform that models battery energy storage systems (BESS) to forecast revenue, evaluate the investment business case, and benchmark performance — replacing static Excel models with a single consistent methodology."
79          }
80        },
81        {
82          "@type": "Question",
83          "name": "What makes Re-Twin Energy a one-stop-shop?",
84          "acceptedAnswer": {
85            "@type": "Answer",
86            "text": "Re-Twin covers the entire BESS lifecycle in one platform — from investment analysis and business case modeling to live benchmarking — combining historical backtests, live simulation, and long-term forecasts up to 2050 within one integrated approach."
87          }
88        },
89        {
90          "@type": "Question",
91          "name": "What is a digital twin?",
92          "acceptedAnswer": {
93            "@type": "Answer",
94            "text": "A digital twin is a 1:1 virtual representation of a physical energy storage asset. Re-Twin's digital twins evolve alongside your project, using real market data to simulate configurations, strategies, and revenue outcomes before you commit capital."
95          }
96        },
97        {
98          "@type": "Question",
99          "name": "Who can benefit from the Re-Twin Energy platform?",
100          "acceptedAnswer": {
101            "@type": "Answer",
102            "text": "BESS developers, asset owners, investors, and municipal utilities (Stadtwerke) use Re-Twin to make confident, financing-ready investment decisions backed by transparent, project-specific analysis."
103          }
104        },
105        {
106          "@type": "Question",
107          "name": "What energy storage systems are included?",
108          "acceptedAnswer": {
109            "@type": "Answer",
110            "text": "Re-Twin models standalone BESS as well as co-located configurations including PV + BESS, Wind + BESS, and Consumer + BESS."
111          }
112        },
113        {
114          "@type": "Question",
115          "name": "What does the Investment Analysis module do?",
116          "acceptedAnswer": {
117            "@type": "Answer",
118            "text": "The Investment Analysis module simulates your project in real power markets to deliver revenue forecasts, compare BESS sizes, markets, and strategies, and identify the most profitable setup for a bankable business case."
119          }
120        },
121        {
122          "@type": "Question",
123          "name": "What is Live Benchmarking?",
124          "acceptedAnswer": {
125            "@type": "Answer",
126            "text": "Live Benchmarking benchmarks your asset's performance against the market and peers to spot missed revenue and continuously improve trading strategies."
127          }
128        },
129        {
130          "@type": "Question",
131          "name": "What type of data does Re-Twin Energy deliver?",
132          "acceptedAnswer": {
133            "@type": "Answer",
134            "text": "Re-Twin delivers transparent, project-specific analytics including revenue forecasts, KPIs, per-market breakdowns, dispatch profiles, and scenario comparisons — with full methodology transparency."
135          }
136        },
137        {
138          "@type": "Question",
139          "name": "In which format is the data downloadable?",
140          "acceptedAnswer": {
141            "@type": "Answer",
142            "text": "Results are provided in easily accessible, downloadable formats so you can integrate them into your own financial models and reports."
143          }
144        },
145        {
146          "@type": "Question",
147          "name": "For which countries is the platform available?",
148          "acceptedAnswer": {
149            "@type": "Answer",
150            "text": "Re-Twin supports multiple European power markets. Contact the team to confirm coverage for your specific country and market."
151          }
152        },
153        {
154          "@type": "Question",
155          "name": "How do I get started?",
156          "acceptedAnswer": {
157            "@type": "Answer",
158            "text": "Sign up on the Re-Twin platform or book a demo, and the team will walk you through a live analysis of a real asset in under 30 minutes."
159          }
160        },
161        {
162          "@type": "Question",
163          "name": "Is training available?",
164          "acceptedAnswer": {
165            "@type": "Answer",
166            "text": "Yes. Re-Twin provides onboarding and training support, along with documentation at docs.re-twin.energy, to help teams get value from the platform quickly."
167          }
168        },
169        {
170          "@type": "Question",
171          "name": "How secure is the platform?",
172          "acceptedAnswer": {
173            "@type": "Answer",
174            "text": "Re-Twin is a secure web-based platform that protects your project data. Contact the team for details on security architecture and compliance."
175          }
176        },
177        {
178          "@type": "Question",
179          "name": "Why choose Re-Twin Energy?",
180          "acceptedAnswer": {
181            "@type": "Answer",
182            "text": "Re-Twin combines an independent benchmark, full methodology transparency, and one consistent approach across backtests, live simulation, and long-term forecasts — delivering results up to 5x faster and up to 50% cheaper than traditional analysis."
183          }
184        }
185      ]
186    }
187  ]
188}
189</script>
189<script>(function(w,i,g){w[g]=w[g]||[];if(typeof w[g].push=='function')w[g].push.apply(w[g],Array.isArray(i)?i:[i]);})(window,['G-ZV916XS2C6'],'google_tags_first_party');</script>
189<script async="" src="/avljl2rk9q5pNjlkMzJjYjJhYmE0NjlkN2ZiMmExYWI4/GXye63f77UGzwjQYm1erVulGl7M"></script>
189<script type="text/javascript">window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('set', 'developer_id.dZGVlNj', true);gtag('set', 'developer_id.dYWYxNW', true);gtag('js', new Date());gtag('config', 'G-ZV916XS2C6');</script>
189<style>
190  :root {
191    --font-from: 20;
192    --font-to: 24;
193    --vw-from: calc(1920 / 100);
194    --vw-to: calc(2400 / 100);
195    --coefficient: calc((var(--font-to) - var(--font-from)) / (var(--vw-to) - var(--vw-from)));
196    --base: calc((var(--font-from) - var(--vw-from) * var(--coefficient)) / 16);
197  }
198
199  html {
200    font-size: calc(var(--base) * 1rem + var(--coefficient) * 1vw);
201  }
202
203  @media screen and (max-width: 1920px) {
204    :root {
205      --font-from: 16;
206      --font-to: 20;
207      --vw-from: calc(1440 / 100);
208      --vw-to: calc(1920 / 100);
209      }
210  }
211
212  @media screen and (max-width: 1440px) {
213    :root {
214      --font-from: 14;
215      --font-to: 18;
216      --vw-from: calc(479 / 100);
217      --vw-to: calc(1440 / 100);
218      }
219  }
220
221  @media screen and (max-width: 479px) {
222    :root {
223      --font-from: 12;
224      --font-to: 16;
225      --vw-from: calc(1 / 100);
226      --vw-to: calc(479 / 100);
227      }
228  }
229</style>
230
231
232<style>
233  .grecaptcha-badge { visibility: hidden; }
234</style>
235
236<script type="text/javascript">
237    (function(c,l,a,r,i,t,y){
238        c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
239        t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
240        y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
241    })(window, document, "clarity", "script", "ofigq8mr9h");
242</script>
242<style>
243  .vcx-card {
244    -webkit-mask-image: -webkit-radial-gradient(white, black);
245    mask-image: radial-gradient(white, black);
246    isolation: isolate;
247  }
248</style>
249
250
251<style>
252/* ============================================================
253   VX VENN — v19.
254   v5 confined the panels inside the stage. v6–v11 do the same for
255   the LABELS. v12 added mobile tap-to-reveal by relocating
256   .vx-panel-top/left/right below the stage. v13 fixed invisible
257   panel text. v14 grid-stacked the three panels in .vx-panel-wrap
258   (grid-area:1/1). v15 fixed a cascade-order bug. v16 fixed the
259   implicit grid column collapsing. v17 fixed a leaked max-width
260   from the desktop rule. v18 pulled the panel up into the venn's
261   dead space with a negative margin.
262   v19: center-aligned the mobile panel text per feedback.
263   ============================================================ */
264.vx-stage{
265  position:relative;
266}
267
268/* ---- circles: RESTING (row) ---- */
269.vx-circle-top,
270.vx-circle-left,
271.vx-circle-right{
272  position:absolute;
273  transform:translate(-50%,-50%);
274  transition:left 1s cubic-bezier(.65,0,.35,1),
275             top 1s cubic-bezier(.65,0,.35,1),
276             border-color .4s ease;
277}
278.vx-circle-top  {left:50%;                     top:50%;}
279.vx-circle-left {left:calc(50% - 16.125rem);   top:50%;}
280.vx-circle-right{left:calc(50% + 16.125rem);   top:50%;}
281
282/* ---- circles: ACTIVE (tight Venn) ---- */
283.vx-stage.vx-on .vx-circle-top  {left:50%;                  top:35%;}
284.vx-stage.vx-on .vx-circle-left {left:calc(50% - 6rem);     top:60%;}
285.vx-stage.vx-on .vx-circle-right{left:calc(50% + 6rem);     top:60%;}
286
287/* purple fill inside each circle at rest, fades on activate */
288.vx-fill{position:absolute;inset:0;border-radius:50%;pointer-events:none;
289  background:radial-gradient(ellipse at center,rgba(109,40,217,.7) 0%,rgba(76,29,149,.4) 45%,transparent 72%);
290  opacity:1;transition:opacity .8s ease;}
291.vx-stage.vx-on .vx-fill{opacity:0;}
292
293/* ---- labels ---- */
294.vx-label-top,
295.vx-label-left,
296.vx-label-right{
297  position:absolute;
298  transform:translate(-50%,-50%);
299  transition:left 1s cubic-bezier(.65,0,.35,1),
300             top 1s cubic-bezier(.65,0,.35,1),
301             color .3s ease;
302  max-width:min(14rem, 40vw);
303  overflow-wrap:break-word;
304}
305.vx-label-top  {left:50%;                   top:50%;}
306.vx-label-left {left:calc(50% - 16.125rem); top:50%;}
307.vx-label-right{left:calc(50% + 16.125rem); top:50%;}
308.vx-stage.vx-on .vx-label-top  {left:50%;                   top:23%;}
309.vx-stage.vx-on .vx-label-left {left:calc(50% - 10.625rem); top:67%;}
310.vx-stage.vx-on .vx-label-right{left:calc(50% + 10.625rem); top:67%;}
311
312/* center label in the lens */
313.vx-label-center{
314  position:absolute;left:50%;top:52%;
315  transform:translate(-50%,-50%);
316  opacity:0;transition:opacity .3s ease,color .3s ease;
317  max-width:min(12rem, 50vw);
318  text-align:center;
319  overflow-wrap:break-word;
320}
321.vx-stage.vx-on .vx-label-center{opacity:1;color:#fff;transition:opacity .4s ease .7s;}
322
323/* ---- glow ---- */
324.vx-glow{
325  position:absolute;left:50%;top:52%;
326  width:9.375rem;height:9.375rem;
327  transform:translate(-50%,-50%);
328  opacity:0;filter:blur(10px);pointer-events:none;
329  background:radial-gradient(circle,rgba(139,92,246,.95) 0%,rgba(109,40,217,.6) 45%,transparent 72%);
330  transition:opacity .5s ease,left .6s cubic-bezier(.65,0,.35,1),top .6s cubic-bezier(.65,0,.35,1),width .6s ease,height .6s ease;
331}
332.vx-stage.vx-on .vx-glow{opacity:1;transition:opacity .5s ease .6s,left .6s cubic-bezier(.65,0,.35,1),top .6s cubic-bezier(.65,0,.35,1),width .6s ease,height .6s ease;}
333.vx-stage.vx-on[data-active="center"] .vx-glow{left:50%;               top:52%;width:9.375rem;height:9.375rem;}
334.vx-stage.vx-on[data-active="top"]    .vx-glow{left:50%;               top:35%;width:21.25rem;height:21.25rem;}
335.vx-stage.vx-on[data-active="left"]   .vx-glow{left:calc(50% - 6rem);  top:60%;width:21.25rem;height:21.25rem;}
336.vx-stage.vx-on[data-active="right"]  .vx-glow{left:calc(50% + 6rem);  top:60%;width:21.25rem;height:21.25rem;}
337
338/* active heading white, active circle border white */
339.vx-stage.vx-on[data-active="top"]   .vx-label-top   {color:#fff;}
340.vx-stage.vx-on[data-active="left"]  .vx-label-left  {color:#fff;}
341.vx-stage.vx-on[data-active="right"] .vx-label-right {color:#fff;}
342.vx-stage.vx-on[data-active="top"]   .vx-circle-top  {border-color:#fff;}
343.vx-stage.vx-on[data-active="left"]  .vx-circle-left {border-color:#fff;}
344.vx-stage.vx-on[data-active="right"] .vx-circle-right{border-color:#fff;}
345
346/* ============================================================
347   PANELS — confined inside the stage, anchored like circles.
348   (Desktop/wide only — ≥1101px. Below that, JS relocates these
349   same elements into .vx-panel-wrap after the stage; see the
350   ≤1100px block.)
351   ============================================================ */
352.vx-panel-top,
353.vx-panel-left,
354.vx-panel-right{
355  position:absolute !important;
356  right:auto !important;
357  bottom:auto !important;
358  height:auto !important;
359  margin:0 !important;
360  opacity:0;
361  pointer-events:none;
362  transition:opacity .35s ease;
363  width:auto !important;
364  min-width:0 !important;
365  overflow-wrap:break-word;
366  font-size:clamp(15px,1.05vw,19px);
367  line-height:1.45;
368}
369.vx-panel-top *,
370.vx-panel-left *,
371.vx-panel-right *{
372  width:100% !important;
373  max-width:none !important;
374  display:block !important;
375}
376.vx-panel-top{
377  left:calc(50% + 13.4375rem) !important;
378  top:20% !important;
379  transform:translateY(-50%);
380  text-align:left;
381  max-width:min(24rem, calc(50% - 14.9375rem)) !important;
382}
383.vx-panel-left{
384  left:calc(50% - 18.75rem) !important;
385  top:calc(60% + 10.625rem) !important;
386  transform:translate(-100%,-100%);
387  text-align:right;
388  max-width:min(26rem, calc(50% - 20.25rem)) !important;
389}
390.vx-panel-right{
391  left:calc(50% + 18.75rem) !important;
392  top:60% !important;
393  transform:translateY(-50%);
394  text-align:left;
395  max-width:min(24rem, calc(50% - 20.25rem)) !important;
396}
397.vx-stage.vx-on[data-active="top"]   .vx-panel-top  {opacity:1;}
398.vx-stage.vx-on[data-active="left"]  .vx-panel-left {opacity:1;}
399.vx-stage.vx-on[data-active="right"] .vx-panel-right{opacity:1;}
400
401/* ---- smaller desktop (≤1440) ---- */
402@media (max-width:1440px){
403  .vx-circle-left, .vx-label-left {left:calc(50% - 14.375rem);}
404  .vx-circle-right,.vx-label-right{left:calc(50% + 14.375rem);}
405  .vx-panel-top  {left:calc(50% + 12.8125rem) !important;max-width:min(22rem, calc(50% - 14.3125rem)) !important;}
406  .vx-panel-left {left:calc(50% - 18.125rem) !important;top:calc(60% + 10.625rem) !important;max-width:min(24rem, calc(50% - 19.625rem)) !important;}
407  .vx-panel-right{left:calc(50% + 18.125rem) !important;max-width:min(22rem, calc(50% - 19.625rem)) !important;}
408}
409
410/* .vx-panel-wrap is created by JS. Inert above 1100px (empty and
411   hidden); the ≤1100px block below flips it to display:grid. This
412   MUST come before that media block — equal-specificity rules
413   resolve by source order, media query or not. */
414.vx-panel-wrap{display:none;}
415
416/* ---- below 1100: relocated-panel layout.
417   .vx-panel-wrap is created by JS right after .vx-stage and holds
418   all three panels stacked in the SAME grid cell (grid-area:1/1),
419   so the box's height is always reserved at the tallest panel's
420   height — tapping a circle only crossfades opacity, no display
421   toggle, no layout shift. The plain "hide by default" rule below
422   is only a no-JS fallback (in case relocation never runs). ---- */
423@media (max-width:1100px){
424  .vx-panel-top,.vx-panel-left,.vx-panel-right{display:none !important;}
425
426  .vx-panel-wrap{
427    display:grid;
428    grid-template-columns:minmax(0,1fr);
429    width:100%;
430    max-width:30rem;
431    margin:-3rem auto 0;
432    position:relative;
433    z-index:2;
434  }
435  .vx-panel-wrap > .vx-panel-top,
436  .vx-panel-wrap > .vx-panel-left,
437  .vx-panel-wrap > .vx-panel-right{
438    grid-area:1 / 1;
439    display:block !important;
440    position:static !important;
441    left:auto !important;
442    top:auto !important;
443    right:auto !important;
444    bottom:auto !important;
445    transform:none !important;
446    width:100% !important;
447    min-width:0 !important;
448    max-width:100% !important;
449    padding:.875rem 1rem !important;
450    box-sizing:border-box;
451    background:rgba(255,255,255,.05);
452    border-radius:.875rem;
453    text-align:center !important; /* v19: center-aligned per feedback */
454    font-size:15px !important;
455    line-height:1.5 !important;
456    color:#e8e6f0 !important;
457    opacity:0;
458    pointer-events:none;
459    transition:opacity .3s ease;
460  }
461  .vx-stage.vx-on[data-active="top"]   ~ .vx-panel-wrap > .vx-panel-top,
462  .vx-stage.vx-on[data-active="left"]  ~ .vx-panel-wrap > .vx-panel-left,
463  .vx-stage.vx-on[data-active="right"] ~ .vx-panel-wrap > .vx-panel-right{
464    opacity:1 !important;
465    pointer-events:auto !important;
466  }
467}
468
469/* ---- mobile (≤767) ---- */
470@media (max-width:767px){
471  .vx-circle-left, .vx-label-left {left:calc(50% - 155px);}
472  .vx-circle-right,.vx-label-right{left:calc(50% + 155px);}
473  .vx-stage.vx-on .vx-circle-top  {top:38%;}
474  .vx-stage.vx-on .vx-circle-left {left:calc(50% - 60px);top:62%;}
475  .vx-stage.vx-on .vx-circle-right{left:calc(50% + 60px);top:62%;}
476  .vx-stage.vx-on .vx-label-top  {top:27%;}
477
478  /* v10: top matches the circles' own top:62% → vertically centered
479     CHANGED v11: anchor 72px → 96px (clears the lens),
480                  cap 7.5rem → 5.5rem (forces two-line wrap) */
481  .vx-stage.vx-on .vx-label-left{
482    left:calc(50% - 96px); right:auto;
483    transform:translate(-50%,-50%);
484    text-align:center;
485    max-width:min(24vw, 5.5rem);
486    top:62%;
487  }
488  .vx-stage.vx-on .vx-label-right{
489    left:calc(50% + 96px); right:auto;
490    transform:translate(-50%,-50%);
491    text-align:center;
492    max-width:min(24vw, 5.5rem);
493    top:62%;
494  }
495  .vx-stage.vx-on .vx-label-top{
496    left:50%;
497    transform:translate(-50%,-50%);
498    text-align:center;
499    max-width:52vw;
500  }
501
502  .vx-label-center{top:54%;}
503  .vx-glow{top:54%;width:95px;height:95px;}
504  .vx-stage.vx-on[data-active="center"] .vx-glow{top:54%;width:95px;height:95px;}
505  .vx-stage.vx-on[data-active="top"]    .vx-glow{top:38%;width:210px;height:210px;}
506  .vx-stage.vx-on[data-active="left"]   .vx-glow{left:calc(50% - 60px);top:62%;width:210px;height:210px;}
507  .vx-stage.vx-on[data-active="right"]  .vx-glow{left:calc(50% + 60px);top:62%;width:210px;height:210px;}
508}
509
510/* ---- small phones (≤400) — geometry in vw so it reaches 320 ---- */
511@media (max-width:400px){
512  .vx-label-top,.vx-label-left,.vx-label-right,.vx-label-center{
513    font-size:clamp(11px,3.2vw,14px);
514    line-height:1.25;
515    overflow-wrap:break-word;
516  }
517  /* CHANGED v11: anchor 20vw → 26vw, cap 26vw → 22vw */
518  .vx-stage.vx-on .vx-label-left{
519    left:calc(50% - 26vw); right:auto;
520    transform:translate(-50%,-50%);
521    text-align:center; max-width:22vw; top:60%;
522  }
523  .vx-stage.vx-on .vx-label-right{
524    left:calc(50% + 26vw); right:auto;
525    transform:translate(-50%,-50%);
526    text-align:center; max-width:22vw; top:60%;
527  }
528  .vx-stage.vx-on .vx-label-top{
529    left:50%; transform:translate(-50%,-50%);
530    text-align:center; max-width:52vw; top:26%;
531  }
532  .vx-label-center{top:52%;max-width:46vw;}
533
534  .vx-circle-left, .vx-label-left  {left:calc(50% - 30vw);}
535  .vx-circle-right,.vx-label-right {left:calc(50% + 30vw);}
536  .vx-stage.vx-on .vx-circle-top  {left:50%;              top:36%;}
537  .vx-stage.vx-on .vx-circle-left {left:calc(50% - 13vw); top:60%;}
538  .vx-stage.vx-on .vx-circle-right{left:calc(50% + 13vw); top:60%;}
539
540  .vx-glow{top:52%;width:24vw;height:24vw;
540filter:blur(7px);}
541  .vx-stage.vx-on[data-active="center"] .vx-glow{left:50%;              top:52%;width:24vw;height:24vw;}
542  .vx-stage.vx-on[data-active="top"]    .vx-glow{left:50%;              top:36%;width:52vw;height:52vw;}
543  .vx-stage.vx-on[data-active="left"]   .vx-glow{left:calc(50% - 13vw); top:60%;width:52vw;height:52vw;}
544  .vx-stage.vx-on[data-active="right"]  .vx-glow{left:calc(50% + 13vw); top:60%;width:52vw;height:52vw;}
545
546  .vx-panel-wrap{margin-top:-4.5rem;}
547}
548
549/* ---- large screens (≥1441): trim blank space below the venn ---- */
550@media (min-width:1441px){
551  .vx-stage{
552    max-height:46rem;
553  }
554}
555</style>
556
557
558<style>
559  .hero-graph {
560    transition: opacity 0.35s ease;
561  }
562</style>
563
564
565
566
567
568
569
570
571<style>
572.hiw_tabs-menu{display:flex!important;flex-direction:column!important;position:relative!important}
573.hiw_tabs-content{display:grid!important;position:relative!important}
574.hiw_tab-link{position:relative!important;z-index:1!important;background:transparent!important;display:block!important;text-decoration:none!important;cursor:pointer!important;transition:background-color .35s ease,padding .25s ease,color .25s ease!important}
575.hiw_tab-link::before{display:none!important}
576.hiw_tab-link.w--current{background:var(--hiw-accent-light,#f3eeff)!important}
577.hiw_tab-top{display:flex!important;align-items:center!important;gap:12px!important}
578.hiw_tab-number{display:none!important}
579.hiw_tab-icon{display:none!important;flex-shrink:0!important;width:32px!important;height:32px!important;object-fit:contain!important;border-radius:8px!important;background-color:rgba(108,71,230,0.15)!important;padding:4px!important;box-sizing:border-box!important}
580.hiw_tab-link.w--current .hiw_tab-icon{display:block!important}
581.hiw_tab-title{color:var(--hiw-text-muted,#6b6b6b)!important;transition:color .3s ease,font-weight .3s ease!important}
582.hiw_tab-link.w--current .hiw_tab-title{color:var(--hiw-text,#0e0e0e)!important}
583.hiw_tab-desc{max-height:0!important;overflow:hidden!important;opacity:0!important;margin-top:0!important;padding-left:44px!important;color:var(--hiw-text-muted,#6b6b6b)!important;transition:max-height .4s ease,opacity .3s ease,margin-top .3s ease!important}
584.hiw_tab-link.w--current .hiw_tab-desc{max-height:200px!important;opacity:1!important;margin-top:6px!important}
585.hiw_tab-pane{grid-column:1/-1!important;grid-row:1/-1!important;opacity:0!important;visibility:hidden!important;pointer-events:none!important;transition:opacity .4s ease,visibility .4s ease!important}
586.hiw_tab-pane.w--tab-active{opacity:1!important;visibility:visible!important;pointer-events:auto!important}
587@media (max-width:767px){
588  .hiw_tabs-grid{grid-template-columns:1fr!important;gap:0!important}
589  .hiw_tabs-menu,.hiw_tabs-content{display:contents!important}
590  .hiw_tabs-menu>*{display:none!important}
591  .hiw_tab-pane{grid-column:auto!important;grid-row:auto!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important;max-height:none!important;overflow:visible!important;transition:none!important}
592  .hiw_tab-pane[data-w-tab="Tab 1"]{order:1}
593  .hiw_tab-pane[data-w-tab="Tab 2"]{order:2}
594  .hiw_tab-pane[data-w-tab="Tab 3"]{order:3}
595  .hiw_tab-pane[data-w-tab="Tab 4"]{order:4}
596}
597.hiw_tabs-menu::before{content:""!important;position:absolute!important;left:20px!important;top:0!important;bottom:0!important;width:0!important;border-left:1px dashed #c9bff0!important;z-index:0!important;pointer-events:none!important}
598</style>
599
600</head><body><div class="page-wrapper"><code-island data-loader="{&quot;tag&quot;:&quot;FEDERATION&quot;,&quot;val&quot;:{&quot;clientModuleUrl&quot;:&quot;https://code-components.website-files.com/6aba2d496c6b36d02d364b6e%2Fmodule%2Fwf-manifest.json&quot;,&quot;moduleId&quot;:&quot;_6aba2d496c6b36d02d364b6e&quot;,&quot;submoduleId&quot;:&quot;dc9c8dfe-1df7-6aa5-179e-ebea21dd006d&quot;,&quot;exportPath&quot;:&quot;default&quot;,&quot;serverModuleUrl&quot;:&quot;_&quot;}}" data-props="{&quot;enabled&quot;:false,&quot;showEyebrow&quot;:true,&quot;eyebrow&quot;:&quot;&quot;,&quot;message&quot;:&quot;Re-Twin Energy is heading to WindEnergy Hamburg! Meet us at Hall A3, Stand A3.JIU.145 - 22-25.09&quot;,&quot;linkLabel&quot;:&quot;Get in touch&quot;,&quot;link&quot;:{&quot;href&quot;:&quot;https://defiant-fang-0fa.notion.site/8560a7194e5a8339a8f78109f0e60507&quot;,&quot;target&quot;:&quot;_blank&quot;},&quot;
600dismissible&quot;:true,&quot;sticky&quot;:false,&quot;id&quot;:&quot;&quot;}" data-slots="[]" data-hydrate="true" data-webflow-context="{&quot;mode&quot;:&quot;publish&quot;,&quot;interactive&quot;:true,&quot;locale&quot;:&quot;en&quot;}" data-interactive="true" style="display:contents"><template shadowrootmode="open"><link rel="stylesheet" type="text/css" href="https://code-components.website-files.com/6aba2d496c6b36d02d364b6e%2Fmodule%2F46e68302c96cc8d0.css"/><div data-root="true" style="display:contents"><!--$--><!--/$--></div></template></code-island><div class="global-styles w-embed w-script"><style>
601
602/* Make text look crisper and more legible in all browsers */
603body {
604  -webkit-font-smoothing: antialiased;
605  -moz-osx-font-smoothing: grayscale;
606  font-smoothing: antialiased;
607  text-rendering: optimizeLegibility;
608}
609
610/* Focus state style for keyboard navigation for the focusable elements */
611*[tabindex]:focus-visible,
612  input[type="file"]:focus-visible {
613   outline: 0.125rem solid #4d65ff;
614   outline-offset: 0.125rem;
615}
616
617/* Set color style to inherit */
618.inherit-color * {
619    color: inherit;
620}
621
622/* Get rid of top margin on first element in any rich text element */
623.w-richtext > :not(div):first-child, .w-richtext > div:first-child > :first-child {
624  margin-top: 0 !important;
625}
626
627/* Get rid of bottom margin on last element in any rich text element */
628.w-richtext>:last-child, .w-richtext ol li:last-child, .w-richtext ul li:last-child {
629	margin-bottom: 0 !important;
630}
631
632
633/* Make sure containers never lose their center alignment */
634.container-medium,.container-small, .container-large {
635	margin-right: auto !important;
636  margin-left: auto !important;
637}
638
639/* 
640Make the following elements inherit typography styles from the parent and not have hardcoded values. 
641Important: You will not be able to style for example "All Links" in Designer with this CSS applied.
642Uncomment this CSS to use it in the project. Leave this message for future hand-off.
643*/
644/*
645a,
646.w-input,
647.w-select,
648.w-tab-link,
649.w-nav-link,
650.w-dropdown-btn,
651.w-dropdown-toggle,
652.w-dropdown-link {
653  color: inherit;
654  text-decoration: inherit;
655  font-size: inherit;
656}
657*/
658
659/* Apply "..." after 3 lines of text */
660.text-style-3lines {
661	display: -webkit-box;
662	overflow: hidden;
663	-webkit-line-clamp: 3;
664	-webkit-box-orient: vertical;
665}
666
667/* Apply "..." after 2 lines of text */
668.text-style-2lines {
669	display: -webkit-box;
670	overflow: hidden;
671	-webkit-line-clamp: 2;
672	-webkit-box-orient: vertical;
673}
674
675/* These classes are never overwritten */
676.hide {
677  display: none !important;
678}
679
680@media screen and (max-width: 991px) {
681    .hide, .hide-tablet {
682        display: none !important;
683    }
684}
685  @media screen and (max-width: 767px) {
686    .hide-mobile-landscape{
687      display: none !important;
688    }
689}
690  @media screen and (max-width: 479px) {
691    .hide-mobile{
692      display: none !important;
693    }
694}
695 
696.margin-0 {
697  margin: 0rem !important;
698}
699  
700.padding-0 {
701  padding: 0rem !important;
702}
703
704.spacing-clean {
705padding: 0rem !important;
706margin: 0rem !important;
707}
708
709.margin-top {
710  margin-right: 0rem !important;
711  margin-bottom: 0rem !important;
712  margin-left: 0rem !important;
713}
714
715.padding-top {
716  padding-right: 0rem !important;
717  padding-bottom: 0rem !important;
718  padding-left: 0rem !important;
719}
720  
721.margin-right {
722  margin-top: 0rem !important;
723  margin-bottom: 0rem !important;
724  margin-left: 0rem !important;
725}
726
727.padding-right {
728  padding-top: 0rem !important;
729  padding-bottom: 0rem !important;
730  padding-left: 0rem !important;
731}
732
733.margin-bottom {
734  margin-top: 0rem !important;
735  margin-right: 0rem !important;
736  margin-left: 0rem !important;
737}
738
739.padding-bottom {
740  padding-top: 0rem !important;
741  padding-right: 0rem !important;
742  padding-left: 0rem !important;
743}
744
745.margin-left {
746  margin-top: 0rem !important;
747  margin-right: 0rem !important;
748  margin-bottom: 0rem !important;
749}
750  
751.padding-left {
752  padding-top: 0rem !important;
753  padding-right: 0rem !important;
754  padding-bottom: 0rem !important;
755}
756  
757.margin-horizontal {
758  margin-top: 0rem !important;
759  margin-bottom: 0rem !important;
760}
761
762.padding-horizontal {
763  padding-top: 0rem !important;
764  padding-bottom: 0rem !important;
765}
766
767.margin-vertical {
768  margin-right: 0rem !important;
769  margin-left: 0rem !important;
770}
771  
772.padding-vertical {
773  padding-right: 0rem !important;
774  padding-left: 0rem !important;
775}
776
777</style>
778
779
780
781
782<style>
783body:hover .cursor {opacity: 100%;}
784
785.cursor {
786	transform: translate(-50%, -50%);
787	pointer-events: none;
788	position: fixed;
789	opacity: 0%;
790  transition: top 0.3s ease, left 0.3s ease, width 0.3s ease, height 0.3s ease;
791}
792}
793
794}
795</style>
796
797<script>
798$(document).ready(function() {
799    let tricksCursor = document.querySelector('.cursor');
800    window.addEventListener('mousemove', cursor);
801
802    function cursor(e) {
803        tricksCursor.style.top = e.clientY + 'px';
804        tricksCursor.style.left = e.clientX + 'px';
805    }
806
807    // Adjust cursor size and position on hover of elements with the "dynamic-hover" class
808    $('.dynamic-hover').mouseenter(function() {
809        window.removeEventListener("mousemove", cursor);
810
811        var width = $(this).outerWidth();
812        var height = $(this).outerHeight();
813        var tricksTop = $(this).offset().top - $(document).scrollTop();
814        var tricksLeft = $(this).offset().left;
815
816        $('.cursor').css({
817            'top': (tricksTop + height / 2) + 'px',
818            'left': (tricksLeft + width / 2) + 'px',
819            'width': width + 'px',
820            'height': height + 'px'
821        });
822    });
823
824    $('.dynamic-hover').mouseleave(function() {
825        window.addEventListener("mousemove", cursor);
826        $('.cursor').css({
827            'width': '', // Reset to default or original width
828            'height': '' // Reset to default or original height
829        });
830    });
831});
832</script>
832
833
834
835<style>
836  
837
838.section_challenge {
839  --max-radius: 80px;
840  border-radius: var(--max-radius);
841  animation: section-radius linear both;
842  animation-timeline: view();
843}
844
845@media (max-width: 767px) {
846  .section_challenge {
847    --max-radius: 24px;
848  }
849}
850
851@keyframes section-radius {
852  0%   { border-radius: var(--max-radius); }
853  50%  { border-radius: 0; }
854  100% { border-radius: var(--max-radius); }
855}
856
857  </style>
858
859<style>
860  .faq_accordion.active .faq_heading {
861  color: #7B52E6;
862}
863  .faq_icon {
864  font-size: 24px; /* increase this to make it bigger */
865  line-height: 1;
866}
867</style>
868</div><div data-collapse="medium" data-animation="default" data-duration="400" navbar="2" data-easing="ease" data-easing2="ease" role="banner" class="navbar_component w-nav"><div class="padding-global"><div data-reveal-group="" class="navbar_container"><a href="/?r=0" id="w-node-_07eac00c-0b0d-6781-55a9-62c1250c7369-250c7367" aria-current="page" class="navbar_logo-link w-nav-brand w--current"><img width="180" height="Auto" alt="" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d042a7df0c5bf69e17460_Group%201686557473.svg" loading="lazy" class="navbar_logo"/></a><a href="https://app.re-twin.energy/" target="_blank" class="button nav mobile w-button">Try Now</a><nav role="navigation" class="navbar_menu w-nav-menu"><div class="navbar_menu-link-wrapper"><div data-delay="200" data-hover="true" data-dropdown-tag="dropdown1" data-w-id="07eac00c-0b0d-6781-55a9-62c1250c736d" class="navbar_menu-dropdown w-dropdown"><div class="navbar_dropdown-toggle dynamic-hover w-dropdown-toggle"><div>Platform</div><div class="dropdown-chevron w-embed"><svg width=" 100%" height=" 100%" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
869<path fill-rule="evenodd" clip-rule="evenodd" d="M2.55806 6.29544C2.46043 6.19781 2.46043 6.03952 2.55806 5.94189L3.44195 5.058C3.53958 4.96037 3.69787 4.96037 3.7955 5.058L8.00001 9.26251L12.2045 5.058C12.3021 4.96037 12.4604 4.96037 12.5581 5.058L13.4419 5.94189C13.5396 6.03952 13.5396 6.19781 13.4419 6.29544L8.17678 11.5606C8.07915 11.6582 7.92086 11.6582 7.82323 11.5606L2.55806 6.29544Z" fill="currentColor"/>
870</svg></div></div><nav class="navbar_dropdown-wrapper w-dropdown-list"><div class="w-layout-vflex navbar_dropdown-list solution one"><div class="navbar_dropdown-list-internal-grid"><a href="/platform-overview" class="button-dropdown dynamic-hover w-inline-block"><div class="button_dropdown-icon-wrap"><div class="button_dropdown-icon w-embed"><svg width=" 100%" height=" 100%" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
871<path d="M12.0197 23.0191C18.0946 23.0191 23.0193 18.0944 23.0193 12.0196C23.0193 5.94468 18.0946 1.02002 12.0197 1.02002C5.94474 1.02002 1.02002 5.94468 1.02002 12.0196C1.02002 18.0944 5.94474 23.0191 12.0197 23.0191Z" stroke="currentColor" stroke-width="2.04"/>
872<path opacity="0.3" d="M12.0175 16.4192C14.4475 16.4192 16.4174 14.4494 16.4174 12.0194C16.4174 9.58949 14.4475 7.61963 12.0175 7.61963C9.58756 7.61963 7.61768 9.58949 7.61768 12.0194C7.61768 14.4494 9.58756 16.4192 12.0175 16.4192Z" fill="currentColor"/>
873<path opacity="0.5" d="M12.0239 1.02002V6.01981" stroke="currentColor" stroke-width="1.68" stroke-linecap="round"/>
874<path opacity="0.5" d="M12.0239 18.02V23.0198" stroke="currentColor" stroke-width="1.68" stroke-linecap="round"/>
875<path opacity="0.5" d="M1.02002 12.019H6.01987" stroke="currentColor" stroke-width="1.68" stroke-linecap="round"/>
876<path opacity="0.5" d="M18.0161 12.019H23.016" stroke="currentColor" stroke-width="1.68" stroke-linecap="round"/>
877</svg></div></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">Platform Overview</div></div><p class="featured-link-description">Understand how the Re-Twin platform adds value</p></div></a><a href="/artee" class="button-dropdown dynamic-hover w-inline-block">
877<div class="button_dropdown-icon-wrap wattson"><div class="button_dropdown-icon w-embed"><svg xmlns="http://www.w3.org/2000/svg" width=" 100%" height=" 100%" viewBox="0 0 24 24" fill="currentColor">
878  <!-- Large star -->
879  <path d="M9.5 3 L11.2 8.3 L16.5 10 L11.2 11.7 L9.5 17 L7.8 11.7 L2.5 10 L7.8 8.3 Z"/>
880  <!-- Medium star (top right) -->
881  <path d="M18 4 L19 6.9 L22 8 L19 9.1 L18 12 L17 9.1 L14 8 L17 6.9 Z"/>
882  <!-- Small star (bottom right) -->
883  <path d="M17 14.5 L17.8 16.7 L20 17.5 L17.8 18.3 L17 20.5 L16.2 18.3 L14 17.5 L16.2 16.7 Z"/>
884</svg></div></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">ArTee</div></div><p class="featured-link-description">Meet ArTee, your on-demand digital energy analyst</p></div></a><a href="/investment-analysis" class="button-dropdown dynamic-hover w-inline-block"><div class="button_dropdown-icon-wrap"><div class="button_dropdown-icon w-embed"><svg width=" 100%" height=" 100%" viewBox="0 0 19 22" fill="none" xmlns="http://www.w3.org/2000/svg">
885<path d="M2.9232 13.1998H1.4616C0.65438 13.1998 0 13.8564 0 14.6664V20.5331C0 21.3431 0.65438 21.9997 1.4616 21.9997H2.9232C3.73042 21.9997 4.3848 21.3431 4.3848 20.5331V14.6664C4.3848 13.8564 3.73042 13.1998 2.9232 13.1998Z" fill="currentColor"/>
886<path d="M10.232 6.60009H8.77037C7.96315 6.60009 7.30877 7.25673 7.30877 8.06675V20.5333C7.30877 21.3434 7.96315 22 8.77037 22H10.232C11.0392 22 11.6936 21.3434 11.6936 20.5333V8.06675C11.6936 7.25673 11.0392 6.60009 10.232 6.60009Z" fill="currentColor"/>
887<path d="M17.5384 0H16.0768C15.2696 0 14.6152 0.656645 14.6152 1.46666V20.5332C14.6152 21.3432 15.2696 21.9999 16.0768 21.9999H17.5384C18.3456 21.9999 19 21.3432 19 20.5332V1.46666C19 0.656645 18.3456 0 17.5384 0Z" fill="currentColor"/>
888</svg></div></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">Investment Analysis</div></div><p class="featured-link-description">Get tailored business cases for your BESS in minutes</p></div></a><a href="/live-benchmarking" class="button-dropdown dynamic-hover w-inline-block"><div class="button_dropdown-icon-wrap"><div class="button_dropdown-icon w-embed"><svg width=" 100%" height=" 100%" viewBox="0 0 27 12" fill="none" xmlns="http://www.w3.org/2000/svg">
889<path d="M1.07996 5.87982H25.08" stroke="currentColor" stroke-width="2.16" stroke-linecap="round"/>
890<path d="M5.27996 1.08002L1.07996 5.88002L5.27996 10.68" stroke="currentColor" stroke-width="2.16" stroke-linecap="round" stroke-linejoin="round"/>
891</svg></div></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">Live Benchmarking</div></div><p class="featured-link-description">Live performance benchmarks for your BESS</p></div></a></div><div class="navbar_dropdown-list-verticle hide"><a href="#" class="button-dropdown company w-inline-block"><div class="button_company-nav-top"><div class="button_company_top-img-wrap"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/69f08ad912336372e83f6513_Vector%20(2).png" alt="" class="button_company_top-img"/></div></div><div class="button_company-nav-bottom"><div class="navbar_dropdown-text-link text-color-pink">2025 GUIDE</div><p class="text-size-regular">Re-Twin raises Series A to expand European market intelligence</p></div></a></div></div></nav></div><div data-delay="200" data-hover="true" data-dropdown-tag="dropdown1" data-w-id="07eac00c-0b0d-6781-55a9-62c1250c73a9" class="navbar_menu-dropdown w-dropdown"><div class="navbar_dropdown-toggle dynamic-hover w-dropdown-toggle"><div>Solutions</div><div class="dropdown-chevron w-embed"><svg width=" 100%" height=" 100%" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
892<path fill-rule="evenodd" clip-rule="evenodd" d="M2.55806 6.29544C2.46043 6.19781 2.46043 6.03952 2.55806 5.94189L3.44195 5.058C3.53958 4.96037 3.69787 4.96037 3.7955 5.058L8.00001 9.26251L12.2045 5.058C12.3021 4.96037 12.4604 4.96037 12.5581 5.058L13.4419 5.94189C13.5396 6.03952 13.5396 6.19781 13.4419 6.29544L8.17678 11.5606C8.07915 11.6582 7.92086 11.6582 7.82323 11.5606L2.55806 6.29544Z" fill="currentColor"/>
893</svg></div></div><nav class="navbar_dropdown-wrapper w-dropdown-list"><div class="w-layout-vflex navbar_dropdown-list solution one">
893<div class="navbar_dropdown-list-internal-grid"><a href="/solutions/project-developers" class="button-dropdown dynamic-hover solution w-inline-block"><div class="button_nav-svg-wrap"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/69f086b52e59260dd2780624_Group%201026.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">For Developers</div></div><p class="featured-link-description">Evaluate business cases quickly</p></div></a><a href="/solutions/asset-owners" class="button-dropdown dynamic-hover solution w-inline-block"><div class="button_nav-svg-wrap"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/69f08896b011c11026164fd1_Group%201025.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">For Asset Owners</div></div><p class="featured-link-description">Get live benchmark for your BESS</p></div></a><a href="/solutions/investors-financiers" class="button-dropdown dynamic-hover solution w-inline-block"><div class="button_nav-svg-wrap"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/69f088969ab0af51623d003c_Group%201024.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">For Investors &amp; Financiers</div></div><p class="featured-link-description">Understand project value &amp; de-risk the investment</p></div></a><a href="/solutions/utilities" class="button-dropdown dynamic-hover solution w-inline-block"><div class="button_nav-svg-wrap"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/69f088962bcb5a3f34f0da67_Group%201027.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">For Utilities</div></div><p class="featured-link-description">Unlock your BESS portfolio&#x27;s full revenue potential</p></div></a><a href="/solutions/industrial-energy-users" class="button-dropdown dynamic-hover solution w-inline-block"><div class="button_nav-svg-wrap"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/69f088967c9fcfdcaeaeb1e1_Group%201029.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">For Industrial Energy Users</div></div><p class="featured-link-description">Learn how to safe and earn with a BESS</p></div></a></div></div></nav></div><div data-delay="200" data-hover="true" data-dropdown-tag="dropdown1" data-w-id="07eac00c-0b0d-6781-55a9-62c1250c73eb" class="navbar_menu-dropdown w-dropdown"><div class="navbar_dropdown-toggle dynamic-hover w-dropdown-toggle"><div>Company</div><div class="dropdown-chevron w-embed"><svg width=" 100%" height=" 100%" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
894<path fill-rule="evenodd" clip-rule="evenodd" d="M2.55806 6.29544C2.46043 6.19781 2.46043 6.03952 2.55806 5.94189L3.44195 5.058C3.53958 4.96037 3.69787 4.96037 3.7955 5.058L8.00001 9.26251L12.2045 5.058C12.3021 4.96037 12.4604 4.96037 12.5581 5.058L13.4419 5.94189C13.5396 6.03952 13.5396 6.19781 13.4419 6.29544L8.17678 11.5606C8.07915 11.6582 7.92086 11.6582 7.82323 11.5606L2.55806 6.29544Z" fill="currentColor"/>
895</svg></div></div><nav class="navbar_dropdown-wrapper w-dropdown-list"><div class="w-layout-vflex navbar_dropdown-list solution one"><div class="navbar_dropdown-list-internal-grid"><a href="/about-us" class="button-dropdown dynamic-hover w-inline-block"><div class="button_nav-svg-wrap company"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a5095cef6fd6214b3b4c9e4_Group%201686557317.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">About Us</div></div><p class="featured-link-description">Get to know the Re-Twin team</p></div></a><a href="/career" class="button-dropdown dynamic-hover w-inline-block"><div class="button_nav-svg-wrap company"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a5095db9001bdbf232918d4_Group%201686557316.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">Careers</div></div><p class="featured-link-description">Help us accelerate the energy transition</p></div></a></div></div></nav></div><div data-delay="200" data-hover="true" data-w-id="6a3095f4-50e6-1a0d-6921-ae3035585b33" class="navbar_menu-dropdown w-dropdown"><div class="navbar_dropdown-toggle dynamic-hover w-dropdown-toggle"><div>Insights</div><div class="dropdown-chevron w-embed">
895<svg width=" 100%" height=" 100%" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
896<path fill-rule="evenodd" clip-rule="evenodd" d="M2.55806 6.29544C2.46043 6.19781 2.46043 6.03952 2.55806 5.94189L3.44195 5.058C3.53958 4.96037 3.69787 4.96037 3.7955 5.058L8.00001 9.26251L12.2045 5.058C12.3021 4.96037 12.4604 4.96037 12.5581 5.058L13.4419 5.94189C13.5396 6.03952 13.5396 6.19781 13.4419 6.29544L8.17678 11.5606C8.07915 11.6582 7.92086 11.6582 7.82323 11.5606L2.55806 6.29544Z" fill="currentColor"/>
897</svg></div></div><nav class="navbar_dropdown-wrapper w-dropdown-list"><div class="w-layout-vflex navbar_dropdown-list solution one"><div class="navbar_dropdown-list-internal-grid"><a href="/blog" class="button-dropdown dynamic-hover w-inline-block"><div class="button_nav-svg-wrap company"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a5095709454773f96c1b43c_Group%201686557314.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">Blogs</div></div><p class="featured-link-description">Read our articles on energy trading, storage &amp; more</p></div></a><a href="https://re-twin.webflow.io/blogs#whitepapers-section" class="button-dropdown dynamic-hover w-inline-block"><div class="button_nav-svg-wrap company"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a509570df25ccd1f726e01c_Group%201686557313.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">White Papers</div></div><p class="featured-link-description">Dig into in-depth analyses on BESS marketability &amp; analytics</p></div></a><a href="https://re-twin.energy/blogs#webinars-section" class="button-dropdown dynamic-hover w-inline-block"><div class="button_nav-svg-wrap company"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a5095704f34fe101fc0ab7f_Group%201686557315.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">Webinars</div></div><p class="featured-link-description">Access recordings of our past webinars</p></div></a><a href="https://re-twin.webflow.io/blogs#news-section" class="button-dropdown dynamic-hover w-inline-block"><div class="button_nav-svg-wrap company"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a509570f195ee8799db54e1_Group%201686557312.svg" alt="" class="button_nav-svg-wrap"/></div><div class="w-layout-vflex featured-link-text"><div class="margin-bottom margin-xtiny"><div class="navbar_dropdown-text-link">News</div></div><p class="featured-link-description">Stay up to date on major developments at Re-Twin Energy</p></div></a></div></div></nav></div><a href="/pricing" class="navbar_link dynamic-hover w-nav-link">Pricing</a><a href="/re-twin-index" class="navbar_link dynamic-hover w-nav-link">Re-Twin Index</a></div><div class="navbar_button-wrapper"><a href="/contact" class="button is-secondary nav w-button">Contact Us</a><a href="https://app.re-twin.energy/" target="_blank" class="button nav w-button">Try Now</a></div></nav><div class="navbar_menu-button w-nav-button"><div class="menu-icon2"><div class="menu-icon2_line-top"></div><div class="menu-icon2_line-middle"><div class="menu-icon_line-middle-inner"></div></div><div class="menu-icon2_line-bottom"></div></div></div></div></div></div><main class="main-wrapper"><section class="section_hero-home"><div class="padding-global padding-section-small"><div class="container-large"><div data-reveal-group="" class="hero_home-wrapper"><h1 class="hero_heading">Make Your BESS More Profitable.</h1><p class="text-size-medium max-width-medium">One platform to evaluate, benchmark, and maximize the profitability of your battery energy storage systems.</p><a href="https://app.re-twin.energy/" target="_blank" class="button w-button">Explore</a></div></div></div><div class="hero_po-abs-wrap"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a50cc5f6d1984a0b2696436_Group%201616.svg" loading="lazy" alt="" class="po_hero-abs-img abs"/></div></section><section class="section_logo3"><div class="marquee"><div class="marquee_track-logo"><div class="marquee_list w-dyn-list"><div role="list" class="marquee_flex logos w-dyn-items"><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bc3e65c0cac5cfb364e1_Group%201686557260.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bc07b673463b1086b3a9_Group%201686557259.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bbee2f2b3aa80593d0df_image%202192.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bbd3915dbd91cc4e50de_Group%201686557256.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f8788941d951a7eb3d2baf_imgi_28_VKU_Logo.PTYb2-bG%20(1).png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1).png" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-800.png 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-1080.png 1080w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-1600.png 1600w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-2000.png 2000w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-2600.png 2600w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-3200.png 3200w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1).png 6250w" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f8787580bc60407495a7bd_imgi_26_Renergo.D2APOtdI%20(1).png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb93088ffb1e4451ba9b_Group%201686557262.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb780b17a51efe70ac72_Group%201686557261.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb87d4e0a6da878e2c41_imgi_23_MAON.BNtyMTBh%20(1)%201.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f878466081cca54814125b_imgi_22_stadtwarke.Y0FFhH5q%20(1).svg" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb51cd1967096143b24d_Group%201686557258.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb4068be0cc0c19a5dee_Group%201686557257.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bc20585299f4853ae2e7_image%202276.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb31b550267ae3077370_imgi_15_badenova.D6mtAtyg%20(1)%201.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb2165c0cac5cfb33d35_Group%201686557255.svg" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bbb2d191314fedee9009_imgi_13_ecostor.B7KR2mMz%20(1)%201.svg" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bba4eecbadd1d6b959d1_image%202275.svg" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f877f7c948de5fd093fb84_imgi_11_conductr.BsVDC0jP%20(1).png" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f877f7c948de5fd093fb84_imgi_11_conductr.BsVDC0jP%20(1)-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f877f7c948de5fd093fb84_imgi_11_conductr.BsVDC0jP%20(1).png 580w" class="logo3_logo"/></div></div></div></div><div class="marquee_list w-dyn-list"><div role="list" class="marquee_flex logos w-dyn-items"><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bc3e65c0cac5cfb364e1_Group%201686557260.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bc07b673463b1086b3a9_Group%201686557259.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bbee2f2b3aa80593d0df_image%202192.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bbd3915dbd91cc4e50de_Group%201686557256.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f8788941d951a7eb3d2baf_imgi_28_VKU_Logo.PTYb2-bG%20(1).png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1).png" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-800.png 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-1080.png 1080w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-1600.png 1600w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-2000.png 2000w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-2600.png 2600w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1)-p-3200.png 3200w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f87880a045610993bcaea1_imgi_27_Friesen%20Elektra.DlgQ_Hvn%20(1).png 6250w" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f8787580bc60407495a7bd_imgi_26_Renergo.D2APOtdI%20(1).png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb93088ffb1e4451ba9b_Group%201686557262.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb780b17a51efe70ac72_Group%201686557261.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb87d4e0a6da878e2c41_imgi_23_MAON.BNtyMTBh%20(1)%201.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f878466081cca54814125b_imgi_22_stadtwarke.Y0FFhH5q%20(1).svg" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb51cd1967096143b24d_Group%201686557258.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb4068be0cc0c19a5dee_Group%201686557257.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bc20585299f4853ae2e7_image%202276.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bb31b550267ae3077370_imgi_15_badenova.D6mtAtyg%20(1)%201.png" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website
897-files.com/69f09845c615adfbcda2a761/6a48bb2165c0cac5cfb33d35_Group%201686557255.svg" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bbb2d191314fedee9009_imgi_13_ecostor.B7KR2mMz%20(1)%201.svg" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a48bba4eecbadd1d6b959d1_image%202275.svg" alt="" class="logo3_logo"/></div></div><div role="listitem" class="marquee_item logos w-dyn-item"><div class="logo3_wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f877f7c948de5fd093fb84_imgi_11_conductr.BsVDC0jP%20(1).png" alt="" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f877f7c948de5fd093fb84_imgi_11_conductr.BsVDC0jP%20(1)-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f877f7c948de5fd093fb84_imgi_11_conductr.BsVDC0jP%20(1).png 580w" class="logo3_logo"/></div></div></div></div></div><div class="w-embed"><style>
898.marquee_track-logo {
899  white-space: nowrap;
900  will-change: transform;
901  animation: marquee 40s linear infinite;
902}
903
904@keyframes marquee {
905  from { transform: translateX(0); }
906  to { transform: translateX(-50%); }
907}
908
909.marquee_track-logo:hover {
910	animation-play-state: paused;
911}
912</style></div></div></section><section class="htw-section"><div class="padding-global padding-section-small"><div data-reveal-group="" class="container-large"><h2 class="htw-heading">How it Works</h2><div data-htw="" class="htw-wrap-wrap"><div class="htw-row"><a data-htw-tab="0" href="#" class="htw-link htw-on">Configure</a><a data-htw-tab="3" href="#" class="htw-link">Simulate</a><a data-htw-tab="1" href="#" class="htw-link">Compare</a></div><div><div data-htw-pane="0" class="htw-pane htw-on"><video playsinline="true" loop="" muted="" autoplay="true" width="100%" class="htw-imgph"><source src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8%2F6a4207f66291ea3120805bc7_configuration_webm.webm" type="video/webm"/></video></div><div data-htw-pane="1" class="htw-pane"><video playsinline="true" loop="" muted="" autoplay="true" width="100%" class="htw-imgph"><source src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8%2F6a42080298036fa040fd04bd_results_webm.webm" type="video/webm"/></video></div><div data-htw-pane="3" class="htw-pane"><video playsinline="true" loop="" muted="" autoplay="true" width="100%" class="htw-imgph"><source src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8%2F6a42075fb64e5e6575ae9b04_insights_webm.webm" type="video/webm"/></video></div></div></div></div></div><div class="padding-global padding-section-medium"><div class="container-large"></div></div></section><section class="testimonials_section"><div class="padding-global padding-section-large"><div class="container-large"><div data-reveal-group="" class="testimonials_wrapper"><h2 class="testimonials_heading">What Our <span class="text-color-purple-light">Customers Say</span></h2><div class="swiper testimonials_swiper"><div class="swiper-wrapper"><div class="w-dyn-list"><div role="list" class="w-dyn-items"><div role="listitem" class="swiper-slide testimonials_card testimonial w-dyn-item"><div><div class="testimonials_progress-track"><div class="testimonials_progress-bar"></div></div><div class="testimonials_card-inner"><div class="testimonials_logo-wrap"><img src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a931523d4e614d32fd9d48d_iaccess-logo.png" alt="Client Logo" class="testimonials_logo"/></div><div class="testimonials_quote w-richtext"><p>Re-Twin&#x27;s tool is, for our team, the most accessible and efficient tool, and for our customers the most understandable one, for professionally evaluating projects and integrating them efficiently into the workflow.</p></div><div class="testimonials_author"><img src="https://cdn.prod.website-files.com/80" alt="Aisha Patel" class="testimonials_author-photo w-dyn-bind-empty"/><div class="testimonial_bottom-wrap"><p class="testimonials_author-name">Michael Rieber</p><p class="testimonials_author-title">Chief Executive Officer</p></div></div></div></div></div><div role="listitem" class="swiper-slide testimonials_card testimonial w-dyn-item"><div><div class="testimonials_progress-track"><div class="testimonials_progress-bar"></div></div><div class="testimonials_card-inner"><div class="testimonials_logo-wrap"><img src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a36611954f3e397e58c9_1%20(2).png" alt="Client Logo" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a36611954f3e397e58c9_1%20(2)-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a36611954f3e397e58c9_1%20(2)-p-800.png 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a36611954f3e397e58c9_1%20(2)-p-1080.png 1080w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a36611954f3e397e58c9_1%20(2).png 1375w" class="testimonials_logo"/></div><div class="testimonials_quote w-richtext"><p>
912Targeted scenario analysis with Re-Twin accelerates our project cycle &amp; answers all financial questions in one tool<strong> </strong>with unmatched configuration depth.</p></div><div class="testimonials_author"><img src="https://cdn.prod.website-files.com/80" alt="Aisha Patel" class="testimonials_author-photo w-dyn-bind-empty"/><div class="testimonial_bottom-wrap"><p class="testimonials_author-name">Oliver Schiele</p><p class="testimonials_author-title">Business Controller - Team PV and Storage</p></div></div></div></div></div><div role="listitem" class="swiper-slide testimonials_card testimonial w-dyn-item"><div><div class="testimonials_progress-track"><div class="testimonials_progress-bar"></div></div><div class="testimonials_card-inner"><div class="testimonials_logo-wrap"><img src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a35e6855e5e0e33f5a9d_2%20(2).png" alt="Client Logo" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a35e6855e5e0e33f5a9d_2%20(2)-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a35e6855e5e0e33f5a9d_2%20(2)-p-800.png 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a35e6855e5e0e33f5a9d_2%20(2)-p-1080.png 1080w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a35e6855e5e0e33f5a9d_2%20(2).png 1375w" class="testimonials_logo"/></div><div class="testimonials_quote w-richtext"><p>The key advantage of the platform is its flexibility, allowing quick modelling of various parameters. The outcome: faster internal decisions.</p></div><div class="testimonials_author"><img src="https://cdn.prod.website-files.com/80" alt="Aisha Patel" class="testimonials_author-photo w-dyn-bind-empty"/><div class="testimonial_bottom-wrap"><p class="testimonials_author-name">Hauke Kraft</p><p class="testimonials_author-title">Speaker Executive Board</p></div></div></div></div></div><div role="listitem" class="swiper-slide testimonials_card testimonial w-dyn-item"><div><div class="testimonials_progress-track"><div class="testimonials_progress-bar"></div></div><div class="testimonials_card-inner"><div class="testimonials_logo-wrap"><img src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a4fb3e93900adf0738b822e_TMH%20(1).svg" alt="Client Logo" class="testimonials_logo"/></div><div class="testimonials_quote w-richtext"><p>Re-Twin provides us with what has been missing in the BESS sector until now: an asset-specific, independent baseline, which makes our marketing verifiable and<strong> </strong>takes bankability<strong> </strong>to a new level.</p></div><div class="testimonials_author"><img src="https://cdn.prod.website-files.com/80" alt="Aisha Patel" class="testimonials_author-photo w-dyn-bind-empty"/><div class="testimonial_bottom-wrap"><p class="testimonials_author-name">Marcus Fendt</p><p class="testimonials_author-title">Managing Director</p></div></div></div></div></div><div role="listitem" class="swiper-slide testimonials_card testimonial w-dyn-item"><div><div class="testimonials_progress-track"><div class="testimonials_progress-bar"></div></div><div class="testimonials_card-inner"><div class="testimonials_logo-wrap"><img src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a5ee35004caa3eed08f7551_LOGO_QUADRA_energy_RGB.svg" alt="Client Logo" class="testimonials_logo"/></div><div class="testimonials_quote w-richtext"><p>Re-Twin provides independent insights into the revenue potential of FTM co-location projects. Its analyses and reports provide additional market insights and independent perspectives on revenue opportunities.</p></div><div class="testimonials_author"><img src="https://cdn.prod.website-files.com/80" alt="Aisha Patel" class="testimonials_author-photo w-dyn-bind-empty"/><div class="testimonial_bottom-wrap"><p class="testimonials_author-name">Christian Karalis</p><p class="testimonials_author-title">Head of Sales &amp; Origination</p></div></div></div></div></div><div role="listitem" class="swiper-slide testimonials_card testimonial w-dyn-item"><div><div class="testimonials_progress-track"><div class="testimonials_progress-bar"></div></div><div class="testimonials_card-inner"><div class="testimonials_logo-wrap"><img src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a353e4e426545c75df48_3%20(2).png" alt="Client Logo" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a353e4e426545c75df48_3%20(2)-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a353e4e426545c75df48_3%20(2)-p-800.png 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a353e4e426545c75df48_3%20(2)-p-1080.png 1080w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a353e4e426545c75df48_3%20(2).png 1375w" class="testimonials_logo"/></div><div class="testimonials_quote w-richtext"><p>Re-Twin&#x27;
912s scenario analysis clarifies investment decisions, reduces early-stage planning risk, and enables direct comparisons.</p></div><div class="testimonials_author"><img src="https://cdn.prod.website-files.com/80" alt="Aisha Patel" class="testimonials_author-photo w-dyn-bind-empty"/><div class="testimonial_bottom-wrap"><p class="testimonials_author-name">Mathias Strasser</p><p class="testimonials_author-title">Development &amp; System Engineering</p></div></div></div></div></div><div role="listitem" class="swiper-slide testimonials_card testimonial w-dyn-item"><div><div class="testimonials_progress-track"><div class="testimonials_progress-bar"></div></div><div class="testimonials_card-inner"><div class="testimonials_logo-wrap"><img src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a374da057fe2044aa65e_4%20(2).png" alt="Client Logo" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a374da057fe2044aa65e_4%20(2)-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a374da057fe2044aa65e_4%20(2)-p-800.png 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a374da057fe2044aa65e_4%20(2)-p-1080.png 1080w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a33a374da057fe2044aa65e_4%20(2).png 1375w" class="testimonials_logo"/></div><div class="testimonials_quote w-richtext"><p>Quick simulations, with an intuitive UI, that focus on the essential 90% of the data<strong>,</strong> enabling initial evaluation &amp; understanding of revenues.</p></div><div class="testimonials_author"><img src="https://cdn.prod.website-files.com/80" alt="Aisha Patel" class="testimonials_author-photo w-dyn-bind-empty"/><div class="testimonial_bottom-wrap"><p class="testimonials_author-name">Frederic Preukschat</p><p class="testimonials_author-title">Technical Lead Solar</p></div></div></div></div></div></div></div></div></div></div></div></div></section><section class="section_challenge why_now"><div class="padding-global"><div class="container-large"><div data-reveal-group="" class="challenge_component"><div class="challenge_top-1"><h2 class="challenge_heading">Why <span class="challenge_heading-accent">now?</span></h2><p class="text-size-medium text-color-alternate">BESS planning and performance monitoring is slow, inadequate, and has no independent benchmark.</p></div><div data-carousel="track" data-reveal-group-nested="" class="challenge_list"><div data-carousel-card="" class="challenge_item why-cards"><div class="challenge_item-image-wrap"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a853e9ba7efda66be01bbaa_Group%205.svg" alt="Unclear Revenue Potential" width="210" class="challenge_item-image"/></div><div class="challenge_item-content"><h3 class="challenge_item-title">Revenue Uncertainty</h3><p class="challenge_item-text">Battery revenues depend on market conditions, grid restrictions, and site specifics. Generic forecasts miss the point. </p></div></div><div data-carousel-card="" class="challenge_item why-cards"><div class="challenge_item-image-wrap"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a853e528415ca7c178c95ec_Group%204.svg" alt="Slow Decision-Making" width="261.5" height="280" class="challenge_item-image"/></div><div class="challenge_item-content"><h3 class="challenge_item-title">Fragile Analytics</h3><p class="challenge_item-text">A regulatory change or grid restriction can break a business case immediately.</p></div></div><div data-carousel-card="" class="challenge_item why-cards"><div class="challenge_item-image-wrap"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a853da0a05d15da596e2da7_Group%201.svg" alt="Hidden Performance Gaps" class="challenge_item-image"/></div><div class="challenge_item-content"><h3 class="challenge_item-title">Slow Decisions</h3><p class="challenge_item-text">Decision require fast insights. Manual calculations delay project process and become outdated quick.</p></div></div></div><div data-carousel-dots="" class="mobile_slider-dots-wrap"><div data-carousel-dot=""></div><div data-carousel-dot=""></div><div data-carousel-dot=""></div></div></div></div></div></section><section class="value-chain_section"><div class="padding-global padding-section-medium stake_holders_section"><div data-reveal-group="" class="container-large"><div class="value-chain_heading-wrap"><h2 class="value-chain_heading">Tailored for all <span class="text-color-purple-light">Stakeholders</span></h2><p class="value-chain_subheading">Whether you are a BESS investor, owner or developer, Re-Twin delivers actionable insights for the right decisions.</p></div><div class="vcx-row"><div data-vcx-card="1" class="vcx-card"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d01075e7d11b3f515ce85_AB6AXU~1%201%20(1).png" loading="lazy" sizes="(max-width: 926px) 100v
912w, 926px" srcset="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d01075e7d11b3f515ce85_AB6AXU~1%201%20(1)-p-500.png 500w, https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d01075e7d11b3f515ce85_AB6AXU~1%201%20(1)-p-800.png 800w, https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d01075e7d11b3f515ce85_AB6AXU~1%201%20(1).png 926w" alt="" class="vcx-img"/><div class="vcx-panel"><h3 class="vcx-title">For Developers</h3><p class="vcx-desc">Optimise technical specs, sizing &amp; financials, before committing.</p></div><p class="vcx-icon">+</p></div><div data-vcx-card="1" class="vcx-card"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d0131c1ab36694ffe6311_Container%201%20(2).png" loading="lazy" sizes="(max-width: 698px) 100vw, 698px" srcset="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d0131c1ab36694ffe6311_Container%201%20(2)-p-500.png 500w, https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d0131c1ab36694ffe6311_Container%201%20(2).png 698w" alt="" class="vcx-img"/><div class="vcx-panel"><h3 class="vcx-title">For Asset Owners</h3><p class="vcx-desc">Understand projects long-term value and receive live benchmarks for performance reviews.</p></div><p class="vcx-icon">+</p></div><div data-vcx-card="1" class="vcx-card"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d0d9a98897d13897e2a81_For%20Investors.png" loading="lazy" sizes="(max-width: 700px) 100v
912w, 700px" srcset="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d0d9a98897d13897e2a81_For%20Investors-p-500.png 500w, https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d0d9a98897d13897e2a81_For%20Investors.png 700w" alt="" class="vcx-img"/><div class="vcx-panel"><h3 class="vcx-title">For Investors</h3><p class="vcx-desc">Understand, de-risk &amp; verify your investment at every step.</p></div><p class="vcx-icon">+</p></div><div data-vcx-card="1" class="vcx-card"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d0107d3af91ef0c267fcd_For%20Utilities.png" loading="lazy" sizes="(max-width: 698px) 100vw, 698px" srcset="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d0107d3af91ef0c267fcd_For%20Utilities-p-500.png 500w, https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d0107d3af91ef0c267fcd_For%20Utilities.png 698w" alt="" class="vcx-img"/><div class="vcx-panel"><h3 class="vcx-title">For Utilities</h3><p class="vcx-desc">Optimise your entire portfolio and understand where your revenue opportunities lie.</p></div><p class="vcx-icon">+</p></div></div></div></div></section><section class="section_digital-twin hide-desktop"><div class="padding-global padding-section-large"><div class="container-large"><div class="digital-twin_component"><div data-reveal-group="" class="digital-twin_top"><h2 class="heading-style-h2 max-width-xmedium">A <span class="text-color-purple-light">Digital Twin</span> <br/>Of Your Energy Asset</h2><p class="text-size-medium">1:1 digital twins for your BESS evolve with your project to deliver tailored business cases in minutes.</p></div><div data-reveal-group="" class="digital-twin_steps"><div class="digital-twin_step is-active"><div class="digital-twin_step-image-wrap"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a7c0ba9acbbd303ec7f7177_SVG%20(3).svg" alt="Model" class="digital-twin_step-image"/></div><div class="digital-twin_step-marker"><div class="digital-twin_step-marker-dot"></div></div><div class="digital-twin_step-content"><p class="digital-twin_step-number">01</p><h3 class="digital-twin_step-title">Configure</h3><p class="digital-twin_step-text">Create a digital twin mirroring all aspects your BESS project. </p></div></div><div class="digital-twin_step"><div class="digital-twin_step-image-wrap"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a853ff91ff401748e5324ff_SVG%20(2).svg" alt="Simulate" class="digital-twin_step-image"/></div><div class="digital-twin_step-marker"><div class="digital-twin_step-marker-dot"></div></div><div class="digital-twin_step-content"><p class="digital-twin_step-number">02</p><h3 class="digital-twin_step-title">Simulate</h3><p class="digital-twin_step-text">We simulate your project with real market data and deliver clear revenue insights.</p></div></div><div class="digital-twin_step"><div class="digital-twin_step-image-wrap"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a853fa25e6b8e90ecadd157_SVG%20(1).svg" alt="Deploy" class="digital-twin_step-image"/></div><div class="digital-twin_step-marker"><div class="digital-twin_step-marker-dot"></div></div><div class="digital-twin_step-content"><p class="digital-twin_step-number">03</p><h3 class="digital-twin_step-title">Compare</h3><p class="digital-twin_step-text">Compare project setups easily to find the most profitable one.</p></div></div></div></div></div></div></section><section class="hiw_section home"><div class="padding-global padding-section-large"><div class="container-large"><div class="hiw_sticky-outer"><div class="hiw_sticky-inner"><div class="hiw_header"><div class="hiw_left home"><h2 class="heading-style-h2 max-width-xmedium">A <span class="text-color-purple-light">Digital Twin</span> <br/>Of Your Energy Asset</h2><p class="text-size-medium">1:1 digital twins for your BESS evolve with your project to deliver tailored business cases in minutes.</p></div></div><div data-duration-out="100" data-current="Tab 1" data-easing="ease" data-duration-in="300" class="hiw_tabs"><div class="hiw_scroll-wrap"><div class="hiw_tabs-grid"><div role="tablist" class="hiw_tabs-menu"><a href="#hiw-tab-1" data-w-tab="Tab 1" class="hiw_tab-link w-inline-block"><div class="hiw_tab-top"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a0fc9d120
912af2f0388a1b092_Vector%20(1).svg" loading="lazy" alt=""/><div class="hiw_tab-title">Configure</div></div><div class="hiw_tab-desc">Create a digital twin mirroring all aspects your BESS project. </div></a><div class="inline-div-0-1"></div><a href="#hiw-tab-2" data-w-tab="Tab 2" class="hiw_tab-link w-inline-block"><div class="hiw_tab-top"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a0fca02a987b29b18cb44ce_Vector%20(2).svg" loading="lazy" alt=""/><div class="hiw_tab-title">Simulate</div></div><div class="hiw_tab-desc">We simulate your project with real market data and deliver clear revenue insights.</div></a><div class="inline-div-0-1-2"></div><a href="#hiw-tab-3" data-w-tab="Tab 3" class="hiw_tab-link w-inline-block"><div class="hiw_tab-top"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a0fca0d5ad799ded464805d_Vector%20(3).svg" loading="lazy" alt=""/><div class="hiw_tab-title">Compare</div></div><div class="hiw_tab-desc">Compare project setups easily to find the most profitable one.</div></a></div><div id="w-node-bfbd7cf9-d0ab-f583-2a9f-200cf02f99ca-fb2a1b21" class="hiw_tabs-content home"><div data-w-tab="Tab 1" class="hiw_tab-pane"><div class="hiw_card home"><div class="po_decision-card hiw"><div class="po_decision-bottom hiw home"><div class="hiw_img-wrap"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a7c0ba9acbbd303ec7f7177_SVG%20(3).svg" alt="Model" class="image-100"/></div></div></div></div></div><div data-w-tab="Tab 2" class="hiw_tab-pane"><div class="hiw_card home"><div class="po_decision-card hiw"><div class="po_decision-bottom hiw home"><div class="hiw_img-wrap"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a853ff91ff401748e5324ff_SVG%20(2).svg" alt="Simulate" class="image-100"/></div></div></div></div></div><div data-w-tab="Tab 3" class="hiw_tab-pane"><div class="hiw_card home"><div class="po_decision-card hiw"><div class="po_decision-bottom hiw home"><div class="hiw_img-wrap"><img src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a853fa25e6b8e90ecadd157_SVG%20(1).svg" alt="Deploy" class="image-100"/></div></div></div></div></div></div></div></div></div></div></div></div></div></section><section class="section_challenge"><div class="padding-global"><div class="container-large"><div class="rt-card-1"><header data-reveal-group="" class="rt-head"><h2 class="rt-title-1">Platform <span class="rt-accent">Overview</span></h2><p class="rt-sub-1">The entire BESS lifecycle: from project analysis to live benchmarking, with insights tailored to your digital twin.</p></header><div class="vx-stage"><div class="vx-circle-top"></div><div class="vx-circle-left"></div><div class="vx-circle-right"></div><div class="vx-glow"></div><div class="vx-label-top">ArTee (Energy Analyst)</div><div class="vx-label-left">Investment Analysis</div><div class="vx-label-right">Live Benchmarking</div><div class="vx-label-center">Digital Twin</div><div class="vx-panel-top">ArTee is your personal energy analyst. Ask him anything about BESS and he provides insights.</div><div class="vx-panel-left">Get project-specific business cases in minutes based in forecasts or backtests.</div><div class="vx-panel-right">Simulates the performance of your BESS in the markets. Test strategies, compare against forecasts &amp; benchmark against trader&#x27;s performance. </div></div></div></div></div></section><section><div class="padding-global padding-section-small"><div class="container-large"><div class="blogs_card-wrap"><div class="blogs_top-card"><h2>Insights</h2><a href="/blog" class="text-link-purple">View all insights →</a></div><div class="w-dyn-list"><div fs-list-load="more" fs-list-element="list" role="list" class="blog_cards-list cards w-dyn-items"><div role="listitem" class="blog_card-wrap card w-dyn-item"><a href="/blogs/eeg-2027-leak" class="blog_card w-inline-block"><div class="blog_img-card"><img alt="Featured post" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44ed135ac2c12dd257135a_1200%20px%20(5).png" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44ed135ac2c12dd257135a_1200%20px%20(5)-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44ed135ac2c12dd257135a_1200%20px%20(5)-p-800.png 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44ed135ac2c12dd257135a_1200%20px%20(5)-p-1080.png 1080w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44ed135ac2c12dd257135a_1200%20px%20(5).png 1200w" class="blog_thumb-img-wrap"/></div><div class="rt-featured-content"><div class="rt-meta-row blog-card card"><div class="rt-category-badge"><div>Energy Storage</div></div><div class="blog_read-time-wrap"><div class="blog_date">February 6, 2026</div></div></div><h2 class="blog_title-card">EEG 2027 Leak: The Changes That Could Reshape Renewable Investments</h2><div class="rt-featured-footer blog"><div class="rt-author-row"><img alt="Florian Heise" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f435552a64a6706d23089d_himali.jpg" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f435552a64a6706d23089d_himali-p-500.jpg 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f435552a64a6706d23089d_himali-p-800.jpg 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f435552a64a6706d23089d_himali.jpg 1008w" class="rt-author-avatar"/><div>Himali Talware</div></div><div class="rt_author-read-wrap"><div class="icon-embed-xxsmall clock w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ic" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24">
912<path fill="currentColor" d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8s8 3.58 8 8s-3.58 8-8 8"></path><path fill="currentColor" d="M12.5 7H11v6l5.25 3.15l.75-1.23l-4.5-2.67z"></path></svg></div><div href="#" class="rt-read-article">6 min</div></div></div></div></a></div><div role="listitem" class="blog_card-wrap card w-dyn-item"><a href="/blogs/turning-vt-into-custom-benchmarks" class="blog_card w-inline-block"><div class="blog_img-card"><img alt="Featured post" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44ed2d3d7c4d1e0d433136_1200%20px%20(6).png" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44ed2d3d7c4d1e0d433136_1200%20px%20(6)-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44ed2d3d7c4d1e0d433136_1200%20px%20(6)-p-800.png 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44ed2d3d7c4d1e0d433136_1200%20px%20(6)-p-1080.png 1080w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44ed2d3d7c4d1e0d433136_1200%20px%20(6).png 1200w" class="blog_thumb-img-wrap"/></div><div class="rt-featured-content"><div class="rt-meta-row blog-card card"><div class="rt-category-badge"><div>Energy Storage</div></div><div class="blog_read-time-wrap"><div class="blog_date">December 17, 2025</div></div></div><h2 class="blog_title-card">Re-Twin x ECO STOR: Turning Virtual Trading into Custom Benchmarks</h2><div class="rt-featured-footer blog"><div class="rt-author-row"><img alt="Florian Heise" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f436108a6b23566965230f_mayur.webp" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f436108a6b23566965230f_mayur-p-500.webp 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f436108a6b23566965230f_mayur-p-800.webp 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f436108a6b23566965230f_mayur-p-1080.webp 1080w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f436108a6b23566965230f_mayur.webp 1364w" class="rt-author-avatar"/><div>Mayur Andulkar</div></div><div class="rt_author-read-wrap"><div class="icon-embed-xxsmall clock w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ic" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><path fill="currentColor" d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8s8 3.58 8 8s-3.58 8-8 8"></path><path fill="currentColor" d="M12.5 7H11v6l5.25 3.15l.75-1.23l-4.5-2.67z"></path></svg></div><div href="#" class="rt-read-article">6 min</div></div></div></div></a></div><div role="listitem" class="blog_card-wrap card w-dyn-item"><a href="/blogs/italy-storage-systems" class="blog_card w-inline-block"><div class="blog_img-card"><img alt="Featured post" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44eba0fda9b967c466224d_1200%20px.png" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44eba0fda9b967c466224d_1200%20px-p-500.png 500w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44eba0fda9b967c466224d_1200%20px-p-800.png 800w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44eba0fda9b967c466224d_1200%20px-p-1080.png 1080w, https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/6a44eba0fda9b967c466224d_1200%20px.png 1200w" class="blog_thumb-img-wrap"/></div><div class="rt-featured-content"><div class="rt-meta-row blog-card card"><div class="rt-category-badge"><div>Regulations</div></div><div class="blog_read-time-wrap"><div class="blog_date">November 15, 2025</div></div></div><h2 class="blog_title-card">Italy’s Energy Storage Market: Policy, potential and pitfalls&#x27;</h2><div class="rt-featured-footer blog"><div class="rt-author-row"><img alt="Florian Heise" src="https://cdn.prod.website-files.com/69f09845c615adfbcda2a761/69f42585c1a92ae984690061_Mask%20group%20(1).svg" class="rt-author-avatar"/><div>Florian Heise</div></div><div class="rt_author-read-wrap"><div class="icon-embed-xxsmall clock w-embed"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ic" width="100%" height="100%" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24">
912<path fill="currentColor" d="M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8s8 3.58 8 8s-3.58 8-8 8"></path><path fill="currentColor" d="M12.5 7H11v6l5.25 3.15l.75-1.23l-4.5-2.67z"></path></svg></div><div href="#" class="rt-read-article">3 min</div></div></div></div></a></div></div></div></div></div></div></section><section><div class="padding-global padding-section-large"><div class="container-large"><div class="faq6_component"><div class="w-layout-grid faq6_content"><div data-reveal-group="" class="faq6_content-left"><div class="margin-bottom margin-small"><h2 class="heading-style-h2">Answers to your <span class="text-color-purple-light">questions</span></h2></div></div><div data-accordion-close-siblings="true" data-accordion-css-init="" id="w-node-fb8f4f6e-59e4-22d6-5af9-5baae3094f9b-e3094f90" class="accordion-css"><div data-reveal-group="" class="faq_components"><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">How to describe Re-Twin Energy in one sentence?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
913<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
914<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
915</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">Re-Twin is your AI-powered digital twin platform that tells you what your battery project is 
915worth, through site-specific business cases and independent benchmarks.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">What is Re-Twin Energy&#x27;s platform?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
916<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
917<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
918</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">Re-Twin is a one-stop SaaS platform with four tools: Atlas, Investment Analysis, Live Benchmarking, and Contracting. Built to make battery storage decisions faster, smarter, and more profitable.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">What makes Re-Twin Energy a one-stop-shop?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
919<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
920<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
921</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">We support the full asset lifecycle from planning to operation with scenario analysis, trading simulations, and performance benchmarking. Re-Twin answers key questions like:<br/><br/>- Which markets should my battery target?<br/>- How do I balance returns and asset health?<br/>- What profit can I expect from different strategies?</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">What is a digital twin?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
922<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
923<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
924</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">A digital twin is a 1:1 virtual copy of your battery asset (real or planned). It mirrors all changes of your set-up, helping you optimize performance and strategy without risk.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">Who can benefit from the Re-Twin Energy platform?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
925<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
926<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
927</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">Stakeholders in energy storage (developers, asset owners, and financiers), especially in the battery storage space, use Re-Twin for project planning, strategy testing, and operational performance benchmarking.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">What energy storage systems are included?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
928<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
929<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
930</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">We focus on battery energy storage systems (BESS), including stand-alone assets and co-located setups like BESS+PV, BESS+Wind, and BESS+Own Consumption.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">What does the Investment Analysis module do?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
931<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
932<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
933</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">It assesses project viability and profitability using historical and forecast data, helping users explore different asset configurations and market strategies before making investment decisions.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">What is Live Benchmarking?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
934<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
935<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
936</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">Live Benchmarking is a new performance measuring concept, that shines where generic indices fail to capture your assets unique set-up. It’s a live trading simulator where users test and improve strategies in a risk-free environment to balance returns, risks, and asset degradation. Results act as benchmarks for your trader or asset against real outcomes. This can further be applied to validate assumptions and provide third-party verification.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">What type of data does Re-Twin Energy deliver?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
937<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
938<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
939</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">Re-Twin provides historical market data and long-term forecast market data (based on FFE &amp; MAON), trading simulations, market-specific revenue projections, cashflows and scenario results tailored to your asset. This data also incorporates degradation, based on your inputs. Project specific parameters can be set to tailor the output.<br/><br/>The Re-Twin Optimizer itself is trained on various data sources incl. price data for spot &amp;
939 ancillary markets from different countries, weather and much more. This means we are also able to generate a PV Generation Profile based on your chosen location.<br/></p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">In which format is the data downloadable?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
940<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
941<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
942</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">Data and results can be exported in CSV, Excel, or PDF formats (based on your use case and plan). Downloads are in 1 hour granularity, PRO users get the additional option to download in 15 min granularity.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">For which countries is the platform available?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
943<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
944<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
945</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">The platform currently supports Germany, Belgium, Austria, Netherlands and Spain with expansion to other European markets underway. Interested in bringing Re-Twin to your country? Get in touch! We are always looking for pilot partner’s to expand to new countries.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">How do I get started?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
946<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
947<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
948</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">Sign up with a free account to explore the platform and test its capabilities with 2 free runs in Investment Analysis and a free trial in Live Benchmarking. Reach out via our website or [email protected] for any questions, custom demos and subscription possibilities.<br/></p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">Is training available?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
949<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
950<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
951</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">Yes, we offer onboarding and continuous user support to help you get the most out of the platform. Beyond that, our website&#x27;s Insights section offers blogs, whitepapers, news, and recordings of past webinars as additional information resources. Also ArTee can answer most of you questions.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head"><strong class="faq-head">What is ArTee:</strong></div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
952<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
953<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
954</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">
954AI energy analyst answering setup, analysis and strategy questions on demand.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head"><strong class="faq-head">Can I bring my own forecast scenarios?</strong></div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
955<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
956<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
957</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">Yes. In addition to our six standard forecast scenarios (from conservative to optimistic), you can integrate your own custom scenarios to reflect your specific market assumption<strong class="bold-text-35">s.</strong></p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">How secure is the platform?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
958<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
959<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
960</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">The platform is hosted on Microsoft Azure, using its full suite of security tools. It follows GDPR and industry best practices with full encryption and access protection.</p></div></div></div><div class="faq_accordion"><div class="faq_heading"><div class="faq-head">Why choose Re-Twin Energy?</div><div class="faq_icon"><div class="icon-32 w-embed"><svg width="32" height="32" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
961<path d="M16.9551 6.81586V25.4825" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
962<path d="M7.62183 16.1492H26.2885" stroke="#607080" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
963</svg></div></div></div><div class="faq_body"><div class="faq_answers"><p class="text-size-18px">Re-Twin unites AI, deep energy expertise, and a user-friendly design to deliver faster insights, smarter strategies, and better financial outcomes in one solution.</p></div></div></div></div></div></div></div></div></div></section><section class="section_challenge"><div class="padding-global padding-section-medium"><div class="container-large"><div class="cta_wrapper main"><div class="cta_left-wrap"><h2 class="heading-style-h3 text-color-alternate">Ready To Make Smarter Energy Storage Investment Decisions?</h2></div><div class="cta_right-wrap main"><p class="text-size-large text-color-grey-dark">Talk to our team. We&#x27;ll walk you through a live analysis of a real asset in under 30 minutes.</p><div class="button-group"><a href="/contact" target="_blank" class="button w-button">Book a Demo</a></div></div></div></div></div><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/69f45410c1a3a2539e28e7fa_Group%20269.png" alt="" class="cta_abs-img"/></section></main><section class="footer"><div class="padding-global padding-section-medium"><div class="container-large"><div class="footer_wrapper"><div class="padding-bottom padding-xxlarge"><div class="w-layout-grid footer1_top-wrapper"><div class="footer1_left-wrapper"><div class="margin-bottom margin-small"><a href="/?r=0" aria-current="page" class="footer1_logo-link w-nav-brand w--current"><img loading="lazy" height="105" alt="" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a3d042a7df0c5bf69e17460_Group%201686557473.svg" class="footer1_logo"/></a></div><div class="margin-bottom margin-small"><div>Digital Twin platform for energy assets helping developers, asset owners and investors evaluate BESS project profitability.</div></div><div class="footer1_form-block hide w-form"><form id="email-form" name="email-form" data-name="Email Form" method="get" class="footer1_form" data-wf-page-id="69d32cb5aba469d7fb2a1b21" data-wf-element-id="13a18984-8a9c-1ab9-2204-33f900dd8354" data-turnstile-sitekey="0x4AAAAAAAQTptj2So4dx43e"><input class="form_input-2 w-input" maxlength="256" name="email-2" data-name="Email 2" placeholder="Enter your email" type="email" id="email-2" required=""/><input type="submit" data-wait="Please wait..." class="button-2 is-secondary is-small w-button" value="Subscribe"/></form><div class="text-size-tiny">By subscribing you agree to with our <a href="#"><span>Privacy Policy</span></a> and provide consent to receive updates from our company.</div><div class="form_message-success-wrapper w-form-done"><div class="form_message-success-2"><div>Thank you! Your submission has been received!</div></div></div><div class="form_message-error-wrapper w-form-fail"><div class="form_message-error-2"><div>Oops! Something went wrong while submitting the form.</div></div></div></div><div class="footer_left-bottom"><a href="https://www.linkedin.com/company/re-twin-energy" target="_blank" class="footer1_s
963ocial-link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg width="100%" height="100%" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
964<path fill-rule="evenodd" clip-rule="evenodd" d="M4.5 3C3.67157 3 3 3.67157 3 4.5V19.5C3 20.3284 3.67157 21 4.5 21H19.5C20.3284 21 21 20.3284 21 19.5V4.5C21 3.67157 20.3284 3 19.5 3H4.5ZM8.52076 7.00272C8.52639 7.95897 7.81061 8.54819 6.96123 8.54397C6.16107 8.53975 5.46357 7.90272 5.46779 7.00413C5.47201 6.15897 6.13998 5.47975 7.00764 5.49944C7.88795 5.51913 8.52639 6.1646 8.52076 7.00272ZM12.2797 9.76176H9.75971H9.7583V18.3216H12.4217V18.1219C12.4217 17.742 12.4214 17.362 12.4211 16.9819V16.9818V16.9816V16.9815V16.9812C12.4203 15.9674 12.4194 14.9532 12.4246 13.9397C12.426 13.6936 12.4372 13.4377 12.5005 13.2028C12.7381 12.3253 13.5271 11.7586 14.4074 11.8979C14.9727 11.9864 15.3467 12.3141 15.5042 12.8471C15.6013 13.1803 15.6449 13.5389 15.6491 13.8863C15.6605 14.9339 15.6589 15.9815 15.6573 17.0292V17.0294C15.6567 17.3992 15.6561 17.769 15.6561 18.1388V18.3202H18.328V18.1149C18.328 17.6629 18.3278 17.211 18.3275 16.7591V16.759V16.7588C18.327 15.6293 18.3264 14.5001 18.3294 13.3702C18.3308 12.8597 18.276 12.3563 18.1508 11.8627C17.9638 11.1286 17.5771 10.5211 16.9485 10.0824C16.5027 9.77019 16.0133 9.5691 15.4663 9.5466C15.404 9.54401 15.3412 9.54062 15.2781 9.53721L15.2781 9.53721L15.2781 9.53721C14.9984 9.52209 14.7141 9.50673 14.4467 9.56066C13.6817 9.71394 13.0096 10.0641 12.5019 10.6814C12.4429 10.7522 12.3852 10.8241 12.2991 10.9314L12.2991 10.9315L12.2797 10.9557V9.76176ZM5.68164 18.3244H8.33242V9.76733H5.68164V18.3244Z" fill="CurrentColor"/>
965</svg></div></a><div class="laungage_switcher"><div class="ouiflow-element-contain w-locales-list"><div data-delay="500" data-hover="true" class="ouiflow-dropdown-2 w-dropdown"><div lang="en" class="ouiflow-2-toggle w-dropdown-toggle"><div class="ouiflow-toggle_text-flag-wrap"><div>English</div><div data-w-id="c10168e9-460d-7c0c-97dd-fe609b4c9d76" class="dropdown-chevron-footer w-embed"><svg width=" 100%" height=" 100%" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
966<path fill-rule="evenodd" clip-rule="evenodd" d="M2.55806 6.29544C2.46043 6.19781 2.46043 6.03952 2.55806 5.94189L3.44195 5.058C3.53958 4.96037 3.69787 4.96037 3.7955 5.058L8.00001 9.26251L12.2045 5.058C12.3021 4.96037 12.4604 4.96037 12.5581 5.058L13.4419 5.94189C13.5396 6.03952 13.5396 6.19781 13.4419 6.29544L8.17678 11.5606C8.07915 11.6582 7.92086 11.6582 7.82323 11.5606L2.55806 6.29544Z" fill="currentColor"/>
967</svg></div></div></div><nav class="ouiflow-2_list ouiflow-dropdown-link-flag w-dropdown-list"><div role="list" class="ouiflow-2_list-contain w-locales-items"><div role="listitem" class="ouiflow-2_list-item w-locales-item"><a selector="dropdown2" hreflang="en" href="/?r=0" aria-current="page" class="ouiflow-toggle_text-flag-wrap w-inline-block w--current"><div class="ouiflow-toggle_text-flag-wrapper"><div>English</div></div></a></div><div role="listitem" class="ouiflow-2_list-item w-locales-item"><a selector="dropdown2" hreflang="de-DE" href="/de" class="ouiflow-toggle_text-flag-wrap w-inline-block"><div class="ouiflow-toggle_text-flag-wrapper"><div>German</div></div></a></div><div role="listitem" class="ouiflow-2_list-item w-locales-item"><a selector="dropdown2" hreflang="es-ES" href="/es" class="ouiflow-toggle_text-flag-wrap w-inline-block"><div class="ouiflow-toggle_text-flag-wrapper"><div>Spanish</div></div></a></div></div></nav></div><div class="laungage_switcher-code w-embed w-script">
967<script>
968
969document.addEventListener('DOMContentLoaded', function() {
970
971  const currentLinkSwitcher2 = document.querySelectorAll('[selector="dropdown2"].w--current');
972
973  currentLinkSwitcher2.forEach(link => {
974    const closestLocalItem2 = link.closest('.ouiflow-2_list-item');
975    if (closestLocalItem2) {
976      closestLocalItem2.style.display = 'none';
977    }
978  });
979
980});
981
982
983
984</script>
984</div></div></div></div></div><div class="w-layout-grid footer1_menu-wrapper"><div class="footer1_link-column"><div class="margin-bottom margin-xsmall"><div class="text-size-medium text-weight-semibold footer">Platform</div></div><div class="footer1_link-list"><a href="/platform-overview" class="footer1_link">Platform Overview</a><a href="/investment-analysis" class="footer1_link">Investment Analysis</a><a href="/live-benchmarking" class="footer1_link">Live Benchmarking</a><a href="/artee" class="footer1_link">ArTee</a></div></div><div class="footer1_link-column"><div class="margin-bottom margin-xsmall"><div class="text-size-medium text-weight-semibold footer">Solutions</div></div><div class="footer1_link-list"><a href="/solutions/project-developers" class="footer1_link">Developers</a><a href="/solutions/asset-owners" class="footer1_link">Asset Owners</a><a href="/solutions/investors-financiers" class="footer1_link">Investors &amp; Financers</a><a href="/solutions/utilities" class="footer1_link">Utilities</a><a href="/solutions/industrial-energy-users" class="footer1_link">Industrial Users</a></div></div><div class="footer1_link-column"><div class="margin-bottom margin-xsmall"><div class="text-size-medium text-weight-semibold footer">Insights</div></div><div class="footer1_link-list"><a href="/blog" class="footer1_link">Blogs</a><a href="https://re-twin.webflow.io/blogs#whitepapers-section" class="footer1_link">White Papers</a><a href="https://re-twin.webflow.io/blogs#webinars-section" class="footer1_link">Webinars</a><a href="https://re-twin.webflow.io/blogs#news-section" class="footer1_link">News</a></div></div><div class="footer1_link-column"><div class="margin-bottom margin-xsmall"><div class="text-size-medium text-weight-semibold footer">Company</div></div><div class="footer1_link-list"><a href="/about-us" class="footer1_link">About</a><a href="/career" class="footer1_link">Careers</a><a href="/contact" class="footer1_link">Contact</a><a href="/pricing" class="footer1_link">Pricing</a><a href="https://docs.re-twin.energy/" class="footer1_link">Docs</a></div></div></div></div></div><div class="padding-top padding-medium"><div class="footer1_bottom-wrapper"><div class="footer1_credit-text">© 2026 Re-Twin Energy GmbH</div><div class="footer_bottom-right"><div class="footer_bottom-right-top"><div class="footer_bottom-right-icons-wrap"><a href="https://www.bves.de/en/" target="_blank" class="footer_bottom-right-icon-wrap first w-inline-block"><img width="Auto" height="Auto" alt="" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6aba22fb65165b004798be63_BVES_Logo_cropped_400px.png" loading="lazy" class="image-105"/></a><a href="https://re-twin-energy.trust.site/" target="_blank" class="footer_bottom-right-icon-wrap first w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a75b3cba698311098f7840a_PS-Badges-ISO_27001_2%201%201.svg" alt="" class="image-106"/></a><a href="https://re-twin-energy.trust.site/" target="_blank" class="footer_bottom-right-icon-wrap w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/6a75b3d6a338b1f1d5057c37_image%20(14)%201.svg" alt=""/></a></div><div class="devider_footer"></div><div class="footer_bottom-right-icons-wrap"><a href="https://www.bescheinigung-forschungszulage.de/bsfz-siegel" target="_blank" class="footer_bottom-right-icon-wrap w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/69f43087184da6bcfe417e4f_imgi_29_BSFZ.CginBmou%20(1).svg" alt=""/></a><a href="http://kommunaldigital.de/" target="_blank" class="footer_bottom-right-icon-wrap w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/69f43087fc6885e9deaf56bb_imgi_30_WIIIR_Siegel_Partner.CtPfgLPq.png" alt=""/></a></div></div><div class="w-layout-grid footer1_legal-list"><a href="/terms" class="footer1_legal-link">Terms &amp; Conditions</a><a href="/impressum" class="footer1_legal-link">Impressum</a><a href="/privacy" class="footer1_legal-link">Privacy Policy</a></div></div></div></div></div></div></div></section></div>
984<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=69d32cb2aba469d7fb2a1ab8" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
984<script src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/js/webflow.schunk.01b56ef8c8bd111c.js" type="text/javascript" integrity="sha384-iYCaTaSJwo7SLv+5Fpais23xfjuXE4ZoLekLYLRLibhpj99yMyQiXSRZk4pg0rtX" crossorigin="anonymous"></script>
984<script src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/js/webflow.schunk.e8fcb1564caa5037.js" type="text/javascript" integrity="sha384-51Xc63gRTnBUJXeJL6i13xuNlQ/qRGXZ4TCrDKSrKmzhYonK7CrmfysiFXUw43Ck" crossorigin="anonymous"></script>
984<script src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8/js/webflow.0a399d42.ef07c812325ac923.js" type="text/javascript" integrity="sha384-uqpBo6Z4XUk0V4aGWeXbfdd35CIVyeHNThIH+wAGpObHqVp3EcA2mBu0dEj1hgQ2" crossorigin="anonymous"></script>
984<script src="https://cdn.jsdelivr.net/gh/jeminids/webflow-codes@navbar-on-scroll_v1.1/navbar-on-scroll.min.js"></script>
984
985
986
987<!-- CSS -->
988<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/lenis.css">
989<!-- JS -->
990<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/lenis.min.js"></script>
vendor: 1 bytes, line 990
990
991<script>
992  // Lenis — run everywhere EXCEPT the Investment Analysis page
993  // (data-wf-page 6a0e91493d687e07dbed6aea), whose accordion needs the
994  // browser's native scroll anchoring that Lenis overrides.
995  if (document.documentElement.getAttribute('data-wf-page') !== '6a0e91493d687e07dbed6aea') {
996    const lenis = new Lenis({
997      autoRaf: true,
998    });
999    window.lenis = lenis;
1000  }
1001</script>
1001
1002
1003<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js"></script>
vendor: 1 bytes, line 1003
1003
1004<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/ScrollTrigger.min.js"></script>
1004
1005
1006<script>
1007  gsap.registerPlugin(ScrollTrigger);
1008
1009function initContentRevealScroll(){
1010  const prefersReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
1011
1012  const ctx = gsap.context(() => {
1013
1014    document.querySelectorAll('[data-reveal-group]').forEach(groupEl => {
1015      // Config from attributes or defaults (group-level)
1016      const groupStaggerSec = (parseFloat(groupEl.getAttribute('data-stagger')) || 100) / 1000; // ms → sec
1017      const groupDistance = groupEl.getAttribute('data-distance') || '2em';
1018      const triggerStart = groupEl.getAttribute('data-start') || 'top 90%';
1019
1020      const animDuration = 0.7;
1021      const animEase = "power4.inOut";
1022
1023      // Reduced motion: show immediately
1024      if (prefersReduced) {
1025        gsap.set(groupEl, { clearProps: 'all', y: 0, autoAlpha: 1 });
1026        return;
1027      }
1028
1029      // If no direct children, animate the group element itself
1030      const directChildren = Array.from(groupEl.children).filter(el => el.nodeType === 1);
1031      if (!directChildren.length) {
1032        gsap.set(groupEl, { y: groupDistance, autoAlpha: 0 });
1033        ScrollTrigger.create({
1034          trigger: groupEl,
1035          start: triggerStart,
1036          once: true,
1037          onEnter: () => gsap.to(groupEl, { 
1038            y: 0, 
1039            autoAlpha: 1, 
1040            duration: animDuration, 
1041            ease: animEase,
1042            onComplete: () => gsap.set(groupEl, { clearProps: 'all' })
1043          })
1044        });
1045        return;
1046      }
1047      // Build animation slots: item or nested (deep layers allowed)
1048      const slots = [];
1049      directChildren.forEach(child => {
1050        const nestedGroup = child.matches('[data-reveal-group-nested]')
1051          ? child
1052          : child.querySelector(':scope [data-reveal-group-nested]');
1053
1054        if (nestedGroup) {
1055          const includeParent =
1056            child.getAttribute('data-ignore') !== 'true' &&
1057            (
1058              child.getAttribute('data-ignore') === 'false' ||
1059              nestedGroup.getAttribute('data-ignore') === 'false'
1060            );
1061
1062          const nestedChildren = Array.from(nestedGroup.children).filter(
1063            el => el.nodeType === 1 && el.getAttribute('data-ignore') !== 'true'
1064          );
1065
1066          slots.push({
1067            type: 'nested',
1068            parentEl: child,
1069            nestedEl: nestedGroup,
1070            includeParent,
1071            nestedChildren
1072          });
1073        } else {
1074          if (child.getAttribute('data-ignore') === 'true') return;
1075          slots.push({ type: 'item', el: child });
1076        }
1077      });
1078
1079      // Initial hidden state
1080      slots.forEach(slot => {
1081        if (slot.type === 'item') {
1082          // If the element itself is a nested group, force group distance (prevents it from using its own data-distance)
1083          const isNestedSelf = slot.el.matches('[data-reveal-group-nested]');
1084          const d = isNestedSelf ? groupDistance : (slot.el.getAttribute('data-distance') || groupDistance);
1085          gsap.set(slot.el, { y: d, autoAlpha: 0 });
1086        } else {
1087          // Parent follows the group's distance when included, regardless of nested's data-distance
1088          if (slot.includeParent) gsap.set(slot.parentEl, { y: groupDistance, autoAlpha: 0 });
1089          // Children use nested group's own distance (fallback to group distance)
1090          const nestedD = slot.nestedEl.getAttribute('data-distance') || groupDistance;
1091          slot.nestedChildren.forEach(target => gsap.set(target, { y: nestedD, autoAlpha: 0 }));
1092        }
1093      });
1094
1095      // Extra safety: if a nested parent is included, re-assert its distance to the group's value
1096      slots.forEach(slot => {
1097        if (slot.type === 'nested' && slot.includeParent) {
1098          gsap.set(slot.parentEl, { y: groupDistance }); 
1099        }
1100      });
1101
1102      // Reveal sequence
1103      ScrollTrigger.create({
1104        trigger: groupEl,
1105        start: triggerStart,
1106        once: true,
1107        onEnter: () => {
1108          const tl = gsap.timeline();
1109
1110          slots.forEach((slot, slotIndex) => {
1111            const slotTime = slotIndex * groupStaggerSec;
1112
1113            if (slot.type === 'item') {
1114              tl.to(slot.el, { 
1115                y: 0, 
1116                autoAlpha: 1, 
1117                duration: animDuration, 
1118                ease: animEase,
1119                onComplete: () => gsap.set(slot.el, { clearProps: 'all' })
1120              }, slotTime);
1121            } else {
1122              // Optionally include the parent at the same slot time (parent uses group distance)
1123              if (slot.includeParent) {
1124                tl.to(slot.parentEl, {
1125                  y: 0,
1126                  autoAlpha: 1,
1127                  duration: animDuration,
1128                  ease: animEase,
1129                  onComplete: () => gsap.set(slot.parentEl, { clearProps: 'all' })
1130                }, slotTime);
1131              }
1132              // Nested children use nested stagger (ms → sec); fallback to group stagger
1133              const nestedMs = parseFloat(slot.nestedEl.getAttribute('data-stagger'));
1134              const nestedStaggerSec = isNaN(nestedMs) ? groupStaggerSec : nestedMs / 1000;
1135              slot.nestedChildren.forEach((nestedChild, nestedIndex) => {
1136                tl.to(nestedChild, { 
1137                  y: 0, 
1138                  autoAlpha: 1, 
1139                  duration: animDuration, 
1140                  ease: animEase,
1141                  onComplete: () => gsap.set(nestedChild, { clearProps: 'all' })
1142                }, slotTime + nestedIndex * nestedStaggerSec);
1143              });
1144            }
1145          });
1146        }
1147      });
1148    });
1149
1150  });
1151
1152  return () => ctx.revert();
1153}
1154
1155// Initialize Elements Reveal on Scroll
1156document.addEventListener("DOMContentLoaded", () => {
1157  initContentRevealScroll();
1158});
1159</script>
1159
1160
1161
1162<script>
1163// Function to toggle accordion
1164function toggleAccordion(card) {
1165  var content = card.querySelector('.faq_body');
1166  var icon = card.querySelector('.faq_icon');
1167  
1168  if (content.style.maxHeight !== '0px') {
1169    // Accordion is open, close it
1170    content.style.maxHeight = '0px';
1171    icon.textContent = '+';
1172    card.classList.remove('active');
1173  } else {
1174    // Accordion is closed, open it
1175    content.style.maxHeight = content.scrollHeight + "px";
1176    icon.textContent = '-';
1177    card.classList.add('active');
1178  }
1179}
1180
1181// Function to close all accordions
1182function closeAllAccordions() {
1183  var allCards = document.querySelectorAll('.faq_accordion');
1184  allCards.forEach(function(card) {
1185    var content = card.querySelector('.faq_body');
1186    var icon = card.querySelector('.faq_icon');
1187    content.style.maxHeight = '0px';
1188    icon.textContent = '+';
1189    card.classList.remove('active');
1190  });
1191}
1192
1193// Initially set all faq_body to max-height of 0 and open the first item by default
1194window.onload = function() {
1195  var allContents = document.querySelectorAll('.faq_body');
1196
1197  // Close all first
1198  allContents.forEach(function(content) {
1199    content.style.maxHeight = '0px';
1200  });
1201
1202  // Set all icons to +
1203  document.querySelectorAll('.faq_icon').forEach(function(icon) {
1204    icon.textContent = '+';
1205  });
1206
1207  // Open the first accordion by default
1208  if (allContents.length > 0) {
1209    var firstCard = document.querySelector('.faq_accordion');
1210    var firstContent = allContents[0];
1211    var firstIcon = firstCard.querySelector('.faq_icon');
1212
1213    firstContent.style.maxHeight = firstContent.scrollHeight + "px";
1214    firstIcon.textContent = '-';
1215    firstCard.classList.add('active');
1216  }
1217};
1218
1219// Add event listeners
1220document.querySelectorAll('.faq_accordion').forEach(function(card) {
1221  card.addEventListener('click', function() {
1222    if (card.querySelector('.faq_body').style.maxHeight !== '0px') {
1223      toggleAccordion(card);
1224    } else {
1225      closeAllAccordions();
1226      toggleAccordion(card);
1227    }
1228  });
1229});
1230</script>
1230
1231
1232
1233
1234
1235<script>
1236window.addEventListener('pageshow', function (e) {
1237  if (e.persisted) window.location.reload(); // re-runs animations only on bfcache restore
1238});
1239</script>
1239
1240
1241
1242
1243
1244
1245<!-- intl-tel-input CSS + JS -->
1246<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/build/css/intlTelInput.css">
1247<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/js/intlTelInput.min.js"></script>
1247
1248
1249<!-- reCAPTCHA v3 (TEST key for webflow.io — swap to production key before launch) -->
vendor: 61 bytes, lines 1249-1250
1249
1250<script src="https://www.google.com/recaptcha/api.js?render=
12506LfjDbEqAAAAAB9Kdhq5JNDeklupTt7g3c7qpXCg
vendor: 13 bytes, lines 1250-1251
1250"></script>
1251
1252<script>
1253document.addEventListener("DOMContentLoaded", function () {
1254
1255  /* ================= CONFIG ================= */
1256  var SITE_KEY    = "6LfjDbEqAAAAAB9Kdhq5JNDeklupTt7g3c7qpXCg";
1257  var ACTION      = "sumbit"; // intentional spelling per client spec
1258  var ACCESS_KEY  = "c07c6dfa-49d8-487e-957c-e1e46e7f85d1";
1259  var SKIP_VERIFY = false;
1260  var VERIFY_URL  = "https://ca-api-gateway-prod-001.happydune-ff51e933.westeurope.azurecontainerapps.io/primary/verify-recaptcha";
1261  var SUBMIT_URL  = "https://retwinstaticform.azurewebsites.net/api/status";
1262  /* ========================================== */
1263
1264  var input = document.querySelector("#phone") || document.querySelector('input[type="tel"]');
1265  if (!input) return;
1266
1267  /* ---------- phone dial code ---------- */
1268  var iti = window.intlTelInput(input, {
1269    initialCountry: "auto",
1270    geoIpLookup: function (callback) {
1271      fetch("https://ipapi.co/json")
1272        .then(function (res) { return res.json(); })
1273        .then(function (data) { callback(data.country_code); })
1274        .catch(function () { callback("in"); });
1275    },
1276    separateDialCode: true,
1277    showFlags: false,
1278    utilsScript: "https://cdn.jsdelivr.net/npm/[email protected]/build/js/utils.js"
1279  });
1280
1281  /* ---------- populate country select ---------- */
1282  var countrySelect = document.querySelector('select[name="country"]');
1283  if (countrySelect && window.intlTelInput.getCountryData) {
1284    var placeholder = document.createElement("option");
1285    placeholder.value = "";
1286    placeholder.textContent = "Country";
1287    placeholder.disabled = true;
1288    placeholder.selected = true;
1289    countrySelect.appendChild(placeholder);
1290    window.intlTelInput.getCountryData().forEach(function (c) {
1291      var opt = document.createElement("option");
1292      opt.value = c.name;
1293      opt.textContent = c.name;
1294      countrySelect.appendChild(opt);
1295    });
1296  }
1297
1298  /* ---------- align dial code with input ---------- */
1299  function alignDialCode() {
1300    var selected = document.querySelector(".iti__selected-country");
1301    if (!selected) return;
1302    var cs = getComputedStyle(input);
1303    selected.style.paddingTop = cs.paddingTop;
1304    selected.style.paddingBottom = cs.paddingBottom;
1305    selected.style.fontSize = cs.fontSize;
1306    selected.style.lineHeight = cs.lineHeight;
1307    selected.style.alignItems = "center";
1308    selected.removeAttribute("title");
1309  }
1310  setTimeout(alignDialCode, 300);
1311  setTimeout(alignDialCode, 1500);
1312
1313  /* ---------- dropdown scroll fix ---------- */
1314  function fixDropdownScroll() {
1315    var list = document.querySelector(".iti__country-list");
1316    var content = document.querySelector(".iti__dropdown-content");
1317    [list, content].forEach(function (el) {
1318      if (!el || el.dataset.scrollFixed) return;
1319      el.dataset.scrollFixed = "true";
1320      el.setAttribute("data-lenis-prevent", "");
1321      el.setAttribute("data-scroll-ignore", "");
1322      el.addEventListener("wheel", function (e) {
1323        e.stopPropagation();
1324        el.scrollTop += e.deltaY;
1325        e.preventDefault();
1326      }, { passive: false });
1327      el.addEventListener("touchmove", function (e) {
1328        e.stopPropagation();
1329      }, { passive: true });
1330    });
1331  }
1332  input.addEventListener("open:countrydropdown", fixDropdownScroll);
1333  document.addEventListener("click", function () {
1334    setTimeout(fixDropdownScroll, 50);
1335    setTimeout(alignDialCode, 100);
1336  });
1337
1338  /* ---------- custom submission flow ---------- */
1339  var form = input.closest("form");
1340  if (!form) return;
1341
1342  var wrapper   = form.closest(".w-form");
1343  var doneMsg   = wrapper ? wrapper.querySelector(".w-form-done") : null;
1344  var failMsg   = wrapper ? wrapper.querySelector(".w-form-fail") : null;
1345  var submitBtn = form.querySelector('[type="submit"]');
1346
1347  function showSuccess() {
1348    if (doneMsg) doneMsg.style.display = "block";
1349    if (failMsg) failMsg.style.display = "none";
1350    form.reset();
1351    if (countrySelect) countrySelect.selectedIndex = 0;
1352  }
1353  function showError(msg) {
1354    if (failMsg) {
1355      failMsg.style.display = "block";
1356      var div = failMsg.querySelector("div");
1357      if (div && msg) div.textContent = msg;
1358    }
1359    if (doneMsg) doneMsg.style.display = "none";
1360  }
1361  function setLoading(on) {
1362    if (!submitBtn) return;
1363    submitBtn.disabled = on;
1364    if (on) {
1365      submitBtn.dataset.originalText = submitBtn.value || submitBtn.textContent;
1366      if (submitBtn.value !== undefined) submitBtn.value = "Sending...";
1367      else submitBtn.textContent = "Sending...";
1368    } else {
1369      if (submitBtn.value !== undefined) submitBtn.value = submitBtn.dataset.originalText;
1370      else submitBtn.textContent = submitBtn.dataset.originalText;
1371    }
1372  }
1373
1374  function submitFormData() {
1375    var fd = new FormData(form);
1376    fd.set("phone", iti.getNumber());
1377    fd.append("access_key", ACCESS_KEY);
1378    return fetch(SUBMIT_URL, {
1379      method: "POST",
1380      mode: "no-cors",
1381      body: fd
1382    });
1383  }
1384
1385  form.addEventListener("submit", function (e) {
1386    e.preventDefault();
1387    e.stopPropagation();
1388
1389    input.value = iti.getNumber();
1390    setLoading(true);
1391
1392    if (SKIP_VERIFY) {
1393      submitFormData()
1394        .then(showSuccess)
1395        .catch(function (err) {
1396          console.error(err);
1397          showError("Something went wrong. Please try again.");
1398        })
1399        .finally(function () { setLoading(false); });
1400      return;
1401    }
1402
1403    grecaptcha.ready(function () {
1404      grecaptcha.execute(SITE_KEY, { action: ACTION }).then(function (token) {
1405        fetch(VERIFY_URL, {
1406          method: "POST",
1407          headers: { "Content-Type": "application/json" },
1408          body: JSON.stringify({
1409            event: { token: token, siteKey: SITE_KEY, expectedAction: ACTION }
1410          })
1411        })
1412        .then(function (res) { return res.json(); })
1413        .then(function (verify) {
1414          if (!verify.success) {
1415            throw new Error(verify.message || "reCAPTCHA verification failed");
1416          }
1417          return submitFormData();
1418        })
1419        .then(showSuccess)
1420        .catch(function (err) {
1421          console.error(err);
1422          showError("Something went wrong. Please try again.");
1423        })
1424        .finally(function () { setLoading(false); });
1425      });
1426    });
1427  }, true);
1428});
1429</script>
1429
1430
1431<style>
1432  .iti { width: 100%; }
1433
1434  .iti__country-container {
1435    top: 0 !important;
1436    bottom: 0 !important;
1437  }
1438  .iti__selected-country {
1439    display: flex !important;
1440    background: transparent !important;
1441    border: none !important;
1442    padding-right: 8px !important;
1443  }
1444  .iti__selected-country-primary {
1445    display: flex !important;
1446    align-items: center !important;
1447    gap: 4px;
1448    padding: 0 !important;
1449  }
1450  .iti .iti__selected-dial-code {
1451    color: #9e9e9e !important;
1452    font-size: 1rem !important;
1453  }
1454  .iti .iti__arrow {
1455    border-top-color: #9e9e9e !important;
1456    margin-left: 2px;
1457  }
1458  .iti input[type="tel"] {
1459    font-size: 1rem !important;
1460  }
1461  .iti__flag,
1462  .iti__globe {
1463    display: none !important;
1464  }
1465  .iti__dropdown-content {
1466    max-height: 300px !important;
1467    overflow: hidden !important;
1468  }
1469  .iti__country-list {
1470    max-height: 240px !important;
1471    overflow-y: scroll !important;
1472    overscroll-behavior: contain;
1473    -webkit-overflow-scrolling: touch;
1474  }
1475</style>
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485<style>
1486  @media screen and (max-width: 767px) {
1487    [data-carousel="track"] {
1488      display: flex;
1489      flex-wrap: nowrap;
1490      overflow-x: auto;
1491      scroll-snap-type: x mandatory;
1492      -webkit-overflow-scrolling: touch;
1493      gap: 16px;
1494      padding-bottom: 8px;
1495      scrollbar-width: none;
1496    }
1497    [data-carousel="track"]::-webkit-scrollbar { display: none; }
1498
1499    [data-carousel-card] {
1500      flex: 0 0 100%;
1501      scroll-snap-align: center;
1502    }
1503
1504    [data-carousel-dots] { display: flex !important; }
1505  }
1506
1507  [data-carousel-dots] {
1508    display: none;
1509    justify-content: center;
1510    gap: 8px;
1511    margin-top: 16px;
1512  }
1513  [data-carousel-dot] {
1514    width: 8px; height: 8px; border-radius: 50%;
1515    background: #4b4b4b; transition: background 0.2s;
1516  }
1517  [data-carousel-dot].is-active { background: #7c5cff; }
1518</style>
1519
1520<script>
1521document.addEventListener("DOMContentLoaded", () => {
1522  document.querySelectorAll('[data-carousel="track"]').forEach((track) => {
1523    const dotsWrap = track.parentElement.querySelector('[data-carousel-dots]')
1524                  || track.closest("section")?.querySelector('[data-carousel-dots]');
1525    if (!dotsWrap) return;
1526    const dots = dotsWrap.querySelectorAll('[data-carousel-dot]');
1527    if (!dots.length) return;
1528
1529    const setActive = (i) => dots.forEach((d, n) => d.classList.toggle("is-active", n === i));
1530
1531    setActive(0);
1532
1533    track.addEventListener("scroll", () => {
1534      const i = Math.round(track.scrollLeft / (track.scrollWidth / dots.length));
1535      setActive(i);
1536    });
1537  });
1538});
1539</script>
1539<style>
1540  /* ============================================== */
1541  /* ✏️ EDIT THESE VALUES TO TWEAK THE SLIDER */
1542  /* ============================================== */
1543
1544  /* Side card peek — more % = more overlap = LESS visible */
1545  .testimonials_section.tswp-on .swiper-slide-prev { transform: scale(0.92) translateX(40%) !important; }
1546  .testimonials_section.tswp-on .swiper-slide-next { transform: scale(0.92) translateX(-40%) !important; }
1547  /* ============================================== */
1548  .testimonials_section { overflow: hidden !important; }
1549  .testimonials_section .swiper { width: 100%; overflow: visible; padding: 30px 0; }
1550  .testimonials_section .swiper-wrapper { display: flex; align-items: center; }
1551
1552  /* Slides are only hidden AFTER Swiper actually initializes
1553     (.tswp-on is added by JS right before init). Before that,
1554     slides render normally — fixes the blank-on-first-load bug. */
1555  .testimonials_section.tswp-on .swiper-slide {
1556    flex-shrink: 0 !important;
1557    height: auto !important;
1558    opacity: 0;
1559    transform: scale(0.88);
1560    pointer-events: none;
1561    z-index: 0;
1562    transition: transform 0.5s ease, opacity 0.4s ease,
1563                background-color 0.4s ease, box-shadow 0.4s ease;
1564  }
1565  .testimonials_section.tswp-on .swiper-slide-prev,
1566  .testimonials_section.tswp-on .swiper-slide-next {
1567    opacity: 0.7;
1568    pointer-events: auto;
1569    z-index: 1;
1570  }
1571  .testimonials_section.tswp-on .swiper-slide-active {
1572    transform: scale(1) !important;
1573    background-color: #FFFFFF !important;
1574    opacity: 1;
1575    pointer-events: auto;
1576    box-shadow: 0 16px 48px rgba(15, 15, 25, 0.10);
1577    z-index: 2;
1578  }
1579  .testimonials_section .w-dyn-empty { display: none; }
1580
1581  /* Progress bar — duration auto-synced to autoplay delay via JS */
1582  @keyframes tswpProgress { from { width: 0%; } to { width: 100%; } }
1583  .testimonials_section.tswp-on .swiper-slide-active .testimonials_progress-bar {
1584    animation: tswpProgress var(--tswp-duration, 7s) linear forwards;
1585  }
1586
1587  /* ===== NAVIGATION ARROWS ===== */
1588  .testimonials_nav {
1589    width: 100%;
1590    display: flex;
1591    justify-content: center;
1592    align-items: center;
1593    gap: 16px;
1594    margin-top: -8px;
1595  }
1596  .testimonials_arrow {
1597    width: 52px;
1598    height: 52px;
1599    border-radius: 50%;
1600    border: 1px solid rgba(15, 15, 25, 0.12);
1601    background: #FFFFFF;
1602    color: #1a1a2e;
1603    display: flex;
1604    align-items: center;
1605    justify-content: center;
1606    cursor: pointer;
1607    padding: 0;
1608    transition: background-color 0.25s ease, color 0.25s ease,
1609                border-color 0.25s ease, transform 0.15s ease;
1610  }
1611  .testimonials_arrow:hover {
1612    background: #7b52e6;
1613    border-color: #7b52e6;
1614    color: #FFFFFF;
1615  }
1616  .testimonials_arrow:active { transform: scale(0.94); }
1617  .testimonials_arrow svg { display: block; }
1618</style>
1619
1620<script src="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.js"></script>
vendor: 1 bytes, line 1620
1620
1621<script>
1622(function () {
1623  var tries = 0;
1624  var MAX_TRIES = 50; // 50 × 200ms = retries for up to 10 seconds
1625
1626  function initTestimonialsSwiper() {
1627    var section = document.querySelector('.testimonials_section');
1628
1629    function retry() {
1630      if (tries++ < MAX_TRIES) setTimeout(initTestimonialsSwiper, 200);
1631      else console.warn('[Testimonials] Init gave up — slides left visible as fallback.');
1632    }
1633
1634    if (!section) return retry();
1635    if (section.dataset.tswpReady) return;                 // prevent double-init
1636    if (typeof Swiper === 'undefined') return retry();
1637
1638    var dynList = section.querySelector('.w-dyn-list');
1639    if (!dynList) return retry();
1640
1641    /* ============================================== */
1642    /* ✏️ TIMING — edit these two */
1643    var AUTOPLAY_DELAY   = 13000; // ← how long each slide stays (ms)
1644    var TRANSITION_SPEED = 700;   // ← slide animation duration (ms)
1645    /* ============================================== */
1646
1647    var swiperWrapper = dynList.parentElement;
1648    var swiperEl = swiperWrapper.parentElement;
1649
1650    section.style.setProperty('--tswp-duration', (AUTOPLAY_DELAY / 1000) + 's');
1651
1652    // Move CMS items to be direct children of swiper-wrapper
1653    section.querySelectorAll('.w-dyn-item').forEach(function (item) {
1654      item.classList.add('swiper-slide');
1655      swiperWrapper.appendChild(item);
1656    });
1657    swiperWrapper.querySelectorAll('.w-dyn-list, .w-dyn-empty').forEach(function (w) { w.remove(); });
1658
1659    var slideCount = swiperWrapper.querySelectorAll('.swiper-slide').length;
1660    console.log('[Testimonials] Found ' + slideCount + ' slides');
1661    if (!slideCount) return retry(); // CMS items not rendered yet — try again
1662
1663    // Build navigation arrows (bottom center)
1664    var nav = document.createElement('div');
1665    nav.className = 'testimonials_nav';
1666    nav.innerHTML =
1667      '<button class="testimonials_arrow testimonials_arrow-prev" aria-label="Previous testimonial">' +
1668        '<svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M15 18l-6-6 6-6" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>' +
1669      '</button>' +
1670      '<button class="testimonials_arrow testimonials_arrow-next" aria-label="Next testimonial">' +
1671        '<svg width="20" height="20" viewBox="0 0 24 24" fill="none"><path d="M9 18l6-6-6-6" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/></svg>' +
1672      '</button>';
1673    swiperEl.parentElement.appendChild(nav);
1674
1675    // Turn on "slider mode" CSS only now that init is guaranteed
1676    section.classList.add('tswp-on');
1677
1678    var swiper = new Swiper(swiperEl, {
1679      slidesPerView: 'auto',
1680      centeredSlides: true,
1681      spaceBetween: 24,
1682      loop: true,
1683      speed: TRANSITION_SPEED,
1684      grabCursor: true,
1685      watchSlidesProgress: true,
1686      observer: true,          // re-layout if Webflow changes the DOM
1687      observeParents: true,
1688      navigation: {
1689        prevEl: nav.querySelector('.testimonials_arrow-prev'),
1690        nextEl: nav.querySelector('.testimonials_arrow-next')
1691      },
1692      autoplay: {
1693        delay: AUTOPLAY_DELAY,
1694        disableOnInteraction: false,
1695        pauseOnMouseEnter: false
1696      }
1697    });
1698
1699    // Recalculate card widths once images/fonts fully load
1700    if (document.readyState === 'complete') {
1701      swiper.update();
1702    } else {
1703      window.addEventListener('load', function () { swiper.update(); });
1704    }
1705
1706    section.dataset.tswpReady = '1';
1707  }
1708
1709  if (document.readyState === 'loading') {
1710    document.addEventListener('DOMContentLoaded', initTestimonialsSwiper);
1711  } else {
1712    initTestimonialsSwiper();
1713  }
1714})();
1715</script>
1715
1716
1717
1718
1719<script>
1720(function () {
1721  if (!document.getElementById('dt-styles')) {
1722    var style = document.createElement('style');
1723    style.id = 'dt-styles';
1724    style.textContent = [
1725      '.digital-twin_step .digital-twin_step-image-wrap { opacity: 0.25; transition: opacity 0.4s ease, outline-color 0.3s ease; outline: 0.75px solid transparent; outline-offset: -0.75px; border-radius: 12px; }',
1726      '.digital-twin_step.is-active .digital-twin_step-image-wrap { opacity: 1 !important; outline-color: #7C5CFF !important; }',
1727      '.digital-twin_step .digital-twin_step-number { opacity: 0.25; transition: opacity 0.4s ease; }',
1728      '.digital-twin_step.is-active .digital-twin_step-number { opacity: 1 !important; }',
1729      '.digital-twin_step .digital-twin_step-title { opacity: 0.25; transition: opacity 0.4s ease, color 0.3s ease; }',
1730      '.digital-twin_step.is-active .digital-twin_step-title { opacity: 1 !important; color: #B45EFA !important; }',
1731      '.digital-twin_step .digital-twin_step-text { opacity: 0.25; transition: opacity 0.4s ease; }',
1732      '.digital-twin_step.is-active .digital-twin_step-text { opacity: 1 !important; }',
1733
1734      /* Marker row: fixed height, dot centered. No z-index on the marker
1735         itself so all dots paint above the line. */
1736      '.digital-twin_step .digital-twin_step-marker { position: relative !important; z-index: auto !important; height: 16px !important; display: flex !important; align-items: center !important; }',
1737      '.digital-twin_step .digital-twin_step-marker-dot { position: relative !important; z-index: 2 !important; opacity: 1; width: 16px; height: 16px; border-radius: 50%; background-color: #fff; border: 2px solid rgba(15,15,25,0.2); box-sizing: border-box; transition: background-color 0.3s ease, border-color 0.3s ease; }',
1738      '.digital-twin_step.is-active .digital-twin_step-marker-dot { background-color: #B45EFA !important; border-color: #B45EFA !important; }',
1739
1740      /* THE ONLY CHANGE: only the FIRST step draws the line (one single
1741         line = no doubled dashes), same position on the marker row at the
1742         dot centre. Round dots instead of dashes. */
1743      '.digital-twin_step .digital-twin_step-marker::before { display: none; }',
1744      '.digital-twin_step:first-child .digital-twin_step-marker::before { display: block; content: ""; position: absolute; top: 50%; left: 8px; width: 100vw; height: 3px; transform: translateY(-50%); background-image: radial-gradient(circle, rgba(15,15,25,0.25) 1.5px, transparent 1.5px); background-size: 12px 3px; background-repeat: repeat-x; background-position: left center; z-index: 0; pointer-events: none; }',
1745
1746      /* Clip the overshoot so the line never escapes the steps container */
1747      '.digital-twin_steps { position: relative !important; overflow: hidden !important; }',
1748
1749      '@media (max-width: 991px) {',
1750      '  .digital-twin_steps { grid-template-columns: 1fr !important; gap: 32px !important; overflow: visible !important; }',
1751      /* Vertical dotted line on mobile: drawn on the whole steps container */
1752      '  .digital-twin_step:first-child .digital-twin_step-marker::before { display: none !important; }',
1753      '  .digital-twin_steps::before { content: ""; position: absolute; top: 8px; bottom: 8px; left: 6px; width: 3px; background-image: radial-gradient(circle, rgba(15,15,25,0.25) 1.5px, transparent 1.5px); background-size: 3px 12px; background-repeat: repeat-y; background-position: center top; z-index: 0; pointer-events: none; }',
1754      '  .digital-twin_step { display: grid !important; grid-template-columns: 14px 1fr !important; column-gap: 16px !important; row-gap: 16px !important; }',
1755      '  .digital-twin_step .digital-twin_step-image-wrap { grid-column: 1 / -1 !important; display: block !important; width: 100% !important; max-height: 0 !important; opacity: 0 !important; overflow: hidden !important; margin: 0 !important; transition: max-height 0.55s cubic-bezier(0.4,0,0.2,1), opacity 0.4s ease, margin 0.4s ease !important; }',
1756      /* MOBILE IMAGE FIX: no fixed height, generous max-height, contain fit */
1757      '  .digital-twin_step.is-active .digital-twin_step-image-wrap { max-height: 600px !important; opacity: 1 !important; }',
1758      '  .digital-twin_step .digital-twin_step-image-wrap img { width: 100% !important; height: auto !important; max-height: none !important; object-fit: contain !important; display: block !important; }',
1759      '  .digital-twin_step .digital-twin_step-marker { display: flex !important; grid-column: 1 !important; height: auto !important; width: 14px !important; align-self: start !important; padding-top: 6px !important; justify-content: flex-start !important; }',
1760      '  .digital-twin_step .digital-twin_step-content { grid-column: 2 !important; }',
1761      '  .digital-twin_step .digital-twin_step-text { display: block !important; max-height: 0 !important; opacity: 0 !important; overflow: hidden !important; margin-top: 0 !important; transition: max-height 0.5s cubic-bezier(0.4,0,0.2,1), opacity 0.35s ease, margin 0.4s ease !important; }',
1762      '  .digital-twin_step.is-active .digital-twin_step-text { max-height: 400px !important; opacity: 1 !important; margin-top: 8px !important; }',
1763      '}'
1764    ].join('\n');
1765    document.head.appendChild(style);
1766  }
1767
1768  function init() {
1769    var steps = document.querySelectorAll('.digital-twin_step');
1770    if (!steps.length) return;
1771
1772    function setActive(target) {
1773      steps.forEach(function (s) { s.classList.remove('is-active'); });
1774      target.classList.add('is-active');
1775    }
1776    setActive(steps[0]);
1777
1778    var isMobile = !window.matchMedia('(hover: hover)').matches;
1779
1780    if (isMobile) {
1781      // Scroll-triggered: whichever step crosses the center band of the
1782      // viewport becomes active, one by one as the user scrolls.
1783      var observer = new IntersectionObserver(function (entries) {
1784        entries.forEach(function (entry) {
1785          if (entry.isIntersecting) {
1786            setActive(entry.target);
1787          }
1788        });
1789      }, {
1790        root: null,
1791        // Narrow horizontal band around the vertical center of the screen —
1792        // a step "activates" when it crosses that band.
1793        rootMargin: '-45% 0px -45% 0px',
1794        threshold: 0
1795      });
1796
1797      steps.forEach(function (step) { observer.observe(step); });
1798    } else {
1799      steps.forEach(function (step) {
1800        step.addEventListener('mouseenter', function () { setActive(step); });
1801      });
1802    }
1803  }
1804
1805  if (document.readyState === 'loading') {
1806    document.addEventListener('DOMContentLoaded', init);
1807  } else {
1808    init();
1809  }
1810})();
1811</script>
1811
1812
1813
1814<!-- ============================================================
1815     VCX VALUE-CHAIN CARDS — pure CSS expansion.
1816     Desktop (hover devices): expand on hover, +/× icon HIDDEN,
1817       panel right padding reclaimed (icon space not needed).
1818     Tablet/mobile (touch): tap toggles .is-open, icon visible.
1819     The +/× glyph is drawn with two CSS bars (::before/::after)
1820     so it is always perfectly centered in its circle.
1821     Open card takes 50% of the row (--vcx-grow: 3).
1822     THE WHITE BOX HAS A FIXED HEIGHT (--vcx-panel-h) in REM —
1823     identical on all 4 cards at every screen size.
1824     ============================================================ -->
1825<style>
1826  .vcx-row  { align-items: stretch; }
1827  .vcx-card {
1828    --vcx-ease: cubic-bezier(0.33, 1, 0.68, 1);
1829    --vcx-time: 0.7s;
1830    --vcx-grow: 3;              /* ✏️ open card width: 3 = 50% of row */
1831  }
1832
1833  /* ---- FIXED WHITE-BOX HEIGHT (the "X") — ✏️ edit these ----
1834     In rem so it scales with the text: 12rem = 192px at default. */
1835  .vcx-card { --vcx-panel-h: 12rem; }                    /* desktop  */
1836  @media (min-width: 768px) and (max-width: 991px) {
1837    .vcx-card { --vcx-panel-h: 13rem; }                  /* tablet   */
1838  }
1839  @media (max-width: 767px) {
1840    .vcx-card { --vcx-panel-h: 11rem; }                  /* mobile   */
1841  }
1842  /* Every expanded panel opens to exactly this height: */
1843  .vcx-card.is-open .vcx-panel { min-height: var(--vcx-panel-h); }
1844
1845  /* ---- description: hidden state + reveal motion ---- */
1846  .vcx-desc {
1847    padding-right: 0;
1848    transform: translateY(10px);
1849    transition:
1850      opacity 0.25s ease,
1851      transform 0.45s var(--vcx-ease),
1852      padding var(--vcx-time) var(--vcx-ease);
1853  }
1854  /* Width = final expanded panel inner width, constant at any given
1855     viewport size, so lines never re-wrap during the animation.
1856     Open card = 50% of (container - gaps); container = min(100vw - 4rem, 80rem). */
1857  @media (min-width: 992px) {
1858    .vcx-desc { width: min(calc(50vw - 114px), 558px); max-width: none; }
1859  }
1860  @media (min-width: 768px) and (max-width: 991px) {
1861    .vcx-desc { width: calc(50vw - 160px); max-width: none; }
1862  }
1863
1864  /* ---- open state (shared by hover + tap) ---- */
1865  .vcx-card.is-open .vcx-desc {
1866    opacity: 1;
1867    transform: translateY(0);
1868    padding-top: 10px;
1869    transition:
1870      opacity 0.45s ease 0.22s,
1871      transform 0.6s var(--vcx-ease) 0.18s,
1872      padding var(--vcx-time) var(--vcx-ease);
1873  }
1874  .vcx-card.is-open { flex-grow: var(--vcx-grow); }
1875  .vcx-card.is-open .vcx-panel {
1876    grid-template-rows: auto 1fr;
1877    background-color: #ffffff;
1878    background-image: none;
1879    color: #0f0f12;
1880  }
1881
1882  /* Desktop-only hover — scoped to real hover devices so tablets
1883     never get "sticky hover" fighting the tap state. */
1884  @media (hover: hover) and (pointer: fine) {
1885    /* icon is hidden on desktop → reclaim its reserved space so
1886       the text can use the full panel width */
1887    .vcx-panel { padding-right: 28px; }
1888    .vcx-icon  { display: none !important; }
1889
1890    .vcx-card:hover { flex-grow: var(--vcx-grow); }
1891    .vcx-card:hover .vcx-panel {
1892      min-height: var(--vcx-panel-h);
1893      grid-template-rows: auto 1fr;
1894      background-color: #ffffff;
1895      background-image: none;
1896      color: #0f0f12;
1897    }
1898    .vcx-card:hover .vcx-desc {
1899      opacity: 1;
1900      transform: translateY(0);
1901      padding-top: 10px;
1902      transition:
1903        opacity 0.45s ease 0.22s,
1904        transform 0.6s var(--vcx-ease) 0.18s,
1905        padding var(--vcx-time) var(--vcx-ease);
1906    }
1907    .vcx-card:hover .vcx-panel::before,
1908    .vcx-card:hover .vcx-panel::after { opacity: 1; }
1909    .vcx-card:hover .vcx-img { transform: scale(1.04); }
1910  }
1911
1912  /* inverted corner notches — round the image's bottom corners
1913     where it meets the white panel (12px = card radius) */
1914  .vcx-panel::before,
1915  .vcx-panel::after {
1916    content: "";
1917    position: absolute;
1918    top: -12px;
1919    width: 12px;
1920    height: 12px;
1921    opacity: 0;
1922    pointer-events: none;
1923    transition: opacity 0.4s ease;
1924  }
1925  .vcx-panel::before {
1926    left: 0;
1927    background: radial-gradient(circle at 100% 0, rgba(255,255,255,0) 12px, #ffffff 12.5px);
1928  }
1929  .vcx-panel::after {
1930    right: 0;
1931    background: radial-gradient(circle at 0 0, rgba(255,255,255,0) 12px, #ffffff 12.5px);
1932  }
1933  .vcx-card.is-open .vcx-panel::before,
1934  .vcx-card.is-open .vcx-panel::after { opacity: 1; }
1935
1936  /* subtle image zoom — same clock as the card growth */
1937  .vcx-img { transition: transform var(--vcx-time) var(--vcx-ease); }
1938  .vcx-card.is-open .vcx-img { transform: scale(1.04); }
1939
1940  /* ---- plus icon (touch only) ----
1941     The +/× is drawn with two centered bars instead of the "+"
1942     text character (the font glyph sits off-center vertically).
1943     The whole circle rotates 45° into an × when open. */
1944  .vcx-icon {
1945    font-size: 0 !important;      /* hide the text "+" glyph */
1946    transition:
1947      transform 0.5s var(--vcx-ease),
1948      background-color 0.3s ease,
1949      color 0.3s ease,
1950      border-color 0.3s ease;
1951  }
1952  .vcx-icon::before,
1953  .vcx-icon::after {
1954    content: "";
1955    position: absolute;
1956    left: 50%;
1957    top: 50%;
1958    background-color: currentColor;
1959    border-radius: 1px;
1960  }
1961  .vcx-icon::before { width: 14px; height: 1.5px; transform: translate(-50%, -50%); }
1962  .vcx-icon::after  { width: 1.5px; height: 14px; transform: translate(-50%, -50%); }
1963  .vcx-card.is-open .vcx-icon {
1964    transform: rotate(45deg);
1965    color: #0f0f12;
1966    border-color: rgba(15, 15, 18, 0.3);
1967    background-color: rgba(15, 15, 18, 0.06);
1968  }
1969
1970  /* mobile: stacked cards grow taller when opened —
1971     ✏️ 400px = open card height (bigger image area) */
1972  @media (max-width: 767px) {
1973    .vcx-card.is-open { height: 400px; }
1974    .vcx-desc { width: auto; }
1975  }
1976
1977  @media (prefers-reduced-motion: reduce) {
1978    .vcx-card, .vcx-panel, .vcx-desc, .vcx-img, .vcx-icon,
1979    .vcx-panel::before, .vcx-panel::after { transition: none !important; }
1980  }
1981</style>
1982
1983<script>
1984(function () {
1985  // Touch devices only — desktop is 100% CSS :hover.
1986  if (window.matchMedia('(hover: hover) and (pointer: fine)').matches) return;
1987  var cards = document.querySelectorAll('[data-vcx-card]');
1988  if (!cards.length) return;
1989  cards.forEach(function (card) {
1990    card.addEventListener('click', function () {
1991      var wasOpen = card.classList.contains('is-open');
1992      cards.forEach(function (c) { c.classList.remove('is-open'); });
1993      if (!wasOpen) card.classList.add('is-open');
1994    });
1995  });
1996})();
1997</script>
1997
1998
1999
2000
2001<script>
2002(function () {
2003  function setup(stage) {
2004    var map = [
2005      ['vx-circle-top', 'vx-label-top', 'top'],
2006      ['vx-circle-left', 'vx-label-left', 'left'],
2007      ['vx-circle-right', 'vx-label-right', 'right']
2008    ];
2009
2010    map.forEach(function (m) {
2011      var c = stage.querySelector('.' + m[0]);
2012      if (c && !c.querySelector('.vx-fill')) {
2013        var f = document.createElement('div');
2014        f.className = 'vx-fill';
2015        c.appendChild(f);
2016      }
2017    });
2018
2019    var mqMobile = window.matchMedia('(max-width: 1100px)');
2020
2021    /* ---- desktop hover — unchanged from before ---- */
2022    map.forEach(function (m) {
2023      var c = stage.querySelector('.' + m[0]);
2024      if (!c) return;
2025      c.addEventListener('mouseenter', function () {
2026        if (stage.classList.contains('vx-on')) stage.setAttribute('data-active', m[2]);
2027      });
2028      c.addEventListener('mouseleave', function () {
2029        if (stage.classList.contains('vx-on')) stage.setAttribute('data-active', 'center');
2030      });
2031    });
2032
2033    /* ---- mobile/tablet: tap a circle (or its label) to reveal its
2034       paragraph below the venn. No-op above 1100px so desktop's
2035       hover behaviour above is completely untouched. ---- */
2036    map.forEach(function (m) {
2037      var c = stage.querySelector('.' + m[0]);
2038      var l = stage.querySelector('.' + m[1]);
2039      [c, l].forEach(function (el) {
2040        if (!el) return;
2041        el.addEventListener('click', function () {
2042          if (!mqMobile.matches) return;
2043          if (!stage.classList.contains('vx-on')) return;
2044          stage.setAttribute('data-active', m[2]);
2045        });
2046      });
2047    });
2048
2049    /* ---- relocate the panels below the stage on mobile/tablet,
2050       restore them inside the stage (desktop side layout) above
2051       1100px. All three panels get wrapped in a single
2052       .vx-panel-wrap (CSS Grid, all children on the same
2053       grid-area:1/1) so the space is reserved at all times and
2054       tapping only crossfades opacity — no layout shift. Same
2055       physical-move technique used for .hiw_tabs. ---- */
2056    var panelKeys = ['top', 'left', 'right'];
2057    var panels = {};
2058    panelKeys.forEach(function (k) {
2059      panels[k] = stage.querySelector('.vx-panel-' + k);
2060    });
2061
2062    function getWrap() {
2063      var wrap = stage.parentElement.querySelector(':scope > .vx-panel-wrap');
2064      if (!wrap) {
2065        wrap = document.createElement('div');
2066        wrap.className = 'vx-panel-wrap';
2067        stage.parentElement.insertBefore(wrap, stage.nextSibling);
2068      }
2069      return wrap;
2070    }
2071
2072    function placeMobile() {
2073      var wrap = getWrap();
2074      panelKeys.forEach(function (k) {
2075        var p = panels[k];
2076        if (!p) return;
2077        p.classList.add('vx-panel-relocated');
2078        wrap.appendChild(p);
2079      });
2080    }
2081
2082    function placeDesktop() {
2083      panelKeys.forEach(function (k) {
2084        var p = panels[k];
2085        if (!p) return;
2086        p.classList.remove('vx-panel-relocated');
2087        stage.appendChild(p);
2088      });
2089    }
2090
2091    function syncPanelLayout() {
2092      if (mqMobile.matches) placeMobile();
2093      else placeDesktop();
2094    }
2095    syncPanelLayout();
2096    if (mqMobile.addEventListener) {
2097      mqMobile.addEventListener('change', syncPanelLayout);
2098    } else if (mqMobile.addListener) {
2099      mqMobile.addListener(syncPanelLayout);
2100    }
2101
2102    function activate() {
2103      stage.classList.add('vx-on');
2104      stage.setAttribute('data-active', 'center');
2105    }
2106    if (window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
2107      activate();
2108      return;
2109    }
2110    if ('IntersectionObserver' in window) {
2111      var io = new IntersectionObserver(function (entries) {
2112        entries.forEach(function (e) {
2113          if (e.isIntersecting) { activate(); io.disconnect(); }
2114        });
2115      }, { threshold: 0.55 });
2116      io.observe(stage);
2117    } else {
2118      activate();
2119    }
2120  }
2121  function init() {
2122    document.querySelectorAll('.vx-stage').forEach(setup);
2123  }
2124  document.readyState === 'loading'
2125    ? document.addEventListener('DOMContentLoaded', init)
2126    : init();
2127})();
2128</script>
2128
2129
2130
2131
2132
2133
2134<script>
2135(function () {
2136  document.querySelectorAll('.badge-zone').forEach(function (zone) {
2137    var id = zone.getAttribute('data-badge');
2138    var graph = document.querySelector('.hero-graph[data-badge="' + id + '"]');
2139    if (!graph) return;
2140    zone.addEventListener('mouseenter', function () {
2141      graph.style.opacity = '1';
2142    });
2143    zone.addEventListener('mouseleave', function () {
2144      graph.style.opacity = '0';
2145    });
2146  });
2147})();
2148</script>
2148
2149
2150
2151
2152
2153<script>
2154(function () {
2155  function I() {
2156    var s = document.querySelector('[data-htw]');
2157    if (!s) return;
2158    var r = s.querySelector('.htw-row'),
2159        L = s.querySelectorAll('.htw-link'),
2160        P = s.querySelectorAll('.htw-pane');
2161    if (!r || !L.length || !P.length) return;
2162
2163    P[0].parentElement.style.cssText += ';position:relative;display:grid';
2164
2165    if (!document.getElementById('htw-x')) {
2166      var st = document.createElement('style');
2167      st.id = 'htw-x';
2168      st.textContent = '.htw-row{position:relative}.htw-link{transition:color .3s ease!important;border-bottom-color:transparent!important}.htw-link.htw-on{color:#B45EFA!important}.htw-i{position:absolute;bottom:-1px;left:0;height:2px;background:#B45EFA;pointer-events:none}.htw-pane{display:block!important;grid-area:1/1;opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .45s ease-out,transform .45s ease-out}.htw-pane.htw-on{opacity:1;transform:none;pointer-events:auto;transition:opacity .4s ease-out .08s,transform .5s ease-out .08s}';
2169      document.head.appendChild(st);
2170    }
2171
2172    var i = r.querySelector('.htw-i');
2173    if (!i) { i = document.createElement('span'); i.className = 'htw-i'; r.appendChild(i); }
2174    var T = 'transform .5s ease-out,width .5s ease-out';
2175    function M(l, a) {
2176      if (!l) return;
2177      var b = l.getBoundingClientRect(), p = r.getBoundingClientRect();
2178      i.style.transition = a ? T : 'none';
2179      i.style.transform = 'translateX(' + (b.left - p.left) + 'px)';
2180      i.style.width = b.width + 'px';
2181      if (!a) { void i.offsetWidth; i.style.transition = T; }
2182    }
2183
2184    /* ================= VIDEO AUTO-ADVANCE ================= */
2185    var cur = 0, inView = false;
2186    var V = [];
2187    P.forEach(function (p, j) {
2188      var v = p.querySelector('video');
2189      V[j] = v || null;
2190      if (!v) return;
2191      v.removeAttribute('loop'); v.loop = false; /* loop off so "ended" fires */
2192      v.muted = true;
2193      v.addEventListener('ended', function () {
2194        if (j !== cur || !inView) return;
2195        A((cur + 1) % L.length, true); /* 1→2→3→1 */
2196      });
2197    });
2198    function playOnly(n) {
2199      V.forEach(function (v, j) {
2200        if (!v) return;
2201        if (j === n && inView) {
2202          try { v.currentTime = 0; } catch (e) {}
2203          var pr = v.play();
2204          if (pr && pr.catch) pr.catch(function () {});
2205        } else {
2206          v.pause();
2207        }
2208      });
2209    }
2210    /* ====================================================== */
2211
2212    function A(n, anim) {
2213      cur = n;
2214      L.forEach(function (l, j) { l.classList.toggle('htw-on', j === n); });
2215      P.forEach(function (p, j) { p.classList.toggle('htw-on', j === n); });
2216      M(L[n], anim !== false);
2217      playOnly(n);
2218    }
2219    L.forEach(function (l, n) {
2220      l.addEventListener('click', function (e) { e.preventDefault(); A(n, true); });
2221    });
2222
2223    var k = 0;
2224    for (var n = 0; n < L.length; n++) if (L[n].classList.contains('htw-on')) { k = n; break; }
2225    A(k, false);
2226
2227    /* only play/cycle while the section is actually on screen */
2228    if ('IntersectionObserver' in window) {
2229      new IntersectionObserver(function (es) {
2230        es.forEach(function (e) {
2231          inView = e.isIntersecting;
2232          playOnly(cur);
2233        });
2234      }, { threshold: 0.25 }).observe(s);
2235    } else { inView = true; playOnly(cur); }
2236
2237    var t, R = function () {
2238      clearTimeout(t);
2239      t = setTimeout(function () { M(s.querySelector('.htw-link.htw-on') || L[0], 0); }, 80);
2240    };
2241    addEventListener('resize', R);
2242    addEventListener('load', R);
2243  }
2244  document.readyState === 'loading' ? document.addEventListener('DOMContentLoaded', I) : I();
2245})();
2246</script>
2246
2247
2248
2249
2250
2251
2252
2253<script>
2254(function () {
2255  var css = document.createElement('style');
2256  css.textContent =
2257    '.hiw_tab-link .hiw_tab-top img{display:none!important;flex-shrink:0!important;width:32px!important;height:32px!important;object-fit:contain!important;border-radius:8px!important;background-color:rgba(108,71,230,0.15)!important;padding:4px!important;box-sizing:border-box!important}' +
2258    '.hiw_tab-link.w--current .hiw_tab-top img{display:block!important}' +
2259    '.hiw_tabs-menu::before{display:none!important}' +
2260    '@media(max-width:767px){.hiw_tabs-menu>div{display:none!important}}' +
2261    '@media(min-width:768px){.hiw_sticky-outer{height:200vh!important;position:relative!important}.hiw_sticky-inner{position:sticky!important;top:0!important;height:100vh!important;display:flex!important;flex-direction:column!important;justify-content:center!important}}';
2262  document.head.appendChild(css);
2263  function init() {
2264    document.querySelectorAll('.hiw_tabs').forEach(function (c) {
2265      var links = c.querySelectorAll('.hiw_tab-link');
2266      var panes = c.querySelectorAll('.hiw_tab-pane');
2267      if (!links.length) return;
2268      if (!c.querySelector('.hiw_tab-link.w--current')) links[0].classList.add('w--current');
2269      if (!c.querySelector('.hiw_tab-pane.w--tab-active') && panes[0]) panes[0].classList.add('w--tab-active');
2270      function activate(idx) {
2271        links.forEach(function (l) { l.classList.remove('w--current'); });
2272        panes.forEach(function (p) { p.classList.remove('w--tab-active'); });
2273        links[idx].classList.add('w--current');
2274        var t = links[idx].getAttribute('data-w-tab');
2275        var pane = c.querySelector('.hiw_tab-pane[data-w-tab="' + t + '"]');
2276        if (pane) pane.classList.add('w--tab-active');
2277      }
2278      links.forEach(function (link, idx) {
2279        link.addEventListener('click', function (e) { e.preventDefault(); activate(idx); });
2280      });
2281      var wrap = document.querySelector('.hiw_sticky-outer');
2282      if (!wrap) return;
2283      var ticking = false;
2284      function isDesktop() { return window.matchMedia('(min-width:768px)').matches; }
2285      function onScroll() {
2286        ticking = false;
2287        if (!isDesktop()) return;
2288        var rect = wrap.getBoundingClientRect();
2289        var scrollable = wrap.offsetHeight - window.innerHeight;
2290        var progress = scrollable > 0 ? (-rect.top) / scrollable : 0;
2291        progress = Math.max(0, Math.min(1, progress));
2292        var idx = Math.min(links.length - 1, Math.floor(progress * links.length));
2293        if (!links[idx].classList.contains('w--current')) activate(idx);
2294      }
2295      function requestTick() { if (!ticking) { ticking = true; requestAnimationFrame(onScroll); } }
2296      window.addEventListener('scroll', requestTick, { passive: true });
2297      window.addEventListener('resize', requestTick);
2298      onScroll();
2299    });
2300  }
2301  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);
2302  else init();
2303})();
2304</script>
2304<script src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8%2F689e5ba67671442434f3ca35%2F69f09b162c877ef8dd22fdb3%2Ftestimonials_swiper_init-1.0.0.js" type="text/javascript"></script>
2304<script src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8%2F689e5ba67671442434f3ca35%2F69f1d4404b3e166791adefe6%2Fhiw_tabs_indicator-1.0.0.js" type="text/javascript"></script>
2304<script src="https://cdn.prod.website-files.com/69d32cb2aba469d7fb2a1ab8%2F689e5ba67671442434f3ca35%2F69f344a6cf4b9649f7be77f8%2Fblog_filter_tabs-1.0.0.js" type="text/javascript"></script>
2304</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.