{
  "version": 3,
  "sources": ["/cdn/shop/t/155/assets/script.js?t=1745045502"],
  "sourcesContent": ["/**\n * Plugin to handle the Google Map\n */\n\n(function ($) {\n\n  'use strict';\n\n  var pluginName = 'trademarkMap',\n    namespace = 'plugin_' + pluginName;\n\n  /**\n   * The Plugin constructor\n   * @constructor\n   * @param {HTMLElement} element The element that will be monitored\n   */\n  function Plugin(element) {\n    this.element = $(element);\n    this.options = JSON.parse(this.element.attr('data-section-settings'));\n    this.locations = [];\n    this.markers = [];\n\n    this.element.on('click', '[data-action=\"toggle-store\"]', this._toggleStore.bind(this));\n    this.element.on('click', '.featured-map__store-item', this._activateStore.bind(this));\n    this.element.on('shopify:block:select', this._blockSelected.bind(this));\n\n    this.googleMapContainer = this.element.find('.featured-map__gmap').get(0);\n\n    if (this.options['apiKey'] && this.options['mapAddresses'].length > 0) {\n      var $script = $('script[src*=\"' + this.options['apiKey'] + '&\"]'),\n        self = this;\n\n      if ($script.length === 0) {\n        $.getScript(\n          'https://maps.googleapis.com/maps/api/js?key=' + this.options['apiKey']\n        ).then(function() {\n          self._initMap();\n        });\n      } else {\n        this._initMap();\n      }\n    }\n\n    $(window).on('resize.trademarkMap', this._repositionMap.bind(this));\n  }\n\n  Plugin.prototype.destroy = function() {\n    $(window).off('resize.trademarkMap');\n  };\n\n  Plugin.prototype._blockSelected = function(event) {\n    this._selectStore($(event.target));\n  };\n\n  Plugin.prototype._toggleStore = function(event) {\n    this._selectStore($(event.currentTarget).closest('.featured-map__store-item'));\n  };\n\n  Plugin.prototype._activateStore = function(event) {\n    this._selectStore($(event.currentTarget));\n  };\n\n  Plugin.prototype._selectStore = function(storeElement) {\n    storeElement.addClass('featured-map__store-item--active');\n\n    if (window.matchMedia('screen and (max-width: 800px)').matches) {\n      storeElement.find('.featured-map__store-inner').slideDown()\n        .end().find('.plus-button').addClass('plus-button--active');\n\n      storeElement.siblings('.featured-map__store-item--active')\n        .find('.featured-map__store-inner').slideUp()\n        .end().find('.plus-button').removeClass('plus-button--active');\n    }\n\n    storeElement.siblings('.featured-map__store-item--active').removeClass('featured-map__store-item--active');\n\n    this._repositionMap();\n    this._setNewCenter(storeElement.attr('data-store-index'));\n  };\n\n  Plugin.prototype._initMap = function() {\n    var geocoder = new google.maps.Geocoder(),\n      self = this;\n\n    var mapOptions = {\n      zoom: self.options['zoom'],\n      draggable: false,\n      clickableIcons: false,\n      scrollwheel: false,\n      disableDoubleClickZoom: true,\n      disableDefaultUI: true\n    };\n\n    this.googleMap = new google.maps.Map(this.googleMapContainer, mapOptions);\n    var styledMapType = new google.maps.StyledMapType(JSON.parse(this.element.find('[data-gmap-style]').html()));\n\n    this.googleMap.mapTypes.set('styled_map', styledMapType);\n    this.googleMap.setMapTypeId('styled_map');\n\n    this._repositionMap();\n\n    // We need to geocode each addresses individually\n    this.options['mapAddresses'].forEach(function(address, index) {\n      geocoder.geocode({ address: address }, function(results, status) {\n        if (status !== google.maps.GeocoderStatus.OK) {\n          if (Shopify.designMode) {\n\n          }\n        } else {\n          if (index === 0) {\n            self.googleMap.setCenter(results[0].geometry.location);\n          }\n\n          self.locations[index] = results[0].geometry.location;\n\n          var icon = {\n            path: \"M32.7374478,5.617 C29.1154478,1.995 24.2994478,0 19.1774478,0 C14.0544478,0 9.23944778,1.995 5.61744778,5.617 C-1.08555222,12.319 -1.91855222,24.929 3.81344778,32.569 L19.1774478,54.757 L34.5184478,32.6 C40.2734478,24.929 39.4404478,12.319 32.7374478,5.617 Z M19.3544478,26 C15.4954478,26 12.3544478,22.859 12.3544478,19 C12.3544478,15.141 15.4954478,12 19.3544478,12 C23.2134478,12 26.3544478,15.141 26.3544478,19 C26.3544478,22.859 23.2134478,26 19.3544478,26 Z\",\n            fillColor: index === 0 ? self.options['markerActiveColor'] : self.options['markerColor'],\n            fillOpacity: 1,\n            anchor: new google.maps.Point(15,55),\n            strokeWeight: 0,\n            scale: window.matchMedia('screen and (max-width: 559px)').matches ? 0.5 : (index === 0 ? 0.7 : 0.5)\n          };\n\n          self.markers[index] = new google.maps.Marker({\n            map: self.googleMap,\n            position: results[0].geometry.location,\n            icon: icon\n          });\n        }\n      });\n    });\n  };\n\n  Plugin.prototype._setNewCenter = function(index) {\n    var self = this,\n      indexAsInt = parseInt(index);\n\n    this.googleMap.panTo(this.locations[indexAsInt]);\n\n    this.markers.forEach(function(marker, markerIndex) {\n      if (markerIndex === indexAsInt) {\n        marker.icon.fillColor = self.options['markerActiveColor'];\n        marker.icon.scale = window.matchMedia('screen and (max-width: 559px)').matches ? 0.5 : 0.7;\n      } else {\n        marker.icon.fillColor = self.options['markerColor'];\n        marker.icon.scale = 0.5;\n      }\n\n      marker.setMap(self.googleMap);\n    });\n  };\n\n  /**\n   * Reposition the GMap container (which allows to re-use it on mobile and desktop)\n   *\n   * @private\n   */\n  Plugin.prototype._repositionMap = function() {\n    var container = null;\n\n    if (window.matchMedia('screen and (min-width: 801px)').matches) {\n      container = this.element.find('.featured-map__map-container--desktop');\n    } else {\n      container = this.element.find('.featured-map__store-item--active .featured-map__map-container--mobile');\n    }\n\n    container.append(this.googleMapContainer);\n\n    var center = this.googleMap.getCenter();\n    google.maps.event.trigger(this.googleMap, 'resize');\n    this.googleMap.setCenter(center);\n  };\n\n  $.fn[pluginName] = function(options) {\n    var method = false,\n      methodArgs = arguments;\n\n    if (typeof options == 'string') {\n      method = options;\n    }\n\n    return this.each(function() {\n      var plugin = $.data(this, namespace);\n\n      if (!plugin && !method) {\n        $.data(this, namespace, new Plugin(this, options));\n      } else if (method) {\n        callMethod(plugin, method, Array.prototype.slice.call(methodArgs, 1));\n      }\n    });\n  };\n}(jQuery));\n/**\n * Plugin to handle the header search\n */\n\n(function ($) {\n\n  'use strict';\n\n  var pluginName = 'trademarkHeaderSearch',\n    namespace = 'plugin_' + pluginName;\n\n  /**\n   * The Plugin constructor\n   */\n  function Plugin(element) {\n    this.headerSearch = $(element);\n    this.headerSearchForm = this.headerSearch.find('.header-search__form');\n    this.headerInput = this.headerSearch.find('.header-search__input');\n    this.headerSearchResults = this.headerSearch.find('.header-search__results-wrapper');\n\n    this.searchResultsTemplate = Template7.compile($('#search-results-template').html());\n    this.searchMode = \"product,article\",\n    this.body = $('body');\n    this.pageOverlay = $('.page__overlay');\n\n    this.sidebarNavInstance = $('.sidebar-nav').data('plugin_trademarkMobileSidebar');\n    this.miniCartInstance = $('.mini-cart').data('plugin_trademarkMiniCart');\n\n    $('[data-action=\"open-search\"]').on('click', $.proxy(this._openSearch, this));\n    $('[data-action=\"close-search\"]').on('click', $.proxy(this._closeSearch, this));\n\n    this.headerInput.on('keyup', $.proxy(this._initSearch, this));\n\n        if (window.innerWidth < 768) { \n      this.headerInput.on('change', (e) => {\n        window.dataLayer = window.dataLayer || [];\n        dataLayer.push({\n          'event': 'predictive_search',\n          'query': `${e.target.value}`\n        });\n        console.log(window.dataLayer);\n      });\n    }\n\n    this.headerSearchForm.on('submit', $.proxy(this._formSubmitted, this));\n  }\n\n  Plugin.prototype.destroy = function() {\n    $('[data-action=\"open-search\"]').off('click');\n    $('[data-action=\"close-search\"]').off('click');\n\n    this.headerSearch.removeData('plugin_trademarkHeaderSearch');\n    this.headerInput.off('keyup');\n    this.headerSearchForm.off('submit');\n    this.body.off('.trademarkHeaderSearch');\n  };\n\n  Plugin.prototype._openSearch = function(event) {\n    var self = this;\n\n    // If either mobile sidebar or mini-cart are open we must first close them, otherwise we open directly\n\n    if (this.sidebarNavInstance.state === 'opening' || this.sidebarNavInstance.state === 'opened') {\n      this.sidebarNavInstance._toggleSidebar(event);\n\n      $(document).one('closed.trademarkMobileSidebar', function() {\n        self._doOpenSearch();\n      });\n    } else if (undefined !== this.miniCartInstance && (this.miniCartInstance.state === 'opening' || this.miniCartInstance.state === 'opened')) {\n      this.miniCartInstance._toggleMiniCart(event);\n\n      $(document).one('closed.trademarkMiniCart', function() {\n        self._doOpenSearch();\n      });\n    } else {\n      this._doOpenSearch(); // Both are closed so we can open directly\n    }\n\n    event.preventDefault();\n  };\n\n  Plugin.prototype._closeSearch = function(event) {\n    this.body.removeClass('no-scroll');\n    this.pageOverlay.removeClass('page__overlay--open');\n    this.headerSearch.removeClass('header-search--open');\n    this.body.off('.trademarkHeaderSearch');\n\n    event.preventDefault();\n  };\n\n  Plugin.prototype._doOpenSearch = function() {\n    var self = this;\n\n    this.body.addClass('no-scroll');\n    this.pageOverlay.addClass('page__overlay--open');\n\n    this.headerSearch.addClass('header-search--open');\n    this.headerSearch.one('transitionend', function() {\n      self._cursorFocus(self.headerInput);\n    });\n\n    this.body.on('keyup.trademarkHeaderSearch', function(event) {\n      if (event.keyCode == 27) {\n        self._closeSearch(event);\n      }\n    });\n\n    this.body.on('click.trademarkHeaderSearch', function(outsideEvent) {\n      if (!$(outsideEvent.target).closest('#shopify-section-header').length) {\n        self._closeSearch(outsideEvent);\n      }\n    });\n  };\n\n  Plugin.prototype._initSearch = function(event) {\n    var target = $(event.currentTarget);\n\n    clearTimeout(target.data('timeout'));\n\n    target.data('timeout', setTimeout($.proxy(this._doSearch, this), 250));\n  };\n\n  Plugin.prototype._doSearch = function(event) {\n    // No autocompletion on mobile\n     \n    // If we are on mobile, we do a single search that will get all resources, based on the setting. If tablet and higher, we do two Ajax calls: one\n    // that will fetch product only, and another one that will fetch anything else\n    if (this.headerInput.val() === '') {\n      this.headerSearchResults.empty();\n      return; // No need to search if it's empty\n    } else {\n      this.headerSearchResults.html(this.searchResultsTemplate({is_loading: true}));\n    }\n\n    if (this.searchMode === 'product') {\n      this._doCompleteSearch();\n    } else {\n      this._doSeparateSearch();\n    }\n  };\n\n  Plugin.prototype._doCompleteSearch = function(event) {\n    var self = this;\n\n    $.ajax({\n      method: 'GET',\n      url: '/search?view=json',\n      dataType: 'json',\n      data: {\n        q: this.headerInput.val() + '*',\n        type: this.searchMode\n      }\n    }).then(function(data) {\n      self.headerSearchResults.html(self.searchResultsTemplate({\n        is_loading: false,\n        split_search: false,\n        on_sale_label: window.languages.productLabelsOnSale,\n        results: data['results'],\n        has_results: (data['results'].length > 0),\n        results_count: data['results_count'],\n        results_label: data['results_label'],\n        results_url: (data['url'] + '&type=' + self.searchMode)\n      }));\n\n      \n    });\n  };\n\n  Plugin.prototype._doSeparateSearch = function(event) {\n    var searchTypes = this.searchMode.split(','),\n      self = this;\n\n    var firstSearch = $.ajax({\n      method: 'GET',\n      url: '/search?view=json',\n      dataType: 'json',\n      data: {\n        q: this.headerInput.val() + '*',\n        type: searchTypes[0]\n      }\n    });\n\n    var lastSearch = $.ajax({\n      method: 'GET',\n      url: '/search?view=json',\n      dataType: 'json',\n      data: {\n        q: this.headerInput.val() + '*',\n        type: searchTypes.slice(1).join(',')\n      }\n    });\n\n    $.when(firstSearch, lastSearch).then(function(data1, data2) {\n      self.headerSearchResults.html(self.searchResultsTemplate({\n        is_loading: false,\n        split_search: true,\n        on_sale_label: window.languages.productLabelsOnSale,\n        has_products_results: (data1[0]['results'].length > 0),\n        has_others_results: (data2[0]['results'].length > 0),\n        products: {\n          results: data1[0]['results'],\n          results_count: data1[0]['results_count'],\n          results_label: data1[0]['results_label'],\n          results_url: (data1[0]['url'] + '&type=' + searchTypes[0])\n        },\n        others: {\n          results: data2[0]['results'],\n          results_count: data2[0]['results_count'],\n          results_label: data2[0]['results_label'],\n          results_url: (data2[0]['url'] + '&type=' + searchTypes.slice(1).join(','))\n        }\n      }));\n\n      \n    });\n  };\n\n  Plugin.prototype._formSubmitted = function(event) {\n    this.headerInput.val(this.headerInput.val() + '*');\n    return true;\n  };\n\n  /**\n   * Allow to give focus on an item while preserving scroll position\n   */\n  Plugin.prototype._cursorFocus = function(element) {\n    var x = window.scrollX,\n      y = window.scrollY;\n\n    element.focus();\n    window.scrollTo(x, y);\n  };\n\n  $.fn[pluginName] = function(options) {\n    var method = false,\n      methodArgs = arguments;\n\n    if (typeof options == 'string') {\n      method = options;\n    }\n\n    return this.each(function() {\n      var plugin = $.data(this, namespace);\n\n      if (!plugin && !method) {\n        $.data(this, namespace, new Plugin(this, options));\n      } else if (method) {\n        callMethod(plugin, method, Array.prototype.slice.call(methodArgs, 1));\n      }\n    });\n  };\n}(jQuery));\n/**\n * Plugin to handle home slideshow\n */\n\n(function ($) {\n\n  'use strict';\n\n  var pluginName = 'trademarkHomeSlideshow',\n    namespace = 'plugin_' + pluginName;\n\n  /**\n   * The Plugin constructor\n   * @constructor\n   * @param {HTMLElement} element The element that will be monitored\n   */\n  function Plugin(element) {\n    this.slideshow = $(element);\n    this.slideshowAnchor = this.slideshow.find('.slideshow--anchor');\n    this.slideshowAnchorSlides = this.slideshowAnchor.find('.slideshow__slide');\n    this.slideshowMain = this.slideshow.find('.slideshow--main');\n    this.slideshowMainSlides = this.slideshowMain.find('.slideshow__slide');\n    this.slideshowSlidesCount = this.slideshowMainSlides.length;\n    this.slideshowCount = this.slideshow.find('.slideshow__current-slide');\n    this.slideshowButtons = this.slideshow.find('.slideshow__nav-button');\n    this.hasTransitionPending = false;\n    this.paused = false;\n\n    this.slideshow.find('.slideshow__nav-next').on('click', $.proxy(this.nextSlide, this));\n    this.slideshow.find('.slideshow__nav-prev').on('click', $.proxy(this.prevSlide, this));\n    this.slideshow.on('swipeleft', $.proxy(this.nextSlide, this));\n    this.slideshow.on('swiperight', $.proxy(this.prevSlide, this));\n\n    // If we have the autoplay set up, we activate it\n    this.hasAutoplay = (this.slideshow.attr('data-autoplay') === 'true');\n    this.autoplayCycleSpeed = parseInt(this.slideshow.attr('data-cycle-speed'));\n\n    if (this.hasAutoplay) {\n      this._setupAutoplay();\n    }\n\n    // We simulate an initial change so that various events can be hooked up correctly\n    var firstSlide = this.slideshowMainSlides.eq(0);\n    this._didChange(firstSlide, firstSlide);\n\n    // Setup the video (if any)\n\n    this.players = plyr.setup(this.slideshowMain.find('.plyr-video[data-type]'), {\n      controls: ['play-large'],\n      iconPrefix: 'icon-video'\n    }) || [];\n\n    var self = this;\n\n    this.players.forEach(function(player) {\n      player.on('play', $.proxy(self._videoStarted, self));\n      player.on('pause ended', $.proxy(self._videoEnded, self));\n    });\n  }\n\n  /**\n   * Clear the memory and remove any listener\n   */\n  Plugin.prototype.destroy = function() {\n    this.slideshow.off('swipeleft swiperight');\n    this.slideshowButtons.off('click');\n    clearInterval(this.timer);\n\n    this.players.forEach(function(player) {\n      player.destroy();\n    });\n\n    this.slideshow.removeData('plugin_trademarkHomeSlideshow');\n  };\n\n  /**\n   * Move to the next slide\n   */\n  Plugin.prototype.nextSlide = function() {\n    var currentAnchorSlide = this.slideshowAnchorSlides.filter('.slideshow__slide--active'),\n      prevOrNextAnchorSlide = currentAnchorSlide.next('.slideshow__slide'),\n      currentMainSlide = this.slideshowMainSlides.filter('.slideshow__slide--active'),\n      prevOrNextMainSlide = currentMainSlide.next('.slideshow__slide');\n\n    if (prevOrNextAnchorSlide.length === 0) {\n      prevOrNextAnchorSlide = this.slideshowAnchorSlides.first();\n    }\n\n    if (prevOrNextMainSlide.length === 0) {\n      prevOrNextMainSlide = (prevOrNextMainSlide.length !== 0) ? prevOrNextMainSlide : this.slideshowMainSlides.first();\n    }\n\n    this._move(currentAnchorSlide, prevOrNextAnchorSlide, currentMainSlide, prevOrNextMainSlide, 'next');\n\n    return false;\n  };\n\n  /**\n   * Move to the previous slide\n   */\n  Plugin.prototype.prevSlide = function() {\n    var currentAnchorSlide = this.slideshowAnchorSlides.filter('.slideshow__slide--active'),\n      prevOrNextAnchorSlide = currentAnchorSlide.prev('.slideshow__slide'),\n      currentMainSlide = this.slideshowMainSlides.filter('.slideshow__slide--active'),\n      prevOrNextMainSlide = currentMainSlide.prev('.slideshow__slide');\n\n    if (prevOrNextAnchorSlide.length === 0) {\n      prevOrNextAnchorSlide = this.slideshowAnchorSlides.last();\n    }\n\n    if (prevOrNextMainSlide.length === 0) {\n      prevOrNextMainSlide = (prevOrNextMainSlide.length !== 0) ? prevOrNextMainSlide : this.slideshowMainSlides.last();\n    }\n\n    this._move(currentAnchorSlide, prevOrNextAnchorSlide, currentMainSlide, prevOrNextMainSlide, 'previous');\n\n    return false;\n  };\n\n  /**\n   * Move to a specific slide\n   */\n  Plugin.prototype.goToSlide = function(index) {\n    var desiredIndex = parseInt(index) - 1,\n      currentAnchorSlide = this.slideshowAnchorSlides.filter('.slideshow__slide--active'),\n      prevOrNextAnchorSlide = this.slideshowAnchorSlides.eq(desiredIndex === 0 ? 1 : (desiredIndex + 1) % this.slideshowSlidesCount),\n      currentMainSlide = this.slideshowMainSlides.filter('.slideshow__slide--active'),\n      prevOrNextMainSlide = this.slideshowMainSlides.eq(desiredIndex),\n      currentIndex = this.slideshowMainSlides.index(currentMainSlide);\n\n    if (currentIndex === desiredIndex) {\n      return;\n    }\n\n    this._move(currentAnchorSlide, prevOrNextAnchorSlide, currentMainSlide, prevOrNextMainSlide, (currentIndex > desiredIndex) ? 'previous' : 'next');\n\n    return false;\n  };\n\n  /**\n   * Pause the autoplay\n   */\n  Plugin.prototype.pause = function() {\n    this.paused = true;\n  };\n\n  /**\n   * Restart the autoplay\n   */\n  Plugin.prototype.play = function() {\n    this.paused = false;\n  };\n\n  /**\n   * Add the various classes to properly animate all the slides\n   *\n   * @param currentAnchorSlide\n   * @param prevOrNextAnchorSlide\n   * @param currentMainSlide\n   * @param prevOrNextMainSlide\n   * @param direction\n   * @private\n   */\n  Plugin.prototype._move = function(currentAnchorSlide, prevOrNextAnchorSlide, currentMainSlide, prevOrNextMainSlide, direction) {\n    if (this.hasTransitionPending) {\n      return;\n    }\n\n    if (this.hasAutoplay && !this.paused) {\n      this._clearAutoplay();\n    }\n\n    var self = this;\n\n    this.slideshowButtons.attr('disabled', 'disabled');\n\n    this._willChange(currentMainSlide, prevOrNextMainSlide);\n\n    if (Modernizr?.cssanimations) {\n      var animationClasses = 'slideshow__slide--animating ' + (direction === 'next' ? 'slideshow__slide--animating-rtl' : 'slideshow__slide--animating-ltr');\n\n      // 1st: add all the classes needed to trigger animations\n      prevOrNextAnchorSlide.addClass(animationClasses);\n      prevOrNextMainSlide.addClass(animationClasses);\n      currentMainSlide.addClass('slideshow__slide--removing');\n      currentAnchorSlide.addClass('slideshow__slide--removing');\n\n      // 2nd: listen to the event to properly removing the classes when animations are over\n      prevOrNextAnchorSlide.find('.slideshow__media-container').one('webkitAnimationEnd animationend', function() {\n        prevOrNextAnchorSlide.removeClass(animationClasses).addClass('slideshow__slide--active');\n        currentAnchorSlide.removeClass('slideshow__slide--active slideshow__slide--removing');\n      });\n\n      prevOrNextMainSlide.find('.slideshow__media').one('webkitAnimationEnd animationend', function() {\n        prevOrNextMainSlide.removeClass(animationClasses).addClass('slideshow__slide--active');\n        currentMainSlide.removeClass('slideshow__slide--active slideshow__slide--removing');\n\n        self.slideshowCount.text(prevOrNextMainSlide.attr('data-slide-index'));\n        self.slideshowButtons.removeAttr('disabled');\n\n        self._didChange(currentMainSlide, prevOrNextMainSlide);\n      });\n    } else {\n      prevOrNextAnchorSlide.addClass('slideshow__slide--active');\n      currentAnchorSlide.removeClass('slideshow__slide--active');\n\n      prevOrNextMainSlide.addClass('slideshow__slide--active');\n      currentMainSlide.removeClass('slideshow__slide--active');\n\n      this.slideshowCount.text(prevOrNextMainSlide.attr('data-slide-index'));\n      this.slideshowButtons.removeAttr('disabled');\n\n      this._didChange(currentMainSlide, prevOrNextMainSlide);\n    }\n  };\n\n  /**\n   * Callback that is called before the slide changes\n   */\n  Plugin.prototype._willChange = function(previousSlide, newSlide) {\n    this.hasTransitionPending = true;\n\n    if (!previousSlide.hasClass('slideshow__slide--video')) {\n      return;\n    }\n\n    // If the previous slide (the one that gonna disappear) is a video, we pause it\n\n    plyr.get(previousSlide.get(0))[0].pause();\n  };\n\n  /**\n   * Callback that is called after the slide has changed\n   */\n  Plugin.prototype._didChange = function(previousSlide, newSlide) {\n    this.hasTransitionPending = false;\n\n    if (this.hasAutoplay && !this.paused) {\n      this._setupAutoplay();\n    }\n  };\n\n  /**\n   * Setup the autoplay which allows to automatically change slide\n   */\n  Plugin.prototype._setupAutoplay = function() {\n    var self = this;\n\n    // If there is a previous timer, clear it\n    this._clearAutoplay();\n\n    this.timer = setInterval(function() {\n      if (!self.paused) {\n        self.nextSlide();\n      }\n    }, this.autoplayCycleSpeed);\n  };\n\n  /**\n   * Clear the autoplay\n   */\n  Plugin.prototype._clearAutoplay = function() {\n    if (this.timer) {\n      clearInterval(this.timer);\n    }\n\n    this.timer = null;\n  };\n\n  /**\n   * Called when a video starts playing\n   */\n  Plugin.prototype._videoStarted = function() {\n    if (this.hasAutoplay) {\n      this.paused = true;\n    }\n\n    this.slideshowMain.addClass('slideshow--video-playing');\n  };\n\n  /**\n   * Called when a video ends or is paused\n   */\n  Plugin.prototype._videoEnded = function() {\n    if (this.hasAutoplay) {\n      this.paused = false;\n    }\n\n    this.slideshowMain.removeClass('slideshow--video-playing');\n  };\n\n  $.fn[pluginName] = function(options) {\n    var method = false,\n      methodArgs = arguments;\n\n    if (typeof options == 'string') {\n      method = options;\n    }\n\n    return this.each(function() {\n      var plugin = $.data(this, namespace);\n\n      if (!plugin && !method) {\n        $.data(this, namespace, new Plugin(this, options));\n      } else if (method) {\n        callMethod(plugin, method, Array.prototype.slice.call(methodArgs, 1));\n      }\n    });\n  };\n}(jQuery));\n/**\n * Plugin to handle Instagram\n */\n\n(function ($) {\n\n  'use strict';\n\n  var pluginName = 'trademarkInstagram',\n    namespace = 'plugin_' + pluginName;\n\n  /**\n   * The Plugin constructor\n   */\n  function Plugin(element) {\n    this.element = $(element);\n    this.hasTransitionPending = false;\n    this.accessToken = this.element.attr('data-access-token');\n\n    if (this.accessToken) {\n      // Otherwise, we init the plugin\n      var feed = new Instafeed({\n        get: 'user',\n        userId: 'self',\n        accessToken: this.accessToken,\n        sortBy: 'most-recent',\n        limit: 15,\n        resolution: Modernizr?.mq('(max-width: 500px)') ? 'low_resolution' : 'standard_resolution',\n        success: $.proxy(this._imagesLoaded, this),\n        mock: function() {} // This allows to not insert images directly\n      });\n\n      feed.run();\n    }\n\n    this.element.on('click', '.instagram-tile__button--prev', $.proxy(this._move, this, 'prev'));\n    this.element.on('click', '.instagram-tile__button--next', $.proxy(this._move, this, 'next'));\n    this.element.on('swiperight', $.proxy(this._move, this, 'prev'));\n    this.element.on('swipeleft', $.proxy(this._move, this, 'next'));\n  }\n\n  Plugin.prototype.destroy = function() {\n    this.element.find('.instagram-tile__button').off('click');\n    this.element.off('swipeleft swiperight');\n    this.element.removeData('plugin_trademarkInstagram');\n  };\n\n  Plugin.prototype._imagesLoaded = function(results) {\n    var images = results['data'];\n\n    // We require 15 images to make it work, so we duplicate images until we have 15\n    while (images.length < 15) {\n      images = images.concat(images);\n    }\n\n    // We slice to images if we have more than 15\n    images = images.slice(0, 15);\n\n    // The first image is the newest one, but the elements must be re-ordered so that the newest image is at the centered of the array (acting as\n    // a pivot)\n    var pivotPosition = Math.round(images.length / 2),\n      itemsToMoveBack = images.splice(pivotPosition),\n      deepCopyOfImages = images.slice();\n\n    itemsToMoveBack.reverse().forEach(function(itemToMoveBack) {\n      deepCopyOfImages.unshift(itemToMoveBack);\n    });\n\n    // Then, we need to render the elements. Due to the effect we want to achieve, each \"tile\" must contain both the active image but as well the\n    // previous and next ones\n    var html = '';\n\n    for (var i = 0 ; i !== deepCopyOfImages.length ; ++i) {\n      var previousPositionIndex = (i === 0) ? (deepCopyOfImages.length - 1) : (i - 1),\n        nextPositionIndex = (i === (deepCopyOfImages.length - 1)) ? 0 : (i + 1);\n\n      // We can now render each tile\n      var tileHtml = '' +\n        '<div class=\"instagram__tile-wrapper-hidder\">' +\n          this._renderTile(deepCopyOfImages[previousPositionIndex], 'instagram-tile--prev') +\n          this._renderTile(deepCopyOfImages[i], 'instagram-tile--active') +\n          this._renderTile(deepCopyOfImages[nextPositionIndex], 'instagram-tile--next') +\n        '</div>';\n\n      html = html +\n          '<div class=\"instagram__tile-wrapper ' + (i === (pivotPosition - 1) ? 'instagram__tile-wrapper--featured' : '') + '\">' +\n            '<button class=\"instagram-tile__button instagram-tile__button--prev\">' +\n              '<svg class=\"icon icon-arrow-left\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-arrow-left\"></use></svg>' +\n            '</button>' +\n            tileHtml +\n            '<button class=\"instagram-tile__button instagram-tile__button--next\">' +\n              '<svg class=\"icon icon-arrow-right\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-arrow-right\"></use></svg>' +\n            '</button>' +\n          '</div>';\n    }\n\n    this.element.html(html);\n  };\n\n  Plugin.prototype._renderTile = function(instagramImage, cssClass) {\n    var caption = instagramImage['caption'] ? instagramImage['caption']['text'] : '';\n    caption = (caption.length > 125 ? caption.substring(0, 125) + '...' : caption);\n\n    // Allow to normalize a bit the content by escaping special characters\n    caption = caption.replace(/&/g, \"&amp;\")\n      .replace(/</g, \"&lt;\")\n      .replace(/>/g, \"&gt;\")\n      .replace(/\"/g, \"&quot;\")\n      .replace(/'/g, \"&#039;\");\n\n    return '<div class=\"instagram-tile ' + cssClass + '\">' +\n      '<div class=\"instagram-tile__info\">' +\n        '<div class=\"instagram-tile__info-wrapper\">' +\n          '<div class=\"instagram-tile__meta\">' +\n            '<p class=\"instagram-tile__likes\">' +\n              '<svg class=\"icon icon-heart\">' +\n                '<use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-heart\"></use>' +\n              '</svg>' +\n              instagramImage['likes']['count'] +\n            '</p>' +\n            '<div class=\"instagram-tile__caption rte\">' + caption + '</div>' +\n          '</div>' +\n          '<time class=\"instagram-tile__date text--uppercase\">' + this._formatDate(instagramImage['created_time']) + '</time>' +\n        '</div>' +\n      '</div>' +\n      '<a href=\"' + instagramImage['link'] + '\" class=\"instagram-tile__image-wrapper\" target=\"_blank\" style=\"background-image: url(' + instagramImage['images']['standard_resolution']['url'] + ')\">' +\n      '</a>' +\n    '</div>';\n  };\n\n  Plugin.prototype._formatDate = function(instagramDate) {\n    var date = new Date(instagramDate * 1000),\n      m = date.getMonth(),\n      d = date.getDate(),\n      y = date.getFullYear();\n\n    var monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\n    return monthNames[m] + ' ' + d + ', ' + y;\n  };\n\n  Plugin.prototype._move = function(direction, event) {\n    if (this.hasTransitionPending) {\n      return;\n    }\n\n    this.hasTransitionPending = true;\n    this.element.find('.instagram-tile__button').attr('disabled', 'disabled');\n    this.element.addClass('instagram-feed--animating-' + direction);\n\n    if (Modernizr?.cssanimations) {\n      this.element.on('webkitAnimationEnd animationend', $.proxy(this._finishTransition, this, direction));\n    } else {\n      this._finishTransition(direction);\n    }\n\n    event.preventDefault();\n  };\n\n  Plugin.prototype._finishTransition = function(direction, event) {\n    if (Modernizr?.cssanimations\n      && (event.originalEvent.animationName !== 'instagramTileAnimation' || $(event.target).closest('.instagram__tile-wrapper--featured').length === 0)) {\n      return;\n    }\n\n    var tileWrappers = this.element.find('.instagram__tile-wrapper');\n\n    if (direction === 'next') {\n      this.element.append(tileWrappers.first().detach());\n      tileWrappers.filter('.instagram__tile-wrapper--featured').removeClass('instagram__tile-wrapper--featured').next().addClass('instagram__tile-wrapper--featured');\n    } else {\n      this.element.prepend(tileWrappers.last().detach());\n      tileWrappers.filter('.instagram__tile-wrapper--featured').removeClass('instagram__tile-wrapper--featured').prev().addClass('instagram__tile-wrapper--featured');\n    }\n\n    this.element.find('.instagram-tile__button').removeAttr('disabled');\n    this.element.removeClass('instagram-feed--animating-' + direction);\n    this.element.off('webkitAnimationEnd animationend');\n    this.hasTransitionPending = false;\n  };\n\n  $.fn[pluginName] = function(options) {\n    var method = false,\n      methodArgs = arguments;\n\n    if (typeof options == 'string') {\n      method = options;\n    }\n\n    return this.each(function() {\n      var plugin = $.data(this, namespace);\n\n      if (!plugin && !method) {\n        $.data(this, namespace, new Plugin(this, options));\n      } else if (method) {\n        callMethod(plugin, method, Array.prototype.slice.call(methodArgs, 1));\n      }\n    });\n  };\n}(jQuery));\n/**\n * Plugin to handle the main nav\n */\n\n(function ($) {\n\n  'use strict';\n\n  var pluginName = 'trademarkMainNav',\n    namespace = 'plugin_' + pluginName;\n\n  /**\n   * The Plugin constructor\n   */\n  function Plugin(element) {\n    this.mainNav = $(element);\n    this.mainNavLinks = this.mainNav.find('.header__link');\n\n    // Improve accessibility of menu by adding classes when an item is on focus\n    this.mainNavLinks.on('focusin', function() {\n      $(this).addClass('header__link--focused');\n    });\n\n    this.mainNavLinks.on('focusout', function() {\n      $(this).removeClass('header__link--focused');\n    });\n\n    // Add a listener to check if the main nav can fit and init it (only when the logo is positioned in the center)\n    if (!this.mainNav.hasClass('header__main-nav--stretched')) {\n      this.mainNavWidth = Math.ceil(this.mainNav.width() + 35);\n      this._verifyOverlap();\n\n      $(window).on('resize.trademarkMainNav', $.proxy(this._verifyOverlap, this));\n    }\n\n    // We need to handle the overlap\n    this.mainNav.find('.nav-dropdown--first').on('mouseenter', function() {\n      var windowWidth = window.innerWidth,\n        item = $(this),\n        nestedMenus = item.find('.nav-dropdown--second'),\n        rightEdge = this.getBoundingClientRect().right,\n        shouldOpenLeft = false;\n\n      nestedMenus.each(function(index, item) {\n        if ((rightEdge + item.offsetWidth) > windowWidth) {\n          shouldOpenLeft = true;\n          return false; // this allows to break from the each\n        }\n      });\n\n      if (shouldOpenLeft) {\n        nestedMenus.addClass('nav-dropdown--left');\n      } else {\n        nestedMenus.removeClass('nav-dropdown--left');\n      }\n    });\n  }\n\n  Plugin.prototype.destroy = function() {\n    this.mainNavLinks.off('focusin focusout');\n    this.mainNav.removeData('plugin_trademarkMainNav');\n\n    $(window).off('.trademarkMainNav');\n  };\n\n  Plugin.prototype._verifyOverlap = function() {\n    // We need to find if the main nav overlap the logo. To find out this, we get the right edge of the main nav, and verify it's not \"after\" the left\n    // position of the logo (the +35 is to add a bit more space)\n    var isOverlapping = this.mainNavWidth > Math.ceil($('.header__logo').position().left - $('.header__inner').position().left);\n\n    // If it's overlapping, we use the mobile navigation instead\n    if (isOverlapping) {\n      this.mainNav.hide();\n      $('.header__nav-toggle').removeClass('hidden-desk');\n    } else {\n      this.mainNav.show();\n      $('.header__nav-toggle').addClass('hidden-desk');\n    }\n\n    $('.header').addClass('header--init');\n  };\n\n  $.fn[pluginName] = function(options) {\n    var method = false,\n      methodArgs = arguments;\n\n    if (typeof options == 'string') {\n      method = options;\n    }\n\n    return this.each(function() {\n      var plugin = $.data(this, namespace);\n\n      if (!plugin && !method) {\n        $.data(this, namespace, new Plugin(this, options));\n      } else if (method) {\n        callMethod(plugin, method, Array.prototype.slice.call(methodArgs, 1));\n      }\n    });\n  };\n}(jQuery));\n/**\n * Plugin to handle the mini-cart\n */\n\n(function ($) {\n\n  'use strict';\n\n  var pluginName = 'trademarkMiniCart',\n    namespace = 'plugin_' + pluginName;\n\n  /**\n   * The Plugin constructor\n   */\n  function Plugin(element) {\n    this.miniCart = $(element);\n    this.announcementBar = $('.announcement-bar');\n    this.header = $('.header');\n    this.headerCartCount = $('.header__cart-count');\n    this.sidebarNav = $('.sidebar-nav');\n\n    this.state = 'closed';\n\n    this.body = $('body');\n    this.pageOverlay = $('.page__overlay');\n\n    this.body.on('click keypress', '[data-action=\"toggle-mini-cart\"]', $.proxy(this._toggleMiniCart, this));\n    this.miniCart.on('click', '[data-action=\"remove-line-item\"]', $.proxy(this._removeLine, this));\n\n    $(document).on('theme:cart:updated', $.proxy(this._cartUpdated, this));\n    $(window).on('resize.trademarkMiniCart', $.proxy(this._computeMiniCartHeight, this));\n\n    // We automatically re-render it a first time to solve a strange issue where adding a product in Ajax, going to Checkout and go back does not re-render\n    // the very last version in Liquid\n    this._rerender();\n\n    if (Modernizr?.csstransitions) {\n      this.miniCart.on('transitionend', $.proxy(this._emitTransitionEvent, this));\n    }\n  }\n\n  Plugin.prototype.destroy = function() {\n    this.miniCart.removeData('plugin_trademarkMiniCart');\n    this.miniCart.find('[data-action=\"remove-line-item\"]').off('click');\n    this.body.off('.trademarkMiniCart');\n\n    $(document).off('theme:cart:updated');\n    $(window).off('.trademarkMiniCart');\n  };\n\n  Plugin.prototype.getState = function() {\n    return this.state;\n  };\n\n  Plugin.prototype._toggleMiniCart = function(event) {\n    var self = this;\n\n    // The mini-cart can be toggled using \"Enter\" key in keyboard as well\n    if ((event.keyCode ? event.keyCode : event.which) == 13) {\n      event.preventDefault(); // Prevent to follow the link\n    }\n\n    this._computeMiniCartHeight();\n\n    this.miniCart.toggleClass('mini-cart--open');\n\n    if (this.miniCart.hasClass('mini-cart--open')) {\n      // Before opening, we must check if the nav sidebar is open. If that's the case we first close it\n      var sidebarNavInstance = this.sidebarNav.data('plugin_trademarkMobileSidebar');\n\n      if (sidebarNavInstance.state === 'opening' || sidebarNavInstance.state === 'opened') {\n        sidebarNavInstance._toggleSidebar(event);\n      }\n\n      this.state = 'opening';\n      $(document).trigger('opening.trademarkMiniCart');\n\n      this.body.addClass('no-scroll');\n      this.pageOverlay.addClass('page__overlay--open');\n\n      if (!Modernizr?.csstransitions) {\n        this.state = 'opened';\n        $(document).trigger('opened.trademarkMiniCart');\n      }\n\n      this.miniCart.one('transitionend', function() {\n        self.miniCart.focus(); // Allows to give focus for better accessibility on keyboard\n      });\n\n      this.body.on('keyup.trademarkMiniCart', function(outsideEvent) {\n        if (outsideEvent.keyCode == 27) {\n          self._toggleMiniCart(outsideEvent);\n        }\n      });\n\n      this.body.on('click.trademarkMiniCart', function(outsideEvent) {\n        if (!$(outsideEvent.target).closest('#shopify-section-header').length) {\n          self._toggleMiniCart(outsideEvent);\n        }\n      });\n    } else {\n      this.state = 'closing';\n      $(document).trigger('closing.trademarkMiniCart');\n\n      this.body.removeClass('no-scroll');\n      this.body.off('.trademarkMiniCart');\n      this.pageOverlay.removeClass('page__overlay--open');\n\n      if (!Modernizr?.csstransitions) {\n        this.state = 'closed';\n        $(document).trigger('closed.trademarkMiniCart');\n      }\n    }\n\n    event.preventDefault();\n  };\n\n  Plugin.prototype._cartUpdated = function(event, cart, forceOpening) {\n    this.headerCartCount.text(cart['item_count']);\n\n    // We only re-render the cart from server. Since automatic discount can alter the lines as well as the total,\n    // it is easier to simply re-render from the source\n    this._rerender();\n\n    if (forceOpening) {\n      this._toggleMiniCart(event);\n    }\n\n    \n  };\n\n  Plugin.prototype._removeLine = function(event) {\n    var target = $(event.currentTarget),\n      variantId = target.attr('data-variant-id'),\n      lineItem = target.closest('.mini-cart__item-wrapper'),\n      items = target.closest('.mini-cart__items');\n\n    items.addClass('mini-cart__items--loading');\n\n    $.ajax({\n      method: 'POST',\n      url: '/cart/change.js',\n      dataType: 'json',\n      data: {\n        quantity: 0,\n        id: variantId\n      }\n    }).then(function(newCart) {\n      items.removeClass('mini-cart__items--loading');\n      lineItem.slideUp(250, function() {$(this).remove();});\n\n      $(document).trigger('theme:cart:updated', [newCart, false, false]);\n    });\n\n    event.preventDefault();\n  };\n\n  /**\n   * Rerender each items of the mini cart\n   *\n   * @param cart\n   * @private\n   */\n  Plugin.prototype._rerender = function() {\n    // We render the alternate mini-cart template instead of rendering it in JavaScript. This allows app vendor to hook their own logic within the\n    // mini-cart in pure Liquid\n    var self = this;\n\n    $.ajax('/cart?view=mini-cart').then(function(result) {\n      var domResult = $(result),\n        miniCartCount = domResult.attr('data-cart-item-count');\n\n      self.miniCart.find('.mini-cart__inner').replaceWith(domResult.find('.mini-cart__inner'));\n      self.headerCartCount.text(miniCartCount);\n      self._computeMiniCartHeight();\n\n      \n    });\n  };\n\n  /**\n   * Compute the correct mini-cart height (by taking into account things such as top bar, viewport...)\n   */\n  Plugin.prototype._computeMiniCartHeight = function() {\n    // First, we need to get how much of the \"top bar\" (which is not fixed) is visible in the viewport\n    var announcementBarVisibleHeight = 0,\n      headerOuterHeight = this.header.outerHeight();\n\n    if (this.announcementBar.length > 0) {\n      var announcementBarHeight = this.announcementBar.height(),\n        windowHeight = $(window).height(),\n        rect = this.announcementBar[0].getBoundingClientRect();\n\n      announcementBarVisibleHeight = Math.max(0, rect.top > 0 ? Math.min(announcementBarHeight, windowHeight - rect.top) : (rect.bottom < windowHeight ? rect.bottom : windowHeight));\n    }\n\n    this.miniCart.find('.mini-cart__inner').css('max-height', (window.innerHeight - headerOuterHeight - announcementBarVisibleHeight) + 'px');\n  };\n\n  /**\n   * Callback called whenever the transition (animation of opening or closing) is ended so we can emit events for other parts of the system\n   */\n  Plugin.prototype._emitTransitionEvent = function(event) {\n    if (event.originalEvent.propertyName !== 'transform') {\n      return;\n    }\n\n    if (this.state === 'opening' || this.state === 'opened') {\n      this.state = 'opened';\n      $(document).trigger('opened.trademarkMiniCart');\n    } else {\n      this.state = 'closed';\n      $(document).trigger('closed.trademarkMiniCart');\n    }\n  };\n\n  $.fn[pluginName] = function(options) {\n    var method = false,\n      methodArgs = arguments;\n\n    if (typeof options == 'string') {\n      method = options;\n    }\n\n    return this.each(function() {\n      var plugin = $.data(this, namespace);\n\n      if (!plugin && !method) {\n        $.data(this, namespace, new Plugin(this, options));\n      } else if (method) {\n        callMethod(plugin, method, Array.prototype.slice.call(methodArgs, 1));\n      }\n    });\n  };\n}(jQuery));\n/**\n * Plugin to handle the mobile sidebar\n */\n\n(function ($) {\n\n  'use strict';\n\n  var pluginName = 'trademarkMobileSidebar',\n    namespace = 'plugin_' + pluginName;\n\n  /**\n   * The Plugin constructor\n   */\n  function Plugin(element) {\n    this.sidebarNav = $(element);\n    this.announcementBar = $('.announcement-bar');\n    this.header = $('.header');\n    this.headerNavToggle = this.header.find('[data-action=\"toggle-mobile-sidebar\"]');\n    this.miniCart = $('.mini-cart');\n\n    this.state = 'closed';\n\n    this.body = $('body');\n    this.pageOverlay = $('.page__overlay');\n\n    this.headerNavToggle.on('click.trademarkMobileSidebar', $.proxy(this._toggleSidebar, this));\n    this.sidebarNav.find('[data-action=\"toggle-mobile-sub-menu\"]').on('click.trademarkMobileSidebar', $.proxy(this._toggleSubMenu, this));\n\n    $(window).on('resize.trademarkMobileSidebar', $.proxy(this._computeSidebarHeight, this));\n\n    if (Modernizr?.csstransitions) {\n      this.sidebarNav.on('transitionend', $.proxy(this._emitTransitionEvent, this));\n    }\n  }\n\n  Plugin.prototype.destroy = function() {\n    this.header.find('[data-action=\"toggle-mobile-sidebar\"]').off('click');\n    this.sidebarNav.find('[data-action=\"toggle-mobile-sub-menu\"]').off('click');\n    this.body.off('.trademarkMobileSidebar');\n    $(window).off('.trademarkMobileSidebar');\n\n    this.sidebarNav.removeData('plugin_trademarkMobileSidebar');\n  };\n\n  Plugin.prototype.getState = function() {\n    return this.state;\n  };\n\n  /**\n   * Tgogle the navigation sidebar\n   */\n  Plugin.prototype._toggleSidebar = function(event) {\n    var self = this;\n\n    this.headerNavToggle.toggleClass('header__nav-toggle--open');\n\n    this._computeSidebarHeight();\n    this.sidebarNav.toggleClass('sidebar-nav--open');\n\n    if (this.sidebarNav.hasClass('sidebar-nav--open')) {\n      // Before opening, we must check if the mini-cart is open. If that's the case we first close it\n      var miniCartInstance = this.miniCart.data('plugin_trademarkMiniCart');\n\n      if (undefined !== miniCartInstance && (miniCartInstance.state === 'opening' || miniCartInstance.state === 'opened')) {\n        miniCartInstance._toggleMiniCart(event);\n      }\n\n      this.state = 'opening';\n      $(document).trigger('opening.trademarkMobileSidebar');\n\n      this.body.addClass('no-scroll');\n      this.pageOverlay.addClass('page__overlay--open');\n\n      this.body.on('click.trademarkMobileSidebar', function(outsideEvent) {\n        if (!$(outsideEvent.target).closest('#shopify-section-header').length) {\n          self._toggleSidebar(outsideEvent);\n        }\n      });\n\n      if (!Modernizr?.csstransitions) {\n        this.state = 'opened';\n        $(document).trigger('opened.trademarkMobileSidebar');\n      }\n    } else {\n      this.state = 'closing';\n      $(document).trigger('closing.trademarkMobileSidebar');\n\n      this.body.removeClass('no-scroll');\n      this.body.off('.trademarkMobileSidebar');\n      this.pageOverlay.removeClass('page__overlay--open');\n\n      if (!Modernizr?.csstransitions) {\n        this.state = 'closed';\n        $(document).trigger('closed.trademarkMobileSidebar');\n      }\n    }\n\n    event.preventDefault();\n  };\n\n  /**\n   * Toggle a submenu\n   */\n  Plugin.prototype._toggleSubMenu = function(event) {\n    var buttonContainer = $(event.target),\n      sidebarMenu = buttonContainer.closest('li').find('> .sidebar-nav__sub-links');\n\n    buttonContainer.attr('aria-expanded', function(index, attr) {return attr === 'true' ? 'false' : 'true'})\n      .find('.plus-button').toggleClass('plus-button--active');\n    sidebarMenu.slideToggle();\n\n    event.preventDefault();\n  };\n\n  /**\n   * Compute the correct sidebar height (by taking into account things such as top bar, viewport...)\n   */\n  Plugin.prototype._computeSidebarHeight = function() {\n    // First, we need to get how much of the \"top bar\" (which is not fixed) is visible in the viewport\n    var announcementBarVisibleHeight = 0,\n      headerOuterHeight = this.header.outerHeight();\n\n    if (this.announcementBar.length > 0) {\n      var announcementBarHeight = this.announcementBar.height(),\n        windowHeight = $(window).height(),\n        rect = this.announcementBar[0].getBoundingClientRect();\n\n      announcementBarVisibleHeight = Math.max(0, rect.top > 0 ? Math.min(announcementBarHeight, windowHeight - rect.top) : (rect.bottom < windowHeight ? rect.bottom : windowHeight));\n    }\n\n    this.sidebarNav.css('max-height', (window.innerHeight - headerOuterHeight - announcementBarVisibleHeight) + 'px');\n  };\n\n  /**\n   * Callback called whenever the transition (animation of opening or closing) is ended so we can emit events for other parts of the system\n   */\n  Plugin.prototype._emitTransitionEvent = function(event) {\n    if (event.originalEvent.propertyName !== 'transform') {\n      return;\n    }\n\n    this._cursorFocus(this.sidebarNav); // Give the focus to the sidebar for easier keyboard navigation\n\n    if (this.state === 'opening' || this.state === 'opened') {\n      this.state = 'opened';\n      $(document).trigger('opened.trademarkMobileSidebar');\n    } else {\n      this.state = 'closed';\n      $(document).trigger('closed.trademarkMobileSidebar');\n    }\n  };\n\n  /**\n   * Allow to give focus on an item while preserving scroll position\n   */\n  Plugin.prototype._cursorFocus = function(element) {\n    var x = window.scrollX,\n      y = window.scrollY;\n\n    element.focus();\n    window.scrollTo(x, y);\n  };\n\n  $.fn[pluginName] = function(options) {\n    var method = false,\n      methodArgs = arguments;\n\n    if (typeof options == 'string') {\n      method = options;\n    }\n\n    return this.each(function() {\n      var plugin = $.data(this, namespace);\n\n      if (!plugin && !method) {\n        $.data(this, namespace, new Plugin(this, options));\n      } else if (method) {\n        callMethod(plugin, method, Array.prototype.slice.call(methodArgs, 1));\n      }\n    });\n  };\n}(jQuery));\n/**\n * Plugin to handle product update\n */\n\n(function ($) {\n\n  'use strict';\n\n  var pluginName = 'trademarkProduct',\n    namespace = 'plugin_' + pluginName;\n\n  /**\n   * The Plugin constructor\n   * @constructor\n   * @param {HTMLElement} element The element that will be monitored\n   * @param {Object} options\n   */\n  function Plugin(element, options) {\n    this.element = $(element);\n\n    this._init(options);\n  }\n\n  Plugin.prototype._init = function(options) {\n    this.product = options['product'];\n    this.enableHistoryState = options['enableHistoryState'];\n    this.optionsWithValues = options['optionsWithValues'];\n    this.allowSelectingSoldOutVariants = options['allowSelectingSoldOutVariants'];\n    this.context = options['context'] || null;\n    this.singleOptionSelectors = this.element.find('.single-option-selector');\n    this.dataSelectors = this.element.find('[data-selector-type]').toArray();\n    this.masterSelector = this.element.find('#product-select-' + options['product']['id']);\n    this.productSlides = this.element.find('.product__slides');\n    this.productPrices = this.element.find('.product__prices');\n    this.addToCartButton = this.element.find('.product__add-to-cart');\n    this.quantitySelector = this.element.find('.quantity-selector');\n\n    this.currentVariant = this._getVariantFromOptions();\n\n    this.singleOptionSelectors.on('change', $.proxy(this._onSelectorChanged, this));\n    this.quantitySelector.find('[data-action=\"decrease-product-quantity\"]').on('click', $.proxy(this._decreaseProductQuantity, this));\n    this.quantitySelector.find('[data-action=\"increase-product-quantity\"]').on('click', $.proxy(this._increaseProductQuantity, this));\n\n    // In order to improve accessibility in keyboard, we allow to update swatches when pressing the Enter key over a label\n    this.singleOptionSelectors.next('label').on('keypress', function(e) {\n      if ((e.keyCode ? e.keyCode : e.which) == 13) {\n        $(this).trigger('click');\n      }\n    });\n\n    // If Ajax cart is enabled we add some more listeners to add product in the background\n    \n  };\n\n  Plugin.prototype.destroy = function() {\n    this.singleOptionSelectors.off('change');\n    this.singleOptionSelectors.next('label').off('keypress');\n    this.addToCartButton.off('click');\n    this.quantitySelector.find('[data-action=\"decrease-product-quantity\"]').off('click');\n    this.quantitySelector.find('[data-action=\"increase-product-quantity\"]').off('click');\n\n    this.element.removeData('plugin_trademarkProduct');\n  };\n\n  /**\n   * ---------------------------------------------------------------------------------------------------\n   * CODE THAT HANDLE PRODUCT OPERATIONS\n   * ---------------------------------------------------------------------------------------------------\n   */\n\n  Plugin.prototype._decreaseProductQuantity = function(event) {\n    var currentQuantity = this.quantitySelector.find('.quantity-selector__current-quantity'),\n      currentQuantityAsNumber = currentQuantity.is('input') ? parseInt(currentQuantity.val()) :  parseInt(currentQuantity.text());\n\n    // Do nothing if it's already one...\n    if (currentQuantityAsNumber === 1) {\n      event.preventDefault();\n      return;\n    }\n\n    var newQuantity = currentQuantityAsNumber - 1;\n\n    currentQuantity.text(newQuantity);\n\n    this.element.find('[name=\"quantity\"]').val(newQuantity);\n\n    event.preventDefault();\n  };\n\n  Plugin.prototype._increaseProductQuantity = function(event) {\n    const max = Number(event.currentTarget.dataset?.max || 99);\n    var currentQuantity = this.quantitySelector.find('.quantity-selector__current-quantity'),\n      currentQuantityAsNumber = currentQuantity.is('input') ? parseInt(currentQuantity.val()) :  parseInt(currentQuantity.text()),\n      newQuantity = currentQuantityAsNumber + 1;\n\n      if(newQuantity > max){\n        newQuantity = max;\n      }\n\n    currentQuantity.text(newQuantity);\n\n    this.element.find('[name=\"quantity\"]').val(newQuantity);\n\n    event.preventDefault();\n  };\n\n  /**\n   * ---------------------------------------------------------------------------------------------------\n   * CODE THAT HANDLE VARIANT CHANGES IN THE FRONT\n   * ---------------------------------------------------------------------------------------------------\n   */\n\n  /**\n   * Whenever the variant changes, we have several things to update: the slideshow image, the prices,\n   * the labels...\n   */\n  Plugin.prototype._onVariantChanged = function(previousVariant, newVariant) {\n    // 1st: the slideshow\n    this._updateSlideshowImage(previousVariant, newVariant);\n\n    // 2st: the prices\n    this._updateProductPrices(previousVariant, newVariant);\n\n    // 3rd: update the variant dropdowns\n    this._updateSelectors(previousVariant, newVariant);\n\n    // 4th: the add to cart button\n    this._updateAddToCartButton(previousVariant, newVariant);\n  };\n\n  /**\n   * Switch to the correct slideshow image\n   */\n  Plugin.prototype._updateSlideshowImage = function(previousVariant, newVariant) {\n    if (!newVariant || !newVariant['featured_image']) {\n      return;\n    }\n\n    if (this.productSlides.length > 0) {\n      this.productSlides.slick(\n        'slickGoTo',\n        parseInt(this.productSlides.find('[data-image-id=\"' + newVariant['featured_image']['id'] + '\"]').attr('data-image-position'))\n      );\n    }\n\n    if (this.context === 'homepage') {\n      this.element.find('.product__featured-image[data-image-id=\"' + newVariant['featured_image']['id'] + '\"]').show()\n        .siblings().hide();\n    }\n  };\n\n  /**\n   * Update the prices. If the variant does not exist, we hide the prices completely\n   */\n  Plugin.prototype._updateProductPrices = function(previousVariant, newVariant) {\n    if (!newVariant) {\n      this.productPrices.each(function(index, element) {\n        var parent = $(element).parent();\n\n        if (parent.hasClass('form__control')) {\n          parent.hide();\n        } else {\n          $(element).hide();\n        }\n      });\n    } else {\n      if (previousVariant && (previousVariant['price'] === newVariant['price']) && (previousVariant['compare_at_price'] === newVariant['compare_at_price'])) {\n        return;\n      }\n\n      this.productPrices.empty();\n\n      if (newVariant['compare_at_price'] > newVariant['price']) {\n        this.productPrices.append('<span class=\"product__price product__price--new h4\" data-money-convertible>' + Shopify.formatMoney(newVariant['price'], window.theme.moneyFormat) + '</span>');\n        this.productPrices.append('<span class=\"product__price product__price--old h4\" data-money-convertible>' + Shopify.formatMoney(newVariant['compare_at_price'], window.theme.moneyFormat) + '</span>');\n      } else {\n        this.productPrices.append('<span class=\"product__price h4\" data-money-convertible>' + Shopify.formatMoney(newVariant['price'], window.theme.moneyFormat) + '</span>');\n      }\n\n      this.productPrices.show().parent().show();\n    }\n\n    \n  };\n\n  /**\n   * Update the selectors\n   *\n   * We have different kind of selectors: the size one, the color swatch and standard dropdown. When a new variant is selected, we must check the options\n   * and prevent selection of unavailable and, if selected by the merchant, sold out variants\n   */\n  Plugin.prototype._updateSelectors = function(previousVariant, newVariant) {\n    // No need to recompute the combinations if there is only one option\n    if (!newVariant || this.product['options'].length <= 1) {\n      return;\n    }\n\n    var option1 = newVariant['option1'],\n      option2 = newVariant['option2'],\n      option3 = newVariant['option3'],\n      variantsCount = this.product['variants'].length;\n\n    for (var i = 0 ; i != this.dataSelectors.length ; ++i) {\n      var dataSelector = $(this.dataSelectors[i]),\n        dataSelectorType = dataSelector.attr('data-selector-type'),\n        optionIndex = (i + 1),\n        optionValues = this.optionsWithValues[i]['values'];\n\n      for (var j = 0 ; j != optionValues.length ; ++j) {\n        var valueToCheck = optionValues[j],\n          variantExists = false,\n          allowVariantSelection = false,\n          variantAvailable = false;\n\n        if (optionIndex === 1) {\n          for (var k = 0 ; k != variantsCount ; ++k) {\n            var currentVariant = this.product['variants'][k];\n\n            if (currentVariant['option1'] === valueToCheck && currentVariant['option2'] === option2 && currentVariant['option3'] === option3) {\n              variantExists = true;\n              variantAvailable = currentVariant['available'];\n\n              break;\n            }\n          }\n        } else if (optionIndex === 2) {\n          for (var k = 0 ; k != variantsCount ; ++k) {\n            var currentVariant = this.product['variants'][k];\n\n            if (currentVariant['option1'] === option1 && currentVariant['option2'] === valueToCheck && currentVariant['option3'] === option3) {\n              variantExists = true;\n              variantAvailable = currentVariant['available'];\n\n              break;\n            }\n          }\n        } else if (optionIndex === 3) {\n          for (var k = 0 ; k != variantsCount ; ++k) {\n            var currentVariant = this.product['variants'][k];\n\n            if (currentVariant['option1'] === option1 && currentVariant['option2'] === option2 && currentVariant['option3'] === valueToCheck) {\n              variantExists = true;\n              variantAvailable = currentVariant['available'];\n\n              break;\n            }\n          }\n        }\n\n        if (variantExists) {\n          if (variantAvailable || this.allowSelectingSoldOutVariants) {\n            allowVariantSelection = true;\n          }\n        } else {\n          allowVariantSelection = false;\n        }\n\n        if (dataSelectorType === 'size') {\n          // For the size, we need to add the \"product__size--unavailable\" class and \"disabled\" to the input\n          var sizeItem = dataSelector.find('.product__size').eq(j);\n\n          if (allowVariantSelection) {\n            sizeItem.removeClass('product__size--unavailable').find('> input').removeAttr('disabled')\n              .next('label').attr('tabindex', 0);\n          } else {\n            sizeItem.addClass('product__size--unavailable').find('> input').attr('disabled', 'disabled')\n              .next('label').removeAttr('tabindex');\n          }\n        } else if (dataSelectorType === 'color') {\n          // For the color, we need to add the \"product__color--unavailable\" class and \"disabled\" to the input\n          var colorItem = dataSelector.find('.product__color').eq(j);\n\n          if (allowVariantSelection) {\n            colorItem.removeClass('product__color--unavailable').find('> input').removeAttr('disabled')\n              .next('label').attr('tabindex', 0);\n          } else {\n            colorItem.addClass('product__color--unavailable').find('> input').attr('disabled', 'disabled')\n              .next('label').removeAttr('tabindex');\n          }\n        } else if (dataSelectorType === 'select') {\n          // For the select, we need to add disabled to the option\n          var optionItem = dataSelector.find('option').eq(j);\n\n          if (allowVariantSelection) {\n            optionItem.removeAttr('disabled');\n          } else {\n            optionItem.attr('disabled', 'disabled');\n          }\n        }\n      }\n    }\n  };\n\n  /**\n   * Update the add to cart button\n   */\n  Plugin.prototype._updateAddToCartButton = function(previousVariant, newVariant) {\n    // Check if we have payment button\n    var smartPaymentButton = this.element.find('.shopify-payment-button');\n\n    if (!newVariant) {\n      this.addToCartButton.attr('disabled', 'disabled')\n        .removeClass('button--primary')\n        .addClass('button--secondary')\n        .text(window.languages.productFormUnavailable);\n\n      smartPaymentButton.hide();\n    } else {\n      if (newVariant['available']) {\n        this.addToCartButton.removeAttr('disabled')\n          .addClass('button--primary')\n          .removeClass('button--secondary')\n          .text(window.languages.productFormAddToCart);\n\n        smartPaymentButton.show();\n      } else {\n        this.addToCartButton.attr('disabled', 'disabled')\n          .removeClass('button--primary')\n          .addClass('button--secondary')\n          .text(window.languages.productFormSoldOut);\n\n        smartPaymentButton.hide();\n      }\n    }\n  };\n\n  /**\n   * ---------------------------------------------------------------------------------------------------\n   * INTERNAL CODE THAT HANDLE VARIANT CHANGES\n   * ---------------------------------------------------------------------------------------------------\n   */\n\n  /**\n   * This call back is called whenever a property in one of the select or radio button has changed\n   */\n  Plugin.prototype._onSelectorChanged = function() {\n    var previousVariant = this.currentVariant;\n\n    this.currentVariant = this._getVariantFromOptions();\n    this._onVariantChanged(previousVariant, this.currentVariant);\n\n    if (this.currentVariant) {\n      if (this.enableHistoryState) {\n        this._updateHistoryState(this.currentVariant);\n      }\n\n      // We need to modify the hidden select that contain the id attribute as well\n      this.masterSelector.find('[selected]').removeAttr('selected');\n      this.masterSelector.find('[value=\"' + this.currentVariant['id'] + '\"]').prop('selected', true);\n    }\n\n    // We also trigger an event so that other system can hookup and perform additional changes\n    $(document).trigger('variant_changed.product', this.currentVariant);\n  };\n\n  /**\n   * Update the HTML history state\n   */\n  Plugin.prototype._updateHistoryState = function(variant) {\n    if (!history.replaceState) {\n      return;\n    }\n\n    var newUrl = window.location.protocol + '//' + window.location.host + window.location.pathname + '?variant=' + variant.id;\n    window.history.replaceState({path: newUrl}, '', newUrl);\n  };\n\n  /**\n   * Get the variant that is currently selected\n   */\n  Plugin.prototype._getVariantFromOptions = function() {\n    var selectedValues = this._getCurrentOptions();\n    var variants = this.product['variants'];\n    var found = false;\n\n    variants.forEach(function(variant) {\n      var satisfied = true;\n\n      selectedValues.forEach(function(option) {\n        if (satisfied) {\n          satisfied = (option.value === variant[option.index]);\n        }\n      });\n\n      if (satisfied) {\n        found = variant;\n      }\n    });\n\n    return found || null;\n  };\n\n  /**\n   * Extract all the current options\n   */\n  Plugin.prototype._getCurrentOptions = function() {\n    var currentOptions = this.singleOptionSelectors.toArray().map(function(element) {\n      var $element = $(element),\n        type = $element.attr('type'),\n        index = $element.attr('data-option-index');\n\n      if (type === 'radio' || type === 'checkbox') {\n        if ($element[0].checked) {\n          return {value: $element.val(), index: index};\n        } else {\n          return false;\n        }\n      } else {\n        return {value: $element.val(), index: index};\n      }\n    });\n\n    // remove any unchecked input values if using radio buttons or checkboxes\n\n    return currentOptions.filter(function(item) {\n      return item;\n    });\n  };\n\n  /**\n   * ---------------------------------------------------------------------------------------------------\n   * INTERNAL CODE THAT HANDLE PRODUCT ADD TO CART\n   * ---------------------------------------------------------------------------------------------------\n   */\n\n  Plugin.prototype._addToCart = function(event) {\n    var self = this;\n\n    // First, we switch the status of the button to display the spinner\n    this.addToCartButton.attr('disabled', 'disabled').addClass('button--loading');\n\n    // Then we add the product in Ajax\n    $.ajax({\n      method: 'POST',\n      url: '/cart/add.js',\n      dataType: 'json',\n      data: this.element.find('form[action^=\"/cart/add\"]').serialize()\n    }).then(function() {\n      $.ajax({\n        method: 'GET',\n        url: '/cart.js',\n        dataType: 'json'\n      }).then(function(cart) {\n        // Last parameter set to true allow to indicate the cart to force open the mini-cart)\n        $(document).trigger('theme:cart:updated', [cart, true, true]);\n        self.addToCartButton.removeAttr('disabled').removeClass('button--loading');\n      });\n    }).catch(function(error) {\n      // If there is an error while adding (usually if all products are added to the cart), we temporarily\n      // display the message from Shopify, and then revert to the original message after 2 seconds\n      var errorMessage = error.responseJSON['description'];\n\n      self.addToCartButton.text(errorMessage)\n        .removeAttr('disabled')\n        .removeClass('button--loading');\n\n      setTimeout(function() {\n        self.addToCartButton.text(window.languages.productFormAddToCart);\n      }, 2500);\n    });\n\n    event.preventDefault();\n  };\n\n  $.fn[pluginName] = function(options) {\n    var method = false,\n      methodArgs = arguments;\n\n    if (typeof options == 'string') {\n      method = options;\n    }\n\n    return this.each(function() {\n      var plugin = $.data(this, namespace);\n\n      if (!plugin && !method) {\n        $.data(this, namespace, new Plugin(this, options));\n      } else if (method) {\n        callMethod(plugin, method, Array.prototype.slice.call(methodArgs, 1));\n      }\n    });\n  };\n}(jQuery));\n/**\n * Plugin to handle tabs\n */\n\n(function ($) {\n\n  'use strict';\n\n  var pluginName = 'trademarkTabs',\n    namespace = 'plugin_' + pluginName;\n\n  /**\n   * The Plugin constructor\n   */\n  function Plugin(element, options) {\n    this.element = $(element);\n    this.navItems = this.element.find('.tabs__nav-item');\n    this.content = this.element.find('.tabs__content');\n    this.contentItems = this.content.find('.tabs__content-item');\n\n    this.navItems.on('click', $.proxy(this._changeTab, this));\n\n    var tabsNav = this.element.find('.tabs__nav-inner'),\n      tabsNavElem = tabsNav.get(0);\n\n    if(tabsNavElem){\n      tabsNavElem.classList[tabsNavElem.scrollWidth - tabsNavElem.clientWidth - tabsNavElem.scrollLeft > 20 ? 'add' : 'remove']('tabs__nav-inner--shadowed-right');\n    }\n\n    tabsNav.on('scroll', function() {\n      this.classList[this.scrollLeft > 20 ? 'add' : 'remove']('tabs__nav-inner--shadowed-left');\n      this.classList[this.scrollWidth - this.clientWidth - this.scrollLeft > 20 ? 'add' : 'remove']('tabs__nav-inner--shadowed-right');\n    });\n  }\n\n  Plugin.prototype.destroy = function() {\n    this.navItems.off('click');\n\n    this.element.removeData('plugin_trademarkTabs');\n  };\n\n  Plugin.prototype._changeTab = function(event) {\n    var target = $(event.target),\n      currentItem = this.contentItems.filter('.tabs__content-item--active'),\n      newItem = this.contentItems.eq(target.index()),\n      self = this;\n\n    // Set the current height to the container, so that animation can be done\n    this.content.css('height', currentItem.height());\n\n    // Change the active nav item\n    target.siblings().removeClass('tabs__nav-item--active').end().addClass('tabs__nav-item--active');\n\n    currentItem.removeClass('tabs__content-item--active');\n    newItem.addClass('tabs__content-item--active');\n\n    // Set the height of the new item for the parent to trigger CSS3 animation\n    this.content.css('height', newItem.height());\n\n    // Then, make sure to remove the hard-coded height to allow change in height inside the container\n    if (Modernizr?.cssanimations) {\n      this.content.one('webkitAnimationEnd animationend', function() {\n        self.content.css('height', '');\n      });\n    } else {\n      this.content.css('height', '');\n    }\n\n    event.preventDefault();\n  };\n\n  $.fn[pluginName] = function(options) {\n    var method = false,\n      methodArgs = arguments;\n\n    if (typeof options == 'string') {\n      method = options;\n    }\n\n    return this.each(function() {\n      var plugin = $.data(this, namespace);\n\n      if (!plugin && !method) {\n        $.data(this, namespace, new Plugin(this, options));\n      } else if (method) {\n        callMethod(plugin, method, Array.prototype.slice.call(methodArgs, 1));\n      }\n    });\n  };\n}(jQuery));\nvar router = new RouterRouter();\n\nrouter.route('*all', function() {\n  var bodyElement = $('body');\n\n  /**\n   * -------------------------\n   * STICKY HEADER POLYFILL AND HEADER SIZE\n   * -------------------------\n   */\n\n  (function() {\n    var headerSection = $('.shopify-section__header');\n\n    Stickyfill.add(headerSection.get(0));\n    $('.anchor').css('top', -headerSection.height());\n\n    $(document).on('shopify:section:unload', '#shopify-section-header', function(event) {\n      Stickyfill.remove(event.target);\n    });\n\n    $(document).on('shopify:section:load', '#shopify-section-header', function(event) {\n      Stickyfill.add(event.target);\n    });\n  }());\n\n  /**\n   * -------------------------\n   * MOBILE/TABLET NAVIGATION\n   * -------------------------\n   */\n\n  (function() {\n    $('.sidebar-nav').trademarkMobileSidebar();\n\n    $(document).on('shopify:section:unload', '#shopify-section-header', function(event) {\n      $(event.target).find('.sidebar-nav').data('plugin_trademarkMobileSidebar').destroy();\n    });\n\n    $(document).on('shopify:section:load', '#shopify-section-header', function(event) {\n      $(event.target).find('.sidebar-nav').trademarkMobileSidebar();\n    });\n  }());\n\n  /**\n   * -------------------------\n   * MAIN NAVIGATION (ACCESSIBILITY)\n   * -------------------------\n   */\n\n  (function() {\n    $('.header__main-nav').trademarkMainNav();\n\n    $(document).on('shopify:section:unload', '#shopify-section-header', function(event) {\n      $(event.target).find('.header__main-nav').data('plugin_trademarkMainNav').destroy();\n    });\n\n    $(document).on('shopify:section:load', '#shopify-section-header', function(event) {\n      $(event.target).find('.header__main-nav').trademarkMainNav();\n    });\n  }());\n\n  /**\n   * -------------------------\n   * MINI-CART\n   * -------------------------\n   */\n\n  (function() {\n    \n  }());\n\n  /**\n   * -------------------------\n   * SEARCH\n   * Note that search initialization must happen after mini-cart and sidebar, as it relies on the existence of those two\n   * -------------------------\n   */\n\n  (function() {\n    $('.header-search').trademarkHeaderSearch();\n\n    $(document).on('shopify:section:unload', '#shopify-section-header', function(event) {\n      $(event.target).find('.header-search').data('plugin_trademarkHeaderSearch').destroy();\n    });\n\n    $(document).on('shopify:section:load', '#shopify-section-header', function(event) {\n      $(event.target).find('.header-search').trademarkHeaderSearch();\n    });\n  }());\n\n  /**\n   * -------------------------\n   * RTE (FOR PAGE THAT CONTAINED USER DEFINED TEXT, WE DO SOME POST-PROCESSING\n   * -------------------------\n   */\n\n  (function() {\n    // 1st: wrap tables\n    $('.rte table').addClass('table').wrap('<div class=\"table-wrapper\"></div>');\n\n    // 2nd: wrap videos\n    var iframeVideo = $('.rte iframe[src*=\"youtube.com/embed\"], .rte iframe[src*=\"player.vimeo\"]');\n    var iframeReset = iframeVideo.add('.rte iframe#admin_bar_iframe');\n\n    iframeVideo.each(function() {\n      // Add wrapper to make video responsive\n      $(this).wrap('<div class=\"video-wrapper\"></div>');\n    });\n\n    iframeReset.each(function() {\n      // Re-set the src attribute on each iframe after page load\n      // for Chrome's \"incorrect iFrame content on 'back'\" bug.\n      // https://code.google.com/p/chromium/issues/detail?id=395791\n      // Need to specifically target video and admin bar\n      this.src = this.src;\n    });\n  }());\n\n  /**\n   * -------------------------\n   * FEATURED COLLECTIONS\n   * -------------------------\n   */\n\n  (function() {\n    if (!Modernizr?.touchevents || Modernizr?.mq('(min-width: 1024px)')) {\n      bodyElement.on('mouseenter mouseleave', '.collection-item', function() {\n        $(this).toggleClass('collection-item--hovered').find('.collection-item__bottom').slideToggle({duration: 250});\n      });\n    }\n  }());\n\n  /**\n   * ----------------------------\n   * FEATURED MAP\n   * ----------------------------\n   */\n\n  (function() {\n    $('.featured-map').trademarkMap();\n\n    $(document).on('shopify:section:load', '.shopify-section__featured-map', function(event) {\n      $(event.target).find('.featured-map').trademarkMap();\n    });\n\n    $(document).on('shopify:section:unload', '.shopify-section__featured-map', function(event) {\n      $(event.target).find('.featured-map').data('plugin_trademarkMap').destroy();\n    });\n  }());\n\n  /**\n   * -------------------------\n   * TWITTER\n   * -------------------------\n   */\n\n  (function() {\n    var initTwitter = function(domElement) {\n      if (domElement.length === 0) {\n        return;\n      }\n\n      window.twttr = (function(d, s, id) {var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s);\n        js.id = id; js.src = \"https://platform.twitter.com/widgets.js\"; fjs.parentNode.insertBefore(js, fjs); t._e = []; t.ready = function(f) {t._e.push(f);};\n        return t;\n      }(document, \"script\", \"twitter-wjs\"));\n\n      var twitterHandle = domElement.attr('data-twitter-handle');\n\n      twttr.ready(function () {\n        twttr.widgets.createTimeline(\n          {\n            sourceType: 'profile',\n            screenName: twitterHandle\n          },\n          document.getElementById('twitter-timeline'),\n          {\n            tweetLimit: 1,\n            lang: window.theme.locale || 'en',\n            chrome: 'noheader nofooter noborders transparent noscrollbar'\n          }\n        ).then(function (result) {\n          // Twitter return the results in an iframe, so we need to parse the code to extract what we want\n\n          var content = $(result).contents(),\n            twitterModule = $('.tweet');\n\n          twitterModule.find('.tweet__content').html(content.find('.timeline-Tweet-text'));\n          twitterModule.find('.tweet__date').text(content.find('.timeline-Tweet-timestamp .dt-updated').attr('aria-label'));\n        });\n      });\n    };\n\n    initTwitter($('.footer [data-twitter-handle]'));\n\n    $(document).on('shopify:section:load', '#shopify-section-footer', function(event) {\n      initTwitter($(event.target).find('[data-twitter-handle]'));\n    });\n  }());\n\n  /**\n   * -------------------------\n   * MARKETING POPUP\n   * -------------------------\n   */\n\n  (function() {\n    var popupModalInstance = null;\n\n    var initPopup = function(element) {\n      if (element.length === 0 || Modernizr?.mq('(max-width: 559px)')) {\n        return;\n      }\n\n      popupModalInstance = element.remodal({\n        hashTracking: (window.theme.template !== null),\n        appendTo: '#shopify-section-popup'\n      });\n\n      setTimeout(function() {\n        // We save into the cookie in order to avoid annoying the user\n        if (popupModalInstance.getState() === 'closed' && !$.cookie('theme_popup_seen') && element.attr('data-visible') === 'true') {\n          popupModalInstance.open();\n        }\n\n        $.cookie('theme_popup_seen', true, {expires: parseInt(element.attr('data-remember-me')) });\n      }, parseInt(element.attr('data-delay')));\n    };\n\n    initPopup($('.promotion-popup'), false);\n\n    $(document).on('shopify:section:select', '#shopify-section-popup', function() {\n      if (popupModalInstance && popupModalInstance.getState() !== 'opened') {\n        popupModalInstance.open();\n      }\n    });\n\n    $(document).on('shopify:section:deselect', '#shopify-section-popup', function() {\n      if (popupModalInstance) {\n        popupModalInstance.close();\n      }\n    });\n\n    $(document).on('shopify:section:load', '#shopify-section-popup', function(event) {\n      initPopup($(event.target).find('.promotion-popup'));\n    });\n  })();\n\n  /**\n   * -------------------------\n   * AUTOMATIC CURRENCY CONVERSION\n   * -------------------------\n   */\n\n  (function() {\n    \n  })();\n\n  /**\n   * -------------------------\n   * FAQ PAGE (we can't know in advance the exact URLs, so those are handled here as well)\n   * -------------------------\n   */\n\n  (function() {\n    bodyElement.on('click', '.faq__question', function() {\n      $(this).next('.faq__answer').slideToggle(150);\n    });\n\n    $(document).on('shopify:block:select', '#shopify-section-page-faq-template', function(event) {\n      $(event.target).find('.faq__answer').slideDown(150);\n    });\n\n    $(document).on('shopify:block:deselect', '#shopify-section-page-faq-template', function(event) {\n      $(event.target).find('.faq__answer').slideUp(150);\n    });\n  }());\n});\nrouter.route('blogs/*blog/*article', function() {\n  /**\n   * -------------------------\n   * STICKY SHARE BUTTONS\n   * -------------------------\n   */\n\n  (function() {\n    var header = $('#shopify-section-header'),\n     announcement = $('.header-announcement-bar'),\n      shareButtons = $('.article__body .share-buttons');\n\n    shareButtons.css('top', header.height() + announcement.height() + 100);\n    shareButtons.Stickyfill();\n  }());\n});\nrouter.route('blogs/*blog', function() {\n});\nrouter.route('cart', function() {\n  /**\n   * -------------------------\n   * CART NOTE\n   * -------------------------\n   */\n\n  $('.cart__note').on('change', function() {\n    $.ajax({\n      method: 'POST',\n      url: '/cart/update.js',\n      data: {\n        note: $(this).val()\n      },\n      dataType: 'json'\n    });\n  });\n\n  /**\n   * -------------------------\n   * SHIPPING ESTIMATOR\n   * -------------------------\n   */\n\n  (function() {\n    var initShippingEstimator = function() {\n      var shippingEstimator = $('.shipping-estimator');\n\n      // If the estimator has been disabled, we do not need to attach all the other listeners\n      if (shippingEstimator.length === 0) {\n        return;\n      }\n\n      var shippingEstimatorForm = shippingEstimator.find('.shipping-estimator__form'),\n        shippingEstimatorSubmit = shippingEstimator.find('.shipping-estimator__submit'),\n        shippingEstimatorResults = shippingEstimator.find('.shipping-estimator__results'),\n        shippingEstimatorList = shippingEstimatorResults.find('.shipping-estimator__list'),\n        cartEstimatedShipping = $('.cart__shipping');\n\n      $('.shipping-estimator--mobile .shipping-estimator__title').on('click', function() {\n        $(this).next('.shipping-estimator__inner').slideToggle();\n        $(this).closest('.shipping-estimator').toggleClass('shipping-estimator--active');\n      });\n\n      var submitShippingEstimatorForm = function(event) {\n        shippingEstimatorSubmit.text(window.languages.shippingEstimatorSubmitting);\n\n        $.ajax({\n          method: 'GET',\n          url: '/cart/shipping_rates.json',\n          data: $(event.currentTarget).closest('.shipping-estimator__form').find('input, select').serialize(),\n          success: function(results) {\n            shippingEstimatorList.empty();\n\n            results['shipping_rates'].forEach(function(item) {\n              var amount = Shopify.formatMoney(item['price'] * 100, window.theme.moneyFormat);\n              shippingEstimatorList.append('<li class=\"shipping-estimator__item\">' + item['name'] + ': <span data-money-convertible>' + amount + '</span></li>');\n            });\n\n            if (results['shipping_rates'].length > 0) {\n              var firstPrice = Shopify.formatMoney(results['shipping_rates'][0]['price'] * 100, window.theme.moneyFormat);\n              cartEstimatedShipping.html(window.languages.cartEstimatedShipping + ' ' + firstPrice);\n            }\n          },\n          error: function(results) {\n            shippingEstimatorList.empty();\n\n            var response = results.responseJSON,\n              errors = [];\n\n            for (var key in response) {\n              if (response.hasOwnProperty(key)) {\n                errors.push({key: key, value: response[key][0]});\n              }\n            }\n\n            errors.forEach(function(item) {\n              shippingEstimatorList.append('<li class=\"shipping-estimator__item\">' + item['key'] + ': ' + item['value'] + '</li>');\n            });\n          },\n          complete: function(results) {\n            shippingEstimatorSubmit.html(window.languages.shippingEstimatorSubmit);\n            shippingEstimatorResults.show();\n          }\n        });\n\n        event.preventDefault();\n      };\n\n      shippingEstimatorForm.on('keypress', function(event) {\n        // If Enter is press, we submit the form\n        if (event.keyCode == 13) {\n          submitShippingEstimatorForm(event);\n        }\n      });\n\n      $('.shipping-estimator__submit').on('click', function(event) {\n        submitShippingEstimatorForm(event);\n      });\n\n      new Shopify.CountryProvinceSelector('address_country', 'address_province', {hideElement: 'address_province_container'});\n      new Shopify.CountryProvinceSelector('address_country_mobile', 'address_province_mobile', {hideElement: 'address_province_container_mobile'});\n    };\n\n    initShippingEstimator();\n\n    $(document).on('shopify:section:load', '#shopify-section-cart-template', function() {\n      initShippingEstimator();\n    });\n  }());\n\n  /**\n   * -------------------------\n   * RECOMMENDED PRODUCTS\n   * -------------------------\n   */\n\n  (function() {\n    var initProducts = function(domElement) {\n      if (domElement.length === 0) {\n        return;\n      }\n\n      domElement.slick({\n        accessibility: false,\n        dots: true,\n        dotsClass: 'slider-dots',\n        arrows: false,\n        adaptiveHeight: true,\n        mobileFirst: true,\n        infinite: false,\n        centerMode: true,\n        centerPadding: '32px',\n        slidesToShow: 1,\n        initialSlide: Math.ceil(domElement.attr('data-slides-count') / 2) - 1,\n        responsive: [\n          {\n            breakpoint: 560,\n            settings: 'unslick'\n          }\n        ]\n      })\n    };\n\n    initProducts($('.list-products1'));\n\n    $(document).on('shopify:section:unload', '.shopify-section__cart-related-products', function(event) {\n      $(event.target).find('.list-products1').slick('unslick');\n    });\n\n    $(document).on('shopify:section:load', '.shopify-section__cart-related-products', function(event) {\n      initProducts($(event.target).find('.list-products1'));\n    });\n\n    $(window).on('resize orientationChange', function() {\n      if (window.innerWidth < 560) {\n        // If not created yet, we create it\n        var slick = $('.list-products1');\n\n        if (slick.slick('getSlick').unslicked) {\n          initProducts(slick);\n        }\n      }\n    });\n  }());\n});\nrouter.route('collections/*type', function() {\n  /**\n   * -------------------------\n   * SORT BY AND SEARCH\n   * -------------------------\n   */\n\n  (function() {\n    Shopify.queryParams = {};\n\n    var bindFilters = function() {\n      $('#collection-sort-by').on('change', function () {\n        Shopify.queryParams.sort_by = $(this).val();\n        location.search = $.param(Shopify.queryParams);\n      });\n\n      if (location.search.length) {\n        for (var aKeyValue, i = 0, aCouples = location.search.substr(1).split('&'); i < aCouples.length; i++) {\n          aKeyValue = aCouples[i].split('=');\n\n          if (aKeyValue.length > 1) {\n            Shopify.queryParams[decodeURIComponent(aKeyValue[0])] = decodeURIComponent(aKeyValue[1]);\n          }\n        }\n      }\n\n      $('#collection-tag-filter, #collection-type-filter').on('change', function (event) {\n        window.location.href = $(event.currentTarget).find(':selected').val();\n      });\n    };\n\n    bindFilters();\n\n    $(document).on('shopify:section:load', function(event) {\n      bindFilters();\n    });\n  }());\n\n  /**\n   * -------------------------\n   * INSTAGRAM\n   * -------------------------\n   */\n\n  (function() {\n    $('#instafeed').trademarkInstagram();\n\n    $(document).on('shopify:section:unload', '#shopify-section-collection-template', function(event) {\n      $(event.target).find('#instafeed').data('plugin_trademarkInstagram').destroy();\n    });\n\n    $(document).on('shopify:section:load', '#shopify-section-collection-template', function(event) {\n      $(event.target).find('#instafeed').trademarkInstagram();\n    });\n  }());\n});\n/**\n * ----------------------------------------------------------------------------------------------------\n * GIFT CARDS\n * ----------------------------------------------------------------------------------------------------\n */\n\nrouter.route('gift_cards/*id', function() {\n  (function() {\n    var config = {\n      qrCode: '#QrCode',\n      printButton: '#PrintGiftCard',\n      giftCardCode: '#GiftCardDigits'\n    };\n\n    var $qrCode = $(config.qrCode);\n\n    new QRCode($qrCode[0], {\n      text: $qrCode.attr('data-identifier'),\n      width: 175,\n      height: 175\n    });\n\n    $(config.printButton).on('click', function() {\n      window.print();\n    });\n\n    // Auto-select gift card code on click, based on ID passed to the function\n    $(config.giftCardCode).on('click', {element: 'GiftCardDigits'}, selectText);\n\n    function selectText(evt) {\n      var text = document.getElementById(evt.data.element);\n      var range = '';\n\n      if (document.body.createTextRange) {\n        range = document.body.createTextRange();\n        range.moveToElementText(text);\n        range.select();\n      } else if (window.getSelection) {\n        var selection = window.getSelection();\n        range = document.createRange();\n        range.selectNodeContents(text);\n        selection.removeAllRanges();\n        selection.addRange(range);\n      }\n    }\n  }());\n});\nrouter.route('', function() {\n  /**\n   * -------------------------\n   * SLIDESHOW\n   * -------------------------\n   */\n\n  (function() {\n    var initFullScreenSlideshow = function(slideshow) {\n      var slidesCount = slideshow.next('.fs-slideshow__slide-count'),\n        slideshowProgressBarAdvancement = slideshow.nextAll('.fs-slideshow__progress-bar').find('.fs-slideshow__progress-bar-advancement');\n\n      slideshow.slick({\n        dots: false,\n        arrow: true,\n        pauseOnHover: false,\n        accessibility: false,\n        adaptiveHeight: true,\n        useTransform: true,\n        useCSS: true,\n        autoplay: (slideshow.attr('data-autoplay') === 'true'),\n        autoplaySpeed: parseInt(slideshow.attr('data-cycle-speed')),\n        prevArrow: '<button class=\"fs-slideshow__nav-button fs-slideshow__nav-prev slick-prev\"><svg class=\"icon icon-arrow-left\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-arrow-left\"></use></svg></button>',\n        nextArrow: '<button class=\"fs-slideshow__nav-button fs-slideshow__nav-next slick-next\"><svg class=\"icon icon-arrow-right\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-arrow-right\"></use></svg></button>'\n      });\n\n      // Setup video, if any\n\n      var players = plyr.setup(slideshow.find('.plyr-video[data-type]'), {\n          controls: ['play-large'],\n          iconPrefix: 'icon-video'\n        }) || [];\n\n      players.forEach(function(player) {\n        player.on('play', function() {\n          slideshow.closest('.fs-slideshow').addClass('fs-slideshow--video-playing');\n          slideshow.slick('pause');\n        });\n\n        player.on('pause ended', function() {\n          slideshow.closest('.fs-slideshow').removeClass('fs-slideshow--video-playing');\n          slideshow.slick('play');\n        });\n      });\n\n      slideshow.on('beforeChange', function(event, slick, currentSlide, nextSlide) {\n        // We need to pause any video if any is playing\n        players.forEach(function(player) {\n          player.pause();\n        });\n      });\n\n      slideshow.on('afterChange', function(event, slick, currentSlide) {\n        if (slidesCount.length > 0) {\n          slidesCount.find('.fs-slideshow__current-slide').text(currentSlide + 1); // Slick is 0-indexed\n        }\n\n        if (slideshowProgressBarAdvancement.length > 0) {\n          slideshowProgressBarAdvancement.css('width', ((currentSlide + 1) / slick.slideCount * 100) + '%');\n        }\n      });\n    };\n\n    // Trademark has two different slideshows: a \"dual\" one that is quite complex and a full-screen that is simpler to implement. When this change,\n    // we either init one or the other\n    $('.slideshow-section').each(function(index, item) {\n      var slideshowSection = $(item),\n        slideshowType = slideshowSection.attr('data-slideshow-type');\n\n      if (slideshowType === 'dual') {\n        slideshowSection.find('.dual-slideshow').trademarkHomeSlideshow();\n      } else {\n        initFullScreenSlideshow(slideshowSection.find('.fs-slideshow__slides'));\n      }\n    });\n\n    $(document).on('shopify:section:unload', '.shopify-section__slideshow', function(event) {\n      var slideshowSection = $(event.target).find('.slideshow-section');\n\n      // If previous slideshow was dual, we have to delete the plugin completely (which will free the memory)\n      if (slideshowSection.attr('data-slideshow-type') === 'dual') {\n        slideshowSection.find('.dual-slideshow').data('plugin_trademarkHomeSlideshow').destroy();\n      } else {\n        // Otherwise, logic is a bit simpler and we just call slick to delete\n        slideshowSection.find('.fs-slideshow__slides').slick('unslick');\n      }\n    });\n\n    $(document).on('shopify:section:load', '.shopify-section__slideshow', function(event) {\n      var slideshowSection = $(event.target).find('.slideshow-section');\n\n      // If slideshow is dual we need to instantiate the whole plugin, otherwise setup is simpler\n      if (slideshowSection.attr('data-slideshow-type') === 'dual') {\n        slideshowSection.find('.dual-slideshow').trademarkHomeSlideshow();\n      } else {\n        var slideshow = slideshowSection.find('.fs-slideshow__slides');\n\n        initFullScreenSlideshow(slideshow);\n      }\n    });\n\n    $(document).on('shopify:block:select', '.shopify-section__slideshow', function(event) {\n      var slideshowSection = $(event.target).closest('.slideshow-section');\n\n      if (slideshowSection.attr('data-slideshow-type') === 'dual') {\n        var slideshow = slideshowSection.find('.dual-slideshow').data('plugin_trademarkHomeSlideshow');\n\n        slideshow.pause();\n        slideshow.goToSlide($(event.target).attr('data-slide-index'));\n      } else {\n        var slideshow = slideshowSection.find('.fs-slideshow__slides');\n\n        slideshow.slick('goTo', $(event.target).attr('data-slide-index'));\n\n        if (slideshow.attr('data-autoplay') === 'true') {\n          slideshow.slick('pause');\n        }\n      }\n    });\n\n    $(document).on('shopify:block:deselect', '.shopify-section__slideshow', function(event) {\n      var slideshowSection = $(event.target).closest('.slideshow-section');\n\n      if (slideshowSection.attr('data-slideshow-type') === 'dual') {\n        slideshowSection.find('.dual-slideshow').data('plugin_trademarkHomeSlideshow').play();\n      } else {\n        var slideshow = slideshowSection.find('.fs-slideshow__slides');\n\n        if (slideshow.attr('data-autoplay') === 'true') {\n          slideshow.slick('play');\n        }\n      }\n    });\n  }());\n\n  /**\n   * -------------------------\n   * FEATURED COLLECTIONS\n   * -------------------------\n   */\n\n  (function() {\n    var initCollections = function(domElement) {\n      if (domElement.length === 0) {\n        return;\n      }\n\n      domElement.slick({\n        accessibility: false,\n        dots: true,\n        dotsClass: 'slider-dots',\n        arrows: false,\n        mobileFirst: true,\n        infinite: false,\n        centerMode: true,\n        centerPadding: '32px',\n        initialSlide: Math.ceil(domElement.attr('data-slides-count') / 2) - 1,\n        slidesToShow: 1,\n        responsive: [\n          {\n            breakpoint: 560,\n            settings: 'unslick'\n          }\n        ]\n      })\n    };\n\n    initCollections($('.list-collections'));\n\n    $(document).on('shopify:section:unload', '.shopify-section__collection-list', function(event) {\n      $(event.target).find('.list-collections').slick('unslick');\n    });\n\n    $(document).on('shopify:section:load', '.shopify-section__collection-list', function(event) {\n      initCollections($(event.target).find('.list-collections'));\n    });\n\n    $(document).on('shopify:block:select', '.shopify-section__collection-list', function(event) {\n      $(event.target).closest('.list-collections').slick('slickGoTo', $(event.target).attr('data-slide-index'));\n    });\n\n    $(window).on('resize orientationChange', function() {\n      if (window.innerWidth < 560) {\n        // If not created yet, we create it\n        var slick = $('.list-collections');\n\n        if (slick.slick('getSlick').unslicked) {\n          initCollections(slick);\n        }\n      }\n    });\n  }());\n\n  /**\n   * -------------------------\n   * FEATURED PRODUCTS\n   * -------------------------\n   */\n\n  (function() {\n    var initProducts = function(domElement) {\n      if (domElement.length === 0) {\n        return;\n      }\n\n      domElement.slick({\n        accessibility: false,\n        dots: true,\n        dotsClass: 'slider-dots',\n        arrows: false,\n        adaptiveHeight: true,\n        mobileFirst: true,\n        infinite: false,\n        centerMode: true,\n        centerPadding: '32px',\n        slidesToShow: 1,\n        initialSlide: Math.ceil(domElement.attr('data-slides-count') / 2) - 1,\n        responsive: [\n          {\n            breakpoint: 560,\n            settings: 'unslick'\n          }\n        ]\n      })\n    };\n\n    initProducts($('.list-products1'));\n\n    $(document).on('shopify:section:unload', '.shopify-section__featured-collection', function(event) {\n      $(event.target).find('.list-products1').slick('unslick');\n    });\n\n    $(document).on('shopify:section:load', '.shopify-section__featured-collection', function(event) {\n      initProducts($(event.target).find('.list-products1'));\n    });\n\n    $(window).on('resize orientationChange', function() {\n      if (window.innerWidth < 560) {\n        // If not created yet, we create it\n        var slick = $('.list-products1');\n\n        if (slick.slick('getSlick').unslicked) {\n          initProducts(slick);\n        }\n      }\n    });\n  }());\n\n  /**\n   * -------------------------\n   * INSTAGRAM\n   * -------------------------\n   */\n\n  (function() {\n    $('#instafeed').trademarkInstagram();\n\n    $(document).on('shopify:section:unload', '.shopify-section__instagram', function(event) {\n      $(event.target).find('#instafeed').data('plugin_trademarkInstagram').destroy();\n    });\n\n    $(document).on('shopify:section:load', '.shopify-section__instagram', function(event) {\n      $(event.target).find('#instafeed').trademarkInstagram();\n    });\n  }());\n});\n/**\n * ----------------------------------------------------------------------------------------------------\n * LOGIN\n * ----------------------------------------------------------------------------------------------------\n */\n\nrouter.route('account/login', function() {\n  /**\n   * -------------------------\n   * SWITCH TO RECOVER FORM\n   * -------------------------\n   */\n\n  (function() {\n    var switchToRecoverForm = function() {\n      $('#login-section, #recover-password-section').toggle();\n      $('.page__title').text(window.languages.recoverPasswordTitle);\n    };\n\n    $('[data-action=\"display-recover-form\"]').on('click', function() {\n      switchToRecoverForm();\n      return false;\n    });\n\n    // We also switch if we directly have the hash \"recover\"\n    if (window.location.hash === '#recover' || window.recoverPassword === true) {\n      switchToRecoverForm();\n    }\n  }());\n});\nrouter.route('password', function() {\n  (function() {\n    var passwordModal = $('.password-popup');\n\n    $('[data-action=\"toggle-storefront-password\"]').on('click', function() {\n      passwordModal.remodal({hashTracking: false}).open();\n    });\n  })();\n});\n/**\n * ----------------------------------------------------------------------------------------------------\n * PRODUCT ROUTE\n * ----------------------------------------------------------------------------------------------------\n */\n\nvar productRoute = function() {\n  /**\n   * -------------------------\n   * PRODUCT SLIDESHOW DEL PIERO HERO\n   * -------------------------\n   */\n\n  (function() {\n    var initProductSlideshow = function(domElement) {\n      if (domElement.length === 0) {\n        return;\n      }\n      \n      var productSlideshow = domElement,\n        productSlides = productSlideshow.find('.product__slides'),\n        productThumbnails = domElement.find('.product__thumbnails');\n\n      productSlides.slick({\n        adaptiveHeight: true,\n        slidesToShow: 1,\n        slidesToScroll: 1,\n        initialSlide: parseInt(productSlides.attr('data-initial-slide')),\n        arrows: true,\n        dots: false,\n        fade: true,\n        prevArrow: '<button class=\"fs-slideshow__nav-button fs-slideshow__nav-prev slick-prev product-prev\"><svg class=\"icon icon-arrow-left\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-arrow-left\"></use></svg></button>',\n        nextArrow: '<button class=\"fs-slideshow__nav-button fs-slideshow__nav-next slick-next product-next\"><svg class=\"icon icon-arrow-right\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-arrow-right\"></use></svg></button>'\n      });\n\n      productSlides.on('beforeChange', function(event, slick, currentPosition, nextPosition) {\n        productThumbnails.find('.product__thumbnail').removeClass('product__thumbnail--active')\n          .eq(nextPosition).addClass('product__thumbnail--active');\n      });\n\n      productThumbnails.find('.product__thumbnail').on('click', function(event) {\n        var thumbnail = $(this);\n\n        thumbnail.addClass('product__thumbnail--active');\n        thumbnail.siblings().removeClass('product__thumbnail--active');\n\n        productSlides.slick('slickGoTo', $(this).attr('data-slide-index'));\n        event.preventDefault();\n      });\n\n      // If image zoom is enabled we also allow to open the images in a lightbox\n      if (productSlideshow.attr('data-enable-image-zoom') === 'true' && Modernizr?.mq('(min-width: 801px)')) {\n        productSlides.magnificPopup({\n          delegate: '.product__slide:not(.product__slide--video)',\n          type: 'image',\n          gallery: {\n            enabled: true,\n            arrowMarkup: '<button title=\"%title%\" type=\"button\" class=\"mfp-arrow mfp-arrow-%dir%\"><svg class=\"icon icon-arrow-%dir% mfp-prevent-close\"><use xmlns:xlink=\"http://www.w3.org/1999/xlink\" xlink:href=\"#icon-arrow-%dir%\"></use></svg></button>'\n          }\n        });\n      }\n    };\n\n    initProductSlideshow($('.product__slideshow'));\n\n    $(document).on('shopify:section:unload', '#shopify-section-product-template', function(event) {\n      $(event.target).find('.product__slides').slick('unslick');\n      $(event.target).find('.product__thumbnail').off('click');\n    });\n\n    $(document).on('shopify:section:load', '#shopify-section-product-template', function(event) {\n      initProductSlideshow($(event.target).find('.product__slideshow'));\n    });\n  }());\n\n  /**\n   * -------------------------\n   * PRODUCT TABS\n   * -------------------------\n   */\n\n  (function() {\n    var initProductTabs = function(domElement) {\n      if (domElement.length === 0) {\n        return;\n      }\n\n      domElement.trademarkTabs();\n    };\n\n    initProductTabs($('.product__tabs'));\n\n    $(document).on('shopify:section:unload', '#shopify-section-product-template', function(event) {\n      $(event.target).find('.product__tabs').data('plugin_trademarkTabs').destroy();\n    });\n\n    $(document).on('shopify:section:load', '#shopify-section-product-template', function(event) {\n      initProductTabs($(event.target).find('.product__tabs'));\n    });\n  }());\n\n  /**\n   * -------------------------\n   * PRODUCT RECOMMENDATIONS\n   * -------------------------\n   */\n\n  (function() {\n    var createCarousel = function(domElement) {\n      domElement.slick({\n        accessibility: false,\n        dots: true,\n        dotsClass: 'slider-dots',\n        arrows: false,\n        adaptiveHeight: true,\n        mobileFirst: true,\n        infinite: false,\n        centerMode: true,\n        centerPadding: '32px',\n        slidesToShow: 1,\n        initialSlide: (domElement.children().length / 2) - 1,\n        responsive: [\n          {\n            breakpoint: 560,\n            settings: 'unslick'\n          }\n        ]\n      })\n    };\n\n    var initProducts = function(domElement) {\n      if (domElement.length === 0) {\n        return;\n      }\n\n      if (domElement.attr('data-use-recommendations') === 'true') {\n        var url = '/recommendations/products?section_id=product-recommendations&limit=4&product_id=' + domElement.attr('data-product-id');\n        $.ajax(url).then(function(content) {\n          domElement.find('.list-products').html($(content).find('.list-products').contents());\n          // createCarousel(domElement.find('.list-products'));\n        });\n      } else {\n        createCarousel(domElement.find('.list-products'));\n      }\n    };\n\n    initProducts($('.product-recommendations'));\n\n    $(document).on('shopify:section:unload', function(event) {\n      $(event.target).find('.product-recommendations .list-products').slick('unslick');\n    });\n\n    $(document).on('shopify:section:load', function(event) {\n      initProducts($(event.target).find('.product-recommendations'));\n    });\n\n    $(window).on('resize orientationChange', function() {\n      if (window.innerWidth < 560) {\n        // If not created yet, we create it\n        var slick = $('.product-recommendations .list-products');\n\n        if (slick.slick('getSlick').unslicked) {\n          createCarousel(slick);\n        }\n      }\n    });\n  }());\n};\n\n  \nrouter.route('products/*type', productRoute);\nrouter.route('collections/*collection/products/*type', productRoute);\nrouter.route('products_preview', productRoute);\n\nwindow.addEventListener('DOMContentLoaded', () => {\n  document.querySelectorAll('a[href^=\"mailto:\"],a[href^=\"tel:\"]')?.forEach(item => {\n    item.setAttribute('target', '_blank');\n  });\n\n  const showHidePassBtn = document.getElementById('show_hide_pass');\n  showHidePassBtn?.addEventListener('click', e => {\n    e.preventDefault();\n\n    let showPass = false;\n\n    document.querySelectorAll('input[name=\"customer[password]\"], input[name=\"customer[password_confirmation]\"]')?.forEach(item => {\n      if(item.type == 'password'){\n        item.setAttribute('type', 'text');\n        showPass = true;\n      }else{\n        item.setAttribute('type', 'password');\n      }\n    });\n\n    if(showPass){\n      showHidePassBtn.innerHTML = 'Hide password';\n    }else{\n      showHidePassBtn.innerHTML = 'Show password';\n    }\n  });\n});"],
  "mappings": "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",
  "names": ["$", "item"]
}
