1<!doctype html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <link rel="profile" href="https://gmpg.org/xfn/11"> 7 <title>Nexthop.ai – Building the most efficient Al infrastructureâ¨for the world's largest cloud operators</title> 8<meta name='robots' content='max-image-preview:large' />
9<script id="cookie-law-info-gcm-var-js" type="db210efae27388b2ff45553d-text/javascript"> 10var _ckyGcm = {"status":true,"default_settings":[{"analytics":"denied","advertisement":"denied","functional":"denied","necessary":"granted","ad_user_data":"denied","ad_personalization":"denied","regions":"All"}],"wait_for_update":2000,"url_passthrough":false,"ads_data_redaction":false}</script>
vendor: 1 bytes, line 10
10
11<script id="cookie-law-info-gcm-js" type="db210efae27388b2ff45553d-text/javascript" src="https://nexthop.ai/wp-content/plugins/cookie-law-info/lite/frontend/js/gcm.min.js"></script>
11
11<script id="cookieyes" type="db210efae27388b2ff45553d-text/javascript" src="https://cdn-cookieyes.com/client_data/6a83b895579b0a54949b51bb9bff3d0c/script.js"></script>
11<link rel='dns-prefetch' href='//descopecdn.com' /> 12<link rel='dns-prefetch' href='//unpkg.com' /> 13<link rel='dns-prefetch' href='//static.descope.com' /> 14<link rel="alternate" type="application/rss+xml" title="Nexthop.ai » Feed" href="https://nexthop.ai/feed/" /> 15<link rel="alternate" type="application/rss+xml" title="Nexthop.ai » Comments Feed" href="https://nexthop.ai/comments/feed/" /> 16<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://nexthop.ai/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fnexthop.ai%2F" /> 17<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://nexthop.ai/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fnexthop.ai%2F&format=xml" /> 18<style id="wp-img-auto-sizes-contain-inline-css"> 19img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 20/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 21</style> 22<style id="wp-emoji-styles-inline-css"> 23 24 img.wp-smiley, img.emoji { 25 display: inline !important; 26 border: none !important; 27 box-shadow: none !important; 28 height: 1em !important; 29 width: 1em !important; 30 margin: 0 0.07em !important; 31 vertical-align: -0.1em !important; 32 background: none !important; 33 padding: 0 !important; 34 } 35/*# sourceURL=wp-emoji-styles-inline-css */ 36</style> 37<link rel='stylesheet' id='sdm-styles-css' href='https://nexthop.ai/wp-content/plugins/simple-download-monitor/css/sdm_wp_styles.css?ver=4.1.1' media='all' /> 38<link rel='stylesheet' id='sdm_fancy2_styles-css' href='https://nexthop.ai/wp-content/plugins/simple-download-monitor/includes/templates-related/fancy2/sdm-fancy-2-styles.css?ver=4.1.1' media='all' /> 39<style id="global-styles-inline-css"> 40:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
40--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:root { --wp--style--global--content-size: 800px;--wp--style--global--wide-size: 1200px; }:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 24px; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 24px; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 24px;}:root :where(.is-layout-grid){gap: 24px;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
40.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 41:root :where(.wp-block-icon svg){width: 24px;} 42:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} 43/*# sourceURL=global-styles-inline-css */ 44</style> 45<link rel='stylesheet' id='contact-form-7-css' href='https://nexthop.ai/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.1.7' media='all' /> 46<link rel='stylesheet' id='descope-wp-css' href='https://nexthop.ai/wp-content/plugins/descope/public/css/descope-wp-public.css?ver=1.0.0' media='all' /> 47<link rel='stylesheet' id='hello-elementor-css' href='https://nexthop.ai/wp-content/themes/hello-elementor/assets/css/reset.css?ver=3.5.1' media='all' /> 48<link rel='stylesheet' id='hello-elementor-theme-style-css' href='https://nexthop.ai/wp-content/themes/hello-elementor/assets/css/theme.css?ver=3.5.1' media='all' /> 49<link rel='stylesheet' id='elementor-frontend-css' href='https://nexthop.ai/wp-content/plugins/elementor/assets/css/frontend.min.css?ver=4.3.2' media='all' /> 50<link rel='stylesheet' id='widget-heading-css' href='https://nexthop.ai/wp-content/plugins/elementor/assets/css/widget-heading.min.css?ver=4.3.2' media='all' /> 51<link rel='stylesheet' id='widget-image-css' href='https://nexthop.ai/wp-content/plugins/elementor/assets/css/widget-image.min.css?ver=4.3.2' media='all' /> 52<link rel='stylesheet' id='widget-nav-menu-css' href='https://nexthop.ai/wp-content/plugins/elementor-pro/assets/css/widget-nav-menu.min.css?ver=4.3.0' media='all' /> 53<link rel='stylesheet' id='e-sticky-css' href='https://nexthop.ai/wp-content/plugins/elementor-pro/assets/css/modules/sticky.min.css?ver=4.3.0' media='all' /> 54<link rel='stylesheet' id='elementor-post-6-css' href='https://nexthop.ai/wp-content/uploads/elementor/css/post-6.css?ver=1790308106' media='all' /> 55<link rel='stylesheet' id='e-animation-fadeIn-css' href='https://nexthop.ai/wp-content/plugins/elementor/assets/lib/animations/styles/fadeIn.min.css?ver=4.3.2' media='all' /> 56<link rel='stylesheet' id='swiper-css' href='https://nexthop.ai/wp-content/plugins/elementor/assets/lib/swiper/v8/css/swiper.min.css?ver=8.4.5' media='all' /> 57<link rel='stylesheet' id='e-swiper-css' href='https://nexthop.ai/wp-content/plugins/elementor/assets/css/conditionals/e-swiper.min.css?ver=4.3.2' media='all' /> 58<link rel='stylesheet' id='widget-nested-carousel-css' href='https://nexthop.ai/wp-content/plugins/elementor-pro/assets/css/widget-nested-carousel.min.css?ver=4.3.0' media='all' /> 59<link rel='stylesheet' id='widget-loop-common-css' href='https://nexthop.ai/wp-content/plugins/elementor-pro/assets/css/widget-loop-common.min.css?ver=4.3.0' media='all' /> 60<link rel='stylesheet' id='widget-loop-carousel-css' href='https://nexthop.ai/wp-content/plugins/elementor-pro/assets/css/widget-loop-carousel.min.css?ver=4.3.0' media='all' /> 61<link rel='stylesheet' id='elementor-post-28-css' href='https://nexthop.ai/wp-content/uploads/elementor/css/post-28.css?ver=1790308116' media='all' /> 62<link rel='stylesheet' id='elementor-post-19-css' href='https://nexthop.ai/wp-content/uploads/elementor/css/post-19.css?ver=1790308107' media='all' /> 63<link rel='stylesheet' id='elementor-post-1142-css' href='https://nexthop.ai/wp-content/uploads/elementor/css/post-1142.css?ver=1790308108' media='all' /> 64<link rel='stylesheet' id='elementor-gf-roboto-css' href='https://fonts.googleapis.com/css?family=Roboto:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic&display=swap' media='all' /> 65<link rel='stylesheet' id='elementor-gf-robotoslab-css' href='https://fonts.googleapis.com/css?family=Roboto+Slab:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic&display=swap' media='all' /> 66<link rel='stylesheet' id='elementor-gf-manrope-css' href='https://fonts.googleapis.com/css?family=Manrope:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic&display=swap' media='all' /> 67<link rel='stylesheet' id='elementor-gf-poppins-css' href='https://fonts.googleapis.com/css?family=Poppins:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic&display=swap' media='all' />
68<script id="jquery-core-js" src="https://nexthop.ai/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 68
68
69<script id="jquery-migrate-js" src="https://nexthop.ai/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 69
69
70<script id="descope-web-component-js" src="https://descopecdn.com/npm/@descope/[email protected]/dist/index.js?ver=1.0.0" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 70
70
71<script id="descope-web-js-js" src="https://descopecdn.com/npm/@descope/[email protected]/dist/index.umd.js?ver=1.0.0" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 71
71
72<script id="jwt-decode-js" src="https://unpkg.com/[email protected]/build/jwt-decode.js?ver=1.0.0" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 72
72
73<script id="descope-user-profile-widget-js" src="https://static.descope.com/npm/@descope/[email protected]/dist/index.js?ver=1.0.0" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 73
73
74<script id="descope-wp-js-extra" type="db210efae27388b2ff45553d-text/javascript"> 75var descope_ajax_object = {"ajax_url":"https://nexthop.ai/wp-admin/admin-ajax.php","nonce":"e5224af452","siteUrl":"https://nexthop.ai","clientId":"P30VkovLWYgbXPYZUVbwxU1AdPG5","baseUrl":"https://auth.nexthop.ai","flowId":null,"dynamicFields":"","logoutUrl":"https://nexthop.ai/nexthop-gateway-2024/?action=logout&redirect_to=https%3A%2F%2Fnexthop.ai&_wpnonce=e260c65910","providerId":null,"redirectPagePath":null}; 76//# sourceURL=descope-wp-js-extra 77</script>
vendor: 1 bytes, line 77
77
78<script id="descope-wp-js" src="https://nexthop.ai/wp-content/plugins/descope/public/js/descope-wp-public.js?ver=1.0.0" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 78
78
79<script id="sdm-scripts-js-extra" type="db210efae27388b2ff45553d-text/javascript"> 80var sdm_ajax_script = {"ajaxurl":"https://nexthop.ai/wp-admin/admin-ajax.php"}; 81//# sourceURL=sdm-scripts-js-extra 82</script>
vendor: 1 bytes, line 82
82
83<script id="sdm-scripts-js" src="https://nexthop.ai/wp-content/plugins/simple-download-monitor/js/sdm_wp_scripts.js?ver=7.1.2" type="db210efae27388b2ff45553d-text/javascript"></script>
83 84<link rel="https://api.w.org/" href="https://nexthop.ai/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://nexthop.ai/wp-json/wp/v2/pages/28" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://nexthop.ai/xmlrpc.php?rsd" /> 85<meta name="generator" content="WordPress 7.1.2" /> 86<link rel="canonical" href="https://nexthop.ai/" /> 87<link rel='shortlink' href='https://nexthop.ai/' /> 88<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 88-89
88 89<script async src="https://www.googletagmanager.com/gtag/js?id=
89G-1XKYS6NV33
vendor: 61 bytes, line 89
89" type="db210efae27388b2ff45553d-text/javascript"></script>
90<script type="db210efae27388b2ff45553d-text/javascript"> 91
vendor: 138 bytes, lines 91-95
91window.dataLayer = window.dataLayer || []; 92 function gtag(){dataLayer.push(arguments);} 93 gtag('js', new Date()); 94 95 gtag('config', '
95G-1XKYS6NV33
vendor: 5 bytes, line 95
95');
96</script>
96 97
98<script type="db210efae27388b2ff45553d-text/javascript"> 99 100 /* 101 * Gradient Animation 102 * ScrollObserver functionality to disable animation when not scrolled into view has been disabled and 103 * commented out for now. 104 */ 105 106 //Converting colors to proper format 107 function normalizeColor(hexCode) { 108 return [(hexCode >> 16 & 255) / 255, (hexCode >> 8 & 255) / 255, (255 & hexCode) / 255] 109 } ["SCREEN", "LINEAR_LIGHT"].reduce((hexCode, t, n) => Object.assign(hexCode, { 110 [t]: n 111 }), {}); 112 113 //Essential functionality of WebGl 114 // t = 500, 115 // n = 200, 116 class MiniGl { 117 constructor(canvas, width, height, debug = false) { 118 const _miniGl = this, 119 debug_output = -1 !== document.location.search.toLowerCase().indexOf("debug=webgl"); 120 _miniGl.canvas = canvas, _miniGl.gl = _miniGl.canvas.getContext("webgl", { 121 antialias: true 122 }), _miniGl.meshes = []; 123 const context = _miniGl.gl; 124 width && height && this.setSize(width, height), _miniGl.lastDebugMsg, _miniGl.debug = debug && debug_output ? function (e) { 125 const t = new Date; 126 t - _miniGl.lastDebugMsg > 1e3 && console.log("---"), console.log(t.toLocaleTimeString() + Array(Math.max(0, 11 - e.length)).join(" ") + e + ": ", ...Array.from(arguments).slice(1)), _miniGl.lastDebugMsg = t 127 } : () => { }, Object.defineProperties(_miniGl, { 128 Material: { 129 enumerable: false, 130 value: class { 131 constructor(vertexShaders, fragments, uniforms = {}) { 132 const material = this; 133 function getShaderByType(type, source) { 134 const shader = context.createShader(type); 135 return context.shaderSource(shader, source), context.compileShader(shader), context.getShaderParameter(shader, context.COMPILE_STATUS) || console.error(context.getShaderInfoLog(shader)), _miniGl.debug("Material.compileShaderSource", { 136 source: source 137 }), shader 138 } 139 function getUniformVariableDeclarations(uniforms, type) { 140 return Object.entries(uniforms).map(([uniform, value]) => value.getDeclaration(uniform, type)).join("\n") 141 } 142 material.uniforms = uniforms, material.uniformInstances = []; 143 144 const prefix = "\n precision highp float;\n "; 145 material.vertexSource = `\n ${prefix}\n attribute vec4 position;\n attribute vec2 uv;\n attribute vec2 uvNorm;\n ${getUniformVariableDeclarations(_miniGl.commonUniforms, "vertex")}\n ${getUniformVariableDeclarations(uniforms, "vertex")}\n ${vertexShaders}\n `, 146 material.Source = `\n ${prefix}\n ${getUniformVariableDeclarations(_miniGl.commonUniforms, "fragment")}\n ${getUniformVariableDeclarations(uniforms, "fragment")}\n ${fragments}\n `, 147 material.vertexShader = getShaderByType(context.VERTEX_SHADER, material.vertexSource), 148 material.fragmentShader = getShaderByType(context.FRAGMENT_SHADER, material.Source), 149 material.program = context.createProgram(), 150 context.attachShader(material.program, material.vertexShader), 151 context.attachShader(material.program, material.fragmentShader), 152 context.linkProgram(material.program), 153 context.getProgramParameter(material.program, context.LINK_STATUS) || console.error(context.getProgramInfoLog(material.program)), 154 context.useProgram(material.program), 155 material.attachUniforms(void 0, _miniGl.commonUniforms), 156 material.attachUniforms(void 0, material.uniforms) 157 } 158 //t = uniform 159 attachUniforms(name, uniforms) { 160 //n = material 161 const material = this; 162 void 0 === name ? Object.entries(uniforms).forEac
162h(([name, uniform]) => { 163 material.attachUniforms(name, uniform) 164 }) : "array" == uniforms.type ? uniforms.value.forEach((uniform, i) => material.attachUniforms(`${name}[${i}]`, uniform)) : "struct" == uniforms.type ? Object.entries(uniforms.value).forEach(([uniform, i]) => material.attachUniforms(`${name}.${uniform}`, i)) : (_miniGl.debug("Material.attachUniforms", { 165 name: name, 166 uniform: uniforms 167 }), material.uniformInstances.push({ 168 uniform: uniforms, 169 location: context.getUniformLocation(material.program, name) 170 })) 171 } 172 } 173 }, 174 Uniform: { 175 enumerable: !1, 176 value: class { 177 constructor(e) { 178 this.type = "float", Object.assign(this, e); 179 this.typeFn = { 180 float: "1f", 181 int: "1i", 182 vec2: "2fv", 183 vec3: "3fv", 184 vec4: "4fv", 185 mat4: "Matrix4fv" 186 }[this.type] || "1f", this.update() 187 } 188 update(value) { 189 void 0 !== this.value && context[`uniform${this.typeFn}`](value, 0 === this.typeFn.indexOf("Matrix") ? this.transpose : this.value, 0 === this.typeFn.indexOf("Matrix") ? this.value : null) 190 } 191 //e - name 192 //t - type 193 //n - length 194 getDeclaration(name, type, length) { 195 const uniform = this; 196 if (uniform.excludeFrom !== type) { 197 if ("array" === uniform.type) return uniform.value[0].getDeclaration(name, type, uniform.value.length) + `\nconst int ${name}_length = ${uniform.value.length};`; 198 if ("struct" === uniform.type) { 199 let name_no_prefix = name.replace("u_", ""); 200 return name_no_prefix = 201 name_no_prefix.charAt(0).toUpperCase() + 202 name_no_prefix.slice(1), 203 `uniform struct ${name_no_prefix} 204 {\n` + 205 Object.entries(uniform.value).map(([name, uniform]) => 206 uniform.getDeclaration(name, type) 207 .replace(/^uniform/, "")) 208 .join("") 209 + `\n} ${name}${length > 0 ? `[${length}]` : ""};` 210 } 211 return `uniform ${uniform.type} ${name}${length > 0 ? `[${length}]` : ""};` 212 } 213 } 214 } 215 }, 216 PlaneGeometry: { 217 enumerable: !1, 218 value: class { 219 constructor(width, height, n, i, orientation) { 220 context.createBuffer(), this.attributes = { 221 position: new _miniGl.Attribute({ 222 target: context.ARRAY_BUFFER, 223 size: 3 224 }), 225 uv: new _miniGl.Attribute({ 226 target: context.ARRAY_BUFFER, 227 size: 2 228 }), 229 uvNorm: new _miniGl.Attribute({ 230 target: context.ARRAY_BUFFER, 231 size: 2 232 }), 233 index: new _miniGl.Attribute({ 234 target: context.ELEMENT_ARRAY_BUFFER, 235 size: 3, 236 type: context.UNSIGNED_SHORT 237 }) 238 }, this.setTopology(n, i), this.setSize(width, height, orientation) 239 } 240 setTopology(e = 1, t = 1) { 241 const n = this; 242 n.xSegCount = e, n.ySegCount = t, n.vertexCount = (n.xSegCount + 1) * (n.ySegCount + 1), n.quadCount = n.xSegCount * n.ySegCount * 2, n.attributes.uv.values = new Float32Array(2 * n.vertexCount), n.attributes.uvNorm.values = new Float32Array(2 * n.vertexCount), n.attributes.index.values = new Uint16Array(3 * n.quadCount); 243 for (let e = 0; e <= n.ySegCount; e++) 244 for (let t = 0; t <= n.xSegCount; t++) { 245 const i = e * (n.xSegCount + 1) + t; 246 if (n.attributes.uv.values[2 * i] = t / n.xSegCount, n.attributes.uv.values[2 * i + 1] = 1 - e / n.ySegCount, n.attributes.uvNorm.values[2 * i] = t / n.xSegCount * 2 - 1, n.attributes.uvNorm.values[2 * i + 1] = 1 - e / n.ySegCount * 2, t < n.xSegCount && e < n.ySegCount) { 247 const s = e * n.xSegCount + t; 248 n.attributes.index.values[6 * s] = i, n.attributes.index.values[6 * s + 1] = i + 1 + n.xSegCount, n.attributes.index.values[6 * s + 2] = i + 1, n.attributes.index.values[6 * s + 3] = i + 1, n.attributes.index.values[6 * s + 4] = i + 1 + n.xSegCount, n.attributes.index.values[6 * s + 5] = i + 2 + n.xSegCount 249 } 250 }
251 n.attributes.uv.update(), n.attributes.uvNorm.update(), n.attributes.index.update(), _miniGl.debug("Geometry.setTopology", { 252 uv: n.attributes.uv, 253 uvNorm: n.attributes.uvNorm, 254 index: n.attributes.index 255 }) 256 } 257 setSize(width = 1, height = 1, orientation = "xz") { 258 const geometry = this; 259 geometry.width = width, 260 geometry.height = height, 261 geometry.orientation = orientation, 262 geometry.attributes.position.values && geometry.attributes.position.values.length === 3 * geometry.vertexCount 263 || (geometry.attributes.position.values = new Float32Array(3 * geometry.vertexCount)); 264 const o = width / -2, 265 r = height / -2, 266 segment_width = width / geometry.xSegCount, 267 segment_height = height / geometry.ySegCount; 268 for (let yIndex = 0; yIndex <= geometry.ySegCount; yIndex++) { 269 const t = r + yIndex * segment_height; 270 for (let xIndex = 0; xIndex <= geometry.xSegCount; xIndex++) { 271 const r = o + xIndex * segment_width, 272 l = yIndex * (geometry.xSegCount + 1) + xIndex; 273 geometry.attributes.position.values[3 * l + "xyz".indexOf(orientation[0])] = r, 274 geometry.attributes.position.values[3 * l + "xyz".indexOf(orientation[1])] = -t 275 } 276 } 277 geometry.attributes.position.update(), _miniGl.debug("Geometry.setSize", { 278 position: geometry.attributes.position 279 }) 280 } 281 } 282 }, 283 Mesh: { 284 enumerable: !1, 285 value: class { 286 constructor(geometry, material) { 287 const mesh = this; 288 mesh.geometry = geometry, mesh.material = material, mesh.wireframe = !1, mesh.attributeInstances = [], Object.entries(mesh.geometry.attributes).forEach(([e, attribute]) => { 289 mesh.attributeInstances.push({ 290 attribute: attribute, 291 location: attribute.attach(e, mesh.material.program) 292 }) 293 }), _miniGl.meshes.push(mesh), _miniGl.debug("Mesh.constructor", { 294 mesh: mesh 295 }) 296 } 297 draw() { 298 context.useProgram(this.material.program), this.material.uniformInstances.forEach(({ 299 uniform: e, 300 location: t 301 }) => e.update(t)), this.attributeInstances.forEach(({ 302 attribute: e, 303 location: t 304 }) => e.use(t)), context.drawElements(this.wireframe ? context.LINES : context.TRIANGLES, this.geometry.attributes.index.values.length, context.UNSIGNED_SHORT, 0) 305 } 306 remove() { 307 _miniGl.meshes = _miniGl.meshes.filter(e => e != this) 308 } 309 } 310 }, 311 Attribute: { 312 enumerable: !1, 313 value: class { 314 constructor(e) { 315 this.type = context.FLOAT, this.normalized = !1, this.buffer = context.createBuffer(), Object.assign(this, e), this.update() 316 } 317 update() { 318 void 0 !== this.values && (context.bindBuffer(this.target, this.buffer), context.bufferData(this.target, this.values, context.STATIC_DRAW)) 319 } 320 attach(e, t) { 321 const n = context.getAttribLocation(t, e); 322 return this.target === context.ARRAY_BUFFER && (context.enableVertexAttribArray(n), context.vertexAttribPointer(n, this.size, this.type, this.normalized, 0, 0)), n 323 } 324 use(e) { 325 context.bindBuffer(this.target, this.buffer), this.target === context.ARRAY_BUFFER && (context.enableVertexAttribArray(e), context.vertexAttribPointer(e, this.size, this.type, this.normalized, 0, 0)) 326 } 327 } 328 } 329 }); 330 const a = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; 331 _miniGl.commonUniforms = { 332 projectionMatrix: new _miniGl.Uniform({ 333 type: "mat4", 334 value: a 335 }), 336 modelViewMatrix: new _miniGl.Uniform({ 337 type: "mat4", 338 value: a 339 }), 340 resolution: new _miniGl.Uniform({ 341 type: "vec2", 342 value: [1, 1] 343 }), 344 aspectRatio: new _miniGl.Uniform({ 345 type: "float", 346 value: 1 347 }) 348 } 349 } 350 setSize(e = 640, t = 480) { 351 this.width = e, this.height = t, this.canvas.width = e, this.canvas.height = t, this.gl.viewport(0, 0, e, t), this.commonUniforms.resolution.value = [e, t], this.commonUniforms.aspectRatio.value = e / t, this.debug("MiniGL.setSize", { 352 width: e, 353 height: t 354 }) 355 } 356 //left, right, top, bottom, near, far
357 setOrthographicCamera(e = 0, t = 0, n = 0, i = -2e3, s = 2e3) { 358 this.commonUniforms.projectionMatrix.value = [2 / this.width, 0, 0, 0, 0, 2 / this.height, 0, 0, 0, 0, 2 / (i - s), 0, e, t, n, 1], this.debug("setOrthographicCamera", this.commonUniforms.projectionMatrix.value) 359 } 360 render() { 361 this.gl.clearColor(0, 0, 0, 0), this.gl.clearDepth(1), this.meshes.forEach(e => e.draw()) 362 } 363 } 364 365 366 367 //Sets initial properties 368 function e(object, propertyName, val) { 369 return propertyName in object ? Object.defineProperty(object, propertyName, { 370 value: val, 371 enumerable: !0, 372 configurable: !0, 373 writable: !0 374 }) : object[propertyName] = val, object 375 } 376 377 //Gradient object 378 class Gradient { 379 constructor(...t) { 380 e(this, "el", void 0), e(this, "cssVarRetries", 0), e(this, "maxCssVarRetries", 200), e(this, "angle", 0), e(this, "isLoadedClass", !1), e(this, "isScrolling", !1), /*e(this, "isStatic", o.disableAmbientAnimations()),*/ e(this, "scrollingTimeout", void 0), e(this, "scrollingRefreshDelay", 200), e(this, "isIntersecting", !1), e(this, "shaderFiles", void 0), e(this, "vertexShader", void 0), e(this, "sectionColors", void 0), e(this, "computedCanvasStyle", void 0), e(this, "conf", void 0), e(this, "uniforms", void 0), e(this, "t", 1253106), e(this, "last", 0), e(this, "width", void 0), e(this, "minWidth", 1111), e(this, "height", 600), e(this, "xSegCount", void 0), e(this, "ySegCount", void 0), e(this, "mesh", void 0), e(this, "material", void 0), e(this, "geometry", void 0), e(this, "minigl", void 0), e(this, "scrollObserver", void 0), e(this, "amp", 320), e(this, "seed", 5), e(this, "freqX", 14e-5), e(this, "freqY", 29e-5), e(this, "freqDelta", 1e-5), e(this, "activeColors", [1, 1, 1, 1]), e(this, "isMetaKey", !1), e(this, "isGradientLegendVisible", !1), e(this, "isMouseDown", !1), e(this, "handleScroll", () => { 381 clearTimeout(this.scrollingTimeout), this.scrollingTimeout = setTimeout(this.handleScrollEnd, this.scrollingRefreshDelay), this.isGradientLegendVisible && this.hideGradientLegend(), this.conf.playing && (this.isScrolling = !0, this.pause()) 382 }), e(this, "handleScrollEnd", () => { 383 this.isScrolling = !1, this.isIntersecting && this.play() 384 }), e(this, "resize", () => { 385 this.width = window.innerWidth, this.minigl.setSize(this.width, this.height), this.minigl.setOrthographicCamera(), this.xSegCount = Math.ceil(this.width * this.conf.density[0]), this.ySegCount = Math.ceil(this.height * this.conf.density[1]), this.mesh.geometry.setTopology(this.xSegCount, this.ySegCount), this.mesh.geometry.setSize(this.width, this.height), this.mesh.material.uniforms.u_shadow_power.value = this.width < 600 ? 5 : 6 386 }), e(this, "handleMouseDown", e => { 387 this.isGradientLegendVisible && (this.isMetaKey = e.metaKey, this.isMouseDown = !0, !1 === this.conf.playing && requestAnimationFrame(this.animate)) 388 }), e(this, "handleMouseUp", () => { 389 this.isMouseDown = !1 390 }), e(this, "animate", e => { 391 if (!this.shouldSkipFrame(e) || this.isMouseDown) { 392 if (this.t += Math.min(e - this.last, 1e3 / 15), this.last = e, this.isMouseDown) { 393 let e = 160; 394 this.isMetaKey && (e = -160), this.t += e 395 } 396 this.mesh.material.uniforms.u_time.value = this.t, this.minigl.render() 397 398 } 399 if (0 !== this.last && this.isStatic) return this.minigl.render(), void this.disconnect(); 400 (/*this.isIntersecting && */this.conf.playing || this.isMouseDown) && requestAnimationFrame(this.animate) 401 }), e(this, "addIsLoadedClass", () => { 402 /*this.isIntersecting && */!this.isLoadedClass && (this.isLoadedClass = !0, this.el.classList.add("isLoaded"), setTimeout(() => { 403 this.el.parentElement.classList.add("isLoaded") 404 }, 3e3)) 405 }), e(this, "pause", () => { 406 this.conf.playing = false 407 }), e(this, "play", () => { 408 requestAnimationFrame(this.animate), this.conf.playing = true 409 }), e(this, "initGradient", (selector) => { 410 this.el = document.querySelector(selector); 411 this.connect(); 412 return this; 413 }) 414 } 415 async connect() { 416 this.shaderFiles = { 417 vertex: "varying vec3 v_color;\n\nvoid main() {\n float time = u_time * u_global.noiseSpeed;\n\n vec2 noiseCoord = resolution * uvNorm * u_global.noiseFreq;
417\n\n vec2 st = 1. - uvNorm.xy;\n\n //\n // Tilting the plane\n //\n\n // Front-to-back tilt\n float tilt = resolution.y / 2.0 * uvNorm.y;\n\n // Left-to-right angle\n float incline = resolution.x * uvNorm.x / 2.0 * u_vertDeform.incline;\n\n // Up-down shift to offset incline\n float offset = resolution.x / 2.0 * u_vertDeform.incline * mix(u_vertDeform.offsetBottom, u_vertDeform.offsetTop, uv.y);\n\n //\n // Vertex noise\n //\n\n float noise = snoise(vec3(\n noiseCoord.x * u_vertDeform.noiseFreq.x + time * u_vertDeform.noiseFlow,\n noiseCoord.y * u_vertDeform.noiseFreq.y,\n time * u_vertDeform.noiseSpeed + u_vertDeform.noiseSeed\n )) * u_vertDeform.noiseAmp;\n\n // Fade noise to zero at edges\n noise *= 1.0 - pow(abs(uvNorm.y), 2.0);\n\n // Clamp to 0\n noise = max(0.0, noise);\n\n vec3 pos = vec3(\n position.x,\n position.y + tilt + incline + noise - offset,\n position.z\n );\n\n //\n // Vertex color, to be passed to fragment shader\n //\n\n if (u_active_colors[0] == 1.) {\n v_color = u_baseColor;\n }\n\n for (int i = 0; i < u_waveLayers_length; i++) {\n if (u_active_colors[i + 1] == 1.) {\n WaveLayers layer = u_waveLayers[i];\n\n float noise = smoothstep(\n layer.noiseFloor,\n layer.noiseCeil,\n snoise(vec3(\n noiseCoord.x * layer.noiseFreq.x + time * layer.noiseFlow,\n noiseCoord.y * layer.noiseFreq.y,\n time * layer.noiseSpeed + layer.noiseSeed\n )) / 2.0 + 0.5\n );\n\n v_color = blendNormal(v_color, layer.color, pow(noise, 4.));\n }\n }\n\n //\n // Finish\n //\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\n}", 418 noise: "//\n// Description : Array and textureless GLSL 2D/3D/4D simplex\n// noise functions.\n// Author : Ian McEwan, Ashima Arts.\n// Maintainer : stegu\n// Lastmod : 20110822 (ijm)\n// License : Copyright (C) 2011 Ashima Arts. All rights reserved.\n// Distributed under the MIT License. See LICENSE file.\n// https://github.com/ashima/webgl-noise\n// https://github.com/stegu/webgl-noise\n//\n\nvec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec4 mod289(vec4 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n}\n\nvec4 permute(vec4 x) {\n return mod289(((x*34.0)+1.0)*x);\n}\n\nvec4 taylorInvSqrt(vec4 r)\n{\n return 1.79284291400159 - 0.85373472095314 * r;\n}\n\nfloat snoise(vec3 v)\n{\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n// First corner\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n// Other corners\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n // x0 = x0 - 0.0 + 0.0 * C.xxx;\n // x1 = x0 - i1 + 1.0 * C.xxx;\n // x2 = x0 - i2 + 2.0 * C.xxx;\n // x3 = x0 - 1.0 + 3.0 * C.xxx;\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n// Permutations\n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n// Gradients: 7x7 points over a square, mapped onto an octahedron.\n// The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294)\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0;\n //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0;\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n//Normalise gradients\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n// Mix final noise value\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;
418\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n}", 419 blend: "//\n// https://github.com/jamieowen/glsl-blend\n//\n\n// Normal\n\nvec3 blendNormal(vec3 base, vec3 blend) {\n\treturn blend;\n}\n\nvec3 blendNormal(vec3 base, vec3 blend, float opacity) {\n\treturn (blendNormal(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Screen\n\nfloat blendScreen(float base, float blend) {\n\treturn 1.0-((1.0-base)*(1.0-blend));\n}\n\nvec3 blendScreen(vec3 base, vec3 blend) {\n\treturn vec3(blendScreen(base.r,blend.r),blendScreen(base.g,blend.g),blendScreen(base.b,blend.b));\n}\n\nvec3 blendScreen(vec3 base, vec3 blend, float opacity) {\n\treturn (blendScreen(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Multiply\n\nvec3 blendMultiply(vec3 base, vec3 blend) {\n\treturn base*blend;\n}\n\nvec3 blendMultiply(vec3 base, vec3 blend, float opacity) {\n\treturn (blendMultiply(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Overlay\n\nfloat blendOverlay(float base, float blend) {\n\treturn base<0.5?(2.0*base*blend):(1.0-2.0*(1.0-base)*(1.0-blend));\n}\n\nvec3 blendOverlay(vec3 base, vec3 blend) {\n\treturn vec3(blendOverlay(base.r,blend.r),blendOverlay(base.g,blend.g),blendOverlay(base.b,blend.b));\n}\n\nvec3 blendOverlay(vec3 base, vec3 blend, float opacity) {\n\treturn (blendOverlay(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Hard light\n\nvec3 blendHardLight(vec3 base, vec3 blend) {\n\treturn blendOverlay(blend,base);\n}\n\nvec3 blendHardLight(vec3 base, vec3 blend, float opacity) {\n\treturn (blendHardLight(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Soft light\n\nfloat blendSoftLight(float base, float blend) {\n\treturn (blend<0.5)?(2.0*base*blend+base*base*(1.0-2.0*blend)):(sqrt(base)*(2.0*blend-1.0)+2.0*base*(1.0-blend));\n}\n\nvec3 blendSoftLight(vec3 base, vec3 blend) {\n\treturn vec3(blendSoftLight(base.r,blend.r),blendSoftLight(base.g,blend.g),blendSoftLight(base.b,blend.b));\n}\n\nvec3 blendSoftLight(vec3 base, vec3 blend, float opacity) {\n\treturn (blendSoftLight(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Color dodge\n\nfloat blendColorDodge(float base, float blend) {\n\treturn (blend==1.0)?blend:min(base/(1.0-blend),1.0);\n}\n\nvec3 blendColorDodge(vec3 base, vec3 blend) {\n\treturn vec3(blendColorDodge(base.r,blend.r),blendColorDodge(base.g,blend.g),blendColorDodge(base.b,blend.b));\n}\n\nvec3 blendColorDodge(vec3 base, vec3 blend, float opacity) {\n\treturn (blendColorDodge(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Color burn\n\nfloat blendColorBurn(float base, float blend) {\n\treturn (blend==0.0)?blend:max((1.0-((1.0-base)/blend)),0.0);\n}\n\nvec3 blendColorBurn(vec3 base, vec3 blend) {\n\treturn vec3(blendColorBurn(base.r,blend.r),blendColorBurn(base.g,blend.g),blendColorBurn(base.b,blend.b));\n}\n\nvec3 blendColorBurn(vec3 base, vec3 blend, float opacity) {\n\treturn (blendColorBurn(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Vivid Light\n\nfloat blendVividLight(float base, float blend) {\n\treturn (blend<0.5)?blendColorBurn(base,(2.0*blend)):blendColorDodge(base,(2.0*(blend-0.5)));\n}\n\nvec3 blendVividLight(vec3 base, vec3 blend) {\n\treturn vec3(blendVividLight(base.r,blend.r),blendVividLight(base.g,blend.g),blendVividLight(base.b,blend.b));\n}\n\nvec3 blendVividLight(vec3 base, vec3 blend, float opacity) {\n\treturn (blendVividLight(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Lighten\n\nfloat blendLighten(float base, float blend) {\n\treturn max(blend,base);\n}\n\nvec3 blendLighten(vec3 base, vec3 blend) {\n\treturn vec3(blendLighten(base.r,blend.r),blendLighten(base.g,blend.g),blendLighten(base.b,blend.b));\n}\n\nvec3 blendLighten(vec3 base, vec3 blend, float opacity) {\n\treturn (blendLighten(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Linear burn\n\nfloat blendLinearBurn(float base, float blend) {\n\t// Note : Same implementation as BlendSubtractf\n\treturn max(base+blend-1.0,0.0);\n}
419\n\nvec3 blendLinearBurn(vec3 base, vec3 blend) {\n\t// Note : Same implementation as BlendSubtract\n\treturn max(base+blend-vec3(1.0),vec3(0.0));\n}\n\nvec3 blendLinearBurn(vec3 base, vec3 blend, float opacity) {\n\treturn (blendLinearBurn(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Linear dodge\n\nfloat blendLinearDodge(float base, float blend) {\n\t// Note : Same implementation as BlendAddf\n\treturn min(base+blend,1.0);\n}\n\nvec3 blendLinearDodge(vec3 base, vec3 blend) {\n\t// Note : Same implementation as BlendAdd\n\treturn min(base+blend,vec3(1.0));\n}\n\nvec3 blendLinearDodge(vec3 base, vec3 blend, float opacity) {\n\treturn (blendLinearDodge(base, blend) * opacity + base * (1.0 - opacity));\n}\n\n// Linear light\n\nfloat blendLinearLight(float base, float blend) {\n\treturn blend<0.5?blendLinearBurn(base,(2.0*blend)):blendLinearDodge(base,(2.0*(blend-0.5)));\n}\n\nvec3 blendLinearLight(vec3 base, vec3 blend) {\n\treturn vec3(blendLinearLight(base.r,blend.r),blendLinearLight(base.g,blend.g),blendLinearLight(base.b,blend.b));\n}\n\nvec3 blendLinearLight(vec3 base, vec3 blend, float opacity) {\n\treturn (blendLinearLight(base, blend) * opacity + base * (1.0 - opacity));\n}", 420 fragment: "varying vec3 v_color;\n\nvoid main() {\n vec3 color = v_color;\n if (u_darken_top == 1.0) {\n vec2 st = gl_FragCoord.xy/resolution.xy;\n color.g -= pow(st.y + sin(-12.0) * st.x, u_shadow_power) * 0.4;\n }\n gl_FragColor = vec4(color, 1.0);\n}" 421 }, 422 this.conf = { 423 presetName: "", 424 wireframe: false, 425 density: [.06, 1], 426 zoom: 1, 427 rotation: 0, 428 playing: true 429 }, 430 document.querySelectorAll("canvas").length < 1 ? console.log("DID NOT LOAD HERO STRIPE CANVAS") : ( 431 432 this.minigl = new MiniGl(this.el, null, null, !0), 433 requestAnimationFrame(() => { 434 this.el && (this.computedCanvasStyle = getComputedStyle(this.el), this.waitForCssVars()) 435 }) 436 /* 437 this.scrollObserver = await s.create(.1, !1), 438 this.scrollObserver.observe(this.el), 439 this.scrollObserver.onSeparate(() => { 440 window.removeEventListener("scroll", this.handleScroll), window.removeEventListener("mousedown", this.handleMouseDown), window.removeEventListener("mouseup", this.handleMouseUp), window.removeEventListener("keydown", this.handleKeyDown), this.isIntersecting = !1, this.conf.playing && this.pause() 441 }), 442 this.scrollObserver.onIntersect(() => { 443 window.addEventListener("scroll", this.handleScroll), window.addEventListener("mousedown", this.handleMouseDown), window.addEventListener("mouseup", this.handleMouseUp), window.addEventListener("keydown", this.handleKeyDown), this.isIntersecting = !0, this.addIsLoadedClass(), this.play() 444 })*/ 445 446 ) 447 } 448 disconnect() { 449 this.scrollObserver && (window.removeEventListener("scroll", this.handleScroll), window.removeEventListener("mousedown", this.handleMouseDown), window.removeEventListener("mouseup", this.handleMouseUp), window.removeEventListener("keydown", this.handleKeyDown), this.scrollObserver.disconnect()), window.removeEventListener("resize", this.resize) 450 } 451 initMaterial() { 452 this.uniforms = { 453 u_time: new this.minigl.Uniform({ 454 value: 0 455 }), 456 u_shadow_power: new this.minigl.Uniform({ 457 value: 5 458 }), 459 u_darken_top: new this.minigl.Uniform({ 460 value: "" === this.el.dataset.jsDarkenTop ? 1 : 0 461 }), 462 u_active_colors: new this.minigl.Uniform({ 463 value: this.activeColors, 464 type: "vec4" 465 }), 466 u_global: new this.minigl.Uniform({ 467 value: { 468 noiseFreq: new this.minigl.Uniform({ 469 value: [this.freqX, this.freqY], 470 type: "vec2" 471 }), 472 noiseSpeed: new this.minigl.Uniform({ 473 value: 5e-6 474 }) 475 }, 476 type: "struct" 477 }), 478 u_vertDeform: new this.minigl.Uniform({ 479 value: { 480 incline: new this.minigl.Uniform({ 481 value: Math.sin(this.angle) / Math.cos(this.angle) 482 }), 483 offsetTop: new this.minigl.Uniform({ 484 value: -.5 485 }), 486 offsetBottom: new this.minigl.Uniform({ 487 value: -.5 488 }), 489 noiseFreq: new this.minigl.Uniform({ 490 value: [3, 4], 491 type: "vec2" 492 }), 493 noiseAmp: new this.minigl.Uniform({ 494 value: this.amp 495 }), 496 noiseSpeed: new this.minigl.Uniform({ 497 value: 10 498 }),
499 noiseFlow: new this.minigl.Uniform({ 500 value: 3 501 }), 502 noiseSeed: new this.minigl.Uniform({ 503 value: this.seed 504 }) 505 }, 506 type: "struct", 507 excludeFrom: "fragment" 508 }), 509 u_baseColor: new this.minigl.Uniform({ 510 value: this.sectionColors[0], 511 type: "vec3", 512 excludeFrom: "fragment" 513 }), 514 u_waveLayers: new this.minigl.Uniform({ 515 value: [], 516 excludeFrom: "fragment", 517 type: "array" 518 }) 519 }; 520 for (let e = 1; e < this.sectionColors.length; e += 1) this.uniforms.u_waveLayers.value.push(new this.minigl.Uniform({ 521 value: { 522 color: new this.minigl.Uniform({ 523 value: this.sectionColors[e], 524 type: "vec3" 525 }), 526 noiseFreq: new this.minigl.Uniform({ 527 value: [2 + e / this.sectionColors.length, 3 + e / this.sectionColors.length], 528 type: "vec2" 529 }), 530 noiseSpeed: new this.minigl.Uniform({ 531 value: 50 + .3 * e 532 }), 533 noiseFlow: new this.minigl.Uniform({ 534 value: 10 + .3 * e 535 }), 536 noiseSeed: new this.minigl.Uniform({ 537 value: this.seed + 10 * e 538 }), 539 noiseFloor: new this.minigl.Uniform({ 540 value: .1 541 }), 542 noiseCeil: new this.minigl.Uniform({ 543 value: .63 + .07 * e 544 }) 545 }, 546 type: "struct" 547 })); 548 return this.vertexShader = [this.shaderFiles.noise, this.shaderFiles.blend, this.shaderFiles.vertex].join("\n\n"), new this.minigl.Material(this.vertexShader, this.shaderFiles.fragment, this.uniforms) 549 } 550 initMesh() { 551 this.material = this.initMaterial(), this.geometry = new this.minigl.PlaneGeometry, this.mesh = new this.minigl.Mesh(this.geometry, this.material) 552 } 553 shouldSkipFrame(e) { 554 return !!window.document.hidden || (!this.conf.playing || (parseInt(e, 10) % 2 == 0 || void 0)) 555 } 556 updateFrequency(e) { 557 this.freqX += e, this.freqY += e 558 } 559 toggleColor(index) { 560 this.activeColors[index] = 0 === this.activeColors[index] ? 1 : 0 561 } 562 showGradientLegend() { 563 this.width > this.minWidth && (this.isGradientLegendVisible = !0, document.body.classList.add("isGradientLegendVisible")) 564 } 565 hideGradientLegend() { 566 this.isGradientLegendVisible = !1, document.body.classList.remove("isGradientLegendVisible") 567 } 568 init() { 569 this.initGradientColors(), this.initMesh(), this.resize(), requestAnimationFrame(this.animate), window.addEventListener("resize", this.resize) 570 } 571 /* 572 * Waiting for the css variables to become available, usually on page load before we can continue. 573 * Using default colors assigned below if no variables have been found after maxCssVarRetries 574 */ 575 waitForCssVars() { 576 if (this.computedCanvasStyle && -1 !== this.computedCanvasStyle.getPropertyValue("--gradient-color-1").indexOf("#")) this.init(), this.addIsLoadedClass(); 577 else { 578 if (this.cssVarRetries += 1, this.cssVarRetries > this.maxCssVarRetries) { 579 return this.sectionColors = [16711680, 16711680, 16711935, 65280, 255], void this.init(); 580 } 581 requestAnimationFrame(() => this.waitForCssVars()) 582 } 583 } 584 /* 585 * Initializes the four section colors by retrieving them from css variables. 586 */ 587 initGradientColors() { 588 this.sectionColors = ["--gradient-color-1", "--gradient-color-2", "--gradient-color-3", "--gradient-color-4"].map(cssPropertyName => { 589 let hex = this.computedCanvasStyle.getPropertyValue(cssPropertyName).trim(); 590 //Check if shorthand hex value was used and double the length so the conversion in normalizeColor will work. 591 if (4 === hex.length) { 592 const hexTemp = hex.substr(1).split("").map(hexTemp => hexTemp + hexTemp).join(""); 593 hex = `#${hexTemp}` 594 } 595 return hex && `0x${hex.substr(1)}` 596 }
596).filter(Boolean).map(normalizeColor) 597 } 598 } 599 600 /* 601 *Finally initializing the Gradient class, assigning a canvas to it and calling Gradient.connect() which initializes everything, 602 * Use Gradient.pause() and Gradient.play() for controls. 603 * 604 * Here are some default property values you can change anytime: 605 * Amplitude: Gradient.amp = 0 606 * Colors: Gradient.sectionColors (if you change colors, use normalizeColor(#hexValue)) before you assign it. 607 * 608 * 609 * Useful functions 610 * Gradient.toggleColor(index) 611 * Gradient.updateFrequency(freq) 612 */ 613// var gradient = new Gradient(); 614// gradient.amp = 0; 615// gradient.initGradient("#print-edition-canvas"); 616// var gradient2 = new Gradient(); 617// gradient2.initGradient("#gradient-canvas2"); 618</script>
618 619
619<script type="db210efae27388b2ff45553d-text/javascript"> 620 window.EULA_ACCEPTED = true; 621 window.EULA_AJAX_URL = "https://nexthop.ai/wp-admin/admin-ajax.php"; 622 </script>
622 623 <meta name="generator" content="Elementor 4.3.2; features: e_font_icon_svg, additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-swap"> 624 <style> 625 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload), 626 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * { 627 background-image: none !important; 628 } 629 @media screen and (max-height: 1024px) { 630 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload), 631 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * { 632 background-image: none !important; 633 } 634 } 635 @media screen and (max-height: 640px) { 636 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload), 637 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * { 638 background-image: none !important; 639 } 640 } 641 </style> 642 <link rel="icon" href="https://nexthop.ai/wp-content/uploads/2025/12/cropped-logo-with-icon-linkedin-400x400.png" sizes="32x32" /> 643<link rel="icon" href="https://nexthop.ai/wp-content/uploads/2025/12/cropped-logo-with-icon-linkedin-400x400.png" sizes="192x192" /> 644<link rel="apple-touch-icon" href="https://nexthop.ai/wp-content/uploads/2025/12/cropped-logo-with-icon-linkedin-400x400.png" /> 645<meta name="msapplication-TileImage" content="https://nexthop.ai/wp-content/uploads/2025/12/cropped-logo-with-icon-linkedin-400x400.png" /> 646<style id="wp-custom-css"> 647.logged-in .menu-login-button{ 648 display: none !important; 649} 650.menu-logout-button a.logoutButton { 651 font-family: "Poppins", Sans-serif; 652 font-weight: 500; 653 color: #000000 !important; 654 cursor: pointer; 655} 656 657.menu-software-realeases-button{ 658 display: none !important; 659} 660.logged-in .menu-software-realeases-button{ 661 display: block !important; 662} 663 664p a{ 665 color: #00859B !important; 666} 667 668p a:hover{ 669 color: #000 !important; 670} 671 672pre a{ 673 color: #00859B !important; 674} 675 676 677.elementor-6586 .elementor-widget-container { 678 background-color: transparent!important; 679 border-style: none; 680 border-radius: 16px 16px 16px 16px; 681} 682.top-nav-menu .elementor-nav-menu li.menu-logout-button a, .top-nav-menu .elementor-nav-menu li.menu-login-button a { 683 background-color: #ffffff; 684 color: #000000 !important; 685 padding: 12px 22px !important; 686 border: 1px solid #000000; 687 border-radius: 80px; 688 transition: 0.3s; 689 font-size: 1rem !important; 690 font-weight: 500 !important; 691 text-decoration: none !important; 692} 693.top-nav-menu .elementor-nav-menu li.menu-logout-button a:hover::after, .top-nav-menu .elementor-nav-menu li.menu-login-button a:hover::after{ 694 text-decoration: none !important; 695 display: none !important; 696} 697.elementor-6572 .elementor-element.elementor-element-5f3f5a8 > .elementor-widget-container { 698 background-color: transparent !important; 699 padding: 2px 10px 2px 10px; 700 border-radius: 16px 16px 16px 16px; 701} 702 703 704@media (min-width: 1600px) { 705 .image-box { 706 margin-top: 12%; 707 } 708} 709svg.e-font-icon-svg.e-fas-caret-down path { 710 display: none; 711} 712svg.e-font-icon-svg.e-fas-caret-down{ 713 background: url(https://nexthop.ai/staging/wp-content/uploads/2025/09/chevron-open.svg) left top no-repeat; 714 background-size: 16px; 715} 716 717 718@media screen and (max-width: 1024px){ 719 .top-nav-menu .elementor-nav-menu li.menu-logout-button a, .top-nav-menu .elementor-nav-menu li.menu-login-button a { 720 background-color: #ffffff; 721 color: #000000 !important; 722 padding: 15px 10px !important; 723 border: 0px solid #000000; 724 border-radius: 0px; 725 transition: 0.3s; 726 font-size: 1.7rem !important; 727 margin: 0px !important; 728 font-weight: 500 !important; 729 text-decoration: none !important; 730} 731 732 .top-nav-menu .elementor-nav-menu li.menu-logout-button a{ 733 padding: 15px 10px !important; 734 } 735 736 .top-nav-menu .elementor-nav-menu li.menu-login-button a { 737 padding: 15px 10px 5px 10px !important; 738 } 739 740 741.menu-logout-button center { 742 text-align: left !important; 743} 744 745.menu-logout-button center a.logoutButton { 746 display: block !important; 747 text-align: left !important; 748 margin: 0 !important; 749} 750 751 752} 753</style> 754</head> 755<body class="home wp-singular page-template-default page page-id-28 wp-custom-logo wp-embed-responsive wp-theme-hello-elementor hello-elementor-default elementor-default elementor-template-full-width elementor-kit-6 elementor-page elementor-page-28"> 756 757 758<a class="skip-link screen-reader-text" href="#content">Skip to content</a> 759 760 <header data-elementor-type="header" data-elementor-id="19" class="elementor elementor-19 elementor-location-header" data-elementor-post-type="elementor_library"> 761 <div class="elementor-element elementor-element-ce024e7 e-con-full header-container e-flex e-con e-parent" data-id="ce024e7" data-element_type="container" data-e-type="container" id="hide-header" data-settings="{"sticky":"top","sticky_on":["desktop","tablet","mobile"],"sticky_offset":0,"sticky_effects_offset":0,"sticky_anchor_link_offset":0}"> 762 <div class="elementor-element elementor-element-fd3330e e-con-full e-flex e-con e-child" data-id="fd3330e" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 763 <div class="elementor-element elementor-element-c035a59 elementor-widget elementor-widget-heading" data-id="c035a59" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 764 <div class="elementor-widget-container"> 765 <p class="elementor-heading-title elementor-size-default"></p> </div>
766 </div> 767 </div> 768 <div class="elementor-element elementor-element-bdd7472 e-flex e-con-boxed e-con e-child" data-id="bdd7472" data-element_type="container" data-e-type="container"> 769 <div class="e-con-inner"> 770 <div class="elementor-element elementor-element-897863c main-logo elementor-widget elementor-widget-theme-site-logo elementor-widget-image" data-id="897863c" data-element_type="widget" data-e-type="widget" data-widget_type="theme-site-logo.default"> 771 <div class="elementor-widget-container"> 772 <a href="https://nexthop.ai"> 773 <img width="221" height="45" src="https://nexthop.ai/wp-content/uploads/2025/02/logo-color.svg" class="attachment-full size-full wp-image-7102" alt="" /> </a> 774 </div> 775 </div> 776 <div class="elementor-element elementor-element-0229371 elementor-nav-menu--stretch top-nav-menu elementor-nav-menu--dropdown-tablet elementor-nav-menu__text-align-aside elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu" data-id="0229371" data-element_type="widget" data-e-type="widget" data-settings="{"full_width":"stretch","layout":"horizontal","submenu_icon":{"value":"<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-caret-down\"
776 viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"><\/path><\/svg>","library":"fa-solid"},"toggle":"burger"}" data-widget_type="nav-menu.default"> 777 <div class="elementor-widget-container"> 778 <nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-underline e--animation-fade"> 779 <ul id="menu-1-0229371" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-5069"><a href="https://nexthop.ai/about-us/" class="elementor-item">About us<span class="sub-arrow"><svg aria-hidden="true" class="e-font-icon-svg e-fas-caret-down" viewBox="0 0 320 512" xmlns="http://www.w3.org/2000/svg"><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path></svg></span></a> 780<ul class="sub-menu elementor-nav-menu--dropdown"> 781 <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3948"><a href="https://nexthop.ai/about-us/" class="elementor-sub-item">Team</a></li> 782 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11535"><a href="https://nexthop.ai/blogs/" class="elementor-sub-item">Blogs</a></li> 783 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11534"><a href="https://nexthop.ai/news-events/" class="elementor-sub-item">News & Events</a></li> 784</ul> 785</li> 786<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-7201"><a href="https://nexthop.ai/platforms/" class="elementor-item">Products<span class="sub-arrow"><svg aria-hidden="true" class="e-font-icon-svg e-fas-caret-down" viewBox="0 0 320 512" xmlns="http://www.w3.org/2000/svg"><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path></svg></span></a> 787<ul class="sub-menu elementor-nav-menu--dropdown"> 788 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7200"><a href="https://nexthop.ai/platforms/" class="elementor-sub-item">Platforms</a></li> 789 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7199"><a href="https://nexthop.ai/software-portfolio/" class="elementor-sub-item">Software</a></li> 790 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10876"><a href="https://nexthop.ai/optics-and-cables/" class="elementor-sub-item">Optics and Cables</a></li> 791</ul> 792</li> 793<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-10130"><a href="https://nexthop.ai/support-hub/" class="elementor-item">Support<span class="sub-arrow"><svg aria-hidden="true" class="e-font-icon-svg e-fas-caret-down" viewBox="0 0 320 512" xmlns="http://www.w3.org/2000/svg"><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path></svg></span></a> 794<ul class="sub-menu elementor-nav-menu--dropdown"> 795 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10131"><a href="https://nexthop.ai/support-hub/" class="elementor-sub-item">Support Hub</a></li> 796 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7079"><a href="https://nexthop.ai/software-releases/" class="elementor-sub-item">Software Releases</a></li> 797</ul> 798</li> 799<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10971"><a href="https://nexthop.ai/learning-hub/" class="elementor-item">Learning hub</a></li> 800<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5431"><a href="https://nexthop.ai/join-us/" class="elementor-item">Join us</a></li> 801<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11888"><a href="https://nexthop.ai/contact-us/" class="elementor-item">Contact us</a></li> 802<li class="menu-login-button menu-item menu-item-type-post_type menu-item-object-page menu-item-10090"><a href="https://nexthop.ai/login/" class="elementor-item">Login</a></li> 803<li class="menu-logout-button menu-item menu-item-type-gs_sim menu-item-object-gs_sim menu-item-7078"></li> 804</ul> </nav> 805 <div class="elementor-menu-toggle" role="button" tabindex="0" aria-label="Menu Toggle" aria-expanded="false"> 806 <svg aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--open e-font-icon-svg e-eicon-menu-bar" viewBox="0 0 1000 1000" xmlns="http://www.w3.org/2000/svg"><path d="M104 333H896C929 333 958 304 958 271S929 208 896 208H104C71 208 42 237 42 271S71 333 104 333ZM104 583H896C929 583 958 554 958 521S929 458 896 458H104C71 458 42 487 42 521S71 583 104 583ZM104 833H896C929 833 958 804 958 771S929 708 896 708H104C71 708 42 737 42 771S71 833 104 833Z"></path></svg><svg aria-hidden="true" role="presentation" class="elementor-menu-toggle__icon--close e-font-icon-svg e-eicon-close" viewBox="0 0 1000 1000" xmlns="http://www.w3.org/2000/svg"><path d="M742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z"></path></svg> </div> 807 <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"> 808 <ul id="menu-2-0229371" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-5069"><a href="https://nexthop.ai/about-us/" class="elementor-item" tabindex="-1">About us<span class="sub-arrow"><svg aria-hidden="true" class="e-font-icon-svg e-fas-caret-down" viewB
808ox="0 0 320 512" xmlns="http://www.w3.org/2000/svg"><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path></svg></span></a> 809<ul class="sub-menu elementor-nav-menu--dropdown"> 810 <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3948"><a href="https://nexthop.ai/about-us/" class="elementor-sub-item" tabindex="-1">Team</a></li> 811 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11535"><a href="https://nexthop.ai/blogs/" class="elementor-sub-item" tabindex="-1">Blogs</a></li> 812 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11534"><a href="https://nexthop.ai/news-events/" class="elementor-sub-item" tabindex="-1">News & Events</a></li> 813</ul> 814</li> 815<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-7201"><a href="https://nexthop.ai/platforms/" class="elementor-item" tabindex="-1">Products<span class="sub-arrow"><svg aria-hidden="true" class="e-font-icon-svg e-fas-caret-down" viewBox="0 0 320 512" xmlns="http://www.w3.org/2000/svg"><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path></svg></span></a> 816<ul class="sub-menu elementor-nav-menu--dropdown"> 817 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7200"><a href="https://nexthop.ai/platforms/" class="elementor-sub-item" tabindex="-1">Platforms</a></li> 818 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7199"><a href="https://nexthop.ai/software-portfolio/" class="elementor-sub-item" tabindex="-1">Software</a></li> 819 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10876"><a href="https://nexthop.ai/optics-and-cables/" class="elementor-sub-item" tabindex="-1">Optics and Cables</a></li> 820</ul> 821</li> 822<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-10130"><a href="https://nexthop.ai/support-hub/" class="elementor-item" tabindex="-1">Support<span class="sub-arrow"><svg aria-hidden="true" class="e-font-icon-svg e-fas-caret-down" viewBox="0 0 320 512" xmlns="http://www.w3.org/2000/svg"><path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path></svg></span></a> 823<ul class="sub-menu elementor-nav-menu--dropdown"> 824 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10131"><a href="https://nexthop.ai/support-hub/" class="elementor-sub-item" tabindex="-1">Support Hub</a></li> 825 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-7079"><a href="https://nexthop.ai/software-releases/" class="elementor-sub-item" tabindex="-1">Software Releases</a></li> 826</ul> 827</li> 828<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10971"><a href="https://nexthop.ai/learning-hub/" class="elementor-item" tabindex="-1">Learning hub</a></li> 829<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5431"><a href="https://nexthop.ai/join-us/" class="elementor-item" tabindex="-1">Join us</a></li> 830<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11888"><a href="https://nexthop.ai/contact-us/" class="elementor-item" tabindex="-1">Contact us</a></li> 831<li class="menu-login-button menu-item menu-item-type-post_type menu-item-object-page menu-item-10090"><a href="https://nexthop.ai/login/" class="elementor-item" tabindex="-1">Login</a></li> 832<li class="menu-logout-button menu-item menu-item-type-gs_sim menu-item-object-gs_sim menu-item-7078"></li> 833</ul> </nav> 834 </div> 835 </div> 836 </div> 837 </div> 838 </div> 839 </header> 840 <div data-elementor-type="wp-page" data-elementor-id="28" class="elementor elementor-28" data-elementor-post-type="page"> 841 <div class="elementor-element elementor-element-98dc783 e-con-full e-flex e-con e-parent" data-id="98dc783" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic","position":"fixed"}"> 842 <div class="elementor-element elementor-element-a8c3dd1 elementor-widget elementor-widget-html" data-id="a8c3dd1" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> 843 <div class="elementor-widget-container">
844 <canvas id="homepage-canvas"></canvas> 845<div style="height: 30%;position: absolute;width: 100%;bottom: 0%;background: linear-gradient(0deg, rgb(254 252 250) 15%, rgb(255 255 255 / 1%) 82%);"></div> </div> 846 </div> 847 </div> 848 <div class="elementor-element elementor-element-72f9f4b e-flex e-con-boxed e-con e-parent" data-id="72f9f4b" data-element_type="container" data-e-type="container"> 849 <div class="e-con-inner"> 850 <div class="elementor-element elementor-element-45dcf6e e-con-full animated-slow e-flex elementor-invisible e-con e-child" data-id="45dcf6e" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic","animation":"fadeIn"}"> 851 <div class="elementor-element elementor-element-e26edd9 elementor-widget elementor-widget-heading" data-id="e26edd9" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 852 <div class="elementor-widget-container"> 853 <h1 class="elementor-heading-title elementor-size-default">Building the most <span class="homepage-title">efficient Al infrastructure</span>⨠for the world's largest cloud operators</h1> </div> 854 </div> 855 </div> 856 <div class="elementor-element elementor-element-b0c2993 homepage-video-bg animated-slow e-con-full e-flex elementor-invisible e-con e-child" data-id="b0c2993" data-element_type="container" data-e-type="container" data-settings="{"background_background":"gradient","animation":"fadeIn"}"> 857 <div class="elementor-element elementor-element-55d18ff4 elementor-pagination-type-bullets elementor-arrows-position-inside elementor-pagination-position-outside elementor-widget elementor-widget-n-carousel" data-id="55d18ff4" data-element_type="widget" data-e-type="widget" data-settings="{"carousel_items":[{"slide_title":"Slide-1","_id":"f492751"},{"slide_title":"Slide-2","_id":"df73efa"},{"slide_title":"Slide-3","_id":"e0905c5"}],"slides_to_show":"1","slides_to_scroll":"1","slides_to_show_tablet":"1","image_spacing_custom":{"unit":"px","size":0,"sizes":[]},"slides_to_show_mobile":"1","speed":500,"arrows":"yes","pagination":"bullets","image_spacing_custom_tablet":{"unit":"px","size":"","sizes":[]},"image_spacing_custom_mobile":{"unit":"px","size":"","sizes":[]}}" data-widget_type="nested-carousel.default"> 858 <div class="elementor-widget-container"> 859 <div class="e-n-carousel swiper" role="region" aria-roledescription="carousel" aria-label="Carousel" dir="ltr"> 860 <div class="swiper-wrapper" aria-live="polite"> 861 <div class="swiper-slide" data-slide="1" role="group" aria-roledescription="slide" aria-label="1 of 3"> 862 <div class="elementor-element elementor-element-d078e41 e-flex e-con-boxed e-con e-child" data-id="d078e41" data-element_type="container" data-e-type="container"> 863 <div class="e-con-inner"> 864 <div class="elementor-element elementor-element-31e1b99 elementor-widget elementor-widget-shortcode" data-id="31e1b99" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default"> 865 <div class="elementor-widget-container"> 866 <div class="elementor-shortcode"> <div data-elementor-type="container" data-elementor-id="11139" class="elementor elementor-11139" data-elementor-post-type="elementor_library"> 867 <div class="elementor-element elementor-element-2c6ce5a1 e-con-full e-flex e-con e-child" data-id="2c6ce5a1" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 868 <div class="elementor-element elementor-element-30d90e06 e-con-full e-flex e-con e-child" data-id="30d90e06" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 869 <div class="elementor-element elementor-element-121f8735 elementor-widget elementor-widget-video" data-id="121f8735" data-element_type="widget" data-e-type="widget" data-settings="{"youtube_url":"https:\/\/youtu.be\/KXtD-e5KD-Y","lazy_load":"yes","video_type":"youtube","controls":"yes"}" data-widget_type="video.default"> 870 <div class="elementor-widget-container"> 871 <div class="elementor-wrapper elementor-open-inline"> 872 <div class="elementor-video"></div> </div> 873 </div>
874 </div> 875 </div> 876 <div class="elementor-element elementor-element-65e5baea e-con-full e-flex e-con e-child" data-id="65e5baea" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 877 <div class="elementor-element elementor-element-54fc00e elementor-widget elementor-widget-heading" data-id="54fc00e" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 878 <div class="elementor-widget-container"> 879 <p class="elementor-heading-title elementor-size-default">"Power efficiency, cost, reliability and speed of deployment are all extremely important for scaling AI infrastructure - bringing down the cost per token"</p> </div> 880 </div> 881 <div class="elementor-element elementor-element-7faf8f13 e-con-full e-flex e-con e-child" data-id="7faf8f13" data-element_type="container" data-e-type="container"> 882 <div class="elementor-element elementor-element-1864221 elementor-widget elementor-widget-heading" data-id="1864221" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 883 <div class="elementor-widget-container"> 884 <p class="elementor-heading-title elementor-size-default">Anshul Sadana - Founder & CEO, Nexthop AI</p> </div> 885 </div> 886 <div class="elementor-element elementor-element-2561e03d elementor-widget elementor-widget-heading" data-id="2561e03d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 887 <div class="elementor-widget-container"> 888 <p class="elementor-heading-title elementor-size-default"><a href="https://nexthop.ai/blog/the-hyperscaler-paradox-build-buy-or-partner/">Read the Founderâs Blog</a></p> </div> 889 </div> 890 </div> 891 </div> 892 </div> 893 </div> 894 </div> 895 </div> 896 </div> 897 </div> 898 </div> 899 </div> 900 <div class="swiper-slide" data-slide="2" role="group" aria-roledescription="slide" aria-label="2 of 3"> 901 <div class="elementor-element elementor-element-e02d46d e-flex e-con-boxed e-con e-child" data-id="e02d46d" data-element_type="container" data-e-type="container"> 902 <div class="e-con-inner"> 903 <div class="elementor-element elementor-element-3127542 elementor-widget elementor-widget-shortcode" data-id="3127542" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default"> 904 <div class="elementor-widget-container"> 905 <div class="elementor-shortcode"> <div data-elementor-type="container" data-elementor-id="11198" class="elementor elementor-11198" data-elementor-post-type="elementor_library"> 906 <div class="elementor-element elementor-element-2c6ce5a1 e-con-full e-flex e-con e-child" data-id="2c6ce5a1" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 907 <div class="elementor-element elementor-element-30d90e06 e-con-full e-flex e-con e-child" data-id="30d90e06" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 908 <div class="elementor-element elementor-element-121f8735 elementor-widget elementor-widget-video" data-id="121f8735" data-element_type="widget" data-e-type="widget" data-settings="{"youtube_url":"https:\/\/www.youtube.com\/watch?v=9zWUPbIXF6c","lazy_load":"yes","video_type":"youtube","controls":"yes"}" data-widget_type="video.default"> 909 <div class="elementor-widget-container"> 910 <div class="elementor-wrapper elementor-open-inline"> 911 <div class="elementor-video"></div> </div> 912 </div> 913 </div> 914 </div> 915 <div class="elementor-element elementor-element-65e5baea e-con-full e-flex e-con e-child" data-id="65e5baea" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 916 <div class="elementor-element elementor-element-54fc00e elementor-widget elementor-widget-heading" data-id="54fc00e" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 917 <div class="elementor-widget-container"> 918 <p class="elementor-heading-title elementor-size-default">Guru Chahal speaks with Anshul Sadana, founder and CEO of Nexthop AI, about how the AI boom is pushing cloud operators to rethink networking for speed, customization, and efficie
918ncy in modern data centers.</p> </div> 919 </div> 920 <div class="elementor-element elementor-element-7faf8f13 e-con-full e-flex e-con e-child" data-id="7faf8f13" data-element_type="container" data-e-type="container"> 921 </div> 922 </div> 923 </div> 924 </div> 925 </div> 926 </div> 927 </div> 928 </div> 929 </div> 930 </div> 931 <div class="swiper-slide" data-slide="3" role="group" aria-roledescription="slide" aria-label="3 of 3"> 932 <div class="elementor-element elementor-element-f8fa9b3 e-flex e-con-boxed e-con e-child" data-id="f8fa9b3" data-element_type="container" data-e-type="container"> 933 <div class="e-con-inner"> 934 <div class="elementor-element elementor-element-371bf26 elementor-widget elementor-widget-shortcode" data-id="371bf26" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default"> 935 <div class="elementor-widget-container"> 936 <div class="elementor-shortcode"> <div data-elementor-type="container" data-elementor-id="10391" class="elementor elementor-10391" data-elementor-post-type="elementor_library"> 937 <div class="elementor-element elementor-element-2c6ce5a1 e-con-full e-flex e-con e-child" data-id="2c6ce5a1" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 938 <div class="elementor-element elementor-element-30d90e06 e-con-full e-flex e-con e-child" data-id="30d90e06" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 939 <div class="elementor-element elementor-element-121f8735 elementor-widget elementor-widget-video" data-id="121f8735" data-element_type="widget" data-e-type="widget" data-settings="{"youtube_url":"https:\/\/youtu.be\/ox628w2GxP4","lazy_load":"yes","video_type":"youtube","controls":"yes"}" data-widget_type="video.default"> 940 <div class="elementor-widget-container"> 941 <div class="elementor-wrapper elementor-open-inline"> 942 <div class="elementor-video"></div> </div> 943 </div> 944 </div> 945 </div> 946 <div class="elementor-element elementor-element-65e5baea e-con-full e-flex e-con e-child" data-id="65e5baea" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 947 <div class="elementor-element elementor-element-54fc00e elementor-widget elementor-widget-heading" data-id="54fc00e" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 948 <div class="elementor-widget-container"> 949 <p class="elementor-heading-title elementor-size-default">"A Spirit of Dialogue" in Action at Davos 2026</p> </div> 950 </div> 951 <div class="elementor-element elementor-element-7faf8f13 e-con-full e-flex e-con e-child" data-id="7faf8f13" data-element_type="container" data-e-type="container"> 952 <div class="elementor-element elementor-element-1864221 elementor-widget elementor-widget-heading" data-id="1864221" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 953 <div class="elementor-widget-container"> 954 <p class="elementor-heading-title elementor-size-default">Anshul Sadana at Davos 2026, World Economic Forum 955</p> </div> 956 </div> 957 </div> 958 </div> 959 </div> 960 </div> 961 </div> 962 </div> 963 </div> 964 </div> 965 </div> 966 </div> 967 </div> 968 </div> 969 <div class="elementor-swiper-button elementor-swiper-button-prev" role="button" tabindex="0" aria-label="Previous"> 970 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M19 12H5M5 12L12 19M5 12L12 5" stroke="#667085" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg> </div> 971 <div class="elementor-swiper-button elementor-swiper-button-next" role="button" tabindex="0" aria-label="Next"> 972 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"><path d="M5 12H19M19 12L12 5M19 12L12 19" stroke="#667085" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg> </div> 973 <div class="swiper-pagination"></div> 974 </div>
975 </div> 976 </div> 977 </div> 978 </div> 979 <div class="elementor-element elementor-element-2e6d6d7 e-con-full e-flex e-con e-parent" data-id="2e6d6d7" data-element_type="container" data-e-type="container"> 980 <div class="elementor-element elementor-element-a1d1b7c elementor-pagination-type-bullets elementor-pagination-position-outside elementor-widget elementor-widget-loop-carousel" data-id="a1d1b7c" data-element_type="widget" data-e-type="widget" data-settings="{"template_id":5030,"slides_to_show":"1","speed":1000,"image_spacing_custom":{"unit":"px","size":20,"sizes":[]},"slides_to_show_tablet":"1","_skin":"post","slides_to_show_mobile":"1","slides_to_scroll":"1","edit_handle_selector":".elementor-loop-container","pagination":"bullets","image_spacing_custom_tablet":{"unit":"px","size":"","sizes":[]},"image_spacing_custom_mobile":{"unit":"px","size":"","sizes":[]}}" data-widget_type="loop-carousel.post"> 981 <div class="elementor-widget-container"> 982 <div class="swiper elementor-loop-container elementor-grid" role="list" dir="ltr"> 983 <div class="swiper-wrapper" aria-live="polite"> 984 <style id="loop-5030">.elementor-5030 .elementor-element.elementor-element-e4c66a6{--display:flex;--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--flex-wrap:nowrap;--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-widget-theme-post-title .elementor-heading-title{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-weight:var( --e-global-typography-primary-font-weight );color:var( --e-global-color-primary );}.elementor-5030 .elementor-element.elementor-element-54ab572.elementor-element{--align-self:center;}.elementor-5030 .elementor-element.elementor-element-54ab572{text-align:center;}.elementor-5030 .elementor-element.elementor-element-54ab572 .elementor-heading-title{font-family:"Poppins", Sans-serif;font-size:32px;font-weight:400;line-height:60px;color:#373D41;}.elementor-5030 .elementor-element.elementor-element-54ab572 .elementor-heading-title a:hover, .elementor-5030 .elementor-element.elementor-element-54ab572 .elementor-heading-title a:focus{color:#00859B;}@media(max-width:1024px){.elementor-5030 .elementor-element.elementor-element-54ab572 .elementor-heading-title{font-size:28px;}}@media(max-width:767px){.elementor-5030 .elementor-element.elementor-element-54ab572 .elementor-heading-title{font-size:18px;line-height:28px;}}/* Start custom CSS for theme-post-title, class: .elementor-element-54ab572 */.scrollable-news-title h3{ 985 text-wrap: nowrap; 986 overflow: hidden; 987 text-overflow: ellipsis; 988}/* End custom CSS */</style> <div data-elementor-type="loop-item" data-elementor-id="5030" class="elementor elementor-5030 swiper-slide e-loop-item e-loop-item-10928 post-10928 news-and-event type-news-and-event status-publish format-standard hentry tag-pr news-category-press-release" data-elementor-post-type="elementor_library" role="group" aria-roledescription="slide" data-custom-edit-handle="1"> 989 <div class="elementor-element elementor-element-e4c66a6 e-flex e-con-boxed e-con e-parent" data-id="e4c66a6" data-element_type="container" data-e-type="container"> 990 <div class="e-con-inner"> 991 <div class="elementor-element elementor-element-54ab572 scrollable-news-title elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="54ab572" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default"> 992 <div class="elementor-widget-container"> 993 <h3 class="elementor-heading-title elementor-size-default"><a href="https://nexthop.ai/news-and-event/nexthop-ai-accelerates-into-hypergrowth-with-oversubscribed-500m-series-b-funding-catapulting-the-companys-valuation-to-4-2-billion/">Nexthop AI accelerates into Hypergrowth with Oversubscribed $500M Series B Funding, catapulting the companyâs valuation to $4.2 Billion</a></h3>
993 </div> 994 </div> 995 </div> 996 </div> 997 </div> 998 <div data-elementor-type="loop-item" data-elementor-id="5030" class="elementor elementor-5030 swiper-slide e-loop-item e-loop-item-10932 post-10932 news-and-event type-news-and-event status-publish format-standard hentry tag-pr news-category-press-release" data-elementor-post-type="elementor_library" role="group" aria-roledescription="slide" data-custom-edit-handle="1"> 999 <div class="elementor-element elementor-element-e4c66a6 e-flex e-con-boxed e-con e-parent" data-id="e4c66a6" data-element_type="container" data-e-type="container"> 1000 <div class="e-con-inner"> 1001 <div class="elementor-element elementor-element-54ab572 scrollable-news-title elementor-widget elementor-widget-theme-post-title elementor-page-title elementor-widget-heading" data-id="54ab572" data-element_type="widget" data-e-type="widget" data-widget_type="theme-post-title.default"> 1002 <div class="elementor-widget-container"> 1003 <h3 class="elementor-heading-title elementor-size-default"><a href="https://nexthop.ai/news-and-event/nexthop-ai-unveils-transformative-industry-leading-scale-out-and-scale-across-switches-engineered-for-hyperscalers-neoclouds/">Nexthop AI Unveils Transformative, industry-leading Scale-out and Scale-across Switches engineered for Hyperscalers & NeoClouds</a></h3> </div> 1004 </div> 1005 </div> 1006 </div> 1007 </div> 1008 </div> 1009 </div> 1010 <div class="swiper-pagination"></div> 1011 </div> 1012 </div> 1013 </div> 1014 <a class="elementor-element elementor-element-030c00c home-page-press-release-container elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed e-con e-parent" data-id="030c00c" data-element_type="container" data-e-type="container" href="https://nexthop.ai/news-and-event/nexthop-ai-accelerates-into-hypergrowth-with-oversubscribed-500m-series-b-funding-catapulting-the-companys-valuation-to-4-2-billion/" target="_blank"> 1015 <div class="e-con-inner"> 1016 <div class="elementor-element elementor-element-eda29d8 elementor-widget__width-initial elementor-widget-mobile__width-initial homepage-press-release-link elementor-widget elementor-widget-heading" data-id="eda29d8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 1017 <div class="elementor-widget-container"> 1018 <h3 class="elementor-heading-title elementor-size-default">Nexthop AI accelerates into Hypergrowth with Oversubscribed $500M Series B Funding, catapulting the companyâs valuation to $4.2 Billion</h3> </div> 1019 </div> 1020 <div class="elementor-element elementor-element-5786cc3 e-con-full e-flex e-con e-child" data-id="5786cc3" data-element_type="container" data-e-type="container"> 1021 <div class="elementor-element elementor-element-62c4b6b read-more elementor-widget elementor-widget-heading" data-id="62c4b6b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default"> 1022 <div class="elementor-widget-container"> 1023 <div class="elementor-heading-title elementor-size-default">Read more</div> </div> 1024 </div> 1025 </div> 1026 <div class="elementor-element elementor-element-a79a4ef elementor-widget elementor-widget-html" data-id="a79a4ef" data-element_type="widget" data-e-type="widget" data-widget_type="html.default"> 1027 <div class="elementor-widget-container"> 1028 <style> 1029 .home-page-press-release-container:hover .homepage-press-release-link h3, .home-page-press-release-container:hover .read-more .elementor-heading-title{ 1030 color: #000000 !important; 1031} 1032 1033/* Read More Hover Effect */ 1034.read-more { 1035 position: relative; 1036 display: inline-block; 1037 text-decoration: none; 1038 width: fit-content; 1039} 1040 1041/* Default underline */ 1042.read-more::before { 1043 content: ""; 1044 width: 100%; 1045 position: absolute; 1046 height: 1.5px; 1047 bottom: -2px; 1048 right: 0; 1049 background-color: black; 1050 transition: 0.3s; 1051} 1052 1053/* Trigger underline animation when hovering over .home-page-press-release-container */ 1054.home-page-press-release-container:hover .read-more::before { 1055 animation: hideThenShow 1s ease-in-out forwards; 1056} 1057 1058/* Animation */ 1059@keyframes hideThenShow { 1060 0% { 1061 width: 100%; 1062 } 1063 50% { 1064 width: 0%; 1065 right: 0; 1066 } 1067 100% { 1068 width: 100%; 1069 right: inherit; 1070 left: 0; 1071 } 1072} 1073 1074 1075</style> </div>
1076 </div> 1077 </div> 1078 </a> 1079 </div> 1080 <footer data-elementor-type="footer" data-elementor-id="1142" class="elementor elementor-1142 elementor-location-footer" data-elementor-post-type="elementor_library"> 1081 <div class="elementor-element elementor-element-1d0d0fe e-flex e-con-boxed e-con e-parent" data-id="1d0d0fe" data-element_type="container" data-e-type="container" data-settings="{"background_background":"classic"}"> 1082 <div class="e-con-inner"> 1083 <div class="elementor-element elementor-element-7befc15 e-con-full e-flex e-con e-child" data-id="7befc15" data-element_type="container" data-e-type="container"> 1084 <a class="elementor-element elementor-element-44d1c31 e-con-full e-flex e-con e-child" data-id="44d1c31" data-element_type="container" data-e-type="container" href="https://www.linkedin.com/company/nexthopai" target="_blank"> 1085 <div class="elementor-element elementor-element-02a8cbe elementor-widget elementor-widget-image" data-id="02a8cbe" data-element_type="widget" data-e-type="widget" data-widget_type="image.default"> 1086 <div class="elementor-widget-container"> 1087 <img width="18" height="18" src="https://nexthop.ai/wp-content/uploads/2025/03/ic_LinkedIn.svg" class="attachment-full size-full wp-image-1552" alt="" /> </div> 1088 </div> 1089 </a> 1090 <div class="elementor-element elementor-element-a9bb753 elementor-widget__width-auto elementor-widget elementor-widget-text-editor" data-id="a9bb753" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default"> 1091 <div class="elementor-widget-container"> 1092 <p>Copyright © 2026 Nexthop Systems Inc. â All Rights Reserved.</p> </div> 1093 </div> 1094 <div class="elementor-element elementor-element-1de4bf5 elementor-nav-menu--dropdown-none elementor-widget elementor-widget-nav-menu" data-id="1de4bf5" data-element_type="widget" data-e-type="widget" data-settings="{"layout":"horizontal","submenu_icon":{"value":"<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-caret-down\"
1094 viewBox=\"0 0 320 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"><\/path><\/svg>","library":"fa-solid"}}" data-widget_type="nav-menu.default"> 1095 <div class="elementor-widget-container"> 1096 <nav aria-label="Menu" class="elementor-nav-menu--main elementor-nav-menu__container elementor-nav-menu--layout-horizontal e--pointer-none"> 1097 <ul id="menu-1-1de4bf5" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-11555"><a rel="privacy-policy" href="https://nexthop.ai/privacy-policy/" class="elementor-item">Privacy Policy</a></li> 1098<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11556"><a href="https://nexthop.ai/website-terms-and-conditions-of-use/" class="elementor-item">Terms of Use</a></li> 1099</ul> </nav> 1100 <nav class="elementor-nav-menu--dropdown elementor-nav-menu__container" aria-hidden="true"> 1101 <ul id="menu-2-1de4bf5" class="elementor-nav-menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-11555"><a rel="privacy-policy" href="https://nexthop.ai/privacy-policy/" class="elementor-item" tabindex="-1">Privacy Policy</a></li> 1102<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-11556"><a href="https://nexthop.ai/website-terms-and-conditions-of-use/" class="elementor-item" tabindex="-1">Terms of Use</a></li> 1103</ul> </nav> 1104 </div> 1105 </div> 1106 </div> 1107 <div class="elementor-element elementor-element-680a7e9 e-con-full e-flex e-con e-child" data-id="680a7e9" data-element_type="container" data-e-type="container"> 1108 <div class="elementor-element elementor-element-2368006 footer-logo elementor-widget elementor-widget-image" data-id="2368006" data-element_type="widget" data-e-type="widget" data-widget_type="image.default"> 1109 <div class="elementor-widget-container"> 1110 <a href="https://nexthop.ai/"> 1111 <img width="221" height="45" src="https://nexthop.ai/wp-content/uploads/2025/02/logo-color.svg" class="attachment-full size-full wp-image-7102" alt="" /> </a> 1112 </div> 1113 </div> 1114 </div> 1115 </div> 1116 </div> 1117 </footer> 1118
1119<script type="speculationrules"> 1120{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/hello-elementor/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 1121</script>
1121 1122<style> 1123#homepage-canvas { 1124 width: 100%; 1125 height: 150vh; 1126 --gradient-color-1: #d4eefc; 1127 --gradient-color-2: #ffffff; 1128 --gradient-color-3: #d4eefc; 1129 --gradient-color-4: #ffffff; 1130 z-index: 0; 1131} 1132</style>
1133<script type="db210efae27388b2ff45553d-text/javascript"> 1134 var gradientHome = new Gradient(); 1135 gradientHome.amp = 0; 1136 gradientHome.initGradient("#homepage-canvas"); 1137</script>
1137
1137<script type="db210efae27388b2ff45553d-text/javascript"> 1138 ( () => { 1139 const lazyloadRunObserver = () => { 1140 const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); 1141 const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { 1142 entries.forEach( ( entry ) => { 1143 if ( entry.isIntersecting ) { 1144 let lazyloadBackground = entry.target; 1145 if( lazyloadBackground ) { 1146 lazyloadBackground.classList.add( 'e-lazyloaded' ); 1147 } 1148 lazyloadBackgroundObserver.unobserve( entry.target ); 1149 } 1150 }); 1151 }, { rootMargin: '200px 0px 200px 0px' } ); 1152 lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { 1153 lazyloadBackgroundObserver.observe( lazyloadBackground ); 1154 } ); 1155 }; 1156 const events = [ 1157 'DOMContentLoaded', 1158 'elementor/lazyload/observe', 1159 ]; 1160 events.forEach( ( event ) => { 1161 document.addEventListener( event, lazyloadRunObserver ); 1162 } ); 1163 } )(); 1164 </script>
1164 1165 <link rel='stylesheet' id='elementor-post-11139-css' href='https://nexthop.ai/wp-content/uploads/elementor/css/post-11139.css?ver=1790308116' media='all' /> 1166<link rel='stylesheet' id='widget-video-css' href='https://nexthop.ai/wp-content/plugins/elementor/assets/css/widget-video.min.css?ver=4.3.2' media='all' /> 1167<link rel='stylesheet' id='elementor-post-11198-css' href='https://nexthop.ai/wp-content/uploads/elementor/css/post-11198.css?ver=1790308116' media='all' /> 1168<link rel='stylesheet' id='elementor-post-10391-css' href='https://nexthop.ai/wp-content/uploads/elementor/css/post-10391.css?ver=1790308116' media='all' />
1169<script id="wp-hooks-js" src="https://nexthop.ai/wp-includes/js/dist/hooks.min.js?ver=f0f188028580e8dc1255" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1169
1169
1170<script id="wp-i18n-js" src="https://nexthop.ai/wp-includes/js/dist/i18n.min.js?ver=1dfe7db3940c23ea9216" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1170
1170
1171<script id="wp-i18n-js-after" type="db210efae27388b2ff45553d-text/javascript"> 1172wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 1173//# sourceURL=wp-i18n-js-after 1174</script>
vendor: 1 bytes, line 1174
1174
1175<script id="swv-js" src="https://nexthop.ai/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.7" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1175
1175
1176<script id="contact-form-7-js-before" type="db210efae27388b2ff45553d-text/javascript"> 1177var wpcf7 = { 1178 "api": { 1179 "root": "https:\/\/nexthop.ai\/wp-json\/", 1180 "namespace": "contact-form-7\/v1" 1181 } 1182}; 1183//# sourceURL=contact-form-7-js-before 1184</script>
vendor: 1 bytes, line 1184
1184
1185<script id="contact-form-7-js" src="https://nexthop.ai/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.7" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1185
1185
1186<script id="elementor-webpack-runtime-js" src="https://nexthop.ai/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=4.3.2" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1186
1186
1187<script id="elementor-frontend-modules-js" src="https://nexthop.ai/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=4.3.2" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1187
1187
1188<script id="jquery-ui-core-js-before" type="db210efae27388b2ff45553d-text/javascript"> 1189jQuery.uiBackCompat = true; 1190//# sourceURL=jquery-ui-core-js-before 1191</script>
vendor: 1 bytes, line 1191
1191
1192<script id="jquery-ui-core-js" src="https://nexthop.ai/wp-includes/js/jquery/ui/core.min.js?ver=1.14.2" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1192
1192
1193<script id="elementor-frontend-js-before" type="db210efae27388b2ff45553d-text/javascript"> 1194var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnX":"Share on X","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}}, 1195"hasCustomBreakpoints":false},"version":"4.3.2","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"container":true,"theme_builder_v2":true,"hello-theme-header-footer":true,"nested-elements":true,"import-export-customization":true,"e_pro_atomic_form":true,"e_pro_collection_loop":true},"urls":{"assets":"https:\/\/nexthop.ai\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/nexthop.ai\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/nexthop.ai\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"042ae3cea1","atomicFormsSendForm":"702281ca1a"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"body_background_background":"classic","active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description"},"post":{"id":28,"title":"Nexthop.ai%20%E2%80%93%20Building%20the%20most%20efficient%20Al%20infrastructure%E2%80%A8for%20the%20world%27s%20largest%20cloud%20operators","excerpt":"","featuredImage":false}}; 1196//# sourceURL=elementor-frontend-js-before 1197</script>
vendor: 1 bytes, line 1197
1197
1198<script id="elementor-frontend-js" src="https://nexthop.ai/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=4.3.2" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1198
1198
1199<script id="smartmenus-js" src="https://nexthop.ai/wp-content/plugins/elementor-pro/assets/lib/smartmenus/jquery.smartmenus.min.js?ver=1.2.1" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1199
1199
1200<script id="e-sticky-js" src="https://nexthop.ai/wp-content/plugins/elementor-pro/assets/lib/sticky/jquery.sticky.min.js?ver=4.3.0" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1200
1200
1201<script id="swiper-js" src="https://nexthop.ai/wp-content/plugins/elementor/assets/lib/swiper/v8/swiper.min.js?ver=8.4.5" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1201
1201
1202<script id="imagesloaded-js" src="https://nexthop.ai/wp-includes/js/imagesloaded.min.js?ver=5.0.0" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 86 bytes, lines 1202-1203
1202 1203<script id="google-recaptcha-js" src="https://www.google.com/recaptcha/api.js?render=
12036LderGYqAAAAALcyKbqoHX2Hi-mmcsfRYLyvnAJ-
vendor: 73 bytes, line 1203
1203&ver=3.0" type="db210efae27388b2ff45553d-text/javascript"></script>
1204<script id="wp-polyfill-js" src="https://nexthop.ai/wp-includes/js/dist/vendor/wp-polyfill.min.js?ver=3.15.0" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1204
1204
1205<script id="wpcf7-recaptcha-js-before" type="db210efae27388b2ff45553d-text/javascript"> 1206var wpcf7_recaptcha = { 1207 "sitekey": "6LderGYqAAAAALcyKbqoHX2Hi-mmcsfRYLyvnAJ-", 1208 "actions": { 1209 "homepage": "homepage", 1210 "contactform": "contactform" 1211 } 1212}; 1213//# sourceURL=wpcf7-recaptcha-js-before 1214</script>
vendor: 1 bytes, line 1214
1214
1215<script id="wpcf7-recaptcha-js" src="https://nexthop.ai/wp-content/plugins/contact-form-7/modules/recaptcha/index.js?ver=6.1.7" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1215
1215
1216<script id="elementor-pro-frontend-js-before" type="db210efae27388b2ff45553d-text/javascript"> 1217var ElementorProFrontendConfig = {"ajaxurl":"https:\/\/nexthop.ai\/wp-admin\/admin-ajax.php","nonce":"a734106389","urls":{"assets":"https:\/\/nexthop.ai\/wp-content\/plugins\/elementor-pro\/assets\/","rest":"https:\/\/nexthop.ai\/wp-json\/"},"settings":{"lazy_load_background_images":true},"popup":{"hasPopUps":true},"shareButtonsNetworks":{"facebook":{"title":"Facebook","has_counter":true},"twitter":{"title":"Twitter"},"linkedin":{"title":"LinkedIn","has_counter":true},"pinterest":{"title":"Pinterest","has_counter":true},"reddit":{"title":"Reddit","has_counter":true},"vk":{"title":"VK","has_counter":true},"odnoklassniki":{"title":"OK","has_counter":true},"tumblr":{"title":"Tumblr"},"digg":{"title":"Digg"},"skype":{"title":"Skype"},"stumbleupon":{"title":"StumbleUpon","has_counter":true},"mix":{"title":"Mix"},"telegram":{"title":"Telegram"},"pocket":{"title":"Pocket","has_counter":true},"xing":{"title":"XING","has_counter":true},"whatsapp":{"title":"WhatsApp"},"email":{"title":"Email"},"print":{"title":"Print"},"x-twitter":{"title":"X"},"threads":{"title":"Threads"}}, 1218"facebook_sdk":{"lang":"en","app_id":""},"lottie":{"defaultAnimationUrl":"https:\/\/nexthop.ai\/wp-content\/plugins\/elementor-pro\/modules\/lottie\/assets\/animations\/default.json"}}; 1219//# sourceURL=elementor-pro-frontend-js-before 1220</script>
vendor: 1 bytes, line 1220
1220
1221<script id="elementor-pro-frontend-js" src="https://nexthop.ai/wp-content/plugins/elementor-pro/assets/js/frontend.min.js?ver=4.3.0" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1221
1221
1222<script id="pro-elements-handlers-js" src="https://nexthop.ai/wp-content/plugins/elementor-pro/assets/js/elements-handlers.min.js?ver=4.3.0" type="db210efae27388b2ff45553d-text/javascript"></script>
vendor: 1 bytes, line 1222
1222
1223<script id="wp-emoji-settings" type="application/json"> 1224{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://nexthop.ai/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} 1225</script>
vendor: 1 bytes, line 1225
1225
1226<script type="db210efae27388b2ff45553d-module"> 1227/*! This file is auto-generated */ 1228var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 1229//# sourceURL=https://nexthop.ai/wp-includes/js/wp-emoji-loader.min.js 1230</script>
1230 1231<!-- Hide and Show Desktop Header -->
1232<script type="db210efae27388b2ff45553d-text/javascript"> 1233var prevScrollpos = window.pageYOffset; 1234window.onscroll = function() { 1235var currentScrollPos = window.pageYOffset; 1236 if (prevScrollpos > currentScrollPos) { 1237 document.getElementById("hide-header").style.top = "0px"; 1238 } else { 1239 if(screen.width > 980){ 1240 // document.getElementById("hide-header").style.top = "-130px"; /* adjust this value to the height of your header--- hide header */ 1241 document.getElementById("hide-header").style.top = "0px"; /* For fixed header */ 1242 } 1243 } 1244 prevScrollpos = currentScrollPos; 1245} 1246 1247 // Function to update height and width 1248 function updateSize(){ 1249 console.log(window.innerWidth); 1250// document.getElementById("hide-header").style.position = "relative"; 1251 document.getElementById("hide-header").style.width = "100%"; 1252 } 1253 1254 // Add event listener for window resize 1255 window.addEventListener('resize', updateSize); 1256 1257 // Initial update 1258 updateSize(); 1259 1260</script>
1260 1261 1262<style> 1263/* Show Hide Sticky Header Speed Control */ 1264#hide-header { 1265 transition: all .4s ease!important; 1266} 1267</style>
vendor: 144 bytes, lines 1267-1269
1267 1268 1269<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="db210efae27388b2ff45553d-|49" defer></script>
1269</body>
1270<script type="db210efae27388b2ff45553d-text/javascript">'undefined'=== typeof _trfq || (window._trfq = []);'undefined'=== typeof _trfd && (window._trfd=[]),_trfd.push({'tccl.baseHost':'secureserver.net'},{'ap':'cpsh-oh'},{'server':'p3plzcpnl509041'},{'dcenter':'p3'},{'cp_id':'10237784'},{'cp_cl':'8'}) // Monitoring performance to make your website faster. If you want to opt-out, please contact web hosting support.</script>
1270<script src='https://img1.wsimg.com/traffic-assets/js/tccl.min.js' type="db210efae27388b2ff45553d-text/javascript"></script>
1270</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.