{"id":617,"date":"2026-04-27T16:29:52","date_gmt":"2026-04-27T14:29:52","guid":{"rendered":"https:\/\/leyton.majjane.agency\/ca\/contact\/"},"modified":"2026-07-25T22:22:31","modified_gmt":"2026-07-25T20:22:31","slug":"contactez-nous","status":"publish","type":"page","link":"https:\/\/leyton.majjane.agency\/ca\/contactez-nous\/","title":{"rendered":"Contactez nous"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"617\" class=\"elementor elementor-617\" 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\">Parlez \u00e0 nos <span>experts<\/span>\n<\/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>Que vous soyez pr\u00eat \u00e0 faire une demande ou simplement en train d&#8217;explorer vos options, nous serions ravis d&#8217;\u00e9changer avec vous ! Contactez-nous pour d\u00e9couvrir comment nous pouvons aider votre entreprise \u00e0 d\u00e9bloquer des \u00e9conomies financi\u00e8res pr\u00e9cieuses.<\/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\">R\u00e9servez une consultation gratuite<\/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>\r\n\r\n<script type=\"text\/javascript\" src=\"https:\/\/assets.calendly.com\/assets\/external\/widget.js\" async><\/script>\r\n\r\n<script>\r\n  window.addEventListener('load', function() {\r\n    if (window.Calendly) {\r\n      const targetNode = document.getElementById('my-custom-calendly');\r\n      \r\n      if (targetNode) {\r\n        Calendly.initInlineWidget({\r\n          parentElement: targetNode,\r\n          url: 'https:\/\/calendly.com\/leyton-canada\/planifiez-un-rdv?background_color=transparent&text_color=1A202C&primary_color=EC6839&hide_landing_page_details=1',\r\n          resize: true\r\n        });\r\n\r\n        setTimeout(function() {\r\n          var iframe = targetNode.querySelector('iframe');\r\n          if (iframe) {\r\n            iframe.style.setProperty('width', '100%', 'important');\r\n            iframe.style.setProperty('min-width', '100%', 'important');\r\n            iframe.removeAttribute('width');\r\n          }\r\n        }, 2000);\r\n      }\r\n    }\r\n  });\r\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\">Faire une demande<\/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<div role=\"feed\" aria-label=\"Messages de la conversation\" aria-describedby=\"_r_fn_\" aria-busy=\"false\" data-find-provider-scope=\"\"><div data-sizer-excess=\"0\" data-rocksteady-sizer=\"\"><div data-rs-index=\"107\" data-index=\"107\" data-last-message=\"true\"><div tabindex=\"0\" role=\"article\" aria-setsize=\"108\" aria-posinset=\"108\" aria-label=\"Message 108 sur 108\"><div data-test-render-count=\"1\"><div class=\"group\"><div class=\"contents\"><div class=\"group relative relative pb-[var(--msg-assistant-pb,0.75rem)]\" data-is-streaming=\"false\"><div class=\"font-claude-response relative leading-[1.65rem] [&amp;_pre&gt;div]:bg-bg-000\/50 [&amp;_pre&gt;div]:border-0.5 [&amp;_pre&gt;div]:border-border-400 [&amp;_.ignore-pre-bg&gt;div]:bg-transparent [&amp;_.standard-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.standard-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8 [&amp;_.progressive-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.progressive-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8\"><div><div class=\"standard-markdown grid-cols-1 grid [&amp;_&gt;_*]:min-w-0 gap-3 [&amp;_&gt;_*:last-child]:mb-0 standard-markdown\"><p class=\"font-claude-response-body break-words whitespace-normal\">Contactez-nous<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\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<div class=\"elementor-heading-title elementor-size-default\">Nous sommes l\u00e0 pour vous aider !<\/div>\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<div role=\"feed\" aria-label=\"Messages de la conversation\" aria-describedby=\"_r_fn_\" aria-busy=\"false\" data-find-provider-scope=\"\"><div data-sizer-excess=\"0\" data-rocksteady-sizer=\"\"><div data-rs-index=\"111\" data-index=\"111\" data-last-message=\"true\"><div tabindex=\"0\" role=\"article\" aria-setsize=\"112\" aria-posinset=\"112\" aria-label=\"Message 112 sur 112\"><div data-test-render-count=\"1\"><div class=\"group\"><div class=\"contents\"><div class=\"group relative relative pb-[var(--msg-assistant-pb,0.75rem)]\" data-is-streaming=\"false\"><div class=\"font-claude-response relative leading-[1.65rem] [&amp;_pre&gt;div]:bg-bg-000\/50 [&amp;_pre&gt;div]:border-0.5 [&amp;_pre&gt;div]:border-border-400 [&amp;_.ignore-pre-bg&gt;div]:bg-transparent [&amp;_.standard-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.standard-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8 [&amp;_.progressive-markdown_:is(p,blockquote,h1,h2,h3,h4,h5,h6)]:pl-2 [&amp;_.progressive-markdown_:is(p,blockquote,ul,ol,h1,h2,h3,h4,h5,h6)]:pr-8\"><div><div class=\"standard-markdown grid-cols-1 grid [&amp;_&gt;_*]:min-w-0 gap-3 [&amp;_&gt;_*:last-child]:mb-0 standard-markdown\"><p class=\"font-claude-response-body break-words whitespace-normal\">Remplissez notre formulaire et un membre de notre \u00e9quipe vous contactera sous peu pour r\u00e9pondre \u00e0 votre demande.<\/p><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\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-ca.leyton.com\/l\/1089522\/2026-07-09\/qxd5dw\" \n    width=\"100%\" \n    frameborder=\"0\"\n    style=\"border: none; width: 100%; height: 850px;\">\n<\/iframe>\n<script>\nwindow.addEventListener(\"message\", function(event) {\n\n    if (!event.data) return;\n\n    if (event.data.event === \"pardotsubmission\") {\n\n        window.dataLayer = window.dataLayer || [];\n\n        window.dataLayer.push({\n            event: \"pardotsubmission\",\n            formId: event.data.formId\n        });\n\n    }\n\n});\n<\/script>\n\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>Expertise mondiale en financement<\/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>Un partenaire unique \u00e0 l'\u00e9chelle mondiale<\/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>Gr\u00e2ce \u00e0 notre pr\u00e9sence internationale et \u00e0 notre expertise multidisciplinaire, nous combinons une approche locale et une vision globale pour accompagner nos clients face \u00e0 tous leurs d\u00e9fis, o\u00f9 qu\u2019ils soient dans le monde.<\/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>Pays<\/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>bureaux<\/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=\"\/ca\/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>Parlez \u00e0 nos experts Que vous soyez pr\u00eat \u00e0 faire une demande ou simplement en train d&#8217;explorer vos options, nous serions ravis d&#8217;\u00e9changer avec vous ! Contactez-nous pour d\u00e9couvrir comment nous pouvons aider votre entreprise \u00e0 d\u00e9bloquer des \u00e9conomies financi\u00e8res pr\u00e9cieuses. R\u00e9servez une consultation gratuite Privacy policy Faire une demande Contactez-nous Nous sommes l\u00e0 pour [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_yoast_wpseo_focuskw":"contactez Leyton Canada","_yoast_wpseo_title":"Contactez nos experts | Leyton Canada","_yoast_wpseo_metadesc":"Envie d'en savoir plus sur nos services pour les entreprises innovantes, de rejoindre Leyton ou de devenir partenaire ? Contactez notre \u00e9quipe d\u00e8s maintenant.","footnotes":"","_yoast_wpseo_focuskeywords":"[{\"keyword\":\"contactez Leyton\",\"score\":\"61\"},{\"keyword\":\"consultation gratuite\",\"score\":\"61\"},{\"keyword\":\"parler \u00e0 un expert\",\"score\":\"61\"},{\"keyword\":\"contact Toronto Montr\u00e9al\",\"score\":\"61\"},{\"keyword\":\"demande financement de l'innovation\",\"score\":\"61\"}]","_yoast_wpseo_keywordsynonyms":"[\"nous joindre au Canada\",\"nous joindre\",\"demander une proposition\",\"\u00e9changer avec un sp\u00e9cialiste\",\"bureaux au Canada\",\"rendez-vous cr\u00e9dit d'imp\u00f4t\"]"},"class_list":["post-617","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.1 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Contactez nos experts | Leyton Canada<\/title>\n<meta name=\"description\" content=\"Envie d&#039;en savoir plus sur nos services pour les entreprises innovantes, de rejoindre Leyton ou de devenir partenaire ? Contactez notre \u00e9quipe d\u00e8s maintenant.\" \/>\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\/ca\/contactez-nous\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Contactez nous\" \/>\n<meta property=\"og:description\" content=\"Envie d&#039;en savoir plus sur nos services pour les entreprises innovantes, de rejoindre Leyton ou de devenir partenaire ? Contactez notre \u00e9quipe d\u00e8s maintenant.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/leyton.majjane.agency\/ca\/contactez-nous\/\" \/>\n<meta property=\"og:site_name\" content=\"Leyton Canada\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-25T20:22:31+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=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/contactez-nous\\\/\",\"url\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/contactez-nous\\\/\",\"name\":\"Contactez nos experts | Leyton Canada\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/#website\"},\"datePublished\":\"2026-04-27T14:29:52+00:00\",\"dateModified\":\"2026-07-25T20:22:31+00:00\",\"description\":\"Envie d'en savoir plus sur nos services pour les entreprises innovantes, de rejoindre Leyton ou de devenir partenaire ? Contactez notre \u00e9quipe d\u00e8s maintenant.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/contactez-nous\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/contactez-nous\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/contactez-nous\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contactez nous\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/#website\",\"url\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/\",\"name\":\"Leyton Canada\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/#organization\",\"name\":\"Leyton Canada\",\"url\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/leyton.majjane.agency\\\/wp-content\\\/blogs.dir\\\/3\\\/files\\\/2026\\\/01\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/leyton.majjane.agency\\\/wp-content\\\/blogs.dir\\\/3\\\/files\\\/2026\\\/01\\\/logo.svg\",\"width\":108,\"height\":44,\"caption\":\"Leyton Canada\"},\"image\":{\"@id\":\"https:\\\/\\\/leyton.majjane.agency\\\/ca\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Contactez nos experts | Leyton Canada","description":"Envie d'en savoir plus sur nos services pour les entreprises innovantes, de rejoindre Leyton ou de devenir partenaire ? Contactez notre \u00e9quipe d\u00e8s maintenant.","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\/ca\/contactez-nous\/","og_locale":"en_US","og_type":"article","og_title":"Contactez nous","og_description":"Envie d'en savoir plus sur nos services pour les entreprises innovantes, de rejoindre Leyton ou de devenir partenaire ? Contactez notre \u00e9quipe d\u00e8s maintenant.","og_url":"https:\/\/leyton.majjane.agency\/ca\/contactez-nous\/","og_site_name":"Leyton Canada","article_modified_time":"2026-07-25T20:22:31+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/leyton.majjane.agency\/ca\/contactez-nous\/","url":"https:\/\/leyton.majjane.agency\/ca\/contactez-nous\/","name":"Contactez nos experts | Leyton Canada","isPartOf":{"@id":"https:\/\/leyton.majjane.agency\/ca\/#website"},"datePublished":"2026-04-27T14:29:52+00:00","dateModified":"2026-07-25T20:22:31+00:00","description":"Envie d'en savoir plus sur nos services pour les entreprises innovantes, de rejoindre Leyton ou de devenir partenaire ? Contactez notre \u00e9quipe d\u00e8s maintenant.","breadcrumb":{"@id":"https:\/\/leyton.majjane.agency\/ca\/contactez-nous\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/leyton.majjane.agency\/ca\/contactez-nous\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/leyton.majjane.agency\/ca\/contactez-nous\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/leyton.majjane.agency\/ca\/"},{"@type":"ListItem","position":2,"name":"Contactez nous"}]},{"@type":"WebSite","@id":"https:\/\/leyton.majjane.agency\/ca\/#website","url":"https:\/\/leyton.majjane.agency\/ca\/","name":"Leyton Canada","description":"","publisher":{"@id":"https:\/\/leyton.majjane.agency\/ca\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/leyton.majjane.agency\/ca\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/leyton.majjane.agency\/ca\/#organization","name":"Leyton Canada","url":"https:\/\/leyton.majjane.agency\/ca\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/leyton.majjane.agency\/ca\/#\/schema\/logo\/image\/","url":"https:\/\/leyton.majjane.agency\/wp-content\/blogs.dir\/3\/files\/2026\/01\/logo.svg","contentUrl":"https:\/\/leyton.majjane.agency\/wp-content\/blogs.dir\/3\/files\/2026\/01\/logo.svg","width":108,"height":44,"caption":"Leyton Canada"},"image":{"@id":"https:\/\/leyton.majjane.agency\/ca\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/leyton.majjane.agency\/ca\/wp-json\/wp\/v2\/pages\/617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leyton.majjane.agency\/ca\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/leyton.majjane.agency\/ca\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/leyton.majjane.agency\/ca\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/leyton.majjane.agency\/ca\/wp-json\/wp\/v2\/comments?post=617"}],"version-history":[{"count":27,"href":"https:\/\/leyton.majjane.agency\/ca\/wp-json\/wp\/v2\/pages\/617\/revisions"}],"predecessor-version":[{"id":6689,"href":"https:\/\/leyton.majjane.agency\/ca\/wp-json\/wp\/v2\/pages\/617\/revisions\/6689"}],"wp:attachment":[{"href":"https:\/\/leyton.majjane.agency\/ca\/wp-json\/wp\/v2\/media?parent=617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}