{"product_id":"power-cozy","title":"POwER Cozy","description":"\u003cstyle\u003e\n.image-wrapperxyz {\n  margin: 0 -15px;\n}\n\n.image-wrapperxyz img {\n  width: 100%;\n  display: block;\n}\n  \u003c\/style\u003e\n\u003cdiv class=\"videomobileview image-wrapperxyz\"\u003e\n\u003c!-- --------scroll animation --------------- --\u003e\n\n\u003cstyle\u003e\n.axn-wrapper{\n    background:#000;\n}\n\n.axn-scroll-section{\n    position:relative;\n    height:100vh;\n    overflow:hidden;\n}\n\n.axn-scroll-section video{\n    position:absolute;\n    top:50%;\n    left:50%;\n    transform:translate(-50%,-50%);\n    width:100%;\n    height:100vh;\n    object-fit:contain;\n    display:block;\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"axn-wrapper\"\u003e\n    \u003cdiv class=\"axn-scroll-section\"\u003e\n        \u003cvideo class=\"axn-scroll-video\" muted playsinline preload=\"auto\"\u003e\n            \u003csource src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/18b57dc63e1b473e9df19537f8d38b2e.mp4\" type=\"video\/mp4\"\u003e\u003c\/video\u003e\n    \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/ScrollMagic\/2.0.8\/ScrollMagic.min.js\"\u003e\u003c\/script\u003e\n\n\u003cscript\u003e\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n\n    const axnSection = document.querySelector(\".axn-scroll-section\");\n    const axnVideo = document.querySelector(\".axn-scroll-video\");\n\n    let axnLoopMode = false;\n    let axnLoopInterval = null;\n\n    axnVideo.addEventListener(\"loadedmetadata\", function () {\n\n        const axnController = new ScrollMagic.Controller();\n\n        const axnScene = new ScrollMagic.Scene({\n            triggerElement: axnSection,\n            triggerHook: 0,\n            duration: 1500\n        })\n        .setPin(axnSection)\n        .addTo(axnController);\n\n        axnScene.on(\"progress\", function (e) {\n\n            const axnProgress = e.progress;\n\n            if (axnProgress \u003c= 0.75) {\n\n                if (axnLoopMode) {\n                    clearInterval(axnLoopInterval);\n                    axnVideo.pause();\n                    axnLoopMode = false;\n                }\n\n                const axnTargetTime = (axnProgress \/ 0.75) * 4;\n\n                if (axnVideo.readyState \u003e= 2) {\n                    axnVideo.currentTime = axnTargetTime;\n                }\n\n            } else {\n\n                if (!axnLoopMode) {\n\n                    axnLoopMode = true;\n\n                    axnVideo.currentTime = 4;\n                    axnVideo.play();\n\n                    axnLoopInterval = setInterval(() =\u003e {\n\n                        if (axnVideo.currentTime \u003e= 6.95) {\n                            axnVideo.currentTime = 4;\n                            axnVideo.play();\n                        }\n\n                    }, 50);\n\n                }\n\n            }\n\n        });\n\n        axnScene.on(\"leave\", function(event){\n\n            if(event.scrollDirection === \"REVERSE\"){\n\n                clearInterval(axnLoopInterval);\n                axnVideo.pause();\n                axnLoopMode = false;\n\n            }\n\n        });\n\n    });\n\n});\n\u003c\/script\u003e\n\n\n  \u003c!-- --------scroll animation --------------- --\u003e\n\n\n  \u003c!-- ------ warming animation --------- --\u003e\n\n\u003cstyle\u003e\n.thermal-zone{\n    background:#000;\n    padding:40px 20px;\n}\n\n.thermal-container{\n    max-width:500px;\n    margin:auto;\n}\n\n.heat-meter{\n    width:100%;\n    height:6px;\n    background:rgba(255,255,255,.15);\n    border-radius:999px;\n    overflow:hidden;\n    margin-bottom:20px;\n}\n\n.heat-meter-fill{\n    width:0%;\n    height:100%;\n    background:#ff4d4d;\n}\n\n.heat-trigger-btn{\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    width:max-content;\n    margin:0 auto 20px;\n    padding:14px 32px;\n    background:#fff;\n    color:#000;\n    border-radius:999px;\n    font-weight:600;\n    font-size:15px;\n    cursor:pointer;\n    user-select:none;\n    -webkit-user-select:none;\n    -webkit-touch-callout:none;\n    touch-action:none;\n    position:relative;\n    z-index:999;\n}\n\n.thermal-image-box{\n    position:relative;\n    overflow:hidden;\n    border-radius:24px;\n}\n\n.frost-layer{\n    width:100%;\n    display:block;\n}\n\n.warm-layer{\n    position:absolute;\n    inset:0;\n    width:100%;\n    height:100%;\n    object-fit:cover;\n    opacity:0;\n    pointer-events:none;\n}\n\n@media(max-width:768px){\n    .heat-trigger-btn{\n        font-size:14px;\n        padding:12px 24px;\n    }\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"thermal-zone\"\u003e\n\n    \u003cdiv class=\"thermal-container\"\u003e\n\n        \u003cdiv class=\"thermal-image-box\"\u003e\n\n            \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/CARNIwAL_Sphorika_Banner_mob.webp?v=1780747742\" class=\"warm-layer\" alt=\"\"\u003e\n\n            \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/Frost6.webp?v=1780907361\" class=\"frost-layer\" alt=\"\"\u003e\n\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"heat-meter\"\u003e\n            \u003cdiv class=\"heat-meter-fill\"\u003e\u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"heat-trigger-btn\" id=\"heatTriggerBtn\"\u003e\n            Press \u0026amp; Hold To Heat\n        \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\ndocument.addEventListener(\"DOMContentLoaded\", function(){\n\n    const heatTriggerBtn = document.getElementById(\"heatTriggerBtn\");\n    const frostLayer = document.querySelector(\".frost-layer\");\n    const warmLayer = document.querySelector(\".warm-layer\");\n    const heatMeterFill = document.querySelector(\".heat-meter-fill\");\n\n    let heatProgress = 0;\n    let isHeating = false;\n    let animationFrame;\n\n    function runHeatingAnimation(){\n\n        if(!isHeating) return;\n\n        heatProgress += 0.01;\n\n        if(heatProgress \u003e 1) heatProgress = 1;\n\n        frostLayer.style.opacity = 1 - heatProgress;\n        warmLayer.style.opacity = heatProgress;\n        heatMeterFill.style.width = (heatProgress * 100) + \"%\";\n\n        if(heatProgress \u003e= 1){\n            heatTriggerBtn.innerHTML = \"🔥 Fully Heated\";\n            return;\n        }\n\n        animationFrame = requestAnimationFrame(runHeatingAnimation);\n    }\n\n    function startHeating(event){\n\n        if(event) event.preventDefault();\n\n        isHeating = true;\n\n        heatTriggerBtn.innerHTML = \"Heating...\";\n\n        cancelAnimationFrame(animationFrame);\n\n        runHeatingAnimation();\n    }\n\n    function stopHeating(event){\n\n        if(event) event.preventDefault();\n\n        isHeating = false;\n\n        cancelAnimationFrame(animationFrame);\n\n        heatProgress = 0;\n\n        frostLayer.style.opacity = 1;\n        warmLayer.style.opacity = 0;\n\n        heatMeterFill.style.width = \"0%\";\n\n        heatTriggerBtn.innerHTML = \"Press \u0026 Hold To Heat\";\n    }\n\n    \/* Desktop *\/\n    heatTriggerBtn.addEventListener(\"mousedown\", startHeating);\n    document.addEventListener(\"mouseup\", stopHeating);\n\n    \/* Mobile *\/\n    heatTriggerBtn.addEventListener(\"touchstart\", startHeating, {passive:false});\n    document.addEventListener(\"touchend\", stopHeating);\n    document.addEventListener(\"touchcancel\", stopHeating);\n\n});\n\u003c\/script\u003e\n\n\u003c!-- ------ warming animation --------- --\u003e\n  \u003c\/div\u003e\n\n\u003cdiv class=\"hidemobile\"\u003e\n\n\u003c!-- ------heating animation------- --\u003e\n\n\n\u003cstyle\u003e\n\n\n.main-cozy{\n    min-height:100vh;\n    background:#000;\n    display:flex;\n    justify-content:center;\n    align-items:center;\n    font-family:Arial,sans-serif;\n}\n\n.heating-section{\n    width:500px;\n    max-width:90vw;\n\n    \n}\n\n\/* Progress Bar *\/\n.progress-bar{\n    width:100%;\n    height:6px;\n    background:rgba(255,255,255,.18);\n    border-radius:999px;\n    overflow:hidden;\n    margin-bottom:20px;\n}\n\n.progress-fill{\n    width:0%;\n    height:100%;\n    background:#ff4d4d;\n}\n\n\/* Button *\/\n.hold-btn{\n    display:block;\n    margin:0 auto 20px;\n    padding:14px 34px;\n    border:none;\n    border-radius:999px;\n    background:#fff;\n    color:#000;\n    font-size:15px;\n    font-weight:700;\n    cursor:pointer;\n}\n\n\/* Image Wrapper *\/\n.heating-wrapper{\n    position:relative;\n    width:100%;\n    overflow:hidden;\n    border-radius:24px;\n}\n\n\/* Cold Image = normal flow *\/\n.cold-image{\n    width:100%;\n    display:block;\n    border-radius:24px;\n}\n\n\/* Hot Image = overlay *\/\n.hot-image{\n    position:absolute;\n    inset:0;\n    width:100%;\n    height:100%;\n    object-fit:cover;\n    border-radius:24px;\n    opacity:0;\n    pointer-events:none;\n}\n\n@media(max-width:768px){\n\n    .hold-btn{\n        padding:12px 28px;\n        font-size:14px;\n    }\n\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"main-cozy\"\u003e\n\u003cdiv class=\"heating-section\"\u003e\n\n   \n\n    \u003c!-- Images --\u003e\n    \u003cdiv class=\"heating-wrapper\" id=\"heater\"\u003e\n\n        \u003c!-- HOT IMAGE --\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/CARNIwAL_Sphorika_Banner_mob.webp?v=1780747742\" class=\"hot-image\" alt=\"\"\u003e\n\n        \u003c!-- COLD IMAGE --\u003e\n        \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0666\/4870\/3294\/files\/Frost6.webp?v=1780907361\" class=\"cold-image\" alt=\"\"\u003e\n\n    \u003c\/div\u003e\n\n \u003c!-- Progress --\u003e\n \u003cdiv class=\"progress-bar\"\u003e\n    \u003cdiv class=\"progress-fill\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- Button --\u003e\n\u003cbutton class=\"hold-btn\" id=\"holdBtn\"\u003e\n    Press \u0026amp; Hold To Heat\n\u003c\/button\u003e\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n\nconst holdBtn = document.getElementById(\"holdBtn\");\nconst coldImg = document.querySelector(\".cold-image\");\nconst hotImg = document.querySelector(\".hot-image\");\nconst fill = document.querySelector(\".progress-fill\");\n\nlet progress = 0;\nlet holding = false;\nlet frame;\n\nfunction animateHeat(){\n\n    if(!holding) return;\n\n    progress += 0.008;\n\n    if(progress \u003e 1) progress = 1;\n\n    coldImg.style.opacity = 1 - progress;\n    hotImg.style.opacity = progress;\n\n    fill.style.width = (progress * 100) + \"%\";\n\n    if(progress === 1){\n        holdBtn.innerHTML = \"🔥 Fully Heated\";\n        return;\n    }\n\n    frame = requestAnimationFrame(animateHeat);\n}\n\nfunction startHeat(){\n\n    holding = true;\n\n    holdBtn.innerHTML = \"Heating...\";\n\n    cancelAnimationFrame(frame);\n\n    animateHeat();\n}\n\nfunction stopHeat(){\n\n    holding = false;\n\n    cancelAnimationFrame(frame);\n\n    progress = 0;\n\n    coldImg.style.opacity = 1;\n    hotImg.style.opacity = 0;\n\n    fill.style.width = \"0%\";\n\n    holdBtn.innerHTML = \"Press \u0026 Hold To Heat\";\n}\n\n\/* Desktop *\/\nholdBtn.addEventListener(\"mousedown\", startHeat);\nholdBtn.addEventListener(\"mouseup\", stopHeat);\nholdBtn.addEventListener(\"mouseleave\", stopHeat);\n\n\/* Mobile *\/\nholdBtn.addEventListener(\"touchstart\", startHeat);\nholdBtn.addEventListener(\"touchend\", stopHeat);\nholdBtn.addEventListener(\"touchcancel\", stopHeat);\n\n\u003c\/script\u003e\n\n\n\n\n  \u003c!-- ------heating animation------- --\u003e\n  \u003c\/div\u003e","brand":"ACwO","offers":[{"title":"Default Title","offer_id":53720840175934,"sku":null,"price":0.0,"currency_code":"INR","in_stock":false}],"url":"https:\/\/acwo.com\/products\/power-cozy","provider":"ACwO","version":"1.0","type":"link"}