1<!doctype html> 2<html lang="en-AU" class="no-js"> 3 4<head> 5 <meta charset="UTF-8"> 6 7 <link rel="preconnect" href="https://cdn.enttec.com" crossorigin> 8 <link rel="preconnect" href="https://www.googletagmanager.com" crossorigin> 9 <link rel="preconnect" href="https://stats.wp.com" crossorigin> 10 11 12 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 13 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 14 <meta name="facebook-domain-verification" content="" /> 15 16
16<script> 17 window.ENTTEC_AUTOREDIRECT = true; 18 window.ENTTEC_LOGGED_IN = false; 19 // Suppress the auto-redirect on transactional WooCommerce pages: cart, 20 // checkout (incl. the order-received / payment-return thank-you endpoint), 21 // and account pages. Stops a returning payment-gateway visitor (or an 22 // emailed cart/checkout link) being bounced mid-flow. These pages aren't 23 // page-cached, so a per-page value here is cache-safe. 24 window.ENTTEC_GEO_SUPPRESS = false; 25 window.ENTTEC_REGION_URLS = {"AU":"https:\/\/www.enttec.com.au\/","EU":"https:\/\/www.enttec.co.uk\/","US":"https:\/\/www.enttec.com\/","AE":"https:\/\/enttec.ae\/","CN":"https:\/\/enttec.com.cn\/"}; 26 window.ENTTEC_REGION_LABELS= {"AU":"Australia","EU":"UK","US":"USA","AE":"UAE","CN":"China"}; 27 (function () { 28 var h = window.location.hash || ''; 29 // Flag set early (before the footer AJAX) so a just-redirected arrival 30 // shows the bar instead of being redirected again. 31 window.ENTTEC_ARRIVED_VIA_REDIRECT = /(?:^|#|&)enttec-from=/.test(h); 32 // Loop-breaker: if we arrived via the bar's "go back" link, set THIS 33 // domain's 30-day stay cookie synchronously (cookies are per-domain, 34 // which is why the choice must be re-asserted on the origin), then 35 // strip the hash. The footer AJAX then sees the cookie and returns no 36 // redirect this pageload. 37 if (/(?:^|#|&)enttec-stay\b/.test(h)) { 38 document.cookie = 'userRejectedRedirection=yes; path=/; max-age=2592000; SameSite=Lax'; 39 history.replaceState(null, '', window.location.pathname + window.location.search); 40 } 41 42 // Decide "should this visitor move?" as early as possible. Firing the 43 // check here in <head> (instead of waiting for the footer) means the 44 // redirect can fire before the heavy page renders, far less flash. 45 // One shared fetch: the footer reuses this same promise for the legacy 46 // popup / country picker, so there's no second request. 47 // Skip the location check entirely for visitors who don't need it: 48 // - logged-in users (they have an account on THIS region â already in the 49 // right place; redirecting them would eject them from their session) 50 // - anyone who just arrived via a redirect (#enttec-from) 51 // - anyone who already chose "stay" (userRejectedRedirection cookie) 52 // Anonymous visitors still run the check (flag-independent), so the 53 // within-region currency/language popup keeps working when auto-redirect 54 // is off. This saves the ~1.5s server round-trip for everyone above. 55 window.__enttecGeoCheck = ( 56 window.ENTTEC_LOGGED_IN 57 || window.ENTTEC_ARRIVED_VIA_REDIRECT 58 || window.ENTTEC_GEO_SUPPRESS 59 || /(?:^|;\s*)userRejectedRedirection=yes/.test(document.cookie) 60 ) ? Promise.resolve(null) : fetch('https://www.enttec.com.au/wp-admin/admin-ajax.php', { 61 method: 'POST', 62 headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, 63 credentials: 'same-origin', 64 body: 'action=check_region_redirect' 65 + '&page_url=' + encodeURIComponent(window.location.pathname + window.location.search) 66 + '&site_location=' + encodeURIComponent('au') 67 }).then(function (r) { return r.json(); }) 68 .then(function (res) { return (res && res.success) ? res.data : null; }) 69 .catch(function () { return null; }); 70 71 // Redirect immediately when the answer is "wrong region" (anonymous + 72 // flag on + not a just-redirected arrival). Cross-domain so location.replace. 73 // EU/EEA visitors (d.ask_first) are never moved: the footer shows them the 74 // "go to your local site?" popup instead, because the EU Geo-blocking 75 // Regulation requires their consent before a location-based redirect. 76 window.__enttecGeoCheck.then(function (d) { 77 if (!d) { return; } 78 if (window.ENTTEC_AUTOREDIRECT && !window.ENTTEC_LOGGED_IN 79 && !window.ENTTEC_ARRIVED_VIA_REDIRECT && d.switch_region && d.redirect_url && !d.ask_first) { 80 var go = function () { window.location.replace(d.redirect_url + '#enttec-from=' + (d.site_region || '')); }; 81 var reduceMo = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; 82 // Brief "Checking your location" pill so the move reads as intentional 83 // rather than an abrupt jump. Only shown to visitors we're actually 84 // redirecting, so in-region visitors never see a flash. 85 var pill = document.createElement('div'); 86 pill.className = 'enttec-geo-pill'; 87 pill.setAttribute('role', 'status'); 88 pill.innerHTML = '<span class="enttec-geo-pill__ring" aria-hidden="true"></span><span>Checking your locationâ¦</span>'; 89 (document.body || document.documentElement).appendChild(pill); 90 if (reduceMo) { setTimeout(go, 500); } 91 else { requestAnimationFrame(function () { pill.classList.add('enttec-geo-pill--in'); }); setTimeout(go, 1100); } 92 } 93 }); 94 })(); 95 </script>
95 96 97 98 <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 99<link rel="prefetch" as="image" href="https://cdn.enttec.com/wp-content/uploads/2025/01/28102338/1903_x_1040_category_banner_software_4-768x420.jpg"> 100<link rel="prefetch" as="image" href="https://cdn.enttec.com/website/megamenu/banner_showcontrol_3-768x420.jpg"> 101<link rel="prefetch" as="image" href="https://cdn.enttec.com/website/megamenu/banner_showcontrol_2-768x420.jpg"> 102<link rel="prefetch" as="image" href="https://cdn.enttec.com/website/megamenu/banner_dots5-768x420.jpg"> 103<link rel="prefetch" as="image" href="https://cdn.enttec.com/website/megamenu/banner_pixelstrip-768x420.jpg"> 104<link rel="prefetch" as="image" href="https://cdn.enttec.com/website/products/73060-neon-flex/73060-neon-flex-banner.jpg"> 105<link rel="prefetch" as="image" href="https://cdn.enttec.com/website/megamenu/banner_led_dimmers_2-768.jpg"> 106<link rel="prefetch" as="image" href="https://cdn.enttec.com/wp-content/uploads/2025/01/28112505/1903_x_1040_category_banner_dmxethernet-768x420.jpg"> 107<link rel="prefetch" as="image" href="https://cdn.enttec.com/website/megamenu/banner_dmx-768x420.jpg"> 108<link rel="prefetch" as="image" href="https://cdn.enttec.com/website/megamenu/banner_CV_2-768x420.jpg"> 109 110 <!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https://yoast.com/product/yoast-seo-premium-wordpress/ --> 111 <title>Store Policy | ENTTEC</title> 112 <meta name="description" content="Look no further than ENTTEC's famous DMX controller and more for all your lighting projects. (Applications included)" /> 113 <link rel="canonical" href="https://www.enttec.com.au/store-policy/" /> 114 <meta property="og:locale" content="en_US" /> 115 <meta property="og:type" content="article" /> 116 <meta property="og:title" content="Store Policy" /> 117 <meta property="og:description" content="Store PolicyLast updated: 2 June 2026On this pageENTTEC.COM.AU STORE POLICYProcessing orders â Shipping conditions â RefundBACKGROUNDSCHEDULE 1 |" /> 118 <meta property="og:url" content="https://www.enttec.com.au/store-policy/" /> 119 <meta property="og:site_name" content="ENTTEC" /> 120 <meta property="article:publisher" content="https://www.facebook.com/enttec/" /> 121 <meta property="article:modified_time" content="2026-09-21T10:19:32+00:00" /> 122 <meta name="twitter:card" content="summary_large_image" /> 123 <meta name="twitter:label1" content="Est. reading time" /> 124 <meta name="twitter:data1" content="12 minutes" /> 125
125<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.enttec.com.au\/store-policy\/","url":"https:\/\/www.enttec.com.au\/store-policy\/","name":"Store Policy | ENTTEC","isPartOf":{"@id":"https:\/\/www.enttec.com.au\/#website"},"datePublished":"2017-03-21T23:00:24+00:00","dateModified":"2026-09-21T10:19:32+00:00","description":"Look no further than ENTTEC's famous DMX controller and more for all your lighting projects. (Applications included)","breadcrumb":{"@id":"https:\/\/www.enttec.com.au\/store-policy\/#breadcrumb"},"inLanguage":"en-AU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.enttec.com.au\/store-policy\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.enttec.com.au\/store-policy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.enttec.com.au\/"},{"@type":"ListItem","position":2,"name":"Store Policy"}]},{"@type":"WebSite","@id":"https:\/\/www.enttec.com.au\/#website","url":"https:\/\/www.enttec.com.au\/","name":"ENTTEC","description":"Designs and manufactures control, lights, solutions for all LED projects","publisher":{"@id":"https:\/\/www.enttec.com.au\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.enttec.com.au\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-AU"},{"@type":"Organization","@id":"https:\/\/www.enttec.com.au\/#organization","name":"ENTTEC","url":"https:\/\/www.enttec.com.au\/","logo":{"@type":"ImageObject","inLanguage":"en-AU","@id":"https:\/\/www.enttec.com.au\/#\/schema\/logo\/image\/","url":"https:\/\/www.enttec.com.au\/wp-content\/uploads\/2022\/08\/ENTTEC-Logo.png","contentUrl":"https:\/\/www.enttec.com.au\/wp-content\/uploads\/2022\/08\/ENTTEC-Logo.png","width":4770,"height":765,"caption":"ENTTEC"},"image":{"@id":"https:\/\/www.enttec.com.au\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/enttec\/","https:\/\/www.instagram.com\/enttecofficial\/","https:\/\/www.linkedin.com\/company\/enttec","https:\/\/www.youtube.com\/c\/ENTTECofficial","https:\/\/x.com\/ENTTECOfficial"],"foundingDate":"1999","founder":{"@type":"Person","name":"Nicolas Moreau"},"slogan":"The complete pixel lighting control system: software, controllers and fixtures, engineered to work together.","description":"ENTTEC designs and manufactures complete LED pixel lighting control systems. We are one of very few companies that make all three parts of the system ourselves: control software (ELM and EMU), pixel controllers and DMX, Art-Net and sACN gateways, and LED fixtures, engineered to work together as one guaranteed-compatible system rather than sourced from separate vendors. A pioneer of PC-based lighting control since 1999 (creator of the world-first Open DMX USB interface) and now a leader in pixel lighting, ENTTEC operates worldwide, with offices in the United States (North Carolina and Florida), the United Kingdom (London), the United Arab Emirates (Dubai) and Australia and two manufacturing facilities, so multinational projects designed in one country and installed in another get local support wherever they are.","knowsAbout":["LED pixel lighting control systems","Pixel mapping software","LED pixel mapping","Lighting control software","ELM (ENTTEC LED Mapper)","EMU sound-to-light controller","DMX512","Art-Net","sACN (E1.31)","RDM","DMX over Ethernet nodes","LED pixel controllers","LED fixtures","End-to-end LED lighting installations"],"areaServed":"Worldwide","location":[{"@type":"Place","name":"ENTTEC USA (North Carolina)","address":{"@type":"PostalAddress","addressRegion":"NC","addressCountry":"US"}},{"@type":"Place","name":"ENTTEC USA (Florida)","address":{"@type":"PostalAddress","addressRegion":"FL","addressCountry":"US"}},{"@type":"Place","name":"ENTTEC UK (London)","address":{"@type":"PostalAddress","addressLocality":"London","addressCountry":"GB"}},{"@type":"Place","name":"ENTTEC Middle East (Dubai)","address":{"@type":"PostalAddress","addressLocality":"Dubai","addressCountry":"AE"}},{"@type":"Place","name":"ENTTEC Australia","address":{"@type":"PostalAddress","addressCountry":"AU"}}]}]}</script>
125 126 <!-- / Yoast SEO Premium plugin. --> 127 128 129<link rel='dns-prefetch' href='//translate.google.com' /> 130<link rel='dns-prefetch' href='//www.googletagmanager.com' /> 131<link rel='dns-prefetch' href='//cdn.enttec.com' /> 132<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' /> 133 134<!-- ENTTEC cross-region hreflang (#7437; WS6 trim=1) --> 135<link rel="alternate" hreflang="en-US" href="https://www.enttec.com/store-policy/" /> 136<link rel="alternate" hreflang="en-AU" href="https://www.enttec.com.au/store-policy/" /> 137<link rel="alternate" hreflang="en-GB" href="https://www.enttec.co.uk/store-policy/" /> 138<link rel="alternate" hreflang="en-AE" href="https://enttec.ae/store-policy/" /> 139<link rel="alternate" hreflang="ru-RU" href="https://enttec.com.ru/store-policy/" /> 140<link rel="alternate" hreflang="zh-CN" href="https://enttec.com.cn/store-policy/" /> 141<link rel="alternate" hreflang="x-default" href="https://www.enttec.com/store-policy/" /> 142<!-- /ENTTEC cross-region hreflang --> 143<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.enttec.com.au/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.enttec.com.au%2Fstore-policy%2F" /> 144<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.enttec.com.au/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.enttec.com.au%2Fstore-policy%2F&format=xml" />
145<script>window.EMU_PREVIEW_MANIFEST={"version":"26.901.2-preview","channel":"preview","buildDate":"2026-09-01T08:52:06Z","downloads":{"win-x64":"EMU-26.901.2-preview-win-x64.exe","osx-arm64":"EMU-26.901.2-preview-osx-arm64.pkg","osx-x64":"EMU-26.901.2-preview-osx-x64.pkg"}};</script>
145<script> 146var wpo_server_info_css = {"user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/145.0.0.0 Safari\/537.36 (compatible; meta-externalagent\/1.1 (+https:\/\/developers.facebook.com\/docs\/sharing\/webmasters\/crawler))"} 147 var wpo_mine98e1681=document.createElement("link");wpo_mine98e1681.rel="stylesheet",wpo_mine98e1681.type="text/css",wpo_mine98e1681.media="async",wpo_mine98e1681.href="https://www.enttec.com.au/wp-admin/css/common.min.css?ver=6.9.5",wpo_mine98e1681.onload=function() {wpo_mine98e1681.media="all"},document.getElementsByTagName("head")[0].appendChild(wpo_mine98e1681); 148</script>
vendor: 1 bytes, line 148
148
149<script> 150var wpo_server_info_css = {"user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/145.0.0.0 Safari\/537.36 (compatible; meta-externalagent\/1.1 (+https:\/\/developers.facebook.com\/docs\/sharing\/webmasters\/crawler))"} 151 var wpo_min7754227e=document.createElement("link");wpo_min7754227e.rel="stylesheet",wpo_min7754227e.type="text/css",wpo_min7754227e.media="async",wpo_min7754227e.href="https://www.enttec.com.au/wp-content/plugins/enttec-plugin/blocks/blocks-editor.css?ver=6.9.5",wpo_min7754227e.onload=function() {wpo_min7754227e.media="all"},document.getElementsByTagName("head")[0].appendChild(wpo_min7754227e); 152</script>
vendor: 1 bytes, line 152
152
153<script> 154var wpo_server_info_css = {"user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/145.0.0.0 Safari\/537.36 (compatible; meta-externalagent\/1.1 (+https:\/\/developers.facebook.com\/docs\/sharing\/webmasters\/crawler))"} 155 var wpo_min7bd221ee=document.createElement("link");wpo_min7bd221ee.rel="stylesheet",wpo_min7bd221ee.type="text/css",wpo_min7bd221ee.media="async",wpo_min7bd221ee.href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css?ver=6.9.5",wpo_min7bd221ee.onload=function() {wpo_min7bd221ee.media="all"},document.getElementsByTagName("head")[0].appendChild(wpo_min7bd221ee); 156</script>
vendor: 1 bytes, line 156
156
157<script> 158var wpo_server_info_css = {"user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/145.0.0.0 Safari\/537.36 (compatible; meta-externalagent\/1.1 (+https:\/\/developers.facebook.com\/docs\/sharing\/webmasters\/crawler))"} 159 var wpo_mina3ab1d16=document.createElement("link");wpo_mina3ab1d16.rel="stylesheet",wpo_mina3ab1d16.type="text/css",wpo_mina3ab1d16.media="async",wpo_mina3ab1d16.href="https://www.enttec.com.au/wp-content/themes/eshop/style/select2.min.css?ver=1.0",wpo_mina3ab1d16.onload=function() {wpo_mina3ab1d16.media="all"},document.getElementsByTagName("head")[0].appendChild(wpo_mina3ab1d16); 160</script>
vendor: 1 bytes, line 160
160
161<script> 162var wpo_server_info_css = {"user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/145.0.0.0 Safari\/537.36 (compatible; meta-externalagent\/1.1 (+https:\/\/developers.facebook.com\/docs\/sharing\/webmasters\/crawler))"} 163 var wpo_min493c23d2=document.createElement("link");wpo_min493c23d2.rel="stylesheet",wpo_min493c23d2.type="text/css",wpo_min493c23d2.media="async",wpo_min493c23d2.href="https://www.enttec.com.au/wp-content/themes/eshop/vendor/fontawesome/css/all.min.css?ver=1791191999",wpo_min493c23d2.onload=function() {wpo_min493c23d2.media="all"},document.getElementsByTagName("head")[0].appendChild(wpo_min493c23d2); 164</script>
vendor: 1 bytes, line 164
164
165<script> 166var wpo_server_info_css = {"user_agent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/145.0.0.0 Safari\/537.36 (compatible; meta-externalagent\/1.1 (+https:\/\/developers.facebook.com\/docs\/sharing\/webmasters\/crawler))"} 167 var wpo_min06ee2594=document.createElement("link");wpo_min06ee2594.rel="stylesheet",wpo_min06ee2594.type="text/css",wpo_min06ee2594.media="async",wpo_min06ee2594.href="https://www.enttec.com.au/wp-content/themes/eshop/vendor/fontawesome/css/v4-shims.min.css?ver=1791191999",wpo_min06ee2594.onload=function() {wpo_min06ee2594.media="all"},document.getElementsByTagName("head")[0].appendChild(wpo_min06ee2594); 168</script>
168 169<style id='wp-img-auto-sizes-contain-inline-css' type='text/css'> 170img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 171/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 172</style> 173<style class="optimize_css_2" type="text/css" media="all">.featured-posts a{position:relative;display:block}.featured-posts a:hover h4{opacity:1;transform:scale(1)}.featured-posts a h4{position:absolute;top:0;width:100%;height:100%;text-align:center;padding:1em;font-size:2em;background-color:rgb(255 255 255 / .7);transform:scale(1.1);opacity:0;transition:all .3s;display:flex;justify-content:center;align-items:center}</style> 174<style id='enttec-design-system-inline-css' type='text/css'> 175:root{ 176 /* ---- brand colour (stable; legal/EMU/etc. consume these) ---- */ 177 --enttec-blue:#0ea5df; 178 --enttec-blue-hover:#0b87b8; 179 --enttec-ink:#2f2f2f; 180 --enttec-dark:#2f2f2f; /* real ENTTEC charcoal for dark full-bleed bands */ 181 --enttec-muted:#5b6573; 182 --enttec-grey:#f5f5f5; 183 --enttec-panel:#F6F8FB; /* canonical (was #f7f9fc; unifies #f7f9fc/#f6f9fb) */ 184 --enttec-line:rgba(0,0,0,.08); 185 --enttec-success:#1A8A4F; /* canonical (unifies #28a745/#1a7f37) */ 186 --enttec-danger:#B42318; /* canonical (unifies #dc3545/#b42318/#d0011b) */ 187 --emu-purple:#7f54b3; /* product sub-accent - EMU page only (legacy) */ 188 --emu-purple-hover:#6c459b; 189 /* ---- news category sub-palette ---- */ 190 --enttec-cat-story:#2E8FB8; 191 --enttec-cat-focus:#7E6BB5; 192 --enttec-cat-product:#2FA98A; 193 --enttec-cat-guide:#C2913E; 194 --enttec-cat-newsletter:#C56B86; 195 /* ---- type families ---- 196 NOT shipped by OMGF, whatever an earlier comment here claimed. Both families are 197 self-hosted in the theme (eshop/vendor/fonts/css/montserrat.css and 198 source-sans-3.css) and registered by enttec_theme_register_display_fonts(). 199 Whether they are actually LOADED on a given page is decided by 200 enttec_theme_display_fonts() (the ENTTEC_DISPLAY_FONTS ship-dark constant, 201 defaulting to CN only) plus the page-scoped enqueues for account, checkout, 202 licences, the EMU bundle popups and the lifted product pages. 203 That matters when reading the fallbacks below: neither stack contains Fira Sans, 204 so on a region and page where these are NOT loaded, every consumer of these two 205 tokens (blog articles, the news index, project pages, the 2026 product pages) 206 renders in system-ui, i.e. the OS UI face, not in the theme's Fira Sans. ---- */ 207 --enttec-font-display:'Montserrat',system-ui,sans-serif; 208 --enttec-font-body:'Source Sans 3',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif; 209 /* ---- legacy shape tokens (kept stable for existing consumers) ---- */ 210 --enttec-radius:14px; 211 --enttec-radius-lg:22px; 212 --enttec-radius-pill:100px; 213 /* ---- system type scale (one unified scale, spec §10.3) ---- */ 214 --eds-h1:clamp(32px,4.2vw,48px); 215 --eds-h2:clamp(24px,2.4vw,30px); 216 --eds-h3:clamp(20px,2vw,24px); 217 --eds-text-body:16.5px; 218 /* ---- system spacing (fluid) ---- */ 219 --eds-space-2xs:clamp(6px,1vw,10px); 220 --eds-space-xs:clamp(10px,1.5vw,16px); 221 --eds-space-sm:clamp(16px,2vw,24px); 222 --eds-space-md:clamp(24px,3vw,40px); 223 --eds-space-lg:clamp(32px,5vw,72px); 224 --eds-section-y:clamp(60px,8vw,110px); 225 --eds-gap-card:clamp(24px,3vw,40px); 226 /* ---- system shape / shadow / motion / container ---- */ 227 --eds-radius-sm:10px; 228 --eds-radius:15px; 229 --eds-radius-lg:20px; 230 --eds-radius-btn:28px; 231 --eds-shadow-card:0 1px 2px rgba(0,0,0,.05); 232 --eds-shadow-lift:0 18px 40px -20px rgba(16,40,60,.35); 233 --eds-ease:cubic-bezier(.22,.61,.36,1); 234 --eds-dur-fast:.2s; 235 --eds-dur:.3s; 236 --eds-dur-slow:.6s; 237 --eds-container:1760px; 238 --eds-container-pad:clamp(16px,4vw,40px); 239} 240/*# sourceURL=enttec-design-system-inline-css */ 241</style> 242<style id='wp-block-library-inline-css' type='text/css'> 243:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}
243.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}.has-text-align-center{text-align:center}.has-text-align-left{text-align:left}.has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-wrap:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 244 245/*# sourceURL=wp-block-library-inline-css */ 246</style> 247<style id='classic-theme-styles-inline-css' type='text/css'> 248/*! This file is auto-generated */ 249.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 250/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 251</style> 252<style id='global-styles-inline-css' type='text/css'> 253:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
2530) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
253.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 254/*# sourceURL=global-styles-inline-css */ 255</style> 256 257<style class="optimize_css_2" type="text/css" media="all">body{box-sizing:border-box}.dashicons{font-family:dashicons!important}.bBlocksInnerContent h1{font-size:20px!important}.bBlocksInnerContent h2{font-size:19px!important}.bBlocksInnerContent h3{font-size:18px!important}.bBlocksInnerContent h4{font-size:17px!important}.bBlocksInnerContent h5{font-size:16px!important}.bBlocksInnerContent a,.bBlocksInnerContent button,.bBlocksInnerContent div,.bBlocksInnerContent h6,.bBlocksInnerContent mark,.bBlocksInnerContent p,.bBlocksInnerContent span{font-size:15px!important}.bBlocksInnerContent *{font-family:inherit!important}.columns-1{grid-template-columns:repeat(1,1fr)}.cols-1{-moz-columns:1;column-count:1}.columns-2{grid-template-columns:repeat(2,1fr)}.cols-2{-moz-columns:2;column-count:2}.columns-3{grid-template-columns:repeat(3,1fr)}.cols-3{-moz-columns:3;column-count:3}.columns-4{grid-template-columns:repeat(4,1fr)}.cols-4{-moz-columns:4;column-count:4}.columns-5{grid-template-columns:repeat(5,1fr)}.cols-5{-moz-columns:5;column-count:5}.columns-6{grid-template-columns:repeat(6,1fr)}.cols-6{-moz-columns:6;column-count:6}.columns-7{grid-template-columns:repeat(7,1fr)}.cols-7{-moz-columns:7;column-count:7}.columns-8{grid-template-columns:repeat(8,1fr)}.cols-8{-moz-columns:8;column-count:8}.columns-9{grid-template-columns:repeat(9,1fr)}.cols-9{-moz-columns:9;column-count:9}.columns-10{grid-template-columns:repeat(10,1fr)}.cols-10{-moz-columns:10;column-count:10}.columns-11{grid-template-columns:repeat(11,1fr)}.cols-11{-moz-columns:11;column-count:11}.columns-12{grid-template-columns:repeat(12,1fr)}.cols-12{-moz-columns:12;column-count:12}@media only screen and (max-width:1024px){.columns-tablet-1{grid-template-columns:repeat(1,1fr)}.cols-tablet-1{-moz-columns:1;column-count:1}.columns-tablet-2{grid-template-columns:repeat(2,1fr)}.cols-tablet-2{-moz-columns:2;column-count:2}.columns-tablet-3{grid-template-columns:repeat(3,1fr)}.cols-tablet-3{-moz-columns:3;column-count:3}.columns-tablet-4{grid-template-columns:repeat(4,1fr)}.cols-tablet-4{-moz-columns:4;column-count:4}.columns-tablet-5{grid-template-columns:repeat(5,1fr)}.cols-tablet-5{-moz-columns:5;column-count:5}.columns-tablet-6{grid-template-columns:repeat(6,1fr)}.cols-tablet-6{-moz-columns:6;column-count:6}.columns-tablet-7{grid-template-columns:repeat(7,1fr)}.cols-tablet-7{-moz-columns:7;column-count:7}.columns-tablet-8{grid-template-columns:repeat(8,1fr)}.cols-tablet-8{-moz-columns:8;column-count:8}.columns-tablet-9{grid-template-columns:repeat(9,1fr)}.cols-tablet-9{-moz-columns:9;column-count:9}.columns-tablet-10{grid-template-columns:repeat(10,1fr)}.cols-tablet-10{-moz-columns:10;column-count:10}.columns-tablet-11{grid-template-columns:repeat(11,1fr)}.cols-tablet-11{-moz-columns:11;column-count:11}.columns-tablet-12{grid-template-columns:repeat(12,1fr)}.cols-tablet-12{-moz-columns:12;column-count:12}}@media only screen and (max-width:640px){.columns-mobile-1{grid-template-columns:repeat(1,1fr)}.cols-mobile-1{-moz-columns:1;column-count:1}.columns-mobile-2{grid-template-columns:repeat(2,1fr)}.cols-mobile-2{-moz-columns:2;column-count:2}.columns-mobile-3{grid-template-columns:repeat(3,1fr)}.cols-mobile-3{-moz-columns:3;column-count:3}.columns-mobile-4{grid-template-columns:repeat(4,1fr)}.cols-mobile-4{-moz-columns:4;column-count:4}.columns-mobile-5{grid-template-columns:repeat(5,1fr)}.cols-mobile-5{-moz-columns:5;column-count:5}.columns-mobile-6{grid-template-columns:repeat(6,1fr)}.cols-mobile-6{-moz-columns:6;column-count:6}.columns-mobile-7{grid-template-columns:repeat(7,1fr)}.cols-mobile-7{-moz-columns:7;column-count:7}.columns-mobile-8{grid-template-columns:repeat(8,1fr)}.cols-mobile-8{-moz-columns:8;column-count:8}.columns-mobile-9{grid-template-columns:repeat(9,1fr)}.cols-mobile-9{-moz-columns:9;column-count:9}.columns-mobile-10{grid-template-columns:repeat(10,1fr)}
257.cols-mobile-10{-moz-columns:10;column-count:10}.columns-mobile-11{grid-template-columns:repeat(11,1fr)}.cols-mobile-11{-moz-columns:11;column-count:11}.columns-mobile-12{grid-template-columns:repeat(12,1fr)}.cols-mobile-12{-moz-columns:12;column-count:12}}.bBlocksTextHighlight{background-color:#beff14;border-radius:3px;color:#333;padding:.2em}.bBlocksTextUppercase{text-transform:uppercase}.bBlocksTextUnderline{text-decoration:underline}.bBlocksTextOverline{text-decoration:overline}.bBlocks-carousel-wrapper,.bBlocksColumn,.wp-block-b-blocks-carousel,.wp-block-b-blocks-carousel .swiper,.wp-block-b-blocks-column{min-width:0;width:100%}</style> 258<style id='woocommerce-inline-inline-css' type='text/css'> 259.woocommerce form .form-row .required { visibility: visible; } 260/*# sourceURL=woocommerce-inline-inline-css */ 261</style> 262<link rel='stylesheet' id='lenis-style-css' href='https://cdn.enttec.com/website/css/vendor/lenis.css?ver=1.1.13' media='all' /> 263<style class="optimize_css_2" type="text/css" media="all">.enttec-geo-bar{position:fixed;top:var(--enttec-adminbar-h,0);left:0;right:0;z-index:1000000;background:#075f80;color:#fff;box-shadow:0 2px 12px rgb(0 0 0 / .18);font-family:inherit;font-size:14px;line-height:1.45}.enttec-geo-bar__inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;flex-wrap:nowrap;gap:12px;padding:9px 20px}.enttec-geo-bar__icon{flex:none;width:18px;height:18px;opacity:.95}.enttec-geo-bar__msg{flex:1 1 auto;min-width:0}.enttec-geo-bar__back{flex:none;display:inline-block;background:rgb(255 255 255 / .15);border:1px solid rgb(255 255 255 / .3);color:#fff;font-weight:600;white-space:nowrap;text-decoration:none;padding:7px 16px;border-radius:999px;transition:background .15s ease,border-color .15s ease}.enttec-geo-bar__back:hover,.enttec-geo-bar__back:focus-visible{background:rgb(255 255 255 / .28);border-color:rgb(255 255 255 / .5);color:#fff}.enttec-geo-bar__close{flex:none;background:#fff0;border:0;color:#fff;font-size:20px;line-height:1;cursor:pointer;width:40px;height:40px;border-radius:50%;opacity:.85;margin-left:-6px;transition:background .15s ease,opacity .15s ease}.enttec-geo-bar__close:hover,.enttec-geo-bar__close:focus-visible{background:rgb(255 255 255 / .18);opacity:1}.enttec-geo-bar--anim{transform:translateY(-100%);transition:transform .3s cubic-bezier(.22,1,.36,1)}.enttec-geo-bar--anim.enttec-geo-bar--in{transform:translateY(0)}.enttec-geo-bar--anim.enttec-geo-bar--out{transform:translateY(-100%)}@media (max-width:600px){.enttec-geo-bar{font-size:12.5px}.enttec-geo-bar__inner{gap:9px;padding:6px 14px}.enttec-geo-bar__icon{display:none}.enttec-geo-bar__msg{line-height:1.3}.enttec-geo-bar__msg-tail{display:none}.enttec-geo-bar__back{padding:5px 12px}.enttec-geo-bar__back-tail{display:none}.enttec-geo-bar__close{width:34px;height:34px;font-size:18px;margin-left:-4px}}@media (prefers-reduced-motion:reduce){.enttec-geo-bar--anim{transition:none}}.enttec-geo-pill{position:fixed;top:18px;left:50%;transform:translate(-50%,-160%);z-index:1000001;display:flex;align-items:center;gap:10px;background:rgb(13 19 25 / .96);color:#fff;padding:10px 18px;border-radius:999px;font-family:inherit;font-size:14px;font-weight:500;line-height:1;box-shadow:0 16px 40px -16px rgb(0 0 0 / .55);opacity:0;transition:transform .35s cubic-bezier(.22,1,.36,1),opacity .25s ease}.enttec-geo-pill--in{transform:translate(-50%,0);opacity:1}.enttec-geo-pill__ring{width:15px;height:15px;border-radius:50%;flex:none;border:2px solid rgb(255 255 255 / .25);border-top-color:#0ea5de;animation:enttec-geo-pill-spin .7s linear infinite}@keyframes enttec-geo-pill-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.enttec-geo-pill{transition:none}.enttec-geo-pill__ring{animation:none}}</style> 264<style class="optimize_css_2" type="text/css" media="all">.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:#fff0}.slick-list{position:relative;display:block;overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:none}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-track,.slick-slider .slick-list{-webkit-transform:translate3d(0,
2640,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{position:relative;top:0;left:0;display:block;margin-left:auto;margin-right:auto}.slick-track:before,.slick-track:after{display:table;content:''}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir='rtl'] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid #fff0}.slick-arrow.slick-hidden{display:none}.slick-loading .slick-list{background:#fff url(https://www.enttec.com.au/wp-content/themes/eshop/style/images/ajax-loader.gif) center center no-repeat}.slick-prev,.slick-next{font-size:0;line-height:0;position:absolute;top:50%;display:block;width:20px;height:20px;padding:0;-webkit-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%);cursor:pointer;z-index:111;color:#000;border:none;outline:none;background:#fff0}.slick-prev:hover,.slick-prev:focus,.slick-next:hover,.slick-next:focus{color:#fff0;outline:none;background:#fff0}.slick-prev:hover:before,.slick-prev:focus:before,.slick-next:hover:before,.slick-next:focus:before{opacity:1}.slick-prev.slick-disabled:before,.slick-next.slick-disabled:before{opacity:.25}.slick-prev:before,.slick-next:before{font-size:20px;line-height:1;opacity:.75;color:#000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:none!important}.slick-prev{left:0}[dir='rtl'] .slick-prev{right:0;left:auto}.slick-next{right:0}[dir='rtl'] .slick-next{right:auto;left:0}.slick-dotted.slick-slider{margin-bottom:30px}.slick-dots{position:absolute;bottom:-25px;display:block;width:100%;padding:0;margin:0;list-style:none;text-align:center}.slick-dots li{position:relative;display:inline-block;width:20px;height:20px;margin:0 5px;padding:0;cursor:pointer}.slick-dots li button{font-size:0;line-height:0;display:block;width:20px;height:20px;padding:5px;cursor:pointer;color:#fff0;border:0;outline:none;background:#fff0}.slick-dots li button:hover,.slick-dots li button:focus{outline:none}</style> 265<style class="optimize_css_2" type="text/css" media="all"></style> 266<style class="optimize_css_2" type="text/css" media="all">.emu_download{display:block;position:fixed;width:100%;height:100%;top:-100%;left:0;bottom:0;overflow:hidden;z-index:9999999;background-color:rgb(35 35 40 / .85);color:#e5e5e5}.emu_download.show{top:0}.emu_download_scroll{overflow:auto;height:100%;max-height:95%;-ms-overflow-style:none;scrollbar-width:none}.emu_download_scroll::-webkit-scrollbar{display:none}.emu_download_container{max-width:768px;padding:32px 16px;position:relative;right:-4000px;opacity:0;margin-left:auto;background-color:#2d2e33;height:100%;-webkit-transition:right 1s,opacity 1s;transition:right 1s,opacity 1s;animation:light 15s infinite}@media(min-width:480px){.emu_download_container{padding:64px 24px}}@media(min-width:768px){.emu_download_container{padding:64px 32px}}@media(min-width:1280px){.emu_download_container{max-width:960px;padding:64px 10% 64px 48px}}.emu_download_container.active{right:0;opacity:1;-webkit-transition:right 1s,opacity 1s;transition:right 1s,opacity 1s}.emu_download_top{display:flex;width:100%;margin-bottom:1.5em}.emu_download_top h2{margin:0 auto 0 0;padding:0;color:#e5e5e5}.emu_download_close{cursor:pointer;position:relative;width:32px;height:32px;opacity:.3}.emu_download_close:hover{opacity:1}.emu_download_close:before,.emu_download_close:after{position:absolute;left:15px;content:" ";height:33px;width:2px;background-color:#fff}.emu_download_close:before{transform:rotate(45deg)}.emu_download_close:after{transform:rotate(-45deg)}.emu_download_close_button{transition:all .3s;display:block;line-height:2em!important;width:100%;padding:8px 2.5em;background-color:#2d67b2!important;color:#fff;font-weight:700;border-radius:4px;opacity:.8;margin-bottom:24px;text-align:center}.emu_download_close_button:hover{opacity:1;color:#fff}@media(min-width:640px){.emu_download_close_button{display:inline-block;width:auto}}.emu_download_text{margin-bottom:24px}.emu_download_form{padding-bottom:32px;position:relative}.emu_download_form:after{content:"";opacity:0;display:block;height:125px;background-repeat:no-repeat;background-size:contain;background-position:center;background-image:url(https://www.enttec.com.au/wp-content/themes/eshop/style/images/EMU_logo_trans.png);transition:opacity 2s;transition-delay:1s}@media(min-width:640px){.emu_download_form:after{position:absolute;bottom:50px;right:0;width:40%}}.emu_download .emu_download_container.active .emu_download_form:after{opacity:1!important}.emu_download .gform_title,.emu_download .gform_heading{display:none!important}.emu_download .gfield_label{color:#b7bad6;font-weight:400!important;font-size:14px!important;margin-bottom:4px!important}.emu_download .gfield_label .gfield_required{color:#9d7df8}.emu_download .gfield_error label,.emu_download .gfield_error legend{color:#b7bad6}.emu_download .gfield input,.emu_download .gfield select{background-color:rgb(229 229 229 / .1);border-radius:4px;outline:none;border:1px solid #516176;line-height:1.2!important;padding:.8em 1em!important;color:#fff!important}.emu_download .gfield input:focus,.emu_download .gfield select:focus{border:1px solid #15a6df}.emu_download .gfield input[type=checkbox]{position:absolute;z-index:-1;opacity:0}
266.emu_download .gfield input[type=checkbox]+label{display:inline-flex;align-items:center;user-select:none}.emu_download .gfield input[type=checkbox]+label:before{content:"";display:inline-block;width:24px;height:24px;flex-shrink:0;flex-grow:0;border-radius:4px;margin-right:.75em;background-repeat:no-repeat;background-position:center center;background-size:50% 50%;border:1px solid #516176}.emu_download .gfield input[type=checkbox]:checked+label:before{border-color:#0b76ef;background-color:#2d67b2;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.emu_download .gform_wrapper .gfield_error [aria-invalid=true]{border:1px solid #9d7df8!important}.emu_download .validation_message{font-size:13px!important;background:#fff0;border:0;padding:0!important;color:#9d7df8}.emu_download .gform_wrapper input[type=button],.emu_download .gform_wrapper input[type=submit]{line-height:2em!important;width:100%;padding:8px 2.5em;background-color:#2d67b2!important;color:#fff}.emu_download .gform_wrapper input[type=button]:hover,.emu_download .gform_wrapper input[type=submit]:hover{color:#fff!important}@media(min-width:640px){.emu_download .gform_wrapper input[type=button],.emu_download .gform_wrapper input[type=submit]{width:auto}}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-single{font-size:15px;padding:.8em 1em!important;border-radius:4px!important;height:auto!important;background-image:none;background-color:rgb(229 229 229 / .1);outline:none;border:1px solid #516176;box-shadow:none!important;color:#fff}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-single span{padding:0;line-height:1.2em!important;margin-bottom:0!important}.emu_download .gform_wrapper.gravity-theme .chosen-container-single.chosen-container-active .chosen-single{box-shadow:none!important;border:1px solid #15a6df}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-drop{margin-top:4px;border:0!important;border-radius:4px!important;background-color:#23282d}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-search{padding:8px!important}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-search input{padding:.5em 1em!important;background-color:#fff;background-image:none!important;border:1px solid #516176;border-radius:4px;background-color:rgb(229 229 229 / .1)}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results{max-height:200px!important}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgb(0 0 0 / .1);background-color:#f5f5f5}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results::-webkit-scrollbar{width:6px;background-color:#f5f5f5;margin-left:4px}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results::-webkit-scrollbar-thumb{background-color:#15a6df}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results li{font-size:14px;line-height:2em;margin-right:4px;color:hsl(0 0% 100% / .5)}.emu_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results li.highlighted{border-radius:4px;background-image:none;background-color:#0b76ef;color:#fff}.emu_download .emu_download_region .chosen-search{display:none}@media(min-width:640px){.emu_download .gform_confirmation_message_13{max-width:55%}}.emu_download .gform_submission_error{color:#fff!important;font-weight:400!important}.emu_download .gform_validation_errors{background:#ff6a6a;border:1px solid #c35137;padding:4px 16px 4px 48px;margin-bottom:24px}.emu_download input:-webkit-autofill,.emu_download input:-webkit-autofill:hover,.emu_download input:-webkit-autofill:focus,.emu_download input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 3
2660px #fff inset!important}@-webkit-keyframes light{0%{-webkit-box-shadow:-100px 0 60px 100px rgb(37 107 144 / .15)}15%{-webkit-box-shadow:-100px 0 100px 100px rgb(217 27 145 / .15)}45%{-webkit-box-shadow:-100px 0 100px 100px rgb(86 37 144 / .15)}65%{-webkit-box-shadow:-100px 0 75px 100px rgb(129 37 144 / .15)}85%{-webkit-box-shadow:-100px 0 150px 100px rgb(10 79 171 / .15)}100%{-webkit-box-shadow:-100px 0 60px 100px rgb(37 107 144 / .15)}}@keyframes light{0%{box-shadow:-100px 0 100px 100px rgb(37 107 144 / .15)}15%{box-shadow:-100px 0 100px 100px rgb(217 27 145 / .15)}45%{box-shadow:-100px 0 100px 100px rgb(86 37 144 / .15)}65%{box-shadow:-100px 0 75px 100px rgb(129 37 144 / .15)}85%{box-shadow:-100px 0 150px 100px rgb(10 79 171 / .15)}100%{box-shadow:-100px 0 100px 100px rgb(37 107 144 / .15)}}</style> 267<style class="optimize_css_2" type="text/css" media="all">.elm_download{display:block;position:fixed;width:100%;height:100%;top:-100%;left:0;bottom:0;overflow:hidden;z-index:9999999;background-color:rgb(35 35 40 / .85);color:#444}.elm_download.show{top:0}.elm_download_scroll{overflow:auto;height:100%;max-height:95%;-ms-overflow-style:none;scrollbar-width:none}.elm_download_scroll::-webkit-scrollbar{display:none}.elm_download_container{max-width:768px;padding:32px 16px;position:relative;right:-4000px;opacity:0;margin-left:auto;background-color:#fff;height:100%;-webkit-transition:right 1s,opacity 1s;transition:right 1s,opacity 1s;animation:light 15s infinite}@media (min-width:480px){.elm_download_container{padding:64px 24px}}@media (min-width:768px){.elm_download_container{padding:64px 32px}}@media (min-width:1280px){.elm_download_container{max-width:960px;padding:64px 10% 64px 48px}}.elm_download_container.active{right:0;opacity:1;-webkit-transition:right 1s,opacity 1s;transition:right 1s,opacity 1s}.elm_download_top{display:flex;width:100%;margin-bottom:1.5em}.elm_download_top h2{margin:0 auto 0 0;padding:0;color:#444}.elm_download_close{cursor:pointer;position:relative;width:32px;height:32px;opacity:.3}.elm_download_close:hover{opacity:1}.elm_download_close:before,.elm_download_close:after{position:absolute;left:15px;content:" ";height:33px;width:2px;background-color:#000}.elm_download_close:before{transform:rotate(45deg)}.elm_download_close:after{transform:rotate(-45deg)}.elm_download_close_button{transition:all 0.3s;display:block;line-height:2em!important;width:100%;padding:8px 2.5em;background-color:#2D67B2!important;color:white!important;font-weight:700;border-radius:4px;opacity:.8;margin-bottom:24px;text-align:center}.elm_download_close_button:hover{opacity:1;color:#fff}@media (min-width:640px){.elm_download_close_button{display:inline-block;width:auto}}.elm_download_text{margin-bottom:24px}.elm_download_form{min-height:160px;padding-bottom:32px;position:relative}.elm_download_form:after{content:"";opacity:0;display:block;height:160px;background-repeat:no-repeat;background-size:contain;background-position:center;background-image:url(https://www.enttec.com.au/wp-content/themes/eshop/style/images/ELM_logo.png);transition:opacity 2s;transition-delay:1s}@media (min-width:640px){.elm_download_form:after{position:absolute;bottom:50px;right:0;width:15%}}.elm_download .elm_download_container.active .elm_download_form:after{opacity:1!important}.elm_download .gform_title,.elm_download .gform_heading{display:none!important}.elm_download .gfield_label{color:#676767;font-weight:400!important;font-size:14px!important;margin-bottom:4px!important}.elm_download .gfield_label .gfield_required{color:#f13955}.elm_download .gfield_error label,.elm_download .gfield_error legend{color:#c35137}.elm_download .gfield input,.elm_download .gfield select{background-color:rgb(229 229 229 / .1);border-radius:4px;outline:none;border:1px solid #959595;line-height:1.2!important;padding:.8em 1em!important;color:#444444!important}.elm_download .gfield input:focus,.elm_download .gfield select:focus{border:1px solid #15a6df}.elm_download .gfield input[type=checkbox]{position:absolute;z-index:-1;opacity:0}.elm_download .gfield input[type=checkbox]+label{display:inline-flex;align-items:center;user-select:none}.elm_download .gfield input[type=checkbox]+label:before{content:"";display:inline-block;width:24px;height:24px;flex-shrink:0;flex-grow:0;border-radius:4px;margin-right:.75em;background-repeat:no-repeat;background-position:center center;background-size:50% 50%;border:1px solid #959595}.elm_download .gfield input[type=checkbox]:checked+label:before{border-color:#0b76ef;background-color:#2D67B2;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.elm_download .gform_wrapper .gfield_error [aria-invalid=true]{border:1px solid #c35137!important}.elm_download .validation_message{font-size:13px!important;background:#fff0;border:0;padding:0!important;color:#c35137}.elm_download .gform_wrapper input[type=button],.elm_download .gform_wrapper input[type=submit]{line-height:2em!important;width:100%;padding:8px 2.5em;background-color:#2D67B2!important;color:#fff}.elm_download .gform_wrapper input[type=button]:hover,.elm_download .gform_wrapper input[type=submit]:hover{color:white!important}@media (min-width:640px){.elm_download .gform_wrapper input[type=button],.elm_download .gform_wrapper input[type=submit]{width:auto}}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-single{font-size:15px;padding:.8em 1em!important;border-radius:4px!important;height:auto!important;background-image:none;background-color:rgb(229 229 229 / .1);outline:none;border:1px solid #959595;box-shadow:none!important;color:#444}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-single span{padding:0;line-height:1.2em!important;margin-bottom:0!important}.elm_download .gform_wrapper.gravity-theme .chosen-container-single.chosen-container-active .chosen-single{box-shadow:none!important;border:1px solid #15a6df}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-drop{margin-top:4px;border:0!important;border-radius:4px!important;background-color:#f8f8f8}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-search{padding:8px!important}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-search input{padding:.5em 1em!important;background-color:#fff;background-image:none!important;border:1px solid #959595;border-radius:4px;background-color:rgb(229 229 229 / .1)}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results{max-height:200px!important}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgb(0 0 0 / .1);background-color:#F5F5F5}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results::-webkit-scrollbar{width:6px;background-color:#F5F5F5;margin-left:4px}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results::-webkit-scrollbar-thumb{background-color:#15a6df}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results li{font-size:14px;line-height:2em;margin-right:4px;color:#444}.elm_download .gform_wrapper.gravity-theme .chosen-container-single .chosen-results li.highlighted{border-radius:4px;background-image:none;background-color:#0b76ef;color:#fff}.elm_download .elm_download_region .chosen-search{display:none}@media (min-width:640px){.elm_download .gform_confirmation_message_13{max-width:55%}}.elm_download .gform_submission_error{color:#fff!important;font-weight:400!important}.elm_download .gform_validation_errors{background:#ff6a6a;border:1px solid #c35137;padding:4px 16px 4px 48px;margin-bottom:24px}.elm_download input:-webkit-autofill,.elm_download input:-webkit-autofill:hover,.elm_download input:-webkit-autofill:focus,.elm_download input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 3
2670px #fff inset!important}@-webkit-keyframes light{0%{-webkit-box-shadow:-100px 0 60px 100px rgb(37 107 144 / .15)}15%{-webkit-box-shadow:-100px 0 100px 100px rgb(217 27 145 / .15)}45%{-webkit-box-shadow:-100px 0 100px 100px rgb(86 37 144 / .15)}65%{-webkit-box-shadow:-100px 0 75px 100px rgb(129 37 144 / .15)}85%{-webkit-box-shadow:-100px 0 150px 100px rgb(10 79 171 / .15)}100%{-webkit-box-shadow:-100px 0 60px 100px rgb(37 107 144 / .15)}}@keyframes light{0%{box-shadow:-100px 0 100px 100px rgb(37 107 144 / .15)}15%{box-shadow:-100px 0 100px 100px rgb(217 27 145 / .15)}45%{box-shadow:-100px 0 100px 100px rgb(86 37 144 / .15)}65%{box-shadow:-100px 0 75px 100px rgb(129 37 144 / .15)}85%{box-shadow:-100px 0 150px 100px rgb(10 79 171 / .15)}100%{box-shadow:-100px 0 100px 100px rgb(37 107 144 / .15)}}</style> 268<style class="optimize_css_2" type="text/css" media="all">.enttec-locale-switcher{position:relative;display:inline-flex;align-items:center;vertical-align:middle;margin:0 .25rem;line-height:1}body .enttec-locale-switcher .enttec-locale-switcher__toggle,.enttec-locale-switcher .enttec-locale-switcher__toggle{display:inline-flex!important;align-items:center!important;gap:0.4rem!important;background:transparent!important;border:1px solid rgb(0 0 0 / .5)!important;border-radius:50rem!important;padding:.5rem 1.25rem!important;margin:0!important;font-size:14px!important;line-height:1.5!important;color:inherit!important;cursor:pointer!important;height:auto!important;box-shadow:none!important;transition:background-color .15s ease,color .15s ease,border-color .15s ease;-webkit-appearance:none;appearance:none}.enttec-locale-switcher .enttec-locale-switcher__toggle:hover,.enttec-locale-switcher .enttec-locale-switcher__toggle[aria-expanded="true"]{background-color:#343a40!important;color:#fff!important;border-color:#343a40!important}.enttec-locale-switcher .enttec-locale-switcher__toggle:focus{outline:none!important;box-shadow:0 0 0 3px rgb(52 58 64 / .15)!important}.enttec-locale-switcher__globe{font-size:14px;opacity:.75}.enttec-locale-switcher__current{line-height:1.5;white-space:nowrap}.enttec-locale-switcher__chevron{display:inline-flex;align-items:center;margin-left:.15rem;opacity:.7}.enttec-locale-switcher__chevron svg{display:block;width:10px;height:6px}.enttec-locale-switcher__menu{position:absolute;top:calc(100% + 6px);right:0;z-index:1050;list-style:none;margin:0;padding:6px 0;min-width:100%;background:#fff;border:1px solid rgb(0 0 0 / .08);border-radius:12px;box-shadow:0 8px 24px rgb(0 0 0 / .12),0 2px 6px rgb(0 0 0 / .06);font-size:14px;line-height:1.5;overflow:hidden}.enttec-locale-switcher__menu[hidden]{display:none!important}.enttec-locale-switcher__option{display:flex;align-items:center;padding:.5rem 1.25rem;cursor:pointer;color:#212529;white-space:nowrap;transition:background-color .12s ease}.enttec-locale-switcher__option:hover,.enttec-locale-switcher__option:focus{background-color:rgb(52 58 64 / .08)}.enttec-locale-switcher__option[aria-selected="true"]{background-color:rgb(52 58 64 / .12);font-weight:600}.enttec-locale-switcher__option[aria-selected="true"]::after{content:"â";margin-left:auto;padding-left:.75rem;color:#343a40;font-weight:600}.enttec-locale-switcher__option-label{line-height:1.5}.enttec-locale-switcher--single .enttec-locale-switcher__label{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1.25rem;font-size:14px;line-height:1.5;color:rgb(0 0 0 / .6);border:1px solid rgb(0 0 0 / .15);border-radius:50rem}.enttec-locale-switcher .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}</style> 269<style class="optimize_css_2" type="text/css" media="all">@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpMtKy2OAdR1K-IwhWudF-R3woqauLY1HY.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpMtKy2OAdR1K-IwhWudF-R3woqY-LY1HY.woff2) format('woff2');
269unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpMtKy2OAdR1K-IwhWudF-R3woqa-LY1HY.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpMtKy2OAdR1K-IwhWudF-R3woqZOLY1HY.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpMtKy2OAdR1K-IwhWudF-R3woqaOLY1HY.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpMtKy2OAdR1K-IwhWudF-R3woqaeLY1HY.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Source Sans 3';font-style:italic;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpMtKy2OAdR1K-IwhWudF-R3woqZ-LY.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpStKy2OAdR1K-IwhWudF-R3wIaZfrc.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpStKy2OAdR1K-IwhWudF-R3wsaZfrc.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpStKy2OAdR1K-IwhWudF-R3wMaZfrc.woff2) format('woff2');unicode-range:U+1F00-1FFF}@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpStKy2OAdR1K-IwhWudF-R3wwaZfrc.woff2) format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpStKy2OAdR1K-IwhWudF-R3wAaZfrc.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpStKy2OAdR1K-IwhWudF-R3wEaZfrc.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Source Sans 3';font-style:normal;font-weight:200 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/source-sans-3-nwpStKy2OAdR1K-IwhWudF-R3w8aZQ.woff2) format('woff2');
269unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}</style> 270<style class="optimize_css_2" type="text/css" media="all">@font-face{font-family:'Montserrat';font-style:italic;font-weight:100 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/montserrat-JTUQjIg1_i6t8kCHKm459WxRxC7mw9c.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Montserrat';font-style:italic;font-weight:100 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/montserrat-JTUQjIg1_i6t8kCHKm459WxRzS7mw9c.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Montserrat';font-style:italic;font-weight:100 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/montserrat-JTUQjIg1_i6t8kCHKm459WxRxi7mw9c.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Montserrat';font-style:italic;font-weight:100 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/montserrat-JTUQjIg1_i6t8kCHKm459WxRxy7mw9c.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Montserrat';font-style:italic;font-weight:100 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/montserrat-JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/montserrat-JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/montserrat-JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/montserrat-JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/montserrat-JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url(https://www.enttec.com.au/wp-content/themes/eshop/vendor/fonts/css/../files/montserrat-JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}</style> 271<link rel='stylesheet' id='swiper-css' href='https://www.enttec.com.au/wp-content/plugins/b-blocks/assets/css/swiper.min.css?ver=8.0.7' media='all' /> 272<style id='enttec-legal-inline-css' type='text/css'> 273.lgl-doc{--ink:var(--enttec-ink);--muted:var(--enttec-muted);--line:var(--enttec-line);--brand:var(--enttec-blue);
273--accent:var(--enttec-blue);--panel:var(--enttec-panel); 274 max-width:760px;margin:0 auto;padding:48px 22px 72px; 275 font-family:inherit; /* use the site's own font, not a system stack */ 276 color:var(--ink);font-size:17px;line-height:1.7;text-align:left;-webkit-font-smoothing:antialiased;} 277.lgl-doc *{box-sizing:border-box;} 278.lgl-banner{background:#fff8e6;border:1px solid #ecd9a0;border-left:4px solid #e0a800;border-radius:8px; 279 padding:14px 18px;margin:0 0 34px;font-size:15px;line-height:1.55;color:#5b4a17;} 280.lgl-banner strong{color:#3d3208;} 281.lgl-head{border-bottom:2px solid var(--line);padding-bottom:22px;margin-bottom:6px;} 282.lgl-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:15px; 283 background:rgba(14,165,223,.12);color:var(--brand);margin-bottom:18px;transform-origin:center; 284 animation:lgl-pop .55s cubic-bezier(.2,.7,.3,1) both, lgl-idle 5s ease-in-out 1.8s infinite; 285 transition:box-shadow .2s ease;} 286.lgl-icon svg{width:30px;height:30px;} 287.lgl-icon:hover{box-shadow:0 5px 16px rgba(14,165,223,.28);} 288/* draw-on: each stroke traces itself in (pathLength=1 normalises the length) */ 289.lgl-icon svg path{stroke-dasharray:1;stroke-dashoffset:1;animation:lgl-draw .9s ease .2s forwards;} 290.lgl-icon svg path:nth-of-type(2){animation-delay:.55s;} 291.lgl-icon svg path:nth-of-type(3){animation-delay:.7s;} 292.lgl-icon svg circle{opacity:0;animation:lgl-fade .35s ease 1s forwards;} 293@keyframes lgl-pop{from{opacity:0;transform:translateY(10px) scale(.8);}to{opacity:1;transform:none;}} 294@keyframes lgl-draw{to{stroke-dashoffset:0;}} 295@keyframes lgl-fade{to{opacity:1;}} 296/* gentle nudge once every 5s (rests ~4s, then a subtle bob + wiggle) */ 297@keyframes lgl-idle{0%,80%,100%{transform:translateY(0) rotate(0);}84%{transform:translateY(-4px) rotate(-5deg);}88%{transform:translateY(0) rotate(4deg);}92%{transform:translateY(-1px) rotate(-2deg);}96%{transform:translateY(0) rotate(0);}} 298.lgl-eyebrow{font-size:12.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--accent);font-weight:700;margin-bottom:9px;} 299.lgl-title{font-size:35px;line-height:1.12;font-weight:500;margin:0 0 11px;color:var(--ink);} 300.lgl-meta{font-size:14px;color:var(--muted);} 301.lgl-toc{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px 24px;margin:30px 0 44px;} 302.lgl-toc strong{display:block;font-size:12.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-bottom:12px;} 303.lgl-toc ul{list-style:none;margin:0;padding:0;columns:230px;column-gap:34px;} 304.lgl-toc li{margin:0 0 9px;break-inside:avoid;} 305.lgl-toc a{color:var(--ink);text-decoration:none;border-bottom:1px solid transparent;transition:color .15s,border-color .15s;} 306.lgl-toc a:hover,.lgl-toc a:focus{color:var(--accent);border-bottom-color:var(--brand);} 307.lgl-body h2{font-size:23px;font-weight:700;margin:46px 0 15px;line-height:1.25;scroll-margin-top:24px;} 308.lgl-body h3{font-size:18px;font-weight:600;margin:30px 0 10px;color:#2a3647;} 309.lgl-body h4{font-size:16px;font-weight:650;margin:22px 0 8px;color:var(--muted);} 310.lgl-body p{margin:0 0 16px;} 311.lgl-body ul,.lgl-body ol{margin:0 0 18px;padding-left:26px;} 312.lgl-body ul{list-style:disc outside !important;} 313.lgl-body ol{list-style:decimal outside !important;} 314.lgl-body li{display:list-item !important;list-style:inherit !important;margin:0 0 8px;padding-left:4px;} 315.lgl-body li::marker{color:var(--muted);} 316.lgl-body a{color:var(--accent);text-decoration:underline;text-underline-offset:2px;} 317.lgl-tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 0 24px;} 318.lgl-body blockquote{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;padding:16px 20px;margin:0 0 18px;} 319.lgl-body blockquote p:last-child{margin-bottom:0;} 320.lgl-body table{width:100%;min-width:520px;border-collapse:collapse;margin:0;font-size:15px;} 321.lgl-body th,.lgl-body td{border:1px solid var(--line);padding:9px 13px;text-align:left;vertical-align:top;} 322.lgl-body th{background:var(--panel);font-weight:650;} 323.lgl-body h2:target{background:#fff8e6;border-radius:6px;box-shadow:0 0 0 8px #fff8e6;} 324.lgl-idx ul{list-style:none;margin:0;padding:0;} 325.lgl-idx li{border:1px solid var(--line);border-radius:10px;padding:16px 20px;margin:0 0 14px;} 326.lgl-idx li a{font-size:19px;font-weight:650;color:var(--accent);text-decoration:none;} 327.lgl-idx li a:hover{text-decoration:underline;} 328/* Small muted qualifier, e.g. the timezone conversions under a deadline. */ 329.lgl-note{display:block;margin-top:5px;font-size:14px;color:var(--muted);line-height:1.5;} 330.lgl-idx .lgl-note{display:block;margin-top:6px;font-size:14.5px;color:var(--muted);line-height:1.5;} 331@media (max-width:600px){.lgl-doc{font-size:16px;padding:8px 16px 52px;}.lgl-title{font-size:27px;}.lgl-toc ul{columns:1;}} 332html{scroll-behavior:smooth;} 333@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}.lgl-toc a{transition:none;}.lgl-icon{animation:none;transition:none;}.lgl-icon:hover{transform:none;} 334 .lgl-icon svg path{animation:none;stroke-dashoffset:0;}.lgl-icon svg circle{animation:none;opacity:1;}} 335/* Hide the theme's page-title + breadcrumb block; the page renders its own title. */ 336.title_breadcrumb{display:none !important;} 337/*# sourceURL=enttec-legal-inline-css */ 338</style> 339<style id='kadence-blocks-global-variables-inline-css' type='text/css'> 340:root {--global-kb-font-size-sm:clamp(0.8rem, 0.73rem + 0.217vw, 0.9rem);--global-kb-font-size-md:clamp(1.1rem, 0.995rem + 0.326vw, 1.25rem);--global-kb-font-size-lg:clamp(1.75rem, 1.576rem + 0.543vw, 2rem);
340--global-kb-font-size-xl:clamp(2.25rem, 1.728rem + 1.63vw, 3rem);--global-kb-font-size-xxl:clamp(2.5rem, 1.456rem + 3.26vw, 4rem);--global-kb-font-size-xxxl:clamp(2.75rem, 0.489rem + 7.065vw, 6rem);}:root {--global-palette1: #3182CE;--global-palette2: #2B6CB0;--global-palette3: #1A202C;--global-palette4: #2D3748;--global-palette5: #4A5568;--global-palette6: #718096;--global-palette7: #EDF2F7;--global-palette8: #F7FAFC;--global-palette9: #ffffff;} 341/*# sourceURL=kadence-blocks-global-variables-inline-css */ 342</style> 343<link rel='stylesheet' id='wpo_min-header-0-css' href='https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-header-6f9654fa.min.css' media='all' />
344<script type="text/javascript" id="woocommerce-google-analytics-integration-gtag-js-after"> 345/* <![CDATA[ */ 346/* Google Analytics for WooCommerce (gtag.js) */ 347 window.dataLayer = window.dataLayer || []; 348 function gtag(){dataLayer.push(arguments);} 349 // Set up default consent state. 350 for ( const mode of [{"analytics_storage":"denied","ad_storage":"denied","ad_user_data":"denied","ad_personalization":"denied","region":["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","IS","LI","NO","GB","CH","AE"]}] || [] ) { 351 gtag( "consent", "default", { "wait_for_update": 500, ...mode } ); 352 } 353 gtag("js", new Date()); 354 gtag("set", "developer_id.dOGY3NW", true); 355 gtag("config", "G-JPJJYZDMPX", {"track_404":true,"allow_google_signals":false,"logged_in":false,"linker":{"domains":[],"allow_incoming":false},"custom_map":{"dimension1":"logged_in"}}); 356//# sourceURL=woocommerce-google-analytics-integration-gtag-js-after 357/* ]]> */ 358</script>
vendor: 1 bytes, line 358
358
359<script type="text/javascript" src="https://www.enttec.com.au/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
vendor: 1 bytes, line 359
359
360<script type="text/javascript" src="https://www.enttec.com.au/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
vendor: 1 bytes, line 360
360
361<script type="text/javascript" src="https://www.enttec.com.au/wp-content/plugins/woocommerce/assets/js/select2/select2.full.min.js?ver=4.0.3-wc.10.6.1" id="wc-select2-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 361
361
362<script type="text/javascript" src="https://www.enttec.com.au/wp-content/plugins/woocommerce/assets/js/jquery-blockui/jquery.blockUI.min.js?ver=2.7.0-wc.10.6.1" id="wc-jquery-blockui-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 362
362
363<script type="text/javascript" src="https://www.enttec.com.au/wp-content/plugins/woocommerce/assets/js/js-cookie/js.cookie.min.js?ver=2.1.4-wc.10.6.1" id="wc-js-cookie-js" defer="defer" data-wp-strategy="defer"></script>
vendor: 1 bytes, line 363
363
364<script type="text/javascript" id="woocommerce-js-extra"> 365/* <![CDATA[ */ 366var woocommerce_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"https://www.enttec.com.au/?wc-ajax=%%endpoint%%","i18n_password_show":"Show password","i18n_password_hide":"Hide password"}; 367//# sourceURL=woocommerce-js-extra 368/* ]]> */ 369</script>
vendor: 1 bytes, line 369
369
370<script type="text/javascript" src="https://www.enttec.com.au/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=10.6.1" id="woocommerce-js" defer="defer" data-wp-strategy="defer"></script>
370 371<link rel="https://api.w.org/" href="https://www.enttec.com.au/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.enttec.com.au/wp-json/wp/v2/pages/2946" /><style id="enttec-nav-style-fixes"> 372footer a:hover{color:inherit} 373#navbar a.btn.btn-primary:hover,#navbar a.btn.btn-primary:focus,#navbar a.btn.btn-primary:active{opacity:1 !important;background-color:#0a86b4 !important;border-color:#0a86b4 !important;color:#fff !important} 374#navbar{align-items:center} 375#navbar.fixed-bg.scroll-down,#navbar.fixed-bg.scroll-down *{pointer-events:none !important} 376#navbar .enttec-nav-current > a,#navbar .enttec-nav-current > .mega-menu-link{color:#0EA5DF !important} 377#enttec-mm-preview a.enttec-nav-dd-current,#enttec-mm-mobile a.enttec-nav-dd-current{color:#0EA5DF !important;font-weight:600} 378#enttec-mm-rail .mm-rail-item.mm-rail-current{color:#0EA5DF !important} 379</style> 380<meta name="google-site-verification" content="ZRF78SKPmrgZm4Sz6zsi4JeL53yNZsBOIeFVpNFG1KY" /> 381<meta name="google-site-verification" content="dm9lZ2JrK7setqcZt_JAOsEw4P8ZoQEtwLjMBfBlMFQ" /> 382 383 <noscript><style>.woocommerce-product-gallery{ opacity: 1 !important; }</style></noscript> 384 <style id="enttec-subnav-fix"> 385/* Dock the subnav directly below the navbar so the navbar never covers it and it 386 stays clickable; slide it up to the top edge when the navbar is hidden. 387 388 BOTH DOCKS ARE MEASURED, NOT HARDCODED. These were 70px and 0, which is the right 389 answer only for an anonymous visitor on a page with no fixed banner. Signed in, the 390 WP toolbar takes the first 32px and the navbar is pushed to 32..102, so a bar docked 391 at 70 had its top 32px hidden BEHIND the navbar, and docked at 0 had its top 32px 392 behind the toolbar. Either way the labels were sliced in half. Measured on the ELM 393 2026 page at 1440 on 2026-08-20. 394 395 --enttec-chrome-h is toolbar + fixed banners + navbar height; adminbar-h + fixed-h 396 is the same sum WITHOUT the navbar. So the two docks read as exactly "below the 397 navbar" and "where the navbar was". Published by themes/eshop/js/header-stack.js. 398 This also fixes the geo-redirect-bar case, which the flat 70px ignored entirely. 399 400 The fallbacks are the OLD literals on purpose: with no toolbar and no banner both 401 expressions compute to 70 and 0, so visitors get byte-identical geometry and a 402 no-JS page keeps the behaviour it had. */ 403nav.subnav,nav.etv-subnav{top:var(--enttec-chrome-h, 70px) !important;z-index:30;transition:top .3s ease} 404nav.subnav.nav-hidden,nav.etv-subnav.nav-hidden{top:calc(var(--enttec-adminbar-h, 0px) + var(--enttec-fixed-h, 0px)) !important;transform:none !important;opacity:1 !important;visibility:visible !important;pointer-events:auto !important} 405/* Software-rebuild anchor nav (.sr-anchor-nav). It pins itself at top:69px (below 406 the navbar) via the page's own JS. When the main navbar hides on scroll-down, 407 drop it to the top edge so it docks flush instead of floating with a gap, 408 mirrors how .product_nav behaves on single-product pages. Smoothly animated. 409 "The top edge" is below the toolbar when there is one, same reasoning as the 410 subnav docks above; 0 for anonymous visitors. */ 411.sr-wrap .sr-anchor-nav.is-pinned{transition:top .3s ease} 412.sr-wrap .sr-anchor-nav.is-pinned.nav-hidden{top:calc(var(--enttec-adminbar-h, 0px) + var(--enttec-fixed-h, 0px)) !important} 413</style> 414 415<link rel="icon" href="https://cdn.enttec.com/website/brand/favicon/favicon.ico?v=1" sizes="32x32"> 416<link rel="icon" type="image/png" sizes="32x32" href="https://cdn.enttec.com/website/brand/favicon/favicon-32.png?v=1"> 417<link rel="icon" type="image/png" sizes="16x16" href="https://cdn.enttec.com/website/brand/favicon/favicon-16.png?v=1"> 418<link rel="apple-touch-icon" href="https://cdn.enttec.com/website/brand/favicon/apple-touch-icon.png?v=1"> 419 <style type="text/css" id="wp-custom-css"> 420 .terms-of-trade header{display:none !important;} 421.terms-of-trade #container{max-width:100% !important} 422.terms-of-trade main{padding: 0 !important} 423 424ol[type="A"], 425ul[type="A"]{ 426 list-style-type: upper-alpha; 427} 428 429video { 430 aspect-ratio: auto !important; 431} 432 433body.emu-sound-to-light-controller .product-details-top { display: none !important; } 434 435body.emu-sound-to-light-controller.newLookEnabled .woocommerce-notices-wrapper.show { 436 display:none !important; 437} 438 439.emu_download_form .gform-footer input[type=submit] { margin-top: 0em !important; } 440 441.emu_download_form img.gform_ajax_spinner { height: 16px !important; } 442 443.emu_download_form .gform_footer { align-items: center; gap: 10px; } </style> 444 <style class="megamenu-css">@charset "UTF-8";/** THIS FILE IS AUTOMATICALLY GENERATED - DO NOT MAKE MANUAL EDITS! **//** Custom CSS should be added to Mega Menu > Menu Themes > Custom Styling **/.mega-menu-last-modified-1791221708 { content: 'Monday 5th October 2026 17:35:08 UTC'; }#mega-menu-wrap-header-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-row, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column, #mega-menu-wrap-header-menu #mega-menu-header-menu a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu span.mega-indicator, #mega-menu-wrap-header-menu #mega-menu-header-menu span.mega-menu-badge, #mega-menu-wrap-header-menu button.mega-close, #mega-menu-wrap-header-menu button.mega-toggle-standard {transition: none;box-shadow: none;background: none;border: 0;bottom: auto;box-sizing: border-box;clip: auto;color: #2c2d33;display: block;float: none;font-family: inherit;font-size: 14px;height: auto;left: auto;line-height: 1.7;list-style-type: none;margin: 0;min-height: auto;max-height: none;min-width: auto;max-width: none;opacity: 1;outline: none;overflow: visible;padding: 0;position: relative;pointer-events: auto;right: auto;text-align: left;text-decoration: none;text-indent: 0;text-transform: none;transform: none;top: auto;vertical-align: baseline;visibility: inherit;width: auto;word-wrap: break-word;white-space: normal;-webkit-tap-highlight-color: transparent;}#mega-menu-wrap-header-menu:before, #mega-menu-wrap-header-menu:after, #mega-menu-wrap-header-menu #mega-menu-header-menu:before, #mega-menu-wrap-header-menu #mega-menu-header-menu:after, #mega-menu-wrap-header-menu #mega-menu-header-menu ul.mega-sub-menu:before, #mega-menu-wrap-header-menu #mega-menu-header-menu ul.mega-sub-menu:after, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item:before, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item:after, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-row:before, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-row:after, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column:before, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column:after, #mega-menu-wrap-header-menu #mega-menu-header-menu a.mega-menu-link:before, #mega-menu-wrap-header-menu #mega-menu-header-menu a.mega-menu-link:after, #mega-menu-wrap-header-menu #mega-menu-header-menu span.mega-indicator:before, #mega-menu-wrap-header-menu #mega-menu-header-menu span.mega-indicator:after, #mega-menu-wrap-header-menu #mega-menu-header-menu span.mega-menu-badge:before, #mega-menu-wrap-header-menu #mega-menu-header-menu span.mega-menu-badge:after, #mega-menu-wrap-header-menu button.mega-close:before, #mega-menu-wrap-header-menu button.mega-close:after, #mega-menu-wrap-header-menu button.mega-toggle-standard:before, #mega-menu-wrap-header-menu button.mega-toggle-standard:after {display: none;}#mega-menu-wrap-header-menu {border-radius: 0px;}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu {background: linear-gradient(to bottom, rgba(255, 255, 255, 0), rgba(0, 0, 0, 0));}}#mega-menu-wrap-header-menu.mega-keyboard-navigation .mega-menu-toggle:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation .mega-toggle-block:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation .mega-toggle-block a:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation .mega-toggle-block button:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation .mega-toggle-block .mega-search input[type=text]:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation .mega-toggle-block button.mega-toggle-animated:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation #mega-menu-header-menu a:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation #mega-menu-header-menu span:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation #mega-menu-header-menu input:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation #mega-menu-header-menu li.mega-menu-item .mega-menu-link:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation #mega-menu-header-menu form.mega-search-open:has(input[type=text]:focus), #mega-menu-wrap-header-menu.mega-keyboard-navigation #mega-menu-header-menu + button.mega-close:focus, #mega-menu-wrap-header-menu.mega-keyboard-navigation #mega-menu-header-menu .mega-mobile-back > button:focus {outline-style: solid;outline-width: 3px;outline-color: #109cde;outline-offset: -3px;}#mega-menu-wrap-header-menu.mega-keyboard-navigation .mega-toggle-block button.mega-toggle-animated:focus {outline-offset: 2px;}#mega-menu-wrap-header-menu.mega-keyboard-navigation > li.mega-menu-item > a.mega-menu-link:focus {background-color: rgba(255, 255, 255, 0);color: #0ea5df;font-weight: normal;text-decoration: none;border-color: #fff;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu.mega-keyboard-navigation > li.mega-menu-item > a.mega-menu-link:focus {color: #ffffff;background-color: #2c2d33;}}#mega-menu-wrap-header-menu #mega-menu-header-menu {text-align: left;padding: 0px;}#mega-menu-wrap-header-menu #mega-menu-header-menu .mega-description-group {vertical-align: middle;display: inline-block;transition: none;}#mega-menu-wrap-header-menu #mega-menu-header-menu .mega-description-group .mega-menu-title, #mega-menu-wrap-header-menu #mega-menu-header-menu .mega-description-group .mega-menu-description {transition: none;line-height: 1.5;display: block;}#mega-menu-wrap-header-menu #mega-menu-header-menu .mega-description-group .mega-menu-description {font-style: italic;font-size: 0.8em;text-transform: none;font-weight: normal;}#mega-menu-wrap-header-menu #mega-menu-header-menu a.mega-menu-link {cursor: pointer;display: inline;transition: background 200ms linear, color 200ms linear, border 200ms linear;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu li.mega-menu-item.mega-icon-left.mega-has-description.mega-has-icon > a.mega-menu-link {display: flex;align-items: center;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu li.mega-menu-item.mega-icon-left.mega-has-description.mega-has-icon > a.mega-menu-link:before {flex: 0 0 auto;align-self: flex-start;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-tabbed.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-item.mega-icon-left.mega-has-description.mega-has-icon > a.mega-menu-link {display: block;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-icon-top > a.mega-menu-link {display: table-cell;vertical-align: middle;line-height: initial;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-icon-top > a.mega-menu-link:before {display: block;margin: 0 0 6px 0;text-align: center;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-icon-top > a.mega-menu-link > span.mega-title-below {display: inline-block;transition: none;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-icon-top > a.mega-menu-link {display: block;line-height: 40px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-icon-top > a.mega-menu-link:before {display: inline-block;margin: 0 6px 0 0;text-align: left;}}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-icon-right > a.mega-menu-link:before {float: right;margin: 0 0 0 6px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-animating > ul.mega-sub-menu {pointer-events: none;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-disable-link > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu li.mega-disable-link > a.mega-menu-link {cursor: inherit;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item-has-children.mega-disable-link > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > li.mega-menu-item-has-children.mega-disable-link > a.mega-menu-link {cursor: pointer;}#mega-menu-wrap-header-menu #mega-menu-header-menu p {margin-bottom: 10px;}#mega-menu-wrap-header-menu #mega-menu-header-menu input, #mega-menu-wrap-header-menu #mega-menu-header-menu img {max-width: 100%;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item > ul.mega-sub-menu {display: block;visibility: hidden;opacity: 1;pointer-events: auto;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item > ul.mega-sub-menu {display: none;visibility: visible;opacity: 1;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-toggle-on > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu.mega-menu-item.mega-toggle-on ul.mega-sub-menu {display: block;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu.mega-menu-item.mega-toggle-on li.mega-hide-sub-menu-on-mobile > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-hide-sub-menu-on-mobile > ul.mega-sub-menu {display: none;}}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade"] li.mega-menu-item > ul.mega-sub-menu {opacity: 0;transition: opacity 200ms ease-in, visibility 200ms ease-in;}#mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade"].mega-no-js li.mega-menu-item:hover > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade"].mega-no-js li.mega-menu-item:focus > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade"] li.mega-menu-item.mega-toggle-on > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade"] li.mega-menu-item.mega-menu-megamenu.mega-toggle-on ul.mega-sub-menu {opacity: 1;}#mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade_up"] li.mega-menu-item.mega-menu-megamenu > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade_up"] li.mega-menu-item.mega-menu-flyout ul.mega-sub-menu {opacity: 0;transform: translate(0, 10px);transition: opacity 200ms ease-in, transform 200ms ease-in, visibility 200ms ease-in;}#mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade_up"].mega-no-js li.mega-menu-item:hover > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade_up"].mega-no-js li.mega-menu-item:focus > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade_up"] li.mega-menu-item.mega-toggle-on > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="fade_up"] li.mega-menu-item.mega-menu-megamenu.mega-toggle-on ul.mega-sub-menu {opacity: 1;transform: translate(0, 0);}#mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="slide_up"] li.mega-menu-item.mega-menu-megamenu > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="slide_up"] li.mega-menu-item.mega-menu-flyout ul.mega-sub-menu {transform: translate(0, 10px);transition: transform 200ms ease-in, visibility 200ms ease-in;}#mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="slide_up"].mega-no-js li.mega-menu-item:hover > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="slide_up"].mega-no-js li.mega-menu-item:focus > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu[data-effect="slide_up"] li.mega-menu-item.mega-toggle-on > ul.mega-sub-menu, #mega-menu-wrap-header-menu
444 #mega-menu-header-menu[data-effect="slide_up"] li.mega-menu-item.mega-menu-megamenu.mega-toggle-on ul.mega-sub-menu {transform: translate(0, 0);}}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-menu-megamenu ul.mega-sub-menu li.mega-collapse-children > ul.mega-sub-menu {display: none;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-menu-megamenu ul.mega-sub-menu li.mega-collapse-children.mega-toggle-on > ul.mega-sub-menu {display: block;}#mega-menu-wrap-header-menu #mega-menu-header-menu.mega-no-js li.mega-menu-item:hover > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu.mega-no-js li.mega-menu-item:focus > ul.mega-sub-menu, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-toggle-on > ul.mega-sub-menu {visibility: visible;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-menu-megamenu ul.mega-sub-menu ul.mega-sub-menu {visibility: inherit;opacity: 1;display: block;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-menu-megamenu ul.mega-sub-menu li.mega-1-columns > ul.mega-sub-menu > li.mega-menu-item {float: left;width: 100%;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-menu-megamenu ul.mega-sub-menu li.mega-2-columns > ul.mega-sub-menu > li.mega-menu-item {float: left;width: 50%;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-menu-megamenu ul.mega-sub-menu li.mega-3-columns > ul.mega-sub-menu > li.mega-menu-item {float: left;width: 33.3333333333%;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-menu-megamenu ul.mega-sub-menu li.mega-4-columns > ul.mega-sub-menu > li.mega-menu-item {float: left;width: 25%;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-menu-megamenu ul.mega-sub-menu li.mega-5-columns > ul.mega-sub-menu > li.mega-menu-item {float: left;width: 20%;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-menu-megamenu ul.mega-sub-menu li.mega-6-columns > ul.mega-sub-menu > li.mega-menu-item {float: left;width: 16.6666666667%;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item a[class^="dashicons"]:before {font-family: dashicons;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item a.mega-menu-link:before {display: inline-block;font: inherit;font-family: dashicons;position: static;margin: 0 6px 0 0px;vertical-align: top;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;color: inherit;background: transparent;height: auto;width: auto;top: auto;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item a.mega-material-symbol:before {content: attr(data-ms-icon);font-family: var(--wp--preset--font-family--material-symbols);}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-hide-text a.mega-menu-link:before {margin: 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-hide-text li.mega-menu-item a.mega-menu-link:before {margin: 0 6px 0 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-align-bottom-left.mega-toggle-on > a.mega-menu-link {border-radius: 0px;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-align-bottom-right > ul.mega-sub-menu {right: 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-align-bottom-right.mega-toggle-on > a.mega-menu-link {border-radius: 0px;}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu.mega-menu-item {position: static;}}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item {margin: 0 0px 0 0;display: inline-block;height: auto;vertical-align: middle;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-item-align-right {float: right;}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-item-align-right {margin: 0 0 0 0px;}}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-item-align-float-left {float: left;}}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item > a.mega-menu-link:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item > a.mega-menu-link:focus {background-color: rgba(255, 255, 255, 0);color: #0ea5df;font-weight: normal;text-decoration: none;border-color: #fff;}}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-toggle-on > a.mega-menu-link {background-color: rgba(255, 255, 255, 0);color: #0ea5df;font-weight: normal;text-decoration: none;border-color: #fff;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-toggle-on > a.mega-menu-link {color: #ffffff;background-color: #2c2d33;}}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-current-menu-item > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-current-menu-ancestor > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-current-page-ancestor > a.mega-menu-link {background-color: rgba(255, 255, 255, 0);color: #0ea5df;font-weight: normal;text-decoration: none;border-color: #fff;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-current-menu-item > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-current-menu-ancestor > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-current-page-ancestor > a.mega-menu-link {color: #ffffff;background-color: #2c2d33;}}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item > a.mega-menu-link {line-height: 50px;height: 50px;padding: 0px 40px;vertical-align: baseline;width: auto;display: block;color: #ffffff;text-transform: uppercase;text-decoration: none;text-align: left;background-color: rgba(0, 0, 0, 0);border: 0;border-radius: 0px;font-family: inherit;font-size: 16px;font-weight: normal;outline: none;}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu >
444 li.mega-menu-item.mega-multi-line > a.mega-menu-link {line-height: inherit;display: table-cell;vertical-align: middle;}}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-multi-line > a.mega-menu-link br {display: none;}}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item {display: list-item;margin: 0;clear: both;border: 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item.mega-item-align-right {float: none;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item > a.mega-menu-link {border: 0;margin: 0;line-height: 40px;height: 40px;padding: 0 10px;background: transparent;text-align: left;color: #ffffff;font-size: 14px;}}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row {width: 100%;float: left;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row .mega-menu-column {float: left;min-height: 1px;}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row > ul.mega-sub-menu > li.mega-menu-column {width: calc(var(--span) / var(--columns) * 100%);}}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row > ul.mega-sub-menu > li.mega-menu-column {width: 100%;clear: both;}}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row .mega-menu-column > ul.mega-sub-menu > li.mega-menu-item {padding: 0px;width: 100%;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu {z-index: 999;border-radius: 0px;background-color: white;border: 0;padding: 20px;position: absolute;width: 150%;max-width: none;left: 0;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu {float: left;position: static;width: 100%;}}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard {width: calc(var(--span) / var(--columns) * 100%);}}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu .mega-description-group .mega-menu-description {margin: 5px 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-item ul.mega-sub-menu {clear: both;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item ul.mega-sub-menu {margin-left: 10px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu {margin-left: 10px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item {color: #2c2d33;font-family: inherit;font-size: 14px;display: block;float: left;clear: none;padding: 0px;vertical-align: top;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard.mega-menu-clear, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item.mega-menu-clear {clear: left;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard h4.mega-block-title, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item h4.mega-block-title {color: #222;font-family: inherit;font-size: 14px;text-transform: uppercase;text-decoration: none;font-weight: bold;text-align: left;margin: 0px 40px 10px 0px;padding: 0px 0px 5px 0px;vertical-align: top;display: block;visibility: inherit;border: 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard h4.mega-block-title:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item h4.mega-block-title:hover {border-color: rgba(0, 0, 0, 0);}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link {color: #2c2d33;/* Mega Menu > Menu Themes > Mega Menus > Second Level Menu Items */font-family: inherit;font-size: 14px;text-transform: capitalize;text-decoration: none;font-weight: normal;text-align: left;margin: 0px 0px 0px 0px;padding: 5px 10px;vertical-align: top;display: block;border: 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard > a.mega-menu-link:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link:hover {border-color: rgba(0, 0, 0, 0);}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard > a.mega-menu-link:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard > a.mega-menu-link:focus, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link:focus {color: #0ea5df;/* Mega Menu > Menu Themes > Mega Menus >
444 Second Level Menu Items (Hover) */font-weight: bold;text-decoration: none;background-color: rgba(0, 0, 0, 0);}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard > a.mega-menu-link:hover > span.mega-title-below, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard > a.mega-menu-link:focus > span.mega-title-below, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link:hover > span.mega-title-below, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link:focus > span.mega-title-below {text-decoration: none;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard li.mega-menu-item > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item li.mega-menu-item > a.mega-menu-link {color: #2c2d33;/* Mega Menu > Menu Themes > Mega Menus > Third Level Menu Items */font-family: inherit;font-size: 14px;text-transform: none;text-decoration: none;font-weight: normal;text-align: left;margin: 0px 0px 0px 0px;padding: 0px 0px 10px 10px;vertical-align: top;display: block;border: 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard li.mega-menu-item > a.mega-menu-link:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item li.mega-menu-item > a.mega-menu-link:hover {border-color: rgba(0, 0, 0, 0);}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard li.mega-menu-item.mega-icon-left.mega-has-description.mega-has-icon > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item li.mega-menu-item.mega-icon-left.mega-has-description.mega-has-icon > a.mega-menu-link {display: flex;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard li.mega-menu-item > a.mega-menu-link:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column-standard li.mega-menu-item > a.mega-menu-link:focus, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item li.mega-menu-item > a.mega-menu-link:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item li.mega-menu-item > a.mega-menu-link:focus {color: #0ea5df;/* Mega Menu > Menu Themes > Mega Menus > Third Level Menu Items (Hover) */font-weight: bold;text-decoration: none;background-color: white;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu {border: 0;padding: 10px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-item {width: 100%;clear: both;}}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu.mega-no-headers > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu.mega-no-headers > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link {color: #2c2d33;font-family: inherit;font-size: 14px;text-transform: none;text-decoration: none;font-weight: normal;margin: 0;border: 0;padding: 0px 0px 10px 10px;vertical-align: top;display: block;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu.mega-no-headers > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu.mega-no-headers > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link:focus, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu.mega-no-headers > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu.mega-no-headers > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link:focus {color: #0ea5df;font-weight: bold;text-decoration: none;background-color: white;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu {z-index: 999;position: absolute;width: auto;max-width: none;padding: 24px 24px 6px 24px;border: 0;background-color: white;border-radius: 0px;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu {float: left;position: static;width: 100%;padding: 0;border: 0;border-radius: 0;}}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item > a.mega-menu-link {white-space: nowrap;min-width: 150px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item.mega-has-description > a.mega-menu-link {white-space: normal;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item.mega-has-description > a.mega-menu-link > .mega-description-group > .mega-menu-title {white-space: nowrap;}}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item {clear: both;}}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item a.mega-menu-link {display: block;background-color: rgba(44, 45, 51, 0);color: #2c2d33;font-family: inherit;font-size: 14px;font-weight: normal;padding: 0px;line-height: 34px;text-decoration: none;text-transform: none;vertical-align: baseline;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item:first-child > a.mega-menu-link {border-top-left-radius: 0px;border-top-right-radius: 0px;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item:first-child > a.mega-menu-link {border-top-left-radius: 0;border-top-right-radius: 0;}}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item:last-child > a.mega-menu-link {border-bottom-right-radius: 0px;border-bottom-left-radius: 0px;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item:last-child > a.mega-menu-link {border-bottom-right-radius: 0;border-bottom-left-radius: 0;}}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item a.mega-menu-link:hover, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item a.mega-menu-link:focus {background-color: rgba(44, 45, 51, 0);font-weight: bold;text-decoration: none;color: #0ea5df;}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item ul.mega-sub-menu {position: absolute;
444left: 100%;top: 0;}}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item ul.mega-sub-menu a.mega-menu-link {padding-left: 20px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-flyout ul.mega-sub-menu li.mega-menu-item ul.mega-sub-menu ul.mega-sub-menu a.mega-menu-link {padding-left: 30px;}}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item-has-children > a.mega-menu-link > span.mega-indicator {display: inline-block;height: 100%;font-size: inherit;line-height: inherit;margin: 0 0 0 6px;color: inherit;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item-has-children > a.mega-menu-link > span.mega-indicator:after {display: inline-block;vertical-align: top;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;content: "ï
";font-family: dashicons;font-weight: normal;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item-has-children li.mega-menu-item-has-children > a.mega-menu-link > span.mega-indicator {float: right;margin-left: auto;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item-has-children.mega-collapse-children.mega-toggle-on > a.mega-menu-link > span.mega-indicator:after {content: "ï
";}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item-has-children > a.mega-menu-link > span.mega-indicator {float: right;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item-has-children.mega-toggle-on > a.mega-menu-link > span.mega-indicator:after {content: "ï
";}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item-has-children.mega-hide-sub-menu-on-mobile > a.mega-menu-link > span.mega-indicator {display: none;}}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu:not(.mega-menu-tabbed) li.mega-menu-item-has-children:not(.mega-collapse-children) > a.mega-menu-link > span.mega-indicator, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item-has-children.mega-hide-arrow > a.mega-menu-link > span.mega-indicator {display: none;}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-flyout li.mega-menu-item a.mega-menu-link > span.mega-indicator:after {content: "ï¹";}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-flyout.mega-align-bottom-right li.mega-menu-item a.mega-menu-link {text-align: right;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-flyout.mega-align-bottom-right li.mega-menu-item a.mega-menu-link > span.mega-indicator {float: left;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-flyout.mega-align-bottom-right li.mega-menu-item a.mega-menu-link > span.mega-indicator:after {content: "ï
";margin: 0 6px 0 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-flyout.mega-align-bottom-right li.mega-menu-item a.mega-menu-link:before {float: right;margin: 0 0 0 6px;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-flyout.mega-align-bottom-right ul.mega-sub-menu li.mega-menu-item ul.mega-sub-menu {left: -100%;top: 0;}}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-hide-on-mobile, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-hide-on-mobile, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item.mega-hide-on-mobile {display: none;}}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-hide-on-desktop, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-hide-on-desktop, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item.mega-hide-on-desktop {display: none;}}#mega-menu-wrap-header-menu .mega-menu-toggle {display: none;}#mega-menu-wrap-header-menu .mega-menu-toggle ~ button.mega-close {display: none;}@media only screen and (max-width: 768px) {#mega-menu-wrap-header-menu .mega-menu-toggle {z-index: 1;background-color: #2c2d33;border-radius: 2px;line-height: 40px;height: 40px;text-align: left;user-select: none;outline: none;white-space: nowrap;display: flex;}#mega-menu-wrap-header-menu .mega-menu-toggle img {max-width: 100%;padding: 0;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-blocks-left, #mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-blocks-center, #mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-blocks-right {display: flex;flex: 1;gap: 6px;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block {display: flex;height: 100%;outline: 0;align-self: center;flex-shrink: 0;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-blocks-left {justify-content: flex-start;padding-left: 6px;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-blocks-center {justify-content: center;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-blocks-right {justify-content: flex-end;padding-right: 6px;}#mega-menu-wrap-header-menu .mega-menu-toggle + #mega-menu-header-menu {flex-direction: column;flex-wrap: nowrap;background-color: #2c2d33;padding: 0px;display: none;}#mega-menu-wrap-header-menu .mega-menu-toggle.mega-menu-open + #mega-menu-header-menu {display: flex;visibility: visible;}}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 {/*! * Hamburgers * @description Tasty CSS-animated hamburgers * @author Jonathan Suh @jonsuh * @site https://jonsuh.com/hamburgers * @link https://github.com/jonsuh/hamburgers */}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated {padding: 0;display: flex;align-items: center;justify-content: center;width: 100%;height: 100%;cursor: pointer;transition-property: opacity, filter;transition-duration: 0.15s;transition-timing-function: linear;font: inherit;color: inherit;text-transform: none;background-color: transparent;border: 0;margin: 0;overflow: visible;transform: scale(0.8);align-self: center;outline: 0;background: none;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-box {width: 40px;height: 24px;display: inline-block;position: relative;outline: 0;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-inner {display: block;top: 50%;margin-top: -2px;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-inner, #mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-inner::before, #mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-inner::after {width: 40px;height: 4px;background-color: #ddd;border-radius: 4px;position: absolute;transition-property: transform;transition-duration: 0.15s;transition-timing-function: ease;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-inner::before, #mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-inner::after {content: "";display: block;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-inner::before {top: -10px;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-inner::after {bottom: -10px;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-slider .mega-toggle-animated-inner {top: 2px;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-slider .mega-toggle-animated-inner::before {top: 10px;transition-property: transform, opacity;transition-timing-function: ease;transition-duration: 0.15s;}#mega-menu-wrap-header-menu .mega-menu-toggle .mega-toggle-block-1 .mega-toggle-animated-slider .mega-toggle-animated-inner::after {top: 20px;}#mega-menu-wrap-header-menu .mega-menu-toggle.mega-menu-open .mega-toggle-block-1 .mega-toggle-animated-slider .mega-toggle-animated-inner {transform: translate3d(0, 10px, 0) rotate(45deg);}#mega-menu-wrap-header-menu .mega-menu-toggle.mega-menu-open .mega-toggle-block-1 .mega-toggle-animated-slider .mega-toggle-animated-inner::before {transform: rotate(-45deg) translate3d(-5.71429px, -6px, 0);opacity: 0;}#mega-menu-wrap-header-menu .mega-menu-toggle.mega-menu-open .mega-toggle-block-1 .mega-toggle-animated-slider .mega-toggle-animated-inner::after {transform: translate3d(0, -20px, 0
444) rotate(-90deg);}/** Push menu onto new line **/#mega-menu-wrap-header-menu {clear: both;}.wc_payment_method.payment_method_eway {display: none !important;}body.light-and-built-2024 header, body.light-and-built-2024 footer, body.light-and-built-2024 #navbar {display: none !important;}@media only screen and (min-width: 769px) {#mega-menu-wrap-header-menu {margin-right: auto;margin-left: auto;display: flex;}#mega-menu-wrap-main_menu {width: 100%;left: 170px;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item-has-children > a.mega-menu-link > span.mega-indicator {display: none;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item a.mega-menu-link {letter-spacing: 0.15rem;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item a.mega-menu-link {-webkit-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out;letter-spacing: 0;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row .mega-menu-column {float: right;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-item h4.mega-block-title, body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item h4.mega-block-title {margin: 0px 0px 10px 40px;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-item h4.mega-block-title, body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item h4.mega-block-title, body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-item li.mega-menu-item > a.mega-menu-link, body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item li.mega-menu-item > a.mega-menu-link {text-align: right;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item a.menu-image-link img.menu-image {display: none;position: fixed;left: 56%;bottom: 20px;transform: translateX(-50%);width: 240px;height: 157px;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item a.menu-image-link img.menu-image {left: 45%;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item a.menu-image-link:hover img.menu-image {display: block;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image) a.mega-menu-link:before {content: "";position: absolute;display: block;width: 12px;height: 6px;background-position: center;background-repeat: no-repeat;background-size: cover;top: 12px;left: -15px;opacity: 0;-webkit-transition: all 0.3s ease-in-out;transition: all 0.3s ease-in-out;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image) a.mega-menu-link:before {left: inherit;right: -15px;transform: rotate(-180deg);}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item.menuActive:not(.widget_media_image) > a.mega-menu-link, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image):hover > a.mega-menu-link {padding-left: 20px !important;font-weight: bold !important;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item.menuActive:not(.widget_media_image) > a.mega-menu-link, body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image):hover > a.mega-menu-link {padding-left: inherit !important;padding-right: 20px !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item.menuActive:not(.widget_media_image) > a.mega-menu-link:before, #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image):hover > a.mega-menu-link:before {opacity: 1;left: 0;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item.menuActive:not(.widget_media_image) > a.mega-menu-link:before, body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image):hover > a.mega-menu-link:before {left: inherit;right: 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image) {padding-left: 20px !important;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image) {padding-left: inherit !important;padding-right: 20px !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image) a.mega-menu-link {padding-left: 0px !important;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image) a.mega-menu-link {padding-right: 0px !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image) a.mega-menu-link:before {opacity: 0;left: -15px;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu ul.mega-sub-menu li.mega-menu-item:not(.widget_media_image) a.mega-menu-link:before {left: inherit;right: -15px;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item > ul.mega-sub-menu {display: none;box-shadow: 0 0 20px rgba(0, 0, 0, 0.3);}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-toggle-on > ul.mega-sub-menu {display: block;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column {position: initial !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column .mega-sub-menu {position: initial !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column .mega-sub-menu li {position: initial !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column .mega-sub-menu li.mega-menu-item-has-children > ul.mega-sub-menu {position: absolute !important;top: 0px !important;width: 130% !important;transform: translateX(75%) !important;background: #fff !important;z-index: 222 !important;-webkit-transition: all 0.3s;transition: all 0.3s;opacity: 0 !important;visibility: hidden !important;display: inline-block !important;height: 100% !important;box-shadow: 0 0 20px rgba(0, 0, 0, 0);}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column .mega-sub-menu li.mega-menu-item-has-children > ul.mega-sub-menu {transform: translateX(0) !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column .mega-sub-menu li.mega-menu-item-has-children > ul.mega-sub-menu li:first-child > a {font-weight: bold !important;text-decoration: underline !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-item.mega-menu-megamenu ul.mega-sub-menu ul.mega-sub-menu {display: inline-block;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column .mega-sub-menu li.mega-menu-item-has-children > ul.mega-sub-menu:before {position: absolute;display: block;content: "";height: calc(100% - 0px);width: 1px;background-color: rgba(44, 45, 51, 0.1);left: 0;top: 0px;opacity: 0;visibility: hidden;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column .mega-sub-menu li.mega-menu-item-has-children > ul.mega-sub-menu:before {left: inherit;right: 0;}body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link, body[data-lang="ar"] #mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link {text-align: right !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column .mega-sub-menu li.mega-menu-item-has-children > ul.mega-sub-menu:before, #mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column .mega-sub-menu li.mega-menu-item-has-children.menuActive > ul.mega-sub-menu {opacity: 1 !important;visibility: visible !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-column.prod_hidden > .mega-sub-menu {opacity: 0 !important;visibility: hidden !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row > ul.mega-sub-menu > li.mega-menu-column .widget_media_image a {width: 100%;height: 120px;outline: 1px solid rgba(44, 45, 51, 0.3);position: relative;display: block;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row > ul.mega-sub-menu > li.mega-menu-column .widget_media_image a img {width: 213px;height: 120px !important;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row > ul.mega-sub-menu > li.mega-menu-column ul.mega-sub-menu .widget_media_image:first-child a {background-color: rgba(0, 0, 0, 0.3);margin: 8px 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row > ul.mega-sub-menu > li.mega-menu-column ul.mega-sub-menu .widget_media_image:last-child a {background-color: rgba(47, 110, 135, 0.21);margin: 8px 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row > ul.mega-sub-menu > li.mega-menu-column ul.mega-sub-menu .widget_media_image:first-child a img {position: absolute;right: 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row > ul.mega-sub-menu > li.mega-menu-column ul.mega-sub-menu .widget_media_image:last-child a img {position: absolute;
444left: 0;}#primary_nav .menu_right_field .no-label {margin-top: 8px;-webkit-margin-before: -15px;}}@media only screen and (min-width: 769px) and (max-width: 1170px) {#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item a.mega-menu-link {padding: 0 15px;}}@media only screen and (max-width: 768px) {body.mega-menu-header-menu-mobile-open {overflow-y: hidden;}body.mega-menu-header-menu-mobile-open #navbar {background-color: #2c2d33;}#mega-menu-wrap-header-menu {position: fixed;width: 100%;top: 70px;overflow-y: auto;}body.mega-menu-header-menu-mobile-open #mega-menu-wrap-header-menu {height: 100vh;}#mega-menu-wrap-header-menu .mega-menu-toggle.mega-menu-open + #mega-menu-header-menu {height: 100vh;}#mega-menu-wrap-header-menu .mega-menu-toggle {position: fixed;left: 40px;top: 15px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu {padding: 0;}#mega-menu-wrap-header-menu #mega-menu-header-menu li.mega-menu-megamenu > ul.mega-sub-menu > li.mega-menu-row .mega-menu-column > ul.mega-sub-menu > li.mega-menu-item {border-top: 1px solid #4c4f55;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-megamenu > ul.mega-sub-menu li.mega-menu-column > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link {height: 44px;padding: 5px 40px;line-height: 38px;}.primary-header #logo {position: absolute;left: 20px;top: 20px;}.primary-header > div.wrap {padding-top: 0px;}#primary_nav {padding-top: 5px;}#primary_nav #mega-menu-wrap-main_menu {display: none;}#primary_nav .menu_right_field {margin: auto;margin-right: 0;margin-top: 30px;}#menu_btn {margin-top: 5px;}#primary_nav .menu_right_field .no-label {margin-left: 0;margin-right: 0;}#primary_nav .menu_right_field .no-label:last-child {margin-left: 0;margin-right: 30px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item {border-top: 1px solid #4c4f55;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item:hover {background-color: #151414;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item:last-child {border-bottom: 1px solid #4c4f55;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item > a.mega-menu-link {height: 44px;padding: 2px 20px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item > ul.mega-sub-menu > li.mega-menu-item > ul.mega-sub-menu {padding-left: 35px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item > ul.mega-sub-menu > li.mega-menu-item {border-top: 1px solid #4c4f55;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item > ul.mega-sub-menu > li.mega-menu-item > a.mega-menu-link {height: 44px;padding: 5px 40px;}#mega-menu-wrap-header-menu #mega-menu-header-menu > li.mega-menu-item > ul.mega-sub-menu > li.mega-menu-item:hover {background: #151414;}}@media only screen and (max-width: 768px) and (max-width: 575px) {#mega-menu-wrap-header-menu .mega-menu-toggle {left: 20px;}}@media only screen and (max-width: 768px) and (max-width: 320px) {.primary-header > div.wrap {padding-top: 20px;}.primary-header #logo {position: relative;transform: none;top: 0;margin: 0 auto 10px;display: block;left: 0;}#primary_nav .menu_right_field {margin: auto !important;margin-top: 20px !important;}}@media only screen and (max-width: 768px) and (min-width: 600px) {.primary-header #logo {position: absolute;left: 20px;top: 50%;}}.wp-block {}</style> 445 446 447<link rel='stylesheet' id='wpo_min-footer-0-css' href='https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-b8c31ee1.min.css' media='all' /> 448 449</head> 450 451 452<body data-lang='en'class="wp-singular page-template-default page page-id-2946 wp-embed-responsive wp-theme-eshop frontend newLookEnabled theme-eshop woocommerce-no-js mega-menu-header-menu store-policy"> 453 454 <div id="navbar"> 455 <div class="nav_container"> 456 <div class='resposnive-icon'> 457 <i class="fas fa-bars"></i> 458 <i class="fas fa-times"></i> 459 </div> 460 <div class="logo" translate="no"> 461 <a 462 href="https://www.enttec.com.au/"> 463<!-- EN<span>TT</span>EC--> 464 <img src="https://www.enttec.com.au/wp-content/themes/eshop/img/enttec-logo-white.svg" width="128" class="white-logo" height="21" /> 465 <img src="https://www.enttec.com.au/wp-content/themes/eshop/img/enttec-logo-black.svg" width="128" class="black-logo" height="21" /> 466 467 </a> 468 </div> 469 <div id="mega-menu-wrap-header-menu" class="mega-menu-wrap"><div class="mega-menu-toggle"><div class="mega-toggle-blocks-left"></div><div class="mega-toggle-blocks-center"></div><div class="mega-toggle-blocks-right"><div class='mega-toggle-block mega-menu-toggle-animated-block mega-toggle-block-1' id='mega-toggle-block-1'><button aria-controls="mega-menu-header-menu" aria-expanded="false" aria-haspopup="true" aria-label="Toggle Menu" class="mega-toggle-animated mega-toggle-animated-slider" type="button">
470 <span class="mega-toggle-animated-box"> 471 <span class="mega-toggle-animated-inner"></span> 472 </span> 473 </button></div></div></div><ul id="mega-menu-header-menu" class="mega-menu max-mega-menu mega-menu-horizontal mega-no-js" data-event="hover_intent" data-effect="fade_up" data-effect-speed="200" data-effect-mobile="disabled" data-effect-speed-mobile="0" data-mobile-force-width="false" data-second-click="go" data-document-click="collapse" data-vertical-behaviour="standard" data-breakpoint="768" data-unbind="true" data-mobile-state="collapse_all" data-mobile-direction="vertical"><li class="mega-enttec-nav-item mega-enttec-nav-about mega-enttec-nav-has-dropdown mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-990001 enttec-nav-item enttec-nav-about enttec-nav-has-dropdown" id="mega-menu-item-990001"><a class="mega-menu-link" href="https://www.enttec.com.au/about-enttec/">About</a></li><li class="mega-enttec-nav-item mega-enttec-nav-projects mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-990002 enttec-nav-item enttec-nav-projects" id="mega-menu-item-990002"><a class="mega-menu-link" href="https://www.enttec.com.au/projects">Projects</a></li><li class="mega-enttec-nav-item mega-enttec-nav-products mega-enttec-nav-has-dropdown mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-990003 enttec-nav-item enttec-nav-products enttec-nav-has-dropdown" id="mega-menu-item-990003"><a class="mega-menu-link" href="https://www.enttec.com.au/products/">Products</a></li><li class="mega-enttec-nav-item mega-enttec-nav-support mega-enttec-nav-has-dropdown mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-990004 enttec-nav-item enttec-nav-support enttec-nav-has-dropdown" id="mega-menu-item-990004"><a class="mega-menu-link" href="https://support.enttec.com/">Support</a></li><li class="mega-enttec-nav-item mega-enttec-nav-news mega-menu-item mega-menu-item-type-custom mega-menu-item-object-custom mega-menu-item-990005 enttec-nav-item enttec-nav-news" id="mega-menu-item-990005"><a class="mega-menu-link" href="https://www.enttec.com.au/blog/">News</a></li></ul></div> <!-- search --> 474<div class="search_container"> 475 <form class="search" id="search-form" method="get" 476 action="https://www.enttec.com.au" role="search"> 477 <svg class="search_input" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 478 <path d="M19 19L13 13M15 8C15 8.91925 14.8189 9.82951 14.4672 10.6788C14.1154 11.5281 13.5998 12.2997 12.9497 12.9497C12.2997 13.5998 11.5281 14.1154 10.6788 14.4672C9.82951 14.8189 8.91925 15 8 15C7.08075 15 6.1705 14.8189 5.32122 14.4672C4.47194 14.1154 3.70026 13.5998 3.05025 12.9497C2.40024 12.2997 1.88463 11.5281 1.53284 10.6788C1.18106 9.82951 1 8.91925 1 8C1 6.14348 1.7375 4.36301 3.05025 3.05025C4.36301 1.7375 6.14348 1 8 1C9.85652 1 11.637 1.7375 12.9497 3.05025C14.2625 4.36301 15 6.14348 15 8Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> 479 </svg> 480 <input class="search-input" type="text" autocomplete="off" name="s" 481 placeholder="To search, type keyword or SKU then hit enter."> 482 <span class='close-search' 483 title='Close Search'>Ã</span> 484 </form> 485 <div class="results_wrapper"> 486 487 </div> 488</div> 489<!-- /search --> <div class="header-icons"> 490 <svg class="search_nav fa-search" width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 491 <path d="M19 19L13 13M15 8C15 8.91925 14.8189 9.82951 14.4672 10.6788C14.1154 11.5281 13.5998 12.2997 12.9497 12.9497C12.2997 13.5998 11.5281 14.1154 10.6788 14.4672C9.82951 14.8189 8.91925 15 8 15C7.08075 15 6.1705 14.8189 5.32122 14.4672C4.47194 14.1154 3.70026 13.5998 3.05025 12.9497C2.40024 12.2997 1.88463 11.5281 1.53284 10.6788C1.18106 9.82951 1 8.91925 1 8C1 6.14348 1.7375 4.36301 3.05025 3.05025C4.36301 1.7375 6.14348 1 8 1C9.85652 1 11.637 1.7375 12.9497 3.05025C14.2625 4.36301 15 6.14348 15 8Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> 492 </svg> 493 <div class="language_icon"> 494 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 495 <path d="M19 10C19 12.3869 18.0518 14.6761 16.364 16.364C14.6761 18.0518 12.3869 19 10 19M19 10C19 7.61305 18.0518 5.32387 16.364 3.63604C14.6761 1.94821 12.3869 1 10 1M19 10H1M10 19C7.61305 19 5.32387 18.0518 3.63604 16.364C1.94821 14.6761 1 12.3869 1 10M10 19C11.
495657 19 13 14.97 13 10C13 5.03 11.657 1 10 1M10 19C8.343 19 7 14.97 7 10C7 5.03 8.343 1 10 1M10 1C7.61305 1 5.32387 1.94821 3.63604 3.63604C1.94821 5.32387 1 7.61305 1 10" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> 496 </svg> 497 <div class="languages_select"> 498 <div class='language_title'></div> 499<form id="change-location-form" translate="no" 500 x-data='{"locations":{"as":{"language":"en","label":"Asia (English)","currency":"USD","locale":"en-US","url":"https:\/\/www.enttec.com.au\/as\/store-policy\/"},"au":{"language":"en","label":"English (Australia)","currency":"AUD","locale":"en-US","url":"https:\/\/www.enttec.com.au\/store-policy\/"},"jp":{"language":"jp","label":"Japanese","currency":"USD","locale":"jp-JP","url":"https:\/\/www.enttec.com.au\/jp\/store-policy\/"}},"current":"au"}'> 501 <input type='hidden' name='location-change' value='true'> 502 <select class="hidden_select" @change="location.href=$event.target.value" name='current-location'> 503 <template x-for='key in Object.keys(locations)'> 504 <option class="single_lang" :value='`${locations[key].url}`' x-text='`${locations[key].label}`' 505 :selected='current == key'> 506 </option> 507 </template> 508 </select> 509 <div class="select_wrapper"> 510 <template x-for='key in Object.keys(locations)'> 511 <a class="single_lang_2" href="" > 512 <span x-text='`${locations[key].label}`' :selected='current == key'></span> 513 <span x-text='`${locations[key].language}-${locations[key].currency}`'></span> 514 </a> 515 </template> 516 </div> 517 518 <div class="change_website">Change website</div> 519</form> 520 </div> 521 522 </div> 523 <div class="language_overlay"></div> 524 525 <a class="cart-customlocation" 526 href="https://www.enttec.com.au/cart/" 527 title="View your shopping cart"> 528 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 529 <path d="M1 1H3L3.4 3M3.4 3H19L15 11H5M3.4 3L5 11M5 11L2.707 13.293C2.077 13.923 2.523 15 3.414 15H15M15 15C14.4696 15 13.9609 15.2107 13.5858 15.5858C13.2107 15.9609 13 16.4696 13 17C13 17.5304 13.2107 18.0391 13.5858 18.4142C13.9609 18.7893 14.4696 19 15 19C15.5304 19 16.0391 18.7893 16.4142 18.4142C16.7893 18.0391 17 17.5304 17 17C17 16.4696 16.7893 15.9609 16.4142 15.5858C16.0391 15.2107 15.5304 15 15 15ZM7 17C7 17.5304 6.78929 18.0391 6.41421 18.4142C6.03914 18.7893 5.53043 19 5 19C4.46957 19 3.96086 18.7893 3.58579 18.4142C3.21071 18.0391 3 17.5304 3 17C3 16.4696 3.21071 15.9609 3.58579 15.5858C3.96086 15.2107 4.46957 15 5 15C5.53043 15 6.03914 15.2107 6.41421 15.5858C6.78929 15.9609 7 16.4696 7 17Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> 530 </svg> 531 <!-- <span class="cart-count-full">--> 532<!-- --><!-- </span>--> 533<!-- <span class="cart-total">--> 534<!-- --><!-- </span>--> 535 </a> 536 537 <a href="https://www.enttec.com.au/my-account/" class="btn text-uppercase btn-primary ml-3 border-round-0">Login / Signup</a> 538 539 </div> 540 541 </div> 542 </div> 543 <div id="wrapper"> 544 <!-- header --> 545
545<script>jQuery(document).ready(function($){$('body').addClass('noBannerApplied');});</script>
545 546 547 <header class="header clear mb-5" role="banner"> 548 549 <div class="header-inner-wrapper"> 550 <div class="header-inner "> 551 <div class="title_breadcrumb "><h1>Store Policy</h1><nav class="woocommerce-breadcrumb" aria-label="Breadcrumb"><a href="https://www.enttec.com.au">Home</a> / <span class="current_post">Store Policy</span></nav></div> 552 553 </div> 554 555 </div> 556 557 </header> 558 <!-- /header --> 559 560 </div> 561 <!-- /wrapper --> 562 <div id="container" > 563 <div class="contact_overlay" id="contact_overlay"> 564 <div class="contact_wrap"> 565 <img class="contact_close" src="https://www.enttec.com.au/wp-content/themes/eshop/img/x_icon.svg" alt="close"> 566 <div class="contact_content"> 567 <div class="title"> 568 <span> Get in touch </span> with us today </div> 569 <div class="mail_container"> 570 <a href="mailto:[email protected]" class="mail"> 571 <img src="https://www.enttec.com.au/wp-content/themes/eshop/img/mail_icon.svg" alt="Mail icon"> 572 <span> 573 [email protected] </span> 574 </a> 575 <a href="mailto:[email protected]" class="mail"> 576 <img src="https://www.enttec.com.au/wp-content/themes/eshop/img/mail_icon.svg" alt="Mail icon"> 577 <span> 578 [email protected] </span> 579 </a> 580 </div> 581 <div class="phone_container"> 582 583 <a href="tel:+61 (03) 9763 5755"> 584 <img src="https://www.enttec.com.au/wp-content/themes/eshop/img/phone_icon.svg" alt="Phone icon"> 585 <span> 586 +61 (03) 9763 5755 </span></a> 587 </div> 588 <div class="phone_container"> 589 590 <a href="https://wa.me/61466122276"> 591 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"/></svg> 592 <span> 593 Chat on WhatsApp </span></a> 594 </div> 595 596 597 598 599 <div class="message_first"> 600 Your store location is currently set to <u>Australia</u> </div> 601 <div class="message_second"> 602 If this is incorrect please select your country here: </div> 603 604 <select class="country_selectbox" name="country" data-placeholder="Select a country / regionâ¦"> 605 <option value="" data-url="">Select a country / regionâ¦</option> 606 <option value="AF" data-url="https://enttec.ae/global/store-policy/">Afghanistan</option> 607 <option value="AL" data-url="https://www.enttec.co.uk/en/store-policy/">Albania</option> 608 <option value="AD" data-url="https://www.enttec.co.uk/en/store-policy/">Andorra</option> 609 <option value="AR" data-url="https://www.enttec.com/store-policy/">Argentina</option> 610 <option value="AM" data-url="https://www.enttec.com.au/as/store-policy/">Armenia</option> 611 <option value="AM" data-url="https://www.enttec.co.uk/en/store-policy/">Armenia</option> 612 <option value="AU" data-url="https://www.enttec.com.au/store-policy/">Australia</option> 613 <option value="AT" data-url="https://www.enttec.co.uk/en/store-policy/">Austria</option> 614 <option value="AZ" data-url="https://www.enttec.com.au/as/store-policy/">Azerbaijan</option> 615 <option value="BS" data-url="https://www.enttec.com/store-policy/">Bahamas</option> 616 <option value="BH" data-url="https://enttec.ae/global/store-policy/">Bahrain</option> 617 <option value="BD" data-url="https://enttec.ae/global/store-policy/">Bangladesh</option> 618 <option value="BY" data-url="https://www.enttec.co.uk/en/store-policy/">Belarus</option> 619 <option value="PW" data-url="https://www.enttec.com.au/store-policy/">Belau</option> 620 <option value="BE" data-url="https://www.enttec.co.uk/en/store-policy/">Belgium</option> 621 <option value="BT" data-url="https://enttec.ae/global/store-policy/">Bhutan</option> 622 <option value="BO" data-url="https://www.enttec.com/store-policy/">Bolivia</option> 623 <option value="BA" data-url="https://www.enttec.co.uk/en/store-policy/">Bosnia and Herzegovina</option> 624 <option value="BR" data-url="https://www.enttec.com/store-policy/">Brazil</option> 625 <option value="BN" data-url="https://www.enttec.com.au/as/store-policy/">Brunei</option> 626 <option value="BG" data-url="https://www.enttec.co.uk/en/store-policy/">Bulgaria</option> 627 <option value="KH" data-url="https://www.enttec.com.au/as/store-policy/">Cambodia</option> 628 <option value="CA" data-url="https://www.enttec.com/store-policy/">Canada</option> 629 <option value="CL" data-url="https://www.enttec.com/store-policy/">Chile</option> 630 <option value="CN" data-url="https://enttec.com.cn/store-policy/">China</option> 631 <option value="CO" data-url="https://www.enttec.com/store-policy/">Colombia</option> 632 <option value="CR" data-url="https://www.enttec.com/store-policy/">Costa Rica</option> 633 <option value="HR" data-url="https://www.enttec.co.uk/en/store-policy/">Croatia</option> 634 <option value="CU" data-url="https://www.enttec.com/store-policy/">Cuba</option> 635 <option value="CY" data-url="https://www.enttec.co.uk/en/store-policy/">Cyprus</option> 636 <option value="CZ" data-url="https://www.enttec.co.uk/en/store-policy/">Czech Republic</option> 637 <option value="DK" data-url="https://www.enttec.co.uk/en/store-policy/">Denmark</option> 638 <option value="DO" data-url="https://www.enttec.com/store-policy/">Dominican Republic</option> 639 <option value="EC" data-url="https://www.enttec.com/store-policy/">Ecuador</option> 640 <option value="SV" data-url="https://www.enttec.com/store-policy/">El Salvador</option> 641 <option value="GQ" data-url="https://enttec.ae/global/store-policy/">Equatorial Guinea</option> 642 <option value="EE" data-url="https://www.enttec.co.uk/en/store-policy/">Estonia</option> 643 <option value="FJ" data-url="https://www.enttec.com.au/store-policy/">Fiji</option> 644 <option value="FI" data-url="https://www.enttec.co.uk/en/store-policy/">Finland</option> 645 <option value="FR" data-url="https://www.enttec.co.uk/fr/store-policy/">France</option> 646 <option value="GE" data-url="https://www.enttec.co.uk/en/store-policy/">Georgia</option> 647 <option value="DE" data-url="https://www.enttec.co.uk/de/store-policy/">Germany</option> 648 <option value="GR" data-url="https://www.enttec.co.uk/en/store-policy/">Greece</option> 649 <option value="GT" data-url="https://www.enttec.com/store-policy/">Guatemala</option> 650 <option value="GY" data-url="https://www.enttec.com/store-policy/">Guyana</option> 651 <option value="HT" data-url="https://www.enttec.com/store-policy/">Haiti</option> 652 <option value="HK" data-url="https://enttec.com.cn/store-policy/">Hong Kong</option> 653 <option value="HU" data-url="https://www.enttec.co.uk/en/store-policy/">Hungary</option> 654 <option value="IS" data-url="https://www.enttec.co.uk/en/store-policy/">Iceland</option> 655 <option value="IN" data-url="https://enttec.ae/global/store-policy/">India</option> 656 <option value="ID" data-url="https://www.enttec.com.au/as/store-policy/">Indonesia</option> 657 <option value="IR" data-url="https://enttec.ae/global/store-policy/">Iran</option> 658 <option value="IQ" data-url="https://enttec.ae/global/store-policy/">Iraq</option> 659 <option value="IE" data-url="https://www.enttec.co.uk/en/store-policy/">Ireland</option> 660 <option value="IL" data-url="https://www.enttec.co.uk/en/store-policy/">Israel</option> 661 <option value="IT" data-url="https://www.enttec.co.uk/it/store-policy/">Italy</option> 662 <option value="JP" data-url="https://www.enttec.com.au/jp/store-policy/">Japan</option> 663 <option value="JO" data-url="https://enttec.ae/global/store-policy/">Jordan</option> 664 <option value="KZ" data-url="https://enttec.ae/global/store-policy/">Kazakhstan</option> 665 <option value="KI" data-url="https://www.enttec.com.au/store-policy/">Kiribati</option> 666 <option value="KW" data-url="https://enttec.ae/global/store-policy/">Kuwait</option> 667 <option value="KG" data-url="https://enttec.ae/global/store-policy/">Kyrgyzstan</option> 668 <option value="LA" data-url="https://www.enttec.com.au/as/store-policy/">Laos</option> 669 <option value="LV" data-url="https://www.enttec.co.uk/en/store-policy/">Latvia</option> 670 <option value="LB" data-url="https://enttec.ae/global/store-policy/">Lebanon</option> 671 <option value="LI" data-url="https://www.enttec.co.uk/en/store-policy/">Liechtenstein</option> 672 <option value="LT" data-url="https://www.enttec.co.uk/en/store-policy/">Lithuania</option> 673 <option value="LU" data-url="https://www.enttec.co.uk/en/store-policy/">Luxembourg</option> 674 <option value="MO" data-url="https://enttec.com.cn/store-policy/">Macao</option> 675 <option value="MG" data-url="https://enttec.ae/global/store-policy/">Madagascar</option> 676 <option value="MY" data-url="https://www.enttec.com.au/as/store-policy/">Malaysia</option> 677 <option value="MV" data-url="https://enttec.ae/global/store-policy/">Maldives</option> 678 <option value="MT" data-url="https://www.enttec.co.uk/en/store-policy/">Malta</option> 679 <option value="MH" data-url="https://www.enttec.com.au/store-policy/">Marshall Islands</option> 680 <option value="MX" data-url="https://www.enttec.com/store-policy/">Mexico</option> 681 <option value="FM" data-url="https://www.enttec.com.au/store-policy/">Micronesia</option> 682 <option value="MD" data-url="https://www.enttec.co.uk/en/store-policy/">Moldova</option> 683 <option value="MC" data-url="https://www.enttec.co.uk/en/store-policy/">Monaco</option> 684 <option value="MN" data-url="https://www.enttec.com.au/as/store-policy/">Mongolia</option> 685 <option value="ME" data-url="https://www.enttec.co.uk/en/store-policy/">Montenegro</option> 686 <option value="NR" data-url="https://www.enttec.com.au/store-policy/">Nauru</option> 687 <option value="NP" data-url="https://enttec.ae/global/store-policy/">Nepal</
687option> 688 <option value="NL" data-url="https://www.enttec.co.uk/nl/store-policy/">Netherlands</option> 689 <option value="NZ" data-url="https://www.enttec.com.au/store-policy/">New Zealand</option> 690 <option value="NI" data-url="https://www.enttec.com/store-policy/">Nicaragua</option> 691 <option value="KP" data-url="https://www.enttec.com.au/as/store-policy/">North Korea</option> 692 <option value="NO" data-url="https://www.enttec.co.uk/en/store-policy/">Norway</option> 693 <option value="OM" data-url="https://enttec.ae/global/store-policy/">Oman</option> 694 <option value="PK" data-url="https://enttec.ae/global/store-policy/">Pakistan</option> 695 <option value="PA" data-url="https://www.enttec.com/store-policy/">Panama</option> 696 <option value="PG" data-url="https://www.enttec.com.au/store-policy/">Papua New Guinea</option> 697 <option value="PY" data-url="https://www.enttec.com/store-policy/">Paraguay</option> 698 <option value="PE" data-url="https://www.enttec.com/store-policy/">Peru</option> 699 <option value="PH" data-url="https://www.enttec.com.au/as/store-policy/">Philippines</option> 700 <option value="PL" data-url="https://www.enttec.co.uk/pl/store-policy/">Poland</option> 701 <option value="PT" data-url="https://www.enttec.co.uk/en/store-policy/">Portugal</option> 702 <option value="QA" data-url="https://enttec.ae/global/store-policy/">Qatar</option> 703 <option value="RO" data-url="https://www.enttec.co.uk/ro/store-policy/">Romania</option> 704 <option value="RU" data-url="https://enttec.com.ru/store-policy/">Russia</option> 705 <option value="SM" data-url="https://www.enttec.co.uk/en/store-policy/">San Marino</option> 706 <option value="SA" data-url="https://enttec.ae/global/store-policy/">Saudi Arabia</option> 707 <option value="RS" data-url="https://www.enttec.co.uk/en/store-policy/">Serbia</option> 708 <option value="SG" data-url="https://www.enttec.com.au/as/store-policy/">Singapore</option> 709 <option value="SK" data-url="https://www.enttec.co.uk/en/store-policy/">Slovakia</option> 710 <option value="SI" data-url="https://www.enttec.co.uk/en/store-policy/">Slovenia</option> 711 <option value="SB" data-url="https://www.enttec.com.au/store-policy/">Solomon Islands</option> 712 <option value="KR" data-url="https://www.enttec.com.au/as/store-policy/">South Korea</option> 713 <option value="ES" data-url="https://www.enttec.co.uk/es/store-policy/">Spain</option> 714 <option value="LK" data-url="https://enttec.ae/global/store-policy/">Sri Lanka</option> 715 <option value="SR" data-url="https://www.enttec.com/store-policy/">Suriname</option> 716 <option value="SE" data-url="https://www.enttec.co.uk/en/store-policy/">Sweden</option> 717 <option value="CH" data-url="https://www.enttec.co.uk/en/store-policy/">Switzerland</option> 718 <option value="SY" data-url="https://enttec.ae/global/store-policy/">Syria</option> 719 <option value="TW" data-url="https://enttec.com.cn/store-policy/">Taiwan</option> 720 <option value="TJ" data-url="https://enttec.ae/global/store-policy/">Tajikistan</option> 721 <option value="TH" data-url="https://www.enttec.com.au/as/store-policy/">Thailand</option> 722 <option value="TO" data-url="https://www.enttec.com.au/store-policy/">Tonga</option> 723 <option value="TM" data-url="https://enttec.ae/global/store-policy/">Turkmenistan</option> 724 <option value="TV" data-url="https://www.enttec.com.au/store-policy/">Tuvalu</option> 725 <option value="TR" data-url="https://www.enttec.co.uk/tr/store-policy/">Türkiye</option> 726 <option value="UA" data-url="https://www.enttec.co.uk/en/store-policy/">Ukraine</option> 727 <option value="AE" data-url="https://enttec.ae/store-policy/">United Arab Emirates</option> 728 <option value="GB" data-url="https://www.enttec.co.uk/eu/store-policy/">United Kingdom (UK)</option> 729 <option value="US" data-url="https://www.enttec.com/store-policy/">United States (US)</option> 730 <option value="UY" data-url="https://www.enttec.com/store-policy/">Uruguay</option> 731 <option value="UZ" data-url="https://enttec.ae/global/store-policy/">Uzbekistan</option> 732 <option value="VU" data-url="https://www.enttec.com.au/store-policy/">Vanuatu</option> 733 <option value="VA" data-url="https://www.enttec.co.uk/en/store-policy/">Vatican</option> 734 <option value="VE" data-url="https://www.enttec.com/store-policy/">Venezuela</option> 735 <option value="VN" data-url="https://www.enttec.com.au/as/store-policy/">Vietnam</option> 736 <option value="YE" data-url="https://www.enttec.com.au/as/store-policy/">Yemen</option> 737 </select> 738 </div> 739 </div> 740 </div>
741<script> 742 jQuery(document).ready(function($) { 743 var modal = document.getElementById('contact_overlay'); 744 // When the user clicks anywhere outside of the modal, close it 745 window.onclick = function(event) { 746 if (event.target == modal) { 747 modal.style.display = "none"; 748 } 749 } 750 751 }); 752</script>
752 <!-- wrapper --> 753 <div id="wrapper"> 754 755 756 757 758 759<main role="main"> 760 <!-- section --> 761 <section> 762 <!-- article --> 763 <article id="post-2946" class="post-2946 page type-page status-publish hentry"> 764 <div class="lgl-doc"> 765<header class="lgl-head"> 766<div class="lgl-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path pathLength="1" d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"/><path pathLength="1" d="M3 6h18"/><path pathLength="1" d="M16 10a4 4 0 0 1-8 0"/></svg></div> 767<h1 class="lgl-title">Store Policy</h1> 768<div class="lgl-meta">Last updated: 2 June 2026</div> 769</header> 770<nav class="lgl-toc"><strong>On this page</strong></p> 771<ul> 772<li><a href="#enttec-com-au-store-policy">ENTTEC.COM.AU STORE POLICY</a></li> 773<li><a href="#processing-orders-shipping-conditions-refund">Processing orders â Shipping conditions â Refund</a></li> 774<li><a href="#background">BACKGROUND</a></li> 775<li><a href="#schedule-1-description-of-goods-lighting-equipment">SCHEDULE 1 | Description of goods: Lighting equipment</a></li> 776<li><a href="#agreement-to-buy-and-sell">Agreement to buy and sell</a></li> 777<li><a href="#placement-of-orders">Placement of orders</a></li> 778<li><a href="#out-of-stock-item">Out of stock item:</a></li> 779<li><a href="#acceptance-of-orders">Acceptance of orders</a></li> 780<li><a href="#packing-of-orders">Packing of orders</a></li> 781<li><a href="#shipment-processing-time">Shipment processing time</a></li> 782<li><a href="#shipment-locations">Shipment locations</a></li> 783<li><a href="#domestic-and-international">Domestic and international</a></li> 784<li><a href="#shipping-restrictions">Shipping restrictions</a></li> 785<li><a href="#shipment-rates-and-delivery-estimates">Shipment rates and delivery estimates</a></li> 786<li><a href="#please-note">Please note:</a></li> 787<li><a href="#tracking-options-and-order-status">Tracking options and order status</a></li> 788<li><a href="#domestic-and-international-2">Domestic and International</a></li> 789<li><a href="#international-customs-duties-and-taxes">International customs, duties, and taxes</a></li> 790<li><a href="#receiving-shipments-and-damages">Receiving shipments and damages</a></li> 791<li><a href="#missing-or-lost-package">Missing or lost package</a></li> 792<li><a href="#product-warranty">Product warranty</a></li> 793<li><a href="#payment">Payment</a></li> 794<li><a href="#typographical-errors">Typographical errors</a></li> 795<li><a href="#refund-policy">Refund policy</a></li> 796<li><a href="#general">General</a></li> 797<li><a href="#australian-consumer-law">Australian Consumer Law</a></li> 798<li><a href="#defective-products">Defective products</a></li> 799<li><a href="#cancellation-and-change-of-mind">Cancellation and Change of Mind</a></li> 800<li><a href="#products-damaged-during-delivery">Products Damaged During Delivery</a></li> 801<li><a href="#exceptions">Exceptions</a></li> 802<li><a href="#shipping-costs-for-returns">Shipping Costs for Returns</a></li> 803<li><a href="#response-time">Response Time</a></li> 804<li><a href="#refund-policy-for-software-purchases">Refund policy for software purchases</a></li> 805<li><a href="#how-to-return-products">How to Return Products</a></li> 806<li><a href="#return-notes">Return notes</a></li> 807<li><a href="#contact-us">Contact Us</a></li> 808</ul> 809</nav> 810<article class="lgl-body"> 811<h2 id="enttec-com-au-store-policy">ENTTEC.COM.AU STORE POLICY</h2> 812<h2 id="processing-orders-shipping-conditions-refund">Processing orders â Shipping conditions â Refund</h2> 813<p>All new products listed at enttec.com.au are factory sealed and include a full manufacturerâs warranty.</p> 814<h2 id="background">BACKGROUND</h2> 815<ol> 816<li>The Seller is ENTTEC, supplier of the Goods described in item 1 of schedule 1 (Goods).</li> 817<li>The Buyer wishes to buy Goods from the Seller by orders placed from time to time.</li> 818<li>The Seller has agreed to sell, and the Buyer has agreed to buy Goods on the terms and conditions set out in this agreement.</li> 819</ol> 820<h2 id="schedule-1-description-of-goods-lighting-equipment">SCHEDULE 1 | Description of goods: Lighting equipment</h2> 821<h2 id="agreement-to-buy-and-sell">Agreement to buy and sell</h2> 822<p>In return for payment for goods purchased on enttec.com.au, the Seller sells, and the Buyer buys the Goods on the terms of this agreement.</p> 823<h2 id="placement-of-orders">Placement of orders</h2> 824<p>Orders will be processed for fulfillment within 24 hours of receipt during regular business days. Most items are in stock and ship the same day if ordered before the following cut-off times:</p> 825<ul> 826<li>2:00pm AEST</li> 827</ul> 828<h2 id="out-of-stock-item">Out of stock item:</h2> 829<p>However, we cannot guarantee that all items will always be in stock due to occasional fluctuations in demand and supply chain timing. Therefore, if you would like confirmation of stock availability prior to ordering, please email [email protected].</p> 830<p>If for some unforeseen reason an item is no longer available or back-ordered for an extended period of time, you will be notified within 24 hours of order placement. Please email us if you wish to receive stock confirmation prior to ordering.</p> 831<p>Once your order is processed, you will receive an email regarding your order status. Please keep this email as your proof of purchase.</p> 832<h2 id="acceptance-of-orders">Acceptance of orders</h2> 833<p>Your receipt of an electronic order confirmation does not signify our acceptance of your order, nor does it constitute confirmation of our offer to sell. Enttec.com reserves the right at any time after receipt of your order to accept or decline your order for any reason. We also reserve the right to ship a manufacturer-certified replacement if the manufacturer has upgraded or modified an item.</p> 834<h2 id="packing-of-orders">Packing of orders</h2> 835<p>ENTTEC will ensure each order is safely and securely packed for transportation to the Buyer having regard to:</p> 836<ol> 837<li>the fragility and perishability of the Goods;</li> 838<li>the distance the Goods are likely to travel; and</li> 839<li>the method of transportation used to transport the Goods.</li> 840</ol> 841<p>Customers are requested to ensure that their shipping address is correct before completing checkout. You can review and edit your shipping address during checkout.</p> 842<p>Please double-check your details before you complete your order. Enttec.com.au will only ever ship to the âshipping addressâ that is entered by the customer, as set out in our shipping policy. </p> 843<p>Once the order has left the Enttec.com.au warehouse, it is the customersâ responsibility to contact the courier, if they want the delivery address to be changed.</p> 844<p>Tracking reference numbers will be emailed to the customerâs email address once goods are dispatched from the ENTTEC warehouse.</p> 845<h2 id="shipment-processing-time">Shipment processing time</h2> 846<p>Processing time refers to the time it takes for us to prepare your order for shipping.</p> 847<p>After your payment is authorised and verified, all orders are processed within between 2 and 5 working days. We will contact you for some reason if there are any delays.</p> 848<h2 id="shipment-locations">Shipment locations</h2> 849<h2 id="domestic-and-international">Domestic and international</h2> 850<p>ENTTEC Pty Ltd ships domestically as well as internationally.</p> 851<p>If you have a question about domestic or international deliveries, please contact us at sales.</p> 852<h2 id="shipping-restrictions">Shipping restrictions</h2> 853<p>Our company does ship to both commercial and domestic addresses, but NOT to postal address.</p> 854<h2 id="shipment-rates-and-delivery-estimates">Shipment rates and delivery estimates</h2> 855<p>We endeavor to get your order to you as soon as possible. Once your order is placed, an estimated delivery time will be provided to you. Delivery times are estimates and commence from the date of shipment, rather than the date of order. Delivery times are to be used as a guide only and are subject to the acceptance and approval of your order. Estimated arrival dates are not guaranteed. Weather delays and other unforeseen circumstances may impact delivery time. Unless there are exceptional circumstances, we make every effort to fulfill your order.</p> 856<p>Enttec.com.au calculates shipping and handling rates based on the then-current carrier shipping tables. In the event of a shipping adjustment due to the nature (size and weight) of your order, the total may be adju
856sted to compensate. This occurrence is rare and most orders are assessed with the shipping charges calculated at check out.</p> 857<h2 id="please-note">Please note:</h2> 858<p>Business day means Monday to Friday, except holidays.</p> 859<p>Orders are not shipped or delivered on weekends or holidays.</p> 860<p>The date of delivery may vary due to carrier shipping practices, delivery location, method of delivery, and the items ordered.</p> 861<p>Products may be delivered in separate shipments.</p> 862<p>When placing your order, we consider these factors when calculating the Estimated Delivery Date:</p> 863<ol> 864<li>Transit Time: The amount of time it takes your order to leave our distribution centre and arrive at the local delivery carrier.</li> 865<li>Weight factor: Shipping costs are based on the weight of your order and the delivery method. To find out how much your order will cost, simply add the items you would like to purchase to your cart and proceed to the checkout page. Once at the checkout screen, shipping charges will be displayed.</li> 866</ol> 867<p>Due to occasional fluctuations in demand and supply chain timing, packages to and from our facility in Keysborough may be delayed. We appreciate your patience during this time.</p> 868<p>We will not be responsible for wrong shipping addresses if you provide incorrect information.</p> 869<p>In-store pickup dates vary based on product availability.</p> 870<h2 id="tracking-options-and-order-status">Tracking options and order status</h2> 871<p>ENTTEC Pty Ltd aims to provide visibility and transparency throughout the shipment process. Once your order is confirmed and shipped, you will receive a link to track your package.</p> 872<p>To check on the status of your order anytime, please visit our Order Status. If you require additional information, please email sales.</p> 873<h2 id="domestic-and-international-2">Domestic and International</h2> 874<p>All orders delivered within Australia automatically have a tracking number.</p> 875<p>International orders are sent with DHL Express. This service comes with tracking and your tracking number will be sent to you once it has been posted. If we are requested to make alternative shipping arrangements, we cannot guarantee tracking and will not be responsible for the delivery of orders sent internationally.</p> 876<h2 id="international-customs-duties-and-taxes">International customs, duties, and taxes</h2> 877<p>All orders shipping to a destination outside of Australia are subject to the import duties, fees, and taxes of the destination country. Delays in delivery may occur if your package is randomly selected by your countryâs Customs Department. ENTTEC Pty Ltd is not responsible for any possible customs and taxes applied to your order. We have no control over the process or additional charges associated with the delivery and importation of your order (package) into your country. We do not benefit in any way from these chargers and we work very closely with our carriers to ensure as few delays as possible. All fees imposed during or after shipping are the responsibility of the customer. You agree that you are responsible for any duty, taxes, and customs requirements or other like taxes, fees, levies, costs or expenses associated with importing products you purchase from us and shipping them internationally.</p> 878<h2 id="receiving-shipments-and-damages">Receiving shipments and damages</h2> 879<p>Before signing for any trucking delivery, it is the customerâs responsibility to examine all items for signs of damage. If any damage is found, make certain that the delivering agent notes the damage on the release form.</p> 880<p>If there is any damage to the packaging on delivery, contact us immediately at +61 3 9763 5755 or at sales, so a claim can be made.</p> 881<h2 id="missing-or-lost-package">Missing or lost package</h2> 882<p>There are several reasons why a package gets lost or becomes a delivery exception. Weâve found that more often than not, the package is either in the building or with a neighbour. ENTTEC Pty Ltd politely requests that customers look in common courier hiding spots. Please take a look around and let us know if you find it. If you havenât located your order, please contact us at +61 3 9763 5755 to report missing or lost packages.</p> 883<h2 id="product-warranty">Product warranty</h2> 884<p>All warranty service for original customers is provided by ENTTEC. The customer is responsible for all shipping charges, if any, to the warranty location. This warranty does not cover any loss of business, profits, or other consequential damage, either real or perceived, that may have resulted from any malfunction of the product. Damage from flood, lightning strikes, earthquake, any other acts of nature/God, mishandling, dropping, or infestation is not covered by this warranty. This warranty is also void if the manufacturer determines that the product has been damaged due to insufficient packaging during any return shipment. The manufacturer reserves the right to determine whether alterations have been made, or damages caused, by such facts that would serve to void the terms of this warranty.</p> 885<p>More information is available on our Website Terms and Conditions of Use.</p> 886<h2 id="payment">Payment</h2> 887<p>Unless stated otherwise, the Price is exclusive of GST. The Buyer must pay the Price, plus the requisite GST, on checkout of the order by way of electronic payment.</p> 888<h2 id="typographical-errors">Typographical errors</h2> 889<p>In the event a product is listed incorrectly due to a typographical error, manufacturer data error, product description and/or errors in pricing, Enttec.com shall have the right to refuse or cancel any such orders whether or not the order has been confirmed and your credit card charged. If your credit card has already been charged for the purchase and your order is canceled, Enttec.com.au shall immediately issue a full credit to your credit card account.</p> 890<h2 id="refund-policy">Refund policy</h2> 891<p>This Refund Policy (âPolicyâ) applies to the purchases made through our web store www.enttec.com.au</p> 892<h2 id="general">General</h2> 893<p>We offer refunds, repairs, and replacements in accordance with the Australian Consumer Law and on the terms set out in this Refund Policy (âPolicyâ).</p> 894<p>Any benefits set out in this Policy may apply in addition to consumerâs rights under the Australian Consumer Law.</p> 895<p>Before making a purchase, please read this Policy so that you can understand your rights and what you can expect from us if you are not satisfied with your order.</p> 896<h2 id="australian-consumer-law">Australian Consumer Law</h2> 897<p>Under the Australian Consumer Law:</p> 898<p>Our goods and services come with guarantees that cannot be excluded under the Australian Consumer Law. For major failures with the service, you are entitled:</p> 899<ol> 900<li>to cancel your service contract with us; and</li> 901<li>to a refund for the unused portion, or to compensation for its reduced value.</li> 902</ol> 903<p>You are also entitled to choose a refund or replacement for major failures with goods. If a failure with the goods does not amount to a major failure, you are entitled to have the failure rectified in a reasonable time. If this is not done you are entitled to a refund for the goods and obtain a refund of any unused portion.</p> 904<h2 id="defective-products">Defective products</h2> 905<p>Enttec.com.au offers a 30-day (from date of shipment) replacement or credit policy for defective products. Customers who do not want an item repaired or replaced can request a return material authorization (RMA).
905</p> 906<h2 id="cancellation-and-change-of-mind">Cancellation and Change of Mind</h2> 907<p>In the event that you receive the products or services you have purchased, as stated, but that you simply change your mind, we may, at our discretion, offer you a refund or exchange, provided that:</p> 908<ol> 909<li>You notify us within 7 days of receipt.</li> 910<li>In the case of services, the services have not already been performed.</li> 911<li>The following conditions are satisfied: 912<ol> 913<li>the product has not been unopened</li> 914<li>the product must be returned with the RMA (Return Material Authorisation)</li> 915</ol> 916</li> 917</ol> 918<p>Please note that a 15% restocking fee will be deducted from the refund to cover testing, cleaning and repackaging expenses. In addition to this fee, a pro-rated charge (up to 100%) will be assessed for items that are returned incomplete or with non-resaleable parts.</p> 919<h2 id="products-damaged-during-delivery">Products Damaged During Delivery</h2> 920<p>In the event that the product you ordered has been damaged during delivery:</p> 921<ol> 922<li>Please contact us as soon as possible.</li> 923<li>Any damaged product must be returned in the condition in which it was received, together with any packaging and other items which you received with the damaged product.</li> 924</ol> 925<p>We will arrange to repair or collect the damaged product and replace it with an equivalent product, or to refund it, provided that you have contacted us within the following time from the date of receipt of the product: 15 days.</p> 926<h2 id="exceptions">Exceptions</h2> 927<p>Notwithstanding the other provisions of this Policy, we may refuse to provide a repair, replacement or refund for a product or service purchased by you if:</p> 928<ol> 929<li>You misused the said product in a way that caused the problem.</li> 930<li>You knew or were made aware of the problem(s) with the product or service before you purchased it.</li> 931<li>You asked for a service to be done in a certain manner, or you asked for alterations to a product, against our advice, or you were unclear about what you wanted.</li> 932<li>Any other exceptions apply under the Australian Consumer Law.</li> 933</ol> 934<h2 id="shipping-costs-for-returns">Shipping Costs for Returns</h2> 935<p>In the event that a product you have purchased fails to meet one or more Consumer Guarantees under the Australian Consumer Law, we shall bear any cost of shipping the said product (the âReturned Productâ) back to us, as well as any cost of shipping any replacement product to you.</p> 936<p>If the Returned Product is returned following a cancellation or change of mind, then you are responsible for organising for the Returned Product to be returned to us.</p> 937<p>In the event that we organise and pay for the inspection, postage, shipping, transportation or collection of a Returned Product, and it turns out not to be eligible for a repair, replacement or refund under the terms of this Policy (including under the Australian Consumer Law), then you will be required to pay the costs of any inspection, postage, shipping, transportation or collection of the Returned Product.</p> 938<h2 id="response-time">Response Time</h2> 939<p>We aim to process any requests for repairs, replacements or refunds within 15 days of receipt.</p> 940<h2 id="refund-policy-for-software-purchases">Refund policy for software purchases</h2> 941<p>Software that has not been activated within 7 days of purchase may be eligible for a refund. Once fully activated, no refund will be given. Free demo versions are available and can be tried before purchase.</p> 942<h2 id="how-to-return-products">How to Return Products</h2> 943<p>
943You can contact us at the end of this Policy to discuss a return using the information.</p> 944<p>Unless otherwise defined in our sole discretion, we shall pay all refunds in the same form as the original purchase or to the same account or credit card used to make the original purchase.</p> 945<p>To be eligible for a refund, repair or replacement, you must provide proof of purchase along with a completed RMA.</p> 946<h2 id="return-notes">Return notes</h2> 947<p>All returns must be pre-approved by applying for an RMA number (Return Merchandise Authorization). To accomplish this, please email us and include a description of the issue. Any item returned or refused without applying for an RMA will be subject to a 15% restocking fee. Once your request has been received, you will be contacted within 1 business day with an RMA number and instructions for sending back the item(s). The RMA number, once provided, is valid for 2 weeks only. You must re-package any item(s) being returned as it was delivered to you, with all components, materials, and documentation. If you received your item double boxed, it must be returned in this manner. Once shipped, Email the tracking number(s) to us with your Enttec order number. We will notify you via email of your refund once we have received and processed the returned item(s).</p> 948<h2 id="contact-us">Contact Us</h2> 949<p>If you wish to speak to us about this Policy or about any refund, repairs or replacements, please contact us at [email protected].</p> 950</article> 951</div> 952 </article> 953 <!-- /article --> 954 </section> 955 <!-- /section --> 956</main> 957 958 959<div class="ec-consent" id="ec-consent" role="dialog" aria-modal="false" 960 aria-labelledby="ec-consent-title" aria-describedby="ec-consent-body" hidden> 961 962 <h2 id="ec-consent-title" tabindex="-1">Cookies on this site</h2> 963 <p id="ec-consent-body">Some cookies keep the site working, like your region, cart and sign-in. 964 With your permission we also measure how pages are used so we can improve them. 965 <a href="https://www.enttec.com.au/cookie-policy/">Cookie policy</a></p> 966 967 <div class="ec-consent__actions"> 968 <button type="button" class="ec-consent__btn" data-ec-act="reject">Reject optional</button> 969 <button type="button" class="ec-consent__btn" data-ec-act="accept">Accept all</button> 970 </div> 971 972 <button type="button" class="ec-consent__more" id="ec-consent-more" 973 aria-expanded="false" aria-controls="ec-consent-panel">Choose what to allow</button> 974 975 <div class="ec-consent__panel" id="ec-consent-panel" hidden> 976 <div class="ec-consent__row"> 977 <div class="ec-consent__rowtext"> 978 <h3>Strictly necessary</h3> 979 <p>Your region, cart, checkout and sign-in. The site cannot work without these.</p> 980 </div> 981 <span class="ec-consent__required">Always on</span> 982 </div> 983 <div class="ec-consent__row"> 984 <div class="ec-consent__rowtext"> 985 <h3>Analytics</h3> 986 <p>Google Analytics, so we can see which pages help and which do not.</p> 987 </div> 988 <label> 989 <input type="checkbox" id="ec-consent-analytics" aria-label="Allow analytics cookies"> 990 <span class="ec-consent__switch"></span> 991 </label> 992 </div> 993 <div class="ec-consent__row"> 994 <div class="ec-consent__rowtext"> 995 <h3>Marketing</h3> 996 <p>Records which campaign or search brought you here, so we know what is worth doing again.</p> 997 </div> 998 <label> 999 <input type="checkbox" id="ec-consent-marketing" aria-label="Allow marketing cookies"> 1000 <span class="ec-consent__switch"></span> 1001 </label> 1002 </div> 1003 <button type="button" class="ec-consent__save" id="ec-consent-save">Save my choices</button> 1004 </div> 1005</div> 1006 1007<div class="ec-consent-done" id="ec-consent-done" role="status" hidden></div> 1008
1009<script> 1010(function () { 1011 'use strict'; 1012 1013 var card = document.getElementById('ec-consent'); 1014 var moreBtn = document.getElementById('ec-consent-more'); 1015 var panel = document.getElementById('ec-consent-panel'); 1016 var doneEl = document.getElementById('ec-consent-done'); 1017 var title = document.getElementById('ec-consent-title'); 1018 var cbA = document.getElementById('ec-consent-analytics'); 1019 var cbM = document.getElementById('ec-consent-marketing'); 1020 1021 if (!card) { return; } 1022 1023 var YEAR = 31556952; 1024 var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; 1025 var hideTimer, doneTimer; 1026 1027 function readCookie(name) { 1028 var m = document.cookie.match('(?:^|;\\s*)' + name + '=([^;]*)'); 1029 return m ? decodeURIComponent(m[1]) : null; 1030 } 1031 1032 function writeCookie(name, value) { 1033 // Secure only where the page actually is secure. The previous version sent 1034 // Secure unconditionally, so on a plain-http origin (local dev) the browser 1035 // dropped the cookie and consent could never be recorded. 1036 var secure = location.protocol === 'https:' ? '; Secure' : ''; 1037 document.cookie = name + '=' + value + '; path=/; max-age=' + YEAR + '; SameSite=Lax' + secure; 1038 } 1039 1040 /* Returns {a:bool, m:bool} or null when the visitor has never answered. */ 1041 function readConsent() { 1042 var v = readCookie('enttecConsent'); 1043 if (v) { 1044 var m = v.match(/^v1:a([01]):m([01])$/); 1045 if (m) { return { a: m[1] === '1', m: m[2] === '1' }; } 1046 } 1047 // Legacy-only visitor: honour the old answer rather than asking again. 1048 var legacy = readCookie('acceptCookies'); 1049 if (legacy === 'yes') { return { a: true, m: true }; } 1050 if (legacy === 'no') { return { a: false, m: false }; } 1051 return null; 1052 } 1053 1054 function applyConsent(c) { 1055 if (typeof gtag !== 'function') { return; } 1056 gtag('consent', 'update', { 1057 analytics_storage: c.a ? 'granted' : 'denied', 1058 ad_storage: c.m ? 'granted' : 'denied', 1059 ad_user_data: c.m ? 'granted' : 'denied', 1060 ad_personalization: c.m ? 'granted' : 'denied' 1061 }); 1062 } 1063 1064 function save(c) { 1065 writeCookie('enttecConsent', 'v1:a' + (c.a ? 1 : 0) + ':m' + (c.m ? 1 : 0)); 1066 // See the mapping rule in the PHP comment above: 'yes' only when EVERY 1067 // optional category is granted. Any partial choice is 'no'. 1068 writeCookie('acceptCookies', (c.a && c.m) ? 'yes' : 'no'); 1069 applyConsent(c); 1070 } 1071 1072 function close(message) { 1073 clearTimeout(hideTimer); clearTimeout(doneTimer); 1074 card.classList.add('is-out'); 1075 // [hidden] rather than a transform: this is what removes the answered card 1076 // from the tab order and the accessibility tree. 1077 hideTimer = setTimeout(function () { card.hidden = true; }, reduce ? 0 : 200); 1078 1079 doneEl.textContent = message; 1080 doneEl.hidden = false; 1081 doneEl.classList.remove('is-out'); 1082 doneTimer = setTimeout(function () { 1083 doneEl.classList.add('is-out'); 1084 setTimeout(function () { doneEl.hidden = true; }, reduce ? 0 : 200); 1085 }, 3200); 1086 1087 // Hand off to the region popup if one is queued on this page, after a short 1088 // beat so it rises into the space this card vacated rather than stacking on 1089 // top of it. No-op when there is no popup. 1090 if (typeof window.enttecRevealRegionPopup === 'function') { 1091 setTimeout(window.enttecRevealRegionPopup, reduce ? 0 : 460); 1092 } 1093 } 1094 1095 /* moveFocus: only when the visitor deliberately reopened this from the footer 1096 * link. On the automatic first appearance we must NOT pull focus out of the 1097 * page they are reading; the card is non-modal and can wait for them. */ 1098 function open(moveFocus) { 1099 var current = readConsent(); 1100 if (current) { cbA.checked = current.a; cbM.checked = current.m; } 1101 card.classList.add('is-out'); 1102 card.hidden = false; 1103 requestAnimationFrame(function () { 1104 card.classList.remove('is-out'); 1105 if (moveFocus) { title.focus(); } 1106 }); 1107 } 1108 1109 /* [hidden] stays the collapsed state because it is the one that actually takes 1110 * the options out of the tab order and the accessibility tree. But display:none 1111 * cannot be transitioned, so opening drops [hidden] first and adds .is-open on 1112 * the NEXT frame (giving the transition a start state to move from), and 1113 * closing reverses it, waiting for the animation before hiding. */ 1114 var panelTimer; 1115 moreBtn.addEventListener('click', function () { 1116 var opening = panel.hidden; 1117 clearTimeout(panelTimer); 1118 1119 if (opening) { 1120 panel.hidden = false;
1121 requestAnimationFrame(function () { panel.classList.add('is-open'); }); 1122 } else { 1123 panel.classList.remove('is-open'); 1124 panelTimer = setTimeout(function () { panel.hidden = true; }, reduce ? 0 : 300); 1125 } 1126 1127 moreBtn.setAttribute('aria-expanded', String(opening)); 1128 moreBtn.textContent = opening ? 'Hide options' : 'Choose what to allow'; 1129 }); 1130 1131 card.addEventListener('click', function (e) { 1132 var btn = e.target.closest('[data-ec-act]'); 1133 if (!btn) { return; } 1134 var acceptAll = btn.getAttribute('data-ec-act') === 'accept'; 1135 save({ a: acceptAll, m: acceptAll }); 1136 close(acceptAll ? 'Thanks, all cookies allowed.' : 'Saved. Only essential cookies.'); 1137 }); 1138 1139 document.getElementById('ec-consent-save').addEventListener('click', function () { 1140 var c = { a: cbA.checked, m: cbM.checked }; 1141 save(c); 1142 close('Saved. ' + ((c.a || c.m) ? 'Your choices are active.' : 'Only essential cookies.')); 1143 }); 1144 1145 // Escape collapses the options layer only. Dismissing is never an answer: 1146 // silence is not consent, so there is no Escape-to-close on the card itself. 1147 document.addEventListener('keydown', function (e) { 1148 if (e.key === 'Escape' && !panel.hidden) { moreBtn.click(); moreBtn.focus(); } 1149 }); 1150 1151 // Entry point for the "Cookie settings" control, which replaces the old 1152 // permanent #show-gdpr pill. See enttec-nav/definitions/copyright.php. 1153 // 1154 // Delegated, deliberately: this template is printed at the TOP of footer.php, 1155 // so the footer's own button does not exist yet when this runs. Binding 1156 // directly to it here would silently do nothing. Delegation also means the 1157 // cookie-policy page can offer the same control with no extra wiring. 1158 window.enttecOpenConsent = function () { open(true); }; 1159 document.addEventListener('click', function (e) { 1160 var trigger = e.target.closest('[data-enttec-consent-open]'); 1161 if (!trigger) { return; } 1162 e.preventDefault(); 1163 open(true); 1164 }); 1165 1166 var answered = readConsent(); 1167 if (answered) { 1168 // Returning visitor: re-assert their choice for this page load and stay down. 1169 applyConsent(answered); 1170 } else { 1171 open(false); 1172 } 1173})(); 1174</script>
1174 1175<button type="button" id="go-to-top" aria-label="Back to top" hidden> 1176 <svg class="gtt__icon" viewBox="0 0 24 24" aria-hidden="true" focusable="false"> 1177 <!-- 1178 Drawn from y=9 to y=15 so the chevron's own midpoint is 12, the centre of 1179 the 24-unit viewBox. The obvious "M6 14l6-6 6 6" spans 8 to 14, which 1180 centres the glyph one unit high and renders it visibly above the label at 1181 20px. Flexbox centres the SVG BOX, it cannot centre what you draw inside it. 1182 --> 1183 <path d="M6 15l6-6 6 6" fill="none" stroke="currentColor" stroke-width="2" 1184 stroke-linecap="round" stroke-linejoin="round"/> 1185 </svg> 1186 <span class="gtt__label">Back to top</span> 1187</button> 1188<div id="google_translate_element"></div> 1189</div> 1190<!-- /wrapper --> 1191 1192</div> 1193<!-- /main --> 1194<!-- footer --> 1195<footer x-data="getFooterData()"> 1196 <div class="footer-separator"></div> 1197 <div class="footer-inner"> 1198 <div class="top-footer d-none"></div> 1199 <div class="center-footer"> 1200 <section class="log-section d-block d-lg-none order-0"> 1201 <div class="logo" translate="no">EN<span>TT</span>EC</div> 1202 </section> 1203 <section class="regions d-none d-lg-block"> 1204 <div class="logo" translate="no">EN<span>TT</span>EC</div> 1205 <div class="regions-list"> 1206 <a href="https://enttec.ae" class="">AE</a><a href="https://www.enttec.com.au" class="active">AU</a><a href="https://www.enttec.co.uk" class="">EU</a><a href="https://www.enttec.com" class="">US</a><a href="https://enttec.com.cn" class="">CN</a><a href="https://enttec.com.ru" class="">RU</a> </div> 1207 </section> 1208 <section class="contact order-2 order-lg-1"> 1209 <div class="address mt-0"> 1210<!-- <span class="icon"><i class="fas fa-map-marker"></i></span>--> 1211 <span class="text" x-html='getAddress()'> 43 Indian Drive<br>Keysborough Victoria 3173<br>Australia </span> 1212 </div> 1213 <div class="tel"> 1214 <span class="icon"><i class="fas fa-phone"></i></span> 1215 <span class="text" x-text='contactDetails.phone'>+61 (03) 9763 5755</span> 1216 </div> 1217 <div class="tel" x-show='contactDetails.hasOwnProperty("whatsapp")'> 1218 <span class="icon"><i class="fa-brands fas fa-whatsapp"></i></span> 1219 <span class="text" x-text='contactDetails.whatsapp'>+61466122276</span> 1220 </div> 1221 <div class="email"> 1222 <span class="icon"><i class="fas fa-envelope"></i></span> 1223 <span class="text" x-html='getEmails()'>[email protected]<br>[email protected]</span> 1224 </div> 1225 <div class="abn" x-show='contactDetails.hasOwnProperty("abn")'> 1226 <span class="icon"><i class="fas fa-building"></i></span> 1227 <span class="text" translate="no" x-text="`ABN ${contactDetails.abn}`">ABN 31664779168</span> 1228 </div> 1229 1230 </section> 1231 <section class='list order-3'> 1232 <ul class="list"><li><a href="https://www.enttec.com.au/about-enttec/">About</a></li><li><a href="https://www.enttec.com.au/projects/">Projects</a></li><li><a href="https://www.enttec.com.au/products/">Products</a></li><li><a href="https://support.enttec.com/">Support</a></li><li><a href="https://www.enttec.com.au/blog/">News and Knowledge</a></li><li><a href="https://www.enttec.com.au/catalogue/">Catalogue</a></li></ul> </section> 1233 <section class="order-1 order-lg-4"> 1234 <ul class="social-network" role="navigation"><li><a href="https://www.facebook.com/enttec/" target="_blank" rel="noopener" aria-label="Facebook"><i class="fab fa-facebook-f enttec-social-icon"></i></a></li><li><a href="https://www.youtube.com/c/ENTTECofficial" target="_blank" rel="noopener" aria-label="YouTube"><i class="fab fa-youtube enttec-social-icon"></i></a></li><li><a href="https://www.instagram.com/enttecofficial/" target="_blank" rel="noopener" aria-label="Instagram"><i class="fab fa-instagram enttec-social-icon"></i></a></li><li><a href="https://www.linkedin.com/company/enttec" target="_blank" rel="noopener" aria-label="LinkedIn"><i class="fab fa-linkedin-in enttec-social-icon"></i></a></li><li><a href="https://www.pinterest.com/enttecofficial/" target="_blank" rel="noopener" aria-label="Pinterest"><i class="fab fa-pinterest-p enttec-social-icon"></i></a></li><li><a href="https://www.tiktok.com/@enttecofficial" target="_blank" rel="noopener" aria-label="TikTok"><i class="fab fa-tiktok enttec-social-icon"></i></a></li><li><a href="https://x.com/ENTTECOfficial" target="_blank" rel="noopener" aria-label="X"><i class="fab fa-x-twitter enttec-social-icon"></i></a></li></ul> <div class="justify-content-between justify-content-lg-end qr-codes mt-3 d-flex"> 1235 <img class="mx-2" src="https://www.enttec.com.au/wp-content/themes/eshop/img/iso-certificate.webp" alt="Citation Certification ISO - 9001"> 1236 </div> 1237 </section> 1238 <section class="regions d-block d-lg-none order-4"> 1239 <div class="regions-list"> 1240 <a href="https://enttec.ae" class="">AE</a><a href="https://www.enttec.com.au" class="active">AU</a><a href="https://www.enttec.co.uk" class="">EU</a><a href="https://www.enttec.com" class="">US</a><a href="https://enttec.com.cn" class="">CN</a><a href="https://enttec.com.ru" class="">RU</a> </div> 1241 </section> 1242 1243 </div> 1244 1245 <div class="copyright-footer"> 1246 <div class="copyright-text">Copyright 2026 ENTTEC Pty Ltd.</div> 1247 <ul class="links footer-links" role="navigation"><li><a href="https://www.enttec.com.au/terms-and-conditions-policy/">Terms & Conditions</a></li><li><a href="https://www.enttec.com.au/store-policy/">Store Policy</a></li><li><a href="https://www.enttec.com.au/privacy-policy/">Privacy Policy / GDPR</a></li><li><a href="https://www.enttec.com.au/cookie-policy/">Cookie Policy</a></li><li><button type="button" class="footer-link-button" data-enttec-consent-open>Cookie settings</button></li></ul> </div> 1248 </div> 1249</footer> 1250<!-- /footer --> 1251
1252<script type="speculationrules"> 1253{"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/eshop/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 1254</script>
1254 1255
1255<script>window.enttecMM = {"langPrefix":"","isCN":false,"navLabels":{"products":["products","product"],"about":["about"],"support":["support"]},"cnOverlay":null,"prod":{},"productPreview":false,"ui":{"browse_eyebrow":"Browse by category","more_eyebrow":"More","menu_title":"Menu","search_placeholder":"Search products, articles, support...","login":"Login","cart":"Cart","locale":"EN","compare_template":"Compare {title} â","projects_link":"Projects","news_link":"News","about_row":"About","support_row":"Support","category_eyebrow":"Category","product_eyebrow":"Product","products_eyebrow":"Products","categories_heading":"Categories","brochure_label":"View 2026 Catalogue","brochure_href":"\/catalogue\/","card_count_template":"{n} products"},"regionOverrides":{"about":[["About ENTTEC","\/about-enttec\/"],["Authorised Distributors","\/authorised-distributors\/"],["Contact Us","\/contact-us\/"],["OEM","\/oem\/"]],"support":[["Support Centre","https:\/\/support.enttec.com\/"],["Training Videos","\/support\/lighting-control-training-videos\/"],["Pixel Protocols","\/pixel-protocols\/"],["UL Listed Products","\/support\/ul-listed-products\/"]],"catUrls":null,"newsHref":"\/blog\/"},"region":"AU","regionProductUrls":{"dmx-ethernet-distribution":{"storm10-10-universe-ethernet-to-dmx-gateway":"\/product\/dmx-distribution\/storm10-10-universe-ethernet-to-dmx-gateway\/","ethernet-to-dmx-rdm-converter":"\/product\/dmx-distribution\/ethernet-to-dmx-rdm-converter\/","ode-mk3-dmx-ethernet-converter":"\/product\/dmx-distribution\/ode-mk3-dmx-ethernet-converter\/"},"dmx-lighting-control-software":{"emu-sound-to-light-controller":"\/product\/dmx-lighting-control-software\/emu-sound-to-light-controller\/","pixel-mapping-software":"\/product\/dmx-lighting-control-software\/pixel-mapping-software\/","pixel-mapping-software-2024":"\/product\/dmx-lighting-control-software\/pixel-mapping-software-2024\/","s-play-programmer":"\/product\/dmx-lighting-control-software\/s-play-programmer\/","emu-hardware-interface":"\/product\/lighting-show-controller\/emu-hardware-interface\/"},"dmx-usb-interface":{"dmx-usb-pro-professional-1u-usb-to-dmx512-converter":"\/product\/dmx-usb-interfaces\/dmx-usb-pro-professional-1u-usb-to-dmx512-converter\/","open-dmx-usb":"\/product\/dmx-usb-interfaces\/open-dmx-usb\/","d-split-dmx-opto-splitter-isolator":"\/product\/dmx-rdm-isolated-splitter-din-rail\/d-split-dmx-opto-splitter-isolator\/","dmx-rdm-splitter":"\/product\/dmx-rdm-isolated-splitter-din-rail\/dmx-rdm-splitter\/","emu-hardware-interface":"\/product\/lighting-show-controller\/emu-hardware-interface\/"},"led-dimmers":{"cvc4-high-power-constant-voltage-led-dimmer":"\/product\/led-dimmers\/cvc4-high-power-constant-voltage-led-dimmer\/","constant-current-led-dimmer":"\/product\/led-drivers\/constant-current-led-dimmer\/"},"led-pixel-control":{"octo-mk3-32u-led-pixel-controller":"\/product\/led-pixel-control\/octo-mk3-32u-led-pixel-controller\/","octo-8-universe-edmx-to-led-pixel-controller":"\/product\/led-pixel-control\/octo-8-universe-edmx-to-led-pixel-controller\/","octo-lite-8-universe-led-pixel-controller":"\/product\/lighting-show-controller\/octo-lite-8-universe-led-pixel-controller\/","din-pixie-compact-2-universe-dmx-to-led-pixel-converter-controller":"\/product\/lighting-show-controller\/din-pixie-compact-2-universe-dmx-to-led-pixel-converter-controller\/","pixelator-mini-lighting-controller-ethernet-to-spi-pixel-converter":"\/product\/led-pixel-control\/pixelator-mini-lighting-controller-ethernet-to-spi-pixel-converter\/","pixelator-mini-mk2":"\/product\/led-pixel-control\/pixelator-mini-mk2\/","plink-injector":"\/product\/led-pixel-control\/plink-injector\/","waterproof-pixel-data-injector-2":"\/product\/led-pixel-control\/waterproof-pixel-data-injector-2\/"},"led-pixel-light":{"hi-res-smart-pxl40-metal-rgb-led-pixel-dot-strings":"\/product\/led-light-pixel-light\/hi-res-smart-pxl40-metal-rgb-led-pixel-dot-strings\/","hi-res-smart-pxl40p-rgb-led-pixel-dot-strings":"\/product\/led-light-pixel-light\/hi-res-smart-pxl40p-rgb-led-pixel-dot-strings\/","hi-res-smart-pxl60-rgb-rgbw-led-pixel-dot-strings":"\/product\/led-light-pixel-light\/hi-res-smart-pxl60-rgb-rgbw-led-pixel-dot-strings\/","hi-res-smart-pxl-100x25-rgb-rgbw-led-pixel-dot-strings":"\/product\/led-light-pixel-light\/hi-res-smart-pxl-100x25-rgb-rgbw-led-pixel-dot-strings\/"},"led-pixel-strip":{"5v-rgb-60-leds-m-pixel-strip":"\/product\/led-pixel-strip\/
12555v-rgb-60-leds-m-pixel-strip\/","5v-rgbw-60-leds-m-pixel-strip":"\/product\/led-pixel-strip\/5v-rgbw-60-leds-m-pixel-strip\/","12v-rgb-60-leds-m-pixel-strip":"\/product\/led-pixel-strip\/12v-rgb-60-leds-m-pixel-strip\/","12v-rgbw-60-leds-m-pixel-strip":"\/product\/led-pixel-strip\/12v-rgbw-60-leds-m-pixel-strip\/","12v-rgb-60-leds-m-long-range-pixel-strip":"\/product\/led-pixel-strip\/12v-rgb-60-leds-m-long-range-pixel-strip\/","12v-rgbw-60-leds-m-long-range-pixel-strip":"\/product\/led-pixel-strip\/12v-rgbw-60-leds-m-long-range-pixel-strip\/"},"led-strip-light":{"cvc4-high-power-constant-voltage-led-dimmer":"\/product\/led-dimmers\/cvc4-high-power-constant-voltage-led-dimmer\/","na1-white-led-strip-10m":"\/product\/led-strip\/na1-white-led-strip-10m\/","na2-tunable-white-led-strip-10m":"\/product\/led-strip\/na2-tunable-white-led-strip-10m\/","na3-rgbw-led-strip-10m":"\/product\/led-strip\/na3-rgbw-led-strip-10m\/","na4-rgb-led-strip-10m":"\/product\/led-strip\/na4-rgb-led-strip-10m\/"},"light-show-control":{"s-play-sp1-32-universe-smart-light-show-controller":"\/product\/lighting-show-controller\/s-play-sp1-32-universe-smart-light-show-controller\/","s-play-lite":"\/product\/lighting-show-controller\/s-play-lite\/","s-play-mini-2-universe-smart-light-show-controller":"\/product\/lighting-show-controller\/s-play-mini-2-universe-smart-light-show-controller\/","s-play-nano-1-universe-smart-light-show-controller":"\/product\/lighting-show-controller\/s-play-nano-1-universe-smart-light-show-controller\/","i-o-extender":"\/product\/lighting-show-controller\/i-o-extender\/","emu-hardware-interface":"\/product\/lighting-show-controller\/emu-hardware-interface\/"}},"regionExtras":null};</script>
1255 1256 <style id="enttec-mm-preview-style"> 1257 /* Shared dropdown chrome, closer to ENTTEC nav: tight radius, sharper 1258 shadow, theme-style uppercase tracking on eyebrows / rail labels. */ 1259 #enttec-mm-preview { 1260 position: fixed; 1261 top: 72px; /* JS overwrites with the real nav bottom */ 1262 left: 50%; 1263 transform: translateX(-50%); 1264 z-index: 1000010; /* above the navbar (111111) so the dropdown sits in front, not behind */ 1265 background: white; 1266 border-radius: 3px; 1267 box-shadow: 0 6px 24px rgba(0,0,0,0.18), 0 0 0 1px rgba(0,0,0,0.06); 1268 overflow: hidden; 1269 font-family: "Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; 1270 color: #1a1a1a; 1271 /* Animation: subtle fade-in. visibility transition delayed so the 1272 dropdown stays visible during fade-out. */ 1273 opacity: 0; 1274 visibility: hidden; 1275 pointer-events: none; 1276 transition: 1277 opacity 0.16s ease-out, 1278 visibility 0s linear 0.16s; 1279 } 1280 /* Hide entirely when no variant is set (avoids empty fixed block). */ 1281 #enttec-mm-preview:not(.mm-variant-products):not(.mm-variant-simple) { 1282 display: none; 1283 } 1284 /* Variant: PRODUCTS two-pane (rail 180 + pane 1fr) 1285 * 1286 * 720 wide, not 820, and the rail is 180, not 240. Both numbers come from 1287 * measuring the widest thing each column has to hold rather than from 1288 * taste: 1289 * rail the catalogue link "View 2026 Catalogue" is the binding item 1290 * at 152px, ahead of the widest category "DMX interfaces" at 1291 * 136px. 180 leaves 28px. (CN needs more, see the CN block.) 1292 * pane the products column needs 224px for "S-PLAY Programmer" plus 1293 * its NEW badge on one line; it gets 244px here. 1294 * 1295 * Why the total matters: positionPreview() clamps the panel so it cannot 1296 * leave the viewport, and that clamp is what pulls the panel out from 1297 * under the PRODUCTS button. At 820 the clamp fired from 1366 down. At 1298 * 720 it does not fire until below 1280, so 1280 / 1366 / 1440 / 1512 all 1299 * align exactly. Widening this panel again re-breaks that alignment. 1300 */ 1301 #enttec-mm-preview.mm-variant-products { 1302 display: grid; 1303 grid-template-columns: 180px 1fr; 1304 width: 720px; 1305 max-width: calc(100vw - 40px); 1306 } 1307 /* Variant: simple link-list (ABOUT, SUPPORT), content-fit so SUPPORT 1308 (3 short items) tightens while ABOUT (4 longer items) keeps room. */ 1309 #enttec-mm-preview.mm-variant-simple { 1310 display: block; 1311 width: max-content; 1312 min-width: 200px; 1313 max-width: min(280px, calc(100vw - 40px)); 1314 } 1315 #enttec-mm-preview.is-open { 1316 opacity: 1; 1317 visibility: visible; 1318 pointer-events: auto; 1319 transition-delay: 0s; 1320 } 1321 /* Rail items get their own micro-fade when the category changes. */ 1322 #enttec-mm-preview .mm-title, 1323 #enttec-mm-preview .mm-desc, 1324 #enttec-mm-preview .mm-cta, 1325 #enttec-mm-preview .mm-banner, 1326 #enttec-mm-preview .mm-product-list { 1327 transition: opacity 0.12s ease-out; 1328 } 1329 1330 /* Show / hide each section by variant, variant-rooted selectors so 1331 they outweigh the element-specific display rules (mm-pane=grid etc). */ 1332 #enttec-mm-preview.mm-variant-simple .mm-products-only, 1333 #enttec-mm-preview.mm-variant-products .mm-simple-only, 1334 #enttec-mm-preview:not(.mm-variant-products):not(.mm-variant-simple) .mm-products-only, 1335 #enttec-mm-preview:not(.mm-variant-products):not(.mm-variant-simple) .mm-simple-only { 1336 display: none !important; 1337 } 1338 1339 /* Left rail (PRODUCTS variant) */ 1340 #enttec-mm-preview .mm-rail { 1341 background: #f7f7f5; 1342 padding: 12px 0; 1343 border-right: 1px solid rgba(0,0,0,0.06); 1344 } 1345 #enttec-mm-preview .mm-rail-heading, 1346 #enttec-mm-preview .mm-eyebrow { 1347 padding: 6px 20px; 1348 font-size: 10.5px; 1349 color: rgba(0,0,0,0.5); 1350 letter-spacing: 0.15rem; 1351 margin-bottom: 4px; 1352 font-weight: 500; 1353 text-transform: uppercase; 1354 } 1355 #enttec-mm-preview .mm-eyebrow { padding: 0; margin-bottom: 8px; } 1356 #enttec-mm-preview .mm-rail-item { 1357 /* 8px rows, not 10px: the rail's 10 categories are what set the whole 1358 panel's height, so this is where vertical dead space comes from. */ 1359 padding: 8px 18px; 1360 font-size: 14px; 1361 color: rgba(0,0,0,0.7); 1362 cursor: pointer; 1363 border-left: 2px solid transparent; 1364 display: flex; 1365 justify-content: space-between; 1366 align-items: center; 1367 transition: background 0.12s, color 0.12s; 1368 text-decoration: none; 1369 } 1370 #enttec-mm-preview .mm-rail-item:hover { 1371 background: rgba(14,165,223,0.06); 1372 color: rgba(0,0,0,0.95); 1373 } 1374 #enttec-mm-preview .mm-rail-item.is-active { 1375 background: white; 1376 border-left-color: #0EA5DF; 1377 color: #1a1a1a; 1378 font-weight: 500; 1379 } 1380 #enttec-mm-preview .mm-rail-item .mm-chev { 1381 opacity: 0; 1382 color: rgba(0,0,0,0.4); 1383 display: inline-flex; 1384 align-items: center; 1385 transition: opacity 0.15s ease, transform 0.15s ease, color 0.15s ease; 1386 } 1387 #enttec-mm-preview .mm-rail-item .mm-chev svg { display: block; } 1388 #enttec-mm-preview .mm-rail-item:hover .mm-chev { opacity: 0.6; transform: translateX(2px); } 1389 #enttec-mm-preview .mm-rail-item.is-active .mm-chev { opacity: 1; color: #0EA5DF; } 1390 1391 /* Brochure link, separate rail item below the categories, lighter 1392 style with a visible top border to mark it as a different kind of 1393 destination. */ 1394 #enttec-mm-preview .mm-rail-brochure { 1395 display: block; 1396 padding: 11px 20px; 1397 margin-top: 6px; 1398 border-top: 1px solid rgba(0,0,0,0.08); 1399 font-size: 13px; 1400 color: rgba(0,0,0,0.55); 1401 text-decoration: none; 1402 transition: background 0.12s, color 0.12s; 1403 } 1404 #enttec-mm-preview .mm-rail-brochure:hover { 1405 background: rgba(0,0,0,0.025); 1406 color: #0EA5DF; 1407 } 1408 1409 /* Right pane (PRODUCTS variant) */ 1410 #enttec-mm-preview .mm-pane { 1411 padding: 20px 22px; 1412 display: grid; 1413 /* Left column fixed at 230px so the products column keeps the 244px it 1414 needs for its longest row. Was a 1.05fr / 0.95fr split, which spent 1415 the panel's width proportionally and left the description column
1416 wider than its 2 lines of copy needed. minmax(0, â¦) still keeps both 1417 columns from reshaping per category. */ 1418 grid-template-columns: minmax(0, 230px) minmax(0, 1fr); 1419 gap: 22px; 1420 /* No min-height: the rail is always taller than the pane's content, so 1421 the grid row already sets the height and a floor only added dead 1422 space on the short categories. */ 1423 min-height: 0; 1424 } 1425 #enttec-mm-preview .mm-pane-left { 1426 padding-right: 20px; 1427 border-right: 1px solid rgba(0,0,0,0.06); 1428 } 1429 #enttec-mm-preview.has-product-preview .mm-pane-left { 1430 /* Column flex so the compare CTA can anchor to the bottom edge (see 1431 .mm-cta). The pane's height is already fixed by the grid row, which 1432 the taller category rail sets, so there is room below the text. */ 1433 display: flex; 1434 flex-direction: column; 1435 } 1436 /* Direct-link variant (e.g. Neon Flex), only one item in this 1437 "category", so collapse the right product column and let the 1438 banner + description span the full pane width. */ 1439 #enttec-mm-preview.mm-direct-link .mm-pane { 1440 grid-template-columns: 1fr; 1441 } 1442 #enttec-mm-preview.mm-direct-link .mm-pane-left { 1443 padding-right: 0; 1444 border-right: none; 1445 } 1446 #enttec-mm-preview.mm-direct-link .mm-pane-right { 1447 display: none; 1448 } 1449 #enttec-mm-preview.mm-direct-link .mm-banner { 1450 height: 180px; 1451 margin-bottom: 18px; 1452 } 1453 #enttec-mm-preview .mm-banner { 1454 width: 100%; 1455 /* 150px, not 110px: the pane is shorter than the rail either way, so 1456 the banner absorbs the leftover height instead of it sitting empty 1457 under the CTA. */ 1458 height: 150px; 1459 background: #2f2f2f center / cover no-repeat; 1460 margin-bottom: 14px; 1461 overflow: hidden; 1462 border-radius: 2px; 1463 } 1464 1465 /* --- Product preview (hover/focus a product in the list) -------------- 1466 * The pane swaps from the category banner to the hovered product. Two 1467 * things change beyond the image URL: 1468 * 1469 * 1. cover -> contain. Category banners are wide lifestyle shots that 1470 * should fill the box; product shots are the unit on a light 1471 * background, and `cover` crops the connectors and mounting detail 1472 * off the edges, which is the exact information the picture is here 1473 * to convey on a hardware product. 1474 * 2. a light ground behind it, because the product shots are shot on 1475 * white and read as a floating cut-out on the #2f2f2f banner grey. 1476 * #ececec exactly: it is the ground baked into the homepage crops 1477 * (sampled from the files), so the square crop blends into the box 1478 * instead of sitting in it as a visible tile. 1479 */ 1480 #enttec-mm-preview.has-product-preview .mm-banner.is-product { 1481 background-color: #ececec; 1482 background-size: contain; 1483 } 1484 1485 /* --- The banner image crossfades, once the image has loaded ------------ 1486 * 1487 * The swap used to be instant because two earlier fades misbehaved: a 1488 * scale-in juddered (the box carries a `contain` background, so scaling 1489 * it re-fits the image every frame), and an opacity crossfade "did not 1490 * reliably start". The second one had a real cause: product images were 1491 * never fetched ahead of time (only category banners are prefetched), so 1492 * the fade often ran before the image existed and the picture popped in 1493 * afterwards. That, plus the ground jumping from #2f2f2f to #f4f5f6 in 1494 * one frame, is the flash the instant swap still had. 1495 * 1496 * So: a second layer (.mm-banner-next) sits on top of the banner. The JS 1497 * waits for the image's load event, paints it on this layer, then fades 1498 * the layer in. The layer carries its own ground colour, so the dark to 1499 * light change is part of the same fade. Once it is opaque the banner 1500 * underneath takes the same image and the layer drops, which is 1501 * invisible because both show the same pixels. 1502 * 1503 * Opacity only. Do not reach for a transform (see the scale-in above). 1504 */ 1505 #enttec-mm-preview.has-product-preview .mm-banner { position: relative; } 1506 #enttec-mm-preview.has-product-preview .mm-banner-next { 1507 position: absolute; 1508 inset: 0; 1509 background: #2f2f2f center / cover no-repeat; 1510 opacity: 0; 1511 pointer-events: none; 1512 } 1513 #enttec-mm-preview.has-product-preview .mm-banner-next.is-product { 1514 background-color: #ececec; 1515 background-size: contain; 1516 } 1517 /* The transition lives on .is-in only, so dropping the class snaps the 1518 layer back to 0 instead of fading it out over the new image. */ 1519 #enttec-mm-preview.has-product-preview .mm-banner-next.is-in { 1520 opacity: 1; 1521 transition: opacity 200ms cubic-bezier( 0.2, 0, 0, 1 ); 1522 } 1523 @media ( prefers-reduced-motion: reduce ) { 1524 #enttec-mm-preview.has-product-preview .mm-banner-next.is-in { transition: none; } 1525 } 1526 1527 /* Loading placeholder: the bare #ececec ground, with a slow, soft pulse 1528 so it reads as "coming", not "empty". Only ever shown when an image is 1529 still loading 150ms after the hover (see MM_PH_DELAY in the JS). 1530 A pulse, not a shimmer sweep: this is one small box beside text the 1531 visitor is reading, and a moving sweep pulls the eye off it. 1532 Three cycles (about 4s) then it rests on the flat ground, which keeps 1533 it inside WCAG 2.2.2 (auto-moving content over 5s must be pausable). 1534 Sits under .mm-banner-next, so the arriving image fades in over it. */ 1535 #enttec-mm-preview.has-product-preview .mm-banner.is-loading::before { 1536 content: ''; 1537 position: absolute; 1538 inset: 0; 1539 background: #f7f7f7; 1540 opacity: 0; 1541 animation: enttecMMPlaceholderPulse 1.4s ease-in-out 3; 1542 } 1543 @keyframes enttecMMPlaceholderPulse { 1544 0%, 100% { opacity: 0; } 1545 50% { opacity: 0.9; } 1546 } 1547 @media ( prefers-reduced-motion: reduce ) { 1548 #enttec-mm-preview.has-product-preview .mm-banner.is-loading::before { animation: none; } 1549 } 1550 /* --- Pane entrance animation ----------------------------------------- 1551 * A plain opacity crossfade on the whole pane read as robotic: every 1552 * element appeared at the same instant, so the swap looked like a screen 1553 * repaint rather than a thing arriving. Two changes fix that: 1554 * 1555 * 1. MOTION, not just opacity. The image eases down from a slight 1556 * over-scale and the text rises a few pixels, which gives the eye a 1557 * direction to follow. 1558 * 2. A STAGGER. The eyebrow, title, blurb and CTA enter 45ms apart, so 1559 * the pane assembles in reading order instead of flashing in as one 1560 * block. This is the part that makes it feel authored. 1561 * 1562 * Keyframes rather than transitions, because the content is replaced 1563 * wholesale on each swap: a transition needs a from-state that survives 1564 * the replacement, an animation does not. 1565 */ 1566 /* The banner is NOT in this stagger. Its image swaps instantly; only the 1567 text animates. See the note on .mm-banner above for why. */ 1568 /* Text starts at 0.001 rather than 0. Visually identical to invisible, but 1569 it keeps the element painted, and more importantly it documents the 1570 constraint that mattered when tuning this: a preview that swaps on hover 1571 is swept, not visited once, so anything that BLANKS for long enough to
1572 notice reads as flicker rather than motion. That is why the text is on a 1573 short 200ms rise with a 30ms stagger and not the image's slower curve, 1574 and why the whole pane is settled inside ~380ms from the cursor landing. 1575 Earlier values (300ms, 45ms stagger) tested as sluggish for exactly this 1576 reason: the CTA was still arriving 545ms after the hover. */ 1577 @keyframes enttecMMRiseIn { 1578 from { opacity: 0.001; transform: translateY( 5px ); } 1579 to { opacity: 1; transform: none; } 1580 } 1581 #enttec-mm-preview.has-product-preview .mm-pane-left.is-entering .mm-eyebrow, 1582 #enttec-mm-preview.has-product-preview .mm-pane-left.is-entering .mm-title, 1583 #enttec-mm-preview.has-product-preview .mm-pane-left.is-entering .mm-desc { 1584 animation: enttecMMRiseIn 200ms cubic-bezier( 0.16, 0.84, 0.24, 1 ) both; 1585 } 1586 /* The CTA is NOT in the stagger any more. It is a persistent element whose 1587 text never changes between states, so re-animating it on every hover was 1588 pure churn; and being flush to the pane's bottom edge, a rise-from-below 1589 would have rendered it briefly outside its own container. */ 1590 #enttec-mm-preview.has-product-preview .mm-pane-left.is-entering .mm-eyebrow { animation-delay: 0ms; } 1591 #enttec-mm-preview.has-product-preview .mm-pane-left.is-entering .mm-title { animation-delay: 30ms; } 1592 #enttec-mm-preview.has-product-preview .mm-pane-left.is-entering .mm-desc { animation-delay: 60ms; } 1593 1594 /* Promote only while animating. Left on permanently this would hold a 1595 compositor layer for a panel that is hidden most of the time. */ 1596 #enttec-mm-preview.has-product-preview .mm-pane-left.is-entering .mm-title { 1597 will-change: transform, opacity; 1598 } 1599 1600 /* A product preview is a transient state, so it gets a quiet marker to 1601 distinguish it from the category the rail still shows as active. */ 1602 #enttec-mm-preview.has-product-preview .mm-eyebrow.is-product-eyebrow { 1603 color: #0EA5DF; 1604 } 1605 1606 @media ( prefers-reduced-motion: reduce ) { 1607 /* Content still swaps, it just arrives without motion. Setting the 1608 animation to none (rather than a 0s duration) means `both` cannot 1609 leave an element stuck on its from-state, which would hide it. */ 1610 #enttec-mm-preview.has-product-preview .mm-pane-left.is-entering .mm-eyebrow, 1611 #enttec-mm-preview.has-product-preview .mm-pane-left.is-entering .mm-title, 1612 #enttec-mm-preview.has-product-preview .mm-pane-left.is-entering .mm-desc { 1613 animation: none; 1614 opacity: 1; 1615 transform: none; 1616 } 1617 } 1618 #enttec-mm-preview .mm-title { 1619 font-size: 19px; 1620 font-weight: 500; 1621 margin-bottom: 6px; 1622 color: #1a1a1a; 1623 letter-spacing: -0.01em; 1624 } 1625 #enttec-mm-preview .mm-desc { 1626 font-size: 14px; 1627 color: rgba(0,0,0,0.65); 1628 line-height: 1.5; 1629 margin-bottom: 14px; 1630 } 1631 #enttec-mm-preview.has-product-preview .mm-desc { 1632 /* Height is allowed to vary again, because nothing below it moves any 1633 * more: the CTA is pinned to the bottom of the pane (see 1634 * .mm-pane-left / .mm-cta below). Measured across all 43 products the 1635 * text runs 0 to 126px (0 to 6 lines), and while that varied the CTA 1636 * underneath it moved by the same amount, which is what read as the 1637 * pane jittering on hover. 1638 * 1639 * The clamp stays as a pure overflow guard, not as a layout device. 1640 * 6 lines never truncates the 140-character server-side clamp in 1641 * English, but line wrapping depends on word length and on the 1642 * language, so this stops a CN or RU blurb from ever growing tall 1643 * enough to push the pinned CTA out of the pane. 1644 */ 1645 display: -webkit-box; 1646 -webkit-line-clamp: 6; 1647 line-clamp: 6; 1648 -webkit-box-orient: vertical; 1649 overflow: hidden; 1650 } 1651 #enttec-mm-preview .mm-cta { 1652 display: inline-flex; 1653 align-items: center; 1654 gap: 6px; 1655 font-size: 12px; 1656 color: #0EA5DF; 1657 text-decoration: none; 1658 font-weight: 500; 1659 text-transform: uppercase; 1660 letter-spacing: 0.08rem; 1661 transition: gap 0.15s, color 0.15s; 1662 max-width: 100%; 1663 } 1664 #enttec-mm-preview.has-product-preview .mm-cta { 1665 /* ANCHORED TO THE BOTTOM OF THE PANE. 1666 * 1667 * Pinning was tried once before and rejected, correctly, because back 1668 * then this element was the PRIMARY action ("View <product>") and 1669 * parking it far from the text it belonged to just swapped a moving 1670 * target for a distant one. 1671 * 1672 * Its role is different now: it is the persistent "Compare <category>" 1673 * route, a secondary escape hatch nobody needs to reach in a hurry. 1674 * The primary action is clicking the product row, which is already 1675 * under the cursor. As a secondary link, the bottom edge is the right 1676 * place, it reads as intentional against the rail's bottom item, and 1677 * it also means this never moves while the description above it 1678 * changes height per product. 1679 * 1680 * margin-top:auto, not absolute positioning: auto consumes only the 1681 * leftover space, so a long blurb can never collide with it. 1682 * align-self keeps the link shrink-to-content, since a column flex 1683 * parent would otherwise stretch it the full pane width and enlarge 1684 * the hover and underline area. 1685 */ 1686 margin-top: auto; 1687 align-self: flex-start; 1688 } 1689 1690 /* The CTA STAYS in product mode, and it keeps saying "Compare <category>". 1691 * 1692 * This pane's category state is the disambiguation layer: nine of the ten 1693 * categories have a "Compare ..." CTA, and Software's description is 1694 * literally "Three ENTTEC software products. Here's how to know which one 1695 * is yours." An earlier version hid the CTA while previewing a product, 1696 * which took the route to the comparison away at the exact moment someone 1697 * was comparing, and kept it away until they left the dropdown. 1698 * 1699 * So the pane is now a detail view with a permanent escape hatch: the 1700 * image, name and blurb describe whatever is hovered, while the compare 1701 * link underneath never moves and never changes. The product itself is 1702 * reached by clicking the row (or the pane), not by a second link that 1703 * would duplicate it. 1704 * 1705 * Side-by-side comparison is not lost either way: the tags in the product 1706 * list ("32 universes", "Compact") stay visible throughout and are a 1707 * better comparison device than prose, because they line up. 1708 */ 1709 #enttec-mm-preview.has-product-preview .mm-pane-left.is-product-mode { 1710 cursor: pointer; 1711 } 1712 #enttec-mm-preview.has-product-preview .mm-pane-left.is-product-mode:hover .mm-title { 1713 color: #0EA5DF; 1714 } 1715 #enttec-mm-preview.has-product-preview .mm-title { 1716 transition: color 0.15s ease; 1717 } 1718 #enttec-mm-preview .mm-cta > span:first-child { white-space: normal; } 1719 #enttec-mm-preview .mm-cta .mm-cta-arrow { flex-shrink: 0; } 1720 #enttec-mm-preview .mm-cta .mm-cta-arrow { transition: transform 0.15s ease; } 1721 #enttec-mm-preview .mm-cta:hover .mm-cta-arrow { transform: translateX(3px); } 1722 #enttec-mm-preview .mm-cta:hover { gap: 10px; color: #0a82af; text-decoration: none; } 1723 1724 #enttec-mm-preview .mm-product-list { display: flex; flex-direction: column; } 1725 #enttec-mm-preview .mm-product { 1726 padding: 7px 0; 1727 font-size: 14px; 1728 color: #1a1a1a; 1729 cursor: pointer; 1730 display: flex; 1731 justify-content: space-between; 1732 align-items: baseline; 1733 gap: 12px; 1734 transition: color 0.12s; 1735 text-decoration: none; 1736 } 1737 #enttec-mm-preview .mm-product:hover { color: #0EA5DF; } 1738 #enttec-mm-preview .mm-product .mm-product-arrow { display: none; } 1739 /* Launch badge, small brand-blue prefix on the right-side tag. 1740 Subtler than a chip, reuses existing column structure. */ 1741 .mm-badge { 1742 color: #0EA5DF; 1743 font-size: inherit; 1744 font-weight: 500; 1745 letter-spacing: 0.06rem; 1746 text-transform: uppercase; 1747 margin-right: 4px; 1748 } 1749 .mm-badge::after { content: ' · '; color: rgba(0,0,0,0.3); margin-left: 4px; } 1750 #enttec-mm-preview .mm-product .mm-tag { 1751 font-size: 11px; 1752 color: rgba(0,0,0,0.45); 1753 font-weight: 400; 1754 text-align: right; 1755 flex-shrink: 0; 1756 } 1757 #enttec-mm-preview .mm-product.is-legacy { color: rgba(0,0,0,0.4); } 1758 #enttec-mm-preview .mm-product.is-legacy .mm-tag { color: rgba(0,0,0,0.3); } 1759
1760 /* Simple variant (ABOUT, SUPPORT), clean link list, no eyebrow/title/tags. */ 1761 #enttec-mm-preview .mm-simple { 1762 padding: 8px 0; 1763 } 1764 #enttec-mm-preview .mm-simple-list { 1765 display: flex; 1766 flex-direction: column; 1767 } 1768 #enttec-mm-preview .mm-simple-item { 1769 padding: 10px 22px; 1770 display: block; 1771 text-decoration: none; 1772 color: #1a1a1a; 1773 font-size: 14px; 1774 transition: background 0.1s, color 0.1s; 1775 } 1776 #enttec-mm-preview .mm-simple-item:hover { 1777 background: rgba(14,165,223,0.06); 1778 color: #0EA5DF; 1779 } 1780 1781 /* Permanently suppress the theme's Mega Menu sub-menus on tablet/desktop , 1782 we own these dropdowns now. Without this, hovering a top-nav item 1783 would flash the theme's old flyout/mega-list before / alongside 1784 our preview, depending on which JS handler fires first. */ 1785 @media (min-width: 768px) { 1786 #mega-menu-wrap-header-menu .mega-sub-menu, 1787 #mega-menu-wrap-header-menu li.mega-menu-item > .mega-sub-menu, 1788 #mega-menu-wrap-header-menu li.mega-menu-item.mega-toggle-on > .mega-sub-menu { 1789 display: none !important; 1790 visibility: hidden !important; 1791 opacity: 0 !important; 1792 pointer-events: none !important; 1793 } 1794 /* Also kill any inline-style fallout from the plugin's JS. */ 1795 #mega-menu-wrap-header-menu li.mega-menu-item.mega-animating > .mega-sub-menu { 1796 display: none !important; 1797 } 1798 } 1799 1800 #enttec-mm-preview-flag { display: none !important; } 1801 1802 /* ============================================================ 1803 * Tablet (768â1023px), keep horizontal nav, shrink dropdown. 1804 * ============================================================ */ 1805 @media (min-width: 768px) { 1806 #mega-menu-wrap-header-menu, 1807 #mega-menu-wrap-header-menu #mega-menu-header-menu { 1808 display: flex !important; 1809 flex-wrap: nowrap !important; 1810 visibility: visible !important; 1811 } 1812 #mega-menu-wrap-header-menu .mega-menu-toggle { 1813 display: none !important; 1814 } 1815 /* Theme hardcodes .nav_container at height:70px, let it wrap content. */ 1816 .nav_container { height: max-content !important; } 1817 } 1818 @media (min-width: 768px) and (max-width: 1023px) { 1819 /* The width and rail overrides that used to live here (720px / 200px) 1820 are gone: the base rule is now 720px / 180px, so tablet and desktop 1821 are the same panel and a second set of numbers here would only drift 1822 out of step with it. Only the type and banner still shrink. */ 1823 #enttec-mm-preview .mm-title { font-size: 18px; } 1824 #enttec-mm-preview .mm-banner { height: 120px; } 1825 } 1826 1827 /* ============================================================ 1828 * Mobile (<768px), desktop preview disabled, overlay takes over. 1829 * ============================================================ */ 1830 @media (max-width: 767px) { 1831 #enttec-mm-preview { display: none !important; } 1832 } 1833 1834 /* ============================================================ 1835 * Mobile top bar, visible above the page on <768px so the 1836 * hamburger has a proper home (today it floats over the hero). 1837 * Sits on top of page content (no body padding shift, to avoid 1838 * breaking the theme's existing layout assumptions). 1839 * ============================================================ */ 1840 #enttec-mm-topbar { 1841 display: none; 1842 } 1843 @media (max-width: 767px) { 1844 #enttec-mm-topbar { 1845 display: flex; 1846 position: fixed; 1847 top: 0; 1848 left: 0; 1849 right: 0; 1850 height: 56px; 1851 background: #2f2f2f; 1852 color: white; 1853 align-items: center; 1854 justify-content: space-between; 1855 padding: 0 8px; 1856 z-index: 999990; 1857 font-family: "Source Sans 3", -apple-system, BlinkMacSystemFont, sans-serif; 1858 } 1859 #enttec-mm-topbar .enttec-mm-tb-hamburger { 1860 width: 44px; height: 44px; 1861 background: transparent; 1862 border: 0; 1863 color: white; 1864 padding: 0; 1865 cursor: pointer; 1866 display: flex; align-items: center; justify-content: center; 1867 } 1868 #enttec-mm-topbar .enttec-mm-tb-hamburger:active { background: rgba(255,255,255,0.08); } 1869 #enttec-mm-topbar .enttec-mm-tb-hamburger svg { display: block; } 1870 #enttec-mm-topbar .enttec-mm-tb-brand { 1871 display: flex; align-items: center; 1872 flex: 1; 1873 justify-content: center; 1874 } 1875 #enttec-mm-topbar .enttec-mm-tb-brand svg { height: 16px; width: auto; display: block; } 1876 #enttec-mm-topbar .enttec-mm-tb-actions { 1877 display: flex; align-items: center; gap: 2px; 1878 } 1879 #enttec-mm-topbar .enttec-mm-tb-actions a { 1880 width: 44px; height: 44px; 1881 display: flex; align-items: center; justify-content: center; 1882 color: white; 1883 text-decoration: none; 1884 font-size: 18px; 1885 } 1886 #enttec-mm-topbar .enttec-mm-tb-actions a:active { background: rgba(255,255,255,0.08); } 1887 /* Cart count, matched to the desktop header's badge (white disc, dark number). */ 1888 #enttec-mm-topbar .enttec-mm-tb-cart { position: relative; } 1889 #enttec-mm-topbar .enttec-mm-tb-count { 1890 position: absolute; top: 4px; right: 2px; 1891 min-width: 18px; height: 18px; padding: 0 5px; box-sizing: border-box; 1892 border-radius: 9px; background: #fff; color: #000; 1893 font: 600 12px/18px 'Source Sans 3', sans-serif; text-align: center; 1894 pointer-events: none; 1895 } 1896 1897 /* Hide the floating Login/Signup CTA on home that fights with the topbar */ 1898 .btn.text-uppercase.btn-primary.border-round-0 { display: none !important; } 1899 1900 /* The theme's mega-menu-toggle floats fixed top-left on mobile. 1901 Hide it since we have our own hamburger in the topbar. */ 1902 .mega-menu-toggle { display: none !important; } 1903 1904 /* 1905 * THE THEME NAVBAR IS NOT THE MOBILE HEADER. This bar is. 1906 * 1907 * #navbar was never hidden here, only covered: the theme's own mobile 1908 * layout for it (position:fixed, top:0, hamburger shown, links stacked) 1909 * lives in main-style.scss under `@media (max-width:768px){ #
1909wrapper 1910 * header { #navbar {...} } }`, and header.php emits #navbar as a 1911 * PRECEDING SIBLING of #wrapper, never a descendant of it. So that whole 1912 * block has always been dead: below 768px the navbar kept its DESKTOP 1913 * rules and simply sat behind this 56px bar, close enough to read as 1914 * hidden. 1915 * 1916 * It stops being hidden the moment anything moves it down the page. A 1917 * flow banner (the US shipping notice, the UAE holiday banner) does 1918 * exactly that, and the desktop navbar then reappears mid-hero with its 1919 * logo, search, locale and cart, under this bar's identical set. That is 1920 * the two-headers bug reported on 2026-09-08, on every region at once, 1921 * because the banner is what varies, not the CSS. 1922 * 1923 * Hiding it states the design instead of relying on the overlap: below 1924 * this breakpoint the header is this bar plus #enttec-mm-mobile, and the 1925 * navbar's transparent tail can no longer surface from behind either one. 1926 * Safe on account pages, which emit no #navbar at all (.acct-header is 1927 * their header). header-stack.js measures this bar for --enttec-chrome-h 1928 * once the navbar is gone, so mobile sticky offsets stay truthful. 1929 * 1930 * Re-scoping the theme's dead block instead would revive a second 1931 * hamburger and a second drawer competing with this one. 1932 */ 1933 #navbar { display: none !important; } 1934 } 1935 1936 /* ============================================================ 1937 * Mobile full-screen overlay, v2: industry-standard design. 1938 * - Dark header w/ logo (not "MENU" text) 1939 * - Search bar at top 1940 * - Image-card categories 1941 * - Hero-banner products screen 1942 * - Bottom action bar (login / cart / locale) 1943 * - Source Sans 3, weights 400 + 500 only 1944 * - Brand blue #0EA5DF + dark slate #2f2f2f only 1945 * ============================================================ */ 1946 #enttec-mm-mobile { 1947 position: fixed; 1948 inset: 0; 1949 z-index: 999999; 1950 background: white; 1951 font-family: "Source Sans 3", -apple-system, BlinkMacSystemFont, sans-serif; 1952 color: #1a1a1a; 1953 display: none; 1954 flex-direction: column; 1955 overflow: hidden; 1956 } 1957 #enttec-mm-mobile.is-open { display: flex; } 1958 1959 /* Header, dark slate, logo on left, close on right */ 1960 .mmm-header { 1961 display: flex; 1962 align-items: center; 1963 height: 60px; 1964 padding: 0 4px 0 16px; 1965 background: #2f2f2f; 1966 color: white; 1967 flex-shrink: 0; 1968 gap: 8px; 1969 } 1970 .mmm-header .mmm-brand { 1971 flex: 1; display: flex; align-items: center; gap: 10px; min-width: 0; 1972 text-decoration: none; color: inherit; 1973 } 1974 .mmm-header .mmm-brand svg { height: 18px; width: auto; display: block; } 1975 .mmm-header .mmm-title { 1976 font-size: 13px; 1977 letter-spacing: 0.12rem; 1978 text-transform: uppercase; 1979 font-weight: 500; 1980 color: white; 1981 border-left: 1px solid rgba(255,255,255,0.2); 1982 padding-left: 12px; 1983 white-space: nowrap; 1984 overflow: hidden; 1985 text-overflow: ellipsis; 1986 } 1987 .mmm-header button { 1988 background: transparent; 1989 border: 0; 1990 color: white; 1991 width: 44px; 1992 height: 44px; 1993 font-size: 22px; 1994 line-height: 1; 1995 cursor: pointer; 1996 padding: 0; 1997 flex-shrink: 0; 1998 } 1999 .mmm-header button:active { background: rgba(255,255,255,0.08); } 2000 .mmm-header button[hidden] { visibility: hidden; display: block; } 2001 2002 /* Search bar */ 2003 .mmm-search { 2004 padding: 12px 16px; 2005 background: white; 2006 border-bottom: 1px solid rgba(0,0,0,0.08); 2007 flex-shrink: 0; 2008 } 2009 /* 2010 * input.mmm-search-input, not .mmm-search-input, and the element part is 2011 * load-bearing. 2012 * 2013 * wp-admin's forms.min.css is being enqueued on the FRONTEND, and it carries 2014 * @media screen and (max-width: 782px) { 2015 * input[type="search"], ... { padding: 3px 10px; } 2016 * } 2017 * That selector scores (0,1,1) against this rule's (0,1,0), so below 782px 2018 * core won and the 48px of left padding that holds space for the magnifier 2019 * was discarded: the icon then sat on top of the placeholder. Measured at 2020 * 495px, padding-left computed to 10px with the icon spanning 32-48px. 2021 * 2022 * Adding the element selector makes this (0,1,1) too, and it is later in the 2023 * document, so it wins the tie. Every property moves with it rather than just 2024 * padding, because core's rule is not the only one in that file and the next 2025 * one to collide should not need this comment written again. 2026 * 2027 * The real bug is upstream: an admin stylesheet on the frontend restyles 2028 * every input on the site under 782px. Worth removing at the source, which is 2029 * a wider change than this file. 2030 */ 2031 input.mmm-search-input { 2032 width: 100%; 2033 height: 44px; 2034 padding: 0 48px 0 48px; /* room for icon left + submit-button right */ 2035 border: 1px solid rgba(0,0,0,0.12); 2036 border-radius: 4px; 2037 background: #f7f7f5; 2038 font-family: inherit; 2039 font-size: 15px; 2040 color: #1a1a1a; 2041 outline: none; 2042 transition: border-color 0.15s, background 0.15s; 2043 /* type="search" makes Safari inject its own magnifier + clear (Ã) 2044 button on top of our custom .mmm-search-icon / .mmm-search-submit, 2045 colliding with the placeholder. Chrome strips them automatically; 2046 Safari (iOS + macOS) does not, so reset the native chrome. */ 2047 -webkit-appearance: none; 2048 appearance: none; 2049 } 2050 .mmm-search-input::-webkit-search-decoration, 2051 .mmm-search-input::-webkit-search-cancel-button, 2052 .mmm-search-input::-webkit-search-results-button, 2053 .mmm-search-input::-webkit-search-results-decoration { 2054 -webkit-appearance: none; 2055 display: none; 2056 } 2057 .mmm-search-submit { 2058 position: absolute; 2059 right: 4px; 2060 top: 50%; 2061 transform: translateY(-50%); 2062 width: 36px; 2063 height: 36px; 2064 border: 0; 2065 border-radius: 4px; 2066 background: #0EA5DF; 2067 color: white; 2068 cursor: pointer; 2069 display: flex; 2070 align-items: center; 2071 justify-content: center; 2072 padding: 0; 2073 /* Hidden by default, fades in once user has typed. */ 2074 opacity: 0; 2075 pointer-events: none; 2076 transition: opacity 0.15s ease; 2077 } 2078 /* :placeholder-shown = input is empty (still showing the placeholder). 2079 When the user types, the placeholder hides and the submit appears. */ 2080 .mmm-search-input:not(:placeholder-shown) ~ .mmm-search-submit { 2081 opacity: 1; 2082 pointer-events: auto; 2083 } 2084 .mmm-search-submit:active { background: #0c8fc1; } 2085 .mmm-search-submit svg { display: block; } 2086 /* Match the input padding when the button is hidden, no longer needs 2087 right-side space, so the placeholder text doesn't get cramped. */ 2088 input.mmm-search-input:placeholder-shown { padding-right: 14px; } 2089 .mmm-search-wrap { position: relative; } 2090 .mmm-search-icon { 2091 position: absolute; 2092 left: 16px; 2093 top: 50%; 2094 transform: translateY(-50%); 2095 /* Was rgba(0,0,0,0.4), which composites to rgb(148,148,147) on this 2096 field's #f7f7f5 and measures 2.83:1. WCAG 1.4.11 asks 3:1 of a 2097 non-text UI component, so the magnifier was genuinely hard to see 2098 rather than merely subtle, and it showed worst against a dense 2099 placeholder like the CN one. #5a6672 measures 5.47:1 here and is the
2100 same grey the header search field and the results page use for their 2101 icons, so all three now agree. */ 2102 color: #5a6672; 2103 pointer-events: none; 2104 } 2105 .mmm-search-input:focus { 2106 border-color: #0EA5DF; 2107 background: white; 2108 } 2109 2110 /* 2111 * The live results panel, when the search rebuild is on for this host. 2112 * 2113 * HIDDEN UNTIL THE FIELD IS TOUCHED, and overlaid rather than inserted. The panel 2114 * is server-rendered with the "Most asked about" chips already inside it, so left 2115 * to itself it would sit open the moment the drawer opens and push the whole 2116 * category list down by about 90px. Revealing it on :focus-within means the drawer 2117 * looks exactly as it does today until someone taps the field, and the categories 2118 * never move. :focus-within rather than :focus because the panel lives inside the 2119 * form, so tabbing onto a result keeps the condition true. 2120 * 2121 * Absolute, so opening it cannot reflow anything behind it. .mmm-search is the 2122 * positioning parent (set below). Only placement is defined here: the rows, group 2123 * headings and chips are styled by the shared search.css, and the header's own 2124 * positioning cannot reach this because it is scoped under 2125 * #navbar .nav_container .search_container. 2126 */ 2127 .mmm-search { position: relative; } 2128 .mmm-search-results { 2129 /* 2130 * width:auto is load-bearing, not tidiness. main-style.css carries an 2131 * UNSCOPED .results_wrapper{position:absolute;top:49px;left:0;width:100%} at 2132 * the same specificity as this rule. Width is not a property declared below, 2133 * so that 100% survives, and left+width then over-constrain the box so the 2134 * right offset is silently dropped. Measured at 390px before this line: the 2135 * panel was 390px wide starting at x=16, so 16px sat past the viewport and 2136 * #enttec-mm-mobile{overflow:hidden} clipped the right border and corner off. 2137 */ 2138 /* 2139 * ANCHORED TO THE FIELD, NOT THE FORM. The panel used to be a sibling of 2140 * .mmm-search-wrap with top:100% against .mmm-search, and .mmm-search has 2141 * padding:12px 16px, so "100%" was the bottom of the PADDING box: the panel 2142 * landed 12px below the field with clear air between them. Combined with a 2143 * full border on all four sides it read as a separate box floating behind 2144 * the search bar rather than a dropdown hanging off it, which is exactly how 2145 * it was reported. It now lives inside .mmm-search-wrap, which is the field's 2146 * own box, so top:100% is the field's bottom edge and left/right:0 track the 2147 * field's width instead of repeating its inset. 2148 */ 2149 width: auto; 2150 position: absolute; 2151 top: 100%; 2152 left: 0; 2153 right: 0; 2154 /* 2155 * The last two pixels of the join. -1px pulls the panel up so its border 2156 * shares the field's bottom border instead of drawing a second line, and no 2157 * top border means the two shapes read as one. Same treatment the header 2158 * panel already gets in search.css, for the same reason. 2159 */ 2160 margin-top: -1px; 2161 border-top: 0; 2162 z-index: 5; 2163 max-height: min(60vh, 420px); 2164 overflow: hidden auto; 2165 overscroll-behavior: contain; 2166 background: #fff; 2167 border: 1px solid #c9d3dc; 2168 /* 4px, matching input.mmm-search-input, so the joined shape has one radius. */ 2169 border-radius: 0 0 4px 4px; 2170 box-shadow: 0 14px 32px rgba(20, 24, 29, .18); 2171 2172 /* 2173 * Fades in, matching the header panel's own opacity/visibility .16s rather 2174 * than appearing hard. visibility, not display, for two reasons: display 2175 * cannot be transitioned, and an inline display from any other script cannot 2176 * strand a panel that is hidden this way. 2177 */ 2178 opacity: 0; 2179 visibility: hidden; 2180 transition: opacity .16s ease, visibility .16s ease; 2181 } 2182 /* 2183 * While the panel is open the field is the top half of one shape, so its 2184 * bottom corners square off to meet it. Mirrors what the header field does. 2185 */ 2186 .mmm-search:focus-within:not(.is-dismissed) input.mmm-search-input { 2187 border-bottom-left-radius: 0; 2188 border-bottom-right-radius: 0; 2189 } 2190 2191 .mmm-search:focus-within .mmm-search-results { 2192 opacity: 1; 2193 visibility: visible; 2194 } 2195 /*
2196 * Escape sets this so the panel can be dismissed while the field keeps focus. 2197 * Same specificity as the reveal rule above and declared after it, so it wins. 2198 */ 2199 .mmm-search.is-dismissed .mmm-search-results { 2200 opacity: 0; 2201 visibility: hidden; 2202 } 2203 2204 @media (prefers-reduced-motion: reduce) { 2205 .mmm-search-results { transition: none; } 2206 } 2207 2208 /* Panels */ 2209 .mmm-panels { 2210 flex: 1; 2211 position: relative; 2212 overflow: hidden; 2213 background: #f7f7f5; 2214 } 2215 .mmm-panel { 2216 position: absolute; 2217 inset: 0; 2218 overflow-y: auto; 2219 -webkit-overflow-scrolling: touch; 2220 overscroll-behavior: contain; 2221 background: #f7f7f5; 2222 transform: translateX(100%); 2223 transition: transform 0.24s cubic-bezier(0.4, 0, 0.2, 1); 2224 } 2225 .mmm-panel.is-current { transform: translateX(0); } 2226 .mmm-panel.is-prev { transform: translateX(-25%); opacity: 0.5; } 2227 .mmm-panel[data-panel="root"] { transform: translateX(0); } 2228 .mmm-panel[data-panel="root"].is-prev { transform: translateX(-25%); } 2229 2230 /* Root panel, large rows with subtle bottom borders */ 2231 .mmm-row { 2232 display: flex; 2233 align-items: center; 2234 justify-content: space-between; 2235 gap: 12px; 2236 padding: 18px 16px; 2237 background: white; 2238 border-bottom: 1px solid rgba(0,0,0,0.06); 2239 font-size: 17px; 2240 font-weight: 500; 2241 color: #1a1a1a; 2242 text-decoration: none; 2243 width: 100%; 2244 text-align: left; 2245 border-left: 0; 2246 border-right: 0; 2247 border-top: 0; 2248 cursor: pointer; 2249 min-height: 60px; 2250 } 2251 .mmm-row:active { background: rgba(14,165,223,0.06); } 2252 .mmm-row .mmm-row-chev { 2253 color: rgba(0,0,0,0.35); 2254 font-size: 20px; 2255 flex-shrink: 0; 2256 } 2257 .mmm-row.is-expanded { background: #f7f7f5; color: #1a1a1a; } 2258 .mmm-row.is-expanded .mmm-row-chev { transform: rotate(90deg); color: #0EA5DF; } 2259 2260 .mmm-sub { 2261 background: #fbfbfa; 2262 border-bottom: 1px solid rgba(0,0,0,0.06); 2263 display: none; 2264 } 2265 .mmm-row.is-expanded + .mmm-sub { display: block; } 2266 .mmm-sub a { 2267 display: block; 2268 padding: 14px 16px 14px 30px; 2269 font-size: 16px; 2270 color: rgba(0,0,0,0.78); 2271 text-decoration: none; 2272 border-bottom: 1px solid rgba(0,0,0,0.04); 2273 background: transparent; 2274 } 2275 .mmm-sub a:last-child { border-bottom: 0; } 2276 .mmm-sub a:active { background: rgba(14,165,223,0.06); color: #0EA5DF; } 2277 2278 /* Section eyebrow */ 2279 .mmm-section-eyebrow { 2280 padding: 18px 16px 10px; 2281 font-size: 11px; 2282 letter-spacing: 0.15rem; 2283 text-transform: uppercase; 2284 font-weight: 500; 2285 color: rgba(0,0,0,0.5); 2286 } 2287 2288 /* Category block, image card + inline expandable product list */ 2289 .mmm-cat-grid { padding: 0 12px 6px; display: grid; grid-template-columns: 1fr; gap: 10px; } 2290 .mmm-cat-block { border-radius: 4px; overflow: hidden; } 2291 2292 .mmm-cat-expand { 2293 display: none; 2294 background: white; 2295 border: 1px solid rgba(0,0,0,0.08); 2296 border-top: 0; 2297 border-radius: 0 0 4px 4px; 2298 } 2299 .mmm-cat-card.is-expanded { border-radius: 4px 4px 0 0; } 2300 .mmm-cat-card.is-expanded + .mmm-cat-expand { display: block; } 2301 2302 .mmm-cat-expand .mmm-product { 2303 display: flex; 2304 align-items: center; 2305 justify-content: space-between; 2306 padding: 14px 16px; 2307 border-bottom: 1px solid rgba(0,0,0,0.06); 2308 text-decoration: none; 2309 color: #1a1a1a; 2310 min-height: 56px; 2311 } 2312 .mmm-cat-expand .mmm-product-name { font-size: 15px; font-weight: 500; } 2313 .mmm-cat-expand .mmm-product .mmm-tag { 2314 font-size: 12px; 2315 color: rgba(0,0,0,0.5); 2316 text-align: right; 2317 flex-shrink: 0; 2318 margin-left: 12px; 2319 } 2320 .mmm-cat-expand .mmm-product.is-legacy .mmm-product-name { color: rgba(0,0,0,0.4); } 2321 .mmm-cat-expand .mmm-product:active { background: rgba(14,165,223,0.06); } 2322 2323 .mmm-cat-view-all { 2324 display: flex; 2325 align-items: center; 2326 justify-content: center; 2327 gap: 8px; 2328 margin: 12px 16px 16px; 2329 padding: 14px 18px; 2330 background: #0EA5DF; 2331 color: white; 2332 text-decoration: none; 2333 font-size: 13px; 2334 font-weight: 500; 2335 text-transform: uppercase; 2336 letter-spacing: 0.12rem; 2337 border-radius: 4px; 2338 transition: background 0.15s ease; 2339 white-space: nowrap; 2340 } 2341 .mmm-cat-view-all:hover, 2342 .mmm-cat-view-all:active { background: #0c8fc1; color: white; text-decoration: none; } 2343 2344 /* Brochure / catalogue row, between the category cards and the More 2345 section. Borrow .mmm-row styling but make it visually distinct so 2346 users see it's a separate kind of destination. */ 2347 .mmm-row-brochure { 2348 margin-top: 8px; 2349 border-top: 1px solid rgba(0,0,0,0.08); 2350 } 2351 .mmm-cat-card { 2352 position: relative; 2353 display: block; 2354 width: 100%; 2355 height: 96px; 2356 border: 0; 2357 border-radius: 4px; 2358 overflow: hidden; 2359 background: #2f2f2f center / cover no-repeat; 2360 cursor: pointer; 2361 padding: 0; 2362 text-align: left; 2363 font-family: inherit; 2364 } 2365 .mmm-cat-card:focus, 2366 .mmm-cat-card:focus-visible { 2367 outline: none; 2368 box-shadow: none; 2369 } 2370 .mmm-cat-card:active { transform: scale(0.99); } 2371 .mmm-cat-card::after {
2372 content: ''; 2373 position: absolute; 2374 inset: 0; 2375 background: linear-gradient(90deg, rgba(0,0,0,0.65) 0%, rgba(0,0,0,0.35) 50%, rgba(0,0,0,0.1) 100%); 2376 } 2377 .mmm-cat-card-label { 2378 position: absolute; 2379 left: 18px; 2380 bottom: 14px; 2381 z-index: 1; 2382 color: white; 2383 font-size: 19px; 2384 font-weight: 500; 2385 letter-spacing: -0.01em; 2386 } 2387 .mmm-cat-card-arrow { 2388 position: absolute; 2389 right: 12px; 2390 bottom: 12px; 2391 z-index: 1; 2392 height: 28px; 2393 padding: 0 12px; 2394 border-radius: 14px; 2395 /* Opaque dark chip, NOT translucent white: white text on a 20%-white 2396 glass pill is unreadable over bright category photos (the card's 2397 left-to-right scrim has faded to ~0.1 by the time it reaches this 2398 right-pinned pill). Dark backing makes contrast photo-independent. */ 2399 background: rgba(0,0,0,0.55); 2400 color: white; 2401 display: inline-flex; 2402 align-items: center; 2403 gap: 6px; 2404 font-family: inherit; 2405 font-size: 11px; 2406 font-weight: 500; 2407 letter-spacing: 0.1rem; 2408 text-transform: uppercase; 2409 backdrop-filter: blur(8px); 2410 border: 1px solid rgba(255,255,255,0.18); 2411 transition: background 0.15s ease, border-color 0.15s ease; 2412 } 2413 .mmm-cat-card-arrow .mmm-arrow-glyph { 2414 display: inline-flex; 2415 align-items: center; 2416 transition: transform 0.2s ease; 2417 } 2418 .mmm-cat-card.is-expanded .mmm-cat-card-arrow { 2419 /* Solid, darker brand blue (NOT the translucent #0EA5DF/0.85). White 2420 text on brand blue is only ~2.6:1, and at 0.85 opacity the photo 2421 bled through and made it worse. #0c79a8 is opaque (photo-independent) 2422 and clears WCAG AA for 11px text at ~4.85:1, while still reading as 2423 the active/expanded blue state. */ 2424 background: #0c79a8; 2425 border-color: transparent; 2426 } 2427 .mmm-cat-card.is-expanded .mmm-cat-card-arrow .mmm-arrow-glyph { 2428 transform: rotate(180deg); 2429 } 2430 2431 /* Direct-link mobile card (e.g. Neon Flex), uses the banner image 2432 like a normal category card, but taps navigate straight to the 2433 product page instead of expanding an accordion. The â arrow glyph 2434 replaces the "{n} products / â¾" affordance. */ 2435 .mmm-cat-card.mmm-cat-direct { 2436 text-decoration: none; 2437 } 2438 .mmm-cat-card.mmm-cat-direct .mmm-cat-card-arrow .mmm-arrow-glyph { 2439 font-size: 14px; 2440 line-height: 1; 2441 transition: transform 0.2s ease; 2442 } 2443 .mmm-cat-card.mmm-cat-direct:active .mmm-cat-card-arrow .mmm-arrow-glyph { 2444 transform: translateX(3px); 2445 } 2446 @media (prefers-reduced-motion: reduce) { 2447 .mmm-cat-card.mmm-cat-direct .mmm-cat-card-arrow .mmm-arrow-glyph { transition: none; } 2448 .mmm-cat-card.mmm-cat-direct:active .mmm-cat-card-arrow .mmm-arrow-glyph { transform: none; } 2449 } 2450 2451 /* Product list panel, full-bleed hero + products grid */ 2452 .mmm-hero { 2453 position: relative; 2454 width: 100%; 2455 height: 180px; 2456 background: #2f2f2f center / cover no-repeat; 2457 display: flex; 2458 flex-direction: column; 2459 justify-content: flex-end; 2460 padding: 20px; 2461 color: white; 2462 } 2463 .mmm-hero::after { 2464 content: ''; 2465 position: absolute; 2466 inset: 0; 2467 background: linear-gradient(180deg, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.55) 70%, rgba(0,0,0,0.75) 100%); 2468 } 2469 .mmm-hero-eyebrow { 2470 position: relative; 2471 z-index: 1; 2472 font-size: 11px; 2473 letter-spacing: 0.15rem; 2474 text-transform: uppercase; 2475 font-weight: 500; 2476 color: #0EA5DF; 2477 margin-bottom: 6px; 2478 } 2479 .mmm-hero-title { 2480 position: relative; 2481 z-index: 1; 2482 font-size: 24px; 2483 font-weight: 500; 2484 margin: 0 0 6px; 2485 letter-spacing: -0.01em; 2486 } 2487 .mmm-hero-desc { 2488 position: relative; 2489 z-index: 1; 2490 font-size: 14px; 2491 line-height: 1.45; 2492 color: rgba(255,255,255,0.85); 2493 max-width: 92%; 2494 } 2495 .mmm-products { 2496 background: white; 2497 } 2498 .mmm-product { 2499 display: flex; 2500 align-items: center; 2501 justify-content: space-between; 2502 padding: 18px 18px; 2503 border-bottom: 1px solid rgba(0,0,0,0.06); 2504 text-decoration: none; 2505 color: #1a1a1a; 2506 min-height: 64px; 2507 } 2508 .mmm-product:last-child { border-bottom: 0; } 2509 .mmm-product:active { background: rgba(14,165,223,0.06); } 2510 .mmm-product-name { 2511 font-size: 16px; 2512 font-weight: 500; 2513 } 2514 .mmm-product .mmm-tag { 2515 font-size: 12px; 2516 color: rgba(0,0,0,0.5); 2517 text-align: right; 2518 flex-shrink: 0; 2519 margin-left: 12px; 2520 letter-spacing: 0.02em; 2521 } 2522 .mmm-product.is-legacy .mmm-product-name { color: rgba(0,0,0,0.4); } 2523 2524 .mmm-cat-cta { 2525 padding: 14px 16px; 2526 text-align: center; 2527 background: #f7f7f5; 2528 border-top: 1px solid rgba(0,0,0,0.06); 2529 } 2530 .mmm-cat-cta a { 2531 display: inline-flex; 2532 align-items: center; 2533 gap: 6px; 2534 font-size: 13px; 2535 font-weight: 500; 2536 color: #0EA5DF; 2537 text-transform: uppercase; 2538 letter-spacing: 0.1rem; 2539 text-decoration: none; 2540 } 2541 2542 /* Bottom action bar, login / cart / locale */ 2543 .mmm-actions { 2544 display: grid; 2545 grid-template-columns: 1fr 1fr 1fr; 2546 background: white; 2547 border-top: 1px solid rgba(0,0,0,0.08); 2548 flex-shrink: 0; 2549 } 2550 .mmm-actions a { 2551 display: flex; 2552 flex-direction: column; 2553 align-items: center; 2554 justify-content: center; 2555 gap: 4px; 2556 padding: 10px 8px; 2557 text-decoration: none;
2558 color: rgba(0,0,0,0.7); 2559 font-size: 11px; 2560 letter-spacing: 0.08rem; 2561 text-transform: uppercase; 2562 font-weight: 500; 2563 min-height: 60px; 2564 } 2565 .mmm-actions a:active { background: rgba(14,165,223,0.06); color: #0EA5DF; } 2566 .mmm-actions .mmm-action-icon { 2567 display: flex; 2568 align-items: center; 2569 justify-content: center; 2570 line-height: 0; 2571 } 2572 .mmm-actions .mmm-action-icon svg { display: block; } 2573 2574 /* Item entry animation, staggered fade-in when the panel becomes current. */ 2575 .mmm-panel.is-current .mmm-row, 2576 .mmm-panel.is-current .mmm-cat-card, 2577 .mmm-panel.is-current .mmm-product { 2578 animation: mmm-item-fade-in 0.32s ease-out both; 2579 } 2580 .mmm-panel.is-current .mmm-row:nth-child(1), 2581 .mmm-panel.is-current .mmm-cat-card:nth-child(1), 2582 .mmm-panel.is-current .mmm-product:nth-child(1) { animation-delay: 0.04s; } 2583 .mmm-panel.is-current .mmm-row:nth-child(2), 2584 .mmm-panel.is-current .mmm-cat-card:nth-child(2), 2585 .mmm-panel.is-current .mmm-product:nth-child(2) { animation-delay: 0.08s; } 2586 .mmm-panel.is-current .mmm-row:nth-child(3), 2587 .mmm-panel.is-current .mmm-cat-card:nth-child(3), 2588 .mmm-panel.is-current .mmm-product:nth-child(3) { animation-delay: 0.12s; } 2589 .mmm-panel.is-current .mmm-row:nth-child(4), 2590 .mmm-panel.is-current .mmm-cat-card:nth-child(4), 2591 .mmm-panel.is-current .mmm-product:nth-child(4) { animation-delay: 0.16s; } 2592 .mmm-panel.is-current .mmm-row:nth-child(5), 2593 .mmm-panel.is-current .mmm-cat-card:nth-child(5), 2594 .mmm-panel.is-current .mmm-product:nth-child(5) { animation-delay: 0.2s; } 2595 @keyframes mmm-item-fade-in { 2596 from { opacity: 0; transform: translateY(8px); } 2597 to { opacity: 1; transform: translateY(0); } 2598 } 2599 </style> 2600 2601 <div id="enttec-mm-preview" hidden aria-hidden="true" role="menu"> 2602 <!-- PRODUCTS variant: rail + pane --> 2603 <div class="mm-products-only mm-rail" id="enttec-mm-rail"></div> 2604 <div class="mm-products-only mm-pane"> 2605 <div class="mm-pane-left"> 2606 <div class="mm-banner"></div> 2607 <div class="mm-eyebrow" id="enttec-mm-eyebrow">Category</div> 2608 <div class="mm-title" id="enttec-mm-title"></div> 2609 <div class="mm-desc" id="enttec-mm-desc"></div> 2610 <a href="#" class="mm-cta" id="enttec-mm-cta"></a> 2611 </div> 2612 <div class="mm-pane-right"> 2613 <div class="mm-eyebrow">Products</div> 2614 <div class="mm-product-list" id="enttec-mm-products"></div> 2615 </div> 2616 </div> 2617 2618 <!-- SIMPLE variant: clean link list (no eyebrow / title / tags). --> 2619 <div class="mm-simple-only mm-simple"> 2620 <div class="mm-simple-list" id="enttec-mm-simple-list"></div> 2621 </div> 2622 </div> 2623 2624 <!-- Mobile top bar (<768px only): replaces the floating hamburger with a proper bar --> 2625 <div id="enttec-mm-topbar"> 2626 <button class="enttec-mm-tb-hamburger" aria-label="Open menu" type="button"> 2627 <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg> 2628 </button> 2629 <a class="enttec-mm-tb-brand" href="/" aria-label="ENTTEC home"> 2630 <svg viewBox="0 0 537 87" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 2631 <path d="M48.0019 85.84H0.671875V2.25H48.0019V13.8H14.3419V36.55H45.8419V48H14.3419V74.23H48.0019V85.84Z" fill="white"/> 2632 <path d="M160.003 85.84H143.273L102.163 19.23H101.703L101.993 22.95C102.526 30.0367 102.793 36.5167 102.793 42.39V85.84H90.3828V2.25H107.003L148.003 68.52H148.343C148.269 67.64 148.116 64.4467 147.883 58.94C147.649 53.4333 147.523 49.12 147.503 46V2.25H160.003V85.84Z" fill="white"/> 2633 <path d="M435.002 85.84H387.672V2.25H435.002V13.8H401.332V36.55H432.832V48H401.332V74.23H435.002V85.84Z" fill="white"/> 2634 <path d="M512.94 12.7697C505.087 12.7697 498.913 15.553 494.42 21.1197C489.927 26.6863 487.677 34.353 487.67 44.1197C487.67 54.373 489.833 62.1297 494.16 67.3897C498.487 72.6497 504.747 75.2797 512.94 75.2797C516.398 75.288 519.847 74.9327 523.23 74.2197C526.563 73.513 530.013 72.6063 533.58 71.4997V83.2197C526.433 85.7991 518.877 87.0596 511.28 86.9397C499.047 86.9397 489.65 83.233 483.09 75.8197C476.53 68.4063 473.25 57.7997 473.25 43.9997C473.25 35.333 474.84 27.7297 478.02 21.1897C480.984 14.8972 485.803 9.66271 491.83 6.18966C497.83 2.72299 504.9 0.989657 513.04 0.989657C521.24 0.912144 529.346 2.7
26345098 536.71 6.35966L531.8 17.7997C528.897 16.4325 525.907 15.2566 522.85 14.2797C519.646 13.263 516.302 12.7535 512.94 12.7697Z" fill="white"/> 2635 <path d="M235.297 85.84H221.637V14H197.047V2.25H259.887V14H235.297V85.84Z" fill="#15A6DF"/> 2636 <path d="M325.922 85.84H312.262V14H287.672V2.25H350.512V14H325.922V85.84Z" fill="#15A6DF"/> 2637 </svg> 2638 </a> 2639 <div class="enttec-mm-tb-actions"> 2640 <a href="/cart/" class="enttec-mm-tb-cart" aria-label="Cart"> 2641 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.7 13.4a2 2 0 0 0 2 1.6h9.7a2 2 0 0 0 2-1.6L23 6H6"/></svg> 2642 </a> 2643 <a href="/my-account/" aria-label="Account"> 2644 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> 2645 </a> 2646 </div> 2647 </div> 2648 2649 <!-- Mobile full-screen overlay (<768px only), v2 industry-standard design --> 2650 <div id="enttec-mm-mobile" hidden aria-hidden="true"> 2651 <header class="mmm-header"> 2652 <button class="mmm-back" hidden aria-label="Back" type="button">â</button> 2653 <a class="mmm-brand" href="/" aria-label="ENTTEC home"> 2654 <svg viewBox="0 0 537 87" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 2655 <path d="M48.0019 85.84H0.671875V2.25H48.0019V13.8H14.3419V36.55H45.8419V48H14.3419V74.23H48.0019V85.84Z" fill="white"/> 2656 <path d="M160.003 85.84H143.273L102.163 19.23H101.703L101.993 22.95C102.526 30.0367 102.793 36.5167 102.793 42.39V85.84H90.3828V2.25H107.003L148.003 68.52H148.343C148.269 67.64 148.116 64.4467 147.883 58.94C147.649 53.4333 147.523 49.12 147.503 46V2.25H160.003V85.84Z" fill="white"/> 2657 <path d="M435.002 85.84H387.672V2.25H435.002V13.8H401.332V36.55H432.832V48H401.332V74.23H435.002V85.84Z" fill="white"/> 2658 <path d="M512.94 12.7697C505.087 12.7697 498.913 15.553 494.42 21.1197C489.927 26.6863 487.677 34.353 487.67 44.1197C487.67 54.373 489.833 62.1297 494.16 67.3897C498.487 72.6497 504.747 75.2797 512.94 75.2797C516.398 75.288 519.847 74.9327 523.23 74.2197C526.563 73.513 530.013 72.6063 533.58 71.4997V83.2197C526.433 85.7991 518.877 87.0596 511.28 86.9397C499.047 86.9397 489.65 83.233 483.09 75.8197C476.53 68.4063 473.25 57.7997 473.25 43.9997C473.25 35.333 474.84 27.7297 478.02 21.1897C480.984 14.8972 485.803 9.66271 491.83 6.18966C497.83 2.72299 504.9 0.989657 513.04 0.989657C521.24 0.912144 529.346 2.75098 536.71 6.35966L531.8 17.7997C528.897 16.4325 525.907 15.2566 522.85 14.2797C519.646 13.263 516.302 12.7535 512.94 12.7697Z" fill="white"/> 2659 <path d="M235.297 85.84H221.637V14H197.047V2.25H259.887V14H235.297V85.84Z" fill="#15A6DF"/> 2660 <path d="M325.922 85.84H312.262V14H287.672V2.25H350.512V14H325.922V85.84Z" fill="#15A6DF"/> 2661 </svg> 2662 <span class="mmm-title" hidden></span> 2663 </a> 2664 <button class="mmm-close" aria-label="Close menu" type="button">Ã</button> 2665 </header> 2666 <form class="mmm-search" action="/" method="get" role="search"> 2667 <div class="mmm-search-wrap"> 2668 <svg class="mmm-search-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 2669 <circle cx="11" cy="11" r="7" stroke="currentColor" stroke-width="2"/> 2670 <path d="M21 21l-4.5-4.5" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> 2671 </svg> 2672 <input type="search" name="s" class="mmm-search-input" placeholder="Search products, articles, support..." aria-label="Search products, articles, support..." enterkeyhint="search" required /> 2673 <button type="submit" class="mmm-search-submit" aria-label="Search"> 2674 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg> 2675 </button> 2676 </div> 2677 </form> 2678 <div class="mmm-panels"> 2679 <div class="mmm-panel is-current" data-panel="root" data-lenis-prevent></div> 2680 </div> 2681 <nav class="mmm-actions" aria-label="Quick actions"> 2682 <a href="/my-account/"> 2683 <span class="mmm-action-icon"> 2684 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> 2685 </span> 2686 <span>Login</span> 2687 </a> 2688 <a href="/cart/"> 2689 <span class="mmm-action-icon"> 2690 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/><path d="M1 1h4l2.7 13.4a2 2 0 0 0 2 1.6h9.7a2 2 0 0 0 2-1.6L23 6H6"/></svg> 2691 </span> 2692 <span>
2692Cart</span> 2693 </a> 2694 <a href="#" class="mmm-locale-toggle"> 2695 <span class="mmm-action-icon"> 2696 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg> 2697 </span> 2698 <span>EN</span> 2699 </a> 2700 </nav> 2701 </div> 2702 2703 <div id="enttec-mm-preview-flag" hidden></div> 2704 2705
2705<script id="enttec-mm-preview-script"> 2706 (function () { 2707 2708 // --- Preview pin ------------------------------------------------------- 2709 // While iterating on the design, set this to 'products' / 'about' / 2710 // 'support' to keep that variant pinned open across navigation. 2711 // Currently null = normal hover-only behaviour. 2712 var PIN_VARIANT = null; 2713 2714 // --- Content config ---------------------------------------------------- 2715 // Production version of this would live in PHP files under a mu-plugin 2716 // (Approach C). Inlined here for preview only. 2717 2718 // All product hrefs follow the canonical /product/<category-slug>/<product-slug>/ pattern. 2719 // `banner` URLs come from each category page itself: 2720 // - software (only one migrated to .sr-wrap): .sr-hero CSS background-image 2721 // - all others: first Kadence row block's background-image after <article> 2722 // Banner images are served first-party from the ENTTEC CDN 2723 // (cdn.enttec.com/website/megamenu/), not hotlinked from any region site. 2724 var catData = { 2725 'dmx-lighting-control-software': { 2726 title: 'Software', 2727 banner: 'https://cdn.enttec.com/wp-content/uploads/2025/01/28102338/1903_x_1040_category_banner_software_4-768x420.jpg', 2728 desc: "Three ENTTEC software products. Here's how to know which one is yours.", 2729 cta: 'Compare all software', 2730 href: '/products/dmx-lighting-control-software/', 2731 products: [ 2732 ['EMU', 'DJs & musicians', '/product/dmx-lighting-control-software/emu-sound-to-light-controller/', false], 2733 ['ELM', 'Pixel mapping', '/product/dmx-lighting-control-software/pixel-mapping-software/', false, 'NEW'], 2734 ['S-PLAY Programmer', 'Free, offline', '/product/dmx-lighting-control-software/s-play-programmer/', false, 'NEW'], 2735 ['EMU Hardware', 'DJs & musicians', '/product/dmx-lighting-control-software/emu-hardware-interface/', false], 2736 ['ELM HUB', 'Runs ELM, 3RU', '/product/dmx-lighting-control-software/elm-hub/', false, 'NEW'], 2737 ['ELM 2024', 'Legacy, promo only', '/product/dmx-lighting-control-software/pixel-mapping-software-2024/', true] 2738 ] 2739 }, 2740 'light-show-control': { 2741 title: 'Show control', 2742 banner: 'https://cdn.enttec.com/website/megamenu/banner_showcontrol_3-768x420.jpg', 2743 desc: 'For precise show playback or smart home automation: the tools to create an astonishing, immersive experience.', 2744 cta: 'Compare show controllers', 2745 href: '/products/light-show-control/', 2746 products: [ 2747 ['S-PLAY SP1-1', '32 universes', '/product/light-show-control/s-play-sp1-32-universe-smart-light-show-controller/', false], 2748 ['S-PLAY LITE', '16 universes', '/product/light-show-control/s-play-lite/', false], 2749 ['S-PLAY MINI', '4 universes', '/product/light-show-control/s-play-mini-2-universe-smart-light-show-controller/', false], 2750 ['S-PLAY NANO', '1 universe', '/product/light-show-control/s-play-nano-1-universe-smart-light-show-controller/', false], 2751 ['I/O Extender', 'S-PLAY SP1-1 expansion', '/product/light-show-control/i-o-extender/', false], 2752 ['ELM HUB', 'Runs ELM, 3RU', '/product/dmx-lighting-control-software/elm-hub/', false, 'NEW'] 2753 ] 2754 }, 2755 'led-pixel-control': { 2756 title: 'Pixel control', 2757 banner: 'https://cdn.enttec.com/website/megamenu/banner_showcontrol_2-768x420.jpg', 2758 desc: 'Give unique commands to every single LED chip: complete control of your artistic vision.', 2759 cta: 'Compare pixel controllers', 2760 href: '/products/led-pixel-control/', 2761 products: [ 2762 ['OCTO MK3', '32 universes', '/product/led-pixel-control/octo-mk3-32u-led-pixel-controller/', false], 2763 ['OCTO MK2', '8 universes', '/product/led-pixel-control/octo-8-universe-edmx-to-led-pixel-controller/', false], 2764 ['OCTO LITE', 'Compact', '/product/led-pixel-control/octo-lite-8-universe-led-pixel-controller/', false, 'NEW'], 2765 ['DIN PIXIE', '2 universes', '/product/led-pixel-control/din-pixie-compact-2-universe-dmx-to-led-pixel-converter-controller/', false], 2766 ['Pixelator Mini Mk2', '128 universes', '/product/led-pixel-control/pixelator-mini-mk2/', false], 2767 ['Pixelator Mini', '32 universes', '/product/led-pixel-control/pixelator-mini-lighting-controller-ethernet-to-spi-pixel-converter/', false], 2768 ['PLink Injector', 'Range extender', '/product/led-pixel-control/plink-injector/', false, 'UPDATED'], 2769 ['IP PLink Injector', 'Waterproof', '/product/led-pixel-control/waterproof-pixel-data-injector-2/', false] 2770 ] 2771 }, 2772 'led-pixel-light': { 2773 title: 'Pixel dots', 2774 banner: 'https://cdn.enttec.com/website/megamenu/banner_dots5-768x420.jpg', 2775 desc: "Hi-res SMART PXL pixel dot lights designed to withstand the harshest environments, indoors or out.", 2776 cta: 'Compare pixel dots', 2777 href: '/products/led-pixel-light/', 2778 products: [ 2779 ['Smart PXL 40 Metal', 'Anodised aluminium', '/product/led-pixel-light/hi-res-smart-pxl40-metal-rgb-led-pixel-dot-strings/', false], 2780 ['Smart PXL 40', '42 mm node', '/product/led-pixel-light/hi-res-smart-pxl40p-rgb-led-pixel-dot-strings/', false], 2781 ['Smart PXL 60', '55.5 mm node', '/product/led-pixel-light/hi-res-smart-pxl60-rgb-rgbw-led-pixel-dot-strings/', false], 2782 ['Smart PXL 100Ã25', 'Rectangular', '/product/led-pixel-light/hi-res-smart-pxl-100x25-rgb-rgbw-led-pixel-dot-strings/', false] 2783 ] 2784 }, 2785 'led-pixel-strip': { 2786 title: 'Pixel strip', 2787 banner: 'https://cdn.enttec.com/website/megamenu/banner_pixelstrip-768x420.jpg', 2788 desc: 'Individually-addressable LED pixel technology: precise detail for unforgettable, immersive installations.', 2789 cta: 'Compare pixel strip', 2790 href: '/products/led-pixel-strip/', 2791 products: [ 2792 ['5V RGB', '60 LEDs/m', '/product/led-pixel-strip/5v-rgb-60-leds-m-pixel-strip/', false], 2793 ['5V RGBW', '60 LEDs/m', '/product/led-pixel-strip/5v-rgbw-60-leds-m-pixel-strip/', false], 2794 ['12V RGB', '60 LEDs/m', '/product/led-pixel-strip/12v-rgb-60-leds-m-pixel-strip/', false], 2795 ['12V RGBW', '60 LEDs/m', '/product/led-pixel-strip/12v-rgb
2795w-60-leds-m-pixel-strip/', false], 2796 ['12V RGB long-range', 'Long runs', '/product/led-pixel-strip/12v-rgb-60-leds-m-long-range-pixel-strip/', false], 2797 ['12V RGBW long-range', 'Long runs', '/product/led-pixel-strip/12v-rgbw-60-leds-m-long-range-pixel-strip/', false] 2798 ] 2799 }, 2800 'neon-flex': { 2801 // Single-product rail item: clicking the rail OR the CTA goes 2802 // straight to the product page (not a category page). Hovering 2803 // populates the right pane with banner + description + CTA but 2804 // no product list, the title itself IS the product. 2805 title: 'Neon Flex', 2806 banner: 'https://cdn.enttec.com/website/products/73060-neon-flex/73060-neon-flex-banner.jpg', 2807 desc: 'With its rich, color-changing LED pixels housed within a bendable silicone strip, our professional Neon Flex is one of the most versatile light fixtures imaginable.', 2808 href: '/product/neon-flex/neon-flex-led-strip/', 2809 ctaLabel: 'View Neon Flex', 2810 directLink: true 2811 }, 2812 'led-dimmers': { 2813 title: 'LED dimmers', 2814 banner: 'https://cdn.enttec.com/website/megamenu/banner_led_dimmers_2-768.jpg', 2815 desc: 'Unlock ultimate control and flawless dimming, engineered for brilliance and efficiency.', 2816 cta: 'Compare LED dimmers', 2817 href: '/products/led-dimmers/', 2818 products: [ 2819 ['CVC4', 'Constant voltage', '/product/led-dimmers/cvc4-high-power-constant-voltage-led-dimmer/', false], 2820 ['CCC4', 'Constant current', '/product/led-dimmers/constant-current-led-dimmer/', false] 2821 ] 2822 }, 2823 'dmx-ethernet-distribution': { 2824 title: 'DMX Ethernet', 2825 banner: 'https://cdn.enttec.com/wp-content/uploads/2025/01/28112505/1903_x_1040_category_banner_dmxethernet-768x420.jpg', 2826 desc: 'Precise control and perfect synchronisation over incredibly long DMX-over-Ethernet setups.', 2827 cta: 'Compare ethernet gateways', 2828 href: '/products/dmx-ethernet-distribution/', 2829 products: [ 2830 ['Storm 10', '10 universes', '/product/dmx-ethernet-distribution/storm10-10-universe-ethernet-to-dmx-gateway/', false], 2831 ['DIN Ethergate Mk2', '2 universes', '/product/dmx-ethernet-distribution/ethernet-to-dmx-rdm-converter/', false], 2832 ['ODE MK3', '2 universes', '/product/dmx-ethernet-distribution/ode-mk3-dmx-ethernet-converter/', false] 2833 ] 2834 }, 2835 'dmx-usb-interface': { 2836 title: 'DMX interfaces', 2837 banner: 'https://cdn.enttec.com/website/megamenu/banner_dmx-768x420.jpg', 2838 desc: 'The easy way to control LED lighting from your computer. Portable. Precise. Perfect.', 2839 cta: 'Compare DMX interfaces', 2840 href: '/products/dmx-usb-interface/', 2841 products: [ 2842 ['DMX USB Pro', 'Industry standard', '/product/dmx-usb-interface/dmx-usb-pro-professional-1u-usb-to-dmx512-converter/', false], 2843 ['Open DMX USB', 'Low-cost', '/product/dmx-usb-interface/open-dmx-usb/', false], 2844 ['D-Split', 'Opto splitter', '/product/dmx-usb-interface/d-split-dmx-opto-splitter-isolator/', false], 2845 ['DIN RDS4 Mk2', '4-port DIN splitter', '/product/dmx-usb-interface/dmx-rdm-splitter/', false], 2846 ['EMU Interface', 'Hardware', '/product/dmx-usb-interface/emu-hardware-interface/', false] 2847 ] 2848 }, 2849 'led-strip-light': { 2850 title: 'LED strip', 2851 banner: 'https://cdn.enttec.com/website/megamenu/banner_CV_2-768x420.jpg', 2852 desc: "ENTTEC's NA series of constant-voltage LED strips: brighter output, superior durability, enhanced performance.", 2853 cta: 'Compare LED strip', 2854 href: '/products/led-strip-light/', 2855 products: [ 2856 ['NA1 white', '10m reel', '/product/led-strip-light/na1-white-led-strip-10m/', false], 2857 ['NA2 tunable white', '10m reel', '/product/led-strip-light/na2-tunable-white-led-strip-10m/', false], 2858 ['NA3 RGBW', '10m reel', '/product/led-strip-light/na3-rgbw-led-strip-10m/', false], 2859 ['NA4 RGB', '10m reel', '/product/led-strip-light/na4-rgb-led-strip-10m/', false] 2860 ] 2861 } 2862 }; 2863 2864 var simpleData = { 2865 about: { 2866 items: [ 2867 ['About Us', '/about-enttec/'], 2868 ['Authorised Distributors', '/authorised-distributors/'], 2869 ['Contact Us', '/contact-us/'], 2870 ['OEM', '/oem/'] 2871 ] 2872 }, 2873 // Fallback for any region with no $region_support block (RU today). 2874 // British spelling to match 'Authorised' above; US has its own block. 2875 support: { 2876 items: [ 2877 ['Support Centre', 'https://support.enttec.com/'], 2878 ['Training Videos', '/support/lighting-control-training-videos/'], 2879 ['Pixel Protocols', '/pixel-protocols/'] 2880 ] 2881 } 2882 }; 2883 2884 // ============================================================ 2885 // CN overlay, merges Chinese titles + product names on top of the 2886 // EN data structures. Descriptions, "for who" tags, CTA template 2887 // stay English (marketing copy, translator TODO). 2888 // ============================================================
2889 var MM = window.enttecMM || { isCN: false, navLabels: {}, cnOverlay: null, ui: {} }; 2890 2891 // ============================================================ 2892 // Per-region overrides, apply BEFORE the CN overlay so CN wins 2893 // for its About/Support sub-items (which are Chinese). 2894 // ============================================================ 2895 if ( MM.regionOverrides ) { 2896 var ro = MM.regionOverrides; 2897 if ( ro.about ) simpleData.about.items = ro.about; 2898 if ( ro.support ) simpleData.support.items = ro.support; 2899 if ( ro.catUrls ) { 2900 Object.keys( ro.catUrls ).forEach( function ( slug ) { 2901 if ( catData[slug] ) catData[slug].href = ro.catUrls[slug]; 2902 } ); 2903 } 2904 } 2905 2906 // Per-region product URL overrides, match each baseline product's 2907 // URL by its slug (last path segment) and swap in the region URL 2908 // if one exists. Leaves products untouched on regions that don't 2909 // have an entry for that (cat, slug) pair. 2910 if ( MM.regionProductUrls ) { 2911 var rpu = MM.regionProductUrls; 2912 Object.keys( catData ).forEach( function ( cat ) { 2913 var map = rpu[cat]; 2914 if ( ! map ) return; 2915 catData[cat].products = catData[cat].products.map( function ( p ) { 2916 var baselineUrl = p[2] || ''; 2917 var parts = baselineUrl.split( '/' ).filter( Boolean ); 2918 var slug = parts.length ? parts[ parts.length - 1 ] : ''; 2919 if ( slug && map[ slug ] ) { 2920 return [ p[0], p[1], map[ slug ], p[3], p[4] ]; 2921 } 2922 return p; 2923 } ); 2924 } ); 2925 } 2926 2927 // Region-specific EXTRA products, appended to the baseline list for 2928 // regions that carry SKUs not in the EN baseline (e.g. US's 3 extra 2929 // high-output LED strip variants). 2930 if ( MM.regionExtras ) { 2931 Object.keys( MM.regionExtras ).forEach( function ( cat ) { 2932 if ( catData[cat] ) { 2933 catData[cat].products = catData[cat].products.concat( MM.regionExtras[cat] ); 2934 } 2935 } ); 2936 } 2937 2938 if ( MM.isCN && MM.cnOverlay ) { 2939 var cnCat = MM.cnOverlay.cat || {}; 2940 Object.keys( cnCat ).forEach( function ( slug ) { 2941 if ( ! catData[slug] ) return; 2942 if ( cnCat[slug].title ) catData[slug].title = cnCat[slug].title; 2943 if ( cnCat[slug].desc ) catData[slug].desc = cnCat[slug].desc; 2944 if ( cnCat[slug].ctaLabel ) catData[slug].ctaLabel = cnCat[slug].ctaLabel; 2945 // Merge product names + tags by index, href + legacy flag stay. 2946 if ( cnCat[slug].products ) { 2947 catData[slug].products = catData[slug].products.map( function ( p, i ) { 2948 var cn = cnCat[slug].products[i] || []; 2949 return [ 2950 cn[0] || p[0], // Chinese name (or EN fallback) 2951 cn[1] || p[1], // tag (kept EN until translator review) 2952 p[2], // href stays 2953 p[3], // legacy flag stays 2954 cn[2] || p[4] // badge (translated if CN provided one) 2955 ]; 2956 } ); 2957 } 2958 } ); 2959 var cnSimple = MM.cnOverlay.simple || {}; 2960 if ( cnSimple.about ) simpleData.about.items = cnSimple.about; 2961 if ( cnSimple.support ) simpleData.support.items = cnSimple.support; 2962 } 2963 2964 // ============================================================ 2965 // Language/location localization. The dropdown is built client-side 2966 // from hardcoded root-relative paths, so it never passes through the 2967 // theme's permalink filters, on /fr/ its links stayed bare and threw 2968 // visitors back to the default locale. Prefix every internal URL with 2969 // the active site_location (e.g. /fr) ONCE here; every render helper 2970 // below reads the prefixed data. Region-default locale => empty prefix 2971 // => unchanged. External / mailto: / # links pass through. 2972 // ============================================================ 2973 var LANGP = ( MM && MM.langPrefix ) || ''; 2974 function mmLoc( href ) { 2975 if ( ! href || ! LANGP ) { return href; } 2976 if ( href.charAt( 0 ) !== '/' ) { return href; } 2977 if ( href === LANGP || href.indexOf( LANGP + '/' ) === 0 ) { return href; } 2978 return LANGP + href; 2979 } 2980 if ( LANGP ) { 2981 Object.keys( catData ).forEach( function ( slug ) { 2982 var d = catData[slug]; 2983 if ( d.href ) { d.href = mmLoc( d.href ); } 2984 if ( d.products ) { 2985 d.products = d.products.map( function ( p ) { 2986 if ( p && p[2] ) { p[2] = mmLoc( p[2] ); } 2987 return p; 2988 } ); 2989 } 2990 } ); 2991 [ 'about', 'support' ].forEach( function ( k ) { 2992 if ( simpleData[k] && simpleData[k].items ) { 2993 simpleData[k].items = simpleData[k].items.map( function ( it ) { 2994 if ( it && it[1] ) { it[1] = mmLoc( it[1] ); } 2995 return it; 2996 } ); 2997 } 2998 } ); 2999 if ( MM.ui ) { MM.ui.brochure_href = mmLoc( MM.ui.brochure_href || '/catalogue/' ); } 3000 } 3001 3002 var catOrder = Object.keys( catData ); 3003 3004 // --- DOM refs --------------------------------------------------------- 3005 var preview = document.getElementById( 'enttec-mm-preview' ); 3006 var rail = document.getElementById( 'enttec-mm-rail' ); 3007 var titleEl = document.getElementById( 'enttec-mm-title' ); 3008 var descEl = document.getElementById( 'enttec-mm-desc' ); 3009 var ctaEl = document.getElementById( 'enttec-mm-cta' ); 3010 var productsEl = document.getElementById( 'enttec-mm-products' ); 3011 var simpleListEl = document.getElementById( 'enttec-mm-simple-list' ); 3012 3013 // --- Build rail (once) ------------------------------------------------ 3014 // Brochure / catalogue link, a separate rail item below the category 3015 // list. Region-aware: US uses "Full 2026 Catalog" + /catalog/, rest 3016 // use "Full 2026 Catalogue" + /catalogue/, CN uses 产åæå. 3017 var brochureLabel = ( MM.ui && MM.ui.brochure_label ) || 'Full 2026 Catalogue'; 3018 var brochureHref = ( MM.ui && MM.ui.brochure_href ) || '/catalogue/'; 3019 rail.innerHTML = '<div class="mm-rail-heading">' + ( ( MM.ui && MM.ui.categories_heading ) || 'Categories' ) + '</div>' + 3020 catOrder.map( function ( slug ) { 3021 var d = catData[slug]; 3022 if ( d.directLink ) { 3023 // Same rail-item chrome as a regular category, including the 3024 // standard hover/active chev, the right-pane content + 3025 // product-page navigation are what set it apart. 3026 return '<a class="mm-rail-item mm-rail-direct" data-cat="' + slug + '" href="' + d.href + '">' + 3027 '<span>' + d.title + '</span>' + 3028 '<span class="mm-chev">
3028<svg width="7" height="10" viewBox="0 0 7 10" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M1.2 1L5 5L1.2 9"/></svg></span>' + 3029 '</a>'; 3030 } 3031 return '<a class="mm-rail-item" data-cat="' + slug + '" href="' + d.href + '">' + 3032 '<span>' + d.title + '</span>' + 3033 '<span class="mm-chev"><svg width="7" height="10" viewBox="0 0 7 10" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M1.2 1L5 5L1.2 9"/></svg></span>' + 3034 '</a>'; 3035 } ).join( '' ) + 3036 '<a class="mm-rail-brochure" href="' + brochureHref + '">' + brochureLabel + '</a>'; 3037 3038 function setCategory( slug ) { 3039 var d = catData[slug]; 3040 if ( ! d ) return; 3041 3042 // IDEMPOTENCE GUARD. Do nothing if this category is already what the 3043 // pane is showing. 3044 // 3045 // The rail is wired to `mouseover`, not `mouseenter`, and each rail 3046 // item contains child spans (its label and its chevron). So drifting 3047 // slowly across a single category fires this handler over and over as 3048 // the cursor crosses those children. That used to be harmless, because 3049 // re-running it just rewrote identical content. It stopped being 3050 // harmless the moment the pane got an entrance animation: every 3051 // repeat restarted it, so the title, blurb and CTA visibly re-faded on 3052 // a stationary-looking cursor. That is the flicker. 3053 // 3054 // Guarding here rather than switching the listener to `mouseenter` 3055 // keeps the rail's existing event contract (mouseover also covers 3056 // entering via a child, which mouseenter on the container would miss) 3057 // and fixes every other caller at the same time. 3058 if ( mmActiveCat === slug && null === mmShownSlug ) { return; } 3059 // Remember the category the pane should fall back to once a product 3060 // preview ends, and drop any preview state: switching category while 3061 // a product is previewed must not leave the pane thinking it is still 3062 // showing that product (it would then refuse to re-render it later). 3063 mmActiveCat = slug; 3064 mmShownSlug = null; 3065 rail.querySelectorAll( '.mm-rail-item' ).forEach( function ( el ) { 3066 el.classList.toggle( 'is-active', el.dataset.cat === slug ); 3067 } ); 3068 // Direct-link entries (single-SKU lines like Neon Flex) get a class on 3069 // the preview so CSS can collapse the right-side product column and 3070 // let the banner + description span the full pane. 3071 preview.classList.toggle( 'mm-direct-link', !! d.directLink ); 3072 3073 var bannerEl = preview.querySelector( '.mm-banner' ); 3074 if ( bannerEl ) { 3075 // Category banners are cover-fit lifestyle shots; drop the 3076 // contain/light-ground treatment a product preview may have left on. 3077 mmSetBannerImage( d.banner, false ); 3078 } 3079 // Direct-link entries are single products; swap the eyebrow label 3080 // from 'Category' to 'Product' so the chrome reflects what's shown. 3081 var eyebrowEl = document.getElementById( 'enttec-mm-eyebrow' ); 3082 if ( eyebrowEl ) { 3083 eyebrowEl.classList.remove( 'is-product-eyebrow' ); 3084 } 3085 // Back to category mode: the CTA is meaningful again (it goes to the 3086 // category page) and the pane stops being a link. 3087 if ( mmLeftPane ) { mmLeftPane.classList.remove( 'is-product-mode' ); } 3088 if ( eyebrowEl && MM.ui ) { 3089 eyebrowEl.textContent = d.directLink 3090 ? ( MM.ui.product_eyebrow || 'Product' ) 3091 : ( MM.ui.category_eyebrow || 'Category' ); 3092 } 3093 titleEl.textContent = d.title; 3094 descEl.textContent = d.desc; 3095 // Direct-link items supply their own CTA label ('View Neon Flex' rather 3096 // than the default 'Compare all <cat> products' template). 3097 var ctaText; 3098 if ( d.ctaLabel ) { 3099 ctaText = d.ctaLabel; 3100 } else { 3101 var ctaTemplate = ( MM.ui && MM.ui.compare_template ) || 'Compare all {title} products â'; 3102 // Strip the trailing arrow off the template, it's appended below 3103 // as its own span so :hover can animate it independently. 3104 ctaText = ctaTemplate.replace( '{title}', d.title ).replace( /\s*â\s*$/, '' ); 3105 } 3106 ctaEl.innerHTML = '<span>
3106' + ctaText + '</span><span class="mm-cta-arrow">â</span>'; 3107 ctaEl.setAttribute( 'href', d.href ); 3108 productsEl.innerHTML = d.directLink ? '' : d.products.map( function ( p ) { 3109 var badge = p[4] ? '<span class="mm-badge">' + p[4] + '</span>' : ''; 3110 // data-slug drives the left-pane product preview. Derived from the 3111 // href rather than added to the product array on purpose: the CN 3112 // overlay merges those arrays by POSITION, so growing them is how 3113 // you mislabel every product after the insert. 3114 var slug = mmSlugFromHref( p[2] ); 3115 return '<a class="mm-product' + ( p[3] ? ' is-legacy' : '' ) + '" href="' + p[2] + '"' + 3116 ( slug ? ' data-slug="' + slug + '" data-name="' + mmAttr( p[0] ) + '"' : '' ) + '>' + 3117 '<span>' + p[0] + '<span class="mm-product-arrow">â</span></span>' + 3118 '<span class="mm-tag">' + badge + p[1] + '</span>' + 3119 '</a>'; 3120 } ).join( '' ); 3121 3122 // Animate the category swap too. Without this, hovering a product 3123 // eased in but hovering a CATEGORY snapped, and the inconsistency read 3124 // as the feature being half-finished. 3125 mmPlayEntrance(); 3126 } 3127 3128 // --- Left-pane product preview ---------------------------------------- 3129 // Hovering or focusing a product swaps the left pane (banner + title + 3130 // blurb + CTA) from the category to that product, and reverts on the way 3131 // out. The data comes from WooCommerce via MM.prod (see 3132 // enttec_mm_product_previews in the PHP above). 3133 // 3134 // Why hover is safe here, when hover-to-OPEN menus are a known usability 3135 // trap: the panel is already open and the cursor is already inside it, so 3136 // there is no "diagonal problem" (no chance of slipping off a trigger and 3137 // collapsing the menu). The only real risk is strobing, which is what the 3138 // intent delay and the sticky revert below are for. 3139 var prodData = MM.prod || {}; 3140 var mmLeftPane = preview.querySelector( '.mm-pane-left' ); 3141 var mmEyebrowEl = document.getElementById( 'enttec-mm-eyebrow' ); 3142 var mmHoverTimer = null; 3143 var mmRevertTimer = null; 3144 var mmShownSlug = null; // which product the pane is currently showing 3145 var mmActiveCat = null; // category to fall back to 3146 var mmProductHref = null; // where the pane BODY goes while previewing 3147 var mmReduceMotion = window.matchMedia 3148 && window.matchMedia( '( prefers-reduced-motion: reduce )' ).matches; 3149 3150 function mmAttr( s ) { 3151 return String( s == null ? '' : s ).replace( /"/g, '"' ); 3152 } 3153 3154 // Image URL -> promise that settles once the browser has it. Settles on 3155 // error too, so a missing image degrades to "no picture" instead of the 3156 // pane waiting forever. Event-driven: no polling, no timeouts. 3157 var mmImgReady = {}; 3158 // 3159 // `priority` is the browser's fetchpriority hint: 'low' for background 3160 // warming so it never competes with the page's own images, 'high' for the 3161 // one the visitor is actually pointing at. 3162 function mmLoadImage( url, priority ) { 3163 if ( ! mmImgReady[ url ] ) { 3164 mmImgReady[ url ] = new Promise( function ( resolve ) { 3165 var img = new Image(); 3166 img.fetchPriority = priority || 'high'; 3167 img.onload = img.onerror = function () { resolve(); }; 3168 img.src = url; 3169 } ); 3170 } 3171 return mmImgReady[ url ]; 3172 } 3173 3174 // Paint the banner. `isProduct` switches to the contain-fit, light-ground 3175 // treatment. While the panel is visible the new image crossfades in on 3176 // .mm-banner-next, but only after it has loaded (see the CSS note on 3177 // .mm-banner-next for why that ordering is the whole fix). 3178 // 3179 // mmBannerToken makes the newest call win: if the cursor moves on while an 3180 // image is still downloading, the stale load is ignored when it lands. 3181 var mmBannerToken = 0; 3182 3183 // Loading placeholder timing. Both numbers are deliberate: 3184 // 3185 // DELAY 150ms: nothing changes for the first 150ms, because a placeholder 3186 // that flashes up and vanishes reads as a glitch (NN/g: under a second, a 3187 // loading indicator does more harm than good). With the images warmed on 3188 // panel open, almost every hover lands inside this window and the 3189 // placeholder never appears. 150, not the usual 300, because until it 3190 // shows, the OLD picture sits beside the NEW product name, which is 3191 // actively misleading. 90ms intent + 150ms keeps the first visible 3192 // response under the 400ms Doherty threshold. 3193 // 3194 // HOLD 300ms: once shown, the placeholder stays at least this long, so a 3195 // load finishing just after the delay doesn't blink it on and off. It 3196 // also guarantees the placeholder's own 200ms fade has handed off before 3197 // the image fade reuses the layer. 3198 var MM_PH_DELAY = 150; 3199 var MM_PH_HOLD = 300; 3200 var mmPhTimer = null; 3201 3202 function mmClearPlaceholderTimer() { 3203 if ( mmPhTimer ) { clearTimeout( mmPhTimer ); mmPhTimer = null; } 3204 } 3205 3206 // Fade the layer to the bare light ground, no image. The ground IS the 3207 // placeholder: #ececec is the colour baked into every homepage crop, so 3208 // when the picture lands it develops onto the same grey rather than 3209 // replacing a different-looking box (the "dominant colour" placeholder, 3210 // for free, since every crop shares one ground). 3211 function mmShowPlaceholder( banner, next ) { 3212 if ( mmReduceMotion ) { 3213 banner.classList.add( 'is-product', 'is-loading' ); 3214 banner.style.backgroundImage = 'none'; 3215 return; 3216 } 3217 next.classList.remove( 'is-in' ); 3218 next.classList.add( 'is-product' ); 3219 next.style.backgroundImage = 'none'; 3220 void next.offsetWidth; 3221 next.classList.add( 'is-in' ); 3222 } 3223 3224 function mmSetBannerImage( url, isProduct ) { 3225 if ( ! url ) { return; } 3226 var banner = preview.querySelector( '.mm-banner' ); 3227 if ( ! banner ) { return; } 3228 var next = banner.querySelector( '.mm-banner-next' ); 3229 var want = 'url("' + url + '")'; 3230 var token = ++mmBannerToken; 3231 isProduct = !! isProduct; 3232 mmClearPlaceholderTimer(); 3233 3234 if ( banner.style.backgroundImage === want && banner.classList.contains( 'is-product' ) === isProduct ) { 3235 // Already showing it: just cancel a fade towards something else. 3236 if ( next ) { next.classList.remove( 'is-in' ); } 3237 return; 3238 } 3239 3240 function paintBase() { 3241 banner.classList.toggle( 'is-product', isProduct ); 3242 banner.classList.remove( 'is-loading' ); 3243 banner.style.backgroundImage = want; 3244 } 3245 3246 // Hidden (the page-load prime) or no layer: nobody is watching, paint now. 3247 if ( ! next || preview.hidden ) { paintBase(); return; } 3248 3249 // Only products get a placeholder. Category banners are prefetched with 3250 // the page, so they are effectively always ready. 3251 var phShownAt = 0; 3252 if ( isProduct ) { 3253 mmPhTimer = setTimeout( function () { 3254 mmPhTimer = null; 3255 if ( token !== mmBannerToken ) { return; } 3256 phShownAt = Date.now(); 3257 mmShowPlaceholder( banner, next ); 3258 }, MM_PH_DELAY ); 3259 } 3260 3261 function fadeIn() { 3262 if ( token !== mmBannerToken ) { return; } 3263 if ( mmReduceMotion ) { paintBase(); return; } 3264 next.classList.remove( 'is-in' ); 3265 next.classList.toggle( 'is-product', isProduct ); 3266 next.style.backgroundImage = want; 3267 // Reflow so opacity 0 is committed before is-in goes on; without 3268 // it the browser merges the two and the fade never starts. 3269 void next.offsetWidth; 3270 next.classList.add( 'is-in' ); 3271 } 3272
3273 mmLoadImage( url, 'high' ).then( function () { 3274 if ( token !== mmBannerToken ) { return; } 3275 mmClearPlaceholderTimer(); 3276 var wait = phShownAt ? MM_PH_HOLD - ( Date.now() - phShownAt ) : 0; 3277 if ( wait > 0 ) { setTimeout( fadeIn, wait ); } else { fadeIn(); } 3278 } ); 3279 } 3280 3281 // Hand-off once the layer is fully in: the banner takes what the layer 3282 // shows, then the layer drops. When the layer carried no image (the 3283 // placeholder), the banner becomes the bare ground and starts the loading 3284 // pulse. transitioncancel covers the panel closing mid-fade, so the 3285 // banner is never left one image behind. 3286 ( function () { 3287 var banner = preview.querySelector( '.mm-banner' ); 3288 var next = banner && banner.querySelector( '.mm-banner-next' ); 3289 if ( ! next ) { return; } 3290 function handOff( e ) { 3291 if ( e.target !== next || 'opacity' !== e.propertyName ) { return; } 3292 if ( ! next.classList.contains( 'is-in' ) ) { return; } 3293 var img = next.style.backgroundImage; 3294 banner.classList.toggle( 'is-product', next.classList.contains( 'is-product' ) ); 3295 banner.classList.toggle( 'is-loading', ! img || 'none' === img ); 3296 banner.style.backgroundImage = img; 3297 requestAnimationFrame( function () { next.classList.remove( 'is-in' ); } ); 3298 } 3299 next.addEventListener( 'transitionend', handOff ); 3300 next.addEventListener( 'transitioncancel', handOff ); 3301 }() ); 3302 3303 // Last path segment of /product/<category>/<product>/, the WooCommerce 3304 // slug, which is how MM.prod is keyed. 3305 function mmSlugFromHref( href ) { 3306 if ( ! href ) { return ''; } 3307 var path = String( href ).split( '?' )[0].split( '#' )[0].replace( /\/+$/, '' ); 3308 var parts = path.split( '/' ); 3309 return parts.length ? parts[ parts.length - 1 ] : ''; 3310 } 3311 3312 // Play the staggered entrance on the left pane. 3313 // 3314 // The class has to come OFF and go back ON with a reflow in between, or 3315 // the browser sees no change and never restarts the animation: swapping 3316 // from one product straight to another would animate once and then sit 3317 // still for every subsequent hover. Reading offsetWidth is the reflow. 3318 // 3319 // Called AFTER the content is written, never before: the from-state of 3320 // both keyframes is opacity 0, so the new content is hidden until it 3321 // animates and the pane never shows a half-built frame. 3322 // 3323 // Skipped while the panel is hidden, so the very first setCategory (which 3324 // primes the panel on page load) does not burn an animation nobody sees. 3325 var mmEnterFailsafe = null; 3326 function mmPlayEntrance() { 3327 if ( ! MM.productPreview || ! mmLeftPane || mmReduceMotion ) { return; } 3328 if ( preview.hidden ) { return; } 3329 mmLeftPane.classList.remove( 'is-entering' ); 3330 void mmLeftPane.offsetWidth; 3331 mmLeftPane.classList.add( 'is-entering' ); 3332 3333 // FAILSAFE, and it is not paranoia. The entrance keyframes start from 3334 // opacity 0 with fill-mode `both`, so while is-entering is on and the 3335 // animation has NOT started, the text renders at its from-state, i.e. 3336 // invisible. Every removal path is an event (animationend), and an 3337 // event that never fires would leave the product name and blurb blank. 3338 // This drops the class unconditionally after the longest stagger has 3339 // had time to finish, so the worst case degrades to "no animation" 3340 // rather than "no text". 3341 if ( mmEnterFailsafe ) { clearTimeout( mmEnterFailsafe ); } 3342 mmEnterFailsafe = setTimeout( function () { 3343 mmLeftPane.classList.remove( 'is-entering' ); 3344 mmEnterFailsafe = null; 3345 }, 500 ); 3346 } 3347 3348 // In product mode the pane body is a shortcut to the previewed product, so 3349 // the image and description are clickable rather than being dead text. 3350 // 3351 // Tracked in its own variable, NOT read off the CTA: the CTA is the 3352 // category compare link now, so the two destinations are genuinely 3353 // different and must not share a source. 3354 // 3355 // The guard for a real <a> matters more than it looks: the compare CTA 3356 // lives inside this pane, so without it a click on "Compare pixel 3357 // controllers" would be hijacked to the product page instead. 3358 // 3359 // Not an <a> wrapper: the pane is shared with category mode, where the 3360 // body is not a link, and re-parenting it per mode would rebuild the DOM 3361 // mid-animation. Keyboard access is unaffected, since the product row in 3362 // the list is still the real focusable anchor. 3363 if ( mmLeftPane ) { 3364 mmLeftPane.addEventListener( 'click', function ( e ) { 3365 if ( ! mmLeftPane.classList.contains( 'is-product-mode' ) ) { return; } 3366 if ( e.target.closest && e.target.closest( 'a' ) ) { return; } 3367 if ( mmProductHref && mmProductHref !== '#' ) { window.location.href = mmProductHref; } 3368 } ); 3369 } 3370 3371 // Drop the class once the longest animation finishes, so will-change 3372 // stops holding a compositor layer for an idle, usually-hidden panel. 3373 if ( mmLeftPane ) { 3374 // Drop is-entering once NOTHING in the pane is still animating, rather 3375 // than watching one nominated element. Which element finishes last 3376 // differs by mode (the CTA is hidden in product mode, and a 3377 // display:none element runs no animation and fires no animationend), 3378 // so keying off a single node silently stopped working the moment the 3379 // modes diverged. 3380 mmLeftPane.addEventListener( 'animationend', function () { 3381 if ( ! mmLeftPane.getAnimations ) { 3382 mmLeftPane.classList.remove( 'is-entering' ); 3383 return; 3384 } 3385 var running = mmLeftPane.getAnimations( { subtree: true } ).some( function ( a ) { 3386 return 'running' === a.playState; 3387 } ); 3388 if ( ! running ) { mmLeftPane.classList.remove( 'is-entering' ); } 3389 } ); 3390 } 3391 3392 function mmSwapPane( fn ) { 3393 fn(); 3394 mmPlayEntrance(); 3395 } 3396 3397 function mmShowProduct( slug, name, href ) { 3398 var d = prodData[ slug ]; 3399 // No payload (or a product with neither image nor blurb) leaves the 3400 // category showing rather than blanking the pane. 3401 if ( ! d ) { return; } 3402 if ( mmShownSlug === slug ) { return; } 3403 mmShownSlug = slug; 3404 3405 mmSwapPane( function () { 3406 var bannerEl = preview.querySelector( '.mm-banner' ); 3407 if ( bannerEl ) { 3408 // contain + light ground: product shots are the unit on white, 3409 // and `cover` crops off the connectors and mounting detail. 3410 // Set BEFORE the image so the incoming layer is already sized 3411 // `contain` as it fades in, rather than starting cover-cropped 3412 // and re-fitting mid-fade. 3413 mmSetBannerImage( d[0], true ); 3414 } 3415 if ( mmEyebrowEl ) { 3416 mmEyebrowEl.textContent = ( MM.ui && MM.ui.product_eyebrow ) || 'Product'; 3417 mmEyebrowEl.classList.add( 'is-product-eyebrow' ); 3418 } 3419 titleEl.textContent = name || slug;
3420 descEl.textContent = d[1] || ''; 3421 // The CTA is deliberately LEFT ALONE. It keeps saying 3422 // "Compare <category>" and keeps pointing at the category page, so 3423 // the route to a real comparison survives while a product is 3424 // previewed. Overwriting it with "View <product>" both duplicated 3425 // the row under the cursor and threw away the compare link. 3426 mmProductHref = href; 3427 if ( mmLeftPane ) { mmLeftPane.classList.add( 'is-product-mode' ); } 3428 } ); 3429 } 3430 3431 // Back to whichever category the rail has active. setCategory rebuilds the 3432 // whole pane (and clears the product-only styling hooks) AND plays the 3433 // entrance itself, so this must not wrap it in mmSwapPane or the animation 3434 // would be restarted twice in the same frame. 3435 function mmRestoreCategory() { 3436 if ( null === mmShownSlug ) { return; } 3437 if ( ! mmActiveCat ) { mmShownSlug = null; return; } 3438 // Deliberately does NOT clear mmShownSlug first: setCategory's 3439 // idempotence guard reads it to tell "already showing this category" 3440 // from "coming back to it after a product preview", and clearing it 3441 // here would make the guard swallow the restore. 3442 setCategory( mmActiveCat ); 3443 } 3444 3445 function mmClearTimers() { 3446 if ( mmHoverTimer ) { clearTimeout( mmHoverTimer ); mmHoverTimer = null; } 3447 if ( mmRevertTimer ) { clearTimeout( mmRevertTimer ); mmRevertTimer = null; } 3448 mmPendingSlug = null; 3449 } 3450 3451 // 90ms of hover intent. Much shorter than the 300-500ms usually quoted for 3452 // mega menus, for two reasons: that figure is for OPENING a panel from the 3453 // nav bar (where a false positive throws a panel over the page), and the 3454 // entrance animation now does the smoothing that a long delay used to. 3455 // At 150ms plus an instant swap the whole thing felt like a lag then a 3456 // jump; at 90ms plus a 380ms eased entrance it reads as responsive. 3457 // Keyboard focus skips the delay entirely: focus is deliberate. 3458 var mmPendingSlug = null; 3459 productsEl.addEventListener( 'mouseover', function ( e ) { 3460 var row = e.target.closest ? e.target.closest( '.mm-product[data-slug]' ) : null; 3461 if ( ! row ) { return; } 3462 var slug = row.dataset.slug; 3463 3464 // Same repeated-fire problem as the rail: each row contains child 3465 // spans (name, arrow, tag), so a slow drift inside ONE row fires this 3466 // several times. Without these guards every repeat cleared and re-set 3467 // the intent timer, so the preview kept being pushed 90ms further away 3468 // and could fail to appear at all while the cursor was still moving. 3469 if ( mmShownSlug === slug ) { mmClearTimers(); mmPendingSlug = null; return; } 3470 if ( mmPendingSlug === slug && mmHoverTimer ) { return; } 3471 3472 mmClearTimers(); 3473 mmPendingSlug = slug; 3474 mmHoverTimer = setTimeout( function () { 3475 mmPendingSlug = null; 3476 mmShowProduct( slug, row.dataset.name, row.getAttribute( 'href' ) ); 3477 }, 90 ); 3478 } ); 3479 3480 // Fetch every product image the first time the PRODUCTS panel opens. 3481 // 3482 // Warming only the list under the pointer (the first version) started the 3483 // download at the moment of the hover, so the first image of the session 3484 // arrived up to a second late: measured 2026-09-30, a CloudFront edge miss 3485 // is ~1s per image, a hit ~0.08s. The fade then started so late that the 3486 // preview read as "nothing happens". Opening the panel comes a second or 3487 // two before anyone reaches a product, which is enough head start. 3488 // 3489 // Why ALL of them, not just the active category: the whole set is 41 files, 3490 // 513KB, less than one hero image, and a visitor usually tries a second 3491 // category. The visible list goes first so the likeliest hover lands 3492 // first. Low priority, once per page, and only after the panel is opened, 3493 // so a page view that never uses the menu downloads nothing. 3494 var mmWarmed = false; 3495 function mmWarmList() { 3496 if ( mmWarmed ) { return; } 3497 mmWarmed = true; 3498 productsEl.querySelectorAll( '.mm-product[data-slug]' ).forEach( function ( row ) { 3499 var d = prodData[ row.dataset.slug ]; 3500 if ( d && d[0] ) { mmLoadImage( d[0], 'low' ); } 3501 } ); 3502 Object.keys( prodData ).forEach( function ( slug ) { 3503 var d = prodData[ slug ]; 3504 if ( d && d[0] ) { mmLoadImage( d[0], 'low' ); } 3505 } ); 3506 } 3507 productsEl.addEventListener( 'pointerenter', mmWarmList ); 3508 3509 productsEl.addEventListener( 'focusin', function ( e ) {
3510 mmWarmList(); 3511 var row = e.target.closest ? e.target.closest( '.mm-product[data-slug]' ) : null; 3512 if ( ! row ) { return; } 3513 mmClearTimers(); 3514 mmShowProduct( row.dataset.slug, row.dataset.name, row.getAttribute( 'href' ) ); 3515 } ); 3516 3517 // Revert when the cursor leaves the WHOLE two-column pane, not just the 3518 // product list. 3519 // 3520 // Watching the list alone caused the worst flicker in the component. The 3521 // preview pane sits immediately left of the list and is the thing the 3522 // visitor is reading, so moving onto it is the most natural next move 3523 // (more so now that the pane itself is the click target). With the revert 3524 // on the list, that move destroyed the very content they were moving 3525 // towards: product flipped back to category, the hidden CTA reappeared, 3526 // and travelling between the list and the pane toggled the two states 3527 // over and over. 3528 // 3529 // Watch the WHOLE dropdown, not the pane either. 3530 // 3531 // The panel is a grid with a 22px gap between the category rail and the 3532 // pane. Measured: the rail ends at x=773 and the pane starts at x=795, so 3533 // there is a 22px strip that belongs to NEITHER. A cursor moving slowly 3534 // (which is exactly how someone reads a menu) lands in that strip, and a 3535 // mouseleave on the pane fired the revert from inside the still-open 3536 // dropdown. Moving on again re-showed the product, so drifting across the 3537 // block flickered between product and category. The same dead strip exists 3538 // between the pane and the product list. 3539 // 3540 // Scoping to the panel makes every one of those internal gaps a non-event. 3541 // The only thing that reverts the preview is the pointer leaving the whole 3542 // dropdown, which is the behaviour that was always intended. Hovering a 3543 // rail item still switches category, because setCategory does that 3544 // directly and clears product mode itself. 3545 var mmPaneWrap = preview; 3546 3547 mmPaneWrap.addEventListener( 'mouseleave', function ( e ) { 3548 // Belt and braces: ignore a leave whose destination is still inside 3549 // the pane (nested-element boundaries can fire one on some engines). 3550 if ( e.relatedTarget && mmPaneWrap.contains( e.relatedTarget ) ) { return; } 3551 mmClearTimers(); 3552 mmRevertTimer = setTimeout( mmRestoreCategory, 180 ); 3553 } ); 3554 3555 mmPaneWrap.addEventListener( 'focusout', function ( e ) { 3556 // Ignore focus moving anywhere else inside the pane. 3557 if ( e.relatedTarget && mmPaneWrap.contains( e.relatedTarget ) ) { return; } 3558 mmClearTimers(); 3559 mmRestoreCategory(); 3560 } ); 3561 3562 function setSimple( key ) { 3563 var d = simpleData[key]; 3564 if ( ! d ) return; 3565 simpleListEl.innerHTML = d.items.map( function ( item ) { 3566 return '<a class="mm-simple-item" href="' + item[1] + '">' + item[0] + '</a>'; 3567 } ).join( '' ); 3568 } 3569 3570 // Default the panel to the category the visitor is currently in, so the menu 3571 // opens already showing their section, and mark that rail item as current 3572 // (a persistent highlight, separate from the hover/open .is-active state). 3573 function enttecMMLinkPath( href ) { 3574 try { return new URL( href, location.origin ).pathname.replace( /\/+$/, '' ); } 3575 catch ( e ) { return ( href || '' ).replace( /\/+$/, '' ); } 3576 } 3577 function enttecMMCurrentCat() { 3578 var here = location.pathname.replace( /\/+$/, '' ); 3579 if ( ! here ) { return null; } 3580 for ( var i = 0; i < catOrder.length; i++ ) { 3581 var slug = catOrder[i], d = catData[slug]; 3582 if ( ! d ) { continue; } 3583 if ( d.href && enttecMMLinkPath( d.href ) === here ) { return slug; } 3584 if ( d.products ) { 3585 for ( var j = 0; j < d.products.length; j++ ) { 3586 if ( d.products[j][2] && enttecMMLinkPath( d.products[j][2] ) === here ) { return slug; } 3587 } 3588 } 3589 } 3590 return null; 3591 } 3592 var enttecMMCur = enttecMMCurrentCat(); 3593 setCategory( enttecMMCur || catOrder[0] ); 3594 if ( enttecMMCur ) { 3595 var enttecMMCurEl = rail.querySelector( '.mm-rail-item[data-cat="' + enttecMMCur + '"]' ); 3596 if ( enttecMMCurEl ) { enttecMMCurEl.classList.add( 'mm-rail-current' ); } 3597 } 3598 3599 // Wire up rail hover 3600 rail.addEventListener( 'mouseover', function ( e ) { 3601 var item = e.target.closest( '.mm-rail-item' ); 3602 if ( ! item ) return; 3603 setCategory( item.dataset.cat ); 3604 } ); 3605 3606 // --- Find top-nav items by label ------------------------------------- 3607 // Patterns are CJK-aware: normaliser keeps Latin letters + CJK only, 3608 // so 'products' matches "PRODUCTS" and '产å' matches "产å â¼" alike. 3609 function normaliseLabel( s ) { 3610 return ( s || '' ).replace( /[^ä¸-é¾¥a-zA-Z]/g, '' ).toLowerCase(); 3611 } 3612 function findTopLevelLi( labels ) { 3613 var menu = document.getElementById( 'mega-menu-header-menu' ) 3614 || document.querySelector( '#mega-menu-wrap-header-menu ul' ) 3615 || document.querySelector( 'header ul' ); 3616 if ( ! menu ) return null; 3617 var topItems = menu.querySelectorAll( ':scope > li' ); 3618 for ( var i = 0; i < topItems.length; i++ ) { 3619 var li = topItems[i]; 3620 var link = li.querySelector( ':scope > a, :scope > .mega-menu-link' ); 3621 if ( ! link ) continue; 3622 var label = normaliseLabel( link.textContent ); 3623 for ( var j = 0; j < labels.length; j++ ) { 3624 var want = normaliseLabel( labels[j] );
3625 if ( label === want || ( want && label.indexOf( want ) >= 0 ) ) return li; 3626 } 3627 } 3628 return null; 3629 } 3630 3631 function positionPreview( triggerLi, variant ) { 3632 var navWrap = document.getElementById( 'mega-menu-wrap-header-menu' ); 3633 var anchor = navWrap || triggerLi; 3634 var navRect = anchor.getBoundingClientRect(); 3635 preview.style.top = ( navRect.bottom + 4 ) + 'px'; 3636 3637 // BOTH variants anchor to the trigger. The products panel used to be 3638 // centred on the viewport, which dropped its categories rail ~300px 3639 // left of the PRODUCTS label (under ABOUT at 1440px), so browsing 3640 // started by looking back across the bar. Anchoring is the fix. 3641 var triggerLink = triggerLi.querySelector( ':scope > a, :scope > .mega-menu-link' ); 3642 var triggerEl = triggerLink || triggerLi; 3643 var triggerRect = triggerEl.getBoundingClientRect(); 3644 var previewWidth = preview.offsetWidth || ( variant === 'products' ? 820 : 240 ); 3645 var left; 3646 3647 if ( variant === 'products' ) { 3648 // Line the rail's category names up under the label's TEXT, not 3649 // under the link's padding box: drop the link's own left padding, 3650 // then re-add nothing for the rail's. Both are measured live 3651 // because each one shrinks at the 1024px breakpoint (link padding 3652 // 40px -> 15px, rail padding 20px -> 16px), so hardcoding either 3653 // would misalign the tablet layout. 3654 var linkPadLeft = parseFloat( getComputedStyle( triggerEl ).paddingLeft ) || 0; 3655 var railItem = preview.querySelector( '.mm-rail-item' ); 3656 var railPadLeft = railItem ? ( parseFloat( getComputedStyle( railItem ).paddingLeft ) || 0 ) : 0; 3657 left = triggerRect.left + linkPadLeft - railPadLeft; 3658 } else { 3659 // Simple variant, unchanged: centred under the visible link text 3660 // (not the li, whose padding pushes the centre rightward into the 3661 // next item). 3662 left = triggerRect.left + triggerRect.width / 2 - previewWidth / 2; 3663 } 3664 3665 // Keep it on screen. The wide variant runs out of room first: above 3666 // roughly 1400px the products panel aligns exactly, below that this 3667 // clamp pulls it back and the alignment degrades (86px out at 1280, 3668 // 214px at 1024). That is the accepted cost of a fixed 820px panel, 3669 // not a bug. Max is applied before min so a viewport narrower than the 3670 // panel still pins to the left gutter instead of going negative. 3671 // clientWidth, NOT window.innerWidth: innerWidth includes the vertical 3672 // scrollbar (~15px), which pushed the panel's right edge under it and 3673 // clipped a few pixels off the products column. 3674 var viewportWidth = document.documentElement.clientWidth || window.innerWidth; 3675 var minLeft = 12; 3676 var maxLeft = viewportWidth - previewWidth - 12; 3677 if ( left > maxLeft ) left = maxLeft; 3678 if ( left < minLeft ) left = minLeft; 3679 preview.style.left = Math.round( left ) + 'px'; 3680 preview.style.transform = 'none'; 3681 } 3682 3683 var hideTimer = null; 3684 var currentTrigger = null; 3685 3686 function openPreview( triggerLi, variant ) { 3687 clearTimeout( hideTimer ); 3688 3689 // Already open with the same trigger + variant? Skip repositioning. 3690 // (mouseenter can fire repeatedly as the cursor crosses sub-elements 3691 // of the trigger or wobbles between trigger and preview; theme :hover 3692 // styles can change the trigger link's bounding box mid-flight, 3693 // which used to cause a 1-2px micro-shift on each re-fire.) 3694 if ( 3695 currentTrigger === triggerLi && 3696 preview.classList.contains( 'is-open' ) && 3697 preview.classList.contains( 'mm-variant-' + variant ) 3698 ) { 3699 return; 3700 } 3701 3702 // If switching from another trigger, clean up its target class 3703 if ( currentTrigger && currentTrigger !== triggerLi ) { 3704 currentTrigger.classList.remove( 'mm-preview-target' ); 3705 } 3706 currentTrigger = triggerLi; 3707 triggerLi.classList.add( 'mm-preview-target' ); 3708 document.body.classList.add( 'enttec-mm-preview-active' ); 3709 3710 // Set variant class 3711 preview.classList.remove( 'mm-variant-products', 'mm-variant-simple' ); 3712 preview.classList.add( 'mm-variant-' + variant ); 3713 3714 positionPreview( triggerLi, variant );
3715 if ( 'products' === variant ) { mmWarmList(); } 3716 preview.classList.add( 'is-open' ); 3717 preview.removeAttribute( 'hidden' ); 3718 preview.setAttribute( 'aria-hidden', 'false' ); 3719 } 3720 3721 function closePreview() { 3722 hideTimer = setTimeout( function () { 3723 // If pinned, snap back to the pinned variant instead of closing. 3724 if ( PIN_VARIANT ) { 3725 var pinnedTrigger = findTopLevelLi( pinnedLabels( PIN_VARIANT ) ); 3726 if ( pinnedTrigger ) { 3727 if ( PIN_VARIANT === 'products' ) { 3728 // nothing extra, products data is already rendered 3729 } else if ( PIN_VARIANT === 'about' || PIN_VARIANT === 'support' ) { 3730 setSimple( PIN_VARIANT ); 3731 } 3732 var v = ( PIN_VARIANT === 'products' ) ? 'products' : 'simple'; 3733 openPreview( pinnedTrigger, v ); 3734 return; 3735 } 3736 } 3737 document.body.classList.remove( 'enttec-mm-preview-active' ); 3738 if ( currentTrigger ) currentTrigger.classList.remove( 'mm-preview-target' ); 3739 currentTrigger = null; 3740 preview.classList.remove( 'is-open' ); 3741 preview.setAttribute( 'hidden', '' ); 3742 preview.setAttribute( 'aria-hidden', 'true' ); 3743 }, 180 ); 3744 } 3745 3746 function pinnedLabels( pin ) { 3747 return ( MM.navLabels && MM.navLabels[ pin ] ) || [ pin ]; 3748 } 3749 3750 function attach( triggerLi, variant, simpleKey ) { 3751 triggerLi.addEventListener( 'mouseenter', function () { 3752 if ( variant === 'simple' ) setSimple( simpleKey ); 3753 openPreview( triggerLi, variant ); 3754 } ); 3755 triggerLi.addEventListener( 'mouseleave', closePreview ); 3756 } 3757 3758 // ===================================================================== 3759 // Mobile overlay, full-screen takeover with drilldown / accordion. 3760 // ===================================================================== 3761 function initMobile() { 3762 var mobile = document.getElementById( 'enttec-mm-mobile' ); 3763 if ( ! mobile ) return; 3764 3765 var headerTitle = mobile.querySelector( '.mmm-title' ); 3766 var backBtn = mobile.querySelector( '.mmm-back' ); 3767 var closeBtn = mobile.querySelector( '.mmm-close' ); 3768 var panelRoot = mobile.querySelector( '[data-panel="root"]' ); 3769 3770 var rootHtml = ''; 3771 3772 // Category blocks, tap card to expand inline, see products + "View all" link 3773 var browseEyebrow = ( MM.ui && MM.ui.browse_eyebrow ) || 'Browse by category'; 3774 rootHtml += '<div class="mmm-section-eyebrow">' + browseEyebrow + '</div>'; 3775 rootHtml += '<div class="mmm-cat-grid">' + catOrder.map( function ( slug ) { 3776 var d = catData[slug]; 3777 if ( d.directLink ) { 3778 // Direct-link card, same grid slot + banner image as a category, 3779 // but no expansion, taps just navigate to the product page. 3780 var bgStyle = d.banner ? ' style="background-image:url(\'' + d.banner + '\')"' : ''; 3781 return '<div class="mmm-cat-block">' + 3782 '<a class="mmm-cat-card mmm-cat-direct" href="' + d.href + '"' + bgStyle + '>' + 3783 '<span class="mmm-cat-card-label">' + d.title + '</span>' + 3784 '<span class="mmm-cat-card-arrow"><span class="mmm-arrow-glyph">â</span></span>' + 3785 '</a>' + 3786 '</div>'; 3787 } 3788 var products = d.products.map( function ( p ) { 3789 var badge = p[4] ? '<span class="mm-badge">' + p[4] + '</span>' : ''; 3790 return '<a class="mmm-product' + ( p[3] ? ' is-legacy' : '' ) + '" href="' + p[2] + '">' + 3791 '<span class="mmm-product-name">' + p[0] + '</span>' + 3792 '<span class="mmm-tag">' + badge + p[1] + '</span>' + 3793 '</a>'; 3794 } ).join( '' ); 3795 var productCount = d.products.length; 3796 return '<div class="mmm-cat-block">' + 3797 '<button class="mmm-cat-card mmm-cat-toggle" data-cat="' + slug + '" type="button" aria-expanded="false" style="background-image:url(\'' + d.banner + '\')">' + 3798 '<span class="mmm-cat-card-label">' + d.title + '</span>' + 3799 '<span class="mmm-cat-card-arrow">' + 3800 ( ( MM.ui && MM.ui.card_count_template ) || '{n} products' ) 3801 .replace( '{n}', productCount ) 3802 .replace( /^1 products$/, '1 product' ) + 3803 '<span class="mmm-arrow-glyph">â¾</span>' + 3804 '</span>' + 3805 '</button>' + 3806 '<div class="mmm-cat-expand">' + 3807 products + 3808 '<a class="mmm-cat-view-all" href="' + d.href + '">' + ( ( MM.ui && MM.ui.compare_template ) || 'Compare all {title} products â' ).replace( '{title}', d.title ) + '</a>' + 3809 '</div>' + 3810 '</div>'; 3811 } ).join( '' ) + '</div>'; 3812 3813 // Brochure / catalogue link, region-aware, sits between the cards 3814 // and the More section so it's the same conceptual position as the 3815 // desktop rail (last item before secondary nav). 3816 rootHtml += '<a class="mmm-row mmm-row-brochure" href="' + 3817 ( ( MM.ui && MM.ui.brochure_href ) || '/catalogue/' ) + 3818 '"><span>' + ( ( MM.ui && MM.ui.brochure_label ) || 'Full 2026 Catalogue' ) + 3819 '</span><span class="mmm-row-chev">âº</span></a>'; 3820 3821 // Sub-nav: About (accordion), Projects (link), Support (accordion), News (link) 3822 var L = MM.ui || {}; 3823 rootHtml += '<div class="mmm-section-eyebrow">' + ( L.more_eyebrow || 'More' ) + '</div>'; 3824 rootHtml += accordionRow( 'about', L.about_row || 'About', simpleData.about.items ); 3825 rootHtml += '<a class="mmm-row" href="' + mmLoc( '/projects' ) + '"><span>' + ( L.projects_link || 'Projects' ) + '</span><span class="mmm-row-chev">âº</span></a>'; 3826 rootHtml += accordionRow( 'support', L.support_row || 'Support', simpleData.support.items ); 3827 var newsHref = mmLoc( ( MM.regionOverrides && MM.regionOverrides.newsHref ) || '/news/' ); 3828 rootHtml += '<a class="mmm-row" href="' + newsHref + '"><span>' + ( L.news_link || 'News' ) + '</span><span class="mmm-row-chev">âº</span></a>'; 3829 3830 panelRoot.innerHTML = rootHtml; 3831 3832 function accordionRow( key, label, items ) { 3833 var sub = items.map( function ( item ) { 3834 return '<a href="' + item[1] + '">' + item[0] + '</a>'; 3835 } ).join( '' ); 3836 return '<button class="mmm-row mmm-accordion" data-accordion="' + key + '" type="button"><span>' + label + '</span><span class="mmm-row-chev">âº</span></button>' + 3837 '<div class="mmm-sub">' + sub + '</div>'; 3838 } 3839 3840 // --- Event handlers ------------------------------------------------ 3841 // Single-panel mobile menu, category cards expand inline to show 3842 // products + "view all" link. About/Support also expand inline. 3843 mobile.addEventListener( 'click', function ( e ) { 3844 var catToggle = e.target.closest( '.mmm-cat-toggle' ); 3845 if ( catToggle ) { 3846 e.preventDefault(); 3847 mobile.querySelectorAll( '.mmm-cat-toggle.is-expanded' ).forEach( function ( el ) { 3848 if ( el !== catToggle ) { 3849 el.classList.remove( 'is-expanded' ); 3850 el.setAttribute( 'aria-expanded', 'false' ); 3851 } 3852 } ); 3853 catToggle.classList.toggle( 'is-expanded' ); 3854 catToggle.setAttribute( 'aria-expanded', catToggle.classList.contains( 'is-expanded' ) ? 'true' : 'false' ); 3855 return; 3856 } 3857 3858 var acc = e.target.closest( '.mmm-accordion' ); 3859 if ( acc ) { 3860 e.preventDefault(); 3861 mobile.querySelectorAll( '.mmm-accordion.is-expanded' ).forEach( function ( el ) { 3862 if ( el !== acc ) el.classList.remove( 'is-expanded' ); 3863 } ); 3864 acc.classList.toggle( 'is-expanded' ); 3865 } 3866 } ); 3867 3868 closeBtn.addEventListener( 'click', closeMobile ); 3869 backBtn.hidden = true; // No drilldown; back button stays hidden. 3870 3871 // Esc closes the mobile overlay too. 3872 document.addEventListener( 'keydown', function ( e ) { 3873 if ( e.key === 'Escape' && mobile.classList.contains( 'is-open' ) ) { 3874 closeMobile(); 3875 } 3876 } ); 3877 3878 // Auto-close on viewport resize past the mobile breakpoint (tablet/desktop). 3879 var desktopMQ = window.matchMedia( '(min-width: 768px)' ); 3880 var onBreakpoint = function ( e ) { 3881 if ( e.matches && mobile.classList.contains( 'is-open' ) ) { 3882 closeMobile(); 3883 } 3884 }; 3885 if ( typeof desktopMQ.addEventListener === 'function' ) { 3886 desktopMQ.addEventListener( 'change', onBreakpoint ); 3887 } else if ( typeof desktopMQ.addListener === 'function' ) { 3888 desktopMQ.addListener( onBreakpoint ); // Safari < 14 3889 } 3890 3891 function openMobile() { 3892 mobile.classList.add( 'is-open' ); 3893 mobile.removeAttribute( 'hidden' ); 3894 mobile.setAttribute( 'aria-hidden', 'false' ); 3895 document.body.style.overflow = 'hidden'; 3896 // Make sure root panel is current (in case any state was left over). 3897 panelRoot.classList.add( 'is-current' ); 3898 headerTitle.hidden = true; 3899 // Bypass Lenis smooth-scroll on the overlay's scroll container. 3900 if ( window.lenis && typeof window.lenis.stop === 'function' ) { 3901 window.lenis.stop(); 3902 } 3903 } 3904 function closeMobile() { 3905 mobile.classList.remove( 'is-open' ); 3906 mobile.setAttribute( 'hidden', '' ); 3907 mobile.setAttribute( 'aria-hidden', 'true' ); 3908 document.body.style.overflow = ''; 3909 if ( window.lenis && typeof window.lenis.start === 'function' ) { 3910 window.lenis.start(); 3911 } 3912 } 3913 3914 // --- Hook hamburger buttons (both our new topbar one and the theme's) ------- 3915 var ourToggle = document.querySelector( '.enttec-mm-tb-hamburger' ); 3916 if ( ourToggle ) { 3917 ourToggle.addEventListener( 'click', function ( e ) { 3918 e.preventDefault(); 3919 openMobile(); 3920 } ); 3921 } 3922 var themeToggle = document.querySelector( '.mega-menu-toggle, .navbar-toggler, #menu_btn' ); 3923 if ( themeToggle ) { 3924 themeToggle.addEventListener( 'click', function ( e ) { 3925 e.preventDefault(); 3926 e.stopImmediatePropagation(); 3927 openMobile(); 3928 }, true ); 3929 } 3930 if ( ! ourToggle && ! themeToggle ) { 3931 console.warn( '[enttec-mm-preview] mobile hamburger not found, preview disabled' ); 3932 } 3933 } 3934
3935 function init() { 3936 // Initialise BOTH the mobile overlay and the desktop/tablet hover 3937 // dropdown. They never visually conflict, the CSS media queries 3938 // keep mobile UI under 768px and desktop UI above 768px. Wiring 3939 // both up at load time means resizing across the breakpoint 3940 // doesn't leave one side uninitialised (previous bug: opening the 3941 // mobile menu and then dragging the window wider left the desktop 3942 // dropdown unbound because the desktop branch never ran). 3943 initMobile(); 3944 3945 // Desktop / tablet: hover-based dropdown. 3946 var productsLi = findTopLevelLi( pinnedLabels( 'products' ) ); 3947 var aboutLi = findTopLevelLi( pinnedLabels( 'about' ) ); 3948 var supportLi = findTopLevelLi( pinnedLabels( 'support' ) ); 3949 3950 var anyFound = false; 3951 if ( productsLi ) { attach( productsLi, 'products', null ); anyFound = true; console.log( '[enttec-mm-preview] bound PRODUCTS' ); } 3952 if ( aboutLi ) { attach( aboutLi, 'simple', 'about' ); anyFound = true; console.log( '[enttec-mm-preview] bound ABOUT' ); } 3953 if ( supportLi ) { attach( supportLi, 'simple', 'support' ); anyFound = true; console.log( '[enttec-mm-preview] bound SUPPORT' ); } 3954 3955 if ( ! anyFound ) { 3956 console.warn( '[enttec-mm-preview] no top-nav items matched, preview disabled' ); 3957 return; 3958 } 3959 3960 // Keep the dropdown open while the user moves into it. 3961 preview.addEventListener( 'mouseenter', function () { clearTimeout( hideTimer ); } ); 3962 preview.addEventListener( 'mouseleave', closePreview ); 3963 3964 // Esc closes the dropdown. 3965 document.addEventListener( 'keydown', function ( e ) { 3966 if ( e.key === 'Escape' && preview.classList.contains( 'is-open' ) ) { 3967 clearTimeout( hideTimer ); 3968 closePreview(); 3969 } 3970 } ); 3971 3972 // Click anywhere outside the dropdown / trigger closes it. 3973 document.addEventListener( 'click', function ( e ) { 3974 if ( ! preview.classList.contains( 'is-open' ) ) return; 3975 if ( preview.contains( e.target ) ) return; 3976 if ( currentTrigger && currentTrigger.contains( e.target ) ) return; 3977 clearTimeout( hideTimer ); 3978 closePreview(); 3979 } ); 3980 3981 window.addEventListener( 'resize', function () { 3982 if ( preview.classList.contains( 'is-open' ) && currentTrigger ) { 3983 var v = preview.classList.contains( 'mm-variant-products' ) ? 'products' : 'simple'; 3984 positionPreview( currentTrigger, v ); 3985 } 3986 } ); 3987 3988 // If pinned, open immediately on load. 3989 if ( PIN_VARIANT ) { 3990 var pinnedTrigger = findTopLevelLi( pinnedLabels( PIN_VARIANT ) ); 3991 if ( pinnedTrigger ) { 3992 var v = ( PIN_VARIANT === 'products' ) ? 'products' : 'simple'; 3993 if ( v === 'simple' ) setSimple( PIN_VARIANT ); 3994 openPreview( pinnedTrigger, v ); 3995 } 3996 } 3997 } 3998 3999 if ( document.readyState === 'loading' ) { 4000 document.addEventListener( 'DOMContentLoaded', init ); 4001 } else { 4002 init(); 4003 } 4004 })(); 4005 </script>
4005 4006
4006<script id="enttec-nav-dropdown-highlight"> 4007(function () { 4008 var here = location.pathname.replace( /\/+$/, '' ) || '/'; 4009 if ( here === '/' ) { return; } 4010 function mark( root ) { 4011 root.querySelectorAll( 'a[href]' ).forEach( function ( a ) { 4012 var p = ( a.pathname || '' ).replace( /\/+$/, '' ) || '/'; 4013 a.classList.toggle( 'enttec-nav-dd-current', p === here ); 4014 } ); 4015 } 4016 [ 'enttec-mm-preview', 'enttec-mm-mobile' ].forEach( function ( id ) { 4017 var root = document.getElementById( id ); 4018 if ( ! root ) { return; } 4019 mark( root ); 4020 new MutationObserver( function () { mark( root ); } ).observe( root, { childList: true, subtree: true } ); 4021 } ); 4022})(); 4023</script>
4023 4024<style> 4025.woocommerce-checkout .woocommerce .woocommerce-checkout-review-order #payment button[name=woocommerce_checkout_place_order] { 4026 background-color: #0EA5DF; 4027} 4028 4029.wp-block-kadence-column.kb-section-dir-horizontal .wp-block-kadence-advancedgallery { 4030 overflow: hidden; 4031} 4032</style> 4033
4033<script type='text/javascript'> 4034 (function () { 4035 var c = document.body.className; 4036 c = c.replace(/woocommerce-no-js/, 'woocommerce-js'); 4037 document.body.className = c; 4038 })(); 4039 </script>
4039 4040 <!-- ERROR: WP-Optimize Minify was not allowed to save its cache on - wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-b-blocks-script1791191999.min.js --><!-- Please check if the path above is correct and ensure your server has write permission there! -->
4040<script data-cfasync="false"> 4041 window.dFlipLocation = 'https://www.enttec.com.au/wp-content/plugins/3d-flipbook-dflip-lite/assets/'; 4042 window.dFlipWPGlobal = {"text":{"toggleSound":"Turn on\/off Sound","toggleThumbnails":"Toggle Thumbnails","toggleOutline":"Toggle Outline\/Bookmark","previousPage":"Previous Page","nextPage":"Next Page","toggleFullscreen":"Toggle Fullscreen","zoomIn":"Zoom In","zoomOut":"Zoom Out","toggleHelp":"Toggle Help","singlePageMode":"Single Page Mode","doublePageMode":"Double Page Mode","downloadPDFFile":"Download PDF File","gotoFirstPage":"Goto First Page","gotoLastPage":"Goto Last Page","share":"Share","mailSubject":"I wanted you to see this FlipBook","mailBody":"Check out this site {{url}}","loading":"DearFlip: Loading "},"viewerType":"flipbook","moreControls":"download,pageMode,startPage,endPage,sound","hideControls":"","scrollWheel":"false","backgroundColor":"#777","backgroundImage":"","height":"auto","paddingLeft":"20","paddingRight":"20","controlsPosition":"bottom","duration":800,"soundEnable":"true","enableDownload":"true","showSearchControl":"false","showPrintControl":"false","enableAnnotation":false,"enableAnalytics":"false","webgl":"true","hard":"none","maxTextureSize":"1600","rangeChunkSize":"524288","zoomRatio":1.5,"stiffness":3,"pageMode":"0","singlePageMode":"0","pageSize":"0","autoPlay":"false","autoPlayDuration":5000,"autoPlayStart":"false","linkTarget":"2","sharePrefix":"flipbook-"}; 4043 </script>
4043 4044
4044<script type="text/javascript" id="b-blocks-script-js-before"> 4045/* <![CDATA[ */ 4046const bBlocksPremiumChecker = false; 4047//# sourceURL=b-blocks-script-js-before 4048/* ]]> */ 4049</script>
vendor: 1 bytes, line 4049
4049
4050<script type="text/javascript" src="https://www.enttec.com.au/wp-content/plugins/b-blocks/build/script.js?ver=2.1.0" id="b-blocks-script-js"></script>
vendor: 1 bytes, line 4050
4050
4051<script type="text/javascript" id="woocommerce-google-analytics-integration-data-js-after"> 4052/* <![CDATA[ */ 4053window.ga4w = { data: {"cart":{"items":[],"coupons":[],"totals":{"currency_code":"AUD","total_price":0,"currency_minor_unit":2}}}, settings: {"tracker_function_name":"gtag","events":["purchase","add_to_cart","remove_from_cart","view_item_list","select_content","view_item","begin_checkout"],"identifier":"product_sku","currency":{"decimalSeparator":".","thousandSeparator":",","precision":2}} }; document.dispatchEvent(new Event("ga4w:ready")); 4054//# sourceURL=woocommerce-google-analytics-integration-data-js-after 4055/* ]]> */ 4056</script>
vendor: 1 bytes, line 4056
4056
4057<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit&ver=1.0.0" id="google-translate-js"></script>
vendor: 1 bytes, line 4057
4057
4058<script type="text/javascript" src="https://www.enttec.com.au/wp-includes/js/dist/hooks.min.js?ver=dd5603f07f9220ed27f1" id="wp-hooks-js"></script>
vendor: 1 bytes, line 4058
4058
4059<script type="text/javascript" src="https://www.enttec.com.au/wp-includes/js/dist/i18n.min.js?ver=c26c3dc7bed366793375" id="wp-i18n-js"></script>
vendor: 1 bytes, line 4059
4059
4060<script type="text/javascript" id="wp-i18n-js-after"> 4061/* <![CDATA[ */ 4062wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); 4063//# sourceURL=wp-i18n-js-after 4064/* ]]> */ 4065</script>
vendor: 81 bytes, lines 4065-4066
4065 4066<script type="text/javascript" src="https://www.googletagmanager.com/gtag/js?id=
4066G-JPJJYZDMPX
vendor: 64 bytes, line 4066
4066" id="google-tag-manager-js" data-wp-strategy="async"></script>
4067<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-woocommerce-google-analytics-integration1791191999.min.js" id="wpo_min-footer-4-js"></script>
vendor: 1 bytes, line 4067
4067
4068<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-b-blocks-advanced-script1791191999.min.js" id="wpo_min-footer-5-js"></script>
vendor: 1 bytes, line 4068
4068
4069<script type="text/javascript" src="https://cdn.enttec.com/website/js/vendor/lenis.min.js?ver=1.1.13" id="lenis-min-js"></script>
vendor: 1 bytes, line 4069
4069
4070<script type="text/javascript" src="https://cdn.enttec.com/website/js/vendor/alpine.min.js?ver=2.7.0" id="apline-2-js"></script>
vendor: 1 bytes, line 4070
4070
4071<script type="text/javascript" id="wpo_min-footer-9-js-extra"> 4072/* <![CDATA[ */ 4073var contactDetails = {"address":["43 Indian Drive","Keysborough Victoria 3173","Australia"],"phone":"+61 (03) 9763 5755","whatsapp":"+61466122276","abn":"31664779168","emails":["[email protected]","[email protected]"]}; 4074//# sourceURL=wpo_min-footer-9-js-extra 4075/* ]]> */ 4076</script>
vendor: 1 bytes, line 4076
4076
4077<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-global-script1791191999.min.js" id="wpo_min-footer-9-js"></script>
vendor: 1 bytes, line 4077
4077
4078<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-script-page-js1791191999.min.js" id="wpo_min-footer-10-js"></script>
vendor: 1 bytes, line 4078
4078
4079<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-jquery-ui1791191999.min.js" id="wpo_min-footer-11-js"></script>
vendor: 1 bytes, line 4079
4079
4080<script type="text/javascript" src="https://www.enttec.com.au/wp-content/themes/eshop/js/slick.min.js?ver=1.0.0" id="slick-js"></script>
vendor: 1 bytes, line 4080
4080
4081<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-enttec-header-stack1791191999.min.js" id="wpo_min-footer-13-js"></script>
vendor: 1 bytes, line 4081
4081
4082<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-jquery-global-script1791191999.min.js" id="wpo_min-footer-14-js"></script>
vendor: 1 bytes, line 4082
4082
4083<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-enttec-geo-bar1791191999.min.js" id="wpo_min-footer-15-js"></script>
vendor: 1 bytes, line 4083
4083
4084<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-download-form-popup1791191999.min.js" id="wpo_min-footer-16-js"></script>
vendor: 1 bytes, line 4084
4084
4085<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-enttec-cdn-base1791191999.min.js" id="wpo_min-footer-17-js"></script>
vendor: 1 bytes, line 4085
4085
4086<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-emu-download-manifest1791191999.min.js" id="wpo_min-footer-18-js"></script>
vendor: 1 bytes, line 4086
4086
4087<script type="text/javascript" id="wpo_min-footer-19-js-extra"> 4088/* <![CDATA[ */ 4089var ajax_dynamic = {"ajaxurl":"https://www.enttec.com.au/wp-admin/admin-ajax.php?action=search_product","ownsVsr":""}; 4090//# sourceURL=wpo_min-footer-19-js-extra 4091/* ]]> */ 4092</script>
vendor: 1 bytes, line 4092
4092
4093<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-ajax_dynamic1791191999.min.js" id="wpo_min-footer-19-js"></script>
vendor: 1 bytes, line 4093
4093
4094<script type="text/javascript" id="wpo_min-footer-20-js-extra"> 4095/* <![CDATA[ */ 4096var edsI18n = {"showMore":"Show %d more","ofTotal":"of %d","goToPos":"Go to position %d"}; 4097//# sourceURL=wpo_min-footer-20-js-extra 4098/* ]]> */ 4099</script>
vendor: 1 bytes, line 4099
4099
4100<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-enttec-design-system1791191999.min.js" id="wpo_min-footer-20-js"></script>
vendor: 1 bytes, line 4100
4100
4101<script type="text/javascript" src="https://www.enttec.com.au/wp-includes/js/hoverIntent.min.js?ver=1.10.2" id="hoverIntent-js"></script>
vendor: 1 bytes, line 4101
4101
4102<script type="text/javascript" src="https://www.enttec.com.au/wp-content/cache/wpo-minify/1791192652/assets/wpo-minify-footer-megamenu1791191999.min.js" id="wpo_min-footer-22-js"></script>
vendor: 1 bytes, line 4102
4102
4103<script id="enttec-subnav-fix-js"> 4104(function () { 4105 var nav = document.getElementById( 'navbar' ); 4106 var subs = document.querySelectorAll( 'nav.subnav, nav.etv-subnav, .sr-anchor-nav' ); 4107 if ( ! nav || ! subs.length ) { return; } 4108 function sync() { 4109 var hidden = nav.classList.contains( 'scroll-down' ); 4110 subs.forEach( function ( s ) { s.classList.toggle( 'nav-hidden', hidden ); } ); 4111 } 4112 new MutationObserver( sync ).observe( nav, { attributes: true, attributeFilter: [ 'class' ] } ); 4113 sync(); 4114})(); 4115</script>
4115 4116 <style id="elmx-free-css"> 4117 .elmx-free-cta{max-width:520px;margin:18px 0 0;padding:20px 22px;border:1px solid rgba(255,255,255,.16); 4118 border-radius:14px;background:rgba(10,14,20,.55);backdrop-filter:blur(4px);color:#eef2f5;text-align:left} 4119 .elmx-free-account .elmx-free-result{margin-top:4px} 4120 .elmx-free-head h3{margin:6px 0 4px;font-size:18px;font-weight:600;color:#fff} 4121 .elmx-free-head p{margin:0;font-size:18px;line-height:1.5;color:#c3ccd6} 4122 .elmx-free-badge{display:inline-flex;align-items:center;gap:6px;background:#e6f7ec;color:#1a7f37; 4123 font-size:14px;font-weight:600;padding:4px 10px;border-radius:999px} 4124 .elmx-free-btn{display:inline-flex;align-items:center;gap:9px;margin-top:14px;padding:11px 20px; 4125 border:1px solid transparent;border-radius:24px;background:#0EA5DF;color:#fff;font-weight:600; 4126 font-size:18px;cursor:pointer;text-decoration:none;transition:background .15s ease,transform .1s ease} 4127 .elmx-free-btn:hover{background:#0c8bbb;color:#fff} 4128 .elmx-free-btn:active{transform:translateY(1px)} 4129 .elmx-free-btn[disabled]{opacity:.7;cursor:default} 4130 .elmx-free-fineprint{margin:10px 0 0;font-size:14px;color:#9fb0bd} 4131 .elmx-free-spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff; 4132 border-radius:50%;animation:elmxfreespin .7s linear infinite} 4133 @keyframes elmxfreespin{to{transform:rotate(360deg)}} 4134 .elmx-free-result{margin-top:14px} 4135 .elmx-free-note{font-size:18px;font-weight:600;margin-bottom:8px} 4136 .elmx-free-note--existing{color:#f5b544} 4137 .elmx-free-code-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap} 4138 .elmx-free-code{display:inline-flex;align-items:center;gap:10px;background:rgba(14,165,223,.12); 4139 border:1px dashed #0EA5DF;color:#7fd6f5;font-family:ui-monospace,"SF Mono",Menlo,monospace; 4140 font-size:18px;font-weight:500;padding:9px 13px;border-radius:10px;cursor:pointer} 4141 .elmx-free-clip{display:inline-flex;align-items:center;opacity:.75} 4142 .elmx-free-copied{font-size:14px;color:#1a7f37;font-weight:600;opacity:0;transition:opacity .2s ease} 4143 .elmx-free-copied.show{opacity:1} 4144 .elmx-free-redeem{margin-top:14px;padding:14px 16px;background:rgba(234,88,12,.12); 4145 border:1px solid rgba(234,88,12,.4);border-radius:10px} 4146 .elmx-free-redeem-h{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:600;color:#f2a35a;margin-bottom:6px} 4147 .elmx-free-redeem ol{margin:0;padding-left:20px;font-size:18px;color:#f0d9c6} 4148 .elmx-free-redeem li{margin:3px 0} 4149 .elmx-free-redeem code{background:rgba(255,255,255,.12);padding:1px 6px;border-radius:5px;font-size:14px} 4150 .elmx-free-error{margin-top:12px;font-size:18px;color:#ff8f8f} 4151 /* Compact banner variant for the Get-licence modal: head + button on one row. */ 4152 .elmx-free-cta--banner{max-width:none;margin:0 0 6px;padding:14px 16px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-family:'Montserrat',-apple-system,sans-serif} 4153 .elmx-free-cta--banner .elmx-free-head{flex:1;min-width:190px} 4154 .elmx-free-cta--banner .elmx-free-head h3{font-size:18px;margin:5px 0 2px} 4155 .elmx-free-cta--banner .elmx-free-head p{font-size:14px} 4156 .elmx-free-cta--banner .elmx-free-btn{margin-top:0;flex:none} 4157 .elmx-free-cta--banner .elmx-free-result{flex-basis:100%} 4158 .elmx-free-cta--banner .elmx-free-badge{display:none} 4159 /* Account panel sits on the light licences page - flip colours to match the card there. */ 4160 .elmx-free-account.elmx-free-cta,.elmx-free-account{color:#2b2b2b} 4161 .elmx-free-account .elmx-free-code{background:#f7fbfd;border-color:#0EA5DF;color:#0b6e93} 4162 .elmx-free-account .elmx-free-redeem{background:#fff7ed;border-color:#fed7aa} 4163 .elmx-free-account .elmx-free-redeem-h{color:#c2410c} 4164 .elmx-free-account .elmx-free-redeem ol{color:#7c2d12} 4165 .elmx-free-account .elmx-free-redeem code{background:#ffedd5} 4166 /* Idea 1 compact row (2026-07-08): neutral surface + ENTTEC-blue accent, no green. */ 4167 .elmx-free-cta--banner{max-width:none;padding:11px 13px;gap:12px;flex-wrap:nowrap;border:1px solid #2a3340;border-left:3px solid #0EA5DF;border-radius:10px;background:#11161e;backdrop-filter:none;color:#EDEFF2} 4168 .elmx-free-cta--banner .eff-ic{width:32px;height:32px;border-radius:8px;background:#0b0f15;border:1px solid #2a3340;color:#2CC0F5;display:grid;place-items:center;flex:none} 4169 .elmx-free-cta--banner .eff-main{flex:1;min-width:0} 4170 .elmx-free-cta--banner .eff-top{display:flex;align-items:baseline;gap:8px} 4171 .elmx-free-cta--banner .eff-nm{font-size:14px;font-weight:700;color:#fff} 4172 .elmx-free-cta--banner .eff-price{font-size:12px;font-weight:700;color:#d7dbe0} 4173 .elmx-free-cta--banner .eff-sub{font-size:12px;color:#d7dbe0;margin-top:1px} 4174 /* Part number. Neutral ENTTEC grey (#9ea2a6), one step back from .eff-sub so the 4175 reference code never competes with the universe count. Lives with the component 4176 rather than the ELM page CSS so it is styled in every placement. */ 4177 .elmx-free-cta--banner .eff-sku{font-size:12px;line-height:1.3;color:#9ea2a6;letter-spacing:.04em;margin-top:2px;font-variant-numeric:tabular-nums}
4178 .elmx-free-cta--banner .eff-action{flex:none} 4179 .elmx-free-cta--banner .elmx-free-result{flex-basis:auto;display:flex;align-items:center;gap:8px;margin-top:0} 4180 /* The banner is flex-wrap:nowrap so the head and button share one row. On a narrow 4181 phone the 116px button squeezed the head to 77px and stacked the SKU vertically, so 4182 below 560px the button drops to its own row, indented past the icon. Banner variant 4183 only, which is used solely by the ELM 2026 licence modal. */ 4184 @media(max-width:560px),(min-width:761px) and (max-width:950px){ 4185 .elmx-free-cta--banner{flex-wrap:wrap;row-gap:10px} 4186 .elmx-free-cta--banner .eff-main{flex:1 1 auto;min-width:0} 4187 .elmx-free-cta--banner .eff-action{flex:1 0 100%;margin-left:44px} 4188 } 4189 .elmx-free-btn{margin-top:0;padding:9px 15px;border-radius:20px;font-size:14px} 4190 /* Has-state: the account's single free voucher, shown as a copyable chip. */ 4191 .elmx-free-have{display:flex;align-items:center;gap:8px} 4192 .elmx-free-code{font-size:14px;padding:5px 9px;border-radius:7px;transition:border-color .18s ease,background .18s ease,transform .12s ease} 4193 .elmx-free-code:active{transform:scale(.97)} 4194 .elmx-free-copied{color:#3fb950;font-size:18px;font-weight:700;display:inline-flex;align-items:center;align-self:center;gap:4px;line-height:1;transform:translateY(3px);transition:opacity .2s ease,transform .2s ease} 4195 .elmx-free-copied svg{display:block;flex:none} 4196 .elmx-free-copied.show{transform:translateY(0)} 4197 /* Copy micro-animation: copy icon morphs to a check, chip pops, "Copied!" slides in. */ 4198 .elmx-free-clip{position:relative;width:12px;height:12px} 4199 .elmx-free-clip .clip-copy,.elmx-free-clip .clip-check{position:absolute;inset:0;display:inline-flex;align-items:center;justify-content:center;transition:opacity .18s ease,transform .18s ease} 4200 .elmx-free-clip .clip-check{opacity:0;transform:scale(.3)} 4201 .elmx-free-code.copied{border-style:solid;border-color:#3fb950;background:rgba(63,185,80,.18);animation:elmxCopyPop .34s ease} 4202 .elmx-free-code.copied .clip-copy{opacity:0;transform:scale(.3)} 4203 .elmx-free-code.copied .clip-check{opacity:1;transform:scale(1);color:#3fb950;animation:elmxCheckPop .42s cubic-bezier(.2,1.5,.4,1)} 4204 /* Return-from-login: pulse the chip so a single click completes the copy if the 4205 browser blocked the auto-copy (clipboard writes need a fresh user gesture). */ 4206 .elmx-free-code.elmx-free-pulse{animation:elmxPulse 1.1s ease-in-out 3} 4207 @keyframes elmxPulse{0%,100%{box-shadow:0 0 0 0 rgba(63,185,80,0)}50%{box-shadow:0 0 0 4px rgba(63,185,80,.35)}} 4208 @keyframes elmxCopyPop{0%{transform:scale(1)}35%{transform:scale(1.06)}100%{transform:scale(1)}} 4209 @keyframes elmxCheckPop{0%{transform:scale(.2) rotate(-25deg)}60%{transform:scale(1.25) rotate(8deg)}100%{transform:scale(1) rotate(0)}} 4210 @media (prefers-reduced-motion:reduce){.elmx-free-spinner{animation:none}.elmx-free-copied,.elmx-free-code,.elmx-free-clip .clip-copy,.elmx-free-clip .clip-check{transition:none}.elmx-free-code.copied,.elmx-free-code.copied .clip-check,.elmx-free-code.elmx-free-pulse{animation:none}} 4211 </style> 4212
4212<script id="elmx-free-js"> 4213 (function(){ 4214 var CFG = { ajaxurl: "https:\/\/www.enttec.com.au\/wp-admin\/admin-ajax.php", i18n: { 4215 generating: "Generating\u2026", 4216 unexpected: "Unexpected response.", 4217 generic: "Something went wrong. Please try again.", 4218 network: "Network error. Please try again." } }; 4219 // Set by the login-return CTA (?elmx_free=1): on landing we auto-generate the 4220 // licence if needed and try to auto-copy it. Browsers gate clipboard writes on a 4221 // fresh user gesture, so a page-load auto-copy can be refused (Chrome/Safari) , 4222 // when it is, we pulse the chip so one click finishes the job. 4223 var AUTO = /[?&]elmx_free=1(?:&|$)/.test(location.search); 4224 function copyText(t){ 4225 if(navigator.clipboard && navigator.clipboard.writeText){ return navigator.clipboard.writeText(t); } 4226 // Fallback for non-secure contexts (http) where the Clipboard API is absent. 4227 return new Promise(function(resolve, reject){ 4228 try{ 4229 var ta = document.createElement('textarea'); 4230 ta.value = t; ta.setAttribute('readonly',''); ta.style.position='fixed'; ta.style.top='-9999px'; 4231 document.body.appendChild(ta); ta.select(); 4232 var ok = document.execCommand('copy'); document.body.removeChild(ta); 4233 ok ? resolve() : reject(); 4234 }catch(e){ reject(e); } 4235 }); 4236 } 4237 // Green "Copied!" confirmation, held ~3.5s so a returning user can't miss it. 4238 function showCopied(clip){ 4239 clip.classList.remove('elmx-free-pulse'); 4240 clip.classList.add('copied'); 4241 var flag = clip.parentNode.querySelector('.elmx-free-copied'); 4242 if(flag){ flag.classList.add('show'); } 4243 clearTimeout(clip._copiedT); 4244 clip._copiedT = setTimeout(function(){ clip.classList.remove('copied'); if(flag){ flag.classList.remove('show'); } }, 3500); 4245 } 4246 function doCopy(clip){ 4247 var val = (clip.querySelector('.elmx-free-code-val')||{}).textContent || ''; 4248 return copyText(val.trim()).then(function(){ showCopied(clip); }); 4249 } 4250 document.addEventListener('click', function(e){ 4251 var clip = e.target.closest ? e.target.closest('.elmx-free-code[data-clip]') : null; 4252 if(clip){ doCopy(clip).catch(function(){}); return; } 4253 var btn = e.target.closest ? e.target.closest('.elmx-free-generate') : null; 4254 if(!btn){ return; } 4255 e.preventDefault(); 4256 if(btn.dataset.busy){ return; } 4257 btn.dataset.busy = '1'; 4258 btn.setAttribute('disabled','disabled'); 4259 var label = btn.querySelector('.elmx-free-btn-label'); 4260 var spin = btn.querySelector('.elmx-free-spinner'); 4261 var origLabel = label ? label.textContent : ''; 4262 if(label){ label.textContent = CFG.i18n.generating; } 4263 if(spin){ spin.hidden = false; } 4264 var cta = btn.closest('.elmx-free-cta'); 4265 var errBox = cta ? cta.querySelector('.elmx-free-error') : null; 4266 if(errBox){ errBox.hidden = true; } 4267 4268 var body = new URLSearchParams(); 4269 body.set('action','enttec_elmx_generate_free'); 4270 body.set('nonce', btn.getAttribute('data-nonce') || ''); 4271 4272 fetch(CFG.ajaxurl, { method:'POST', credentials:'same-origin', 4273 headers:{'Content-Type':'application/x-www-form-urlencoded'}, body: body.toString() }) 4274 .then(function(r){ return r.json().catch(function(){ return { success:false, data:{ message:CFG.i18n.unexpected } }; }); }) 4275 .then(function(res){ 4276 if(res && res.success && res.data && res.data.code){ 4277 var valEl = cta ? cta.querySelector('.elmx-free-code-val') : null; 4278 if(valEl){ valEl.textContent = res.data.code; } 4279 // Reveal the "you have a licence" cluster (the code chip); hide the generate button. 4280 var have = cta ? cta.querySelector('.elmx-free-have') : null; 4281 if(have){ have.hidden = false; } 4282 var primary = cta ? cta.querySelector('.elmx-free-generate--primary') : null; 4283 if(primary){ primary.hidden = true; } 4284 if(cta){ cta.setAttribute('data-elmx-free-state','has'); } 4285 // Reset the clicked button (restore its own label). 4286 delete btn.dataset.busy; 4287 btn.removeAttribute('disabled'); 4288 if(label){ label.textContent = origLabel; } 4289 if(spin){ spin.hidden = true; } 4290 // Login-return flow: hand the fresh code straight to the clipboard. 4291 if(AUTO){ autoCopy(cta ? cta.querySelector('.elmx-free-code[data-clip]') : null); } 4292 } else { 4293 var msg = (res && res.data && res.data.message) ? res.data.message : CFG.i18n.generic; 4294 if(errBox){ errBox.textContent = msg; errBox.hidden = false; } 4295 resetBtn(); 4296 } 4297 }) 4298 .catch(function(){ 4299 if(errBox){ errBox.textContent = CFG.i18n.network; errBox.hidden = false; } 4300 resetBtn(); 4301 }); 4302 4303 function resetBtn(){ 4304 delete btn.dataset.busy; 4305 btn.removeAttribute('disabled'); 4306 if(label){ label.textContent = origLabel; } 4307 if(spin){ spin.hidden = true; } 4308 } 4309 }); 4310 4311 // Try the auto-copy;
4311 if the browser refuses (no user gesture on a page load), 4312 // pulse the chip so a single click completes it and still lands the green tick. 4313 function autoCopy(clip){ 4314 if(!clip){ return; } 4315 doCopy(clip).catch(function(){ 4316 clip.classList.add('elmx-free-pulse'); 4317 setTimeout(function(){ clip.classList.remove('elmx-free-pulse'); }, 3500); 4318 }); 4319 } 4320 4321 // On return from login/registration (?elmx_free=1): if they already hold a 4322 // voucher, copy it now; otherwise mint it first (that click-free fetch is fine), 4323 // and the generate-success handler above auto-copies once the code is in. 4324 if(AUTO){ 4325 var cta = document.querySelector('.elmx-free-cta[data-elmx-free-state]'); 4326 if(cta){ 4327 var state = cta.getAttribute('data-elmx-free-state'); 4328 if(state === 'has'){ 4329 autoCopy(cta.querySelector('.elmx-free-code[data-clip]')); 4330 } else if(state === 'ready'){ 4331 var gen = cta.querySelector('.elmx-free-generate'); 4332 if(gen){ gen.click(); } 4333 } 4334 } 4335 } 4336 })(); 4337 </script>
4337 4338
4338<script> 4339 jQuery(document).ready(function($) { 4340 $('#redirect-message, .redirect_message_select').remove(); 4341 var pageUrlFromPhp = '/store-policy/'; 4342 var siteLocation = 'au'; 4343 4344 // The cross-region redirect is decided early in <head> 4345 // (window.__enttecGeoCheck). Here we reuse that same result, no second 4346 // request, only for the legacy popup / same-region country picker. 4347 (window.__enttecGeoCheck || Promise.resolve(null)).then(function (d) { 4348 if (!d) { return; } 4349 // Just arrived via an auto-redirect, or the head already handled the 4350 // cross-region redirect: nothing to render here. 4351 if (window.ENTTEC_ARRIVED_VIA_REDIRECT) { return; } 4352 // (EU/EEA visitors are the exception: ask_first means the head did NOT 4353 // redirect, and redirect_html carries their consent popup.) 4354 if (window.ENTTEC_AUTOREDIRECT && !window.ENTTEC_LOGGED_IN 4355 && d.switch_region && d.redirect_url && !d.ask_first) { return; } 4356 4357 // Same-region currency/language switch, or auto-redirect off/logged-in. 4358 if (d.redirect_html) { 4359 $('body').append(d.redirect_html); 4360 } 4361 if (d.locations_html) { 4362 // SCOPED TO WHAT WE JUST APPENDED, never $(".country_selectbox"). 4363 // Un-scoped, this re-initialised every country picker on the page, 4364 // and select2 4.x destroys the previous instance when it builds a 4365 // new one, which stripped the dark styling class off the picker 4366 // inside the contact dialog (enttec-contact-popup). This branch only 4367 // runs for an out-of-region visitor, so the breakage was invisible 4368 // to anyone testing from the right country. 4369 var $locations = $(d.locations_html); 4370 $('body').append($locations); 4371 var $locSelect = $locations.filter('.country_selectbox') 4372 .add($locations.find('.country_selectbox')); 4373 $locSelect.select2(); 4374 $locSelect.on('select2:select', function (e) { 4375 var data = e.params.data; 4376 let url = data.element.dataset.url; 4377 if(url !== "" && window.location.href !== url){ 4378 window.location.href = url; 4379 } 4380 }); 4381 } 4382 }); 4383 4384 $('.free-download-section').appendTo('.product-info-area'); 4385 4386 }); 4387 4388 4389</script>
4389 4390</body> 4391 4392</html> 4393 4394<!-- Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com --> 4395<!-- Cached by WP-Optimize (gzip) - https://teamupdraft.com/wp-optimize/ - Last modified: October 6, 2026 4:37 am (Australia/Melbourne UTC:11) -->
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.