{"product_id":"goosebump-pocket-pu-y-hot","title":"Goosebump Pocket Pu**y hot","description":"\u003cstyle\u003e\n  .product-fullwidth-images { max-width: 100%; margin: 0; padding: 0; }\n  .product-fullwidth-images img {\n    width: 100%;\n    height: auto;\n    display: block;\n    margin: 0 0 0 0;\n    border-radius: 6px;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.04);\n  }\n  .product-fullwidth-images .caption {\n    font-size: 13px;\n    color: #666;\n    margin: 0 0 18px 0;\n  }\n  @media (min-width: 980px) {\n    .product-fullwidth-images img { margin-bottom: 16px; }\n  }\n\n  \/* Video Section *\/\n  .product-video-section {\n    max-width: 100%;\n    margin: 0 0 20px 0;\n    padding: 0;\n    position: relative;\n  }\n  .product-video-section video {\n    width: 100%;\n    height: auto;\n    display: block;\n    border-radius: 6px;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.04);\n  }\n  \n  \/* Unmute Button *\/\n  .video-mute-toggle {\n    position: absolute;\n    bottom: 20px;\n    right: 20px;\n    background: white;\n    color: #333;\n    border: 2px solid #333;\n    border-radius: 50%;\n    width: 48px;\n    height: 48px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    cursor: pointer;\n    font-size: 20px;\n    transition: all 0.3s ease;\n    z-index: 10;\n    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n    font-weight: bold;\n    opacity: 0;\n    pointer-events: none;\n  }\n  .video-mute-toggle.visible {\n    opacity: 1;\n    pointer-events: auto;\n  }\n  .video-mute-toggle:hover {\n    background: #333;\n    color: white;\n    transform: scale(1.1);\n    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);\n  }\n  .video-mute-toggle:active {\n    transform: scale(0.95);\n  }\n  .video-mute-toggle svg {\n    width: 24px;\n    height: 24px;\n    fill: currentColor;\n  }\n  \n  @media (min-width: 980px) {\n    .product-video-section { margin: 0 0 30px 0; }\n  }\n  @media (max-width: 767px) {\n    .video-mute-toggle {\n      width: 44px;\n      height: 44px;\n      bottom: 15px;\n      right: 15px;\n    }\n    .video-mute-toggle svg {\n      width: 20px;\n      height: 20px;\n    }\n  }\n\n  \/* ========== LAZY LOADING STYLES ========== *\/\n  \n  \/* Video Loading State *\/\n  .product-video-section {\n    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);\n    background-size: 200% 100%;\n    animation: shimmer 1.5s infinite;\n    min-height: 200px;\n  }\n  .product-video-section.loaded {\n    background: none;\n    animation: none;\n    min-height: auto;\n  }\n  .product-video-section video {\n    opacity: 0;\n    transition: opacity 0.4s ease;\n  }\n  .product-video-section.loaded video {\n    opacity: 1;\n  }\n\n  \/* Image Loading State *\/\n  .lazy-image-wrapper {\n    position: relative;\n    background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);\n    background-size: 200% 100%;\n    animation: shimmer 1.5s infinite;\n    border-radius: 6px;\n    min-height: 150px;\n    margin-bottom: 0;\n  }\n  .lazy-image-wrapper.loaded {\n    background: none;\n    animation: none;\n    min-height: auto;\n  }\n  .lazy-image-wrapper img {\n    opacity: 0;\n    transition: opacity 0.4s ease;\n  }\n  .lazy-image-wrapper.loaded img {\n    opacity: 1;\n  }\n  @media (min-width: 980px) {\n    .lazy-image-wrapper { margin-bottom: 16px; }\n  }\n\n  \/* Shimmer Animation *\/\n  @keyframes shimmer {\n    0% { background-position: -200% 0; }\n    100% { background-position: 200% 0; }\n  }\n\n  \/* Swiper Lazy Styles *\/\n  .swiper-slide .lazy-image-wrapper {\n    margin-bottom: 0;\n    min-height: 200px;\n  }\n\u003c\/style\u003e\n\n\u003c!-- Video Section 1 --\u003e\n\u003cdiv class=\"product-video-section\" id=\"videoSection1\"\u003e\n  \u003cvideo id=\"productVideo1\" muted loop playsinline preload=\"none\"\u003e\n    \u003csource data-src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/fed57e71a767408a86d4a26f44f763ad.mp4\" type=\"video\/mp4\"\u003e\n    Your browser does not support the video tag.\n  \u003c\/source\u003e\u003c\/video\u003e\n  \u003cbutton class=\"video-mute-toggle\" id=\"muteToggle1\" aria-label=\"Toggle mute\"\u003e\n    \u003csvg class=\"muted-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\"\u003e\n      \u003cpath d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\"\u003e\u003c\/path\u003e\n    \u003c\/svg\u003e\n    \u003csvg class=\"unmuted-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\" style=\"display: none;\"\u003e\n      \u003cpath d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\"\u003e\u003c\/path\u003e\n    \u003c\/svg\u003e\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"product-fullwidth-images\"\u003e\n  \u003cdiv class=\"lazy-image-wrapper\"\u003e\n    \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/1.jpg_1.jpg?v=1769088986\" alt=\"Image 1\"\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"lazy-image-wrapper\"\u003e\n    \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/2_87690b7c-d223-4b51-9da7-7c3d60f79e28.jpg?v=1765203578\" alt=\"Image 2\"\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"lazy-image-wrapper\"\u003e\n    \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/2.jpg_1.jpg?v=1769088986\" alt=\"Image 3\"\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"lazy-image-wrapper\"\u003e\n    \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/3.jpg_1.jpg?v=1769088987\" alt=\"Image 4\"\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"lazy-image-wrapper\"\u003e\n    \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/5.jpg?v=1765203580\" alt=\"Image 5\"\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"lazy-image-wrapper\"\u003e\n    \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/1_1_3d4931c0-e86c-4f34-89f1-45cc363009e6.jpg?v=1765205012\" alt=\"Image 6\"\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"lazy-image-wrapper\"\u003e\n    \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/2_1_b3c778b8-994f-40b4-ae2a-6e00bb25f449.jpg?v=1765205013\" alt=\"Image 7\"\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- Video Section 2 --\u003e\n\u003cdiv class=\"product-video-section\" id=\"videoSection2\"\u003e\n  \u003cvideo id=\"productVideo2\" muted loop playsinline preload=\"none\"\u003e\n    \u003csource data-src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/116aac1b3c9d4ba79873aa69034306c0.mp4\" type=\"video\/mp4\"\u003e\n    Your browser does not support the video tag.\n  \u003c\/source\u003e\u003c\/video\u003e\n  \u003cbutton class=\"video-mute-toggle\" id=\"muteToggle2\" aria-label=\"Toggle mute\"\u003e\n    \u003csvg class=\"muted-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\"\u003e\n      \u003cpath d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z\"\u003e\u003c\/path\u003e\n    \u003c\/svg\u003e\n    \u003csvg class=\"unmuted-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 24 24\" style=\"display: none;\"\u003e\n      \u003cpath d=\"M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z\"\u003e\u003c\/path\u003e\n    \u003c\/svg\u003e\n  \u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .product-fullwidth-images {\n    max-width: 100%;\n    margin: 0 auto;\n    padding: 20px 0;\n    position: relative;\n  }\n  .reviews-swiper {\n    width: 100%;\n    padding: 0 50px;\n    position: relative;\n  }\n  .swiper-slide img {\n    width: 100%;\n    height: auto;\n    display: block;\n    border-radius: 6px;\n    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);\n    transition: transform 0.3s ease, box-shadow 0.3s ease, opacity 0.4s ease;\n  }\n  .swiper-slide img:hover {\n    transform: translateY(-4px);\n    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n  }\n  .swiper-button-next,\n  .swiper-button-prev {\n    color: #333;\n    background: white;\n    width: 40px;\n    height: 40px;\n    border-radius: 50%;\n    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n  }\n  .swiper-button-next:after,\n  .swiper-button-prev:after {\n    font-size: 18px;\n    font-weight: bold;\n  }\n  .swiper-button-next:hover,\n  .swiper-button-prev:hover {\n    background: #f5f5f5;\n  }\n  .swiper-pagination-bullet {\n    width: 10px;\n    height: 10px;\n    background: #ccc;\n    opacity: 1;\n  }\n  .swiper-pagination-bullet-active {\n    background: #333;\n  }\n  @media (max-width: 767px) {\n    .reviews-swiper { padding: 0 20px; }\n    .swiper-button-next,\n    .swiper-button-prev {\n      width: 32px;\n      height: 32px;\n    }\n    .swiper-button-next:after,\n    .swiper-button-prev:after {\n      font-size: 14px;\n    }\n  }\n  @media (min-width: 980px) {\n    .product-fullwidth-images { padding: 30px 0; }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"product-fullwidth-images\"\u003e\n  \u003cdiv class=\"swiper reviews-swiper\"\u003e\n    \u003cdiv class=\"swiper-wrapper\"\u003e\n      \u003cdiv class=\"swiper-slide\"\u003e\n        \u003cdiv class=\"lazy-image-wrapper\"\u003e\n          \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/rev1.jpg?v=1764588987\" alt=\"Review Image 1\"\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"swiper-slide\"\u003e\n        \u003cdiv class=\"lazy-image-wrapper\"\u003e\n          \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/rev2.jpg?v=1764588987\" alt=\"Review Image 2\"\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"swiper-slide\"\u003e\n        \u003cdiv class=\"lazy-image-wrapper\"\u003e\n          \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/rev3.jpg?v=1764588987\" alt=\"Review Image 3\"\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"swiper-slide\"\u003e\n        \u003cdiv class=\"lazy-image-wrapper\"\u003e\n          \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/rev4.jpg?v=1764588987\" alt=\"Review Image 4\"\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"swiper-slide\"\u003e\n        \u003cdiv class=\"lazy-image-wrapper\"\u003e\n          \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/rev5.jpg?v=1764588987\" alt=\"Review Image 5\"\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"swiper-slide\"\u003e\n        \u003cdiv class=\"lazy-image-wrapper\"\u003e\n          \u003cimg data-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/rev6.jpg?v=1764588988\" alt=\"Review Image 6\"\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"swiper-button-next\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"swiper-button-prev\"\u003e\u003c\/div\u003e\n    \u003cdiv class=\"swiper-pagination\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript src=\"https:\/\/cdn.jsdelivr.net\/npm\/swiper@11\/swiper-bundle.min.js\"\u003e\u003c\/script\u003e\n\u003cscript\u003e\n(function() {\n  'use strict';\n\n  \/\/ ========== LAZY LOAD MANAGER ==========\n  const LazyLoadManager = {\n    observers: {\n      video: null,\n      image: null\n    },\n    \n    config: {\n      rootMargin: '200px 0px',\n      threshold: 0.1\n    },\n\n    init: function() {\n      if ('IntersectionObserver' in window) {\n        this.initVideoObserver();\n        this.initImageObserver();\n        this.observeElements();\n      } else {\n        this.fallbackLoadAll();\n      }\n    },\n\n    \/\/ Video Observer - handles load, play, and pause\n    initVideoObserver: function() {\n      const self = this;\n      this.observers.video = new IntersectionObserver(function(entries) {\n        entries.forEach(function(entry) {\n          const section = entry.target;\n          const video = section.querySelector('video');\n          const source = video.querySelector('source');\n          const muteBtn = section.querySelector('.video-mute-toggle');\n\n          if (entry.isIntersecting) {\n            \/\/ Load video if not loaded\n            if (source.dataset.src \u0026\u0026 !source.src) {\n              source.src = source.dataset.src;\n              source.removeAttribute('data-src');\n              video.load();\n              \n              video.addEventListener('canplay', function() {\n                section.classList.add('loaded');\n                muteBtn.classList.add('visible');\n                video.play().catch(function() {});\n              }, { once: true });\n            } else if (video.paused) {\n              video.play().catch(function() {});\n            }\n          } else {\n            \/\/ Pause when out of view\n            if (!video.paused) {\n              video.pause();\n            }\n          }\n        });\n      }, {\n        rootMargin: this.config.rootMargin,\n        threshold: this.config.threshold\n      });\n    },\n\n    \/\/ Image Observer\n    initImageObserver: function() {\n      const self = this;\n      this.observers.image = new IntersectionObserver(function(entries) {\n        entries.forEach(function(entry) {\n          if (entry.isIntersecting) {\n            const wrapper = entry.target;\n            const img = wrapper.querySelector('img');\n            \n            if (img \u0026\u0026 img.dataset.src) {\n              img.src = img.dataset.src;\n              img.removeAttribute('data-src');\n              \n              img.addEventListener('load', function() {\n                wrapper.classList.add('loaded');\n              }, { once: true });\n              \n              img.addEventListener('error', function() {\n                wrapper.classList.add('loaded');\n                console.warn('Failed to load image:', img.src);\n              }, { once: true });\n            }\n            \n            self.observers.image.unobserve(wrapper);\n          }\n        });\n      }, {\n        rootMargin: this.config.rootMargin,\n        threshold: this.config.threshold\n      });\n    },\n\n    observeElements: function() {\n      const self = this;\n      \n      \/\/ Observe video sections\n      document.querySelectorAll('.product-video-section').forEach(function(section) {\n        self.observers.video.observe(section);\n      });\n      \n      \/\/ Observe image wrappers\n      document.querySelectorAll('.lazy-image-wrapper').forEach(function(wrapper) {\n        self.observers.image.observe(wrapper);\n      });\n    },\n\n    \/\/ Fallback for browsers without IntersectionObserver\n    fallbackLoadAll: function() {\n      document.querySelectorAll('.product-video-section').forEach(function(section) {\n        const video = section.querySelector('video');\n        const source = video.querySelector('source');\n        const muteBtn = section.querySelector('.video-mute-toggle');\n        \n        if (source.dataset.src) {\n          source.src = source.dataset.src;\n          video.load();\n          section.classList.add('loaded');\n          muteBtn.classList.add('visible');\n          video.play().catch(function() {});\n        }\n      });\n      \n      document.querySelectorAll('.lazy-image-wrapper img').forEach(function(img) {\n        if (img.dataset.src) {\n          img.src = img.dataset.src;\n          img.parentElement.classList.add('loaded');\n        }\n      });\n    },\n\n    \/\/ Method to manually load adjacent swiper slides\n    loadSwiperSlides: function(swiper) {\n      const activeIndex = swiper.realIndex;\n      const slidesPerView = swiper.params.slidesPerView;\n      const totalSlides = swiper.slides.length;\n      \n      \/\/ Calculate which slides to load (current + neighbors)\n      const indicesToLoad = [];\n      for (let i = -1; i \u003c= slidesPerView; i++) {\n        let idx = (activeIndex + i + totalSlides) % totalSlides;\n        indicesToLoad.push(idx);\n      }\n      \n      indicesToLoad.forEach(function(idx) {\n        const slide = swiper.slides[idx];\n        if (slide) {\n          const wrapper = slide.querySelector('.lazy-image-wrapper');\n          const img = slide.querySelector('img');\n          if (wrapper \u0026\u0026 img \u0026\u0026 img.dataset.src) {\n            img.src = img.dataset.src;\n            img.removeAttribute('data-src');\n            img.addEventListener('load', function() {\n              wrapper.classList.add('loaded');\n            }, { once: true });\n          }\n        }\n      });\n    }\n  };\n\n  \/\/ ========== VIDEO MUTE CONTROLS ==========\n  function setupMuteToggle(videoId, toggleId) {\n    const video = document.getElementById(videoId);\n    const toggle = document.getElementById(toggleId);\n    if (!video || !toggle) return;\n\n    const mutedIcon = toggle.querySelector('.muted-icon');\n    const unmutedIcon = toggle.querySelector('.unmuted-icon');\n\n    toggle.addEventListener('click', function() {\n      if (video.muted) {\n        video.muted = false;\n        mutedIcon.style.display = 'none';\n        unmutedIcon.style.display = 'block';\n        toggle.setAttribute('aria-label', 'Mute video');\n      } else {\n        video.muted = true;\n        mutedIcon.style.display = 'block';\n        unmutedIcon.style.display = 'none';\n        toggle.setAttribute('aria-label', 'Unmute video');\n      }\n    });\n  }\n\n  \/\/ ========== INITIALIZE ==========\n  document.addEventListener('DOMContentLoaded', function() {\n    \/\/ Initialize lazy loading\n    LazyLoadManager.init();\n\n    \/\/ Setup mute toggles\n    setupMuteToggle('productVideo1', 'muteToggle1');\n    setupMuteToggle('productVideo2', 'muteToggle2');\n\n    \/\/ Initialize Swiper with lazy loading integration\n    const reviewsSwiper = new Swiper('.reviews-swiper', {\n      slidesPerView: 1,\n      spaceBetween: 12,\n      breakpoints: {\n        768: {\n          slidesPerView: 3,\n          spaceBetween: 20\n        }\n      },\n      navigation: {\n        nextEl: '.swiper-button-next',\n        prevEl: '.swiper-button-prev',\n      },\n      pagination: {\n        el: '.swiper-pagination',\n        clickable: true,\n      },\n      loop: true,\n      grabCursor: true,\n      keyboard: { enabled: true },\n      autoplay: {\n        delay: 3000,\n        disableOnInteraction: true,\n      },\n      on: {\n        init: function() {\n          LazyLoadManager.loadSwiperSlides(this);\n        },\n        slideChange: function() {\n          LazyLoadManager.loadSwiperSlides(this);\n        }\n      }\n    });\n  });\n})();\n\u003c\/script\u003e","brand":"underbold","offers":[{"title":"Default Title","offer_id":48610070233323,"sku":"UUJHIOJJOLLK","price":1295.0,"currency_code":"INR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0795\/1266\/6347\/files\/1_efc92cfa-7b3e-4ecf-b38b-136cb57f8d8b.jpg?v=1769089681","url":"https:\/\/goosebump.love\/hi\/products\/goosebump-pocket-pu-y-hot","provider":"Goosebump","version":"1.0","type":"link"}