PageSourceSearch

https://www.redstone.finance/contact/

html redstone.finance collected 2026-09-25 04:26:28 UTC 99,985 bytes, 1,017 lines download raw bytes

1<!DOCTYPE html><html lang="en"> <head><meta charset="utf-8"><title>Contact | RedStone</title><meta name="mcp-server" content="https://mcp.redstone.finance/mcp"><meta name="a2a-agent" content="https://a2a.redstone.finance/.well-known/agent.json"><meta name="llms-context" content="https://www.redstone.finance/llms.txt"><meta content="Reach out to the RedStone team for integration support, partnership inquiries, or general questions." name="description"><meta content="Contact | RedStone" property="og:title"><meta content="Reach out to the RedStone team for integration support, partnership inquiries, or general questions." property="og:description"><meta content="https://cdn.prod.website-files.com/67519197ce9eaef4601a6287/677f9f8bb6ae73e45b28a6fb_Variant2%20(3).png" property="og:image"><meta content="https://www.redstone.finance/contact/" property="og:url"><meta content="Contact | RedStone" property="twitter:title"><meta content="Reach out to the RedStone team for integration support, partnership inquiries, or general questions." property="twitter:description"><meta content="https://cdn.prod.website-files.com/67519197ce9eaef4601a6287/677f9f8bb6ae73e45b28a6fb_Variant2%20(3).png" property="twitter:image"><meta property="og:type" content="website"><meta property="og:site_name" content="RedStone Finance"><meta content="summary_large_image" name="twitter:card"><meta name="twitter:site" content="@redstone_defi"><meta content="width=device-width, initial-scale=1" name="viewport"><link rel="canonical" href="https://www.redstone.finance/contact/">
1<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.redstone.finance/#organization","name":"RedStone Finance","alternateName":"RedStone","url":"https://www.redstone.finance","logo":{"@type":"ImageObject","url":"https://www.redstone.finance/images/Redstone-Logo_2.svg"},"description":"RedStone is a modular oracle stack providing secure, real-time price data and risk ratings for institutional DeFi. Live across 110+ networks with 1,300+ price feeds, integrated by 200+ protocols, with data signed by 21+ independent professional providers, securing $9B+ in total value.","foundingDate":"2021","sameAs":["https://x.com/redstone_defi","https://github.com/redstone-finance","https://www.linkedin.com/company/redstone-finance/","https://www.youtube.com/@redstone_defi","https://discord.gg/redstonedefi","https://www.coingecko.com/en/coins/redstone-oracles"],"contactPoint":{"@type":"ContactPoint","contactType":"technical support","url":"https://www.redstone.finance/contact"}},{"@type":"WebSite","@id":"https://www.redstone.finance/#website","url":"https://www.redstone.finance","name":"RedStone Finance","description":"Secure, modular data infrastructure for onchain finance, trusted by top DeFi protocols and institutions.","publisher":{"@id":"https://www.redstone.finance/#organization"},"inLanguage":"en"}]}</script>
1<!-- Self-hosted fonts – preload critical weights (Sequel Sans + Roboto Mono). --><link rel="preload" as="font" type="font/ttf" href="/fonts/Sequel-Sans-Roman-Disp.ttf" crossorigin="anonymous"><link rel="preload" as="font" type="font/ttf" href="/fonts/Sequel-Sans-Semi-Bold-Disp.ttf" crossorigin="anonymous"><link rel="preload" as="font" type="font/ttf" href="/fonts/RobotoMono-Regular.ttf" crossorigin="anonymous"><link rel="preload" as="font" type="font/ttf" href="/fonts/RobotoMono-Bold.ttf" crossorigin="anonymous">
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="/css/normalize.css" rel="stylesheet" type="text/css"><link href="/css/webflow.css" rel="stylesheet" type="text/css"><link href="/css/redstone-fa43b1-9f98392654621f594494bb3.webflow.css" rel="stylesheet" type="text/css"><!-- Favicons --><link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png"><link rel="icon" type="image/png" sizes="512x512" href="/images/android-chrome-512x512.png"><link rel="icon" type="image/png" sizes="192x192" href="/images/android-chrome-192x192.png"><link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon.png">
vendor: 63 bytes, line 1
1<script async src="https://www.googletagmanager.com/gtag/js?id=
1G-FT767HW5C2
vendor: 11 bytes, line 1
1"></script>
1<script>
2    
vendor: 152 bytes, lines 2-7
2window.dataLayer = window.dataLayer || [];
3    function gtag() {
4      dataLayer.push(arguments);
5    }
6    gtag("js", new Date());
7    gtag("config", "
7G-FT767HW5C2
vendor: 6 bytes, lines 7-8
7");
8  
8</script>
8<!-- Hotjar Tracking Code for Site 6775098 -->
8<script>
vendor: 125 bytes, lines 8-11
8
9    (function(h,o,t,j,a,r){
10        h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
11        h._hjSettings={hjid:
116775098
vendor: 260 bytes, lines 11-17
11,hjsv:6};
12        a=o.getElementsByTagName('head')[0];
13        r=o.createElement('script');r.async=1;
14        r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
15        a.appendChild(r);
16    })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
17  
17</script>
17<!-- GTM snippet moved to <body> – no longer render-blocking --><link rel="stylesheet" href="/_astro/Footer.Bn5y26MA.css"><link rel="stylesheet" href="/_astro/contact.B6YnoUH5.css"></head> <body> <!-- GTM noscript – must be immediately after opening <body> tag -->
vendor: 68 bytes, line 17
17 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
17GTM-MZ39PDDC
vendor: 84 bytes, line 17
17" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>  
17<header class="rs-header" id="rs-header" data-theme="dark" role="banner" data-astro-cid-eiyd7voq> <div class="rs-header__inner" data-astro-cid-eiyd7voq> <!-- Logo (single SVG, inverted via CSS filter on light themes) --> <a href="/" class="rs-header__logo" aria-label="RedStone Finance – Home" data-astro-cid-eiyd7voq> <img src="/images/Redstone-Logo_2.svg" class="rs-logo" loading="eager" alt="RedStone Logo" width="127" height="24" data-astro-cid-eiyd7voq> </a> <!-- Desktop Nav --> <nav class="rs-nav" role="navigation" aria-label="Main navigation" data-astro-cid-eiyd7voq> <!-- Products Mega Menu: text link → /product-stack, chevron toggles mega --> <div class="rs-nav__item rs-nav__item--mega" id="nav-products" data-astro-cid-eiyd7voq> <div class="rs-nav__trigger-split" data-astro-cid-eiyd7voq> <a href="/product-stack/" class="rs-nav__trigger-text" aria-controls="mega-products" data-astro-cid-eiyd7voq>
18Products
19</a> <button class="rs-nav__trigger-chevron" aria-expanded="false" aria-controls="mega-products" type="button" aria-label="Open Products menu" data-astro-cid-eiyd7voq> <svg class="rs-nav__chevron" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq> <path d="M2 4L6 8L10 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> </svg> </button> </div> <div class="rs-mega" id="mega-products" role="region" aria-label="Products submenu" data-astro-cid-eiyd7voq> <div class="rs-mega__inner" data-astro-cid-eiyd7voq> <!-- Left: product list --> <div class="rs-mega__list" role="list" data-astro-cid-eiyd7voq> <div class="rs-mega__stack-container" data-astro-cid-eiyd7voq> <a href="/product-stack/" class="rs-mega__item rs-mega__item--stack-main" role="listitem" data-product="product-stack" data-title="Product Stack" data-desc="Explore our entire modular infrastru
19cture stack. Read how our modular data pipelines, security models, and cross-chain oracles tie together to power DeFi." data-tags="CORE ARCHITECTURE · OVERVIEW" data-clients="Binance,HyperLend,Lista DAO,Gauntlet" data-astro-cid-eiyd7voq> <svg class="rs-mega__static-icon" width="40" height="40" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq> <path d="M3 6L10 2.5L17 6L10 9.5L3 6Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> <path d="M3 10L10 13.5L17 10" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> <path d="M3 14L10 17.5L17 14" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> </svg> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Product Stack</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Our entire modular ecosystem</span> </div> </a> <div class="rs-mega__stack-divider" data-astro-cid-eiyd7voq></div> <div class="rs-mega__list-group" data-astro-cid-eiyd7voq> <div class="rs-mega__list-header" data-astro-cid-eiyd7voq>Core Data Feeds</div> <a href="/price-feeds/" class="rs-mega__item" role="listitem" data-product="price-feeds" data-title="Price Feeds" data-desc="Real-time, tamper-proof price data for any financial asset on any blockchain. Our modular architecture delivers high-frequency updates with cryptographic guarantees." data-tags="Pull / Push · 1300+ Assets · 110+ Chains" data-clients="Securitize,Canton,Morpho,Spiko,Tempo" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/04-Micro-Investors.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Price Feeds</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Pull · Push · 110+ chains</span> </div> </a> <a href="/proof-of-reserves/" class="rs-mega__item" role="listitem" data-product="proof-of-reserve" data-title="Proof of Reserve" data-desc="Real-time Proof of Reserves for digital and tokenized assets. RedStone helps protocols prevent insolvency risks and demonstrate collateral transparency onchain." data-tags="Cross-chain · RWA · BTC · ETH" data-clients="Lombard,Radiant Prime" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/02-Micro-Assets.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Proof of Reserve</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Cross-chain · RWA</span> </div> </a> <div class="rs-mega__list-header" data-astro-cid-eiyd7voq>Specialized Oracles</div> <a href="/atom/" class="rs-mega__item" role="listitem" data-product="atom" data-title="Atom" data-desc="Atom keeps liquidation value inside your protocol. OEV (oracle extractable value) capture returns value that oracles traditionally leak to bots — optimizing LTV and improving protocol capital efficiency." data-tags="OEV · LTV · MEV-resistant" data-clients="Felix,Venus,HyperLend" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/menu-product-03-Atom.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Atom</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>OEV · MEV-resistant</span> </div> </a> <a href="/bolt/" class="rs-mega__item" role="listitem" data-product="bolt" data-title="Bolt" data-desc="Ultra-fast push oracle for high-frequency trading and real-time DeFi applications. Sub-second latency with guaranteed delivery — built for protocols that can't wait." data-tags="Sub-second · High-frequency · Push" data-clients="Euphoria,Curvance,Euler" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/Menu---Bolt.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Bolt</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Sub-second · Push</span> </div> </a> <a href="/live/" class="rs-mega__item" role="listitem" data-product="live" data-title="RedStone Live" data-desc="RedStone Live is a low-latency 24/7, off-chain data streaming service delivering equities, commodities, forex, indexes, and crypto." data-tags="REAL-TIME · 24/7 · DATA PROVIDING" data-clients="Binance,Entropy,Derive,GRVT,Initia,E
19xtended" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/RedStoneLive_NavIcon.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>
20RedStone Live
21</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Real-time · Monitoring</span> </div> </a> <a href="/settle/" class="rs-mega__item" role="listitem" data-product="settle" data-title="RedStone Settle" data-desc="T+0 settlement for RWA collateral on lending protocols." data-tags="RWA · LENDING · SETTLEMENT" data-clients="Symbiotic" data-astro-cid-eiyd7voq> <div class="rs-mega__item-lottie" data-lottie="/documents/Settle_NavIcon.json" data-astro-cid-eiyd7voq></div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>RedStone Settle</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>T+0 · RWA Collateral</span> </div> </a> </div><!-- /.rs-mega__list-group --> </div><!-- /.rs-mega__stack-container --> </div><!-- /.rs-mega__list --> <!-- Right: detail panel --> <div class="rs-mega__detail" id="mega-detail" aria-live="polite" data-astro-cid-eiyd7voq> <div class="rs-mega__detail-content" data-astro-cid-eiyd7voq> <p class="rs-mega__detail-tags" id="mega-tags" data-astro-cid-eiyd7voq></p> <h3 class="rs-mega__detail-title" id="mega-title" data-astro-cid-eiyd7voq></h3> <p class="rs-mega__detail-desc" id="mega-desc" data-astro-cid-eiyd7voq></p> <div class="rs-mega__detail-clients" id="mega-clients-container" data-astro-cid-eiyd7voq> <span class="rs-mega__detail-clients-label" data-astro-cid-eiyd7voq>INTEGRATED WITH</span> <div class="rs-mega__detail-clients-list" id="mega-clients-list" data-astro-cid-eiyd7voq></div> </div> </div> </div> </div><!-- /.rs-mega__inner --> </div><!-- /.rs-mega --> </div><!-- /#nav-products --> <!-- Developers Mega --> <div class="rs-nav__item rs-nav__item--mega" id="nav-developers" data-astro-cid-eiyd7voq> <button class="rs-nav__trigger" aria-expanded="false" aria-controls="mega-developers" type="button" data-astro-cid-eiyd7voq>
22Developers
23<svg class="rs-nav__chevron" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq> <path d="M2 4L6 8L10 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> </svg> </button> <div class="rs-mega rs-mega--simple" id="mega-developers" role="region" aria-label="Developers submenu" data-astro-cid-eiyd7voq> <div class="rs-mega__inner rs-mega__inner--3col" data-astro-cid-eiyd7voq> <div class="rs-mega__list rs-mega__list--simple" role="list" data-astro-cid-eiyd7voq> <a href="/developers/" class="rs-mega__item" role="listitem" data-mega-title="Developers Hub" data-mega-desc="Your central hub for all RedStone technical resources — integration guides, API references, architecture overviews, and SDK documentation." data-mega-tags="GUIDES · ARCHITECTURE · SDK" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M6 5L3 10L6 15M14 5L17 10L14 15M11.5 3.5L8.5 16.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Developers Hub</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Integration guides · SDK · API</span> </div> </a> <a href="https://docs.redstone.finance" target="_blank" rel="noopener noreferrer" class="rs-mega__item" role="listitem" data-mega-title="Docs" data-mega-desc="Full technical documentation for RedStone oracles — from quick-start integration to advanced custom feed configuration and onchain verification." data-mega-tags="REFERENCE · TUTORIALS · QUICK-START" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M4 16V4H12.5L16 7.5V16H4Z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M12.5 4V7.5H16" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M7 11H13M7 13.5H11" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Docs <svg class="rs-mega__ext-icon" width="10" height="10" viewB
23ox="0 0 10 10" fill="none" data-astro-cid-eiyd7voq><path d="M2 8L8 2M8 2H4M8 2V6" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg></span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Full technical reference</span> </div> </a> <a href="https://cantina.xyz/bounties/36c588d4-0681-45a8-9694-13a871cc4ae6" target="_blank" rel="noopener noreferrer" class="rs-mega__item" role="listitem" data-mega-title="Bounty Program" data-mega-desc="Help secure the RedStone oracle network. Find vulnerabilities, earn rewards, and contribute to the safety of DeFi infrastructure used by leading protocols." data-mega-tags="SECURITY · CANTINA · REWARDS" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><circle cx="10" cy="10" r="7" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></circle><path d="M7.5 10.5L9.5 12.5L13 8.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Bounty Program <svg class="rs-mega__ext-icon" width="10" height="10" viewBox="0 0 10 10" fill="none" data-astro-cid-eiyd7voq><path d="M2 8L8 2M8 2H4M8 2V6" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg></span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Security · Cantina · Rewards</span> </div> </a> </div> <!-- Right detail panel --> <div class="rs-mega__detail rs-mega__detail--static" data-astro-cid-eiyd7voq> <div class="rs-mega__detail-content is-ready" data-astro-cid-eiyd7voq> <p class="rs-mega__detail-tags" data-astro-cid-eiyd7voq>BUILD ON REDSTONE</p> <h3 class="rs-mega__detail-title" data-astro-cid-eiyd7voq>
23Oracle infrastructure<br data-astro-cid-eiyd7voq>for every chain</h3> <p class="rs-mega__detail-desc" data-astro-cid-eiyd7voq>Integrate tamper-proof price feeds in minutes. RedStone supports 110+ chains with Pull, Push, and X-Layer delivery models — all with cryptographic guarantees.</p> <div class="rs-mega__detail-actions" data-astro-cid-eiyd7voq> <a href="https://docs.redstone.finance" target="_blank" rel="noopener noreferrer" class="rs-mega__detail-cta" data-astro-cid-eiyd7voq>
24Read the docs
25<svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq><path d="M3 11L11 3M11 3H5M11 3V9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </a> </div> </div> </div> </div> </div> </div> <!-- Institutional --> <a href="/institutional/" class="rs-nav__link" data-astro-cid-eiyd7voq>Institutional</a> <!-- Clients --> <a href="/clients/" class="rs-nav__link" data-astro-cid-eiyd7voq>Clients</a> <!-- News Mega --> <div class="rs-nav__item rs-nav__item--mega" id="nav-news" data-astro-cid-eiyd7voq> <div class="rs-nav__trigger-split" data-astro-cid-eiyd7voq> <a href="/blog" class="rs-nav__trigger-text" aria-controls="mega-news" data-astro-cid-eiyd7voq>
26News
27</a> <button class="rs-nav__trigger-chevron" aria-expanded="false" aria-controls="mega-news" type="button" aria-label="Open News menu" data-astro-cid-eiyd7voq> <svg class="rs-nav__chevron" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq> <path d="M2 4L6 8L10 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> </svg> </button> </div> <div class="rs-mega rs-mega--simple" id="mega-news" role="region" aria-label="News submenu" data-astro-cid-eiyd7voq> <div class="rs-mega__inner rs-mega__inner--3col" data-astro-cid-eiyd7voq> <div class="rs-mega__list rs-mega__list--simple" role="list" data-astro-cid-eiyd7voq> <a href="/blog/" class="rs-mega__item" role="listitem" data-mega-title="Blog" data-mega-desc="Stay current with RedStone's latest product launches, ecosystem integrations, partnership announcements, and DeFi market commentary." data-mega-tags="UPDATES · ANNOUNCEMENTS" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M4 4h12v12H4z" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></path><path d="M7 8h6M7 11h4" stroke="currentColor" stroke-width="1.4" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Blog</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Updates · Announcements</span> </div> </a> <a href="/reports/" class="rs-mega__item" role="listitem" data-mega-title="Reports" data-mega-desc="In-depth research on RWA tokenization, oracle design, DeFi market structure, and institutional-grade blockchain infrastructure." data-mega-tags="RESEARCH · RWA · MARKET DATA" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M5 16V4H12.5L15 6.5V16H5Z" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M12.5 4V6.5H15" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M8 10L10 12L13 8.5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Reports</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Research · RWA · Market data</span> </div> </a> <a href="/case-studies/" class="rs-mega__item" role="listitem" data-mega-title="Case Studies" data-mega-desc="Real-world integration stories from leading DeFi protocols. See how Binance, Etherfi, Morpho, and others rely on RedStone oracles in production." data-mega-tags="INTEGRATIONS · USE CASES · DEFI" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M3 15C3 12.5 5.5 11 10 11C14.5 11 17 12.5 17 15" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-cid-eiyd7voq></path><circle cx="10" cy="7" r="3" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></circle></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Case Studies</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Integrations · Use cases · DeFi</span> </div> </a> </div> <!-- Right detail panel --> <div class="rs-mega__detail rs-mega__detail--static" data-astro-cid-eiyd7voq> <div class="rs-mega__detail-content is-ready" data-astro-cid-eiyd7voq> <p class="rs-mega__detail-tags" data-astro-cid-eiyd7voq>LEARN · EXPLORE</p> <h3 class="rs-mega__detail-title" data-astro-cid-eiyd7voq>Insights from<br data-astro-cid-eiyd7voq>the oracle layer</h3> <p class="rs-mega__detail-desc" data-astro-cid-eiyd7voq>Explore RedStone's research on RWA tokenization, DeFi market structure, and oracle design — written for builders and institutions alike.</p> <div class="rs-mega__detail-actions" data-astro-cid-eiyd7voq> <a href="/reports/" class="rs-mega__detail-cta" data-astro-cid-eiyd7voq>
28View all reports
29<svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq><path d="M3 11L11 3M11 3H5M11 3V9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </a> </div> </div> </div> </div> </div> </div> <!-- Company Mega --> <div class="rs-nav__item rs-nav__item--mega" id="nav-company" data-astro-cid-eiyd7voq> <button class="rs-nav__trigger" aria-expanded="false" aria-controls="mega-company" type="button" data-astro-cid-eiyd7voq>
30Company
31<svg class="rs-nav__chevron" width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq> <path d="M2 4L6 8L10 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path> </svg> </button> <div class="rs-mega rs-mega--simple" id="mega-company" role="region" aria-label="Company submenu" data-astro-cid-eiyd7voq> <div class="rs-mega__inner rs-mega__inner--3col" data-astro-cid-eiyd7voq> <div class="rs-mega__list rs-mega__list--simple" role="list" data-astro-cid-eiyd7voq> <a href="/team/" class="rs-mega__item" role="listitem" data-mega-title="Team" data-mega-desc="Meet the team behind RedStone — researchers, engineers, and DeFi experts building the oracle infrastru
31cture powering the next generation of finance." data-mega-tags="PEOPLE · CULTURE · RESEARCH" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><circle cx="7.5" cy="6.5" r="2.5" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></circle><circle cx="13.5" cy="6.5" r="2.5" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></circle><path d="M2 15.5C2 13 4.5 11.5 7.5 11.5C10.5 11.5 13 13 13 15.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-cid-eiyd7voq></path><path d="M13 11.5C14.2 11.2 16.5 12 17.5 14" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Team</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>People · Culture · Research</span> </div> </a> <a href="/careers/" class="rs-mega__item" role="listitem" data-mega-title="Careers" data-mega-desc="Join RedStone and help shape the future of decentralized oracle infrastru
31cture. We're hiring across engineering, research, BD, and operations." data-mega-tags="HIRING · REMOTE · WEB3" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><rect x="3" y="8" width="14" height="9" rx="2" stroke="currentColor" stroke-width="1.5" data-astro-cid-eiyd7voq></rect><path d="M7 8V6C7 4.34 8.34 3 10 3C11.66 3 13 4.34 13 6V8" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" data-astro-cid-eiyd7voq></path><path d="M3 11.5H17" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Careers</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Hiring · Remote · Web3</span> </div> </a> <a href="/brand-kit/" class="rs-mega__item" role="listitem" data-mega-title="Brand Kit" data-mega-desc="Official RedStone brand assets — logos, color palettes, typography guidelines, and usage rules for press, partners, and integrations." data-mega-tags="DESIGN · PRESS · ASSETS" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><circle cx="7" cy="7" r="2.5" stroke="currentColor" stroke-width="1.4" data-astro-cid-eiyd7voq></circle><circle cx="13" cy="7" r="2.5" stroke="currentColor" stroke-width="1.4" data-astro-cid-eiyd7voq></circle><circle cx="10" cy="12" r="2.5" stroke="currentColor" stroke-width="1.4" data-astro-cid-eiyd7voq></circle></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Brand Kit</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Logos · Colors · Press assets</span> </div> </a> <a href="/security/" class="rs-mega__item" role="listitem" data-mega-title="Security" data-mega-desc="Explore RedStone's ISO 27001 compliance and 15+ independent security audits by premier firms like Halborn, ABDK, and PeckShield." data-mega-tags="ISO 27001 · AUDITS · COMPLIANCE" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><path d="M10 2.5L3.5 5.5V9.5C3.5 13.5 6.5 16.5 10 17.5C13.5 16.5 16.5 13.5 16.5 9.5V5.5L10 2.5Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M7.5 10L9.5 12L13 7.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name" data-astro-cid-eiyd7voq>Security</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>ISO 27001 · Security Audits</span> </div> </a> <a href="/red-token/" class="rs-mega__item rs-mega__item--red-token" role="listitem" data-mega-title="$RED Token" data-mega-desc="$RED is the governance and utility token of the RedStone ecosystem — used for staking, data validation, and protocol governance." data-mega-tags="GOVERNANCE · STAKING · DEFI" data-astro-cid-eiyd7voq> <div class="rs-mega__item-icon rs-mega__item-icon--red" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 20 20" fill="none" data-astro-cid-eiyd7voq><circle cx="10" cy="10" r="7" stroke="#E01F3D" stroke-width="1.5" data-astro-cid-eiyd7voq></circle><path d="M7.5 7H11C12.1 7 13 7.9 13 9C13 10.1 12.1 11 11 11H7.5V7Z" stroke="#E01F3D" stroke-width="1.4" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M7.5 11H11.5L13.5 13.5" stroke="#E01F3D" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path><path d="M7.5 7V13.5" stroke="#E01F3D" stroke-width="1.4" stroke-linecap="round" data-astro-cid-eiyd7voq></path></svg> </div> <div class="rs-mega__item-text" data-astro-cid-eiyd7voq> <span class="rs-mega__item-name rs-mega__item-name--red" data-astro-cid-eiyd7voq>$RED Token</span> <span class="rs-mega__item-sub" data-astro-cid-eiyd7voq>Governance · Staking</span> </div> </a> </div> <!-- Right detail panel --> <div class="rs-mega__detail rs-mega__detail--static" data-astro-cid-eiyd7voq> <div class="rs-mega__detail-content is-ready" data-astro-cid-eiyd7voq> <p class="rs-mega__detail-tags" data-astro-cid-eiyd7voq>THE BACKBONE OF DEFI</p> <h3 class="rs-mega__detail-title" data-astro-cid-eiyd7voq>Built by a team<br data-astro-cid-eiyd7voq>of DeFi experts</h3> <p class="rs-mega__detail-desc" data-astro-cid-eiyd7voq>RedStone is on a mission to become the most widely used oracle network in DeFi — trusted by 200+ protocols across 110+ chains with billions secured.</p> <div class="rs-mega__detail-actions" data-astro-cid-eiyd7voq> <a href="/contact/" class="rs-mega__detail-cta" data-astro-cid-eiyd7voq>
32Get in touch
33<svg width="14" height="14" viewBox="0 0 14 14" fill="none" aria-hidden="true" data-astro-cid-eiyd7voq><path d="M3 11L11 3M11 3H5M11 3V9" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </a> </div> </div> </div> </div> </div> </div> <!-- Contact --> <a href="/contact" class="rs-nav__link" data-astro-cid-eiyd7voq>Contact</a> </nav><!-- /.rs-nav --> <!-- Right actions --> <div class="rs-header__actions" data-astro-cid-eiyd7voq> <button type="button" class="rs-btn rs-btn--red-token" aria-label="Open contact form" data-astro-cid-eiyd7voq> <span data-astro-cid-eiyd7voq>Contact us</span> </button> <button class="rs-hamburger" id="rs-hamburger" aria-label="Open menu" aria-expanded="false" aria-controls="rs-mobile-nav" type="button" data-astro-cid-eiyd7voq> <span data-astro-cid-eiyd7voq></span><span data-astro-cid-eiyd7voq></span><span data-astro-cid-eiyd7voq></span> </button> </div> </div><!-- /.rs-header__inner --> </header> <!-- Mobile Drawer — full-screen, OUTSIDE header to avoid backdrop-filter containing-block bug --> <div class="rs-mobile-nav" id="rs-mobile-nav" aria-hidden="true" role="dialog" aria-label="Mobile navigation" data-astro-cid-eiyd7voq> <!-- Logo --> <a href="/" class="rs-mobile-nav__logo" aria-label="RedStone Finance – Home" data-astro-cid-eiyd7voq> <img src="/images/Redstone-Logo_2.svg" class="rs-logo" loading="eager" alt="RedStone Logo" width="127" height="24" data-astro-cid-eiyd7voq> </a> <!-- Close button --> <button class="rs-mobile-nav__close" id="rs-mobile-close" type="button" aria-label="Close menu" data-astro-cid-eiyd7voq> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq> <line x1="18" y1="6" x2="6" y2="18" data-astro-cid-eiyd7voq></line> <line x1="6" y1="6" x2="18" y2="18" data-astro-cid-eiyd7voq></line> </svg> </button> <nav class="rs-mobile-nav__content" data-astro-cid-eiyd7voq> <div class="rs-mobile-accordion" data-astro-cid-eiyd7voq> <button class="rs-mobile-accordion__trigger" aria-expanded="false" type="button" data-astro-cid-eiyd7voq>
34Products
35<svg width="14" height="14" viewBox="0 0 14 14" fill="none" data-astro-cid-eiyd7voq><path d="M3 5L7 9L11 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </button> <div class="rs-mobile-accordion__panel" data-astro-cid-eiyd7voq> <a href="/product-stack/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Product Stack</a> <a href="/price-feeds/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Price Feeds</a> <a href="/proof-of-reserves/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Proof of Reserve</a> <a href="/atom/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Atom</a> <a href="/bolt/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Bolt</a> <a href="/live/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>RedStone Live</a> <a href="/settle/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>RedStone Settle</a> </div> </div> <div class="rs-mobile-accordion" data-astro-cid-eiyd7voq> <button class="rs-mobile-accordion__trigger" aria-expanded="false" type="button" data-astro-cid-eiyd7voq>
36Developers
37<svg width="14" height="14" viewBox="0 0 14 14" fill="none" data-astro-cid-eiyd7voq><path d="M3 5L7 9L11 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </button> <div class="rs-mobile-accordion__panel" data-astro-cid-eiyd7voq> <a href="/developers/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Developers Hub</a> <a href="https://docs.redstone.finance" target="_blank" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Docs ↗</a> <a href="https://cantina.xyz/bounties/36c588d4-0681-45a8-9694-13a871cc4ae6" target="_blank" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Bounty Program ↗</a> </div> </div> <a href="/institutional/" class="rs-mobile-link" data-astro-cid-eiyd7voq>Institutional</a> <a href="/clients/" class="rs-mobile-link" data-astro-cid-eiyd7voq>Clients</a> <div class="rs-mobile-accordion" data-astro-cid-eiyd7voq> <button class="rs-mobile-accordion__trigger" aria-expanded="false" type="button" data-astro-cid-eiyd7voq>
38News
39<svg width="14" height="14" viewBox="0 0 14 14" fill="none" data-astro-cid-eiyd7voq><path d="M3 5L7 9L11 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </button> <div class="rs-mobile-accordion__panel" data-astro-cid-eiyd7voq> <a href="/blog/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Blog</a> <a href="/reports/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Reports</a> <a href="/case-studies/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Case Studies</a> </div> </div> <div class="rs-mobile-accordion" data-astro-cid-eiyd7voq> <button class="rs-mobile-accordion__trigger" aria-expanded="false" type="button" data-astro-cid-eiyd7voq>
40Company
41<svg width="14" height="14" viewBox="0 0 14 14" fill="none" data-astro-cid-eiyd7voq><path d="M3 5L7 9L11 5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-eiyd7voq></path></svg> </button> <div class="rs-mobile-accordion__panel" data-astro-cid-eiyd7voq> <a href="/team/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Team</a> <a href="/careers/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Careers</a> <a href="/brand-kit/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Brand Kit</a> <a href="/security/" class="rs-mobile-link rs-mobile-link--sub" data-astro-cid-eiyd7voq>Security</a> <a href="/red-token/" class="rs-mobile-link rs-mobile-link--sub rs-mobile-link--red" data-astro-cid-eiyd7voq>$RED Token</a> </div> </div> <a href="/contact/" class="rs-mobile-link" data-astro-cid-eiyd7voq>Contact</a> <div class="rs-mobile-nav__actions" data-astro-cid-eiyd7voq> <button type="button" class="rs-btn rs-btn--red-token rs-btn--full" aria-label="Open contact form" data-astro-cid-eiyd7voq> <span data-astro-cid-eiyd7voq>Contact us</span> </button> </div> </nav> </div> <div class="rs-mobile-backdrop" id="rs-mobile-backdrop" aria-hidden="true" data-astro-cid-eiyd7voq></div> <!-- Load lottie-web once, globally --> 
41<script src="https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js"></script>
41  
41<script>
42function initHeader() {
43  /* ─── Elements ─── */
44  const header     = document.getElementById('rs-header');
45  if (!header) return;
46  const hamburger  = document.getElementById('rs-hamburger');
47  const mobileNav  = document.getElementById('rs-mobile-nav');
48  const backdrop   = document.getElementById('rs-mobile-backdrop');
49  const megaTitle  = document.getElementById('mega-title');
50  const megaDesc   = document.getElementById('mega-desc');
51  const megaTags   = document.getElementById('mega-tags');
52  const megaCta    = document.getElementById('mega-cta');
53  const detailContent = document.querySelector('.rs-mega__detail-content');
54
55  /* ─── Guard: bail out if mobile elements are missing ─── */
56  if (!hamburger || !mobileNav || !backdrop) {
57    console.warn('[Header] Mobile nav elements not found in DOM', { hamburger, mobileNav, backdrop });
58    return;
59  }
60
61  /* ─── Sync data-theme from header to mobile nav ─── */
62  function syncMobileTheme() {
63    const theme = header.getAttribute('data-theme') || 'dark';
64    mobileNav.setAttribute('data-theme', theme);
65  }
66  syncMobileTheme();
67  new MutationObserver(syncMobileTheme).observe(header, { attributes: true, attributeFilter: ['data-theme'] });
68
69  /* ─── Scroll theme & hide/show detection ─── */
70  let ticking = false;
71  let lastScrollY = window.scrollY;
72  const scrollThreshold = 10;
73
74  window.addEventListener('scroll', () => {
75    if (!ticking) {
76      requestAnimationFrame(() => {
77        const currentScrollY = window.scrollY;
78
79        // Toggle scrolled styling
80        header.classList.toggle('is-scrolled', currentScrollY > 20);
81
82        // Hide/show logic
83        const isMobileNavOpen = mobileNav && mobileNav.classList.contains('is-open');
84        const isAnyDropdownOpen = Array.from(navItems).some(item => item.classList.contains('is-open'));
85
86        if (isMobileNavOpen || isAnyDropdownOpen) {
87          header.classList.remove('rs-header--hidden');
88        } else if (currentScrollY <= 72) {
89          header.classList.remove('rs-header--hidden');
90        } else if (Math.abs(currentScrollY - lastScrollY) > scrollThreshold) {
91          if (currentScrollY > lastScrollY) {
92            header.classList.add('rs-header--hidden');
93          } else {
94            header.classList.remove('rs-header--hidden');
95          }
96        }
97
98        lastScrollY = currentScrollY;
99        ticking = false;
100      });
101      ticking = true;
102    }
103  }, { passive: true });
104
105  /* ─── Section-based theme switching via IntersectionObserver ─── */
106  const themeMap = {
107    'dark':       'dark',
108    'darkmaroon': 'dark',
109    'maroondark': 'dark',
110    'maroon':     'dark',
111    'white':      'white',
112    'shell':      'shell',
113    'light':      'shell',
114    'whtite':     'white',
115    'salt':       'salt',
116    'gray':       'salt',
117    'red':        'red',
118  };
119
120  const themeSections = document.querySelectorAll('[data-background]');
121  if (themeSections.length > 0) {
122    const obs = new IntersectionObserver((entries) => {
123      entries.forEach(entry => {
124        if (entry.isIntersecting) {
125          const bg = entry.target.dataset.background?.toLowerCase() || '';
126          const theme = themeMap[bg] || null;
127          if (theme) {
128            header.setAttribute('data-theme', theme);
129          }
130        }
131      });
132    }, { rootMargin: '-72px 0px -80% 0px' });
133
134    themeSections.forEach(s => obs.observe(s));
135  }
136
137  /* ─── Desktop nav items ─── */
138  const navItems = document.querySelectorAll('.rs-nav__item');
139  let closeTimer = null;
140
141  /** Returns the button that controls aria-expanded (regular trigger OR split chevron) */
142  function getAriaBtn(item) {
143    return item.querySelector('.rs-nav__trigger-chevron') ||
144           item.querySelector('.rs-nav__trigger');
145  }
146
147  function openNavItem(item) {
148    clearTimeout(closeTimer);
149    navItems.forEach(o => { if (o !== item) closeNavItem(o); });
150    item.classList.add('is-open');
151    const btn = getAriaBtn(item);
152    if (btn) btn.setAttribute('aria-expanded', 'true');
153  }
154  function closeNavItem(item) {
155    item.classList.remove('is-open');
156    const btn = getAriaBtn(item);
157    if (btn) btn.setAttribute('aria-expanded', 'false');
158  }
159
160  navItems.forEach(item => {
161    // Works for both: regular <button.rs-nav__trigger> and split <button.rs-nav__trigger-chevron>
162    const chevronBtn = item.querySelector('.rs-nav__trigger-chevron');
163    const regularBtn = item.querySelector('.rs-nav__trigger');
164    const panel      = item.querySelector('.rs-mega, .rs-dropdown');
165
166    if (!panel) return;
167
168    // Chevron button click → toggle mega
169    if (chevronBtn) {
170      chevronBtn.addEventListener('click', e => {
171        e.stopPropagation();
172        item.classList.contains('is-open') ? closeNavItem(item) : openNavItem(item);
173      });
174    }
175    // Regular trigger click → toggle dropdown
176    if (regularBtn && !chevronBtn) {
177      regularBtn.addEventListener('click', e => {
178        e.stopPropagation();
179        item.classList.contains('is-open') ? closeNavItem(item) : openNavItem(item);
180      });
181    }
182
183    // Hover opens mega (desktop only)
184    item.addEventListener('mouseenter', () => { if (window.innerWidth > 1100) openNavItem(item); });
185    item.addEventListener('mouseleave', () => {
186      if (window.innerWidth > 1100) closeTimer = setTimeout(() => closeNavItem(item), 140);
187    });
188    panel.addEventListener('mouseenter', () => clearTimeout(closeTimer));
189    panel.addEventListener('mouseleave', () => {
190      if (window.innerWidth > 1100) closeTimer = setTimeout(() => closeNavItem(item), 140);
191    });
192  });
193
194  document.addEventListener('click', e => {
195    if (!e.target.closest('.rs-nav__item')) navItems.forEach(closeNavItem);
196  });
197  document.addEventListener('keydown', e => {
198    if (e.key === 'Escape') { navItems.forEach(closeNavItem); closeMobileNav(); }
199  });
200
201  /* ─── Lottie management ─── */
202  let lottiesInitialized = false;
203  const lottieInstances = [];
204
205  function initAllLotties() {
206    if (lottiesInitialized) return;
207    if (!window.lottie) return;
208    lottiesInitialized = true;
209
210    const containers = document.querySelectorAll('.rs-mega__item-lottie');
211    containers.forEach(container => {
212      const src = container.dataset.lottie;
213      if (!src) return;
214      try {
215        const anim = lottie.loadAnimation({
216          container: container,
217          renderer: 'svg',
218          loop: true,
219          autoplay: false,
220          path: src,
221        });
222        anim.addEventListener('DOMLoaded', () => {
223          anim.goToAndStop(anim.totalFrames - 1, true);
224        });
225        lottieInstances.push({
226          element: container,
227          anim: anim
228        });
229      } catch (err) {
230        console.warn('Failed to load item Lottie:', err);
231      }
232    });
233  }
234
235  function playLottieForContainer(container) {
236    initAllLotties();
237    lottieInstances.forEach(item => {
238      if (item.element === container) {
239        try { item.anim.goToAndPlay(0, true); } catch(e) {}
240      } else {
241        try { item.anim.goToAndStop(item.anim.totalFrames - 1, true); } catch(e) {}
242      }
243    });
244  }
245
246  function pauseAllLotties() {
247    lottieInstances.forEach(item => {
248      try { item.anim.goToAndStop(item.anim.totalFrames - 1, true); } catch(e) {}
249    });
250  }
251
252  /* ─── Client Logo Map ─── */
253  const clientLogoMap = {
254    'Binance':       '/images/mega-menu/clients/binance.svg',
255    'Entropy':       '/images/mega-menu/clients/entropy.svg',
256    'Derive':        '/images/mega-menu/clients/derive.svg',
257    'GRVT':          '/images/mega-menu/clients/grvt.svg',
258    'Initia':        '/images/mega-menu/clients/initia.svg',
259    'HyperLend':     '/images/mega-menu/clients/hyperlend.svg',
260    'Lista DAO':     '/images/mega-menu/clients/lista.svg',
261    'Gauntlet':      '/images/mega-menu/clients/gauntlet.svg',
262    'Securitize':    '/images/mega-menu/clients/securitize.svg',
263    'Canton':        '/images/mega-menu/clients/canton.svg',
264    'Morpho':        '/images/mega-menu/clients/morpho.svg',
265    'Spiko':         '/images/mega-menu/clients/spiko.svg',
266    'Tempo':         '/images/mega-menu/clients/tempo.svg',
267    'Lombard':       '/images/mega-menu/clients/lombard.svg',
268    'Radiant Prime': '/images/mega-menu/clients/radiant-prime.png',
269    'Felix':         '/images/mega-menu/clients/felix.svg',
270    'Venus':         '/images/mega-menu/clients/venus.svg',
271    'Euphoria':      '/images/mega-menu/clients/euphoria.svg',
272    'Curvance':      '/images/mega-menu/clients/curvance.svg',
273    'Euler':         '/images/mega-menu/clients/euler.svg',
274    'Extended':      '/images/mega-menu/clients/extended.svg',
275    'Kaia':          '/images/mega-menu/clients/kaia.svg',
276    'Symbiotic':     '/images/settle/logo-symbiotic.svg',
277    'Alphagrowth':   '/images/settle/logo-alphagrowth-cropped.png'
278  };
279
280  // Instant preload of all client logos into browser cache to eliminate hover delay and prevent jumping
281  if (typeof window !== 'undefined') {
282    Object.values(clientLogoMap).forEach(src => {
283      const preloadImg = new Image();
284      preloadImg.src = src;
285    });
286  }
287
288  const clientUrlMap = {
289    'Binance':       'https://www.binance.com/',
290    'Entropy':       'https://entropy.io/',
291    'Derive':        'https://www.derive.xyz/',
292    'GRVT':          'https://grvt.io/',
293    'Initia':        'https://initia.xyz/',
294    'HyperLend':     'https://hyperlend.finance/',
295    'Lista DAO':     'https://lista.org/',
296    'Gauntlet':      'https://www.gauntlet.xyz/',
297    'Securitize':    'https://securitize.io/',
298    'Canton':        'https://www.canton.network/',
299    'Morpho':        'https://morpho.org/',
300    'Euler':         'https://www.euler.finance/',
301    'Spiko':         'https://www.spiko.io/',
302    'Tempo':         'https://tempo.xyz/',
303    'Lombard':       'https://www.lombard.finance/',
304    'Radiant Prime': 'https://radiantprime.xyz/',
305    'Felix':         'https://www.usefelix.xyz/',
306    'Venus':         'https://venus.io/',
307    'Euphoria':      'https://euphoria.finance/',
308    'Curvance':      'https://curvance.com/',
309    'Extended':      'https://extended.exchange/',
310    'Kaia':          'https://www.kaia.io/',
311    'Symbiotic':     'https://symbiotic.fi/'
312  };
313
314  function updateDetailsPanel(item) {
315    const title = item.dataset.title || '';
316    const desc  = item.dataset.desc  || '';
317    const tags  = item.dataset.tags  || '';
318    const href  = item.getAttribute('href') || '#';
319    const clientsStr = item.dataset.clients || '';
320
321    detailContent.classList.remove('is-ready');
322
323    // Clients
324    const clientsContainer = document.getElementById('mega-clients-container');
325    const clientsList = document.getElementById('mega-clients-list');
326
327    setTimeout(() => {
328      megaTitle.textContent = title;
329      megaDesc.textContent  = desc;
330      megaTags.textContent  = tags;
331      if (megaCta) {
332        megaCta.href          = href;
333        megaCta.textContent   = 'Explore product';
334        
335        // Re-attach arrow
336        const arrow = document.createElementNS('http://www.w3.org/2000/svg','svg');
337        arrow.setAttribute('width','14'); arrow.setAttribute('height','14');
338        arrow.setAttribute('viewBox','0 0 14 14'); arrow.setAttribute('fill','none');
339        arrow.setAttribute('aria-hidden','true');
340        const path = document.createElementNS('http://www.w3.org/2000/svg','path');
341        path.setAttribute('d','M3 11L11 3M11 3H5M11 3V9');
342        path.setAttribute('stroke','currentColor');
343        path.setAttribute('stroke-width','1.4');
344        path.setAttribute('stroke-linecap','round');
345        path.setAttribute('stroke-linejoin','round');
346        arrow.appendChild(path);
347        megaCta.appendChild(arrow);
348      }
349
350      if (clientsContainer && clientsList) {
351        if (clientsStr) {
352          clientsList.innerHTML = '';
353          clientsStr.split(',').forEach(cName => {
354            const trimmed = cName.trim();
355            const src = clientLogoMap[trimmed];
356            if (src) {
357              const linkUrl = clientUrlMap[trimmed];
358              const img = document.createElement('img');
359              img.src = src;
360              img.alt = `${trimmed} client logo`;
361              img.className = 'rs-mega__client-logo';
362              img.loading = 'eager';
363              img.decoding = 'sync';
364              const isRadiant = trimmed === 'Radiant Prime';
365              img.style.height = isRadiant ? '39px' : '18px';
366              img.style.maxHeight = isRadiant ? '42px' : '19px';
367              img.style.width = 'auto';
368              img.style.maxWidth = isRadiant ? '250px' : '130px';
369              img.style.objectFit = 'contain';
370              img.style.flexShrink = '0';
371              img.style.display = 'inline-block';
372
373              if (linkUrl) {
374                const a = document.createElement('a');
375                a.href = linkUrl;
376                a.target = '_blank';
377                a.rel = 'noopener noreferrer';
378                a.className = 'rs-mega__client-logo-link';
379                a.setAttribute('aria-label', `${trimmed} website`);
380                a.appendChild(img);
381                clientsList.appendChild(a);
382              } else {
383                clientsList.appendChild(img);
384              }
385            }
386          });
387          clientsContainer.style.display = 'flex';
388        } else {
389          clientsContainer.style.display = 'none';
390        }
391      }
392
393      detailContent.classList.add('is-ready');
394    }, 80);
395  }
396
397  /* ─── Product hover in mega menu with Hover Intent ─── */
398  const productItems = document.querySelectorAll('#mega-products .rs-mega__item');
399  let firstHovered = false;
400  let hoverTimeout = null;
401
402  productItems.forEach((item, idx) => {
403    function activateItem() {
404      // Highlight active
405      productItems.forEach(i => i.classList.remove('is-active'));
406      item.classList.add('is-active');
407
408      // Play Lottie for this item, pause others
409      const lottieContainer = item.querySelector('.rs-mega__item-lottie');
410      if (lottieContainer) {
411        playLottieForContainer(lottieContainer);
412      } else {
413        pauseAllLotties();
414      }
415
416      updateDetailsPanel(item);
417    }
418
419    item.addEventListener('mouseenter', () => {
420      clearTimeout(hoverTimeout);
421      hoverTimeout = setTimeout(activateItem, 80); // 80ms hover intent delay
422    });
423    item.addEventListener('focus', activateItem);
424    item.addEventListener('mouseleave', () => {
425      clearTimeout(hoverTimeout);
426    });
427  });
428
429  // Auto-activate first on mega open
430  const megaProductsItem = document.getElementById('nav-products');
431  const observer = new MutationObserver(() => {
432    if (megaProductsItem.classList.contains('is-open')) {
433      initAllLotties();
434      if (!firstHovered) {
435        firstHovered = true;
436        const firstItem = productItems[0];
437        if (firstItem) {
438          firstItem.classList.add('is-active');
439          updateDetailsPanel(firstItem);
440          
441          const lottieContainer = firstItem.querySelector('.rs-mega__item-lottie');
442          if (lottieContainer) {
443            playLottieForContainer(lottieContainer);
444          } else {
445            pauseAllLotties();
446          }
447        }
448      }
449    } else if (!megaProductsItem.classList.contains('is-open')) {
450      pauseAllLotties();
451      firstHovered = false;
452    }
453  });
454  observer.observe(megaProductsItem, { attributes: true, attributeFilter: ['class'] });
455
456  /* ─── Mobile nav ─── */
457  function openMobileNav() {
458    mobileNav.classList.add('is-open');
459    mobileNav.setAttribute('aria-hidden','false');
460    backdrop.classList.add('is-visible');
461    hamburger.classList.add('is-open');
462    hamburger.setAttribute('aria-expanded','true');
463    document.body.style.overflow = 'hidden';
464  }
465  function closeMobileNav() {
466    mobileNav.classList.remove('is-open');
467    mobileNav.setAttribute('aria-hidden','true');
468    backdrop.classList.remove('is-visible');
469    hamburger.classList.remove('is-open');
470    hamburger.setAttribute('aria-expanded','false');
471    document.body.style.overflow = '';
472  }
473
474  hamburger.addEventListener('click', () => {
475    mobileNav.classList.contains('is-open') ? closeMobileNav() : openMobileNav();
476  });
477  backdrop.addEventListener('click', closeMobileNav);
478
479  /* Close button inside full-screen nav */
480  const closeBtn = document.getElementById('rs-mobile-close');
481  if (closeBtn) closeBtn.addEventListener('click', closeMobileNav);
482
483  /* ─── Mobile accordions ─── */
484  document.querySelectorAll('.rs-mobile-accordion__trigger').forEach(trigger => {
485    trigger.addEventListener('click', () => {
486      const acc = trigger.closest('.rs-mobile-accordion');
487      const open = acc.classList.contains('is-open');
488      document.querySelectorAll('.rs-mobile-accordion').forEach(a => {
489        a.classList.remove('is-open');
490        a.querySelector('.rs-mobile-accordion__trigger').setAttribute('aria-expanded','false');
491      });
492      if (!open) {
493        acc.classList.add('is-open');
494        trigger.setAttribute('aria-expanded','true');
495      }
496    });
497  });
498
499  mobileNav.querySelectorAll('a').forEach(link => link.addEventListener('click', closeMobileNav));
500
501  /* ─── Open Contact Modal on $RED TOKEN button click ─── */
502  document.querySelectorAll('.rs-btn--red-token').forEach(btn => {
503    btn.addEventListener('click', (e) => {
504      e.preventDefault();
505      closeMobileNav();
506      if (typeof window.openContactModal === 'function') {
507        window.openContactModal();
508      } else {
509        const modal = document.getElementById('rs-contact-modal');
510        if (modal) {
511          modal.hidden = false;
512          document.body.style.overflow = 'hidden';
513        } else {
514          window.location.href = '/contact/';
515        }
516      }
517    });
518  });
519
520  /* ─── Active page highlighting ─── */
521  const path = window.location.pathname;
522  document.querySelectorAll('.rs-nav__link, .rs-mega__item, .rs-dropdown__link').forEach(link => {
523    const href = link.getAttribute('href');
524    if (href && href !== '#' && href.length > 1 && path.startsWith(href)) {
525      link.setAttribute('aria-current','page');
526    }
527  });
528
529}
530
531if (document.readyState === 'loading') {
532  document.addEventListener('DOMContentLoaded', initHeader);
533} else {
534  initHeader();
535}
536</script>
536 <!-- Global styles for mobile nav/backdrop that live outside <header> --> <div data-background="dark" class="w-layout-blockcontainer rs-section darkmaroon herosection w-container"> <div class="w-layout-blockcontainer rs-container small hero-container w-container"> <div data-wf--hero2columns--variant="base" class="rs-hero-2-columns w-row"> <div class="column-43 w-col w-col-6 w-col-stack w-col-small-small-stack w-col-tiny-tiny-stack"> <h1 class="text-webh2"> <span data-wf--heading2--variant="gem" class="w-variant-6e78f2e4-0cb4-6526-6d9d-f8f74e1f5811" style="display:block;color:var(--gem)">Power your
data layer
with</span> <span data-wf--heading2--variant="white" class="w-variant-6d194471-529a-3370-8f8f-a4d8d0c3ea7c" style="display:block;color:var(--gray--white)"> RedStone</span> </h1> <div class="text-webbody herosubtext">From first contact to production, we support your
integration every step of the way</div> <div class="w-layout-hflex flex-block-39"> <div class="div-block-27"> <div data-figma-id="2012:95344" class="rs-button big outline text-button-md"> <a data-figma-id="I2012:95344;40:3811" href="#contact-form" class="button-text">Contact us</a> </div> </div> </div> </div> <div class="column-44 w-col w-col-6 w-col-stack w-col-small-small-stack w-col-tiny-tiny-stack"> <div class="herocolumnsimage"><img loading="lazy" src="/images/Frame-1547764998.png" alt="Red digital interface with a code window displaying a function and three hexagonal shapes, and a transmitting status bar at the bottom."></div> </div> </div> </div> </div> <section id="contact-form" data-background="white" class="rs-section white"> <div class="w-layout-blockcontainer rs-container small _2xl-y w-container"> <div class="w-layout-grid grid-33"> <div id="w-node-a8b78475-a1e5-2c26-c7e6-83df5a3ab449-e299f52f" class="div-block-110"> <div class="div-block-111"> <h3 data-wf--heading3--variant="base" class="text-webh3">Let’s Build <br>the Future of DeFi</h3> </div> <div class="text-webbody maroon">Our team is ready to help you scale. Whether you are launching a new protocol or integrating secure data feeds, we provide the infrastructure to make it happen.<br><br>Reach out to discuss:<br><span></span></div> <ul role="list" class="list-2"> <li class="text-webbody maroon">Custom DeFi Product Development,</li> <li class="text-webbody maroon">Tailored Price Feeds for Your Assets,</li> <li class="text-webbody maroon">End-to-End Tokenization Solutions</li> <li class="text-webbody maroon">Technical Support &amp; Strategy</li> </ul> <div class="text-webbody maroon">Fill out the form and a member of our core team will be in touch shortly.<br></div> </div> <div class="div-block-109"><div class="code-embed-6 w-embed w-script"><div data-rs-form="true"><div class="rs-form" id="rs-form"><div class="rs-row"><div class="rs-field"><label for="rs-firstname">First Name <span class="rs-req">*</span></label><input id="rs-firstname" type="text" placeholder="John" data-rs="firstname"><div class="rs-error" data-rs-err="firstname"></div></div><div class="rs-field"><label for="rs-lastname">Last Name</label><input id="rs-lastname" type="text" placeholder="Doe" data-rs="lastname"></div></div><div class="rs-field"><label for="rs-email">Work Email <span class="rs-req">*</span></label><input id="rs-email" type="email" placeholder="[email protected]" data-rs="email"><div class="rs-error" data-rs-err="email"></div></div><div class="rs-row"><div class="rs-field"><label for="rs-website">Project Website <span class="rs-req">*</span></label><input id="rs-website" type="url" placeholder="https://yourproject.com" data-rs="website"><div class="rs-error" data-rs-err="website"></div></div><div class="rs-field"><label for="rs-telegram">Telegram Handle / ID</label><input id="rs-telegram" type="text" placeholder="@yourhandle" data-rs="telegram"></div></div><div class="rs-field"><label for="rs-are-you-a">Are you a <span class="rs-req">*</span></label><select id="rs-are-you-a" data-rs="are_you_a" class="rs-placeholder"><option value="" disabled="" selected="">Select your role (e.g., Developer, Founder)</option><option value="Chain">Chain</option><option value="Crypto Asset Issuer">Crypto Asset Issuer</option><option value="RWA Issuer/Tokenisation Platform">RWA Issuer/Tokenisation Platform</option><option value="Blockchain Application">Blockchain Application</option><option value="Financial Institution / Fintech">Financial Institution / Fintech</option>
536<option value="Infrastructure or Data Provider">Infrastructure or Data Provider</option><option value="Other">Other</option></select><div class="rs-error" data-rs-err="are_you_a"></div></div><div class="rs-field"><label for="rs-message">Message</label><textarea id="rs-message" placeholder="How can we help you succeed?" rows="3" data-rs="message"></textarea></div><div class="rs-consent"><label><input type="checkbox" data-rs="consent"><span>I agree to receive communications from RedStone. You can unsubscribe at any time.</span></label><div class="rs-error" data-rs-err="consent"></div></div><div class="rs-actions"><button type="button" class="rs-button big text-button-md rs-btn" id="rs-submit">Submit</button></div><div class="rs-submit-error" id="rs-submit-error"></div></div><div class="rs-success" id="rs-success"><p class="rs-success-title">Message sent</p><p class="rs-success-sub">We'll be in touch shortly.</p></div></div> <!-- HubSpot tracking code – sets the hubspotutk cookie needed for contact dedup --> 
536<script type="module" src="/_astro/ContactSection2.astro_astro_type_script_index_0_lang.Bhf3Z1wS.js?dpl=dpl_6NhWRLwZhQL2LyoeYLsQcsyzofup"></script>
536  
536<script type="module" src="/_astro/ContactSection2.astro_astro_type_script_index_1_lang.Cbxw2I-7.js?dpl=dpl_6NhWRLwZhQL2LyoeYLsQcsyzofup"></script>
536</div></div> </div> </div> </section>   <div id="rsCookieBanner" class="rs-cookie-banner"> <div class="rs-cookie-content"> <div class="rs-cookie-text"> <h3>We Value Your Privacy</h3> <p>RedStone uses cookies to enhance your experience with our blockchain oracle services. We process your data in accordance with GDPR requirements to provide personalized content and analyze our traffic.</p> <div class="rs-cookie-legal">By clicking "Accept All", you consent to our use of cookies. Customize your preferences anytime.<br> <a href="#" onclick="event.preventDefault();RedStone.openCookieSettings()">Learn more</a> | <a href="/documents/RedStone---Privacy-Policy.pdf">Privacy Policy</a> | <a href="/terms-of-use/">Terms of Service</a> </div> </div> <div class="rs-cookie-actions"> <button onclick="RedStone.openCookieSettings()" class="rs-btn rs-btn-secondary">Customize</button> <button onclick="RedStone.rejectOptional()" class="rs-btn rs-btn-secondary">Reject Optional</button> <button onclick="RedStone.acceptAll()" class="rs-btn rs-btn-success">Accept All</button> </div> </div> </div> <div id="rsCookieModal" class="rs-cookie-modal" onclick="if(event.target===this)RedStone.closeCookieSettings()"> <div class="rs-modal-content"> <div class="rs-modal-header"> <h2>Cookie Preferences</h2> <p>Manage your cookie settings for RedStone Finance services in accordance with GDPR requirements. You can change these settings at any time.</p> </div> <div class="rs-modal-body"> <div class="rs-cookie-category required"> <div class="rs-category-header"> <div class="rs-category-title">Strictly Necessary <span class="rs-required-badge">Required</span></div> <div class="rs-toggle active disabled" data-category="necessary"></div> </div> <div class="rs-category-desc">Essential cookies required for RedStone Finance platform functionality. These cannot be switched off as they enable core features like secure transactions and user authentication.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Legitimate Interest (Art. 6(1)(f) GDPR)<br><strong>Cookies:</strong> redstone_cookie_consent, session_id, csrf_token<br><strong>Retention:</strong> Session or 12 months</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Performance &amp; Analytics</div> <div class="rs-toggle" data-category="analytics"></div> </div> <div class="rs-category-desc">Help us understand how users interact with RedStone Finance services to improve our blockchain oracle performance and user experience. All data is aggregated and anonymous.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Consent (Art. 6(1)(a) GDPR)<br><strong>Cookies:</strong> _ga, _ga_*, _gid, _hjSession_*, _hjSessionUser_*<br><strong>Third Parties:</strong> Google Analytics, Hotjar<br><strong>Retention:</strong> 2 years (Google), 1 year (Hotjar)</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Targeting &amp; Advertising</div> <div class="rs-toggle" data-category="targeting"></div> </div> <div class="rs-category-desc">Used to deliver personalized content about RedStone Finance services and measure advertising effectiveness across blockchain and DeFi platforms.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Consent (Art. 6(1)(a) GDPR)<br><strong>Cookies:</strong> YSC, VISITOR_INFO1_LIVE, _fbp, _fbc<br><strong>Third Parties:</strong> YouTube, Facebook, Google Ads<br><strong>Retention:</strong> 6 months to 2 years</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Functionality</div> <div class="rs-toggle" data-category="functional"></div> </div> <div class="rs-category-desc">Enable enhanced functionality like language preferences, user dashboard settings, and personalized RedStone Finance features.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Legitimate Interest (Art. 6(1)(f) GDPR)<br><strong>Cookies:</strong> lang_pref, theme_mode, RDST_AD_TOU<br><strong>Retention:</strong> 6 months to 1 year</div> </div> </div> <div class="rs-modal-footer"> <div class="rs-footer-left"> <button onclick="RedStone.rejectAll()" class="rs-btn rs-btn-secondary">Reject All</button> <button onclick="RedStone.acceptAll();RedStone.closeCookieSettings()" class="rs-btn rs-btn-success">Accept All</button> </div> <div class="rs-footer-right"> <button onclick="RedStone.closeCookieSettings()" class="rs-btn rs-btn-secondary">Cancel</button> <button onclick="RedStone.savePreferences()" class="rs-btn rs-btn-primary">Save Preferences</button> </div> </div> </div> </div> 
536<script type="module" src="/_astro/ContactSection6.astro_astro_type_script_index_0_lang.D9_unicS.js?dpl=dpl_6NhWRLwZhQL2LyoeYLsQcsyzofup"></script>
536 <section class="rs-section darkmaroon" style="padding-top: 0; margin-top: 0px; position: relative; z-index: 10; "> <nav class="rs-footer-nav " style="padding-top: 0; margin-top: 0;"> <div class="w-layout-blockcontainer rs-container small w-container" style="padding-top: 0; margin-top: 0;"> <div class="div-block-68"><img width="127" height="24" class="redstone-logo" src="/images/Redstone-Logo_2.svg" data-figma-image-id="681ba6974f7e1a1f9e4550e6" alt="RedStone Logo" data-figma-id="2012:100537" data-figma-image-hash="fd972d65510ea83a9ea2cb6ab06f7290" loading="lazy"></div> <div class="footernavcolumns w-row"> <div class="column-32 w-col w-col-3"><img width="127" height="24" class="redstone-logo" src="/images/Redstone-Logo_2.svg" data-figma-image-id="681ba6974f7e1a1f9e4550e6" alt="RedStone Logo" data-figma-id="2012:100537" data-figma-image-hash="fd972d65510ea83a9ea2cb6ab06f7290" loading="lazy"> <div class="div-block-89"> <a data-wf--footernavlink--variant="gem" href="https://cantina.xyz/bounties/36c588d4-0681-45a8-9694-13a871cc4ae6" target="_blank" class="footernavlink text-weblabel">Bounty Program</a> </div> <div class="div-block-89"> <a data-wf--footernavlink--variant="gem" href="/red-token/" class="footernavlink text-weblabel">$Red Token</a> </div> <div class="footer-subtext text-webbutton-sm">The backbone of tomorrow&#x27;s financial system. Modular blockchain oracles built for DeFi and institutions.</div> </div> <div class="w-col w-col-3"> <div class="footernavcolumn"> <div class="div-block-26"> <div class="text-weblabel bold">Products</div> </div> <a data-wf--footernavlink--variant="gem" href="/product-stack/" class="footernavlink text-weblabel">Product Stack</a> <a data-wf--footernavlink--variant="gem" href="/institutional/" class="footernavlink text-weblabel">Institutional</a> <a data-wf--footernavlink--variant="gem" href="/price-feeds/" class="footernavlink text-weblabel">Price Feeds</a> <a data-wf--footernavlink--variant="gem" href="/proof-of-reserves/" class="footernavlink text-weblabel">Proof of Reserve</a> <a data-wf--footernavlink--variant="gem" href="/atom/" class="footernavlink text-weblabel">Atom</a> <a data-wf--footernavlink--variant="gem" href="/bolt/" class="footernavlink text-weblabel">Bolt</a> <a data-wf--footernavlink--variant="gem" href="/live/" class="footernavlink text-weblabel">RedStone Live</a> <a data-wf--footernavlink--variant="gem" href="/settle/" class="footernavlink text-weblabel">RedStone Settle</a> </div> </div> <div class="column-34 w-col w-col-3"> <div class="footernavcolumn"> <div class="div-block-26"> <div class="text-weblabel bold">Company</div> </div> <a data-wf--footernavlink--variant="gem" href="/blog/" class="footernavlink text-weblabel">Blog</a> <a data-wf--footernavlink--variant="gem" href="/case-studies/" class="footernavlink text-weblabel">Case Studies</a> <a data-wf--footernavlink--variant="gem" href="/clients/" class="footernavlink text-weblabel">Clients</a> <a data-wf--footernavlink--variant="gem" href="/developers/" class="footernavlink text-weblabel">Developers</a> <a data-wf--footernavlink--variant="gem" href="https://docs.redstone.finance" target="_blank" class="footernavlink text-weblabel">Docs</a> <a data-wf--footernavlink--variant="gem" href="/reports/" class="footernavlink text-weblabel">REPORTS</a> <a data-wf--footernavlink--variant="gem" href="/team/" class="footernavlink text-weblabel">Team</a> <a data-wf--footernavlink--variant="gem" href="/careers/" class="footernavlink text-weblabel">Careers</a> <a data-wf--footernavlink--variant="gem" href="/security/" class="footernavlink text-weblabel">Security</a> <a data-wf--footernavlink--variant="gem" href="/contact/" class="footernavlink text-weblabel">Contact</a> <a data-wf--footernavlink--variant="gem" href="/brand-kit/" class="footernavlink text-weblabel">Brand kit</a> <a data-wf--footernavlink--variant="gem" href="/red-token/" class="footernavlink text-weblabel mobile-only-link" style="display: none;">$Red Token</a> <a data-wf--footernavlink--variant="gem" href="https://cantina.xyz/bounties/36c588d4-0681-45a8-9694-13a871cc4ae6" target="_blank" class="footernavlink text-weblabel mobile-only-link" style="display: none;">Bounty Program</a> </div> </div> <div class="column-33 w-col w-col-3"> <div class="footernavcolumn"> <div class="div-block-26"> <div class="text-weblabel bold">Socials</div> </div> <a data-wf--footernavlink--variant="gem" href="https://t.me/redstonefinance/" target="_blank" class="footernavlink text-weblabel">Telegram</a> <a data-wf--footernavlink--variant="gem" href="https://x.com/redstone_defi" target="_blank" class="footernavlink text-weblabel">x (Twitter)</a> <a data-wf--footernavlink--variant="gem" href="https://discord.gg/redstonedefi" target="_blank" class="footernavlink text-weblabel">Discord</a> <a data-wf--footernavlink--variant="gem" href="https://www.youtube.com/@redstone_defi" target="_blank" class="footernavlink text-weblabel">Youtube</a> <a data-wf--footernavlink--variant="gem" href="https://github.com/redstone-finance" target="_blank" class="footernavlink text-weblabel">github</a> <a data-wf--footernavlink--variant="gem" href="https://www.linkedin.com/company/redstone-finance/" target="_blank" class="footernavlink text-weblabel">LinkedIn</a> </div> </div> </div> </div> </nav> <footer data-wf--footer-rs--variant="dark" class="rs-footer "> <div class="text-weblabel-sm shell full-width">2026 All Rights Reserved</div> <div class="footercopyrightnav"> <a href="/security/" class="rs-footer-link text-weblabel-sm">Security</a> <a href="/mica/" class="rs-footer-link text-weblabel-sm">MICA white paper</a> <a href="/documents/RedStone---Privacy-Policy.pdf" target="_blank" class="rs-footer-link text-weblabel-sm">Privacy Policy</a> <a href="/terms-of-use/" class="rs-footer-link text-weblabel-sm">Terms of Use</a> <a data-rs-action="open-settings" href="#" class="rs-footer-link text-weblabel-sm">Manage Cookies</a> </div> </footer> </section>  <!-- Cookie Banner --><div id="rsCookieBanner" class="rs-cookie-banner"> <div class="rs-cookie-content"> <div class="rs-cookie-text"> <h3>We Value Your Privacy</h3> <p>
536RedStone uses cookies to enhance your experience with our blockchain oracle services. We process your data in accordance with GDPR requirements to provide personalized content and analyze our traffic.</p> <div class="rs-cookie-legal">By clicking "Accept All", you consent to our use of cookies. Customize your preferences anytime.<br> <a href="#" onclick="event.preventDefault();RedStone.openCookieSettings()">Learn more</a> | <a href="/documents/RedStone---Privacy-Policy.pdf">Privacy Policy</a> | <a href="/terms-of-use/">Terms of Service</a> </div> </div> <div class="rs-cookie-actions"> <button onclick="RedStone.openCookieSettings()" class="rs-btn rs-btn-secondary">Customize</button> <button onclick="RedStone.rejectOptional()" class="rs-btn rs-btn-secondary">Reject Optional</button> <button onclick="RedStone.acceptAll()" class="rs-btn rs-btn-success">Accept All</button> </div> </div> </div> <!-- Cookie Preferences Modal --> <div id="rsCookieModal" class="rs-cookie-modal" onclick="if(event.target===this)RedStone.closeCookieSettings()"> <div class="rs-modal-content"> <div class="rs-modal-header"> <h2>Cookie Preferences</h2> <p>Manage your cookie settings for RedStone Finance services in accordance with GDPR requirements. You can change these settings at any time.</p> </div> <div class="rs-modal-body"> <div class="rs-cookie-category required"> <div class="rs-category-header"> <div class="rs-category-title">Strictly Necessary <span class="rs-required-badge">Required</span></div> <div class="rs-toggle active disabled" data-category="necessary"></div> </div> <div class="rs-category-desc">Essential cookies required for RedStone Finance platform functionality. These cannot be switched off as they enable core features like secure transactions and user authentication.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Legitimate Interest (Art. 6(1)(f) GDPR)<br><strong>Cookies:</strong> redstone_cookie_consent, session_id, csrf_token<br><strong>Retention:</strong> Session or 12 months</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Performance &amp; Analytics</div> <div class="rs-toggle" data-category="analytics"></div> </div> <div class="rs-category-desc">Help us understand how users interact with RedStone Finance services to improve our blockchain oracle performance and user experience. All data is aggregated and anonymous.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Consent (Art. 6(1)(a) GDPR)<br><strong>Cookies:</strong> _ga, _ga_*, _gid, _hjSession_*, _hjSessionUser_*<br><strong>Third Parties:</strong> Google Analytics, Hotjar<br><strong>Retention:</strong> 2 years (Google), 1 year (Hotjar)</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Targeting &amp; Advertising</div> <div class="rs-toggle" data-category="targeting"></div> </div> <div class="rs-category-desc">Used to deliver personalized content about RedStone Finance services and measure advertising effectiveness across blockchain and DeFi platforms.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Consent (Art. 6(1)(a) GDPR)<br><strong>Cookies:</strong> YSC, VISITOR_INFO1_LIVE, _fbp, _fbc<br><strong>Third Parties:</strong> YouTube, Facebook, Google Ads<br><strong>Retention:</strong> 6 months to 2 years</div> </div> <div class="rs-cookie-category"> <div class="rs-category-header"> <div class="rs-category-title">Functionality</div> <div class="rs-toggle" data-category="functional"></div> </div> <div class="rs-category-desc">Enable enhanced functionality like language preferences, user dashboard settings, and personalized RedStone Finance features.</div> <div class="rs-cookie-details"><strong>Legal Basis:</strong> Legitimate Interest (Art. 6(1)(f) GDPR)<br><strong>Cookies:</strong> lang_pref, theme_mode, RDST_AD_TOU<br><strong>Retention:</strong> 6 months to 1 year</div> </div> </div> <div class="rs-modal-footer"> <div class="rs-footer-left"> <button onclick="RedStone.rejectAll()" class="rs-btn rs-btn-secondary">Reject All</button> <button onclick="RedStone.acceptAll();RedStone.closeCookieSettings()" class="rs-btn rs-btn-success">Accept All</button> </div> <div class="rs-footer-right"> <button onclick="RedStone.closeCookieSettings()" class="rs-btn rs-btn-secondary">Cancel</button> <button onclick="RedStone.savePreferences()" class="rs-btn rs-btn-primary">Save Preferences</button> </div> </div> </div> </div> 
536<script>
537window.RedStone = window.RedStone || {};
538(function(RedStone) {
539  const COOKIE_NAME = 'redstone_cookie_consent';
540  const DOMAIN = window.location.hostname.includes('localhost') 
541    ? 'localhost' 
542    : window.location.hostname.endsWith('redstone.finance')
543      ? '.redstone.finance'
544      : window.location.hostname;
545
546  const COOKIE_PATTERNS = {
547    analytics: {
548      patterns: [/^_ga/, /^_gid/, /^_gat/, /^__utm/, /^_hj/],
549      domains: ['', '.redstone.finance', '.blog.redstone.finance', '.app.redstone.finance']
550    },
551    targeting: {
552      patterns: [/^_fbp/, /^_fbc/, /^YSC/, /^VISITOR_INFO/, /^fr$/, /^ads/],
553      domains: ['', '.youtube.com', '.facebook.com', '.google.com', DOMAIN]
554    },
555    functional: {
556      patterns: [/^lang/, /^theme/, /^user_pref/, /^RDST_AD_TOU/],
557      domains: ['', DOMAIN]
558    }
559  };
560  const ESSENTIAL_PATTERNS = [/^redstone_cookie_consent/, /^session/, /^csrf/, /^auth/, /^essential/];
561  let consentData = {
562    necessary: true,
563    analytics: false,
564    targeting: false,
565    functional: false,
566    timestamp: 0,
567    version: '1.0',
568    domain: 'redstone.finance',
569    userAgent: navigator.userAgent
570  };
571  let originalCookieDescriptor = null;
572  let blockingActive = false;
573
574  function getAllCookies() {
575    return document.cookie.split(';').reduce((cookies, cookie) => {
576      const [name, value] = cookie.trim().split('=');
577      if (name) cookies[name] = decodeURIComponent(value || '');
578      return cookies;
579    }, {});
580  }
581
582  function deleteCookie(name, domain = '', path = '/') {
583    const domains = domain ? [domain] : ['', window.location.hostname, DOMAIN];
584    const paths = [path, '/', '/app', '/blog'];
585    domains.forEach(d => {
586      paths.forEach(p => {
587        document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=${p}${d ? `;domain=${d}` : ''}`;
588      });
589    });
590  }
591
592  function shouldBlockCookie(cookieName) {
593    if (ESSENTIAL_PATTERNS.some(pattern => pattern.test(cookieName))) return false;
594    for (let category in COOKIE_PATTERNS) {
595      if (!consentData[category] && COOKIE_PATTERNS[category].patterns.some(pattern => pattern.test(cookieName))) return true;
596    }
597    return false;
598  }
599
600  function removeExistingCookies(categories) {
601    const allCookies = getAllCookies();
602    categories.forEach(category => {
603      if (COOKIE_PATTERNS[category]) {
604        const { patterns, domains } = COOKIE_PATTERNS[category];
605        Object.keys(allCookies).forEach(cookieName => {
606          if (patterns.some(pattern => pattern.test(cookieName))) {
607            domains.forEach(domain => deleteCookie(cookieName, domain));
608          }
609        });
610      }
611    });
612  }
613
614  function initCookieBlocking() {
615    if (blockingActive) return;
616    originalCookieDescriptor = Object.getOwnPropertyDescriptor(Document.prototype, 'cookie') || Object.getOwnPropertyDescriptor(HTMLDocument.prototype, 'cookie');
617    if (!originalCookieDescriptor) return;
618    Object.defineProperty(document, 'cookie', {
619      get() {
620        return originalCookieDescriptor.get.call(document);
621      },
622      set(cookieString) {
623        const cookieName = cookieString.split('=')[0].trim();
624        if (shouldBlockCookie(cookieName)) return cookieString;
625        return originalCookieDescriptor.set.call(document, cookieString);
626      },
627      configurable: true
628    });
629    blockingActive = true;
630  }
631
632  function updateToggles() {
633    document.querySelectorAll('.rs-toggle').forEach(toggle => {
634      const category = toggle.dataset.category;
635      if (category === 'necessary') return;
636      if (consentData[category]) toggle.classList.add('active');
637      else toggle.classList.remove('active');
638    });
639  }
640
641  function saveConsent() {
642    consentData.timestamp = Date.now();
643    consentData.domain = 'redstone.finance';
644    const cookieValue = JSON.stringify(consentData);
645    document.cookie = `${COOKIE_NAME}=${encodeURIComponent(cookieValue)};path=/;domain=${DOMAIN};max-age=${365 * 24 * 60 * 60};SameSite=Lax;Secure=${location.protocol === 'https:'}`;
646  }
647
648  function loadConsent() {
649    const cookies = getAllCookies();
650    if (cookies[COOKIE_NAME]) {
651      try {
652        const saved = JSON.parse(decodeURIComponent(cookies[COOKIE_NAME]));
653        consentData = { ...consentData, ...saved };
654        return true;
655      } catch (e) {}
656    }
657    return false;
658  }
659
660  function applyConsent() {
661    const disabledCategories = Object.entries(consentData)
662      .filter(([key, value]) => key !== 'necessary' && key !== 'timestamp' && key !== 'version' && key !== 'domain' && key !== 'userAgent' && !value)
663      .map(([key]) => key);
664    if (disabledCategories.length > 0) removeExistingCookies(disabledCategories);
665    initCookieBlocking();
666    saveConsent();
667    document.dispatchEvent(new CustomEvent('redstoneConsentUpdate', { detail: consentData }));
668  }
669
670  RedStone.openCookieSettings = function() {
671    updateToggles();
672    const modal = document.getElementById('rsCookieModal');
673    if (modal) modal.classList.add('show');
674  };
675
676  RedStone.closeCookieSettings = function() {
677    const modal = document.getElementById('rsCookieModal');
678    if (modal) modal.classList.remove('show');
679  };
680
681  RedStone.acceptAll = function() {
682    consentData = { ...consentData, analytics: true, targeting: true, functional: true };
683    applyConsent();
684    const banner = document.getElementById('rsCookieBanner');
685    if (banner) banner.classList.remove('show');
686  };
687
688  RedStone.rejectOptional = function() {
689    consentData = { ...consentData, analytics: false, targeting: false, functional: false };
690    applyConsent();
691    const banner = document.getElementById('rsCookieBanner');
692    if (banner) banner.classList.remove('show');
693  };
694
695  RedStone.rejectAll = function() {
696    consentData = {
697      necessary: true,
698      analytics: false,
699      targeting: false,
700      functional: false,
701      timestamp: Date.now(),
702      version: '1.0',
703      domain: 'redstone.finance',
704      userAgent: navigator.userAgent
705    };
706    applyConsent();
707    const banner = document.getElementById('rsCookieBanner');
708    if (banner) banner.classList.remove('show');
709    RedStone.closeCookieSettings();
710  };
711
712  RedStone.savePreferences = function() {
713    document.querySelectorAll('.rs-toggle:not(.disabled)').forEach(toggle => {
714      const category = toggle.dataset.category;
715      consentData[category] = toggle.classList.contains('active');
716    });
717    applyConsent();
718    RedStone.closeCookieSettings();
719    const banner = document.getElementById('rsCookieBanner');
720    if (banner) banner.classList.remove('show');
721  };
722
723  document.addEventListener('click', function(e) {
724    const actionEl = e.target.closest('[data-rs-action]');
725    if (actionEl) {
726      e.preventDefault();
727      const action = actionEl.getAttribute('data-rs-action');
728      switch (action) {
729        case 'open-settings': RedStone.openCookieSettings(); break;
730        case 'close-modal': RedStone.closeCookieSettings(); break;
731        case 'accept-all': RedStone.acceptAll(); break;
732        case 'accept-all-close': RedStone.acceptAll(); RedStone.closeCookieSettings(); break;
733        case 'reject-optional': RedStone.rejectOptional(); break;
734        case 'reject-all': RedStone.rejectAll(); break;
735        case 'save-preferences': RedStone.savePreferences(); break;
736      }
737    }
738    if (e.target.classList.contains('rs-toggle') && !e.target.classList.contains('disabled')) {
739      e.target.classList.toggle('active');
740    }
741    if (e.target.id === 'rsCookieModal') {
742      RedStone.closeCookieSettings();
743    }
744  });
745
746  // Check consent on load
747  const hasConsent = loadConsent();
748  if (hasConsent) {
749    applyConsent();
750  } else {
751    setTimeout(() => {
752      const banner = document.getElementById('rsCookieBanner');
753      if (banner) banner.classList.add('show');
754    }, 2000);
755  }
756})(window.RedStone);
757</script>
757 <!-- Backdrop + modal wrapper --><div id="rs-contact-modal" class="rs-contact-modal" role="dialog" aria-modal="true" aria-label="Contact RedStone" hidden> <div class="rs-contact-modal__backdrop"></div> <div class="rs-contact-modal__sheet"> <!-- Header --> <div class="rs-contact-modal__header"> <div> <h2 class="rs-contact-modal__title">Let's Build the Future of DeFi</h2> <p class="rs-contact-modal__subtitle">Fill out the form and our team will be in touch shortly.</p> </div> <button class="rs-contact-modal__close" id="rs-modal-close" aria-label="Close"> <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line> </svg> </button> </div> <!-- Form body --> <div class="rs-contact-modal__body"> <div data-rs-form-modal="true"> <!-- Injected by script --> </div> </div> </div> </div> <!-- Sticky CTA bar (mobile only) --> <div id="rs-sticky-cta" class="rs-sticky-cta"> <span class="rs-sticky-cta__label">Ready to integrate?</span> <button id="rs-sticky-cta-btn" class="rs-sticky-cta__btn">
758Talk to Us
759<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </button> </div>  
759<script>
760(function () {
761  /* ── HubSpot form config ───────────────────────────────────────── */
762  var PORTAL_ID = '26706494';
763  var FORM_ID   = '19d4bd2b-94d7-484d-9c96-2879a0652196';
764  var ENDPOINT  = 'https://api.hsforms.com/submissions/v3/integration/submit/' + PORTAL_ID + '/' + FORM_ID;
765
766  /* ── Build form HTML ───────────────────────────────────────────── */
767  function buildForm() {
768    return (
769      '<div class="rs-form" id="rs-modal-form">' +
770        '<div class="rs-row">' +
771          '<div class="rs-field"><label for="rsm-firstname">First Name <span class="rs-req">*</span></label><input id="rsm-firstname" type="text" placeholder="John" data-rs="firstname"><div class="rs-error" data-rs-err="firstname"></div></div>' +
772          '<div class="rs-field"><label for="rsm-lastname">Last Name</label><input id="rsm-lastname" type="text" placeholder="Doe" data-rs="lastname"></div>' +
773        '</div>' +
774        '<div class="rs-field"><label for="rsm-email">Work Email <span class="rs-req">*</span></label><input id="rsm-email" type="email" placeholder="[email protected]" data-rs="email"><div class="rs-error" data-rs-err="email"></div></div>' +
775        '<div class="rs-row">' +
776          '<div class="rs-field"><label for="rsm-website">Project Website <span class="rs-req">*</span></label><input id="rsm-website" type="url" placeholder="https://yourproject.com" data-rs="website"><div class="rs-error" data-rs-err="website"></div></div>' +
777          '<div class="rs-field"><label for="rsm-telegram">Telegram Handle / ID</label><input id="rsm-telegram" type="text" placeholder="@yourhandle" data-rs="telegram"></div>' +
778        '</div>' +
779        '<div class="rs-field"><label for="rsm-role">Are you a <span class="rs-req">*</span></label><select id="rsm-role" data-rs="are_you_a" class="rs-placeholder"><option value="" disabled selected>Select your role</option><option value="Chain">Chain</option><option value="Crypto Asset Issuer">Crypto Asset Issuer</option><option value="RWA Issuer/Tokenisation Platform">RWA Issuer / Tokenisation Platform</option><option value="Blockchain Application">Blockchain Application</option><option value="Financial Institution / Fintech">Financial Institution / Fintech</option><option value="Infrastructure or Data Provider">Infrastructure or Data Provider</option><option value="Other">Other</option></select><div class="rs-error" data-rs-err="are_you_a"></div></div>' +
780        '<div class="rs-field"><label for="rsm-message">Message</label><textarea id="rsm-message" placeholder="How can we help you succeed?" rows="3" data-rs="message"></textarea></div>' +
781        '<div class="rs-consent"><label><input type="checkbox" data-rs="consent"><span>I agree to receive communications from RedStone. You can unsubscribe at any time.</span></label><div class="rs-error" data-rs-err="consent"></div></div>' +
782        '<div class="rs-actions"><button type="button" class="rs-button big text-button-md rs-btn" id="rsm-submit">Submit</button></div>' +
783        '<div class="rs-submit-error" id="rsm-submit-error"></div>' +
784      '</div>' +
785      '<div class="rs-success" id="rsm-success"><p class="rs-success-title">Message sent</p><p class="rs-success-sub">We\'ll be in touch shortly.</p></div>'
786    );
787  }
788
789  var formBuilt = false;
790
791  /* ── Open / close ──────────────────────────────────────────────── */
792  function openModal() {
793    var modal = document.getElementById('rs-contact-modal');
794    if (!modal) return;
795    modal.hidden = false;
796    document.body.style.overflow = 'hidden';
797
798    if (!formBuilt) {
799      var root = modal.querySelector('[data-rs-form-modal]');
800      if (root) {
801        root.innerHTML = buildForm();
802        attachFormLogic(root);
803        formBuilt = true;
804      }
805    }
806  }
807
808  function closeModal() {
809    var modal = document.getElementById('rs-contact-modal');
810    if (!modal) return;
811    modal.hidden = true;
812    document.body.style.overflow = '';
813    
814    if (window.location.hash === '#contact-form') {
815      history.pushState('', document.title, window.location.pathname + window.location.search);
816    }
817  }
818
819  /* Expose globally so any page button can call it */
820  window.openContactModal = openModal;
821  window.closeContactModal = closeModal;
822
823  document.addEventListener('DOMContentLoaded', function () {
824    /* Close button */
825    var closeBtn = document.getElementById('rs-modal-close');
826    if (closeBtn) closeBtn.addEventListener('click', closeModal);
827
828    /* Backdrop click */
829    var modal = document.getElementById('rs-contact-modal');
830    if (modal) {
831      var backdrop = modal.querySelector('.rs-contact-modal__backdrop');
832      if (backdrop) backdrop.addEventListener('click', closeModal);
833    }
834
835    /* ESC key */
836    document.addEventListener('keydown', function (e) {
837      if (e.key === 'Escape') closeModal();
838    });
839
840    /* Sticky CTA button */
841    var ctaBtn = document.getElementById('rs-sticky-cta-btn');
842    if (ctaBtn) ctaBtn.addEventListener('click', openModal);
843
844    /* Wire up any existing [data-open-contact] triggers on the page */
845    document.querySelectorAll('[data-open-contact]').forEach(function (el) {
846      el.addEventListener('click', function (e) {
847        e.preventDefault();
848        openModal();
849      });
850    });
851
852    /* Wire up links with href containing #contact-form */
853    document.querySelectorAll('a[href*="#contact-form"]').forEach(function (el) {
854      el.addEventListener('click', function (e) {
855        e.preventDefault();
856        openModal();
857        history.pushState(null, null, '#contact-form');
858      });
859    });
860
861    /* Open modal if page loads with #contact-form hash */
862    if (window.location.hash === '#contact-form') {
863      openModal();
864    }
865
866    /* Listen for hash changes (e.g., browser back/forward) */
867    window.addEventListener('hashchange', function () {
868      if (window.location.hash === '#contact-form') {
869        openModal();
870      } else {
871        var modalObj = document.getElementById('rs-contact-modal');
872        if (modalObj && !modalObj.hidden) {
873          closeModal();
874        }
875      }
876    });
877
878    /* Show sticky CTA bar once user scrolls past 300px */
879    var stickyBar = document.getElementById('rs-sticky-cta');
880    if (stickyBar) {
881      var shown = false;
882      window.addEventListener('scroll', function () {
883        if (!shown && window.scrollY > 300) {
884          shown = true;
885          stickyBar.classList.add('rs-sticky-cta--visible');
886        } else if (shown && window.scrollY <= 50) {
887          shown = false;
888          stickyBar.classList.remove('rs-sticky-cta--visible');
889        }
890      }, { passive: true });
891    }
892  });
893
894  /* ── Form logic (validation + submit) ─────────────────────────── */
895  function attachFormLogic(root) {
896    var submitBtn = root.querySelector('#rsm-submit');
897    var submitErr = root.querySelector('#rsm-submit-error');
898
899    function elQ(sel) { return root.querySelector(sel); }
900    function val(name) { var i = elQ('[data-rs="' + name + '"]'); return i ? i.value.trim() : ''; }
901
902    var selectEl = elQ('[data-rs="are_you_a"]');
903    if (selectEl) {
904      selectEl.addEventListener('change', function () {
905        this.classList.toggle('rs-placeholder', !this.value);
906      });
907    }
908
909    var rules = {
910      firstname:  function (v) { return v ? '' : 'First name is required.'; },
911      email:      function (v) {
912        if (!v) return 'Email is required.';
913        if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v)) return 'Please enter a valid email.';
914        return '';
915      },
916      website:    function (v) {
917        if (!v) return 'Website is required.';
918        if (!/^(https?:\/\/)?([\w-]+\.)+[\w-]{2,}(\/\S*)?$/.test(v)) return 'Please enter a valid URL.';
919        return '';
920      },
921      are_you_a:  function (v) { return v ? '' : 'Please select an option.'; },
922      consent:    function ()  { return elQ('[data-rs="consent"]').checked ? '' : 'Consent is required.'; }
923    };
924
925    function showErr(name, msg) {
926      var errEl = elQ('[data-rs-err="' + name + '"]');
927      var input  = elQ('[data-rs="' + name + '"]');
928      if (errEl) { errEl.textContent = msg; errEl.classList.toggle('rs-visible', !!msg); }
929      if (input) input.classList.toggle('rs-invalid', !!msg);
930    }
931
932    function validateField(name) {
933      var msg = rules[name] ? rules[name](val(name)) : '';
934      showErr(name, msg);
935      return !msg;
936    }
937
938    function validateAll() {
939      var ok = true;
940      for (var k in rules) { if (!validateField(k)) ok = false; }
941      return ok;
942    }
943
944    ['firstname', 'email', 'website', 'are_you_a'].forEach(function (name) {
945      var input = elQ('[data-rs="' + name + '"]');
946      if (input) {
947        var evt = input.tagName === 'SELECT' ? 'change' : 'blur';
948        input.addEventListener(evt, function () { validateField(name); });
949      }
950    });
951
952    function getHutk() {
953      var c = document.cookie.split('; ');
954      for (var i = 0; i < c.length; i++) {
955        if (c[i].indexOf('hubspotutk=') === 0) return c[i].split('=')[1];
956      }
957      return null;
958    }
959
960    if (submitBtn) {
961      submitBtn.addEventListener('click', function () {
962        submitErr.classList.remove('rs-visible');
963        if (!validateAll()) return;
964
965        submitBtn.disabled = true;
966        submitBtn.innerHTML = '<span class="rs-spinner"></span> Sending...';
967
968        var fields = [
969          { objectTypeId: '0-1', name: 'firstname',  value: val('firstname') },
970          { objectTypeId: '0-1', name: 'lastname',   value: val('lastname') },
971          { objectTypeId: '0-1', name: 'email',      value: val('email') },
972          { objectTypeId: '0-2', name: 'website',    value: val('website') },
973          { objectTypeId: '0-1', name: 'telegram',   value: val('telegram') },
974          { objectTypeId: '0-2', name: 'are_you_a',  value: val('are_you_a') },
975          { objectTypeId: '0-1', name: 'message',    value: val('message') }
976        ].filter(function (f) { return f.value; });
977
978        var ctx = { pageUri: window.location.href, pageName: document.title };
979        var hutk = getHutk();
980        if (hutk) ctx.hutk = hutk;
981
982        fetch(ENDPOINT, {
983          method: 'POST',
984          headers: { 'Content-Type': 'application/json' },
985          body: JSON.stringify({
986            fields: fields,
987            context: ctx,
988            legalConsentOptions: { consent: { consentToProcess: true, text: 'I agree to re
988ceive communications from RedStone.' } }
989          })
990        })
991        .then(function (res) {
992          if (!res.ok) return res.json().catch(function () { return null; }).then(function (b) { throw new Error(b && b.message ? b.message : 'Submission failed (' + res.status + ')'); });
993          root.querySelector('#rs-modal-form').style.display = 'none';
994          root.querySelector('#rsm-success').classList.add('rs-visible');
995        })
996        .catch(function (err) {
997          submitErr.textContent = err.message || 'Something went wrong. Please try again.';
998          submitErr.classList.add('rs-visible');
999          submitBtn.disabled = false;
1000          submitBtn.innerHTML = 'Submit';
1001        });
1002      });
1003    }
1004  }
1005})();
1006</script>
1006 <!-- jQuery + webflow.js with defer – moved after content, don't block critical path --> 
1006<script defer src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=67519197ce9eaef4601a6287" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
1006 
1006<script defer src="/js/webflow.js" type="text/javascript"></script>
1006 <!-- GTM – loaded async in body, never blocks head parsing --> 
1006<script>
vendor: 435 bytes, lines 1006-1016
1006
1007    (function (w, d, s, l, i) {
1008      w[l] = w[l] || [];
1009      w[l].push({ "gtm.start": new Date().getTime(), event: "gtm.js" });
1010      var f = d.getElementsByTagName(s)[0],
1011        j = d.createElement(s),
1012        dl = l != "dataLayer" ? "&l=" + l : "";
1013      j.async = true;
1014      j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl;
1015      f.parentNode.insertBefore(j, f);
1016    })(window, document, "script", "dataLayer", "
1016GTM-MZ39PDDC
vendor: 6 bytes, lines 1016-1017
1016");
1017  
1017</script>
1017 </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.