{"id":583,"date":"2026-05-11T21:18:33","date_gmt":"2026-05-11T21:18:33","guid":{"rendered":"https:\/\/everia.ca\/home\/"},"modified":"2026-09-25T14:11:20","modified_gmt":"2026-09-25T14:11:20","slug":"home","status":"publish","type":"page","link":"https:\/\/everia.ca\/en\/","title":{"rendered":"Home"},"content":{"rendered":"<div class=\"et_pb_section_0 et_pb_section et_section_regular et_flex_section everia-hero contact preset--module--divi-section--default\" id=\"contact\">\n<div class=\"et_pb_row_0 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_0 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_heading_0 et_pb_heading et_pb_module et_flex_module preset--module--divi-heading--default\"><div class=\"et_pb_heading_container\"><h1 class=\"et_pb_module_header\">Do you have a job to do on your property? Talk to the Everia Network. <\/h1><\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_1 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_1 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_0 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><p style=\"text-align: center;\">Whether it's for your home or your buildings, describe your project to us. We help you find the right contractor in your area. <\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_code_0 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><script>\ndocument.documentElement.classList.add(\"everia-chat-animation\");\n<\/script>\n\n<style>\nhtml.everia-chat-animation chat-widget:not([data-everia-revealed=\"true\"]) {\n    opacity: 0 !important;\n    translate: 0 20px;\n    pointer-events: none;\n}\n\nhtml.everia-chat-animation chat-widget[data-everia-revealed=\"true\"] {\n    opacity: 1 !important;\n    translate: 0 0;\n    pointer-events: auto;\n    transition:\n        opacity 0.7s ease-out,\n        translate 0.7s ease-out;\n}\n\n@media (prefers-reduced-motion: reduce) {\n    html.everia-chat-animation chat-widget {\n        translate: none !important;\n        transition: none !important;\n    }\n}\n<\/style>\n\n<script\n    src=\"https:\/\/widgets.leadconnectorhq.com\/loader.js\"\n    data-resources-url=\"https:\/\/widgets.leadconnectorhq.com\/chat-widget\/loader.js\"\n    data-widget-id=\"6a7a3384ae20485b8a615782\">\n<\/script>\n\n<script>\n(() => {\n    const observedRoots = new WeakSet();\n    const initializedWidgets = new WeakSet();\n\n    function normalizeText(text) {\n        return (text || \"\")\n            .replace(\/\\s+\/g, \" \")\n            .trim()\n            .toLowerCase();\n    }\n\n    function hideEndedMessage(p) {\n        if (!p) return;\n\n        if (normalizeText(p.textContent) !== \"your chat has ended\") {\n            return;\n        }\n\n        const message = p.closest(\"chat-message\");\n\n        if (message) {\n            message.style.setProperty(\n                \"display\",\n                \"none\",\n                \"important\"\n            );\n\n            message.setAttribute(\n                \"aria-hidden\",\n                \"true\"\n            );\n        } else {\n            p.style.setProperty(\n                \"display\",\n                \"none\",\n                \"important\"\n            );\n\n            p.setAttribute(\n                \"aria-hidden\",\n                \"true\"\n            );\n        }\n    }\n\n    function scanNode(node) {\n        if (!node) return;\n\n        if (node.nodeType === Node.TEXT_NODE) {\n            const parent = node.parentElement;\n\n            if (parent) {\n                const p = parent.closest(\"p\");\n\n                if (p) {\n                    hideEndedMessage(p);\n                }\n            }\n\n            return;\n        }\n\n        if (node.nodeType !== Node.ELEMENT_NODE) {\n            return;\n        }\n\n        if (\n            node.matches &&\n            node.matches(\"p\")\n        ) {\n            hideEndedMessage(node);\n        }\n\n        if (node.querySelectorAll) {\n            node\n                .querySelectorAll(\"p\")\n                .forEach(hideEndedMessage);\n        }\n\n        discoverShadowRoots(node);\n    }\n\n    function discoverShadowRoots(node) {\n        if (!node || node.nodeType !== Node.ELEMENT_NODE) {\n            return;\n        }\n\n        if (node.shadowRoot) {\n            observeRoot(node.shadowRoot);\n        }\n\n        if (!node.querySelectorAll) {\n            return;\n        }\n\n        node.querySelectorAll(\"*\").forEach(el => {\n            if (el.shadowRoot) {\n                observeRoot(el.shadowRoot);\n            }\n        });\n    }\n\n    function observeRoot(root) {\n        if (!root || observedRoots.has(root)) {\n            return;\n        }\n\n        observedRoots.add(root);\n\n        if (root.querySelectorAll) {\n            root\n                .querySelectorAll(\"p\")\n                .forEach(hideEndedMessage);\n\n            root\n                .querySelectorAll(\"*\")\n                .forEach(el => {\n                    if (el.shadowRoot) {\n                        observeRoot(el.shadowRoot);\n                    }\n                });\n        }\n\n        const observer = new MutationObserver(mutations => {\n            mutations.forEach(mutation => {\n                if (mutation.type === \"characterData\") {\n                    scanNode(mutation.target);\n                    return;\n                }\n\n                mutation.addedNodes.forEach(node => {\n                    scanNode(node);\n\n                    if (\n                        node.nodeType === Node.ELEMENT_NODE &&\n                        node.matches &&\n                        node.matches(\"chat-widget\")\n                    ) {\n                        initializeWidget(node);\n                    }\n\n                    if (\n                        node.nodeType === Node.ELEMENT_NODE &&\n                        node.querySelectorAll\n                    ) {\n                        node\n                            .querySelectorAll(\"chat-widget\")\n                            .forEach(initializeWidget);\n                    }\n                });\n            });\n        });\n\n        observer.observe(root, {\n            childList: true,\n            subtree: true,\n            characterData: true\n        });\n    }\n\n    function revealWidget(widget) {\n        if (!widget) return;\n\n        if (\n            widget.getAttribute(\n                \"data-everia-revealed\"\n            ) === \"true\"\n        ) {\n            return;\n        }\n\n        requestAnimationFrame(() => {\n            requestAnimationFrame(() => {\n                widget.setAttribute(\n                    \"data-everia-revealed\",\n                    \"true\"\n                );\n            });\n        });\n    }\n\n    function waitForWidgetContent(widget) {\n        let attempts = 0;\n        const maxAttempts = 30;\n\n        function check() {\n            attempts++;\n\n            if (widget.shadowRoot) {\n                observeRoot(widget.shadowRoot);\n\n                if (\n                    widget.shadowRoot.childNodes.length\n                ) {\n                    setTimeout(() => {\n                        revealWidget(widget);\n                    }, 200);\n\n                    return;\n                }\n            }\n\n            if (attempts < maxAttempts) {\n                setTimeout(check, 100);\n                return;\n            }\n\n            revealWidget(widget);\n        }\n\n        check();\n    }\n\n    function initializeWidget(widget) {\n        if (\n            !widget ||\n            initializedWidgets.has(widget)\n        ) {\n            return;\n        }\n\n        initializedWidgets.add(widget);\n\n        waitForWidgetContent(widget);\n    }\n\n    function findWidgets() {\n        document\n            .querySelectorAll(\"chat-widget\")\n            .forEach(initializeWidget);\n    }\n\n    observeRoot(document);\n\n    findWidgets();\n\n    const discoveryObserver =\n        new MutationObserver(() => {\n            findWidgets();\n        });\n\n    discoveryObserver.observe(\n        document.documentElement,\n        {\n            childList: true,\n            subtree: true\n        }\n    );\n\n    let attempts = 0;\n\n    const discoveryInterval =\n        setInterval(() => {\n            attempts++;\n\n            findWidgets();\n\n            const widget =\n                document.querySelector(\n                    \"chat-widget\"\n                );\n\n            if (widget || attempts >= 100) {\n                clearInterval(\n                    discoveryInterval\n                );\n            }\n        }, 100);\n\n    setTimeout(() => {\n        document\n            .querySelectorAll(\"chat-widget\")\n            .forEach(widget => {\n                revealWidget(widget);\n            });\n\n        document.documentElement.classList.remove(\n            \"everia-chat-animation\"\n        );\n    }, 10000);\n})();\n<\/script><\/div><\/div>\n\n<div class=\"et_pb_code_1 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><script>\n(function () {\n  \"use strict\";\n\n  if (\n    typeof window.__everiaHeroControllerDestroy === \"function\"\n  ) {\n    window.__everiaHeroControllerDestroy();\n  }\n\n  const HERO_SELECTOR = \".everia-hero\";\n  const BG = \"#030306\";\n  const PURPLE = [96, 72, 255];\n  const BLUE = [59, 143, 232];\n  const TAU = Math.PI * 2;\n\n  const mobileQuery =\n    window.matchMedia(\"(max-width: 767px)\");\n\n  let currentMode = null;\n  let engineDestroy = null;\n  let pendingIdle = null;\n  let pendingTimeout = null;\n\n  const style =\n    document.createElement(\"style\");\n\n  style.id =\n    \"everia-responsive-background-style\";\n\n  style.textContent = `\n    @media (max-width: 767px) {\n      html body #page-container #et-boc\n      .et-l--post > .et_builder_inner_content\n      .everia-hero.et_pb_section {\n        background-color: #030306 !important;\n\n        background-image:\n          radial-gradient(\n            circle,\n            rgba(87,140,238,.32) 0 .7px,\n            transparent .95px\n          ),\n          radial-gradient(\n            circle,\n            rgba(120,96,255,.36) 0 .7px,\n            transparent .95px\n          ),\n          radial-gradient(\n            ellipse 94% 46% at -12% 19%,\n            rgba(96,72,255,.82) 0%,\n            rgba(96,72,255,.51) 25%,\n            rgba(59,143,232,.18) 43%,\n            rgba(3,3,6,0) 68%\n          ),\n          radial-gradient(\n            ellipse 94% 47% at 112% 20%,\n            rgba(96,72,255,.78) 0%,\n            rgba(59,143,232,.35) 28%,\n            rgba(96,72,255,.17) 46%,\n            rgba(3,3,6,0) 69%\n          ),\n          radial-gradient(\n            ellipse 90% 30% at 50% 55%,\n            rgba(96,72,255,.21) 0%,\n            rgba(59,143,232,.09) 37%,\n            rgba(3,3,6,0) 75%\n          ) !important;\n\n        background-size:\n          38px 38px,\n          38px 38px,\n          100% 100%,\n          100% 100%,\n          100% 100% !important;\n\n        background-position:\n          0 0,\n          19px 19px,\n          center,\n          center,\n          center !important;\n\n        background-repeat:\n          repeat,\n          repeat,\n          no-repeat,\n          no-repeat,\n          no-repeat !important;\n      }\n\n      html body #page-container #et-boc\n      .et-l--post > .et_builder_inner_content\n      .everia-hero.et_pb_section\n      > canvas.everia-background-canvas {\n        display: none !important;\n      }\n    }\n  `;\n\n  document.head.appendChild(style);\n\n  function clamp(value, min, max) {\n    return Math.max(\n      min,\n      Math.min(max, value)\n    );\n  }\n\n  function getHero() {\n    return document.querySelector(\n      HERO_SELECTOR\n    );\n  }\n\n  function isMobile() {\n    return mobileQuery.matches;\n  }\n\n  function cancelPendingStart() {\n    if (\n      pendingIdle !== null &&\n      \"cancelIdleCallback\" in window\n    ) {\n      cancelIdleCallback(\n        pendingIdle\n      );\n    }\n\n    if (\n      pendingTimeout !== null\n    ) {\n      clearTimeout(\n        pendingTimeout\n      );\n    }\n\n    pendingIdle = null;\n    pendingTimeout = null;\n  }\n\n  function removeOldCanvases(hero) {\n    hero\n      .querySelectorAll(\n        \"canvas.everia-background-canvas\"\n      )\n      .forEach(function (canvas) {\n        canvas.remove();\n      });\n  }\n\n  function destroyEngine() {\n    if (\n      typeof engineDestroy === \"function\"\n    ) {\n      const destroy =\n        engineDestroy;\n\n      engineDestroy = null;\n\n      destroy();\n    }\n  }\n\n  function createDesktopEngine() {\n    const hero =\n      getHero();\n\n    if (\n      !hero ||\n      isMobile()\n    ) {\n      return;\n    }\n\n    destroyEngine();\n    removeOldCanvases(hero);\n\n    const canvas =\n      document.createElement(\"canvas\");\n\n    canvas.className =\n      \"everia-background-canvas\";\n\n    canvas.setAttribute(\n      \"aria-hidden\",\n      \"true\"\n    );\n\n    hero.insertBefore(\n      canvas,\n      hero.firstChild\n    );\n\n    const ctx =\n      canvas.getContext(\n        \"2d\",\n        {\n          alpha: false\n        }\n      );\n\n    if (!ctx) {\n      canvas.remove();\n      return;\n    }\n\n    const glCanvas =\n      document.createElement(\"canvas\");\n\n    const gl =\n      glCanvas.getContext(\n        \"webgl\",\n        {\n          alpha: true,\n          antialias: false,\n          premultipliedAlpha: false,\n          preserveDrawingBuffer: false,\n          powerPreference: \"high-performance\"\n        }\n      ) ||\n      glCanvas.getContext(\n        \"experimental-webgl\",\n        {\n          alpha: true,\n          antialias: false,\n          premultipliedAlpha: false,\n          preserveDrawingBuffer: false\n        }\n      );\n\n    if (!gl) {\n      canvas.remove();\n      return;\n    }\n\n    const baseDotsCanvas =\n      document.createElement(\"canvas\");\n\n    const dotsCanvas =\n      document.createElement(\"canvas\");\n\n    const baseDotsCtx =\n      baseDotsCanvas.getContext(\n        \"2d\",\n        {\n          alpha: true\n        }\n      );\n\n    const dotsCtx =\n      dotsCanvas.getContext(\n        \"2d\",\n        {\n          alpha: true\n        }\n      );\n\n    if (\n      !baseDotsCtx ||\n      !dotsCtx\n    ) {\n      canvas.remove();\n      return;\n    }\n\n    let width = 1;\n    let height = 1;\n    let dpr = 1;\n    let spacing = 19;\n\n    let heroPageLeft = 0;\n    let heroPageTop = 0;\n\n    let targetX = 0;\n    let targetY = 0;\n\n    let holeX = 0;\n    let holeY = 0;\n\n    let pointerAmount = 0;\n    let targetPointerAmount = 0;\n\n    let pointerKnown = false;\n    let pointerInitialized = false;\n\n    let lastClientX = 0;\n    let lastClientY = 0;\n\n    let pageVisible =\n      !document.hidden;\n\n    let heroVisible = true;\n    let destroyed = false;\n\n    let auroraTimer = 0;\n    let dotsTimer = 0;\n    let compositeRaf = 0;\n    let scrollRaf = 0;\n    let resizeRaf = 0;\n\n    let resizeObserver = null;\n    let intersectionObserver = null;\n\n    let lastDotsTime =\n      performance.now();\n\n    const AURORA_SCALE = 0.44;\n    const AURORA_FPS = 30;\n    const DOTS_FPS = 45;\n\n    const AURORA_INTERVAL =\n      1000 \/ AURORA_FPS;\n\n    const DOTS_INTERVAL =\n      1000 \/ DOTS_FPS;\n\n    const vertexShaderSource = `\n      attribute vec2 a_position;\n\n      varying vec2 v_uv;\n\n      void main() {\n        v_uv =\n          a_position * 0.5 + 0.5;\n\n        gl_Position =\n          vec4(\n            a_position,\n            0.0,\n            1.0\n          );\n      }\n    `;\n\n    const fragmentShaderSource = `\n      precision highp float;\n\n      varying vec2 v_uv;\n\n      uniform float u_time;\n      uniform vec3 u_purple;\n      uniform vec3 u_blue;\n\n      float hash(vec2 p) {\n        return fract(\n          sin(\n            dot(\n              p,\n              vec2(\n                127.1,\n                311.7\n              )\n            )\n          )\n          *\n          43758.5453123\n        );\n      }\n\n      float noise(vec2 p) {\n        vec2 i =\n          floor(p);\n\n        vec2 f =\n          fract(p);\n\n        float a =\n          hash(i);\n\n        float b =\n          hash(\n            i +\n            vec2(\n              1.0,\n              0.0\n            )\n          );\n\n        float c =\n          hash(\n            i +\n            vec2(\n              0.0,\n              1.0\n            )\n          );\n\n        float d =\n          hash(\n            i +\n            vec2(\n              1.0,\n              1.0\n            )\n          );\n\n        vec2 u =\n          f *\n          f *\n          (\n            3.0 -\n            2.0 * f\n          );\n\n        return\n          mix(\n            a,\n            b,\n            u.x\n          )\n          +\n          (\n            c - a\n          )\n          *\n          u.y\n          *\n          (\n            1.0 - u.x\n          )\n          +\n          (\n            d - b\n          )\n          *\n          u.x\n          *\n          u.y;\n      }\n\n      float fbm(vec2 p) {\n        float value =\n          0.0;\n\n        float amplitude =\n          0.5;\n\n        for (\n          int i = 0;\n          i < 4;\n          i++\n        ) {\n          value +=\n            noise(p) *\n            amplitude;\n\n          p *= 2.0;\n\n          amplitude *=\n            0.5;\n        }\n\n        return value;\n      }\n\n      void main() {\n        float x =\n          v_uv.x;\n\n        float y =\n          1.0 -\n          v_uv.y;\n\n        float time =\n          u_time;\n\n        float side =\n          pow(\n            abs(\n              x * 2.0 -\n              1.0\n            ),\n            1.62\n          );\n\n        float archY =\n          0.55 -\n          side * 0.37;\n\n        archY +=\n          sin(\n            x * 5.2 -\n            time * 0.16\n          )\n          *\n          0.004;\n\n        archY +=\n          sin(\n            x * 2.35 +\n            time * 0.093 +\n            1.7\n          )\n          *\n          0.003;\n\n        archY +=\n          sin(\n            x * 9.1 -\n            time * 0.071 +\n            0.8\n          )\n          *\n          0.0018;\n\n        float d =\n          y -\n          archY;\n\n        if (\n          d < -0.075 ||\n          d > 0.325 ||\n          y > 0.865\n        ) {\n          discard;\n        }\n\n        float enterAurora =\n          smoothstep(\n            -0.060,\n            0.025,\n            d\n          );\n\n        float exitAurora =\n          1.0 -\n          smoothstep(\n            0.18,\n            0.31,\n            d\n          );\n\n        float bottomFade =\n          1.0 -\n          smoothstep(\n            0.76,\n            0.86,\n            y\n          );\n\n        float archMask =\n          enterAurora *\n          exitAurora *\n          bottomFade;\n\n        if (\n          archMask <\n          0.002\n        ) {\n          discard;\n        }\n\n        vec2 p =\n          vec2(\n            x * 2.18,\n            d * 2.95\n          );\n\n        float warp1 =\n          fbm(\n            p * 1.18\n            +\n            vec2(\n              -time * 0.072,\n              time * 0.016\n            )\n          );\n\n        float warp2 =\n          fbm(\n            p * 1.42\n            +\n            vec2(\n              time * 0.048,\n              -time * 0.013\n            )\n            +\n            8.4\n          );\n\n        vec2 warped =\n          p\n          +\n          vec2(\n            (\n              warp1 -\n              0.5\n            )\n            *\n            0.22,\n\n            (\n              warp2 -\n              0.5\n            )\n            *\n            0.09\n          );\n\n        float flowA =\n          fbm(\n            warped\n            *\n            vec2(\n              1.18,\n              0.92\n            )\n            +\n            vec2(\n              -time * 0.09,\n              0.0\n            )\n          );\n\n        float flowB =\n          fbm(\n            warped\n            *\n            vec2(\n              1.62,\n              1.0\n            )\n            +\n            vec2(\n              time * 0.061,\n              time * 0.012\n            )\n            +\n            12.8\n          );\n\n        float material =\n          smoothstep(\n            0.24,\n            0.75,\n\n            flowA * 0.63\n            +\n            flowB * 0.37\n          );\n\n        float curtain =\n          fbm(\n            vec2(\n              x * 3.35\n              -\n              time * 0.073,\n\n              d * 0.95\n              +\n              time * 0.009\n            )\n            +\n            4.7\n          );\n\n        float curtainPresence =\n          smoothstep(\n            0.29,\n            0.77,\n            curtain\n          );\n\n        float density =\n          material\n          *\n          (\n            0.70\n            +\n            curtainPresence *\n            0.35\n          );\n\n        float upperGlow =\n          exp(\n            -pow(\n              (\n                d -\n                0.052\n              )\n              \/\n              0.115,\n              2.0\n            )\n          );\n\n        float deepGlow =\n          exp(\n            -pow(\n              (\n                d -\n                0.145\n              )\n              \/\n              0.17,\n              2.0\n            )\n          );\n\n        float presence =\n          0.90\n          +\n          sin(\n            time * 0.16\n            +\n            x * 1.8\n          )\n          *\n          0.055\n          +\n          sin(\n            time * 0.087\n            -\n            x * 2.4\n            +\n            1.9\n          )\n          *\n          0.045;\n\n        float travelPhase =\n          fract(\n            time *\n            0.03\n          );\n\n        float travelerX =\n          -0.20\n          +\n          travelPhase *\n          1.40;\n\n        float travelerWarp =\n          (\n            warp1 -\n            0.5\n          )\n          *\n          0.07;\n\n        float traveler =\n          1.0\n          -\n          smoothstep(\n            0.07,\n            0.30,\n\n            abs(\n              x\n              -\n              travelerX\n              +\n              travelerWarp\n            )\n          );\n\n        float travelerVertical =\n          exp(\n            -pow(\n              (\n                d -\n                0.075\n              )\n              \/\n              0.15,\n              2.0\n            )\n          );\n\n        traveler *=\n          travelerVertical;\n\n        float colorFlow =\n          flowB * 0.68\n          +\n          flowA * 0.32;\n\n        float blueAmount =\n          smoothstep(\n            0.54,\n            0.79,\n            colorFlow\n          )\n          *\n          0.45;\n\n        float movingBlue =\n          clamp(\n            blueAmount\n            +\n            traveler *\n            0.18,\n\n            0.0,\n            0.52\n          );\n\n        vec3 color =\n          mix(\n            u_purple,\n            u_blue,\n            movingBlue\n          );\n\n        color =\n          mix(\n            color,\n            u_purple,\n            0.20\n          );\n\n        float sideBoost =\n          mix(\n            0.92,\n            1.14,\n            side\n          );\n\n        float illumination =\n          0.54\n          +\n          upperGlow *\n          0.43\n          +\n          deepGlow *\n          0.14;\n\n        float movingLight =\n          1.0\n          +\n          traveler *\n          0.38;\n\n        float alpha =\n          archMask\n          *\n          density\n          *\n          illumination\n          *\n          presence\n          *\n          sideBoost\n          *\n          movingLight;\n\n        alpha =\n          smoothstep(\n            0.08,\n            0.84,\n            alpha\n          )\n          *\n          0.91;\n\n        if (\n          alpha <\n          0.004\n        ) {\n          discard;\n        }\n\n        float brightness =\n          0.59\n          +\n          density *\n          0.45\n          +\n          upperGlow *\n          0.20\n          +\n          traveler *\n          0.13;\n\n        gl_FragColor =\n          vec4(\n            color *\n            brightness,\n            alpha\n          );\n      }\n    `;\n\n    function createShader(\n      type,\n      source\n    ) {\n      const shader =\n        gl.createShader(type);\n\n      gl.shaderSource(\n        shader,\n        source\n      );\n\n      gl.compileShader(\n        shader\n      );\n\n      if (\n        !gl.getShaderParameter(\n          shader,\n          gl.COMPILE_STATUS\n        )\n      ) {\n        console.error(\n          gl.getShaderInfoLog(\n            shader\n          )\n        );\n\n        gl.deleteShader(\n          shader\n        );\n\n        return null;\n      }\n\n      return shader;\n    }\n\n    function createProgram() {\n      const vertexShader =\n        createShader(\n          gl.VERTEX_SHADER,\n          vertexShaderSource\n        );\n\n      const fragmentShader =\n        createShader(\n          gl.FRAGMENT_SHADER,\n          fragmentShaderSource\n        );\n\n      if (\n        !vertexShader ||\n        !fragmentShader\n      ) {\n        return null;\n      }\n\n      const program =\n        gl.createProgram();\n\n      gl.attachShader(\n        program,\n        vertexShader\n      );\n\n      gl.attachShader(\n        program,\n        fragmentShader\n      );\n\n      gl.linkProgram(\n        program\n      );\n\n      gl.deleteShader(\n        vertexShader\n      );\n\n      gl.deleteShader(\n        fragmentShader\n      );\n\n      if (\n        !gl.getProgramParameter(\n          program,\n          gl.LINK_STATUS\n        )\n      ) {\n        console.error(\n          gl.getProgramInfoLog(\n            program\n          )\n        );\n\n        gl.deleteProgram(\n          program\n        );\n\n        return null;\n      }\n\n      return program;\n    }\n\n    const program =\n      createProgram();\n\n    if (!program) {\n      canvas.remove();\n      return;\n    }\n\n    const positionBuffer =\n      gl.createBuffer();\n\n    gl.bindBuffer(\n      gl.ARRAY_BUFFER,\n      positionBuffer\n    );\n\n    gl.bufferData(\n      gl.ARRAY_BUFFER,\n\n      new Float32Array([\n        -1, -1,\n         1, -1,\n        -1,  1,\n\n        -1,  1,\n         1, -1,\n         1,  1\n      ]),\n\n      gl.STATIC_DRAW\n    );\n\n    const aPosition =\n      gl.getAttribLocation(\n        program,\n        \"a_position\"\n      );\n\n    const uTime =\n      gl.getUniformLocation(\n        program,\n        \"u_time\"\n      );\n\n    const uPurple =\n      gl.getUniformLocation(\n        program,\n        \"u_purple\"\n      );\n\n    const uBlue =\n      gl.getUniformLocation(\n        program,\n        \"u_blue\"\n      );\n\n    gl.useProgram(\n      program\n    );\n\n    gl.bindBuffer(\n      gl.ARRAY_BUFFER,\n      positionBuffer\n    );\n\n    gl.enableVertexAttribArray(\n      aPosition\n    );\n\n    gl.vertexAttribPointer(\n      aPosition,\n      2,\n      gl.FLOAT,\n      false,\n      0,\n      0\n    );\n\n    gl.uniform3f(\n      uPurple,\n      PURPLE[0] \/ 255,\n      PURPLE[1] \/ 255,\n      PURPLE[2] \/ 255\n    );\n\n    gl.uniform3f(\n      uBlue,\n      BLUE[0] \/ 255,\n      BLUE[1] \/ 255,\n      BLUE[2] \/ 255\n    );\n\n    gl.disable(\n      gl.BLEND\n    );\n\n    function dotType(\n      column,\n      row\n    ) {\n      return (\n        column +\n        row * 3\n      ) % 5;\n    }\n\n    function drawDot(\n      context,\n      x,\n      y,\n      type,\n      opacity,\n      radius\n    ) {\n      context.fillStyle =\n        type <= 2\n          ? `rgba(87,140,238,${opacity})`\n          : `rgba(120,96,255,${opacity})`;\n\n      context.beginPath();\n\n      context.arc(\n        x,\n        y,\n        radius,\n        0,\n        TAU\n      );\n\n      context.fill();\n    }\n\n    function resetDotsCanvas() {\n      dotsCtx.setTransform(\n        1,\n        0,\n        0,\n        1,\n        0,\n        0\n      );\n\n      dotsCtx.globalCompositeOperation =\n        \"source-over\";\n\n      dotsCtx.clearRect(\n        0,\n        0,\n        dotsCanvas.width,\n        dotsCanvas.height\n      );\n\n      dotsCtx.drawImage(\n        baseDotsCanvas,\n        0,\n        0\n      );\n    }\n\n    function buildStaticDots() {\n      baseDotsCtx.setTransform(\n        1,\n        0,\n        0,\n        1,\n        0,\n        0\n      );\n\n      baseDotsCtx.clearRect(\n        0,\n        0,\n        baseDotsCanvas.width,\n        baseDotsCanvas.height\n      );\n\n      baseDotsCtx.setTransform(\n        dpr,\n        0,\n        0,\n        dpr,\n        0,\n        0\n      );\n\n      const rows =\n        Math.ceil(\n          height \/\n          spacing\n        ) + 1;\n\n      const columns =\n        Math.ceil(\n          width \/\n          spacing\n        ) + 1;\n\n      const bluePath =\n        new Path2D();\n\n      const purplePath =\n        new Path2D();\n\n      for (\n        let row = 0;\n        row <= rows;\n        row++\n      ) {\n        const y =\n          row *\n          spacing;\n\n        for (\n          let column = 0;\n          column <= columns;\n          column++\n        ) {\n          const x =\n            column *\n            spacing;\n\n          const type =\n            dotType(\n              column,\n              row\n            );\n\n          const path =\n            type <= 2\n              ? bluePath\n              : purplePath;\n\n          path.moveTo(\n            x + 0.78,\n            y\n          );\n\n          path.arc(\n            x,\n            y,\n            0.78,\n            0,\n            TAU\n          );\n        }\n      }\n\n      baseDotsCtx.fillStyle =\n        \"rgba(87,140,238,0.40)\";\n\n      baseDotsCtx.fill(\n        bluePath\n      );\n\n      baseDotsCtx.fillStyle =\n        \"rgba(120,96,255,0.42)\";\n\n      baseDotsCtx.fill(\n        purplePath\n      );\n\n      resetDotsCanvas();\n    }\n\n    function updateHeroGeometry() {\n      const rect =\n        hero.getBoundingClientRect();\n\n      width =\n        Math.max(\n          1,\n          Math.round(\n            rect.width\n          )\n        );\n\n      height =\n        Math.max(\n          1,\n          Math.round(\n            rect.height\n          )\n        );\n\n      heroPageLeft =\n        rect.left +\n        window.scrollX;\n\n      heroPageTop =\n        rect.top +\n        window.scrollY;\n    }\n\n    function setPointerTarget(\n      clientX,\n      clientY\n    ) {\n      targetX =\n        clientX +\n        window.scrollX -\n        heroPageLeft;\n\n      targetY =\n        clientY +\n        window.scrollY -\n        heroPageTop;\n\n      const inside =\n        targetX >= 0 &&\n        targetX <= width &&\n        targetY >= 0 &&\n        targetY <= height;\n\n      targetPointerAmount =\n        inside\n          ? 1\n          : 0;\n\n      return inside;\n    }\n\n    function composeNow() {\n      if (\n        destroyed ||\n        isMobile()\n      ) {\n        return;\n      }\n\n      ctx.setTransform(\n        1,\n        0,\n        0,\n        1,\n        0,\n        0\n      );\n\n      ctx.fillStyle =\n        BG;\n\n      ctx.fillRect(\n        0,\n        0,\n        canvas.width,\n        canvas.height\n      );\n\n      ctx.imageSmoothingEnabled =\n        true;\n\n      ctx.drawImage(\n        glCanvas,\n        0,\n        0,\n        canvas.width,\n        canvas.height\n      );\n\n      ctx.drawImage(\n        dotsCanvas,\n        0,\n        0\n      );\n    }\n\n    function requestComposite() {\n      if (\n        destroyed ||\n        isMobile() ||\n        compositeRaf\n      ) {\n        return;\n      }\n\n      compositeRaf =\n        window.requestAnimationFrame(\n          function () {\n            compositeRaf = 0;\n\n            composeNow();\n          }\n        );\n    }\n\n    function resize() {\n      if (\n        destroyed ||\n        isMobile()\n      ) {\n        return;\n      }\n\n      updateHeroGeometry();\n\n      dpr =\n        Math.min(\n          window.devicePixelRatio || 1,\n          1.2\n        );\n\n      spacing = 19;\n\n      canvas.width =\n        Math.max(\n          1,\n          Math.round(\n            width * dpr\n          )\n        );\n\n      canvas.height =\n        Math.max(\n          1,\n          Math.round(\n            height * dpr\n          )\n        );\n\n      canvas.style.width =\n        width + \"px\";\n\n      canvas.style.height =\n        height + \"px\";\n\n      baseDotsCanvas.width =\n        canvas.width;\n\n      baseDotsCanvas.height =\n        canvas.height;\n\n      dotsCanvas.width =\n        canvas.width;\n\n      dotsCanvas.height =\n        canvas.height;\n\n      glCanvas.width =\n        Math.max(\n          1,\n          Math.round(\n            width *\n            AURORA_SCALE\n          )\n        );\n\n      glCanvas.height =\n        Math.max(\n          1,\n          Math.round(\n            height *\n            AURORA_SCALE\n          )\n        );\n\n      gl.viewport(\n        0,\n        0,\n        glCanvas.width,\n        glCanvas.height\n      );\n\n      buildStaticDots();\n\n      if (\n        !pointerInitialized\n      ) {\n        targetX =\n          holeX =\n          width * 0.5;\n\n        targetY =\n          holeY =\n          height * 0.42;\n\n        pointerInitialized =\n          true;\n      }\n\n      if (pointerKnown) {\n        setPointerTarget(\n          lastClientX,\n          lastClientY\n        );\n      }\n\n      drawAurora();\n      requestComposite();\n    }\n\n    function drawAurora() {\n      if (\n        destroyed ||\n        isMobile()\n      ) {\n        return;\n      }\n\n      gl.useProgram(\n        program\n      );\n\n      gl.clearColor(\n        0,\n        0,\n        0,\n        0\n      );\n\n      gl.clear(\n        gl.COLOR_BUFFER_BIT\n      );\n\n      gl.uniform1f(\n        uTime,\n        performance.now() \/ 1000\n      );\n\n      gl.drawArrays(\n        gl.TRIANGLES,\n        0,\n        6\n      );\n    }\n\n    function auroraLoop() {\n      auroraTimer = 0;\n\n      if (\n        destroyed ||\n        isMobile() ||\n        !heroVisible ||\n        !pageVisible\n      ) {\n        return;\n      }\n\n      drawAurora();\n      requestComposite();\n\n      auroraTimer =\n        window.setTimeout(\n          auroraLoop,\n          AURORA_INTERVAL\n        );\n    }\n\n    function startAurora() {\n      if (\n        destroyed ||\n        isMobile() ||\n        !heroVisible ||\n        !pageVisible ||\n        auroraTimer\n      ) {\n        return;\n      }\n\n      drawAurora();\n      requestComposite();\n\n      auroraTimer =\n        window.setTimeout(\n          auroraLoop,\n          AURORA_INTERVAL\n        );\n    }\n\n    function stopAurora() {\n      if (auroraTimer) {\n        clearTimeout(\n          auroraTimer\n        );\n\n        auroraTimer = 0;\n      }\n    }\n\n    function updateCursor(dt) {\n      const follow =\n        1 -\n        Math.exp(\n          -20 * dt\n        );\n\n      holeX +=\n        (\n          targetX -\n          holeX\n        ) *\n        follow;\n\n      holeY +=\n        (\n          targetY -\n          holeY\n        ) *\n        follow;\n\n      const speed =\n        targetPointerAmount >\n        pointerAmount\n          ? 15\n          : 9;\n\n      pointerAmount +=\n        (\n          targetPointerAmount -\n          pointerAmount\n        ) *\n        (\n          1 -\n          Math.exp(\n            -speed * dt\n          )\n        );\n    }\n\n    function drawInteractiveDots(now) {\n      resetDotsCanvas();\n\n      dotsCtx.setTransform(\n        dpr,\n        0,\n        0,\n        dpr,\n        0,\n        0\n      );\n\n      const interactionRadius =\n        205;\n\n      const holeRadius =\n        33 +\n        Math.sin(\n          now \/\n          1000 *\n          1.8\n        ) *\n        1.3;\n\n      const redrawRadius =\n        interactionRadius +\n        spacing *\n        1.5;\n\n      dotsCtx.save();\n\n      dotsCtx.globalCompositeOperation =\n        \"destination-out\";\n\n      const erase =\n        dotsCtx.createRadialGradient(\n          holeX,\n          holeY,\n          0,\n\n          holeX,\n          holeY,\n          redrawRadius\n        );\n\n      erase.addColorStop(\n        0,\n        `rgba(0,0,0,${pointerAmount})`\n      );\n\n      erase.addColorStop(\n        0.74,\n        `rgba(0,0,0,${pointerAmount})`\n      );\n\n      erase.addColorStop(\n        1,\n        \"rgba(0,0,0,0)\"\n      );\n\n      dotsCtx.fillStyle =\n        erase;\n\n      dotsCtx.beginPath();\n\n      dotsCtx.arc(\n        holeX,\n        holeY,\n        redrawRadius,\n        0,\n        TAU\n      );\n\n      dotsCtx.fill();\n\n      dotsCtx.restore();\n\n      dotsCtx.globalCompositeOperation =\n        \"source-over\";\n\n      const minColumn =\n        Math.max(\n          0,\n          Math.floor(\n            (\n              holeX -\n              interactionRadius -\n              spacing\n            ) \/\n            spacing\n          )\n        );\n\n      const maxColumn =\n        Math.min(\n          Math.ceil(\n            width \/\n            spacing\n          ) + 1,\n\n          Math.ceil(\n            (\n              holeX +\n              interactionRadius +\n              spacing\n            ) \/\n            spacing\n          )\n        );\n\n      const minRow =\n        Math.max(\n          0,\n          Math.floor(\n            (\n              holeY -\n              interactionRadius -\n              spacing\n            ) \/\n            spacing\n          )\n        );\n\n      const maxRow =\n        Math.min(\n          Math.ceil(\n            height \/\n            spacing\n          ) + 1,\n\n          Math.ceil(\n            (\n              holeY +\n              interactionRadius +\n              spacing\n            ) \/\n            spacing\n          )\n        );\n\n      const maxDistance =\n        interactionRadius +\n        spacing;\n\n      const maxDistanceSquared =\n        maxDistance *\n        maxDistance;\n\n      for (\n        let row = minRow;\n        row <= maxRow;\n        row++\n      ) {\n        const baseY =\n          row *\n          spacing;\n\n        for (\n          let column = minColumn;\n          column <= maxColumn;\n          column++\n        ) {\n          const baseX =\n            column *\n            spacing;\n\n          const dx =\n            baseX -\n            holeX;\n\n          const dy =\n            baseY -\n            holeY;\n\n          const distanceSquared =\n            dx * dx +\n            dy * dy;\n\n          if (\n            distanceSquared >\n            maxDistanceSquared\n          ) {\n            continue;\n          }\n\n          const distance =\n            Math.sqrt(\n              distanceSquared\n            );\n\n          if (\n            distance <\n            holeRadius\n          ) {\n            continue;\n          }\n\n          let influence =\n            clamp(\n              1 -\n              distance \/\n              interactionRadius,\n              0,\n              1\n            );\n\n          influence =\n            influence *\n            influence *\n            pointerAmount;\n\n          const angle =\n            Math.atan2(\n              dy,\n              dx\n            );\n\n          const rotation =\n            influence *\n            0.74;\n\n          const push =\n            Math.sin(\n              influence *\n              Math.PI\n            ) *\n            32 *\n            pointerAmount;\n\n          const newDistance =\n            distance +\n            push;\n\n          const drawX =\n            holeX +\n            Math.cos(\n              angle +\n              rotation\n            ) *\n            newDistance;\n\n          const drawY =\n            holeY +\n            Math.sin(\n              angle +\n              rotation\n            ) *\n            newDistance;\n\n          const holeFade =\n            clamp(\n              (\n                distance -\n                holeRadius\n              ) \/\n              18,\n              0,\n              1\n            );\n\n          const opacity =\n            (\n              0.41 +\n              influence *\n              0.11\n            ) *\n            holeFade;\n\n          drawDot(\n            dotsCtx,\n            drawX,\n            drawY,\n\n            dotType(\n              column,\n              row\n            ),\n\n            opacity,\n\n            0.80 +\n            influence *\n            0.16\n          );\n        }\n      }\n    }\n\n    function dotsLoop() {\n      dotsTimer = 0;\n\n      if (\n        destroyed ||\n        isMobile() ||\n        !heroVisible ||\n        !pageVisible\n      ) {\n        return;\n      }\n\n      const now =\n        performance.now();\n\n      const dt =\n        clamp(\n          (\n            now -\n            lastDotsTime\n          ) \/\n          1000,\n          0.001,\n          0.05\n        );\n\n      lastDotsTime =\n        now;\n\n      updateCursor(dt);\n\n      if (\n        pointerAmount <\n        0.003 &&\n        targetPointerAmount === 0\n      ) {\n        pointerAmount = 0;\n\n        resetDotsCanvas();\n        requestComposite();\n\n        return;\n      }\n\n      drawInteractiveDots(\n        now\n      );\n\n      requestComposite();\n\n      dotsTimer =\n        window.setTimeout(\n          dotsLoop,\n          DOTS_INTERVAL\n        );\n    }\n\n    function startDots() {\n      if (\n        destroyed ||\n        isMobile() ||\n        !heroVisible ||\n        !pageVisible ||\n        dotsTimer\n      ) {\n        return;\n      }\n\n      lastDotsTime =\n        performance.now();\n\n      dotsLoop();\n    }\n\n    function stopDots() {\n      if (dotsTimer) {\n        clearTimeout(\n          dotsTimer\n        );\n\n        dotsTimer = 0;\n      }\n\n      pointerAmount = 0;\n      targetPointerAmount = 0;\n\n      if (!destroyed) {\n        resetDotsCanvas();\n        requestComposite();\n      }\n    }\n\n    function pointerEnter(event) {\n      if (\n        destroyed ||\n        isMobile()\n      ) {\n        return;\n      }\n\n      pointerKnown = true;\n\n      lastClientX =\n        event.clientX;\n\n      lastClientY =\n        event.clientY;\n\n      const inside =\n        setPointerTarget(\n          lastClientX,\n          lastClientY\n        );\n\n      if (!inside) {\n        return;\n      }\n\n      holeX =\n        targetX;\n\n      holeY =\n        targetY;\n\n      pointerAmount = 0;\n\n      startDots();\n    }\n\n    function pointerMove(event) {\n      if (\n        destroyed ||\n        isMobile()\n      ) {\n        return;\n      }\n\n      pointerKnown = true;\n\n      lastClientX =\n        event.clientX;\n\n      lastClientY =\n        event.clientY;\n\n      setPointerTarget(\n        lastClientX,\n        lastClientY\n      );\n\n      startDots();\n    }\n\n    function pointerLeave() {\n      if (\n        destroyed ||\n        isMobile()\n      ) {\n        return;\n      }\n\n      targetPointerAmount = 0;\n\n      startDots();\n    }\n\n    function onScroll() {\n      if (\n        destroyed ||\n        isMobile() ||\n        !pointerKnown ||\n        scrollRaf\n      ) {\n        return;\n      }\n\n      scrollRaf =\n        window.requestAnimationFrame(\n          function () {\n            scrollRaf = 0;\n\n            if (\n              destroyed ||\n              isMobile()\n            ) {\n              return;\n            }\n\n            const inside =\n              setPointerTarget(\n                lastClientX,\n                lastClientY\n              );\n\n            if (\n              inside ||\n              pointerAmount >\n              0.003\n            ) {\n              startDots();\n            }\n          }\n        );\n    }\n\n    function onResize() {\n      if (\n        destroyed ||\n        isMobile() ||\n        resizeRaf\n      ) {\n        return;\n      }\n\n      resizeRaf =\n        window.requestAnimationFrame(\n          function () {\n            resizeRaf = 0;\n\n            if (\n              destroyed ||\n              isMobile()\n            ) {\n              return;\n            }\n\n            resize();\n          }\n        );\n    }\n\n    function onVisibilityChange() {\n      pageVisible =\n        !document.hidden;\n\n      if (!pageVisible) {\n        stopAurora();\n        stopDots();\n\n        return;\n      }\n\n      if (\n        heroVisible &&\n        !isMobile()\n      ) {\n        startAurora();\n\n        if (\n          targetPointerAmount >\n          0 ||\n          pointerAmount >\n          0.003\n        ) {\n          startDots();\n        }\n      }\n    }\n\n    resize();\n\n    drawAurora();\n    requestComposite();\n\n    if (\n      \"IntersectionObserver\" in window\n    ) {\n      intersectionObserver =\n        new IntersectionObserver(\n          function (entries) {\n            const entry =\n              entries[0];\n\n            heroVisible =\n              Boolean(\n                entry &&\n                entry.isIntersecting\n              );\n\n            if (\n              heroVisible &&\n              pageVisible &&\n              !isMobile()\n            ) {\n              startAurora();\n\n              if (\n                targetPointerAmount >\n                0\n              ) {\n                startDots();\n              }\n            } else {\n              stopAurora();\n              stopDots();\n            }\n          },\n          {\n            threshold: 0.01\n          }\n        );\n\n      intersectionObserver.observe(\n        hero\n      );\n    } else {\n      heroVisible = true;\n    }\n\n    if (\n      \"ResizeObserver\" in window\n    ) {\n      resizeObserver =\n        new ResizeObserver(\n          onResize\n        );\n\n      resizeObserver.observe(\n        hero\n      );\n    }\n\n    hero.addEventListener(\n      \"pointerenter\",\n      pointerEnter,\n      {\n        passive: true\n      }\n    );\n\n    hero.addEventListener(\n      \"pointermove\",\n      pointerMove,\n      {\n        passive: true\n      }\n    );\n\n    hero.addEventListener(\n      \"pointerleave\",\n      pointerLeave,\n      {\n        passive: true\n      }\n    );\n\n    window.addEventListener(\n      \"scroll\",\n      onScroll,\n      {\n        passive: true\n      }\n    );\n\n    window.addEventListener(\n      \"resize\",\n      onResize,\n      {\n        passive: true\n      }\n    );\n\n    document.addEventListener(\n      \"visibilitychange\",\n      onVisibilityChange\n    );\n\n    if (\n      document.fonts &&\n      document.fonts.ready\n    ) {\n      document.fonts.ready.then(\n        function () {\n          if (\n            !destroyed &&\n            !isMobile()\n          ) {\n            updateHeroGeometry();\n\n            if (\n              pointerKnown\n            ) {\n              setPointerTarget(\n                lastClientX,\n                lastClientY\n              );\n            }\n          }\n        }\n      );\n    }\n\n    startAurora();\n\n    engineDestroy =\n      function () {\n        if (destroyed) {\n          return;\n        }\n\n        destroyed = true;\n\n        if (auroraTimer) {\n          clearTimeout(\n            auroraTimer\n          );\n\n          auroraTimer = 0;\n        }\n\n        if (dotsTimer) {\n          clearTimeout(\n            dotsTimer\n          );\n\n          dotsTimer = 0;\n        }\n\n        if (compositeRaf) {\n          cancelAnimationFrame(\n            compositeRaf\n          );\n\n          compositeRaf = 0;\n        }\n\n        if (scrollRaf) {\n          cancelAnimationFrame(\n            scrollRaf\n          );\n\n          scrollRaf = 0;\n        }\n\n        if (resizeRaf) {\n          cancelAnimationFrame(\n            resizeRaf\n          );\n\n          resizeRaf = 0;\n        }\n\n        hero.removeEventListener(\n          \"pointerenter\",\n          pointerEnter\n        );\n\n        hero.removeEventListener(\n          \"pointermove\",\n          pointerMove\n        );\n\n        hero.removeEventListener(\n          \"pointerleave\",\n          pointerLeave\n        );\n\n        window.removeEventListener(\n          \"scroll\",\n          onScroll\n        );\n\n        window.removeEventListener(\n          \"resize\",\n          onResize\n        );\n\n        document.removeEventListener(\n          \"visibilitychange\",\n          onVisibilityChange\n        );\n\n        if (resizeObserver) {\n          resizeObserver.disconnect();\n        }\n\n        if (intersectionObserver) {\n          intersectionObserver.disconnect();\n        }\n\n        if (positionBuffer) {\n          gl.deleteBuffer(\n            positionBuffer\n          );\n        }\n\n        if (program) {\n          gl.deleteProgram(\n            program\n          );\n        }\n\n        if (canvas.parentNode) {\n          canvas.remove();\n        }\n      };\n  }\n\n  function scheduleDesktopStart(\n    immediate\n  ) {\n    cancelPendingStart();\n\n    if (\n      isMobile()\n    ) {\n      return;\n    }\n\n    if (immediate) {\n      requestAnimationFrame(\n        function () {\n          requestAnimationFrame(\n            function () {\n              if (\n                !isMobile() &&\n                currentMode ===\n                \"desktop\"\n              ) {\n                createDesktopEngine();\n              }\n            }\n          );\n        }\n      );\n\n      return;\n    }\n\n    if (\n      \"requestIdleCallback\" in window\n    ) {\n      pendingIdle =\n        requestIdleCallback(\n          function () {\n            pendingIdle = null;\n\n            if (\n              !isMobile() &&\n              currentMode ===\n              \"desktop\"\n            ) {\n              createDesktopEngine();\n            }\n          },\n          {\n            timeout: 1600\n          }\n        );\n    } else {\n      pendingTimeout =\n        window.setTimeout(\n          function () {\n            pendingTimeout = null;\n\n            if (\n              !isMobile() &&\n              currentMode ===\n              \"desktop\"\n            ) {\n              createDesktopEngine();\n            }\n          },\n          650\n        );\n    }\n  }\n\n  function enterMobile() {\n    cancelPendingStart();\n    destroyEngine();\n\n    const hero =\n      getHero();\n\n    if (hero) {\n      removeOldCanvases(hero);\n    }\n\n    currentMode =\n      \"mobile\";\n  }\n\n  function enterDesktop(\n    initial\n  ) {\n    cancelPendingStart();\n    destroyEngine();\n\n    const hero =\n      getHero();\n\n    if (hero) {\n      removeOldCanvases(hero);\n    }\n\n    currentMode =\n      \"desktop\";\n\n    scheduleDesktopStart(\n      !initial\n    );\n  }\n\n  function syncMode(\n    initial\n  ) {\n    const nextMode =\n      isMobile()\n        ? \"mobile\"\n        : \"desktop\";\n\n    if (\n      !initial &&\n      nextMode === currentMode\n    ) {\n      return;\n    }\n\n    if (\n      nextMode === \"mobile\"\n    ) {\n      enterMobile();\n    } else {\n      enterDesktop(\n        initial\n      );\n    }\n  }\n\n  function onBreakpointChange() {\n    syncMode(false);\n  }\n\n  function onWindowResize() {\n    const nextMode =\n      isMobile()\n        ? \"mobile\"\n        : \"desktop\";\n\n    if (\n      nextMode !== currentMode\n    ) {\n      syncMode(false);\n    }\n  }\n\n  function boot() {\n    syncMode(true);\n\n    if (\n      typeof mobileQuery.addEventListener ===\n      \"function\"\n    ) {\n      mobileQuery.addEventListener(\n        \"change\",\n        onBreakpointChange\n      );\n    } else if (\n      typeof mobileQuery.addListener ===\n      \"function\"\n    ) {\n      mobileQuery.addListener(\n        onBreakpointChange\n      );\n    }\n\n    window.addEventListener(\n      \"resize\",\n      onWindowResize,\n      {\n        passive: true\n      }\n    );\n  }\n\n  window.__everiaHeroControllerDestroy =\n    function () {\n      cancelPendingStart();\n      destroyEngine();\n\n      window.removeEventListener(\n        \"resize\",\n        onWindowResize\n      );\n\n      if (\n        typeof mobileQuery.removeEventListener ===\n        \"function\"\n      ) {\n        mobileQuery.removeEventListener(\n          \"change\",\n          onBreakpointChange\n        );\n      } else if (\n        typeof mobileQuery.removeListener ===\n        \"function\"\n      ) {\n        mobileQuery.removeListener(\n          onBreakpointChange\n        );\n      }\n\n      if (\n        style.parentNode\n      ) {\n        style.remove();\n      }\n\n      window.__everiaHeroControllerDestroy =\n        null;\n    };\n\n  if (\n    document.readyState ===\n    \"loading\"\n  ) {\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      boot,\n      {\n        once: true\n      }\n    );\n  } else {\n    boot();\n  }\n})();\n<\/script><\/div><\/div>\n\n<a class=\"et_pb_icon_0 et_pb_icon et_animated et_clickable et_pb_module et_flex_module preset--module--divi-icon--default\" href=\"#mod\u00e8le-\u00e9conomique\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">G<\/span><\/span><\/a>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_1 et_pb_section et_section_regular et_flex_section preset--module--divi-section--default\" id=\"mod\u00e8le-\u00e9conomique\">\n<div class=\"et_pb_row_2 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_2 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_heading_1 et_pb_heading et_pb_module et_block_module preset--module--divi-heading--default\"><div class=\"et_pb_heading_container\"><h2 class=\"et_pb_module_header\">A project for your property?<\/h2><\/div><\/div>\n\n<div class=\"et_pb_text_1 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><p>From minor maintenance to major jobs, Everia helps you find the right professional for your project.<\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_3 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_3 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_clickable et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<ul class=\"et_pb_icon_list_0 et_pb_icon_list et_pb_module et_flex_module\">\n<li class=\"et_pb_icon_list_item_0 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">\uf071<\/span><div class=\"et_pb_icon_list_text\">Emergency<\/div><\/li>\n<\/ul>\n\n<div class=\"et_pb_icon_1 et_pb_icon et_pb_module et_flex_module preset--module--divi-icon--default\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">$<\/span><\/span><\/div>\n<\/div>\n\n<div class=\"et_pb_column_4 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_clickable et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<ul class=\"et_pb_icon_list_1 et_pb_icon_list et_pb_module et_flex_module\">\n<li class=\"et_pb_icon_list_item_1 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">\ue074<\/span><div class=\"et_pb_icon_list_text\">Major works<\/div><\/li>\n<\/ul>\n\n<div class=\"et_pb_icon_2 et_pb_icon et_pb_module et_flex_module preset--module--divi-icon--default\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">$<\/span><\/span><\/div>\n<\/div>\n\n<div class=\"et_pb_column_5 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_clickable et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<ul class=\"et_pb_icon_list_2 et_pb_icon_list et_pb_module et_flex_module\">\n<li class=\"et_pb_icon_list_item_2 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">\ue005<\/span><div class=\"et_pb_icon_list_text\">Small jobs<\/div><\/li>\n<\/ul>\n\n<div class=\"et_pb_icon_3 et_pb_icon et_pb_module et_flex_module preset--module--divi-icon--default\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">$<\/span><\/span><\/div>\n<\/div>\n\n<div class=\"et_pb_column_6 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_clickable et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<ul class=\"et_pb_icon_list_3 et_pb_icon_list et_pb_module et_flex_module\">\n<li class=\"et_pb_icon_list_item_3 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">\uf807<\/span><div class=\"et_pb_icon_list_text\">New construction<\/div><\/li>\n<\/ul>\n\n<div class=\"et_pb_icon_4 et_pb_icon et_pb_module et_flex_module preset--module--divi-icon--default\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">$<\/span><\/span><\/div>\n<\/div>\n\n<div class=\"et_pb_column_7 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_clickable et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<ul class=\"et_pb_icon_list_4 et_pb_icon_list et_pb_module et_flex_module\">\n<li class=\"et_pb_icon_list_item_4 et_pb_icon_list_item et_pb_module et_flex_module\"><span class=\"et-pb-icon\">\uf552<\/span><div class=\"et_pb_icon_list_text\">General Maintenance<\/div><\/li>\n<\/ul>\n\n<div class=\"et_pb_icon_5 et_pb_icon et_pb_module et_flex_module preset--module--divi-icon--default\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">$<\/span><\/span><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_4 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_8 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_0_wrapper preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc_wrapper\"><a class=\"et_pb_button_0 et_pb_button et_pb_bg_layout_dark et_pb_module et_block_module preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc\" href=\"https:\/\/everia.ca\/services\/\">View All<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_2 et_pb_section et_section_regular et_flex_section preset--module--divi-section--default\" id=\"fonctionnement\">\n<div class=\"et_pb_row_5 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_9 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_2 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><p><span style=\"font-weight: 400;\">SIMPLE AS THAT<\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_heading_2 et_pb_heading et_pb_module et_block_module preset--module--divi-heading--default\"><div class=\"et_pb_heading_container\"><h2 class=\"et_pb_module_header\">We help you find the right person for the job.<\/h2><\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_6 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_10 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet\">\n<div class=\"et_pb_icon_6 et_pb_icon et_pb_module et_flex_module preset--module--divi-icon--default\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">N<\/span><\/span><\/div>\n\n<div class=\"et_pb_heading_3 et_pb_heading et_pb_module et_flex_module preset--module--divi-heading--default\"><div class=\"et_pb_heading_container\"><h3 class=\"et_pb_module_header\">01 \u2014 Describe your project<\/h3><\/div><\/div>\n\n<div class=\"et_pb_text_3 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><p><span style=\"font-weight: 400;\">Simply tell us what you want to do, repair or improve in your home.  <\/p>\n<p><\/span><span style=\"font-weight: 400;\">No need to know exactly what type of contractor you're looking for.<\/span><\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_11 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet\">\n<div class=\"et_pb_icon_7 et_pb_icon et_pb_module et_flex_module preset--module--divi-icon--default\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">N<\/span><\/span><\/div>\n\n<div class=\"et_pb_heading_4 et_pb_heading et_pb_module et_flex_module preset--module--divi-heading--default\"><div class=\"et_pb_heading_container\"><h3 class=\"et_pb_module_header\">02 \u2014 Finding the right partner<\/h3><\/div><\/div>\n\n<div class=\"et_pb_text_4 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><p>Depending on your project, your region, the type of property and your needs, we look for the most suitable contractor in our network.<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_12 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet\">\n<div class=\"et_pb_icon_8 et_pb_icon et_pb_module et_flex_module preset--module--divi-icon--default\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">N<\/span><\/span><\/div>\n\n<div class=\"et_pb_heading_5 et_pb_heading et_pb_module et_flex_module preset--module--divi-heading--default\"><div class=\"et_pb_heading_container\"><h3 class=\"et_pb_module_header\">03 \u2014 We put you in touch<\/h3><\/div><\/div>\n\n<div class=\"et_pb_text_5 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><p><span style=\"font-weight: 400;\">Talk directly to the contractor, get your estimate and plan your work.<\/span><\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_13 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_8_24 et_flex_column_8_24_tablet\">\n<div class=\"et_pb_icon_9 et_pb_icon et_pb_module et_flex_module preset--module--divi-icon--default\"><span class=\"et_pb_icon_wrap\"><span class=\"et-pb-icon\">N<\/span><\/span><\/div>\n\n<div class=\"et_pb_heading_6 et_pb_heading et_pb_module et_flex_module preset--module--divi-heading--default\"><div class=\"et_pb_heading_container\"><h3 class=\"et_pb_module_header\">04 \u2014 Claiming your points<\/h3><\/div><\/div>\n\n<div class=\"et_pb_text_6 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><p><span style=\"font-weight: 400;\">Once the job is finished, simply send us your invoice as well as the before\/after photos and your review to <strong>get a 3% discount<\/strong> for your next projects.<\/span><\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_7 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_14 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_1_wrapper preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc_wrapper\"><a class=\"et_pb_button_1 et_pb_button et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc\" href=\"\/#contact\">Start your work<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_3 et_pb_section et_section_regular et_flex_section preset--module--divi-section--default\">\n<div class=\"et_pb_row_8 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_15 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_heading_7 et_pb_heading et_pb_module et_block_module preset--module--divi-heading--default\"><div class=\"et_pb_heading_container\"><h2 class=\"et_pb_module_header\">Finding an entrepreneur shouldn't be a job in itself.<\/h2><\/div><\/div>\n\n<div class=\"et_pb_text_7 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><p><span style=\"font-weight: 400;\">Search on Google. Ask for recommendations. Write in Facebook groups. Call multiple companies. Wait for feedback.    <\/span><\/p>\n<p><span style=\"font-weight: 400;\">With the Everia Network, you simply start by telling us what you need.<\/span><\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_9 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_16 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_8 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h3><span style=\"font-weight: 400;\">A conversation rather than a search<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">You don't have to go through a list of contractors and try to figure out who to call yourself.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Describe your project. We help you get started in the right direction. <\/span><\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_17 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_9 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h3><span style=\"font-weight: 400;\">Des partenaires choisis pour leur travail<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Nous ne voulons pas simplement avoir le plus gros r\u00e9pertoire possible.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous cherchons des partenaires reconnus pour la <strong>qualit\u00e9<\/strong> de leur travail, leur s\u00e9rieux et leurs ant\u00e9c\u00e9dents.<\/span><span style=\"font-weight: 400;\"><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Lorsque le type de travaux n\u00e9cessite des licences ou qualifications particuli\u00e8res, nous nous assurons que le partenaire poss\u00e8de celles qui sont n\u00e9cessaires.<\/span><span style=\"font-weight: 400;\"><\/span><span style=\"font-weight: 400;\"><\/span><\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_18 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_10 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h3><span style=\"font-weight: 400;\">A network for all your projects<\/span><\/h3>\n<p>Your home today. A rental building tomorrow. Another project later.  <\/p>\n<p>Instead of starting your search every time, come back to the Everia Network for your various works.<\/p>\n<\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_19 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_11 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h3><span style=\"font-weight: 400;\">Present throughout Quebec<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The Everia Network is designed to connect owners, investors and entrepreneurs in the different regions of Quebec.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">And the bigger the network, the more possibilities grow with it.<\/span><\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_10 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_20 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_2_wrapper preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc_wrapper\"><a class=\"et_pb_button_2 et_pb_button et_pb_bg_layout_dark et_pb_module et_block_module preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc\" href=\"\/#contact\">Start your work<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"et_pb_section_5 et_pb_section et_section_regular et_block_section preset--module--divi-section--default\">\n<div class=\"et_pb_row_15 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_25 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_heading_9 et_pb_heading et_pb_module et_block_module preset--module--divi-heading--db963588-d74c-47af-af43-ad21ac04a84e\"><div class=\"et_pb_heading_container\"><h4 class=\"et_pb_module_header\">REAL ESTATE INVESTORS<\/h4><\/div><\/div>\n\n<div class=\"et_pb_blurb_0 et_pb_blurb et_pb_bg_layout_dark et_pb_blurb_position_left et_pb_module et_flex_module preset--module--divi-blurb--default\"><div class=\"et_pb_blurb_content et_flex_module\"><div class=\"et_pb_blurb_container\"><h4 class=\"et_pb_module_header\">Your work must support the profitability of your properties.<\/h4><div class=\"et_pb_blurb_description\"><p>Whether you own a plex, a rental building or several properties, the Everia Network helps you find the right partners for your renovations, maintenance and improvement projects.<\/p>\n<p><strong>A construction network designed for owners and <span style=\"color: #00ff00;\">real estate investors<\/span>.<\/strong><\/p>\n<\/div><\/div><\/div><\/div>\n\n<div class=\"et_pb_group_0 et_pb_group et_pb_module et_flex_group et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_blurb_1 et_pb_blurb et_pb_bg_layout_dark et_pb_blurb_position_left et_pb_module et_flex_module preset--module--divi-blurb--default\"><div class=\"et_pb_blurb_content et_flex_module\"><div class=\"et_pb_main_blurb_image et_animated\"><span class=\"et_pb_image_wrap\"><span class=\"et-pb-icon\">\uf0c0<\/span><\/span><\/div><div class=\"et_pb_blurb_container\"><h3 class=\"et_pb_module_header\">A network you can reuse<\/h3><div class=\"et_pb_blurb_description\"><p><b>Less time to start your search again.<\/b><\/p>\n<\/div><\/div><\/div><\/div>\n\n<div class=\"et_pb_blurb_2 et_pb_blurb et_pb_bg_layout_dark et_pb_blurb_position_left et_pb_module et_flex_module preset--module--divi-blurb--default\"><div class=\"et_pb_blurb_content et_flex_module\"><div class=\"et_pb_main_blurb_image et_animated\"><span class=\"et_pb_image_wrap\"><span class=\"et-pb-icon\">\uf7d9<\/span><\/span><\/div><div class=\"et_pb_blurb_container\"><h3 class=\"et_pb_module_header\">Partners for different needs<\/h3><div class=\"et_pb_blurb_description\"><p><b>Maintenance, renovation, repair, improvement.<\/b><\/p>\n<\/div><\/div><\/div><\/div>\n\n<div class=\"et_pb_blurb_3 et_pb_blurb et_pb_bg_layout_dark et_pb_blurb_position_left et_pb_module et_flex_module preset--module--divi-blurb--default\"><div class=\"et_pb_blurb_content et_flex_module\"><div class=\"et_pb_main_blurb_image et_animated\"><span class=\"et_pb_image_wrap\"><span class=\"et-pb-icon\">\uf155<\/span><\/span><\/div><div class=\"et_pb_blurb_container\"><h3 class=\"et_pb_module_header\">Benefits that follow your projects<\/h3><div class=\"et_pb_blurb_description\"><p><b>Rewards applicable to future work according to the terms of the program.<\/b><\/p>\n<\/div><\/div><\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_4_wrapper preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc_wrapper\"><a class=\"et_pb_button_4 et_pb_button et_pb_bg_layout_dark et_pb_module et_block_module preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc\" href=\"\/#contact\">Talk about my properties<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_6 et_pb_section et_section_regular et_block_section preset--module--divi-section--default\">\n<div class=\"et_pb_row_16 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_26 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_2_5 et_flex_column_2_5_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_heading_10 et_pb_heading et_pb_module et_block_module preset--module--divi-heading--db963588-d74c-47af-af43-ad21ac04a84e\"><div class=\"et_pb_heading_container\"><h4 class=\"et_pb_module_header\">You just need to tell us what's going on in your home.<\/h4><\/div><\/div>\n\n<div class=\"et_pb_blurb_4 et_pb_blurb et_pb_bg_layout_dark et_pb_blurb_position_left et_pb_module et_flex_module preset--module--divi-blurb--default\"><div class=\"et_pb_blurb_content et_flex_module\"><div class=\"et_pb_blurb_container\"><h4 class=\"et_pb_module_header\">No need to know who to call.<\/h4><div class=\"et_pb_blurb_description\"><p data-start=\"514\" data-end=\"581\" class=\"PDq2pG_selectionAnchorContainer\">You just need to tell us what's going on in your home.<span aria-hidden=\"true\" class=\"PDq2pG_selectionAnchor\"><\/span><\/p>\n<p data-start=\"583\" data-end=\"720\">Whether you know exactly what work you want to do or you only have one problem to solve, <strong data-start=\"695\" data-end=\"720\">describe it to Everia.<\/strong><\/p>\n<\/div><\/div><\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_5_wrapper preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc_wrapper\"><a class=\"et_pb_button_5 et_pb_button et_pb_bg_layout_dark et_pb_module et_block_module preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc\" href=\"\/#contact\">Talk about my project<\/a><\/div>\n<\/div>\n\n<div class=\"et_pb_column_27 et_pb_column et-last-child et_block_column et_pb_css_mix_blend_mode_passthrough et_flex_column_3_5 et_flex_column_3_5_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_image_0 et_pb_image et_pb_module et_block_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/everia.ca\/wp-content\/uploads\/2026\/07\/Comment-arreter-de-perdre-des-soumissions-en-construction-et-en-paysagement-au-Quebec-scaled.jpg\" alt=\"How to Stop Losing Construction and Landscaping Bids in Quebec\" title=\"How to Stop Losing Construction and Landscaping Bids in Quebec\" width=\"2560\" height=\"1709\" srcset=\"https:\/\/everia.ca\/wp-content\/uploads\/2026\/07\/Comment-arreter-de-perdre-des-soumissions-en-construction-et-en-paysagement-au-Quebec-scaled.jpg 2560w, https:\/\/everia.ca\/wp-content\/uploads\/2026\/07\/Comment-arreter-de-perdre-des-soumissions-en-construction-et-en-paysagement-au-Quebec-1280x855.jpg 1280w, https:\/\/everia.ca\/wp-content\/uploads\/2026\/07\/Comment-arreter-de-perdre-des-soumissions-en-construction-et-en-paysagement-au-Quebec-980x654.jpg 980w, https:\/\/everia.ca\/wp-content\/uploads\/2026\/07\/Comment-arreter-de-perdre-des-soumissions-en-construction-et-en-paysagement-au-Quebec-480x320.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) and (max-width: 980px) 980px, (min-width: 981px) and (max-width: 1280px) 1280px, (min-width: 1281px) 2560px, 100vw\" class=\"wp-image-978\" \/><\/span><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_17 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_28 et_pb_column et_block_column et_pb_css_mix_blend_mode_passthrough et_flex_column_2_5 et_flex_column_2_5_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_image_1 et_pb_image et_pb_module et_block_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/everia.ca\/wp-content\/uploads\/2026\/09\/conversation-reseau-everia.png\" alt=\"conversation-network-everia\" title=\"conversation-network-everia\" width=\"810\" height=\"1010\" srcset=\"https:\/\/everia.ca\/wp-content\/uploads\/2026\/09\/conversation-reseau-everia.png 810w, https:\/\/everia.ca\/wp-content\/uploads\/2026\/09\/conversation-reseau-everia-480x599.png 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 810px, 100vw\" class=\"wp-image-1215\" \/><\/span><\/div>\n<\/div>\n\n<div class=\"et_pb_column_29 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_3_5 et_flex_column_3_5_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_heading_11 et_pb_heading et_pb_module et_block_module preset--module--divi-heading--db963588-d74c-47af-af43-ad21ac04a84e\"><div class=\"et_pb_heading_container\"><h4 class=\"et_pb_module_header\">YOUR BENEFITS WITH EVERIA<\/h4><\/div><\/div>\n\n<div class=\"et_pb_blurb_5 et_pb_blurb et_pb_bg_layout_dark et_pb_blurb_position_left et_pb_module et_flex_module preset--module--divi-blurb--default\"><div class=\"et_pb_blurb_content et_flex_module\"><div class=\"et_pb_blurb_container\"><h4 class=\"et_pb_module_header\">REWARDS \/ VIP<\/h4><div class=\"et_pb_blurb_description\"><p><span style=\"font-weight: 400;\">The Everia Network is <\/span><b>completely free<\/b> to use<span style=\"font-weight: 400;\">. And when you carry out your work with a partner of the network, you can also take advantage of Everia rewards.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Leave a review, share the before\/after photos of your project, and provide your eligible invoice to get <\/span><b>up to 3% in rewards<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Your accumulated rewards can then be used for future work with the Everia Network.<\/span><\/p>\n<\/div><\/div><\/div><\/div>\n\n<div class=\"et_pb_blurb_6 et_pb_blurb et_pb_bg_layout_dark et_pb_blurb_position_left et_pb_module et_flex_module preset--module--divi-blurb--default\"><div class=\"et_pb_blurb_content et_flex_module\"><div class=\"et_pb_blurb_container\"><h3 class=\"et_pb_module_header\">Even more benefits with Everia VIP<\/h3><div class=\"et_pb_blurb_description\"><p><span style=\"font-weight: 400;\">Everia also offers <\/span><b>VIP and VIP+<\/b> packages<span style=\"font-weight: 400;\">, designed to offer even more benefits to members of the network.<\/span><\/p>\n<p><b>New member? Use the code <\/b><span style=\"color: #00ff00;\"><b>NEWMEMBER<\/b><\/span><b> in the chat to claim your VIP welcome offer.<\/b><\/p>\n<p><b>Do you have several projects?  <\/b><b>Your rewards can be reused on future eligible work in the Everia Network.<\/b><\/p>\n<\/div><\/div><\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_6_wrapper preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc_wrapper\"><a class=\"et_pb_button_6 et_pb_button et_pb_bg_layout_dark et_pb_module et_block_module preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc\" href=\"\/#contact\">Discover the rewards<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_7 et_pb_section et_section_regular et_flex_section preset--module--divi-section--default\" id=\"mod\u00e8le-\u00e9conomique\">\n<div class=\"et_pb_row_18 et_pb_row et_block_row\" id=\"temoignages\">\n<div class=\"et_pb_column_30 et_pb_column et_pb_column_4_4 et-last-child et_block_column et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_heading_12 et_pb_heading et_pb_module et_block_module preset--module--divi-heading--db963588-d74c-47af-af43-ad21ac04a84e\"><div class=\"et_pb_heading_container\"><h4 class=\"et_pb_module_header\">THEY TRUST THE EVERIA NETWORK<\/h4><\/div><\/div>\n\n<div class=\"et_pb_heading_13 et_pb_heading et_pb_module et_block_module preset--module--divi-heading--default\"><div class=\"et_pb_heading_container\"><h2 class=\"et_pb_module_header\">A simple experience, from the first message to the project.<\/h2><\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_19 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_31 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_testimonial_0 et_pb_testimonial et_pb_bg_layout_dark et_pb_module et_flex_module preset--module--divi-testimonial--default\"><div class=\"et_pb_testimonial_inner\"><div class=\"et_pb_testimonial_portrait\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/everia.ca\/wp-content\/uploads\/2026\/05\/logo-DDL-1.png\" width=\"300\" height=\"300\" srcset=\"https:\/\/everia.ca\/wp-content\/uploads\/2026\/05\/logo-DDL-1.png 300w, https:\/\/everia.ca\/wp-content\/uploads\/2026\/05\/logo-DDL-1-150x150.png 150w\" sizes=\"(max-width: 300px) 100vw, 300px\" class=\"wp-image-366\" \/><\/div><div class=\"et_pb_testimonial_description et_flex_module\"><div class=\"et_pb_testimonial_description_inner\"><div class=\"et_pb_testimonial_content\"><p>\"<span>One of the best investments I have made for Am\u00e9nagement DDL\"<\/span><\/p>\n<\/div><\/div><div class=\"et_pb_testimonial_author\">Juan Jos\u00e9<\/div><div class=\"et_pb_testimonial_meta\"><span class=\"et_pb_testimonial_position\">President<\/span><span class=\"et_pb_testimonial_separator\">, <\/span><span class=\"et_pb_testimonial_company\">DDL Layout<\/span><\/div><\/div><\/div><\/div>\n<\/div>\n\n<div class=\"et_pb_column_32 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_text_14 et_pb_text et_pb_bg_layout_light et_pb_module et_flex_module preset--module--divi-text--default\"><div class=\"et_pb_text_inner\"><h4><span>More than <\/span><strong><strong style=\"color: var(--gcid-secondary-color);\">$200,000 <\/strong><\/strong><span>in pipeline<\/span> <span>since May 2026<\/span><\/h4>\n<\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_7_wrapper preset--module--divi-button--default_wrapper\"><a class=\"et_pb_button_7 et_pb_button et_pb_bg_layout_light et_pb_module et_block_module preset--module--divi-button--default\" href=\"https:\/\/amenagementddl.com\/\" target=\"_blank\" rel=\"noopener\">See our partner&#039;s website<\/a><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_20 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_33 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_code_2 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><link data-noptimize=\"1\" data-no-optimize=\"1\" data-no-minify=\"1\" data-no-defer=\"1\" rel=\"stylesheet\" href=\"https:\/\/everia.ca\/wp-content\/uploads\/trustindex-google-widget.css?1787252900\" media=\"all\"><pre class=\"ti-widget\"><div style=\"opacity: 0;height: 0 !important;overflow: hidden !important\" data-css-url=\"https:\/\/everia.ca\/wp-content\/uploads\/trustindex-google-widget.css?1787252900\" class=\" ti-widget  ti-goog ti-review-text-mode-readmore ti-text-align-left\" data-no-translation=\"true\" data-time-locale=\"il y a %d %s|aujourd&apos;hui|jour|jours|semaine|semaines|mois|mois|ann\u00e9e|ans\" data-plugin-version=\"14.2\" data-layout-id=\"4\" data-layout-category=\"slider\" data-set-id=\"light-background\" data-pid=\"wp-widget\" data-language=\"fr\" data-close-locale=\"Fermer\" data-review-target-width=\"300\" data-css-version=\"2\" data-reply-by-locale=\"R\u00e9ponse du propri\u00e9taire\" data-only-rating-locale=\"Cet utilisateur a uniquement laiss\u00e9 une \u00e9valuation.\" data-pager-autoplay-timeout=\"6\"> <div class=\"ti-widget-container ti-col-3\"> <div class=\"ti-reviews-container\"> <div class=\"ti-controls\"> <div class=\"ti-next\" aria-label=\"Avis suivante\" role=\"button\" tabindex=\"0\"><\/div> <div class=\"ti-prev\" aria-label=\"Avis pr\u00e9c\u00e9dent\" role=\"button\" tabindex=\"0\"><\/div> <\/div> <div class=\"ti-reviews-container-wrapper\">  <div data-empty=\"0\" data-time=\"1791331200\" class=\"ti-review-item source-Google ti-image-layout-thumbnail\" data-id=\"cfcd208495d565ef66e7dff9f98764da\" data-language=\"\"> <div class=\"ti-inner\"> <div class=\"ti-review-header\"> <div class=\"ti-platform-icon ti-with-tooltip\"> <span class=\"ti-tooltip\">Publi\u00e9 sur Google<\/span> <img decoding=\"async\" class=\"skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/icon.svg\" alt=\"Google\" width=\"20\" height=\"20\" loading=\"lazy\" \/> <\/div> <div class=\"ti-profile-img\"> <img decoding=\"async\" class=\"skip-lazy\" src=\"https:\/\/lh3.googleusercontent.com\/a-\/ALV-UjVNQBjlBljwvsidoE9XM1eBeq36vUTXRpvkCne5O71wZdrA0Xs=w40-h40-c-rp-mo-ba12-br100\" srcset=\"https:\/\/lh3.googleusercontent.com\/a-\/ALV-UjVNQBjlBljwvsidoE9XM1eBeq36vUTXRpvkCne5O71wZdrA0Xs=w80-h80-c-rp-mo-ba12-br100 2x\" alt=\"Alexandre Goulet profile picture\" loading=\"lazy\" \/> <\/div> <div class=\"ti-profile-details\"> <div class=\"ti-name\"> Alexandre Goulet <\/div> <div class=\"ti-date\"><\/div> <\/div> <\/div> <span class=\"ti-stars\"><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 1\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 2\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 3\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 4\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 5\" width=\"17\" height=\"17\" loading=\"lazy\" \/><span class=\"ti-verified-review ti-verified-platform\"><span class=\"ti-verified-tooltip\">Trustindex v\u00e9rifie que la source originale de l'avis est Google.<\/span><\/span><\/span> <div class=\"ti-review-text-container ti-review-content\"><!-- R-CONTENT -->Une \u00e9quipe incroyable et a l\u2019\u00e9coute des besoins. Ils sont l\u00e0 pour t\u2019aider \u00e0 \u00e9voluer et il le font avec brio. Tr\u00e8s h\u00e2te de voir ce que la route nous r\u00e9serve pour les ann\u00e9es \u00e0 venir. \ud83d\ude4f\ud83c\udffc<!-- R-CONTENT --><\/div> <span class=\"ti-read-more\" data-container=\".ti-review-content\" data-collapse-text=\"Cacher\" data-open-text=\"Lire la suite\"><\/span> <\/div> <\/div>  <div data-empty=\"0\" data-time=\"1781222400\" class=\"ti-review-item source-Google ti-image-layout-thumbnail\" data-id=\"cfcd208495d565ef66e7dff9f98764da\" data-language=\"\"> <div class=\"ti-inner\"> <div class=\"ti-review-header\"> <div class=\"ti-platform-icon ti-with-tooltip\"> <span class=\"ti-tooltip\">Publi\u00e9 sur Google<\/span> <img decoding=\"async\" class=\"skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/icon.svg\" alt=\"Google\" width=\"20\" height=\"20\" loading=\"lazy\" \/> <\/div> <div class=\"ti-profile-img\"> <img decoding=\"async\" class=\"skip-lazy\" src=\"https:\/\/lh3.googleusercontent.com\/a\/ACg8ocJ29xEAtCfNMlbuof0NUTsFzk4SuMFYHk72xU31D3nAcc1qgQ=w40-h40-c-rp-mo-ba12-br100\" srcset=\"https:\/\/lh3.googleusercontent.com\/a\/ACg8ocJ29xEAtCfNMlbuof0NUTsFzk4SuMFYHk72xU31D3nAcc1qgQ=w80-h80-c-rp-mo-ba12-br100 2x\" alt=\"alex pierre profile picture\" loading=\"lazy\" \/> <\/div> <div class=\"ti-profile-details\"> <div class=\"ti-name\"> alex pierre <\/div> <div class=\"ti-date\"><\/div> <\/div> <\/div> <span class=\"ti-stars\"><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 1\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 2\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 3\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 4\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 5\" width=\"17\" height=\"17\" loading=\"lazy\" \/><span class=\"ti-verified-review ti-verified-platform\"><span class=\"ti-verified-tooltip\">Trustindex v\u00e9rifie que la source originale de l'avis est Google.<\/span><\/span><\/span> <div class=\"ti-review-text-container ti-review-content\"><!-- R-CONTENT -->I highly recommend everia They designed my website and are currently working on another project for my business, and the experience has been excellent from start to finish.&#010;Their team is professional, responsive, and attentive to detail. They took the time to understand my needs and delivered quality work that reflects my business well. Communication has been clear throughout the process, and they have always been available to answer questions and provide guidance.&#010;If you're looking for a reliable company for web design, digital marketing, or business development services, I would not hesitate to recommend Agence Everia. I look forward to continuing to work with them on future projects.&#010;\u2014 Alex Pierre, Dahomey Construction Inc.<!-- R-CONTENT --><\/div> <span class=\"ti-read-more\" data-container=\".ti-review-content\" data-collapse-text=\"Cacher\" data-open-text=\"Lire la suite\"><\/span> <\/div> <\/div>  <div data-empty=\"0\" data-time=\"1781222400\" class=\"ti-review-item source-Google ti-image-layout-thumbnail\" data-id=\"cfcd208495d565ef66e7dff9f98764da\" data-language=\"\"> <div class=\"ti-inner\"> <div class=\"ti-review-header\"> <div class=\"ti-platform-icon ti-with-tooltip\"> <span class=\"ti-tooltip\">Publi\u00e9 sur Google<\/span> <img decoding=\"async\" class=\"skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/icon.svg\" alt=\"Google\" width=\"20\" height=\"20\" loading=\"lazy\" \/> <\/div> <div class=\"ti-profile-img\"> <img decoding=\"async\" class=\"skip-lazy\" src=\"https:\/\/lh3.googleusercontent.com\/a-\/ALV-UjWoTTm-bokYdIkrYEpbn2GQl1DEwrLx_yYpk_gvLg_MRYZu6TU=w40-h40-c-rp-mo-br100\" srcset=\"https:\/\/lh3.googleusercontent.com\/a-\/ALV-UjWoTTm-bokYdIkrYEpbn2GQl1DEwrLx_yYpk_gvLg_MRYZu6TU=w80-h80-c-rp-mo-br100 2x\" alt=\"Juan Jos\u00e9 Vargas profile picture\" loading=\"lazy\" \/> <\/div> <div class=\"ti-profile-details\"> <div class=\"ti-name\"> Juan Jos\u00e9 Vargas <\/div> <div class=\"ti-date\"><\/div> <\/div> <\/div> <span class=\"ti-stars\"><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 1\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 2\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 3\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 4\" width=\"17\" height=\"17\" loading=\"lazy\" \/><img decoding=\"async\" class=\"ti-star skip-lazy\" src=\"https:\/\/cdn.trustindex.io\/assets\/platform\/Google\/star\/f.svg\" alt=\"Google star 5\" width=\"17\" height=\"17\" loading=\"lazy\" \/><span class=\"ti-verified-review ti-verified-platform\"><span class=\"ti-verified-tooltip\">Trustindex v\u00e9rifie que la source originale de l'avis est Google.<\/span><\/span><\/span> <div class=\"ti-review-text-container ti-review-content\"><!-- R-CONTENT -->Un des meilleurs investissements que j'ai faits pour Am\u00e9nagement DDL. Avant de travailler avec l'\u00e9quipe d'Everia, je manquais souvent des opportunit\u00e9s parce que je n'avais pas le temps de faire les suivis quand j'\u00e9tais sur les chantiers. Depuis quelques mois, ils s'occupent de cette partie et \u00e7a a vraiment fait une diff\u00e9rence. On est seulement au d\u00e9but juin et j'ai d\u00e9j\u00e0 sign\u00e9 plusieurs contrats rentables. \u00c7a me permet de me concentrer sur mes projets pendant qu'ils g\u00e8rent l'acquisition et le suivi des clients. Je recommande fortement leur \u00e9quipe.<!-- R-CONTENT --><\/div> <span class=\"ti-read-more\" data-container=\".ti-review-content\" data-collapse-text=\"Cacher\" data-open-text=\"Lire la suite\"><\/span> <\/div> <\/div>  <\/div> <div class=\"ti-controls-line\"> <div class=\"dot\"><\/div> <\/div> <\/div>    <\/div> <\/div> <\/pre><pre class=\"ti-hidden-markup\" hidden style=\"display: none\"><script>\n(function () { if (window.tiLoaderFallback) { return; } window.tiLoaderFallback = true; function tiLoadLoader() { if (window.TrustindexWidget || document.querySelector('script[src*=\"https:\/\/cdn.trustindex.io\/loader.js\"]')) { return; } let script = document.createElement(\"script\"); script.async = true; script.src = \"https:\/\/cdn.trustindex.io\/loader.js\"; script.setAttribute(\"data-ccm-injected\", \"1\"); document.head.appendChild(script); } if (\"loading\" === document.readyState) { document.addEventListener(\"DOMContentLoaded\", tiLoadLoader); } else { tiLoadLoader(); } })();\n<\/script>\n<\/pre><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_8 et_pb_section et_section_regular et_block_section preset--module--divi-section--default\">\n<div class=\"et_pb_row_21 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_34 et_pb_column et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_blurb_7 et_pb_blurb et_pb_bg_layout_dark et_pb_blurb_position_left et_pb_module et_flex_module preset--module--divi-blurb--default\"><div class=\"et_pb_blurb_content et_flex_module\"><div class=\"et_pb_blurb_container\"><h4 class=\"et_pb_module_header\">The right contractor makes all the difference.<\/h4><div class=\"et_pb_blurb_description\"><p>Votre propri\u00e9t\u00e9 m\u00e9rite plus qu\u2019un entrepreneur choisi au hasard.<\/p>\n<p><span style=\"font-weight: 400;\">C\u2019est pourquoi Everia cherche \u00e0 b\u00e2tir son r\u00e9seau avec des partenaires qui se d\u00e9marquent par la qualit\u00e9 de leur travail, leur s\u00e9rieux et leur r\u00e9putation.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nous examinons la <span style=\"color: #00ff00;\"><strong>qualit\u00e9<\/strong><\/span> des travaux et les <strong><span style=\"color: #00ff00;\">ant\u00e9c\u00e9dents<\/span><\/strong> des partenaires et, lorsque les travaux l\u2019exigent, les qualifications n\u00e9cessaires pour les r\u00e9aliser.<\/span><\/p>\n<p><span style=\"color: #00ff00;\"><strong>Notre objectif <\/strong><\/span><b>: vous mettre en relation avec quelqu\u2019un avec qui nous serions nous-m\u00eames \u00e0 l\u2019aise de faire affaire.<\/b><\/p>\n<\/div><\/div><\/div><\/div>\n\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_8_wrapper preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc_wrapper\"><a class=\"et_pb_button_8 et_pb_button et_pb_bg_layout_dark et_pb_module et_block_module preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc\" href=\"\/#contact\">Talk about my project<\/a><\/div>\n<\/div>\n\n<div class=\"et_pb_column_35 et_pb_column et-last-child et_block_column et_pb_css_mix_blend_mode_passthrough et_flex_column_12_24 et_flex_column_12_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_image_2 et_pb_image et_pb_module et_block_module\"><span class=\"et_pb_image_wrap\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/everia.ca\/wp-content\/uploads\/2026\/04\/secretaire.jpg\" alt=\"Secretary Everia\" title=\"Secretary\" width=\"810\" height=\"810\" srcset=\"https:\/\/everia.ca\/wp-content\/uploads\/2026\/04\/secretaire.jpg 810w, https:\/\/everia.ca\/wp-content\/uploads\/2026\/04\/secretaire-480x480.jpg 480w\" sizes=\"(min-width: 0px) and (max-width: 480px) 480px, (min-width: 481px) 810px, 100vw\" class=\"wp-image-211\" \/><\/span><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_section_9 et_pb_section et_section_regular et_flex_section preset--module--divi-section--default\">\n<div class=\"et_pb_row_22 et_pb_row et_block_row\" id=\"temoignages\">\n<div class=\"et_pb_column_36 et_pb_column et_pb_column_4_4 et-last-child et_block_column et_pb_css_mix_blend_mode_passthrough\">\n<div class=\"et_pb_heading_14 et_pb_heading et_pb_module et_block_module preset--module--divi-heading--default\"><div class=\"et_pb_heading_container\"><h2 class=\"et_pb_module_header\">Have questions?<\/h2><\/div><\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_23 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_37 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_accordion_0 et_pb_accordion et_pb_module et_flex_module preset--module--divi-accordion--default\">\n<div class=\"et_pb_accordion_item_0 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_open et_flex_module preset--module--divi-accordion-item--default\"><h5 class=\"et_pb_toggle_title\">Can Everia Network help me with multiple properties?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Yes. If you are a property owner or real estate investor, you can use the network for different projects and properties, depending on the partners available in your area. <\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_1 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module preset--module--divi-accordion-item--default\"><h5 class=\"et_pb_toggle_title\">Do you work with plex and rental property owners?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p>Yes, as long as the need is in the residential services covered by the network.<\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_2 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module preset--module--divi-accordion-item--default\"><h5 class=\"et_pb_toggle_title\">What types of projects can I entrust to the Everia Network?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p><span style=\"font-weight: 400;\">The Network covers several categories of residential work: renovation, landscaping, heat pumps, painting, foundations, drains, electricity, trees and many other services offered by the network's partners.<\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_3 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module preset--module--divi-accordion-item--default\"><h5 class=\"et_pb_toggle_title\">Does the Everia Network serve all of Quebec?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p><span style=\"font-weight: 400;\">Yes. The Everia Network is developed to serve homeowners throughout Quebec. The availability of certain services may vary depending on the region and the partners available.  <\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_4 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module preset--module--divi-accordion-item--default\"><h5 class=\"et_pb_toggle_title\">Do I need to know what type of contractor I need?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p><span style=\"font-weight: 400;\">No. Simply describe your project or problem to the Everia Network. We will help you identify the right type of specialist.  <\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_5 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module preset--module--divi-accordion-item--default\"><h5 class=\"et_pb_toggle_title\">How do you select your partners?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p><span style=\"font-weight: 400;\">We give preference to contractors who demonstrate seriousness and a good quality of work. In particular, we examine their track record and achievements and verify the necessary qualifications when the type of work requires it. <\/span><\/p>\n<\/div><\/div>\n\n<div class=\"et_pb_accordion_item_6 et_pb_accordion_item et_pb_toggle et_pb_module et_pb_toggle_close et_flex_module preset--module--divi-accordion-item--default\"><h5 class=\"et_pb_toggle_title\">Who is responsible in the event of damage or problems with the work?<\/h5><div class=\"et_pb_toggle_content et_flex_module\"><p><span style=\"font-weight: 400;\">The work is carried out directly by the Everia Network's partner contractors. Everia is not the insurer of the work and does not pay compensation directly in the event of a claim. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">If damage occurs or a claim must be made, you must contact the contractor concerned directly and, where applicable, their insurer.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">That said, your experience is important to us. If you have a bad experience with one of our partners, we invite you to let us know. We will be able to review the situation and take appropriate action regarding their presence within the Everia Network.  <\/span><\/p>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"et_pb_row_24 et_pb_row et_flex_row\">\n<div class=\"et_pb_column_38 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone\">\n<div class=\"et_pb_module et_pb_button_module_wrapper et_pb_button_9_wrapper preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc_wrapper\"><a class=\"et_pb_button_9 et_pb_button et_pb_bg_layout_dark et_pb_module et_block_module preset--module--divi-button--1cc6214c-cc59-4e35-8ac0-28729a57edbc\" href=\"https:\/\/everia.ca\/faq\/\">See all questions<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-583","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/everia.ca\/en\/wp-json\/wp\/v2\/pages\/583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/everia.ca\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/everia.ca\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/everia.ca\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/everia.ca\/en\/wp-json\/wp\/v2\/comments?post=583"}],"version-history":[{"count":36,"href":"https:\/\/everia.ca\/en\/wp-json\/wp\/v2\/pages\/583\/revisions"}],"predecessor-version":[{"id":1372,"href":"https:\/\/everia.ca\/en\/wp-json\/wp\/v2\/pages\/583\/revisions\/1372"}],"wp:attachment":[{"href":"https:\/\/everia.ca\/en\/wp-json\/wp\/v2\/media?parent=583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}