{"version":3,"file":"shared-lib.MmYLcWra.mjs","names":["el","p","React.useRef","React.useState","store","pe"],"sources":["https:/framerusercontent.com/modules/1GGh4v1MYKlsl6qVZlxM/1Fy8AqDj2dherZACpOi7/PageChoreographer.js","https:/framerusercontent.com/modules/sNuqyzUPh51pCaaudDab/ORnRqnbUCQYyEd49thE3/siteMetadata.js"],"sourcesContent":["// ─── Page Choreographer ──────────────────────────────────────────────────────\n// The ONLY component you need. Drop one per section/group of elements.\n// The first instance automatically sets up:\n//   • The shared animation store\n//   • Link click interception (exit animations before navigation)\n//   • Enter animation playback on page load\n//\n// Each instance has its OWN animation settings (duration, easing, stagger, etc.)\n// so different sections can have completely different effects.\n//\n// Presets provide quick common effects. Choose \"Custom\" for full control over\n// opacity, offset X/Y, scale, rotate, and blur — matching Framer's native\n// appear effect level of control.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";var STORE_KEY=\"__pageChoreographerStore_v3\";// ─── Easing presets ──────────────────────────────────────────────────────────\nvar EASING_MAP={smooth:[.4,0,.2,1],snappy:[.16,1,.3,1],dramatic:[.76,0,.24,1],gentle:[.25,.1,.25,1],bounce:[.34,1.56,.64,1],linear:[0,0,1,1]};function easingToCss(e){return\"cubic-bezier(\"+e[0]+\",\"+e[1]+\",\"+e[2]+\",\"+e[3]+\")\";}// ─── Helpers ────────────────────────────────────────────────────────────────\nvar maskDirectionPool=[\"left\",\"right\",\"up\",\"down\",\"topLeft\",\"topRight\",\"bottomLeft\",\"bottomRight\"];// WAAPI keyframes use camelCase (clipPath, transformOrigin) but\n// CSSStyleDeclaration.setProperty/removeProperty need kebab-case\n// (clip-path, transform-origin).  Without this conversion, bake/unbake\n// silently fails for hyphenated properties, leaving no inline clip-path\n// after WAAPI cancel — which triggers CSS transitions on re-entry.\nfunction camelToKebab(s){return s.replace(/[A-Z]/g,function(m){return\"-\"+m.toLowerCase();});}function resolveMaskDirection(dir){if(dir===\"random\"){return maskDirectionPool[Math.floor(Math.random()*maskDirectionPool.length)];}return dir;}// ─── Keyframe builders ───────────────────────────────────────────────────────\nfunction buildEnterKeyframes(t){if(t.enterPreset===\"custom\"){var from={opacity:String(t.enterOpacity)};var to={opacity:\"1\"};var has3D=t.enterRotateX!==0||t.enterRotateY!==0;var persp=has3D&&t.enterPerspective>0?\"perspective(\"+t.enterPerspective+\"px) \":\"\";from.transform=persp+\"translateX(\"+t.enterOffsetX+\"px) \"+\"translateY(\"+t.enterOffsetY+\"px) \"+\"scale(\"+t.enterScale+\") \"+\"rotateX(\"+t.enterRotateX+\"deg) \"+\"rotateY(\"+t.enterRotateY+\"deg) \"+\"rotateZ(\"+t.enterRotateZ+\"deg)\";to.transform=persp+\"translateX(0px) translateY(0px) scale(1) \"+\"rotateX(0deg) rotateY(0deg) rotateZ(0deg)\";if(t.enterBlur>0){from.filter=\"blur(\"+t.enterBlur+\"px)\";to.filter=\"blur(0px)\";}return{from:from,to:to};}var d=t.distance;switch(t.enterPreset){case\"fadeDown\":return{from:{opacity:\"0\",transform:\"translateY(\"+-d+\"px)\"},to:{opacity:\"1\",transform:\"translateY(0px)\"}};case\"fadeLeft\":return{from:{opacity:\"0\",transform:\"translateX(\"+d+\"px)\"},to:{opacity:\"1\",transform:\"translateX(0px)\"}};case\"fadeRight\":return{from:{opacity:\"0\",transform:\"translateX(\"+-d+\"px)\"},to:{opacity:\"1\",transform:\"translateX(0px)\"}};case\"scaleIn\":{var sf=t.scaleFrom;var so=t.scaleOpacity!=null?t.scaleOpacity:0;var sd=t.enterScaleDirection||\"center\";// transform-origin maps direction to the edge/corner the scale originates FROM\nvar originMap={center:\"center center\",left:\"left center\",right:\"right center\",up:\"top center\",down:\"bottom center\",topLeft:\"top left\",topRight:\"top right\",bottomLeft:\"bottom left\",bottomRight:\"bottom right\"};var origin=originMap[sd]||\"center center\";var scaleFrom={opacity:String(so),transform:\"scale(\"+sf+\")\",transformOrigin:origin};var scaleTo={opacity:\"1\",transform:\"scale(1)\",transformOrigin:origin};// Optional mask: pair a clip-path reveal with the scale\nvar sMaskDir=resolveMaskDirection(t.enterMaskDirection||\"none\");if(sMaskDir!==\"none\"){var sm=Math.max(0,Math.min(100,100-(t.maskStart||0)));var sMask=\"inset(0 \"+sm+\"% 0 0)\"// default: left\n;switch(sMaskDir){case\"right\":sMask=\"inset(0 0 0 \"+sm+\"%)\";break;case\"up\":sMask=\"inset(0 0 \"+sm+\"% 0)\";break;case\"down\":sMask=\"inset(\"+sm+\"% 0 0 0)\";break;case\"topLeft\":sMask=\"inset(0 \"+sm+\"% \"+sm+\"% 0)\";break;case\"topRight\":sMask=\"inset(0 0 \"+sm+\"% \"+sm+\"%)\";break;case\"bottomLeft\":sMask=\"inset(\"+sm+\"% \"+sm+\"% 0 0)\";break;case\"bottomRight\":sMask=\"inset(\"+sm+\"% 0 0 \"+sm+\"%)\";break;}scaleFrom.clipPath=sMask;scaleTo.clipPath=\"inset(0 0 0 0)\";}// Mask shift: offset the content behind the mask for an\n// asymmetric reveal.  Combines with the scale transform.\nif(t.maskShiftX!==0||t.maskShiftY!==0){scaleFrom.transform=\"scale(\"+sf+\") translateX(\"+t.maskShiftX+\"px) translateY(\"+t.maskShiftY+\"px)\";scaleTo.transform=\"scale(1) translateX(0px) translateY(0px)\";}return{from:scaleFrom,to:scaleTo};}case\"blurIn\":return{from:{opacity:\"0\",filter:\"blur(\"+t.blurAmount+\"px)\"},to:{opacity:\"1\",filter:\"blur(0px)\"}};case\"maskReveal\":{// inset(top right bottom left) — 100% = fully clipped on that edge\nvar s=Math.max(0,Math.min(100,100-(t.maskStart||0)))// remaining mask %\n;var mFrom=\"inset(0 \"+s+\"% 0 0)\"// default: left to right\n;var resolvedMaskDir=resolveMaskDirection(t.enterMaskDirection);switch(resolvedMaskDir){case\"right\":mFrom=\"inset(0 0 0 \"+s+\"%)\";break;case\"up\":mFrom=\"inset(0 0 \"+s+\"% 0)\";break;case\"down\":mFrom=\"inset(\"+s+\"% 0 0 0)\";break;case\"topLeft\":mFrom=\"inset(0 \"+s+\"% \"+s+\"% 0)\";break;case\"topRight\":mFrom=\"inset(0 0 \"+s+\"% \"+s+\"%)\";break;case\"bottomLeft\":mFrom=\"inset(\"+s+\"% \"+s+\"% 0 0)\";break;case\"bottomRight\":mFrom=\"inset(\"+s+\"% 0 0 \"+s+\"%)\";break;}var enterFrom={clipPath:mFrom};var enterTo={clipPath:\"inset(0 0 0 0)\"};if(t.maskOpacity<1){enterFrom.opacity=String(t.maskOpacity);enterTo.opacity=\"1\";}if(t.maskShiftX!==0||t.maskShiftY!==0){enterFrom.transform=\"translateX(\"+t.maskShiftX+\"px) translateY(\"+t.maskShiftY+\"px)\";enterTo.transform=\"translateX(0px) translateY(0px)\";}return{from:enterFrom,to:enterTo};}case\"fadeUp\":default:return{from:{opacity:\"0\",transform:\"translateY(\"+d+\"px)\"},to:{opacity:\"1\",transform:\"translateY(0px)\"}};}}function buildExitKeyframes(t){if(t.exitPreset===\"custom\"){var from={opacity:\"1\"};var to={opacity:String(t.exitOpacity)};var has3D=t.exitRotateX!==0||t.exitRotateY!==0;var persp=has3D&&t.exitPerspective>0?\"perspective(\"+t.exitPerspective+\"px) \":\"\";from.transform=persp+\"translateX(0px) translateY(0px) scale(1) \"+\"rotateX(0deg) rotateY(0deg) rotateZ(0deg)\";to.transform=persp+\"translateX(\"+t.exitOffsetX+\"px) \"+\"translateY(\"+t.exitOffsetY+\"px) \"+\"scale(\"+t.exitScale+\") \"+\"rotateX(\"+t.exitRotateX+\"deg) \"+\"rotateY(\"+t.exitRotateY+\"deg) \"+\"rotateZ(\"+t.exitRotateZ+\"deg)\";if(t.exitBlur>0){from.filter=\"blur(0px)\";to.filter=\"blur(\"+t.exitBlur+\"px)\";}return{from:from,to:to};}var d=t.distance;switch(t.exitPreset){case\"blurLift\":return{from:{opacity:\"1\",transform:\"translateY(0px)\",filter:\"blur(0px)\"},to:{opacity:\"0\",transform:\"translateY(\"+-(d*.5)+\"px)\",filter:\"blur(\"+t.blurAmount+\"px)\"}};case\"scaleFadeGrid\":return{from:{opacity:\"1\",transform:\"scale(1)\"},to:{opacity:\"0\",transform:\"scale(\"+t.scaleFrom+\")\"}};case\"fadeDown\":return{from:{opacity:\"1\",transform:\"translateY(0px)\"},to:{opacity:\"0\",transform:\"translateY(\"+d+\"px)\"}};case\"fadeLeft\":return{from:{opacity:\"1\",transform:\"translateX(0px)\"},to:{opacity:\"0\",transform:\"translateX(\"+-d+\"px)\"}};case\"fadeRight\":return{from:{opacity:\"1\",transform:\"translateX(0px)\"},to:{opacity:\"0\",transform:\"translateX(\"+d+\"px)\"}};case\"maskOut\":{var mTo=\"inset(0 0 0 100%)\"// default: left to right\n;var resolvedExitMaskDir=resolveMaskDirection(t.exitMaskDirection);switch(resolvedExitMaskDir){case\"right\":mTo=\"inset(0 100% 0 0)\";break;case\"up\":mTo=\"inset(100% 0 0 0)\";break;case\"down\":mTo=\"inset(0 0 100% 0)\";break;case\"topLeft\":mTo=\"inset(0 100% 100% 0)\";break;case\"topRight\":mTo=\"inset(0 0 100% 100%)\";break;case\"bottomLeft\":mTo=\"inset(100% 100% 0 0)\";break;case\"bottomRight\":mTo=\"inset(100% 0 0 100%)\";break;}var exitFrom={clipPath:\"inset(0 0 0 0)\"};var exitTo={clipPath:mTo};if(t.maskOpacity<1){exitFrom.opacity=\"1\";exitTo.opacity=String(t.maskOpacity);}if(t.maskShiftX!==0||t.maskShiftY!==0){exitFrom.transform=\"translateX(0px) translateY(0px)\";exitTo.transform=\"translateX(\"+-t.maskShiftX+\"px) translateY(\"+-t.maskShiftY+\"px)\";}return{from:exitFrom,to:exitTo};}case\"scaleOut\":{var soSf=t.scaleFrom;var soSo=t.scaleOpacity!=null?t.scaleOpacity:0;var soSd=t.enterScaleDirection||\"center\";var soOriginMap={center:\"center center\",left:\"left center\",right:\"right center\",up:\"top center\",down:\"bottom center\",topLeft:\"top left\",topRight:\"top right\",bottomLeft:\"bottom left\",bottomRight:\"bottom right\"};var soOrigin=soOriginMap[soSd]||\"center center\";var soFrom={opacity:\"1\",transform:\"scale(1)\",transformOrigin:soOrigin};var soTo={opacity:String(soSo),transform:\"scale(\"+soSf+\")\",transformOrigin:soOrigin};// Optional mask: reverse of scaleIn mask\nvar soMaskDir=resolveMaskDirection(t.enterMaskDirection||\"none\");if(soMaskDir!==\"none\"){var soM=Math.max(0,Math.min(100,100-(t.maskStart||0)));var soMask=\"inset(0 \"+soM+\"% 0 0)\";switch(soMaskDir){case\"right\":soMask=\"inset(0 0 0 \"+soM+\"%)\";break;case\"up\":soMask=\"inset(0 0 \"+soM+\"% 0)\";break;case\"down\":soMask=\"inset(\"+soM+\"% 0 0 0)\";break;case\"topLeft\":soMask=\"inset(0 \"+soM+\"% \"+soM+\"% 0)\";break;case\"topRight\":soMask=\"inset(0 0 \"+soM+\"% \"+soM+\"%)\";break;case\"bottomLeft\":soMask=\"inset(\"+soM+\"% \"+soM+\"% 0 0)\";break;case\"bottomRight\":soMask=\"inset(\"+soM+\"% 0 0 \"+soM+\"%)\";break;}soFrom.clipPath=\"inset(0 0 0 0)\";soTo.clipPath=soMask;}if(t.maskShiftX!==0||t.maskShiftY!==0){soFrom.transform=\"scale(1) translateX(0px) translateY(0px)\";soTo.transform=\"scale(\"+soSf+\") translateX(\"+-t.maskShiftX+\"px) translateY(\"+-t.maskShiftY+\"px)\";}return{from:soFrom,to:soTo};}case\"riseWave\":default:return{from:{opacity:\"1\",transform:\"translateY(0px)\"},to:{opacity:\"0\",transform:\"translateY(\"+-d+\"px)\"}};}}function createStore(){var targets={};var activeAnims=[];var phase=\"idle\";var overlay=null;var linkInterceptionSetup=false;var skipNextClick=false;var exitTimeout=3;// WeakSet tracks DOM elements that have already been enter-animated.\n// React re-renders reuse the same DOM nodes → elements stay in set → skip.\n// Replay/reload/navigation creates fresh DOM nodes → not in set → animate.\nvar animatedElements=typeof WeakSet!==\"undefined\"?new WeakSet:null;// Map groupId → parent elements to dispatch choreo-done on\nvar groupParents={};function registerGroupParent(groupId,el){if(!groupParents[groupId])groupParents[groupId]=[];if(groupParents[groupId].indexOf(el)===-1){groupParents[groupId].push(el);}}function unregisterGroupParent(groupId,el){if(!groupParents[groupId])return;var idx=groupParents[groupId].indexOf(el);if(idx!==-1)groupParents[groupId].splice(idx,1);}function getGroupParents(groupId){return groupParents[groupId]||null;}function registerTarget(t){targets[t.id]=t;}function unregisterTarget(id){delete targets[id];}function getTargetCount(){return Object.keys(targets).length;}function getAllTargets(){var result=[];for(var id in targets){if(targets[id].ref.current)result.push(targets[id]);}return result;}function sortTargets(list,direction){var sorted=list.slice();if(direction===\"random\"){// Fisher-Yates shuffle for uniform random order\nfor(var si=sorted.length-1;si>0;si--){var sj=Math.floor(Math.random()*(si+1));var tmp=sorted[si];sorted[si]=sorted[sj];sorted[sj]=tmp;}return sorted;}sorted.sort(function(a,b){if(a.sortPriority!==b.sortPriority)return a.sortPriority-b.sortPriority;var elA=a.ref.current;var elB=b.ref.current;if(!elA||!elB)return 0;var rA=elA.getBoundingClientRect();var rB=elB.getBoundingClientRect();var cxA=rA.left+rA.width/2;var cyA=rA.top+rA.height/2;var cxB=rB.left+rB.width/2;var cyB=rB.top+rB.height/2;switch(direction){case\"rightToLeft\":return cxB-cxA;case\"topToBottom\":return cyA-cyB;case\"bottomToTop\":return cyB-cyA;case\"rowMajor\":{var rowA=Math.round(rA.top/80);var rowB=Math.round(rB.top/80);if(rowA!==rowB)return rowA-rowB;return cxA-cxB;}case\"columnMajor\":{var colA=Math.round(rA.left/200);var colB=Math.round(rB.left/200);if(colA!==colB)return colA-colB;return cyA-cyB;}case\"leftToRight\":default:return cxA-cxB;}});return sorted;}function cancelActive(){for(var i=0;i<activeAnims.length;i++){try{activeAnims[i].cancel();}catch(e){}}activeAnims=[];}function lockInteractions(){if(overlay)return;overlay=document.createElement(\"div\");overlay.style.cssText=\"position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999;cursor:wait;\";document.body.appendChild(overlay);}function unlockInteractions(){if(overlay){overlay.remove();overlay=null;}}function groupByGroupId(list){var groups={};for(var i=0;i<list.length;i++){var t=list[i];if(!groups[t.groupId])groups[t.groupId]=[];groups[t.groupId].push(t);}return groups;}// Sort group IDs by their priority (ascending), so lower priority\n// numbers animate first. Groups with the same priority play together.\nfunction getSortedGroupIds(groups){var gids=Object.keys(groups);gids.sort(function(a,b){return groups[a][0].sortPriority-groups[b][0].sortPriority;});return gids;}function playEnter(){var reduced=window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;var mobile=window.innerWidth<768;// Only auto-play \"onLoad\" targets — \"inView\" targets are\n// triggered independently by IntersectionObserver.\n// Skip elements already animated (WeakSet tracks DOM nodes).\nvar eligible=getAllTargets().filter(function(t){var el=t.ref.current;return t.trigger===\"onLoad\"&&t.enterEnabled&&(t.mobileEnabled||!mobile)&&el&&!(animatedElements&&animatedElements.has(el));});if(eligible.length===0)return Promise.resolve();phase=\"entering\";var groups=groupByGroupId(eligible);var sortedGids=getSortedGroupIds(groups);var promises=[];var groupOffset=0;var prevPriority=null;for(var gi=0;gi<sortedGids.length;gi++){var gid=sortedGids[gi];var group=groups[gid];var currentPriority=group[0].sortPriority;var direction=group[0].staggerDirection;var sorted=sortTargets(group,direction);// Same priority as previous group → no extra offset (play together)\n// Different priority → advance offset so this group starts after the last\nif(prevPriority!==null&&currentPriority!==prevPriority){// groupOffset was already accumulated from previous groups\n}var maxDelayInGroup=0;for(var i=0;i<sorted.length;i++){var target=sorted[i];var el=target.ref.current;if(!el)continue;var kf=reduced?{from:{opacity:\"0\"},to:{opacity:\"1\"}}:buildEnterKeyframes(target);var stagger=reduced?0:target.stagger;var localDelay=stagger*i+target.delayOffset;var delay=localDelay+groupOffset;var dur=reduced?10:target.duration*1e3;if(localDelay>maxDelayInGroup)maxDelayInGroup=localDelay;// Mark element as animated BEFORE starting so re-renders\n// during the animation won't try to animate it again\nif(animatedElements)animatedElements.add(el);// Reveal pre-hidden element and block hover during animation\nel.style.removeProperty(\"visibility\");el.style.pointerEvents=\"none\";try{var anim=el.animate([kf.from,kf.to],{duration:dur,delay:delay*1e3,easing:easingToCss(target.easing),fill:\"both\"});activeAnims.push(anim);promises.push(anim.finished.then(function(a,e){return function(){// Restore pointer events so hover effects work\ne.style.pointerEvents=\"\";try{a.cancel();}catch(ex){}};}(anim,el)));}catch(e){el.style.pointerEvents=\"\";}}// If the NEXT group has a different priority, advance the offset\n// so it starts after this group's last element finishes animating\n// plus the priority gap\nvar nextGid=sortedGids[gi+1];if(nextGid){var nextPriority=groups[nextGid][0].sortPriority;if(nextPriority!==currentPriority){var groupDur=sorted.length>0?sorted[0].duration:.6;var gap=group[0].priorityGap||0;groupOffset+=maxDelayInGroup+groupDur+gap;}}prevPriority=currentPriority;}return Promise.all(promises).then(function(){activeAnims=[];phase=\"done\";});}function playExit(){if(phase===\"exiting\")return Promise.resolve();cancelActive();phase=\"exiting\";// Clear animated tracking so enter animations replay on next page\nanimatedElements=typeof WeakSet!==\"undefined\"?new WeakSet:null;lockInteractions();var reduced=window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;var mobile=window.innerWidth<768;var eligible=getAllTargets().filter(function(t){return t.exitEnabled&&(t.mobileEnabled||!mobile)&&t.ref.current;});var groups=groupByGroupId(eligible);var sortedGids=getSortedGroupIds(groups);var promises=[];var groupOffset=0;var prevPriority=null;for(var gi=0;gi<sortedGids.length;gi++){var gid=sortedGids[gi];var group=groups[gid];var currentPriority=group[0].sortPriority;var direction=group[0].staggerDirection;var sorted=sortTargets(group,direction);var maxDelayInGroup=0;for(var i=0;i<sorted.length;i++){var target=sorted[i];var el=target.ref.current;if(!el)continue;var kf=reduced?{from:{opacity:\"1\"},to:{opacity:\"0\"}}:buildExitKeyframes(target);var stagger=reduced?0:target.stagger;var localDelay=stagger*i+target.delayOffset;var delay=localDelay+groupOffset;if(localDelay>maxDelayInGroup)maxDelayInGroup=localDelay;try{var anim=el.animate([kf.from,kf.to],{duration:reduced?10:target.duration*1e3,delay:delay*1e3,easing:easingToCss(target.easing),fill:\"forwards\"});activeAnims.push(anim);promises.push(anim.finished);}catch(e){}}var nextGid=sortedGids[gi+1];if(nextGid){var nextPriority=groups[nextGid][0].sortPriority;if(nextPriority!==currentPriority){var groupDur=sorted.length>0?sorted[0].duration:.6;var gap=group[0].priorityGap||0;groupOffset+=maxDelayInGroup+groupDur+gap;}}prevPriority=currentPriority;}return Promise.all(promises).then(function(){activeAnims=[];unlockInteractions();phase=\"done\";});}// ─── Reset a group so it can be re-animated (used by viewRepeat) ────────\nfunction resetGroup(groupId){if(!animatedElements)return;var all=getAllTargets();for(var i=0;i<all.length;i++){if(all[i].groupId===groupId&&all[i].ref.current){animatedElements.delete(all[i].ref.current);}}// Cancel any pending batch play for this group so a queued\n// playEnterGroupsBatch doesn't undo the reset's visibility:hidden.\nvar pidx=pendingGroups.indexOf(groupId);if(pidx!==-1)pendingGroups.splice(pidx,1);}// ─── Play enter for inView groups (batched by priority) ─────────────────\nvar pendingGroups=[];var groupBatchTimer=null;function cancelPendingGroup(groupId){var idx=pendingGroups.indexOf(groupId);if(idx!==-1)pendingGroups.splice(idx,1);}function playEnterGroup(groupId){// Collect group IDs that trigger within a short window,\n// then play them all together sorted by priority\nif(pendingGroups.indexOf(groupId)===-1){pendingGroups.push(groupId);}if(groupBatchTimer)clearTimeout(groupBatchTimer);groupBatchTimer=setTimeout(function(){groupBatchTimer=null;var batch=pendingGroups.slice();pendingGroups=[];playEnterGroupsBatch(batch);},80);}function playEnterGroupsBatch(groupIds){var reduced=window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;var mobile=window.innerWidth<768;// Collect eligible targets for all requested groups\nvar allEligible=getAllTargets().filter(function(t){var el=t.ref.current;return groupIds.indexOf(t.groupId)!==-1&&t.enterEnabled&&(t.mobileEnabled||!mobile)&&el&&!(animatedElements&&animatedElements.has(el));});if(allEligible.length===0)return;// Group by groupId, then sort groups by priority\nvar groups=groupByGroupId(allEligible);var sortedGids=getSortedGroupIds(groups);var promises=[];var groupOffset=0;var prevPriority=null;for(var gi=0;gi<sortedGids.length;gi++){var gid=sortedGids[gi];var group=groups[gid];var currentPriority=group[0].sortPriority;var direction=group[0].staggerDirection;var sorted=sortTargets(group,direction);var maxDelayInGroup=0;for(var i=0;i<sorted.length;i++){var target=sorted[i];var el=target.ref.current;if(!el)continue;if(animatedElements)animatedElements.add(el);el.style.removeProperty(\"visibility\");el.style.pointerEvents=\"none\";var kf=reduced?{from:{opacity:\"0\"},to:{opacity:\"1\"}}:buildEnterKeyframes(target);var stagger=reduced?0:target.stagger;var localDelay=stagger*i+target.delayOffset;var delay=localDelay+groupOffset;var dur=reduced?10:target.duration*1e3;if(localDelay>maxDelayInGroup)maxDelayInGroup=localDelay;try{var anim=el.animate([kf.from,kf.to],{duration:dur,delay:delay*1e3,easing:easingToCss(target.easing),fill:\"both\"});activeAnims.push(anim);promises.push(anim.finished.then(function(a,e){return function(){e.style.pointerEvents=\"\";try{a.cancel();}catch(ex){}};}(anim,el)));}catch(e){el.style.pointerEvents=\"\";}}// Advance offset for next priority level\nvar nextGid=sortedGids[gi+1];if(nextGid){var nextPriority=groups[nextGid][0].sortPriority;if(nextPriority!==currentPriority){var groupDur=sorted.length>0?sorted[0].duration:.6;var gap=group[0].priorityGap||0;groupOffset+=maxDelayInGroup+groupDur+gap;}}prevPriority=currentPriority;}Promise.all(promises).then(function(){// Notify child PCs that these groups have finished animating.\n// Dispatch on each animated target element...\nfor(var di=0;di<sortedGids.length;di++){var dGroup=groups[sortedGids[di]];for(var dj=0;dj<dGroup.length;dj++){var dEl=dGroup[dj].ref.current;if(dEl){dEl.dispatchEvent(new CustomEvent(\"choreo-done\",{bubbles:true,detail:{groupId:sortedGids[di]}}));}}// ...AND on each registered group parent container.\n// This ensures child PCs in sibling stacks receive the\n// event even when the animated targets are in a different\n// branch of the DOM tree.\nvar gps=groupParents[sortedGids[di]];if(gps){for(var gpi=0;gpi<gps.length;gpi++){gps[gpi].dispatchEvent(new CustomEvent(\"choreo-done\",{bubbles:true,detail:{groupId:sortedGids[di]}}));}}}});return Promise.all(promises);}// ─── Link interception ───────────────────────────────────────────────────\nfunction setupLinkInterception(timeout){exitTimeout=timeout;if(linkInterceptionSetup)return;linkInterceptionSetup=true;function findAnchor(target){var node=target;while(node&&node!==document.body){if(node.tagName===\"A\")return node;node=node.parentElement;}return null;}function shouldIntercept(anchor){if(!anchor.href)return false;if(anchor.hasAttribute(\"data-no-exit\"))return false;if(anchor.target===\"_blank\")return false;try{var url=new URL(anchor.href,window.location.origin);if(url.origin!==window.location.origin)return false;if(url.pathname===window.location.pathname&&url.hash)return false;}catch(e){return false;}return true;}function navigateViaAnchor(anchor){skipNextClick=true;anchor.click();}document.addEventListener(\"click\",function(e){if(skipNextClick){skipNextClick=false;return;}if(e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;var anchor=findAnchor(e.target);if(!anchor)return;if(!shouldIntercept(anchor))return;if(getTargetCount()===0)return;e.preventDefault();e.stopPropagation();Promise.race([playExit(),new Promise(function(resolve){setTimeout(resolve,exitTimeout*1e3);})]).then(function(){navigateViaAnchor(anchor);}).catch(function(){navigateViaAnchor(anchor);});},true);}// ─── Auto enter ──────────────────────────────────────────────────────────\nvar scheduleTimer=null;function scheduleEnter(delay){// Debounce: each call resets the timer so we wait for all\n// components to finish registering before playing.\n// The WeakSet inside playEnter handles idempotency —\n// already-animated DOM elements are skipped automatically.\nif(scheduleTimer)clearTimeout(scheduleTimer);scheduleTimer=setTimeout(function(){scheduleTimer=null;var delayMs=delay*1e3;if(delayMs>0){setTimeout(function(){playEnter();},delayMs);}else{playEnter();}},150);}return{registerTarget:registerTarget,unregisterTarget:unregisterTarget,registerGroupParent:registerGroupParent,unregisterGroupParent:unregisterGroupParent,getGroupParents:getGroupParents,getTargetCount:getTargetCount,getAllTargets:getAllTargets,sortTargets:sortTargets,playEnter:playEnter,playEnterGroup:playEnterGroup,resetGroup:resetGroup,cancelPendingGroup:cancelPendingGroup,playExit:playExit,cancelActive:cancelActive,setupLinkInterception:setupLinkInterception,scheduleEnter:scheduleEnter};}function getStore(){if(typeof window!==\"undefined\"){if(!window[STORE_KEY]){window[STORE_KEY]=createStore();}var s=window[STORE_KEY];// Patch stores created by older code versions that lack group parent methods\nif(s&&!s.cancelPendingGroup){s.cancelPendingGroup=function(){};}if(s&&!s.registerGroupParent){var gp={};s.registerGroupParent=function(groupId,el){if(!gp[groupId])gp[groupId]=[];if(gp[groupId].indexOf(el)===-1)gp[groupId].push(el);};s.unregisterGroupParent=function(groupId,el){if(!gp[groupId])return;var idx=gp[groupId].indexOf(el);if(idx!==-1)gp[groupId].splice(idx,1);};s.getGroupParents=function(groupId){return gp[groupId]||null;};}return s;}return null;}// ─── DOM scanning ────────────────────────────────────────────────────────────\nfunction findRealParent(marker){var node=marker.parentElement;var maxDepth=5;while(node&&maxDepth>0){var count=0;for(var i=0;i<node.children.length;i++)count++;if(count>1)return node;node=node.parentElement;maxDepth--;}return node;}// Walk up from an element to find the section-level ancestor.\n// Strategy:\n//  1. Prefer an ancestor with data-framer-name (explicit Framer section)\n//  2. Fall back to the \"child of a parent with ≥3 siblings\" heuristic\n//  3. Reject candidates taller than 2× viewport (likely the page container)\n//  4. Final fallback: return the starting element\nfunction findSection(el){var vh=window.innerHeight;var node=el;var heuristicCandidate=null;var namedCandidate=null;while(node.parentElement){// Framer sections have data-framer-name — good signal, but\n// reject page-level containers that are much taller than the\n// viewport (e.g. \"main\" wrapping the entire page).\nif(node.getAttribute(\"data-framer-name\")!=null&&!namedCandidate){if(node.offsetHeight<=vh*2.5){namedCandidate=node;}// If too tall, skip — keep looking for a smaller named ancestor\n}var siblingCount=node.parentElement.children.length;if(siblingCount>=3&&!heuristicCandidate){// Only accept if the candidate isn't the entire page\nif(node.offsetHeight<vh*2){heuristicCandidate=node;}}node=node.parentElement;}// Prefer named section, fall back to heuristic, then starting element\nreturn namedCandidate||heuristicCandidate||el;}// Find the best element to use as the pin container's target.\n// This is separate from findSection because the pin needs to wrap\n// the SHARED visual section (the viewport-height block that contains\n// all PC instances), even if it's unnamed.  findSection returns the\n// local named ancestor (good for wrapper creation), but pin needs\n// the page-level section that siblings other sections.\nfunction findPinSection(el){var vh=window.innerHeight;var node=el;var best=null;while(node.parentElement){// Skip over pin containers and spacers injected by previous\n// PC instances — these are NOT real page sections and must\n// never be returned as a pin section.\n// Also skip GSAP ScrollTrigger's own pin-spacer wrappers.\n// When PCs mount in separate React renders, GSAP may have\n// already wrapped the real section in a pin-spacer div\n// (class=\"pin-spacer\").  If we don't skip these, later PCs\n// find the pin-spacer instead of the original section,\n// claim pin ownership on it, and create nested pins that\n// cause the section to jump sizes/positions during scroll.\nif(node.hasAttribute(\"data-choreo-pin-container\")||node.hasAttribute(\"data-choreo-spacer\")||node.classList&&node.classList.contains(\"pin-spacer\")){node=node.parentElement;continue;}// Never select body or html as a pin section — these are\n// page-level containers, not sections.\nif(node===document.body||node===document.documentElement)break;var h=node.offsetHeight;// Good pin candidate: a non-collapsed element whose parent\n// has at least 2 children (meaning it's a page-level section\n// that sits alongside other sections).  No strict height\n// range — sections can be any height (100vh, fill, fixed).\n// The sibling check + tree walk (preferring higher ancestors)\n// is the real section identifier.\nif(h>=10){var parentKids=node.parentElement.children.length;if(parentKids>=2){best=node;// If this node is viewport-height or taller, it's\n// likely a page-level section — stop here.  Smaller\n// nodes (cards, wrappers) continue climbing to find\n// the actual section.  This prevents separate stacks\n// from resolving to the same page container while\n// still allowing multi-PC sections to find their\n// correct section ancestor.\nif(h>=vh*.5)break;}}// Stop climbing if we've gone past 3x viewport\nif(h>vh*3)break;node=node.parentElement;}// Fall back to findSection if no page-level section found\nreturn best||findSection(el);}function isMarkerBranch(el,marker){return el===marker||el.contains(marker);}function findNodeWithMostChildren(root,marker){var best=null;var bestCount=0;function walk(node){var contentCount=0;for(var i=0;i<node.children.length;i++){if(!isMarkerBranch(node.children[i],marker))contentCount++;}if(contentCount>=1&&contentCount>bestCount){bestCount=contentCount;best=node;}for(var j=0;j<node.children.length;j++){var child=node.children[j];if(!isMarkerBranch(child,marker))walk(child);}}walk(root);return best;}function nodeMatchesNames(node,names){var attrs=[\"data-framer-name\",\"data-framer-component\",\"aria-label\"];for(var a=0;a<attrs.length;a++){var val=(node.getAttribute(attrs[a])||\"\").toLowerCase();if(!val)continue;for(var n=0;n<names.length;n++){if(val===names[n]||val.indexOf(names[n])!==-1)return true;}}// Check trimmed text content (only if short — avoids matching paragraphs)\nvar text=(node.textContent||\"\").trim().toLowerCase();if(text.length>0&&text.length<60){for(var n=0;n<names.length;n++){if(text===names[n])return true;}}return false;}function elementMatchesNames(el,names){// Check element itself\nif(nodeMatchesNames(el,names))return true;// Check all descendants\ntry{var all=el.querySelectorAll(\"*\");for(var i=0;i<all.length;i++){if(nodeMatchesNames(all[i],names))return true;}}catch(e){}return false;}// Split text elements into individual words for per-word animation.\n// Walks into text containers and wraps each whitespace-delimited word\n// in an inline-block span so it can be animated independently.\nfunction splitTextWords(targets){var result=[];for(var i=0;i<targets.length;i++){var el=targets[i];// Already split? Just collect existing word spans (avoids infinite re-split)\nvar existing=el.querySelectorAll(\"[data-choreo-word]\");if(existing.length>0){for(var ex=0;ex<existing.length;ex++){result.push(existing[ex]);}continue;}// Collect all text-bearing leaf nodes inside the element\nvar textLeaves=[];var paragraphs=el.querySelectorAll(\"p, span, a, em, strong, b, i, u, h1, h2, h3, h4, h5, h6\");if(paragraphs.length>0){for(var p=0;p<paragraphs.length;p++){var pEl=paragraphs[p];// Only take leaf-level text containers\nif(pEl.children.length===0||pEl.children.length>0&&pEl.querySelector(\"br\")!=null){textLeaves.push(pEl);}}}if(textLeaves.length===0)textLeaves.push(el);var wordCount=0;for(var tl=0;tl<textLeaves.length;tl++){var leaf=textLeaves[tl];var nodes=leaf.childNodes;var fragments=[];for(var cn=0;cn<nodes.length;cn++){var nd=nodes[cn];if(nd.nodeType===3){// Text node\nvar text=nd.textContent||\"\";var parts=text.match(/\\S+|\\s+/g)||[];for(var wp=0;wp<parts.length;wp++){if(/^\\s+$/.test(parts[wp])){fragments.push(document.createTextNode(parts[wp]));}else{var wordSpan=document.createElement(\"span\");wordSpan.style.display=\"inline-block\";wordSpan.style.whiteSpace=\"nowrap\";wordSpan.setAttribute(\"data-choreo-word\",\"1\");wordSpan.textContent=parts[wp];fragments.push(wordSpan);wordCount++;}}}else if(nd.nodeType===1&&nd.tagName===\"BR\"){fragments.push(nd.cloneNode(true));}else{var inlineSpan=document.createElement(\"span\");inlineSpan.style.display=\"inline-block\";inlineSpan.setAttribute(\"data-choreo-word\",\"1\");inlineSpan.appendChild(nd.cloneNode(true));fragments.push(inlineSpan);wordCount++;}}while(leaf.firstChild)leaf.removeChild(leaf.firstChild);for(var fi=0;fi<fragments.length;fi++){leaf.appendChild(fragments[fi]);}}if(wordCount>0){var wordSpans=el.querySelectorAll(\"[data-choreo-word]\");for(var ws=0;ws<wordSpans.length;ws++){result.push(wordSpans[ws]);}el.style.overflow=\"visible\";}else{result.push(el);}}return result;}function splitTextChars(targets){var result=[];for(var i=0;i<targets.length;i++){var el=targets[i];// Already split? Collect existing char spans\nvar existing=el.querySelectorAll(\"[data-choreo-char]\");if(existing.length>0){for(var ex=0;ex<existing.length;ex++){result.push(existing[ex]);}continue;}// Collect all text-bearing leaf nodes inside the element\nvar textLeaves=[];var paragraphs=el.querySelectorAll(\"p, span, a, em, strong, b, i, u, h1, h2, h3, h4, h5, h6\");if(paragraphs.length>0){for(var p=0;p<paragraphs.length;p++){var pEl=paragraphs[p];if(pEl.children.length===0||pEl.children.length>0&&pEl.querySelector(\"br\")!=null){textLeaves.push(pEl);}}}if(textLeaves.length===0)textLeaves.push(el);var charCount=0;for(var tl=0;tl<textLeaves.length;tl++){var leaf=textLeaves[tl];var nodes=leaf.childNodes;var fragments=[];for(var cn=0;cn<nodes.length;cn++){var nd=nodes[cn];if(nd.nodeType===3){// Text node\nvar text=nd.textContent||\"\";for(var ci=0;ci<text.length;ci++){var ch=text[ci];if(ch===\" \"||ch===\"\t\"){// Wrap spaces in a non-animated span to\n// preserve word spacing in inline-block flow\nvar spaceSpan=document.createElement(\"span\");spaceSpan.style.display=\"inline-block\";spaceSpan.style.width=\"0.3em\";spaceSpan.innerHTML=\"&nbsp;\";fragments.push(spaceSpan);}else if(ch===\"\\n\"||ch===\"\\r\"){fragments.push(document.createElement(\"br\"));}else{var charSpan=document.createElement(\"span\");charSpan.style.display=\"inline-block\";charSpan.setAttribute(\"data-choreo-char\",\"1\");charSpan.textContent=ch;fragments.push(charSpan);charCount++;}}}else if(nd.nodeType===1&&nd.tagName===\"BR\"){fragments.push(nd.cloneNode(true));}else{// Non-text inline element (e.g. <em>, <strong>)\n// Recurse into its text content for char splitting\nvar inlineEl=nd;var inlineText=inlineEl.textContent||\"\";for(var ic=0;ic<inlineText.length;ic++){var ich=inlineText[ic];if(ich===\" \"||ich===\"\t\"){var iSpaceSpan=document.createElement(\"span\");iSpaceSpan.style.display=\"inline-block\";iSpaceSpan.style.width=\"0.3em\";iSpaceSpan.innerHTML=\"&nbsp;\";fragments.push(iSpaceSpan);}else{var iCharSpan=document.createElement(\"span\");iCharSpan.style.display=\"inline-block\";iCharSpan.setAttribute(\"data-choreo-char\",\"1\");// Inherit the inline element's styling\niCharSpan.style.fontWeight=window.getComputedStyle(inlineEl).fontWeight;iCharSpan.style.fontStyle=window.getComputedStyle(inlineEl).fontStyle;iCharSpan.style.textDecoration=window.getComputedStyle(inlineEl).textDecoration;iCharSpan.textContent=ich;fragments.push(iCharSpan);charCount++;}}}}while(leaf.firstChild)leaf.removeChild(leaf.firstChild);for(var fi=0;fi<fragments.length;fi++){leaf.appendChild(fragments[fi]);}}if(charCount>0){var charSpans=el.querySelectorAll(\"[data-choreo-char]\");for(var cs=0;cs<charSpans.length;cs++){result.push(charSpans[cs]);}el.style.overflow=\"visible\";}else{result.push(el);}}return result;}// Split text elements into individual lines for per-line animation.\n// Framer rich text renders each line as <p> inside a container.\n// Plain text may use <br> tags — we wrap text runs between <br>s in spans.\nfunction splitTextTargets(targets){var result=[];for(var i=0;i<targets.length;i++){var el=targets[i];// Look for <p> children (Framer rich text)\nvar paragraphs=el.querySelectorAll(\":scope > p, :scope > div > p\");if(paragraphs.length>1){for(var j=0;j<paragraphs.length;j++){result.push(paragraphs[j]);}// Set overflow visible on parent so animated lines aren't clipped\nel.style.overflow=\"visible\";continue;}// Look for <br> tags (simple text)\nvar brs=el.querySelectorAll(\"br\");if(brs.length>0){// Walk child nodes, grouping text/inline nodes between <br>s\nvar wrapper=el.firstElementChild||el;var lineNodes=[[]];for(var c=0;c<wrapper.childNodes.length;c++){var node=wrapper.childNodes[c];if(node.nodeName===\"BR\"){lineNodes.push([]);}else{lineNodes[lineNodes.length-1].push(node);}}// Only split if we got multiple non-empty lines\nvar nonEmpty=lineNodes.filter(function(ln){return ln.some(function(n){return(n.textContent||\"\").trim().length>0;});});if(nonEmpty.length>1){// Clear the container and rebuild with wrapped lines\nwhile(wrapper.firstChild)wrapper.removeChild(wrapper.firstChild);for(var li=0;li<lineNodes.length;li++){var span=document.createElement(\"span\");span.style.display=\"block\";for(var ni=0;ni<lineNodes[li].length;ni++){span.appendChild(lineNodes[li][ni]);}wrapper.appendChild(span);result.push(span);}el.style.overflow=\"visible\";continue;}}// Not a multi-line text element — keep as-is\nresult.push(el);}return result;}function collectTargets(parent,marker,scanMode,excludeSelector,splitText){var result=[];// ── Auto CMS / collection detection ──\n// Walk up from the marker looking for a collection pattern:\n//  1. Children share the same data-framer-name (named CMS items)\n//  2. Children's first named descendant shares the same name (grid wrappers)\n//  3. Children are structurally identical: same tag + same child count\n//     (handles masonry/grid where no data-framer-name is set)\n// Picks the ancestor with the MOST homogeneous children.\nvar cmsAncestor=null;var cmsAncestorCount=0;if(scanMode===\"siblings\"||scanMode===\"cmsItems\"||scanMode===\"cmsNested\"){var walkNode=marker.parentElement;var maxWalk=15;var walkDepth=0;while(walkNode&&maxWalk>0){walkDepth++;var wChildren=[];for(var wc=0;wc<walkNode.children.length;wc++){var wChild=walkNode.children[wc];if(!isMarkerBranch(wChild,marker))wChildren.push(wChild);}if(wChildren.length>=2){var detected=false;// Strategy 1: direct children share data-framer-name\nvar directName=wChildren[0].getAttribute(\"data-framer-name\");if(directName){var allDirect=true;for(var wn=1;wn<wChildren.length;wn++){if(wChildren[wn].getAttribute(\"data-framer-name\")!==directName){allDirect=false;break;}}if(allDirect)detected=true;}// Strategy 2: wrapper children's first named descendant matches\nif(!detected){var innerName=null;var allInner=true;for(var wi=0;wi<wChildren.length;wi++){var named=wChildren[wi].querySelector(\"[data-framer-name]\");var nm=named?named.getAttribute(\"data-framer-name\"):null;if(!nm){allInner=false;break;}if(innerName===null)innerName=nm;else if(nm!==innerName){allInner=false;break;}}if(allInner&&innerName)detected=true;}// Strategy 3: structural homogeneity — all children are\n// the same tag with the same number of children.\n// Catches masonry/grid CMS where items have no names.\nif(!detected){var firstTag=wChildren[0].tagName;var firstCh=wChildren[0].children.length;var allStruct=firstCh>0// require at least 1 grandchild\n;for(var ws=1;ws<wChildren.length;ws++){if(wChildren[ws].tagName!==firstTag||wChildren[ws].children.length!==firstCh){allStruct=false;break;}}if(allStruct)detected=true;}// Prefer the ancestor with the most children (collection level)\nif(detected&&wChildren.length>cmsAncestorCount){cmsAncestor=walkNode;cmsAncestorCount=wChildren.length;}// Strategy 4: relaxed \"most children\" fallback.\n// In masonry layouts, items are split into columns. Each\n// column has ≥2 items that aren't structurally identical\n// (e.g. different child counts). Since each CMS item has\n// its own Page Choreographer instance, finding just the\n// column siblings is enough — all instances together cover\n// every item. Only use this if no strict match was found.\n// Require depth ≥ 2 to skip the card's own content level\n// (Image, Title, etc.) and only match at the column level.\n// Also require that this node's parent has ≥2 children —\n// a parent with 1 child means we're inside a card wrapper,\n// not at a real collection level.\nif(!detected&&wChildren.length>=2&&!cmsAncestor&&walkDepth>=2){// Only allow Strategy 4 at or BELOW the parent level.\n// Walking above parent means grouping parent's siblings\n// as a collection — those are structural containers,\n// not CMS items.  parent.contains(walkNode) is true\n// when walkNode is parent itself or inside parent.\nvar s4InScope=parent.contains(walkNode);var s4ParentOk=s4InScope&&walkNode.parentElement&&walkNode.parentElement.children.length>=2;if(s4ParentOk){// Require children to at least share the same tag\nvar fallbackTag=wChildren[0].tagName;var sameTag=true;for(var wf=1;wf<wChildren.length;wf++){if(wChildren[wf].tagName!==fallbackTag){sameTag=false;break;}}if(sameTag){cmsAncestor=walkNode;cmsAncestorCount=wChildren.length;}}}}walkNode=walkNode.parentElement;maxWalk--;}}// ── Reject CMS ancestor above the parent level ──\n// If the detected cmsAncestor is ABOVE parent in the DOM tree,\n// it means we'd be grouping parent's siblings as a collection.\n// Those are structural containers, not CMS items.  Drop the\n// match and let the fallback (direct siblings) handle it.\nif(cmsAncestor&&!parent.contains(cmsAncestor)){cmsAncestor=null;cmsAncestorCount=0;}if(cmsAncestor){// Check if the CMS ancestor is a masonry column — i.e., its parent\n// has multiple same-tag children. In masonry layouts, Framer splits\n// items into column wrappers. We need to collect from ALL columns\n// so every item is targeted regardless of column distribution.\nvar colParent=cmsAncestor.parentElement;var isMasonryColumn=false;if(colParent&&colParent.children.length>=2){var myTag=cmsAncestor.tagName;var allColsSameTag=true;for(var cs=0;cs<colParent.children.length;cs++){if(colParent.children[cs].tagName!==myTag){allColsSameTag=false;break;}}isMasonryColumn=allColsSameTag;}if(isMasonryColumn){// Masonry: collect items from ALL sibling columns.\n// Include ALL items (even the one containing this marker)\n// so every item is targeted regardless of which instance\n// finds it.  Identical animations from multiple instances\n// compose harmlessly for scroll-driven animations.\nfor(var mc=0;mc<colParent.children.length;mc++){var column=colParent.children[mc];for(var mi=0;mi<column.children.length;mi++){result.push(column.children[mi]);}}}else{// Single collection — use its children as targets\nfor(var cj=0;cj<cmsAncestor.children.length;cj++){result.push(cmsAncestor.children[cj]);}}}else{// No CMS collection found — try masonry grid detection:\n// walk up looking for a grid container whose children are columns\n// (same-tag siblings each containing multiple same-tag items).\nvar masonryGrid=null;var mWalk=marker.parentElement;var mMaxWalk=15;while(mWalk&&mMaxWalk>0&&parent.contains(mWalk)){if(mWalk.children.length>=2){var mColTag=mWalk.children[0].tagName;var mAllSame=true;var mTotalItems=0;var mMaxColItems=0;for(var mg=0;mg<mWalk.children.length;mg++){var mCol=mWalk.children[mg];if(mCol.tagName!==mColTag){mAllSame=false;break;}mTotalItems+=mCol.children.length;if(mCol.children.length>mMaxColItems)mMaxColItems=mCol.children.length;}// Columns must share same tag, collectively have ≥3 items,\n// and at least one column must have ≥2 children (to\n// distinguish real masonry columns from card-internal\n// wrappers which typically have 1 child each).\nif(mAllSame&&mTotalItems>=3&&mMaxColItems>=2){masonryGrid=mWalk;break;}}mWalk=mWalk.parentElement;mMaxWalk--;}if(masonryGrid){// Collect items from all columns (include all, even marker branch)\nfor(var gc=0;gc<masonryGrid.children.length;gc++){var gCol=masonryGrid.children[gc];for(var gi=0;gi<gCol.children.length;gi++){result.push(gCol.children[gi]);}}}else{// Final fallback — direct siblings.\n// Skip siblings that contain OTHER PC markers — those are\n// structural containers with their own instances, not targets.\nfor(var k=0;k<parent.children.length;k++){var el=parent.children[k];if(isMarkerBranch(el,marker))continue;if(el.querySelector(\"[data-choreo-marker]\"))continue;result.push(el);}}}// Filter out elements whose layer name matches any excluded name.\n// User types comma-separated layer names like \"Load More, Footer\".\n// Checks data-framer-name, data-framer-component, aria-label, and\n// trimmed text content — on the element itself and its descendants.\nif(excludeSelector&&excludeSelector.trim()){var names=excludeSelector.split(\",\").map(function(n){return n.trim().toLowerCase();}).filter(function(n){return n.length>0;});if(names.length>0){result=result.filter(function(el){return!elementMatchesNames(el,names);});}}// Expand text elements into individual lines or words\nif(splitText===\"lines\"){result=splitTextTargets(result);}else if(splitText===\"words\"){result=splitTextWords(result);}else if(splitText===\"chars\"){result=splitTextChars(result);}return result;}// ─── GSAP CDN Loader ─────────────────────────────────────────────────────────\n// Loads gsap + ScrollTrigger from CDN (standard license).\n// Uses fetch + new Function to bypass CSP script-src restrictions\n// in Framer's sandboxed preview iframe (script tags are blocked).\n// Multiple callers share a single load promise.\nvar GSAP_CDN=\"https://cdn.jsdelivr.net/npm/gsap@3.12/dist/gsap.min.js\";var ST_CDN=\"https://cdn.jsdelivr.net/npm/gsap@3.12/dist/ScrollTrigger.min.js\";function loadGSAP(){var key=\"__choreoGsapLoad\";if(window[key])return window[key];window[key]=new Promise(function(resolve,reject){// If already loaded (another plugin, etc.), skip fetch\nif(window.gsap&&window.ScrollTrigger){resolve({gsap:window.gsap,ScrollTrigger:window.ScrollTrigger});return;}console.log(\"[Choreo] Loading GSAP from CDN...\");// fetch + new Function bypasses CSP script-src restrictions\n// that block <script> tag injection in Framer's preview iframe\nfetch(GSAP_CDN).then(function(r){if(!r.ok)throw new Error(\"GSAP fetch failed: \"+r.status);return r.text();}).then(function(gsapCode){new Function(gsapCode)();return fetch(ST_CDN);}).then(function(r){if(!r.ok)throw new Error(\"ScrollTrigger fetch failed: \"+r.status);return r.text();}).then(function(stCode){new Function(stCode)();var g=window.gsap;var ST=window.ScrollTrigger;if(!g||!ST){reject(new Error(\"GSAP globals not found after eval\"));return;}g.registerPlugin(ST);console.log(\"[Choreo] GSAP + ScrollTrigger loaded successfully\");resolve({gsap:g,ScrollTrigger:ST});}).catch(function(err){console.error(\"[Choreo] GSAP CDN load failed:\",err);reject(err);});});return window[key];}// ─── Component ───────────────────────────────────────────────────────────────\nvar groupCounter=0;// Global flag: suppresses ALL MutationObservers across PC instances\n// during structural DOM changes (pin container, wrapper creation).\n// Prevents cross-instance infinite re-render loops.\nvar choreoMutGlobalSuppress=false;function useStableGroupId(){var ref=React.useRef(\"\");if(ref.current===\"\"){groupCounter+=1;ref.current=\"scan-\"+groupCounter;}return ref.current;}export default function PageChoreographer(props){var{scanMode=\"siblings\",excludeSelector=\"\",splitText:splitTextRaw=\"none\",enterPreset=\"fadeUp\",exitPreset=\"riseWave\",enterEnabled=true,exitEnabled=true,mobileEnabled=true,trigger=\"onLoad\",viewOffset=100,viewRepeat=false,waitForParent=false,scrollLength=500,scrollStart=\"bottom\",scrollStartOffset=0,scrollPin=true,pinPriority=false,scrollOnce=false,sortPriority=0,priorityGap=0,delayOffset=0,duration=.6,stagger=.06,easingPreset=\"smooth\",staggerDirection=\"leftToRight\",distance=40,enterMaskDirection=\"left\",exitMaskDirection=\"left\",maskStart=0,maskPreview=false,maskViewportClip=false,maskViewportPadding=0,maskShiftX=0,maskShiftY=0,maskOpacity=1,blurAmount=8,scaleFrom=.92,enterScaleDirection=\"center\",scaleOpacity=0,exitTimeout=3,enterDelay=.05,// Custom enter\nenterOpacity=0,enterOffsetX=0,enterOffsetY=40,enterScale=1,enterRotateX=0,enterRotateY=0,enterRotateZ=0,enterBlur=0,enterPerspective=1e3,// Custom exit\nexitOpacity=0,exitOffsetX=0,exitOffsetY=-40,exitScale=1,exitRotateX=0,exitRotateY=0,exitRotateZ=0,exitBlur=0,exitPerspective=1e3,debugMarkers=false,style}=props;// Backward compat: old boolean splitText (true → \"lines\", false → \"none\")\nvar splitText=splitTextRaw===true?\"lines\":splitTextRaw===false?\"none\":splitTextRaw;var markerRef=React.useRef(null);var baseId=useStableGroupId();var registeredIds=React.useRef([]);var initialTargetCount=React.useRef(0);var rescanState=React.useState(0);var rescanGeneration=rescanState[0];var setRescanGeneration=rescanState[1];function unregisterAll(store){if(!store)return;var ids=registeredIds.current;for(var i=0;i<ids.length;i++){store.unregisterTarget(ids[i]);}registeredIds.current=[];}function registerElements(elements,store){var easing=EASING_MAP[easingPreset]||EASING_MAP.smooth;for(var i=0;i<elements.length;i++){var el=elements[i];var targetId=baseId+\"-\"+i;store.registerTarget({id:targetId,ref:{current:el},groupId:baseId,enterPreset:enterPreset,exitPreset:exitPreset,enterEnabled:enterEnabled,exitEnabled:exitEnabled,sortPriority:sortPriority,priorityGap:priorityGap,delayOffset:delayOffset,mobileEnabled:mobileEnabled,trigger:trigger,duration:duration,stagger:stagger,easing:easing,staggerDirection:staggerDirection,distance:distance,enterMaskDirection:enterMaskDirection,exitMaskDirection:exitMaskDirection,maskStart:maskStart,maskShiftX:maskShiftX,maskShiftY:maskShiftY,maskOpacity:maskOpacity,blurAmount:blurAmount,scaleFrom:scaleFrom,enterScaleDirection:enterScaleDirection,scaleOpacity:scaleOpacity,enterOpacity:enterOpacity,enterOffsetX:enterOffsetX,enterOffsetY:enterOffsetY,enterScale:enterScale,enterRotateX:enterRotateX,enterRotateY:enterRotateY,enterRotateZ:enterRotateZ,enterBlur:enterBlur,enterPerspective:enterPerspective,exitOpacity:exitOpacity,exitOffsetX:exitOffsetX,exitOffsetY:exitOffsetY,exitScale:exitScale,exitRotateX:exitRotateX,exitRotateY:exitRotateY,exitRotateZ:exitRotateZ,exitBlur:exitBlur,exitPerspective:exitPerspective});registeredIds.current.push(targetId);}}// useLayoutEffect ensures GSAP pin-spacer cleanup runs\n// synchronously BEFORE React reconciles the DOM.  With\n// useEffect, React tries removeChild on elements that GSAP\n// has reparented into pin-spacers, causing a crash.\nReact.useLayoutEffect(function(){var store=getStore();var marker=markerRef.current;if(!store||!marker)return;store.setupLinkInterception(exitTimeout);// Only schedule global enter for \"onLoad\" groups\nif(trigger===\"onLoad\"){store.scheduleEnter(enterDelay);}var parent=findRealParent(marker);if(!parent)return;unregisterAll(store);var targets=collectTargets(parent,marker,scanMode,excludeSelector,splitText);registerElements(targets,store);// Register parent as a group parent so choreo-done is dispatched\n// on the container element, not just on individual targets.\n// This ensures child PCs in sibling stacks receive the event.\nstore.registerGroupParent(baseId,parent);// Delayed re-scan: masonry/grid layouts restructure the DOM\n// after initial render.  If re-scan finds MORE targets, force\n// the entire useEffect to re-run (via state update) so the full\n// pipeline (pre-hiding, triggers, animations) is rebuilt.\ninitialTargetCount.current=targets.length;var rescanTimer=setTimeout(function(){if(!marker||!marker.parentElement)return;var p2=findRealParent(marker);if(!p2)return;var t2=collectTargets(p2,marker,scanMode,excludeSelector,splitText);if(t2.length>initialTargetCount.current){// Force full useEffect re-run — cleanup runs first,\n// then new setup with correct targets\nsetRescanGeneration(function(g){return g+1;});}},400);// Pre-hide elements that will animate in (inView / onLoad) so they\n// don't flash visible before the animation starts. Only in preview —\n// on canvas elements should stay visible for editing.\n// Uses visibility:hidden which doesn't interfere with WAAPI animations\n// and is cleanly removed when the animation starts.\n//\n// IMPORTANT: For onScroll trigger, pre-hiding is deferred to the\n// scroll setup rAF (after the section ownership check).  This\n// prevents follower instances from hiding targets they'll never\n// reveal (because they bail out when another instance owns the\n// section).\nvar preHiddenEls=[];var preHideStyleTag=null;if((trigger===\"inView\"||trigger===\"onLoad\")&&enterEnabled&&RenderTarget.current()!==RenderTarget.canvas){for(var phi=0;phi<targets.length;phi++){var phEl=targets[phi];if(!phEl)continue;phEl.style.setProperty(\"visibility\",\"hidden\");preHiddenEls.push(phEl);}}// MutationObserver for dynamic CMS content\n// Observe a few levels up to catch CMS collection changes\nvar observeTarget=parent;var obsWalk=parent;for(var obsUp=0;obsUp<4&&obsWalk;obsUp++){if(obsWalk.parentElement)obsWalk=obsWalk.parentElement;}if(obsWalk)observeTarget=obsWalk;var mutObs=null;var mutSuppressed=false// suppress during our own DOM mutations (e.g. word split)\n;try{if(typeof MutationObserver!==\"undefined\"){mutObs=new MutationObserver(function(mutations){if(mutSuppressed||choreoMutGlobalSuppress)return;// Ignore mutations caused by Page Choreographer's own\n// structural DOM changes (pin containers, spacers,\n// wrappers, word splits). These would otherwise trigger\n// infinite re-render loops between multiple PC instances.\nvar dominated=true;for(var mi=0;mi<mutations.length;mi++){var m=mutations[mi];for(var ai=0;ai<m.addedNodes.length;ai++){var an=m.addedNodes[ai];if(an.nodeType===3)continue;// text nodes\nif(an.nodeType===1&&an.getAttribute){// Skip our own structural elements\nif(an.getAttribute(\"data-choreo-word\"))continue;if(an.getAttribute(\"data-choreo-pin-container\"))continue;if(an.getAttribute(\"data-choreo-spacer\"))continue;if(an.getAttribute(\"data-choreo-marker\"))continue;}dominated=false;break;}if(!dominated)break;for(var ri=0;ri<m.removedNodes.length;ri++){var rn=m.removedNodes[ri];if(rn.nodeType===3)continue;// text nodes\nif(rn.nodeType===1&&rn.getAttribute){if(rn.getAttribute(\"data-choreo-pin-container\"))continue;if(rn.getAttribute(\"data-choreo-spacer\"))continue;if(rn.getAttribute(\"data-choreo-marker\"))continue;}dominated=false;break;}if(!dominated)break;}if(dominated&&mutations.length>0)return;var s=getStore();if(!s||!marker)return;var p=findRealParent(marker);if(!p)return;unregisterAll(s);mutSuppressed=true;var t=collectTargets(p,marker,scanMode,excludeSelector,splitText);mutSuppressed=false;registerElements(t,s);});mutObs.observe(observeTarget,{childList:true,subtree:true});}}catch(e){}// IntersectionObserver for \"inView\" trigger\nvar intObs=null;var parentDoneHandler=null;var parentResetHandler=null;if(trigger===\"inView\"&&waitForParent&&parent){// Wait for an ancestor PC to finish its animation before playing.\n// Listen on document (events bubble up from the parent PC's targets).\nvar hasPlayed=false;parentDoneHandler=function(e){var src=e.target;if(!src||!parent)return;if(!src.contains(parent)&&!parent.contains(src))return;var s=getStore();if(s&&!hasPlayed){hasPlayed=true;s.playEnterGroup(baseId);}};parentResetHandler=function(e){var src=e.target;if(!src||!parent)return;if(!src.contains(parent)&&!parent.contains(src))return;if(hasPlayed&&viewRepeat){hasPlayed=false;var s2=getStore();if(s2){s2.cancelPendingGroup(baseId);s2.resetGroup(baseId);}// Immediately re-hide targets for replay\nfor(var rh=0;rh<preHiddenEls.length;rh++){preHiddenEls[rh].style.setProperty(\"visibility\",\"hidden\");}}};document.addEventListener(\"choreo-done\",parentDoneHandler);document.addEventListener(\"choreo-reset\",parentResetHandler);}else if(trigger===\"inView\"&&typeof IntersectionObserver!==\"undefined\"){var isVisible=false;try{intObs=new IntersectionObserver(function(entries){for(var e=0;e<entries.length;e++){if(entries[e].isIntersecting&&!isVisible){isVisible=true;var s=getStore();if(s)s.playEnterGroup(baseId);// If not repeating, stop observing\nif(!viewRepeat&&intObs)intObs.disconnect();}else if(!entries[e].isIntersecting&&isVisible&&viewRepeat){// Element left viewport — clear from WeakSet so it replays\nisVisible=false;var s2=getStore();if(s2){s2.cancelPendingGroup(baseId);s2.resetGroup(baseId);}// Notify child PCs to reset for replay\nif(parent){parent.dispatchEvent(new CustomEvent(\"choreo-reset\",{bubbles:true,detail:{groupId:baseId}}));}// Also dispatch on group parents for sibling-subtree children\nif(s2){var resetGps=s2.getGroupParents(baseId);if(resetGps){for(var rgp=0;rgp<resetGps.length;rgp++){resetGps[rgp].dispatchEvent(new CustomEvent(\"choreo-reset\",{bubbles:true,detail:{groupId:baseId}}));}}}}}},{rootMargin:\"0px 0px \"+viewOffset+\"px 0px\"});intObs.observe(parent);}catch(e){}}// ─── Scroll-scrub trigger (GSAP ScrollTrigger) ─────────────────────\n// Uses GSAP ScrollTrigger for pinning and scroll progress.\n// WAAPI animations are kept for the actual element animations.\nvar scrollAnims=[];var scrollAnimFinalStyles=[];var scrubStyleTag=null;var scrollSafetyTimer=0;var gsapCtx=null;var gsapScrollTrigger=null;var scrollOverflowAncestors=[];var parentOrigOverflow=\"\";var gsapMounted=true;var _scrollGateCleanup=null;var isPreview=RenderTarget.current()!==RenderTarget.canvas;if(trigger===\"onScroll\"&&parent&&isPreview&&targets.length>0){console.log(\"[Choreo] SCROLL SETUP:\",baseId,\"trigger:\",trigger,\"scrollPin:\",scrollPin,\"targets:\",targets.length,\"parent:\",parent.tagName+\"#\"+parent.id);// ── CMS bail-out ──\n// When multiple PCs live inside the same parent (CMS\n// collection items that duplicate a template), only one\n// should create a pin trigger.  But PCs in DIFFERENT\n// parents (e.g. two separate stacks on the page) must\n// each get their own trigger, even if findPinSection()\n// resolves to the same high-level ancestor.\n//\n// Check: does the pin section already have an owner AND\n// is there another PC marker in MY immediate parent?\n// Both must be true for CMS bail-out.\nvar earlyPinSection=findPinSection(parent);if(scrollPin&&earlyPinSection&&earlyPinSection.hasAttribute(\"data-choreo-gsap-pin\")&&!pinPriority){// Only bail if there's another PC in the SAME parent\nvar sameParentMarkers=parent.querySelectorAll(\"[data-choreo-marker]\");var hasSiblingPC=false;for(var om=0;om<sameParentMarkers.length;om++){if(sameParentMarkers[om]!==marker&&!sameParentMarkers[om].hasAttribute(\"data-choreo-wait\")){hasSiblingPC=true;break;}}// Also verify the existing pin owner is NOT in our\n// parent — if it is, we're a CMS duplicate.  If it's\n// in a different parent, we're a separate section.\nvar existingOwner=earlyPinSection.getAttribute(\"data-choreo-gsap-pin\")||\"\";var ownerMarker=earlyPinSection.querySelector(\"[data-choreo-marker='\"+existingOwner+\"']\")||document.querySelector(\"[data-choreo-marker='\"+existingOwner+\"']\");var ownerInSameParent=ownerMarker?parent.contains(ownerMarker):false;if(hasSiblingPC&&ownerInSameParent){console.log(\"[Choreo] CMS bail-out:\",baseId,\"— another PC in same parent already owns pin\");return function(){unregisterAll(getStore());};}}// ── Pre-hiding ──\nvar existingScrub=document.querySelector(\"style[data-choreo-style='scrub']\");if(existingScrub){scrubStyleTag=existingScrub;}else{scrubStyleTag=document.createElement(\"style\");scrubStyleTag.setAttribute(\"data-choreo-style\",\"scrub\");scrubStyleTag.textContent=\"[data-choreo-scrubbing] { transition: none !important; pointer-events: none !important; }\";document.head.appendChild(scrubStyleTag);}if(enterEnabled){var existingHide=document.querySelector(\"style[data-choreo-style='hide']\");if(existingHide){preHideStyleTag=existingHide;}else{var styleTag=document.createElement(\"style\");styleTag.setAttribute(\"data-choreo-style\",\"hide\");styleTag.textContent=\"[data-choreo-hide] { opacity: 0 !important; visibility: hidden !important; pointer-events: none !important; }\";document.head.appendChild(styleTag);preHideStyleTag=styleTag;}// Compute initial clip-path for maskPreview mode\nvar previewClip=\"\";var hasMaskPreset=enterPreset===\"maskReveal\"||enterPreset===\"scaleIn\"&&enterMaskDirection&&enterMaskDirection!==\"none\";if(maskPreview&&hasMaskPreset){var ms=Math.max(0,Math.min(100,100-(maskStart||0)));var previewMaskDir=resolveMaskDirection(enterMaskDirection);switch(previewMaskDir){case\"left\":default:previewClip=\"inset(0 \"+ms+\"% 0 0)\";break;case\"right\":previewClip=\"inset(0 0 0 \"+ms+\"%)\";break;case\"up\":previewClip=\"inset(0 0 \"+ms+\"% 0)\";break;case\"down\":previewClip=\"inset(\"+ms+\"% 0 0 0)\";break;case\"topLeft\":previewClip=\"inset(0 \"+ms+\"% \"+ms+\"% 0)\";break;case\"topRight\":previewClip=\"inset(0 0 \"+ms+\"% \"+ms+\"%)\";break;case\"bottomLeft\":previewClip=\"inset(\"+ms+\"% \"+ms+\"% 0 0)\";break;case\"bottomRight\":previewClip=\"inset(\"+ms+\"% 0 0 \"+ms+\"%)\";break;}}for(var phi=0;phi<targets.length;phi++){var phEl=targets[phi];if(!phEl)continue;if(maskPreview&&previewClip){phEl.style.setProperty(\"clip-path\",previewClip);}else{phEl.setAttribute(\"data-choreo-hide\",\"1\");}preHiddenEls.push(phEl);}}// ── Wrapper setup ──\nvar wrapper=parent;wrapper.setAttribute(\"data-choreo-wrapper\",baseId);parentOrigOverflow=parent.style.overflow;if(maskViewportClip){parent.style.setProperty(\"overflow\",\"hidden\");}var pinSectionEl=earlyPinSection;// ── Contain fix for Framer containers ──\n// GSAP ScrollTrigger handles overflow on its own via\n// pin-spacers.  We only need to fix `contain:paint/strict/\n// content` which creates a new stacking context that breaks\n// transform-based pinning.  Do NOT touch overflow — that\n// would interfere with GSAP's spacer mechanism.\nvar overflowNode=pinSectionEl||parent;while(overflowNode&&overflowNode!==document.documentElement){var ovCS=window.getComputedStyle(overflowNode);var ovContain=ovCS.contain||\"\";if(/paint|strict|content/.test(ovContain)){scrollOverflowAncestors.push({el:overflowNode,orig:ovContain});overflowNode.style.setProperty(\"contain\",\"none\",\"important\");}overflowNode=overflowNode.parentElement;}// ── Synchronous pin coordination ──\n// Store this PC's pin-need BEFORE GSAP loads.  All PC effects\n// run synchronously in the same React commit, so by the time\n// any .then() callback fires, ALL PCs' pin-need attributes are\n// already present on the DOM.  This lets the first .then() to\n// create a ScrollTrigger read the MAX of all needs.\nvar myScrollDist=scrollLength+Math.max(0,scrollStartOffset/100*scrollLength);var isPinOwner=false;if(scrollPin&&pinSectionEl){pinSectionEl.setAttribute(\"data-choreo-pin-need-\"+baseId,myScrollDist.toString());if(pinPriority){// Pin Priority leaders ALWAYS own the pin, regardless\n// of whether a non-leader's effect ran first and\n// already set data-choreo-gsap-pin.  This overwrite\n// is safe because non-leaders will defer to the leader\n// in the batch callback via data-choreo-priority-pin.\npinSectionEl.setAttribute(\"data-choreo-gsap-pin\",baseId);isPinOwner=true;}else if(!pinSectionEl.hasAttribute(\"data-choreo-gsap-pin\")){// First non-leader PC to reach here claims pin ownership\n// (will be overridden if a priority leader exists)\npinSectionEl.setAttribute(\"data-choreo-gsap-pin\",baseId);isPinOwner=true;}// Pin Priority leaders mark their pin section AND\n// ancestors so non-leader sibling PCs can find it.\n// The leader may be in a sub-container (e.g. \"03\")\n// while non-leaders are in sibling containers (\"01\",\n// \"02\").  Walking up only works if the marker is on\n// a COMMON ancestor.  We mark from the pin section\n// up to the first viewport-height section boundary.\nif(pinPriority){pinSectionEl.setAttribute(\"data-choreo-priority-pin\",baseId);var _ppWalk=pinSectionEl.parentElement;while(_ppWalk&&_ppWalk!==document.body&&_ppWalk!==document.documentElement){// Stop BEFORE marking page-level containers —\n// marking them would cause every PC on the page\n// to defer to this leader, not just siblings\n// within the shared section.\nif(_ppWalk.offsetHeight>=window.innerHeight*.5)break;_ppWalk.setAttribute(\"data-choreo-priority-pin\",baseId);_ppWalk=_ppWalk.parentElement;}}}// ── Load GSAP and create ScrollTrigger ──\n// ALWAYS use the batch queue for trigger creation, even\n// when GSAP is already loaded.  This ensures ALL PC effects\n// finish setting their synchronous attributes (pin-need,\n// gsap-pin, priority-pin) before ANY ScrollTrigger is\n// created.  Without batching, the synchronous path would\n// create triggers mid-effect-cycle, breaking pin priority\n// coordination (non-leaders run _createScrollTrigger before\n// the leader has set data-choreo-priority-pin).\nvar _existingGsap=window.gsap;var _existingST=window.ScrollTrigger;if(_existingGsap&&_existingST){// GSAP already loaded — queue for batch creation\nvar q2=window.__choreoCreateQueue=window.__choreoCreateQueue||[];q2.push(function(){_createScrollTrigger(_existingGsap,_existingST);});clearTimeout(window.__choreoCreateBatchTimer);window.__choreoCreateBatchTimer=setTimeout(function(){var fns=window.__choreoCreateQueue||[];window.__choreoCreateQueue=[];console.log(\"[Choreo] Batch-creating\",fns.length,\"ScrollTriggers\");for(var bi=0;bi<fns.length;bi++){fns[bi]();}},0);}else{loadGSAP().then(function(libs){// Queue creation instead of running immediately.\n// All .then() callbacks fire in the same microtask,\n// so the queue collects ALL components.  The\n// setTimeout(0) then creates them all at once.\nvar q=window.__choreoCreateQueue=window.__choreoCreateQueue||[];q.push(function(){_createScrollTrigger(libs.gsap,libs.ScrollTrigger);});clearTimeout(window.__choreoCreateBatchTimer);window.__choreoCreateBatchTimer=setTimeout(function(){var fns=window.__choreoCreateQueue||[];window.__choreoCreateQueue=[];console.log(\"[Choreo] Batch-creating\",fns.length,\"ScrollTriggers\");for(var bi=0;bi<fns.length;bi++){fns[bi]();}},0);}).catch(function(err){console.warn(\"[Choreo] GSAP load failed:\",err);// Fallback: just reveal everything\nfor(var fb=0;fb<preHiddenEls.length;fb++){preHiddenEls[fb].removeAttribute(\"data-choreo-hide\");preHiddenEls[fb].style.removeProperty(\"visibility\");}});}function _createScrollTrigger(gsap,ST){if(!parent||!parent.isConnected){console.log(\"[Choreo] Skipping trigger creation for\",baseId,\"— parent not in DOM\");return;}gsapCtx=gsap.context(function(){var store=getStore();if(!store)return;var timelineDuration=0;var reduced=window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;var mobile=window.innerWidth<768;// ── WAAPI animation creation ──\nvar createScrollAnims=function(){for(var ca=0;ca<scrollAnims.length;ca++){try{scrollAnims[ca].cancel();}catch(e){}}scrollAnims=[];scrollAnimFinalStyles=[];timelineDuration=0;var allTargets=store.getAllTargets().filter(function(t){return t.groupId===baseId&&t.enterEnabled&&(t.mobileEnabled||!mobile)&&t.ref.current;});var direction=allTargets.length>0?allTargets[0].staggerDirection:\"leftToRight\";var sorted=store.sortTargets(allTargets,direction);for(var si=0;si<sorted.length;si++){var target=sorted[si];var el=target.ref.current;if(!el)continue;try{var existing=el.getAnimations();for(var ex=0;ex<existing.length;ex++){existing[ex].cancel();}}catch(e){}// ── Unclip target ancestors ──\n// Framer preview sets contain:paint on frames for\n// perf, which clips content even when clip=false.\n// Walk from target up to wrapper and remove paint\n// containment so oversized text/content is visible.\nvar _unclipNode=el.parentElement;while(_unclipNode&&_unclipNode!==wrapper&&_unclipNode!==document.body){var _ucCS=window.getComputedStyle(_unclipNode);var _ucContain=_ucCS.contain||\"\";if(/paint|strict|content/.test(_ucContain)){scrollOverflowAncestors.push({el:_unclipNode,orig:_ucContain});_unclipNode.style.setProperty(\"contain\",\"none\",\"important\");}_unclipNode=_unclipNode.parentElement;}var kf=reduced?{from:{opacity:\"0\"},to:{opacity:\"1\"}}:buildEnterKeyframes(target);scrollAnimFinalStyles.push({el:el,to:kf.to});var staggerVal=reduced?0:target.stagger;var itemDelay=staggerVal*si;var dur=reduced?10:target.duration*1e3;try{var scrollAnim=el.animate([kf.from,kf.to],{duration:dur,delay:itemDelay*1e3,easing:easingToCss(target.easing),fill:\"both\"});scrollAnim.pause();scrollAnims.push(scrollAnim);}catch(e){}}if(sorted.length>0){var lastStagger=(sorted.length-1)*(reduced?0:sorted[0].stagger);var lastDur=reduced?10:sorted[0].duration*1e3;timelineDuration=lastStagger*1e3+lastDur;}};var _animDiagCount=0;var updateAnimProgress=function(progress){var shouldDiag=_animDiagCount<5&&progress>.01;for(var a=0;a<scrollAnims.length;a++){try{var anim=scrollAnims[a];var timing=anim.effect&&anim.effect.getComputedTiming?anim.effect.getComputedTiming():null;var animDelay=timing?timing.delay||0:0;var animDur=timing?timing.duration||600:600;var time=progress*timelineDuration;var targetTime=Math.max(0,Math.min(time,animDelay+animDur));anim.currentTime=targetTime;if(shouldDiag&&a===0){var el=anim.effect&&anim.effect.target;var computedOp=el?window.getComputedStyle(el).opacity:\"?\";var playState=anim.playState;// Check what's causing opacity\nvar inlineOp=el?el.style.opacity:\"?\";var hideAttr=el?el.getAttribute(\"data-choreo-hide\"):\"?\";var parentOp=el&&el.parentElement?window.getComputedStyle(el.parentElement).opacity:\"?\";var parentHide=el&&el.parentElement?el.parentElement.getAttribute(\"data-choreo-hide\"):\"?\";var grandOp=el&&el.parentElement&&el.parentElement.parentElement?window.getComputedStyle(el.parentElement.parentElement).opacity:\"?\";var grandHide=el&&el.parentElement&&el.parentElement.parentElement?el.parentElement.parentElement.getAttribute(\"data-choreo-hide\"):\"?\";console.log(\"[Choreo] ANIM SCRUB:\",baseId,\"progress:\",progress.toFixed(4),\"targetTime:\",targetTime.toFixed(1),\"currentTime:\",anim.currentTime,\"playState:\",playState,\"computedOp:\",computedOp,\"inlineOp:\",JSON.stringify(inlineOp),\"hideAttr:\",JSON.stringify(hideAttr),\"parentOp:\",parentOp,\"parentHide:\",JSON.stringify(parentHide),\"grandOp:\",grandOp,\"grandHide:\",JSON.stringify(grandHide),\"elTag:\",el?el.tagName+\".\"+(el.getAttribute(\"data-framer-name\")||el.className.toString().slice(0,30)):\"?\");}}catch(e){if(shouldDiag)console.error(\"[Choreo] ANIM SCRUB ERROR:\",baseId,e);}}if(shouldDiag)_animDiagCount++;};var blockAnimatedPointerEvents=function(){for(var bp=0;bp<scrollAnimFinalStyles.length;bp++){scrollAnimFinalStyles[bp].el.setAttribute(\"data-choreo-scrubbing\",\"1\");}};var releaseAnimatedElements=function(){for(var ra=0;ra<scrollAnimFinalStyles.length;ra++){scrollAnimFinalStyles[ra].el.removeAttribute(\"data-choreo-scrubbing\");}};var visibilityRevealed=false;var _revealCount=0;var revealIfNeeded=function(progress){if(visibilityRevealed)return;// maskPreview reveals immediately.  All other\n// sections require progress > 0 so they don't\n// flash before the user scrolls into range.\nif(!maskPreview&&progress<=0){if(_revealCount<3){_revealCount++;console.log(\"[Choreo] revealIfNeeded SKIP:\",baseId,\"progress:\",progress,\"maskPreview:\",maskPreview);}return;}visibilityRevealed=true;console.log(\"[Choreo] REVEALING:\",baseId,\"progress:\",progress,\"preHiddenEls:\",preHiddenEls.length);// Remove the data-choreo-hide attribute from THIS PC's\n// elements only.  Do NOT remove the shared <style> tag —\n// other PCs still rely on it for their hidden elements.\nfor(var ph=0;ph<preHiddenEls.length;ph++){preHiddenEls[ph].removeAttribute(\"data-choreo-hide\");preHiddenEls[ph].style.removeProperty(\"visibility\");preHiddenEls[ph].style.removeProperty(\"opacity\");preHiddenEls[ph].style.removeProperty(\"pointer-events\");preHiddenEls[ph].style.removeProperty(\"clip-path\");// Also clear data-choreo-hide from ancestors.\n// When multiple PCs share a section, a later PC's\n// pre-hide may have marked an ancestor of this PC's\n// targets.  Walk up and clear so this PC's elements\n// are actually visible.\nvar ancestor=preHiddenEls[ph].parentElement;while(ancestor&&ancestor!==document.documentElement){if(ancestor.hasAttribute(\"data-choreo-hide\")){ancestor.removeAttribute(\"data-choreo-hide\");ancestor.style.removeProperty(\"visibility\");ancestor.style.removeProperty(\"opacity\");ancestor.style.removeProperty(\"pointer-events\");ancestor.style.removeProperty(\"clip-path\");}// Stop at wrapper or pin section — no need to go higher\nif(ancestor===wrapper||ancestor===pinSectionEl)break;ancestor=ancestor.parentElement;}}};var rehideIfNeeded=function(){if(!visibilityRevealed)return;visibilityRevealed=false;for(var rh=0;rh<preHiddenEls.length;rh++){preHiddenEls[rh].setAttribute(\"data-choreo-hide\",\"\");}};// ── Viewport clip helper ──\nvar vpClipPad=maskViewportPadding||0;var animDone=false;var choreoDoneDispatched=false;var updateViewportClip=function(){if(!maskViewportClip||!wrapper)return;if(animDone){wrapper.style.setProperty(\"transition\",\"clip-path 0.35s ease-out\");wrapper.style.removeProperty(\"clip-path\");return;}wrapper.style.removeProperty(\"transition\");var wRect=wrapper.getBoundingClientRect();var vpH=window.innerHeight;var vpW=window.innerWidth;var overflowTop=Math.max(0,-wRect.top);var overflowRight=Math.max(0,wRect.right-vpW);var overflowBottom=Math.max(0,wRect.bottom-vpH);var overflowLeft=Math.max(0,-wRect.left);var padBottom=wRect.bottom>=vpH-vpClipPad?Math.max(0,vpClipPad-(vpH-wRect.bottom)):0;var clipTop=Math.round(Math.max(overflowTop,0));var clipRight=Math.round(Math.max(overflowRight,0));var clipBottom=Math.round(Math.max(overflowBottom,padBottom));var clipLeft=Math.round(Math.max(overflowLeft,0));if(clipTop===0&&clipRight===0&&clipBottom===0&&clipLeft===0){wrapper.style.removeProperty(\"clip-path\");}else{wrapper.style.setProperty(\"clip-path\",\"inset(\"+clipTop+\"px \"+clipRight+\"px \"+clipBottom+\"px \"+clipLeft+\"px)\",\"important\");}};// ── WAAPI animations are deferred until after ST.refresh() ──\n// fill:\"both\" immediately applies the from-keyframe\n// (which may include transforms like translate(2000px,\n// -1500px)).  If applied BEFORE ST.refresh(), GSAP\n// reads the wrong getBoundingClientRect → negative\n// start positions → pin never activates.  Elements\n// stay hidden via data-choreo-hide CSS until then.\nvar _animsReady=false;// ── Determine pin section and scroll range ──\nvar triggerEl=scrollPin&&pinSectionEl?pinSectionEl:wrapper;// ── Pin Priority ancestor search ──\n// Non-leader PCs (pinPriority=false) may be nested\n// inside sub-containers (e.g. \"02\", \"03\") within a\n// shared section.  findPinSection returns the sub-\n// container, not the shared section.  If a priority\n// leader exists, it will have marked the shared\n// section with data-choreo-priority-pin during its\n// synchronous effect phase.  By the time this batch\n// callback runs, all effects are done, so we can\n// walk up to find the leader's pin section and\n// defer to it.\nvar _deferredToLeader=false;if(scrollPin&&!pinPriority&&triggerEl){// Start from triggerEl itself, not .parentElement —\n// when findPinSection returns the same element the\n// leader is pinning, the marker is ON triggerEl.\nvar _ancestorSearch=triggerEl;while(_ancestorSearch&&_ancestorSearch!==document.body){if(_ancestorSearch.hasAttribute(\"data-choreo-priority-pin\")){console.log(\"[Choreo] PIN PRIORITY: \"+baseId+\" deferring to leader on\",_ancestorSearch.tagName+\".\"+(_ancestorSearch.getAttribute(\"data-framer-name\")||_ancestorSearch.className.toString().slice(0,30)));triggerEl=_ancestorSearch;isPinOwner=false;_deferredToLeader=true;// Copy this PC's pin-need to the leader's\n// section so the leader pins long enough\n// for all animations.  Non-leader batch\n// callbacks run before the leader's (tree\n// order), so the leader will see this.\n_ancestorSearch.setAttribute(\"data-choreo-pin-need-\"+baseId,myScrollDist.toString());break;}// Also skip GSAP pin-spacers during ancestor walk\nif(_ancestorSearch.classList&&_ancestorSearch.classList.contains(\"pin-spacer\")){_ancestorSearch=_ancestorSearch.parentElement;continue;}_ancestorSearch=_ancestorSearch.parentElement;}}// Map scrollStart to GSAP start/end strings\nvar gsapStart;if(scrollStart===\"top\"){// \"top\": animation begins when section top enters\n// viewport from below (section top at viewport bottom)\ngsapStart=\"top bottom\";}else if(scrollStart===\"center\"){gsapStart=\"center center\";}else{// \"bottom\" (default): animation begins when section\n// top reaches the viewport top (fully scrolled into view)\ngsapStart=\"top top\";}// Compute the scroll distance for this PC\nvar animOffset=Math.max(0,scrollStartOffset/100*scrollLength);var totalScrollDist=scrollLength+animOffset;// Read MAX of ALL pin-need attributes on this section.\n// All pin-need attrs were set synchronously before GSAP\n// loaded, so every PC's need is already present.\n// When deferred to a leader, read from the leader's\n// pin section instead of our own.\nvar _pinNeedSource=_deferredToLeader?triggerEl:pinSectionEl;if(_pinNeedSource){var pinNeedAttrs=_pinNeedSource.attributes;for(var pna=0;pna<pinNeedAttrs.length;pna++){if(pinNeedAttrs[pna].name.indexOf(\"data-choreo-pin-need-\")===0){var pnaVal=parseInt(pinNeedAttrs[pna].value)||0;if(pnaVal>totalScrollDist)totalScrollDist=pnaVal;}}}// Only the pin OWNER creates a pinning ScrollTrigger.\n// isPinOwner was determined synchronously: the first PC\n// with scrollPin=true to set data-choreo-gsap-pin wins.\n// Other PCs use pin:false — they just scrub animations\n// within the shared pin's scroll range.\nvar shouldPin=isPinOwner;// ── Create the ScrollTrigger ──\nvar triggerName=triggerEl.getAttribute(\"data-framer-name\")||triggerEl.className.toString().slice(0,40)||\"(unnamed)\";var triggerRect=triggerEl.getBoundingClientRect();console.log(\"[Choreo] Creating ScrollTrigger:\",baseId,\"trigger:\",triggerEl.tagName+\".\"+triggerName,\"size:\",Math.round(triggerRect.width)+\"x\"+Math.round(triggerRect.height),\"top:\",Math.round(triggerRect.top),\"pin:\",shouldPin,\"isPinOwner:\",isPinOwner,\"start:\",gsapStart,\"end: +=\"+totalScrollDist,\"animOffset:\",animOffset);// ── Reveal gating ──\n// Wait for actual user scroll before allowing\n// reveals.  This prevents flash-of-content on\n// ultrawide/tall viewports where ScrollTrigger\n// fires onUpdate with mid-range progress on load.\nvar _userHasScrolled=false;var _progressBaseline=0;var _scrollGateHandler=null;_scrollGateHandler=function(){_userHasScrolled=true;window.removeEventListener(\"scroll\",_scrollGateHandler,true);};window.addEventListener(\"scroll\",_scrollGateHandler,true);_scrollGateCleanup=function(){if(_scrollGateHandler){window.removeEventListener(\"scroll\",_scrollGateHandler,true);}};// Log pin-spacer creation check\nvar _pinDiagDone=false;var _reentryLogCount=3// log first 3 updates on initial entry\n;gsapScrollTrigger=ST.create({id:baseId,trigger:triggerEl,pin:shouldPin,pinSpacing:shouldPin,anticipatePin:shouldPin?1:0,start:gsapStart,end:\"+=\"+totalScrollDist,markers:debugMarkers?{startColor:\"lime\",endColor:\"red\",fontSize:\"10px\"}:false,onUpdate:function(self){if(!gsapMounted)return;var progress=self.progress;// One-time pin-spacer diagnostic\nif(!_pinDiagDone){_pinDiagDone=true;console.log(\"[Choreo] PIN DIAG:\",baseId,\"self.start:\",self.start,\"self.end:\",self.end,\"isActive:\",self.isActive,\"progress:\",progress,\"_animsReady:\",_animsReady,\"_userHasScrolled:\",_userHasScrolled);}// Wait for WAAPI anims to be created (after ST.refresh)\nif(!_animsReady){// Still record baseline while waiting\nif(!_userHasScrolled){_progressBaseline=progress;}return;}// ── Rebase progress on first real scroll ──\n// On ultrawide/tall viewports, ScrollTrigger\n// can fire onUpdate with mid-range progress on\n// load.  Record baseline and remap so the\n// animation starts at 0 on first real scroll.\nif(!_userHasScrolled){_progressBaseline=progress;updateAnimProgress(0);return;}// Remap: baseline→1 becomes 0→1\nvar rebased=progress;if(_progressBaseline>.001&&_progressBaseline<.999){rebased=(progress-_progressBaseline)/(1-_progressBaseline);rebased=Math.max(0,Math.min(1,rebased));}// Apply animation offset: the first portion of\n// scroll is \"dead zone\" before this PC's animation\n// starts (allows staggered PCs within a shared pin).\nvar localProgress;if(animOffset>0&&totalScrollDist>0){var offsetFraction=animOffset/totalScrollDist;if(rebased<=offsetFraction){localProgress=0;}else{localProgress=(rebased-offsetFraction)/(1-offsetFraction);}}else{localProgress=rebased;}localProgress=Math.max(0,Math.min(1,localProgress));revealIfNeeded(rebased);updateAnimProgress(localProgress);updateViewportClip();// Periodic diagnostic: log first 3 updates after\n// each re-entry (triggered by onEnterBack/onEnter)\nif(_reentryLogCount>0){_reentryLogCount--;console.log(\"[Choreo] onUpdate:\",baseId,\"raw:\",progress.toFixed(4),\"rebased:\",rebased.toFixed(4),\"local:\",localProgress.toFixed(4),\"baseline:\",_progressBaseline.toFixed(6),\"scrollAnims:\",scrollAnims.length,\"visRevealed:\",visibilityRevealed);}animDone=localProgress>=1;// Dispatch choreo-done when animation completes\nif(animDone&&!choreoDoneDispatched&&parent){choreoDoneDispatched=true;parent.dispatchEvent(new CustomEvent(\"choreo-done\",{bubbles:true,detail:{groupId:baseId}}));var doneStore=getStore();if(doneStore){var gps=doneStore.getGroupParents(baseId);if(gps){for(var gpi=0;gpi<gps.length;gpi++){gps[gpi].dispatchEvent(new CustomEvent(\"choreo-done\",{bubbles:true,detail:{groupId:baseId}}));}}}releaseAnimatedElements();}if(scrollOnce&&localProgress>=1){releaseAnimatedElements();if(gsapScrollTrigger){gsapScrollTrigger.kill();gsapScrollTrigger=null;}}},onEnter:function(){console.log(\"[Choreo] onEnter:\",baseId);_reentryLogCount=3;},onEnterBack:function(){console.log(\"[Choreo] onEnterBack:\",baseId);_reentryLogCount=3;_animDiagCount=0// reset anim scrub diagnostics on re-entry\n;},onLeave:function(){console.log(\"[Choreo] onLeave:\",baseId);},onLeaveBack:function(){if(!gsapMounted)return;console.log(\"[Choreo] onLeaveBack:\",baseId);// Scrolled back before the trigger — reset to start\nanimDone=false;choreoDoneDispatched=false;blockAnimatedPointerEvents();updateAnimProgress(0);// Do NOT call rehideIfNeeded() — WAAPI from-state\n// already hides elements.  rehideIfNeeded sets\n// data-choreo-hide which can cross-contaminate\n// elements shared between multiple PCs.\nif(wrapper){wrapper.style.removeProperty(\"transition\");wrapper.style.removeProperty(\"clip-path\");}}});// Log immediate post-create state\nconsole.log(\"[Choreo] ST created:\",baseId,\"gsapScrollTrigger:\",!!gsapScrollTrigger,\"pin:\",gsapScrollTrigger&&gsapScrollTrigger.pin,\"spacer:\",gsapScrollTrigger&&gsapScrollTrigger.spacer,\"isActive:\",gsapScrollTrigger&&gsapScrollTrigger.isActive);// Queue WAAPI creation for AFTER ST.refresh().\n// Each PC pushes its own callback; the shared timer\n// flushes them all after sort+refresh.  This avoids\n// the old bug where the last PC's timer cancelled\n// all earlier PCs' callbacks.\nvar _postRefreshQueue=window.__choreoPostRefreshQueue=window.__choreoPostRefreshQueue||[];_postRefreshQueue.push(function(){if(!gsapMounted)return;createScrollAnims();blockAnimatedPointerEvents();updateAnimProgress(0);_animsReady=true;console.log(\"[Choreo] WAAPI anims created:\",baseId);});clearTimeout(window.__choreoRefreshTimer);window.__choreoRefreshTimer=setTimeout(function(){ST.sort();ST.refresh();// Flush all queued WAAPI creations AFTER refresh\nvar fns=window.__choreoPostRefreshQueue||[];window.__choreoPostRefreshQueue=[];for(var qi=0;qi<fns.length;qi++){try{fns[qi]();}catch(e){console.error(\"[Choreo] post-refresh error:\",e);}}var allTriggers=ST.getAll();console.log(\"[Choreo] ScrollTrigger.sort() + refresh() — total triggers:\",allTriggers.length);for(var dti=0;dti<allTriggers.length;dti++){var dt=allTriggers[dti];console.log(\"[Choreo]   trigger[\"+dti+\"]:\",dt.vars.id,\"pin:\",!!dt.pin,\"isActive:\",dt.isActive,\"start:\",dt.start,\"end:\",dt.end,\"progress:\",dt.progress);}},0);// No safety timer — elements stay hidden until the\n// user scrolls into the trigger range.  The .catch()\n// fallback handles GSAP load failures.\n},parent)// end gsap.context scope\n;}// end _createScrollTrigger\n}return function(){console.log(\"[Choreo] CLEANUP:\",baseId,\"gsapScrollTrigger:\",!!gsapScrollTrigger,\"gsapCtx:\",!!gsapCtx);clearTimeout(rescanTimer);gsapMounted=false;if(_scrollGateCleanup){_scrollGateCleanup();_scrollGateCleanup=null;}if(scrollSafetyTimer){clearTimeout(scrollSafetyTimer);}// Remove pre-hide attributes\nfor(var rph=0;rph<preHiddenEls.length;rph++){try{preHiddenEls[rph].removeAttribute(\"data-choreo-hide\");}catch(e){}}if(preHideStyleTag&&preHideStyleTag.parentNode&&!document.querySelector(\"[data-choreo-hide]\")){preHideStyleTag.parentNode.removeChild(preHideStyleTag);preHideStyleTag=null;}if(mutObs){try{mutObs.disconnect();}catch(e){}}if(intObs){try{intObs.disconnect();}catch(e){}}if(parentDoneHandler){document.removeEventListener(\"choreo-done\",parentDoneHandler);}if(parentResetHandler){document.removeEventListener(\"choreo-reset\",parentResetHandler);}var cleanupStore=getStore();if(cleanupStore)cleanupStore.cancelPendingGroup(baseId);if(cleanupStore&&parent){cleanupStore.unregisterGroupParent(baseId,parent);}// ── GSAP cleanup ──\n// gsap.context().revert() kills all ScrollTriggers created\n// within the context, removes spacers, restores pinned\n// element styles, and cleans up event listeners.\nif(gsapCtx){gsapCtx.revert();gsapCtx=null;}if(gsapScrollTrigger){gsapScrollTrigger.kill();gsapScrollTrigger=null;}// Cancel WAAPI animations (not tracked by gsap.context)\nfor(var sa=0;sa<scrollAnims.length;sa++){try{scrollAnims[sa].cancel();}catch(e){}}// Remove scrubbing attributes\nfor(var pe=0;pe<scrollAnimFinalStyles.length;pe++){try{scrollAnimFinalStyles[pe].el.removeAttribute(\"data-choreo-scrubbing\");}catch(e){}}if(scrubStyleTag&&scrubStyleTag.parentNode&&!document.querySelector(\"[data-choreo-scrubbing]\")){scrubStyleTag.parentNode.removeChild(scrubStyleTag);}// Restore contain on ancestors\nfor(var oc=0;oc<scrollOverflowAncestors.length;oc++){scrollOverflowAncestors[oc].el.style.setProperty(\"contain\",scrollOverflowAncestors[oc].orig);}scrollOverflowAncestors=[];// Clean pin-need attributes\nif(pinSectionEl){pinSectionEl.removeAttribute(\"data-choreo-pin-need-\"+baseId);if(pinSectionEl.getAttribute(\"data-choreo-gsap-pin\")===baseId){pinSectionEl.removeAttribute(\"data-choreo-gsap-pin\");}if(pinSectionEl.getAttribute(\"data-choreo-priority-pin\")===baseId){pinSectionEl.removeAttribute(\"data-choreo-priority-pin\");// Also clean ancestor priority markers\nvar _ppClean=pinSectionEl.parentElement;while(_ppClean&&_ppClean!==document.body){if(_ppClean.getAttribute(\"data-choreo-priority-pin\")===baseId){_ppClean.removeAttribute(\"data-choreo-priority-pin\");}_ppClean=_ppClean.parentElement;}}}// Restore parent overflow\nif(parent){parent.removeAttribute(\"data-choreo-wrapper\");if(parentOrigOverflow){parent.style.setProperty(\"overflow\",parentOrigOverflow);}else{parent.style.removeProperty(\"overflow\");}parent.style.removeProperty(\"clip-path\");parent.style.removeProperty(\"transition\");}unregisterAll(getStore());};},[rescanGeneration,baseId,scanMode,excludeSelector,splitText,trigger,viewOffset,viewRepeat,waitForParent,scrollLength,scrollStart,scrollStartOffset,scrollPin,pinPriority,scrollOnce,enterPreset,exitPreset,enterEnabled,exitEnabled,sortPriority,priorityGap,delayOffset,mobileEnabled,duration,stagger,easingPreset,staggerDirection,distance,enterMaskDirection,exitMaskDirection,maskStart,maskPreview,maskViewportClip,maskViewportPadding,maskShiftX,maskShiftY,maskOpacity,blurAmount,scaleFrom,enterScaleDirection,scaleOpacity,exitTimeout,enterDelay,enterOpacity,enterOffsetX,enterOffsetY,enterScale,enterRotateX,enterRotateY,enterRotateZ,enterBlur,enterPerspective,exitOpacity,exitOffsetX,exitOffsetY,exitScale,exitRotateX,exitRotateY,exitRotateZ,exitBlur,exitPerspective,debugMarkers]);return /*#__PURE__*/_jsx(\"div\",{ref:node=>{markerRef.current=node;if(node){node.style.setProperty(\"position\",\"absolute\",\"important\");// Framer wraps every component in a container div that\n// participates in Stack/flex layout.  Collapse it so the\n// marker takes zero space in Stacks and tickers.\nvar framerWrapper=node.parentElement;if(framerWrapper){framerWrapper.style.setProperty(\"position\",\"absolute\",\"important\");framerWrapper.style.setProperty(\"width\",\"0\",\"important\");framerWrapper.style.setProperty(\"height\",\"0\",\"important\");framerWrapper.style.setProperty(\"min-width\",\"0\",\"important\");framerWrapper.style.setProperty(\"min-height\",\"0\",\"important\");framerWrapper.style.setProperty(\"overflow\",\"hidden\",\"important\");framerWrapper.style.setProperty(\"pointer-events\",\"none\",\"important\");framerWrapper.style.setProperty(\"padding\",\"0\",\"important\");framerWrapper.style.setProperty(\"margin\",\"0\",\"important\");framerWrapper.style.setProperty(\"flex\",\"0 0 0px\",\"important\");}}},\"data-choreo-marker\":\"1\",\"data-choreo-wait\":waitForParent?\"1\":undefined,style:{width:0,height:0,overflow:\"hidden\",pointerEvents:\"none\",opacity:0}});}PageChoreographer.displayName=\"Page Choreographer\";// ─── Property Controls ───────────────────────────────────────────────────────\naddPropertyControls(PageChoreographer,{// ── Targets ──────────────────────────────────────────────────────────────\nscanMode:{type:ControlType.Enum,title:\"Scan Mode\",defaultValue:\"siblings\",options:[\"siblings\",\"children\"],optionTitles:[\"Auto\",\"Children\"],description:\"Auto detects siblings and CMS collections. Children targets direct children.\"},excludeSelector:{type:ControlType.String,title:\"Exclude\",defaultValue:\"\",placeholder:\"Layer Names\",description:\"Layer names to skip (comma-separated). e.g. Load More, Button\"},splitText:{type:ControlType.Enum,title:\"Split Text\",defaultValue:\"none\",options:[\"none\",\"lines\",\"words\",\"chars\"],optionTitles:[\"None\",\"Lines\",\"Words\",\"Characters\"],description:\"Animate individual fragments. Avoid Characters on long paragraphs.\"},// ── Trigger ──────────────────────────────────────────────────────────────\ntrigger:{type:ControlType.Enum,title:\"Trigger\",defaultValue:\"onLoad\",options:[\"onLoad\",\"inView\",\"onScroll\"],optionTitles:[\"On Load\",\"In View\",\"On Scroll\"]},scrollLength:{type:ControlType.Number,title:\"Scroll Distance\",defaultValue:500,min:100,max:5e3,step:50,unit:\"px\",description:\"Pixels of scrolling to complete the animation.\",hidden:function(props){return props.trigger!==\"onScroll\";}},scrollStart:{type:ControlType.Enum,title:\"Scroll Start\",defaultValue:\"bottom\",options:[\"top\",\"center\",\"bottom\"],optionTitles:[\"Top\",\"Center\",\"Bottom\"],optionIcons:[\"align-top\",\"align-middle\",\"align-bottom\"],description:\"Section position when animation begins. Top = entering, Center = mid, Bottom = at top.\",hidden:function(props){return props.trigger!==\"onScroll\";}},scrollStartOffset:{type:ControlType.Number,title:\"↳ Offset\",defaultValue:0,min:-100,max:100,step:5,unit:\"%\",description:\"Shift start within the scroll range. Use to stagger multiple PCs in one section.\",hidden:function(props){return props.trigger!==\"onScroll\";}},scrollPin:{type:ControlType.Boolean,title:\"Pin Section\",defaultValue:true,description:\"Fix the section in place while the animation plays.\",hidden:function(props){return props.trigger!==\"onScroll\";}},pinPriority:{type:ControlType.Boolean,title:\"↳ Pin Leader\",defaultValue:false,description:\"This PC owns the pin. Others in the same section defer to it.\",hidden:function(props){return props.trigger!==\"onScroll\"||!props.scrollPin;}},scrollOnce:{type:ControlType.Boolean,title:\"Play Once\",defaultValue:false,description:\"Animation plays once and won't reverse on scroll-back.\",hidden:function(props){return props.trigger!==\"onScroll\";}},viewOffset:{type:ControlType.Number,title:\"Trigger Offset\",defaultValue:100,min:-200,max:500,step:10,unit:\"px\",description:\"Distance below viewport to trigger. Higher = triggers earlier.\",hidden:function(props){return props.trigger!==\"inView\";}},viewRepeat:{type:ControlType.Boolean,title:\"Repeat\",defaultValue:false,description:\"Re-trigger each time the element scrolls into view.\",hidden:function(props){return props.trigger!==\"inView\";}},waitForParent:{type:ControlType.Boolean,title:\"Wait for Parent\",defaultValue:false,description:\"Wait for a parent PC to finish before animating.\",hidden:function(props){return props.trigger!==\"inView\";}},// ── Timing ───────────────────────────────────────────────────────────────\nduration:{type:ControlType.Number,title:\"Duration\",defaultValue:.6,min:.1,max:3,step:.05,unit:\"s\",description:\"Duration per element.\"},easingPreset:{type:ControlType.Enum,title:\"Easing\",defaultValue:\"smooth\",options:[\"smooth\",\"snappy\",\"dramatic\",\"gentle\",\"bounce\",\"linear\"],optionTitles:[\"Smooth\",\"Snappy\",\"Dramatic\",\"Gentle\",\"Bounce\",\"Linear\"]},stagger:{type:ControlType.Number,title:\"Stagger\",defaultValue:.06,min:0,max:.5,step:.01,unit:\"s\",description:\"Delay between each element.\"},staggerDirection:{type:ControlType.Enum,title:\"↳ Order\",defaultValue:\"leftToRight\",options:[\"leftToRight\",\"rightToLeft\",\"topToBottom\",\"bottomToTop\",\"rowMajor\",\"columnMajor\",\"random\"],optionTitles:[\"Left → Right\",\"Right → Left\",\"Top → Bottom\",\"Bottom → Top\",\"Row Major\",\"Column Major\",\"Random\"]},enterDelay:{type:ControlType.Number,title:\"Initial Delay\",defaultValue:.05,min:0,max:2,step:.05,unit:\"s\",description:\"Wait before the first animation on page load.\",hidden:function(props){return props.trigger!==\"onLoad\";}},delayOffset:{type:ControlType.Number,title:\"Delay Offset\",defaultValue:0,min:-1,max:2,step:.01,unit:\"s\",description:\"Shift this group's start time. Negative = overlap with previous group.\"},// ── Enter ────────────────────────────────────────────────────────────────\nenterEnabled:{type:ControlType.Boolean,title:\"Enter\",defaultValue:true},enterPreset:{type:ControlType.Enum,title:\"Effect\",defaultValue:\"fadeUp\",options:[\"fadeUp\",\"fadeDown\",\"fadeLeft\",\"fadeRight\",\"maskReveal\",\"scaleIn\",\"blurIn\",\"custom\"],optionTitles:[\"Fade Up\",\"Fade Down\",\"Fade Left\",\"Fade Right\",\"Mask Reveal\",\"Scale In\",\"Blur In\",\"Custom\"],hidden:function(props){return props.enterEnabled===false;}},distance:{type:ControlType.Number,title:\"↳ Distance\",defaultValue:40,min:0,max:2e3,step:5,unit:\"px\",description:\"How far elements travel during the animation.\",hidden:function(props){var directionalEnter=[\"fadeUp\",\"fadeDown\",\"fadeLeft\",\"fadeRight\"];var directionalExit=[\"riseWave\",\"fadeDown\",\"fadeLeft\",\"fadeRight\",\"blurLift\"];var enterUsesDistance=directionalEnter.indexOf(props.enterPreset)!==-1;var exitUsesDistance=directionalExit.indexOf(props.exitPreset)!==-1;return!enterUsesDistance&&!exitUsesDistance;}},enterMaskDirection:{type:ControlType.Enum,title:\"↳ Direction\",defaultValue:\"left\",options:[\"none\",\"left\",\"right\",\"up\",\"down\",\"topLeft\",\"topRight\",\"bottomLeft\",\"bottomRight\",\"random\"],optionTitles:[\"None\",\"Left → Right\",\"Right → Left\",\"Top → Bottom\",\"Bottom → Top\",\"↘ Top-Left\",\"↙ Top-Right\",\"↗ Bottom-Left\",\"↖ Bottom-Right\",\"Random\"],hidden:function(props){if(props.enterEnabled===false)return true;return props.enterPreset!==\"maskReveal\"&&props.enterPreset!==\"scaleIn\";}},maskShiftX:{type:ControlType.Number,title:\"↳ Shift X\",defaultValue:0,min:-200,max:200,step:1,unit:\"px\",description:\"Horizontal offset of the mask edge.\",hidden:function(props){var enterMatch=props.enterEnabled!==false&&(props.enterPreset===\"maskReveal\"||props.enterPreset===\"scaleIn\"&&props.enterMaskDirection&&props.enterMaskDirection!==\"none\");var exitMatch=props.exitEnabled!==false&&props.exitPreset===\"maskOut\";return!enterMatch&&!exitMatch;}},maskShiftY:{type:ControlType.Number,title:\"↳ Shift Y\",defaultValue:0,min:-200,max:200,step:1,unit:\"px\",description:\"Vertical offset of the mask edge.\",hidden:function(props){var enterMatch=props.enterEnabled!==false&&(props.enterPreset===\"maskReveal\"||props.enterPreset===\"scaleIn\"&&props.enterMaskDirection&&props.enterMaskDirection!==\"none\");var exitMatch=props.exitEnabled!==false&&props.exitPreset===\"maskOut\";return!enterMatch&&!exitMatch;}},maskStart:{type:ControlType.Number,title:\"↳ Initial Reveal\",defaultValue:0,min:0,max:100,step:5,unit:\"%\",description:\"Visibility before animation. 0% = fully masked, 50% = half visible.\",hidden:function(props){if(props.enterPreset===\"maskReveal\")return false;if(props.enterPreset===\"scaleIn\"&&props.enterMaskDirection&&props.enterMaskDirection!==\"none\")return false;return true;}},maskPreview:{type:ControlType.Boolean,title:\"  ↳ Show on Mount\",defaultValue:false,description:\"Show at Initial Reveal % on mount instead of hiding until scroll.\",hidden:function(props){var hasMask=props.enterPreset===\"maskReveal\"||props.enterPreset===\"scaleIn\"&&props.enterMaskDirection&&props.enterMaskDirection!==\"none\";return!hasMask||(props.maskStart||0)<=0||props.trigger!==\"onScroll\";}},maskViewportClip:{type:ControlType.Boolean,title:\"↳ Viewport Clip\",defaultValue:false,description:\"Clip reveal to viewport edges.\",hidden:function(props){var hasMask=props.enterPreset===\"maskReveal\"||props.enterPreset===\"scaleIn\"&&props.enterMaskDirection&&props.enterMaskDirection!==\"none\";return!hasMask||props.trigger!==\"onScroll\";}},maskViewportPadding:{type:ControlType.Number,title:\"  ↳ Inset\",defaultValue:0,min:0,max:200,step:1,unit:\"px\",description:\"Inset from screen edges.\",hidden:function(props){var hasMask=props.enterPreset===\"maskReveal\"||props.enterPreset===\"scaleIn\"&&props.enterMaskDirection&&props.enterMaskDirection!==\"none\";return!hasMask||props.trigger!==\"onScroll\"||!props.maskViewportClip;}},maskOpacity:{type:ControlType.Number,title:\"↳ Start Opacity\",defaultValue:1,min:0,max:1,step:.05,description:\"Opacity before reveal. Lower = adds fade-in.\",hidden:function(props){var enterMatch=props.enterEnabled!==false&&(props.enterPreset===\"maskReveal\"||props.enterPreset===\"scaleIn\"&&props.enterMaskDirection&&props.enterMaskDirection!==\"none\");var exitMatch=props.exitEnabled!==false&&props.exitPreset===\"maskOut\";return!enterMatch&&!exitMatch;}},scaleFrom:{type:ControlType.Number,title:\"↳ Scale From\",defaultValue:.92,min:0,max:2,step:.01,description:\"Starting scale. Below 1 = grow in, above 1 = shrink in.\",hidden:function(props){return props.enterPreset!==\"scaleIn\"&&props.exitPreset!==\"scaleFadeGrid\"&&props.exitPreset!==\"scaleOut\";}},enterScaleDirection:{type:ControlType.Enum,title:\"↳ Origin\",defaultValue:\"center\",options:[\"center\",\"left\",\"right\",\"up\",\"down\",\"topLeft\",\"topRight\",\"bottomLeft\",\"bottomRight\"],optionTitles:[\"Center\",\"← Left\",\"→ Right\",\"↑ Top\",\"↓ Bottom\",\"↘ Top-Left\",\"↙ Top-Right\",\"↗ Bottom-Left\",\"↖ Bottom-Right\"],description:\"Transform origin — the point elements scale from.\",hidden:function(props){return props.enterPreset!==\"scaleIn\";}},scaleOpacity:{type:ControlType.Number,title:\"↳ Start Opacity\",defaultValue:0,min:0,max:1,step:.05,description:\"Set to 1 for a pure scale effect without fade.\",hidden:function(props){return props.enterPreset!==\"scaleIn\";}},blurAmount:{type:ControlType.Number,title:\"↳ Blur Radius\",defaultValue:8,min:0,max:50,step:1,unit:\"px\",description:\"Starting blur intensity that clears as elements animate in.\",hidden:function(props){return props.enterPreset!==\"blurIn\"&&props.exitPreset!==\"blurLift\";}},enterOpacity:{type:ControlType.Number,title:\"↳ Opacity\",defaultValue:0,min:0,max:1,step:.05,hidden:function(props){return props.enterEnabled===false||props.enterPreset!==\"custom\";}},enterOffsetX:{type:ControlType.Number,title:\"↳ Offset X\",defaultValue:0,min:-2e3,max:2e3,step:5,unit:\"px\",hidden:function(props){return props.enterEnabled===false||props.enterPreset!==\"custom\";}},enterOffsetY:{type:ControlType.Number,title:\"↳ Offset Y\",defaultValue:40,min:-2e3,max:2e3,step:5,unit:\"px\",hidden:function(props){return props.enterEnabled===false||props.enterPreset!==\"custom\";}},enterScale:{type:ControlType.Number,title:\"↳ Scale\",defaultValue:1,min:0,max:2,step:.01,hidden:function(props){return props.enterEnabled===false||props.enterPreset!==\"custom\";}},enterRotateX:{type:ControlType.Number,title:\"↳ Rotate X\",defaultValue:0,min:-360,max:360,step:5,unit:\"\\xb0\",hidden:function(props){return props.enterEnabled===false||props.enterPreset!==\"custom\";}},enterRotateY:{type:ControlType.Number,title:\"↳ Rotate Y\",defaultValue:0,min:-360,max:360,step:5,unit:\"\\xb0\",hidden:function(props){return props.enterEnabled===false||props.enterPreset!==\"custom\";}},enterRotateZ:{type:ControlType.Number,title:\"↳ Rotate Z\",defaultValue:0,min:-360,max:360,step:5,unit:\"\\xb0\",hidden:function(props){return props.enterEnabled===false||props.enterPreset!==\"custom\";}},enterPerspective:{type:ControlType.Number,title:\"↳ Perspective\",defaultValue:1e3,min:100,max:3e3,step:50,unit:\"px\",hidden:function(props){if(props.enterEnabled===false||props.enterPreset!==\"custom\")return true;return props.enterRotateX===0&&props.enterRotateY===0;}},enterBlur:{type:ControlType.Number,title:\"↳ Blur\",defaultValue:0,min:0,max:50,step:1,unit:\"px\",hidden:function(props){return props.enterEnabled===false||props.enterPreset!==\"custom\";}},// ── Exit ─────────────────────────────────────────────────────────────────\nexitEnabled:{type:ControlType.Boolean,title:\"Exit\",defaultValue:true},exitPreset:{type:ControlType.Enum,title:\"Effect\",defaultValue:\"riseWave\",options:[\"riseWave\",\"fadeDown\",\"fadeLeft\",\"fadeRight\",\"maskOut\",\"blurLift\",\"scaleFadeGrid\",\"scaleOut\",\"custom\"],optionTitles:[\"Rise Wave\",\"Fade Down\",\"Fade Left\",\"Fade Right\",\"Mask Out\",\"Blur Lift\",\"Scale Fade\",\"Scale Out\",\"Custom\"],hidden:function(props){return props.exitEnabled===false;}},exitMaskDirection:{type:ControlType.Enum,title:\"↳ Direction\",defaultValue:\"left\",options:[\"left\",\"right\",\"up\",\"down\",\"topLeft\",\"topRight\",\"bottomLeft\",\"bottomRight\",\"random\"],optionTitles:[\"Left → Right\",\"Right → Left\",\"Top → Bottom\",\"Bottom → Top\",\"↘ Top-Left\",\"↙ Top-Right\",\"↗ Bottom-Left\",\"↖ Bottom-Right\",\"Random\"],hidden:function(props){return props.exitEnabled===false||props.exitPreset!==\"maskOut\";}},exitOpacity:{type:ControlType.Number,title:\"↳ Opacity\",defaultValue:0,min:0,max:1,step:.05,hidden:function(props){return props.exitEnabled===false||props.exitPreset!==\"custom\";}},exitOffsetX:{type:ControlType.Number,title:\"↳ Offset X\",defaultValue:0,min:-2e3,max:2e3,step:5,unit:\"px\",hidden:function(props){return props.exitEnabled===false||props.exitPreset!==\"custom\";}},exitOffsetY:{type:ControlType.Number,title:\"↳ Offset Y\",defaultValue:-40,min:-2e3,max:2e3,step:5,unit:\"px\",hidden:function(props){return props.exitEnabled===false||props.exitPreset!==\"custom\";}},exitScale:{type:ControlType.Number,title:\"↳ Scale\",defaultValue:1,min:0,max:2,step:.01,hidden:function(props){return props.exitEnabled===false||props.exitPreset!==\"custom\";}},exitRotateX:{type:ControlType.Number,title:\"↳ Rotate X\",defaultValue:0,min:-360,max:360,step:5,unit:\"\\xb0\",hidden:function(props){return props.exitEnabled===false||props.exitPreset!==\"custom\";}},exitRotateY:{type:ControlType.Number,title:\"↳ Rotate Y\",defaultValue:0,min:-360,max:360,step:5,unit:\"\\xb0\",hidden:function(props){return props.exitEnabled===false||props.exitPreset!==\"custom\";}},exitRotateZ:{type:ControlType.Number,title:\"↳ Rotate Z\",defaultValue:0,min:-360,max:360,step:5,unit:\"\\xb0\",hidden:function(props){return props.exitEnabled===false||props.exitPreset!==\"custom\";}},exitPerspective:{type:ControlType.Number,title:\"↳ Perspective\",defaultValue:1e3,min:100,max:3e3,step:50,unit:\"px\",hidden:function(props){if(props.exitEnabled===false||props.exitPreset!==\"custom\")return true;return props.exitRotateX===0&&props.exitRotateY===0;}},exitBlur:{type:ControlType.Number,title:\"↳ Blur\",defaultValue:0,min:0,max:50,step:1,unit:\"px\",hidden:function(props){return props.exitEnabled===false||props.exitPreset!==\"custom\";}},exitTimeout:{type:ControlType.Number,title:\"Exit Timeout\",defaultValue:3,min:.5,max:10,step:.5,unit:\"s\",description:\"Max wait time for the exit animation to finish before navigating. Prevents broken links if exit stalls.\"},// ── Advanced ─────────────────────────────────────────────────────────────\nsortPriority:{type:ControlType.Number,title:\"Group Order\",defaultValue:0,min:-10,max:10,step:1,description:\"Animation order across PC groups. Lower numbers animate first.\",hidden:function(props){return props.trigger===\"onScroll\";}},priorityGap:{type:ControlType.Number,title:\"↳ Gap\",defaultValue:0,min:-3,max:5,step:.05,unit:\"s\",description:\"Pause between groups. Negative values create overlap.\",hidden:function(props){return props.trigger===\"onScroll\";}},mobileEnabled:{type:ControlType.Boolean,title:\"Mobile\",defaultValue:true,description:\"Enable this animation on screens under 768px.\"},debugMarkers:{type:ControlType.Boolean,title:\"Debug Markers\",defaultValue:false,description:\"Show ScrollTrigger start/end markers in preview.\",hidden:function(props){return props.trigger!==\"onScroll\";}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PageChoreographer\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PageChoreographer.map","// Generated by Framer (af215f2)\nexport default function metadata(params,activeLocale){return{description:\"Portfolio of James Choe, a Los Angeles–based UI/UX and web designer creating thoughtful digital experiences with a background in 3D and visual design.\",favicon:\"https://framerusercontent.com/assets/OfR8Wq9LWqEhtYBs0GgIhLEZY.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/cHsqHSkYdEF6iVsM3V68K7FQpX0.jpg\",title:\"James Choe – Digital Designer | UI/UX & Web\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}