<!-- 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 -->