Download Code
<!-- wp:greenshift-blocks/element {"id":"gsbp-9d35389","tag":"section","type":"inner","localId":"gsbp-9d35389","align":"full","dynamicAttributes":[{"name":"data-type","value":"section-component"}],"styleAttributes":{"display":["flex"],"justifyContent":["center"],"flexDirection":["column"],"alignItems":["center"],"paddingRight":["var(\u002d\u002dwp\u002d\u002dcustom\u002d\u002dspacing\u002d\u002dside, min(3vw, 20px))"],"paddingLeft":["var(\u002d\u002dwp\u002d\u002dcustom\u002d\u002dspacing\u002d\u002dside, min(3vw, 20px))"],"paddingTop":["var(\u002d\u002dwp\u002d\u002dcustom\u002d\u002dspacing\u002d\u002dtop, 0px)"],"paddingBottom":["var(\u002d\u002dwp\u002d\u002dcustom\u002d\u002dspacing\u002d\u002dbottom, 0px)"],"marginTop":["0px"],"marginBottom":["0px"],"paddingLink_Extra":"lr","position":["relative"],"backgroundColor":["#000000"]},"isVariation":"contentwrapper"} -->
<section class="gsbp-9d35389 alignfull" data-type="section-component"><!-- wp:greenshift-blocks/element {"id":"gsbp-d21dafb","metadata":{"name":"Content Area"},"type":"inner","localId":"gsbp-d21dafb","dynamicAttributes":[{"name":"data-type","value":"content-area-component"}],"styleAttributes":{"maxWidth":["100%"],"width":["var(\u002d\u002dwp\u002d\u002dstyle\u002d\u002dglobal\u002d\u002dwide-size, 1200px)"]},"isVariation":"nocolumncontent"} -->
<div class="gsbp-d21dafb" data-type="content-area-component"><!-- wp:greenshift-blocks/element {"id":"gsbp-01c8362","anchor":"rw-view-container","type":"inner","localId":"gsbp-01c8362"} -->
<div id="rw-view-container"><!-- wp:greenshift-blocks/element {"id":"gsbp-f7c46df","type":"inner","className":"rw-wheel-container","localId":"gsbp-f7c46df"} -->
<div class="rw-wheel-container"><!-- wp:greenshift-blocks/element {"id":"gsbp-85738b7","anchor":"rw-wheels-wrapper","type":"inner","className":"rw-wheels-wrapper","localId":"gsbp-85738b7"} -->
<div class="rw-wheels-wrapper" id="rw-wheels-wrapper"><!-- wp:greenshift-blocks/element {"id":"gsbp-aca5aae","type":"inner","className":"rw-word-item","localId":"gsbp-aca5aae"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-a46647d","type":"empty","className":"rw-dot","localId":"gsbp-a46647d"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-21d9137","textContent":"Discipline","tag":"a","className":"rw-text","localId":"gsbp-21d9137","href":"#discipline"} -->
<a class="rw-text" href="#discipline">Discipline</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-b85a7c4","type":"inner","className":"rw-word-item","localId":"gsbp-b85a7c4"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-badf7cb","type":"empty","className":"rw-dot","localId":"gsbp-badf7cb"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-876a78f","textContent":"Perseverance","tag":"a","className":"rw-text","localId":"gsbp-876a78f","href":"#perseverance"} -->
<a class="rw-text" href="#perseverance">Perseverance</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-f55a5e4","type":"inner","className":"rw-word-item","localId":"gsbp-f55a5e4"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-504125a","type":"empty","className":"rw-dot","localId":"gsbp-504125a"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-87caa11","textContent":"Determination","tag":"a","className":"rw-text","localId":"gsbp-87caa11","href":"#determination"} -->
<a class="rw-text" href="#determination">Determination</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-811af5f","type":"inner","className":"rw-word-item","localId":"gsbp-811af5f"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-3bf01a3","type":"empty","className":"rw-dot","localId":"gsbp-3bf01a3"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-0d3839a","textContent":"Consistency","tag":"a","className":"rw-text","localId":"gsbp-0d3839a","href":"#consistency"} -->
<a class="rw-text" href="#consistency">Consistency</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-ef393b8","type":"inner","className":"rw-word-item","localId":"gsbp-ef393b8"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-6928d5b","type":"empty","className":"rw-dot","localId":"gsbp-6928d5b"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-c291319","textContent":"Adaptability","tag":"a","className":"rw-text","localId":"gsbp-c291319","href":"#adaptability"} -->
<a class="rw-text" href="#adaptability">Adaptability</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-4a892e1","type":"inner","className":"rw-word-item","localId":"gsbp-4a892e1"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-9c59bf1","type":"empty","className":"rw-dot","localId":"gsbp-9c59bf1"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-7753ed5","textContent":"Accountability","tag":"a","className":"rw-text","localId":"gsbp-7753ed5","href":"#accountability"} -->
<a class="rw-text" href="#accountability">Accountability</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-ddc1d11","type":"inner","className":"rw-word-item","localId":"gsbp-ddc1d11"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-070bb46","type":"empty","className":"rw-dot","localId":"gsbp-070bb46"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-596d7b8","textContent":"Persistence","tag":"a","className":"rw-text","localId":"gsbp-596d7b8","href":"#persistence"} -->
<a class="rw-text" href="#persistence">Persistence</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-285c864","type":"inner","className":"rw-word-item","localId":"gsbp-285c864"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-66023c2","type":"empty","className":"rw-dot","localId":"gsbp-66023c2"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-65f5af5","textContent":"Dedication","tag":"a","className":"rw-text","localId":"gsbp-65f5af5","href":"#dedication"} -->
<a class="rw-text" href="#dedication">Dedication</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-a2d93c1","type":"inner","className":"rw-word-item","localId":"gsbp-a2d93c1"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-7608802","type":"empty","className":"rw-dot","localId":"gsbp-7608802"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-8619dae","textContent":"Self-control","tag":"a","className":"rw-text","localId":"gsbp-8619dae","href":"#self-control"} -->
<a class="rw-text" href="#self-control">Self-control</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-9395657","type":"inner","className":"rw-word-item","localId":"gsbp-9395657"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-29cd96c","type":"empty","className":"rw-dot","localId":"gsbp-29cd96c"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-322c4d3","textContent":"Confidence","tag":"a","className":"rw-text","localId":"gsbp-322c4d3","href":"#confidence"} -->
<a class="rw-text" href="#confidence">Confidence</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-e094628","type":"inner","className":"rw-word-item","localId":"gsbp-e094628"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-a5fd6d2","type":"empty","className":"rw-dot","localId":"gsbp-a5fd6d2"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-46280cb","textContent":"Productivity","tag":"a","className":"rw-text","localId":"gsbp-46280cb","href":"#productivity"} -->
<a class="rw-text" href="#productivity">Productivity</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-8f26147","type":"inner","className":"rw-word-item","localId":"gsbp-8f26147"} -->
<div class="rw-word-item"><!-- wp:greenshift-blocks/element {"id":"gsbp-5cd0001","type":"empty","className":"rw-dot","localId":"gsbp-5cd0001"} -->
<div class="rw-dot"></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-2b9dd62","textContent":"Resilience","tag":"a","className":"rw-text","localId":"gsbp-2b9dd62","href":"#resilience"} -->
<a class="rw-text" href="#resilience">Resilience</a>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-02b6dc2","type":"empty","className":"rw-scroll-spacer","localId":"gsbp-02b6dc2"} -->
<div class="rw-scroll-spacer"></div>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element --></div>
<!-- /wp:greenshift-blocks/element --></section>
<!-- /wp:greenshift-blocks/element -->

<!-- wp:greenshift-blocks/element {"id":"gsbp-fa482a6","dynamicGClasses":[{"value":"rw-scroll-spacer","type":"local","label":"rw-scroll-spacer","localed":false,"css":".rw-scroll-spacer{width: 1px;\n        position: absolute;\n        top: 0;\n        left: 0;\n        pointer-events: none;\n        z-index: -1;}","attributes":{"styleAttributes":{"width":["1px"],"position":["absolute"],"top":["0"],"left":["0"],"pointerEvents":["none"],"zIndex":["-1"]}},"originalID":"gsbp-fa482a6","originalBlock":"greenshift-blocks/element","selectors":[]},{"value":"rw-wheel-container","type":"local","label":"rw-wheel-container","localed":false,"css":".rw-wheel-container{position:sticky;top:0;left:0;width:100vw;height:90vh;display:flex;align-items:center;padding-left:6rem;box-sizing:border-box;overflow:hidden;pointer-events:none;z-index:10;}.rw-wheel-container{user-select:none}@media (min-width: 768px){.rw-wheel-container{padding-left: 10rem;}}","attributes":{"styleAttributes":{"position":["sticky"],"top":["0"],"left":["0"],"width":["100vw"],"height":["90vh"],"display":["flex"],"alignItems":["center"],"paddingLeft":["6rem"],"boxSizing":["border-box"],"overflow":["hidden"],"pointerEvents":["none"],"zIndex":["10"],"customCSS_Extra":"{CURRENT}{user-select:none}@media (min-width: 768px){.rw-wheel-container{padding-left: 10rem;}}"}},"originalID":"gsbp-fa482a6","originalBlock":"greenshift-blocks/element","selectors":[]},{"value":"rw-wheels-wrapper","type":"local","label":"rw-wheels-wrapper","localed":false,"css":".rw-wheels-wrapper{position: relative;\n        width: 0;\n        height: 0;}","attributes":{"styleAttributes":{"position":["relative"],"width":["0"],"height":["0"]}},"originalID":"gsbp-fa482a6","originalBlock":"greenshift-blocks/element","selectors":[]},{"value":"rw-word-item","type":"local","label":"rw-word-item","localed":false,"css":".rw-word-item{position: absolute;\n        top: 0;\n        left: 0;\n        display: flex;\n        align-items: center;\n        transform-origin: left center; \n        height: 80px;\n        margin-top: -40px;\n        will-change: transform, opacity, visibility;\n        pointer-events: auto; \n        touch-action: pan-y;}","attributes":{"styleAttributes":{"position":["absolute"],"top":["0"],"left":["0"],"display":["flex"],"alignItems":["center"],"transformOrigin":["left center"],"height":["80px"],"marginTop":["-40px"],"pointerEvents":["auto"],"touchAction":["pan-y"],"customCSS_Extra":"{CURRENT}{will-change:transform, opacity, visibility}"}},"originalID":"gsbp-fa482a6","originalBlock":"greenshift-blocks/element","selectors":[{"value":":nth-child(1)","attributes":{"styleAttributes":{"transform":["translate3d(-34.56px, -273.56px, 0) rotate(-14.4deg)"],"zIndex":["96"]}},"css":".rw-word-item:nth-child(1){transform: translate3d(-34.56px, -273.56px, 0) rotate(-14.4deg); z-index: 96;}"},{"value":":nth-child(2)","attributes":{"styleAttributes":{"transform":["translate3d(-19.49px, -206.12px, 0) rotate(-10.8deg)"],"zIndex":["97"]}},"css":".rw-word-item:nth-child(2){transform: translate3d(-19.49px, -206.12px, 0) rotate(-10.8deg); z-index: 97;}"},{"value":":nth-child(3)","attributes":{"styleAttributes":{"transform":["translate3d(-8.67px, -137.87px, 0) rotate(-7.2deg)"],"zIndex":["98"]}},"css":".rw-word-item:nth-child(3){transform: translate3d(-8.67px, -137.87px, 0) rotate(-7.2deg); z-index: 98;}"},{"value":":nth-child(4)","attributes":{"styleAttributes":{"transform":["translate3d(-2.17px, -69.07px, 0) rotate(-3.6deg)"],"zIndex":["99"]}},"css":".rw-word-item:nth-child(4){transform: translate3d(-2.17px, -69.07px, 0) rotate(-3.6deg); z-index: 99;}"},{"value":":nth-child(5)","attributes":{"styleAttributes":{"transform":["translate3d(0px, 0px, 0) rotate(0deg)"],"zIndex":["100"]}},"css":".rw-word-item:nth-child(5){transform: translate3d(0px, 0px, 0) rotate(0deg); z-index: 100;}"},{"value":":nth-child(5) .rw-dot","attributes":{"styleAttributes":{"transform":["scale(1)"],"opacity":["1"]}},"css":".rw-word-item:nth-child(5) .rw-dot{transform: scale(1); opacity: 1;}"},{"value":":nth-child(5) .rw-text","attributes":{"styleAttributes":{"transform":["translate3d(20px, 0, 0)"],"color":["rgb(255, 255, 255)"],"opacity":["1"]}},"css":".rw-word-item:nth-child(5) .rw-text{transform: translate3d(20px, 0, 0); color: rgb(255, 255, 255); opacity: 1;}"},{"value":":nth-child(6)","attributes":{"styleAttributes":{"transform":["translate3d(-2.17px, 69.07px, 0) rotate(3.6deg)"],"zIndex":["99"]}},"css":".rw-word-item:nth-child(6){transform: translate3d(-2.17px, 69.07px, 0) rotate(3.6deg); z-index: 99;}"},{"value":":nth-child(7)","attributes":{"styleAttributes":{"transform":["translate3d(-8.67px, 137.87px, 0) rotate(7.2deg)"],"zIndex":["98"]}},"css":".rw-word-item:nth-child(7){transform: translate3d(-8.67px, 137.87px, 0) rotate(7.2deg); z-index: 98;}"},{"value":":nth-child(8)","attributes":{"styleAttributes":{"transform":["translate3d(-19.49px, 206.12px, 0) rotate(10.8deg)"],"zIndex":["97"]}},"css":".rw-word-item:nth-child(8){transform: translate3d(-19.49px, 206.12px, 0) rotate(10.8deg); z-index: 97;}"},{"value":":nth-child(9)","attributes":{"styleAttributes":{"transform":["translate3d(-34.56px, 273.56px, 0) rotate(14.4deg)"],"zIndex":["96"]}},"css":".rw-word-item:nth-child(9){transform: translate3d(-34.56px, 273.56px, 0) rotate(14.4deg); z-index: 96;}"},{"value":":nth-child(10)","attributes":{"styleAttributes":{"transform":["translate3d(-53.84px, 339.91px, 0) rotate(18.0deg)"],"zIndex":["95"]}},"css":".rw-word-item:nth-child(10){transform: translate3d(-53.84px, 339.91px, 0) rotate(18.0deg); z-index: 95;}"},{"value":":nth-child(11)","attributes":{"styleAttributes":{"transform":["translate3d(-77.25px, 404.93px, 0) rotate(21.6deg)"],"zIndex":["94"]}},"css":".rw-word-item:nth-child(11){transform: translate3d(-77.25px, 404.93px, 0) rotate(21.6deg); z-index: 94;}"},{"value":":nth-child(12)","attributes":{"styleAttributes":{"transform":["translate3d(-53.84px, -339.91px, 0) rotate(-18.0deg)"],"zIndex":["95"]}},"css":".rw-word-item:nth-child(12){transform: translate3d(-53.84px, -339.91px, 0) rotate(-18.0deg); z-index: 95;}"}]},{"value":"rw-dot","type":"local","label":"rw-dot","localed":false,"css":".rw-dot{width: 0.75rem;\n        height: 0.75rem;\n        background-color: white;\n        border-radius: 50%;\n        position: absolute;\n        left: -1.25rem; \n        transform-origin: center center;\n        \n        transform: scale(0);\n        opacity: 0;\n        will-change: transform, opacity;}","attributes":{"styleAttributes":{"width":["0.75rem"],"height":["0.75rem"],"backgroundColor":["white"],"borderRadius":["50%"],"position":["absolute"],"left":["-1.25rem"],"transformOrigin":["center center"],"transform":["scale(0)"],"opacity":["0"],"customCSS_Extra":"{CURRENT}{will-change:transform, opacity}"}},"originalID":"gsbp-fa482a6","originalBlock":"greenshift-blocks/element","selectors":[]},{"value":"rw-text","type":"local","label":"rw-text","localed":false,"css":".rw-text{font-size: 3rem;\n        font-weight: 700;\n        white-space: nowrap;\n        text-decoration: none; \n        cursor: pointer;\n        will-change: transform, color, opacity;\n        touch-action: pan-y; \n        \n        \n        color: rgb(120, 120, 120);\n        opacity: 0.6;\n        transform: translate3d(0,0,0);}@media (min-width: 768px){.rw-text{font-size: 3.75rem;}}","attributes":{"styleAttributes":{"fontSize":["3rem"],"fontWeight":["700"],"textDecoration":["none"],"cursor":["pointer"],"touchAction":["pan-y"],"color":["rgb(120, 120, 120)"],"opacity":["0.6"],"transform":["translate3d(0,0,0)"],"customCSS_Extra":"{CURRENT}{white-space:nowrap;will-change:transform, color, opacity}@media (min-width: 768px){.rw-text{font-size: 3.75rem;}}"}},"originalID":"gsbp-fa482a6","originalBlock":"greenshift-blocks/element","selectors":[]}],"metadata":{"name":"Controller for Wheel Navigation"},"type":"no","className":"rw-scroll-spacer rw-wheel-container rw-wheels-wrapper rw-word-item rw-dot rw-text","localId":"gsbp-fa482a6","isVariation":"stylemanager","customCss":"body{background-color: #000000;\n        font-family: 'Inter', sans-serif;\n        margin: 0;\n        height: 100vh;\n        overflow: hidden;}#rw-view-container{position: relative;\n        width: 100vw;\n        height: 100vh;\n        overflow-y: auto; \n        overflow-x: hidden;\n        \n        -ms-overflow-style: none;\n        scrollbar-width: none;}#rw-view-container::-webkit-scrollbar{display: none;}","customJs":"const CONFIGWHEELGS = {\n        radius: 1100,          \n        visibleAngle: 3.6,\n        scrollSensitivity: 150, // Pixels per item step\n        baseIndex: 4,           // Start at this index\n        scrollSteps: 20         // Total number of steps/items to scroll through\n      };\n\n      // State\n      let state = {\n        progress: CONFIGWHEELGS.baseIndex,\n        targetProgress: CONFIGWHEELGS.baseIndex\n      };\n\n      let scrollTimeout;\n      let snapRafId = null;\n\n      // Select Container\n      const scrollContainer = document.getElementById('rw-view-container');\n      const scrollSpacer = document.querySelector('.rw-scroll-spacer');\n\n      // Update Spacer Height to ensure perfect snapping at the end\n      function updateLayout() {\n        // totalScrollableDistance = numSteps * sensitivity\n        // spacerHeight = totalScrollableDistance + windowHeight\n        // This ensures maxScrollTop = totalScrollableDistance, which is a multiple of sensitivity.\n        const totalDistance = CONFIGWHEELGS.scrollSteps * CONFIGWHEELGS.scrollSensitivity;\n        scrollSpacer.style.height = `${totalDistance + window.innerHeight}px`;\n      }\n      \n      window.addEventListener('resize', updateLayout);\n      updateLayout();\n\n      // Cache DOM elements\n      const itemElements = document.querySelectorAll('.rw-word-item');\n      const items = Array.from(itemElements).map(el =\u003e ({\n        element: el,\n        dot: el.querySelector('.rw-dot'),\n        text: el.querySelector('.rw-text')\n      }));\n\n      const total = items.length;\n      const angleStep = CONFIGWHEELGS.visibleAngle * (Math.PI / 180);\n\n      // \u002d\u002d- Core Render Logic \u002d\u002d-\n      function render() {\n        const currentProgress = state.progress;\n\n        items.forEach((itemObj, i) =\u003e {\n          // Calculate cyclic distance\n          let diff = (i - currentProgress) % total;\n          \n          // Normalize to -total/2 to +total/2 (Loop logic)\n          if (diff \u003c -total / 2) diff += total;\n          if (diff \u003e total / 2) diff -= total;\n\n          const absDiff = Math.abs(diff);\n\n          // Visibility optimization\n          if (absDiff \u003e 8) {\n            itemObj.element.style.visibility = 'hidden';\n            return;\n          }\n          itemObj.element.style.visibility = 'visible';\n\n          // Math for circular position (Rays from center)\n          const angle = diff * angleStep;\n          const R = CONFIGWHEELGS.radius;\n          \n          // Position calculation\n          const x = R * Math.cos(angle) - R;\n          const y = R * Math.sin(angle);\n          const rotation = angle * (180 / Math.PI);\n          \n          // Activity calculation (0 to 1, where 1 is center/active)\n          const activity = Math.max(0, 1 - absDiff);\n\n          // Apply Styles manually (High performance)\n          \n          // 1. Container Transform\n          itemObj.element.style.transform = `translate3d(${x}px, ${y}px, 0) rotate(${rotation}deg)`;\n          itemObj.element.style.zIndex = Math.round(100 - absDiff);\n\n          // 2. Dot Animation\n          itemObj.dot.style.transform = `scale(${activity})`;\n          itemObj.dot.style.opacity = activity;\n\n          // 3. Text Animation\n          const slideX = activity * 20;\n          // Color interpolation\n          const greyVal = 120 + (activity * 135);\n          const color = `rgb(${greyVal}, ${greyVal}, ${greyVal})`;\n          const opacity = 0.6 + (0.4 * activity);\n\n          itemObj.text.style.transform = `translate3d(${slideX}px, 0, 0)`;\n          itemObj.text.style.color = color;\n          itemObj.text.style.opacity = opacity;\n        });\n      }\n\n      // \u002d\u002d- Animation Loop \u002d\u002d-\n      function loop() {\n        // Linear Interpolation (Lerp) for smooth follow\n        const diff = state.targetProgress - state.progress;\n        \n        // If difference is very small, snap to target to save calculation\n        if (Math.abs(diff) \u003c 0.001) {\n          state.progress = state.targetProgress;\n        } else {\n          state.progress += diff * 0.08;\n        }\n\n        render();\n        requestAnimationFrame(loop);\n      }\n\n      // Start Loop\n      loop();\n\n\n      // \u002d\u002d- Scroll Handling \u0026 Snapping \u002d\u002d-\n\n      // Stop snap animation if user interacts\n      const cancelSnap = () =\u003e {\n        if (snapRafId !== null) {\n            cancelAnimationFrame(snapRafId);\n            snapRafId = null;\n        }\n      };\n\n      // Vanilla JS Spring Animation Helper\n      function snapTo(targetPos) {\n        cancelSnap();\n        \n        // Physics constants\n        const stiffness = 0.05; // Lower = softer spring\n        const damping = 0.86;   // Lower = more bounciness (0-1)\n        \n        let currentPos = scrollContainer.scrollTop;\n        let velocity = 0;\n\n        function step() {\n            const diff = targetPos - currentPos;\n            \n            // Stop condition\n            if (Math.abs(diff) \u003c 0.5 \u0026\u0026 Math.abs(velocity) \u003c 0.1) {\n                scrollContainer.scrollTop = targetPos;\n                snapRafId = null;\n                return;\n            }\n\n            // Spring physics\n            const force = diff * stiffness;\n            velocity += force;\n            velocity *= damping;\n            currentPos += velocity;\n\n            scrollContainer.scrollTop = currentPos;\n            snapRafId = requestAnimationFrame(step);\n        }\n\n        snapRafId = requestAnimationFrame(step);\n      }\n      \n      // Listeners for manual interruption - attach to global window to catch everything\n      window.addEventListener(\u0022wheel\u0022, cancelSnap, { passive: true });\n      window.addEventListener(\u0022touchstart\u0022, cancelSnap, { passive: true });\n      window.addEventListener(\u0022keydown\u0022, cancelSnap, { passive: true });\n      window.addEventListener(\u0022mousedown\u0022, cancelSnap, { passive: true });\n\n      // Main Scroll Listener on Container\n      scrollContainer.addEventListener('scroll', () =\u003e {\n        const scrollY = scrollContainer.scrollTop;\n        \n        // Update target based on container scroll position\n        state.targetProgress = CONFIGWHEELGS.baseIndex + (scrollY / CONFIGWHEELGS.scrollSensitivity);\n        \n        // Debounce Logic\n        clearTimeout(scrollTimeout);\n        \n        // Set debounce timer to detect when scroll stops\n        scrollTimeout = setTimeout(() =\u003e {\n          const currentScrollY = scrollContainer.scrollTop;\n          const nearestIndex = Math.round(currentScrollY / CONFIGWHEELGS.scrollSensitivity);\n          let snapPosition = nearestIndex * CONFIGWHEELGS.scrollSensitivity;\n\n          // Check Bounds (Prevent snapping beyond limits which causes bouncing)\n          const maxScroll = scrollContainer.scrollHeight - scrollContainer.clientHeight;\n          if (snapPosition \u003e maxScroll) snapPosition = maxScroll;\n          if (snapPosition \u003c 0) snapPosition = 0;\n\n          // Only snap if we are not already close enough (threshold 2px)\n          if (Math.abs(currentScrollY - snapPosition) \u003e 2) {\n            snapTo(snapPosition);\n          }\n        }, 150); // 150ms pause before snapping\n      });","customJsEnabled":true} -->
<div class="rw-scroll-spacer rw-wheel-container rw-wheels-wrapper rw-word-item rw-dot rw-text"></div>
<!-- /wp:greenshift-blocks/element -->

Wheel Navigation