{"version":3,"file":"ScrollEffects.78HKQLi9.mjs","names":["ArrowRight","React.useContext","React.useMemo","React.Fragment","React.forwardRef","useRef","React.useId","RichText","useRef","useState"],"sources":["https:/framerusercontent.com/modules/2PzKqIcxoTojmOyZrYe8/AjvAvBjwGEHclp1yuX1k/G9llDfNAK.js","https:/framerusercontent.com/modules/78KQhnwiCGjpQA0Oc1x0/KQeReb1HiyuZ9UAii6he/ScrollEffects.js"],"sourcesContent":["// Generated by Framer (3280217)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFonts,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import ArrowRight from\"https://framerusercontent.com/modules/hI8timTlk8Fd762eIxi0/slkoCsyKxQigbCO9Bbjr/ae1wERNQB.js\";const ArrowRightFonts=getFonts(ArrowRight);const enabledGestures={R264ziVqH:{hover:true}};const serializationHash=\"framer-Dw1Pz\";const variantClassNames={R264ziVqH:\"framer-v-wm4gci\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const WWOE58FSe=undefined;const BlRNv4ltr=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,link,title,width,...props})=>{return{...props,BlRNv4ltr:title??props.BlRNv4ltr??\"Case Study\",WWOE58FSe:link??props.WWOE58FSe};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,BlRNv4ltr,WWOE58FSe,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"R264ziVqH\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:WWOE58FSe,motionChild:true,nodeId:\"R264ziVqH\",openInNewTab:false,scopeId:\"G9llDfNAK\",children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-wm4gci\",className,classNames)} framer-gq7xlf`,\"data-framer-name\":\"Primary\",\"data-reset\":\"button\",layoutDependency:layoutDependency,layoutId:\"R264ziVqH\",ref:refBinding,style:{...style},...addPropertyOverrides({\"R264ziVqH-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h3,{style:{\"--font-selector\":\"RlM7UG9wcGlucy1tZWRpdW0=\",\"--framer-font-family\":'\"Poppins\", \"Poppins Placeholder\", sans-serif',\"--framer-font-size\":\"18px\",\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"1.1em\",\"--framer-text-color\":\"var(--extracted-a0htzi, rgb(255, 107, 53))\"},children:\"Case Study\"})}),className:\"framer-14lf5on\",fonts:[\"FS;Poppins-medium\"],layoutDependency:layoutDependency,layoutId:\"s282DU58p\",style:{\"--extracted-a0htzi\":\"rgb(255, 107, 53)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:BlRNv4ltr,variants:{\"R264ziVqH-hover\":{\"--extracted-a0htzi\":\"var(--token-32608ae5-57c2-440e-9cd4-554495ba7953, rgb(217, 76, 31))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({\"R264ziVqH-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h3,{style:{\"--font-selector\":\"RlM7UG9wcGlucy1tZWRpdW0=\",\"--framer-font-family\":'\"Poppins\", \"Poppins Placeholder\", sans-serif',\"--framer-font-size\":\"18px\",\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"1.1em\",\"--framer-text-color\":\"var(--extracted-a0htzi, var(--token-32608ae5-57c2-440e-9cd4-554495ba7953, rgb(217, 76, 31)))\"},children:\"Case Study\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(ArrowRight,{animated:true,className:\"framer-16wg8zw\",\"data-framer-name\":\"Arrow\",layoutDependency:layoutDependency,layoutId:\"sthnRS8LI\",style:{\"--1m6trwb\":0,\"--21h8s6\":\"var(--token-f7773237-1c56-487f-a910-8333f20052c1)\",\"--pgex8v\":1.5,rotate:0},variants:{\"R264ziVqH-hover\":{\"--21h8s6\":\"var(--token-32608ae5-57c2-440e-9cd4-554495ba7953)\",rotate:-45}}})]})})})})});});const css=[\".framer-Dw1Pz.framer-gq7xlf, .framer-Dw1Pz .framer-gq7xlf { display: block; }\",\".framer-Dw1Pz.framer-wm4gci { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-Dw1Pz .framer-14lf5on { -webkit-user-select: none; flex: none; height: auto; position: relative; user-select: none; white-space: pre; width: auto; }\",\".framer-Dw1Pz .framer-16wg8zw { flex: none; height: auto; position: relative; width: 22px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 20\n * @framerIntrinsicWidth 139\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"Qymubu_3U\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"BlRNv4ltr\":\"title\",\"WWOE58FSe\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerG9llDfNAK=withCSS(Component,css,\"framer-Dw1Pz\");export default FramerG9llDfNAK;FramerG9llDfNAK.displayName=\"Button\";FramerG9llDfNAK.defaultProps={height:20,width:139};addPropertyControls(FramerG9llDfNAK,{BlRNv4ltr:{defaultValue:\"Case Study\",displayTextArea:false,title:\"Title\",type:ControlType.String},onBlRNv4ltrChange:{changes:\"BlRNv4ltr\",type:ControlType.ChangeHandler},WWOE58FSe:{title:\"Link\",type:ControlType.Link}});addFonts(FramerG9llDfNAK,[{explicitInter:true,fonts:[{cssFamilyName:\"Poppins\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Poppins\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/K4RHKGAGLQZBXEZQT2O2AGSLKJF2E4YC/JRUTXNFPWLFGIEVSSEYOW7EP7TYM3V6A/UCDYLFFGLZRGCFY5GYDYM5LDB52BAR5M.woff2\",weight:\"500\"}]},...ArrowRightFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerG9llDfNAK\",\"slots\":[],\"annotations\":{\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"Qymubu_3U\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"BlRNv4ltr\\\":\\\"title\\\",\\\"WWOE58FSe\\\":\\\"link\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"139\",\"framerIntrinsicHeight\":\"20\",\"framerAutoSizeImages\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./G9llDfNAK.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{useMotionValueEvent,useReducedMotion,useScroll,useTransform}from\"framer-motion\";/**\n * Scroll effects for the pinned home hero (\"fly into the planet\").\n *\n * The hero section is taller than the screen (190% of the screen height, 160% on phones)\n * and its stage sticks to the top while you scroll through it. Both effects follow the\n * scroll position directly: at position 0 everything is in its normal state,\n * so nothing can jump on load.\n *\n * Adjust the values here:\n */const GLOBE_END_SCALE=3.6// globe grows beyond the screen edges\n;const GLOBE_FADE_START=.35// globe starts fading at 35% of the pinned scroll\n;const GLOBE_FADE_END=.85// and is gone at 85%\n;const CONTENT_END_Y=-140// hero text moves up by this many px\n;const CONTENT_FADE_START=.05;const CONTENT_FADE_END=.4;// Pinned scroll distance as a share of the screen height (hero height minus one screen)\nconst PIN_DISTANCE=.9;const PIN_DISTANCE_PHONE=.6;const PHONE_MAX_WIDTH=809.98;function pinDistance(){if(typeof window===\"undefined\")return 720;const share=window.innerWidth<=PHONE_MAX_WIDTH?PIN_DISTANCE_PHONE:PIN_DISTANCE;return(window.innerHeight||800)*share;}function progress(scroll){return Math.min(1,Math.max(0,scroll/pinDistance()));}// Smooth step between a and b\nfunction smooth(a,b,v){const x=Math.min(1,Math.max(0,(v-a)/(b-a)));return x*x*(3-2*x);}export function withGlobeZoom(Component){return function GlobeZoom(props){const reduceMotion=useReducedMotion();const{scrollY}=useScroll();const scale=useTransform(scrollY,v=>1+(GLOBE_END_SCALE-1)*smooth(0,1,progress(v)));const opacity=useTransform(scrollY,v=>1-smooth(GLOBE_FADE_START,GLOBE_FADE_END,progress(v)));if(reduceMotion)return /*#__PURE__*/_jsx(Component,{...props});return /*#__PURE__*/_jsx(Component,{...props,style:{...props.style,scale,opacity}});};}export function withHeroFade(Component){return function HeroFade(props){const reduceMotion=useReducedMotion();const{scrollY}=useScroll();const y=useTransform(scrollY,v=>CONTENT_END_Y*progress(v));const opacity=useTransform(scrollY,v=>1-smooth(CONTENT_FADE_START,CONTENT_FADE_END,progress(v)));if(reduceMotion)return /*#__PURE__*/_jsx(Component,{...props});return /*#__PURE__*/_jsx(Component,{...props,style:{...props.style,y,opacity}});};}/**\n * Stacked project cards: while the next card slides over this one,\n * this card gets slightly smaller and darker. Desktop and tablet only\n * (cards are not stacked on phones). Not used on the last card.\n */const CARD_END_SCALE=.95// card size when fully covered\n;const CARD_END_BRIGHTNESS=.55// card brightness when fully covered\n;// The sticky element is the instance wrapper; walk up a few levels to find it\nfunction findSticky(el){let node=el;for(let i=0;i<4&&node;i++){if(getComputedStyle(node).position===\"sticky\")return node;node=node.parentElement;}return el;}export function withCardStack(Component){return function CardStack(props){const reduceMotion=useReducedMotion();const wrapRef=useRef(null);// Works directly on the DOM, independent of how Framer forwards refs and style\n// props to component instances. A \"display: contents\" wrapper adds no box, so the\n// sticky layout of the card stays exactly as built in Framer.\nuseEffect(()=>{if(typeof window===\"undefined\"||reduceMotion)return;const wrap=wrapRef.current;if(!wrap)return;const isSticky=el=>getComputedStyle(el).position===\"sticky\";// Framer nests each card in its own wrappers (breakpoint + sticky container),\n// so the sticky card is an ANCESTOR of this wrapper, and the next card is the\n// next sticky element inside the shared card stack, not a direct sibling.\nconst findSticky=el=>{let n=el;while(n&&n!==document.body){if(isSticky(n))return n;n=n.parentElement;}return null;};const findNext=sticky=>{let anc=sticky.parentElement;while(anc&&anc!==document.body){const all=Array.from(anc.querySelectorAll(\"*\")).filter(e=>isSticky(e)&&e.offsetHeight>0);if(all.length>1){const i=all.indexOf(sticky);return i>=0?all[i+1]??null:null;}anc=anc.parentElement;}return null;};let frame=0;const update=()=>{frame=0;const visual=wrap.firstElementChild;const sticky=findSticky(wrap);if(!visual||!sticky)return;let covered=0;const next=window.innerWidth>PHONE_MAX_WIDTH?findNext(sticky):null;if(next){const top=sticky.getBoundingClientRect().top;const bottom=top+sticky.offsetHeight;const nextTop=next.getBoundingClientRect().top;const stickyTop=parseFloat(getComputedStyle(sticky).top)||0;const nextStickyTop=parseFloat(getComputedStyle(next).top)||stickyTop;const span=Math.max(1,sticky.offsetHeight-(nextStickyTop-stickyTop));covered=Math.min(1,Math.max(0,(bottom-nextTop)/span));}visual.style.transformOrigin=\"50% 0%\";visual.style.transform=covered>0?`scale(${1-(1-CARD_END_SCALE)*covered})`:\"\";visual.style.filter=covered>0?`brightness(${1-(1-CARD_END_BRIGHTNESS)*covered})`:\"\";};const onScroll=()=>{if(!frame)frame=requestAnimationFrame(update);};update();window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",onScroll);return()=>{cancelAnimationFrame(frame);window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",onScroll);};},[reduceMotion]);return /*#__PURE__*/_jsx(\"div\",{ref:wrapRef,style:{display:\"contents\"},children:/*#__PURE__*/_jsx(Component,{...props})});};}/**\n * Case study cover: grows from slightly inset to full size\n * while it scrolls from the bottom of the screen to the top.\n */const COVER_START_SCALE=.94;export function withCoverGrow(Component){return function CoverGrow(props){const reduceMotion=useReducedMotion();const ref=useRef(null);const{scrollYProgress}=useScroll({target:ref,offset:[\"start end\",\"start start\"]});const scale=useTransform(scrollYProgress,[0,1],[COVER_START_SCALE,1]);if(reduceMotion)return /*#__PURE__*/_jsx(Component,{...props,ref:ref});return /*#__PURE__*/_jsx(Component,{...props,ref:ref,style:{...props.style,scale}});};}/**\n * Horizontal gallery: apply to the gallery track frame.\n * The track contains a sticky stage with a frame named \"Gallery Row\".\n * The track gets exactly as tall as needed, and while you scroll through it\n * the row slides sideways. Desktop only: tablets and phones show a normal grid.\n */const TABLET_MAX_WIDTH=1199.98;export function withHorizontalGallery(Component){return function HorizontalGallery(props){const reduceMotion=useReducedMotion();const ref=useRef(null);const travel=useRef(0);const[height,setHeight]=useState(null);const{scrollYProgress}=useScroll({target:ref,offset:[\"start start\",\"end end\"]});const row=()=>ref.current?.querySelector('[data-framer-name=\"Gallery Row\"]');useEffect(()=>{if(typeof window===\"undefined\"||reduceMotion)return;const measure=()=>{const r=row();if(!r||window.innerWidth<=TABLET_MAX_WIDTH){travel.current=0;if(r)r.style.transform=\"\";setHeight(null);return;}const visible=r.parentElement?.clientWidth??window.innerWidth;travel.current=Math.max(0,r.scrollWidth-visible);setHeight(window.innerHeight+travel.current);};measure();const t=window.setTimeout(measure,600);window.addEventListener(\"resize\",measure);return()=>{window.clearTimeout(t);window.removeEventListener(\"resize\",measure);};},[reduceMotion]);useMotionValueEvent(scrollYProgress,\"change\",p=>{const r=row();if(r&&travel.current>0)r.style.transform=`translateX(${-p*travel.current}px)`;// Counter \"01 / 04\": a text layer named \"Counter\" inside the gallery\nconst counter=ref.current?.querySelector('[data-framer-name=\"Counter\"]');const target=counter?.querySelector(\"p, span, h1, h2, h3, h4, h5, h6\");if(r&&target){const n=r.children.length;const i=Math.min(n,1+Math.round(p*(n-1)));target.textContent=`${String(i).padStart(2,\"0\")} / ${String(n).padStart(2,\"0\")}`;}});const style=height?{...props.style,height}:props.style;return /*#__PURE__*/_jsx(Component,{...props,ref:ref,style:style});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withGlobeZoom\":{\"type\":\"reactHoc\",\"name\":\"withGlobeZoom\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHorizontalGallery\":{\"type\":\"reactHoc\",\"name\":\"withHorizontalGallery\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHeroFade\":{\"type\":\"reactHoc\",\"name\":\"withHeroFade\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCoverGrow\":{\"type\":\"reactHoc\",\"name\":\"withCoverGrow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCardStack\":{\"type\":\"reactHoc\",\"name\":\"withCardStack\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScrollEffects.map"],"mappings":"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"}