1<!DOCTYPE html> 2<html lang="en-US"> 3<head> 4<!-- Google Tag Manager -->
5<script>
vendor: 327 bytes, lines 5-9
5(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 6new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 7j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 8'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 9})(window,document,'script','dataLayer','
9GTM-NQ4VVFZS
vendor: 3 bytes, line 9
9');
9</script>
9 10<!-- End Google Tag Manager --> 11<meta charset="UTF-8">
12<script> 13var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),document.addEventListener("gform/theme/scripts_loaded",function(){gform.themeScriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>"function"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn("The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1."),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener("gform_main_scripts_loaded",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener("gform/theme/scripts_loaded",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener("DOMContentLoaded",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook("action",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook("filter",o,r,e,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,r){gform.removeHook("action",o,r)},removeFilter:function(o,r,e){gform.removeHook("filter",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+"_"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==r?t.apply(null,e):e[0]=t.apply(null,e)})),"filter"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}}); 14</script>
14 15 16<meta name="viewport" content="width=device-width, initial-scale=1"> 17<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 18 19 <!-- This site is optimized with the Yoast SEO plugin v27.7 - https://yoast.com/product/yoast-seo-wordpress/ --> 20 <title>Upwind Security: Cloud & AI Security for the Realtime Era</title> 21 <meta name="description" content="Combine the power of cloud security posture with runtime context and realtime protectionâ enabling your security team to prioritize accurately and respond fast to your most critical risks." /> 22 <link rel="canonical" href="https://www.upwind.io/" /> 23 <meta property="og:locale" content="en_US" /> 24 <meta property="og:type" content="website" /> 25 <meta property="og:title" content="Upwind Security: Cloud & AI Security for the Realtime Era" /> 26 <meta property="og:description" content="Combine the power of cloud security posture with runtime context and realtime protectionâ enabling your security team to prioritize accurately and respond fast to your most critical risks." /> 27 <meta property="og:url" content="https://www.upwind.io/" /> 28 <meta property="og:site_name" content="Upwind | Cloud & AI Security for the Realtime Era" /> 29 <meta property="article:modified_time" content="2026-09-23T15:49:36+00:00" /> 30 <meta property="og:image" content="https://www.upwind.io/wp-content/uploads/2026/05/Upwind-Cloud-AI-Security-for-the-Realtime-Era.png" /> 31 <meta property="og:image:width" content="1920" /> 32 <meta property="og:image:height" content="1080" /> 33 <meta property="og:image:type" content="image/png" /> 34 <meta name="twitter:card" content="summary_large_image" /> 35
35<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.upwind.io\/","url":"https:\/\/www.upwind.io\/","name":"Upwind Security: Cloud & AI Security for the Realtime Era","isPartOf":{"@id":"https:\/\/www.upwind.io\/#website"},"about":{"@id":"https:\/\/www.upwind.io\/#organization"},"datePublished":"2026-06-29T19:46:27+00:00","dateModified":"2026-09-23T15:49:36+00:00","description":"Combine the power of cloud security posture with runtime context and realtime protectionâ enabling your security team to prioritize accurately and respond fast to your most critical risks.","breadcrumb":{"@id":"https:\/\/www.upwind.io\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.upwind.io\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.upwind.io\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/www.upwind.io\/#website","url":"https:\/\/www.upwind.io\/","name":"Upwind","description":"","publisher":{"@id":"https:\/\/www.upwind.io\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.upwind.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.upwind.io\/#organization","name":"Upwind | Cloud Security Happens at Runtime","url":"https:\/\/www.upwind.io\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.upwind.io\/#\/schema\/logo\/image\/","url":"https:\/\/www.upwind.io\/wp-content\/uploads\/2024\/11\/Frame-1.png","contentUrl":"https:\/\/www.upwind.io\/wp-content\/uploads\/2024\/11\/Frame-1.png","width":696,"height":696,"caption":"Upwind | Cloud Security Happens at Runtime"},"image":{"@id":"https:\/\/www.upwind.io\/#\/schema\/logo\/image\/"}}]}</script>
35 36 <!-- / Yoast SEO plugin. --> 37 38 39<link rel='dns-prefetch' href='//js-na2.hs-scripts.com' /> 40<link rel='dns-prefetch' href='//platform-api.sharethis.com' /> 41<link rel='dns-prefetch' href='//use.typekit.net' /> 42<link rel='dns-prefetch' href='//www.googletagmanager.com' /> 43<link rel="alternate" type="application/rss+xml" title="Upwind | Cloud & AI Security for the Realtime Era » Feed" href="https://www.upwind.io/feed" /> 44<link rel="alternate" type="application/rss+xml" title="Upwind | Cloud & AI Security for the Realtime Era » Comments Feed" href="https://www.upwind.io/comments/feed" /> 45<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.upwind.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.upwind.io%2F" /> 46<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.upwind.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.upwind.io%2F&format=xml" /> 47<link rel="stylesheet" type="text/css" href="https://use.typekit.net/aud8qux.css"><style id="wp-img-auto-sizes-contain-inline-css"> 48img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 49/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 50</style> 51<link rel='stylesheet' id='gform_basic-css' href='https://www.upwind.io/wp-content/plugins/gravityforms/assets/css/dist/basic.min.css?ver=2.9.25' media='all' /> 52<link rel='stylesheet' id='gform_theme_components-css' href='https://www.upwind.io/wp-content/plugins/gravityforms/assets/css/dist/theme-components.min.css?ver=2.9.25' media='all' /> 53<link rel='stylesheet' id='gform_theme-css' href='https://www.upwind.io/wp-content/plugins/gravityforms/assets/css/dist/theme.min.css?ver=2.9.25' media='all' /> 54<style id="wp-emoji-styles-inline-css"> 55 56 img.wp-smiley, img.emoji { 57 display: inline !important; 58 border: none !important; 59 box-shadow: none !important; 60 height: 1em !important; 61 width: 1em !important; 62 margin: 0 0.07em !important; 63 vertical-align: -0.1em !important; 64 background: none !important; 65 padding: 0 !important; 66 } 67/*# sourceURL=wp-emoji-styles-inline-css */ 68</style> 69<style id="upwind-tip-style-inline-css"> 70.wp-block-upwind-tip { 71 margin: 44px 0; 72} 73.uw-tip { 74 display: flex; 75 position: relative; 76 align-items: flex-start; 77 flex-direction: column; 78 padding: 35px; 79 border: 1px solid #D8DFE9; 80 border-radius: 20px; 81} 82.uw-tip-header { 83 display: flex; 84 width: 100%; 85 column-gap: 20px; 86 align-items: center; 87} 88.uw-tip-header svg { 89 display: block; 90 height: auto; 91 width: 32px; 92} 93.uw-tip-header h3 { 94 margin: 0 !important; 95 color: #75808E !important; 96 font-family: 'Upwind Sans' !important; 97 font-size: 20px !important; 98 font-weight: 400 !important; 99 line-height: 1.5 !important; 100} 101.uw-tip .uw-tip-content { 102 width: 100%; 103 margin: 0 !important; 104 margin-top: 30px !important; 105 color: #141217 !important; 106 font-family: 'Upwind Sans' !important; 107 font-size: 16px !important; 108 font-weight: 400 !important; 109 line-height: 1.5 !important; 110} 111.uw-tip .uw-tip-content::last-of-type { 112 margin-bottom: 0 !important; 113} 114.uw-tip .upwind-button { 115 display: inline-block; 116 position: relative; 117 margin-top: 30px; 118 padding: 7px 24px; 119 background: linear-gradient(#fff, #fff) padding-box, linear-gradient(90deg, #F2583C 0%, #9214C4 52.79%, #1E71ED 98.47%) border-box; 120 border: 1px solid transparent; 121 border-radius: 4px; 122 color: #18202D !important; 123 font-size: 16px !important; 124 font-family: "Upwind Sans" !important; 125 font-weight: 400 !important; 126 line-height: 1.4 !important; 127 letter-spacing: -0.16px !important; 128 text-align: center; 129 text-decoration: none !important; 130 cursor: pointer; 131 overflow: hidden; 132 transition: background 0.2s ease; 133} 134.uw-tip .upwind-button:hover { 135 background: linear-gradient(#FCFAFF, #FCFAFF) padding-box, linear-gradient(112deg, #F2583C, #9214C4, #1E71ED) border-box; 136 color: transparent; 137} 138.uw-tip .upwind-button::after { 139 content: attr(data-text); 140 position: absolute; 141 inset: 0; 142 padding-top: 7px; 143 padding-bottom: 7px; 144 padding-right: 0; 145 font: inherit; 146 line-height: inherit; 147 letter-spacing: inherit; 148 text-align: inherit; 149 pointer-events: none; 150 background: var(--brand-gradient); 151 -webkit-background-clip: text; 152 background-clip: text; 153 -webkit-text-fill-color: transparent; 154 opacity: 0; 155 transition: opacity 0.2s ease; 156} 157.uw-tip .upwind-button:hover::after { 158 opacity: 1; 159} 160 161@media (max-width: 768px) { 162 .uw-tip .uw-tip-content { 163 max-width: 100%; 164 } 165} 166 167/*# sourceURL=https://www.upwind.io/wp-content/plugins/upwind/glossary/blocks/tip/tip.css */ 168</style> 169<style id="upwind-call-to-action-style-inline-css"> 170.wp-block-upwind-call-to-action { 171 margin: 60px 0; 172} 173.uw-call-to-action { 174 display: flex; 175 position: relative; 176 align-items: flex-start; 177 column-gap: 48px; 178 flex-direction: row; 179 justify-content: space-between; 180 margin-bottom: 50px; 181 padding: 35px 30px; 182 background-color: #ffffff; 183 border: 1px solid #e2e2e2; 184 border-radius: 10px; 185} 186.uw-call-to-action-content { 187 display: flex; 188 max-width: 45%; 189 width: 100%; 190 align-items: flex-start; 191 flex-direction: column; 192} 193.uw-call-to-action-header { 194 display: flex; 195 width: 100%; 196 column-gap: 0.75rem; 197 align-items: center; 198} 199.uw-call-to-action-header div { 200 line-height: 0; 201} 202.uw-call-to-action-header svg { 203 width: 36px; 204 height: auto; 205} 206.uw-call-to-action-label { 207 color: #75808E !important; 208 font-family: 'Upwind Sans' !important; 209 font-size: 20px !important; 210 font-weight: 400 !important; 211 line-height: 1.4 !important; 212} 213.uw-call-to-action h3 { 214 margin: 0 !important; 215 margin-top: 10px !important; 216 font-family: 'Upwind Sans' !important; 217 color: #000 !important; 218 font-size: 36px !important; 219 font-weight: 400 !important; 220 line-height: 1.3 !important; 221} 222.uw-call-to-action-content p { 223 margin-bottom: 0 !important; 224 margin-top: 25px !important;
225 color: #141217 !important; 226 font-family: 'Upwind Sans' !important; 227 font-size: 18px; 228 font-weight: 400; 229 line-height: 1.6; 230} 231 232.uw-call-to-action .upwind-button { 233 display: block; 234 position: relative; 235 margin-top: 25px !important; 236 padding: 0 0; 237 background-color: #ffffff; 238 border: none; 239 color: #18202D !important; 240 font-family: 'Upwind Sans' !important; 241 font-size: 16px !important; 242 font-weight: 400 !important; 243 line-height: 1.6 !important; 244 text-decoration: none !important; 245 transition: 300ms; 246} 247.uw-call-to-action .upwind-button:hover { 248 background-color: #f2f7fc !important; 249} 250.uw-call-to-action .upwind-button::after { 251 content: ''; 252 display: block; 253 position: absolute; 254 height: 1px; 255 width: 100%; 256 bottom: 0; 257 left: 0; 258 background: linear-gradient(90deg, #F2583C 0%, #9214C4 52.79%, #1E71ED 98.47%); 259} 260 261.uw-call-to-action-image { 262 display: block; 263 max-width: 45%; 264 width: 100%; 265 aspect-ratio: 1 / 1; 266} 267.uw-call-to-action-image img { 268 display: block; 269 height: 100%; 270 width: 100%; 271 object-fit: cover; 272 overflow: hidden; 273 border: 1px solid #D8DFE9; 274 border-radius: 12px; 275} 276.uw-call-to-action.w-border { 277 background: rgb(242, 88, 60); 278 background: linear-gradient( 279 104deg, 280 rgba(242, 88, 60, 1) 0%, 281 rgba(146, 20, 196, 1) 54%, 282 rgba(30, 113, 237, 1) 100% 283 ); 284 border: none; 285} 286.uw-call-to-action.w-border::before { 287 content: ""; 288 display: block; 289 position: absolute; 290 background-color: #ffffff; 291 height: calc(100% - 2px); 292 width: calc(100% - 2px); 293 left: 1px; 294 top: 1px; 295 z-index: 1; 296 border-radius: 10px; 297} 298.uw-call-to-action.w-border > div { 299 position: relative; 300 z-index: 2; 301} 302 303@media (max-width: 768px) { 304 .uw-call-to-action { 305 flex-direction: column; 306 } 307 .uw-call-to-action-image { 308 order: -1; 309 max-width: 100%; 310 } 311 .uw-call-to-action-content { 312 max-width: 100%; 313 } 314} 315 316/*# sourceURL=https://www.upwind.io/wp-content/plugins/upwind/glossary/blocks/call-to-action/call-to-action.css */ 317</style> 318<style id="upwind-banner-block-callout-style-inline-css"> 319.uw-banner-callout.gradient { 320 background: rgb(242, 88, 60); 321 background: linear-gradient(104deg, rgba(242, 88, 60, 1) 0%, rgba(146, 20, 196, 1) 54%, rgba(30, 113, 237, 1) 100%); 322 border: none; 323 position: relative; 324} 325.uw-banner-callout.gray-bg { 326 border-radius: 10px; 327 border: 1px solid var(--Gray-04, #D8DFE9); 328 background: var(--Gray-05, #F2F7FC); 329} 330.uw-banner-callout { 331 display: flex; 332 /* flex-direction: column; */ 333 flex-direction: row; 334 /* row-gap: 1rem; */ 335 gap: 25px; 336 padding: 64px 30px 42px 30px; 337 background-color: #ffffff; 338 border: 1px solid #e2e2e2; 339 border-radius: 10px; 340 position: relative; 341 margin-bottom: 50px; 342 margin-left: -100px; 343 margin-right: -100px; 344 345} 346.uw-banner-callout.gradient::before { 347 content: ""; 348 display: block; 349 position: absolute; 350 background-color: #ffffff; 351 height: calc(100% - 2px); 352 width: calc(100% - 2px); 353 left: 1px; 354 top: 1px; 355 z-index: 1; 356 border-radius: 10px; 357} 358.uw-banner-callout .uw-banner-callout-content { 359 position: relative; 360 z-index: 1; 361 max-width: 600px; 362 margin-left: auto; 363 margin-right: auto; 364} 365.upwind-single .single-content .uw-banner-callout .uw-banner-callout-content h3, 366.upwind-single.edit-post-visual-editor .uw-banner-callout .uw-banner-callout-content h3 367{ 368 font-family: "Aeonik Pro"; 369 font-size: 30px; 370 font-style: normal; 371 font-weight: 400; 372 line-height: 120%; /* 36px */ 373 letter-spacing: -0.3px; 374 margin-top: 0; 375 margin-bottom: 10px; 376} 377.upwind-single .single-content .uw-banner-callout.gradient .uw-banner-callout-content h3, 378.upwind-single.edit-post-visual-editor .uw-banner-callout.gradient .uw-banner-callout-content h3 379{ 380 background: var(--Gradients-Gradient-1, linear-gradient(94deg, #F2583C -1.2%, #9214C4 52.79%, #1E71ED 98.47%)); 381 background-clip: text; 382 -webkit-background-clip: text; 383 -webkit-text-fill-color: transparent; 384} 385.upwind-single .single-content .uw-banner-callout.gray-bg .uw-banner-callout-content h3, 386.upwind-single.edit-post-visual-editor .uw-banner-callout.gray-bg .uw-banner-callout-content h3 387{ 388color: var(--Gray-01, #18202D); 389} 390@media (max-width: 1400px) { 391 .uw-banner-callout { 392 margin-left:0; 393 margin-right: 0; 394 padding: 30px 30px; 395 } 396} 397/*# sourceURL=https://www.upwind.io/wp-content/plugins/upwind/glossary/blocks/banner-block-callout/banner-block-callout.css */ 398</style> 399<style id="upwind-code-style-inline-css"> 400.uw-code-block{background:#18202d;border-radius:8px;font-family:Upwind Sans,sans-serif;margin:44px 0;overflow:hidden;position:relative}.uw-code-block__copy-btn{align-items:center;background:transparent;border:1px solid hsla(0,0%,100%,.6);border-radius:4px;box-shadow:none;color:#fff;cursor:pointer;display:flex;height:24px;justify-content:center;padding:0;position:absolute;right:15px;top:15px;transition:border-color .15s ease;width:24px;z-index:1}.uw-code-block__copy-btn:hover{border-color:#fff}.uw-code-block__check-icon,.uw-code-block__copy-icon{align-items:center;display:flex;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.uw-code-block__check-icon svg,.uw-code-block__copy-icon svg{display:block;height:14px;width:14px}.uw-code-block__copy-icon{opacity:1;transition:opacity .3s ease}.uw-code-block__check-icon{opacity:0;transition:opacity .3s ease}@keyframes uw-code-spin-out{0%{opacity:1;transform:translate(-50%,-50%) rotate(0deg)}to{opacity:0;transform:translate(-50%,-50%) rotate(1turn)}}.uw-code-block.is-copying .uw-code-block__copy-icon{animation:uw-code
400-spin-out .4s ease-in forwards}.uw-code-block.is-copied .uw-code-block__copy-icon{opacity:0}.uw-code-block.is-copied .uw-code-block__check-icon{opacity:1}.uw-code-block pre{background:none;margin:0;overflow-x:auto;padding:30px}.uw-code-block pre code{background:none;font-family:DM Mono,monospace;font-size:16px;letter-spacing:0;line-height:1.5;white-space:pre}.uw-code-block:not(.is-style-plain) pre code{color:#d4d4d4}.uw-code-block .token.cdata,.uw-code-block .token.comment,.uw-code-block .token.doctype,.uw-code-block .token.prolog{color:#6a9955;font-style:italic}.uw-code-block .token.punctuation{color:#d4d4d4}.uw-code-block .token.boolean,.uw-code-block .token.constant,.uw-code-block .token.deleted,.uw-code-block .token.number,.uw-code-block .token.property,.uw-code-block .token.symbol,.uw-code-block .token.tag{color:#b5cea8}.uw-code-block .token.attr-name,.uw-code-block .token.builtin,.uw-code-block .token.char,.uw-code-block .token.inserted,.uw-code-block .token.selector,.uw-code-block .token.string{color:#ce9178}.uw-code-block .token.entity,.uw-code-block .token.operator,.uw-code-block .token.url{color:#d4d4d4}.uw-code-block .token.atrule,.uw-code-block .token.attr-value,.uw-code-block .token.keyword{color:#569cd6}.uw-code-block .token.class-name,.uw-code-block .token.function{color:#dcdcaa}.uw-code-block .token.important,.uw-code-block .token.regex,.uw-code-block .token.variable{color:#d16969}.uw-code-block .token.bold,.uw-code-block .token.important{font-weight:700}.uw-code-block .token.italic{font-style:italic}.uw-code-block.is-style-plain pre code{color:#fff}.uw-code-block.is-style-plain .token{color:inherit;font-style:normal;font-weight:400} 401 402/*# sourceURL=https://www.upwind.io/wp-content/plugins/upwind/build/code/style-index.css */ 403</style> 404<style id="upwind-prompt-style-inline-css"> 405.uw-prompt-block{border:1px solid #d8dfe9;border-radius:8px;font-family:Upwind Sans,sans-serif;margin:44px 0;overflow:hidden;position:relative}.uw-prompt-block__header{align-items:center;border-bottom:1px solid #d8dfe9;display:flex;gap:16px;justify-content:space-between;padding:8px 16px}.uw-prompt-block__headline{color:#75808e;flex:1;font-family:Upwind Sans,sans-serif;font-size:14px;font-weight:400;line-height:1.5}.uw-prompt-block__copy-btn{align-items:center;background:transparent;border:1px solid #75808e;border-radius:4px;box-shadow:none;color:#75808e;cursor:pointer;display:flex;flex-shrink:0;height:24px;justify-content:center;padding:0;position:relative;transition:color .15s ease,border-color .15s ease;width:24px}.uw-prompt-block__copy-btn:after{background:#18202d;border-radius:4px;color:#fff;content:"Copy";font-family:Upwind Sans,sans-serif;font-size:11px;font-weight:500;opacity:0;padding:3px 8px;pointer-events:none;position:absolute;right:calc(100% + 6px);top:50%;transform:translateY(-50%);transition:opacity .15s ease;white-space:nowrap}.uw-prompt-block__copy-btn:hover{border-color:#18202d;color:#18202d}.uw-prompt-block__copy-btn:hover:after{opacity:1}.uw-prompt-block__copy-placeholder{align-items:center;background:transparent;border:1px solid #75808e;border-radius:4px;color:#75808e;display:flex;flex-shrink:0;height:24px;justify-content:center;opacity:.4;pointer-events:none;width:24px}.uw-prompt-block__check-icon,.uw-prompt-block__copy-icon{align-items:center;display:flex;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.uw-prompt-block__check-icon svg,.uw-prompt-block__copy-icon svg{display:block;height:14px;width:14px}.uw-prompt-block__copy-icon{opacity:1;transition:opacity .3s ease}.uw-prompt-block__check-icon{opacity:0;transition:opacity .3s ease}.uw-prompt-block__body{margin-top:8px;padding:16px}.uw-prompt-block__content{color:#18202d;font-family:DM Mono,monospace;font-size:14px;line-height:1.5;margin:0;white-space:pre-wrap;word-break:break-word}@keyframes uw-prompt-spin-out{0%{opacity:1;transform:translate(-50%,-50%) rotate(0deg)}to{opacity:0;transform:translate(-50%,-50%) rotate(1turn)}}.uw-prompt-block.is-copying .uw-prompt-block__copy-icon{animation:uw-prompt-spin-out .4s ease-in forwards}.uw-prompt-block.is-copied .uw-prompt-block__copy-icon{opacity:0}
405.uw-prompt-block.is-copied .uw-prompt-block__check-icon{opacity:1} 406 407/*# sourceURL=https://www.upwind.io/wp-content/plugins/upwind/build/prompt/style-index.css */ 408</style> 409<style id="upwind-testimonial-style-inline-css"> 410.uw-testimonial-block{background:linear-gradient(#fff,#fff) padding-box,linear-gradient(90deg,#f2583c,#9214c4 52.79%,#1e71ed 98.47%) border-box;border:1px solid transparent;border-radius:12px;box-sizing:border-box;font-family:Upwind Sans,sans-serif;margin:60px 0;padding:30px}.uw-testimonial-block__quote-icon{display:block;height:auto;line-height:0;width:17px}.uw-testimonial-block__quote-icon svg{display:block;height:auto;width:100%}.uw-testimonial-block__content{color:#18202d;font-family:Upwind Sans,sans-serif;font-size:18px;font-weight:400;line-height:1.3;margin:20px 0 0}.uw-testimonial-block__author{align-items:center;display:flex;margin-top:24px}.uw-testimonial-block__avatar{border-radius:100%;flex-shrink:0;height:53px;margin-right:8px;object-fit:cover;width:53px}.uw-testimonial-block__author-info{display:flex;flex-direction:column}.uw-testimonial-block__author-name{color:#18202d}.uw-testimonial-block__author-name,.uw-testimonial-block__author-title{display:block;font-family:Upwind Sans,sans-serif;font-size:14px;font-weight:500;line-height:1.4}.uw-testimonial-block__author-title{color:#75808e}.uw-testimonial-block.is-style-style-2{background:none;border:none;padding:0}.uw-testimonial-block.is-style-style-2 .uw-testimonial-block__quote-icon{width:21px}.uw-testimonial-block.is-style-style-2 .uw-testimonial-block__content{font-size:24px} 411 412/*# sourceURL=https://www.upwind.io/wp-content/plugins/upwind/build/testimonial/style-index.css */ 413</style> 414<style id="upwind-callout-style-inline-css"> 415.uw-callout-block{border:1px solid #d8dfe9;border-radius:20px;box-sizing:border-box;font-family:Upwind Sans,sans-serif;margin:60px 0;padding:35px}.uw-callout-block__image-wrap{line-height:0}.uw-callout-block__image{display:block;object-fit:contain}.uw-callout-block__content{color:#141217;font-family:Upwind Sans,sans-serif;font-size:18px;font-weight:400;line-height:1.5;margin:30px 0 0} 416 417/*# sourceURL=https://www.upwind.io/wp-content/plugins/upwind/build/callout/style-index.css */ 418</style> 419<link rel='stylesheet' id='ee-ff-css' href='https://www.upwind.io/wp-content/plugins/form-filtering-plugin/assets/app.css?ver=7.0.5' media='all' /> 420<link rel='stylesheet' id='upwind-chat-css-css' href='https://www.upwind.io/wp-content/plugins/upwind/chat/chat.css?ver=1.1.1' media='all' /> 421<link rel='stylesheet' id='podcast-css-css' href='https://www.upwind.io/wp-content/plugins/upwind/podcast/style.css?ver=1.0.0' media='all' /> 422<link rel='stylesheet' id='upwind-css-css' href='https://www.upwind.io/wp-content/plugins/upwind/upwind.css?ver=1.1.10' media='all' /> 423<link rel='stylesheet' id='upwind-block-styles-css' href='https://www.upwind.io/wp-content/plugins/upwind/block-styles.css?ver=1.0.0' media='all' /> 424<link rel='stylesheet' id='ssa-upcoming-appointments-card-style-css' href='https://www.upwind.io/wp-content/plugins/simply-schedule-appointments/assets/css/upcoming-appointments.css?ver=2.6.9.21' media='all' /> 425<link rel='stylesheet' id='ssa-styles-css' href='https://www.upwind.io/wp-content/plugins/simply-schedule-appointments/assets/css/ssa-styles.css?ver=2.6.9.21' media='all' /> 426<link rel='stylesheet' id='bricks-frontend-css' href='https://www.upwind.io/wp-content/themes/bricks/assets/css/frontend-layer.min.css?ver=1768493258' media='all' /> 427<style id="bricks-frontend-inline-css"> 428@font-face{font-family:"Upwind Sans";font-weight:400;font-display:swap;src:url(https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Regular.woff2) format("woff2"),url(https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Regular.woff) format("woff"),url(https://www.upwind.io/wp-content/uploads/2026/05/Upwind-Sans-Regular.ttf) format("truetype");}@font-face{font-family:"Upwind Sans";font-weight:500;font-display:swap;src:url(https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Medium.woff2) format("woff2"),url(https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Medium.woff) format("woff"),url(https://www.upwind.io/wp-content/uploads/2026/05/Upwind-Sans-Medium.ttf) format("truetype");}@font-face{font-family:"Upwind Sans";font-weight:700;font-display:swap;src:url(https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Bold.woff2) format("woff2"),url(https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Bold.woff) format("woff"),url(https://www.upwind.io/wp-content/uploads/2026/05/Upwind-Sans-Bold.ttf) format("truetype");} 429@font-face{font-family:"Aeonik Pro";font-weight:100;font-display:swap;src:url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Thin.woff2) format("woff2"),url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Thin.woff) format("woff");}@font-face{font-family:"Aeonik Pro";font-weight:300;font-display:swap;src:url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Light.woff2) format("woff2"),url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Light.woff) format("woff");}@font-face{font-family:"Aeonik Pro";font-weight:400;font-display:swap;src:url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Regular.woff2) format("woff2"),url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Regular.woff) format("woff");}@font-face{font-family:"Aeonik Pro";font-weight:500;font-display:swap;src:url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Medium.woff2) format("woff2"),url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Medium.woff) format("woff");}@font-face{font-family:"Aeonik Pro";font-weight:600;font-display:swap;src:url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-SemiBold.woff2) format("woff2"),url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-SemiBold.woff) format("woff");}@font-face{font-family:"Aeonik Pro";font-weight:700;font-display:swap;src:url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Bold.woff2) format("woff2"),url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Bold.woff) format("woff");}@font-face{font-family:"Aeonik Pro";font-weight:900;font-display:swap;src:url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Black.woff2) format("woff2"),url(https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Black.woff) format("woff");} 430 431/*# sourceURL=bricks-frontend-inline-css */ 432</style> 433<link rel='stylesheet' id='elementor-icons-css' href='https://www.upwind.io/wp-content/plugins/elementor/assets/lib/eicons/css/elementor-icons.min.css?ver=5.49.0' media='all' /> 434<link rel='stylesheet' id='elementor-frontend-css' href='https://www.upwind.io/wp-content/plugins/elementor/assets/css/frontend.min.css?ver=4.1.1' media='all' /> 435<style id="elementor-frontend-inline-css"> 436.elementor-kit-4163{--e-global-color-primary:#6EC1E4;--e-global-color-secondary:#54595F;--e-global-color-text:#7A7A7A;--e-global-color-accent:#61CE70;--e-global-color-003bef6:#141217;--e-global-color-8f85e63:#455972;--e-global-color-e7a5493:#18202D;--e-global-color-080b723:#75808E;--e-global-color-39b2229:#3C3A3E;--e-global-color-6b4ffb0:#D8DFE9;--e-global-color-9e97693:#646265;--e-global-color-1de2da4:#F8FAFC;--e-global-color-a76f3ba:#F2583C;--e-global-color-2d28909:#9A31C4;--e-global-color-094c013:#FCFCFC;--e-global-color-90a9ef7:#FFFFFF;--e-global-color-0f7f100:#2C72DD;--e-global-color-fb269cd:#BD94F5;--e-global-color-904fe88:#455972;--e-global-color-907c69e:#75808E;--e-global-color-772b70a:#D8DFE9;--e-global-color-5eb3a73:#F8FAFC;--e-global-color-bb2b8d6:#FCFCFC;--e-global-color-20ef18b:#18202D;--e-global-color-e9f08b9:#FFFFFF;--e-global-color-7d7dc69:#2C72DD;--e-global-color-a5b507b:#BD94F5;--e-global-color-e5f1f6e:#FFF2F0;--e-global-color-18a46eb:#FFBDB0;--e-global-color-7b7ed7e:#FFE3DE;--e-global-color-95ce04a:#FAF8FD;--e-global-color-462b98e:#EEE4FF;--e-global-color-3d0c43e:#ACD0FC;--e-global-color-4d83e82:#F2F7FF;--e-global-color-778fba2:#DBE9FF;--e-global-typography-primary-font-family:"aktiv-grotesk";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Aeonik Pro";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"aktiv-grotesk";
436--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"aktiv-grotesk";--e-global-typography-accent-font-weight:500;--e-global-typography-f3fd765-font-family:"Aeonik Pro";--e-global-typography-f3fd765-font-size:56px;--e-global-typography-f3fd765-font-weight:400;--e-global-typography-f3fd765-line-height:1.2em;--e-global-typography-f3fd765-letter-spacing:0px;--e-global-typography-9af6033-font-family:"Aeonik Pro";--e-global-typography-9af6033-font-size:36px;--e-global-typography-9af6033-font-weight:400;--e-global-typography-9af6033-line-height:1.2em;--e-global-typography-9af6033-letter-spacing:0px;--e-global-typography-9268759-font-family:"Aeonik Pro";--e-global-typography-9268759-font-size:30px;--e-global-typography-9268759-font-weight:400;--e-global-typography-9268759-line-height:1.16em;--e-global-typography-9268759-letter-spacing:0px;--e-global-typography-1956b22-font-family:"Aeonik Pro";--e-global-typography-1956b22-font-size:24px;--e-global-typography-1956b22-font-weight:400;--e-global-typography-1956b22-line-height:1.36em;--e-global-typography-1956b22-letter-spacing:0px;--e-global-typography-5d1b49d-font-family:"Aeonik Pro";--e-global-typography-5d1b49d-font-size:18px;--e-global-typography-5d1b49d-font-weight:400;--e-global-typography-5d1b49d-line-height:1.3;--e-global-typography-4ff37ec-font-family:"aktiv-grotesk";--e-global-typography-4ff37ec-font-size:16px;--e-global-typography-4ff37ec-font-weight:600;--e-global-typography-4ff37ec-line-height:1.2em;--e-global-typography-4ff37ec-letter-spacing:-0.16px;--e-global-typography-ab8931e-font-family:"aktiv-grotesk";--e-global-typography-ab8931e-font-size:16px;--e-global-typography-ab8931e-font-weight:400;--e-global-typography-ab8931e-line-height:1.6em;--e-global-typography-ab8931e-letter-spacing:-0.16px;--e-global-typography-b5b129d-font-family:"aktiv-grotesk";--e-global-typography-b5b129d-font-size:16px;--e-global-typography-b5b129d-font-weight:500;--e-global-typography-b5b129d-line-height:18px;--e-global-typography-b5b129d-letter-spacing:-0.16px;--e-global-typography-3e997dd-font-family:"aktiv-grotesk";--e-global-typography-3e997dd-font-size:16px;--e-global-typography-3e997dd-font-weight:500;--e-global-typography-3e997dd-text-decoration:underline;--e-global-typography-3e997dd-line-height:18px;--e-global-typography-3e997dd-letter-spacing:-0.16px;--e-global-typography-bc10cec-font-family:"aktiv-grotesk";--e-global-typography-bc10cec-font-size:15px;--e-global-typography-bc10cec-font-weight:600;--e-global-typography-bc10cec-line-height:1.4em;--e-global-typography-bc10cec-letter-spacing:-0.15px;--e-global-typography-2222050-font-family:"aktiv-grotesk";--e-global-typography-2222050-font-size:15px;--e-global-typography-2222050-font-weight:400;--e-global-typography-2222050-line-height:20px;--e-global-typography-2222050-letter-spacing:-0.15px;--e-global-typography-6f8eb1c-font-family:"Georgia";--e-global-typography-6f8eb1c-font-size:22px;--e-global-typography-6f8eb1c-font-weight:400;--e-global-typography-6f8eb1c-line-height:40px;--e-global-typography-6f8eb1c-letter-spacing:-0.03em;--e-global-typography-5629eba-font-family:"aktiv-grotesk";--e-global-typography-5629eba-font-size:15px;--e-global-typography-5629eba-font-weight:500;--e-global-typography-5629eba-line-height:1.4em;--e-global-typography-5629eba-letter-spacing:-0.15px;--e-global-typography-7b0601f-font-family:"aktiv-grotesk";--e-global-typography-7b0601f-font-size:15px;--e-global-typography-7b0601f-font-weight:400;--e-global-typography-7b0601f-line-height:17px;--e-global-typography-7b0601f-letter-spacing:-0.15px;--e-global-typography-daa32e9-font-family:"Aeonik Pro";--e-global-typography-daa32e9-font-size:20px;--e-global-typography-daa32e9-font-weight:500;--e-global-typography-daa32e9-line-height:1.75em;--e-global-typography-daa32e9-letter-spacing:0px;--e-global-typography-3dcea6b-font-family:"Aeonik Pro";--e-global-typography-3dcea6b-font-size:18px;--e-global-typography-3dcea6b-font-weight:400;--e-global-typography-3dcea6b-line-height:2.5em;--e-global-typography-3dcea6b-letter-spacing:0px;--e-global-typography-607149c-font-family:"DM Mono";--e-global-typography-607149c-font-size:20px;--e-global-typography-607149c-line-height:1.4;--e-global-typography-5cb83b7-font-family:"Aeonik Pro";--e-global-typography-5cb83b7-font-size:24px;--e-global-typography-5cb83b7-font-weight:400;--e-global-typography-5cb83b7-line-height:1.36em;--e-global-typography-5cb83b7-letter-spacing:0px;--e-global-typography-68ba739-font-family:"Aeonik Pro";--e-global-typography-68ba739-font-size:30px;
436--e-global-typography-68ba739-font-weight:400;--e-global-typography-68ba739-line-height:1.16em;--e-global-typography-e60c67d-font-family:"Aeonik Pro";--e-global-typography-e60c67d-font-size:56px;--e-global-typography-e60c67d-font-weight:400;--e-global-typography-e60c67d-line-height:1.2em;--e-global-typography-e60c67d-letter-spacing:0px;--e-global-typography-b462665-font-family:"Aeonik Pro";--e-global-typography-b462665-font-size:36px;--e-global-typography-b462665-font-weight:400;--e-global-typography-b462665-line-height:1.2em;--e-global-typography-b462665-letter-spacing:0px;--e-global-typography-ed63261-font-family:"Aeonik Pro";--e-global-typography-ed63261-font-size:30px;--e-global-typography-ed63261-font-weight:400;--e-global-typography-ed63261-line-height:1.16em;--e-global-typography-ed63261-letter-spacing:0px;--e-global-typography-f5ce0d8-font-family:"Aeonik Pro";--e-global-typography-f5ce0d8-font-size:24px;--e-global-typography-f5ce0d8-font-weight:400;--e-global-typography-f5ce0d8-line-height:1.36em;--e-global-typography-f5ce0d8-letter-spacing:0px;--e-global-typography-937f0e3-font-family:"Aeonik Pro";--e-global-typography-937f0e3-font-size:18px;--e-global-typography-937f0e3-font-weight:400;--e-global-typography-937f0e3-line-height:1.3;--e-global-typography-408e54c-font-family:"aktiv-grotesk";--e-global-typography-408e54c-font-size:16px;--e-global-typography-408e54c-font-weight:600;--e-global-typography-408e54c-line-height:1.2em;--e-global-typography-408e54c-letter-spacing:-0.16px;--e-global-typography-4ea2526-font-family:"aktiv-grotesk";--e-global-typography-4ea2526-font-size:16px;--e-global-typography-4ea2526-font-weight:400;--e-global-typography-4ea2526-line-height:1.6em;--e-global-typography-4ea2526-letter-spacing:-0.16px;--e-global-typography-6f67485-font-family:"aktiv-grotesk";--e-global-typography-6f67485-font-size:16px;--e-global-typography-6f67485-font-weight:500;--e-global-typography-6f67485-text-decoration:none;--e-global-typography-6f67485-line-height:18px;--e-global-typography-6f67485-letter-spacing:-0.16px;--e-global-typography-671a85a-font-family:"aktiv-grotesk";--e-global-typography-671a85a-font-size:16px;--e-global-typography-671a85a-font-weight:500;--e-global-typography-671a85a-text-decoration:underline;--e-global-typography-671a85a-line-height:18px;--e-global-typography-671a85a-letter-spacing:-0.16px;--e-global-typography-437ea6b-font-family:"aktiv-grotesk";--e-global-typography-437ea6b-font-size:15px;--e-global-typography-437ea6b-font-weight:600;--e-global-typography-437ea6b-line-height:1.4em;--e-global-typography-437ea6b-letter-spacing:-0.15px;--e-global-typography-4ce34b7-font-family:"aktiv-grotesk";--e-global-typography-4ce34b7-font-size:15px;--e-global-typography-4ce34b7-font-weight:400;--e-global-typography-4ce34b7-line-height:20px;--e-global-typography-4ce34b7-letter-spacing:-0.15px;--e-global-typography-35979da-font-family:"Georgia";--e-global-typography-35979da-font-size:22px;--e-global-typography-35979da-font-weight:400;--e-global-typography-35979da-line-height:40px;--e-global-typography-35979da-letter-spacing:-0.03em;--e-global-typography-a2a0ca7-font-family:"aktiv-grotesk";--e-global-typography-a2a0ca7-font-size:15px;--e-global-typography-a2a0ca7-font-weight:500;--e-global-typography-a2a0ca7-line-height:1.4em;--e-global-typography-a2a0ca7-letter-spacing:-0.15px;--e-global-typography-806d58c-font-family:"aktiv-grotesk";--e-global-typography-806d58c-font-size:15px;--e-global-typography-806d58c-font-weight:400;--e-global-typography-806d58c-line-height:17px;--e-global-typography-806d58c-letter-spacing:-0.15px;--e-global-typography-16294a0-font-family:"DM Mono";--e-global-typography-16294a0-font-size:20px;--e-global-typography-16294a0-line-height:1.4;--e-global-typography-b07dd33-font-family:"Aeonik Pro";--e-global-typography-b07dd33-font-size:24px;--e-global-typography-b07dd33-font-weight:400;--e-global-typography-b07dd33-line-height:1.36em;--e-global-typography-b07dd33-letter-spacing:0px;--e-global-typography-29dcf0b-font-family:"Aeonik Pro";--e-global-typography-29dcf0b-font-size:30px;
436--e-global-typography-29dcf0b-font-weight:400;--e-global-typography-29dcf0b-line-height:1.16em;--e-global-typography-0bddda5-font-family:"Aeonik Pro";--e-global-typography-0bddda5-font-size:18px;--e-global-typography-0bddda5-font-weight:400;--e-global-typography-0bddda5-line-height:1.2em;--e-global-typography-0bddda5-letter-spacing:0px;--e-global-typography-fbfd539-font-family:"Aeonik Pro";--e-global-typography-fbfd539-font-size:44px;--e-global-typography-fbfd539-font-weight:400;--e-global-typography-fbfd539-line-height:1.2em;--e-global-typography-fbfd539-letter-spacing:0px;--e-global-typography-94fcec7-font-family:"aktiv-grotesk";--e-global-typography-94fcec7-font-size:24px;--e-global-typography-94fcec7-font-weight:400;--e-global-typography-94fcec7-line-height:1.4em;--e-global-typography-94fcec7-letter-spacing:0px;--e-global-typography-1aa147d-font-family:"Aeonik Pro";--e-global-typography-1aa147d-font-size:24px;--e-global-typography-1aa147d-font-weight:400;--e-global-typography-1aa147d-line-height:1.2em;--e-global-typography-1aa147d-letter-spacing:-0.24px;--e-global-typography-19790c0-font-family:"Aeonik Pro";--e-global-typography-19790c0-font-size:30px;--e-global-typography-19790c0-font-weight:400;--e-global-typography-19790c0-letter-spacing:0em;--e-global-typography-cf56130-font-family:"aktiv-grotesk";--e-global-typography-cf56130-font-size:18px;--e-global-typography-cf56130-font-weight:400;--e-global-typography-cf56130-line-height:28.8px;--e-global-typography-9852350-font-family:"Aeonik Pro";--e-global-typography-9852350-font-size:36px;--e-global-typography-9852350-font-weight:400;--e-global-typography-9852350-line-height:1.16em;--e-global-typography-9852350-letter-spacing:0px;--e-global-typography-d7227e7-font-family:"Aeonik Pro";--e-global-typography-d7227e7-font-size:36px;--e-global-typography-d7227e7-font-weight:400;--e-global-typography-d7227e7-line-height:1.16em;--e-global-typography-d7227e7-letter-spacing:0px;font-family:var( --e-global-typography-4ea2526-font-family ), Sans-serif;font-size:var( --e-global-typography-4ea2526-font-size );font-weight:var( --e-global-typography-4ea2526-font-weight );line-height:var( --e-global-typography-4ea2526-line-height );letter-spacing:var( --e-global-typography-4ea2526-letter-spacing );}.elementor-kit-4163 e-page-transition{background-color:#FFBC7D;}.elementor-kit-4163 a{color:var( --e-global-color-003bef6 );font-family:var( --e-global-typography-671a85a-font-family ), Sans-serif;font-size:var( --e-global-typography-671a85a-font-size );font-weight:var( --e-global-typography-671a85a-font-weight );text-decoration:var( --e-global-typography-671a85a-text-decoration );line-height:var( --e-global-typography-671a85a-line-height );letter-spacing:var( --e-global-typography-671a85a-letter-spacing );}.elementor-kit-4163 h1{color:var( --e-global-color-003bef6 );font-family:"Linear Sans", Sans-serif;font-size:72px;font-weight:400;line-height:1em;letter-spacing:-0.03em;}.elementor-kit-4163 h2{color:var( --e-global-color-003bef6 );font-family:var( --e-global-typography-ed63261-font-family ), Sans-serif;font-size:var( --e-global-typography-ed63261-font-size );font-weight:var( --e-global-typography-ed63261-font-weight );line-height:var( --e-global-typography-ed63261-line-height );letter-spacing:var( --e-global-typography-ed63261-letter-spacing );}.elementor-kit-4163 h3{color:var( --e-global-color-003bef6 );font-family:var( --e-global-typography-f5ce0d8-font-family ), Sans-serif;font-size:var( --e-global-typography-f5ce0d8-font-size );font-weight:var( --e-global-typography-f5ce0d8-font-weight );line-height:var( --e-global-typography-f5ce0d8-line-height );letter-spacing:var( --e-global-typography-f5ce0d8-letter-spacing );}.elementor-kit-4163 h4{color:var( --e-global-color-003bef6 );font-family:"Linear Sans", Sans-serif;font-size:20px;font-weight:400;line-height:23px;letter-spacing:-0.03em;}.elementor-kit-4163 h5{color:var( --e-global-color-003bef6 );font-family:var( --e-global-typography-408e54c-font-family ), Sans-serif;font-size:var( --e-global-typography-408e54c-font-size );
436font-weight:var( --e-global-typography-408e54c-font-weight );line-height:var( --e-global-typography-408e54c-line-height );letter-spacing:var( --e-global-typography-408e54c-letter-spacing );}.elementor-kit-4163 h6{color:var( --e-global-color-003bef6 );font-family:var( --e-global-typography-4ea2526-font-family ), Sans-serif;font-size:var( --e-global-typography-4ea2526-font-size );font-weight:var( --e-global-typography-4ea2526-font-weight );line-height:var( --e-global-typography-4ea2526-line-height );letter-spacing:var( --e-global-typography-4ea2526-letter-spacing );}.elementor-kit-4163 button,.elementor-kit-4163 input[type="button"],.elementor-kit-4163 input[type="submit"],.elementor-kit-4163 .elementor-button{font-family:"Upwind Sans", Sans-serif;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1320px;}.e-con{--container-max-width:1320px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1024px){.elementor-kit-4163{--e-global-typography-fbfd539-font-size:36px;--e-global-typography-fbfd539-line-height:1.2em;--e-global-typography-fbfd539-letter-spacing:-0.96px;--e-global-typography-94fcec7-font-size:24px;font-size:var( --e-global-typography-4ea2526-font-size );line-height:var( --e-global-typography-4ea2526-line-height );letter-spacing:var( --e-global-typography-4ea2526-letter-spacing );}.elementor-kit-4163 a{font-size:var( --e-global-typography-671a85a-font-size );line-height:var( --e-global-typography-671a85a-line-height );letter-spacing:var( --e-global-typography-671a85a-letter-spacing );}.elementor-kit-4163 h1{font-size:65px;line-height:72px;}.elementor-kit-4163 h2{font-size:var( --e-global-typography-ed63261-font-size );line-height:var( --e-global-typography-ed63261-line-height );letter-spacing:var( --e-global-typography-ed63261-letter-spacing );}.elementor-kit-4163 h3{font-size:var( --e-global-typography-f5ce0d8-font-size );line-height:var( --e-global-typography-f5ce0d8-line-height );letter-spacing:var( --e-global-typography-f5ce0d8-letter-spacing );}.elementor-kit-4163 h5{font-size:var( --e-global-typography-408e54c-font-size );line-height:var( --e-global-typography-408e54c-line-height );letter-spacing:var( --e-global-typography-408e54c-letter-spacing );}.elementor-kit-4163 h6{font-size:var( --e-global-typography-4ea2526-font-size );line-height:var( --e-global-typography-4ea2526-line-height );letter-spacing:var( --e-global-typography-4ea2526-letter-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-4163{--e-global-typography-e60c67d-font-size:36px;--e-global-typography-b462665-font-size:32px;--e-global-typography-ed63261-font-size:27px;--e-global-typography-f5ce0d8-font-size:21px;--e-global-typography-b07dd33-font-size:19px;--e-global-typography-29dcf0b-font-size:25px;--e-global-typography-fbfd539-font-size:21px;--e-global-typography-fbfd539-line-height:1.36em;--e-global-typography-fbfd539-letter-spacing:-0.16px;--e-global-typography-94fcec7-font-size:18px;--e-global-typography-1aa147d-font-size:21px;--e-global-typography-9852350-font-size:27px;--e-global-typography-d7227e7-font-size:27px;font-size:var( --e-global-typography-4ea2526-font-size );line-height:var( --e-global-typography-4ea2526-line-height );letter-spacing:var( --e-global-typography-4ea2526-letter-spacing );}.elementor-kit-4163 a{font-size:var( --e-global-typography-671a85a-font-size );line-height:var( --e-global-typography-671a85a-line-height );letter-spacing:var( --e-global-typography-671a85a-letter-spacing );}.elementor-kit-4163 h1{font-size:36px;line-height:1.1em;letter-spacing:-1.05px;}.elementor-kit-4163 h2{font-size:var( --e-global-typography-ed63261-font-size );line-height:var( --e-global-typography-ed63261-line-height );letter-spacing:var( --e-global-typography-ed63261-letter-spacing );}.elementor-kit-4163 h3{font-size:var( --e-global-typography-f5ce0d8-font-size );line-height:var( --e-global-typography-f5ce0d8-line-height );letter-spacing:var( --e-global-typography-f5ce0d8-letter-spacing );}.elementor-kit-4163 h4{font-size:16px;line-height:1.16em;letter-spacing:-0.16px;}.elementor-kit-4163 h5{font-size:var( --e-global-typography-408e54
436c-font-size );line-height:var( --e-global-typography-408e54c-line-height );letter-spacing:var( --e-global-typography-408e54c-letter-spacing );}.elementor-kit-4163 h6{font-size:var( --e-global-typography-4ea2526-font-size );line-height:var( --e-global-typography-4ea2526-line-height );letter-spacing:var( --e-global-typography-4ea2526-letter-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start Custom Fonts CSS */@font-face { 437 font-family: 'Aeonik Pro'; 438 font-style: normal; 439 font-weight: normal; 440 font-display: auto; 441 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Regular.woff2') format('woff2'), 442 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Regular.woff') format('woff'); 443} 444@font-face { 445 font-family: 'Aeonik Pro'; 446 font-style: italic; 447 font-weight: normal; 448 font-display: auto; 449 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-RegularItalic.woff2') format('woff2'), 450 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-RegularItalic.woff') format('woff'); 451} 452@font-face { 453 font-family: 'Aeonik Pro'; 454 font-style: normal; 455 font-weight: bold; 456 font-display: auto; 457 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Bold.woff2') format('woff2'), 458 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Bold.woff') format('woff'); 459} 460@font-face { 461 font-family: 'Aeonik Pro'; 462 font-style: italic; 463 font-weight: bold; 464 font-display: auto; 465 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-BoldItalic.woff2') format('woff2'), 466 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-BoldItalic.woff') format('woff'); 467} 468@font-face { 469 font-family: 'Aeonik Pro'; 470 font-style: normal; 471 font-weight: 100; 472 font-display: auto; 473 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Thin.woff2') format('woff2'), 474 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Thin.woff') format('woff'); 475} 476@font-face { 477 font-family: 'Aeonik Pro'; 478 font-style: italic; 479 font-weight: 100; 480 font-display: auto; 481 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-ThinItalic.woff2') format('woff2'), 482 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-ThinItalic.woff') format('woff'); 483} 484@font-face { 485 font-family: 'Aeonik Pro'; 486 font-style: normal; 487 font-weight: 300; 488 font-display: auto; 489 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Light.woff2') format('woff2'), 490 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Light.woff') format('woff'); 491} 492@font-face { 493 font-family: 'Aeonik Pro'; 494 font-style: italic; 495 font-weight: 300; 496 font-display: auto; 497 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-LightItalic.woff2') format('woff2'), 498 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-LightItalic.woff') format('woff'); 499} 500@font-face { 501 font-family: 'Aeonik Pro'; 502 font-style: normal; 503 font-weight: 500; 504 font-display: auto; 505 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Medium.woff2') format('woff2'), 506 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Medium.woff') format('woff'); 507} 508@font-face { 509 font-family: 'Aeonik Pro'; 510 font-style: italic; 511 font-weight: 500; 512 font-display: auto; 513 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-MediumItalic.woff2') format('woff2'), 514 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-MediumItalic.woff') format('woff'); 515} 516@font-face { 517 font-family: 'Aeonik Pro'; 518 font-style: normal; 519 font-weight: 600; 520 font-display: auto; 521 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-SemiBold.woff2') format('woff2'), 522 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-SemiBold.woff') format('woff'); 523} 524@font-face { 525 font-family: 'Aeonik Pro'; 526 font-style: italic; 527 font-weight: 600; 528 font-display: auto; 529 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-SemiBoldItalic.woff2') format('woff2'), 530 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-SemiBoldItalic.woff') format('woff'); 531} 532@font-face { 533 font-family: 'Aeonik Pro'; 534 font-style: normal; 535 font-weight: 900; 536 font-display: auto; 537 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Black.woff2') format('woff2'), 538 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-Black.woff') format('woff'); 539} 540@font-face { 541 font-family: 'Aeonik Pro'; 542 font-style: italic; 543 font-weight: 900; 544 font-display: auto; 545 src: url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-BlackItalic.woff2') format('woff2'), 546 url('https://www.upwind.io/wp-content/uploads/2024/12/AeonikPro-BlackItalic.woff') format('woff'); 547} 548/* End Custom Fonts CSS */ 549/* Start Custom Fonts CSS */@font-face { 550 font-family: 'Linear Sans'; 551 font-style: normal; 552 font-weight: 300; 553 font-display: auto; 554 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-light-webfont.woff2') format('woff2'), 555 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-light-webfont.woff') format('woff'); 556} 557@font-face { 558 font-family: 'Linear Sans'; 559 font-style: italic; 560 font-weight: 300; 561 font-display: auto; 562 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-lightitalic-webfont.woff2') format('woff2'), 563 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-lightitalic-webfont.woff') format('woff'); 564} 565@font-face { 566 font-family: 'Linear Sans'; 567 font-style: normal; 568 font-weight: normal; 569 font-display: auto; 570 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-regular-webfont.woff2') format('woff2'), 571 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-regular-webfont.woff') format('woff'); 572} 573@font-face { 574 font-family: 'Linear Sans'; 575 font-style: italic; 576 font-weight: normal; 577 font-display: auto; 578 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-italic-webfont.woff2') format('woff2'), 579 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-italic-webfont.woff') format('woff'); 580} 581@font-face { 582 font-family: 'Linear Sans'; 583 font-style: normal; 584 font-weight: 600; 585 font-display: auto; 586 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-semibold-webfont.woff2') format('woff2'), 587 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-semibold-webfont.woff') format('woff'); 588} 589@font-face { 590 font-family: 'Linear Sans'; 591 font-style: italic; 592 font-weight: 600; 593 font-display: auto; 594 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-semibolditalic-webfont.woff2') format('woff2'), 595 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-semibolditalic-webfont.woff') format('woff'); 596} 597@font-face { 598 font-family: 'Linear Sans'; 599 font-style: normal; 600 font-weight: 700; 601 font-display: auto; 602 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-bold-webfont.woff2') format('woff2'), 603 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-bold-webfont.woff') format('woff'); 604} 605@font-face { 606 font-family: 'Linear Sans'; 607 font-style: italic; 608 font-weight: 700; 609 font-display: auto; 610 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-bolditalic-webfont.woff2') format('woff2'), 611 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-bolditalic-webfont.woff') format('woff'); 612} 613@font-face { 614 font-family: 'Linear Sans'; 615 font-style: normal; 616 font-weight: 800; 617 font-display: auto; 618 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-black-webfont.woff2') format('woff2'), 619 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-black-webfont.woff') format('woff'); 620} 621@font-face { 622 font-family: 'Linear Sans'; 623 font-style: italic; 624 font-weight: 800; 625 font-display: auto; 626 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-blackitalic-webfont.woff2') format('woff2'), 627 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-blackitalic-webfont.woff') format('woff'); 628} 629@font-face { 630 font-family: 'Linear Sans'; 631 font-style: normal; 632 font-weight: 900; 633 font-display: auto; 634 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-heavy-webfont.woff2') format('woff2'), 635 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-heavy-webfont.woff') format('woff'); 636} 637@font-face { 638 font-family: 'Linear Sans'; 639 font-style: italic; 640 font-weight: 900; 641 font-display: auto; 642 src: url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-heavyitalic-webfont.woff2') format('woff2'), 643 url('https://www.upwind.io/wp-content/uploads/2023/01/linearsans-heavyitalic-webfont.woff') format('woff'); 644} 645/* End Custom Fonts CSS */ 646/* Start Custom Fonts CSS */@font-face { 647 font-family: 'Upwind Sans'; 648 font-style: normal; 649 font-weight: 400; 650 font-display: auto; 651 src: url('https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Regular.woff2') format('woff2'), 652 url('https://www.upwind.io/wp-content/uploads/2026/05/Upwind-Sans-Regular.ttf') format('truetype'); 653} 654@font-face { 655 font-family: 'Upwind Sans'; 656 font-style: normal; 657 font-weight: 500; 658 font-display: auto; 659 src: url('https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Medium.woff2') format('woff2'), 660 url('https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Medium.woff') format('woff'), 661 url('https://www.upwind.io/wp-content/uploads/2026/05/Upwind-Sans-Medium.ttf') format('truetype'); 662} 663@font-face { 664 font-family: 'Upwind Sans'; 665 font-style: normal; 666 font-weight: 700; 667 font-display: auto; 668 src: url('https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Bold.woff2') format('woff2'), 669 url('https://www.upwind.io/wp-content/uploads/2026/05/Upwind_Sans_Bold.woff') format('woff'), 670 url('https://www.upwind.io/wp-content/uploads/2026/05/Upwind-Sans-Bold.ttf') format('truetype'); 671} 672/* End Custom Fonts CSS */ 673/*# sourceURL=elementor-frontend-inline-css */ 674</style> 675<style id="bricks-frontend-inline-inline-css"> 676:root {--border-gray: #E2e2e2;} .brxe-section {padding-right: 32px; padding-left: 32px; max-width: 100vw} .brxe-container {max-width: 860px; width: 100%} #brx-content.wordpress {max-width: 860px; width: 100%} .woocommerce main.site-main {width: 100%}svg {height: 10px; width: 10px}.brxe-accordion .accordion-title .title {font-size: 16px; font-family: "Upwind Sans"; font-weight: 500; line-height: 1.2; color: #18202d}.brxe-accordion .accordion-content-wrapper {font-family: "Upwind Sans"; font-weight: 400} .bricks-button {border-radius: 4px; padding-top: 7px; padding-right: 24px; padding-bottom: 7px; padding-left: 24px; font-size: 16px; font-family: "Upwind Sans"; font-weight: 500; line-height: 1.4; letter-spacing: -0.16px; text-decoration: none}.brx-popup .brx-popup-backdrop {background-color: rgba(255, 255, 255, 0.95)} .brx-popup-content {padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0}.text-menu-heading.brxe-text-basic {font-size: 14px; font-family: "Upwind Sans"; line-height: 1.4; letter-spacing: -0.14px; font-weight: 500}.text-menu-heading.brxe-block {font-size: 14px; font-family: "Upwind Sans"; line-height: 1.4; letter-spacing: -0.14px; font-weight: 500}.text-menu-description.brxe-text-basic {font-size: 12px; font-family: "Upwind Sans"; font-weight: 400; letter-spacing: -0.12px; line-height: 1.4}.heading-48.brxe-heading {font-size: 56px; font-family: "Upwind Sans"; line-height: 1.2; font-weight: 400}@media (max-width: 991px) {.heading-48.brxe-heading {font-size: 48px}}.text-18.brxe-text-basic {font-family: "Upwind Sans"; font-weight: 400; line-height: 1.2; font-size: 18px}.heading-20.brxe-heading {font-size: 20px; font-family: "Upwind Sans"; font-weight: 400; line-height: 1.5}.text-20.brxe-button {font-size: 20px; font-family: "Upwind Sans"; font-weight: 400; line-height: 1.4; margin-top: 32px}.heading-32.brxe-heading {font-size: 32px; font-family: "Upwind Sans"; font-weight: 400; line-height: 1.2}.text-14.brxe-text-basic {font-size: 14px; font-family: "Upwind Sans"; font-weight: 400; line-height: 1.4}.text-14.brxe-heading {font-size: 14px; font-family: "Upwind Sans"; font-weight: 400; line-height: 1.4}.heading-16.brxe-text-basic {font-size: 16px; font-weight: 400; font-family: "Upwind Sans"; line-height: 1.2}:root {--bricks-color-cec36e: #f5f5f5;--bricks-color-4154c1: #e0e0e0;--bricks-color-f27fcc: #9e9e9e;--bricks-color-7641f2: #616161;--bricks-color-ab37ed: #424242;--bricks-color-9a6d69: #212121;--bricks-color-e9e6a1: #ffeb3b;--bricks-color-08f135: #ffc107;--bricks-color-bf4f35: #ff9800;--bricks-color-b0785c: #ff5722;--bricks-color-e09c09: #f44336;--bricks-color-f02043: #9c27b0;--bricks-color-a75377: #2196f3;--bricks-color-09ff1d: #03a9f4;--bricks-color-806360: #81D4FA;--bricks-color-ee7dec: #4caf50;--bricks-color-feaaff: #8bc34a;--bricks-color-cc7c22: #cddc39;--bricks-color-kyjivg: #5697ea;--bricks-color-onpvpa: #d8dfe9;
676--bricks-color-puxggr: #75808e;--bricks-color-hffyut: #18202d;--bricks-color-tkomdk: #141217;--bricks-color-tikayd: #504e52;--bricks-color-ynbhmd: #18202d;--bricks-color-pxmmbf: #18202d;}#brxe-cce152 {width: 94px; height: auto; margin-right: 30px}@media (max-width: 767px) {#brxe-cce152 {margin-left: 32px}}#brxe-99c7ec {color: var(--bricks-color-tkomdk); font-weight: 400}#brxe-99c7ec{ text-wrap: nowrap;}#brxe-66f56c {flex-direction: row; column-gap: 10px; align-items: center; justify-content: flex-start; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-66f56c {padding-top: 0; padding-bottom: 0}}#brxe-463443 {padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 5px; text-decoration: none}#brxe-463443:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-463443{ transition: all 0.3s ease;}#brxe-179186 {flex-direction: row; column-gap: 15px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; transition: all 300ms ease-in-out; text-decoration: none; min-width: 217px}#brxe-179186:hover {border-color: #d8dfe9}@media (max-width: 767px) {#brxe-179186 {flex-wrap: nowrap; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0}}#brxe-668f33 {width: auto; color: var(--bricks-color-tkomdk); font-weight: 400; min-width: none; flex-grow: 0; flex-shrink: 0}#brxe-cdd43e {flex-direction: row; align-items: center; column-gap: 10px; justify-content: flex-start; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-cdd43e {padding-top: 0; padding-bottom: 0}}#brxe-18c544 {padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 5px}#brxe-18c544:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-18c544{ transition: all 0.3s ease;}#brxe-1fff21 {flex-direction: row; column-gap: 15px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; transition: all 300ms ease-in-out; text-decoration: none; min-width: 217px}#brxe-1fff21:hover {border-color: #d8dfe9}@media (max-width: 767px) {#brxe-1fff21 {flex-wrap: nowrap; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0}}#brxe-97aff9 {flex-grow: 0; flex-shrink: 0; color: var(--bricks-color-tkomdk); font-weight: 400; min-width: none; width: auto}#brxe-97aff9{ text-wrap: nowrap;}#brxe-7de57e {flex-direction: row; column-gap: 10px; align-items: center; justify-content: flex-start; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-7de57e {padding-top: 0; padding-bottom: 0}}#brxe-460595 {padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 5px}#brxe-460595:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-460595{ transition: all 0.3s ease;}#brxe-989497 {flex-direction: row; column-gap: 15px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; transition: all 300ms ease-in-out; text-decoration: none; min-width: 217px}#brxe-989497:hover {border-color: #d8dfe9}@media (max-width: 767px) {#brxe-989497 {flex-wrap: nowrap; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0}}#brxe-8ef5c8 {flex-direction: column; border: 1px solid #F5F5F5; border-radius: 5px; align-items: center; flex-wrap: nowrap}@media (max-width: 767px) {#brxe-8ef5c8 {margin-top: 0; flex-direction: column; border-style: none; row-gap: 12px}}#brxe-0eeee1 {padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.10); border: 1px solid #F0F0F0; border-radius: 10px; background-color: #ffffff; flex-wrap: nowrap}@media (max-width: 767px) {#brxe-0eeee1 {box-shadow: 0 0 0 0 transparent; border-style: solid; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; margin-top: 0}}#brxe-e9c954 {left: 0px; top: 100%; position: absolute; margin-top: -6px; margin-left: 30%; transform: translateX(-50%); background-color: transparent; min-width: fit-content; width: 240px}@media (max-width: 767px) {#brxe-e9c954 {position: relative; top: 0px; left: 0px !important; padding-top: 0; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; max-width: none; margin-left: 0; transform: translateX(0px); width: 100%}}#brxe-a85a9f {position: static}#brxe-a85a9f .brx-submenu-toggle button > svg {height: 12px; width: 11px}#brxe-a85a9f .brx-submenu-toggle {gap: 8px}#brxe-a85a9f .brx-submenu-toggle button[aria-expanded="true"] {transform: rotateZ(180deg)}#brxe-a85a9f button[aria-label="Toggle dropdown"] svg path { fill: #18202D;}#brxe-a85a9f.open .brx-submenu-toggle span { background: linear-gradient(95deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent;}#brxe-a85a9f.open button[aria-label="Toggle dropdown"] svg path { fill: #1E71ED;}@media (max-width: 767px) {#brxe-a85a9f {border-bottom: 1px solid var(--border-gray)}#brxe-a85a9f .brx-submenu-toggle button {transform: scaleX(1.15) scaleY(1.15)}}#brxe-ffaa7c {font-family: "Upwind Sans"; font-size: 14px; color: #777779; line-height: 1.4; letter-spacing: -1%; font-weight: 400}#brxe-bfc1af {color: #18202d}#brxe-5af8bd {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-5af8bd {flex-wrap: nowrap}}#brxe-01214c {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-01214c:hover {border-color: #d8dfe9}#brxe-01214c:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-01214c{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-01214c {flex-wrap: nowrap}}#brxe-01292b {color: #18202d}#brxe-4348c1 {flex-direction: row; align-items: center; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px; column-gap: 2px; row-gap: 2px}@media (max-width: 767px) {#brxe-4348c1 {flex-wrap: nowrap}}#brxe-7a5095 {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-7a5095:hover {border-color: #d8dfe9}#brxe-7a5095:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-7a5095{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-7a5095 {flex-wrap: nowrap}}#brxe-3e1e65 {color: #18202d}#brxe-00979d {flex-direction: row; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px; column-gap: 2px; row-gap: 2px}@media (max-width: 767px) {#brxe-00979d {flex-wrap: nowrap}}#brxe-1a9da6 {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-1a9da6:hover {border-color: #d8dfe9}#brxe-1a9da6:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-1a9da6{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-1a9da6 {flex-wrap: nowrap}}#brxe-468d6a {padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 10px}#brxe-468d6a { column-gap: 16px; row-gap: 12px}@media (max-width: 767px) {#brxe-468d6a {row-gap: 12px}}#brxe-94aa26 {line-height: 1.4; letter-spacing: -1%; color: #777779; font-size: 14px; font-family: "Upwind Sans"}@media (max-width: 767px) {#brxe-94aa26 {margin-bottom: 8px}}#brxe-66071c {color: #18202d}#brxe-2bf3ab {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-2bf3ab {flex-wrap: nowrap}}#brxe-203b4d {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-203b4d:hover {border-color: #d8dfe9}#brxe-203b4d:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-203b4d{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-203b4d {flex-wrap: nowrap}}#brxe-3ca488 {color: #18202d}#brxe-75e78d {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-75e78d {flex-wrap: nowrap}}#brxe-064d53 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-064d53:hover {border-color: #d8dfe9}#brxe-064d53:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-064d53{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-064d53 {flex-wrap: nowrap}}
676#brxe-211641 {color: #18202d}#brxe-fb9510 {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-fb9510 {flex-wrap: nowrap}}#brxe-ef767e {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-ef767e:hover {border-color: #d8dfe9}#brxe-ef767e:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-ef767e{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-ef767e {flex-wrap: nowrap}}#brxe-777f99 {color: #18202d}#brxe-d32835 {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-d32835 {flex-wrap: nowrap}}#brxe-e7a75b {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-e7a75b:hover {border-color: #d8dfe9}#brxe-e7a75b:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-e7a75b{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-e7a75b {flex-wrap: nowrap}}#brxe-cbcff0 {border-left: 1px solid #F5F5F5; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 10px}@media (max-width: 767px) {#brxe-cbcff0 {flex-direction: column; row-gap: 12px; padding-bottom: 0; border-top: 1px solid #F5F5F5; border-left: 0 solid #F5F5F5}}#brxe-72b27c {height: 20px; max-height: 20px; min-height: 20px}@media (max-width: 767px) {#brxe-72b27c {display: none}}#brxe-6425b5 {color: #18202d}#brxe-71a115 {padding-top: 2px; padding-bottom: 2px; column-gap: 10px; flex-direction: row; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-71a115 {flex-wrap: nowrap}}#brxe-97cea3 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-97cea3:hover {border-color: #d8dfe9}#brxe-97cea3:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-97cea3{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-97cea3 {flex-wrap: nowrap}}#brxe-8e9d89 {color: #18202d}#brxe-1c4bb6 {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-1c4bb6 {flex-wrap: nowrap}}#brxe-80ba42 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-80ba42:hover {border-color: #d8dfe9}#brxe-80ba42:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-80ba42{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-80ba42 {flex-wrap: nowrap}}#brxe-463302 {color: #18202d}#brxe-55ad1c {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-55ad1c {flex-wrap: nowrap}}#brxe-b10916 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-b10916:hover {border-color: #d8dfe9}#brxe-b10916:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-b10916{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-b10916 {flex-wrap: nowrap}}#brxe-44c6cc {color: #18202d}#brxe-fce1ce {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-fce1ce {flex-wrap: nowrap}}#brxe-4ee8c3 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-4ee8c3:hover {border-color: #d8dfe9}#brxe-4ee8c3:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-4ee8c3{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-4ee8c3 {flex-wrap: nowrap}}#brxe-056b3f {color: #18202d}#brxe-047230 {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-047230 {flex-wrap: nowrap}}#brxe-7a2f3f {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(215, 100%, 99%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-7a2f3f:hover {border-color: #d8dfe9}#brxe-7a2f3f:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-7a2f3f{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-7a2f3f {flex-wrap: nowrap}}#brxe-0e8e67 {column-gap: 10px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; border-left: 1px none #F5F5F5; row-gap: 10px}@media (max-width: 767px) {#brxe-0e8e67 {flex-direction: column; row-gap: 12px; padding-top: 12px}}#brxe-43ab0b {font-family: "Upwind Sans"; font-size: 14px; color: #777779; line-height: 1.4; letter-spacing: -1%; font-weight: 400}#brxe-8ac9c8 {color: #18202d}#brxe-758c4f {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-758c4f {flex-wrap: nowrap}}#brxe-3a6a5d {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-3a6a5d:hover {border-color: #d8dfe9}#brxe-3a6a5d:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-3a6a5d{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-3a6a5d {flex-wrap: nowrap}}#brxe-6c6521 {color: #18202d}#brxe-4ab119 {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; padding-top: 2px; padding-bottom: 2px; min-height: 22px}@media (max-width: 767px) {#brxe-4ab119 {flex-wrap: nowrap}}#brxe-b5fe5e {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid rgba(216, 223, 233, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-b5fe5e:hover {border-color: #d8dfe9}#brxe-b5fe5e:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-b5fe5e{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-b5fe5e {flex-wrap: nowrap}}#brxe-4e3fee {color: #18202d}#brxe-c65907 {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-c65907 {flex-wrap: nowrap}}#brxe-a51171 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-a51171:hover {border-color: #d8dfe9}#brxe-a51171:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-a51171{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-a51171 {flex-wrap: nowrap}}#brxe-6564c7 {color: #18202d}#brxe-ee6bfe {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-ee6bfe {flex-wrap: nowrap}}#brxe-d74ec8 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-d74ec8:hover {border-color: #d8dfe9}#brxe-d74ec8:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-d74ec8{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-d74ec8 {flex-wrap: nowrap}}#brxe-172ee9 {color: #18202d}#brxe-e69eed {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-e69eed {flex-wrap: nowrap}}#brxe-ecbb73 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-ecbb73:hover {border-color: #d8dfe9}#brxe-ecbb73:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-ecbb73{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-ecbb73 {flex-wrap: nowrap}}#brxe-cfedcd {padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 10px; border-left: 1px solid #F5F5F5}#brxe-cfedcd { column-gap: 16px; row-gap: 12px}@media (max-width: 991px) {#brxe-cfedcd {grid-column: 1/4; border-top: 1px solid #F5F5F5; border-left: 0 solid #F5F5F5}}@media (max-width: 767px) {#brxe-cfedcd {grid-column: auto}}#brxe-c8a9b8 {flex-direction: row; grid-template-columns: 1fr 1fr 1fr 1fr; grid-gap: 16px; border: 1px solid #F5F5F5; border-radius: 5px; column-gap: 0px; align-items: stretch; display: grid; align-items: initial}@media (max-width: 991px) {#brxe-c8a9b8 {grid-template-columns: 1fr 1fr 1fr; grid-gap: 0px}}@media (max-width: 767px) {#brxe-c8a9b8 {margin-top: 0; grid-template-columns: 1fr; grid-gap: 0px}}#brxe-53f310 {padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid #F0F0F0; border-radius: 10px; box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.10); max-width: none; background-color: #ffffff}@media (max-width: 767px) {#brxe-53f310 {box-shadow: 0 0 0 0 transparent; border-style: none; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0}}#brxe-a256fd {position: absolute; top: 100%; transform: translateX(-50%); background-color: transparent; width: 80%; margin-top: -6px; margin-left: 50%; left: 0px}@media (max-width: 767px) {#brxe-a256fd {position: relative; top: 0px; left: 0px !important; padding-top: 0; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border-bottom-width: 1px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; max-width: none; margin-left: 0; width: 100%; transform: translateX(0px)}}#brxe-1bcba3 {position: static}#brxe-1bcba3 .brx-submenu-toggle button > svg {height: 12px; width: 11px}#brxe-1bcba3 .brx-submenu-toggle {gap: 8px}#brxe-1bcba3 .brx-submenu-toggle button[aria-expanded="true"] {transform: rotateZ(180deg)}#brxe-1bcba3 button[aria-label="Toggle dropdown"] svg path { fill: #18202D;}#brxe-1bcba3.open .brx-submenu-toggle span { background: linear-gradient(95deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent;}#brxe-1bcba3.open button[aria-label="Toggle dropdown"] svg path { fill: #1E71ED;}@media (max-width: 767px) {#brxe-1bcba3 {border-bottom: 1px solid var(--border-gray)}#brxe-1bcba3 .brx-submenu-toggle button {transform: scaleX(1.15) scaleY(1.15)}}#brxe-80c6f7 {color: #18202d; font-weight: 400}#brxe-2e2f55 {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-2e2f55 {flex-wrap: nowrap}}#brxe-0bdae0 {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-0bdae0:hover {border-color: #d8dfe9}#brxe-0bdae0:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-0bdae0{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-0bdae0 {flex-wrap: nowrap}}#brxe-500e71 {color: #18202d; font-weight: 400}#brxe-f2a076 {flex-direction: row; align-items: center; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px; column-gap: 2px; row-gap: 2px}@media (max-width: 767px) {#brxe-f2a076 {flex-wrap: nowrap}}#brxe-c9cf7a {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-c9cf7a:hover {border-color: #d8dfe9}#brxe-c9cf7a:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-c9cf7a{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-c9cf7a {flex-wrap: nowrap}}#brxe-22459e {padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; min-width: 215px; row-gap: 30px !important}@media (max-width: 767px) {#brxe-22459e {row-gap: 12px; padding-bottom: 0}}
676#brxe-211d2a {color: #18202d; font-weight: 400}#brxe-667d7b {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-667d7b {flex-wrap: nowrap}}#brxe-76214f {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-76214f:hover {border-color: #d8dfe9}#brxe-76214f:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-76214f{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-76214f {flex-wrap: nowrap}}#brxe-0e8648 {color: #18202d; font-weight: 400}#brxe-caff77 {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-caff77 {flex-wrap: nowrap}}#brxe-cf4ee0 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-cf4ee0:hover {border-color: #d8dfe9}#brxe-cf4ee0:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-cf4ee0{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-cf4ee0 {flex-wrap: nowrap}}#brxe-ee43ce {border-left: 1px solid #F5F5F5; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 30px; min-width: 215px}@media (max-width: 767px) {#brxe-ee43ce {flex-direction: column; row-gap: 12px; border-left: 0 none #F5F5F5; padding-top: 12px; padding-bottom: 0}}#brxe-154e4f {color: #18202d; font-weight: 400}#brxe-c9a022 {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-c9a022 {flex-wrap: nowrap}}#brxe-cfed2c {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-cfed2c:hover {border-color: #d8dfe9}#brxe-cfed2c:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-cfed2c{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-cfed2c {flex-wrap: nowrap}}#brxe-42f24d {color: #18202d; font-weight: 400}#brxe-5cdfd3 {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; padding-top: 2px; padding-bottom: 2px; min-height: 22px}@media (max-width: 767px) {#brxe-5cdfd3 {flex-wrap: nowrap}}#brxe-f51444 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid rgba(216, 223, 233, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-f51444:hover {border-color: #d8dfe9}#brxe-f51444:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-f51444{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-f51444 {flex-wrap: nowrap}}#brxe-070581 {padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 30px; border-left: 1px solid #F5F5F5; min-width: 215px}@media (max-width: 991px) {#brxe-070581 {border-top: 1px solid #F5F5F5; border-left: 0 solid #F5F5F5}}@media (max-width: 767px) {#brxe-070581 {grid-column: auto; border-style: none; padding-top: 12px}}#brxe-700eaf {flex-direction: row; grid-template-columns: 1fr 1fr 1fr; grid-gap: 16px; border: 1px solid #F5F5F5; border-radius: 5px; column-gap: 0px; align-items: stretch; display: grid; align-items: initial}@media (max-width: 991px) {#brxe-700eaf {grid-template-columns: 1fr 1fr 1fr; grid-gap: 0px}}@media (max-width: 767px) {#brxe-700eaf {margin-top: 0; grid-template-columns: 1fr}}#brxe-33a487 {padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid #F5F5F5; border-radius: 10px;
676 box-shadow: 0 5px 35px 0 rgba(148, 163, 184, 0.15); width: 100%; max-width: none; background-color: #ffffff}@media (max-width: 767px) {#brxe-33a487 {box-shadow: 0 0 0 0 transparent; border-style: none; border-radius: 0; padding-top: 0; padding-right: 10px; padding-bottom: 10px; padding-left: 10px}}#brxe-3beefb {position: absolute; left: 0px; top: 100%; transform: translateX(-50%); margin-top: -6px; margin-left: 50%; background-color: transparent}@media (max-width: 767px) {#brxe-3beefb {position: relative; top: 0px; left: 0px !important; padding-top: 0; max-width: none; margin-left: 0; transform: translateX(0px); width: 100%}}#brxe-9e90e6 {position: static}#brxe-9e90e6 .brx-submenu-toggle button > svg {height: 12px; width: 11px}#brxe-9e90e6 .brx-submenu-toggle {gap: 8px}#brxe-9e90e6 .brx-submenu-toggle button[aria-expanded="true"] {transform: rotateZ(180deg)}#brxe-9e90e6 button[aria-label="Toggle dropdown"] svg path { fill: #18202D;}#brxe-9e90e6.open .brx-submenu-toggle span { background: linear-gradient(95deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent;}#brxe-9e90e6.open button[aria-label="Toggle dropdown"] svg path { fill: #1E71ED;}@media (max-width: 767px) {#brxe-9e90e6 {border-bottom: 1px solid var(--border-gray)}#brxe-9e90e6 .brx-submenu-toggle button {transform: scaleX(1.15) scaleY(1.15)}}#brxe-eae96d {color: #18202d; font-weight: 400}#brxe-8799bb {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-8799bb {flex-wrap: nowrap}}#brxe-ea6b22 {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-ea6b22:hover {border-color: #d8dfe9}#brxe-ea6b22:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-ea6b22{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-ea6b22 {flex-wrap: nowrap}}#brxe-c83b6a {color: #18202d; font-weight: 400}#brxe-554b1b {flex-direction: row; align-items: center; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px; column-gap: 2px; row-gap: 2px}@media (max-width: 767px) {#brxe-554b1b {flex-wrap: nowrap}}#brxe-e9c1a2 {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-e9c1a2:hover {border-color: #d8dfe9}#brxe-e9c1a2:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-e9c1a2{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-e9c1a2 {flex-wrap: nowrap}}#brxe-ec1b99 {color: #18202d; font-weight: 400}#brxe-32de47 {flex-direction: row; align-items: center; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px; column-gap: 2px; row-gap: 2px}@media (max-width: 767px) {#brxe-32de47 {flex-wrap: nowrap}}#brxe-9efe30 {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-9efe30:hover {border-color: #d8dfe9}#brxe-9efe30:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-9efe30{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-9efe30 {flex-wrap: nowrap}}#brxe-8b474b {padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 30px; min-width: 215px}@media (max-width: 767px) {#brxe-8b474b {row-gap: 12px; padding-bottom: 0}}#brxe-b4abda {color: #18202d; font-weight: 400}#brxe-d42e4c {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-d42e4c {flex-wrap: nowrap}}#brxe-d07101 {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-d07101:hover {border-color: #d8dfe9}#brxe-d07101:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-d07101{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-d07101 {flex-wrap: nowrap}}#brxe-2f2613 {color: #18202d; font-weight: 400}#brxe-0d3de4 {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-0d3de4 {flex-wrap: nowrap}}#brxe-516b51 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-516b51:hover {border-color: #d8dfe9}#brxe-516b51:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-516b51{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-516b51 {flex-wrap: nowrap}}#brxe-0d4775 {border-left: 1px solid #F5F5F5; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 30px; min-width: 215px}@media (max-width: 767px) {#brxe-0d4775 {flex-direction: column; row-gap: 12px; border-left: 0 none #F5F5F5; padding-top: 12px; padding-bottom: 0}}#brxe-b86383 {color: #18202d; font-weight: 400}#brxe-373443 {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-373443 {flex-wrap: nowrap}}#brxe-d665a7 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-d665a7:hover {border-color: #d8dfe9}#brxe-d665a7:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-d665a7{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-d665a7 {flex-wrap: nowrap}}#brxe-19ab2c {color: #18202d; font-weight: 400}#brxe-8bfdd2 {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; padding-top: 2px; padding-bottom: 2px; min-height: 22px}@media (max-width: 767px) {#brxe-8bfdd2 {flex-wrap: nowrap}}#brxe-0e2a03 {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid rgba(216, 223, 233, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-0e2a03:hover {border-color: #d8dfe9}#brxe-0e2a03:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-0e2a03{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-0e2a03 {flex-wrap: nowrap}}#brxe-a99ce4 {padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 30px; border-left: 1px solid #F5F5F5; min-width: 215px}@media (max-width: 991px) {#brxe-a99ce4 {grid-column: 1/4; border-top: 1px solid #F5F5F5; border-left: 0 solid #F5F5F5}}@media (max-width: 767px) {#brxe-a99ce4 {grid-column: auto; border-style: none; padding-top: 12px}}#brxe-57535b {flex-direction: row; grid-template-columns: 1fr 1fr 1fr; grid-gap: 16px; border: 1px solid #F5F5F5; border-radius: 5px; column-gap: 0px; align-items: stretch; display: grid; align-items: initial}@media (max-width: 991px) {#brxe-57535b {grid-template-columns: 1fr 1fr 1fr; grid-gap: 0px}}@media (max-width: 767px) {#brxe-57535b {margin-top: 0; grid-template-columns: 1fr}}#brxe-77a455 {padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid #F5F5F5; border-radius: 10px;
676 box-shadow: 0 5px 35px 0 rgba(148, 163, 184, 0.15); width: 100%; max-width: none; background-color: #ffffff}@media (max-width: 767px) {#brxe-77a455 {box-shadow: 0 0 0 0 transparent; border-style: none; border-radius: 0; padding-top: 0; padding-right: 10px; padding-bottom: 10px; padding-left: 10px}}#brxe-7fa538 {position: absolute; left: 0px; top: 100%; margin-top: -6px; margin-left: 50%; transform: translateX(-50%); background-color: transparent}@media (max-width: 767px) {#brxe-7fa538 {position: relative; top: 0px; left: 0px !important; padding-top: 0; max-width: none; margin-left: 0; transform: translateX(0px)}}#brxe-e2274e {position: static}#brxe-e2274e .brx-submenu-toggle button > svg {height: 12px; width: 11px}#brxe-e2274e .brx-submenu-toggle {gap: 8px}#brxe-e2274e .brx-submenu-toggle button[aria-expanded="true"] {transform: rotateZ(180deg)}#brxe-e2274e button[aria-label="Toggle dropdown"] svg path { fill: #18202D;}#brxe-e2274e.open .brx-submenu-toggle span { background: linear-gradient(95deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent;}#brxe-e2274e.open button[aria-label="Toggle dropdown"] svg path { fill: #1E71ED;}@media (max-width: 767px) {#brxe-e2274e {border-bottom: 1px solid var(--border-gray)}#brxe-e2274e .brx-submenu-toggle button {transform: scaleX(1.15) scaleY(1.15)}}#brxe-56f665 {color: #18202d; font-weight: 400}#brxe-b85753 {flex-direction: row; column-gap: 10px; padding-top: 2px; padding-bottom: 2px; align-items: center; justify-content: space-between; min-height: 22px}@media (max-width: 767px) {#brxe-b85753 {flex-wrap: nowrap}}#brxe-6f0dad {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-6f0dad:hover {border-color: #d8dfe9}#brxe-6f0dad:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-6f0dad{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-6f0dad {flex-wrap: nowrap}}#brxe-3a2ca6 {padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 10px; min-width: 215px}#brxe-3a2ca6 { column-gap: 16px; row-gap: 12px}@media (max-width: 767px) {#brxe-3a2ca6 {row-gap: 12px; padding-bottom: 0}}#brxe-25a2af {color: #18202d; font-weight: 400}#brxe-f6fb8a {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-f6fb8a {flex-wrap: nowrap}}#brxe-91fa66 {flex-direction: row; align-items: center; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none; column-gap: 5px; row-gap: 5px}#brxe-91fa66:hover {border-color: #d8dfe9}#brxe-91fa66:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-91fa66{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-91fa66 {flex-wrap: nowrap}}#brxe-6b5fca {border-left: 1px solid #F5F5F5; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 10px; min-width: 215px}@media (max-width: 767px) {#brxe-6b5fca {flex-direction: column; row-gap: 12px; border-left: 0 none #F5F5F5; padding-top: 12px; padding-bottom: 0}}#brxe-c5dcbc {color: #18202d; font-weight: 400}#brxe-1a8ff2 {flex-direction: row; align-items: center; column-gap: 10px; justify-content: space-between; min-height: 22px; padding-top: 2px; padding-bottom: 2px}@media (max-width: 767px) {#brxe-1a8ff2 {flex-wrap: nowrap}}#brxe-3e3f3e {flex-direction: row; align-items: center; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 8px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-3e3f3e:hover {border-color: #d8dfe9}#brxe-3e3f3e:hover{ background: #FAFAFA; border: 1px solid #F0F0F0;}#brxe-3e3f3e{ transition: all 0.3s ease;}@media (max-width: 767px) {#brxe-3e3f3e {flex-wrap: nowrap}}#brxe-392594 {padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; column-gap: 10px; row-gap: 10px; border-left: 1px solid #F5F5F5; min-width: 215px}#brxe-392594 { column-gap: 16px; row-gap: 12px}@media (max-width: 991px) {#brxe-392594 {grid-column: 1/4; border-top: 1px solid #F5F5F5; border-left: 0 solid #F5F5F5}}@media (max-width: 767px) {#brxe-392594 {grid-column: auto; border-style: none; padding-top: 12px}}#brxe-7f12b3 {flex-direction: row; grid-template-columns: 1fr 1fr 1fr; grid-gap: 16px; border: 1px solid #F5F5F5; border-radius: 5px; column-gap: 0px; align-items: stretch; display: grid; align-items: initial}@media (max-width: 991px) {#brxe-7f12b3 {grid-template-columns: 1fr 1fr 1fr; grid-gap: 0px}}@media (max-width: 767px) {#brxe-7f12b3 {margin-top: 0; grid-template-columns: 1fr}}#brxe-e532ad {padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid #F5F5F5; border-radius: 10px;
676 box-shadow: 0 5px 35px 0 rgba(148, 163, 184, 0.15); width: 100%; max-width: none; background-color: #ffffff}@media (max-width: 767px) {#brxe-e532ad {box-shadow: 0 0 0 0 transparent; border-style: none; border-radius: 0; padding-top: 0; padding-right: 10px; padding-bottom: 10px; padding-left: 10px}}#brxe-64fadf {font-size: 24px; color: var(--bricks-color-puxggr); font-family: "Upwind Sans"; font-weight: 400; line-height: 1.3}@media (max-width: 767px) {#brxe-64fadf {display: none}}#brxe-26d942 {height: 32px; width: 32px}#brxe-8a9ae4 {color: #18202d}#brxe-04a7e1 {height: 10px; width: 10px}#brxe-0797f2 {flex-direction: row; column-gap: 10px; align-items: center; justify-content: flex-start; min-height: 22px}#brxe-bb7ffc {margin-top: 4px; color: #18202d}#brxe-f6ccd7 {padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid rgba(216, 223, 233, 0); border-radius: 8px; flex-direction: row; column-gap: 15px; transition: all 300ms ease-in-out; text-decoration: none}#brxe-f6ccd7:hover {border-color: #d8dfe9}#brxe-f6ccd7 { --icon-primary: #5697EA; --icon-secondary: #F2F7FF;}@media (max-width: 767px) {#brxe-f6ccd7 {flex-wrap: nowrap}}#brxe-7131eb {height: 32px; width: 32px}#brxe-cc147a {color: #18202d; width: auto; min-width: none; flex-grow: 0; flex-shrink: 0}#brxe-efab77 {height: 10px; width: 10px; flex-grow: 0; flex-shrink: 0}#brxe-734030 {flex-direction: row; column-gap: 10px; align-items: center; justify-content: flex-start; min-height: 22px}#brxe-c60229 {color: #18202d; margin-top: 4px}#brxe-61276b {text-decoration: none; flex-direction: row; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid rgba(216, 223, 233, 0); border-radius: 8px; transition: all 300ms ease-in-out}#brxe-61276b:hover {border-color: #d8dfe9}#brxe-61276b { --icon-primary: #F47D93; --icon-secondary: #FFF3F5;}@media (max-width: 767px) {#brxe-61276b {flex-wrap: nowrap}}#brxe-631108 {height: 32px; width: 32px}#brxe-aa9ee0 {color: #18202d; min-width: none; width: auto; flex-grow: 0; flex-shrink: 0}#brxe-d9796f {height: 10px; width: 10px; flex-grow: 0; flex-shrink: 0}#brxe-eed5b2 {flex-direction: row; column-gap: 10px; align-items: center; justify-content: flex-start; min-height: 22px}#brxe-62ff9e {margin-top: 4px; color: #18202d}#brxe-884fd0 {text-decoration: none; flex-direction: row; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid rgba(216, 223, 233, 0); border-radius: 8px; transition: all 300ms ease-in-out}#brxe-884fd0:hover {border-color: #d8dfe9}#brxe-884fd0 { --icon-primary: #A191FD; --icon-secondary: #F7F5FF;}@media (max-width: 767px) {#brxe-884fd0 {flex-wrap: nowrap}}#brxe-56ee71 {height: 32px; width: 32px}#brxe-cebc1d {color: #18202d; min-width: none; width: auto; flex-grow: 0; flex-shrink: 0}#brxe-ed91bb {height: 10px; width: 10px; flex-grow: 0; flex-shrink: 0}#brxe-d7e12a {flex-direction: row; column-gap: 10px; align-items: center; justify-content: flex-start; min-height: 22px}#brxe-873d1c {margin-top: 4px; color: #18202d}#brxe-bdd0fb {text-decoration: none; flex-direction: row; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid rgba(216, 223, 233, 0); border-radius: 8px; transition: all 300ms ease-in-out}#brxe-bdd0fb:hover {border-color: #d8dfe9}#brxe-bdd0fb { --icon-primary: #F89684; --icon-secondary: #FFF7F2;}@media (max-width: 767px) {#brxe-bdd0fb {flex-wrap: nowrap}}#brxe-86c312 {height: 32px; width: 32px}#brxe-a14544 {color: #18202d; min-width: none; width: auto; flex-grow: 0; flex-shrink: 0}#brxe-742fdd {height: 10px; width: 10px; flex-grow: 0; flex-shrink: 0}#brxe-cec2cf {flex-direction: row; column-gap: 10px; align-items: center; justify-content: flex-start; min-height: 22px}#brxe-282e68 {margin-top: 4px; color: #18202d}#brxe-ef9e7c {text-decoration: none; flex-direction: row; column-gap: 15px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; border: 1px solid rgba(216, 223, 233, 0); border-radius: 8px; transition: all 300ms ease-in-out}#brxe-ef9e7c:hover {border-color: #d8dfe9}#brxe-ef9e7c { --icon-primary: #F47D93; --icon-secondary: #FFF3F5;}@media (max-width: 767px) {#brxe-ef9e7c {flex-wrap: nowrap}}#brxe-e1d1ff {margin-top: 44px; column-gap: 16px; flex-direction: row; display: grid; align-items: initial; grid-template-columns: 1fr 1fr 1fr; grid-gap: 16px}@media (max-width: 767px) {#brxe-e1d1ff {margin-top: 0; grid-template-columns: 1fr; grid-gap: 12px}}#brxe-eecafa {padding-top: 54px; padding-right: 50px; padding-bottom: 54px; padding-left: 50px; border: 1px solid #d8dfe9; border-radius: 20px;
676 box-shadow: 0 5px 35px 0 rgba(148, 163, 184, 0.15); width: 100%; max-width: none; background-color: #ffffff}@media (max-width: 767px) {#brxe-eecafa {box-shadow: 0 0 0 0 transparent; border-style: none; padding-top: 24px; padding-right: 32px; padding-bottom: 24px; padding-left: 32px}}#brxe-b47c93 {position: absolute; left: 0px; top: 100%; margin-top: -6px; margin-left: 50%; transform: translateX(-50%); background-color: transparent}@media (max-width: 767px) {#brxe-b47c93 {position: relative; top: 0px; left: 0px !important; padding-top: 0; max-width: none; margin-left: 0; transform: translateX(0px)}}#brxe-990777 {position: static}#brxe-990777 .brx-submenu-toggle button > svg {height: 12px; width: 11px}#brxe-990777 .brx-submenu-toggle {gap: 8px}#brxe-990777 .brx-submenu-toggle button[aria-expanded="true"] {transform: rotateZ(180deg)}#brxe-990777 button[aria-label="Toggle dropdown"] svg path { fill: #18202D;}#brxe-990777.open .brx-submenu-toggle span { background: linear-gradient(95deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent;}#brxe-990777.open button[aria-label="Toggle dropdown"] svg path { fill: #1E71ED;}@media (max-width: 767px) {#brxe-990777 {border-bottom: 1px solid var(--border-gray)}#brxe-990777 .brx-submenu-toggle button {transform: scaleX(1.15) scaleY(1.15)}}#brxe-f201de {font-size: 15px; line-height: 1.4; font-family: "Upwind Sans"; font-weight: 500; color: var(--bricks-color-hffyut)}@media (max-width: 767px) {#brxe-f201de {font-size: 18px}}#brxe-87938f {text-decoration: none; width: auto; flex-direction: row; align-items: center; column-gap: 8px; padding-top: 4px; padding-right: 6px; padding-bottom: 4px; padding-left: 6px; margin-left: 0}@media (max-width: 767px) {#brxe-87938f {margin-left: 0}#brxe-87938f{ border-bottom: 1px solid #E2E2E2 !important;}}#brxe-952199 {font-size: 15px; line-height: 1.4; font-family: "Upwind Sans"; font-weight: 500; color: var(--bricks-color-hffyut)}@media (max-width: 767px) {#brxe-952199 {font-size: 18px}}#brxe-12d5f5 {text-decoration: none; width: auto; flex-direction: row; align-items: center; column-gap: 8px; padding-top: 4px; padding-right: 6px; padding-bottom: 4px; padding-left: 6px; margin-left: 0}@media (max-width: 767px) {#brxe-12d5f5{ border-bottom: 1px solid #E2E2E2 !important;}}#brxe-976d11 {font-family: "Upwind Sans"; font-weight: 500; font-size: 15px; text-wrap: nowrap}@media (max-width: 767px) {#brxe-976d11 {font-size: 18px}}#brxe-319bcc {padding-top: 4px; padding-right: 6px; padding-bottom: 4px; padding-left: 6px; text-decoration: none; cursor: pointer; display: none}@media (max-width: 767px) {#brxe-319bcc {display: block}#brxe-319bcc{ border-bottom: 1px solid #E2E2E2 !important;}}#brxe-bfffbe {width: 32px; height: 32px}@media (max-width: 767px) {#brxe-bfffbe {height: auto; width: 24px; width: 24px}}#brxe-044fa9 {font-size: 15px; line-height: 1.4; font-family: "Upwind Sans"; font-weight: 500; color: var(--bricks-color-hffyut)}@media (max-width: 767px) {#brxe-044fa9 {font-size: 18px}}#brxe-eb6ff4 {text-decoration: none; width: auto; flex-direction: row; align-items: center; column-gap: 8px; padding-right: 4px; padding-left: 4px; display: none}@media (max-width: 767px) {#brxe-eb6ff4 {display: flex}}#brxe-2717cf {justify-content: center}#brxe-2717cf > .menu-item { line-height: 0px;}#brxe-2717cf > .menu-item:last-of-type { display: none !important;}@media screen and (max-width: 767px) { #brxe-2717cf > .menu-item:last-of-type { display: flex !important; } #brxe-2717cf > .menu-item:last-of-type > a { width: 100% !important; }}@media (max-width: 767px) {#brxe-2717cf {border-top: 1px solid var(--border-gray); justify-content: flex-start; row-gap: 0px}}#brxe-900088 {height: 2px; width: 32px; position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%)}#brxe-b78b5e {height: 2px; width: 32px; position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%)}#brxe-4aa216 {height: 2px; width: 32px; position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%)}#brxe-7e2047 {position: relative; width: 32px; height: 32px; flex-grow: 0; flex-shrink: 0; display: none}#brxe-7e2047 > svg { transition: 0.3s ease-in-out;}#brxe-7e2047[data-state="closed"] > svg:first-of-type { margin-top: -7px;}#brxe-7e2047[data-state="closed"] > svg:last-of-type { margin-top: 7px;}#brxe-7e2047[data-state="opened"] > svg { transform: translateX(-50%) translateY(-50%) rotate(45deg);}#brxe-7e2047[data-state="opened"] > svg:last-of-type { transform: translateX(-50%) translateY(-50%) rotate(-45deg);}@media (max-width: 767px) {#brxe-7e2047 {display: block; margin-right: 32px}}@layer bricks {@media (max-width: 767px) {#brxe-c72527 .brx-toggle-div { display: inline-flex; }#brxe-c72527 .brxe-toggle { display: inline-flex; }[data-script-id="c72527"] .brx-nav-nested-items {opacity: 0;visibility: hidden;gap: 0;position: fixed;z-index: 1001;top: 0;right: 0;bottom: 0;left: 0;display: flex;align-items: center;justify-content: center;flex-direction: column;background-color: #fff;
676overflow-y: scroll;flex-wrap: nowrap;}#brxe-c72527.brx-open .brx-nav-nested-items {opacity: 1;visibility: visible;}}}#brxe-c72527 .brx-nav-nested-items > li > a {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; letter-spacing: -0.15px; line-height: 1.4; color: var(--bricks-color-hffyut)}#brxe-c72527 .brx-nav-nested-items > li > .brxe-text-link:not(a) {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; letter-spacing: -0.15px; line-height: 1.4; color: var(--bricks-color-hffyut)}#brxe-c72527 .brx-nav-nested-items > li > .brxe-icon {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; letter-spacing: -0.15px; line-height: 1.4; color: var(--bricks-color-hffyut)}#brxe-c72527 .brx-nav-nested-items > li:has( > .brxe-svg) {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; letter-spacing: -0.15px; line-height: 1.4; color: var(--bricks-color-hffyut)}#brxe-c72527 .brx-nav-nested-items > li > .brx-submenu-toggle > * {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; letter-spacing: -0.15px; line-height: 1.4; color: var(--bricks-color-hffyut)}#brxe-c72527 .brx-nav-nested-items {gap: 27px}@media (max-width: 991px) {#brxe-c72527 .brx-nav-nested-items {gap: 16px}}@media (max-width: 767px) {#brxe-c72527 .brx-nav-nested-items > li > a {padding-top: 20px; padding-right: 32px; padding-bottom: 20px; padding-left: 32px; border-bottom: 1px none var(--border-gray); font-size: 18px}#brxe-c72527 .brx-nav-nested-items > li > .brxe-text-link:not(a) {padding-top: 20px; padding-right: 32px; padding-bottom: 20px; padding-left: 32px; border-bottom: 1px none var(--border-gray); font-size: 18px}#brxe-c72527 .brx-nav-nested-items > li > .brxe-icon {padding-top: 20px; padding-right: 32px; padding-bottom: 20px; padding-left: 32px; border-bottom: 1px none var(--border-gray); font-size: 18px}#brxe-c72527 .brx-nav-nested-items > li:has( > .brxe-svg) {padding-top: 20px; padding-right: 32px; padding-bottom: 20px; padding-left: 32px; border-bottom: 1px none var(--border-gray); font-size: 18px}#brxe-c72527 .brx-nav-nested-items > li > .brx-submenu-toggle > * {padding-top: 20px; padding-right: 32px; padding-bottom: 20px; padding-left: 32px; font-size: 18px}#brxe-c72527.brx-open .brx-nav-nested-items > li > button.brx-toggle-div {padding-top: 20px; padding-right: 32px; padding-bottom: 20px; padding-left: 32px}#brxe-c72527.brx-open .brx-nav-nested-items { position: absolute; height: calc(100svh - 92px); width: 100vw; top: 100%; left: 0; overflow: auto;}#brxe-c72527 .brx-nav-nested-items > li > .brx-submenu-toggle {border-bottom: 1px none var(--border-gray)}#brxe-c72527 .brx-nav-nested-items {gap: 0px}}#brxe-1c601d {width: auto; flex-direction: row; align-items: center}#brxe-06a7a0 {font-family: "Upwind Sans"; font-weight: 500; font-size: 15px; text-wrap: nowrap}#brxe-5dd8dc {padding-top: 4px; padding-right: 6px; padding-bottom: 4px; padding-left: 6px; text-decoration: none; cursor: pointer}#brxe-d87001 {width: 32px; height: 32px; height: 11px; width: 13px; min-width: 13px}#brxe-a7e2e0 {font-size: 12px; line-height: 1.4; font-family: "Upwind Sans"; font-weight: 400; color: #777779; text-wrap: nowrap; flex-grow: 0; flex-shrink: 0}#brxe-632449 {text-decoration: none; width: auto; flex-direction: row; align-items: center; column-gap: 6px; padding-top: 8px; padding-right: 8px; padding-bottom: 8px; padding-left: 8px}#brxe-85200a {max-width: auto; width: fit-content; flex-direction: row; align-items: center; column-gap: 14px}@media (max-width: 767px) {#brxe-85200a {display: none}}#brxe-fcd69c {flex-direction: row; align-items: center; padding-top: 12px; padding-right: 32px; padding-bottom: 12px; padding-left: 32px; justify-content: space-between; position: relative; max-width: 1364px; column-gap: 40px}@media (max-width: 767px) {#brxe-fcd69c {padding-right: 0; padding-left: 0}}#brxe-47443e {background-color: #ffffff; padding-right: 0; padding-left: 0}#brxe-47443e::before { content: ''; display: block; position: relative; height: 2px; width: 100%; background: linear-gradient(90deg,rgba(242, 88, 60, 1) 0%, rgba(146, 20, 196, 1) 50%, rgba(30, 113, 237, 1) 100%);}@media (max-width: 767px) {#brxe-47443e {position: relative; padding-right: 0; padding-left: 0}}#brxe-qswkqu {z-index: 2; position: absolute; top: 0px; left: 0px; right: 0px; bottom: 0px; padding-top: 0; width: 100%; height: 100%}#brxe-qswkqu video { object-fit: cover !important;}#announcementBanner2 {min-width: auto; min-height: auto}#brxe-ugmpgb {color: #ffffff; text-transform: none; max-width: 100%; border: 1px solid #ffffff; border-radius: 4px; max-height: auto; z-index: 999; padding-top: 3px; padding-right: 20px; padding-bottom: 3px; padding-left: 20px}#brxe-ugmpgb{ background: rgba(255, 255, 255, 0.001); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);}@media (max-width: 767px) {#brxe-ugmpgb {padding-top: 5px; padding-bottom: 5px}}#brxe-jrgayf {margin-top: 25px; color: #ffffff; text-align: center; max-width: 600px}@media (max-width: 767px) {#brxe-jrgayf {font-size: 40px}}#brxe-kjyuat {max-width: 700px; margin-top: 20px; color: #ffffff; text-align: center; line-height: 1.6}@media (max-width: 767px) {#brxe-kjyuat {font-size: 16px}}#brxe-iyijkp {margin-top: 20px}#brxe-kahgdm {width: 100%; height: 100%; flex-direction: column; justify-content: center; align-items: center; z-index: 3}#brxe-prriah {min-height: 691px; max-width: 1300px; border-radius: 16px; overflow: hidden; background-color: #1E71ED; padding-top: 32px; padding-right: 32px; padding-bottom: 32px; padding-left: 32px; justify-content: center; align-items: center; position: relative}#brxe-prriah::after { content: ''; display: block; position: absolute; height: 100%; width: 100%; left: 0; top: 0; box-shadow: 0 0 16px 0 rgba(255, 255, 255, 0.60) inset;}#brxe-dlylyv {padding-top: 50px; padding-bottom: 50px}#announcementBanner1 {min-width: auto; min-height: auto}#brxe-0f4b48 {color: #ffffff; text-transform: none; max-width: 100%; border: 1px solid #ffffff; border-radius: 4px; max-height: auto; z-index: 999; padding-top: 3px; padding-right: 20px; padding-bottom: 3px; padding-left: 20px}#brxe-0f4b48{ background: rgba(255, 255, 255, 0.001); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);}@media (max-width: 767px) {#brxe-0f4b48 {padding-top: 5px; padding-bottom: 5px}}#brxe-09abeb {margin-top: 25px; color: #ffffff; text-align: center; max-width: 600px}@media (max-width: 767px) {#brxe-09abeb {font-size: 40px}}#brxe-00ae0c {max-width: 700px; margin-top: 20px; color: #ffffff; text-align: center; line-height: 1.6}@media (max-width: 767px) {#brxe-00ae0c {font-size: 16px}}#brxe-d01168 {margin-top: 20px}#brxe-63b08b {width: 100%; height: 100%; flex-direction: column; justify-content: center; align-items: center; z-index: 2}#brxe-e3e653 {min-height: 691px; max-width: 1300px; border-radius: 16px; overflow: hidden; background-color: #1E71ED; padding-top: 32px; padding-right: 32px; padding-bottom: 32px; padding-left: 32px; justify-content: center; align-items: center; position: relative}#brxe-e3e653::after { content: ''; display: block; position: absolute; height: 100%; width: 100%; left: 0; top: 0; box-shadow: 0 0 16px 0 rgba(255, 255, 255, 0.60) inset;}#brxe-3335e8 {padding-top: 50px; padding-bottom: 50px}.brxe-58e345 {text-align: center; color: var(--bricks-color-tkomdk); padding-right: 32px; padding-left: 32px}.brxe-76b514 {width: calc(43px * var(--resize-percent))}.brxe-d3cc08 {width: calc(77px * var(--resize-percent))}.brxe-9079cf {width: calc(53px * var(--resize-percent))}.brxe-2626cf {width: calc(70px * var(--resize-percent))}.brxe-73a819 {width: calc(34px * var(--resize-percent))}.brxe-1cab32 {width: calc(41px * var(--resize-percent))}.brxe-6a406f {width: calc(89px * var(--resize-percent))}.brxe-c8b786 {width: calc(24px * var(--resize-percent))}.brxe-284905 {width: calc(72px * var(--resize-percent))}.brxe-ngnqlj {width: calc(71px * var(--resize-percent))}.brxe-kvsolh {width: calc(44px * var(--resize-percent))}.brxe-xtzaun {width: calc(46px * var(--resize-percent))}.brxe-qrbeoq {width: calc(100px * var(--resize-percent))}.brxe-adfa3f {flex-direction: row; column-gap: 24px; justify-content: center; align-items: center; position: relative}.brxe-adfa3f { --resize-percent: 1.28;}@media (max-width: 991px) {.brxe-adfa3f {flex-wrap: wrap; row-gap: 24px}}.brxe-lkswtj {width: calc(41px * var(--resize-percent)); display: none}.brxe-ufiizl {width: calc(126px * var(--resize-percent)); display: none}.brxe-nvvvpv {width: calc(98px * var(--resize-percent)); display: none}.brxe-bvhnam {width: calc(85px * var(--resize-percent)); display: none}.brxe-bvhnam:not(.tag), .brxe-bvhnam img {object-fit: contain}.brxe-kuammh {flex-direction: row; column-gap: 24px; justify-content: center; align-items: center; position: relative; display: none}.brxe-kuammh { --resize-percent: 1.28;}@media (max-width: 991px) {.brxe-kuammh {flex-wrap: wrap; row-gap: 24px}}.brxe-gisgwi {max-width: none; row-gap: 24px}.brxe-ccb23a {align-items: center; row-gap: 40px; max-width: none}@media (max-width: 478px) {.brxe-ccb23a {row-gap: 32px}}.brxe-boiuru {padding-top: 80px; padding-right: 0; padding-bottom: 80px; padding-left: 0}@media (max-width: 478px) {.brxe-boiuru {padding-top: 60px; padding-bottom: 60px}}#brxe-a3f637 {max-width: 1000px; text-align: center; font-size: 40px; font-family: "Upwind Sans"}.no-break{ white-space: nowrap;}@media (max-width: 767px) {#brxe-a3f637 {font-size: 32px}}#brxe-1e5992 {text-align: center; font-family: "Upwind Sans"; color: var(--bricks-color-tkomdk); font-size: 18px; max-width: 845px; margin-top: 30px}#brxe-4aa9a1 {max-width: 1082px; border: 1px solid var(--border-gray); border-radius: 8px; align-items: center; padding-top: 90px; padding-right: 60px; padding-bottom: 90px; padding-left: 60px; background-color: #ffffff}@media (max-width: 767px) {#brxe-4aa9a1 {padding-top: 60px; padding-right: 40px; padding-bottom: 60px; padding-left: 40px}}@media (max-width: 767px) {#brxe-a8a69a {display: none}}#brxe-3e112e {display: none; aspect-ratio: 300 / 541 !important; width: 100%}@media (max-width: 767px) {#brxe-3e112e {display: flex}}#brxe-df8ced {max-width: 1082px; border: 1px solid var(--border-gray); border-radius: 8px; align-items: center; overflow: hidden}#brxe-59d3aa {width: 22px; height: 100%}#brxe-ca26ff {font-family: "Upwind Sans"}#brxe-0c09b2 {border: 1px solid #ACD0FC; border-radius: 4px; padding-top: 4px; padding-right: 24px; padding-bottom: 4px; padding-left: 24px; background-color: #F3F7FF; display: flex; align-items: center; column-gap: 8px; row-gap: 8px}#brxe-1b1622 {font-family: "Upwind Sans"}#brxe-8dd4b6 {border: 1px solid #ACD0FC; border-radius: 4px; padding-top: 4px; padding-right: 24px; padding-bottom: 4px; padding-left: 24px; background-color: #F3F7FF; display: flex; align-items: center; column-gap: 8px; row-gap: 8px}#brxe-372b2c {flex-direction: row; column-gap: 16px; row-gap: 16px}#brxe-3bcf2a {text-align: left; font-size: 32px; font-family: "Upwind Sans"; line-height: 1.2; max-width: 1000px}@media (max-width: 767px) {#brxe-3bcf2a {font-size: 28px}}#brxe-f5aaf1 {font-family: "Upwind Sans"; font-size: 18px; line-height: 1.5}#brxe-f8667d {font-family: "Upwind Sans"; font-size: 18px; line-height: 1.5}#brxe-1d9ea6 {column-gap: 12px; row-gap: 12px}#brxe-2a00e3 {max-width: 880px; padding-top: 60px; padding-right: 32px; padding-bottom: 60px; padding-left: 32px; column-gap: 28px; row-gap: 28px}@media (max-width: 478px) {#brxe-2a00e3 {padding-top: 32px; padding-bottom: 32px}}#brxe-d5369b {max-width: 1082px; border: 1px solid var(--border-gray); border-radius: 8px; align-items: center}#brxe-d5369b{ position: relative; background-color: #ffffff; z-index: 1;}#brxe-d5369b::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(293deg, #F2583C -62.82%, #9214C4 18.07%, #1E71ED 98.96%); opacity: 0; transition: opacity 0.3s ease; z-index: -1; border-radius: 7.9px;}#brxe-d5369b:hover::before { opacity: 1;}#brxe-d5369b:hover{ color: white !important;}#brxe-d5369b:hover .text{ color: white !important;}#brxe-d5369b:hover .tag { background: none; border: 1px solid white;} .icon1{ fill: #2C72DD;}#brxe-d5369b:hover .icon1{ fill: white;}#brxe-f00253 {height: 100%; width: 100%; width: 22px}#brxe-97ae53 {font-family: "Upwind Sans"}#brxe-7ec89c {border: 1px solid #D3CCFF; border-radius: 4px; padding-top: 4px; padding-right: 24px; padding-bottom: 4px; padding-left: 24px; background-color: #F7F5FF; display: flex; align-items: center; column-gap: 8px; row-gap: 8px}#brxe-f59b97 {font-family: "Upwind Sans"}#brxe-756b10 {border: 1px solid #D3CCFF; border-radius: 4px; padding-top: 4px; padding-right: 24px; padding-bottom: 4px; padding-left: 24px; background-color: #F7F5FF; display: flex; align-items: center; column-gap: 8px; row-gap: 8px}#brxe-46c3fb {flex-direction: row; column-gap: 16px; row-gap: 16px}#brxe-333f7a {font-size: 32px; font-family: "Upwind Sans"; line-height: 1.2}@media (max-width: 767px) {#brxe-333f7a {font-size: 28px}}#brxe-bb767d {font-family: "Upwind Sans"; font-size: 18px; line-height: 1.5}#brxe-76c181 {font-family: "Upwind Sans"; font-size: 18px; line-height: 1.5}#brxe-f9f6f0 {column-gap: 12px; row-gap: 12px}#brxe-9d1557 {max-width: 880px; padding-top: 60px; padding-right: 32px; padding-bottom: 60px; padding-left: 32px; column-gap: 28px; row-gap: 28px}@media (max-width: 478px) {#brxe-9d1557 {padding-top: 32px; padding-bottom: 32px}}#brxe-1bf06f {max-width: 1082px; border: 1px solid var(--border-gray); border-radius: 8px; align-items: center}#brxe-1bf06f{ position: relative; background-color: #ffffff; z-index: 1;}#brxe-1bf06f::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(293deg, #F2583C -30.73%, #9214C4 50.71%, #1E71ED 132.15%); opacity: 0; transition: opacity 0.3s ease; z-index: -1; border-radius: 7.9px;}#brxe-1bf06f:hover::before { opacity: 1;}#brxe-1bf06f:hover{ color: white !important;}#brxe-1bf06f:hover .text{ color: white !important;}#brxe-1bf06f:hover .tag { background: none; border: 1px solid white;} .icon2{ fill: #7762F8;}#brxe-1bf06f:hover .icon2{ fill: white;}#brxe-ade957 {height: 100%; width: 100%; width: 22px}#brxe-b08777 {font-family: "Upwind Sans"}#brxe-b3c812 {border: 1px solid #FFBDB0; border-radius: 4px; padding-top: 4px; padding-right: 24px; padding-bottom: 4px; padding-left: 24px; background-color: #FFF2F0; display: flex; align-items: center; column-gap: 8px; row-gap: 8px}#brxe-1af5d0 {font-family: "Upwind Sans"}#brxe-3a1699 {border: 1px solid #FFBDB0; border-radius: 4px; padding-top: 4px; padding-right: 24px; padding-bottom: 4px; padding-left: 24px; background-color: #FFF2F0; display: flex; align-items: center; column-gap: 8px; row-gap: 8px}#brxe-633861 {flex-direction: row; column-gap: 16px; row-gap: 16px}#brxe-af19d1 {font-size: 32px; font-family: "Upwind Sans"; line-height: 1.2; max-width: 1000px}@media (max-width: 767px) {#brxe-af19d1 {font-size: 28px}}#brxe-380cf1 {font-family: "Upwind Sans"; font-size: 18px; line-height: 1.5}#brxe-841319 {font-family: "Upwind Sans"; font-size: 18px; line-height: 1.5}#brxe-855889 {column-gap: 12px; row-gap: 12px}#brxe-54ece9 {max-width: 880px; padding-top: 60px; padding-right: 32px; padding-bottom: 60px; padding-left: 32px; column-gap: 28px; row-gap: 28px}@media (max-width: 478px) {#brxe-54ece9 {padding-top: 32px; padding-bottom: 32px}}#brxe-a39915 {max-width: 1082px; border: 1px solid var(--border-gray); border-radius: 8px; align-items: center}#brxe-a39915{ position: relative; background-color: #ffffff; z-index: 1;}#brxe-a39915::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(293deg, #F2583C 1.19%, #9214C4 82.21%, #1E71ED 163.23%); opacity: 0; transition: opacity 0.3s ease; z-index: -1; border-radius: 7.9px;}#brxe-a39915:hover::before { opacity: 1;}#brxe-a39915:hover{ color: white !important;}#brxe-a39915:hover .text{ color: white !important;}#brxe-a39915:hover .tag { background: none; border: 1px solid white;} .icon3{ fill: #F2583C;}#brxe-a39915:hover .icon3{ fill: white;}#brxe-e2dfd6 {width: 12px}#brxe-6ed771 {width: 36px; height: 36px; min-width: auto; min-height: auto; display: flex; align-items: center; justify-content: center}#brxe-6ed771 { border: 1px solid transparent; background: linear-gradient(#fff, #fff) padding-box, linear-gradient(90deg, #F2583C 0%, #9214C
6764 50%, #1E71ED 100%) border-box; border-radius: 4px; }#brxe-2a20d2 {text-align: center; font-size: 40px; margin-top: 15px}@media (max-width: 767px) {#brxe-2a20d2 {font-size: 32px; text-align: center}}#btn1 {padding-top: 8px; padding-right: 20px; padding-bottom: 8px; padding-left: 20px; line-height: 1.2; letter-spacing: 0%; color: var(--bricks-color-hffyut)}#btn1{ font-size: 20px !important; background: #FCFCFC; border: 1px solid #E2E2E2; transition: all 0.3s ease;}#btn1:hover{ border: 1px solid transparent; background: linear-gradient(#fff, #fff) padding-box, var(--brand-gradient) border-box;}#btn1:hover::after{ opacity: 0 !important;} .btn-active{ border: 1px solid transparent !important; border-radius: 4px !important; background: linear-gradient(#fff, #fff) padding-box, var(--brand-gradient) border-box !important; }#btn2 {padding-top: 8px; padding-right: 20px; padding-bottom: 8px; padding-left: 20px; min-width: 2px; line-height: 1.2; letter-spacing: 0%; color: var(--bricks-color-hffyut)}#btn2{ font-size: 20px !important; background: #FCFCFC; border: 1px solid #E2E2E2; transition: all 0.3s ease;}#btn2:hover{ border: 1px solid transparent; background: linear-gradient(#fff, #fff) padding-box, var(--brand-gradient) border-box;}#btn2:hover::after{ opacity: 0 !important;} .btn-active{ border: 1px solid transparent !important; border-radius: 4px !important; background: linear-gradient(#fff, #fff) padding-box, var(--brand-gradient) border-box !important; }@media (max-width: 478px) {#btn2 {margin-top: 0}}#btn3 {padding-top: 8px; padding-right: 20px; padding-bottom: 8px; padding-left: 20px; line-height: 1.2; letter-spacing: 0%; color: var(--bricks-color-hffyut); font-size: 20px}#btn3{ font-size: 20px !important; background: #FCFCFC; border: 1px solid #E2E2E2; transition: all 0.3s ease;}#btn3:hover{ border: 1px solid transparent; background: linear-gradient(#fff, #fff) padding-box, var(--brand-gradient) border-box;}#btn3:hover::after{ opacity: 0 !important;} .btn-active{ border: 1px solid transparent !important; border-radius: 4px !important; background: linear-gradient(#fff, #fff) padding-box, var(--brand-gradient) border-box !important; }@media (max-width: 478px) {#btn3 {margin-top: 0}}#brxe-aa68e8 {flex-direction: row; justify-content: center; column-gap: 24px; margin-top: 30px; margin-bottom: 10px}@media (max-width: 767px) {#brxe-aa68e8 {padding-right: 20px; padding-left: 20px; row-gap: 24px}}#state1 {width: 100%; padding-top: 0; height: 100%}#state1{ aspect-ratio: 1398 / 734 !important;}#state2 {padding-top: 0; width: 100%; height: 100%; display: none}#state2{ aspect-ratio: 1398 / 734 !important;}#state3 {padding-top: 0; width: 100%; height: 100%; display: none}#state3{ aspect-ratio: 1398 / 734 !important;}#brxe-c9e0d8 {max-width: 1400px; width: 100%; aspect-ratio: 1398 / 734; margin-top: 40px; border: 1px solid var(--border-gray); border-radius: 14px; overflow: hidden; background-color: white}#brxe-38cb90 {align-items: center; max-width: 100%; margin-top: 350px; position: relative}#brxe-38cb90::before { content: ''; display: block; position: absolute; height: calc(100% + 175px + 175px); width: 100vw; left: 50%; top: -175px; transform: translateX(-50vw); z-index: 1; background-color: #ffffff;}#brxe-38cb90 > * { position: relative; z-index: 2;}#brxe-96cd9f {font-family: "Upwind Sans"; text-align: center; font-size: 40px; max-width: 1000px}@media (max-width: 767px) {#brxe-96cd9f {font-size: 32px}}#brxe-031f48 {text-decoration: none; font-family: "Upwind Sans"; font-weight: 400}#brxe-4c75b7 {text-decoration: none; width: 168px; display: flex; align-items: center; justify-content: center; padding-top: 8px; padding-bottom: 8px; border: 1px solid var(--border-gray); border-radius: 4px; transition: color 0.1s ease-out; cursor: pointer}#brxe-4c75b7:hover{ border: 1px solid transparent; background: linear-gradient(#fff, #fff) padding-box, linear-gradient(90deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%) border-box; border-radius: 4px; }#brxe-4c75b7:hover * { background: linear-gradient(90deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; color: transparent;}#brxe-dbd283 {text-decoration: none; font-family: "Upwind Sans"; font-weight: 400}#brxe-769c27 {justify-content: center; align-items: center; padding-top: 8px; padding-bottom: 8px; width: 168px; display: flex; border: 1px solid var(--border-gray); border-radius: 4px; transition: color 0.1s ease-out; cursor: pointer; text-decoration: none}#brxe-769c27:hover{ border: 1px solid transparent; background: linear-gradient(#fff, #fff) padding-box, linear-gradient(90deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%) border-box; border-radius: 4px; }#brxe-769c27:hover * { background: linear-gradient(90deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; color: transparent;}#brxe-bc88c6 {text-decoration: none; font-family: "Upwind Sans"; font-weight: 400}#brxe-1e16c3 {width: 168px; display: flex; align-items: center; justify-content: center; padding-top: 8px; padding-bottom: 8px; border: 1px solid var(--border-gray); border-radius: 4px; transition: color 0.1s ease-out; cursor: pointer; text-decoration: none}#brxe-1e16c3:hover{ border: 1px solid transparent; background: linear-gradient(#fff, #fff) padding-box, linear-gradient(90deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%) border-box; border-radius: 4px; }#brxe-1e16c3:hover * { background: linear-gradient(90deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; color: transparent;}#brxe-9a3829 {align-items: center; flex-direction: row; justify-content: center; column-gap: 20px; row-gap: 20px; margin-top: 25px}#brxe-d6abbb {align-items: center; margin-top: 350px; margin-bottom: 200px; max-width: 1100px; border: 1px solid var(--border-gray); border-radius: 8px; padding-top: 40px; padding-right: 30px; padding-bottom: 40px; padding-left: 30px; background-color: white}#brxe-1825aa {column-gap: 20px; row-gap: 20px; padding-top: 200px; padding-bottom: 200px}#brxe-7dd70c {text-align: center; color: var(--bricks-color-tkomdk)}@media (max-width: 767px) {#brxe-7dd70c {font-size: 28px; text-align: center}}#brxe-73f7f8 {margin-top: 20px}#brxe-84ba44 {align-items: center; padding-right: 32px; padding-left: 32px}.brxe-fbmjgf {background-image: linear-gradient(90deg, #ffffff, #ffffff00); width: 80px; position: absolute; top: 0px; left: 0px; z-index: 4; height: 100%}@media (max-width: 767px) {.brxe-fbmjgf {width: 50px}}.brxe-zslsay {background-image: linear-gradient(-90deg, #ffffff, #ffffff00); width: 80px; position: absolute; top: 0px; z-index: 4; height: 100%; right: 0px}@media (max-width: 767px) {.brxe-zslsay {width: 50px}}.brxe-ekyfwa {flex-direction: row; column-gap: 36px; justify-content: center; align-items: center; position: relative}.brxe-ekyfwa .element-scroll-wrapper { align-items: center !important;}@media (max-width: 991px) {.brxe-ekyfwa {flex-wrap: wrap; row-gap: 24px}}.brxe-rvjooe {position: relative; margin-top: 60px; margin-right: 32px; margin-left: 32px; overflow: hidden; max-width: 100%; width: calc(100% - 64px); align-self: center !important}@media (max-width: 767px) {.brxe-rvjooe {margin-right: 0; margin-left: 0; width: 100%}}#brxe-118188 {max-width: none}#brxe-423e4e {justify-content: center; align-items: center; padding-top: 200px; padding-right: 0; padding-bottom: 200px; padding-left: 0; overflow: hidden; min-height: 50svh}.brxe-xjxnqs {position: absolute; z-index: 4; top: 0px; right: 0px; bottom: 0px; left: 0px; border: 1px solid #e2e2e2; border-radius: 8px; background-color: #ffffff; opacity: 1; transition: opacity 0.3s ease}.brxe-fssmog {height: 100%; width: auto !important; max-width: none}.brxe-pdbnrp {position: relative; width: auto; align-items: flex-start; flex-grow: 0; flex-shrink: 0; border: 1px solid #E2E2E2; border-radius: 4px; height: 36px; justify-content: center; padding-top: 10px; padding-right: 15px; padding-bottom: 10px; padding-left: 15px; background-color: #FAFAFA; z-index: 5}.brxe-erdnwq {color: var(--bricks-color-hffyut); font-size: 16px !important; line-height: 1.3 !important; margin-top: 0; position: relative}.brxe-erdnwq::before { content: "â"; display: block; position: absolute; right: 100%; top: 0; height: auto; width: auto; color: inherit;}.brxe-fdndcv {flex-grow: 1; flex-shrink: 1; position: relative; z-index: 5; margin-top: 16px; margin-bottom: 0}.brxe-gmzoer {width: 50px; height: 50px; border-radius: 99px; flex-grow: 0; flex-shrink: 0}.brxe-gmzoer:not(.tag), .brxe-gmzoer img {aspect-ratio: 1 / 1; object-fit: cover}.brxe-trpqwc {color: var(--bricks-color-hffyut); font-weight: 500; letter-spacing: -0.12px; font-size: 12px; line-height: 1.2}.brxe-kdsutj {color: var(--bricks-color-puxggr); font-weight: 400; letter-spacing: -0.12px; font-size: 12px; line-height: 1.2}.brxe-ujdveo {row-gap: 4px}.brxe-inlguk {margin-top: 14px; flex-grow: 0; flex-shrink: 0; position: relative; z-index: 5; flex-direction: row; column-gap: 12px; align-items: center; padding-top: 8px; padding-bottom: 8px}@media (max-width: 767px) {.brxe-inlguk {flex-direction: row; flex-wrap: nowrap; column-gap: 12px}}.brxe-omjaao {height: 100%}.brxe-govwpy {width: 100vw; height: 100svh; top: 0px; left: 0px; bottom: 0px; right: 0px; z-index: 2 !important}.brxe-govwpy { position: fixed !important; box-shadow: 0 0 16px 0 rgba(255, 255, 255, 0.60) inset;}.brxe-ticcbg {max-width: 387px; height: auto; width: 100%}.brxe-pzllzp {max-width: 774px; width: 100%; color: #ffffff; font-weight: 400; line-height: 1.1; letter-spacing: -2.24px; font-family: "Upwind Sans"; font-size: 56px; margin-top: 52px; margin-bottom: 34px}@media (max-width: 767px) {.brxe-pzllzp {font-size: 28px; line-height: 1.2; font-family: "Upwind Sans"; font-weight: 400; letter-spacing: 0px}}.brxe-pmeykc {width: 102px; height: 102px; border-radius: 99px; flex-grow: 0; flex-shrink: 0}.brxe-pmeykc:not(.tag), .brxe-pmeykc img {aspect-ratio: 1 / 1; object-fit: cover}@media (max-width: 767px) {.brxe-pmeykc {width: 52px; height: 52px}}.brxe-dcjppx {color: #ffffff}.brxe-dcjppx { font-size: 22px !important; font-weight: 500 !important; letter-spacing: -0.225px !important; line-height: 1.2 !important;}@media (max-width: 767px) {.brxe-dcjppx {font-size: 16px !important}}.brxe-tiwpcl {color: #ffffff; font-weight: 400; letter-spacing: -0.225px; font-size: 22px; line-height: 1.2}@media (max-width: 767px) {.brxe-tiwpcl {font-size: 14px !important}}.brxe-sxxpzl {row-gap: 6px}.brxe-gthbgl {flex-grow: 0; flex-shrink: 0; position: relative; z-index: 5; flex-direction: row; column-gap: 20px; align-items: center}@media (max-width: 767px) {.brxe-gthbgl {display: flex; flex-wrap: nowrap}}.brxe-wkrfhj {flex-direction: column; display: block}@media (max-width: 767px) {.brxe-wkrfhj {flex-wrap: nowrap; flex-direction: column}}.brxe-erycct {position: fixed; left: -9999px; width: 100vw; top: -9999px; padding-top: 57px; padding-right: 67px; padding-bottom: 72px; padding-left: 67px; z-index: 2; height: 100svh; overflow: scroll; display: block}.brxe-erycct { pointer-events: none;} .brxe-erycct > * { position: relative; z-index: 3;}@media (max-width: 767px) {.brxe-erycct {flex-direction: column; flex-wrap: nowrap; padding-top: 28px; padding-right: 32px; padding-bottom: 40px; padding-left: 32px}}.brxe-tdhfns {flex-direction: column; flex-grow: 0; flex-shrink: 0; align-items: flex-start; padding-top: 30px; padding-right: 20px; padding-bottom: 30px; padding-left: 20px; border-radius: 8px; height: 100%}.brxe-sfvetv {align-self: stretch !important; width: 100%; align-items: flex-start; flex-grow: 0; flex-shrink: 0; max-width: 347px; min-height: 374px; position: relative; border-radius: 8px}#brxe-8be174 {text-align: center; font-size: 40px; max-width: 700px}@media (max-width: 767px) {#brxe-8be174 {font-size: 32px}}#brxe-f3acf3 {padding-bottom: 50px; flex-direction: column; align-items: center; background-color: #ffffff}#brxe-dbfee6 {color: #ffffff}@media (max-width: 478px) {#brxe-dbfee6 {text-align: center}}#brxe-620421 {padding-top: 9px; padding-right: 24px; padding-bottom: 6px; padding-left: 24px; font-size: 16px; font-family: "aktiv-grotesk"; font-weight: 500; line-height: 1.4; letter-spacing: -0.16px; color: var(--bricks-color-hffyut); background-color: transparent}#brxe-620421::after { padding-top: 9px; padding-bottom: 6px;}#brxe-d2da6e {padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0; justify-content: center; align-items: center; flex-direction: row; column-gap: 35px}@media (max-width: 767px) {#brxe-d2da6e {row-gap: 25px}}@media (max-width: 478px) {#brxe-d2da6e {flex-direction: column; justify-content: center; align-items: center; row-gap: 16px; padding-top: 32px; padding-right: 32px; padding-bottom: 32px; padding-left: 32px}}#brxe-50b720 {padding-top: 15px; padding-right: 25px; padding-bottom: 15px; padding-left: 25px; justify-content: center; align-items: center; border-radius: 12px; position: relative}#brxe-50b720 .top-left,#brxe-50b720 .top-right,#brxe-50b720 .bottom-left,#brxe-50b720 .bottom-right { display: block; position: absolute; height: 16px; width: 16px; transform: translateX(-50%) translateY(-50%);}#brxe-50b720 .top-left { left: 0; top: 0;}
676#brxe-50b720 .top-right { left: 100%; top: 0;}#brxe-50b720 .bottom-left { left: 0; top: 100%;}#brxe-50b720 .bottom-right { left: 100%; top: 100%;}#brxe-98d47f {background-color: #ffffff; min-height: auto}#brxe-98d47f { max-height: 20px !important; height: 20px !important;}.brxe-dgfwft {flex-grow: 0; flex-shrink: 0; aspect-ratio: 272 / 164; flex-direction: row; position: relative; justify-content: center; align-items: center}@media (max-width: 767px) {.brxe-dgfwft {flex-direction: row; justify-content: center; align-items: center}}.brxe-ncomkr {border: 1px solid var(--bricks-color-onpvpa); border-radius: 4px; padding-top: 2px; padding-right: 5px; padding-bottom: 2px; padding-left: 5px; flex-grow: 0; flex-shrink: 0; color: var(--bricks-color-puxggr)}.brxe-aaogyn {flex-grow: 1; flex-shrink: 1; line-height: 1.3; font-size: 20px; margin-top: 10px; margin-bottom: 20px}.brxe-aaogyn{ display: -webkit-box;-webkit-line-clamp: 5;-webkit-box-orient: vertical;overflow: hidden;text-overflow: ellipsis;}.brxe-kglili {margin-top: 0; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; transform: translateX(-10px) translateY(10px); min-width: calc(100% + 20px)}.brxe-kglili { color: #777779 !important; font-family: "Upwind Sans" !important; font-weight: 400 !important; text-decoration: none !important; line-height: 1.6 !important;}.brxe-ihekuj {flex-grow: 1; flex-shrink: 1; background-color: #ffffff; padding-top: 20px; position: relative}.brxe-ihekuj::before { content: ''; display: block; position: absolute; height: calc(100% + 10px); width: calc(100% + 20px); left: -10px; top: 0px; background: #ffffff;} .brxe-ihekuj > * { position: relative; z-index: 2;}@media (max-width: 478px) {.brxe-ihekuj {flex-direction: column; flex-wrap: nowrap}}.brxe-ixudtw {border-top: 20px solid #ffffff; border-right: 20px solid #ffffff; border-bottom: 25px solid #ffffff; border-left: 20px solid #ffffff; flex-direction: column; height: 100%}@media (max-width: 767px) {.brxe-ixudtw {flex-direction: column; flex-wrap: nowrap}}.brxe-fwitce {border: 1px solid var(--border-gray); border-radius: 12px; overflow: hidden; height: 100%; flex-direction: row; position: relative; z-index: 1}.brxe-tohdxr {height: 100%; position: relative}#brxe-a95bf7 .splide__arrow--prev {right: calc(100% + 44px); left: auto; transform: translateX(0px)}#brxe-a95bf7 .splide__arrow--next {left: calc(100% + 44px); right: auto; transform: translateX(0px)}#brxe-a95bf7 .splide__arrow {width: 56px; height: 56px}#brxe-a95bf7 .splide__arrow--prev > * {width: 15px; height: 25px}#brxe-a95bf7 .splide__arrow--next > * {height: 25px; width: 15px}#brxe-a95bf7 .splide__list { align-items: stretch !important;}#brxe-a95bf7 .top-left,#brxe-a95bf7 .top-right,#brxe-a95bf7 .bottom-left,#brxe-a95bf7 .bottom-right { display: block; position: absolute; height: 16px; width: 16px; transform: translateX(-50%) translateY(-50%);}#brxe-a95bf7 .top-left { left: 0; top: 0;}#brxe-a95bf7 .top-right { left: 100%; top: 0;}#brxe-a95bf7 .bottom-left { left: 0; top: 100%;}#brxe-a95bf7 .bottom-right { left: 100%; top: 100%;}#brxe-a95bf7 .splide__slide::before,#brxe-a95bf7 .splide__slide::after { content: ''; display: block; position: absolute; left: 0px; top: 0px; height: 100%; width: 20px; background: white;}#brxe-a95bf7 .splide__slide::after { width: 60px; left: calc(100% - 20px);}@media (max-width: 767px) {#brxe-a95bf7 .splide__arrow--next {left: 50px; top: calc(100% + 20px); right: auto}#brxe-a95bf7 .splide__arrow--prev {top: calc(100% + 20px); right: auto; left: 0px}#brxe-a95bf7 .splide__arrow { border: 1px solid #e2e2e2; border-radius: 8px;}#brxe-a95bf7 .splide__arrow svg { height: 18px !important;}#brxe-a95bf7 .splide__arrow {height: 40px; width: 40px; font-size: 40px; min-height: 40px; min-width: 40px}#brxe-a95bf7 .splide__arrow svg {height: 40px; width: 40px}#brxe-a95bf7 .splide__arrow--prev > * {height: auto; width: 10px}#brxe-a95bf7 .splide__arrow--next > * {height: auto; width: 10px}}@media (max-width: 478px) {#brxe-a95bf7 {min-height: 100%; max-height: 100%}#brxe-a95bf7 .splide__slide {height: 100%}}#brxe-5be3fe {align-items: center; max-width: 1100px}#brxe-5be3fe { background: radial-gradient( 81.19% 950.56% at 83.83% 49.49%, rgb(242, 88, 60) 10.68%, rgb(154, 49, 196) 46.15%, rgb( 30, 113, 237) 100% );}#brxe-737ef0 {padding-top: 150px; padding-bottom: 150px}#brxe-12010f {color: var(--bricks-color-tkomdk); text-align: center; font-size: 40px}@media (max-width: 767px) {#brxe-12010f {font-size: 32px; text-align: center}}#brxe-e3ad6b {text-align: center; font-family: "Upwind Sans"; margin-top: 5px}#brxe-e3ad6b a {text-align: center; font-family: "Upwind Sans"; font-size: inherit}#brxe-191f18 {margin-top: 10px}#brxe-fbcc11 {align-items: center; max-width: 580px; row-gap: 12px}#brxe-bc3122 {max-width: 1000px}#brxe-d68eef {position: relative; padding-top: 150px; padding-bottom: 150px}#brxe-52d55c {color: #ffffff; text-align: center}@media (max-width: 767px) {#brxe-52d55c {font-size: 40px; text-align: center}}#brxe-cea52c {color: #ffffff; text-align: center; line-height: 1.6; max-width: 500px; margin-top: 30px}@media (max-width: 767px) {#brxe-cea52c {font-size: 16px}}#brxe-c4d942 {margin-top: 20px}#brxe-33b699 {max-width: 1300px; min-height: 400px; border-radius: 16px; overflow: hidden; background-color: var(--bricks-color-kyjivg); padding-top: 32px; padding-right: 32px; padding-bottom: 32px; padding-left: 32px; justify-content: center; align-items: center; position: relative}#brxe-33b699 > * { position: relative; z-index: 2;}@media (max-width: 767px) {#brxe-33b699 {min-height: 600px}}#brxe-fc9d88 {padding-top: 100px; padding-bottom: 100px}@media (max-width: 767px) {#brxe-9376a4 {display: none}}#brxe-4e977d {max-width: 190px; justify-content: space-between}#brxe-fb6d78 {color: var(--bricks-color-hffyut); font-family: "Upwind Sans"; font-weight: 500; line-height: 1.4; font-size: 14px; letter-spacing: -1%; flex-grow: 0; flex-shrink: 0}@media (max-width: 767px) {#brxe-fb6d78 {margin-bottom: 10px}}#brxe-9c1c97 #gform_2 #input_2_1 { padding: 7px 15px; font-size: 14px !important; font-weight: 400 !important; line-height: 1.4 !important; letter-spacing: -1%; border: 1px solid #E2E2E2; border-radius: 4px !important;}#brxe-9c1c97 .gform_footer #gform_submit_button_2 { padding-top: 7px; padding-bottom: 7px; padding-right: 15px; padding-left: 15px; font-weight: 400 !important; font-size: 14px !important; line-height: 1.4 !important; letter-spacing: -1% !important;}#brxe-9c1c97 input::placeholder,#brxe-9c1c97 textarea::placeholder { text-transform: capitalize !important; color: #75808E !important;}#brxe-9c1c97 form{ gap: 8px !important;}#brxe-a661d8 {column-gap: 16px; flex-direction: row; padding-right: 15px; padding-left: 15px; align-items: center}@media (max-width: 767px) {#brxe-a661d8 {padding-right: 0; padding-left: 0}}#brxe-e26b96 {margin-bottom: 10px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-weight: 500; letter-spacing: -1%; color: var(--bricks-color-hffyut)}#brxe-dd9800 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-dd9800:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA;
676 color: #141217 !important;}#brxe-dd9800{ transition: all 0.3s ease;}#brxe-128b3c {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-128b3c:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-128b3c{ transition: all 0.3s ease;}#brxe-b8cc93 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-b8cc93:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-b8cc93{ transition: all 0.3s ease;}#brxe-a985e6 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-a985e6:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-a985e6{ transition: all 0.3s ease;}#brxe-2e920d {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-2e920d:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-2e920d{ transition: all 0.3s ease;}#brxe-77dd75 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-77dd75:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-77dd75{ transition: all 0.3s ease;}#brxe-27a337 {row-gap: 10px}#brxe-a09884 {padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px}@media (max-width: 991px) {#brxe-a09884 {width: 50%}}#brxe-be4d6e {margin-bottom: 10px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-weight: 500; letter-spacing: -1%; color: var(--bricks-color-hffyut)}#brxe-37a092 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-37a092:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-37a092{ transition: all 0.3s ease;}#brxe-5c03f8 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-5c03f8:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-5c03f8{ transition: all 0.3s ease; text-wrap: nowrap;}#brxe-5c03f8 .text{ padding-left: 10px;}#brxe-ea43c3 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-ea43c3:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-ea43c3{ transition: all 0.3s ease;}#brxe-d60ccb {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-d60ccb:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA;
676 color: #141217 !important;}#brxe-d60ccb{ transition: all 0.3s ease;}#brxe-48449c {row-gap: 10px}#brxe-d01707 {padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px}@media (max-width: 991px) {#brxe-d01707 {width: 50%}}#brxe-6e8de0 {margin-bottom: 10px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-weight: 500; letter-spacing: -1%; color: var(--bricks-color-hffyut)}#brxe-8838a1 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-8838a1:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-8838a1{ transition: all 0.3s ease;}#brxe-ee2fe6 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-ee2fe6:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-ee2fe6{ transition: all 0.3s ease;}#brxe-b62ffd {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-b62ffd:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-b62ffd{ transition: all 0.3s ease;}#brxe-18701d {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-18701d:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-18701d{ transition: all 0.3s ease;}#brxe-031615 {row-gap: 10px}#brxe-9e78f5 {padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px}@media (max-width: 991px) {#brxe-9e78f5 {width: 50%}}#brxe-e39c62 {margin-bottom: 10px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; font-weight: 500; letter-spacing: -1%; color: var(--bricks-color-hffyut)}#brxe-ec64f9 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-ec64f9:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-ec64f9{ transition: all 0.3s ease;}#brxe-85bde4 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-85bde4:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-85bde4{ transition: all 0.3s ease;}#brxe-cca1ad {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-cca1ad:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-cca1ad{ transition: all 0.3s ease;}#brxe-808838 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-808838:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA;
676 color: #141217 !important;}#brxe-808838{ transition: all 0.3s ease;}#brxe-82a790 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-82a790:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-82a790{ transition: all 0.3s ease;}#brxe-mjhnpk {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4; padding-top: 5px; padding-right: 10px; padding-bottom: 5px; padding-left: 10px; border: 1px solid hsla(0, 0%, 100%, 0); border-radius: 4px}#brxe-mjhnpk:hover{ border: 1px solid #E2E2E2; border-radius: 4px; background: #FAFAFA; color: #141217 !important;}#brxe-mjhnpk{ transition: all 0.3s ease;}#brxe-3033ad {row-gap: 10px}#brxe-1ef5f7 {padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px}@media (max-width: 991px) {#brxe-1ef5f7 {width: 50%}}#brxe-76fb6f {flex-direction: row; padding-bottom: 118px}@media (max-width: 991px) {#brxe-76fb6f {flex-wrap: wrap; row-gap: 30px}}#brxe-8a6d39 {row-gap: 50px}@media (max-width: 767px) {#brxe-8a6d39 {margin-top: 30px}}#brxe-61b82b {flex-direction: row; column-gap: 10px; align-items: stretch; padding-top: 20px; padding-right: 20px; padding-bottom: 20px; padding-left: 20px}#brxe-a93d17 {font-size: 14px; line-height: 1.4; font-family: "Upwind Sans"; font-weight: 500; color: var(--bricks-color-hffyut)}#brxe-b14d0c {color: var(--bricks-color-tkomdk); font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; line-height: 1.4}#brxe-09d195 {flex-direction: row; column-gap: 4px}@media (max-width: 478px) {#brxe-09d195 {flex-direction: row; justify-content: center; margin-top: 5px}}#brxe-a13d51 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4}#brxe-c9a438 {font-size: 14px; font-family: "Upwind Sans"; font-weight: 500; color: #777779; text-decoration: none; line-height: 1.4}#brxe-6bb1aa {flex-direction: row; justify-content: flex-end; column-gap: 24px}@media (max-width: 478px) {#brxe-6bb1aa {justify-content: center; flex-direction: column; align-items: center; row-gap: 5px}}#brxe-42f2ac {flex-direction: row; justify-content: space-between; padding-top: 30px; padding-bottom: 30px; align-items: center}@media (max-width: 767px) {#brxe-42f2ac {flex-wrap: nowrap}}@media (max-width: 478px) {#brxe-42f2ac {padding-right: 20px; padding-left: 20px; flex-direction: column-reverse; align-items: center; justify-content: center}}#brxe-c0208b {position: absolute; max-width: 100%}#brxe-8fd756 {max-width: 100%; visibility: hidden}#brxe-731131:not(.tag), #brxe-731131 img {aspect-ratio: 1079.97/254.77; object-fit: cover; object-position: 0% 0%}#brxe-731131 {position: absolute; max-width: 100%; opacity: 0}#brxe-731131{ transition: all 0.3s ease;}#brxe-c599ee {position: absolute; top: 0px; left: 0px; width: 14.8%; display: block; aspect-ratio: 160.29/41.9}#brxe-e4352e {background-size: contain; background-repeat: no-repeat; position: relative; height: 100%}@media (max-width: 478px) {#brxe-e4352e {padding-right: 20px; padding-left: 20px}}#brxe-969b62 {max-width: 1080px; margin-bottom: 0; padding-bottom: 0}@media (max-width: 478px) {#brxe-969b62 {max-width: 100%}}#brxe-5daba3 {padding-top: 120px; padding-bottom: 0}@media (max-width: 478px) {#brxe-5daba3 {padding-top: 60px; padding-right: 0; padding-left: 0; margin-right: 0; margin-left: 0}}.brxe-popup-23248 .brx-popup-content {padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0; max-width: 490px}.brxe-popup-23248.brx-popup .brx-popup-backdrop {background-color: rgba(255, 255, 255, 0.95)}#brxe-912211 {position: absolute; right: -30px; width: 18px; height: auto; top: -30px; z-index: 2}#brxe-12cc75 {color: #18202d; font-size: 30px; font-family: "Upwind Sans"; font-weight: 400; line-height: 1.16}#brxe-6995d2 {margin-top: 10px; color: #75808e; font-size: 16px; font-family: "Upwind Sans"; font-weight: 500; line-height: 1.2}#brxe-6995d2 a { color: #2c72dd;}#brxe-6995d2 a:hover { color: #18202d; text-decoration: none;}#brxe-90cc25 {width: 62px; height: auto}#brxe-335b4f {flex-grow: 0; flex-shrink: 0; width: auto}#brxe-69db6e {flex-direction: row; column-gap: 25px}#brxe-b17418 {font-family: "Upwind Sans"; font-size: 15px; color: #75808e; font-weight: 500; line-height: 1.4; padding-left: 15px; margin-bottom: 5px}#brxe-8906c4 {flex-direction: column; row-gap: 20px}#brxe-4d315b {flex-direction: column; row-gap: 40px}#brxe-2bbe5c {max-width: 490px; margin-right: auto; margin-left: auto; border: 1px solid #d8dfe9; border-radius: 24px; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; position: relative; overflow: visible; width: 100%}.brxe-popup-22846 .brx-popup-content {padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0; max-width: 490px}.brxe-popup-22846.brx-popup .brx-popup-backdrop {background-color: rgba(255, 255, 255, 0.95)}#brxe-7f0d01 {position: absolute; right: -30px; width: 18px; height: auto; top: -30px; z-index: 2}#brxe-958358 {color: #18202d; font-size: 30px; font-family: "Upwind Sans"; font-weight: 400; line-height: 1.16}#brxe-8c013e {margin-top: 10px; color: #75808e; font-size: 16px; font-family: "Upwind Sans"; font-weight: 500; line-height: 1.2}#brxe-8c013e a { color: #2c72dd;}#brxe-8c013e a:hover { color: #18202d; text-decoration: none;}#brxe-b5f22d {width: 62px; height: auto}#brxe-4f5770 {flex-grow: 0; flex-shrink: 0; width: auto}#brxe-d4850d {flex-direction: row; column-gap: 25px}#brxe-1894f1 {font-family: "Upwind Sans"; font-size: 15px; color: #75808e; font-weight: 500; line-height: 1.4; padding-left: 15px; margin-bottom: 5px}#brxe-a47934 {font-family: "Upwind Sans"; font-size: 15px; color: #75808e; font-weight: 500; line-height: 1.4; padding-left: 15px; margin-bottom: 5px}#brxe-9e414a {flex-direction: column; row-gap: 20px}#brxe-e7e4aa {flex-direction: column; row-gap: 40px}#brxe-a38848 {max-width: 490px; margin-right: auto; margin-left: auto; border: 1px solid #d8dfe9; border-radius: 24px; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; position: relative; overflow: visible; width: 100%}.brxe-section { overflow: hidden; } #brx-header { top: 0 !important; } #brx-header .brxe-section { overflow: visible; } .inline-underline { position: relative; } .inline-underline::before { content: ''; display: block; position: absolute; height: 2px; width: 100%; left: 0; bottom: 0; background: linear-gradient(94.33deg, #F2583C -1.2%, #9214C4 52.79%, #1E71ED 98.47%); } .brxe-popup-23484 > .brxe-container { overflow: visible !important; } .wp-block-video video { height: auto !important; } .gradient-text { background: linear-gradient(95deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .gradient-text-dark { background: linear-gradient(95deg, #FF5950 0%, #F863F5 50%, #57C1FE 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .bricks-image-caption { display: none !important; } .accordion-item { position: relative; } .accordion-item::before { content: ''; display: block; position: absolute; height: 1px; width: 100%; left: 0; bottom: 0; background: #94A3B8; } .brx-open.accordion-item::before { background: linear-gradient(94.33deg, #F2583C -1.2%, #9214C4 52.79%, #1E71ED 98.47%); } :root { --brand-gradient: linear-gradient(90deg, #F2583C 0%, #9214C4 52.79%, #1E71ED 98.47%); --brand-gradient-dark: linear-gradient(90deg, #FF5950 0%, #F863F5 52.79%, #57C1FE 98.47%); } .brxe-button, .bricks-button, #gform_submit_button_2 { position: relative; border: 1px solid transparent; background: linear-gradient(#fff, #fff) padding-box, var(--brand-gradient) border-box; color: #18202D !important; font-size: 16px !important; font-family: "Upwind Sans" !important; font-weight: 400 !important; line-height: 1.4 !important; letter-spacing: -0.16px !important; text-decoration: none !important; cursor: pointer; overflow: hidden; transition: background 0.2s ease; } .brxe-button.dark-button, .bricks-button.dark-button { background: linear-gradient(#18202D, #18202D) padding-box, var(--brand-gradient-dark) border-box; color: #ffffff !important; } input.brxe-button, input.bricks-button, input#gform_submit_button_2 { appearance: none; -webkit-appearance: none; } .brxe-button[data-text]:not([data-text=""])::after, .bricks-button[data-text]:not([data-text=""])::after { content: attr(data-text); position: absolute; inset: 0; padding-top: 7px; padding-bottom: 7px; padding-left: 0; padding-right: 0; font: inherit; line-height: inherit; letter-spacing: inherit; text-align: inherit; pointer-events: none; background: var(--brand-gradient); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; opacity: 0; transition: opacity 0.2s ease; } .brxe-button > .hover-content { display: flex; position: absolute; align-items: center; column-gap: 5px; justify-content: center; inset: 0; padding-top: 7px; padding-bottom: 7px; padding-left: 0; padding-right: 0; font: inherit; line-height: inherit; letter-spacing: inherit; text-align: inherit; pointer-events: none; background: var(--brand-gradient); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; opacity: 0; transition: opacity 0.2s ease; } .brxe-button > .hover-content svg { color: #F2583C; } .brxe-button.dark-button::after, .bricks-button.dark-button::after { background: var(--brand-gradient-dark); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; } .brxe-button:hover, .bricks-button:hover, .bricks-button.brx-option-active, #gform_submit_button_2:hover { background: linear-gradient(#FCFAFF, #FCFAFF) padding-box, linear-gradient( 112deg, #F2583C, #9214C4, #1E71ED ) border-box; color: transparent; } .brxe-button.dark-button:hover, .bricks-button.dark-button:hover { background: linear-gradient(#18202D, #18202D) padding-box, linear-gradient( 112deg, #FF5950, #F863F5, #57C1FE ) border-box; } .brxe-button[data-text]:not([data-text=""]):hover::after, .bricks-button[data-text]:not([data-text=""]):hover::after, .bricks-button.brx-option-active::after { opacity: 1; } .brxe-button:hover> .hover-content, .bricks-button:hover> .hover-content { opacity: 1; } .horizontal-scrolling-images { display: flex; } .horizontal-scrolling-images .logo-scroll-wrapper { gap: inherit; } .horizontal-scrolling-images.is-static .logo-scroll-wrapper { justify-content: center; } .horizontal-scrolling-elements .element-scroll-wrapper { gap: inherit; } .horizontal-scrolling-elements.is-static .element-scroll-wrapper { justify-content: center; }
677/*# sourceURL=bricks-frontend-inline-inline-css */ 678</style> 679<link rel='stylesheet' id='adobe-fonts-project-id-aud8qux-css' href='https://use.typekit.net/aud8qux.css?ver=7.0.5' media='all' /> 680<link rel='stylesheet' id='elementor-gf-dmmono-css' href='https://fonts.googleapis.com/css?family=DM+Mono:100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic&display=swap' media='all' />
681<script id="react-js" src="https://www.upwind.io/wp-includes/js/dist/vendor/react.min.js?ver=18.3.1.1"></script>
vendor: 1 bytes, line 681
681
682<script id="react-jsx-runtime-js" src="https://www.upwind.io/wp-includes/js/dist/vendor/react-jsx-runtime.min.js?ver=18.3.1"></script>
vendor: 1 bytes, line 682
682
683<script id="wp-autop-js" src="https://www.upwind.io/wp-includes/js/dist/autop.min.js?ver=9d0d0901b46f0a9027c9"></script>
vendor: 1 bytes, line 683
683
684<script id="wp-blob-js" src="https://www.upwind.io/wp-includes/js/dist/blob.min.js?ver=198af75fe06d924090d8"></script>
vendor: 1 bytes, line 684
684
685<script id="wp-block-serialization-default-parser-js" src="https://www.upwind.io/wp-includes/js/dist/block-serialization-default-parser.min.js?ver=bff55bd3f1ce9df0c99c"></script>
vendor: 1 bytes, line 685
685
686<script id="wp-hooks-js" src="https://www.upwind.io/wp-includes/js/dist/hooks.min.js?ver=7496969728ca0f95732d"></script>
vendor: 1 bytes, line 686
686
687<script id="wp-deprecated-js" src="https://www.upwind.io/wp-includes/js/dist/deprecated.min.js?ver=990e85f234fee8f7d446"></script>
vendor: 1 bytes, line 687
687
688<script id="wp-dom-js" src="https://www.upwind.io/wp-includes/js/dist/dom.min.js?ver=66a6cf58e0c4cd128af0"></script>
vendor: 1 bytes, line 688
688
689<script id="react-dom-js" src="https://www.upwind.io/wp-includes/js/dist/vendor/react-dom.min.js?ver=18.3.1.1"></script>
vendor: 1 bytes, line 689
689
690<script id="wp-escape-html-js" src="https://www.upwind.io/wp-includes/js/dist/escape-html.min.js?ver=3f093e5cca67aa0f8b56"></script>
vendor: 1 bytes, line 690
690
691<script id="wp-element-js" src="https://www.upwind.io/wp-includes/js/dist/element.min.js?ver=15ba804677f72a8db97b"></script>
vendor: 1 bytes, line 691
691
692<script id="wp-is-shallow-equal-js" src="https://www.upwind.io/wp-includes/js/dist/is-shallow-equal.min.js?ver=5d84b9f3cb50d2ce7d04"></script>
vendor: 1 bytes, line 692
692
693<script id="wp-i18n-js" src="https://www.upwind.io/wp-includes/js/dist/i18n.min.js?ver=781d11515ad3d91786ec"></script>
vendor: 1 bytes, line 693
693
694<script id="wp-i18n-js-after"> 695wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 696//# sourceURL=wp-i18n-js-after 697</script>
vendor: 1 bytes, line 697
697
698<script id="wp-keycodes-js" src="https://www.upwind.io/wp-includes/js/dist/keycodes.min.js?ver=aa1a141e3468afe7f852"></script>
vendor: 1 bytes, line 698
698
699<script id="wp-priority-queue-js" src="https://www.upwind.io/wp-includes/js/dist/priority-queue.min.js?ver=1f0e89e247bc0bd3f9b9"></script>
vendor: 1 bytes, line 699
699
700<script id="wp-undo-manager-js" src="https://www.upwind.io/wp-includes/js/dist/undo-manager.min.js?ver=27bb0ae036a2c9d4a1b5"></script>
vendor: 1 bytes, line 700
700
701<script id="wp-compose-js" src="https://www.upwind.io/wp-includes/js/dist/compose.min.js?ver=fbe37f6b46750554f947"></script>
vendor: 1 bytes, line 701
701
702<script id="wp-private-apis-js" src="https://www.upwind.io/wp-includes/js/dist/private-apis.min.js?ver=835912f0086b9e59aed4"></script>
vendor: 1 bytes, line 702
702
703<script id="wp-redux-routine-js" src="https://www.upwind.io/wp-includes/js/dist/redux-routine.min.js?ver=64f9f5001aabc046c605"></script>
vendor: 1 bytes, line 703
703
704<script id="wp-data-js" src="https://www.upwind.io/wp-includes/js/dist/data.min.js?ver=1756b6a2676c1b3369ab"></script>
vendor: 1 bytes, line 704
704
705<script id="wp-data-js-after"> 706( function() { 707 var userId = 0; 708 var storageKey = "WP_DATA_USER_" + userId; 709 wp.data 710 .use( wp.data.plugins.persistence, { storageKey: storageKey } ); 711} )(); 712//# sourceURL=wp-data-js-after 713</script>
vendor: 1 bytes, line 713
713
714<script id="wp-html-entities-js" src="https://www.upwind.io/wp-includes/js/dist/html-entities.min.js?ver=8c6fa5b869dfeadc4af2"></script>
vendor: 1 bytes, line 714
714
715<script id="wp-dom-ready-js" src="https://www.upwind.io/wp-includes/js/dist/dom-ready.min.js?ver=a06281ae5cf5500e9317"></script>
vendor: 1 bytes, line 715
715
716<script id="wp-a11y-js" src="https://www.upwind.io/wp-includes/js/dist/a11y.min.js?ver=af934e5259bc51b8718e"></script>
vendor: 1 bytes, line 716
716
717<script id="wp-rich-text-js" src="https://www.upwind.io/wp-includes/js/dist/rich-text.min.js?ver=16449e6108f48327f368"></script>
vendor: 1 bytes, line 717
717
718<script id="wp-shortcode-js" src="https://www.upwind.io/wp-includes/js/dist/shortcode.min.js?ver=11742fe18cc215d3d5ab"></script>
vendor: 1 bytes, line 718
718
719<script id="wp-warning-js" src="https://www.upwind.io/wp-includes/js/dist/warning.min.js?ver=36fdbdc984d93aee8a97"></script>
vendor: 1 bytes, line 719
719
720<script id="wp-blocks-js" src="https://www.upwind.io/wp-includes/js/dist/blocks.min.js?ver=ef38e42500165bfda301"></script>
vendor: 1 bytes, line 720
720
721<script id="jquery-core-js" src="https://www.upwind.io/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 721
721
722<script id="jquery-migrate-js" src="https://www.upwind.io/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 722
722
723<script id="gform_json-js" defer='defer' src="https://www.upwind.io/wp-content/plugins/gravityforms/js/jquery.json.min.js?ver=2.9.25"></script>
vendor: 1 bytes, line 723
723
724<script id="gform_gravityforms-js-extra"> 725var gf_global = {"gf_currency_config":{"name":"U.S. Dollar","symbol_left":"$","symbol_right":"","symbol_padding":"","thousand_separator":",","decimal_separator":".","decimals":2,"code":"USD"},"base_url":"https://www.upwind.io/wp-content/plugins/gravityforms","number_formats":[],"spinnerUrl":"https://www.upwind.io/wp-content/plugins/gravityforms/images/spinner.svg","version_hash":"7dd2df01a27a3c2bd2ae02705b85e76d","strings":{"newRowAdded":"New row added.","rowRemoved":"Row removed","formSaved":"The form has been saved. The content contains the link to return and complete the form."}}; 726var gform_i18n = {"datepicker":{"days":{"monday":"Mo","tuesday":"Tu","wednesday":"We","thursday":"Th","friday":"Fr","saturday":"Sa","sunday":"Su"},"months":{"january":"January","february":"February","march":"March","april":"April","may":"May","june":"June","july":"July","august":"August","september":"September","october":"October","november":"November","december":"December"},"firstDay":1,"iconText":"Select date"}}; 727var gf_legacy_multi = {"2":""}; 728var gform_gravityforms = {"strings":{"invalid_file_extension":"This type of file is not allowed. Must be one of the following:","delete_file":"Delete this file","in_progress":"in progress","file_exceeds_limit":"File exceeds size limit","illegal_extension":"This type of file is not allowed.","max_reached":"Maximum number of files reached","unknown_error":"There was a problem while saving the file on the server","currently_uploading":"Please wait for the uploading to complete","cancel":"Cancel","cancel_upload":"Cancel this upload","cancelled":"Cancelled","error":"Error","message":"Message"},"vars":{"images_url":"https://www.upwind.io/wp-content/plugins/gravityforms/images"}}; 729//# sourceURL=gform_gravityforms-js-extra 730</script>
vendor: 1 bytes, line 730
730
731<script id="gform_gravityforms-js-before"> 732 733//# sourceURL=gform_gravityforms-js-before 734</script>
vendor: 1 bytes, line 734
734
735<script id="gform_gravityforms-js" defer='defer' src="https://www.upwind.io/wp-content/plugins/gravityforms/js/gravityforms.min.js?ver=2.9.25"></script>
vendor: 1 bytes, line 735
735
736<script id="gform_gravityforms_utils-js" defer='defer' src="https://www.upwind.io/wp-content/plugins/gravityforms/assets/js/dist/utils.min.js?ver=48a3755090e76a154853db28fc254681"></script>
vendor: 1 bytes, line 736
736
737<script id="upwind-utm-tracking-js" src="https://www.upwind.io/wp-content/plugins/upwind/utm-tracking.js?ver=1.0.0"></script>
737 738<link rel="https://api.w.org/" href="https://www.upwind.io/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.upwind.io/wp-json/wp/v2/pages/22323" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.upwind.io/xmlrpc.php?rsd" /> 739<link rel='shortlink' href='https://www.upwind.io/' /> 740<meta name="generator" content="Site Kit by Google 1.179.0" /> <!-- DO NOT COPY THIS SNIPPET! Start of Page Analytics Tracking for HubSpot WordPress plugin v11.3.37--> 741
741<script class="hsq-set-content-id" data-content-id="standard-page"> 742 var _hsq = _hsq || []; 743 _hsq.push(["setContentType", "standard-page"]); 744 </script>
744 745 <!-- DO NOT COPY THIS SNIPPET! End of Page Analytics Tracking for HubSpot WordPress plugin --> 746 <meta name='probely-verification' content='6acb6616-28a6-4591-978f-0b3fee023c76' /><meta name="generator" content="Elementor 4.1.1; features: additional_custom_breakpoints; settings: css_print_method-internal, google_font-enabled, font_display-swap">
747<script> 748 var hsscript = document.createElement("script"); 749 hsscript.id = "wphs"; 750 hsscript.src = "https://cdn.jsdelivr.net/npm/hockeystack@latest/hockeystack.min.js"; 751 hsscript.async = 1; 752 hsscript.dataset.apikey = "0e7ad3b7c10b4504efe69a582de645"; 753 hsscript.dataset.cookieless = 1; 754 hsscript.dataset.autoIdentify = 1; 755 document.getElementsByTagName('head')[0].append(hsscript); 756</script>
756 757 <style> 758 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload), 759 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * { 760 background-image: none !important; 761 } 762 @media screen and (max-height: 1024px) { 763 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload), 764 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * { 765 background-image: none !important; 766 } 767 } 768 @media screen and (max-height: 640px) { 769 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload), 770 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * { 771 background-image: none !important; 772 } 773 } 774 </style> 775 <style class="wpcode-css-snippet">.brxe-section { 776 overflow: hidden; 777} 778#brx-header { 779 top: 0 !important; 780} 781#brx-header .brxe-section { 782 overflow: visible; 783} 784.inline-underline { 785 position: relative; 786} 787.inline-underline::before { 788 content: ''; 789 display: block; 790 position: absolute; 791 height: 2px; 792 width: 100%; 793 left: 0; 794 bottom: 0; 795 background: linear-gradient(94.33deg, #F2583C -1.2%, #9214C4 52.79%, #1E71ED 98.47%); 796} 797 798.brxe-popup-23484 > .brxe-container { 799 overflow: visible !important; 800} 801 802.wp-block-video video { 803 height: auto !important; 804} 805 806.gradient-text { 807background: linear-gradient(95deg, #F2583C 0%, #9214C4 50%, #1E71ED 100%); 808 background-clip: text; 809 -webkit-background-clip: text; 810 -webkit-text-fill-color: transparent; 811} 812.gradient-text-dark { 813 background: linear-gradient(95deg, #FF5950 0%, #F863F5 50%, #57C1FE 100%); 814 background-clip: text; 815 -webkit-background-clip: text; 816 -webkit-text-fill-color: transparent; 817} 818.bricks-image-caption { 819 display: none !important; 820} 821.accordion-item { 822 position: relative; 823} 824.accordion-item::before { 825 content: ''; 826 display: block; 827 position: absolute; 828 height: 1px; 829 width: 100%; 830 left: 0; 831 bottom: 0; 832 background: #94A3B8; 833} 834.brx-open.accordion-item::before { 835 background: linear-gradient(94.33deg, #F2583C -1.2%, #9214C4 52.79%, #1E71ED 98.47%); 836} 837 838 839 840 841/* Shared brand gradient */ 842:root { 843 --brand-gradient: linear-gradient(90deg, #F2583C 0%, #9214C4 52.79%, #1E71ED 98.47%); 844 --brand-gradient-dark: linear-gradient(90deg, #FF5950 0%, #F863F5 52.79%, #57C1FE 98.47%); 845} 846 847/* Base button */ 848.brxe-button, 849.bricks-button, 850#gform_submit_button_2 { 851 position: relative; 852 border: 1px solid transparent; 853 background: 854 linear-gradient(#fff, #fff) padding-box, 855 var(--brand-gradient) border-box; 856 color: #18202D !important; 857 font-size: 16px !important; 858 font-family: "Upwind Sans" !important; 859 font-weight: 400 !important; 860 line-height: 1.4 !important; 861 letter-spacing: -0.16px !important; 862 text-decoration: none !important; 863 cursor: pointer; 864 overflow: hidden; 865 transition: background 0.2s ease; 866} 867 868.brxe-button.dark-button, 869.bricks-button.dark-button { 870 background: 871 linear-gradient(#18202D, #18202D) padding-box, 872 var(--brand-gradient-dark) border-box; 873 color: #ffffff !important; 874} 875 876/* Remove native appearance for inputs */ 877input.brxe-button, 878input.bricks-button, 879input#gform_submit_button_2 { 880 appearance: none; 881 -webkit-appearance: none; 882} 883 884/* Gradient text layer (hidden by default) */ 885.brxe-button[data-text]:not([data-text=""])::after, 886.bricks-button[data-text]:not([data-text=""])::after { 887 content: attr(data-text); 888 position: absolute; 889 inset: 0; 890 padding-top: 7px; 891 padding-bottom: 7px; 892 padding-left: 0; 893 padding-right: 0; 894 font: inherit; 895 line-height: inherit; 896 letter-spacing: inherit; 897 text-align: inherit; 898 pointer-events: none; 899 background: var(--brand-gradient); 900 -webkit-background-clip: text; 901 background-clip: text; 902 -webkit-text-fill-color: transparent; 903 opacity: 0; 904 transition: opacity 0.2s ease; 905} 906.brxe-button > .hover-content { 907 display: flex; 908 position: absolute; 909 align-items: center; 910 column-gap: 5px; 911 justify-content: center; 912 inset: 0; 913 padding-top: 7px; 914 padding-bottom: 7px; 915 padding-left: 0; 916 padding-right: 0; 917 font: inherit; 918 line-height: inherit; 919 letter-spacing: inherit; 920 text-align: inherit; 921 pointer-events: none; 922 background: var(--brand-gradient); 923 -webkit-background-clip: text; 924 background-clip: text; 925 -webkit-text-fill-color: transparent; 926 opacity: 0; 927 transition: opacity 0.2s ease; 928} 929.brxe-button > .hover-content svg {
930 color: #F2583C; 931} 932 933.brxe-button.dark-button::after, 934.bricks-button.dark-button::after { 935 background: var(--brand-gradient-dark); 936 -webkit-background-clip: text; 937 background-clip: text; 938 -webkit-text-fill-color: transparent; 939} 940 941/* Hover state */ 942.brxe-button:hover, 943.bricks-button:hover, 944.bricks-button.brx-option-active, 945#gform_submit_button_2:hover { 946 background: 947 linear-gradient(#FCFAFF, #FCFAFF) padding-box, 948 linear-gradient( 949 112deg, 950 #F2583C, 951 #9214C4, 952 #1E71ED 953 ) border-box; 954 955 color: transparent; 956} 957 958.brxe-button.dark-button:hover, 959.bricks-button.dark-button:hover { 960 background: 961 linear-gradient(#18202D, #18202D) padding-box, 962 linear-gradient( 963 112deg, 964 #FF5950, 965 #F863F5, 966 #57C1FE 967 ) border-box; 968} 969 970.brxe-button[data-text]:not([data-text=""]):hover::after, 971.bricks-button[data-text]:not([data-text=""]):hover::after, 972.bricks-button.brx-option-active::after { 973 opacity: 1; 974} 975 976.brxe-button:hover> .hover-content, 977.bricks-button:hover> .hover-content { 978 opacity: 1; 979} 980 981/* ----------------------------------------- 982 Horizontal Scrolling Images 983----------------------------------------- */ 984.horizontal-scrolling-images { 985 display: flex; 986} 987.horizontal-scrolling-images .logo-scroll-wrapper { 988 gap: inherit; 989} 990.horizontal-scrolling-images.is-static .logo-scroll-wrapper { 991 justify-content: center; 992} 993.horizontal-scrolling-images.is-scrolling::before { 994 content: ''; 995 display: block; 996 position: absolute; 997 max-width: 290px; 998 height: 100%; 999 width: 20%; 1000 top: 0; 1001 left: 0; 1002 background: linear-gradient(90deg,rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%); 1003 z-index: 2; 1004} 1005.horizontal-scrolling-images.is-scrolling::after { 1006 content: ''; 1007 display: block; 1008 position: absolute; 1009 max-width: 290px; 1010 height: 100%; 1011 width: 20%; 1012 top: 0; 1013 right: 0; 1014 background: linear-gradient(90deg,rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%); 1015 z-index: 2; 1016} 1017 1018/* ----------------------------------------- 1019 Horizontal Scrolling Elements (Testimonials) 1020----------------------------------------- */ 1021 1022/* Container setup: Enable scroll, hide scrollbar, set grab cursor */ 1023.horizontal-scrolling-elements { 1024 overflow-x: auto; 1025 cursor: grab; 1026 scrollbar-width: none; /* Firefox */ 1027 -ms-overflow-style: none; /* IE/Edge */ 1028 user-select: none; 1029} 1030 1031/* Hide scrollbar in Webkit (Chrome, Safari) */ 1032.horizontal-scrolling-elements::-webkit-scrollbar {
1033 display: none; 1034} 1035 1036/* Scroll wrapper inherits gap from container */ 1037.horizontal-scrolling-elements .element-scroll-wrapper { 1038 gap: inherit; 1039} 1040 1041/* Static state - elements centered */ 1042.horizontal-scrolling-elements.is-static .element-scroll-wrapper { 1043 justify-content: center; 1044} 1045 1046/* Active dragging states applied via JS */ 1047.horizontal-scrolling-elements.is-dragging { 1048 cursor: grabbing; 1049 user-select: none; 1050} 1051 1052/* Prevent accidental link clicks and text highlighting while dragging */ 1053.horizontal-scrolling-elements.is-dragging * { 1054 user-select: none; 1055 pointer-events: none; 1056} 1057 1058.gradient-section { 1059 position: relative; 1060 background-color: #1E71ED; 1061 overflow: hidden; 1062 cursor: default; 1063} 1064 1065.gradient-section .content { 1066 position: relative; 1067 z-index: 1; 1068 display: flex; 1069 flex-direction: column; 1070 align-items: center; 1071 justify-content: center; 1072 height: 100%; 1073} 1074 1075.dot-bg{ 1076 --dotsize: 1.3px; 1077 --dotcolor: #dcdcdc; 1078 1079 background-image: radial-gradient(var(--dotcolor) var(--dotsize), transparent var(--dotsize)), radial-gradient(var(--dotcolor) var(--dotsize), transparent var(--dotsize)); 1080 background-size: 20px 20px; 1081 background-position: 0 0, 20px 20px; 1082} 1083 1084.dot-bg-small{ 1085 --dotsize: 1px; 1086 --dotcolor: #d9d9d9; 1087 1088 background-image: radial-gradient(var(--dotcolor) var(--dotsize), transparent var(--dotsize)), radial-gradient(var(--dotcolor) var(--dotsize), transparent var(--dotsize)); 1089 background-size: 16px 16px; 1090 background-position: 0 0, 8px 8px; 1091 1092 z-index: -10; 1093} 1094 1095.text-fancy-italic { 1096 font-family: "Juana Sans"; 1097 font-style: italic; 1098 font-weight: 300; 1099} 1100 1101video { 1102 -webkit-user-select: none; 1103 user-select: none; 1104} 1105 1106:where(.brxe-video) { 1107 aspect-ratio: 16/9; 1108} 1109 1110:where(.brxe-video) video { 1111 object-fit: contain; 1112} 1113 1114.horizontal-scrolling-block .brxe-text-basic { 1115 transition: color 0.3s ease; 1116} 1117 1118@media (hover: hover) and (pointer: fine) { 1119 .horizontal-scrolling-block:hover .brxe-text-basic { color: #fff !important; } 1120 .horizontal-scrolling-block:hover .horizontal-scrolling-block-inner-overlay { opacity: 0; } 1121} 1122 1123.horizontal-scrolling-block-inner { 1124 position: relative; 1125 isolation: isolate; 1126} 1127 1128.horizontal-scrolling-block-inner-overlay { 1129 position: absolute; 1130 inset: 0; 1131 z-index: 4; 1132 -webkit-transform: translateZ(0); 1133 transform: translateZ(0); 1134 will-change: opacity; 1135} 1136.horizontal-scrolling-block-inner > canvas { 1137 position: relative; 1138 z-index: 1; 1139 -webkit-transform: translateZ(0); 1140 transform: translateZ(0); 1141} 1142.horizontal-scrolling-block .content-layer { 1143 position: relative; 1144 z-index: 5; 1145 -webkit-transform: translateZ(0); 1146 transform: translateZ(0); 1147}</style><link rel="icon" href="https://www.upwind.io/wp-content/uploads/2025/11/cropped-Upwind-Favicon-Square-32x32.png" sizes="32x32" /> 1148<link rel="icon" href="https://www.upwind.io/wp-content/uploads/2025/11/cropped-Upwind-Favicon-Square-192x192.png" sizes="192x192" /> 1149<link rel="apple-touch-icon" href="https://www.upwind.io/wp-content/uploads/2025/11/cropped-Upwind-Favicon-Square-180x180.png" /> 1150<meta name="msapplication-TileImage" content="https://www.upwind.io/wp-content/uploads/2025/11/cropped-Upwind-Favicon-Square-270x270.png" /> 1151<style id="wp-custom-css"> 1152#brx-content.wordpress { 1153 max-width: none !important; 1154 width: 100% !important; 1155} 1156 1157/* Hide CookieYes branding */ 1158[data-cky-tag="detail-powered-by"] { 1159 display: none !important; 1160} 1161.cky-btn-revisit-wrapper { 1162 display: none !important; 1163} 1164 1165/* Style Hubspot Forms */ 1166.hs-form-html form .hsfc-Step .hsfc-Step__Content { 1167 padding: 0; 1168} 1169 1170.hs-form-html form .hsfc-Step .hsfc-Step__Content .hsfc-Row { 1171 margin-bottom: 16px; 1172} 1173 1174.hs-form-html form .hsfc-Step .hsfc-Step__Content .hsfc-FieldLabel { 1175 display: none !important; 1176} 1177 1178.hs-form-html .hsfc-TextField .hsfc-TextInput, 1179.hs-form-html .hsfc-EmailField .hsfc-TextInput, 1180.hs-form-html .hsfc-PhoneField .hsfc-TextInput { 1181 min-height: 30px; 1182 margin-bottom: 0 !important; 1183 padding: 5px 16px; 1184 background-color: var(--White); 1185 border: 1px solid var(--Gray-04); 1186 border-radius: 4px !important; 1187 outline: none !important; 1188 color: var(--Gray-01); 1189 font-family: var(--Font-Inter); 1190 font-weight: 400; 1191 font-size: 14px; 1192 line-height: 1.4; 1193 letter-spacing: -0.42px; 1194} 1195 1196.hs-form-html form .hsfc-ErrorAlert { 1197 margin-top: 8px; 1198 color: #bd94f5 !important; 1199 font-family: var(--Font-Inter); 1200 font-weight: 400; 1201 font-size: 14px; 1202 line-height: 1.4; 1203 letter-spacing: -0.42px; 1204} 1205 1206.hs-form-html .hsfc-PhoneField .hsfc-PhoneInput { 1207 border: 1px solid var(--Gray-04); 1208 border-radius: 4px !important; 1209} 1210.hs-form-html .hsfc-PhoneField .hsfc-PhoneInput .hsfc-PhoneInput__FlagAndCaret { 1211 min-height: 30px; 1212 padding: 2px 16px; 1213 background-color: var(--White); 1214 border: none; 1215 border-right: 1px solid var(--Gray-04) !important; 1216} 1217 1218.hs-form-html .hsfc-PhoneField .hsfc-TextInput { 1219 border: none; 1220 border-radius: 0px !important; 1221} 1222 1223.hs-form-html form .hsfc-Step .hsfc-Step__Content .hsfc-NavigationRow { 1224 margin-top: 0 !important; 1225} 1226 1227.hs-form-html form .hsfc-Step .hsfc-Step__Content .hsfc-NavigationRow__Buttons { 1228 justify-content: flex-start !important; 1229} 1230 1231.hs-form-html form .hsfc-Step .hsfc-Step__Content .hsfc-NavigationRow button[type="submit"] { 1232 position: relative; 1233 min-height: 0 !important; 1234 min-width: 0 !important; 1235 margin: 0 !important; 1236 outline: none !important; 1237 border: 1px solid var(--e-global-color-6b4ffb0) !important; 1238 border-radius: 4px; 1239 background-color: #FFFFFF !important; 1240 padding: 4px 24px 4px 24px; 1241 color: var(--e-global-color-003bef6) !important; 1242 font-family: var(--Font-Inter); 1243 font-size: 15px; 1244 font-style: normal; 1245 font-weight: 500; 1246 line-height: 1.4; 1247 letter-spacing: -0.03em; 1248 text-decoration: none; 1249 transition: 300ms ease-in-out; 1250} 1251.hs-form-html form .hsfc-Step .hsfc-Step__Content .hsfc-NavigationRow button[type="submit"]::before { 1252 content: ''; 1253 pointer-events: none; 1254 transition: .3s all 1255 ease; 1256 width: 100%; 1257 height: 3px; 1258 display: block; 1259 position: absolute; 1260 z-index: 1; 1261 top: 0; 1262 left: 0; 1263 background: var(--Gradients-Gradient-1, linear-gradient(94deg, #F2583C -1.2%, #9214C4 52.79%, #1E71ED 98.47%)); 1264 border-top-left-radius: 4px; 1265 border-top-right-radius: 4px; 1266} 1267.hs-form-html form .hsfc-Step .hsfc-Step__Content .hsfc-NavigationRow button[type="submit"]:hover { 1268 background-color: #F2F7FC !important; 1269} 1270 1271.comeet-outer-wrapper { 1272 1273} 1274.comeet-position-info { 1275 1276} 1277.comeet-outer-wrapper .comeet-position-info h4 { 1278 margin-bottom: 16px;
1279 color: #141217; 1280 font-family: "Aeonik Pro"; 1281 font-size: 24px !important; 1282 font-weight: 600; 1283 line-height: 1.5; 1284} 1285.comeet-outer-wrapper .comeet-position-info strong { 1286 display: block; 1287 margin-top: 16px; 1288 margin-bottom: 4px !important; 1289 color: #141217; 1290 font-size: 18px !important; 1291 font-family: "aktiv-grotesk"; 1292 font-weight: 600 !important; 1293 line-height: 1.5; 1294} 1295.comeet-outer-wrapper .comeet-position-info ul { 1296 padding-top: 0 !important; 1297} 1298.comeet-outer-wrapper .comeet-position-info p, 1299.comeet-outer-wrapper .comeet-position-info li { 1300 color: #141217; 1301 font-family: "aktiv-grotesk"; 1302 font-size: 18px; 1303 font-weight: 400; 1304 line-height: 1.6; 1305} 1306.comeet-outer-wrapper .comeet-apply h4 { 1307 margin-bottom: 16px; 1308 color: #141217; 1309 font-family: "Aeonik Pro"; 1310 font-size: 24px !important; 1311 font-weight: 600; 1312 line-height: 1.5; 1313} 1314 1315.wp-block-video, .wp-block-video video { 1316 width: 100%; 1317} 1318 1319.upwind-single .wp-block-pullquote blockquote { 1320 border-left: none !important; 1321 font-family: inherit !important; 1322 font-size: inherit !important; 1323 padding: 0px !important; 1324} 1325</style> 1326 1327<meta property="og:url" content="https://www.upwind.io" /> 1328<meta property="og:site_name" content="Upwind | Cloud & AI Security for the Realtime Era" /> 1329<meta property="og:title" content="Homepage" /> 1330<meta property="og:type" content="website" /> 1331</head> 1332 1333<body class="home wp-singular page-template-default page page-id-22323 wp-theme-bricks brx-body bricks-is-frontend wp-embed-responsive elementor-default elementor-kit-4163"> <!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 1333-1334
1333 1334 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1334GTM-NQ4VVFZS
vendor: 85 bytes, lines 1334-1336
1334" 1335 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 1336
1336<!-- End Google Tag Manager (noscript) --> 1337 <a class="skip-link" href="#brx-content">Skip to main content</a> 1338 1339 <a class="skip-link" href="#brx-footer">Skip to footer</a> 1340 <header id="brx-header" class="brx-sticky on-scroll"><section id="brxe-47443e" class="brxe-section"><div id="brxe-fcd69c" class="brxe-container"><a href="/" aria-current="page" class="bricks-link-wrapper"><svg class="brxe-svg" id="brxe-cce152" xmlns="http://www.w3.org/2000/svg" width="80" height="24" viewBox="0 0 80 24" fill="none"><path d="M11.838 0H0V3.10389H11.838V0Z" fill="url(#paint0_linear_10762_162028)"></path><path d="M17.3445 7.29371C18.0085 6.23377 19.4113 5.17279 21.1711 5.17279C24.2589 5.17279 26.733 7.99167 26.733 11.7935C26.733 15.5954 24.2579 18.4142 21.1711 18.4142C19.4113 18.4142 18.0074 17.3543 17.3445 16.2423V24H14.0792V5.37875H17.3445V7.29267V7.29371ZM23.4677 11.7935C23.4677 9.87959 22.0906 8.27668 20.4056 8.27668C18.7206 8.27668 17.3435 9.87959 17.3435 11.7935C17.3435 13.7074 18.7206 15.3104 20.4056 15.3104C22.0906 15.3104 23.4677 13.7074 23.4677 11.7935Z" fill="#18202D"></path><path d="M46.8362 5.37875L42.5498 18.2062H39.4877L36.834 9.56858L34.1803 18.2062H31.1182L26.8318 5.37875H30.3014L32.7508 13.3954L35.2516 5.37875H38.4154L40.9162 13.3954L43.3656 5.37875H46.8352H46.8362Z" fill="#18202D"></path><path d="M48.0898 0H51.3551V3.10389H48.0898V0ZM48.0898 5.37875H51.3551V18.2062H48.0898V5.37875Z" fill="#18202D"></path><path d="M65.6005 10.7585V18.2072H62.3352V10.9655C62.3352 8.89663 61.1367 8.27564 59.9371 8.27564C58.4573 8.27564 57.0278 9.25861 57.0278 11.3795V18.2072H53.7625V5.37875H57.0278V7.29267C57.4363 6.5167 58.7118 5.17175 60.7016 5.17175C63.4825 5.17175 65.6005 6.87868 65.6005 10.7575V10.7585Z" fill="#18202D"></path><path d="M79.8367 0V18.2062H76.5714V16.2413C75.9075 17.3533 74.5047 18.4132 72.7448 18.4132C69.657 18.4132 67.1829 15.5943 67.1829 11.7925C67.1829 7.99064 69.6581 5.17176 72.7448 5.17176C74.5047 5.17176 75.9085 6.2317 76.5714 7.29268V0H79.8367ZM76.5714 11.7925C76.5714 9.87856 75.1943 8.27565 73.5093 8.27565C71.8243 8.27565 70.4472 9.87856 70.4472 11.7925C70.4472 13.7064 71.8243 15.3093 73.5093 15.3093C75.1943 15.3093 76.5714 13.7064 76.5714 11.7925Z" fill="#18202D"></path><path d="M5.919 18.4132C2.65575 18.4132 0 15.7223 0 12.4135V5.37875H3.2653V12.6205C3.2653 14.1038 4.45567 15.3104 5.919 15.3104C7.38233 15.3104 8.5727 14.1038 8.5727 12.6205V5.37875H11.838V12.4135C11.838 15.7223 9.18225 18.4132 5.919 18.4132Z" fill="#18202D"></path><defs><linearGradient id="paint0_linear_10762_162028" x1="-0.379575" y1="0.785419" x2="11.336" y2="4.16793" gradientUnits="userSpaceOnUse"><stop stop-color="#F2583C"></stop><stop offset="0.541667" stop-color="#9214C4"></stop><stop offset="1" stop-color="#1E71ED"></stop></linearGradient></defs></svg></a><div id="brxe-1c601d" class="brxe-block"><nav id="brxe-c72527" data-script-id="c72527" class="brxe-nav-nested" aria-label="Menu" data-toggle="mobile_landscape"><ul id="brxe-2717cf" class="brxe-block brx-nav-nested-items"><li id="brxe-a85a9f" data-script-id="a85a9f" class="brxe-dropdown" data-toggle="click"><div class="brx-submenu-toggle"><span>Platform</span><button aria-expanded="false" aria-label="Toggle dropdown"><svg class="" xmlns="http://www.w3.org/2000/svg" width="10" height="15" fill="currentColor" viewBox="0 0 10 15"><g clip-path="url(#a)"><path d="M4.99 15a.8.8 0 0 1-.299-.056.7.7 0 0 1-.25-.166l-4.2-4.2a.75.75 0 0 1-.24-.572.82.82 0 0 1 .254-.565.775.775 0 0 1 1.13 0l3.61 3.632 3.632-3.632a.74.74 0 0 1 .565-.233.82.82 0 0 1 .564.255.775.775 0 0 1-.007 1.136l-4.2 4.18A.8.8 0 0 1 4.99 15m0-15a.8.8 0 0 0-.299.055.7.7 0 0 0-.25.167l-4.2 4.2a.75.75 0 0 0-.24.572.82.82 0 0 0 .254.565.775.775 0 0 0 1.13 0l3.61-3.632 3.632 3.632q.243.244.565.233a.82.82 0 0 0 .564-.255.775.775 0 0 0-.007-1.136l-4.2-4.18A.8.8 0 0 0 4.99 0"></path></g><defs><clipPath id="a"><path d="M0 0h10v15H0z"></path></clipPath></defs></svg></button></div><ul id="brxe-e9c954" class="brxe-div brx-dropdown-content"><li class="menu-item"><div id="brxe-0eeee1" class="brxe-block"><div id="brxe-8ef5c8" class="brxe-block"><div id="brxe-179186" class="brxe-block"><a id="brxe-463443" href="/cnapp" class="brxe-block"><div id="brxe-66f56c" class="brxe-block"><div id="brxe-99c7ec" class="brxe-text-basic text-menu-heading">Cloud Security</div></div></a></div><a id="brxe-1fff21" href="/ai-security-platform" class="brxe-block"><div id="brxe-18c544" class="brxe-block"><div id="brxe-cdd43e" class="brxe-block"><div id="brxe-668f33" class="brxe-text-basic text-menu-heading">AI Security</div></div></div></a><a id="brxe-989497" href="/agentic-security" class="brxe-block"><div id="brxe-460595" class="brxe-block"><div id="brxe-7de57e" class="brxe-block"><div id="brxe-97aff9" class="brxe-text-basic text-menu-heading">Agentic Security</div></div></div></a></div></div></li></ul></li><li id="brxe-1bcba3" data-script-id="1bcba3" class="brxe-dropdown" data-toggle="click"><div class="brx-submenu-toggle"><span>Solutions</span><button aria-expanded="false" aria-label="Toggle dropdown"><svg class="" xmlns="http://www.w3.org/2000/svg" width="10" height="15" fill="currentColor" viewBox="0 0 10 15"><g clip-path="url(#a)"><path d="M4.99 15a.8.8 0 0 1-.299-.056.7.7 0 0 1-.25-.166l-4.2-4.2a.75.75 0 0 1-.24-.572.82.82 0 0 1 .254-.565.775.775 0 0 1 1.13 0l3.61 3.632 3.632-3.632a.74.74 0 0 1 .565-.233.82.82 0 0 1 .564.255.7
134075.775 0 0 1-.007 1.136l-4.2 4.18A.8.8 0 0 1 4.99 15m0-15a.8.8 0 0 0-.299.055.7.7 0 0 0-.25.167l-4.2 4.2a.75.75 0 0 0-.24.572.82.82 0 0 0 .254.565.775.775 0 0 0 1.13 0l3.61-3.632 3.632 3.632q.243.244.565.233a.82.82 0 0 0 .564-.255.775.775 0 0 0-.007-1.136l-4.2-4.18A.8.8 0 0 0 4.99 0"></path></g><defs><clipPath id="a"><path d="M0 0h10v15H0z"></path></clipPath></defs></svg></button></div><ul id="brxe-a256fd" class="brxe-div brx-dropdown-content"><li class="menu-item"><div id="brxe-53f310" class="brxe-block"><div id="brxe-c8a9b8" class="brxe-block brx-grid"><div id="brxe-468d6a" class="brxe-block"><div id="brxe-ffaa7c" class="brxe-text-basic">Application Security</div><a id="brxe-01214c" href="/iac-security" class="brxe-block"><div id="brxe-9522bb" class="brxe-block"><div id="brxe-5af8bd" class="brxe-block"><div id="brxe-bfc1af" class="brxe-text-basic text-menu-description">IaC Security</div></div></div></a><a id="brxe-7a5095" href="/sca-sbom" class="brxe-block"><div id="brxe-600a17" class="brxe-block"><div id="brxe-4348c1" class="brxe-block"><div id="brxe-01292b" class="brxe-text-basic text-menu-description">Supply Chain Securityâ¨(SCA & SBOM)</div></div></div></a><a id="brxe-1a9da6" href="/container-admission-controller" class="brxe-block"><div id="brxe-b17e9c" class="brxe-block"><div id="brxe-00979d" class="brxe-block"><div id="brxe-3e1e65" class="brxe-text-basic text-menu-description">Containers Admission Controller</div></div></div></a></div><div id="brxe-cbcff0" class="brxe-block"><div id="brxe-94aa26" class="brxe-text-basic">Security Posture</div><a id="brxe-203b4d" href="/cspm" class="brxe-block"><div id="brxe-eeee97" class="brxe-block"><div id="brxe-2bf3ab" class="brxe-block"><div id="brxe-66071c" class="brxe-text-basic text-menu-description">Cloud Security Posture â¨Management (CSPM)</div></div></div></a><a id="brxe-064d53" href="/identity-security" class="brxe-block"><div id="brxe-66d8dd" class="brxe-block"><div id="brxe-75e78d" class="brxe-block"><div id="brxe-3ca488" class="brxe-text-basic text-menu-description">Cloud Infrastructure 1341Entitlements Management (CIEM)</div></div></div></a><a id="brxe-ef767e" href="/dspm" class="brxe-block"><div id="brxe-11af6f" class="brxe-block"><div id="brxe-fb9510" class="brxe-block"><div id="brxe-211641" class="brxe-text-basic text-menu-description">Data Security Posture 1342Management (DSPM)</div></div></div></a><a id="brxe-e7a75b" href="/ai-spm" class="brxe-block"><div id="brxe-2f077e" class="brxe-block"><div id="brxe-d32835" class="brxe-block"><div id="brxe-777f99" class="brxe-text-basic text-menu-description">AI Security Posture 1343Management (AI-SPM)</div></div></div></a></div><div id="brxe-0e8e67" class="brxe-block"><div id="brxe-72b27c" class="brxe-block"></div><a id="brxe-97cea3" href="/attack-path-exposure-analysis" class="brxe-block"><div id="brxe-a30918" class="brxe-block"><div id="brxe-71a115" class="brxe-block"><div id="brxe-6425b5" class="brxe-text-basic text-menu-description">Attack Path Analysisâ¨& Exposure Management</div></div></div></a><a id="brxe-80ba42" href="/vulnerability-management" class="brxe-block"><div id="brxe-bfcae6" class="brxe-block"><div id="brxe-1c4bb6" class="brxe-block"><div id="brxe-8e9d89" class="brxe-text-basic text-menu-description">Vulnerability Management</div></div></div></a><a id="brxe-b10916" href="/container-security" class="brxe-block"><div id="brxe-817f5f" class="brxe-block"><div id="brxe-55ad1c" class="brxe-block"><div id="brxe-463302" class="brxe-text-basic text-menu-description">Container & 1344Kubernetes Security</div></div></div></a><a id="brxe-4ee8c3" href="/serverless-security" class="brxe-block"><div id="brxe-b0519c" class="brxe-block"><div id="brxe-fce1ce" class="brxe-block"><div id="brxe-44c6cc" class="brxe-text-basic text-menu-description">Serverless Security</div></div></div></a><a id="brxe-7a2f3f" href="/ai-security" class="brxe-block"><div id="brxe-fc20a8" class="brxe-block"><div id="brxe-047230" class="brxe-block"><div id="brxe-056b3f" class="brxe-text-basic text-menu-description">AI Security</div></div></div></a></div><div id="brxe-cfedcd" class="brxe-block"><div id="brxe-43ab0b" class="brxe-text-basic">Realtime Protection</div><a id="brxe-3a6a5d" href="/cdr" class="brxe-block"><div id="brxe-2ccc7b" class="brxe-block"><div id="brxe-758c4f" class="brxe-block"><div id="brxe-8ac9c8" class="brxe-text-basic text-menu-description">Cloud Detection &
1344 Response (CDR)</div></div></div></a><a id="brxe-b5fe5e" href="/attack-surface-management" class="brxe-block"><div id="brxe-8cf1ce" class="brxe-block"><div id="brxe-4ab119" class="brxe-block"><div id="brxe-6c6521" class="brxe-text-basic text-menu-description">Attack Surface Management</div></div></div></a><a id="brxe-a51171" href="/api-security" class="brxe-block"><div id="brxe-e27250" class="brxe-block"><div id="brxe-c65907" class="brxe-block"><div id="brxe-4e3fee" class="brxe-text-basic text-menu-description">API Security</div></div></div></a><a id="brxe-d74ec8" href="/dast" class="brxe-block"><div id="brxe-d0e21b" class="brxe-block"><div id="brxe-ee6bfe" class="brxe-block"><div id="brxe-6564c7" class="brxe-text-basic text-menu-description">Dynamic Application Security Testing (DAST)</div></div></div></a><a id="brxe-ecbb73" href="/mdr" class="brxe-block"><div id="brxe-284260" class="brxe-block"><div id="brxe-e69eed" class="brxe-block"><div id="brxe-172ee9" class="brxe-text-basic text-menu-description">Incident Response (MDR)</div></div></div></a></div></div></div></li></ul></li><li id="brxe-9e90e6" data-script-id="9e90e6" class="brxe-dropdown" data-toggle="click"><div class="brx-submenu-toggle"><span>Resources</span><button aria-expanded="false" aria-label="Toggle dropdown"><svg class="" xmlns="http://www.w3.org/2000/svg" width="10" height="15" fill="currentColor" viewBox="0 0 10 15"><g clip-path="url(#a)"><path d="M4.99 15a.8.8 0 0 1-.299-.056.7.7 0 0 1-.25-.166l-4.2-4.2a.75.75 0 0 1-.24-.572.82.82 0 0 1 .254-.565.775.775 0 0 1 1.13 0l3.61 3.632 3.632-3.632a.74.74 0 0 1 .565-.233.82.82 0 0 1 .564.255.775.775 0 0 1-.007 1.136l-4.2 4.18A.8.8 0 0 1 4.99 15m0-15a.8.8 0 0 0-.299.055.7.7 0 0 0-.25.167l-4.2 4.2a.75.75 0 0 0-.24.572.82.82 0 0 0 .254.565.775.775 0 0 0 1.13 0l3.61-3.632 3.632 3.632q.243.244.565.233a.82.82 0 0 0 .564-.255.775.775 0 0 0-.007-1.136l-4.2-4.18A.8.8 0 0 0 4.99 0"></path></g><defs><clipPath id="a"><path d="M0 0h10v15H0z"></path></clipPath></defs></svg></button></div><ul id="brxe-3beefb" class="brxe-div brx-dropdown-content"><li class="menu-item"><div id="brxe-33a487" class="brxe-block"><div id="brxe-700eaf" class="brxe-block brx-grid"><div id="brxe-22459e" class="brxe-block"><a id="brxe-0bdae0" href="/feed" class="brxe-block"><div id="brxe-af5869" class="brxe-block"><div id="brxe-2e2f55" class="brxe-block text-menu-heading"><div id="brxe-80c6f7" class="brxe-text-basic text-menu-heading">Feed (Blog)</div></div></div></a><a id="brxe-c9cf7a" href="/events" class="brxe-block"><div id="brxe-86955f" class="brxe-block"><div id="brxe-f2a076" class="brxe-block"><div id="brxe-500e71" class="brxe-text-basic text-menu-heading">Events</div></div></div></a></div><div id="brxe-ee43ce" class="brxe-block"><a id="brxe-76214f" href="/tv" class="brxe-block"><div id="brxe-1003b2" class="brxe-block"><div id="brxe-667d7b" class="brxe-block"><div id="brxe-211d2a" class="brxe-text-basic text-menu-heading">UpwindTV</div></div></div></a><a id="brxe-cf4ee0" href="/integrations" class="brxe-block"><div id="brxe-29b9bd" class="brxe-block"><div id="brxe-caff77" class="brxe-block"><div id="brxe-0e8648" class="brxe-text-basic text-menu-heading">Integrations</div></div></div></a></div><div id="brxe-070581" class="brxe-block"><a id="brxe-cfed2c" href="/case-studies" class="brxe-block"><div id="brxe-a3c23a" class="brxe-block"><div id="brxe-c9a022" class="brxe-block"><div id="brxe-154e4f" class="brxe-text-basic text-menu-heading">Customers</div></div></div></a><a id="brxe-f51444" href="/glossary" class="brxe-block"><div id="brxe-4136b5" class="brxe-block"><div id="brxe-5cdfd3" class="brxe-block"><div id="brxe-42f24d" class="brxe-text-basic text-menu-heading">Glossary</div></div></div></a></div></div></div></li></ul></li><li id="brxe-e2274e" data-script-id="e2274e" class="brxe-dropdown" data-toggle="click"><div class="brx-submenu-toggle"><span>Partners</span><button aria-expanded="false" aria-label="Toggle dropdown"><svg class="" xmlns="http://www.w3.org/2000/svg" width="10" height="15" fill="currentColor" viewBox="0 0 10 15"><g clip-path="url(#a)"><path d="M4.99 15a.8.8 0 0 1-.299-.056.7.7 0 0 1-.25-.166l-4.2-4.2a.75.75 0 0 1-.24-.572.82.82 0 0 1 .254-.565.775.775 0 0 1 1.13 0l3.61 3.632 3.632-3.632a.74.74 0 0 1 .565-.233.82.82 0 0 1 .564.255.7
134475.775 0 0 1-.007 1.136l-4.2 4.18A.8.8 0 0 1 4.99 15m0-15a.8.8 0 0 0-.299.055.7.7 0 0 0-.25.167l-4.2 4.2a.75.75 0 0 0-.24.572.82.82 0 0 0 .254.565.775.775 0 0 0 1.13 0l3.61-3.632 3.632 3.632q.243.244.565.233a.82.82 0 0 0 .564-.255.775.775 0 0 0-.007-1.136l-4.2-4.18A.8.8 0 0 0 4.99 0"></path></g><defs><clipPath id="a"><path d="M0 0h10v15H0z"></path></clipPath></defs></svg></button></div><ul id="brxe-7fa538" class="brxe-div brx-dropdown-content"><li class="menu-item"><div id="brxe-77a455" class="brxe-block"><div id="brxe-57535b" class="brxe-block brx-grid"><div id="brxe-8b474b" class="brxe-block"><a id="brxe-ea6b22" href="/partners" class="brxe-block"><div id="brxe-f14420" class="brxe-block"><div id="brxe-8799bb" class="brxe-block"><div id="brxe-eae96d" class="brxe-text-basic text-menu-heading">Our Partners</div></div></div></a><a id="brxe-e9c1a2" href="/partners/join-the-lineup" class="brxe-block"><div id="brxe-aaa7f0" class="brxe-block"><div id="brxe-554b1b" class="brxe-block"><div id="brxe-c83b6a" class="brxe-text-basic text-menu-heading">Technology Alliances</div></div></div></a><a id="brxe-9efe30" href="/partners/join-upp" class="brxe-block"><div id="brxe-a27956" class="brxe-block"><div id="brxe-32de47" class="brxe-block"><div id="brxe-ec1b99" class="brxe-text-basic text-menu-heading">Channel Partners</div></div></div></a></div><div id="brxe-0d4775" class="brxe-block"><a id="brxe-d07101" href="/partners/aws" class="brxe-block"><div id="brxe-b666a3" class="brxe-block"><div id="brxe-d42e4c" class="brxe-block"><div id="brxe-b4abda" class="brxe-text-basic text-menu-heading">Amazon Web Services</div></div></div></a><a id="brxe-516b51" href="/partners/google-cloud" class="brxe-block"><div id="brxe-4f0e40" class="brxe-block"><div id="brxe-0d3de4" class="brxe-block"><div id="brxe-2f2613" class="brxe-text-basic text-menu-heading">Google Cloud</div></div></div></a></div><div id="brxe-a99ce4" class="brxe-block"><a id="brxe-d665a7" href="/partners/azure" class="brxe-block"><div id="brxe-034c1c" class="brxe-block"><div id="brxe-373443" class="brxe-block"><div id="brxe-b86383" class="brxe-text-basic text-menu-heading">Microsoft Azure</div></div></div></a><a id="brxe-0e2a03" href="/partners/oracle-cloud-infrastructure" class="brxe-block"><div id="brxe-b6cb2f" class="brxe-block"><div id="brxe-8bfdd2" class="brxe-block"><div id="brxe-19ab2c" class="brxe-text-basic text-menu-heading">Oracle Cloud</div></div></div></a></div></div></div></li></ul></li><li id="brxe-990777" data-script-id="990777" class="brxe-dropdown" data-toggle="click"><div class="brx-submenu-toggle"><span>Company</span><button aria-expanded="false" aria-label="Toggle dropdown"><svg class="" xmlns="http://www.w3.org/2000/svg" width="10" height="15" fill="currentColor" viewBox="0 0 10 15"><g clip-path="url(#a)"><path d="M4.99 15a.8.8 0 0 1-.299-.056.7.7 0 0 1-.25-.166l-4.2-4.2a.75.75 0 0 1-.24-.572.82.82 0 0 1 .254-.565.775.775 0 0 1 1.13 0l3.61 3.632 3.632-3.632a.74.74 0 0 1 .565-.233.82.82 0 0 1 .564.255.775.775 0 0 1-.007 1.136l-4.2 4.18A.8.8 0 0 1 4.99 15m0-15a.8.8 0 0 0-.299.055.7.7 0 0 0-.25.167l-4.2 4.2a.75.75 0 0 0-.24.572.82.82 0 0 0 .254.565.775.775 0 0 0 1.13 0l3.61-3.632 3.632 3.632q.243.244.565.233a.82.82 0 0 0 .564-.255.775.775 0 0 0-.007-1.136l-4.2-4.18A.8.8 0 0 0 4.99 0"></path></g><defs><clipPath id="a"><path d="M0 0h10v15H0z"></path></clipPath></defs></svg></button></div><ul id="brxe-b47c93" class="brxe-div brx-dropdown-content"><li class="menu-item"><div id="brxe-e532ad" class="brxe-block"><div id="brxe-7f12b3" class="brxe-block brx-grid"><div id="brxe-3a2ca6" class="brxe-block"><a id="brxe-6f0dad" href="/about" class="brxe-block"><div id="brxe-06a029" class="brxe-block"><div id="brxe-b85753" class="brxe-block"><div id="brxe-56f665" class="brxe-text-basic text-menu-heading">About</div></div></div></a></div><div id="brxe-6b5fca" class="brxe-block"><a id="brxe-91fa66" href="/values" class="brxe-block"><div id="brxe-b92e64" class="brxe-block"><div id="brxe-f6fb8a" class="brxe-block"><div id="brxe-25a2af" class="brxe-text-basic text-menu-heading">Values</div></div></div></a></div><div id="brxe-392594" class="brxe-block"><a id="brxe-3e3f3e" href="/careers" class="brxe-block"><div id="brxe-af2730" class="brxe-block"><div id="brxe-1a8ff2" class="brxe-block"><div id="brxe-c5dcbc" class="brxe-text-basic text-menu-heading">Careers</div></div></div></a></div></div></div></li></ul></li><li class="menu-item"><a id="brxe-87938f" href="/feed" class="brxe-block"><div id="brxe-f201de" class="brxe-text-basic">Feed</div></a></li><li class="menu-item"><a id="brxe-12d5f5" href="/tv" class="brxe-block"><div id="brxe-952199" class="brxe-text-basic">TV</div></a></li><li class="menu-item"><a id="brxe-319bcc" href="/contact/?v=get-started" class="brxe-div" data-interactions="[{"id":"jfnhlv","trigger":"mouseenter","action":"setAttribute","actionAttributeKey":"class","actionAttributeValue":"gradient-text","target":"self"},{"id":"rqwikt","trigger":"mouseleave","action":"removeAttribute","actionAttributeKey":"class","actionAttributeValue":"gradient-text","target":"self"}]" data-interaction-id="23298c"><div id="brxe-976d11" class="brxe-text-basic">Get a Demo</div></a></li><li class="menu-item"><a id="brxe-eb6ff4" href="/ai-threat-feed" class="brxe-block"><svg class="brxe-svg" id="brxe-bfffbe" xmlns="http://www.w3.org/2000/svg" width="13" height="11" viewB
1344ox="0 0 13 11" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.62349 0.486161L0.138721 9.52188C-0.0441044 9.82388 -0.0466436 10.202 0.133643 10.5065C0.313929 10.8109 0.651649 11 1.01476 11H11.9843C12.3474 11 12.6851 10.8109 12.8654 10.5065C13.0457 10.202 13.0457 9.82634 12.8603 9.52188L7.37557 0.486161C7.19274 0.184152 6.8601 0 6.49953 0C6.13895 0 5.80631 0.184152 5.62349 0.486161ZM1.56983 9.68H11.4292L6.49953 1.55872L1.56983 9.68Z" fill="#F89684"></path><path d="M6.5001 3.85851C6.22994 3.85851 6.0126 4.06868 6.0126 4.32991V6.52975C6.0126 6.79098 6.22994 7.00114 6.5001 7.00114C6.77025 7.00114 6.9876 6.79098 6.9876 6.52975V4.32991C6.9876 4.06868 6.77025 3.85851 6.5001 3.85851ZM7.1501 8.2582C7.1501 7.91054 6.85963 7.62967 6.5001 7.62967C6.14057 7.62967 5.8501 7.91054 5.8501 8.2582C5.8501 8.60585 6.14057 8.88672 6.5001 8.88672C6.85963 8.88672 7.1501 8.60585 7.1501 8.2582Z" fill="#F89684"></path></svg><div id="brxe-044fa9" class="brxe-text-basic">Under Attack?</div></a></li></ul><div id="brxe-7e2047" class="brxe-block closed" data-state="closed" data-interactions="[{"id":"kqvors","trigger":"click","action":"toggleAttribute","actionAttributeKey":"class","actionAttributeValue":"brx-open","target":"custom","targetSelector":"#brxe-c72527"},{"id":"qnafbi","trigger":"click","action":"javascript","target":"self","jsFunction":"toggleMenu"}]" data-interaction-id="115ce6"><svg class="brxe-svg" id="brxe-900088" xmlns="http://www.w3.org/2000/svg" width="32" height="3" fill="none"><path stroke="#252729" stroke-width="2" d="M0 1.646h32"></path></svg><svg class="brxe-svg" id="brxe-b78b5e" xmlns="http://www.w3.org/2000/svg" width="32" height="3" fill="none"><path stroke="#252729" stroke-width="2" d="M0 1.646h32"></path></svg><svg class="brxe-svg" id="brxe-4aa216" xmlns="http://www.w3.org/2000/svg" width="32" height="3" fill="none"><path stroke="#252729" stroke-width="2" d="M0 1.646h32"></path></svg>
1344<script>/* 1345(function() { 1346 const el = document.querySelector('#brxe-06ecbc'); 1347 el.addEventListener('click', function(e) { 1348 if ( el.dataset.state == '' ) { 1349 return; 1350 } 1351 1352 if ( el.dataset.state == 'opened' ) { 1353 el.dataset.state = ''; 1354 setTimeout(function() { 1355 el.dataset.state = 'closed'; 1356 }, 300); 1357 } else { 1358 el.dataset.state = ''; 1359 setTimeout(function() { 1360 el.dataset.state = 'opened'; 1361 }, 300); 1362 } 1363 }); 1364})() 1365*/</script>
1365</div></nav></div><div id="brxe-85200a" class="brxe-block"><a id="brxe-5dd8dc" href="/contact/?v=get-started" class="brxe-div" data-interactions="[{"id":"jfnhlv","trigger":"mouseenter","action":"setAttribute","actionAttributeKey":"class","actionAttributeValue":"gradient-text","target":"self"},{"id":"rqwikt","trigger":"mouseleave","action":"removeAttribute","actionAttributeKey":"class","actionAttributeValue":"gradient-text","target":"self"}]" data-interaction-id="2ad4c8"><div id="brxe-06a7a0" class="brxe-text-basic">Get a Demo</div></a><a id="brxe-632449" href="/under-attack" class="brxe-block"><svg class="brxe-svg" id="brxe-d87001" xmlns="http://www.w3.org/2000/svg" width="13" height="11" fill="none" viewBox="0 0 13 11"><path fill="#F2583C" fill-rule="evenodd" d="M5.623.486.14 9.522a.96.96 0 0 0-.005.985c.18.304.518.493.88.493h10.97c.363 0 .701-.19.881-.493a.95.95 0 0 0-.005-.985L7.376.486A1.02 1.02 0 0 0 6.5 0c-.361 0-.694.184-.877.486M1.57 9.68h9.86L6.5 1.559z" clip-rule="evenodd"></path><path fill="#F2583C" d="M6.5 3.859c-.27 0-.487.21-.487.47v2.2c0 .262.217.472.487.472s.488-.21.488-.471v-2.2a.48.48 0 0 0-.488-.471m.65 4.4a.64.64 0 0 0-.65-.63.64.64 0 0 0-.65.63c0 .347.29.628.65.628s.65-.281.65-.629"></path></svg><div id="brxe-a7e2e0" class="brxe-text-basic">Under Attack?</div></a></div></div></section></header><main id="brx-content"><section id="brxe-dlylyv" class="brxe-section"><div id="brxe-prriah" class="brxe-container"><div id="brxe-qswkqu" data-script-id="qswkqu" class="brxe-video"><video src="https://www.upwind.io/wp-content/uploads/2026/08/Upwind_WaveCrashing_Loop_16x9_01-2.mp4" autoplay playsinline onclick="this.paused ? this.play() : this.pause()" loop muted><p>Your browser does not support the video tag.</p></video></div><div id="brxe-kahgdm" class="brxe-block content"><div id="brxe-ugmpgb" class="brxe-div spin-banner1"><div id="brxe-nbubjr" data-script-id="nbubjr" class="brxe-code"><style>/* === Banner styles === */ 1366.spin-banner1 { 1367 display: block; 1368 color: #ffffff; 1369 text-align: center; 1370 font-family: "Upwind Sans", sans-serif; 1371 font-size: 14px; 1372 font-weight: 500; 1373 overflow: hidden; 1374 opacity: 0; 1375 transition: opacity 0.5s ease; 1376} 1377 1378.spin-banner__reel-container1 { 1379 display: inline-flex; 1380 align-items: center; 1381 justify-content: center; 1382 vertical-align: middle; 1383 overflow: hidden; 1384 max-width: 100%; 1385 white-space: nowrap; /* Keeps it on a single line for desktop width transition */ 1386 transition: width 0.5s cubic-bezier(0.22, 0.61, 0.36, 1); 1387} 1388 1389/* Inner wrapper for the fade effect */ 1390.spin-banner__content { 1391 display: inline-flex; 1392 align-items: center; 1393 gap: 6px; /* Spacing between image and text */ 1394 opacity: 1; 1395 transition: opacity 0.3s ease; 1396} 1397 1398.spin-banner__content.fading { 1399 opacity: 0; 1400} 1401 1402/* Force correct font, color, and remove default underlines from builder */ 1403.spin-banner1 a, 1404.spin-banner__link1, 1405.spin-banner__content span { 1406 color: #ffffff !important; 1407 text-decoration: none !important; 1408 font-family: "Upwind Sans", sans-serif !important; 1409 font-size: 14px !important; 1410 font-weight: 500 !important; 1411} 1412 1413.spin-banner__link1 { 1414 display: inline-flex; 1415 align-items: center; 1416 gap: 6px; 1417} 1418 1419.spin-banner__link1:hover, 1420.spin-banner__link1:hover span { 1421 text-decoration: none !important; 1422} 1423 1424/* Mobile: Allow natural wrapping, disable width animation to prevent jumps */ 1425@media (max-width: 768px) { 1426 .spin-banner__reel-container1 { 1427 white-space: normal; 1428 width: auto !important; /* Override JS width calculations */ 1429 transition: none; 1430 } 1431 1432 .spin-banner__content, 1433 .spin-banner__link1 { 1434 flex-wrap: wrap; 1435 justify-content: center; 1436 line-height: 1.5; 1437 } 1438} 1439 1440/* Respect users who prefer reduced motion */ 1441@media (prefers-reduced-motion: reduce) { 1442 .spin-banner__reel-container1, 1443 .spin-banner__content { 1444 transition: none !important; 1445 } 1446} 1447</style>
1447<script>/* ============================================ 1448 Fade Banner - Vanilla JS 1449 ============================================ */ 1450document.addEventListener("DOMContentLoaded", function () { 1451 "use strict"; 1452 1453 // ===== CONFIG ===== 1454 const config = { 1455 targetSelector: "#announcementBanner2", 1456 messages: [ 1457 { 1458 text: "Building the Future: Introducing the Upwind AI Security Lab", 1459 url: "/feed/building-the-future-introducing-the-upwind-ai-security-lab", 1460 }, 1461 { 1462 text: "Upwind is the first in the world to identify Shai-Hulud striking again â", 1463 url: "/feed/shai-hulud-tanstack-supply-chain-worm", 1464 imagePosition: "before", 1465 }, 1466 { 1467 text: "AWS & Upwind partner to bring CNAPP to the AWS Security Hub â", 1468 url: "/feed/the-next-wave-is-here-upwind-is-now-seamlessly-accessible-within-the-aws-security-operating-model", 1469 imagePosition: "before", 1470 }, 1471 { 1472 text: "Upwind raises $250M Series B â", 1473 url: "/feed/building-next-wave-cloud-security-upwind", 1474 imagePosition: "before", 1475 }, 1476 { 1477 text: "The next wave of AI. Upwind becomes Agentic â", 1478 url: "/feed/introducing-the-upwind-agentic-pack-ai-agents-for-cloud-security", 1479 imagePosition: "before", 1480 }, 1481 ], 1482 1483 imageSize: 22, // px 1484 rotateInterval: 8000, // ms between message swaps (shortened slightly from 12s) 1485 fadeDuration: 300, // ms it takes to fade out before swapping 1486 }; 1487 1488 const container = document.querySelector(config.targetSelector); 1489 if (!container) return; 1490 let currentIndex = 0; 1491 let rotateTimer = null; 1492 1493 // Create inner wrapper to handle the fading 1494 1495 const contentWrapper = document.createElement("div"); 1496 contentWrapper.className = "spin-banner__content fading"; // Start faded out 1497 container.style.width = "0px"; // Force start at 0px width 1498 container.appendChild(contentWrapper); 1499 1500 function buildMessageHTML(message) { 1501 const text = typeof message === "string" ? message : message.text; 1502 const url = typeof message === "object" ? message.url : null; 1503 const image = typeof message === "object" ? message.image : null; 1504 const imagePosition = 1505 (typeof message === "object" && message.imagePosition) || "before"; 1506 1507 let imgHTML = image 1508 ? `<img src="${image}" alt="" style="width:${config.imageSize}px;height:${config.imageSize}px;flex-shrink:0;vertical-align:middle;">` 1509 : ""; 1510 1511 let innerHTML = ""; 1512 if (imagePosition === "before") innerHTML += imgHTML; 1513 innerHTML += `<span>${text}</span>`; 1514 if (imagePosition === "after") innerHTML += imgHTML; 1515 if (url) { 1516 return `<a href="${url}" class="spin-banner__link1">${innerHTML}</a>`; 1517 } 1518 1519 return innerHTML; 1520 } 1521 1522 function renderMessage(index) { 1523 const isFirstRender = !contentWrapper.innerHTML; 1524 1525 if (isFirstRender) { 1526 // 1. Inject the text invisibly so we can measure its exact width 1527 contentWrapper.innerHTML = buildMessageHTML(config.messages[index]); 1528 // 2. Start the outer banner fade-in immediately 1529 const outerBanner = document.querySelector('.spin-banner1'); 1530 if (outerBanner) { 1531 outerBanner.style.opacity = '1'; 1532 } 1533 // 3. Start the width expansion at the same time 1534 container.style.width = contentWrapper.offsetWidth + 'px'; 1535 // 4. Delay the text's visual fade-in by exactly 60ms 1536 setTimeout(() => { 1537 contentWrapper.classList.remove('fading'); 1538 }, 60); 1539 return; 1540 } 1541 1542 // --- Subsequent swaps behavior remains unchanged -- 1543 // 1. Trigger the CSS fade out 1544 contentWrapper.classList.add('fading'); 1545 setTimeout(() => { 1546 // 2. Swap the HTML while it's invisible 1547 contentWrapper.innerHTML = buildMessageHTML(config.messages[index]); 1548 // 3. Measure the new natural width and expand/contract the inner container 1549 container.style.width = contentWrapper.offsetWidth + 'px'; 1550 // 4. Fade back in immediately after the width starts adjusting 1551 requestAnimationFrame(() => { 1552 contentWrapper.classList.remove('fading'); 1553 }); 1554 }, config.fadeDuration); 1555 } 1556 1557 function startRotation() { 1558 if (config.rotateInterval <= 0 || config.messages.length <= 1) return; 1559 1560 rotateTimer = setInterval(() => { 1561 currentIndex = (currentIndex + 1) % config.messages.length; 1562 1563 renderMessage(currentIndex); 1564 }, config.rotateInterval); 1565 } 1566 1567 function stopRotation() { 1568 if (rotateTimer) clearInterval(rotateTimer); 1569 } 1570 1571 // Pause on hover 1572 container.parentElement.addEventListener("mouseenter", stopRotation); 1573 container.parentElement.addEventListener("mouseleave", startRotation); 1574 1575 // ===== INIT ===== 1576 (document.fonts ? document.fonts.ready : Promise.resolve()).then(() => { 1577 // Wait exactly 1 second on a blank screen before triggering the first animation 1578 1579 setTimeout(() => { 1580 renderMessage(0); 1581 startRotation(); 1582 }, 500); 1583 }); 1584}); 1585</script>
1585</div><div id="announcementBanner2" class="brxe-div spin-banner__reel-container1"></div></div><h1 id="brxe-jrgayf" class="brxe-heading heading-48">Cloud & AI Security from the <span class="text-fancy-italic">Inside-Out.</span></h1><div id="brxe-kjyuat" class="brxe-text-basic text-18">By combining agentless scanning and runtime sensors Upwind enables security, developers and devops teams to see their Cloud & AI infrastructure in the same operating picture, remediate exactly what matters and stop attacks in real-time. </div><a id="brxe-iyijkp" class="brxe-button bricks-button bricks-background-primary" href="/contact">Get a Demo</a></div></div></section><section class="brxe-boiuru brxe-section"><div class="brxe-ccb23a brxe-container"><h2 class="brxe-58e345 brxe-heading heading-20">Trusted by hundreds of enterprises around the world</h2><div class="brxe-gisgwi brxe-container"><div class="brxe-adfa3f brxe-block horizontal-scrolling-images"><img width="87" height="27" src="https://www.upwind.io/wp-content/uploads/2026/01/roku-logo.png" class="brxe-76b514 brxe-image css-filter size-full" alt="roku-logo.png" decoding="async" /><img width="155" height="35" src="https://www.upwind.io/wp-content/uploads/2026/01/carvana-logo.png" class="brxe-d3cc08 brxe-image css-filter size-full" alt="carvana-logo.png" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/01/carvana-logo.png 155w, https://www.upwind.io/wp-content/uploads/2026/01/carvana-logo-150x35.png 150w" sizes="(max-width: 155px) 100vw, 155px" /><img width="106" height="41" src="https://www.upwind.io/wp-content/uploads/2026/01/Waste_Management_logo.png" class="brxe-9079cf brxe-image css-filter size-full" alt="Waste_Management_logo.png" decoding="async" /><img width="142" height="23" src="https://www.upwind.io/wp-content/uploads/2026/01/Siemens_AG_logo-2.png" class="brxe-2626cf brxe-image css-filter size-full" alt="Siemens_AG_logo-2.png" decoding="async" /><img width="68" height="38" src="https://www.upwind.io/wp-content/uploads/2026/01/nu-logo.png" class="brxe-73a819 brxe-image css-filter size-full" alt="nu-logo.png" decoding="async" /><img width="82" height="30" src="https://www.upwind.io/wp-content/uploads/2026/01/wix-logo.png" class="brxe-1cab32 brxe-image css-filter size-full" alt="wix-logo.png" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/01/wix-logo.png 82w, https://www.upwind.io/wp-content/uploads/2026/01/wix-logo-80x30.png 80w" sizes="(max-width: 82px) 100vw, 82px" /><img width="178" height="39" src="https://www.upwind.io/wp-content/uploads/2026/01/checkpoint-logo.png" class="brxe-6a406f brxe-image css-filter size-full" alt="checkpoint-logo.png" decoding="async" /><img src="https://www.upwind.io/wp-content/uploads/2026/01/Bill.svg" class="brxe-c8b786 brxe-image css-filter size-large" alt="Bill.svg" decoding="async" /><img width="145" height="44" src="https://www.upwind.io/wp-content/uploads/2026/01/Peloton_logo.png" class="brxe-284905 brxe-image css-filter size-full" alt="Peloton_logo.png" decoding="async" /><img width="143" height="35" src="https://www.upwind.io/wp-content/uploads/2026/01/clickup-logo.png" class="brxe-ngnqlj brxe-image css-filter size-full" alt="clickup-logo.png" decoding="async" /><img width="89" height="46" src="https://www.upwind.io/wp-content/uploads/2026/01/agoda-logo.png" class="brxe-kvsolh brxe-image css-filter size-full" alt="agoda-logo.png" decoding="async" /><img src="https://www.upwind.io/wp-content/uploads/2026/08/Sixt_Logo.svg" class="brxe-xtzaun brxe-image css-filter size-full" alt="Sixt_Logo" decoding="async" /><img src="https://www.upwind.io/wp-content/uploads/2026/08/supabase-logo-wordmark-light-1.svg" class="brxe-qrbeoq brxe-image css-filter size-full" alt="supabase-logo-wordmark--light 1" decoding="async" /></div><div class="brxe-kuammh brxe-block horizontal-scrolling-images scroll-right"><img src="https://www.upwind.io/wp-content/uploads/2026/07/HM-Logo-1.svg" class="brxe-lkswtj brxe-image css-filter size-large" alt="H&M-Logo 1" decoding="async" /><img src="https://www.upwind.io/wp-content/uploads/2026/07/Wolters-logo.svg" class="brxe-ufiizl brxe-image css-filter size-large" alt="Wolters-logo" decoding="async" /><img src="https://www.upwind.io/wp-content/uploads/2026/07/Patagonia_Unternehmen_logo-1.svg" class="brxe-nvvvpv brxe-image css-filter size-full" alt="Patagonia_(Unternehmen)_logo 1" decoding="async" /><img src="https://www.upwind.io/wp-content/uploads/2026/07/amex-gbt-1.svg" class="brxe-bvhnam brxe-image css-filter size-full" alt="amex-gbt 1" title="amex-gbt 1" decoding="async" /></div></div></div></section><section id="brxe-1825aa" class="brxe-section dot-bg"><div id="brxe-4aa9a1" class="brxe-container"><h2 id="brxe-a3f637" class="brxe-heading">Cloud &
1585 AI Infrastructure is now changing in <span class="no-break">real-time</span> and security needs to do the same.</h2><div id="brxe-1e5992" class="brxe-text-basic">A new operating model, <span class="gradient-text">Inside-Out</span> links context of code to production in realtime, allowing security teams to see their live inventory, high-signal exposures and whether an attack is already unfolding.</div></div><div id="brxe-df8ced" class="brxe-container"><div id="brxe-a8a69a" data-script-id="a8a69a" class="brxe-video play-and-loop-end"><video src="https://www.upwind.io/wp-content/uploads/2026/08/Funnel-03-02_x3-edited.mp4" playsinline onclick="this.paused ? this.play() : this.pause()" muted><p>Your browser does not support the video tag.</p></video></div><div id="brxe-3e112e" data-script-id="3e112e" class="brxe-video play-and-loop-end"><video src="https://www.upwind.io/wp-content/uploads/2026/08/Funnel-03-01_Vertical_x3_1.mp4" playsinline onclick="this.paused ? this.play() : this.pause()" muted><p>Your browser does not support the video tag.</p></video></div><div id="brxe-61b97e" data-script-id="61b97e" class="brxe-code">
1585<script> 1586 document.addEventListener('DOMContentLoaded', () => { 1587 // Select videos inside Bricks elements with the new class 1588 const loopVideos = document.querySelectorAll('.play-and-loop-end video'); 1589 1590 if (loopVideos.length === 0) return; 1591 1592 // Triggers when the top of the video is 35% up from the bottom of the viewport 1593 const observerOptions = { 1594 root: null, 1595 rootMargin: '0px 0px -35% 0px', 1596 threshold: 0 1597 }; 1598 1599 const videoObserver = new IntersectionObserver((entries, observer) => { 1600 entries.forEach(entry => { 1601 if (entry.isIntersecting) { 1602 const video = entry.target; 1603 1604 // Ensure autoplay policies are met 1605 video.muted = true; 1606 video.playsInline = true; 1607 // Disable native loop so our custom script handles it 1608 video.loop = false; 1609 1610 const playPromise = video.play(); 1611 if (playPromise !== undefined) { 1612 playPromise.then(() => { 1613 // Once playing successfully, start monitoring the time 1614 requestAnimationFrame(() => monitorPlayback(video)); 1615 }).catch(error => { 1616 console.error('Video play failed:', error); 1617 }); 1618 } 1619 1620 // Stop observing once it has been triggered 1621 observer.unobserve(video); 1622 } 1623 }); 1624 }, observerOptions); 1625 1626 // High-performance loop to check video time without relying on slow event listeners 1627 function monitorPlayback(video) { 1628 if (video.duration) { 1629 // If the video is within 0.05 seconds of ending, jump back 0.5s from the end. 1630 // Doing this slightly before the end prevents the native pause/stutter. 1631 if (video.currentTime >= video.duration - 0.05) { 1632 video.currentTime = video.duration - 0.5; 1633 } 1634 } 1635 1636 // Continue monitoring as long as the video isn't paused 1637 if (!video.paused) { 1638 requestAnimationFrame(() => monitorPlayback(video)); 1639 } 1640 } 1641 1642 loopVideos.forEach(video => { 1643 // Fallback: If it somehow slips past our monitor and officially ends 1644 video.addEventListener('ended', () => { 1645 video.currentTime = video.duration - 0.5; 1646 video.play(); 1647 requestAnimationFrame(() => monitorPlayback(video)); 1648 }); 1649 1650 videoObserver.observe(video); 1651 }); 1652 }); 1653</script>
1653</div></div><div id="brxe-d5369b" class="brxe-container"><div id="brxe-2a00e3" class="brxe-block"><div id="brxe-372b2c" class="brxe-block"><div id="brxe-0c09b2" class="brxe-div tag"><svg class="brxe-svg icon1" id="brxe-59d3aa" xmlns="http://www.w3.org/2000/svg" width="25" height="19" fill="currentColor" viewBox="0 0 25 19"><path d="M12.499 1.969c-2.83 0-5.156 1.214-6.94 2.777-1.671 1.468-2.826 3.211-3.416 4.442.59 1.23 1.745 2.973 3.411 4.442 1.789 1.562 4.115 2.776 6.945 2.776s5.156-1.214 6.94-2.776c1.671-1.469 2.826-3.212 3.416-4.443-.59-1.23-1.745-2.973-3.412-4.441-1.788-1.563-4.114-2.777-6.944-2.777m-8.36 1.337C6.185 1.509 8.993 0 12.5 0s6.315 1.51 8.36 3.306c2.03 1.784 3.389 3.913 4.036 5.377a1.24 1.24 0 0 1 0 1.009c-.647 1.464-2.005 3.597-4.037 5.377-2.044 1.797-4.852 3.306-8.36 3.306-3.506 0-6.314-1.51-8.358-3.306C2.108 13.29.75 11.156.107 9.692a1.24 1.24 0 0 1 0-1.009C.75 7.219 2.108 5.086 4.14 3.306m8.36 9.163c1.918 0 3.472-1.469 3.472-3.281S14.417 5.906 12.5 5.906h-.087q.085.316.087.657c0 1.447-1.246 2.625-2.778 2.625q-.36-.002-.694-.083v.082c0 1.813 1.554 3.282 3.472 3.282m0-8.531c1.473 0 2.886.553 3.928 1.537 1.042.985 1.628 2.32 1.628 3.713 0 1.392-.586 2.727-1.628 3.712a5.73 5.73 0 0 1-3.928 1.537c-1.474 0-2.887-.553-3.928-1.537-1.042-.985-1.628-2.32-1.628-3.713 0-1.392.586-2.727 1.628-3.712 1.041-.984 2.454-1.537 3.928-1.537"></path></svg><div id="brxe-ca26ff" class="brxe-text-basic">Live inventory</div></div><div id="brxe-8dd4b6" class="brxe-div tag"><div id="brxe-1b1622" class="brxe-text-basic">Refreshed every 30 seconds</div></div></div><h3 id="brxe-3bcf2a" class="brxe-heading text">Know what is running, connected, and exposed across your environment.</h3><div id="brxe-1d9ea6" class="brxe-block"><div id="brxe-f5aaf1" class="brxe-text-basic text">Cloud assets, APIs, data flows, AI services, and non-human identities change too quickly for manual inventories and periodic scans to stay current.â¨</div><div id="brxe-f8667d" class="brxe-text-basic text"><div>Give your security and application owners a live map of the environment so they can answer what is running, who owns it, what it communicates with, and what data it can reach.</div></div></div></div></div><div id="brxe-1bf06f" class="brxe-container"><div id="brxe-9d1557" class="brxe-block"><div id="brxe-46c3fb" class="brxe-block"><div id="brxe-7ec89c" class="brxe-div tag"><svg class="brxe-svg icon2" id="brxe-f00253" xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="currentColor" viewBox="0 0 25 25"><path d="M12.504 6.346c.37 0 .674.286.674.635 0 1.31 1.68 1.964 2.66 1.04a.705.705 0 0 1 .952 0c.26.246.26.65 0 .896-.981.925-.287 2.508 1.102 2.508.37 0 .674.286.674.635s-.303.635-.674.635c-1.389 0-2.083 1.583-1.102 2.508.26.246.26.65 0 .897a.706.706 0 0 1-.952 0c-.98-.925-2.66-.27-2.66 1.04 0 .349-.303.634-.674.634-.37 0-.673-.285-.673-.635 0-1.309-1.68-1.964-2.66-1.04a.705.705 0 0 1-.952 0 .61.61 0 0 1 0-.896c.98-.925.286-2.508-1.103-2.508-.37 0-.673-.286-.673-.635s.303-.635.673-.635c1.39 0 2.084-1.583 1.103-2.508a.61.61 0 0 1 0-.896.705.705 0 0 1 .951 0c.981.924 2.66.27 2.66-1.04 0-.35.304-.635.674-.635m-1.01 5.714c.56 0 1.01-.424 1.01-.952s-.45-.953-1.01-.953-1.01.425-1.01.953.45.952 1.01.952m3.03 1.27c0-.35-.302-.635-.673-.635-.37 0-.673.286-.673.635s.303.635.673.635.674-.286.674-.635"></path><path d="M12.5 0q.369.002.699.143l9.807 3.923c1.145.457 2 1.521 1.994 2.807l-.03.958c-.288 5.007-2.682 13.077-11.095 16.874l-.333.13c-.675.22-1.41.22-2.084 0l-.333-.13C2.712 20.908.318 12.838.03 7.83L0 6.873c-.005-1.206.746-2.217 1.784-2.715l.21-.092L11.801.143Q12.131 0 12.5 0M2.924 6.387H2.92a.8.8 0 0 0-.34.252.36.36 0 0 0-.08.221l.028.86c.26 4.478 2.404 11.448 9.625 14.707l.17.054a.85.85 0 0 0 .523-.054l.706-.338c7.115-3.616 8.926-10.973 8.948-15.229 0-.069-.02-.14-.08-.221a.7.7 0 0 0-.23-.2l-.11-.052h-.004L12.5 2.556z"></path></svg><div id="brxe-97ae53" class="brxe-text-basic">Fix High-signal exposures</div></div><div id="brxe-756b10" class="brxe-div tag"><div id="brxe-f59b97" class="brxe-text-basic">93% noise reduction</div></div></div><h3 id="brxe-333f7a" class="brxe-heading text">Direct remediation to the risks most likely to affect production.</h3><div id="brxe-f9f6f0" class="brxe-block"><div id="brxe-bb767d" class="brxe-text-basic text">Static severity scores and findings from separate tools create large backlogs without showing whether a vulnerable service is running, reachable, exposed, or connected to a likely attack path.</div><div id="brxe-76c181" class="brxe-text-basic text"><div>Let your team use live exposure and activity to separate real risk from theoretical risk, shorten triage, and fix the source of the issue instead of chasing every alert.</div></div></div></div></div><div id="brxe-a39915" class="brxe-container"><div id="brxe-54ece9" class="brxe-block"><div id="brxe-633861" class="brxe-block"><div id="brxe-b3c812" class="brxe-div tag"><svg class="brxe-svg icon3" id="brxe-ade957" xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="currentColor" viewBox="0 0 25 25"><path d="M12.5 0q.369.002.699.143l9.807 3.923c1.145.457 2 1.521 1.994 2.807l-.03.958c-.288 5.007-2.682 13.077-11.095 16.874l-.333.13c-.675.22-1.41.22-2.084 0l-.333-.13C2.712 20.908.318 12.838.03 7.83L0 6.873c-.005-1.206.746-2.217 1.784-2.715l.21-.092L11.801.143Q12.131 0 12.5 0M2.924 6.387H2.92a.8.8 0 0 0-.34.252.36.36 0 0 0-.08.221l.028.86c.26 4.478 2.404 11.448 9.625 14.707l.17.054a.85.85 0 0 0 .523-.054l.706-.338c7.115-3.616 8.926-10.973 8.948-15.229 0-.069-.02-.14-.08-.221a.7.7 0 0 0-.23-.2l-.11-.052h-.004L12.5 2.556z"></path><path d="M16.62 8.571a1.251 1.251 0 0 1 1.732 1.732l-.16.197-5.499 5.497a1.635 1.635 0 0 1-2.186.112l-.124-.112-2.614-2.613-.16-.197a1.251 1.251 0 0 1 1.732-1.731l.197.16 2 2 4.885-4.885z"></path></svg><div id="brxe-b08777" class="brxe-text-basic">Real-time protection</div></div><div id="brxe-3a1699" class="brxe-div tag"><div id="brxe-1af5d0" class="brxe-text-basic">15 seconds to detect</div></div></div><h3 id="brxe-af19d1" class="brxe-heading text">Detect and stop attacks while they are happening.</h3><div id="brxe-855889" class="brxe-block"><div id="brxe-380cf1" class="brxe-text-basic text">Configuration scans cannot see abnormal process execution, suspicious network destinations, unexpected identity actions, prompt attacks, or sensitive data moving through a live application.</div><div id="brxe-841319" class="brxe-text-basic text"><div>Upwind allows you to connect workload runtime signals and cloud activities to spot meaningful deviations as they occur, and empower people and agents to immediately investigate and contain the threat.</div></div></div></div></div><div id="brxe-38cb90" class="brxe-container"><div id="brxe-6ed771" class="brxe-div"><img src="https://www.upwind.io/wp-content/uploads/2026/08/dark-u-logo.svg" class="brxe-image css-filter size-large" alt="dark-u-logo.svg" id="brxe-e2dfd6" decoding="async" /></div><h2 id="brxe-2a20d2" class="brxe-heading">The <span class="text-fancy-italic">Inside-Out</span> Cloud & AI Security Platform</h2><div id="brxe-aa68e8" class="brxe-block"><span id="btn1" class="brxe-button text-20 btn-active bricks-button bricks-background-primary">Live inventory</span><span id="btn2" class="brxe-button text-20 bricks-button bricks-background-primary">Fix High-signal exposures</span><span id="btn3" class="brxe-button text-20 bricks-button bricks-background-primary">Real-time protection</span></div><div id="brxe-c9e0d8" class="brxe-block"><div id="state1" data-script-id="969aea" class="brxe-video play-on-scroll"><video src="https://www.upwind.io/wp-content/uploads/2026/08/Visablity2.mp4" playsinline controls muted><p>Your browser does not support the video tag.</p></video></div><div id="state2" data-script-id="0c46e8" class="brxe-video"><video src="https://www.upwind.io/wp-content/uploads/2026/08/High-signal-exposure-1c.mp4" autoplay playsinline controls muted><p>Your browser does not support the video tag.</p></video></div><div id="state3" data-script-id="3c4a8c" class="brxe-video"><video src="https://www.upwind.io/wp-content/uploads/2026/08/runtime-protection2-edited.mp4" autoplay playsinline controls muted><p>Your browser does not support the video tag.</p></video></div></div><div id="brxe-dbc85a" data-script-id="dbc85a" class="brxe-code">
1653<script>document.addEventListener('DOMContentLoaded', () => { 1654 const btn1 = document.getElementById('btn1'); 1655 const btn2 = document.getElementById('btn2'); 1656 const btn3 = document.getElementById('btn3'); 1657 1658 const state1 = document.getElementById('state1'); 1659 const state2 = document.getElementById('state2'); 1660 const state3 = document.getElementById('state3'); 1661 1662 if (!btn1 || !btn2 || !btn3 || !state1 || !state2 || !state3) return; 1663 1664 const buttons = [btn1, btn2, btn3]; 1665 const states = [state1, state2, state3]; 1666 1667 // Added a second parameter to check if this is the initial page load 1668 function switchState(activeIndex, isInitialLoad = false) { 1669 for (let i = 0; i < buttons.length; i++) { 1670 const video = states[i].querySelector('video'); 1671 1672 if (i === activeIndex) { 1673 // Activate button and show state 1674 buttons[i].classList.add('btn-active'); 1675 states[i].style.display = 'flex'; 1676 1677 // Resume video ONLY if it exists AND it's not the initial page load 1678 if (video && !isInitialLoad) { 1679 let playPromise = video.play(); 1680 if (playPromise !== undefined) { 1681 playPromise.catch(error => { 1682 console.log("Browser prevented auto-playing the video."); 1683 }); 1684 } 1685 } 1686 } else { 1687 // Deactivate button and hide state 1688 buttons[i].classList.remove('btn-active'); 1689 states[i].style.display = 'none'; 1690 1691 // Pause video if it exists in this hidden state 1692 if (video) { 1693 video.pause(); 1694 } 1695 } 1696 } 1697 } 1698 1699 // Set initial state but pass 'true' to prevent the video from playing 1700 switchState(0, true); 1701 1702 // Attach listeners (defaults to false, so videos will play on click) 1703 btn1.addEventListener('click', (e) => { 1704 e.preventDefault(); 1705 switchState(0); 1706 }); 1707 1708 btn2.addEventListener('click', (e) => { 1709 e.preventDefault(); 1710 switchState(1); 1711 }); 1712 1713 btn3.addEventListener('click', (e) => { 1714 e.preventDefault(); 1715 switchState(2); 1716 }); 1717});</script>
1717</div></div><div id="brxe-d6abbb" class="brxe-container"><h2 id="brxe-96cd9f" class="brxe-heading">Learn more</h2><div id="brxe-9a3829" class="brxe-block"><a id="brxe-4c75b7" href="/cnapp" class="brxe-div"><div id="brxe-031f48" class="brxe-text-basic">Cloud Security</div></a><a id="brxe-769c27" href="/ai-security-platform" class="brxe-div"><div id="brxe-dbd283" class="brxe-text-basic">AI Security</div></a><a id="brxe-1e16c3" href="/agentic-security" class="brxe-div"><div id="brxe-bc88c6" class="brxe-text-basic">Agentic Security</div></a></div></div></section><section id="brxe-423e4e" class="brxe-section"><div id="brxe-118188" class="brxe-container"><div id="brxe-84ba44" class="brxe-block"><h2 id="brxe-7dd70c" class="brxe-heading heading-32">Trusted and deployed by the biggest enterprises in the world</h2><a id="brxe-73f7f8" class="brxe-button bricks-button bricks-background-primary" href="/case-studies">See Case Studies</a></div><div class="brxe-rvjooe brxe-block"><div class="brxe-fbmjgf brxe-div"></div><div class="brxe-zslsay brxe-div"></div><div class="brxe-ekyfwa brxe-block horizontal-scrolling-elements"><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/09/callrail.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="callrail.svg" data-size="104px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwind has truly acted as an extension of our security team, making it even easier for us to ensure compliance, automate security workflows, and focus our efforts on remediations in record time.</div></div><div class="brxe-inlguk brxe-block"><img width="120" height="120" src="https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="A woman with long dark hair, wearing a light blue shirt and brown belt, smiles while standing outdoors. Sunlight filters through green trees and vegetation, creating a bright, serene atmosphere. A walking path is visible in the background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim.png 120w, https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim-80x80.png 80w" sizes="(max-width: 120px) 100vw, 120px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Kurdeen Karimâ</div><div class="brxe-kdsutj brxe-text-basic text-14">Information Security and Privacyâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-1.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-1" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind has truly acted as an extension of our security team, making it even easier for us to ensure compliance, automate security workflows, and focus our efforts on remediations in record time.</div><div class="brxe-gthbgl brxe-block"><img width="120" height="120" src="https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="A woman with long dark hair, wearing a light blue shirt and brown belt, smiles while standing outdoors. Sunlight filters through green trees and vegetation, creating a bright, serene atmosphere. A walking path is visible in the background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim.png 120w, https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim-80x80.png 80w" sizes="(max-width: 120px) 100vw, 120px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Kurdeen Karimâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">Information Security and Privacyâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/05/h20ai.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="h20ai" data-size="48px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">We have consolidated multiple products while giving security engineers end-to-e
1717nd visibility, which we previously needed to use multiple products for.</div></div><div class="brxe-inlguk brxe-block"><img width="512" height="512" src="https://www.upwind.io/wp-content/uploads/2026/05/Ophir-Zahavi.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="Ophir Zahavi" decoding="async" fetchpriority="high" srcset="https://www.upwind.io/wp-content/uploads/2026/05/Ophir-Zahavi.png 512w, https://www.upwind.io/wp-content/uploads/2026/05/Ophir-Zahavi-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/05/Ophir-Zahavi-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/05/Ophir-Zahavi-80x80.png 80w" sizes="(max-width: 512px) 100vw, 512px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Ophir Zahaviâ</div><div class="brxe-kdsutj brxe-text-basic text-14">Head of Cloud Engineeringâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-2.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-2" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">We have consolidated multiple products while giving security engineers end-to-end visibility, which we previously needed to use multiple products for.</div><div class="brxe-gthbgl brxe-block"><img width="512" height="512" src="https://www.upwind.io/wp-content/uploads/2026/05/Ophir-Zahavi.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="Ophir Zahavi" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/05/Ophir-Zahavi.png 512w, https://www.upwind.io/wp-content/uploads/2026/05/Ophir-Zahavi-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/05/Ophir-Zahavi-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/05/Ophir-Zahavi-80x80.png 80w" sizes="(max-width: 512px) 100vw, 512px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Ophir Zahaviâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">Head of Cloud Engineeringâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/01/yotpo-testimonial-logo.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="yotpo-testimonial-logo.svg" data-size="88px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwind has drastically reduced triage and investigation time by correlating runtime detections with audit logs and giving us end-to-end visibility. Understanding who did what, how, and when, at a single glance has been a major game-changer.</div></div><div class="brxe-inlguk brxe-block"><img width="106" height="108" src="https://www.upwind.io/wp-content/uploads/2025/04/Dobromir-Kosev.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="Dobromir-Kosev" decoding="async" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Dobromir Kosevâ</div><div class="brxe-kdsutj brxe-text-basic text-14">Security Engineerâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind has drastically reduced triage and investigation time by correlating runtime detections with audit logs and giving us end-to-end visibility. Understanding who did what, how, and when, at a single glance has been a major game-changer.</div><div class="brxe-gthbgl brxe-block"><img width="106" height="108" src="https://www.upwind.io/wp-content/uploads/2025/04/Dobromir-Kosev.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="Dobromir-Kosev" decoding="async" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Dobromir Kosevâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">Security Engineerâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img width="157" height="41" src="https://www.upwind.io/wp-content/uploads/2025/09/Intezer-Logo.png" class="brxe-fssmog brxe-image css-filter size-full" alt="Intezer-Logo" data-size="94px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">
1717Upwind has given us an end-to-end view of our multi-cloud infrastructure in a single platform, which previously required us to use multiple tools. Upwind truly acts as a single pane of glass for our security team, helping us focus on whatâs important.</div></div><div class="brxe-inlguk brxe-block"><img width="512" height="512" src="https://www.upwind.io/wp-content/uploads/2026/08/Roy.jpg" class="brxe-gmzoer brxe-image css-filter size-full" alt="Roy" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/08/Roy.jpg 512w, https://www.upwind.io/wp-content/uploads/2026/08/Roy-300x300.jpg 300w, https://www.upwind.io/wp-content/uploads/2026/08/Roy-150x150.jpg 150w, https://www.upwind.io/wp-content/uploads/2026/08/Roy-80x80.jpg 80w" sizes="(max-width: 512px) 100vw, 512px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Roy Haleviâ</div><div class="brxe-kdsutj brxe-text-basic text-14">CTO</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-3.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-3" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind has given us an end-to-end view of our multi-cloud infrastructure in a single platform, which previously required us to use multiple tools. Upwind truly acts as a single pane of glass for our security team, helping us focus on whatâs important.</div><div class="brxe-gthbgl brxe-block"><img width="512" height="512" src="https://www.upwind.io/wp-content/uploads/2026/08/Roy.jpg" class="brxe-pmeykc brxe-image css-filter size-full" alt="Roy" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/08/Roy.jpg 512w, https://www.upwind.io/wp-content/uploads/2026/08/Roy-300x300.jpg 300w, https://www.upwind.io/wp-content/uploads/2026/08/Roy-150x150.jpg 150w, https://www.upwind.io/wp-content/uploads/2026/08/Roy-80x80.jpg 80w" sizes="(max-width: 512px) 100vw, 512px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Roy Haleviâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">CTO</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/04/cogniteam.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="cogniteam" data-size="126px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwind saves us time and money. It has been a game changer for our security team. We previously required multiple tools to protect our cloud infrastructure. With Upwind, we receive even better protection in one platform, helping our teams focus their efforts effectively.</div></div><div class="brxe-inlguk brxe-block"><img width="106" height="105" src="https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="A man wearing glasses and a white shirt stands with his arms crossed and a slight smile. He has short dark hair and a watch on his left wrist. The background features a partial logo on a wall." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah-80x80.png 80w" sizes="(max-width: 106px) 100vw, 106px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Dr. Yehuda Elmaliahâ</div><div class="brxe-kdsutj brxe-text-basic text-14">CEO</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-4.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-4" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind saves us time and money. It has been a game changer for our security team. We previously required multiple tools to protect our cloud infrastru
1717cture. With Upwind, we receive even better protection in one platform, helping our teams focus their efforts effectively.</div><div class="brxe-gthbgl brxe-block"><img width="106" height="105" src="https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="A man wearing glasses and a white shirt stands with his arms crossed and a slight smile. He has short dark hair and a watch on his left wrist. The background features a partial logo on a wall." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah-80x80.png 80w" sizes="(max-width: 106px) 100vw, 106px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Dr. Yehuda Elmaliahâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">CEO</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/09/rivery.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="rivery.svg" data-size="93px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwindâs detailed threat detections provide us with all the context we need from our CI/CD pipeline, process trees and network topology- allowing us to increase our time to resolution by 7x.</div></div><div class="brxe-inlguk brxe-block"><img width="109" height="110" src="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="Person with short dark hair wearing a blue button-up shirt, standing against a white background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png 109w, https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Alon Reznikâ</div><div class="brxe-kdsutj brxe-text-basic text-14">Chief Architectâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-13.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-13" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwindâs detailed threat detections provide us with all the context we need from our CI/CD pipeline, process trees and network topology- allowing us to increase our time to resolution by 7x.</div><div class="brxe-gthbgl brxe-block"><img width="109" height="110" src="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="Person with short dark hair wearing a blue button-up shirt, standing against a white background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png 109w, https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Alon Reznikâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">Chief Architectâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/04/661917c5a7cc10c6a4630e9f_logo-digital-turbine-1.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="661917c5a7cc10c6a4630e9f_logo-digital-turbine 1" data-size="71px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwind superpowers our DevOps/Platform Engineering teams. At the scale of our infrastru
1717cture, we know we can only trust a few agent-based security products. Upwindâs efficient eBPF sensor is the only one that met our standards.</div></div><div class="brxe-inlguk brxe-block"><img width="106" height="106" src="https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="A person with a shaved head, wearing a black shirt, leans against a glass wall. The background features a modern office interior with lights and a workspace." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv-80x80.png 80w" sizes="(max-width: 106px) 100vw, 106px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Gal Avivâ</div><div class="brxe-kdsutj brxe-text-basic text-14">CTO & GMâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-6.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-6" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind superpowers our DevOps/Platform Engineering teams. At the scale of our infrastructure, we know we can only trust a few agent-based security products. Upwindâs efficient eBPF sensor is the only one that met our standards.</div><div class="brxe-gthbgl brxe-block"><img width="106" height="106" src="https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="A person with a shaved head, wearing a black shirt, leans against a glass wall. The background features a modern office interior with lights and a workspace." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv-80x80.png 80w" sizes="(max-width: 106px) 100vw, 106px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Gal Avivâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">CTO & GMâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2024/07/Qwak_idBdUq_8mh_1.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="Qwak_idBdUq_8mh_1" data-size="60px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">I found it incredibly intuitive that our workload protection seamlessly integrates API security in a single platform. Combining infrastructure and application security represents a seamless synergy that addresses a critical need in the cloud security space. This is the API security solution we were waiting for.</div></div><div class="brxe-inlguk brxe-block"><img width="106" height="105" src="https://www.upwind.io/wp-content/uploads/2025/04/Yuval-Fernbach.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="A man with short dark hair smiles subtly. He is wearing a black shirt and is set against a bright green circular background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Yuval-Fernbach.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Yuval-Fernbach-80x80.png 80w" sizes="(max-width: 106px) 100vw, 106px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Yuval Fernbachâ</div><div class="brxe-kdsutj brxe-text-basic text-14">Co-Founder & CTOâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-5.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-5" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">I found it incredibly intuitive that our workload protection seamlessly integrates API security in a single platform. Combining infrastru
1717cture and application security represents a seamless synergy that addresses a critical need in the cloud security space. This is the API security solution we were waiting for.</div><div class="brxe-gthbgl brxe-block"><img width="106" height="105" src="https://www.upwind.io/wp-content/uploads/2025/04/Yuval-Fernbach.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="A man with short dark hair smiles subtly. He is wearing a black shirt and is set against a bright green circular background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Yuval-Fernbach.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Yuval-Fernbach-80x80.png 80w" sizes="(max-width: 106px) 100vw, 106px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Yuval Fernbachâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">Co-Founder & CTOâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/09/callrail.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="callrail.svg" data-size="104px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Burnout from alert fatigue is real, Upwind helps us eliminate alert fatigue by providing us with information that is relevant and actionable in realtime.</div></div><div class="brxe-inlguk brxe-block"><img width="120" height="120" src="https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="A woman with long dark hair, wearing a light blue shirt and brown belt, smiles while standing outdoors. Sunlight filters through green trees and vegetation, creating a bright, serene atmosphere. A walking path is visible in the background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim.png 120w, https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim-80x80.png 80w" sizes="(max-width: 120px) 100vw, 120px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Kurdeen Karimâ</div><div class="brxe-kdsutj brxe-text-basic text-14">Information Security and Privacyâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-1.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-1" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Burnout from alert fatigue is real, Upwind helps us eliminate alert fatigue by providing us with information that is relevant and actionable in realtime.</div><div class="brxe-gthbgl brxe-block"><img width="120" height="120" src="https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="A woman with long dark hair, wearing a light blue shirt and brown belt, smiles while standing outdoors. Sunlight filters through green trees and vegetation, creating a bright, serene atmosphere. A walking path is visible in the background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim.png 120w, https://www.upwind.io/wp-content/uploads/2025/04/Kurdeen-Karim-80x80.png 80w" sizes="(max-width: 120px) 100vw, 120px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Kurdeen Karimâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">Information Security and Privacyâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/04/h2o-logo-1-1.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="h2o-logo (1) 1" data-size="48px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">
1717Upwind really changed the way we handle security. And Itâs changing the entire industry. It saves us time, it minimizes the gap between teams and they have more collaboration today. Upwind is the security product that is loved by DevOps.</div></div><div class="brxe-inlguk brxe-block"><img width="109" height="106" src="https://www.upwind.io/wp-content/uploads/2025/04/Asaf-Oren.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="Man wearing sunglasses and a white shirt, standing outdoors with greenery and hills in the background, under a clear sky." decoding="async" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Asaf Orenâ</div><div class="brxe-kdsutj brxe-text-basic text-14">Director of Cloud Developmentâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-2.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-2" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind really changed the way we handle security. And Itâs changing the entire industry. It saves us time, it minimizes the gap between teams and they have more collaboration today. Upwind is the security product that is loved by DevOps.</div><div class="brxe-gthbgl brxe-block"><img width="109" height="106" src="https://www.upwind.io/wp-content/uploads/2025/04/Asaf-Oren.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="Man wearing sunglasses and a white shirt, standing outdoors with greenery and hills in the background, under a clear sky." decoding="async" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Asaf Orenâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">Director of Cloud Developmentâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/09/rivery.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="rivery.svg" data-size="93px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">The entire process using Upwind was incredibly simple. Within minutes of deployment, we already had 24/7 eyes on our infra with Upwindâs MDR service.</div></div><div class="brxe-inlguk brxe-block"><img width="109" height="110" src="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="Person with short dark hair wearing a blue button-up shirt, standing against a white background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png 109w, https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Alon Reznikâ</div><div class="brxe-kdsutj brxe-text-basic text-14">Chief Architectâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-13.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-13" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">The entire process using Upwind was incredibly simple. Within minutes of deployment, we already had 24/7 eyes on our infra with Upwindâs MDR service.</div><div class="brxe-gthbgl brxe-block"><img width="109" height="110" src="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="Person with short dark hair wearing a blue button-up shirt, standing against a white background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png 109w, https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">
1717Alon Reznikâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">Chief Architectâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/04/intezer.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="intezer" data-size="94px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">We use Upwind's real-time insights to prioritize vulnerabilities effectively across various layers. This ensures our response is quick and well-informed, aligning with our operational priorities and threat landscape.</div></div><div class="brxe-inlguk brxe-block"><img width="117" height="116" src="https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="Portrait of a man with a beard and mustache, wearing a light gray shirt and a necklace. The background is a solid dark gray, and he is looking directly at the camera with a neutral expression." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi.png 117w, https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi-80x80.png 80w" sizes="(max-width: 117px) 100vw, 117px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Roy Haleviâ</div><div class="brxe-kdsutj brxe-text-basic text-14">CTOâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-3.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-3" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">We use Upwind's real-time insights to prioritize vulnerabilities effectively across various layers. This ensures our response is quick and well-informed, aligning with our operational priorities and threat landscape.</div><div class="brxe-gthbgl brxe-block"><img width="117" height="116" src="https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="Portrait of a man with a beard and mustache, wearing a light gray shirt and a necklace. The background is a solid dark gray, and he is looking directly at the camera with a neutral expression." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi.png 117w, https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi-80x80.png 80w" sizes="(max-width: 117px) 100vw, 117px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Roy Haleviâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">CTOâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/04/661917c5a7cc10c6a4630e9f_logo-digital-turbine-1.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="661917c5a7cc10c6a4630e9f_logo-digital-turbine 1" data-size="71px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwind provides a level of visibility and context I have never seen before in a solution.</div></div><div class="brxe-inlguk brxe-block"><img width="106" height="106" src="https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="A person with a shaved head, wearing a black shirt, leans against a glass wall. The background features a modern office interior with lights and a workspace." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv-80x80.png 80w" sizes="(max-width: 106px) 100v
1717w, 106px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Gal Avivâ</div><div class="brxe-kdsutj brxe-text-basic text-14">CTO & GMâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-6.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-6" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind provides a level of visibility and context I have never seen before in a solution.</div><div class="brxe-gthbgl brxe-block"><img width="106" height="106" src="https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="A person with a shaved head, wearing a black shirt, leans against a glass wall. The background features a modern office interior with lights and a workspace." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Gal-Aviv-80x80.png 80w" sizes="(max-width: 106px) 100vw, 106px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Gal Avivâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">CTO & GMâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/04/cogniteam.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="cogniteam" data-size="126px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Within minutes of connecting Upwind, we got huge value. We were able to understand our most critical vulnerabilities. Our team was able to take this information and start fixing our most critical risks - a task that would have taken us days or weeks to complete prior to using Upwind.</div></div><div class="brxe-inlguk brxe-block"><img width="106" height="105" src="https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="A man wearing glasses and a white shirt stands with his arms crossed and a slight smile. He has short dark hair and a watch on his left wrist. The background features a partial logo on a wall." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah-80x80.png 80w" sizes="(max-width: 106px) 100vw, 106px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Dr. Yehuda Elmaliahâ</div><div class="brxe-kdsutj brxe-text-basic text-14">CEOâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-4.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-4" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Within minutes of connecting Upwind, we got huge value. We were able to understand our most critical vulnerabilities. Our team was able to take this information and start fixing our most critical risks - a task that would have taken us days or weeks to complete prior to using Upwind.</div><div class="brxe-gthbgl brxe-block"><img width="106" height="105" src="https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="A man wearing glasses and a white shirt stands with his arms crossed and a slight smile. He has short dark hair and a watch on his left wrist. The background features a partial logo on a wall." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Dr-Yehuda-Elmaliah-80x80.png 80w" sizes="(max-width: 106px) 100v
1717w, 106px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Dr. Yehuda Elmaliahâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">CEOâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/04/h2o-logo-1-1.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="h2o-logo (1) 1" data-size="48px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upon deploying Upwind into our production environment, within just 5 minutes we gained comprehensive visibility into our infrastructure and applications. The integration provided us with invaluable insights into threat detection, vulnerabilities, and posture for all of our API endpoints.</div></div><div class="brxe-inlguk brxe-block"><img width="106" height="106" src="https://www.upwind.io/wp-content/uploads/2025/04/Ophir-Zahavi.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="A man with a beard and sunglasses resting on his head smiles at the camera. He is wearing a dark polo shirt and stands in front of a blurred green background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Ophir-Zahavi.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Ophir-Zahavi-80x80.png 80w" sizes="(max-width: 106px) 100vw, 106px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Ophir Zahaviâ</div><div class="brxe-kdsutj brxe-text-basic text-14">Cloud Engineering Managerâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-2.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-2" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upon deploying Upwind into our production environment, within just 5 minutes we gained comprehensive visibility into our infrastructure and applications. The integration provided us with invaluable insights into threat detection, vulnerabilities, and posture for all of our API endpoints.</div><div class="brxe-gthbgl brxe-block"><img width="106" height="106" src="https://www.upwind.io/wp-content/uploads/2025/04/Ophir-Zahavi.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="A man with a beard and sunglasses resting on his head smiles at the camera. He is wearing a dark polo shirt and stands in front of a blurred green background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Ophir-Zahavi.png 106w, https://www.upwind.io/wp-content/uploads/2025/04/Ophir-Zahavi-80x80.png 80w" sizes="(max-width: 106px) 100vw, 106px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Ophir Zahaviâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">Cloud Engineering Managerâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/04/rivery.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="rivery" data-size="93px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">The fact that Upwind provides not only visibility but also contextualized vulnerability and threat analysis for ECS has been a game changer for our organization.</div></div><div class="brxe-inlguk brxe-block"><img width="109" height="110" src="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="Person with short dark hair wearing a blue button-up shirt, standing against a white background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png 109w, https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">
1717Alon Reznikâ</div><div class="brxe-kdsutj brxe-text-basic text-14">Chief Architectâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-13.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-13" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">The fact that Upwind provides not only visibility but also contextualized vulnerability and threat analysis for ECS has been a game changer for our organization.</div><div class="brxe-gthbgl brxe-block"><img width="109" height="110" src="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="Person with short dark hair wearing a blue button-up shirt, standing against a white background." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik.png 109w, https://www.upwind.io/wp-content/uploads/2025/04/Alon-Reznik-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Alon Reznikâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">Chief Architectâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2025/04/intezer.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="intezer" data-size="94px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwindâs ability to not only identify and provide visibility into identities but also baseline their behavior has provided us with a new level of identity understanding. Using Upwind, we have been able to eliminate risky privileges, reduce the attack surface and streamline compliance.</div></div><div class="brxe-inlguk brxe-block"><img width="117" height="116" src="https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="Portrait of a man with a beard and mustache, wearing a light gray shirt and a necklace. The background is a solid dark gray, and he is looking directly at the camera with a neutral expression." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi.png 117w, https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi-80x80.png 80w" sizes="(max-width: 117px) 100vw, 117px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Roy Haleviâ</div><div class="brxe-kdsutj brxe-text-basic text-14">CTOâ</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-3.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-3" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwindâs ability to not only identify and provide visibility into identities but also baseline their behavior has provided us with a new level of identity understanding. Using Upwind, we have been able to eliminate risky privileges, reduce the attack surface and streamline compliance.</div><div class="brxe-gthbgl brxe-block"><img width="117" height="116" src="https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="Portrait of a man with a beard and mustache, wearing a light gray shirt and a necklace. The background is a solid dark gray, and he is looking directly at the camera with a neutral expression." decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi.png 117w, https://www.upwind.io/wp-content/uploads/2025/04/Roy-Halevi-80x80.png 80w" sizes="(max-width: 117px) 100v
1717w, 117px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Roy Haleviâ</div><div class="brxe-tiwpcl brxe-text-basic text-14">CTOâ</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img width="2000" height="353" src="https://www.upwind.io/wp-content/uploads/2026/08/cyberhaven-logo.png" class="brxe-fssmog brxe-image css-filter size-full" alt="cyberhaven-logo" data-size="80px" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/08/cyberhaven-logo.png 2000w, https://www.upwind.io/wp-content/uploads/2026/08/cyberhaven-logo-300x53.png 300w, https://www.upwind.io/wp-content/uploads/2026/08/cyberhaven-logo-1024x181.png 1024w, https://www.upwind.io/wp-content/uploads/2026/08/cyberhaven-logo-768x136.png 768w" sizes="(max-width: 2000px) 100vw, 2000px" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">The AI Agentic Pack helps our team focus on what is actually exposed, what matters most to the business, and prioritize action with far greater confidence and efficiency.</div></div><div class="brxe-inlguk brxe-block"><img width="400" height="400" src="https://www.upwind.io/wp-content/uploads/2026/05/aman-sirohi-testimonial.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="aman-sirohi-testimonial" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/05/aman-sirohi-testimonial.png 400w, https://www.upwind.io/wp-content/uploads/2026/05/aman-sirohi-testimonial-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/05/aman-sirohi-testimonial-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/05/aman-sirohi-testimonial-80x80.png 80w" sizes="(max-width: 400px) 100vw, 400px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Aman Sirohi</div><div class="brxe-kdsutj brxe-text-basic text-14">SVP - Chief Security Officer & IT</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-7.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-7" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">The AI Agentic Pack helps our team focus on what is actually exposed, what matters most to the business, and prioritize action with far greater confidence and efficiency.</div><div class="brxe-gthbgl brxe-block"><img width="400" height="400" src="https://www.upwind.io/wp-content/uploads/2026/05/aman-sirohi-testimonial.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="aman-sirohi-testimonial" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/05/aman-sirohi-testimonial.png 400w, https://www.upwind.io/wp-content/uploads/2026/05/aman-sirohi-testimonial-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/05/aman-sirohi-testimonial-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/05/aman-sirohi-testimonial-80x80.png 80w" sizes="(max-width: 400px) 100vw, 400px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Aman Sirohi</div><div class="brxe-tiwpcl brxe-text-basic text-14">SVP - Chief Security Officer & IT</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/05/VECTRA.svg" class="brxe-fssmog brxe-image css-filter size-full" alt="VECTRA" data-size="80px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">We needed to know what vulnerabilities are real so we can fix those and Upwind was the only platform that could do this for us.</div></div><div class="brxe-inlguk brxe-block"><img width="400" height="400" src="https://www.upwind.io/wp-content/uploads/2026/05/9c1b4638334c62ce27193505ef4ee30a965ac094.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="9c1b4638334c62ce27193505ef4ee30a965ac094" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/05/9c1b4638334c62ce27193505ef4ee30a965ac094.png 400w, https://www.upwind.io/wp-content/uploads/2026/05/9c1b4638334c62ce27193505ef4ee30a965ac094-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/05/9c1b4638334c62ce27193505ef4ee30a965ac094-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/05/9c1b4638334c62ce27193505ef4ee30a965ac094-80x80.png 80w" sizes="(max-width: 400px) 100v
1717w, 400px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Chris Long</div><div class="brxe-kdsutj brxe-text-basic text-14">Cybersecurity Leader</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-8.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-8" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">We needed to know what vulnerabilities are real so we can fix those and Upwind was the only platform that could do this for us.</div><div class="brxe-gthbgl brxe-block"><img width="400" height="400" src="https://www.upwind.io/wp-content/uploads/2026/05/9c1b4638334c62ce27193505ef4ee30a965ac094.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="9c1b4638334c62ce27193505ef4ee30a965ac094" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/05/9c1b4638334c62ce27193505ef4ee30a965ac094.png 400w, https://www.upwind.io/wp-content/uploads/2026/05/9c1b4638334c62ce27193505ef4ee30a965ac094-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/05/9c1b4638334c62ce27193505ef4ee30a965ac094-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/05/9c1b4638334c62ce27193505ef4ee30a965ac094-80x80.png 80w" sizes="(max-width: 400px) 100vw, 400px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Chris Long</div><div class="brxe-tiwpcl brxe-text-basic text-14">Cybersecurity Leader</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/05/CAVA.svg" class="brxe-fssmog brxe-image css-filter size-full" alt="CAVA" data-size="80px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">With Upwind if there is an alert we take it seriously because there are no false positives.</div></div><div class="brxe-inlguk brxe-block"><img width="359" height="359" src="https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="9e30cdc63cf28c58e1dad2b418de470073b83742" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742.png 359w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-80x80.png 80w" sizes="(max-width: 359px) 100vw, 359px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Eli Edelkind</div><div class="brxe-kdsutj brxe-text-basic text-14">CISO, Infrastructure & Tech Operations</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frame-9.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="Frame-9" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">With Upwind if there is an alert we take it seriously because there are no false positives.</div><div class="brxe-gthbgl brxe-block"><img width="359" height="359" src="https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="9e30cdc63cf28c58e1dad2b418de470073b83742" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742.png 359w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-80x80.png 80w" sizes="(max-width: 359px) 100vw, 359px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Eli Edelkind</div><div class="brxe-tiwpcl brxe-text-basic text-14">
1717CISO, Infrastructure & Tech Operations</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/06/iac-logo.svg" class="brxe-fssmog brxe-image css-filter size-full" alt="iac-logo" data-size="80px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwind's blue agent helps us run deep correlations and investigations across multiple data sources, cutting analysts work from hours to minutes.</div></div><div class="brxe-inlguk brxe-block"><img width="109" height="109" src="https://www.upwind.io/wp-content/uploads/2026/06/vishon-ganesh.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="vishon-ganesh" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/06/vishon-ganesh.png 109w, https://www.upwind.io/wp-content/uploads/2026/06/vishon-ganesh-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Vishon Ganesh</div><div class="brxe-kdsutj brxe-text-basic text-14">Director Information Security</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/iac-popup-logo.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="iac-popup-logo" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind's blue agent helps us run deep correlations and investigations across multiple data sources, cutting analysts work from hours to minutes.</div><div class="brxe-gthbgl brxe-block"><img width="109" height="109" src="https://www.upwind.io/wp-content/uploads/2026/06/vishon-ganesh.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="vishon-ganesh" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/06/vishon-ganesh.png 109w, https://www.upwind.io/wp-content/uploads/2026/06/vishon-ganesh-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Vishon Ganesh</div><div class="brxe-tiwpcl brxe-text-basic text-14">Director Information Security</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img width="1024" height="288" src="https://www.upwind.io/wp-content/uploads/2026/08/insurity-logo.png" class="brxe-fssmog brxe-image css-filter size-full" alt="insurity-logo" data-size="80px" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/08/insurity-logo.png 1024w, https://www.upwind.io/wp-content/uploads/2026/08/insurity-logo-300x84.png 300w, https://www.upwind.io/wp-content/uploads/2026/08/insurity-logo-768x216.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">With our initial deployment of Upwind Agent Pack, our visibility and telemetry across our public cloud environments has increased not by percents but by multiples. Our program visibility is 3x or 4x what it was previously. Add to that the Agent Packâs ability to show runtime vulnerabilities and we can target and remediate across our enterprise where it matters most.</div></div><div class="brxe-inlguk brxe-block"><img width="109" height="109" src="https://www.upwind.io/wp-content/uploads/2026/06/Frame-31470.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="Frame 31470" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/06/Frame-31470.png 109w, https://www.upwind.io/wp-content/uploads/2026/06/Frame-31470-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Jay Wilson</div><div class="brxe-kdsutj brxe-text-basic text-14">CIO + CISO</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/insurity-popup-logo.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="insurity-popup-logo" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">With our initial deployment of Upwind Agent Pack, our visibility and telemetry across our public cloud environments has increased not by percents but by multiples. Our program visibility is 3x or 4x what it was previously. Add to that the Agent Packâs ability to show runtime vulnerabilities and we can target and remediate across our enterprise where it matters most.</div><div class="brxe-gthbgl brxe-block"><img width="109" height="109" src="https://www.upwind.io/wp-content/uploads/2026/06/Frame-31470.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="Frame 31470" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/06/Frame-31470.png 109w, https://www.upwind.io/wp-content/uploads/2026/06/Frame-31470-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Jay Wilson</div><div class="brxe-tiwpcl brxe-text-basic text-14">CIO + CISO</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/06/Litera-Logo.svg" class="brxe-fssmog brxe-image css-filter size-full" alt="Litera-Logo" data-size="80px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwind green agent helps our team to prioritize the highest impact actions in our environment, instead of chasing 100's of fixes, we find the one fix that affects hundreds of assets saving our teams days of effort.</div></div><div class="brxe-inlguk brxe-block"><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Pravesh A.</div><div class="brxe-kdsutj brxe-text-basic text-14">Director of Cybersecurity</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/litera-popup-logo.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="litera-popup-logo" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind green agent helps our team to prioritize the highest impact actions in our environment, instead of chasing 100's of fixes, we find the one fix that affects hundreds of assets saving our teams days of effort.</div><div class="brxe-gthbgl brxe-block"><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Pravesh A.</div><div class="brxe-tiwpcl brxe-text-basic text-14">Director of Cybersecurity</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/05/CAVA.svg" class="brxe-fssmog brxe-image css-filter size-full" alt="CAVA" data-size="80px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwind provides an incredible ability to see your cloud environments that I just hadnât seen before.</div></div><div class="brxe-inlguk brxe-block"><img width="359" height="359" src="https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="9e30cdc63cf28c58e1dad2b418de470073b83742" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742.png 359w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-80x80.png 80w" sizes="(max-width: 359px) 100vw, 359px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Eli Edelkind</div><div class="brxe-kdsutj brxe-text-basic text-14">
1717CISO, Infrastructure & Tech Operations</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/cava-popup-logo.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="cava-popup-logo" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind provides an incredible ability to see your cloud environments that I just hadnât seen before.</div><div class="brxe-gthbgl brxe-block"><img width="359" height="359" src="https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="9e30cdc63cf28c58e1dad2b418de470073b83742" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742.png 359w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/05/9e30cdc63cf28c58e1dad2b418de470073b83742-80x80.png 80w" sizes="(max-width: 359px) 100vw, 359px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Eli Edelkind</div><div class="brxe-tiwpcl brxe-text-basic text-14">CISO, Infrastructure & Tech Operations</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img width="1024" height="566" src="https://www.upwind.io/wp-content/uploads/2026/08/Nubank_logo_2021.svg-1024x566.webp" class="brxe-fssmog brxe-image css-filter size-large" alt="Nubank_logo_2021.svg" data-size="80px" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/08/Nubank_logo_2021.svg-1024x566.webp 1024w, https://www.upwind.io/wp-content/uploads/2026/08/Nubank_logo_2021.svg-300x166.webp 300w, https://www.upwind.io/wp-content/uploads/2026/08/Nubank_logo_2021.svg-768x424.webp 768w, https://www.upwind.io/wp-content/uploads/2026/08/Nubank_logo_2021.svg.webp 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">Upwind has mastered the hardest part of cloud security: providing the deep context required for accurate remediation. That extends to real time monitoring. The Agentic Pack release takes this even further, using specialized agents to manage investigation and validation at a scale that was previously impossible.</div></div><div class="brxe-inlguk brxe-block"><img width="109" height="109" src="https://www.upwind.io/wp-content/uploads/2026/06/dave-hannigan.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="dave-hannigan" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/06/dave-hannigan.png 109w, https://www.upwind.io/wp-content/uploads/2026/06/dave-hannigan-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Dave Hannigan</div><div class="brxe-kdsutj brxe-text-basic text-14">CISO</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/nu-popup.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="nu-popup" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">Upwind has mastered the hardest part of cloud security: providing the deep context required for accurate remediation. That extends to real time monitoring. The Agentic Pack release takes this even further, using specialized agents to manage investigation and validation at a scale that was previously impossible.</div><div class="brxe-gthbgl brxe-block"><img width="109" height="109" src="https://www.upwind.io/wp-content/uploads/2026/06/dave-hannigan.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="dave-hannigan" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/06/dave-hannigan.png 109w, https://www.upwind.io/wp-content/uploads/2026/06/dave-hannigan-80x80.png 80w" sizes="(max-width: 109px) 100vw, 109px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Dave Hannigan</div><div class="brxe-tiwpcl brxe-text-basic text-14">CISO</div></div></div></div></div></div></div><div class="brxe-sfvetv brxe-block horizontal-scrolling-block"><div class="brxe-tdhfns brxe-block horizontal-scrolling-block-inner gradient-section"><div class="brxe-xjxnqs brxe-block horizontal-scrolling-block-inner-overlay"></div><div class="brxe-omjaao brxe-block content-layer"><div class="brxe-pdbnrp brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Sixt_Logo.svg" class="brxe-fssmog brxe-image css-filter size-large" alt="Sixt_Logo" data-size="80px" decoding="async" /></div><div class="brxe-fdndcv brxe-block"><div class="brxe-erdnwq brxe-text-basic text-14">In our fast-paced global operations, real-time context is everything. Upwind gives us instant visibility into our
1717cloud environment, allowing us to identify and neutralize runtime risks before they ever become operational threats.</div></div><div class="brxe-inlguk brxe-block"><img width="400" height="400" src="https://www.upwind.io/wp-content/uploads/2026/08/itay-livne.png" class="brxe-gmzoer brxe-image css-filter size-full" alt="itay-livne" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/08/itay-livne.png 400w, https://www.upwind.io/wp-content/uploads/2026/08/itay-livne-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/08/itay-livne-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/08/itay-livne-80x80.png 80w" sizes="(max-width: 400px) 100vw, 400px" /><div class="brxe-ujdveo brxe-block"><div class="brxe-trpqwc brxe-text-basic text-14">Itay Livne</div><div class="brxe-kdsutj brxe-text-basic text-14">CISO</div></div></div></div><div class="brxe-erycct brxe-block horizontal-scrolling-block-popup-content"><div class="brxe-govwpy brxe-block"></div><div class="brxe-wkrfhj brxe-block"><div class="brxe-fpjbrd brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/sixt-popup-logo.svg" class="brxe-ticcbg brxe-image css-filter size-large" alt="sixt-popup-logo" decoding="async" /></div><div class="brxe-pzllzp brxe-text-basic">In our fast-paced global operations, real-time context is everything. Upwind gives us instant visibility into our cloud environment, allowing us to identify and neutralize runtime risks before they ever become operational threats.</div><div class="brxe-gthbgl brxe-block"><img width="400" height="400" src="https://www.upwind.io/wp-content/uploads/2026/08/itay-livne.png" class="brxe-pmeykc brxe-image css-filter size-full" alt="itay-livne" decoding="async" srcset="https://www.upwind.io/wp-content/uploads/2026/08/itay-livne.png 400w, https://www.upwind.io/wp-content/uploads/2026/08/itay-livne-300x300.png 300w, https://www.upwind.io/wp-content/uploads/2026/08/itay-livne-150x150.png 150w, https://www.upwind.io/wp-content/uploads/2026/08/itay-livne-80x80.png 80w" sizes="(max-width: 400px) 100vw, 400px" /><div class="brxe-sxxpzl brxe-block"><div class="brxe-dcjppx brxe-text-basic text-14">Itay Livne</div><div class="brxe-tiwpcl brxe-text-basic text-14">CISO</div></div></div></div></div></div></div></div></div></div></section><section id="brxe-737ef0" class="brxe-section"><div id="brxe-5be3fe" class="brxe-container"><div id="brxe-f3acf3" class="brxe-block"><h2 id="brxe-8be174" class="brxe-heading heading-32">Upwind recognized as a leading cloud security platform</h2></div><div id="brxe-50b720" class="brxe-block"><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1718<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1719<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1720<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1721<div id="brxe-d2da6e" class="brxe-block"><div id="brxe-dbfee6" class="brxe-text-basic heading-16">Rated 4.9 out of 5 on Gartner® Peer Insights⢠in the CNAPP Category</div><img src="https://www.upwind.io/wp-content/uploads/2026/08/white-stars.svg" class="brxe-image css-filter size-large" alt="white-stars.svg" id="brxe-e0c002" decoding="async" /><a id="brxe-620421" class="brxe-button bricks-button bricks-background-primary" href="https://www.gartner.com/reviews/market/cloud-native-application-protection-
1721platforms/vendor/upwind/product/upwind">Read Reviews</a></div></div><div id="brxe-98d47f" class="brxe-block"></div><div id="brxe-a95bf7" data-script-id="a95bf7" class="brxe-slider-nested splide brx-auto-height" data-splide="{"type":"loop","direction":"ltr","keyboard":"global","height":"auto","gap":"20px","start":0,"perPage":3,"perMove":"1","speed":400,"interval":3000,"autoHeight":true,"autoplay":false,"pauseOnHover":false,"pauseOnFocus":false,"arrows":true,"pagination":false,"mediaQuery":"max","breakpoints":{"1279":{"gap":"20px","perPage":"3","perMove":"1","autoHeight":true,"arrows":true},"767":{"perPage":"2"},"478":{"perPage":"1"}}}"><div class="splide__track"><div class="splide__list"><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Group-11937.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="Group 11937" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1722<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1723<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1724<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1725</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Demo Competition</div><h3 class="brxe-aaogyn brxe-heading heading-20">Top Takeaways from the Gartner® 2025 Market Guide for CNAPP</h3><a class="brxe-kglili brxe-text-link" href="/feed/2025-gartner-market-guide-for-cloud-native-application-protection-platforms-5-takeaways-that-we-believe-matter">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Latio-Tamnoon-1st-Place.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="Latio-Tamnoon-1st-Place" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1726<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1727<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1728<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32">
1728<path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1729</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Market Guide</div><h3 class="brxe-aaogyn brxe-heading heading-20">Practitioners Vote Upwind â¨#1 Cloud Security Platform in Demo Showdown</h3><a class="brxe-kglili brxe-text-link" href="/feed/upwind-wins-big-at-cloud-security-showdown-hosted-by-tamnoon-analyst-james-berthoty" target="_blank">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/QKS-SPARK-Matrix-LEADER.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="QKS-SPARK-Matrix-LEADER" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1730<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1731<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1732<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1733</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Market Guide</div><h3 class="brxe-aaogyn brxe-heading heading-20">
1733Upwind Recognized as a Leader in the QKS Group 2025 SPARK Matrix⢠for CNAPP</h3><a class="brxe-kglili brxe-text-link" href="/feed/upwind-recognized-as-a-leader-in-the-qks-group-2025-spark-matrix-for-cnapp" target="_blank">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Frost-Sullivan-Company-of-the-year.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="Frost-Sullivan-Company-of-the-year" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1734<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1735<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1736<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1737</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Analyst Recognition</div><h3 class="brxe-aaogyn brxe-heading heading-20">Upwind Recognized as Frost & Sullivan Company of the Year 2025</h3><a class="brxe-kglili brxe-text-link" href="/frostandsullivan-2025-company-of-the-year" target="_blank">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/GigaOm-LEADER-1.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="GigaOm-LEADER" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1738<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1739<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1740<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1741</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Analyst Recognition</div><h3 class="brxe-aaogyn brxe-heading heading-20">
1741Upwind Recognized as a Leader & Out-performer in Container Security by GigaOm</h3><a class="brxe-kglili brxe-text-link" href="/gigaom-2025-container-security-radar-report" target="_blank">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Latio-2X-Leader-1.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="Latio-2X-Leader" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1742<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1743<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1744<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1745</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Market Guide</div><h3 class="brxe-aaogyn brxe-heading heading-20">Upwind Recognized as a Cloud Security & CADR Leader in the Latio Cloud Security Market Report</h3><a class="brxe-kglili brxe-text-link" href="/feed/upwind-recognized-as-a-cloud-security-cadr-leader-in-the-2025-latio-cloud-security-market-report">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Latio-Innovator-1.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="Latio-Innovator" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1746<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1747<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1748<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1749</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Market Guide</div><h3 class="brxe-aaogyn brxe-heading heading-20">Upwind Named a Runtime Innovator & API Security Innovator in the 2026 Latio Application Security Market Report</h3><a class="brxe-kglili brxe-text-link" href="/latio-2026-application-security-market-report">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Cyber150.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="Cyber150" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32">
1749<path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1750<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1751<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1752<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1753</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Analyst Recognition</div><h3 class="brxe-aaogyn brxe-heading heading-20">Upwind Recognized in the Cyber150 Top 'Cybersecurity' Vendors of 2026</h3><a class="brxe-kglili brxe-text-link" href="https://cyber150.com/rooms/upwind/" target="_blank">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/CRN-Sec100.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="CRN-Sec100" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1754<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1755<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1756<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1757</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Analyst Recognition</div><h3 class="brxe-aaogyn brxe-heading heading-20">Upwind Recognized in the CRN Security 100: The 20 Coolest Web, Email and Application Security Companies Of 2026</h3><a class="brxe-kglili brxe-text-link" href="https://www.crn.com/news/security/2026/the-20-coolest-web-email-and-application-security-companies-of-2026-the-security-100?page=19" target="_blank">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/CRN-AI100.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="CRN-AI100" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1758<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1759<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32">
1759<path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1760<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1761</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Analyst Recognition</div><h3 class="brxe-aaogyn brxe-heading heading-20">Upwind Recognized in the CRN AI 100: The 20 Hottest AI Cybersecurity Companies</h3><a class="brxe-kglili brxe-text-link" href="https://www.crn.com/news/security/2026/the-20-hottest-ai-cybersecurity-companies-the-2026-crn-ai-100?page=19" target="_blank">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/CRN-StellarStartup.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="CRN-StellarStartup" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1762<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1763<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1764<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1765</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Analyst Recognition</div><h3 class="brxe-aaogyn brxe-heading heading-20">Upwind Recognized as a CRN Stellar Startup 2025</h3><a class="brxe-kglili brxe-text-link" href="https://www.crn.com/rankings-and-lists/stellar-startups-2025-details?c=87" target="_blank">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Fast-Company-MOST-INNOVATIVE.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="Fast Company MOST INNOVATIVE" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1766<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1767<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1768<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1769</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Analyst Recognition</div><h3 class="brxe-aaogyn brxe-heading heading-20">Upwind Named to Fast Company Annual List of the Worldâs Most Innovative Companies of 2026</h3><a class="brxe-kglili brxe-text-link" href="https://www.businesswire.com/news/home/20260324672819/en/Upwind-Named-to-Fast-Companys-Annual-List-of-the-Worlds-Most-Innovative-Companies-of-2026" target="_blank">Learn More</a></div></div></div></div><div class="brxe-tohdxr brxe-block"><div class="brxe-fwitce brxe-block"><div class="brxe-ixudtw brxe-block"><div class="brxe-dgfwft brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Forbes-CYBER60.svg" class="brxe-fajzll brxe-image css-filter size-large" alt="Forbes CYBER60" decoding="async" /><svg class="top-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32">
1769<path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1770<svg class="top-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1771<svg class="bottom-left" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1772<svg class="bottom-right" xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" viewBox="0 0 32 32"><path d="M32 15.99c-8.84 0-15.99 7.17-15.99 16.01 0-8.84-7.17-16.01-16.01-16.01 8.84 0 16.01-7.17 16.01-15.99 0 8.83 7.15 15.99 15.99 15.99" style="fill:#fff"/></svg> 1773</div><div class="brxe-ihekuj brxe-block"><div class="brxe-ncomkr brxe-text-basic text-14">Analyst Recognition</div><h3 class="brxe-aaogyn brxe-heading heading-20">Upwind named to Forbes Cyber60 2024-2025-2026 (Three Years in a Row)</h3><a class="brxe-kglili brxe-text-link" href="https://lsvp.com/cyber60-2025-2026/" target="_blank">Learn More</a></div></div></div></div></div></div><div class="splide__arrows custom">
1773<button class="splide__arrow splide__arrow--prev" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" width="15" height="25" viewBox="0 0 15 25" fill="none"><path d="M13.5 23.1484L1.5 11.2306L13.5 1.14844" stroke="#94A3B8" stroke-width="3" stroke-linejoin="round"></path></svg></button><button class="splide__arrow splide__arrow--next" type="button"><svg class="" xmlns="http://www.w3.org/2000/svg" width="15" height="25" viewBox="0 0 15 25" fill="none"><path d="M1.05664 1.06421L13.0566 12.982L1.05664 23.0642" stroke="#94A3B8" stroke-width="3" stroke-linejoin="round"></path></svg></button></div></div></div></section><section id="brxe-d68eef" class="brxe-section"><div id="brxe-fbcc11" class="brxe-container"><h2 id="brxe-12010f" class="brxe-heading">Stay ahead of the threat curve</h2><div id="brxe-e3ad6b" class="brxe-text"><p>Upwindâs world-class researchers uncover zero-days and active threats in the wild, delivering intelligence at AI speed.</p> 1774</div><a id="brxe-191f18" class="brxe-button bricks-button bricks-background-primary" href="/ai-threat-feed">See the latest Upwind Threat Feed</a></div><div id="brxe-bc3122" class="brxe-container"><div id="brxe-bb3753" data-script-id="bb3753" class="brxe-code"><div class="timeline-section"></div><style>:root { 1775 --border-gray: #e2e2e2; 1776} 1777 1778/* ââ Timeline Section ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1779 1780.timeline-section { 1781 position: relative; 1782 width: 100%; 1783 overflow: hidden; 1784 background: #fff; 1785} 1786 1787/* Hidden on mobile */ 1788@media (max-width: 767px) { 1789 .timeline-section { 1790 display: none; 1791 } 1792} 1793 1794/* ââ Scroll container ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1795 1796.tl-scroll { 1797 width: 100%; 1798 overflow-x: scroll; 1799 overflow-y: hidden; 1800 cursor: grab; 1801 scrollbar-width: none; /* Firefox */ 1802 -ms-overflow-style: none; /* IE/Edge */ 1803 user-select: none; 1804 -webkit-user-select: none; 1805} 1806 1807.tl-scroll::-webkit-scrollbar {
1808 display: none; 1809} 1810.tl-scroll.is-dragging { 1811 cursor: grabbing; 1812} 1813 1814/* ââ Track âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1815 1816.tl-track { 1817 position: relative; 1818 /* height driven by line-y + card height + padding */ 1819 height: 280px; 1820 /* width set by JS */ 1821} 1822 1823/* ââ Dashed line âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1824 1825.tl-line { 1826 position: absolute; 1827 height: 1px; 1828 left: 0; 1829 /* top set by JS (lineY) */ 1830 /* SVG tile: 4px wide = 2px dash + 2px gap, matching stroke-dasharray="2 2" */ 1831 background-image: url("data:image/svg+xml,%3Csvg width='4' height='1' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 .5H4' stroke='%23C7C7C7' stroke-dasharray='2 2'/%3E%3C/svg%3E"); 1832 background-repeat: repeat-x; 1833 background-size: 4px 1px; 1834 pointer-events: none; 1835} 1836 1837/* ââ Dot wrapper âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1838 1839.tl-dot-wrapper { 1840 position: absolute; 1841 /* width/height = dot size; centered on the line via transform in JS */ 1842 width: 7px; 1843 height: 7px; 1844 /* top + left set by JS */ 1845 transform: translate(-50%, -50%); 1846} 1847 1848/* ââ Hit area (30Ã30 transparent) ââââââââââââââââââââââââââââââââââââââââââââ */ 1849 1850.tl-dot-hit { 1851 position: absolute; 1852 width: 30px; 1853 height: 30px; 1854 top: 50%; 1855 left: 50%; 1856 transform: translate(-50%, -50%); 1857 cursor: default; 1858 background: transparent; 1859 z-index: 2; 1860} 1861 1862.tl-dot-wrapper[data-has-post] .tl-dot-hit { 1863 cursor: pointer; 1864} 1865 1866/* ââ Visual dot âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1867 1868.tl-dot-vis { 1869 position: absolute; 1870 width: 7px; 1871 height: 7px; 1872 top: 50%; 1873 left: 50%; 1874 transform: translate(-50%, -50%); 1875 border-radius: 50%; 1876 background-color: #c7c7c7; 1877 pointer-events: none; 1878 transition: background-color 0.2s ease; 1879 z-index: 1; 1880} 1881 1882.tl-dot-wrapper.is-active .tl-dot-vis { 1883 background-color: #141217; 1884} 1885 1886/* ââ Label above dot (time + date) âââââââââââââââââââââââââââââââââââââââââââ */ 1887 1888.tl-dot-label { 1889 position: absolute; 1890 /* bottom of label = 12px above top of wrapper */ 1891 bottom: calc(100% + 12px); 1892 left: 50%; 1893 transform: translateX(-50%); 1894 text-align: center; 1895 white-space: nowrap; 1896 pointer-events: none; 1897 opacity: 0; 1898 z-index: 3; 1899} 1900 1901.tl-dot-wrapper.is-active .tl-dot-label { 1902 /* opacity controlled by JS (fade) */ 1903} 1904 1905.tl-time { 1906 display: block; 1907 font-size: 12px; 1908 font-weight: 400; 1909 color: #141217; 1910 line-height: 1.4; 1911 font-family: "DM Mono", monospace; 1912} 1913 1914.tl-date { 1915 display: block; 1916 font-size: 11px; 1917 font-weight: 400; 1918 color: #141217; 1919 line-height: 1.4; 1920 font-family: "DM Mono", monospace; 1921} 1922 1923/* ââ Card below dot âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 1924 1925.tl-dot-card { 1926 position: absolute; 1927 /* top of card = 12px below bottom of wrapper */ 1928 top: calc(100% + 12px); 1929 left: 50%; 1930 transform: translateX(-50%); 1931 background: #fff; 1932 border: 1px solid var(--border-gray); 1933 border-radius: 8px; 1934 padding: 16px; 1935 opacity: 0; 1936 pointer-events: none; 1937 z-index: 3; 1938 box-sizing: border-box; 1939 display: flex; 1940 flex-direction: column; 1941 align-items: center; 1942 gap: 20px; 1943 width: 205px; 1944} 1945 1946.tl-dot-wrapper.is-active .tl-dot-card { 1947 pointer-events: auto; 1948} 1949 1950.tl-cve { 1951 font-size: 11px; 1952 color: #F2583C; 1953 text-transform: uppercase; 1954 letter-spacing: 0.02em; 1955 font-family: "Upwind Sans", "aktiv-grotesk", sans-serif; 1956 border: 1px solid #FFBDB0; 1957 height: 20px; 1958 text-overflow: ellipsis; 1959 border-radius: 4px; 1960 padding: 0 4px; 1961 background: #FFF2F0; 1962 display: -webkit-box; 1963 -webkit-box-orient: vertical; 1964 -webkit-line-clamp: 1; 1965 overflow: hidden; 1966 width: 171px; 1967 max-width: 100%; 1968 text-align: left; 1969 line-height: 18px; 1970} 1971 1972.tl-title { 1973 font-size: 13px; 1974 text-align: center;
1975 color: #141217; 1976 line-height: 1.45; 1977 font-family: "Upwind Sans", "aktiv-grotesk", sans-serif; 1978 /* clamp to 3 lines */ 1979 display: -webkit-box; 1980 -webkit-line-clamp: 3; 1981 -webkit-box-orient: vertical; 1982 overflow: hidden; 1983} 1984 1985.tl-btns { 1986 display: flex; 1987 gap: 8px; 1988 flex-wrap: none; 1989} 1990 1991.tl-btn { 1992 display: inline-block; 1993 font-size: 12px !important; 1994 padding: 5px 10px; 1995 border-radius: 4px; 1996 text-decoration: none !important; 1997 cursor: pointer; 1998 white-space: nowrap; 1999 font-family: "Upwind Sans", "aktiv-grotesk", sans-serif !important; 2000 transition: all 0.15s ease; 2001 line-height: 1 !important; 2002 font-weight: 400 !important; 2003 2004 /* 1. Base foreground colors (These sit ON TOP of the background) */ 2005 border: 1px solid var(--border-gray); 2006 color: #141217 !important; 2007 2008 /* 2. Permanent background layers */ 2009 background-origin: border-box; 2010 -webkit-background-clip: text, padding-box, border-box !important; 2011 background-clip: text, padding-box, border-box !important; 2012 2013 /* Top layer (clipped to text), Middle layer (replaces your white background), Bottom layer (clipped to border) */ 2014 background-image: 2015 linear-gradient(94deg, #1e71ed -1.2%, #9214c4 44.48%, #f2583c 98.47%), 2016 linear-gradient(#ffffff, #ffffff), 2017 linear-gradient(94deg, #1e71ed -1.2%, #9214c4 44.48%, #f2583c 98.47%) !important; 2018} 2019 2020.tl-btn:hover { 2021 /* 3. On hover, fade out the top solid colors to reveal the backgrounds underneath */ 2022 border-color: transparent; 2023 color: transparent !important; 2024} 2025 2026/* ââ Loading indicator ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2027 2028.tl-loader { 2029 position: absolute; 2030 left: 24px; 2031 top: 50%; 2032 transform: translateY(-50%); 2033 display: flex; 2034 align-items: center; 2035 gap: 6px; 2036 opacity: 0; 2037 pointer-events: none; 2038 transition: opacity 0.2s ease; 2039 z-index: 10; 2040} 2041 2042.tl-loader.is-visible { 2043 opacity: 1; 2044} 2045 2046.tl-loader-dot { 2047 width: 5px; 2048 height: 5px; 2049 border-radius: 50%; 2050 background: #c7c7c7; 2051 animation: tl-pulse 1.2s ease-in-out infinite; 2052} 2053.tl-loader-dot:nth-child(2) { 2054 animation-delay: 0.2s; 2055} 2056.tl-loader-dot:nth-child(3) { 2057 animation-delay: 0.4s; 2058} 2059 2060@keyframes tl-pulse { 2061 0%, 2062 80%, 2063 100% { 2064 transform: scale(0.8); 2065 opacity: 0.5; 2066 } 2067 40% { 2068 transform: scale(1); 2069 opacity: 1; 2070 } 2071} 2072 2073/* ââ Fade Gradients ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 2074 2075.timeline-section::before, 2076.timeline-section::after { 2077 content: ""; 2078 position: absolute; 2079 top: 0; 2080 bottom: 0; 2081 width: 100px; /* Controls how far the gradient stretches */ 2082 pointer-events: none; 2083 z-index: 5; /* Sits above the cards (z-index: 3) but below the loader */ 2084} 2085 2086.timeline-section::before { 2087 left: 0; 2088 background: linear-gradient(to right, #ffffff 0%, rgba(255, 255, 255, 0) 100%); 2089} 2090 2091.timeline-section::after { 2092 right: 0; 2093 background: linear-gradient(to left, #ffffff 0%, rgba(255, 255, 255, 0) 100%); 2094} 2095</style>
2095<script>/** 2096 * Threat Post Timeline 2097 * Interactive horizontal timeline for /wp-json/wp/v2/threat-post posts. 2098 * Desktop + tablet only (viewport > 767px). 2099 * MAX 10 ITEMS - LAZY LOADING REMOVED 2100 */ 2101(() => { 2102 'use strict'; 2103 2104 // ââ Config ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2105 const CFG = { 2106 apiBase: 'https://www.upwind.io', 2107 endpoint: '/wp-json/wp/v2/threat-post', 2108 perPage: 10, // Only fetch 10 posts total 2109 section: '.timeline-section', 2110 dotSpacing: 70, 2111 dotSize: 7, 2112 hitSize: 30, 2113 placeholderBuf: 0, 2114 lineY: 90, 2115 trackPadLeft: 200, // <-- Changed from trackPadX and increased to 250 2116 trackPadRight: 200, 2117 fadeDuration: 180, 2118 minWidth: 768, 2119 }; 2120 2121 if (window.innerWidth < CFG.minWidth) return; 2122 2123 const sectionEl = document.querySelector(CFG.section); 2124 if (!sectionEl) return; 2125 2126 // ââ State âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2127 let posts = []; 2128 let totalDots = 0; 2129 let activeDot = -1; 2130 let isLoading = false; 2131 2132 let isDragging = false; 2133 let dragStartX = 0; 2134 let dragScrollX = 0; 2135 2136 // ââ DOM skeleton ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2137 const scrollEl = document.createElement('div'); 2138 scrollEl.className = 'tl-scroll'; 2139 sectionEl.appendChild(scrollEl); 2140 2141 const trackEl = document.createElement('div'); 2142 trackEl.className = 'tl-track'; 2143 scrollEl.appendChild(trackEl); 2144 2145 const lineEl = document.createElement('div'); 2146 lineEl.className = 'tl-line'; 2147 trackEl.appendChild(lineEl); 2148 2149 const loaderEl = document.createElement('div'); 2150 loaderEl.className = 'tl-loader'; 2151 loaderEl.innerHTML = 2152 '<div class="tl-loader-dot"></div>' + 2153 '<div class="tl-loader-dot"></div>' + 2154 '<div class="tl-loader-dot"></div>'; 2155 sectionEl.appendChild(loaderEl); 2156 2157 const dotEls = []; 2158 2159 // ââ Track sizing âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2160 function calcTotalDots() { 2161 return posts.length; 2162 } 2163 2164 function trackPxWidth() { 2165 // Updated to use CFG.trackPadLeft 2166 return CFG.trackPadLeft + (totalDots - 1) * CFG.dotSpacing + CFG.dotSize + CFG.trackPadRight; 2167 } 2168 2169 function updateWidths() { 2170 const w = trackPxWidth() + 'px'; 2171 trackEl.style.width = w; 2172 lineEl.style.width = w; 2173 lineEl.style.top = CFG.lineY + 'px'; 2174 } 2175 2176 // ââ Dot creation / positioning âââââââââââââââââââââââââââââââââââââââââââââââ 2177 function createDotEl() { 2178 const w = document.createElement('div'); 2179 w.className = 'tl-dot-wrapper'; 2180 2181 w.innerHTML = 2182 '<div class="tl-dot-label">' + 2183 '<span class="tl-time"></span>' + 2184 '<span class="tl-date"></span>' + 2185 '</div>' + 2186 '<div class="tl-dot-hit"></div>' + 2187 '<div class="tl-dot-vis"></div>' + 2188 '<div class="tl-dot-card"></div>'; 2189 2190 w.querySelector('.tl-dot-hit').addEventListener('mouseenter', () => { 2191 const idx = parseInt(w.dataset.idx, 10); 2192 if (w.dataset.hasPost) onDotEnter(idx); 2193 }); 2194 2195 trackEl.appendChild(w); 2196 return w; 2197 } 2198 2199 function growDots(n) { 2200 while (dotEls.length < n) { 2201 dotEls.push(createDotEl()); 2202 } 2203 reindexDots(); 2204 } 2205 2206 function reindexDots() { 2207 dotEls.forEach((el, i) => { el.dataset.idx = i; }); 2208 } 2209 2210 function positionDots() { 2211 // Updated to use CFG.trackPadLeft
2212 dotEls.forEach((el, i) => { 2213 el.style.left = (CFG.trackPadLeft + i * CFG.dotSpacing) + 'px'; 2214 el.style.top = CFG.lineY + 'px'; 2215 }); 2216 } 2217 2218 function postToDot(postIdx) { 2219 return totalDots - 1 - postIdx; 2220 } 2221 2222 // ââ Hydration âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2223 function hydrateDot(dotIdx, post) { 2224 const el = dotEls[dotIdx]; 2225 if (!el) return; 2226 el.dataset.hasPost = '1'; 2227 2228 const ts = parseTimestamp(post.acf && post.acf.timestamp); 2229 el.querySelector('.tl-time').textContent = ts.time; 2230 el.querySelector('.tl-date').textContent = ts.date; 2231 2232 const cveId = (post.acf && post.acf.cve_id) || ''; 2233 const readUrl = (post.acf && post.acf.link) || '#'; 2234 const postUrl = post.link || '#'; 2235 const title = decodeHtml( 2236 (post.title && post.title.rendered) 2237 ? post.title.rendered 2238 : String(post.title || '') 2239 ); 2240 2241 el.querySelector('.tl-dot-card').innerHTML = 2242 (cveId ? '<div class="tl-cve">' + escHtml(cveId) + '</div>' : '') + 2243 '<div class="tl-title">' + escHtml(title) + '</div>' + 2244 '<div class="tl-btns">' + 2245 '<a class="tl-btn"' + 2246 ' href="' + escHtml(postUrl) + '"' + 2247 ' target="_blank" rel="noopener">View Feed</a>' + 2248 '<a class="tl-btn tl-btn-secondary"' + 2249 ' href="' + escHtml(readUrl) + '"' + 2250 ' target="_blank" rel="noopener">Read More</a>' + 2251 '</div>'; 2252 } 2253 2254 function clearDotData(el) { 2255 delete el.dataset.hasPost; 2256 el.classList.remove('is-active'); 2257 el.querySelector('.tl-time').textContent = ''; 2258 el.querySelector('.tl-date').textContent = ''; 2259 el.querySelector('.tl-dot-card').innerHTML = ''; 2260 el.querySelector('.tl-dot-label').style.opacity = '0'; 2261 el.querySelector('.tl-dot-card').style.opacity = '0'; 2262 el.querySelector('.tl-dot-vis').style.backgroundColor = ''; 2263 } 2264 2265 function hydrateAll() { 2266 dotEls.forEach((el, i) => { 2267 const postIdx = (totalDots - 1) - i; 2268 if (postIdx >= 0 && postIdx < posts.length) { 2269 hydrateDot(i, posts[postIdx]); 2270 } else if (el.dataset.hasPost) { 2271 clearDotData(el); 2272 } 2273 }); 2274 } 2275 2276 // ââ Activation / hover ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2277 function setActive(dotIdx, instant) { 2278 if (dotIdx === activeDot) return; 2279 2280 const prevIdx = activeDot; 2281 activeDot = dotIdx; 2282 2283 if (prevIdx !== -1 && dotEls[prevIdx]) { 2284 const prev = dotEls[prevIdx]; 2285 prev.classList.remove('is-active'); 2286 prev.querySelector('.tl-dot-vis').style.backgroundColor = ''; 2287 instant 2288 ? (prev.querySelector('.tl-dot-label').style.opacity = '0', 2289 prev.querySelector('.tl-dot-card').style.opacity = '0') 2290 : (fadeEl(prev.querySelector('.tl-dot-label'), false), 2291 fadeEl(prev.querySelector('.tl-dot-card'), false)); 2292 } 2293 2294 if (dotIdx !== -1 && dotEls[dotIdx] && dotEls[dotIdx].dataset.hasPost) { 2295 const next = dotEls[dotIdx]; 2296 next.classList.add('is-active'); 2297 next.querySelector('.tl-dot-vis').style.backgroundColor = '#141217'; 2298 instant 2299 ? (next.querySelector('.tl-dot-label').style.opacity = '1', 2300 next.querySelector('.tl-dot-card').style.opacity = '1') 2301 : (fadeEl(next.querySelector('.tl-dot-label'), true), 2302 fadeEl(next.querySelector('.tl-dot-card'), true)); 2303 } 2304 } 2305 2306 function onDotEnter(idx) { 2307 setActive(idx, false); 2308 } 2309 2310 function fadeEl(el, show) { 2311 el.style.transition = 'opacity ' + CFG.fadeDuration + 'ms ease'; 2312 el.style.opacity = show ? '1' : '0'; 2313 } 2314 2315 // ââ API ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2316 async function fetchPosts() { 2317 const url = 2318 CFG.apiBase + CFG.endpoint + 2319 '?per_page=' + CFG.perPage + 2320 '&page=1' + 2321 '&_fields=id,title,link,acf'; 2322 const res = await fetch(url); 2323 if (!res.ok) throw new Error('HTTP ' + res.status); 2324 const data = await res.json(); 2325 return Array.isArray(data) ? data : []; 2326 } 2327 2328 // ââ Drag scroll ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2329 scrollEl.addEventListener('mousedown', e => { 2330 if (e.button !== 0) return; 2331 isDragging = true; 2332 dragStartX = e.clientX; 2333 dragScrollX = scrollEl.scrollLeft; 2334 scrollEl.classList.add('is-dragging'); 2335 e.preventDefault(); 2336 }); 2337 2338 document.addEventListener('mousemove', e => { 2339 if (!isDragging) return; 2340 scrollEl.scrollLeft = dragScrollX - (e.clientX - dragStartX); 2341 }); 2342 2343 document.addEventListener('mouseup', () => { 2344 if (!isDragging) return; 2345 isDragging = false;
2346 scrollEl.classList.remove('is-dragging'); 2347 }); 2348 2349 // ââ Timestamp parser âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2350 function parseTimestamp(ts) { 2351 if (ts === null || ts === undefined || ts === '') { 2352 return { time: '--:--', date: '--/--/----' }; 2353 } 2354 const str = String(ts).trim(); 2355 let d; 2356 2357 if (/^\d{10}$/.test(str)) { 2358 d = new Date(parseInt(str, 10) * 1000); 2359 } else if (/^\d{13}$/.test(str)) { 2360 d = new Date(parseInt(str, 10)); 2361 } else if (/^\d{14}$/.test(str)) { 2362 d = new Date( 2363 str.slice(0,4) + '-' + str.slice(4,6) + '-' + str.slice(6,8) + 'T' + 2364 str.slice(8,10) + ':' + str.slice(10,12) + ':' + str.slice(12,14) 2365 ); 2366 } else if (/^\d{8}$/.test(str)) { 2367 d = new Date(str.slice(0,4) + '-' + str.slice(4,6) + '-' + str.slice(6,8)); 2368 } else { 2369 d = new Date(ts); 2370 } 2371 2372 if (!d || isNaN(d.getTime())) { 2373 return { time: '--:--', date: '--/--/----' }; 2374 } 2375 return { 2376 time: pad2(d.getHours()) + ':' + pad2(d.getMinutes()), 2377 date: pad2(d.getMonth() + 1) + '/' + pad2(d.getDate()) + '/' + d.getFullYear(), 2378 }; 2379 } 2380 2381 function pad2(n) { return n < 10 ? '0' + n : String(n); } 2382 2383 function escHtml(s) { 2384 return String(s) 2385 .replace(/&/g, '&') 2386 .replace(/</g, '<') 2387 .replace(/>/g, '>') 2388 .replace(/"/g, '"'); 2389 } 2390 2391 function decodeHtml(str) { 2392 var ta = document.createElement('textarea'); 2393 ta.innerHTML = String(str); 2394 return ta.value; 2395 } 2396 2397 // ââ Init âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2398 async function init() { 2399 isLoading = true; 2400 loaderEl.classList.add('is-visible'); 2401 2402 try { 2403 posts = await fetchPosts(); 2404 totalDots = calcTotalDots(); 2405 2406 growDots(totalDots); 2407 positionDots(); 2408 updateWidths(); 2409 hydrateAll(); 2410 2411 if (posts.length) { 2412 setActive(postToDot(0), true); 2413 } 2414 2415 requestAnimationFrame(() => { 2416 scrollEl.scrollLeft = scrollEl.scrollWidth - scrollEl.clientWidth; 2417 }); 2418 2419 } catch (e) { 2420 console.warn('[timeline] init error:', e); 2421 } finally { 2422 isLoading = false; 2423 loaderEl.classList.remove('is-visible'); 2424 } 2425 } 2426 2427 init(); 2428 2429})();</script>
2429</div></div></section><section id="brxe-fc9d88" class="brxe-section"><div id="brxe-33b699" class="brxe-container gradient-section"><h1 id="brxe-52d55c" class="brxe-heading heading-48">Demo the Upwind Platform</h1><div id="brxe-cea52c" class="brxe-text-basic text-18">See how Upwind is reducing risk and strengthening cloud security for global enterprises.</div><a id="brxe-c4d942" class="brxe-button bricks-button bricks-background-primary" href="/contact">Get a Demo</a></div></section></main><footer id="brx-footer"><section id="brxe-5daba3" class="brxe-section"><div id="brxe-969b62" class="brxe-container"><div id="brxe-61b82b" class="brxe-block"><div id="brxe-4e977d" class="brxe-block"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Logo_Upwind_Header.svg" class="brxe-image css-filter size-full" alt="Logo_Upwind_Header.svg" id="brxe-7c4a03" decoding="async" loading="lazy" /><img src="https://www.upwind.io/wp-content/uploads/2026/08/Group-11817-1.svg" class="brxe-image css-filter size-full" alt="Group-11817.svg" id="brxe-9376a4" decoding="async" loading="lazy" /></div><div id="brxe-8a6d39" class="brxe-block"><div id="brxe-656dfb" class="brxe-block"><div id="brxe-a661d8" class="brxe-block"><div id="brxe-fb6d78" class="brxe-text-basic">Stay In Touch</div><div id="brxe-9c1c97" class="brxe-shortcode"> 2430 <div class='gf_browser_unknown gform_wrapper gravity-theme gform-theme--no-framework' data-form-theme='gravity-theme' data-form-index='0' id='gform_wrapper_2' ><div id='gf_2' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_2' id='gform_2' action='/#gf_2' data-formid='2' novalidate> 2431 <div class='gform-body gform_body'><div id='gform_fields_2' class='gform_fields top_label form_sublabel_below description_below validation_below'><div id="field_2_7" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_2_7'>Instagram</label><div class='ginput_container'><input name='input_7' id='input_2_7' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_2_7'>This field is for validation purposes and should be left unchanged.</div></div><div id="field_2_1" class="gfield gfield--type-email gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible" ><label class='gfield_label gform-field-label' for='input_2_1'>Email<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_email'> 2432 <input name='input_1' id='input_2_1' type='email' value='' class='large' placeholder='Email Address' aria-required="true" aria-invalid="false" /> 2433 </div></div><div id="field_2_2" class="gfield gfield--type-hidden uw-utm uw-utm-source gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><div class='ginput_container ginput_container_text'><input name='input_2' id='input_2_2' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></div><div id="field_2_3" class="gfield gfield--type-hidden uw-utm uw-utm-medium gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><div class='ginput_container ginput_container_text'><input name='input_3' id='input_2_3' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></div><div id="field_2_4" class="gfield gfield--type-hidden uw-utm uw-utm-campaign gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><div class='ginput_container ginput_container_text'><input name='input_4' id='input_2_4' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></div><div id="field_2_5" class="gfield gfield--type-hidden uw-utm uw-utm-term gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><div class='ginput_container ginput_container_text'><input name='input_5' id='input_2_5' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></div><div id="field_2_6" class="gfield gfield--type-hidden uw-utm uw-utm-content gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden" ><div class='ginput_container ginput_container_text'><input name='input_6' id='input_2_6' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></div></div></div> 2434 <div class='gform-footer gform_footer top_label'> <input type='submit' id='gform_submit_button_2' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' value='Submit' /> <input type='hidden' name='gform_ajax' value='form_id=2&title=&description=&tabindex=0&theme=gravity-theme&styles=[]&hash=ba5f5c2e4aca75d7bcd32da532e3e461' /> 2435 <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_2' value='iframe' /> 2436 <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_2' id='gform_theme_2' value='gravity-theme' /> 2437 <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_2' id='gform_style_settings_2' value='[]' /> 2438 <input type='hidden' class='gform_hidden' name='is_submit_2' value='1' /> 2439 <input type='hidden' class='gform_hidden' name='gform_submit' value='2' /> 2440 2441 <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> 2442 <input type='hidden' class='gform_hidden' name='state_2' value='WyJbXSIsImJlYzIyYmZmNmEwYmRhMjliNmI1ZGNjMmQ0YWEzN2YyIl0=' /> 2443 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_2' id='gform_target_page_number_2' value='0' /> 2444 <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_2' id='gform_source_page_number_2' value='1' /> 2445 <input type='hidden' name='gform_field_values' value='' /> 2446 2447 </div> 2448 </form> 2449 </div> 2450 <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_2' id='gform_ajax_frame_2' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> 2451
2451<script> 2452gform.initializeOnLoaded( function() {gformInitSpinner( 2, 'https://www.upwind.io/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery('#gform_ajax_frame_2').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_2');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_2').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_2').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_2').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_2').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_2').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_2').val();gformInitSpinner( 2, 'https://www.upwind.io/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [2, current_page]);window['gf_submitting_2'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_2').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_2').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [2]);window['gf_submitting_2'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_2').text());}else{jQuery('#gform_2').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "2", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_2" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_2"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_2" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 2, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} ); 2453</script>
2453 2454</div></div></div><div id="brxe-76fb6f" class="brxe-block"><div id="brxe-a09884" class="brxe-block"><h3 id="brxe-e26b96" class="brxe-heading text-14">Product</h3><div id="brxe-27a337" class="brxe-block"><a id="brxe-dd9800" class="brxe-text-link" href="/cnapp">Cloud Security</a><a id="brxe-128b3c" class="brxe-text-link" href="/ai-security-platform">AI Security</a><a id="brxe-b8cc93" class="brxe-text-link" href="/agentic-security">Agentic Security</a><a id="brxe-a985e6" class="brxe-text-link" href="/build">Application Security</a><a id="brxe-2e920d" class="brxe-text-link" href="/run">Security Posture</a><a id="brxe-77dd75" class="brxe-text-link" href="/protect">Realtime Protection</a></div></div><div id="brxe-d01707" class="brxe-block"><h3 id="brxe-be4d6e" class="brxe-heading text-14">General</h3><div id="brxe-48449c" class="brxe-block"><a id="brxe-37a092" class="brxe-text-link" href="/about">About Us</a><a id="brxe-5c03f8" class="brxe-text-link" href="/careers">Careers <span class="gradient-text text">We're hiring!</span></a><a id="brxe-ea43c3" class="brxe-text-link" href="/events">Events</a><a id="brxe-d60ccb" class="brxe-text-link" href="/case-studies">Customers</a></div></div><div id="brxe-9e78f5" class="brxe-block"><h3 id="brxe-6e8de0" class="brxe-heading text-14">Social</h3><div id="brxe-031615" class="brxe-block"><a id="brxe-8838a1" class="brxe-text-link" href="https://twitter.com/upwindsecurity">X</a><a id="brxe-ee2fe6" class="brxe-text-link" href="https://www.linkedin.com/company/upwindsecurity/">LinkedIn</a>
2454<a id="brxe-b62ffd" class="brxe-text-link" href="https://www.instagram.com/upwindsecurity/">Instagram</a><a id="brxe-18701d" class="brxe-text-link" href="/mdr">MDR</a></div></div><div id="brxe-1ef5f7" class="brxe-block"><h3 id="brxe-e39c62" class="brxe-heading text-14">Resources</h3><div id="brxe-3033ad" class="brxe-block"><a id="brxe-ec64f9" class="brxe-text-link" href="/feed">Blog (Feed)</a><a id="brxe-85bde4" class="brxe-text-link" href="/tv">Upwind TV</a><a id="brxe-cca1ad" class="brxe-text-link" href="/newsroom">Newsroom</a><a id="brxe-808838" class="brxe-text-link" href="https://docs.upwind.io/public/?_gl=1*14c34lk*_gcl_aw*R0NMLjE3NjQxODg5NTQuQ2p3S0NBaUE1NXJKQmhCeUVpd0FGa1kxUUlrYkE0THFRbkRUbmpCNVZjc0xobFh6X1haRUlyX0VPSTJCOTdjQkFNX2pOdzJ5aGhmZU14b0N1YWNRQXZEX0J3RQ..*_gcl_au*MzM2ODczNTIxLjE3NjUyMDM1Nzk.">Documentation</a><a id="brxe-82a790" class="brxe-text-link" href="/glossary">Glossary</a><a id="brxe-mjhnpk" class="brxe-text-link" href="/ai-threat-feed">Threat Feed</a></div></div></div></div></div><div id="brxe-42f2ac" class="brxe-block"><div id="brxe-09d195" class="brxe-block"><div id="brxe-a93d17" class="brxe-text-basic gradient-text">©</div><div id="brxe-b14d0c" class="brxe-text-basic">2026 Upwind Security</div></div><div id="brxe-6bb1aa" class="brxe-block"><a id="brxe-a13d51" class="brxe-text-link" href="/privacy-policy" target="_blank">Privacy Policy</a><a id="brxe-c9a438" class="brxe-text-link" href="/terms-of-use" target="_blank">Terms Of Use</a></div></div><div id="brxe-e4352e" class="brxe-block image-container"><img src="https://www.upwind.io/wp-content/uploads/2026/08/Logo-Components-2.svg" class="brxe-image css-filter size-full" alt="Logo-Components.svg" id="brxe-c0208b" decoding="async" loading="lazy" /><img src="https://www.upwind.io/wp-content/uploads/2026/08/Logo-Components-2.svg" class="brxe-image css-filter size-full" alt="Logo-Components.svg" id="brxe-8fd756" decoding="async" loading="lazy" /><img src="https://www.upwind.io/wp-content/uploads/2026/08/Logo-Components-1-1.svg" class="brxe-image hover-image css-filter size-full" alt="Logo-Components-1.svg" id="brxe-731131" decoding="async" loading="lazy" /><div id="brxe-c599ee" class="brxe-block hover-area"></div><div id="brxe-b99af2" data-script-id="b99af2" class="brxe-code">
2454<script>document.querySelectorAll('.image-container').forEach(container => { 2455 const hoverArea = container.querySelector('.hover-area'); 2456 const hoverImage = container.querySelector('.hover-image'); 2457 2458 hoverArea.addEventListener('mouseenter', () => { 2459 hoverImage.style.opacity = '1'; 2460 }); 2461 2462 hoverArea.addEventListener('mouseleave', () => { 2463 hoverImage.style.opacity = '0'; 2464 }); 2465});</script>
2465</div></div></div></section></footer>
2465<script type="speculationrules"> 2466{"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/bricks/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 2467</script>
2467 2468<div id="ee-upwind-chat"></div><div id="ee-appt-footer"><div class="bg-overlay"></div><div class="ee-appt-footer-cont"><div class="ee-appt-close"> 2469 <svg xmlns="http://www.w3.org/2000/svg" width="18" height="17" viewBox="0 0 18 17" fill="none"> 2470 <path fill-rule="evenodd" clip-rule="evenodd" d="M4.07276 3.32798C4.46144 2.96619 5.09161 2.96619 5.48029 3.32798L14.3272 11.5627C14.7159 11.9245 14.7159 12.511 14.3272 12.8728C13.9385 13.2346 13.3083 13.2346 12.9197 12.8728L4.07276 4.63811C3.68408 4.27633 3.68408 3.68976 4.07276 3.32798Z" fill="currentColor" stroke="currentColor" stroke-width="0.306" stroke-linecap="round"></path> 2471 <path fill-rule="evenodd" clip-rule="evenodd" d="M14.3257 3.32798C13.937 2.96619 13.3068 2.96619 12.9181 3.32798L4.07125 11.5627C3.68257 11.9245 3.68257 12.511 4.07125 12.8728C4.45993 13.2346 5.0901 13.2346 5.47878 12.8728L14.3257 4.63811C14.7144 4.27633 14.7144 3.68976 14.3257 3.32798Z" fill="currentColor" stroke="currentColor" stroke-width="0.306" stroke-linecap="round"></path> 2472 </svg> 2473 </div><div class="ee-appt-footer-content"><iframe src="https://www.upwind.io/wp-json/ssa/v1/embed-inner?integration&type&label&types&edit&view&payment_provider&ssa_locale=en_US&ssa_is_rtl&sid=c5d66e7f5ae18c1b56ab8ad34d475412d4534bc1&availability_start_date&availability_end_date&suggest_first_available&suggest_first_available_within_minutes&flow&fallback_flow&time_view&date_view&appointment_types_view=cardColumns&version&accent_color&background&padding=px&font&booking_url=https%3A%2F%2Fwww.upwind.io%2Fbook-a-demo&booking_post_id=5131&booking_title=Book+a+Demo&_wpnonce=3ab53b1203&redirect_post_id#/" height="400px" width="100%" name="ssa_booking" loading="eager" frameborder="0" data-skip-lazy="1" title="Book a time"></iframe></div></div></div><div data-popup-id="23248" class="brx-popup brxe-popup-23248 hide"><div class="brx-popup-content brxe-container"><div id="brxe-2bbe5c" class="brxe-block"><svg data-interaction-id="944585" data-interactions="[{"id":"dltxwb","trigger":"click","disablePreventDefault":"1","action":"hide","target":"popup","templateId":"23484"}]" class="brxe-svg" id="brxe-912211" xmlns="http://www.w3.org/2000/svg" width="18" height="17" viewBox="0 0 18 17" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.07276 3.32798C4.46144 2.96619 5.09161 2.96619 5.48029 3.32798L14.3272 11.5627C14.7159 11.9245 14.7159 12.511 14.3272 12.8728C13.9385 13.2346 13.3083 13.2346 12.9197 12.8728L4.07276 4.63811C3.68408 4.27633 3.68408 3.68976 4.07276 3.32798Z" fill="currentColor" stroke="currentColor" stroke-width="0.306" stroke-linecap="round"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M14.3257 3.32798C13.937 2.96619 13.3068 2.96619 12.9181 3.32798L4.07125 11.5627C3.68257 11.9245 3.68257 12.511 4.07125 12.8728C4.45993 13.2346 5.0901 13.2346 5.47878 12.8728L14.3257 4.63811C14.7144 4.27633 14.7144 3.68976 14.3257 3.32798Z" fill="currentColor" stroke="currentColor" stroke-width="0.306" stroke-linecap="round"></path></svg><div id="brxe-4d315b" class="brxe-block"><div id="brxe-69db6e" class="brxe-block"><div id="brxe-cfaf20" class="brxe-block"><div id="brxe-12cc75" class="brxe-text-basic">Add the Upwind RSS Feed to Slack</div><div id="brxe-6995d2" class="brxe-text-basic">Connect the Upwind RSS Feed to your Slack.<br /><a href="https://slack.com/help/articles/218688467-Add-RSS-feeds-to-Slack" target="_blank">Follow the how-to here.</a></div></div><div id="brxe-335b4f" class="brxe-block"><svg class="brxe-svg" id="brxe-90cc25" xmlns="http://www.w3.org/2000/svg" width="62" height="28" viewBox="0 0 62 28" fill="none"><path d="M18.215 0H0.966797V4.51936H18.215V0Z" fill="url(#paint0_linear_1244_250427)"></path><path d="M9.59092 26.8106C4.83629 26.8106 0.966797 22.8925 0.966797 18.0748V7.83203H5.72442V18.3762C5.72442 20.5359 7.45881 22.2928 9.59092 22.2928C11.723 22.2928 13.4574 20.5359 13.4574 18.3762V7.83203H18.215V18.0748C18.215 22.8925 14.3456 26.8106 9.59092 26.8106Z" fill="#141217"></path><path d="M30.3816 15.5732L29.6104 16.3445L27.7201 14.4542L25.8298 16.3445L25.0586 15.5732L26.9489 13.683L25.0586 11.7927L25.8298 11.0215L27.7201 12.9117L29.6104 11.0215L30.3816 11.7927L28.4913 13.683L30.3816 15.5732Z" fill="#141217"></path><path d="M42.4531 16.9472C42.4531 18.378 41.2843 19.5468 39.8535 19.5468C38.4227 19.5468 37.2539 18.378 37.2539 16.9472C37.2539 15.5165 38.4227 14.3477 39.8535 14.3477H42.4531V16.9472Z" fill="#E01E5A"></path><path d="M43.7617 16.9472C43.7617 15.5165 44.9305 14.3477 46.3613 14.3477C47.7921 14.3477 48.9609 15.5165 48.9609 16.9472V23.4563C48.9609 24.8871 47.7921 26.0559 46.3613 26.0559C44.9305 26.0559 43.7617 24.8871 43.7617 23.4563V16.9472Z" fill="#E01E5A"></path><path d="M46.3613 6.50972C44.9305 6.50972 43.7617 5.34092 43.7617 3.91014C43.7617 2.47935 44.9305 1.31055 46.3613 1.31055C47.7921 1.31055 48.9609 2.47935 48.9609 3.91014V6.50972H46.3613Z" fill="#36C5F0"></path><path d="M46.3625 7.81836C47.7933 7.81836 48.9621 8.98717 48.9621 10.4179C48.9621 11.8487 47.7933 13.0175 46.3625 13.0175H39.8535C38.4227 13.0175 37.2539 11.8487 37.2539 10.4179C37.2539 8.98717 38.4227 7.81836 39.8535 7.81836H46.3625Z" fill="#36C5F0"></path><path d="M56.7988 10.4179C56.7988 8.98717 57.9676 7.81836 59.3984 7.81836C60.8292 7.81836 61.998 8.98717 61.998 10.4179C61.998 11.8487 60.8292 13.0175 59.3984 13.0175H56.7988V10.4179Z" fill="#2EB67D"></path><path d="M55.4902 10.4192C55.4902 11.85 54.3214 13.0188 52.8906 13.0188C51.4598 13.0188 50.291 11.85 50.291 10.4192V3.91014C50.291 2.47935 51.4598 1.31055 52.8906 1.31055C54.3214 1.31055 55.4902 2.47935 55.4902 3.91014V10.4192Z" fill="#2EB67D"></path><path d="M52.8906 20.8555C54.3214 20.8555 55.4902 22.0243 55.4902 23.4551C55.4902 24.8858 54.3214 26.0546 52.8906 26.0546C51.4598 26.0546 50.291 24.8858 50.291 23.4551V20.8555H52.8906Z" fill="#ECB22E"></path><path d="M52.8906 19.5468C51.4598 19.5468 50.291 18.378 50.291 16.9472C50.291 15.5165 51.4598 14.3477 52.8906 14.3477H59.3997C60.8304 14.3477 61.9992 15.5165 61.9992 16.9472C61.9992 18.378 60.8304 19.5468 59.3997 19.5468H52.8906Z" fill="#ECB22E"></path><defs><linearGradient id="paint0_linear_1244_250427" x1="0.413747" y1="1.1436" x2="17.4818" y2="6.07484" gradientUnits="userSpaceOnUse"><stop stop-color="#F2583C"></stop><stop offset="0.541667" stop-color="#9214C4"></stop><stop offset="1" stop-color="#1E71ED"></stop></linearGradient></defs></svg></div></div><div id="brxe-8906c4" class="brxe-block"><div id="brxe-ddcb91" class="brxe-block"><div id="brxe-b17418" class="brxe-text-basic">Threat RSS</div><div class="threat-rss-input"> 2474<input type="text" value="https://www.upwind.io/feed/threat-feed/" /> 2475 <div class="rss-copy-link"> 2476 <div class="icon">
2477 <svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.26384 12.9839H8.97584C9.20024 12.9839 9.38384 12.8003 9.38384 12.5759V10.9439H10.6078V12.5759C10.6078 13.476 9.87599 14.2079 8.97584 14.2079H3.26384C2.36241 14.2079 1.63184 13.476 1.63184 12.5759V6.86386C1.63184 5.96371 2.36241 5.23186 3.26384 5.23186H4.89584V6.45586H3.26384C3.03842 6.45586 2.85584 6.63946 2.85584 6.86386V12.5759C2.85584 12.8003 3.03842 12.9839 3.26384 12.9839ZM5.71184 2.78386C5.71184 1.88243 6.44369 1.15186 7.34384 1.15186H13.0558C13.956 1.15186 14.6878 1.88243 14.6878 2.78386V8.49586C14.6878 9.39601 13.956 10.1279 13.0558 10.1279H7.34384C6.44369 10.1279 5.71184 9.39601 5.71184 8.49586V2.78386ZM7.34384 8.90386H13.0558C13.2802 8.90386 13.4638 8.72026 13.4638 8.49586V2.78386C13.4638 2.55844 13.2802 2.37586 13.0558 2.37586H7.34384C7.11944 2.37586 6.93584 2.55844 6.93584 2.78386V8.49586C6.93584 8.72026 7.11944 8.90386 7.34384 8.90386Z" fill="currentColor"/></svg> 2478 </div> 2479 <div class="copy-notify"> 2480 Link Copied 2481 </div> 2482 </div> 2483</div><style>.threat-rss-input { 2484 display: flex; 2485 position: relative; 2486 width: 100%; 2487 column-gap: 5px; 2488 padding: 0; 2489 border: none; 2490} 2491.threat-rss-input input { 2492 border-radius: 4px; 2493 background: #f2f7fc; 2494 border: 1px solid #f2f7fc; 2495 padding: 5px 15px; 2496 color: var(--Gray-03); 2497 font-family: var(--Feed-Text-family); 2498 font-size: var(--Feed-Text-size); 2499 font-style: var(--Feed-Text-style); 2500 font-weight: var(--Feed-Text-weight); 2501 line-height: var(--Feed-Text-height); 2502 letter-spacing: var(--Feed-Text-spacing); 2503 white-space: nowrap; 2504 overflow: hidden; 2505 text-overflow: ellipsis; 2506} 2507.threat-rss-input .rss-copy-link { 2508 border-radius: 4px; 2509 background: #f2f7fc; 2510 cursor: pointer; 2511 display: flex; 2512 padding: 4px 24px; 2513 flex-direction: column; 2514 justify-content: center; 2515 align-items: center; 2516 gap: 12px; 2517 color: var(--Gray-03); 2518 max-width: 69px; 2519} 2520.threat-rss-input .rss-copy-link .icon { 2521 pointer-events: none; 2522} 2523.threat-rss-input .rss-copy-link .icon svg { 2524 display: block; 2525 height: auto; 2526 width: 21px; 2527} 2528.threat-rss-input .rss-copy-link:hover { 2529 background-color: var(--Gray-01); 2530 color: #f2f7fc; 2531} 2532.threat-rss-input .rss-copy-link .copy-notify { 2533 width: 100%; 2534 padding: 5px 8px; 2535 left: 0px; 2536 bottom: calc(100% + 5px); 2537 top: auto; 2538 font-family: var(--Font-Inter); 2539 font-size: 10px; 2540 font-style: normal; 2541 font-weight: 400; 2542 line-height: 140%; 2543 letter-spacing: -0.42px; 2544 border-radius: 4px; 2545}</style>
2545<script>(function(){ 2546 var copy_rss = function(event) { 2547 event.preventDefault(); 2548 2549 // Get the text field 2550 var copyText = event.target.closest('.threat-rss-input').querySelector('input').value; 2551 2552 navigator.clipboard.writeText(copyText); 2553 2554 event.target.closest('.threat-rss-input').querySelector('.copy-notify').classList.add('active'); 2555 setTimeout(function(){ 2556 document.querySelector('.threat-rss-input .rss-copy-link .active').classList.remove('active'); 2557 }, 2500) 2558 } 2559 2560 document.querySelector('.threat-rss-input .rss-copy-link').addEventListener('click', copy_rss); 2561})();</script>
2561</div></div></div></div></div><div class="brx-popup-backdrop"></div></div><div data-popup-id="22846" class="brx-popup brxe-popup-22846 hide"><div class="brx-popup-content brxe-container"><div id="brxe-a38848" class="brxe-block"><svg data-interaction-id="d202f7" data-interactions="[{"id":"dltxwb","trigger":"click","disablePreventDefault":"1","action":"hide","target":"popup","templateId":"23484"}]" class="brxe-svg" id="brxe-7f0d01" xmlns="http://www.w3.org/2000/svg" width="18" height="17" viewBox="0 0 18 17" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.07276 3.32798C4.46144 2.96619 5.09161 2.96619 5.48029 3.32798L14.3272 11.5627C14.7159 11.9245 14.7159 12.511 14.3272 12.8728C13.9385 13.2346 13.3083 13.2346 12.9197 12.8728L4.07276 4.63811C3.68408 4.27633 3.68408 3.68976 4.07276 3.32798Z" fill="currentColor" stroke="currentColor" stroke-width="0.306" stroke-linecap="round"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M14.3257 3.32798C13.937 2.96619 13.3068 2.96619 12.9181 3.32798L4.07125 11.5627C3.68257 11.9245 3.68257 12.511 4.07125 12.8728C4.45993 13.2346 5.0901 13.2346 5.47878 12.8728L14.3257 4.63811C14.7144 4.27633 14.7144 3.68976 14.3257 3.32798Z" fill="currentColor" stroke="currentColor" stroke-width="0.306" stroke-linecap="round"></path></svg><div id="brxe-e7e4aa" class="brxe-block"><div id="brxe-d4850d" class="brxe-block"><div id="brxe-85fb53" class="brxe-block"><div id="brxe-958358" class="brxe-text-basic">Add the Upwind RSS Feed to Slack</div><div id="brxe-8c013e" class="brxe-text-basic">Connect the Upwind RSS Feed to your Slack.<br /><a href="https://slack.com/help/articles/218688467-Add-RSS-feeds-to-Slack" target="_blank">Follow the how-to here.</a></div></div><div id="brxe-4f5770" class="brxe-block"><svg class="brxe-svg" id="brxe-b5f22d" xmlns="http://www.w3.org/2000/svg" width="62" height="28" viewBox="0 0 62 28" fill="none"><path d="M18.215 0H0.966797V4.51936H18.215V0Z" fill="url(#paint0_linear_1244_250427)"></path><path d="M9.59092 26.8106C4.83629 26.8106 0.966797 22.8925 0.966797 18.0748V7.83203H5.72442V18.3762C5.72442 20.5359 7.45881 22.2928 9.59092 22.2928C11.723 22.2928 13.4574 20.5359 13.4574 18.3762V7.83203H18.215V18.0748C18.215 22.8925 14.3456 26.8106 9.59092 26.8106Z" fill="#141217"></path><path d="M30.3816 15.5732L29.6104 16.3445L27.7201 14.4542L25.8298 16.3445L25.0586 15.5732L26.9489 13.683L25.0586 11.7927L25.8298 11.0215L27.7201 12.9117L29.6104 11.0215L30.3816 11.7927L28.4913 13.683L30.3816 15.5732Z" fill="#141217"></path><path d="M42.4531 16.9472C42.4531 18.378 41.2843 19.5468 39.8535 19.5468C38.4227 19.5468 37.2539 18.378 37.2539 16.9472C37.2539 15.5165 38.4227 14.3477 39.8535 14.3477H42.4531V16.9472Z" fill="#E01E5A"></path><path d="M43.7617 16.9472C43.7617 15.5165 44.9305 14.3477 46.3613 14.3477C47.7921 14.3477 48.9609 15.5165 48.9609 16.9472V23.4563C48.9609 24.8871 47.7921 26.0559 46.3613 26.0559C44.9305 26.0559 43.7617 24.8871 43.7617 23.4563V16.9472Z" fill="#E01E5A"></path><path d="M46.3613 6.50972C44.9305 6.50972 43.7617 5.34092 43.7617 3.91014C43.7617 2.47935 44.9305 1.31055 46.3613 1.31055C47.7921 1.31055 48.9609 2.47935 48.9609 3.91014V6.50972H46.3613Z" fill="#36C5F0"></path><path d="M46.3625 7.81836C47.7933 7.81836 48.9621 8.98717 48.9621 10.4179C48.9621 11.8487 47.7933 13.0175 46.3625 13.0175H39.8535C38.4227 13.0175 37.2539 11.8487 37.2539 10.4179C37.2539 8.98717 38.4227 7.81836 39.8535 7.81836H46.3625Z" fill="#36C5F0"></path><path d="M56.7988 10.4179C56.7988 8.98717 57.9676 7.81836 59.3984 7.81836C60.8292 7.81836 61.998 8.98717 61.998 10.4179C61.998 11.8487 60.8292 13.0175 59.3984 13.0175H56.7988V10.4179Z" fill="#2EB67D"></path><path d="M55.4902 10.4192C55.4902 11.85 54.3214 13.0188 52.8906 13.0188C51.4598 13.0188 50.291 11.85 50.291 10.4192V3.91014C50.291 2.47935 51.4598 1.31055 52.8906 1.31055C54.3214 1.31055 55.4902 2.47935 55.4902 3.91014V10.4192Z" fill="#2EB67D"></path><path d="M52.8906 20.8555C54.3214 20.8555 55.4902 22.0243 55.4902 23.4551C55.4902 24.8858 54.3214 26.0546 52.8906 26.0546C51.4598 26.0546 50.291 24.8858 50.291 23.4551V20.8555H52.8906Z" fill="#ECB22E"></path><path d="M52.8906 19.5468C51.4598 19.5468 50.291 18.378 50.291 16.9472C50.291 15.5165 51.4598 14.3477 52.8906 14.3477H59.3997C60.8304 14.3477 61.9992 15.5165 61.9992 16.9472C61.9992 18.378 60.8304 19.5468 59.3997 19.5468H52.8906Z" fill="#ECB22E"></path><defs><linearGradient id="paint0_linear_1244_250427" x1="0.413747" y1="1.1436" x2="17.4818" y2="6.07484" gradientUnits="userSpaceOnUse"><stop stop-color="#F2583C"></stop><stop offset="0.541667" stop-color="#9214C4"></stop><stop offset="1" stop-color="#1E71ED"></stop></linearGradient></defs></svg></div></div><div id="brxe-9e414a" class="brxe-block"><div id="brxe-b7e2bf" class="brxe-block"><div id="brxe-1894f1" class="brxe-text-basic">Main RSS</div><div class="main-rss-input"> 2562<input type="text" value="https://www.upwind.io/feed/rss-feed/" /> 2563 <div class="rss-copy-link"> 2564 <div class="icon">
2565 <svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3.26384 12.9839H8.97584C9.20024 12.9839 9.38384 12.8003 9.38384 12.5759V10.9439H10.6078V12.5759C10.6078 13.476 9.87599 14.2079 8.97584 14.2079H3.26384C2.36241 14.2079 1.63184 13.476 1.63184 12.5759V6.86386C1.63184 5.96371 2.36241 5.23186 3.26384 5.23186H4.89584V6.45586H3.26384C3.03842 6.45586 2.85584 6.63946 2.85584 6.86386V12.5759C2.85584 12.8003 3.03842 12.9839 3.26384 12.9839ZM5.71184 2.78386C5.71184 1.88243 6.44369 1.15186 7.34384 1.15186H13.0558C13.956 1.15186 14.6878 1.88243 14.6878 2.78386V8.49586C14.6878 9.39601 13.956 10.1279 13.0558 10.1279H7.34384C6.44369 10.1279 5.71184 9.39601 5.71184 8.49586V2.78386ZM7.34384 8.90386H13.0558C13.2802 8.90386 13.4638 8.72026 13.4638 8.49586V2.78386C13.4638 2.55844 13.2802 2.37586 13.0558 2.37586H7.34384C7.11944 2.37586 6.93584 2.55844 6.93584 2.78386V8.49586C6.93584 8.72026 7.11944 8.90386 7.34384 8.90386Z" fill="currentColor"/></svg> 2566 </div> 2567 <div class="copy-notify"> 2568 Link Copied 2569 </div> 2570 </div> 2571</div><style>.main-rss-input { 2572 display: flex; 2573 position: relative; 2574 width: 100%; 2575 column-gap: 5px; 2576 padding: 0; 2577 border: none; 2578} 2579.main-rss-input input { 2580 border-radius: 4px; 2581 background: #f2f7fc; 2582 border: 1px solid #f2f7fc; 2583 padding: 5px 15px; 2584 color: var(--Gray-03); 2585 font-family: var(--Feed-Text-family); 2586 font-size: var(--Feed-Text-size); 2587 font-style: var(--Feed-Text-style); 2588 font-weight: var(--Feed-Text-weight); 2589 line-height: var(--Feed-Text-height); 2590 letter-spacing: var(--Feed-Text-spacing); 2591 white-space: nowrap; 2592 overflow: hidden; 2593 text-overflow: ellipsis; 2594} 2595.main-rss-input .rss-copy-link { 2596 border-radius: 4px; 2597 background: #f2f7fc; 2598 cursor: pointer; 2599 display: flex; 2600 padding: 4px 24px; 2601 flex-direction: column; 2602 justify-content: center; 2603 align-items: center; 2604 gap: 12px; 2605 color: var(--Gray-03); 2606 max-width: 69px; 2607} 2608.main-rss-input .rss-copy-link .icon { 2609 pointer-events: none; 2610} 2611.main-rss-input .rss-copy-link .icon svg { 2612 display: block; 2613 height: auto; 2614 width: 21px; 2615} 2616.main-rss-input .rss-copy-link:hover { 2617 background-color: var(--Gray-01); 2618 color: #f2f7fc; 2619} 2620.main-rss-input .rss-copy-link .copy-notify { 2621 font-size: 10px; 2622 width: 100%; 2623 padding: 5px 8px; 2624 left: 0px; 2625 bottom: calc(100% + 5px); 2626 top: auto; 2627 font-family: var(--Font-Inter); 2628 font-size: 14px; 2629 font-style: normal; 2630 font-weight: 400; 2631 line-height: 140%; 2632 letter-spacing: -0.42px; 2633 border-radius: 4px; 2634}</style>
2634<script>(function(){ 2635 var copy_rss = function(event) { 2636 event.preventDefault(); 2637 2638 // Get the text field 2639 var copyText = event.target.closest('.main-rss-input').querySelector('input').value; 2640 2641 navigator.clipboard.writeText(copyText); 2642 2643 event.target.closest('.main-rss-input').querySelector('.copy-notify').classList.add('active'); 2644 setTimeout(function(){ 2645 document.querySelector('.main-rss-input .rss-copy-link .active').classList.remove('active'); 2646 }, 2500) 2647 } 2648 2649 document.querySelector('.main-rss-input .rss-copy-link').addEventListener('click', copy_rss); 2650})();</script>
2650</div></div></div></div></div><div class="brx-popup-backdrop"></div></div>
2650<script id="wp-importmap" type="importmap"> 2651{"imports":{"@wordpress/route":"https://www.upwind.io/wp-includes/js/dist/script-modules/route/index.min.js?ver=c5843b6c5e84b352f43b","@wordpress/latex-to-mathml":"https://www.upwind.io/wp-includes/js/dist/script-modules/latex-to-mathml/index.min.js?ver=e5fd3ae6d2c3b6e669da"}} 2652</script>
2652 2653
2653<script> 2654 const lazyloadRunObserver = () => { 2655 const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); 2656 const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { 2657 entries.forEach( ( entry ) => { 2658 if ( entry.isIntersecting ) { 2659 let lazyloadBackground = entry.target; 2660 if( lazyloadBackground ) { 2661 lazyloadBackground.classList.add( 'e-lazyloaded' ); 2662 } 2663 lazyloadBackgroundObserver.unobserve( entry.target ); 2664 } 2665 }); 2666 }, { rootMargin: '200px 0px 200px 0px' } ); 2667 lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { 2668 lazyloadBackgroundObserver.observe( lazyloadBackground ); 2669 } ); 2670 }; 2671 const events = [ 2672 'DOMContentLoaded', 2673 'elementor/lazyload/observe', 2674 ]; 2675 events.forEach( ( event ) => { 2676 document.addEventListener( event, lazyloadRunObserver ); 2677 } ); 2678 </script>
2678 2679
2679<script>(() => { 2680 2681 // ââ Single canvas â no CSS filters âââââââââââââââââââââââââââââââââââââââââââ 2682 // Cloudflare's approach: store trail history, clear + redraw every frame at 2683 // computed opacity. One pre-rendered gradient image stamped via drawImage 2684 // (GPU-accelerated) instead of re-creating radial gradients each frame. 2685 // 2686 // Supports multiple sections on the same page â each .gradient-section gets 2687 // its own independent canvas, trail history, and animation loop. 2688 2689 // ââ Config âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2690 2691 // On touch/mobile devices the gradient renders once at its default position 2692 // and is never updated â no rAF loop, no trail accumulation, no memory growth. 2693 const IS_TOUCH = window.matchMedia('(pointer: coarse)').matches; 2694 2695 // Gradient 2696 const GRAD_FACTOR = 1.5; // gradient radius as fraction of smaller dimension 2697 const TRAIL_DURATION = 60; // frames a trail point lives (~1.5s at 60fps) 2698 const MAX_TRAIL = 60; // max stored trail points 2699 const POINT_THRESHOLD = 8; // min logical-px gap between stored points 2700 const FADE_POWER = 8; // alpha = (1âage)^FADE_POWER (higher = steeper drop) 2701 2702 // Dot grid 2703 const DOT_COLOR = 'rgba(255, 255, 255, 0.5)'; // '#C7C7C7'; // dot fill colour 2704 const DOT_SIZE = 1; // dot size in logical px (1 = one physical px per DPR unit) 2705 const DOT_SPACING = 12; // logical-px gap between dot centres (rows and cols) 2706 const DOT_STAGGER = 6; // logical-px horizontal offset applied to every odd row 2707 2708 function initGradientSection(section) { 2709 // On touch/mobile devices, skip canvas init for scrolling-card gradient sections. 2710 // 78 cards à 2 canvases = ~80MB on page load â way over Safari mobile's limit. 2711 // The popup modal is outside .horizontal-scrolling-elements so it still inits. 2712 if (IS_TOUCH && section.closest('.horizontal-scrolling-elements')) { 2713 section._gradientInit = true; // mark so the observer doesn't retry 2714 return; 2715 } 2716 section._gradientInit = true; 2717 const dpr = Math.min(window.devicePixelRatio || 1, 2); 2718 2719 const canvas = document.createElement('canvas'); 2720 canvas.style.cssText = [ 2721 'position:absolute', 'top:0', 'left:0', 2722 'width:100%', 'height:100%', 2723 'pointer-events:none', 'z-index:0', 2724 ].join(';'); 2725 section.appendChild(canvas); 2726 const ctx = canvas.getContext('2d'); 2727 2728 const dotCanvas = document.createElement('canvas'); 2729 dotCanvas.style.cssText = [ 2730 'position:absolute', 'top:0', 'left:0', 2731 'width:100%', 'height:100%', 2732 'pointer-events:none', 'z-index:1', 2733 ].join(';'); 2734 section.appendChild(dotCanvas); 2735 const dotCtx = dotCanvas.getContext('2d'); 2736 2737 // ââ State âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2738 2739 let frame = 0; 2740 let cursorX, cursorY; 2741 let lastTrailX = -9999, lastTrailY = -9999; 2742 let isInside = false; 2743 let rafId = null; 2744 let gradImg = null; 2745 let gradR = 0; 2746 const trail = []; 2747 2748 // ââ Gradient image ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2749 2750 function buildGradImage() { 2751 const R = Math.round( 2752 Math.min(canvas.width, canvas.height) * GRAD_FACTOR / dpr 2753 ) * dpr; 2754 if (R === 0) return; // element hidden â initCanvas() will retry when dimensions are known 2755 if (gradImg && R === gradR) return; 2756 gradR = R; 2757 2758 const off = document.createElement('canvas'); 2759 off.width = R * 2; 2760 off.height = R * 2; 2761 const oc = off.getContext('2d'); 2762 2763 const grd = oc.createRadialGradient(R, R, 0, R, R, R); 2764 grd.addColorStop(0, '#F2583C'); // orange â solid core 2765 grd.addColorStop(0.1, '#F2583C'); // orange â holds to 10% 2766 grd.addColorStop(0.6, 'rgba(146,20,196,1)'); // purple â transition 10â60% 2767 grd.addColorStop(1.0, 'rgba(30,113,237,0)'); // transparent â fades to blue 60â100% 2768 2769 oc.fillStyle = grd; 2770 oc.fillRect(0, 0, R * 2, R * 2); 2771 gradImg = off; 2772 } 2773 2774 // ââ Canvas init âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2775 2776 function initCanvas() { 2777 const lw = section.offsetWidth; 2778 const lh = section.offsetHeight; 2779 if (!lw || !lh) return; // element hidden â ResizeObserver will call again when visible 2780 canvas.width = lw * dpr | 0; 2781 canvas.height = lh * dpr | 0; 2782 canvas.style.width = lw + 'px'; 2783 canvas.style.height = lh + 'px'; 2784 2785 if (cursorX === undefined) { 2786 cursorX = lw / 2; 2787 cursorY = lh; // bottom-centre default 2788 } 2789 2790 buildGradImage(); 2791 if (!rafId) paint(); 2792 } 2793 2794 // ââ Dot-grid overlay âââââââââââââââââââââââââââââââââââââââââââââââââââââ 2795 2796 function paintDots() { 2797 const lw = section.offsetWidth; 2798 const lh = section.offsetHeight; 2799 dotCanvas.width = lw * dpr | 0; 2800 dotCanvas.height = lh * dpr | 0; 2801 dotCanvas.style.width = lw + 'px'; 2802 dotCanvas.style.height = lh + 'px'; 2803 2804 dotCtx.clearRect(0, 0, dotCanvas.width, dotCanvas.height); 2805 dotCtx.fillStyle = DOT_COLOR; 2806 2807 const dotPx = Math.max(1, Math.round(dpr * DOT_SIZE)); 2808 2809 for (let row = 0, y = 0; y <= lh; row++, y = row * DOT_SPACING) { 2810 const xOffset = (row % 2 === 1) ? DOT_STAGGER : 0; 2811 for (let col = 0, x = xOffset; x <= lw + DOT_STAGGER; col++, x = xOffset + col * DOT_SPACING) { 2812 dotCtx.fillRect(x * dpr, y * dpr, dotPx, dotPx); 2813 } 2814 } 2815 } 2816 2817 // ââ Drawing âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2818 2819 function stamp(lx, ly, alpha) { 2820 if (!gradImg || gradImg.width === 0 || gradImg.height === 0 || alpha < 0.005) return; 2821 ctx.globalAlpha = alpha; 2822 ctx.drawImage(gradImg, lx * dpr - gradR, ly * dpr - gradR); 2823 } 2824 2825 function paint() { 2826 ctx.clearRect(0, 0, canvas.width, canvas.height); 2827 2828 for (const p of trail) { 2829 const age = (frame - p.birth) / TRAIL_DURATION;
2830 const alpha = Math.pow(1 - age, FADE_POWER); 2831 stamp(p.x, p.y, alpha); 2832 } 2833 2834 if (isInside) { 2835 stamp(cursorX, cursorY, 1); 2836 } else { 2837 // Always anchor at last known position â whether trail is draining or fully gone. 2838 stamp(cursorX, cursorY, 0.9); 2839 } 2840 } 2841 2842 // ââ Animation loop ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2843 2844 function tick() { 2845 frame++; 2846 while (trail.length && frame - trail[0].birth >= TRAIL_DURATION) { 2847 trail.shift(); 2848 } 2849 paint(); 2850 if (trail.length || isInside) { 2851 rafId = requestAnimationFrame(tick); 2852 } else { 2853 rafId = null; 2854 } 2855 } 2856 2857 function startLoop() { 2858 if (!rafId) rafId = requestAnimationFrame(tick); 2859 } 2860 2861 // ââ Trail sampling ââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2862 2863 function addPoint(lx, ly) { 2864 const dx = lx - lastTrailX, dy = ly - lastTrailY; 2865 if (dx * dx + dy * dy < POINT_THRESHOLD * POINT_THRESHOLD) return; 2866 trail.push({ x: lx, y: ly, birth: frame }); 2867 if (trail.length > MAX_TRAIL) trail.shift(); 2868 lastTrailX = lx; 2869 lastTrailY = ly; 2870 } 2871 2872 // ââ Events ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2873 2874 // Track on document rather than the section element so that sibling overlays, 2875 // scroll-container fades, or any absolutely-positioned Bricks element sitting 2876 // on top of the card's padding zone can't steal the event and trigger a false 2877 // mouseleave. We check the cursor against the section's bounding rect instead â 2878 // that rect includes padding, so hovering anywhere in the visual card works. 2879 // Mouse tracking and the rAF loop are desktop-only â on touch devices 2880 // the gradient renders once at its default position and stays static. 2881 if (!IS_TOUCH) { 2882 document.addEventListener('mousemove', e => { 2883 const r = section.getBoundingClientRect(); 2884 const inBounds = e.clientX >= r.left && e.clientX <= r.right && 2885 e.clientY >= r.top && e.clientY <= r.bottom; 2886 if (inBounds) { 2887 cursorX = e.clientX - r.left; 2888 cursorY = e.clientY - r.top; 2889 isInside = true; 2890 addPoint(cursorX, cursorY); 2891 startLoop(); 2892 } else if (isInside) { 2893 isInside = false;
2894 startLoop(); 2895 } 2896 }); 2897 } 2898 2899 window.addEventListener('resize', initCanvas); 2900 window.addEventListener('resize', paintDots); 2901 2902 // ResizeObserver keeps the canvas pixel dimensions in sync with the section's 2903 // rendered size, catching post-init height growth from font-swap reflow, image 2904 // decode, or flex layout settling â causes that window 'resize' misses entirely. 2905 // This fires asynchronously (after paint) so it always sees the final layout height. 2906 if (typeof ResizeObserver !== 'undefined') { 2907 new ResizeObserver(function() { initCanvas(); paintDots(); }).observe(section); 2908 } 2909 2910 // ââ Boot ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 2911 2912 initCanvas(); 2913 paintDots(); 2914 2915 // Public API attached to the element so external callers (e.g. card-expand.js) 2916 // can force the canvas to a specific logical size and repaint without needing 2917 // to re-initialise the whole section or fire a resize event. 2918 section._gradientAPI = { 2919 setSize: function(w, h) { 2920 var lw = w | 0; 2921 var lh = h | 0; 2922 canvas.width = lw * dpr | 0; 2923 canvas.height = lh * dpr | 0; 2924 canvas.style.width = lw + 'px'; 2925 canvas.style.height = lh + 'px'; 2926 if (cursorX === undefined) { cursorX = lw / 2; cursorY = lh; } 2927 buildGradImage(); 2928 if (!rafId) paint(); 2929 }, 2930 }; 2931 } 2932 2933 // Initialise any .gradient-section elements already on the page. 2934 document.querySelectorAll('.gradient-section').forEach(function(el) { 2935 if (!el._gradientInit) initGradientSection(el); 2936 }); 2937 2938 // Watch for .gradient-section elements added after this script runs, AND for 2939 // the gradient-section class being added to existing elements (Bricks Builder 2940 // dynamically adds the class to horizontal-scroll cards after page load, so a 2941 // childList observer alone would miss them). 2942 new MutationObserver(function(mutations) { 2943 mutations.forEach(function(m) { 2944 if (m.type === 'attributes') { 2945 // Class was mutated on an existing element â re-check for gradient-section. 2946 var el = m.target; 2947 if (el.classList.contains('gradient-section') && !el._gradientInit) { 2948 initGradientSection(el); 2949 } 2950 return; 2951 } 2952 // New nodes added to the DOM. 2953 m.addedNodes.forEach(function(node) { 2954 if (!(node instanceof Element)) return; 2955 if (node.matches('.gradient-section') && !node._gradientInit) { 2956 initGradientSection(node); 2957 } 2958 node.querySelectorAll('.gradient-section').forEach(function(el) { 2959 if (!el._gradientInit) initGradientSection(el); 2960 }); 2961 }); 2962 }); 2963 }).observe(document.body, { 2964 childList: true, 2965 subtree: true, 2966 attributes: true, 2967 attributeFilter: ['class'], 2968 }); 2969 2970 // ââ Global API for card-expand.js ââââââââââââââââââââââââââââââââââââââââââââ 2971 2972 // init â safe to call multiple times; no-ops after first run. 2973 window.initGradientSection = function(el) { 2974 if (el._gradientInit) return; 2975 el._gradientInit = true; 2976 initGradientSection(el); 2977 }; 2978 2979 // sizeGradientSection(el, w, h) 2980 // Pre-sizes the canvas to the final popup dimensions BEFORE the expand animation. 2981 // The popup starts at card size with overflow:hidden so only a card-sized window 2982 // into the canvas is visible â the growing popup then "reveals" more of it. 2983 // Works on every open without re-initialising event listeners or the rAF loop. 2984 window.sizeGradientSection = function(el, w, h) { 2985 if (!el._gradientInit) { 2986 el._gradientInit = true; 2987 initGradientSection(el); // first-time init (also attaches _gradientAPI) 2988 } 2989 if (el._gradientAPI) el._gradientAPI.setSize(w, h); 2990 }; 2991})(); 2992</script>
2992<script>(() => { 2993 if (document.readyState === 'loading') { 2994 document.addEventListener('DOMContentLoaded', main); 2995 } else { 2996 main(); 2997 } 2998 2999 function main() { 3000 3001 // ââ Config âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3002 3003 // On touch/mobile devices the gradient renders once (static) â no rAF loop. 3004 var IS_TOUCH = window.matchMedia('(pointer: coarse)').matches; 3005 3006 var CARD_SEL = '.horizontal-scrolling-block-inner'; 3007 var POPUP_SEL = '.horizontal-scrolling-block-popup-content'; 3008 var WRAPPER_SEL = '.horizontal-scrolling-block'; 3009 // Direct child blocks of the card that aren't the popup (the visible card text) 3010 var BLOCK_SEL = ':scope > .brxe-block:not(.horizontal-scrolling-block-popup-content)'; 3011 // Direct children of the popup excluding canvas (gradient layer) 3012 var CONTENT_SEL = ':scope > *:not(canvas)'; 3013 var EXPAND_MS = 400; 3014 var FADE_MS = 160; 3015 var SIDE_GAP = 0; // no gap â popup covers 100vw à 100svh 3016 var TAP_THRESHOLD = 8; 3017 var CARD_RADIUS = 8; // px â matches the card's CSS border-radius 3018 var POPUP_RADIUS = 0; // px â 0 for true full-screen (no rounded corners) 3019 var CLOSE_BTN_SIZE = 64; // px â width and height of the close button SVG 3020 var CLOSE_BTN_OFFSET = 58; // px â distance from top and right edges of the popup 3021 3022 // Gradient 3023 var GRAD_FACTOR = 1.5; // gradient radius as fraction of smaller canvas dimension 3024 var TRAIL_DURATION = 60; // frames a trail point lives (~1.5s at 60fps) 3025 var MAX_TRAIL = 60; // max stored trail points 3026 var POINT_THRESHOLD = 8; // min logical-px gap between stored trail points 3027 var FADE_POWER = 8; // alpha = (1âage)^FADE_POWER (higher = steeper drop) 3028 3029 // Dot grid â keep in sync with script.js 3030 var DOT_COLOR = 'rgba(255, 255, 255, 0.5)'; 3031 var DOT_SIZE = 1; // dot size in logical px (1 = one physical px per DPR unit) 3032 var DOT_SPACING = 12; // logical-px gap between dot centres (rows and cols) 3033 var DOT_STAGGER = 6; // logical-px horizontal offset applied to every odd row 3034 3035 // ââ Inject styles âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3036 3037 var ceStyle = document.createElement('style'); 3038 ceStyle.textContent = [ 3039 // Hide scrollbar on the popup modal in all browsers while keeping scroll. 3040 '.ce-modal { scrollbar-width:none; -ms-overflow-style:none; }', 3041 '.ce-modal::-webkit-scrollbar { display:none; }', 3042 ].join('\n'); 3043 document.head.appendChild(ceStyle); 3044 3045 // ââ State âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3046 3047 var activeCard = null; 3048 var activePopup = null; 3049 var overlayEl = null; 3050 var lastHoveredWrapper = null; 3051 var scrollPauseRafId = null; 3052 3053 // ââ Modal container âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3054 // 3055 // Lives on <body> permanently. Parked off-screen via left:-9999px when not in 3056 // use. We use position:fixed + off-screen (NOT display:none) so the gradient 3057 // canvas initialises with real dimensions and is never torn down between opens. 3058 3059 var initW = window.innerWidth; 3060 var initH = window.innerHeight; 3061 3062 var modalEl = document.createElement('div'); 3063 modalEl.className = 'gradient-section ce-modal'; 3064 // Prevent script.js from running initGradientSection on the modal â we manage 3065 // our own self-contained gradient canvas below and don't want a second canvas. 3066 modalEl._gradientInit = true; 3067 modalEl.style.cssText = [ 3068 'position:fixed', 3069 'top:-9999px', 3070 'left:-9999px', 3071 'width:' + initW + 'px', 3072 'height:' + initH + 'px', 3073 'z-index:9001', 3074 'overflow:hidden', 3075 'box-sizing:border-box', 3076 'margin:0', 3077 'pointer-events:none', 3078 ].join(';'); 3079 document.body.appendChild(modalEl); 3080 3081 // ââ Self-contained gradient âââââââââââââââââââââââââââââââââââââââââââââââââââ 3082 // 3083 // Mirrors the page's gradient-section script exactly so we don't depend on it
3084 // exposing any global functions (it doesn't). The canvas lives inside modalEl 3085 // permanently and is only ever resized â never destroyed and re-created. 3086 3087 var gdpr = Math.min(window.devicePixelRatio || 1, 2); 3088 3089 var gCanvas = document.createElement('canvas'); 3090 gCanvas.style.cssText = [ 3091 'position:absolute', 'top:0', 'left:0', 3092 'width:100%', 'height:100%', 3093 'pointer-events:none', 'z-index:0', 3094 ].join(';'); 3095 modalEl.appendChild(gCanvas); 3096 var gCtx = gCanvas.getContext('2d'); 3097 3098 // ââ Dot-grid overlay (mirrors script.js paintDots, z-index:1 above gradient) ââ 3099 var dCanvas = document.createElement('canvas'); 3100 dCanvas.style.cssText = [ 3101 'position:absolute', 'top:0', 'left:0', 3102 'width:100%', 'height:100%', 3103 'pointer-events:none', 'z-index:1', 3104 ].join(';'); 3105 modalEl.appendChild(dCanvas); 3106 var dCtx = dCanvas.getContext('2d'); 3107 3108 function dPaintDots(lw, lh) { 3109 dCanvas.width = (lw * gdpr) | 0; 3110 dCanvas.height = (lh * gdpr) | 0; 3111 dCanvas.style.width = lw + 'px'; 3112 dCanvas.style.height = lh + 'px'; 3113 dCtx.clearRect(0, 0, dCanvas.width, dCanvas.height); 3114 dCtx.fillStyle = DOT_COLOR; 3115 var dotPx = Math.max(1, Math.round(gdpr * DOT_SIZE)); 3116 for (var row = 0, y = 0; y <= lh; row++, y = row * DOT_SPACING) { 3117 var xOff = (row % 2 === 1) ? DOT_STAGGER : 0; 3118 for (var col = 0, x = xOff; x <= lw + DOT_STAGGER; col++, x = xOff + col * DOT_SPACING) { 3119 dCtx.fillRect(x * gdpr, y * gdpr, dotPx, dotPx); 3120 } 3121 } 3122 } 3123 3124 // ââ Close button ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3125 // 3126 // position:absolute inside the fixed modal â does NOT scroll with popup content. 3127 // Starts at opacity:0 and fades in/out with the popup content children. 3128 3129 var closeBtnEl = document.createElement('div'); 3130 closeBtnEl.style.cssText = [ 3131 'position:absolute', 3132 'top:' + CLOSE_BTN_OFFSET + 'px', 3133 'right:' + CLOSE_BTN_OFFSET + 'px', 3134 'z-index:10', // above gradient canvas (0) and dot canvas (1) 3135 'width:' + CLOSE_BTN_SIZE + 'px', 3136 'height:' + CLOSE_BTN_SIZE + 'px', 3137 'opacity:0', 3138 'cursor:pointer', 3139 'line-height:0', // collapse any inline-block whitespace 3140 'flex-shrink:0', // prevent flex parents from squishing it 3141 'transition:opacity 0.3s ease-in-out', 3142 ].join(';'); 3143 // style="display:block;width:64px;height:64px" on the SVG overrides any 3144 // inherited CSS that might resize it (e.g. img { max-width:100% } rules). 3145 closeBtnEl.innerHTML = '<svg display="block"' 3146 + ' width="' + CLOSE_BTN_SIZE + '"' 3147 + ' height="' + CLOSE_BTN_SIZE + '"' 3148 + ' style="display:block;width:' + CLOSE_BTN_SIZE + 'px;height:' + CLOSE_BTN_SIZE + 'px"' 3149 + ' viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">' 3150 + '<circle cx="32" cy="32" r="31.5" stroke="white"/>' 3151 + '<line x1="14.6464" y1="48.6464" x2="48.6464" y2="14.6464" stroke="white"/>' 3152 + '<line x1="15.3604" y1="14.6464" x2="49.3604" y2="48.6464" stroke="white"/>' 3153 + '</svg>'; 3154 3155 // Hover: fade to 0.7 opacity. Uses JS rather than CSS :hover to avoid inline 3156 // style specificity conflicts with the fade-in/out opacity we set directly. 3157 closeBtnEl.addEventListener('mouseenter', function() { 3158 closeBtnEl.style.opacity = '0.7'; 3159 }); 3160 closeBtnEl.addEventListener('mouseleave', function() { 3161 closeBtnEl.style.opacity = '1'; 3162 }); 3163 closeBtnEl.addEventListener('click', function(e) { 3164 e.stopPropagation(); // don't bubble to overlay 3165 collapse(); 3166 }); 3167 3168 modalEl.appendChild(closeBtnEl); 3169 var gImg = null, gR = 0; 3170 var gFrame = 0; 3171 var gX, gY; 3172 var gLastX = -9999, gLastY = -9999; 3173 var gInside = false, gRafId = null; 3174 var gTrail = []; 3175 3176 function gBuildImage() { 3177 var R = Math.round(Math.min(gCanvas.width, gCanvas.height) * GRAD_FACTOR / gdpr) * gdpr; 3178 if (gImg && R === gR) return; 3179 gR = R; 3180 var off = document.createElement('canvas'); 3181 off.width = R * 2; off.height = R * 2; 3182 var oc = off.getContext('2d'); 3183 var gr = oc.createRadialGradient(R, R, 0, R, R, R); 3184 gr.addColorStop(0, '#F2583C'); 3185 gr.addColorStop(0.1, '#F2583C'); 3186 gr.addColorStop(0.6, 'rgba(146,20,196,1)'); 3187 gr.addColorStop(1.0, 'rgba(30,113,237,0)'); 3188 oc.fillStyle = gr; 3189 oc.fillRect(0, 0, R * 2, R * 2); 3190 gImg = off; 3191 } 3192 3193 function gStamp(lx, ly, alpha) {
3194 if (!gImg || alpha < 0.005) return; 3195 gCtx.globalAlpha = alpha; 3196 gCtx.drawImage(gImg, lx * gdpr - gR, ly * gdpr - gR); 3197 } 3198 3199 function gPaint() { 3200 gCtx.clearRect(0, 0, gCanvas.width, gCanvas.height); 3201 gTrail.forEach(function(p) { 3202 var age = (gFrame - p.birth) / TRAIL_DURATION; 3203 gStamp(p.x, p.y, Math.pow(1 - age, FADE_POWER)); 3204 }); 3205 gStamp(gX, gY, gInside ? 1 : 0.9); 3206 } 3207 3208 function gTick() { 3209 gFrame++; 3210 while (gTrail.length && gFrame - gTrail[0].birth >= TRAIL_DURATION) gTrail.shift(); 3211 gPaint(); 3212 if (gTrail.length || gInside) { 3213 gRafId = requestAnimationFrame(gTick); 3214 } else { 3215 gRafId = null; 3216 } 3217 } 3218 3219 function gStartLoop() { 3220 if (!gRafId) gRafId = requestAnimationFrame(gTick); 3221 } 3222 3223 function gAddPoint(lx, ly) { 3224 var dx = lx - gLastX, dy = ly - gLastY; 3225 if (dx * dx + dy * dy < POINT_THRESHOLD * POINT_THRESHOLD) return; 3226 gTrail.push({ x: lx, y: ly, birth: gFrame }); 3227 if (gTrail.length > MAX_TRAIL) gTrail.shift(); 3228 gLastX = lx; gLastY = ly; 3229 } 3230 3231 // Resize both canvases to explicit pixel dimensions and repaint.
3232 // Works regardless of the modal's display/visibility state. 3233 function gSetSize(w, h) { 3234 var lw = w | 0, lh = h | 0; 3235 gCanvas.width = (lw * gdpr) | 0; 3236 gCanvas.height = (lh * gdpr) | 0; 3237 gCanvas.style.width = lw + 'px'; 3238 gCanvas.style.height = lh + 'px'; 3239 if (gX === undefined) { gX = lw / 2; gY = lh; } 3240 gBuildImage(); 3241 if (!gRafId) gPaint(); 3242 dPaintDots(lw, lh); 3243 } 3244 3245 // Desktop: pre-allocate at full size so the canvas is warm before first click. 3246 // Mobile: defer allocation until the first expand â avoids two full-viewport 3247 // canvases sitting in memory when they may never be used. 3248 if (!IS_TOUCH) { 3249 gSetSize(initW, initH); 3250 } 3251 3252 // Mouse tracking and rAF loop are desktop-only â on touch devices the 3253 // gradient renders once at its default position and stays static. 3254 if (!IS_TOUCH) { 3255 modalEl.addEventListener('mousemove', function(e) { 3256 var r = modalEl.getBoundingClientRect(); 3257 gX = e.clientX - r.left; 3258 gY = e.clientY - r.top; 3259 gInside = true; 3260 gAddPoint(gX, gY); 3261 gStartLoop(); 3262 }); 3263 modalEl.addEventListener('mouseleave', function() { 3264 gInside = false;
3265 gStartLoop(); 3266 }); 3267 } 3268 3269 // ââ Popup height measurement ââââââââââââââââââââââââââââââââââââââââââââââââââ 3270 // 3271 // Temporarily renders the popup off-screen to read its scrollHeight at the 3272 // target modal width. Result is cached on the element to avoid repeated work. 3273 3274 function measurePopupHeight(popup, tw, mh) { 3275 var key = '__popupH' + tw; 3276 if (popup[key]) return popup[key]; 3277 popup.style.display = ''; 3278 popup.style.position = 'fixed'; 3279 popup.style.top = '-9999px'; 3280 popup.style.left = '0'; 3281 popup.style.width = tw + 'px'; 3282 popup.style.height = 'auto'; 3283 var h = Math.min(popup.scrollHeight, mh); 3284 // Restore to hidden; Bricks CSS position:fixed/-9999px takes back over. 3285 popup.style.cssText = 'display:none'; 3286 popup[key] = h; 3287 return h; 3288 } 3289 3290 // ââ Canvas pre-sizing on card hover âââââââââââââââââââââââââââââââââââââââââââ 3291 // 3292 // When the user hovers a card, we resize the gradient canvas to that popup's 3293 // exact final dimensions. When they click, the canvas is already the right size. 3294 // The modal expands with overflow:hidden, "revealing" more of the canvas as it 3295 // grows â no canvas resize during the animation. 3296 3297 // Hover pre-size is a desktop optimisation (no hover on touch). 3298 if (!IS_TOUCH) { 3299 document.addEventListener('mouseover', function(e) { 3300 if (activeCard) return; 3301 var wrapper = e.target.closest ? e.target.closest(WRAPPER_SEL) : null; 3302 if (!wrapper || wrapper === lastHoveredWrapper) return; 3303 lastHoveredWrapper = wrapper; 3304 var card = wrapper.querySelector(CARD_SEL); 3305 if (!card) return; 3306 var popup = card.querySelector(POPUP_SEL); 3307 if (!popup) return; 3308 // Pre-size canvas at full-screen dimensions so it's warm on click. 3309 gSetSize(window.innerWidth, window.innerHeight); 3310 }, true); 3311 } 3312 3313 // ââ Scroll pause / resume âââââââââââââââââââââââââââââââââââââââââââââââââââââ 3314 // 3315 // Directly targets .element-scroll-wrapper â the animated track created by 3316 // horizontal-scroll-element.js. A rAF loop re-asserts the pause every frame 3317 // while the popup is open so that the scroll script's mouseleave handler 3318 // (which fires when the overlay covers the container) can't sneak a resume in. 3319 // getComputedStyle is only called when the play-state was externally changed, 3320 // so the per-frame cost is a single cheap style property read. 3321 3322 function pauseAllScrollTracks() { 3323 function keepPaused() { 3324 document.querySelectorAll('.element-scroll-wrapper').forEach(function(el) { 3325 el.dataset.cePaused = '1'; 3326 if (el.style.animationPlayState !== 'paused') { 3327 // External code resumed it â re-freeze at the current position. 3328 el.style.transform = getComputedStyle(el).transform; 3329 el.style.animationPlayState = 'paused'; 3330 } 3331 }); 3332 scrollPauseRafId = requestAnimationFrame(keepPaused); 3333 } 3334 keepPaused(); 3335 } 3336 3337 function resumeAllScrollTracks() { 3338 if (scrollPauseRafId) { 3339 cancelAnimationFrame(scrollPauseRafId); 3340 scrollPauseRafId = null; 3341 } 3342 document.querySelectorAll('.element-scroll-wrapper[data-ce-paused]').forEach(function(el) { 3343 delete el.dataset.cePaused; 3344 el.style.animationPlayState = ''; 3345 el.style.transform = ''; 3346 }); 3347 } 3348 3349 // ââ Overlay âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3350 3351 function showOverlay() { 3352 // Remove any stale overlay left over from a previous session or the old script. 3353 document.querySelectorAll('.__ce-overlay').forEach(function(el) { el.remove(); }); 3354 3355 overlayEl = document.createElement('div'); 3356 overlayEl.className = '__ce-overlay'; 3357 overlayEl.style.cssText = [ 3358 'position:fixed', 'inset:0', 'z-index:9000', 3359 'background:rgba(0,0,0,0.55)', 3360 'opacity:0', 3361 'transition:opacity ' + FADE_MS + 'ms ease', 3362 'cursor:pointer', 3363 ].join(';'); 3364 overlayEl.addEventListener('click', collapse); 3365 document.body.appendChild(overlayEl); 3366 requestAnimationFrame(function() { 3367 if (overlayEl) overlayEl.style.opacity = '1'; 3368 }); 3369 } 3370 3371 function hideOverlay() { 3372 if (!overlayEl) return; 3373 var el = overlayEl; 3374 overlayEl = null; 3375 // Kill pointer events immediately â stops the overlay blocking clicks during fade-out. 3376 el.style.pointerEvents = 'none'; 3377 el.style.opacity = '0'; 3378 // Use setTimeout as a guaranteed removal â transitionend won't fire if opacity 3379 // was already 0 (user clicked before the rAF in showOverlay had a chance to run). 3380 setTimeout(function() { el.remove(); }, FADE_MS + 20); 3381 } 3382 3383 // ââ Expand ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3384 // 3385 // Phase 1 fade out card text blocks 3386 // Phase 2 move popup into modal, animate modal from card â full size 3387 // Phase 3 fade in popup content children 3388 3389 function expand(card) { 3390 if (activeCard) return; 3391 var popup = card.querySelector(POPUP_SEL); 3392 if (!popup) return; 3393 3394 activeCard = card; 3395 activePopup = popup; 3396 3397 var cardRect = card.getBoundingClientRect(); 3398 pauseAllScrollTracks(); 3399 showOverlay(); 3400 3401 // Phase 1: fade out card text blocks.
3402 Array.from(card.querySelectorAll(BLOCK_SEL)).forEach(function(b) { 3403 b.style.transition = 'opacity ' + FADE_MS + 'ms ease'; 3404 b.style.opacity = '0'; 3405 }); 3406 3407 setTimeout(function() { startExpand(card, popup, cardRect); }, FADE_MS); 3408 } 3409 3410 function startExpand(card, popup, cardRect) { 3411 var tw = window.innerWidth; // 100vw 3412 var tl = 0; 3413 var h = window.innerHeight; // 100svh â content scrolls inside 3414 var tt = 0; 3415 var mh = h; 3416 3417 // Ensure canvas is at the exact final size (may already be from hover pre-size). 3418 gSetSize(tw, h); 3419 3420 // Pre-hide popup content children â they fade in after expand completes. 3421 Array.from(popup.querySelectorAll(CONTENT_SEL)).forEach(function(el) { 3422 el.style.transition = 'none'; 3423 el.style.opacity = '0'; 3424 }); 3425 3426 // Move popup into modal. Sits above gradient canvas (z:1). 3427 // Must set top/left to auto â Bricks CSS has top:-9999px; left:-9999px which 3428 // apply as offsets when position switches from fixed â relative. 3429 popup.style.display = ''; 3430 popup.style.position = 'relative'; 3431 popup.style.top = 'auto'; 3432 popup.style.left = 'auto'; 3433 popup.style.zIndex = '1'; 3434 modalEl.appendChild(popup); 3435 3436 document.body.style.overflow = 'hidden'; 3437 3438 // Snap modal to card position (bring on-screen, enable events, no transition). 3439 // 3440 // Corner strategy: clip-path on the modal handles the *container* clip. 3441 // Each canvas element also gets its own border-radius that animates in sync 3442 // with the modal's clip-path. A canvas's own border-radius is applied to its 3443 // rendered output before compositing, so it works even when the canvas is 3444 // promoted to its own GPU layer â the root cause of "corners escaping" when 3445 // only a parent clip-path is used. 3446 modalEl.style.pointerEvents = 'auto'; 3447 modalEl.style.top = cardRect.top + 'px'; 3448 modalEl.style.left = cardRect.left + 'px'; 3449 modalEl.style.width = cardRect.width + 'px'; 3450 modalEl.style.height = cardRect.height + 'px'; 3451 modalEl.style.maxHeight = mh + 'px'; 3452 modalEl.style.overflow = 'hidden'; 3453 modalEl.style.borderRadius = ''; 3454 modalEl.style.clipPath = 'inset(0 round ' + CARD_RADIUS + 'px)'; 3455 modalEl.style.transition = 'none'; 3456 3457 // Snap canvas corners to card radius â must match modal's starting clip-path. 3458 gCanvas.style.transition = 'none'; 3459 gCanvas.style.borderRadius = CARD_RADIUS + 'px'; 3460 dCanvas.style.transition = 'none'; 3461 dCanvas.style.borderRadius = CARD_RADIUS + 'px'; 3462 3463 requestAnimationFrame(function() { 3464 requestAnimationFrame(function() { 3465 var bez = EXPAND_MS + 'ms cubic-bezier(0.4,0,0.2,1)'; 3466 modalEl.style.transition = [
3467 'width ' + bez, 3468 'height ' + bez, 3469 'left ' + bez, 3470 'top ' + bez, 3471 'clip-path ' + bez, 3472 ].join(', '); 3473 modalEl.style.width = tw + 'px'; 3474 modalEl.style.height = h + 'px'; 3475 modalEl.style.left = tl + 'px'; 3476 modalEl.style.top = tt + 'px'; 3477 modalEl.style.clipPath = 'inset(0 round ' + POPUP_RADIUS + 'px)'; 3478 3479 // Canvas border-radius animates CARD_RADIUS â POPUP_RADIUS alongside clip-path. 3480 var canvTrans = 'border-radius ' + bez; 3481 gCanvas.style.transition = canvTrans; 3482 gCanvas.style.borderRadius = POPUP_RADIUS + 'px'; 3483 dCanvas.style.transition = canvTrans; 3484 dCanvas.style.borderRadius = POPUP_RADIUS + 'px'; 3485 3486 modalEl.addEventListener('transitionend', onExpandDone, { once: true }); 3487 }); 3488 }); 3489 } 3490 3491 function onExpandDone() { 3492 // Pin to viewport height â content scrolls inside. 'auto' would shrink to content. 3493 modalEl.style.height = window.innerHeight + 'px'; 3494 modalEl.style.overflow = 'auto'; 3495 modalEl.style.transition = 'none'; 3496 // clip-path stays at inset(0 round 0px) â no further change needed until collapse. 3497 3498 // Clear canvas transitions; border-radius stays at 16px until startCollapse. 3499 gCanvas.style.transition = 'none'; 3500 dCanvas.style.transition = 'none'; 3501 3502 // Correct canvas to actual rendered modal size. May differ slightly from the 3503 // measured height (flex stretch, min-height, borders, etc.). 3504 gSetSize(modalEl.offsetWidth, modalEl.offsetHeight); 3505 3506 // Phase 3: fade in popup content children + close button. 3507 var popup = activePopup; 3508 if (popup) { 3509 var content = Array.from(popup.querySelectorAll(CONTENT_SEL)); 3510 content.forEach(function(el) { void el.offsetHeight; }); // commit opacity:0 3511 requestAnimationFrame(function() { 3512 content.forEach(function(el) { 3513 el.style.transition = 'opacity ' + (FADE_MS * 2) + 'ms ease'; 3514 el.style.opacity = '1'; 3515 }); 3516 // Close button fades in with the content. 3517 closeBtnEl.style.opacity = '1'; 3518 }); 3519 } 3520 } 3521 3522 // ââ Collapse ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3523 // 3524 // Phase 1 fade out popup content 3525 // Phase 2 animate modal from full size â card position 3526 // Phase 3 return popup to card, fade card text back in 3527 3528 function collapse() { 3529 if (!activePopup) return; 3530 hideOverlay(); 3531 3532 // Phase 1: fade out popup content + close button together. 3533 Array.from(activePopup.querySelectorAll(CONTENT_SEL)).forEach(function(el) { 3534 el.style.transition = 'opacity ' + FADE_MS + 'ms ease'; 3535 el.style.opacity = '0'; 3536 }); 3537 closeBtnEl.style.opacity = '0'; 3538 3539 setTimeout(startCollapse, FADE_MS); 3540 } 3541 3542 function startCollapse() { 3543 var cardRect = activeCard.getBoundingClientRect(); 3544 var currentH = modalEl.getBoundingClientRect().height; 3545 3546 modalEl.style.height = currentH + 'px'; 3547 modalEl.style.overflow = 'hidden'; 3548 3549 requestAnimationFrame(function() { 3550 requestAnimationFrame(function() { 3551 var cbez = EXPAND_MS + 'ms cubic-bezier(0.4,0,0.2,1)'; 3552 modalEl.style.transition = [ 3553 'width ' + cbez, 3554 'height ' + cbez, 3555 'left ' + cbez, 3556 'top ' + cbez, 3557 'clip-path ' + cbez, 3558 ].join(', '); 3559 modalEl.style.width = cardRect.width + 'px'; 3560 modalEl.style.height = cardRect.height + 'px'; 3561 modalEl.style.left = cardRect.left + 'px'; 3562 modalEl.style.top = cardRect.top + 'px'; 3563 modalEl.style.clipPath = 'inset(0 round ' + CARD_RADIUS + 'px)'; 3564 3565 // Canvas shrinks in sync with the modal AND its own border-radius animates 3566 // POPUP_RADIUS â CARD_RADIUS to match the modal's clip-path. Animating the 3567 // canvas's own border-radius is the reliable fix for GPU-promoted layers 3568 // bypassing a parent's clip-path: the canvas clips its own output before 3569 // compositing, so rounded corners are guaranteed regardless of GPU layers. 3570 var canvasTrans = 'width ' + cbez + ', height ' + cbez + ', border-radius ' + cbez; 3571 gCanvas.style.transition = canvasTrans; 3572 gCanvas.style.width = cardRect.width + 'px'; 3573 gCanvas.style.height = cardRect.height + 'px'; 3574 gCanvas.style.borderRadius = CARD_RADIUS + 'px'; 3575 dCanvas.style.transition = canvasTrans; 3576 dCanvas.style.width = cardRect.width + 'px'; 3577 dCanvas.style.height = cardRect.height + 'px'; 3578 dCanvas.style.borderRadius = CARD_RADIUS + 'px'; 3579 3580 modalEl.addEventListener('transitionend', onCollapseShrinkDone, { once: true }); 3581 }); 3582 }); 3583 } 3584 3585 // Phase 2 of collapse: after the resize animation lands, fade the entire modal 3586 // (gradient canvas + any remaining content) to opacity 0 before parking it. 3587 // This prevents the abrupt "jump" of the canvas disappearing instantly. 3588 var COLLAPSE_FADE_MS = 280; 3589 3590 function onCollapseShrinkDone() { 3591 // Canvas transitions done â stop them before the opacity fade so they don't 3592 // interfere with the next gSetSize call that will resize them on next hover.
3593 gCanvas.style.transition = 'none'; 3594 dCanvas.style.transition = 'none'; 3595 modalEl.style.transition = 'opacity ' + COLLAPSE_FADE_MS + 'ms ease'; 3596 modalEl.style.opacity = '0'; 3597 setTimeout(onCollapseDone, COLLAPSE_FADE_MS + 20); 3598 } 3599 3600 function onCollapseDone() { 3601 var popup = activePopup; 3602 var card = activeCard; 3603 3604 // Return popup to its card. Bricks CSS position:fixed/-9999px takes back over. 3605 card.appendChild(popup); 3606 popup.style.cssText = 'display:none'; 3607 3608 // Park modal off-screen â canvas stays alive and warm inside. 3609 // Reset opacity, clip-path, and close button so the next open starts clean. 3610 closeBtnEl.style.opacity = '0'; 3611 modalEl.style.opacity = ''; 3612 modalEl.style.clipPath = ''; 3613 modalEl.style.pointerEvents = 'none'; 3614 modalEl.style.top = '-9999px'; 3615 modalEl.style.left = '-9999px'; 3616 modalEl.style.transition = 'none'; 3617 3618 document.body.style.overflow = ''; 3619 resumeAllScrollTracks(); 3620 activeCard = null; 3621 activePopup = null; 3622 lastHoveredWrapper = null; 3623 3624 // Phase 3: fade card text blocks back in. 3625 Array.from(card.querySelectorAll(BLOCK_SEL)).forEach(function(b) { 3626 b.style.transition = 'opacity ' + FADE_MS + 'ms ease'; 3627 b.style.opacity = '1'; 3628 b.addEventListener('transitionend', function() { 3629 b.style.transition = ''; 3630 b.style.opacity = ''; 3631 }, { once: true }); 3632 }); 3633 } 3634 3635 // ââ Keyboard ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3636 3637 document.addEventListener('keydown', function(e) { 3638 if (e.key === 'Escape' && activeCard) collapse(); 3639 }); 3640 3641 // ââ Init cards ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3642 3643 function initCard(card) { 3644 var popup = card.querySelector(POPUP_SEL); 3645 if (popup) popup.style.display = 'none'; 3646 card.style.cursor = 'pointer'; 3647 card.style.pointerEvents = 'auto'; 3648 } 3649 3650 document.querySelectorAll(CARD_SEL).forEach(initCard); 3651 3652 new MutationObserver(function(mutations) { 3653 mutations.forEach(function(m) { 3654 m.addedNodes.forEach(function(node) { 3655 if (!(node instanceof Element)) return; 3656 if (node.matches(CARD_SEL)) { initCard(node); return; } 3657 node.querySelectorAll(CARD_SEL).forEach(initCard); 3658 }); 3659 }); 3660 }).observe(document.body, { childList: true, subtree: true }); 3661 3662 // ââ Pointer events ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 3663 // Capture phase so the scroll slider can't intercept. 3664 3665 var downX = 0, downY = 0, downCard = null; 3666 3667 document.addEventListener('pointerdown', function(e) { 3668 downCard = e.target.closest ? e.target.closest(CARD_SEL) : null; 3669 if (!downCard && e.target.matches && e.target.matches(WRAPPER_SEL)) { 3670 downCard = e.target.querySelector(CARD_SEL); 3671 } 3672 downX = e.clientX; 3673 downY = e.clientY; 3674 }, { capture: true, passive: true }); 3675 3676document.addEventListener('pointerup', function(e) { 3677 if (!downCard || activeCard) { 3678 downCard = null; 3679 return; 3680 } 3681 3682 // If the horizontal slider has identified this interaction 3683 // as a swipe, do not open the popup. 3684 var scrollingContainer = downCard.closest 3685 ? downCard.closest('.horizontal-scrolling-elements') 3686 : null; 3687 3688 if ( 3689 scrollingContainer && 3690 scrollingContainer.dataset.horizontalDragging === '1' 3691 ) { 3692 downCard = null; 3693 return; 3694 } 3695 3696 var dx = Math.abs(e.clientX - downX); 3697 var dy = Math.abs(e.clientY - downY); 3698 3699 if (dx < TAP_THRESHOLD && dy < TAP_THRESHOLD) { 3700 expand(downCard); 3701 } 3702 3703 downCard = null; 3704}, { capture: true }); 3705 3706 } // end main() 3707})(); 3708</script>
3708<style> 3709 .horizontal-marquee { 3710 overflow: hidden; 3711 position: relative; 3712 width: 100%; 3713 } 3714 3715 .horizontal-marquee-track { 3716 display: flex; 3717 width: max-content; 3718 will-change: transform; 3719 } 3720 3721 .horizontal-marquee-track.scrolling { 3722 animation: horizontal-marquee-scroll var(--marquee-duration, 20s) linear infinite; 3723 } 3724 3725 .horizontal-marquee-track.scrolling[data-direction="right"] { 3726 animation-name: horizontal-marquee-scroll-right; 3727 } 3728 3729 .horizontal-marquee-track > * { 3730 flex-shrink: 0; 3731 } 3732 3733 @keyframes horizontal-marquee-scroll { 3734 0% { 3735 transform: translateX(0); 3736 } 3737 100% { 3738 transform: translateX(calc(var(--marquee-set-width) * -1)); 3739 } 3740 } 3741 3742 @keyframes horizontal-marquee-scroll-right { 3743 0% { 3744 transform: translateX(calc(var(--marquee-set-width) * -1)); 3745 } 3746 100% { 3747 transform: translateX(0); 3748 } 3749 } 3750</style>
3751<script> 3752 (function() { 3753 /** 3754 * Horizontal Marquee 3755 * 3756 * Usage: 3757 * <div class="horizontal-marquee" data-direction="left" data-gap="24" data-speed="1"> 3758 * <div>Item 1</div> 3759 * <div>Item 2</div> 3760 * <div>Item 3</div> 3761 * </div> 3762 * 3763 * Attributes: 3764 * data-direction â "left" (default) or "right" 3765 * data-gap â gap in px between items (default: 0) 3766 * data-speed â multiplier: 1 = default, 2 = twice as fast, 0.5 = half, etc. 3767 * 3768 * Multiple instances are fully supported â each .horizontal-marquee on the 3769 * page gets its own independent HorizontalMarquee instance. 3770 */ 3771 3772 class HorizontalMarquee { 3773 constructor(el) { 3774 this.container = el; 3775 this.direction = el.dataset.direction || "left"; 3776 this.gap = parseFloat(el.dataset.gap) || 0; 3777 this.speed = parseFloat(el.dataset.speed) || 1; 3778 this.track = null; 3779 3780 // Snapshot the original children before we touch the DOM 3781 this.originalItems = Array.from(el.children); 3782 if (this.originalItems.length === 0) return; 3783 3784 this._build(); 3785 3786 // Each instance gets its own debounced resize handler 3787 this._onResize = HorizontalMarquee._debounce(() => this._rebuild(), 300); 3788 window.addEventListener("resize", this._onResize); 3789 } 3790 3791 /* ------------------------------------------------------------------ */ 3792 /* Build / rebuild */ 3793 /* ------------------------------------------------------------------ */ 3794 3795 _build() { 3796 // 1. Create the track wrapper 3797 this.track = document.createElement("div"); 3798 this.track.classList.add("horizontal-marquee-track"); 3799 this.track.dataset.direction = this.direction; 3800 this.track.style.gap = `${this.gap}px`; 3801 3802 // 2. Move originals into the track (keeps references intact) 3803 this.originalItems.forEach((item) => this.track.appendChild(item)); 3804 this.container.appendChild(this.track); 3805 3806 // 2b. Force-load any lazy images on originals too 3807 this.originalItems.forEach((item) => this._fixLazyImages(item)); 3808 3809 // 3. Measure one full set *after* the items are in the document flow 3810 // so percentages / flex / responsive sizing are resolved. 3811 const setWidth = this._measureSetWidth(); 3812 3813 // 4. Work out how many full duplicate sets we need. 3814 // We need enough cloned content to fill the viewport so the 3815 // loop-reset is never visible. 3816 const viewportWidth = this.container.offsetWidth; 3817 const clonesNeeded = Math.max(1, Math.ceil(viewportWidth / setWidth)); 3818 3819 for (let c = 0; c < clonesNeeded; c++) { 3820 this.originalItems.forEach((item) => { 3821 const clone = item.cloneNode(true); 3822 clone.setAttribute("aria-hidden", "true"); 3823 this._fixLazyImages(clone); 3824 this.track.appendChild(clone); 3825 }); 3826 } 3827 3828 // 5. Tell CSS how far one set is 3829 this.track.style.setProperty("--marquee-set-width", `${setWidth}px`); 3830 3831 // 6. Duration = distance / speed. Base rate: 50 px/s. 3832 const basePxPerSecond = 50; 3833 const duration = setWidth / (basePxPerSecond * this.speed); 3834 this.track.style.setProperty("--marquee-duration", `${duration}s`); 3835 3836 // 7. Force a reflow before adding the class so the browser picks up 3837 // the new custom-property values before the animation starts. 3838 void this.track.offsetWidth; 3839 this.track.classList.add("scrolling"); 3840 } 3841 3842 _rebuild() { 3843 if (!this.track) return; 3844 3845 // Pull originals back into the container (out of the track) 3846 this.originalItems.forEach((item) => this.container.appendChild(item)); 3847 this.track.remove(); 3848 this.track = null; 3849 3850 // Rebuild â children will be measured at their new natural size 3851 this._build(); 3852 } 3853 3854 /* ------------------------------------------------------------------ */ 3855 /* Lazy-load fixes (Bricks / native) */ 3856 /* ------------------------------------------------------------------ */ 3857 3858 _fixLazyImages(node) { 3859 // Collect images from the node itself (if it's an img) and descendants 3860 const images = []; 3861 if (node.tagName === "IMG") images.push(node); 3862 images.push(...node.querySelectorAll("img")); 3863
3864 images.forEach((img) => { 3865 // 1. Switch native lazy loading to eager 3866 if (img.loading === "lazy") { 3867 img.loading = "eager"; 3868 } 3869 3870 // 2. Bricks / WP data-src â src swap 3871 if (img.dataset.src) { 3872 img.src = img.dataset.src; 3873 delete img.dataset.src; 3874 } 3875 3876 // 3. Bricks / WP data-srcset â srcset swap 3877 if (img.dataset.srcset) { 3878 img.srcset = img.dataset.srcset; 3879 delete img.dataset.srcset; 3880 } 3881 3882 // 4. Remove common lazy-load placeholder classes 3883 img.classList.remove("lazyload", "lazyloading", "lazy"); 3884 img.classList.add("lazyloaded"); 3885 }); 3886 3887 // Also handle <source> elements inside <picture> 3888 const sources = node.querySelectorAll("source[data-srcset]"); 3889 sources.forEach((source) => { 3890 source.srcset = source.dataset.srcset; 3891 delete source.dataset.srcset; 3892 }); 3893 } 3894 3895 /* ------------------------------------------------------------------ */ 3896 /* Measurement */ 3897 /* ------------------------------------------------------------------ */ 3898 3899 _measureSetWidth() { 3900 let totalWidth = 0; 3901 this.originalItems.forEach((item) => { 3902 // Use getBoundingClientRect for sub-pixel accuracy 3903 totalWidth += item.getBoundingClientRect().width; 3904 }); 3905 3906 // Each item is followed by a gap (flex gap applies between every 3907 // adjacent pair, including between the last clone of one set and the 3908 // first clone of the next), so each "set" contributes count à gap. 3909 totalWidth += this.originalItems.length * this.gap; 3910 return totalWidth; 3911 } 3912 3913 /* ------------------------------------------------------------------ */ 3914 /* Public helpers */ 3915 /* ------------------------------------------------------------------ */ 3916 3917 pause() { 3918 if (this.track) this.track.style.animationPlayState = "paused"; 3919 } 3920 3921 resume() { 3922 if (this.track) this.track.style.animationPlayState = "running"; 3923 } 3924 3925 destroy() { 3926 window.removeEventListener("resize", this._onResize); 3927 if (this.track) { 3928 this.originalItems.forEach((item) => this.container.appendChild(item)); 3929 this.track.remove(); 3930 this.track = null; 3931 } 3932 delete this.container._horizontalMarqueeInstance; 3933 } 3934 3935 /* ------------------------------------------------------------------ */ 3936 /* Static utilities */ 3937 /* ------------------------------------------------------------------ */ 3938 3939 static _debounce(fn, ms) { 3940 let timer; 3941 return (...args) => { 3942 clearTimeout(timer); 3943 timer = setTimeout(() => fn(...args), ms); 3944 }; 3945 } 3946 } 3947 3948 /* -------------------------------------------------------------------- */ 3949 /* Auto-init */ 3950 /* -------------------------------------------------------------------- */ 3951 3952 function initHorizontalMarquees() { 3953 document.querySelectorAll(".horizontal-marquee").forEach((el) => { 3954 // Guard: skip elements that are already initialised 3955 if (!el._horizontalMarqueeInstance) { 3956 el._horizontalMarqueeInstance = new HorizontalMarquee(el); 3957 } 3958 }); 3959 } 3960 3961 // Run now or when the DOM is ready 3962 if (document.readyState === "loading") { 3963 document.addEventListener("DOMContentLoaded", initHorizontalMarquees); 3964 } else { 3965 initHorizontalMarquees(); 3966 } 3967 })() 3968</script>
3968<script>/** 3969 * Infinite Horizontal Scroll - Elements 3970 * Automatically scrolls child elements horizontally if they overflow the container. 3971 * Stops scrolling and shows static elements if they fit within the viewport. 3972 * Supports multiple instances on the same page. 3973 * Handles Bricks Builder lazy loading for nested images. 3974 * Designed for testimonial cards, feature boxes, or any div-based content. 3975 * 3976 * MOBILE DRAG: touch pointers can grab the (auto-scrolling) track and drag it 3977 * horizontally. Desktop behavior (constant-speed auto-scroll, hover-to-pause) 3978 * is untouched - drag only activates for pointerType === 'touch'. 3979 */ 3980(function() { 3981 'use strict'; 3982 3983 // Configuration 3984 const CONFIG = { 3985 containerSelector: '.horizontal-scrolling-elements', 3986 scrollSpeed: 30, // Pixels per second (constant speed regardless of content width) 3987 debounceDelay: 150, // Resize debounce delay in ms 3988 dragClickThreshold: 6 // px of movement before a touch counts as a drag (vs a tap/click) 3989 }; 3990 3991 document.querySelectorAll('.horizontal-scrolling-block img[data-size]').forEach(function(img) { 3992 img.style.width = img.dataset.size; 3993 }); 3994 3995 // Store all instances 3996 const instances = []; 3997 3998 /** 3999 * Fix Bricks lazy loading on an element and all its children 4000 * Swaps data-src to src, data-srcset to srcset, removes bricks-lazy-hidden 4001 */ 4002 function fixBricksLazyLoad(element) { 4003 // Fix the element itself if it has the class 4004 element.classList.remove('bricks-lazy-hidden'); 4005 4006 // Find all lazy-loaded images within the element 4007 const lazyImages = element.querySelectorAll('img[data-src], img.bricks-lazy-hidden'); 4008 lazyImages.forEach(img => { 4009 // Swap data-src to src 4010 if (img.dataset.src) { 4011 img.src = img.dataset.src; 4012 img.removeAttribute('data-src'); 4013 } 4014 4015 // Swap data-srcset to srcset 4016 if (img.dataset.srcset) { 4017 img.srcset = img.dataset.srcset; 4018 img.removeAttribute('data-srcset'); 4019 } 4020 4021 // Swap data-sizes to sizes 4022 if (img.dataset.sizes) { 4023 img.sizes = img.dataset.sizes; 4024 img.removeAttribute('data-sizes'); 4025 } 4026 4027 // Remove lazy hidden class 4028 img.classList.remove('bricks-lazy-hidden'); 4029 }); 4030 4031 // Also remove bricks-lazy-hidden from any nested divs 4032 const lazyDivs = element.querySelectorAll('.bricks-lazy-hidden'); 4033 lazyDivs.forEach(div => { 4034 div.classList.remove('bricks-lazy-hidden'); 4035 }); 4036 } 4037 4038 /** 4039 * Read the current translateX (px) applied to an element, whether it's 4040 * coming from an inline style or a running CSS animation. 4041 */ 4042 function getTranslateX(el) { 4043 const style = window.getComputedStyle(el); 4044 const transform = style.transform; 4045 if (!transform || transform === 'none') return 0; 4046 4047 // matrix(a, b, c, d, tx, ty) 4048 const matrixMatch = transform.match(/^matrix\(([^)]+)\)$/); 4049 if (matrixMatch) { 4050 const parts = matrixMatch[1].split(',').map(v => parseFloat(v.trim())); 4051 return parts[4] || 0; 4052 } 4053 4054 // matrix3d(...) - tx is the 13th value 4055 const matrix3dMatch = transform.match(/^matrix3d\(([^)]+)\)$/); 4056 if (matrix3dMatch) { 4057 const parts = matrix3dMatch[1].split(',').map(v => parseFloat(v.trim())); 4058 return parts[12] || 0; 4059 } 4060 4061 return 0; 4062 } 4063 4064 /** 4065 * ScrollInstance class - manages a single scroll container 4066 */ 4067 class ScrollInstance { 4068 constructor(container, index) { 4069 this.container = container; 4070 this.index = index; 4071 this.originalElements = []; 4072 this.isScrolling = false; 4073 this.scrollWrapper = null; 4074 this.animationName = `elementScroll-${index}`; 4075 this.gap = 0; 4076 4077 // Drag state 4078 this.scrollDistance = 0; // width (px) of one full content loop, incl. trailing gap 4079 this.duration = 0; // seconds for one full loop at CONFIG.scrollSpeed 4080 this.dragState = null; // active drag tracking, null when not dragging 4081 this.dragJustHappened = false; // suppresses the click that follows a drag 4082 4083 this.init(); 4084 } 4085 4086 init() { 4087 // Get only direct children that aren't the scroll wrapper or clones 4088 this.originalElements = Array.from(this.container.children).filter(el => { 4089 return !el.classList.contains('element-scroll-wrapper') && 4090 !el.classList.contains('element-clone'); 4091 }); 4092 4093 if (this.originalElements.length === 0) { 4094 console.warn(`Horizontal scroll instance ${this.index}: No elements found`); 4095 return; 4096 } 4097 4098 // Fix lazy loading on original elements first
4099 this.originalElements.forEach(el => { 4100 fixBricksLazyLoad(el); 4101 }); 4102 4103 // Wait for images to load before calculating dimensions 4104 this.waitForImages().then(() => { 4105 this.setupContainer(); 4106 this.calculateGap(); 4107 this.checkAndToggleScroll(); 4108 }); 4109 } 4110 4111 waitForImages() { 4112 // Find all images in original elements 4113 const allImages = []; 4114 this.originalElements.forEach(el => { 4115 const images = el.querySelectorAll('img'); 4116 images.forEach(img => allImages.push(img)); 4117 }); 4118 4119 const imagePromises = allImages.map(img => { 4120 if (img.complete && img.naturalWidth > 0) return Promise.resolve(); 4121 return new Promise(resolve => { 4122 img.addEventListener('load', resolve); 4123 img.addEventListener('error', resolve); 4124 }); 4125 }); 4126 4127 return Promise.all(imagePromises); 4128 } 4129 4130 setupContainer() { 4131 this.container.style.overflow = 'hidden'; 4132 this.container.style.position = 'relative'; 4133 this.container.style.touchAction = 'pan-y'; 4134 if (window.matchMedia('(hover: hover)').matches) { 4135 this.setupHoverPause(); 4136 } 4137 this.setupDragging(); 4138 } 4139 4140 /** 4141 * Pause the scroll animation while the pointer is hovering over 4142 * any of the elements inside the slider, and resume it on leave. 4143 * 4144 * card-expand.js stamps data-ce-paused="1" on the scrollWrapper when a 4145 * card popup is open so that the overlay triggering a spurious mouseleave 4146 * event here doesn't accidentally resume a scroll we explicitly paused. 4147 * Both enter and leave bail out if that flag is present. We also bail 4148 * out while a touch drag is in progress (data-dragging). 4149 */ 4150 setupHoverPause() { 4151 this.container.addEventListener('mouseenter', () => { 4152 if (this.isScrolling && this.scrollWrapper && !this.scrollWrapper.dataset.cePaused && !this.scrollWrapper.dataset.dragging) { 4153 this.scrollWrapper.style.animationPlayState = 'paused'; 4154 } 4155 }); 4156 4157 this.container.addEventListener('mouseleave', () => { 4158 if (this.isScrolling && this.scrollWrapper && !this.scrollWrapper.dataset.cePaused && !this.scrollWrapper.dataset.dragging) { 4159 this.scrollWrapper.style.animationPlayState = 'running'; 4160 } 4161 }); 4162 } 4163 setupDragging() { 4164 this.container.addEventListener('pointerdown', (e) => this.onDragStart(e)); 4165 this.container.addEventListener('pointermove', (e) => this.onDragMove(e)); 4166 this.container.addEventListener('pointerup', (e) => this.onDragEnd(e)); 4167 this.container.addEventListener('pointercancel', (e) => this.onDragEnd(e)); 4168 4169 window.addEventListener('blur', () => { 4170 this.cleanupDrag(); 4171 }); 4172 4173 document.addEventListener('visibilitychange', () => { 4174 if (document.hidden) { 4175 this.cleanupDrag(); 4176 } 4177 }); 4178 4179 this.container.addEventListener('click', (e) => { 4180 if (this.dragJustHappened) { 4181 e.preventDefault(); 4182 e.stopPropagation(); 4183 this.dragJustHappened = false; 4184 } 4185 }, true); 4186 } 4187 4188onDragStart(e) { 4189 if (e.pointerType !== 'touch') return; 4190 if (!this.isScrolling || !this.scrollWrapper) return; 4191 4192 this.dragState = { 4193 pointerId: e.pointerId, 4194 startX: e.clientX, 4195 startY: e.clientY, 4196 startTranslate: null, 4197 moved: false, 4198 dragging: false 4199 }; 4200} 4201 4202 onDragMove(e) { 4203 if (!this.dragState || e.pointerId !== this.dragState.pointerId) return; 4204 4205 const deltaX = e.clientX - this.dragState.startX; 4206 const deltaY = e.clientY - this.dragState.startY; 4207 4208 // Wait until the finger has moved far enough to determine 4209 // whether this is a tap, horizontal swipe, or vertical scroll. 4210 if (!this.dragState.moved) { 4211 4212 if ( 4213 Math.abs(deltaX) <= CONFIG.dragClickThreshold && 4214 Math.abs(deltaY) <= CONFIG.dragClickThreshold 4215 ) { 4216 return; 4217 } 4218 4219 // Vertical movement belongs to the page. 4220 if (Math.abs(deltaY) > Math.abs(deltaX)) { 4221 this.cleanupDrag(); 4222 return; 4223 } 4224 4225 // We now know this is a horizontal swipe. 4226 this.dragState.moved = true; 4227 this.dragState.dragging = true; 4228 4229 // Tell the popup script that this interaction is a drag. 4230 this.container.dataset.horizontalDragging = '1'; 4231 4232 // Freeze the current animation position. 4233 this.dragState.startTranslate = getTranslateX(this.scrollWrapper); 4234
4235 this.scrollWrapper.style.animation = 'none'; 4236 this.scrollWrapper.style.transform = 4237 `translateX(${this.dragState.startTranslate}px)`; 4238 4239 this.scrollWrapper.dataset.dragging = '1'; 4240 4241 try { 4242 this.container.setPointerCapture(e.pointerId); 4243 } catch (err) {} 4244 } 4245 4246 if (!this.dragState.dragging) return; 4247 4248 e.preventDefault(); 4249 4250 let translateX = 4251 this.dragState.startTranslate + deltaX; 4252 4253 if (this.scrollDistance > 0) { 4254 while (translateX > 0) { 4255 translateX -= this.scrollDistance; 4256 } 4257 4258 while (translateX <= -this.scrollDistance) { 4259 translateX += this.scrollDistance; 4260 } 4261 } 4262 4263 this.scrollWrapper.style.transform = 4264 `translateX(${translateX}px)`; 4265} 4266 4267onDragEnd(e) { 4268 if (!this.dragState || e.pointerId !== this.dragState.pointerId) return; 4269 4270 try { 4271 this.container.releasePointerCapture(e.pointerId); 4272 } catch (err) {} 4273 4274 this.cleanupDrag(); 4275} 4276 4277 cleanupDrag() { 4278 if (!this.dragState) return; 4279 4280 const wasDragging = this.dragState.dragging; 4281 4282 this.dragState = null; 4283 4284 delete this.container.dataset.horizontalDragging; 4285 4286 if (this.scrollWrapper) { 4287 delete this.scrollWrapper.dataset.dragging; 4288 } 4289 4290 if (wasDragging && this.isScrolling) { 4291 this.resumeAutoScrollFromCurrentPosition(); 4292 } 4293} 4294 4295 resumeAutoScrollFromCurrentPosition() { 4296 if (!this.scrollWrapper || !this.isScrolling || this.scrollDistance <= 0) return; 4297 4298 let currentX = getTranslateX(this.scrollWrapper); 4299 4300 // Normalize into (-scrollDistance, 0] 4301 while (currentX > 0) currentX -= this.scrollDistance; 4302 while (currentX <= -this.scrollDistance) currentX += this.scrollDistance; 4303 4304 const fraction = (-currentX) / this.scrollDistance; // 0 .. 1 4305 const delay = -(fraction * this.duration); 4306 4307 this.scrollWrapper.style.transform = ''; 4308 this.scrollWrapper.style.animation = `${this.animationName} ${this.duration}s linear infinite`; 4309 this.scrollWrapper.style.animationDelay = `${delay}s`; 4310 this.scrollWrapper.style.animationPlayState = 'running'; 4311} 4312 4313 calculateGap() { 4314 if (this.originalElements.length >= 2) { 4315 const firstEl = this.originalElements[0]; 4316 const secondEl = this.originalElements[1]; 4317 const firstRect = firstEl.getBoundingClientRect(); 4318 const secondRect = secondEl.getBoundingClientRect(); 4319 this.gap = secondRect.left - firstRect.right; 4320 4321 // Fallback if gap calculation fails 4322 if (this.gap <= 0 || isNaN(this.gap)) { 4323 const computedStyle = window.getComputedStyle(this.container); 4324 const cssGap = parseFloat(computedStyle.gap) || 0; 4325 this.gap = cssGap > 0 ? cssGap : 24; // Default to 24px for cards 4326 } 4327 } else { 4328 this.gap = 24; 4329 } 4330 } 4331 4332 calculateOriginalWidth() { 4333 let totalWidth = 0; 4334 4335 this.originalElements.forEach((el, index) => { 4336 totalWidth += el.offsetWidth; 4337 if (index < this.originalElements.length - 1) { 4338 totalWidth += this.gap; 4339 } 4340 }); 4341 4342 return totalWidth; 4343 } 4344 4345 /** 4346 * Calculate animation duration based on content width and desired speed 4347 * Duration = Distance / Speed 4348 */ 4349 calculateDuration(scrollDistance) { 4350 return scrollDistance / CONFIG.scrollSpeed; 4351 } 4352 4353 checkAndToggleScroll() { 4354 // Recalculate gap in case CSS changed 4355 this.calculateGap(); 4356 4357 const containerWidth = this.container.offsetWidth; 4358 const contentWidth = this.calculateOriginalWidth(); 4359 const needsScroll = contentWidth > containerWidth; 4360 4361 if (needsScroll && !this.isScrolling) { 4362 this.enableScroll(); 4363 } else if (!needsScroll && this.isScrolling) { 4364 this.disableScroll(); 4365 } 4366 } 4367 4368 enableScroll() { 4369 this.isScrolling = true; 4370 4371 if (!this.scrollWrapper) { 4372 this.scrollWrapper = document.createElement('div'); 4373 this.scrollWrapper.className = 'element-scroll-wrapper'; 4374 4375 // Move original elements into wrapper
4376 this.originalElements.forEach(el => { 4377 this.scrollWrapper.appendChild(el); 4378 }); 4379 4380 this.container.appendChild(this.scrollWrapper); 4381 } 4382 4383 // Clear any existing clones 4384 const existingClones = this.scrollWrapper.querySelectorAll('.element-clone'); 4385 existingClones.forEach(clone => clone.remove()); 4386 4387 // Calculate how many sets of duplicates we need 4388 const containerWidth = this.container.offsetWidth; 4389 const contentWidth = this.calculateOriginalWidth() + this.gap; 4390 const duplicateSets = Math.ceil(containerWidth / contentWidth) + 1; 4391 4392 // Create duplicate sets for seamless looping 4393 for (let set = 0; set < duplicateSets; set++) { 4394 this.originalElements.forEach(el => { 4395 const clone = el.cloneNode(true); 4396 clone.classList.add('element-clone'); 4397 4398 // Remove any IDs from clones to avoid duplicates 4399 clone.removeAttribute('id'); 4400 clone.querySelectorAll('[id]').forEach(child => child.removeAttribute('id')); 4401 4402 // Remove blank canvas copies â they have no pixel data and would sit 4403 // underneath the fresh canvases that script.js injects on init. 4404 // gradient-section class is intentionally kept so the MutationObserver 4405 // in script.js initialises a real gradient on each visible clone. 4406 clone.querySelectorAll('canvas').forEach(c => c.remove()); 4407 4408 // Fix Bricks lazy loading on the clone 4409 fixBricksLazyLoad(clone); 4410 4411 this.scrollWrapper.appendChild(clone); 4412 }); 4413 } 4414 4415 // Calculate scroll distance and duration 4416 const scrollDistance = this.calculateOriginalWidth() + this.gap; 4417 const duration = this.calculateDuration(scrollDistance); 4418 4419 // Keep these on the instance so drag handlers can use them 4420 this.scrollDistance = scrollDistance; 4421 this.duration = duration; 4422 4423 this.updateKeyframes(scrollDistance); 4424 4425 // Apply scroll styles 4426 this.scrollWrapper.style.display = 'flex'; 4427 this.scrollWrapper.style.alignItems = 'stretch'; 4428 this.scrollWrapper.style.width = 'max-content'; 4429 this.scrollWrapper.style.animation = `${this.animationName} ${duration}s linear infinite`; 4430 4431 // Update container classes 4432 this.container.classList.add('is-scrolling'); 4433 this.container.classList.remove('is-static'); 4434 } 4435 4436 updateKeyframes(scrollDistance) { 4437 let styleEl = document.getElementById(`element-scroll-keyframes-${this.index}`); 4438 4439 if (!styleEl) { 4440 styleEl = document.createElement('style'); 4441 styleEl.id = `element-scroll-keyframes-${this.index}`; 4442 document.head.appendChild(styleEl); 4443 } 4444 4445 styleEl.textContent = ` 4446 @keyframes ${this.animationName} { 4447 0% { transform: translateX(0); } 4448 100% { transform: translateX(-${scrollDistance}px); } 4449 } 4450 `; 4451 } 4452 4453 disableScroll() { 4454 this.isScrolling = false; 4455 4456 if (this.scrollWrapper) { 4457 const clones = this.scrollWrapper.querySelectorAll('.element-clone'); 4458 clones.forEach(clone => clone.remove()); 4459 4460 // Reset wrapper styles 4461 this.scrollWrapper.style.display = 'flex'; 4462 this.scrollWrapper.style.alignItems = 'stretch'; 4463 this.scrollWrapper.style.justifyContent = 'center'; 4464 this.scrollWrapper.style.width = '100%';
4465 this.scrollWrapper.style.animation = 'none'; 4466 this.scrollWrapper.style.animationDelay = ''; 4467 this.scrollWrapper.style.transform = ''; 4468 } 4469 4470 this.scrollDistance = 0; 4471 this.duration = 0; 4472 4473 // Update container classes 4474 this.container.classList.remove('is-scrolling'); 4475 this.container.classList.add('is-static'); 4476 } 4477 } 4478 4479 /** 4480 * Initialize all scroll containers 4481 */ 4482 function initAll() { 4483 const containers = document.querySelectorAll(CONFIG.containerSelector); 4484 4485 if (containers.length === 0) { 4486 console.warn('Horizontal scroll elements: No containers found'); 4487 return; 4488 } 4489 4490 containers.forEach((container, index) => { 4491 instances.push(new ScrollInstance(container, index)); 4492 }); 4493 4494 setupResizeListener(); 4495 } 4496 4497 /** 4498 * Debounced resize handler for all instances 4499 */ 4500 function setupResizeListener() { 4501 let resizeTimeout; 4502 4503 window.addEventListener('resize', () => { 4504 clearTimeout(resizeTimeout); 4505 resizeTimeout = setTimeout(() => { 4506 instances.forEach(instance => { 4507 instance.checkAndToggleScroll(); 4508 }); 4509 }, CONFIG.debounceDelay); 4510 }); 4511 } 4512 4513 // Initialize when DOM is ready 4514 if (document.readyState === 'loading') { 4515 document.addEventListener('DOMContentLoaded', initAll); 4516 } else { 4517 initAll(); 4518 } 4519 })();</script>
4519<link rel='stylesheet' id='bricks-splide-css' href='https://www.upwind.io/wp-content/themes/bricks/assets/css/libs/splide-layer.min.css?ver=1768493258' media='all' />
4520<script id="gform_placeholder-js" defer='defer' src="https://www.upwind.io/wp-content/plugins/gravityforms/js/placeholders.jquery.min.js?ver=2.9.25"></script>
vendor: 1 bytes, line 4520
4520
4521<script id="gform_gravityforms_theme_vendors-js" defer='defer' src="https://www.upwind.io/wp-content/plugins/gravityforms/assets/js/dist/vendor-theme.min.js?ver=4f8b3915c1c1e1a6800825abd64b03cb"></script>
vendor: 1 bytes, line 4521
4521
4522<script id="gform_gravityforms_theme-js-extra"> 4523var gform_theme_config = {"common":{"form":{"honeypot":{"version_hash":"7dd2df01a27a3c2bd2ae02705b85e76d"},"ajax":{"ajaxurl":"https://www.upwind.io/wp-admin/admin-ajax.php","ajax_submission_nonce":"0a3fb80653","i18n":{"step_announcement":"Step %1$s of %2$s, %3$s","unknown_error":"There was an unknown error processing your request. Please try again."}}}},"hmr_dev":"","public_path":"https://www.upwind.io/wp-content/plugins/gravityforms/assets/js/dist/","config_nonce":"d295e1377a"}; 4524//# sourceURL=gform_gravityforms_theme-js-extra 4525</script>
vendor: 1 bytes, line 4525
4525
4526<script id="gform_gravityforms_theme-js" defer='defer' src="https://www.upwind.io/wp-content/plugins/gravityforms/assets/js/dist/scripts-theme.min.js?ver=244d9e312b90e462b62b2d9b9d415753"></script>
vendor: 1 bytes, line 4526
4526
4527<script id="ee-ff-js-extra"> 4528var formFilter = {"ajax":"https://www.upwind.io/wp-admin/admin-ajax.php","list":"https://www.upwind.io/wp-content/uploads/ee-form-filter/black-list.json","errors":"{\"not-email\":\"An Email Address needs an @\",\"disposable\":\"The email address you provided shows up on known disposable email lists. Please try a different one.\",\"first-last\":\"The first name and last name must be different\",\"name-number\":\"A name cannot contain a number\",\"one-char\":\"A name cannot be just one character\",\"two-char\":\"A name cannot be 2 characters that are the same letter or both vowels\",\"profanity\":\"Profanity is not allowed\",\"personal\":\"Please use a business email.\",\"invalid\":\"This is not a valid email address\",\"server\":\"The server cannot be reached\"}"}; 4529//# sourceURL=ee-ff-js-extra 4530</script>
vendor: 1 bytes, line 4530
4530
4531<script id="ee-ff-js" src="https://www.upwind.io/wp-content/plugins/form-filtering-plugin/assets/app.js?ver=1790240990"></script>
vendor: 1 bytes, line 4531
4531
4532<script id="leadin-script-loader-js-js-extra"> 4533var leadin_wordpress = {"userRole":"visitor","pageType":"home","leadinPluginVersion":"11.3.37"}; 4534//# sourceURL=leadin-script-loader-js-js-extra 4535</script>
vendor: 1 bytes, line 4535
4535
4536<script id="leadin-script-loader-js-js" src="https://js-na2.hs-scripts.com/242450885.js?integration=WordPress&ver=11.3.37"></script>
vendor: 1 bytes, line 4536
4536
4537<script id="upwind-chat-js-js" src="https://www.upwind.io/wp-content/plugins/upwind/chat/chat.js?ver=1.1.2"></script>
vendor: 1 bytes, line 4537
4537
4538<script id="sharethis-js" src="https://platform-api.sharethis.com/js/sharethis.js?ver=1.0.0#property=64bfcba499ed020012e4a161&product=sop"></script>
vendor: 1 bytes, line 4538
4538
4539<script id="up-js-js" src="https://www.upwind.io/wp-content/plugins/upwind/upwind.js?ver=7.0.5"></script>
vendor: 1 bytes, line 4539
4539
4540<script id="up-marquee-widget-js" src="https://www.upwind.io/wp-content/plugins/upwind/uw-marquee.js?ver=7.0.5"></script>
vendor: 1 bytes, line 4540
4540
4541<script id="bricks-scripts-js-extra"> 4542var bricksData = {"debug":"","locale":"en_US","ajaxUrl":"https://www.upwind.io/wp-admin/admin-ajax.php","restApiUrl":"https://www.upwind.io/wp-json/bricks/v1/","nonce":"7a2777d9a9","formNonce":"1ad51ad6ad","wpRestNonce":"823f3cba2d","postId":"22323","recaptchaIds":[],"animatedTypingInstances":[],"videoInstances":[],"splideInstances":[],"tocbotInstances":[],"swiperInstances":[],"queryLoopInstances":[],"interactions":[],"filterInstances":[],"isotopeInstances":[],"activeFiltersCountInstances":[],"googleMapInstances":[],"facebookAppId":"","headerPosition":"top","offsetLazyLoad":"300","baseUrl":"https://www.upwind.io/","useQueryFilter":"1","pageFilters":[],"language":"","wpmlUrlFormat":"","multilangPlugin":"","i18n":{"remove":"Remove","openAccordion":"Open accordion","openMobileMenu":"Open mobile menu","closeMobileMenu":"Close mobile menu","showPassword":"Show password","hidePassword":"Hide password","prevSlide":"Previous slide","nextSlide":"Next slide","firstSlide":"Go to first slide","lastSlide":"Go to last slide","slideX":"Go to slide %s","play":"Start autoplay","pause":"Pause autoplay","splide":{"carousel":"carousel","select":"Select a slide to show","slide":"slide","slideLabel":"%1$s of %2$s"},"swiper":{"slideLabelMessage":"{{index}} / {{slidesLength}}"},"noLocationsFound":"No locations found","locationTitle":"Location title","locationSubtitle":"Location subtitle","locationContent":"Location content"},"selectedFilters":[],"filterNiceNames":[],"bricksGoogleMarkerScript":"https://www.upwind.io/wp-content/themes/bricks/assets/js/libs/bricks-google-marker.min.js?v=2.1.4","infoboxScript":"https://www.upwind.io/wp-content/themes/bricks/assets/js/libs/infobox.min.js?v=2.1.4","markerClustererScript":"https://www.upwind.io/wp-content/themes/bricks/assets/js/libs/markerclusterer.min.js?v=2.1.4","mainQueryId":""}; 4543//# sourceURL=bricks-scripts-js-extra 4544</script>
vendor: 1 bytes, line 4544
4544
4545<script id="bricks-scripts-js" src="https://www.upwind.io/wp-content/themes/bricks/assets/js/bricks.min.js?ver=1768493258"></script>
vendor: 1 bytes, line 4545
4545
4546<script id="bricks-splide-js" src="https://www.upwind.io/wp-content/themes/bricks/assets/js/libs/splide.min.js?ver=4.1.4"></script>
vendor: 1 bytes, line 4546
4546
4547<script id="wp-emoji-settings" type="application/json"> 4548{"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://www.upwind.io/wp-includes/js/wp-emoji-release.min.js?ver=7.0.5"}} 4549</script>
vendor: 1 bytes, line 4549
4549
4550<script type="module"> 4551/*! This file is auto-generated */ 4552var 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)))}); 4553//# sourceURL=https://www.upwind.io/wp-includes/js/wp-emoji-loader.min.js 4554</script>
vendor: 1 bytes, line 4554
4554
4555<script> 4556document.addEventListener('DOMContentLoaded', () => { 4557 document.querySelectorAll('.brxe-button, .bricks-button').forEach(btn => { 4558 if (!btn.dataset.text) { 4559 if (btn.tagName === 'INPUT') { 4560 btn.dataset.text = btn.value; 4561 } else { 4562 if ( btn.innerHTML.includes('svg') ) { 4563 const newSpan = document.createElement('span'); 4564 newSpan.className = 'hover-content'; 4565 newSpan.innerHTML = btn.innerHTML.trim(); 4566 btn.append(newSpan); 4567 } else { 4568 btn.dataset.text = btn.innerHTML.trim(); 4569 } 4570 } 4571 } 4572 }); 4573}); 4574</script>
4574 4575
4576<script> 4577function slideToggleAccordian(brxParam) { 4578 const target = brxParam?.target || false 4579 4580 if ( target ) { 4581 slideToggle(target); 4582 } 4583} 4584 4585function slideToggle(target) { 4586 const el = target; 4587 const duration = 300; 4588 4589 // Prevent double-trigger during animation 4590 if (el.classList.contains('sliding')) return; 4591 el.classList.add('sliding'); 4592 4593 const isHidden = window.getComputedStyle(el).display === 'none'; 4594 4595 if (isHidden) { 4596 // SLIDE DOWN 4597 el.style.removeProperty('display'); 4598 let display = window.getComputedStyle(el).display; 4599 if (display === 'none') display = 'block'; 4600 el.style.display = display; 4601 4602 const height = el.scrollHeight; 4603 4604 el.style.overflow = 'hidden'; 4605 el.style.height = '0px'; 4606 el.style.transition = `height ${duration}ms ease`; 4607 4608 // Force reflow 4609 el.offsetHeight; 4610 4611 el.style.height = height + 'px'; 4612 4613 setTimeout(() => { 4614 el.style.removeProperty('height'); 4615 el.style.removeProperty('overflow'); 4616 el.style.removeProperty('transition'); 4617 el.classList.remove('sliding'); 4618 }, duration); 4619 } else { 4620 // SLIDE UP 4621 const height = el.scrollHeight; 4622 4623 el.style.height = height + 'px'; 4624 el.style.overflow = 'hidden'; 4625 el.style.transition = `height ${duration}ms ease`; 4626 4627 // Force reflow 4628 el.offsetHeight; 4629 4630 el.style.height = '0px'; 4631 4632 setTimeout(() => { 4633 el.style.display = 'none'; 4634 el.style.removeProperty('height'); 4635 el.style.removeProperty('overflow'); 4636 el.style.removeProperty('transition'); 4637 el.classList.remove('sliding'); 4638 }, duration); 4639 } 4640} 4641 4642// When opening the menu 4643let dodge_menu_open = false; 4644function toggleMenu() { 4645 if ( dodge_menu_open == false ) { 4646 const scrollY = window.scrollY; 4647 document.body.style.position = 'fixed'; 4648 document.body.style.top = `-${scrollY}px`; 4649 document.body.style.width = '100%'; 4650 dodge_menu_open = true; 4651 } else { 4652 const scrollY = document.body.style.top; 4653 document.body.style.position = ''; 4654 document.body.style.top = ''; 4655 document.body.style.width = ''; 4656 window.scrollTo(0, parseInt(scrollY || '0') * -1); 4657 dodge_menu_open = false; 4658 } 4659} 4660 4661 4662 4663function removeLeadingArrayFromAll(selector) { 4664 document.querySelectorAll(selector).forEach(el => { 4665 if (!el.firstChild) return; 4666 4667 if ( 4668 el.firstChild.nodeType === Node.TEXT_NODE && 4669 el.firstChild.textContent.trim().startsWith('Array') 4670 ) { 4671 el.firstChild.textContent = 4672 el.firstChild.textContent.replace(/^Arrays*/i, ''); 4673 } 4674 }); 4675} 4676 4677// usage 4678removeLeadingArrayFromAll('.elementor-shortcode'); 4679 4680window.goToPrevSlide = function(sliderId) { 4681 const splideInstance = window.bricksData.splideInstances[sliderId]; 4682 4683 if (splideInstance) { 4684 splideInstance.go( '<' ); 4685 } else { 4686 console.error('Splide instance not found for ID:', sliderId); 4687 } 4688} 4689window.goToNextSlide = function(sliderId) { 4690 const splideInstance = window.bricksData.splideInstances[sliderId]; 4691 4692 if (splideInstance) { 4693 splideInstance.go( '>' ); 4694 } else { 4695 console.error('Splide instance not found for ID:', sliderId); 4696 } 4697} 4698</script>
4698 4699 4700 4701 4702 4703 4704
4705<script> 4706// for videos with class ".play-on-scroll" to wait to play until they are in view 4707 document.addEventListener('DOMContentLoaded', () => { 4708 // Select all videos inside Bricks elements with the 'play-on-scroll' class 4709 const videos = document.querySelectorAll('.play-on-scroll video'); 4710 4711 if (videos.length === 0) { 4712 return; 4713 } 4714 4715 const observerOptions = { 4716 root: null, 4717 // Triggers when the top of the video is 30% up from the bottom of the viewport 4718 // (If you meant 30% from the TOP of the screen, change this to: '-30% 0px 0px 0px') 4719 rootMargin: '0px 0px -50% 0px', 4720 threshold: 0 // Triggers the exact moment a single pixel crosses the rootMargin line 4721 }; 4722 4723 const videoObserver = new IntersectionObserver((entries, observer) => { 4724 entries.forEach(entry => { 4725 if (entry.isIntersecting) { 4726 const video = entry.target; 4727 4728 // Ensure Bricks settings are enforced for autoplay policies 4729 video.muted = true; 4730 video.playsInline = true; 4731 4732 // Force play 4733 const playPromise = video.play(); 4734 if (playPromise !== undefined) { 4735 playPromise.catch(error => { 4736 console.error('Video play failed:', error); 4737 }); 4738 } 4739 4740 // Stop observing once it has played 4741 observer.unobserve(video); 4742 } 4743 }); 4744 }, observerOptions); 4745 4746 videos.forEach(video => { 4747 videoObserver.observe(video); 4748 }); 4749 }); 4750</script>
4750 4751 4752
4753<script> 4754// Enable grabbing and scrolling for horizontal-scrolling-images sections like testimonials 4755document.addEventListener('DOMContentLoaded', () => { 4756 const sliders = document.querySelectorAll('.horizontal-scrolling-elements'); 4757 4758 sliders.forEach(slider => { 4759 let isDown = false; 4760 let startX; 4761 let scrollLeft; 4762 4763 slider.addEventListener('mousedown', (e) => { 4764 isDown = true; 4765 slider.classList.add('is-dragging'); 4766 startX = e.pageX - slider.offsetLeft; 4767 scrollLeft = slider.scrollLeft; 4768 }); 4769 4770 slider.addEventListener('mouseleave', () => { 4771 isDown = false; 4772 slider.classList.remove('is-dragging'); 4773 }); 4774 4775 slider.addEventListener('mouseup', () => { 4776 isDown = false; 4777 slider.classList.remove('is-dragging'); 4778 }); 4779 4780 slider.addEventListener('mousemove', (e) => { 4781 if (!isDown) return; 4782 e.preventDefault(); 4783 const x = e.pageX - slider.offsetLeft; 4784 4785 const walk = (x - startX); 4786 slider.scrollLeft = scrollLeft - walk; 4787 }); 4788 }); 4789}); 4790</script>
vendor: 1 bytes, line 4790
4790
4791<script> 4792(function () { 4793 var SELECTOR = ".topbar-text-container"; 4794 var styleEl = null; 4795 var originalContent = null; 4796 4797 function injectStyles() { 4798 if (styleEl) return; 4799 styleEl = document.createElement("style"); 4800 styleEl.textContent = 4801 ".topbar-text-container.marquee-active {" + 4802 " overflow: hidden;" + 4803 " white-space: nowrap;" + 4804 " position: relative;" + 4805 "}" + 4806 ".topbar-text-container.marquee-active .marquee-track {" + 4807 " display: inline-flex;" + 4808 " white-space: nowrap;" + 4809 " animation: marquee-scroll linear infinite;" + 4810 "}" + 4811 ".topbar-text-container.marquee-active .marquee-segment {" + 4812 " display: inline-flex;" + 4813 " flex-shrink: 0;" + 4814 " column-gap: 24px;" + 4815 " padding-right: 4rem;" + 4816 "}" + 4817 "@keyframes marquee-scroll {" + 4818 " 0% { transform: translateX(0); }" + 4819 " 100% { transform: translateX(-50%); }" + 4820 "}"; 4821 document.head.appendChild(styleEl); 4822 } 4823 4824 function checkMarquee() { 4825 var container = document.querySelector(SELECTOR); 4826 if (!container) return; 4827 4828 var viewportWidth = window.innerWidth; 4829 var isActive = container.classList.contains("marquee-active"); 4830 4831 // If currently a marquee, restore original content to re-measure 4832 if (isActive) { 4833 deactivateMarquee(container); 4834 } 4835 4836 // Save original content before first modification 4837 if (!originalContent) { 4838 originalContent = Array.from(container.childNodes).map(function (node) { 4839 return node.cloneNode(true); 4840 }); 4841 } 4842 4843 // Measure natural width 4844 container.style.overflow = "visible"; 4845 container.style.whiteSpace = "nowrap"; 4846 var contentWidth = container.scrollWidth; 4847 container.style.overflow = ""; 4848 container.style.whiteSpace = ""; 4849 4850 if (contentWidth > viewportWidth) { 4851 activateMarquee(container, contentWidth); 4852 } 4853 } 4854 4855 function activateMarquee(container, contentWidth) { 4856 if (container.classList.contains("marquee-active")) return; 4857 4858 injectStyles(); 4859 4860 // Build track with two identical segments for seamless infinite loop 4861 var track = document.createElement("div"); 4862 track.className = "marquee-track"; 4863 4864 var segment1 = document.createElement("div"); 4865 segment1.className = "marquee-segment"; 4866 4867 var segment2 = document.createElement("div"); 4868 segment2.className = "marquee-segment"; 4869 4870 // Clone the original child nodes (divs, spans, links, etc.) into both segments 4871 originalContent.forEach(function (node) { 4872 segment1.appendChild(node.cloneNode(true)); 4873 segment2.appendChild(node.cloneNode(true)); 4874 }); 4875 4876 track.appendChild(segment1); 4877 track.appendChild(segment2); 4878 4879 // Clear container and insert the track 4880 while (container.firstChild) { 4881 container.removeChild(container.firstChild); 4882 } 4883 container.appendChild(track); 4884 container.classList.add("marquee-active"); 4885 4886 // Speed: lower = slower scroll. 30px/s is gentle. 4887 var speed = 30; 4888 var duration = contentWidth / speed; 4889 track.style.animationDuration = duration + "s"; 4890 } 4891 4892 function deactivateMarquee(container) { 4893 container.classList.remove("marquee-active"); 4894 4895 // Restore original child nodes 4896 while (container.firstChild) { 4897 container.removeChild(container.firstChild); 4898 } 4899 4900 if (originalContent) { 4901 originalContent.forEach(function (node) { 4902 container.appendChild(node.cloneNode(true)); 4903 }); 4904 } 4905 } 4906 4907 // --- Init --- 4908 var resizeTimer; 4909 window.addEventListener("resize", function () { 4910 clearTimeout(resizeTimer); 4911 resizeTimer = setTimeout(checkMarquee, 150); 4912 }); 4913 4914 if (document.readyState === "loading") { 4915 document.addEventListener("DOMContentLoaded", checkMarquee); 4916 } else { 4917 checkMarquee(); 4918 } 4919})(); 4920</script>
vendor: 1 bytes, line 4920
4920
4921<script id="wp-emoji-settings" type="application/json"> 4922{"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://www.upwind.io/wp-includes/js/wp-emoji-release.min.js?ver=7.0.5"}} 4923</script>
vendor: 1 bytes, line 4923
4923
4924<script type="module"> 4925/*! This file is auto-generated */ 4926var 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)))}); 4927//# sourceURL=https://www.upwind.io/wp-includes/js/wp-emoji-loader.min.js 4928</script>
vendor: 1 bytes, line 4928
4928
4929<script> 4930(function($) { 4931 4932 const observer = new IntersectionObserver(function(entries, observer) { 4933 entries.forEach((entry) => { 4934 if ( entry.intersectionRatio > 0 && ! entry.target.classList.contains('active') ) { 4935 $(entry.target).addClass('active'); 4936 4937 4938 } 4939 }); 4940 }, { 4941 rootMargin: "-50px", 4942 }); 4943 let all = document.querySelectorAll(".underline-gradient") 4944 document.querySelectorAll('.underline-gradient').forEach((i) => { 4945 observer.observe(i); 4946}); 4947 4948})(jQuery); 4949</script>
4949 4950
4951<script> 4952document.addEventListener("DOMContentLoaded", function(){ 4953 4954 let elements = document.getElementsByTagName('lottie-player'); 4955 4956 for (var i = 0; i < elements.length; i++) { 4957 4958 elements[i].addEventListener('play', (event) => { 4959 // console.log(event.target.shadowRoot.querySelector('svg').style.transform); 4960 event.target.shadowRoot.querySelector('svg').style.transform = ''; 4961 }); 4962 elements[i].play(); // trigger (again) 4963 4964 } 4965}); 4966</script>
vendor: 1 bytes, line 4966
4966
4967<script> 4968(function($) { 4969 4970 $('a').each(function($el) { 4971 if ( this.href.indexOf("upwind.io") == -1 ) { 4972 $(this).attr('target', '_blank'); 4973 $(this).attr('rel', 'noreferrer noopener'); 4974 } 4975 }); 4976 4977})(jQuery); 4978</script>
4978 4979<style> 4980 .upwind-animation-video-container { 4981 position: relative; 4982 } 4983 .upwind-animation-video { 4984 position: relative; 4985 aspect-ratio: 16 / 9; 4986 height: auto; 4987 width: 100%; 4988 } 4989 .upwind-animation-video-loop { 4990 position: absolute; 4991 aspect-ratio: 16 / 9; 4992 height: auto; 4993 width: 100%; 4994 left: 0; 4995 top: 0; 4996 opacity: 0; 4997 visibility: hidden; 4998 } 4999</style>
5000<script> 5001 document.querySelectorAll('.upwind-animation-video').forEach(function(el) { 5002 const video = el; 5003 5004 if ( el.hasAttribute('data-loop') ) { 5005 5006 const loop_video = el.nextElementSibling; 5007 let looping = false; 5008 5009 video.addEventListener('ended', () => { 5010 if (!looping) { 5011 console.log('start loop') 5012 loop_video.style.opacity = 1; 5013 loop_video.style.visibility = 'visible'; 5014 video.style.opacity = 0; 5015 video.style.visibility = 'hidden'; 5016 loop_video.currentTime = 0; 5017 loop_video.play(); 5018 } 5019 }); 5020 } else { 5021 video.addEventListener('ended', () => { 5022 video.pause(); 5023 video.currentTime = video.duration; // Ensure it's on the last frame 5024 }); 5025 } 5026 }); 5027</script>
vendor: 1 bytes, line 5027
5027
5028<script> 5029gform.initializeOnLoaded( function() { jQuery(document).on('gform_post_render', function(event, formId, currentPage){if(formId == 2) {if(typeof Placeholders != 'undefined'){ 5030 Placeholders.enable(); 5031 }} } );jQuery(document).on('gform_post_conditional_logic', function(event, formId, fields, isInit){} ) } ); 5032</script>
vendor: 1 bytes, line 5032
5032
5033<script> 5034gform.initializeOnLoaded( function() {jQuery(document).trigger("gform_pre_post_render", [{ formId: "2", currentPage: "1", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_2" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_2"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_2" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 2, 1 ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } ); 5035</script>
5035 5036</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.