{"product_id":"f-one-pocket-carbon-custom","title":"F-One POCKET CARBON CUSTOM","description":"\u003ch3\u003ePOCKET ROCKET\u003c\/h3\u003e\u003chr style=\"max-width: 600px; margin: 1rem 0 !important;\"\u003eIncredibly responsive and light, the POCKET CARBON CUSTOM is an excellent board for experienced riders aiming to push their boundaries in kite foiling.\n\u003cul\u003e\n\u003cli\u003eAmazing performances in carving and freestyle\u003c\/li\u003e\n\u003cli\u003eSuperior rigidity\u003c\/li\u003e\n\u003cli\u003eLight and responsive\u003c\/li\u003e\n\u003c\/ul\u003e\u003cstyle\u003e\n    .progress-container {\n        display: flex;\n        justify-content: space-between;\n        background-color: #f9f9f9;\n        padding: 40px 25px 60px 25px;\n    }\n    .progress-ring {\n        width: 150px;\n        height: 150px;\n        position: relative;\n        text-align: center;\n    }\n    .progress-ring circle {\n        fill: transparent;\n        stroke: #ff6800;\n        stroke-width: 15;\n        transform: rotate(-90deg);\n        transform-origin: 50% 50%;\n        transition: stroke-dashoffset 0.5s;\n    }\n    .progress-ring .ring-background {\n        fill: transparent;\n        stroke: #ccc;\n        stroke-width: 15;\n        transform: rotate(-90deg);\n        transform-origin: 50% 50%;\n    }\n    .progress-text {\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        transform: translate(-50%, -50%);\n        font-size: 24px;\n    }\n    .progress-title {\n        font-size: 20px;\n        color: black;\n        margin-top: 10px;\n    }\n    @media (max-width: 768px) {\n        .progress-container {\n            flex-direction: column;\n            align-items: center;\n        }\n        .progress-ring {\n            margin-bottom: 50px;\n        }\n    }\n\u003c\/style\u003e\n\u003ch3\u003ePERFORMANCE\u003c\/h3\u003e\n\u003chr style=\"border: none; border-top: 1px solid #B3B3B3; width: 30%; margin: 0 0 20px 0;\"\u003e\n\n\u003cdiv class=\"progress-container\"\u003e\n    \u003cdiv class=\"progress-ring\" id=\"ring1\" data-progress=\"75\"\u003e\n        \u003csvg width=\"150\" height=\"150\"\u003e\n            \u003ccircle class=\"ring-background\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n            \u003ccircle class=\"ring\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n        \u003c\/svg\u003e\n        \u003cdiv class=\"progress-title\"\u003eAccessibility\u003c\/div\u003e\n        \u003cdiv class=\"progress-text\" id=\"progress1\"\u003e0%\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"progress-ring\" id=\"ring2\" data-progress=\"90\"\u003e\n        \u003csvg width=\"150\" height=\"150\"\u003e\n            \u003ccircle class=\"ring-background\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n            \u003ccircle class=\"ring\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n        \u003c\/svg\u003e\n        \u003cdiv class=\"progress-title\"\u003eFreeride\u003c\/div\u003e\n        \u003cdiv class=\"progress-text\" id=\"progress2\"\u003e0%\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"progress-ring\" id=\"ring3\" data-progress=\"100\"\u003e\n        \u003csvg width=\"150\" height=\"150\"\u003e\n            \u003ccircle class=\"ring-background\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n            \u003ccircle class=\"ring\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n        \u003c\/svg\u003e\n        \u003cdiv class=\"progress-title\"\u003eCarving\u003c\/div\u003e\n        \u003cdiv class=\"progress-text\" id=\"progress3\"\u003e0%\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"progress-ring\" id=\"ring4\" data-progress=\"100\"\u003e\n        \u003csvg width=\"150\" height=\"150\"\u003e\n            \u003ccircle class=\"ring-background\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n            \u003ccircle class=\"ring\" cx=\"75\" cy=\"75\" r=\"65\"\u003e\u003c\/circle\u003e\n        \u003c\/svg\u003e\n        \u003cdiv class=\"progress-title\"\u003ePerformance\u003c\/div\u003e\n        \u003cdiv class=\"progress-text\" id=\"progress4\"\u003e0%\u003c\/div\u003e\n    \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        function animateProgress(ringId, from, to, duration) {\n            const ring = document.querySelector(`#ring${ringId} .ring`);\n            const text = document.getElementById(`progress${ringId}`);\n            const title = document.querySelector(`#ring${ringId} .progress-title`);\n            const circumference = 2 * Math.PI * 65; \/\/ Hardcoding the radius as 65 for this example\n            const increment = (to - from) \/ (duration * 60);\n            let current = from;\n\n            function update() {\n                if ((increment \u003e 0 \u0026\u0026 current \u003c to) || (increment \u003c 0 \u0026\u0026 current \u003e to)) {\n                    const offset = circumference - (current \/ 100) * circumference;\n                    ring.style.strokeDasharray = `${circumference} ${circumference}`;\n                    ring.style.strokeDashoffset = offset;\n                    text.textContent = `${Math.round(current)}%`;\n\n                    current += increment;\n                    requestAnimationFrame(update);\n                } else {\n                    const offset = circumference - (to \/ 100) * circumference;\n                    ring.style.strokeDashoffset = offset;\n                    text.textContent = `${to}%`;\n                }\n            }\n\n            update();\n        }\n\n        function handleIntersection(entries, observer) {\n            entries.forEach((entry) =\u003e {\n                if (entry.isIntersecting) {\n                    const ringId = entry.target.id.replace('ring', '');\n                    const from = 0;\n                    const to = parseInt(entry.target.getAttribute('data-progress'), 10);\n                    animateProgress(ringId, from, to, 2);\n                    observer.unobserve(entry.target);\n                }\n            });\n        }\n\n        const rings = document.querySelectorAll('.progress-ring');\n\n        const observer = new IntersectionObserver(handleIntersection, {\n            root: null,\n            rootMargin: '0px',\n            threshold: 0.2 \/\/ Adjust this threshold as needed\n        });\n\n        rings.forEach((ring) =\u003e {\n            observer.observe(ring);\n        });\n    });\n\u003c\/script\u003e","brand":"F-One","offers":[{"title":"110cm","offer_id":50619928314193,"sku":"FW23-77228-0201-110","price":1449.0,"currency_code":"EUR","in_stock":false},{"title":"120cm","offer_id":50619928346961,"sku":"FW23-77228-0201-120","price":1459.0,"currency_code":"EUR","in_stock":false},{"title":"130cm","offer_id":50625915158865,"sku":"FW23-77228-0201-130","price":1469.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0512\/0838\/8795\/files\/pocket-carbon-custom-2-650x650.png?v=1760340165","url":"https:\/\/www.billy.be\/products\/f-one-pocket-carbon-custom","provider":"Billy.be","version":"1.0","type":"link"}