{"id":3306,"date":"2026-07-02T18:15:31","date_gmt":"2026-07-02T16:15:31","guid":{"rendered":"https:\/\/leyton.majjane.agency\/be\/contact\/"},"modified":"2026-07-03T08:48:39","modified_gmt":"2026-07-03T06:48:39","slug":"contact-us","status":"publish","type":"page","link":"https:\/\/leyton.majjane.agency\/be\/contact-us\/","title":{"rendered":"Contact us"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3306\" class=\"elementor elementor-3306\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-66775c40 e-con-full e-flex e-con e-parent\" data-id=\"66775c40\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-48361e07 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"48361e07\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Talk to our <span>experts<\/span><\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-65adfe53 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"65adfe53\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Whether you&#8217;re ready to make a claim, or simply exploring your options, we&#8217;d love to hear from you! Get in touch and discover how we can help your business unlock valuable financial efficiencies.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-64ec5cd e-flex e-con-boxed e-con e-parent\" data-id=\"64ec5cd\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-512d961 elementor-widget elementor-widget-heading\" data-id=\"512d961\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Book a free consultation<\/h2>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a756447 e-con-full e-flex e-con e-child\" data-id=\"a756447\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-638b4c6 elementor-widget elementor-widget-html\" data-id=\"638b4c6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"my-custom-calendly\" style=\"min-width:320px; width:100% !important; height:700px; padding:0 !important;\"><\/div>\n\n<script type=\"text\/javascript\" src=\"https:\/\/assets.calendly.com\/assets\/external\/widget.js\" async><\/script>\n\n<script>\n  window.addEventListener('load', function() {\n    if (window.Calendly) {\n      const targetNode = document.getElementById('my-custom-calendly');\n      \n      if (targetNode) {\n        Calendly.initInlineWidget({\n          parentElement: targetNode,\n          url: 'https:\/\/calendly.com\/leyton_uk\/book-a-meeting?background_color=transparent&text_color=1A202C&primary_color=EC6839&hide_landing_page_details=1',\n          resize: true\n        });\n\n        setTimeout(function() {\n          var iframe = targetNode.querySelector('iframe');\n          if (iframe) {\n            iframe.style.setProperty('width', '100%', 'important');\n            iframe.style.setProperty('min-width', '100%', 'important');\n            iframe.removeAttribute('width');\n          }\n        }, 2000);\n      }\n    }\n  });\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-25b4d8d elementor-widget__width-initial elementor-hidden-mobile elementor-widget elementor-widget-button\" data-id=\"25b4d8d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Privacy policy<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-49b74376 e-flex e-con-boxed e-con e-parent\" data-id=\"49b74376\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bbcba4c elementor-widget elementor-widget-heading\" data-id=\"bbcba4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Make an enquiry<\/h2>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3a7e8eb0 e-grid e-con-full e-con e-child\" data-id=\"3a7e8eb0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-74dce1a0 e-con-full is-dark e-flex e-con e-child\" data-id=\"74dce1a0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-37460d74 elementor-widget elementor-widget-text-editor\" data-id=\"37460d74\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Contact us<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-525a6689 elementor-widget elementor-widget-heading\" data-id=\"525a6689\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">We're here to help!<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2767292a elementor-widget elementor-widget-text-editor\" data-id=\"2767292a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Complete our form and a member of our team will be in touch shortly to assist with your enquiry.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e45cd4a elementor-widget elementor-widget-html\" data-id=\"e45cd4a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--<iframe -->\n<!--    src=\"https:\/\/go-uk.leyton.com\/l\/1089512\/2026-05-21\/qx4dck\" -->\n<!--    width=\"100%\" -->\n<!--    height=\"850px\" -->\n<!--    frameborder=\"0\"-->\n<!--    style=\"border: none; width: 100%;\">-->\n<!--<\/iframe>-->\n\n<iframe \n    id=\"pardot-iframe\"\n    src=\"https:\/\/go-uk.leyton.com\/l\/1089512\/2026-05-21\/qx4dck\" \n    width=\"100%\" \n    frameborder=\"0\"\n    style=\"border: none; width: 100%; height: 850px;\">\n<\/iframe>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-683caa3 e-flex e-con-boxed e-con e-parent\" data-id=\"683caa3\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-7a542f7 e-grid e-con-boxed e-con e-child\" data-id=\"7a542f7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4859b5e e-con-full e-flex e-con e-child\" data-id=\"4859b5e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-43faed1 liquid-glass elementor-widget elementor-widget-text-editor\" data-id=\"43faed1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Global Funding Intelligence<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e395fb2 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"e395fb2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span data-metadata=\"&lt;!--(figmeta)eyJmaWxlS2V5IjoiM1VxbTZZZkd6YmVkT1V5eGhVa3oyZiIsInBhc3RlSUQiOjg5MDY0MzQ3NywiZGF0YVR5cGUiOiJzY2VuZSJ9Cg==(\/figmeta)--&gt;\"><\/span>One partner across all your markets.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5b6e4f0 elementor-widget__width-initial elementor-widget elementor-widget-html\" data-id=\"5b6e4f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n  .gfi-select {\n    position: relative;\n    width: 100%;\n    max-width: 460px;\n    font-family: inherit;\n    user-select: none;\n  }\n\n  \/* Keep native select active for data layers but hide visually *\/\n  .gfi-select select {\n    position: absolute;\n    width: 1px; height: 1px;\n    padding: 0; margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0;\n    opacity: 0;\n    pointer-events: none;\n  }\n\n  .gfi-select__trigger {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding: 18px 28px;\n    border: 1.5px solid #CCC;\n    border-radius: 999px;\n    background: #fff;\n    cursor: pointer;\n    box-sizing: border-box;\n    \/* Updated Typography Style *\/\n    color: #757575;\n    font-family: Montserrat, sans-serif;\n    font-size: 19.8px;\n    font-style: normal;\n    font-weight: 400;\n    line-height: normal;\n    transition: border-color .2s ease;\n  }\n  .gfi-select__trigger:hover,\n  .gfi-select__trigger:focus { \n    border-color: #CCC;\n    outline: none; \n  }\n  .gfi-select.is-open .gfi-select__trigger {\n    border-color: #CCC;\n  }\n  .gfi-select__trigger.is-placeholder { \n    \/* Maintained requested style on placeholder status *\/\n    color: #757575; \n  } \n\n  .gfi-select__chevron {\n    width: 12px; height: 12px;\n    border-right: 2px solid #757575;\n    border-bottom: 2px solid #757575;\n    transform: rotate(45deg);\n    margin-top: -5px;\n    transition: transform .25s ease;\n  }\n  .gfi-select.is-open .gfi-select__chevron {\n    transform: rotate(-135deg); margin-top: 3px;\n  }\n\n  .gfi-select__list {\n    position: absolute;\n    top: calc(100% + 8px);\n    left: 0; right: 0;\n    background: #fff;\n    border: 1px solid #e5e9ef;\n    border-radius: 14px;\n    box-shadow: 0 12px 32px rgba(10, 37, 64, .12);\n    max-height: 320px;\n    overflow-y: auto;\n    padding: 12px 0;\n    margin: 0;\n    list-style: none;\n    z-index: 999;\n    opacity: 0;\n    transform: translateY(-6px);\n    pointer-events: none;\n    transition: opacity .18s ease, transform .18s ease;\n  }\n  .gfi-select.is-open .gfi-select__list {\n    opacity: 1; transform: translateY(0); pointer-events: auto;\n  }\n\n  .gfi-select__list li {\n    padding: 12px 28px;\n    cursor: pointer;\n    transition: background .15s ease;\n    \/* Updated Typography Style for options list *\/\n    color: #757575;\n    font-family: Montserrat, sans-serif;\n    font-size: 19.8px;\n    font-style: normal;\n    font-weight: 400;\n    line-height: normal;\n  }\n  .gfi-select__list li:hover,\n  .gfi-select__list li.is-active { background: #eef2f7; }\n  .gfi-select__list li[data-placeholder] { display: none; }\n\n  @media (max-width: 600px) {\n    .gfi-select__trigger { padding: 16px 22px; font-size: 17px; }\n    .gfi-select__list li { padding: 12px 22px; font-size: 17px; }\n  }\n<\/style>\n\n<div class=\"gfi-select\">\n  <select name=\"country\" data-gfi=\"select\" aria-label=\"Select a country\">\n    <option value=\"\">Select a country<\/option>\n  <\/select>\n<\/div>\n\n<script>\n(function () {\n  var wrap = document.querySelector('.gfi-select');\n  if (!wrap) return;\n\n  var select = wrap.querySelector('select');\n\n  function initCustomUi() {\n    if (select.options.length <= 1) {\n      setTimeout(initCustomUi, 50);\n      return;\n    }\n\n    if (wrap.dataset.enhanced) return;\n    wrap.dataset.enhanced = '1';\n\n    var current = select.options[select.selectedIndex];\n\n    var trigger = document.createElement('div');\n    trigger.className = 'gfi-select__trigger' + (!select.value ? ' is-placeholder' : '');\n    trigger.setAttribute('role', 'combobox');\n    trigger.setAttribute('aria-haspopup', 'listbox');\n    trigger.setAttribute('aria-expanded', 'false');\n    trigger.setAttribute('tabindex', '0');\n    trigger.innerHTML =\n      '<span class=\"gfi-select__label\">' + (current ? current.text : 'Select a country') + '<\/span>' +\n      '<span class=\"gfi-select__chevron\" aria-hidden=\"true\"><\/span>';\n\n    var list = document.createElement('ul');\n    list.className = 'gfi-select__list';\n    list.setAttribute('role', 'listbox');\n\n    function buildListItems() {\n      list.innerHTML = '';\n      Array.from(select.options).forEach(function (opt, i) {\n        var li = document.createElement('li');\n        li.textContent = opt.text;\n        li.dataset.value = opt.value;\n        if (opt.value === '') li.dataset.placeholder = '1';\n        if (i === select.selectedIndex && opt.value !== '') li.classList.add('is-active');\n        list.appendChild(li);\n      });\n    }\n    buildListItems();\n\n    wrap.appendChild(trigger);\n    wrap.appendChild(list);\n\n    var label = trigger.querySelector('.gfi-select__label');\n\n    function setOpen(open) {\n      var willOpen = (typeof open === 'boolean') ? open : !wrap.classList.contains('is-open');\n      wrap.classList.toggle('is-open', willOpen);\n      trigger.setAttribute('aria-expanded', willOpen);\n    }\n\n    function syncUIFromSelect() {\n      var opt = select.options[select.selectedIndex];\n      label.textContent = opt ? opt.text : '';\n      trigger.classList.toggle('is-placeholder', !select.value);\n      list.querySelectorAll('li').forEach(function (li) {\n        li.classList.toggle('is-active', li.dataset.value === select.value && select.value !== '');\n      });\n    }\n\n    function pick(value) {\n      select.value = value;\n      select.dispatchEvent(new Event('input',  { bubbles: true }));\n      select.dispatchEvent(new Event('change', { bubbles: true }));\n      syncUIFromSelect();\n    }\n\n    trigger.addEventListener('click', function (e) { e.stopPropagation(); setOpen(); });\n    trigger.addEventListener('keydown', function (e) {\n      if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); setOpen(); }\n      if (e.key === 'Escape') setOpen(false);\n    });\n\n    list.addEventListener('click', function (e) {\n      var li = e.target.closest('li');\n      if (!li || li.dataset.placeholder) return;\n      pick(li.dataset.value);\n      setOpen(false);\n    });\n\n    select.addEventListener('change', syncUIFromSelect);\n    \n    var observer = new MutationObserver(function() {\n      buildListItems();\n      syncUIFromSelect();\n    });\n    observer.observe(select, { childList: true, characterData: true, subtree: true });\n\n    document.addEventListener('click', function (e) {\n      if (!wrap.contains(e.target)) setOpen(false);\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initCustomUi);\n  } else {\n    initCustomUi();\n  }\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b8d3248 elementor-widget elementor-widget-text-editor\" data-id=\"b8d3248\" data-element_type=\"widget\" data-e-type=\"widget\" data-gfi=\"description\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Operating globally, our group has multidisciplinary expertise on a global scale that allows us to have a\u2028local approach and a global vision that can respond to any type of challenge.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d28f7d8 e-con-full e-flex e-con e-child\" data-id=\"d28f7d8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-692d71c e-con-full e-flex e-con e-child\" data-id=\"692d71c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-25b2649 elementor-widget elementor-widget-text-editor\" data-id=\"25b2649\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>20<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3c99b90 elementor-widget elementor-widget-text-editor\" data-id=\"3c99b90\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Countries<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e4dc646 e-con-full e-flex e-con e-child\" data-id=\"e4dc646\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d41c4d9 elementor-widget elementor-widget-text-editor\" data-id=\"d41c4d9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>+40<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4e6c8eb elementor-widget elementor-widget-text-editor\" data-id=\"4e6c8eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Offices<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-33fb8a7 fx-flood-icon elementor-widget elementor-widget-button\" data-id=\"33fb8a7\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"unique-location-cta\" data-gfi=\"button\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"\/be\/locations\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"><path d=\"M3.23438 7.75781L12.2849 7.75781\" stroke=\"#012D48\" stroke-width=\"1.29293\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><path d=\"M7.75781 3.2323L12.2831 7.75755L7.75781 12.2828\" stroke=\"#012D48\" stroke-width=\"1.29293\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Our locations\u00a0<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3db8a22 elementor-widget elementor-widget-html\" data-id=\"3db8a22\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\r\n  GFI GLOBE \u2014 Elementor HTML Widget \u2014 Three.js r128\r\n  ============================================================ -->\r\n\r\n<link rel=\"preload\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/world-atlas@2\/land-110m.json\"\r\n      as=\"fetch\" crossorigin=\"anonymous\">\r\n\r\n<style>\r\n  [data-gfi=\"globe-wrap\"] {\r\n    position: relative;\r\n    width: 100%;\r\n    height: 100%;\r\n    min-height: 550px;\r\n    overflow: hidden;\r\n  }\r\n  @media (max-width: 767px) {\r\n    [data-gfi=\"globe-wrap\"] {\r\n      min-height: 0;\r\n      height: auto;\r\n      aspect-ratio: 1 \/ 1;\r\n    }\r\n  }\r\n  @media (max-width: 768px) and (min-width: 500px) {\r\n  .gfi-select {\r\n    margin-inline: auto !important;\r\n  }\r\n}\r\n<\/style>\r\n\r\n<div data-gfi=\"globe-wrap\">\r\n  <div data-gfi=\"canvas-mount\"\r\n       style=\"position:absolute;inset:0;width:100%;height:100%;cursor:grab;\"><\/div>\r\n  <canvas data-gfi=\"label-canvas\"\r\n          style=\"position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;\"><\/canvas>\r\n  <div data-gfi=\"tooltip\"\r\n       style=\"position:absolute;pointer-events:none;opacity:0;transition:opacity .15s;\r\n              z-index:10;white-space:nowrap;background:rgba(13,43,78,.9);color:#fff;\r\n              font:500 11px\/1 'DM Sans',sans-serif;padding:1rem;border-radius:2px;\"><\/div>\r\n<\/div>\r\n\r\n<script async src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r128\/three.min.js\"><\/script>\r\n<script>\r\n(function (win, doc) {\r\n  'use strict';\r\n\r\n  var R          = 1.9;\r\n  var CAM_Z      = 6.5;\r\n  var FOV        = 39;\r\n  var SPIN_SPEED = 0.10;\r\n  var DRAG_SPD   = 0.005;\r\n  var FLY_MS     = 950;\r\n  var PIN_DEF    = 0x0d2b4e;\r\n  var PIN_ACT    = 0x0078d4;\r\n  var TILT_X     = 0.15;\r\n  var LAND_URL   = 'https:\/\/cdn.jsdelivr.net\/npm\/world-atlas@2\/land-110m.json';\r\n\r\n  function computeCamZ(w, h) {\r\n    var aspect    = w \/ h;\r\n    var vFovRad   = FOV * Math.PI \/ 180;\r\n    var hFovRad   = 2 * Math.atan(Math.tan(vFovRad \/ 2) * aspect);\r\n    var zForVert  = R \/ Math.sin(vFovRad \/ 2);\r\n    var zForHoriz = R \/ Math.sin(hFovRad \/ 2);\r\n    var margin    = w < 768 ? 1.02 : 1.08;\r\n    return Math.max(CAM_Z, Math.max(zForVert, zForHoriz) * margin);\r\n  }\r\n\r\n  function sanitiseUrl(raw) {\r\n    if (typeof raw !== 'string' || !raw.trim()) return '';\r\n    try { var u = new URL(raw.trim()); return u.protocol === 'https:' ? u.href : ''; }\r\n    catch (_) { return ''; }\r\n  }\r\n\r\n  function sanitiseOffice(raw) {\r\n    if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return null;\r\n    var city = typeof raw.city === 'string' ? raw.city.trim().slice(0, 120) : '';\r\n    var text = typeof raw.text === 'string' ? raw.text.trim().slice(0, 600) : '';\r\n    var lat  = typeof raw.lat === 'number' && isFinite(raw.lat) && raw.lat >= -90  && raw.lat <= 90  ? raw.lat  : null;\r\n    var lng  = typeof raw.lng === 'number' && isFinite(raw.lng) && raw.lng >= -180 && raw.lng <= 180 ? raw.lng  : null;\r\n    if (!city || lat === null || lng === null) return null;\r\n    return { city: city, text: text, lat: lat, lng: lng, link: sanitiseUrl(raw.link) };\r\n  }\r\n\r\n  function loadOffices() {\r\n    if (!Array.isArray(win.GFI_OFFICES)) return [];\r\n    var out = [];\r\n    for (var i = 0; i < win.GFI_OFFICES.length; i++) {\r\n      var o = sanitiseOffice(win.GFI_OFFICES[i]);\r\n      if (o) out.push(o);\r\n    }\r\n    return out;\r\n  }\r\n\r\n  function resolveEl(attr, selector) {\r\n    var wrap = doc.querySelector('[data-gfi=\"' + attr + '\"]');\r\n    if (!wrap) return null;\r\n    if (!selector) return wrap;\r\n    if (wrap.matches(selector)) return wrap;\r\n    return wrap.querySelector(selector) || wrap;\r\n  }\r\n\r\n  function writeText(el, str) {\r\n    if (!el) return;\r\n    var p = el.querySelector('p');\r\n    (p || el).textContent = typeof str === 'string' ? str : '';\r\n  }\r\n\r\n  function wireButton(el, url) {\r\n    if (!el) return;\r\n    el.onclick = null;\r\n    el.style.pointerEvents = url ? 'auto' : 'none';\r\n    el.style.opacity       = url ? '1'    : '0.4';\r\n    if (!url) return;\r\n    var safe = url;\r\n    el.onclick = function (e) { e.preventDefault(); win.open(safe, '_blank', 'noopener,noreferrer'); };\r\n  }\r\n\r\n  function ll2v3(lat, lng, r) {\r\n    var phi   = lat * Math.PI \/ 180;\r\n    var theta = -lng * Math.PI \/ 180;\r\n    return new THREE.Vector3(\r\n      r * Math.cos(phi) * Math.cos(theta),\r\n      r * Math.sin(phi),\r\n      r * Math.cos(phi) * Math.sin(theta)\r\n    );\r\n  }\r\n\r\n  function pointInRing(lat, lng, ring) {\r\n    var x = lng, y = lat, inside = false;\r\n    for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) {\r\n      var xi = ring[i][0], yi = ring[i][1];\r\n      var xj = ring[j][0], yj = ring[j][1];\r\n      if ((yi > y) !== (yj > y) &&\r\n          x < (xj - xi) * (y - yi) \/ (yj - yi) + xi) {\r\n        inside = !inside;\r\n      }\r\n    }\r\n    return inside;\r\n  }\r\n\r\n  function pointInGeometry(lat, lng, geom) {\r\n    var coords = geom.coordinates;\r\n    if (geom.type === 'Polygon') {\r\n      if (!pointInRing(lat, lng, coords[0])) return false;\r\n      for (var h = 1; h < coords.length; h++) {\r\n        if (pointInRing(lat, lng, coords[h])) return false;\r\n      }\r\n      return true;\r\n    }\r\n    if (geom.type === 'MultiPolygon') {\r\n      for (var p = 0; p < coords.length; p++) {\r\n        if (!pointInRing(lat, lng, coords[p][0])) continue;\r\n        var hole = false;\r\n        for (var h2 = 1; h2 < coords[p].length; h2++) {\r\n          if (pointInRing(lat, lng, coords[p][h2])) { hole = true; break; }\r\n        }\r\n        if (!hole) return true;\r\n      }\r\n    }\r\n    return false;\r\n  }\r\n\r\n  function decodeTopo(topology) {\r\n    var key  = Object.keys(topology.objects)[0];\r\n    var obj  = topology.objects[key];\r\n    var arcs = topology.arcs;\r\n    var tf   = topology.transform;\r\n\r\n    function decodeArc(idx) {\r\n      var rev = idx < 0; if (rev) idx = ~idx;\r\n      var arc = arcs[idx], coords = [], x = 0, y = 0;\r\n      for (var i = 0; i < arc.length; i++) {\r\n        x += arc[i][0]; y += arc[i][1];\r\n        coords.push([\r\n          tf ? x * tf.scale[0] + tf.translate[0] : arc[i][0],\r\n          tf ? y * tf.scale[1] + tf.translate[1] : arc[i][1]\r\n        ]);\r\n      }\r\n      if (rev) coords.reverse();\r\n      return coords;\r\n    }\r\n\r\n    function decodeRing(indices) {\r\n      var coords = [];\r\n      for (var i = 0; i < indices.length; i++) {\r\n        var a = decodeArc(indices[i]);\r\n        for (var j = (i > 0 ? 1 : 0); j < a.length; j++) coords.push(a[j]);\r\n      }\r\n      return coords;\r\n    }\r\n\r\n    function decodeGeom(g) {\r\n      if (g.type === 'Polygon') return { type: 'Polygon', coordinates: g.arcs.map(decodeRing) };\r\n      if (g.type === 'MultiPolygon') return { type: 'MultiPolygon', coordinates: g.arcs.map(function (p) { return p.map(decodeRing); }) };\r\n      if (g.type === 'GeometryCollection') return g.geometries.map(decodeGeom);\r\n      return g;\r\n    }\r\n\r\n    return decodeGeom(obj);\r\n  }\r\n\r\n  function computeBBox(geom) {\r\n    var minLat = 90, maxLat = -90, minLng = 180, maxLng = -180;\r\n    function scanRing(ring) {\r\n      for (var i = 0; i < ring.length; i++) {\r\n        var lng = ring[i][0], lat = ring[i][1];\r\n        if (lat < minLat) minLat = lat;\r\n        if (lat > maxLat) maxLat = lat;\r\n        if (lng < minLng) minLng = lng;\r\n        if (lng > maxLng) maxLng = lng;\r\n      }\r\n    }\r\n    var coords = geom.coordinates;\r\n    if (geom.type === 'Polygon') {\r\n      for (var r = 0; r < coords.length; r++) scanRing(coords[r]);\r\n    } else if (geom.type === 'MultiPolygon') {\r\n      for (var p = 0; p < coords.length; p++)\r\n        for (var r2 = 0; r2 < coords[p].length; r2++) scanRing(coords[p][r2]);\r\n    }\r\n    return { minLat: minLat, maxLat: maxLat, minLng: minLng, maxLng: maxLng };\r\n  }\r\n\r\n  var booted = false;\r\n\r\n  function boot() {\r\n    if (booted) return;\r\n    if (typeof THREE === 'undefined') { setTimeout(boot, 50); return; }\r\n    var mount = doc.querySelector('[data-gfi=\"canvas-mount\"]');\r\n    if (!mount || !mount.clientWidth || !mount.clientHeight) { setTimeout(boot, 80); return; }\r\n    booted = true;\r\n\r\n    fetch(LAND_URL)\r\n      .then(function (r) { return r.json(); })\r\n      .then(function (topo) {\r\n        var land = decodeTopo(topo);\r\n        var geometries = Array.isArray(land) ? land : [land];\r\n        var bboxes = [];\r\n        for (var g = 0; g < geometries.length; g++) {\r\n          bboxes.push(computeBBox(geometries[g]));\r\n        }\r\n        function isLand(lat, lng) {\r\n          for (var g = 0; g < geometries.length; g++) {\r\n            var bb = bboxes[g];\r\n            if (lat < bb.minLat || lat > bb.maxLat || lng < bb.minLng || lng > bb.maxLng) continue;\r\n            if (pointInGeometry(lat, lng, geometries[g])) return true;\r\n          }\r\n          return false;\r\n        }\r\n        run(loadOffices(), mount, isLand);\r\n      });\r\n  }\r\n\r\n  win.addEventListener('load', function () {\r\n    var mount = doc.querySelector('[data-gfi=\"globe-wrap\"]');\r\n    if (!mount) return;\r\n    if ('IntersectionObserver' in win) {\r\n      var io = new IntersectionObserver(function (entries) {\r\n        if (entries[0].isIntersecting) {\r\n          io.disconnect();\r\n          requestAnimationFrame(boot);\r\n        }\r\n      }, { rootMargin: '300px' });\r\n      io.observe(mount);\r\n    } else {\r\n      requestAnimationFrame(boot);\r\n    }\r\n  });\r\n\r\n  function run(offices, mount, isLand) {\r\n\r\n    var elSelect = resolveEl('select', 'select');\r\n    var elDesc   = resolveEl('description', '.elementor-text-editor, p, span, div');\r\n    var elBtn    = resolveEl('button', 'a.elementor-button, a, button');\r\n    var elTip    = doc.querySelector('[data-gfi=\"tooltip\"]');\r\n\r\n    if (elSelect) {\r\n      elSelect.querySelectorAll('[data-gfi-opt]').forEach(function (o) { o.remove(); });\r\n      offices.forEach(function (o, i) {\r\n        var opt = doc.createElement('option');\r\n        opt.value = String(i); opt.textContent = o.city;\r\n        opt.setAttribute('data-gfi-opt', '1');\r\n        elSelect.appendChild(opt);\r\n      });\r\n    }\r\n\r\n    var W = mount.clientWidth, H = mount.clientHeight;\r\n    var currentCamZ = computeCamZ(W, H);\r\n    var scene  = new THREE.Scene();\r\n    var camera = new THREE.PerspectiveCamera(FOV, W \/ H, 0.1, 100);\r\n    camera.position.set(0, 0, currentCamZ);\r\n\r\n    var renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });\r\n    var maxDPR = win.innerWidth < 768 ? 1.5 : 2;\r\n    renderer.setPixelRatio(Math.min(devicePixelRatio, maxDPR));\r\n    renderer.setSize(W, H);\r\n    renderer.setClearColor(0, 0);\r\n    mount.appendChild(renderer.domElement);\r\n    renderer.domElement.style.position = 'relative';\r\n    renderer.domElement.style.zIndex   = '1';\r\n\r\n    var shadowCanvas = doc.createElement('canvas');\r\n    shadowCanvas.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;';\r\n    mount.insertBefore(shadowCanvas, renderer.domElement);\r\n\r\n    function drawShadowRing() {\r\n      var w = mount.clientWidth, h = mount.clientHeight;\r\n      var dpr = Math.min(devicePixelRatio, maxDPR);\r\n      shadowCanvas.width  = w * dpr;\r\n      shadowCanvas.height = h * dpr;\r\n      var ctx = shadowCanvas.getContext('2d');\r\n      ctx.scale(dpr, dpr);\r\n      var globePixelR = (h \/ 2) * (R \/ currentCamZ) \/ Math.tan(FOV * Math.PI \/ 360);\r\n      var cx = w \/ 2, cy = h \/ 2;\r\n      var innerR = globePixelR * 0.88;\r\n      var outerR = globePixelR * 1.22;\r\n      var grad = ctx.createRadialGradient(cx, cy, innerR, cx, cy, outerR);\r\n      grad.addColorStop(0.0,  'rgba(170,185,200, 0)');\r\n      grad.addColorStop(0.3,  'rgba(170,185,200, 0.18)');\r\n      grad.addColorStop(0.5,  'rgba(175,190,205, 0.30)');\r\n      grad.addColorStop(0.7,  'rgba(185,195,210, 0.20)');\r\n      grad.addColorStop(0.85, 'rgba(195,205,215, 0.08)');\r\n      grad.addColorStop(1.0,  'rgba(200,210,220, 0)');\r\n      ctx.beginPath();\r\n      ctx.arc(cx, cy, outerR, 0, Math.PI * 2);\r\n      ctx.fillStyle = grad;\r\n      ctx.fill();\r\n    }\r\n    drawShadowRing();\r\n\r\n    new ResizeObserver(function () {\r\n      var w = mount.clientWidth, h = mount.clientHeight;\r\n      if (!w || !h) return;\r\n      renderer.setSize(w, h);\r\n      camera.aspect = w \/ h;\r\n      currentCamZ = computeCamZ(w, h);\r\n      camera.position.z = currentCamZ;\r\n      camera.updateProjectionMatrix();\r\n      drawShadowRing();\r\n    }).observe(mount);\r\n\r\n    scene.add(new THREE.AmbientLight(0xffffff, 1.5));\r\n    var sun = new THREE.DirectionalLight(0xffffff, 0.15);\r\n    sun.position.set(-2, 3, 5); scene.add(sun);\r\n\r\n    var G = new THREE.Group();\r\n    scene.add(G);\r\n\r\n    var globeVert = [\r\n      'varying vec3 vNormal;',\r\n      'varying vec3 vViewDir;',\r\n      'void main() {',\r\n      '  vNormal = normalize(normalMatrix * normal);',\r\n      '  vec4 mvPos = modelViewMatrix * vec4(position, 1.0);',\r\n      '  vViewDir = normalize(-mvPos.xyz);',\r\n      '  gl_Position = projectionMatrix * mvPos;',\r\n      '}'\r\n    ].join('\\n');\r\n\r\n    var globeFrag = [\r\n      'varying vec3 vNormal;',\r\n      'varying vec3 vViewDir;',\r\n      'void main() {',\r\n      '  float facing = clamp(dot(vNormal, vViewDir), 0.0, 1.0);',\r\n      '  float rim = 1.0 - facing;',\r\n      '  rim = rim * rim;',\r\n      '  vec3 centerCol = vec3(0.97, 0.975, 0.98);',\r\n      '  vec3 edgeCol   = vec3(0.82, 0.84, 0.87);',\r\n      '  gl_FragColor = vec4(mix(centerCol, edgeCol, rim), 1.0);',\r\n      '}'\r\n    ].join('\\n');\r\n\r\n    G.add(new THREE.Mesh(\r\n      new THREE.SphereGeometry(R, 64, 64),\r\n      new THREE.ShaderMaterial({ vertexShader: globeVert, fragmentShader: globeFrag })\r\n    ));\r\n\r\n    var DOT_R = 0.010;\r\n    var ROWS = 80, BASE_COLS = 160;\r\n\r\n    var gridCells = [];\r\n    for (var ri = 0; ri <= ROWS; ri++) {\r\n      var dlat = 90 - ri * (180 \/ ROWS);\r\n      var nc = Math.round(BASE_COLS * Math.cos(dlat * Math.PI \/ 180)) || 1;\r\n      for (var ci = 0; ci < nc; ci++) {\r\n        gridCells.push({ lat: dlat, lng: -180 + ci * (360 \/ nc) });\r\n      }\r\n    }\r\n\r\n    var dotPositions = [];\r\n    var CHUNK = 600;\r\n    var cursor = 0;\r\n\r\n    function processChunk() {\r\n      var end = Math.min(cursor + CHUNK, gridCells.length);\r\n      for (var i = cursor; i < end; i++) {\r\n        var c = gridCells[i];\r\n        if (!isLand(c.lat, c.lng)) continue;\r\n        var dv = ll2v3(c.lat, c.lng, R + 0.004);\r\n        dotPositions.push(dv.x, dv.y, dv.z);\r\n      }\r\n      cursor = end;\r\n      if (cursor < gridCells.length) {\r\n        requestAnimationFrame(processChunk);\r\n      } else {\r\n        buildDotMesh();\r\n      }\r\n    }\r\n\r\n    function buildDotMesh() {\r\n      var dotCount = dotPositions.length \/ 3;\r\n      var dotDummy = new THREE.Object3D();\r\n      var dotGeo   = new THREE.CircleGeometry(DOT_R, 8);\r\n      var dotMat   = new THREE.MeshBasicMaterial({ color: 0x152d45, side: THREE.DoubleSide });\r\n      var dotMesh  = new THREE.InstancedMesh(dotGeo, dotMat, dotCount);\r\n      for (var di = 0; di < dotCount; di++) {\r\n        var dx = dotPositions[di*3], dy = dotPositions[di*3+1], dz = dotPositions[di*3+2];\r\n        dotDummy.position.set(dx, dy, dz);\r\n        dotDummy.lookAt(dx * 2, dy * 2, dz * 2);\r\n        dotDummy.updateMatrix();\r\n        dotMesh.setMatrixAt(di, dotDummy.matrix);\r\n      }\r\n      dotMesh.instanceMatrix.needsUpdate = true;\r\n      G.add(dotMesh);\r\n    }\r\n\r\n    processChunk();\r\n\r\n    var pins = [];\r\n    var hitDots = []; \/\/ larger invisible hit-area spheres for easier clicking\r\n\r\n    offices.forEach(function (o) {\r\n      var pg   = new THREE.Group();\r\n      var dMat = new THREE.MeshBasicMaterial({ color: PIN_DEF });\r\n      var rMat = new THREE.MeshBasicMaterial({ color: PIN_DEF, transparent: true, opacity: 0.45 });\r\n      var dot  = new THREE.Mesh(new THREE.SphereGeometry(0.046, 12, 12), dMat);\r\n      var ring = new THREE.Mesh(new THREE.TorusGeometry(0.075, 0.008, 8, 32), rMat);\r\n\r\n      \/\/ invisible larger hit-area sphere \u2014 easier to click\/tap\r\n      var hitMat = new THREE.MeshBasicMaterial({ color: 0xffffff, transparent: true, opacity: 0 });\r\n      var hitDot = new THREE.Mesh(new THREE.SphereGeometry(0.13, 12, 12), hitMat);\r\n\r\n      pg.add(dot); pg.add(ring); pg.add(hitDot);\r\n      var pos = ll2v3(o.lat, o.lng, R + 0.012);\r\n      pg.position.copy(pos);\r\n      pg.quaternion.setFromUnitVectors(new THREE.Vector3(0,1,0), pos.clone().normalize());\r\n      G.add(pg);\r\n      pins.push({ dot: dot, dMat: dMat, ring: ring, rMat: rMat });\r\n      hitDots.push(hitDot);\r\n    });\r\n\r\n    function drawLabel() {}\r\n\r\n    var hlIdx = null, flyAnim = null;\r\n\r\n    function setHighlight(idx) {\r\n      hlIdx = idx;\r\n      pins.forEach(function (p, i) {\r\n        var on = (i === idx);\r\n        p.dMat.color.setHex(on ? PIN_ACT : PIN_DEF);\r\n        p.rMat.color.setHex(on ? PIN_ACT : PIN_DEF);\r\n        p.rMat.opacity = on ? 0.85 : 0.45;\r\n        if (!on) p.ring.scale.setScalar(1);\r\n      });\r\n    }\r\n\r\n    function targetRotY(lng) { return (-lng * Math.PI \/ 180) - Math.PI \/ 2; }\r\n\r\n    function flyTo(idx) {\r\n      if (flyAnim) flyAnim.dead = true;\r\n      setHighlight(idx);\r\n      var tY = targetRotY(offices[idx].lng);\r\n      var tX = TILT_X;\r\n      var sY = G.rotation.y, sX = G.rotation.x;\r\n      var dY = tY - sY;\r\n      dY = dY - Math.round(dY \/ (2 * Math.PI)) * 2 * Math.PI;\r\n      tY = sY + dY;\r\n      var t0 = performance.now(), tok = { dead: false };\r\n      flyAnim = tok;\r\n      (function step(now) {\r\n        if (tok.dead) return;\r\n        var e = 1 - Math.pow(1 - Math.min((now - t0) \/ FLY_MS, 1), 3);\r\n        G.rotation.y = sY + (tY - sY) * e;\r\n        G.rotation.x = sX + (tX - sX) * e;\r\n        if (e < 1) {\r\n          requestAnimationFrame(step);\r\n        } else {\r\n          if (flyAnim === tok) flyAnim = null;\r\n        }\r\n      })(t0);\r\n    }\r\n\r\n    function selectOffice(idx) {\r\n      if (idx < 0 || idx >= offices.length) return;\r\n      wireButton(elBtn, offices[idx].link);\r\n      flyTo(idx);\r\n    }\r\n\r\n    function clearSelection() {\r\n      writeText(elDesc, ''); wireButton(elBtn, '');\r\n      setHighlight(null); hlIdx = null;\r\n      if (flyAnim) { flyAnim.dead = true; flyAnim = null; }\r\n    }\r\n\r\n    if (elSelect) {\r\n      elSelect.addEventListener('change', function () {\r\n        var v = parseInt(this.value, 10);\r\n        (Number.isInteger(v) && v >= 0 && v < offices.length) ? selectOffice(v) : clearSelection();\r\n      });\r\n    }\r\n\r\n    var drag = false, px = 0, py = 0, vx = 0, vy = 0;\r\n    mount.addEventListener('mousedown', function (e) { drag = true; px = e.clientX; py = e.clientY; vx = vy = 0; });\r\n    doc.addEventListener('mouseup', function () { drag = false; });\r\n    doc.addEventListener('mousemove', function (e) {\r\n      if (!drag) return;\r\n      vx = (e.clientY - py) * DRAG_SPD; vy = (e.clientX - px) * DRAG_SPD;\r\n      G.rotation.x += vx; G.rotation.y += vy;\r\n      px = e.clientX; py = e.clientY;\r\n    });\r\n    var pt = null;\r\n    mount.addEventListener('touchstart', function (e) { pt = e.touches[0]; vx = vy = 0; }, { passive: true });\r\n    mount.addEventListener('touchmove', function (e) {\r\n      if (!pt) return; var t = e.touches[0];\r\n      vx = (t.clientY - pt.clientY) * DRAG_SPD; vy = (t.clientX - pt.clientX) * DRAG_SPD;\r\n      G.rotation.x += vx; G.rotation.y += vy; pt = t;\r\n    }, { passive: true });\r\n    mount.addEventListener('touchend', function () { pt = null; }, { passive: true });\r\n    mount.addEventListener('wheel', function (e) { e.preventDefault(); }, { passive: false });\r\n\r\n    var rc = new THREE.Raycaster(), m2 = new THREE.Vector2();\r\n    function hitPin(evt) {\r\n      var rect = renderer.domElement.getBoundingClientRect();\r\n      m2.x =  ((evt.clientX - rect.left) \/ rect.width)  * 2 - 1;\r\n      m2.y = -((evt.clientY - rect.top)  \/ rect.height) * 2 + 1;\r\n      rc.setFromCamera(m2, camera);\r\n      var hits = rc.intersectObjects(hitDots);\r\n      return hits.length ? hitDots.indexOf(hits[0].object) : -1;\r\n    }\r\n\r\n    \/* \u2500\u2500 Tooltip text removed \u2014 cursor change kept \u2500\u2500 *\/\r\n    mount.addEventListener('mousemove', function (e) {\r\n      if (drag) { return; }\r\n      var i = hitPin(e);\r\n      if (i >= 0) {\r\n        mount.style.cursor = 'pointer';\r\n      } else {\r\n        mount.style.cursor = 'grab';\r\n      }\r\n    });\r\n\r\n    \/* \u2500\u2500 UPDATED CLICK HANDLER \u2014 prevents page scroll jump \u2500\u2500 *\/\r\n    mount.addEventListener('click', function (e) {\r\n      if (vx*vx + vy*vy > 0.0002) return;\r\n      var i = hitPin(e);\r\n      if (i >= 0) {\r\n        e.preventDefault();\r\n        e.stopPropagation();\r\n\r\n        if (elSelect) elSelect.value = String(i);\r\n        selectOffice(i);\r\n\r\n        var customWrap   = document.querySelector('.gfi-select');\r\n        var customSelect = document.querySelector('.gfi-select select');\r\n        if (customWrap && customSelect) {\r\n          var cityName = offices[i].city;\r\n          Array.from(customSelect.options).forEach(function(opt) {\r\n            if (opt.text === cityName) {\r\n              customSelect.value = opt.value;\r\n              customSelect.dispatchEvent(new Event('change', { bubbles: true }));\r\n            }\r\n          });\r\n          var label = customWrap.querySelector('.gfi-select__label');\r\n          if (label) label.textContent = cityName;\r\n          var trigger = customWrap.querySelector('.gfi-select__trigger');\r\n          if (trigger) trigger.classList.remove('is-placeholder');\r\n          customWrap.querySelectorAll('.gfi-select__list li').forEach(function(li) {\r\n            li.classList.toggle('is-active', li.textContent === cityName);\r\n          });\r\n        }\r\n      }\r\n    });\r\n\r\n    \/* \u2500\u2500 Render loop \u2500\u2500 *\/\r\n    var clock = new THREE.Clock();\r\n    (function loop() {\r\n      requestAnimationFrame(loop);\r\n      var dt = clock.getDelta();\r\n      if (!drag && !flyAnim) G.rotation.y -= dt * SPIN_SPEED;\r\n      if (hlIdx !== null && pins[hlIdx]) {\r\n        pins[hlIdx].ring.scale.setScalar(1 + 0.2 * Math.sin(clock.elapsedTime * 3.8));\r\n      }\r\n      renderer.render(scene, camera);\r\n      drawLabel();\r\n    })();\r\n\r\n    \/* \u2500\u2500 Auto-detect current site and position globe \u2500\u2500 *\/\r\n    (function() {\r\n      var slugMap = {\r\n        'ma': 'Morocco',\r\n        'ca': 'Canada',\r\n        'fr': 'France',\r\n        'us': 'USA',\r\n        'de': 'Deutschland',\r\n        'nl': 'Netherlands',\r\n        'uk': 'UK',\r\n        'it': 'Italy',\r\n        'es': 'Spain',\r\n        'pl': 'Poland',\r\n        'se': 'Sweden',\r\n        'pt': 'Portugal',\r\n        'ie': 'Ireland',\r\n        'gr': 'Greece',\r\n        'be': 'Belgium'\r\n      };\r\n\r\n      var parts = win.location.pathname.split('\/').filter(Boolean);\r\n      var slug = parts[0] ? parts[0].toLowerCase() : '';\r\n      var countryName = slugMap[slug] || null;\r\n\r\n      var idx = 0; \/\/ default Morocco\r\n      if (countryName && offices.length > 0) {\r\n        for (var i = 0; i < offices.length; i++) {\r\n          if (offices[i].city === countryName) {\r\n            idx = i;\r\n            break;\r\n          }\r\n        }\r\n      }\r\n\r\n      if (offices.length > 0) {\r\n        G.rotation.y = targetRotY(offices[idx].lng);\r\n        G.rotation.x = TILT_X;\r\n        setHighlight(idx);\r\n        wireButton(elBtn, offices[idx].link);\r\n        if (elSelect) elSelect.value = String(idx);\r\n      }\r\n    })();\r\n  }\r\n\r\n}(window, document));\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Talk to our experts Whether you&#8217;re ready to make a claim, or simply exploring your options, we&#8217;d love to hear from you! Get in touch and discover how we can help your business unlock valuable financial efficiencies. Book a free consultation Privacy policy Make an enquiry Contact us We&#8217;re here to help! Complete our form [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-3306","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Get in touch | leyton UK<\/title>\n<meta name=\"description\" content=\"Whether you are interested in finding out more about our services and how we may be able to grow your business, work for Leyton, or become a partner, please contact our team.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/leyton.majjane.agency\/be\/contact-us\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Get in touch | leyton UK\" \/>\n<meta property=\"og:description\" content=\"Whether you are interested in finding out more about our services and how we may be able to grow your business, work for Leyton, or become a partner, please contact our team.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/leyton.majjane.agency\/be\/contact-us\/\" \/>\n<meta property=\"og:site_name\" content=\"Leyton Belgium\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-03T06:48:39+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/contact-us\\\/\",\"url\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/contact-us\\\/\",\"name\":\"Get in touch | leyton UK\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/#website\"},\"datePublished\":\"2026-07-02T16:15:31+00:00\",\"dateModified\":\"2026-07-03T06:48:39+00:00\",\"description\":\"Whether you are interested in finding out more about our services and how we may be able to grow your business, work for Leyton, or become a partner, please contact our team.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/contact-us\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/contact-us\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/contact-us\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contact us\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/#website\",\"url\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/\",\"name\":\"Leyton Belgium\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/#organization\",\"name\":\"Leyton Belgium\",\"url\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/leyton.majjane.agency\\\/wp-content\\\/blogs.dir\\\/6\\\/files\\\/2026\\\/01\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/leyton.majjane.agency\\\/wp-content\\\/blogs.dir\\\/6\\\/files\\\/2026\\\/01\\\/logo.svg\",\"width\":108,\"height\":44,\"caption\":\"Leyton Belgium\"},\"image\":{\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/be\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Get in touch | leyton UK","description":"Whether you are interested in finding out more about our services and how we may be able to grow your business, work for Leyton, or become a partner, please contact our team.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/leyton.majjane.agency\/be\/contact-us\/","og_locale":"en_US","og_type":"article","og_title":"Get in touch | leyton UK","og_description":"Whether you are interested in finding out more about our services and how we may be able to grow your business, work for Leyton, or become a partner, please contact our team.","og_url":"https:\/\/leyton.majjane.agency\/be\/contact-us\/","og_site_name":"Leyton Belgium","article_modified_time":"2026-07-03T06:48:39+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/leyton.majjane.agency\/be\/contact-us\/","url":"https:\/\/leyton.majjane.agency\/be\/contact-us\/","name":"Get in touch | leyton UK","isPartOf":{"@id":"https:\/\/leyton.majjane.agency\/be\/#website"},"datePublished":"2026-07-02T16:15:31+00:00","dateModified":"2026-07-03T06:48:39+00:00","description":"Whether you are interested in finding out more about our services and how we may be able to grow your business, work for Leyton, or become a partner, please contact our team.","breadcrumb":{"@id":"https:\/\/leyton.majjane.agency\/be\/contact-us\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/leyton.majjane.agency\/be\/contact-us\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/leyton.majjane.agency\/be\/contact-us\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/leyton.majjane.agency\/be\/"},{"@type":"ListItem","position":2,"name":"Contact us"}]},{"@type":"WebSite","@id":"https:\/\/leyton.majjane.agency\/be\/#website","url":"https:\/\/leyton.majjane.agency\/be\/","name":"Leyton Belgium","description":"","publisher":{"@id":"https:\/\/leyton.majjane.agency\/be\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/leyton.majjane.agency\/be\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/leyton.majjane.agency\/be\/#organization","name":"Leyton Belgium","url":"https:\/\/leyton.majjane.agency\/be\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/leyton.majjane.agency\/be\/#\/schema\/logo\/image\/","url":"https:\/\/leyton.majjane.agency\/wp-content\/blogs.dir\/6\/files\/2026\/01\/logo.svg","contentUrl":"https:\/\/leyton.majjane.agency\/wp-content\/blogs.dir\/6\/files\/2026\/01\/logo.svg","width":108,"height":44,"caption":"Leyton Belgium"},"image":{"@id":"https:\/\/leyton.majjane.agency\/be\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/leyton.majjane.agency\/be\/wp-json\/wp\/v2\/pages\/3306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leyton.majjane.agency\/be\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/leyton.majjane.agency\/be\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/leyton.majjane.agency\/be\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/leyton.majjane.agency\/be\/wp-json\/wp\/v2\/comments?post=3306"}],"version-history":[{"count":7,"href":"https:\/\/leyton.majjane.agency\/be\/wp-json\/wp\/v2\/pages\/3306\/revisions"}],"predecessor-version":[{"id":4061,"href":"https:\/\/leyton.majjane.agency\/be\/wp-json\/wp\/v2\/pages\/3306\/revisions\/4061"}],"wp:attachment":[{"href":"https:\/\/leyton.majjane.agency\/be\/wp-json\/wp\/v2\/media?parent=3306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}