US ORDERS NOW SHIP WITH DUTIES AND TAXES INCLUDED. Learn more.

Lost password

Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.

$( ".elementor-search-form__toggle" ).click(function(){ $('.wrap').addClass('hovering'); $('.wrap').removeClass('not-hovering'); $('main').addClass('wrap hovering'); }); $( ".dialog-close-button" ).click(function(){ $('.wrap').addClass('not-hovering'); $('.wrap').removeClass('hovering'); }); $( ".wrap" ).click(function(){ $('.wrap').addClass('not-hovering'); $('.wrap').removeClass('hovering'); }); $('.dialog-close-button').after('
New In
'); $('.dialog-close-button').after('
In stock
'); $('.dialog-close-button').after('
Coming soon
'); $('#search-filter-stock').click(function(){ var search_string = $('#elementor-search-form-76304f3').val(); window.location.href='/?s=' + search_string + '&filter_stock=1'; }) $('#search-filter-new').click(function(){ var search_string = $('#elementor-search-form-76304f3').val(); window.location.href='/?s=' + search_string + '&filter_new=1'; }) $('#search-filter-coming').click(function(){ var search_string = $('#elementor-search-form-76304f3').val(); window.location.href='/?s=' + search_string + '&filter_coming_soon=1'; }) /* Fixed Footer for certain Pages - Desktop */ if ((screen.width > 1025)  && ( pathname == "/cart/") || (screen.width > 1025)  && ( pathname == "/my-account-2/orders/") || (screen.width > 1025)  && ( pathname == "/my-account-2/") || (screen.width > 1025)  && ( pathname == "/my-account-2/edit-address/") || (screen.width > 1025)  && ( pathname == "/my-account-2/edit-account/") || (screen.width > 1025)  && ( pathname == "/products/dresses/") )   { $("footer").css({position:'fixed', bottom: '0px'}); $('footer').width('100%'); } /* Clear search input after submit */ $( '.elementor-search-form__toggle' ).click(function(){ $('.elementor-search-form__input').val(''); }); /* Check if the Sketch tab is empty and hide tab */ if( !$.trim( $('#tab-justacorpse_sketch_tab').html() ).length ) { $('.justacorpse_sketch_tab').hide(); } /* Limit input field lenght fo Address */ $('#billing_address_1').attr({ maxLength : 45 }); $('#billing_address_2').attr({ maxLength : 45 }); /* limit only latin characters and numbers */ $("#billing_address_1").on("keypress", function(event) { var englishAlphabetAndWhiteSpace = /^[-@./#&+\w\s]*$/; var key = String.fromCharCode(event.which); if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || englishAlphabetAndWhiteSpace.test(key)) { return true; } return false; }); $('#billing_address_1').on("paste", function(e) { e.preventDefault(); }); $("#billing_address_2").on("keypress", function(event) { var englishAlphabetAndWhiteSpace = /^[-@./#&+\w\s]*$/; var key = String.fromCharCode(event.which); if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || englishAlphabetAndWhiteSpace.test(key)) { return true; } return false; }); $('#billing_address_2').on("paste", function(e) { e.preventDefault(); }); }); // Intersection Observer - Mobile animation const myImgs = document.querySelectorAll('.product-bg-effect'); const options = { // Add root here so rootBounds in entry object is not null root: document, // Margin to when element should take action rootMargin: '-50px 0px', // Callback will be fired 30 times during intersection threshold: [...Array(30).keys()].map(x => x / 29) }; observer = new IntersectionObserver(entries => { entries.forEach(entry => { if (entry.intersectionRatio > 0) { console.log('in the view'); entry.target.classList.add('product-bg-effect-mobile'); } else { console.log('out of view'); entry.target.classList.remove('product-bg-effect-mobile'); } }); }, options); myImgs.forEach(image => { observer.observe(image); }); // Intersection Observer - Hide navigation Mobile const myDiv = document.querySelectorAll('.related'); const optionsDiv = { // Add root here so rootBounds in entry object is not null root: document, // Margin to when element should take action rootMargin: '-50px 0px', // Callback will be fired 30 times during intersection threshold: [...Array(30).keys()].map(x => x / 29) }; observerDiv = new IntersectionObserver(entries => { entries.forEach(entry => { if (entry.intersectionRatio > 0) { console.log('related in the view'); const collection = document.getElementsByClassName("swiper-pagination"); for (let i = 0; i < collection.length; i++) { collection[i].style.visibility = "hidden"; } } else { console.log('related out of view'); const collection = document.getElementsByClassName("swiper-pagination"); for (let i = 0; i < collection.length; i++) { collection[i].style.visibility = "visible"; } } }); }, optionsDiv); myDiv.forEach(image => { observerDiv.observe(image); }); // Play Product Videos on hover const videos = document.querySelectorAll('.video-product'); videos.forEach(video => { video.addEventListener('mouseenter', () => { video.play(); }); video.addEventListener('mouseleave', () => { video.pause(); }); }); // Mobile - Play video in viewport if (screen.width < 767) { function playPauseVideo() { let videos = document.querySelectorAll("video"); videos.forEach((video) => { // We can only control playback without insteraction if video is mute video.muted = true; // Play is a promise so we need to check we have it let playPromise = video.play(); if (playPromise !== undefined) { playPromise.then((_) => { const optionsVid = { // Add root here so rootBounds in entry object is not null root: document, // Margin to when element should take action rootMargin: '-50px 0px', // Callback will be fired 30 times during intersection threshold: [...Array(30).keys()].map(x => x / 29) }; let observer = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if ( entry.intersectionRatio !== 1 && !video.paused ) { video.pause(); } else if (video.paused) { video.play(); } }); }, optionsVid ); observer.observe(video); }); } }); } // And you would kick this off where appropriate with: playPauseVideo(); }