{"id":971,"date":"2025-04-03T08:52:53","date_gmt":"2025-04-03T08:52:53","guid":{"rendered":"https:\/\/iplayhockey.ca\/?page_id=971"},"modified":"2025-09-08T16:47:52","modified_gmt":"2025-09-08T16:47:52","slug":"about-us","status":"publish","type":"page","link":"https:\/\/iplayhockey.ca\/fr\/about-us\/","title":{"rendered":"\u00c0 propos de nous"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"971\" class=\"elementor elementor-971\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2f1ec6e post-hero section-parallax e-flex e-con-boxed e-con e-parent\" data-id=\"2f1ec6e\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3485c89 elementor-absolute parallax-content elementor-widget elementor-widget-image\" data-id=\"3485c89\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"2560\" height=\"1423\" src=\"https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/09\/iplay_bg_image-scaled.jpg\" class=\"attachment-full size-full wp-image-6229\" alt=\"\" srcset=\"https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/09\/iplay_bg_image-scaled.jpg 2560w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/09\/iplay_bg_image-scaled-600x334.jpg 600w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/09\/iplay_bg_image-300x167.jpg 300w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/09\/iplay_bg_image-1024x569.jpg 1024w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/09\/iplay_bg_image-768x427.jpg 768w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/09\/iplay_bg_image-1536x854.jpg 1536w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/09\/iplay_bg_image-2048x1138.jpg 2048w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f3d1d6c e-con-full e-flex e-con e-child\" data-id=\"f3d1d6c\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4f7a2c6 elementor-widget__width-initial elementor-widget-mobile__width-inherit post-title elementor-widget elementor-widget-heading\" data-id=\"4f7a2c6\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">About us<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-743aa71 elementor-widget elementor-widget-text-editor\" data-id=\"743aa71\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Over the past 17 years, iPlayHockey has undergone a remarkable evolution, adapting to the needs of a growing hockey community. What began as a digital gathering platform has expanded into a multifaceted organization with a broader mission.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fb6d30f e-flex e-con-boxed e-con e-parent\" data-id=\"fb6d30f\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6e087c3 e-con-full e-flex e-con e-child\" data-id=\"6e087c3\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-3422bce e-con-full card e-flex e-con e-child\" data-id=\"3422bce\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-70980eb e-con-full inner e-flex e-con e-child\" data-id=\"70980eb\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8ea80b3 elementor-widget elementor-widget-heading\" data-id=\"8ea80b3\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">play with confidence<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c262e36 e-con-full blob e-flex e-con e-child\" data-id=\"c262e36\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4b3b02e e-con-full fakeblob e-flex e-con e-child\" data-id=\"4b3b02e\" data-element_type=\"container\" data-settings=\"{&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1f44ec9 e-con-full card e-flex e-con e-child\" data-id=\"1f44ec9\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-66aba8a e-con-full inner e-flex e-con e-child\" data-id=\"66aba8a\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-74a1d89 elementor-widget elementor-widget-heading\" data-id=\"74a1d89\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Our mission:<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-735f9e4 elementor-widget elementor-widget-text-editor\" data-id=\"735f9e4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>To protect, empower, and inspire the hockey community by providing trusted sport protection, practical tools for development, and resources that make the game safer, smarter, and more accessible for players, coaches, and families everywhere.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eedb1af e-con-full blob e-flex e-con e-child\" data-id=\"eedb1af\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4374404 e-con-full fakeblob e-flex e-con e-child\" data-id=\"4374404\" data-element_type=\"container\" data-settings=\"{&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eca5e23 e-con-full e-flex e-con e-child\" data-id=\"eca5e23\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-f35ab1c e-con-full card e-flex e-con e-child\" data-id=\"f35ab1c\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-437c263 e-con-full inner e-flex e-con e-child\" data-id=\"437c263\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-17a0421 elementor-widget elementor-widget-heading\" data-id=\"17a0421\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Lead with knowledge<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cbecb52 e-con-full blob e-flex e-con e-child\" data-id=\"cbecb52\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3ffdec9 e-con-full fakeblob e-flex e-con e-child\" data-id=\"3ffdec9\" data-element_type=\"container\" data-settings=\"{&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3fdad31 e-con-full card e-flex e-con e-child\" data-id=\"3fdad31\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-bda852c e-con-full inner e-flex e-con e-child\" data-id=\"bda852c\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ff63bdb elementor-widget elementor-widget-heading\" data-id=\"ff63bdb\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">train with purpose<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-daf49fb e-con-full blob e-flex e-con e-child\" data-id=\"daf49fb\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bfc203c e-con-full fakeblob e-flex e-con e-child\" data-id=\"bfc203c\" data-element_type=\"container\" data-settings=\"{&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5c4ec2b3 e-flex e-con-boxed e-con e-parent\" data-id=\"5c4ec2b3\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d4cfbac elementor-widget elementor-widget-html\" data-id=\"d4cfbac\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\n\n\n\/* Code from https:\/\/element.how\/elementor-horizontal-scroll-containers\/\n* Copyright 2023 Element.How\n* Licensed for personal and client use for customers who purchased access\n* No redistribution or resale allowed\n* V1.3 16\/02\/2024\n*\/\n\ndocument.addEventListener('DOMContentLoaded', function () {\n    \n  const isMobile = \/iPhone|iPad|Android|SamsungBrowser\/i.test(navigator.userAgent);\n\n  let horizontalScrollContainers = document.querySelectorAll('.horizontalScrollContainer');\n  horizontalScrollContainers.forEach((horizontalScrollContainer) => {\n\n    let speedMultipliers = {\n      desktop: 1.4,\n      tablet: 1.2,\n      mobile: 1,\n    } \/* greater value = faster, 1 = default *\/\n\n    let horizontalScrollTranslate = horizontalScrollContainer.querySelector('.horizontalScrollTranslate');\n    let horizontalScrollParent = horizontalScrollContainer.parentElement;\n    let scrolledRatio = 0;\n    let horizontalScrollContainerTop, horizontalScrollHeight, horizontalScrollTranslateWidth, widthToScroll, windowWidth, mult;\n    \n    if (isMobile) horizontalScrollTranslate.style.transition = 'none';\n\n    function updateValues() {\n      windowWidth = window.innerWidth;\n      windowWidth > 1024 ? mult = speedMultipliers.desktop : windowWidth > 767 ? mult = speedMultipliers.tablet : mult = speedMultipliers.mobile;\n      horizontalScrollTranslateWidth = horizontalScrollTranslate.offsetWidth;\n      horizontalScrollParent.style.height = window.innerHeight + horizontalScrollTranslateWidth \/ mult + 'px';\n      horizontalScrollHeight = horizontalScrollParent.offsetHeight;\n      widthToScroll = horizontalScrollTranslateWidth - windowWidth;\n      horizontalScrollContainerTop = (window.innerHeight - horizontalScrollContainer.offsetHeight) \/ 2;\n      horizontalScrollContainer.style.top = `${horizontalScrollContainerTop}px`;\n    }\n    updateValues();\n\n    \/* update values on resize event *\/\n    window.addEventListener('resize', () => {\n      if (windowWidth !== window.innerWidth) updateValues();\n    });\n\n    let isUpdateScheduled = false;\n\n    function manageScroll() {\n      let horizontalScrollTop = horizontalScrollParent.getBoundingClientRect().top;\n      let windowHeight = window.innerHeight;\n      scrolledRatio = (horizontalScrollTop - horizontalScrollContainerTop) \/ (horizontalScrollHeight - horizontalScrollContainer.offsetHeight - 100) * -1; \/* removing 100px to make it sticky a bit longer after it reaches the end, for better UX *\/\n      \/* clamp scrolledRatio in between 0 and 1 *\/\n      scrolledRatio = Math.min(Math.max(scrolledRatio, 0), 1);\n      horizontalScrollTranslate.style.transform = `translateX(${scrolledRatio * widthToScroll * -1}px)`;\n      isUpdateScheduled = false;\n    };\n\n    \/* Listen to the scroll event on the window object and schedule the update function using throttling *\/\n    window.addEventListener('scroll', () => {\n      if (!isUpdateScheduled) {\n        isUpdateScheduled = true;\n        requestAnimationFrame(manageScroll);\n      }\n    });\n\n  });\n\n   \n\n  \/* preload the images after the first image gets in the viewport *\/\n  (function () {\n    let images = document.querySelectorAll('.horizontalScrollContainer img');\n    if (!images.length) return;\n    let firstImage = images[0];\n\n    let options = {\n      root: null,\n      rootMargin: '0px',\n      threshold: 0.3\n    };\n\n    let observer = new IntersectionObserver((entries, observer) => {\n      entries.forEach(entry => {\n        if (entry.isIntersecting) {\n          images.forEach(img => {\n            addPreloadLink(img);\n          });\n          observer.unobserve(firstImage);\n        }\n      });\n    }, options);\n\n    observer.observe(firstImage);\n  })();\n\n\n\n  function addPreloadLink(img) {\n    let link = document.createElement('link');\n    link.rel = 'preload';\n    link.href = img.src || img.dataset.src;\n    link.as = 'image';\n    if (img.srcset) link.setAttribute('imagesrcset', img.srcset);\n    if (img.sizes) link.setAttribute('imagesizes', img.sizes);\n    document.head.appendChild(link);\n  }\n  \/* END OF preload the images after the first image gets in the viewport *\/\n\n\n  \/* link anchors support *\/\n  const anchorLinks = document.querySelectorAll('a[href*=\"#\"]');\n\n  anchorLinks.forEach((link) => {\n    link.addEventListener('click', function (event) {\n      const href = this.getAttribute('href');\n      const anchorIndex = href.lastIndexOf('#');\n      const targetID = anchorIndex !== -1 ? href.substring(anchorIndex + 1) : '';\n\n      const targetElement = document.getElementById(targetID);\n\n      if (targetElement) {\n        const translateContainer = targetElement.closest('.horizontalScrollTranslate');\n\n        if (translateContainer) {\n          event.preventDefault();\n\n          let scrollParent = translateContainer.closest('.horizontalScrollWrapper');\n\n          let scrollHeight = scrollParent.offsetHeight;\n\n          let scrollDistance = targetElement.offsetLeft \/ (translateContainer.offsetWidth - window.innerWidth) * (scrollHeight - translateContainer.parentElement.offsetHeight - 100);\n          \/* we consider the 100px offset to make it sticky a bit longer after it reaches the end, for better UX \n          * we also consider the speedMultipliers, through the scrollHeight \n          *\/\n\n          scrollDistance += scrollParent.getBoundingClientRect().top + window.scrollY;\n\n          setTimeout(function () {\n            jQuery('html,body').animate({ scrollTop: scrollDistance }, 1300);\n          }, 100);\n        }\n      }\n    });\n  });\n  \/* END OF link anchors support *\/\n\n});\n\n<\/script>\n\n<style>\n\nbody:not(.elementor-editor-active) .horizontalScrollContainer {\n    overflow: hidden;\n}\n.horizontalScrollContainer {\n    position: sticky;\n    top:0;\n}\n\n.horizontalScrollTranslate.e-con {\n    width: fit-content;\n    transition: transform 0.14s cubic-bezier(.03,.89,.74,1.01);\n}\n\n.horizontalScrollTranslate > .e-con.e-con {\n   min-width: 100vw;\n   height: 100vh;\n   max-height: 100vh;\n   max-width: 100vw; \/* delete if you want containers that are direct children of \"horizontalScrollTranslate\" to be more than 100vw *\/\n}\n\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-26ff7920 e-con-full horizontalScrollWrapper e-flex e-con e-parent\" data-id=\"26ff7920\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-3335c4c6 e-con-full horizontalScrollContainer e-flex e-con e-child\" data-id=\"3335c4c6\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-4a004054 e-con-full horizontalScrollTranslate e-flex e-con e-child\" data-id=\"4a004054\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-4afd00b4 e-con-full e-flex e-con e-child\" data-id=\"4afd00b4\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-69f3720f e-con-full e-flex e-con e-child\" data-id=\"69f3720f\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t<div class=\"elementor-element elementor-element-7e564b60 e-con-full e-flex e-con e-child\" data-id=\"7e564b60\" data-element_type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_effect&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:25,&quot;end&quot;:50}},&quot;motion_fx_opacity_direction&quot;:&quot;out-in&quot;,&quot;motion_fx_opacity_level&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-72cff267 elementor-widget elementor-widget-heading\" data-id=\"72cff267\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">where it all began<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3da07a29 elementor-widget elementor-widget-text-editor\" data-id=\"3da07a29\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Founded in 2008, iPlayHockey began with a vision to build a virtual hockey community, delivering interactive experiences for players of all ages that transcended geographic boundaries.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p><p>Today, we are proud to offer a comprehensive sport protection program, a cornerstone of our commitment to the well-being of the players of all ages, coaches, and camp instructors.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eea9caa e-con-full e-flex e-con e-child\" data-id=\"eea9caa\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-87280c2 e-con-full e-flex e-con e-child\" data-id=\"87280c2\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t<div class=\"elementor-element elementor-element-3298efd e-con-full e-flex e-con e-child\" data-id=\"3298efd\" data-element_type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_effect&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:25,&quot;end&quot;:50}},&quot;motion_fx_opacity_direction&quot;:&quot;out-in&quot;,&quot;motion_fx_opacity_level&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-710d6ff elementor-widget elementor-widget-image\" data-id=\"710d6ff\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"534\" src=\"https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/04\/Hockey-Helmet-On-Ice.jpg-1024x683.webp\" class=\"attachment-large size-large wp-image-1490\" alt=\"\" srcset=\"https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/04\/Hockey-Helmet-On-Ice.jpg-1024x683.webp 1024w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/04\/Hockey-Helmet-On-Ice.jpg-600x400.webp 600w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/04\/Hockey-Helmet-On-Ice.jpg-300x200.webp 300w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/04\/Hockey-Helmet-On-Ice.jpg-768x512.webp 768w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/04\/Hockey-Helmet-On-Ice.jpg-1536x1024.webp 1536w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/04\/Hockey-Helmet-On-Ice.jpg.webp 1920w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-abb6a78 e-con-full e-flex e-con e-child\" data-id=\"abb6a78\" data-element_type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_effect&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:25,&quot;end&quot;:50}},&quot;motion_fx_opacity_direction&quot;:&quot;out-in&quot;,&quot;motion_fx_opacity_level&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1f597ed elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"1f597ed\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:0,&quot;_animation_tablet_extra&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Safety at the Core<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ad213ef elementor-widget elementor-widget-text-editor\" data-id=\"ad213ef\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"1462\" data-end=\"1768\">At the heart of iPlayHockey is our sport protection program, designed to safeguard the people who make the game possible\u2014players, coaches, and camp leaders. From youth hockey to adult leagues, our programs are built around one commitment: ensuring every moment on the ice is backed by trusted protection.<\/p><p data-start=\"1770\" data-end=\"1974\">We believe that safety is more than an add-on\u2014it\u2019s a foundation. By providing reliable coverage, we give the hockey community the peace of mind it needs to focus on what matters most: enjoying the game.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b1b11b9 e-con-full e-flex e-con e-child\" data-id=\"b1b11b9\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-ce33147 e-con-full e-flex e-con e-child\" data-id=\"ce33147\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t<div class=\"elementor-element elementor-element-ec8f837 e-con-full e-flex e-con e-child\" data-id=\"ec8f837\" data-element_type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_effect&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:25,&quot;end&quot;:50}},&quot;motion_fx_opacity_direction&quot;:&quot;out-in&quot;,&quot;motion_fx_opacity_level&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3fd7f27 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"3fd7f27\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:0,&quot;_animation_tablet_extra&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Sharpening skills, inspiring creativity, and elevating performance.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9ff3766 elementor-widget elementor-widget-text-editor\" data-id=\"9ff3766\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Beyond sport insurance protection, we\u2019ve expanded our offerings to empower the hockey community with practical tools for growth and development.\u00a0<\/p><p>We provide a robust collection of skills and drills designed to help sharpen techniques and elevate performance for players at every level. For those who teach the game, our drill vault serves as an invaluable resource to inspire creativity and effectiveness in coaching.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-14e23cf e-con-full e-flex e-con e-child\" data-id=\"14e23cf\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-12d745a e-con-full e-flex e-con e-child\" data-id=\"12d745a\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t<div class=\"elementor-element elementor-element-08c34a3 e-con-full e-flex e-con e-child\" data-id=\"08c34a3\" data-element_type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_effect&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:25,&quot;end&quot;:50}},&quot;motion_fx_opacity_direction&quot;:&quot;out-in&quot;,&quot;motion_fx_opacity_level&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-be1a84b e-con-full e-flex e-con e-child\" data-id=\"be1a84b\" data-element_type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_effect&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:25,&quot;end&quot;:50}},&quot;motion_fx_opacity_direction&quot;:&quot;out-in&quot;,&quot;motion_fx_opacity_level&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3f4680d elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"3f4680d\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:0,&quot;_animation_tablet_extra&quot;:&quot;none&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Nearly two decades in, we\u2019re just getting started<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-242505c elementor-widget elementor-widget-text-editor\" data-id=\"242505c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>As we approach nearly two decades in service, iPlayHockey stands as a trusted partner for those involved in our sport. We will continue to expand our offerings by keeping our community informed with insights into the latest developments in safety protocols and cutting-edge equipment, ensuring that players and coaches have access to the knowledge and tools needed to stay ahead in an ever-evolving sport.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p><p>Our expanded offerings reflect our ongoing commitment to fostering development, promoting safety, and celebrating the spirit of hockey, a sport that\u2019s more than just a game, but a way of life for so many in Canada.<span class=\"Apple-converted-space\">\u00a0<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-77d2215 e-flex e-con-boxed e-con e-parent\" data-id=\"77d2215\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-913fd5f textRevealOnScroll elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"913fd5f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">\"the game connects us all and brings out the best in players, coaches, and fans. We\u2019re proud to play our part in keeping that spirit alive.\"\n<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6717d71 elementor-widget elementor-widget-image\" data-id=\"6717d71\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"539\" height=\"111\" src=\"https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/03\/iplayhockey_logo-1.png\" class=\"attachment-large size-large wp-image-133\" alt=\"\" srcset=\"https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/03\/iplayhockey_logo-1.png 539w, https:\/\/iplayhockey.ca\/wp-content\/uploads\/2025\/03\/iplayhockey_logo-1-300x62.png 300w\" sizes=\"(max-width: 539px) 100vw, 539px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c442e0d elementor-widget elementor-widget-html\" data-id=\"c442e0d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script src=\"https:\/\/unpkg.com\/split-type\"><\/script>\r\n<style>\r\n.textRevealOnScroll,\r\n.stickyTextRevealWrapper {\r\n    --text-reveal-from: 0.3; \/* 0.3 means 30% from the bottom of the screen (relevant for variation 2) *\/\r\n    --text-reveal-to: 0.4;  \/* 0.4 means 40% from the top of the screen (relevant for variation 2) *\/\r\n    --text-reveal-before-color: rgba(0, 0, 0, 0.3)!important; \/* color before, when text is not revealed, set alpha to 0 for transparent *\/\r\n    --text-reveal-after-color: rgba(0, 0, 0, 1)!important; \/* color after, when text is revealed *\/\r\n    --text-reveal-transition-duration: 0.4s; \/* easing duration *\/\r\n    --text-reveal-sticky-wrapper-height: 230vh; \/* increase or decrease to make the sticky text reveal longer or shorter (relevant for variation 1) *\/\r\n    --text-reveal-sticky-wrapper-height-mobile: 200vh; \/*idem, for tablet and mobile *\/\r\n}\r\n\r\n\/* don't change anything below this line *\/\r\n.textRevealOnScroll .elementor-heading-title .line,\r\n.stickyTextRevealWrapper .elementor-heading-title .line {\r\n    background: linear-gradient(to right, var(--text-reveal-after-color) 50%, var(--text-reveal-before-color) 56%);\r\n    background-size: 230% 100%;\r\n    background-position-x: 100%;\r\n    color: transparent;\r\n    background-clip: text;\r\n    -webkit-background-clip: text;\r\n    transition: background-position var(--text-reveal-transition-duration);\r\n    white-space: nowrap;\r\n}\r\n\r\n_::-webkit-full-page-media, _:future, :root .textRevealOnScroll .elementor-heading-title .line,\r\n:root .stickyTextRevealWrapper .elementor-heading-title .line {\r\n    transition: 0.14s; \/* on safari desktop, force a quick transition to prevent glitchy bug *\/\r\n}\r\n\r\n.stickyTextRevealWrapper {\r\n    height: var(--text-reveal-sticky-wrapper-height);\r\n    padding: 0;\r\n}\r\n\r\n@media (max-width:1024px) {\r\n    .stickyTextRevealWrapper {\r\n    height: var(--text-reveal-sticky-wrapper-height-mobile);\r\n}\r\n}\r\n\r\n.stickyTextRevealWrapper>.e-con-inner {\r\n    padding: 0;\r\n}\r\n\r\n.stickyTextRevealContainer {\r\n    height: 100vh;\r\n    position: sticky;\r\n    top: 0;\r\n    padding-top: 0;\r\n    padding-bottom: 0;\r\n}\r\n<\/style>\r\n<script>\r\n\/* Code from https:\/\/element.how\/elementor-text-reveal-on-scroll\/\r\n* Copyright 2024 Element.How\r\n* Licensed for personal and client use for customers who purchased access\r\n* No redistribution or resale allowed\r\n* V1.1 2024\/03\/08\r\n*\/\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n\r\n    let textRevealWrappers = document.querySelectorAll('.stickyTextRevealWrapper, .textRevealOnScroll');\r\n\r\n    textRevealWrappers.forEach((textRevealWrapper) => {\r\n        let textRevealContainer = textRevealWrapper.querySelector('.stickyTextRevealContainer');\r\n        let textRevealHeading = textRevealWrapper.querySelector('.elementor-heading-title');\r\n        let scrolledRatio = 0;\r\n        let textRevealWrapperHeight;\r\n        \r\n        const isMobile = \/iPhone|iPad|Android|SamsungBrowser\/i.test(navigator.userAgent);\r\n\r\n        let settings = {\r\n            from: parseFloat(window.getComputedStyle(textRevealWrapper).getPropertyValue('--text-reveal-from')),\r\n            to: parseFloat(window.getComputedStyle(textRevealWrapper).getPropertyValue('--text-reveal-to')),\r\n            isSticky: textRevealContainer && (window.getComputedStyle(textRevealContainer).position === 'sticky' || window.getComputedStyle(textRevealContainer).position === '-webkit-sticky'),\r\n        };\r\n\r\n        let splittedText = new SplitType(textRevealHeading, {\r\n            types: \"lines\"\r\n        });\r\n\r\n        addCSSVariables();\r\n\r\n        textRevealWrapper.style.setProperty('--scrolled-ratio', scrolledRatio);\r\n\r\n        function updateValues() {\r\n            textRevealWrapperHeight = textRevealWrapper.offsetHeight;\r\n        }\r\n\r\n        updateValues();\r\n\r\n        let isUpdateScheduled = false;\r\n\r\n        function manageScrollSticky() {\r\n            let textRevealWrapperTop = textRevealWrapper.getBoundingClientRect().top;\r\n            let textRevealContainerTop = textRevealContainer.getBoundingClientRect().top;\r\n            let windowHeight = window.innerHeight;\r\n            scrolledRatio = (textRevealWrapperTop - textRevealContainerTop) \/ (textRevealWrapperHeight - windowHeight) * -1;\r\n            \/* clamp scrolledRatio in between 0 and 1 *\/\r\n            scrolledRatio = Math.min(Math.max(scrolledRatio, 0), 1);\r\n            textRevealWrapper.style.setProperty('--scrolled-ratio', scrolledRatio);\r\n            isUpdateScheduled = false;\r\n\r\n            splittedText.lines.forEach((line, index) => {\r\n                let backgroundXPos = Math.min(Math.max( (1 - (scrolledRatio * splittedText.lines.length - index)) * 100, 0), 100);\r\n                line.style.backgroundPositionX = `${backgroundXPos}%`;\r\n            });\r\n        };\r\n\r\n        function manageScroll() {\r\n            let textRevealWrapperTop = textRevealWrapper.getBoundingClientRect().top;\r\n            let windowHeight = window.innerHeight;\r\n            scrolledRatio = (textRevealWrapperTop - windowHeight * (1 - settings.from)) \/ (textRevealWrapperHeight + (windowHeight * (1 - settings.from)) - (windowHeight * settings.to)) * -1;\r\n            \/* clamp scrolledRatio in between 0 and 1 *\/\r\n            scrolledRatio = Math.min(Math.max(scrolledRatio, 0), 1);\r\n            textRevealWrapper.style.setProperty('--scrolled-ratio', scrolledRatio);\r\n            isUpdateScheduled = false;\r\n\r\n            splittedText.lines.forEach((line, index) => {\r\n                let backgroundXPos = Math.min(Math.max( (1 - (scrolledRatio * splittedText.lines.length - index)) * 100, 0), 100);\r\n                line.style.backgroundPositionX = `${backgroundXPos}%`;\r\n            });\r\n\r\n        };\r\n\r\n        window.addEventListener('scroll', () => {\r\n            if (!isUpdateScheduled) {\r\n                isUpdateScheduled = true;\r\n                if (settings.isSticky) {\r\n                    requestAnimationFrame(manageScrollSticky);\r\n                } else {\r\n                    requestAnimationFrame(manageScroll);\r\n                }\r\n            }\r\n        });\r\n\r\n        let windowsWidth = window.innerWidth;\r\n        window.addEventListener(\"resize\", function () {\r\n            if (windowsWidth !== window.innerWidth) {\r\n                updateValues();\r\n                splittedText = new SplitType(textRevealHeading, {\r\n                    types: \"lines\"\r\n                });\r\n                addCSSVariables();\r\n                windowsWidth = window.innerWidth;\r\n            }\r\n        });\r\n\r\n        function addCSSVariables() {\r\n            splittedText.lines.forEach((line, index) => {\r\n                \/* set --line-index custom property *\/\r\n                line.style.setProperty('--line-index', index);\r\n                \/* set --line-total custom property *\/\r\n                line.style.setProperty('--line-total', splittedText.lines.length);\r\n                if (isMobile) line.style.transition = 'none';\r\n            });\r\n        }\r\n\r\n    });\r\n\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1e99064 e-con-full shrink-grow e-flex e-con e-parent\" data-id=\"1e99064\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t<div class=\"elementor-element elementor-element-f6c13d9 e-con-full e-flex e-con e-child\" data-id=\"f6c13d9\" data-element_type=\"container\">\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f0671ec e-con-full e-flex e-con e-child\" data-id=\"f0671ec\" data-element_type=\"container\" data-settings=\"{&quot;motion_fx_motion_fx_scrolling&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_effect&quot;:&quot;yes&quot;,&quot;motion_fx_opacity_range&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:{&quot;start&quot;:25,&quot;end&quot;:50}},&quot;motion_fx_opacity_direction&quot;:&quot;out-in&quot;,&quot;motion_fx_opacity_level&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;motion_fx_devices&quot;:[&quot;widescreen&quot;,&quot;desktop&quot;,&quot;laptop&quot;,&quot;tablet_extra&quot;,&quot;tablet&quot;,&quot;mobile_extra&quot;,&quot;mobile&quot;]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9ff55fa animated-slow elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"9ff55fa\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;_animation_delay&quot;:250}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Have questions?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0db7108 elementor-widget elementor-widget-text-editor\" data-id=\"0db7108\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Our team is here to help.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-48829bf elementor-widget elementor-widget-html\" data-id=\"48829bf\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.9.1\/gsap.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.9.1\/ScrollTrigger.min.js\"><\/script>\n\n<script>\n  gsap.utils.toArray(\".section-parallax\").forEach((section) => {\n    const content = section.querySelector(\".parallax-content\");\n    const heightDiff = content.offsetHeight - section.offsetHeight;\n\n    gsap.fromTo(content, \n      { y: -heightDiff },\n      { \n        y: 0,\n        ease: \"none\",\n        scrollTrigger: {\n          trigger: section,\n          scrub: true\n        }\n      }\n    );\n\n    gsap.fromTo(section, \n      { height: \"90vh\" },\n      { \n        height: \"50vh\",\n        ease: \"none\",\n        scrollTrigger: {\n          trigger: section,\n          scrub: true\n        }\n      }\n    );\n  });\n<\/script>\n\n\t\n<script>\n\n\n\/* Code from https:\/\/element.how\/elementor-horizontal-scroll-containers\/\n* Copyright 2023 Element.How\n* Licensed for personal and client use for customers who purchased access\n* No redistribution or resale allowed\n* V1.3 16\/02\/2024\n*\/\n\nwindow.addEventListener('load', function () {\n    \n   const isMobile = \/iPhone|iPad|Android|SamsungBrowser\/i.test(navigator.userAgent);\n    \n  let horizontalScrollContainers = document.querySelectorAll('.horizontalScrollContainer');\n  horizontalScrollContainers.forEach((horizontalScrollContainer) => {\n      \n    let speedMultipliers = {\n        desktop: 1.7,\n        tablet: 1.2,\n        mobile: 1,\n    } \/* greater value = faster, 1 = default *\/\n      \n    let horizontalScrollTranslate = horizontalScrollContainer.querySelector('.horizontalScrollTranslate');\n    let horizontalScrollParent = horizontalScrollContainer.parentElement;\n    let scrolledRatio = 0;\n    let horizontalScrollContainerTop, horizontalScrollHeight, horizontalScrollTranslateWidth, widthToScroll, windowWidth, mult;\n\n    if (isMobile) horizontalScrollTranslate.style.transition = 'none';\n\n    function updateValues() {\n      windowWidth = window.innerWidth;\n      windowWidth > 1024? mult = speedMultipliers.desktop : windowWidth > 767? mult = speedMultipliers.tablet : mult = speedMultipliers.mobile;\n      horizontalScrollTranslateWidth = horizontalScrollTranslate.offsetWidth;\n      horizontalScrollParent.style.height = window.innerHeight + horizontalScrollTranslateWidth \/ mult + 'px';\n      horizontalScrollHeight = horizontalScrollParent.offsetHeight;\n      widthToScroll = horizontalScrollTranslateWidth - windowWidth;\n      horizontalScrollContainerTop = (window.innerHeight - horizontalScrollContainer.offsetHeight) \/ 2;\n      horizontalScrollContainer.style.top = `${horizontalScrollContainerTop}px`;\n    }\n    updateValues();\n\n    \/* update values on resize event *\/\n    window.addEventListener('resize', () => {\n      if (windowWidth !== window.innerWidth)  updateValues();\n    });\n\n    let isUpdateScheduled = false;\n\n    function manageScroll() {\n      let horizontalScrollTop = horizontalScrollParent.getBoundingClientRect().top;\n      let windowHeight = window.innerHeight;\n      scrolledRatio = (horizontalScrollTop - horizontalScrollContainerTop) \/ (horizontalScrollHeight - horizontalScrollContainer.offsetHeight - 100) * -1; \/* removing 100px to make it sticky a bit longer after it reaches the end, for better UX *\/\n      \/* clamp scrolledRatio in between 0 and 1 *\/\n      scrolledRatio = Math.min(Math.max(scrolledRatio, 0), 1);\n      horizontalScrollTranslate.style.transform = `translateX(${scrolledRatio * widthToScroll * -1}px)`;\n      isUpdateScheduled = false;\n    };\n\n    \/* Listen to the scroll event on the window object and schedule the update function using throttling *\/\n    window.addEventListener('scroll', () => {\n      if (!isUpdateScheduled) {\n        isUpdateScheduled = true;\n        requestAnimationFrame(manageScroll);\n      }\n    });\n\n  });\n\n\n  \/* preload the images after the first image gets in the viewport, for optimal UX *\/\n  (function () {\n    let images = document.querySelectorAll('.horizontalScrollContainer img');\n    if (!images.length) return;\n    let firstImage = images[0];\n\n    let options = {\n      root: null,\n      rootMargin: '0px',\n      threshold: 0.3\n    };\n\n    let observer = new IntersectionObserver((entries, observer) => {\n      entries.forEach(entry => {\n        if (entry.isIntersecting) {\n          images.forEach(img => {\n            addPreloadLink(img);\n          });\n          observer.unobserve(firstImage);\n        }\n      });\n    }, options);\n\n    observer.observe(firstImage);\n  })();\n\n\n  function addPreloadLink(img) {\n    let link = document.createElement('link');\n    link.rel = 'preload';\n    link.href = img.src || img.dataset.src;\n    link.as = 'image';\n    if (img.srcset) link.setAttribute('imagesrcset', img.srcset);\n    if (img.sizes) link.setAttribute('imagesizes', img.sizes);\n    document.head.appendChild(link);\n  }\n  \/* END OF preload the images after the first image gets in the viewport *\/\n\n});\n\n<\/script>\n\n<script src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"><\/script>\n\n<script>\n\njQuery(document).ready(function ($) {\n  $(document).on(\"click\", \"#info-open\", function () {\n    let infoSection = $(this).parents(\".loop-item\").find(\".info-section\");\n\n    \/\/ Close all other info sections except the one being opened\n    $(\".info-section\").not(infoSection).fadeOut(300);\n\n    \/\/ Open only the targeted one\n    infoSection.fadeIn(300);\n  });\n\n  $(document).on(\"click\", \"#info-close\", function () {\n    let infoSection = $(this).parents(\".loop-item\").find(\".info-section\");\n    infoSection.fadeOut(300);\n  });\n});\n\n<\/script>\n\n\n\t\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7bd3d55 elementor-widget elementor-widget-button\" data-id=\"7bd3d55\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/iplayhockey.ca\/contact-us\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Contact Us<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>About us Over the past 17 years, iPlayHockey has undergone a remarkable evolution, adapting to the needs of a growing hockey community. What began as a digital gathering platform has expanded into a multifaceted organization with a broader mission. play with confidence Our mission: To protect, empower, and inspire the hockey community by providing trusted [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-971","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/iplayhockey.ca\/fr\/wp-json\/wp\/v2\/pages\/971","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iplayhockey.ca\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/iplayhockey.ca\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/iplayhockey.ca\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iplayhockey.ca\/fr\/wp-json\/wp\/v2\/comments?post=971"}],"version-history":[{"count":243,"href":"https:\/\/iplayhockey.ca\/fr\/wp-json\/wp\/v2\/pages\/971\/revisions"}],"predecessor-version":[{"id":6232,"href":"https:\/\/iplayhockey.ca\/fr\/wp-json\/wp\/v2\/pages\/971\/revisions\/6232"}],"wp:attachment":[{"href":"https:\/\/iplayhockey.ca\/fr\/wp-json\/wp\/v2\/media?parent=971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}