1<!DOCTYPE html><!-- Last Published: Mon Sep 28 2026 10:15:41 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="high-eye-demo.webflow.io" data-wf-page="69f20b624ed4074851a494ce" data-wf-site="69f20b624ed4074851a494ef" lang="en"><head><meta charset="utf-8"/><link href="https://cdn.prod.website-files.com" rel="preconnect" crossorigin="anonymous"/><title>Contact High Eye for Airboxer System Information</title><meta content="Contact High Eye for technical information, system configuration, payload integration, demonstrations, training, procurement and operational support." name="description"/><meta content="Contact High Eye for Airboxer System Information" property="og:title"/><meta content="Contact High Eye for technical information, system configuration, payload integration, demonstrations, training, procurement and operational support." property="og:description"/><meta content="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/6a201e507625f3aa1c497777_OG.jpg" property="og:image"/><meta content="Contact High Eye for Airboxer System Information" name="twitter:title"/><meta content="Contact High Eye for technical information, system configuration, payload integration, demonstrations, training, procurement and operational support." name="twitter:description"/><meta property="og:type" content="website"/><meta content="summary_large_image" name="twitter:card"/><meta content="width=device-width, initial-scale=1" name="viewport"/><link href="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/css/high-eye-demo.shared.d82e71dfe.css" rel="stylesheet" type="text/css" integrity="sha384-2C5x3+H1DCYyWwVwF7JNF7TeR725/Q+8/fkDIyoBZJbWzEkbxYWTJ2aS1V4e3b+c" crossorigin="anonymous"/>
1<script type="text/javascript">!function(o,c){var n=c.documentElement,t=" w-mod-";n.className+=t+"js",("ontouchstart"in o||o.DocumentTouch&&c instanceof DocumentTouch)&&(n.className+=t+"touch")}(window,document);</script>
1<link href="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a49569_favicon_dark.png" rel="shortcut icon" type="image/x-icon"/><link href="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a49567_webclip.png" rel="apple-touch-icon"/><!-- Keep this css code to improve the font quality--> 2<style> 3 * { 4 -webkit-font-smoothing: antialiased; 5 -moz-osx-font-smoothing: grayscale; 6 -o-font-smoothing: antialiased; 7} 8</style> 9 10<!-- Finsweet Attributes -->
11<script async type="module" 12src="https://cdn.jsdelivr.net/npm/@finsweet/attributes@2/attributes.js" 13fs-list 14></script>
14 15 16<!-- Google Tag Manager -->
17<script>
vendor: 327 bytes, lines 17-21
17(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 18new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 19j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 20'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 21})(window,document,'script','dataLayer','
21GTM-5CDSFZBR
vendor: 3 bytes, line 21
21');
21</script>
21 22<!-- End Google Tag Manager --> 23</head><body><div class="global-styles"><div class="style-overrides w-embed"><style> 24 25/* Ensure all elements inherit the color from its parent */ 26a, 27.w-input, 28.w-select, 29.w-tab-link, 30.w-nav-link, 31.w-nav-brand, 32.w-dropdown-btn, 33.w-dropdown-toggle, 34.w-slider-arrow-left, 35.w-slider-arrow-right, 36.w-dropdown-link { 37 color: inherit; 38 text-decoration: inherit; 39 font-size: inherit; 40} 41 42/* Focus state style for keyboard navigation for the focusable elements */ 43*[tabindex]:focus-visible, 44 input[type="file"]:focus-visible { 45 outline: 0.125rem solid #4d65ff; 46 outline-offset: 0.125rem; 47} 48 49/* Get rid of top margin on first element in any rich text element */ 50.w-richtext > :not(div):first-child, .w-richtext > div:first-child > :first-child { 51 margin-top: 0 !important; 52} 53 54/* Get rid of bottom margin on last element in any rich text element */ 55.w-richtext>:last-child, .w-richtext ol li:last-child, .w-richtext ul li:last-child { 56 margin-bottom: 0 !important; 57} 58 59/* Prevent all click and hover interaction with an element */ 60.pointer-events-off { 61 pointer-events: none; 62} 63 64/* Enables all click and hover interaction with an element */ 65.pointer-events-on { 66 pointer-events: auto; 67} 68 69/* Create a class of .div-square which maintains a 1:1 dimension of a div */ 70.div-square::after { 71 content: ""; 72 display: block; 73 padding-bottom: 100%; 74} 75 76/* Make sure containers never lose their center alignment */ 77.container-medium,.container-small, .container-large { 78 margin-right: auto !important; 79 margin-left: auto !important; 80} 81 82 83/* Apply "..." after 3 lines of text */ 84.text-style-3lines { 85 display: -webkit-box; 86 overflow: hidden; 87 -webkit-line-clamp: 3; 88 -webkit-box-orient: vertical; 89} 90 91/* Apply "..." after 2 lines of text */ 92.text-style-2lines { 93 display: -webkit-box; 94 overflow: hidden; 95 -webkit-line-clamp: 2; 96 -webkit-box-orient: vertical; 97} 98 99/* Adds inline flex display */ 100.display-inlineflex { 101 display: inline-flex; 102} 103 104/* These classes are never overwritten */ 105.hide { 106 display: none !important; 107} 108 109/* Remove default Webflow chevron from form select */ 110select{ 111 -webkit-appearance:none; 112} 113 114 115@media screen and (max-width: 991px) { 116 .hide, .hide-tablet { 117 display: none !important; 118 } 119} 120 @media screen and (max-width: 767px) { 121 .hide-mobile-landscape{ 122 display: none !important; 123 } 124} 125 @media screen and (max-width: 479px) { 126 .hide-mobile{ 127 display: none !important; 128 } 129} 130 131.margin-0 { 132 margin: 0rem !important; 133} 134 135.padding-0 { 136 padding: 0rem !important; 137} 138 139.spacing-clean { 140padding: 0rem !important; 141margin: 0rem !important; 142} 143 144.margin-top { 145 margin-right: 0rem !important; 146 margin-bottom: 0rem !important; 147 margin-left: 0rem !important; 148} 149 150.padding-top { 151 padding-right: 0rem !important; 152 padding-bottom: 0rem !important; 153 padding-left: 0rem !important; 154} 155 156.margin-right { 157 margin-top: 0rem !important; 158 margin-bottom: 0rem !important; 159 margin-left: 0rem !important; 160} 161 162.padding-right { 163 padding-top: 0rem !important; 164 padding-bottom: 0rem !important; 165 padding-left: 0rem !important; 166} 167 168.margin-bottom { 169 margin-top: 0rem !important; 170 margin-right: 0rem !important; 171 margin-left: 0rem !important; 172} 173 174.padding-bottom { 175 padding-top: 0rem !important; 176 padding-right: 0rem !important; 177 padding-left: 0rem !important; 178} 179 180.margin-left { 181 margin-top: 0rem !important; 182 margin-right: 0rem !important; 183 margin-bottom: 0rem !important; 184} 185 186.padding-left { 187 padding-top: 0rem !important; 188 padding-right: 0rem !important; 189 padding-bottom: 0rem !important; 190} 191 192.margin-horizontal { 193 margin-top: 0rem !important; 194 margin-bottom: 0rem !important; 195} 196 197.padding-horizontal { 198 padding-top: 0rem !important; 199 padding-bottom: 0rem !important; 200} 201 202.margin-vertical { 203 margin-right: 0rem !important; 204 margin-left: 0rem !important; 205} 206 207.padding-vertical { 208 padding-right: 0rem !important; 209 padding-left: 0rem !important; 210} 211 212/* Apply "..." at 100% width */ 213.truncate-width { 214 width: 100%; 215 white-space: nowrap; 216 overflow: hidden; 217 text-overflow: ellipsis; 218} 219/* Removes native scrollbar */ 220.no-scrollbar {
221 -ms-overflow-style: none; 222 overflow: -moz-scrollbars-none; 223} 224 225.no-scrollbar::-webkit-scrollbar { 226 display: none; 227} 228 229/* text-rich-text ul */ 230.text-rich-text ul li { 231 list-style-image: url("https://cdn.prod.website-files.com/69f04eb2f7c38ecf12d995f2/69f05b9f9f54da01b9c38869_icon_unordered-list.svg"); 232} 233 234/* Filter Radio Buttons Finsweet */ 235.blog7_radio-button-field.is-list-active { 236 color: var(--_primitives---colors--white); 237} 238 239/* Case Studies Big Cards */ 240@media screen and (min-width: 992px) { 241 .blog44_big-cards .blog7_featured-item:nth-child(even) .blog7_featured-image-wrapper { 242 order: 2; 243 } 244} 245</style></div><div class="color-schemes w-embed"><style> 246/* Color Schemes Controls*/ 247<meta name="relume-color-schemes" content="false"/> 248 249 .color-scheme-1 { 250/*All sections should point to Color Scheme 1*/ 251 252 } 253 254 .color-scheme-2 { 255 --color-scheme-1--text: var(--color-scheme-2--text); 256 --color-scheme-1--background: var(--color-scheme-2--background); 257 --color-scheme-1--foreground: var(--color-scheme-2--foreground); 258 --color-scheme-1--border: var(--color-scheme-2--border); 259 --color-scheme-1--accent: var(--color-scheme-2--accent); 260 } 261 262 .color-scheme-3 { 263 --color-scheme-1--text: var(--color-scheme-3--text); 264 --color-scheme-1--background: var(--color-scheme-3--background); 265 --color-scheme-1--foreground: var(--color-scheme-3--foreground); 266 --color-scheme-1--border: var(--color-scheme-3--border); 267 --color-scheme-1--accent: var(--color-scheme-3--accent); 268 } 269 270 .color-scheme-4 { 271 --color-scheme-1--text: var(--color-scheme-4--text); 272 --color-scheme-1--background: var(--color-scheme-4--background); 273 --color-scheme-1--foreground: var(--color-scheme-4--foreground); 274 --color-scheme-1--border: var(--color-scheme-4--border); 275 --color-scheme-1--accent: var(--color-scheme-4--accent); 276 } 277 278 .color-scheme-5 { 279 --color-scheme-1--text: var(--color-scheme-5--text); 280 --color-scheme-1--background: var(--color-scheme-5--background); 281 --color-scheme-1--foreground: var(--color-scheme-5--foreground); 282 --color-scheme-1--border: var(--color-scheme-5--border); 283 --color-scheme-1--accent: var(--color-scheme-5--accent); 284 } 285 286 .color-scheme-6 { 287 --color-scheme-1--text: var(--color-scheme-6--text); 288 --color-scheme-1--background: var(--color-scheme-6--background); 289 --color-scheme-1--foreground: var(--color-scheme-6--foreground); 290 --color-scheme-1--border: var(--color-scheme-6--border); 291 --color-scheme-1--accent: var(--color-scheme-6--accent); 292 } 293 294 .color-scheme-7 { 295 --color-scheme-1--text: var(--color-scheme-7--text); 296 --color-scheme-1--background: var(--color-scheme-7--background); 297 --color-scheme-1--foreground: var(--color-scheme-7--foreground); 298 --color-scheme-1--border: var(--color-scheme-7--border); 299 --color-scheme-1--accent: var(--color-scheme-7--accent); 300 } 301 302 .color-scheme-8 { 303 --color-scheme-1--text: var(--color-scheme-8--text); 304 --color-scheme-1--background: var(--color-scheme-8--background); 305 --color-scheme-1--foreground: var(--color-scheme-8--foreground); 306 --color-scheme-1--border: var(--color-scheme-8--border); 307 --color-scheme-1--accent: var(--color-scheme-8--accent); 308 } 309 310 .color-scheme-9 { 311 --color-scheme-1--text: var(--color-scheme-9--text); 312 --color-scheme-1--background: var(--color-scheme-9--background); 313 --color-scheme-1--foreground: var(--color-scheme-9--foreground); 314 --color-scheme-1--border: var(--color-scheme-9--border); 315 --color-scheme-1--accent: var(--color-scheme-9--accent); 316 } 317 318 .color-scheme-10 { 319 --color-scheme-1--text: var(--color-scheme-10--text); 320 --color-scheme-1--background: var(--color-scheme-10--background); 321 --color-scheme-1--foreground: var(--color-scheme-10--foreground); 322 --color-scheme-1--border: var(--color-scheme-10--border); 323 --color-scheme-1--accent: var(--color-scheme-10--accent); 324 } 325 326/* Inherit slider dot colors */ 327.w-slider-dot { 328 background-color: var(--color-scheme-1--text); 329 opacity: 0.20; 330} 331 332.w-slider-dot.w-active { 333 background-color: var(--color-scheme-1--text); 334 opacity: 1; 335} 336 337/* Override .w-slider-nav-invert styles */ 338.w-slider-nav-invert .w-slider-dot { 339 background-color: var(--color-scheme-1--text) !important; 340 opacity: 0.20 !important; 341} 342 343.w-slider-nav-invert .w-slider-dot.w-active { 344 background-color: var(--color-scheme-1--text) !important; 345 opacity: 1 !important; 346} 347 348</style></div><div class="w-embed"><style> 349 350/* Characters */ 351.btn-animate-chars [data-button-animate-chars] { 352 overflow: hidden; 353 position: relative; 354 display: inline-block; 355} 356 357.btn-animate-chars [data-button-animate-chars] span { 358 display: inline-block; 359 position: relative; 360 text-shadow: 0px 1.3em currentColor; 361 transform: translateY(0em) rotate(0.001deg); 362 transition: transform 0.6s cubic-bezier(0.625, 0.05, 0, 1); 363} 364 365.btn-animate-chars:hover [data-button-animate-chars] span { 366 transform: translateY(-1.3em) rotate(0.001deg); 367} 368
369/* Background */ 370.btn-animate-chars__bg { 371 inset: 0; 372 transition: inset 0.6s cubic-bezier(0.625, 0.05, 0, 1); 373} 374 375.btn-animate-chars:hover .btn-animate-chars__bg { 376 inset: 0.125em; 377} 378 379</style></div><div class="w-embed"><style> 380 381[data-menu-wrap] { 382 --nav-height: 5.75rem; 383} 384 385/* Allow easier content editing when panel state is 'active' inside of the designer*/ 386.wf-design-mode [data-nav-content][data-panel-state="active"] { 387 opacity: 1; 388 visibility: visible; 389 pointer-events: auto; 390 position: relative; 391} 392 393.wf-design-mode [data-menu-open]:has( [data-nav-content][data-panel-state="active"]) [data-dropdown-bg] { 394 opacity: 1; 395 inset: 0; 396} 397 398.wf-design-mode [data-mobile-nav="active"] { 399 opacity: 1; 400 visibility: visible; 401} 402 403</style></div><div class="hide w-embed w-script"><link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin="" />
404<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
vendor: 1 bytes, line 404
404
405<script src="https://unpkg.com/leaflet-providers@latest/leaflet-providers.js"></script>
405 406 407<link rel="stylesheet" href="//unpkg.com/leaflet-gesture-handling/dist/leaflet-gesture-handling.min.css" type="text/css" />
408<script src="//unpkg.com/leaflet-gesture-handling"></script>
408 409<style> 410 #map { 411 height: 100%; 412 max-height: 100%; 413 z-index: 1; 414 415 @media screen and (max-width: 768px) { 416 width: 100%; 417 height: auto; 418 } 419 } 420 421 .leaflet-pane { 422 z-index: 1; 423 } 424 425 .leaflet-tile-pane { 426 filter: grayscale(100%); 427 } 428 429 .leaflet-top.leaflet-left { 430 display: none; 431 } 432 433 .leaflet-container a { 434 color: black; 435 } 436 437 .leaflet-control-attribution { 438 display: none; 439 } 440</style> 441
442<script> 443 // Wait for the DOM to be fully loaded 444 window.addEventListener('load', function () { 445 // Check if we have a map element 446 const mapElement = document.getElementById('map'); 447 if (!mapElement) { 448 return; 449 } 450 451 // Location 452 const lat = 51.77916538213603; 453 const lng = 4.6460148932625005; 454 455 // Initialize the Leaflet map 456 const map = L.map('map', { 457 gestureHandling: true, 458 zoomControl: false, 459 }).setView([lat, lng], 16); 460 461 // Add zoom control at bottom right 462 // L.control.zoom({ 463 // position: 'bottomright' 464 // }).addTo(map); 465 466 // Add OpenStreetMap tiles 467 L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { 468 attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors', 469 maxZoom: 16, 470 }).addTo(map); 471 472 // Define marker icon 473 const markerIcon = L.icon({ 474 iconUrl: 'https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/6a20116dd0c1e49dd802f5c7_marker_High%20Eye.svg ', 475 iconSize: [95, 51], 476 iconAnchor: [47, 51], // horizontal center, bottom edge 477 }); 478 479 // Add single marker at center of Netherlands 480 L.marker([lat, lng], { icon: markerIcon }).addTo(map); 481 }); 482</script>
482</div></div><div class="page-wrapper"><nav data-menu-open="false" data-menu-wrap="" class="mega-nav"><div class="mega-nav__bar"><div class="mega-nav__container"><div class="mega-nav__bar-start"><a data-menu-logo="" href="/" class="mega-nav__bar-logo w-inline-block"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a4956f_logo_Dark.svg" alt="" class="mega-nav__bar-logo-image"/></a><div data-nav-list="" data-mobile-nav="" class="mega-nav__bar-inner"><ul class="mega-nav__bar-list"><a aria-haspopup="true" data-dropdown-toggle="platform" aria-expanded="false" href="#" class="mega-nav__bar-link is--dropdown w-inline-block"><div class="mega-nav__bar-link-label">Platform</div><div class="mega-nav__bar-link-icon w-embed"><svg viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg"> 483<path d="M5.50977 5.48926C5.23633 5.73535 4.82617 5.73535 4.58008 5.48926L0.205078 1.11426C-0.0683594 0.868164 -0.0683594 0.430664 0.205078 0.18457C0.451172 -0.0615234 0.861328 -0.0615234 1.10742 0.18457L5.01758 4.09473L8.92773 0.18457C9.20117 -0.0615234 9.61133 -0.0615234 9.85742 0.18457C10.1309 0.458008 10.1309 0.868164 9.85742 1.11426L5.48242 5.48926H5.50977Z" fill="currentColor"/> 484</svg></div><div class="mega-nav_icon-mobile w-embed"><svg viewBox="0 0 6 11" fill="none" xmlns="http://www.w3.org/2000/svg"> 485<path d="M5.50977 4.55957C5.75586 4.80566 5.75586 5.24316 5.50977 5.48926L1.13477 9.86426C0.861328 10.1104 0.451172 10.1104 0.205078 9.86426C-0.0683594 9.61816 -0.0683594 9.18066 0.205078 8.93457L4.11523 5.02441L0.205078 1.11426C-0.0683594 0.868164 -0.0683594 0.458008 0.205078 0.18457C0.451172 -0.0615234 0.861328 -0.0615234 1.13477 0.18457L5.50977 4.55957Z" fill="currentColor"/> 486</svg></div></a><a aria-haspopup="true" data-dropdown-toggle="resources" aria-expanded="false" href="#" class="mega-nav__bar-link is--dropdown w-inline-block"><div class="mega-nav__bar-link-label">Resources</div><div class="mega-nav__bar-link-icon w-embed"><svg viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg"> 487<path d="M5.50977 5.48926C5.23633 5.73535 4.82617 5.73535 4.58008 5.48926L0.205078 1.11426C-0.0683594 0.868164 -0.0683594 0.430664 0.205078 0.18457C0.451172 -0.0615234 0.861328 -0.0615234 1.10742 0.18457L5.01758 4.09473L8.92773 0.18457C9.20117 -0.0615234 9.61133 -0.0615234 9.85742 0.18457C10.1309 0.458008 10.1309 0.868164 9.85742 1.11426L5.48242 5.48926H5.50977Z" fill="currentColor"/> 488</svg></div><div class="mega-nav_icon-mobile w-embed"><svg viewBox="0 0 6 11" fill="none" xmlns="http://www.w3.org/2000/svg"> 489<path d="M5.50977 4.55957C5.75586 4.80566 5.75586 5.24316 5.50977 5.48926L1.13477 9.86426C0.861328 10.1104 0.451172 10.1104 0.205078 9.86426C-0.0683594 9.61816 -0.0683594 9.18066 0.205078 8.93457L4.11523 5.02441L0.205078 1.11426C-0.0683594 0.868164 -0.0683594 0.458008 0.205078 0.18457C0.451172 -0.0615234 0.861328 -0.0615234 1.13477 0.18457L5.50977 4.55957Z" fill="currentColor"/> 490</svg></div></a><a aria-haspopup="true" data-dropdown-toggle="company" aria-expanded="false" href="#" class="mega-nav__bar-link is--dropdown w-inline-block"><div class="mega-nav__bar-link-label">Company</div><div class="mega-nav__bar-link-icon w-embed"><svg viewBox="0 0 11 6" fill="none" xmlns="http://www.w3.org/2000/svg"> 491<path d="M5.50977 5.48926C5.23633 5.73535 4.82617 5.73535 4.58008 5.48926L0.205078 1.11426C-0.0683594 0.868164 -0.0683594 0.430664 0.205078 0.18457C0.451172 -0.0615234 0.861328 -0.0615234 1.10742 0.18457L5.01758 4.09473L8.92773 0.18457C9.20117 -0.0615234 9.61133 -0.0615234 9.85742 0.18457C10.1309 0.458008 10.1309 0.868164 9.85742 1.11426L5.48242 5.48926H5.50977Z" fill="currentColor"/> 492</svg></div><div class="mega-nav_icon-mobile w-embed"><svg viewBox="0 0 6 11" fill="none" xmlns="http://www.w3.org/2000/svg"> 493<path d="M5.50977 4.55957C5.75586 4.80566 5.75586 5.24316 5.50977 5.48926L1.13477 9.86426C0.861328 10.1104 0.451172 10.1104 0.205078 9.86426C-0.0683594 9.61816 -0.0683594 9.18066 0.205078 8.93457L4.11523 5.02441L0.205078 1.11426C-0.0683594 0.868164 -0.0683594 0.458008 0.205078 0.18457C0.451172 -0.0615234 0.861328 -0.0615234 1.13477 0.18457L5.50977 4.55957Z" fill="currentColor"/> 494</svg></div></a></ul><ul data-nav-list-item="" class="mega-nav__bar-list is--actions"><a aria-label="staggering button" href="/contact" aria-current="page" class="btn-animate-chars is-icon w-inline-block w--current"><div class="btn-animate-chars__bg"></div><div class="icon-embed-xxsmall icon-button w-embed"><svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg"> 495<path d="M6.12467 0C2.73655 0 0 2.73923 0 6.13066C0 8.80467 1.71577 11.0656 4.12655 11.9135C3.73561 11.4569 3.47498 10.8482 3.47498 10.196C3.47498 8.76119 4.62607 7.58723 6.08123 7.58723C7.53638 7.58723 8.68747 8.73945 8.68747 10.196C8.68747 10.8917 8.40513 11.5222 7.97075 12.0004C10.4901 11.2395 12.2928 8.89163 12.2928 6.1524C12.2493 2.73923 9.49106 0 6.12467 0Z" fill="currentColor"/> 496</svg></div><span data-button-animate-chars="" class="btn-animate-chars__text">Contact Us</span></a></ul></div><div class="mega-nav__bar-end"><button data-burger-toggle="" aria-label="toggle menu" aria-expanded="false" class="mega-nav__burger"><span data-burger-line="top" class="mega-nav__burger-line"></span><span data-burger-line="mid" class="mega-nav__burger-line"></span><span data-burger-line="bot" class="mega-nav__burger-line"></span></button></div><div data-mobile-back="" class="mega-nav__back">
496<div class="mega-nav__bar-link-icon is--back w-embed"><svg width="8" height="13" viewBox="0 0 8 13" fill="none" xmlns="http://www.w3.org/2000/svg"> 497<path d="M0.263672 5.65234L5.88867 0.0273438C6.20508 -0.289062 6.73242 -0.289062 7.04883 0.0273438C7.40039 0.34375 7.40039 0.90625 7.04883 1.22266L2.02148 6.25L7.04883 11.2773C7.40039 11.5938 7.40039 12.1562 7.04883 12.4727C6.73242 12.7891 6.20508 12.7891 5.88867 12.4727L0.263672 6.84766C-0.0878906 6.53125 -0.0878906 5.96875 0.263672 5.65234Z" fill="currentColor"/> 498</svg></div><span class="mega-nav__bar-link-label">Back</span></div></div></div></div><div data-dropdown-wrapper="" class="mega-nav__dropdown-wrapper"><div data-dropdown-container="" class="mega-nav__dropdown-container"><div data-dropdown-bg="" class="mega-nav__dropdown-bg"></div><div data-panel-state="" data-nav-content="platform" role="region" aria-label="products menu" class="mega-nav__dropdown-panel"><div class="mega-nav__dropdown-inner"><div data-menu-fade="" class="mega-nav__panel-col first"><div class="heading-style-h5">Core Platform</div><div class="mega-nav__panel-list"><a href="/platform/airboxer-vtol" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Airboxer VTOL</span></a><a href="/platform/ground-control-and-equipment" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Ground Control & Equipment</span></a></div></div><div data-menu-fade="" class="mega-nav__panel-col"><div class="heading-style-h5">Platform Overview</div><div class="mega-nav__panel-list"><a href="/platform/applications" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Applications</span></a><a href="/platform/performance-and-specifications" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Performance & Specifications</span></a><a href="/platform/certification-and-compliance" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Certification & Compliance</span></a><a href="/platform/training-and-support" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Training & Support</span></a></div></div><div data-menu-fade="" class="mega-nav__panel-col is--colored"><div class="heading-style-h5">Get in Touch</div><div class="spacer-xsmall"></div><p class="text-size-regular">Speak with our team about the Airboxer platform and the right next step for your use case.</p><div class="spacer-xsmall"></div><div class="button-group"><a href="/contact" aria-current="page" class="button is-link is-icon w-inline-block w--current"><div>Contact Us</div><div class="icon-embed-xsmall icon-button w-embed"><svg width="16" height="12" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg"> 499<path d="M15.7812 6.52344L10.5312 11.7734C10.25 12.0547 9.78125 12.0547 9.46875 11.7734C9.1875 11.4922 9.1875 10.9922 9.46875 10.7109L13.4375 6.74219H0.75C0.34375 6.74219 0 6.39844 0 5.99219C0 5.58594 0.34375 5.24219 0.75 5.24219H13.4375L9.46875 1.27344C9.1875 0.992188 9.1875 0.492188 9.46875 0.210938C9.75 -0.0703125 10.25 -0.0703125 10.5312 0.210938L15.7812 5.46094C16.0625 5.74219 16.0625 6.24219 15.7812 6.52344Z" fill="currentColor"/> 500</svg></div></a></div><div class="spacer-large hide-tablet"></div><div class="mega-nav_image-wrapper hide-tablet"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a49570_nav_airboxer.png" alt="" class="mega-nav_image"/></div></div></div></div><div data-panel-state="" data-nav-content="resources" role="region" aria-label="products menu" class="mega-nav__dropdown-panel"><div class="mega-nav__dropdown-inner"><div data-menu-fade="" class="mega-nav__panel-col first"><div class="heading-style-h5">Proof & References</div><div class="mega-nav__panel-list"><a href="/resources/case-studies" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Case Studies</span></a><a href="/resources/customers-and-partners" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Customers & Partners</span></a></div></div><div data-menu-fade="" class="mega-nav__panel-col"><div class="heading-style-h5">Materials & Updates</div><div class="mega-nav__panel-list"><a href="/resources/downloads" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Downloads</span></a><a href="/resources/news-and-updates" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">News & Updates</span></a></div></div><div data-menu-fade="" class="mega-nav__panel-col is--colored"><div class="heading-style-h5">Case Studies</div><div class="spacer-xsmall"></div><p class="text-size-regular">Explore validated deployments across defense, maritime and critical service operations.</p><div class="spacer-xsmall"></div><div class="button-group"><a href="/resources/case-studies" class="button is-link is-icon w-inline-block"><div>View Case Studies</div><div class="icon-embed-xsmall icon-button w-embed"><svg width="16" height="12" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg"> 501<path d="M15.7812 6.52344L10.5312 11.7734C10.25 12.0547 9.78125 12.0547 9.46875 11.7734C9.1875 11.4922 9.1875 10.9922 9.46875 10.7109L13.4375 6.74219H0.75C0.34375 6.74219 0 6.39844 0 5.99219C0 5.58594 0.34375 5.24219 0.75 5.24219H13.4375L9.46875 1.27344C9.1875 0.992188 9.1875 0.492188 9.46875 0.210938C9.75 -0.0703125 10.25 -0.0703125 10.5312 0.210938L15.7812 5.46094C16.0625 5.74219 16.0625 6.24219 15.7812 6.52344Z" fill="currentColor"/> 502</svg></div></a></div><div class="spacer-large hide-tablet"></div><div class="mega-nav_image-wrapper hide-tablet"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a49570_
502nav_airboxer.png" alt="" class="mega-nav_image"/></div></div></div></div><div data-panel-state="" data-nav-content="company" role="region" aria-label="products menu" class="mega-nav__dropdown-panel"><div class="mega-nav__dropdown-inner"><div data-menu-fade="" class="mega-nav__panel-col first"><div class="heading-style-h5">About High Eye</div><div class="mega-nav__panel-list"><a href="/company/our-story" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Our Story</span></a><a href="/company/faq" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">FAQ</span></a></div></div><div data-menu-fade="" class="mega-nav__panel-col"><div class="heading-style-h5">Careers & Contact</div><div class="mega-nav__panel-list"><a href="/company/careers" class="mega-nav__panel-link w-inline-block"><span class="mega-nav__panel-link-text">Careers</span></a><a href="/contact" aria-current="page" class="mega-nav__panel-link w-inline-block w--current"><span class="mega-nav__panel-link-text">Contact</span></a></div></div><div data-menu-fade="" class="mega-nav__panel-col is--colored"><div class="heading-style-h5">Get in Touch</div><div class="spacer-xsmall"></div><p class="text-size-regular">Speak with our team about the Airboxer platform and the right next step for your use case.</p><div class="spacer-xsmall"></div><div class="button-group"><a href="/contact" aria-current="page" class="button is-link is-icon w-inline-block w--current"><div>Contact Us</div><div class="icon-embed-xsmall icon-button w-embed"><svg width="16" height="12" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg"> 503<path d="M15.7812 6.52344L10.5312 11.7734C10.25 12.0547 9.78125 12.0547 9.46875 11.7734C9.1875 11.4922 9.1875 10.9922 9.46875 10.7109L13.4375 6.74219H0.75C0.34375 6.74219 0 6.39844 0 5.99219C0 5.58594 0.34375 5.24219 0.75 5.24219H13.4375L9.46875 1.27344C9.1875 0.992188 9.1875 0.492188 9.46875 0.210938C9.75 -0.0703125 10.25 -0.0703125 10.5312 0.210938L15.7812 5.46094C16.0625 5.74219 16.0625 6.24219 15.7812 6.52344Z" fill="currentColor"/> 504</svg></div></a></div><div class="spacer-large hide-tablet"></div><div class="mega-nav_image-wrapper hide-tablet"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a49570_nav_airboxer.png" alt="" class="mega-nav_image"/></div></div></div></div></div></div><div data-menu-backdrop="" class="mega-nav__backdrop"></div></nav><main class="main-wrapper"><header class="section_contact1-header"><div class="padding-global z-index-1"><div class="container-large"><div class="padding-section-large top-nav"><div class="w-layout-grid contact1-header_component"><div class="contact1-header_content"><div class="max-width-medium"><div class="subtitle">Contact</div><div class="spacer-xxsmall"></div><h1 class="heading-style-h1">Get in touch with the High Eye team.</h1><div class="spacer-small"></div><p class="text-size-regular">Whether you need more information about the company, the Airboxer platform or a specific operational context, our team will be happy to help.</p><div class="spacer-small"></div><p class="text-size-small text-weight-semibold">We respond as soon as possible.</p></div></div><div class="contact1_form-wrapper"><div class="w-embed w-script"><!-- High Eye styled Zoho CRM Web-to-Lead form --> 505<div id="crmWebToEntityForm" class="crmWebToEntityForm contact1-header_form_component"> 506 <form 507 id="webform504947000000930382" 508 action="https://crm.zoho.eu/crm/WebToLeadForm" 509 name="WebToLeads504947000000930382" 510 method="POST" 511 class="contact1-header_form" 512 onsubmit='document.charset="UTF-8"; return checkMandatory504947000000930382()' 513 accept-charset="UTF-8" 514 > 515 <!-- Required Zoho fields: do not remove --> 516 <input type="text" style="display:none" name="xnQsjsdp" value="6d3dfc9109dcd3807be345838a1409bb431aa5ea1dad233509fbb582b52bbd20"> 517 <input type="hidden" name="zc_gad" id="zc_gad" value=""> 518 <input type="text" style="display:none" name="xmIwtLD" value="d1655cac507d1f5d0b78a127be89755d8842d7766023c1c10370e3edb153ce00fbe8d692a046814c37e220b9049e120f"> 519 <input type="text" style="display:none" name="actionType" value="TGVhZHM="> 520 <input type="text" style="display:none" name="returnURL" value="null"> 521 <input type="text" style="display:none" id="ldeskuid" name="ldesku
521id"> 522 <input type="text" style="display:none" id="LDTuvid" name="LDTuvid"> 523 524 <style> 525 /* Only small Zoho-specific additions; the main styling comes from High Eye's Webflow classes. */ 526 #crmWebToEntityForm, 527 #crmWebToEntityForm * { 528 box-sizing: border-box; 529 } 530 531 #crmWebToEntityForm { 532 width: 100%; 533 max-width: none; 534 color: inherit; 535 background: transparent; 536 text-align: left; 537 } 538 539 #crmWebToEntityForm .zoho-hidden { 540 display: none !important; 541 } 542 543 #crmWebToEntityForm .zoho-captcha-grid { 544 display: grid; 545 grid-template-columns: 1fr 1fr; 546 gap: 1.5rem; 547 align-items: end; 548 } 549 550 #crmWebToEntityForm .zoho-captcha-image-row { 551 display: flex; 552 align-items: center; 553 gap: 1rem; 554 min-height: 3.125rem; 555 } 556 557 #crmWebToEntityForm .zoho-captcha-image { 558 display: block; 559 max-width: 100%; 560 height: auto; 561 } 562 563 #crmWebToEntityForm .zoho-reload-link { 564 color: inherit; 565 text-decoration: underline; 566 } 567 568 #crmWebToEntityForm .zoho-privacy-row { 569 display: flex; 570 align-items: flex-start; 571 gap: .75rem; 572 } 573 574 #crmWebToEntityForm .zoho-checkbox { 575 appearance: none; 576 -webkit-appearance: none; 577 flex: 0 0 1.375rem; 578 width: 1.375rem; 579 height: 1.375rem; 580 min-width: 1.375rem; 581 margin: .1rem 0 0; 582 border: 1.5px solid rgba(255, 255, 255, .55) !important; 583 border-radius: 5px; 584 background: transparent !important; 585 cursor: pointer; 586 position: relative; 587 transition: 588 background-color .2s ease, 589 border-color .2s ease, 590 box-shadow .2s ease; 591 } 592 593 #crmWebToEntityForm .zoho-checkbox:hover { 594 border-color: rgba(255, 255, 255, .9) !important; 595 } 596 597 #crmWebToEntityForm .zoho-checkbox:checked { 598 background: #0279FF !important; 599 border-color: #0279FF !important; 600 background-image: none !important; 601 } 602 603 #crmWebToEntityForm .zoho-checkbox:checked::after { 604 content: ""; 605 position: absolute; 606 left: 7px; 607 top: 3px; 608 width: 5px; 609 height: 10px; 610 border: solid #ffffff; 611 border-width: 0 2px 2px 0; 612 transform: rotate(45deg); 613 } 614 615 #crmWebToEntityForm .zoho-checkbox:focus-visible { 616 outline: none; 617 box-shadow: 0 0 0 3px rgba(2, 121, 255, .28); 618 } 619 620 #crmWebToEntityForm .zoho-error { 621 visibility: hidden; 622 margin-top: .5rem; 623 color: #ff6b6b; 624 font-size: .875rem; 625 } 626 627 #crmWebToEntityForm .formsubmit[disabled] { 628 cursor: wait; 629 opacity: .6; 630 } 631 632 @media screen and (max-width: 767px) { 633 #crmWebToEntityForm .zoho-captcha-grid { 634 grid-template-columns: 1fr; 635 } 636 } 637 638.form_field-2col{ 639display:grid !important; 640grid-template-columns:1fr 1fr; 641gap:16px; 642width:100%; 643} 644@media(max-width:767px){ 645.form_field-2col{grid-template-columns:1fr;} 646} 647.form_field-2col .form_field-wrapper{ 648width:100%; 649margin:0; 650} 651 652 653#crmWebToEntityForm .zoho-company-email-grid { 654 display: grid !important; 655 grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; 656 column-gap: 1rem !important; 657 row-gap: 1rem !important; 658 width: 100% !important; 659 align-items: start !important; 660} 661#crmWebToEntityForm .zoho-company-email-grid > .form_field-wrapper { 662 min-width: 0 !important; 663 width: 100% !important; 664 margin: 0 !important; 665} 666#crmWebToEntityForm .zoho-company-email-grid .form_input { 667 width: 100% !important; 668 max-width: none !important; 669} 670@media screen and (max-width: 767px) { 671 #crmWebToEntityForm .zoho-company-email-grid { 672 grid-template-columns: minmax(0, 1fr) !important; 673 } 674} 675 676 677 678 679</style> 680 681 <div class="form_field-2col"> 682 <div class="form_field-wrapper"> 683 <label for="First_Name" class="form_form_label">First Name</label> 684 <input class="form_input w-input" type="text" id="First_Name" name="First Name" maxlength="40" placeholder="Fill in your first name" aria-required="true" required> 685 </div> 686 687 <div class="form_field-wrapper"> 688 <label for="Last_Name" class="form_form_label">Last Name</label> 689 <input class="form_input w-input" type="text" id="Last_Name" name="Last Name" maxlength="80" placeholder="Fill in your last name" aria-required="true" required> 690 </div> 691 </div> 692 693 <div class="form_field-2col zoho-company-email-grid"> 694 <div class="form_field-wrapper"> 695 <label for="Company" class="form_form_label">Company</label> 696 <input class="form_input w-input" type="text" id="Company" name="Company" maxlength="200" placeholder="Fill in your company name" aria-required="true" required> 697 </div> 698 699 <div class="form_field-wrapper"> 700 <label for="Email" class="form_form_label">Email</label> 701 <input class="form_input w-input" type="email" ftype="email" autocomplete="email" id="Email" name="Email" maxlength="100" placeholder="Fill in your email" aria-required="true" required> 702 </div> 703 </div> 704 705 <div class="form_field-wrapper"> 706 <label for="Description" class="form_form_label">
706Details about your request</label> 707 <textarea class="form_input is-text-area w-input" id="Description" name="Description" maxlength="5000" placeholder="Type your message here..." aria-required="true" required></textarea> 708 </div> 709 710 <!-- Hidden CRM classifications --> 711 <div class="zoho-hidden" aria-hidden="true"> 712 <select id="Lead_Source" name="Lead Source" tabindex="-1"> 713 <option selected value="Website">Website</option> 714 </select> 715 <select id="LEADCF1" name="LEADCF1" tabindex="-1"> 716 <option selected value="Webform HE">Webform HE</option> 717 </select> 718 <select id="LEADCF2" name="LEADCF2" tabindex="-1"> 719 <option selected value="Subscribed">Subscribed</option> 720 </select> 721 </div> 722 723 <div class="zoho-captcha-grid"> 724 <div class="form_field-wrapper"> 725 <label for="captchaField504947000000930382" id="reCaptchaField" class="form_form_label">Enter the Captcha</label> 726 <input class="form_input w-input" type="text" id="captchaField504947000000930382" maxlength="10" name="enterdigest" autocomplete="off" aria-labelledby="reCaptchaField"> 727 <div id="captchaErr504947000000930382" class="zoho-error" aria-live="polite"></div> 728 </div> 729 730 <!-- Do not remove this captcha image --> 731 <div class="zoho-captcha-image-row"> 732 <img 733 class="zoho-captcha-image" 734 id="imgid504947000000930382" 735 alt="Captcha" 736 src="https://crm.zoho.eu/crm/CaptchaServlet?formId=d1655cac507d1f5d0b78a127be89755d8842d7766023c1c10370e3edb153ce00fbe8d692a046814c37e220b9049e120f&grpid=6d3dfc9109dcd3807be345838a1409bb431aa5ea1dad233509fbb582b52bbd20" 737 > 738 <a class="zoho-reload-link text-size-small" href="javascript:;" onclick="reloadImg504947000000930382();">Reload</a> 739 </div> 740 </div> 741 742 <div class="margin-bottom margin-xsmall"> 743 <label class="zoho-privacy-row form_checkbox-label text-size-small"> 744 <input 745 class="zoho-checkbox" 746 autocomplete="off" 747 id="privacyTool504947000000930382" 748 type="checkbox" 749 aria-checked="false" 750 aria-errormessage="privacyErr504947000000930382" 751 aria-label="Accept the Terms and Conditions" 752 onclick="disableErr504947000000930382()" 753 required 754 > 755 <span>I accept the <a href="/terms-and-conditions" class="text-style-link">Terms & Conditions</a>.</span> 756 </label> 757 <div id="privacyErr504947000000930382" class="zoho-error" aria-live="polite">Please accept the Terms & Conditions.</div> 758 </div> 759 760 <!-- Zoho honeypot: do not remove --> 761 <input type="text" style="display:none" name="aG9uZXlwb3Q" value="" tabindex="-1" autocomplete="off"> 762 763 <input 764 type="submit" 765 id="formsubmit" 766 role="button" 767 class="formsubmit button w-button" 768 value="Send Message" 769 aria-label="Send Message" 770 title="Send Message" 771 > 772 773
773<script> 774 function addAriaSelected504947000000930382(event) { 775 var optionElem = event.target; 776 var previousSelectedOption = optionElem.querySelector('[aria-selected=true]'); 777 if (previousSelectedOption) previousSelectedOption.removeAttribute('aria-selected'); 778 optionElem.options[optionElem.selectedIndex].setAttribute('aria-selected', 'true'); 779 } 780 781 function privacyAlert504947000000930382() { 782 var privacyTool = document.getElementById('privacyTool504947000000930382'); 783 var privacyErr = document.getElementById('privacyErr504947000000930382'); 784 if (privacyTool && !privacyTool.checked) { 785 privacyErr.style.visibility = 'visible'; 786 privacyTool.setAttribute('aria-invalid', 'true'); 787 privacyTool.focus(); 788 return false; 789 } 790 return true; 791 } 792 793 function disableErr504947000000930382() { 794 var privacyTool = document.getElementById('privacyTool504947000000930382'); 795 var privacyErr = document.getElementById('privacyErr504947000000930382'); 796 if (privacyTool && privacyTool.checked && privacyErr) { 797 privacyErr.style.visibility = 'hidden'; 798 privacyTool.setAttribute('aria-invalid', 'false'); 799 } 800 } 801 802 /* Do not remove this code. */ 803 function reloadImg504947000000930382() { 804 var captcha = document.getElementById('imgid504947000000930382'); 805 if (captcha.src.indexOf('&d') !== -1) { 806 captcha.src = captcha.src.substring(0, captcha.src.indexOf('&d')) + '&d' + new Date().getTime(); 807 } else { 808 captcha.src = captcha.src + '&d' + new Date().getTime(); 809 } 810 } 811 812 function historyBack504947000000930382() { 813 var submitButton = document.querySelector('#crmWebToEntityForm .formsubmit'); 814 if (submitButton) submitButton.removeAttribute('disabled'); 815 reloadImg504947000000930382(); 816 window.removeEventListener('focus', historyBack504947000000930382); 817 } 818 819 function validateEmail504947000000930382() { 820 var form = document.forms['WebToLeads504947000000930382']; 821 var emailFld = form.querySelectorAll('[ftype=email]'); 822 for (var i = 0; i < emailFld.length; i++) { 823 var emailVal = emailFld[i].value.trim(); 824 if (emailVal.length !== 0) { 825 var atpos = emailVal.indexOf('@'); 826 var dotpos = emailVal.lastIndexOf('.'); 827 if (atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= emailVal.length) { 828 alert('Please enter a valid email address.'); 829 emailFld[i].focus(); 830 return false; 831 } 832 } 833 } 834 return true; 835 } 836 837 function checkMandatory504947000000930382(isAjax) { 838 var mndFileds = ['Company', 'First Name', 'Last Name', 'Email', 'Description']; 839 var fldLangVal = ['Company', 'First Name', 'Last Name', 'Email', 'Details about your request']; 840 841 for (var i = 0; i < mndFileds.length; i++) { 842 var fieldObj = document.forms['WebToLeads504947000000930382'][mndFileds[i]]; 843 if (fieldObj && fieldObj.value.trim().length === 0) { 844 alert(fldLangVal[i] + ' cannot be empty.'); 845 fieldObj.focus(); 846 return false; 847 } 848 try { 849 if (fieldObj && fieldObj.name === 'Last Name') name = fieldObj.value; 850 } catch (e) {} 851 } 852 853 trackVisitor504947000000930382(); 854 if (!validateEmail504947000000930382()) return false; 855 if (!privacyAlert504947000000930382()) return false; 856 857 var urlparams = new URLSearchParams(window.location.search); 858 if (urlparams.has('service') && urlparams.get('service') === 'smarturl') { 859 var webform = document.getElementById('webform504947000000930382'); 860 var smarturlfield = document.createElement('input'); 861 smarturlfield.type = 'hidden'; 862 smarturlfield.value = urlparams.get('service'); 863 smarturlfield.name = 'service'; 864 webform.appendChild(smarturlfield); 865 } 866 867 var submitButton = document.querySelector('#crmWebToEntityForm .formsubmit'); 868 if (submitButton) submitButton.setAttribute('disabled', 'true'); 869 if (!isAjax) window.addEventListener('focus', historyBack50494700000093
8690382); 870 return true; 871 } 872 873 window._wFa_ajax_will_be_replaced = false; 874 window._wfa_fstprtcken = window._wfa_fstprtcken || {}; 875 window._wfa_fstprtcken[504947000000930382] = true; 876 </script>
876 877 878
878<script type="text/javascript" id="VisitorTracking"> 879 var $zoho = $zoho || {}; 880 $zoho.salesiq = $zoho.salesiq || { 881 widgetcode: 'siqa9d4daa05027dfcf41e383116eb275c8f61a76c5e45e9219407b0195c5e0e4c3', 882 values: {}, 883 ready: function() {} 884 }; 885 886 var d = document; 887 var s = d.createElement('script'); 888 s.type = 'text/javascript'; 889 s.id = 'zsiqscript'; 890 s.defer = true; 891 s.src = 'https://salesiq.zoho.eu/widget'; 892 var t = d.getElementsByTagName('script')[0]; 893 t.parentNode.insertBefore(s, t); 894 895 function trackVisitor504947000000930382() { 896 try { 897 if ($zoho) { 898 var form = document.forms['WebToLeads504947000000930382']; 899 var LDTuvidObj = form['LDTuvid']; 900 if (LDTuvidObj) LDTuvidObj.value = $zoho.salesiq.visitor.uniqueid(); 901 902 var lastName = form['Last Name'] ? form['Last Name'].value : ''; 903 var firstName = form['First Name'] ? form['First Name'].value : ''; 904 $zoho.salesiq.visitor.name((firstName + ' ' + lastName).trim()); 905 906 var emailObj = form['Email']; 907 if (emailObj) $zoho.salesiq.visitor.email(emailObj.value); 908 } 909 } catch (e) {} 910 } 911 </script>
911 912 913 <!-- Do not remove: Analytics Tracking code starts --> 914
914<script 915 id="wf_anal" 916 src="https://crm.zohopublic.eu/crm/WebFormAnalyticsServeServlet?rid=4db2370c6418756eac4439840a4c4416f075fe51de3e438105f26aa718c9bd267def00dcc084b0dce5c56e615f6e35acgid6cd7d98ffb46257014882dede728f97ca22229a3a5d1a2e48bff892dc553e07cgid995b03c54532d47624174307a57c5e789d6f3042fe28bcd8cefe7c45a816a4efgida98ef493b55b34c5ce763e403d56558b88d6fac061a0c58c7af9536a34571fb3&tw=4bdcdd82b44a5af0189ca30d5335593f6c30158d1ca2f282093a4f255e14eedc&version=v2" 917 ></script>
917 918 <!-- Do not remove: Analytics Tracking code ends --> 919 </form> 920 921 <!-- Do not remove this code. --> 922 <iframe name="captchaFrame" style="display:none"></iframe> 923</div> 924</div></div></div></div></div></div><div class="contact1_background-wrapper"><div class="contact1_image-overlay"></div><img src="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a495a1_image-full-01.jpg" loading="lazy" sizes="100vw" srcset="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a495a1_image-full-01-p-500.jpg 500w, https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a495a1_image-full-01-p-800.jpg 800w, https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a495a1_image-full-01-p-1080.jpg 1080w, https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a495a1_image-full-01-p-1600.jpg 1600w, https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a495a1_image-full-01-p-2000.jpg 2000w, https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a495a1_image-full-01.jpg 2400w" alt="" class="contact1_background-image"/></div></header><div data-wf--spacer--variant="small" class="spacer-sections w-variant-80c653d3-e2bb-68f5-2a12-c97f724cd846"></div><div class="splide_logo-section"><div class="container-medium"><div class="text-align-center"><div class="subtitle">Trusted in Professional Operations</div></div><div class="spacer-medium"></div><div id="splide-carousel-forward" class="splide"><div class="splide_logo-list-wrapper splide__track w-dyn-list"><div role="list" class="splide_logo-list splide__list w-dyn-items"><div role="listitem" class="splide_logo-item splide__slide w-dyn-item"><div class="splide_logo-image-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494f0/6a0ea91439e016eedd4aa1f7_logo_koninklijke-marine.png" alt="" class="splide_logo-image"/></div></div><div role="listitem" class="splide_logo-item splide__slide w-dyn-item"><div class="splide_logo-image-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494f0/69f20b624ed4074851a4953c_TEXO.png" alt="" class="splide_logo-image"/></div></div><div role="listitem" class="splide_logo-item splide__slide w-dyn-item"><div class="splide_logo-image-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494f0/69f20b624ed4074851a4953b_TerraDrone.png" alt="" class="splide_logo-image"/></div></div><div role="listitem" class="splide_logo-item splide__slide w-dyn-item"><div class="splide_logo-image-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494f0/69f20b624ed4074851a4953a_Oculus.png" alt="" class="splide_logo-image"/></div></div><div role="listitem" class="splide_logo-item splide__slide w-dyn-item"><div class="splide_logo-image-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494f0/69f20b624ed4074851a49514_Arctic-UAV.png" alt="" class="splide_logo-image"/></div></div><div role="listitem" class="splide_logo-item splide__slide w-dyn-item"><div class="splide_logo-image-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494f0/69f20b624ed4074851a494f7_Aalburg-Universiteit.png" alt="" class="splide_logo-image"/></div></div></div></div><div class="gradient-left"></div><div class="gradient-right"></div></div></div><div class="splide-logo-slider-js w-embed w-script"><link 925 rel="stylesheet" 926 href="https://cdn.jsdelivr.net/npm/@splidejs/[email protected]/dist/css/splide.min.css" 927/> 928
929<script async src="https://cdn.jsdelivr.net/gh/jeminids/webflow-codes@autoplay-logo_v1.0/autoplay-logo.min.js"></script>
929 930 931<!-- Include Splide library -->
932<script src="https://cdn.jsdelivr.net/npm/@splidejs/splide@latest/dist/js/splide.min.js"></script>
932 933<!-- Include Splide AutoScroll extension -->
934<script src="https://cdn.jsdelivr.net/npm/@splidejs/[email protected]/dist/js/splide-extension-auto-scroll.min.js"></script>
934 935
936<script> 937 document.addEventListener('DOMContentLoaded', function () { 938 const forwardSlider = document.querySelector('#splide-carousel-forward') 939 940 if (forwardSlider) { 941 new Splide('#splide-carousel-forward', { 942 type: 'loop', 943 autoWidth: true, 944 height: 'auto', 945 direction: 'ltr', 946 drag: 'free', 947 arrows: false, 948 pagination: false, 949 label: 'Image Slider', 950 reduceMotion: { 951 speed: 0, 952 rewindSpeed: 0, 953 autoplay: 'pause', 954 }, 955 autoScroll: { 956 speed: 0.8, 957 }, 958 breakpoints: { 959 991: { 960 autoScroll: { 961 speed: 0.8, 962 }, 963 }, 964 767: { 965 autoScroll: { 966 speed: 0.8, 967 }, 968 }, 969 }, 970 }).mount(window.splide.Extensions) 971 } 972 }); 973</script>
973</div></div><div data-wf--spacer--variant="medium" class="spacer-sections w-variant-b1125764-5fda-abe4-5fb8-06b3016ccf54"></div><section data-wf--contact-google-maps--variant="google-maps-right" class="section_contact8"><div class="padding-global"><div class="container-large"><div class="contact8_component"><div class="w-layout-grid contact8_content"><div class="contact8_content-left"><div class="contact8_heading-wrapper"><div class="subtitle">Visit Us</div><div class="spacer-xxsmall"></div><h2 class="heading-style-h2">Based in Dordrecht, active worldwide</h2><div class="spacer-small"></div><div class="text-rich-text w-richtext"><p>Visit High Eye at our Dordrecht facility or get in touch to discuss the Airboxer platform, operational requirements or upcoming trade show opportunities.</p><p>Cornelis Lelystraat 12<br/>3316 ET Dordrecht<br/>The Netherlands<br/><a href="tel:+31850410196" class="text-style-link">+31 850 410 196</a></p><p><strong>Chamber of Commerce:</strong> 11048626<br/><strong>VAT:</strong> NL809120628B01â¨<br/><strong>BIC:</strong> RABONL2U<br/><strong>IBAN / SEPA:</strong> NL68RABO0308168801</p></div></div></div><div id="w-node-d55e461a-4705-ba21-ea67-d8e0d4b9971f-d4b996f6" class="contact8_map-wrapper"><div id="map" class="map-container"></div></div></div></div></div></div></section><div data-wf--spacer--variant="large" class="spacer-sections w-variant-1fde6f3c-9238-d623-ed03-dc6f402be3ca"></div></main><footer class="footer6_component"><div class="padding-global"><div class="container-large"><div class="padding-vertical padding-top padding-xxhuge"><div class="footer6_top-wrapper"><div class="footer6_top-text-wrapper"><div class="heading-style-h1">Built for professional deployment.</div><div class="spacer-large"></div><div blocks-name="footer5_social-icons" blocks-slot-children="ST232" class="w-layout-grid footer5_social-icons"><a blocks-name="footer5_social-link-3" href="https://www.linkedin.com/company/828725/" target="_blank" class="footer5_social-link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 974<path d="M3.125 14H0.21875V4.65625H3.125V14ZM1.6875 3.375C0.75 3.375 0 2.625 0 1.6875C0 1.25 0.1875 0.8125 0.5 0.5C0.8125 0.1875 1.25 0 1.6875 0C2.125 0 2.5625 0.1875 2.875 0.5C3.1875 0.8125 3.375 1.25 3.375 1.6875C3.375 2.625 2.625 3.375 1.6875 3.375ZM14 14H11.0938V9.4375C11.0938 8.375 11.0938 6.96875 9.59375 6.96875C8.09375 6.96875 7.84375 8.15625 7.84375 9.375V14H4.9375V4.65625H7.75V5.9375H7.78125C8.15625 5.1875 9.125 4.40625 10.5312 4.40625C13.4688 4.40625 14 6.34375 14 8.875V14Z" fill="currentColor"/> 975</svg></div></a><a blocks-name="footer5_social-link-4" href="https://www.youtube.com/channel/UC1MIoK-4a33nJMA1_1JKfLw?view_as=subscriber" target="_blank" class="footer5_social-link w-inline-block"><div class="icon-embed-xsmall w-embed"><svg width="18" height="12" viewBox="0 0 18 12" fill="none" xmlns="http://www.w3.org/2000/svg"> 976<path d="M16.7188 1.875C17.0625 3.21875 17.0625 6 17.0625 6C17.0625 6 17.0625 8.8125 16.7188 10.1562C16.5312 10.875 15.9375 11.4375 15.2188 11.6562C13.875 12 8.53125 12 8.53125 12C8.53125 12 3.1875 12 1.875 11.6562C1.125 11.4375 0.5625 10.875 0.34375 10.1562C0 8.8125 0 6 0 6C0 6 0 3.21875 0.34375 1.875C0.5625 1.125 1.125 0.5625 1.875 0.375C3.1875 0 8.53125 0 8.53125 0C8.53125 0 13.875 0 15.1875 0.375C15.9375 0.5625 16.5312 1.125 16.7188 1.875ZM6.78125 8.5625L11.25 6L6.78125 3.46875V8.5625Z" fill="currentColor"/> 977</svg></div></a></div></div><div class="footer6_logo-wrapper"><img loading="lazy" src="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/69f20b624ed4074851a49572_logo_Dark-Vertical.svg" alt="" class="footer6_logo-image"/></div></div><div class="spacer-xxlarge"></div><div class="padding-bottom padding-xxlarge"><div class="w-layout-grid footer6_mid-wrapper"><div class="footer6_link-column"><div class="heading-style-h5">Platform</div><div class="spacer-medium"></div><div class="footer6_link-list"><a href="/platform/airboxer-vtol" class="footer6_link">Airboxer VTOL</a><a href="/platform/ground-control-and-equipment" class="footer6_link">
977Ground Control & Equipment</a><a href="/platform/applications" class="footer6_link">Applications</a><a href="/platform/performance-and-specifications" class="footer6_link">Performance & Specifications</a><a href="/platform/certification-and-compliance" class="footer6_link">Certification & Compliance</a><a href="/platform/training-and-support" class="footer6_link">Training & Support</a></div></div><div class="footer6_link-column"><div class="heading-style-h5">Resources</div><div class="spacer-medium"></div><div class="footer6_link-list"><a href="/resources/case-studies" class="footer6_link">Case Studies</a><a href="/resources/customers-and-partners" class="footer6_link">Customers & Partners</a><a href="/resources/downloads" class="footer6_link">Downloads</a><a href="/resources/news-and-updates" class="footer6_link">News & Updates</a></div></div><div class="footer6_link-column"><div class="heading-style-h5">Company</div><div class="spacer-medium"></div><div class="footer6_link-list"><a href="/company/our-story" class="footer6_link">Our Story</a><a href="/company/careers" class="footer6_link">Careers</a><a href="/company/faq" class="footer6_link">FAQ</a><a href="/contact" aria-current="page" class="footer6_link w--current">Contact</a></div></div><div id="w-node-_8750c589-bc9d-19d6-ca36-9668e7348406-477aa693" class="footer5_form-block"><div class="heading-style-h5">Receive newsletters</div><div class="spacer-xsmall"></div><div class="text-size-regular">Discuss your mission requirements, deployment context and platform fit directly with our team.</div><div class="spacer-small"></div><div class="w-embed w-script"><!-- Zoho Campaigns styled as Webflow footer newsletter form -->
978<script type="text/javascript" src="https://igey-zc1.maillist-manage.eu/js/optin.min.js" onload="setupSF('sf3z2070c943f135fc2553d602835d9bed89ac1b3c8bbf73fa3025d2410fe869fb0b','ZCFORMVIEW',false,'light',false,'0')"></script>
978 979
980<script type="text/javascript"> 981 function runOnFormSubmit_sf3z2070c943f135fc2553d602835d9bed89ac1b3c8bbf73fa3025d2410fe869fb0b(th) {} 982</script>
982 983 984<div id="sf3z2070c943f135fc2553d602835d9bed89ac1b3c8bbf73fa3025d2410fe869fb0b" data-type="signupform"> 985 <div id="customForm"> 986 <div class="quick_form_9_css" name="SIGNUP_BODY"> 987 <form method="POST" id="zcampaignOptinForm" action="https://igey-zc1.maillist-manage.eu/weboptin.zc" target="_zcSignup" class="footer5_form"> 988 989 <input 990 class="form_input w-input" 991 type="email" 992 placeholder="Enter your email" 993 changeitem="SIGNUP_FORM_FIELD" 994 name="CONTACT_EMAIL" 995 id="EMBED_FORM_EMAIL_LABEL" 996 required 997 > 998 999 <input 1000 type="button" 1001 name="SIGNUP_SUBMIT_BUTTON" 1002 id="zcWebOptin" 1003 class="button newsletter w-button" 1004 value=" " 1005 > 1006 1007 <input type="hidden" id="fieldBorder" value=""> 1008 <input type="hidden" id="submitType" name="submitType" value="optinCustomView"> 1009 <input type="hidden" id="emailReportId" name="emailReportId" value=""> 1010 <input type="hidden" id="formType" name="formType" value="QuickForm"> 1011 <input type="hidden" name="zx" id="cmpZuid" value="14ad192f76"> 1012 <input type="hidden" name="zcvers" value="2.0"> 1013 <input type="hidden" name="oldListIds" id="allCheckedListIds" value=""> 1014 <input type="hidden" id="mode" name="mode" value="OptinCreateView"> 1015 <input type="hidden" id="zcld" name="zcld" value=""> 1016 <input type="hidden" id="zctd" name="zctd" value="112c730eb402f1a9"> 1017 <input type="hidden" id="document_domain" value=""> 1018 <input type="hidden" id="zc_Url" value="igey-zc1.maillist-manage.eu"> 1019 <input type="hidden" id="new_optin_response_in" value="0"> 1020 <input type="hidden" id="duplicate_optin_response_in" value="0"> 1021 <input type="hidden" name="zc_trackCode" id="zc_trackCode" value="ZCFORMVIEW"> 1022 <input type="hidden" id="zc_formIx" name="zc_formIx" value="3z2070c943f135fc2553d602835d9bed89ac1b3c8bbf73fa3025d2410fe869fb0b"> 1023 <input type="hidden" id="viewFrom" value="URL_ACTION"> 1024 <span style="display:none" id="dt_CONTACT_EMAIL">1,true,6,Contact Email,2</span> 1025 </form> 1026 </div> 1027 </div> 1028 <img src="https://igey-zc1.maillist-manage.eu/images/spacer.gif" id="refImage" onload="referenceSetter(this)" style="display:none;"> 1029</div> 1030 1031<input type="hidden" id="signupFormType" value="QuickForm_Horizontal"></div><div class="text-size-tiny">By subscribing you agree to with our <a href="/privacy-policy"><span class="text-style-link">Privacy Policy</span></a>.</div></div></div></div><div class="divider-horizontal"></div><div class="padding-top padding-medium"><div class="footer6_bottom-wrapper"><div class="footer6_credit-text">© <span id="copyright-year" class="copyright-year">2025</span> High Eye. All rights reserved.</div><div class="footer6_legal-wrapper"><a href="/disclaimer" class="footer6_legal-link">Disclaimer</a><a href="/privacy-policy" class="footer6_legal-link">Privacy Policy</a><a href="/terms-and-conditions" class="footer6_legal-link">Terms & Conditions</a></div></div><div class="spacer-xxlarge"></div></div></div></div></div></footer></div>
1031<script src="https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=69f20b624ed4074851a494ef" type="text/javascript" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
1031<script src="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/js/high-eye-demo.schunk.36b8fb49256177c8.js" type="text/javascript" integrity="sha384-4abIlA5/v7XaW1HMXKBgnUuhnjBYJ/Z9C1OSg4OhmVw9O3QeHJ/qJqFBERCDPv7G" crossorigin="anonymous"></script>
1031<script src="https://cdn.prod.website-files.com/69f20b624ed4074851a494ef/js/high-eye-demo.fe060bda.9782b48b7f430c36.js" type="text/javascript" integrity="sha384-zeGhZ3Wnpctjz1uxEyOQGc+clhRhj0RmJDiN04lMirWq5DNLfdYbIcjYyBQ4maxu" crossorigin="anonymous"></script>
1031<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 1031-1032
1031 1032<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1032GTM-5CDSFZBR
vendor: 83 bytes, lines 1032-1033
1032" 1033height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1034<!-- End Google Tag Manager (noscript) --> 1035 1036 1037<!-- honeypot script -->
1038<script> 1039 (function () { 1040 var CONFIG = { 1041 formSelector: 'form', 1042 honeypotInputSelector: 'input[data-hp-input]', 1043 timestampInputSelector: 'input[data-hp-ts]', 1044 labelSelector: 'label[data-hp-label]', 1045 honeypotFieldName: 'website', 1046 timestampFieldName: '_hp_ts', 1047 honeypotLabelText: 'Website', 1048 idPrefix: 'hp', 1049 minSubmitTimeMs: 3000, 1050 simulateSuccessOnBlock: true, 1051 }; 1052 1053 function prepareFields(form, index) { 1054 var uid = CONFIG.idPrefix + '-' + index; 1055 var honeypot = form.querySelector(CONFIG.honeypotInputSelector); 1056 var tsField = form.querySelector(CONFIG.timestampInputSelector); 1057 var label = form.querySelector(CONFIG.labelSelector); 1058 1059 if (!honeypot || !tsField) { 1060 return false; 1061 } 1062 1063 honeypot.name = CONFIG.honeypotFieldName; 1064 honeypot.id = CONFIG.honeypotFieldName + '-' + uid; 1065 tsField.name = CONFIG.timestampFieldName; 1066 tsField.id = CONFIG.timestampFieldName + '-' + uid; 1067 tsField.value = Date.now().toString(); 1068 1069 if (label) { 1070 label.textContent = CONFIG.honeypotLabelText; 1071 label.setAttribute('for', honeypot.id); 1072 } 1073 1074 return true; 1075 } 1076 1077 function isHuman(form) { 1078 var honeypot = form.querySelector(CONFIG.honeypotInputSelector); 1079 var tsField = form.querySelector(CONFIG.timestampInputSelector); 1080 1081 if (honeypot && honeypot.value.trim() !== '') { 1082 return false; 1083 } 1084 1085 if (tsField) { 1086 var loadTime = parseInt(tsField.value, 10); 1087 1088 if (!isNaN(loadTime) && Date.now() - loadTime < CONFIG.minSubmitTimeMs) { 1089 return false; 1090 } 1091 } 1092 1093 return true; 1094 } 1095 1096 function simulateSuccess(form) { 1097 var wrapper = form.closest('.w-form'); 1098 if (wrapper) { 1099 var successEl = wrapper.querySelector('.w-form-done'); 1100 var errorEl = wrapper.querySelector('.w-form-fail'); 1101 if (successEl) successEl.style.display = 'block'; 1102 if (errorEl) errorEl.style.display = 'none'; 1103 form.style.display = 'none'; 1104 } 1105 } 1106 1107 function attachHoneypot(form) { 1108 if (form.dataset.hpBound === 'true') { 1109 return; 1110 } 1111 1112 form.addEventListener( 1113 'submit', 1114 function (e) { 1115 if (!isHuman(form)) { 1116 e.preventDefault(); 1117 e.stopImmediatePropagation(); 1118 console.log('Blocked'); 1119 if (CONFIG.simulateSuccessOnBlock) { 1120 simulateSuccess(form); 1121 } 1122 } 1123 }, 1124 true, 1125 ); 1126 1127 form.dataset.hpBound = 'true'; 1128 } 1129 1130 function init() { 1131 document.querySelectorAll(CONFIG.formSelector).forEach(function (form, index) { 1132 if (!prepareFields(form, index)) { 1133 return; 1134 } 1135 1136 attachHoneypot(form); 1137 }); 1138 } 1139 1140 if (document.readyState === 'loading') { 1141 document.addEventListener('DOMContentLoaded', init); 1142 } else { 1143 init(); 1144 } 1145 })(); 1146</script>
1146 1147 1148<!-- end honeypot script --> 1149
1150<script> 1151 Webflow.push(function () { 1152 $('.copyright-year').text(new Date().getFullYear()); 1153 }); 1154</script>
1154 1155
1156<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/gsap.min.js"></script>
1156 1157 1158<!-- Init functies met guards -->
1159<script> 1160 function safeInit(fn) { 1161 try { 1162 fn(); 1163 } catch (e) { 1164 console.warn('Init error:', e); 1165 } 1166 } 1167 1168 function runInits() { 1169 safeInit(initButtonCharacterStagger); 1170 safeInit(initMegaNavDirectionalHover); 1171 } 1172 1173 if (document.readyState === 'loading') { 1174 document.addEventListener('DOMContentLoaded', runInits); 1175 } else { 1176 runInits(); 1177 } 1178</script>
1178 1179 1180<!-- Staggering Button -->
1181<script> 1182 function initButtonCharacterStagger() { 1183 const offsetIncrement = 0.01; // Transition offset increment in seconds 1184 const buttons = document.querySelectorAll('[data-button-animate-chars]'); 1185 1186 buttons.forEach((button) => { 1187 const text = button.textContent; // Get the button's text content 1188 button.innerHTML = ''; // Clear the original content 1189 1190 [...text].forEach((char, index) => { 1191 const span = document.createElement('span'); 1192 span.textContent = char; 1193 span.style.transitionDelay = `${index * offsetIncrement}s`; 1194 1195 // Handle spaces explicitly 1196 if (char === ' ') { 1197 span.style.whiteSpace = 'pre'; // Preserve space width 1198 } 1199 1200 button.appendChild(span); 1201 }); 1202 }); 1203 } 1204</script>
1204 1205 1206<!-- Mega Navigation -->
1207<script> 1208 function initMegaNavDirectionalHover() { 1209 const DUR = { 1210 bgMorph: 0.4, 1211 contentIn: 0.3, 1212 contentOut: 0.2, 1213 stagger: 0.25, 1214 backdropIn: 0.3, 1215 backdropOut: 0.2, 1216 openScale: 0.35, 1217 closeScale: 0.25, 1218 }; 1219 1220 const HOVER_ENTER = 120; 1221 const HOVER_LEAVE = 150; 1222 1223 // DOM references 1224 const menuWrap = document.querySelector('[data-menu-wrap]'); 1225 const navList = document.querySelector('[data-nav-list]'); 1226 const dropWrapper = document.querySelector('[data-dropdown-wrapper]'); 1227 const dropContainer = document.querySelector('[data-dropdown-container]'); 1228 const dropBg = document.querySelector('[data-dropdown-bg]'); 1229 const backdrop = document.querySelector('[data-menu-backdrop]'); 1230 const toggles = [...document.querySelectorAll('[data-dropdown-toggle]')]; 1231 const panels = [...document.querySelectorAll('[data-nav-content]')]; 1232 const burger = document.querySelector('[data-burger-toggle]'); 1233 const backBtn = document.querySelector('[data-mobile-back]'); 1234 const logo = document.querySelector('[data-menu-logo]'); 1235 const [lineTop, lineMid, lineBot] = ['top', 'mid', 'bot'].map((id) => document.querySelector(`[data-burger-line='${id}']`)); 1236 1237 // State 1238 const state = { 1239 isOpen: false, 1240 activePanel: null, 1241 activePanelIndex: -1, 1242 isMobile: window.innerWidth <= 991, 1243 mobileMenuOpen: false, 1244 mobilePanelActive: null, 1245 hoverTimer: null, 1246 leaveTimer: null, 1247 tl: null, 1248 mobileTl: null, 1249 mobilePanelTl: null, 1250 }; 1251 1252 // Helpers 1253 const getPanel = (name) => document.querySelector(`[data-nav-content="${name}"]`); 1254 const getToggle = (name) => document.querySelector(`[data-dropdown-toggle="${name}"]`); 1255 const getFade = (el) => el.querySelectorAll('[data-menu-fade]'); 1256 const getNavItems = () => navList.querySelectorAll('[data-nav-list-item]'); 1257 const getIndex = (name) => toggles.indexOf(getToggle(name)); 1258 const stagger = (n) => (n <= 1 ? 0 : { amount: DUR.stagger }); 1259 1260 function clearTimers() { 1261 clearTimeout(state.hoverTimer); 1262 clearTimeout(state.leaveTimer); 1263 state.hoverTimer = state.leaveTimer = null; 1264 } 1265 1266 function killTl(key) { 1267 if (state[key]) { 1268 state[key].kill(); 1269 state[key] = null; 1270 } 1271 } 1272 1273 function killDropdown() { 1274 killTl('tl'); 1275 gsap.killTweensOf(dropContainer); 1276 gsap.killTweensOf(backdrop); 1277 panels.forEach((p) => { 1278 gsap.killTweensOf(p); 1279 gsap.killTweensOf(getFade(p)); 1280 }); 1281 } 1282 1283 function killMobile() { 1284 killTl('mobileTl'); 1285 gsap.killTweensOf([navList, lineTop, lineMid, lineBot]); 1286 } 1287 1288 function killMobilePanel() { 1289 killTl('mobilePanelTl'); 1290 gsap.killTweensOf(getNavItems()); 1291 gsap.killTweensOf([backBtn, logo]); 1292 panels.forEach((p) => { 1293 gsap.killTweensOf(p); 1294 gsap.killTweensOf(getFade(p)); 1295 }); 1296 } 1297 1298 function resetToggles() { 1299 toggles.forEach((t) => t.setAttribute('aria-expanded', 'false')); 1300 } 1301 1302 function resetDesktop() { 1303 panels.forEach((p) => { 1304 gsap.set(p, { visibility: 'hidden', opacity: 0, pointerEvents: 'none', xPercent: 0 }); 1305 gsap.set(getFade(p), { autoAlpha: 0, x: 0, y: 0 }); 1306 }); 1307 gsap.set(dropContainer, { height: 0 }); 1308 gsap.set(backdrop, { autoAlpha: 0 }); 1309 menuWrap.setAttribute('data-menu-open', 'false'); 1310 resetToggles(); 1311 } 1312 1313 function setupMobile() { 1314 panels.forEach((p) => { 1315 gsap.set(p, { autoAlpha: 0, xPercent: 0, visibility: 'visible', pointerEvents: 'none' }); 1316 gsap.set(getFade(p), { xPercent: 20, autoAlpha: 0 }); 1317 }); 1318 gsap.set(getNavItems(), { xPercent: 0, y: 0, autoAlpha: 1 }); 1319 gsap.set(navList, { autoAlpha: 0, x: 0 }); 1320 gsap.set(backBtn, { autoAlpha: 0 }); 1321 gsap.set(logo, { autoAlpha: 1 }); 1322 gsap.set(dropContainer, { clearProps: 'height' }); 1323 gsap.set(backdrop, { autoAlpha: 0 }); 1324 } 1325 1326 function measurePanel(name) { 1327 const el = getPanel(name); 1328 if (!el) return 0; 1329 const s = el.style; 1330 const prev = [s.visibility, s.opacity, s.pointerEvents]; 1331 Object.assign(s, { visibility: 'visible', opacity: '0', pointerEvents: 'none' }); 1332 const h = el.getBoundingClientRect().height; 1333 [s.visibility, s.opacity, s.pointerEvents] = prev; 1334 return h; 1335 } 1336 1337 // DESKTOP â open dropdown (first open) 1338 function openDropdown(panelName) { 1339 if (state.isOpen && state.activePanel === panelName) return; 1340 if (state.isOpen) return switchPanel(state.activePanel, panelName); 1341 1342 const height = measurePanel(panelName); 1343 if (!height) return; 1344 1345 killDropdown(); 1346 resetDesktop(); 1347 1348 const el = getPanel(panelName); 1349 const fade = getFade(el); 1350 const toggle = getToggle(panelName); 1351 1352 state.isOpen = true; 1353 state.activePanel = panelName; 1354 state.activePanelIndex = getIndex(panelName); 1355 menuWrap.setAttribute('data-menu-open', 'true'); 1356 if (toggle) toggle.setAttribute('aria-expanded', 'true'); 1357 1358 gsap.set(dropContainer, { height: 0 }); 1359 1360 const tl = gsap.timeline(); 1361 state.tl = tl; 1362 tl.to(backdrop, { autoAlpha: 1, duration: DUR.backdropIn, ease: 'power2.out' }, 0); 1363 tl.to(dropContainer, { height, duration: DUR.openScale, ease: 'power3.out' }, 0); 1364 tl.set(el, { visibility: 'visible', opacity: 1, pointerEvents: 'auto' }, 0.05); 1365 if (fade.length) { 1366 tl.fromTo(fade, { autoAlpha: 0, y: 8 }, { autoAlpha: 1, y: 0, duration: DUR.contentIn, stagger: stagger(fade.length), ease: 'power3.out' }, 0.1); 1367 } 1368 } 1369 1370 // DESKTOP â close dropdown 1371 function closeDropdown() { 1372 if (!state.isOpen) return; 1373 const el = getPanel(state.activePanel); 1374 const fade = el ? getFade(el) : []; 1375 1376 killDropdown(); 1377 1378 const tl = gsap.timeline({ 1379 onComplete() { 1380 state.isOpen = false;
1381 state.activePanel = null; 1382 state.activePanelIndex = -1; 1383 state.tl = null; 1384 resetDesktop(); 1385 }, 1386 }); 1387 state.tl = tl; 1388 if (fade.length) tl.to(fade, { autoAlpha: 0, y: -4, duration: DUR.contentOut * 0.7, ease: 'power2.in' }, 0); 1389 tl.to(dropContainer, { height: 0, duration: DUR.closeScale, ease: 'power2.in' }, 0.05); 1390 tl.to(backdrop, { autoAlpha: 0, duration: DUR.backdropOut, ease: 'power2.out' }, 0); 1391 if (el) tl.set(el, { visibility: 'hidden', opacity: 0, pointerEvents: 'none' }); 1392 } 1393 1394 // DESKTOP â switch panel (directional) 1395 function switchPanel(fromName, toName) { 1396 const dir = getIndex(toName) > getIndex(fromName) ? 1 : -1; 1397 const fromEl = getPanel(fromName), 1398 toEl = getPanel(toName); 1399 if (!fromEl || !toEl) return; 1400 1401 const fromFade = getFade(fromEl), 1402 toFade = getFade(toEl); 1403 const toHeight = measurePanel(toName); 1404 if (!toHeight) return; 1405 1406 killDropdown(); 1407 1408 // Reset all panels, then restore fromEl as visible 1409 panels.forEach((p) => { 1410 gsap.set(p, { visibility: 'hidden', opacity: 0, pointerEvents: 'none', xPercent: 0 }); 1411 gsap.set(getFade(p), { autoAlpha: 0, x: 0, y: 0 }); 1412 }); 1413 gsap.set(fromEl, { visibility: 'visible', opacity: 1, pointerEvents: 'auto', x: 0 }); 1414 if (fromFade.length) gsap.set(fromFade, { autoAlpha: 1, x: 0, y: 0 }); 1415 gsap.set(backdrop, { autoAlpha: 1 }); 1416 1417 const toToggle = getToggle(toName); 1418 state.activePanel = toName; 1419 state.activePanelIndex = getIndex(toName); 1420 resetToggles(); 1421 if (toToggle) toToggle.setAttribute('aria-expanded', 'true'); 1422 1423 const xOut = dir * -30, 1424 xIn = dir * 30; 1425 const tl = gsap.timeline(); 1426 state.tl = tl; 1427 1428 if (fromFade.length) tl.to(fromFade, { autoAlpha: 0, x: xOut, duration: DUR.contentOut, ease: 'power2.in' }, 0); 1429 tl.set(fromEl, { visibility: 'hidden', opacity: 0, pointerEvents: 'none', xPercent: 0 }, DUR.contentOut); 1430 if (fromFade.length) tl.set(fromFade, { x: 0 }, DUR.contentOut); 1431 tl.to(dropContainer, { height: toHeight, duration: DUR.bgMorph, ease: 'power3.out' }, 0.05); 1432 tl.set(toEl, { visibility: 'visible', opacity: 1, pointerEvents: 'auto', xPercent: 0 }, DUR.contentOut * 0.5); 1433 if (toFade.length) { 1434 tl.fromTo(toFade, { autoAlpha: 0, x: xIn }, { autoAlpha: 1, x: 0, duration: DUR.contentIn, stagger: stagger(toFade.length), ease: 'power3.out' }, DUR.contentOut * 0.6); 1435 } 1436 } 1437 1438 // DESKTOP â hover intent 1439 function handleToggleEnter(e) { 1440 if (state.isMobile) return; 1441 const name = e.currentTarget.getAttribute('data-dropdown-toggle'); 1442 if (!name) return; 1443 clearTimeout(state.leaveTimer); 1444 state.leaveTimer = null; 1445 clearTimeout(state.hoverTimer); 1446 state.hoverTimer = setTimeout(() => openDropdown(name), state.isOpen ? 0 : HOVER_ENTER); 1447 } 1448 1449 function handleToggleLeave() { 1450 if (state.isMobile) return; 1451 clearTimeout(state.hoverTimer); 1452 state.hoverTimer = null; 1453 state.leaveTimer = setTimeout(closeDropdown, HOVER_LEAVE); 1454 } 1455 1456 function handleWrapperEnter() { 1457 if (state.isMobile) return; 1458 clearTimeout(state.leaveTimer); 1459 state.leaveTimer = null; 1460 } 1461 1462 function handleWrapperLeave() { 1463 if (state.isMobile) return; 1464 state.leaveTimer = setTimeout(closeDropdown, HOVER_LEAVE); 1465 } 1466 1467 // DESKTOP â close behaviors 1468 function handleEscape(e) { 1469 if (e.key !== 'Escape') return; 1470 if (state.isMobile) { 1471 state.mobilePanelActive ? closeMobilePanel() : state.mobileMenuOpen && closeMobileMenu(); 1472 return; 1473 } 1474 if (state.isOpen) { 1475 const t = getToggle(state.activePanel); 1476 closeDropdown(); 1477 if (t) t.focus(); 1478 } 1479 } 1480 1481 function handleDocClick(e) { 1482 if (state.isMobile || !state.isOpen) return; 1483 if (!e.target.closest('[data-menu-wrap]')) closeDropdown(); 1484 } 1485 1486 // DESKTOP â keyboard navigation 1487 function focusFirstLink(panelName) { 1488 setTimeout(() => { 1489 const el = getPanel(panelName); 1490 if (!el) return; 1491 const link = el.querySelector('a'); 1492 if (!link) return; 1493 gsap.set(link, { visibility: 'visible' }); 1494 link.focus(); 1495 }, 80); 1496 } 1497 1498 function handleKeydownOnToggle(e) { 1499 if (state.isMobile) return; 1500 const name = e.currentTarget.getAttribute('data-dropdown-toggle'); 1501 1502 if (e.key === 'Enter' || e.key === ' ') { 1503 e.preventDefault(); 1504 if (state.isOpen && state.activePanel === name) closeDropdown(); 1505 else { 1506 openDropdown(name); 1507 focusFirstLink(name); 1508 } 1509 return; 1510 } 1511 if (e.key === 'ArrowDown') { 1512 e.preventDefault(); 1513 if (!state.isOpen || state.activePanel !== name) openDropdown(name); 1514 focusFirstLink(name); 1515 } 1516 if (e.key === 'Tab' && !e.shiftKey && state.isOpen && state.activePanel === name) { 1517 e.preventDefault(); 1518 const link = getPanel(name)?.querySelector('a'); 1519 if (link) link.focus(); 1520 } 1521 } 1522 1523 function handleKeydownInPanel(e) { 1524 if (state.isMobile || !state.isOpen) return; 1525 const el = getPanel(state.activePanel); 1526 if (!el) return; 1527 1528 const links = [...el.querySelectorAll('a')]; 1529 const idx = links.indexOf(document.activeElement); 1530 1531 if (e.key === 'ArrowDown') { 1532 e.preventDefault(); 1533 links[(idx + 1) % links.length].focus(); 1534 } 1535 if (e.key === 'ArrowUp') { 1536 e.preventDefault(); 1537 if (idx <= 0) { 1538 const t = getToggle(state.activePanel); 1539 if (t) t.focus(); 1540 } else links[idx - 1].focus(); 1541 } 1542 if (e.key === 'Tab' && !e.shiftKey && idx === links.length - 1) { 1543 e.preventDefault(); 1544 const curIdx = toggles.indexOf(getToggle(state.activePanel)); 1545 const next = curIdx < toggles.length - 1 ? toggles[curIdx + 1] : null; 1546 closeDropdown(); 1547 if (next) next.focus(); 1548 } 1549 if (e.key === 'Tab' && e.shiftKey && idx === 0) { 1550 e.preventDefault(); 1551 const t = getToggle(state.activePanel); 1552 if (t) t.focus(); 1553 } 1554 } 1555 1556 // MOBILE â burger animation 1557 function animateBurger(toX) { 1558 const tl = gsap.timeline({ defaults: { ease: 'power2.inOut' } }); 1559 if (toX) { 1560 tl.to(lineTop, { y: '0.3125em', duration: 0.15 }, 0); 1561 tl.to(lineBot, { y: '-0.3125em', duration: 0.15 }, 0); 1562 tl.to(lineMid, { autoAlpha: 0, duration: 0.1 }, 0.1); 1563 tl.to(lineTop, { rotation: 45, duration: 0.2 }, 0.15); 1564 tl.to(lineBot, { rotation: -45, duration: 0.2 }, 0.15); 1565 } else { 1566 tl.to(lineTop, { rotation: 0, duration: 0.2 }, 0); 1567 tl.to(lineBot, { rotation: 0, duration: 0.2 }, 0); 1568 tl.to(lineTop, { y: 0, duration: 0.15 }, 0.15); 1569 tl.to(lineBot, { y: 0, duration: 0.15 }, 0.15); 1570 tl.to(lineMid, { autoAlpha: 1, duration: 0.1 }, 0.15); 1571 } 1572 return tl; 1573 } 1574 1575 // MOBILE â open/close menu 1576 function openMobileMenu() { 1577 killMobile(); 1578 state.mobileMenuOpen = true; 1579 menuWrap.setAttribute('data-menu-open', 'true'); 1580 burger.setAttribute('aria-expanded', 'true'); 1581 document.body.style.overflow = 'hidden'; 1582 1583 const items = getNavItems(); 1584 const tl = gsap.timeline(); 1585 state.mobileTl = tl; 1586 tl.add(animateBurger(true), 0); 1587 tl.to(navList, { autoAlpha: 1, duration: 0.3, ease: 'power2.out' }, 0); 1588 if (items.length) { 1589 tl.fromTo(items, { autoAlpha: 0, y: 12 }, { autoAlpha: 1, y: 0, duration: 0.3, stagger: 0.04, ease: 'power3.out' }, 0.15); 1590 } 1591 } 1592 1593 function closeMobileMenu() { 1594 const hadPanel = state.mobilePanelActive; 1595 const panelEl = hadPanel ? getPanel(hadPanel) : null; 1596 1597 killMobile(); 1598 killMobilePanel(); 1599 1600 menuWrap.setAttribute('data-menu-open', 'false'); 1601 state.mobileMenuOpen = false;
1602 state.mobilePanelActive = null; 1603 burger.setAttribute('aria-expanded', 'false'); 1604 1605 const tl = gsap.timeline({ 1606 onComplete() { 1607 document.body.style.overflow = ''; 1608 state.mobileTl = null; 1609 setupMobile(); 1610 }, 1611 }); 1612 state.mobileTl = tl; 1613 1614 tl.add(animateBurger(false), 0); 1615 1616 // If a panel was open, fade it out with the close â no snap reset 1617 if (hadPanel && panelEl) { 1618 tl.to(panelEl, { autoAlpha: 0, duration: 0.3, ease: 'power2.inOut' }, 0.05); 1619 tl.to(backBtn, { autoAlpha: 0, duration: 0.2, ease: 'power2.in' }, 0.05); 1620 } 1621 1622 // Fade out the nav list container 1623 tl.to(navList, { autoAlpha: 0, duration: 0.3, ease: 'power2.inOut' }, 0.05); 1624 } 1625 1626 // MOBILE â slide-over panels 1627 function openMobilePanel(panelName) { 1628 const el = getPanel(panelName); 1629 if (!el) return; 1630 killMobilePanel(); 1631 state.mobilePanelActive = panelName; 1632 1633 const navItems = getNavItems(); 1634 const panelFade = getFade(el); 1635 1636 const tl = gsap.timeline(); 1637 state.mobilePanelTl = tl; 1638 1639 // Fade out each nav item to the left 1640 if (navItems.length) { 1641 tl.to( 1642 navItems, 1643 { 1644 xPercent: -10, 1645 autoAlpha: 0, 1646 duration: 0.35, 1647 stagger: 0.03, 1648 ease: 'power2.in', 1649 }, 1650 0, 1651 ); 1652 } 1653 1654 // Logo â back button swap 1655 tl.to(logo, { autoAlpha: 0, duration: 0.2, ease: 'power2.in' }, 0); 1656 tl.to(backBtn, { autoAlpha: 1, duration: 0.25, ease: 'power2.inOut' }, 0.15); 1657 1658 // Show panel container, then fade in its items from the right 1659 tl.set(el, { autoAlpha: 1, xPercent: 0, pointerEvents: 'auto' }, 0.2); 1660 if (panelFade.length) { 1661 tl.fromTo(panelFade, { xPercent: 8, autoAlpha: 0 }, { xPercent: 0, autoAlpha: 1, duration: 0.3, stagger: stagger(panelFade.length), ease: 'power3.out' }, 0.25); 1662 } 1663 } 1664 1665 function closeMobilePanel() { 1666 if (!state.mobilePanelActive) return; 1667 const el = getPanel(state.mobilePanelActive); 1668 if (!el) return; 1669 killMobilePanel(); 1670 1671 const navItems = getNavItems(); 1672 const panelFade = getFade(el); 1673 1674 const tl = gsap.timeline({ 1675 onComplete() { 1676 state.mobilePanelActive = null; 1677 state.mobilePanelTl = null; 1678 }, 1679 }); 1680 state.mobilePanelTl = tl; 1681 1682 // Fade out panel items to the right 1683 if (panelFade.length) { 1684 tl.to( 1685 el, 1686 { 1687 xPercent: 20, 1688 autoAlpha: 0, 1689 duration: 0.3, 1690 stagger: 0.02, 1691 ease: 'power2.in', 1692 }, 1693 0, 1694 ); 1695 } 1696 1697 // Hide panel 1698 tl.set(el, { autoAlpha: 0, pointerEvents: 'none' }, 0.25); 1699 1700 // Back â logo swap 1701 tl.to(backBtn, { autoAlpha: 0, duration: 0.2, ease: 'power2.in' }, 0); 1702 tl.to(logo, { autoAlpha: 1, duration: 0.25, ease: 'power2.out' }, 0.15); 1703 1704 // Fade nav items back in from center 1705 if (navItems.length) { 1706 tl.fromTo(navItems, { xPercent: -20, autoAlpha: 0 }, { xPercent: 0, autoAlpha: 1, duration: 0.35, stagger: 0.03, ease: 'power3.out' }, 0.25); 1707 } 1708 } 1709 1710 function handleToggleClick(e) { 1711 if (!state.isMobile || !state.mobileMenuOpen) return; 1712 const name = e.currentTarget.getAttribute('data-dropdown-toggle'); 1713 if (name) { 1714 e.preventDefault(); 1715 openMobilePanel(name); 1716 } 1717 } 1718 1719 // RESIZE 1720 let resizeTimer = null; 1721 let lastWidth = window.innerWidth; 1722 function handleResize() { 1723 const w = window.innerWidth; 1724 if (w === lastWidth) return; 1725 lastWidth = w; 1726 clearTimeout(resizeTimer); 1727 resizeTimer = setTimeout(() => { 1728 const was = state.isMobile; 1729 state.isMobile = window.innerWidth <= 991; 1730 1731 if (was && !state.isMobile) { 1732 killMobile(); 1733 killMobilePanel(); 1734 gsap.set(navList, { clearProps: 'all' }); 1735 gsap.set(getNavItems(), { clearProps: 'all' }); 1736 gsap.set(backBtn, { autoAlpha: 0 }); 1737 gsap.set(logo, { clearProps: 'all' }); 1738 gsap.set([lineTop, lineMid, lineBot], { rotation: 0, y: 0, autoAlpha: 1 }); 1739
1740 panels.forEach((p) => { 1741 gsap.set(p, { clearProps: 'all' }); 1742 gsap.set(getFade(p), { clearProps: 'all' }); 1743 }); 1744 1745 burger.setAttribute('aria-expanded', 'false'); 1746 state.mobileMenuOpen = false; 1747 state.mobilePanelActive = null; 1748 document.body.style.overflow = ''; 1749 resetDesktop(); 1750 } 1751 1752 if (!was && state.isMobile) { 1753 killDropdown(); 1754 state.isOpen = false; 1755 state.activePanel = null; 1756 state.activePanelIndex = -1; 1757 clearTimers(); 1758 menuWrap.setAttribute('data-menu-open', 'false'); 1759 resetToggles(); 1760 setupMobile(); 1761 } 1762 }, 150); 1763 } 1764 1765 // EVENT BINDING 1766 toggles.forEach((btn) => { 1767 btn.addEventListener('mouseenter', handleToggleEnter); 1768 btn.addEventListener('mouseleave', handleToggleLeave); 1769 btn.addEventListener('keydown', handleKeydownOnToggle); 1770 btn.addEventListener('click', handleToggleClick); 1771 }); 1772 1773 dropWrapper.addEventListener('mouseenter', handleWrapperEnter); 1774 dropWrapper.addEventListener('mouseleave', handleWrapperLeave); 1775 1776 panels.forEach((p) => p.addEventListener('keydown', handleKeydownInPanel)); 1777 1778 backdrop.addEventListener('click', closeDropdown); 1779 1780 document.addEventListener('keydown', handleEscape); 1781 document.addEventListener('click', handleDocClick); 1782 1783 burger.addEventListener('click', () => (state.mobileMenuOpen ? closeMobileMenu() : openMobileMenu())); 1784 1785 backBtn.addEventListener('click', closeMobilePanel); 1786 1787 window.addEventListener('resize', handleResize); 1788 1789 // INIT 1790 state.isMobile ? setupMobile() : resetDesktop(); 1791 } 1792</script>
1792</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.