{"customer":"69e6ca8babcd4811c0da8e7b","visit":"69e6ca8babcd4811c0da8e7c","nc":true,"hiic":false,"he":false,"ct":0.0,"cs":0,"pv":1,"gl":["US","VA","Ashburn"],"ed":1776732811418,"af":{"top_brands":[],"top_categories":[],"top_product_types":[],"top_skus":{},"discount":0.0},"se":{"active_segments":[]},"recommendations":{"ns-trending-collections":{"div_id":"ns-trending-collections","result_id":"67ee3d6f3d1b7a6892fc8214","html":"<script>\n    _targetWindow.window.nostoTrendingCollections = [\n        {\n            name: \"Pink Hues\",\n            url: \"/collections/pink-hues\"\n        },\n        {\n            name: \"Blue Hues\",\n            url: \"/collections/blue-hues\"\n        },\n        {\n            name: \"Spring Collection\",\n            url: \"/collections/spring-collections\"\n        }\n    ]\n\n    _targetWindow.window.nostoTrendingSearches = [\n        {\n            name: \"Totes Bags\",\n            url: \"/collections/totes-carryalls\"\n        },\n        {\n            name: \"Crossbody Bags\",\n            url: \"/collections/crossbody\"\n        },\n        {\n            name: \"Shoulder Bags\",\n            url: \"/collections/shoulder-bags\"\n        }\n    ]\n</script>\n"},"frontpage-nosto-1":{"div_id":"frontpage-nosto-1","result_id":"frontpage-nosto-1","html":"<style nested>\n\n#frontpage-nosto-1{\n    position: relative;\n  \n    .product-card-name{\n        height: auto !important;\n    }\n    .product-card-description{\n        height: auto !important;\n    }\n    .nav-btn {\n        position: absolute;\n        top: calc((94.3vw - 30px) / 8);\n        transform: translateY(-50%);\n        z-index: 3;\n        width: 2.5rem;\n        height: 2.5rem;\n        display: none;\n        justify-content: center;\n        align-items: center;\n        background: white;\n        border-radius: 9999px;\n        filter: drop-shadow(0 0 4px rgba(0,0,0,0.1));\n        cursor: pointer;\n        border: none;\n        padding: 0;\n    }\n    .nav-btn-prev {\n        left: -21px;\n        rotate: 180deg;\n    }\n    .nav-btn-next {\n        right: -21px;\n    }\n    .nav-btn.is-visible {\n        display: flex;\n    }\n    .nav-btn.swiper-button-disabled {\n        visibility: hidden;\n        pointer-events: none;\n    }\n    .swiper-live {\n        position: absolute;\n        width: 1px;\n        height: 1px;\n        overflow: hidden;\n        clip: rect(0,0,0,0);\n        white-space: nowrap;\n    }\n}\n\n</style>\n\n<div role=\"region\" aria-label=\"Featured Collection Carousel with 5 products\">\n  <p class=\"sr-only\" tabindex=\"0\">This is a product carousel with 5 items. Use the Previous and Next buttons to navigate between slides.</p>\n<div class=\"border-primary py-8 md:px-10 md:pt-10 md:pb-9\">\n   <h2 class=\"subhead-1 text-center mb-3.5 md:mb-4\" tabindex=\"0\">\n      Featured Collection\n   </h2>\n   <div class=\"relative\">\n      <button class=\"nav-btn nav-btn-prev\" data-recommended-prev=\"\" aria-label=\"Previous slide\" aria-controls=\"\">\n         <svg width=\"19\" height=\"14\" viewBox=\"0 0 19 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"w-[18px] h-[18px]\" aria-hidden=\"true\" focusable=\"false\">\n            <path d=\"M12 1L18 7L12 13\" stroke=\"currentColor\"></path>\n            <path d=\"M18 7H0\" stroke=\"currentColor\"></path>\n         </svg>\n      </button>\n      <div data-recommended-slider=\"\" class=\"swiper\">\n         <div class=\"swiper-wrapper\" role=\"list\" id=\"\">\n                        <div class=\"swiper-slide !h-auto\" role=\"listitem\" aria-label=\"Slide 1 of 5\">\n               <dynamic-product-card handle=\"small-denise-olive-bachata-1099268000297\" variant=\"49440739524845\" aria-label=\"Product: Small Denise\">\n               </dynamic-product-card>\n            </div>\n                        <div class=\"swiper-slide !h-auto\" role=\"listitem\" aria-label=\"Slide 2 of 5\">\n               <dynamic-product-card handle=\"adrian-olive-bachata-v18268000297\" variant=\"49440739623149\" aria-label=\"Product: Adrian\">\n               </dynamic-product-card>\n            </div>\n                        <div class=\"swiper-slide !h-auto\" role=\"listitem\" aria-label=\"Slide 3 of 5\">\n               <dynamic-product-card handle=\"hillary-olive-bachata-t39268000297\" variant=\"49440740704493\" aria-label=\"Product: Hillary\">\n               </dynamic-product-card>\n            </div>\n                        <div class=\"swiper-slide !h-auto\" role=\"listitem\" aria-label=\"Slide 4 of 5\">\n               <dynamic-product-card handle=\"mona-turquoise-stone-alba-1103266301366\" variant=\"49440740245741\" aria-label=\"Product: Mona\">\n               </dynamic-product-card>\n            </div>\n                        <div class=\"swiper-slide !h-auto\" role=\"listitem\" aria-label=\"Slide 5 of 5\">\n               <dynamic-product-card handle=\"etta-electric-fuschia-melbourne-110715101454\" variant=\"49440740966637\" aria-label=\"Product: Etta\">\n               </dynamic-product-card>\n            </div>\n                     </div>\n      </div>\n      <button class=\"nav-btn nav-btn-next\" data-recommended-next=\"\" aria-label=\"Next slide\" aria-controls=\"\">\n         <svg width=\"19\" height=\"14\" viewBox=\"0 0 19 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" class=\"w-[18px] h-[18px]\" aria-hidden=\"true\" focusable=\"false\">\n            <path d=\"M12 1L18 7L12 13\" stroke=\"currentColor\"></path>\n            <path d=\"M18 7H0\" stroke=\"currentColor\"></path>\n         </svg>\n      </button>\n   </div>\n   <div class=\"flex flex-wrap gap-x-2 gap-y-2 justify-center mt-8 px-2.5 md:hidden swiper-pagination-clickable swiper-pagination-bullets swiper-pagination-horizontal swiper-pagination\" data-recommended-pagination=\"\" \n   aria-label=\"Carousel Pagination\">\n   </div>\n   <span class=\"swiper-live\" aria-live=\"assertive\" aria-atomic=\"true\"></span>\n</div>\n</div>\n\n<script>\n(function () {\n    if (!_targetWindow.document.querySelectorAll('script[nosto-swiper-script]').length) {\n        var script = _targetWindow.document.createElement('script');\n        script.setAttribute('nosto-swiper-script', true);\n        script.src = \"https://unpkg.com/swiper/swiper-bundle.min.js\";\n        _targetWindow.document.getElementsByTagName('head')[0].appendChild(script);\n\n        var css = _targetWindow.document.createElement('link');\n        css.setAttribute('rel', 'stylesheet');\n        css.setAttribute('href', 'https://unpkg.com/swiper/swiper-bundle.min.css');\n        _targetWindow.document.getElementsByTagName('head')[0].appendChild(css);\n    }\n\n    function nostoCheckSwiper() {\n        if (_targetWindow.Swiper) {\n\n            var swiper = new _targetWindow.Swiper(\"#frontpage-nosto-1 .swiper\", {\n                slidesPerView: 4,\n                slidesPerGroup: 1,\n                spaceBetween: 10,\n                watchSlidesProgress: true,\n                navigation: {\n                    nextEl: '#frontpage-nosto-1 [data-recommended-next]',\n                    prevEl: '#frontpage-nosto-1 [data-recommended-prev]',\n                },\n                pagination: {\n                    el: \"#frontpage-nosto-1 .swiper-pagination\",\n                    clickable: true,\n                },\n                loop: false,\n                autoplay: false,\n                breakpoints: {\n                    0: { slidesPerView: 2, slidesPerGroup: 2, spaceBetween: 10 },\n                    1024: { slidesPerView: 4, slidesPerGroup: 1, spaceBetween: 10 },\n                },\n                a11y: false,\n                keyboard: { enabled: false },\n                on: {\n                    init: function () {\n                        console.log(\"NEW frontpage-nosto-1 v6\");\n                        updateSlideAccessibility(this);\n                        updateNavVisibility(this);\n                        var wrapper = this.wrapperEl;\n                        setTimeout(function(){\n                            wrapper.removeAttribute('aria-live');\n                        }, 500);\n                    },\n                    slideChange: function () {\n                        updateSlideAccessibility(this);\n                        updateNavVisibility(this);\n                    },\n                    resize: function () {\n                        updateSlideAccessibility(this);\n                        updateNavVisibility(this);\n                    }\n                }\n            });\n\n            var liveEl = _targetWindow.document.querySelector('#frontpage-nosto-1 .swiper-live');\n\n            function announce(msg) {\n                if (!liveEl) return;\n                liveEl.textContent = '';\n                setTimeout(function() { liveEl.textContent = msg; }, 50);\n            }\n\n            var prevBtn = _targetWindow.document.querySelector('#frontpage-nosto-1 [data-recommended-prev]');\n            var nextBtn = _targetWindow.document.querySelector('#frontpage-nosto-1 [data-recommended-next]');\n\n            if (prevBtn) {\n                prevBtn.addEventListener('click', function() { announce('Previous slide'); });\n            }\n            if (nextBtn) {\n                nextBtn.addEventListener('click', function() { announce('Next slide'); });\n            }\n\n            function updateNavVisibility(swiperInstance) {\n                var prevBtn = _targetWindow.document.querySelector('#frontpage-nosto-1 [data-recommended-prev]');\n                var nextBtn = _targetWindow.document.querySelector('#frontpage-nosto-1 [data-recommended-next]');\n                // Only show on md+ (1024px+)\n                var isMd = _targetWindow.innerWidth >= 1024;\n                if (prevBtn) {\n                    prevBtn.classList.toggle('is-visible', isMd);\n                }\n                if (nextBtn) {\n                    nextBtn.classList.toggle('is-visible', isMd);\n                }\n            }\n\n            function updateSlideAccessibility(swiperInstance) {\n                var activeIndex = swiperInstance.activeIndex;\n                var perView = Math.round(swiperInstance.slidesPerViewDynamic());\n                var total = swiperInstance.slides.length;\n                var visibleStart = activeIndex;\n                var visibleEnd = activeIndex + perView - 1;\n\n                swiperInstance.slides.forEach(function (slide, idx) {\n                    var isVisible = idx >= visibleStart && idx <= visibleEnd;\n\n                    slide.setAttribute('role', 'listitem');\n                    slide.setAttribute('aria-roledescription', 'slide');\n\n                    var productCard = slide.querySelector('dynamic-product-card');\n                    var productName = '';\n                    if (productCard) {\n                        var labelAttr = productCard.getAttribute('aria-label') || '';\n                        productName = labelAttr.replace(/^Product:\\s*/i, '');\n                    }\n\n                    var label = 'Slide ' + (idx + 1) + ' of ' + total;\n                    if (productName) label += ', ' + productName;\n                    slide.setAttribute('aria-label', label);\n\n                    if (isVisible) {\n                        slide.removeAttribute('aria-hidden');\n                        slide.removeAttribute('inert');\n                    } else {\n                        slide.setAttribute('aria-hidden', 'true');\n                        slide.setAttribute('inert', '');\n                    }\n                });\n            }\n\n        } else {\n            setTimeout(nostoCheckSwiper, 250);\n        }\n    }\n\n    nostoCheckSwiper();\n\n})();\n</script>"}},"errors":[]}