{"version":3,"file":"CodeOverrides.D9TJ2rpZ.mjs","names":["useRef","useState","_Fragment","useEffect","useLayoutEffect"],"sources":["https:/framerusercontent.com/modules/IJAZJ0xGREWGmUFrIDvV/HJqyy8HHfU2jfz00K2OG/mnoDNulsZ.js","https:/framerusercontent.com/modules/KzLt8rpoDOTEZp4q2DPM/q971dfPBFbVeBeVKyePz/CodeOverrides.js"],"sourcesContent":["// Generated by Framer (e0809aa)\nimport{fontStore}from\"framer\";fontStore.loadFonts([]);export const fonts=[{explicitInter:true,fonts:[]}];export const css=[\".framer-cJVbF .framer-styles-preset-npb0uy:not(.rich-text-wrapper), .framer-cJVbF .framer-styles-preset-npb0uy.rich-text-wrapper a { --framer-link-text-color: var(--token-7a0e94b1-010a-42c4-b840-399def2b898f, #faf9f1); }\"];export const className=\"framer-cJVbF\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// User request: Create exactly two Framer code overrides named withScrollDirectionNav and withHeroCoverFade for scroll-direction navbar hide/show and hero cover fade/scale tied to #selected-work, with rAF updates, reduced-motion handling, cleanup, and full props/ref preservation.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{forwardRef,useEffect,useLayoutEffect,useMemo,useRef,useState,startTransition}from\"react\";import{createPortal}from\"react-dom\";let activeContactModalOwner=null;function getReducedMotionPreference(){if(typeof window===\"undefined\")return false;return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;}function mergeRefs(...refs){return value=>{refs.forEach(ref=>{if(typeof ref===\"function\"){ref(value);}else if(ref&&typeof ref===\"object\"){ref.current=value;}});};}function interpolateOpacity(progress){const stops=[{p:0,o:1},{p:.25,o:.85},{p:.5,o:.55},{p:.75,o:.2},{p:1,o:0}];for(let i=0;i<stops.length-1;i++){const current=stops[i];const next=stops[i+1];if(progress>=current.p&&progress<=next.p){const local=(progress-current.p)/(next.p-current.p);return current.o+(next.o-current.o)*local;}}return progress<=0?1:0;}const NAV_MENU_TOGGLE='[aria-label=\"Toggle navigation menu\"]';const NAV_MENU_OPEN_HEIGHT=120// the closed bar is 64-80px tall; the open menu is 460px+\n;// One nav behaviour for every page: hides on scroll down, returns on scroll up\n// and at the top of the page. On Phone and Tablet it also closes the menu when a\n// link or Contact is tapped, on a tap outside, and on Escape, and it stops the\n// page scrolling behind the open menu.\nexport function withScrollDirectionNav(Component){return /*#__PURE__*/forwardRef(function WithScrollDirectionNav(props,ref){const JITTER_DEADZONE=.5;const DIRECTION_THRESHOLD=4;const frameRef=useRef(null);const lastYRef=useRef(0);const directionRef=useRef(null);const accumulatedRef=useRef(0);const localRef=useRef(null);const menuOpenRef=useRef(false);const interactionLockUntilRef=useRef(0);useEffect(()=>{if(typeof window===\"undefined\")return;const element=localRef.current;if(!element)return;const mediaQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");// The CSS `translate` property is used (not `transform`) so this\n// never fights the transforms Framer manages on the same layer.\nconst setHidden=hidden=>{element.style.transition=mediaQuery.matches?\"none\":\"translate 220ms cubic-bezier(0.25, 0.1, 0.25, 1)\";element.style.translate=hidden?\"0 -120%\":\"0 0\";element.style.pointerEvents=hidden?\"none\":\"\";const container=element.parentElement;if(container&&/-container/.test(container.className))container.style.pointerEvents=hidden?\"none\":\"\";};const resetDirection=()=>{directionRef.current=null;accumulatedRef.current=0;lastYRef.current=Math.max(window.scrollY||0,0);};const isMenuOpen=()=>element.getBoundingClientRect().height>NAV_MENU_OPEN_HEIGHT;const setScrollLock=locked=>{const root=document.documentElement;if(locked)root.dataset.ldMenuOpen=\"true\";else delete root.dataset.ldMenuOpen;};const closeMenu=()=>{if(!isMenuOpen())return;const toggle=Array.from(element.querySelectorAll(NAV_MENU_TOGGLE)).find(item=>{const rect=item.getBoundingClientRect();return rect.width>0&&rect.height>0;});if(!toggle)return;const rect=toggle.getBoundingClientRect();const init={bubbles:true,cancelable:true,composed:true,isPrimary:true,button:0,pointerId:1,pointerType:\"mouse\",clientX:rect.left+rect.width/2,clientY:rect.top+rect.height/2};interactionLockUntilRef.current=performance.now()+480;toggle.dispatchEvent(new PointerEvent(\"pointerdown\",init));toggle.dispatchEvent(new PointerEvent(\"pointerup\",init));};// Stop the page scrolling behind the open menu by cancelling the\n// scroll gesture itself. Setting overflow:hidden on the page would\n// break the nav's sticky position and throw the menu off screen.\nconst blockScrollWhileOpen=event=>{if(menuOpenRef.current&&event.cancelable)event.preventDefault();};document.addEventListener(\"touchmove\",blockScrollWhileOpen,{passive:false});document.addEventListener(\"wheel\",blockScrollWhileOpen,{passive:false});const resizeObserver=typeof ResizeObserver===\"undefined\"?null:new ResizeObserver(()=>{const nextOpen=isMenuOpen();menuOpenRef.current=nextOpen;setScrollLock(nextOpen);if(nextOpen){resetDirection();setHidden(false);}});resizeObserver?.observe(element);// Pinned full-screen sections stay stuck to the screen edge even\n// after the next section has slid completely over them, and iOS\n// Safari then tints its bottom toolbar with their colour. Once a\n// pinned section is fully covered it is un-pinned and hidden (no\n// visual change), and restored as soon as it would show again.\nconst pinnedSections=new Set;let lastPinnedScan=0;const scanPinnedSections=()=>{lastPinnedScan=performance.now();const vw=window.innerWidth;const vh=window.innerHeight;document.querySelectorAll(\"#main *\").forEach(el=>{if(pinnedSections.has(el))return;if(getComputedStyle(el).position!==\"sticky\")return;if(el.contains(element)||element.contains(el))return;const next=el.nextElementSibling;const rect=el.getBoundingClientRect();if(!next||rect.width<vw*.9||rect.height<vh*.5||next.getBoundingClientRect().width<vw*.9)return;el.dataset.ldStickyTop=String(parseFloat(getComputedStyle(el).top)||0);pinnedSections.add(el);});};const updatePinnedSections=()=>{if(performance.now()-lastPinnedScan>1e3)scanPinnedSections();pinnedSections.forEach(el=>{if(!el.isConnected){pinnedSections.delete(el);return;}const next=el.nextElementSibling;if(!next)return;const covered=next.getBoundingClientRect().top<=Number(el.dataset.ldStickyTop)+.5;if(covered){el.style.setProperty(\"position\",\"relative\",\"important\");el.style.visibility=\"hidden\";}else{el.style.removeProperty(\"position\");el.style.visibility=\"\";}});};const update=()=>{frameRef.current=null;updatePinnedSections();const y=Math.max(window.scrollY||0,0);if(menuOpenRef.current||performance.now()<interactionLockUntilRef.current||y<=0){resetDirection();setHidden(false);return;}const delta=y-lastYRef.current;lastYRef.current=y;if(Math.abs(delta)<JITTER_DEADZONE)return;const direction=delta>0?\"down\":\"up\";if(directionRef.current!==direction){directionRef.current=direction;accumulatedRef.current=Math.abs(delta);}else{accumulatedRef.current+=Math.abs(delta);}if(accumulatedRef.current>=DIRECTION_THRESHOLD)setHidden(direction===\"down\");};const scheduleUpdate=()=>{if(frameRef.current!==null)return;frameRef.current=window.requestAnimationFrame(update);};const onNavClick=event=>{const target=event.target;if(!target)return;if(target.closest(NAV_MENU_TOGGLE)){// keep the bar in place while the menu opens or closes\ninteractionLockUntilRef.current=performance.now()+480;resetDirection();setHidden(false);return;}if(!isMenuOpen())return;let isContact=false;for(let node=target,depth=0;node&&node!==element&&depth<6;node=node.parentElement,depth++){const label=(node.textContent||\"\").replace(/\\s+/g,\" \").trim().toLowerCase();if(label===\"contact\")isContact=true;}// a page link or Contact was tapped: close the menu behind it\nif(isContact||target.closest(\"a[href]\"))window.setTimeout(closeMenu,60);};const onOutsidePointerDown=event=>{if(!event.isTrusted||!isMenuOpen())return;if(element.contains(event.target))return;closeMenu();};const onKeyDown=event=>{if(event.key===\"Escape\")closeMenu();};resetDirection();setHidden(false);updatePinnedSections();window.addEventListener(\"scroll\",scheduleUpdate,{passive:true});element.addEventListener(\"click\",onNavClick,true);document.addEventListener(\"pointerdown\",onOutsidePointerDown,true);document.addEventListener(\"keydown\",onKeyDown);return()=>{window.removeEventListener(\"scroll\",scheduleUpdate);element.removeEventListener(\"click\",onNavClick,true);document.removeEventListener(\"pointerdown\",onOutsidePointerDown,true);document.removeEventListener(\"keydown\",onKeyDown);resizeObserver?.disconnect();pinnedSections.forEach(el=>{el.style.removeProperty(\"position\");el.style.visibility=\"\";});setScrollLock(false);document.removeEventListener(\"touchmove\",blockScrollWhileOpen);document.removeEventListener(\"wheel\",blockScrollWhileOpen);if(frameRef.current!==null){window.cancelAnimationFrame(frameRef.current);}};},[]);return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref,localRef),...props,style:{...props.style,willChange:\"translate\",zIndex:1e3}});});}export function withHeroCoverFade(Component){return /*#__PURE__*/forwardRef(function WithHeroCoverFade(props,ref){const[progress,setProgress]=useState(0);const[reducedMotion,setReducedMotion]=useState(getReducedMotionPreference);const frameRef=useRef(null);useEffect(()=>{if(typeof window===\"undefined\")return;const mediaQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const onReducedMotionChange=()=>{startTransition(()=>setReducedMotion(mediaQuery.matches));};const update=()=>{frameRef.current=null;const target=document.getElementById(\"selected-work\");if(!target){startTransition(()=>setProgress(0));return;}const rect=target.getBoundingClientRect();const nextProgress=Math.min(1,Math.max(0,(window.innerHeight-rect.top)/window.innerHeight));startTransition(()=>setProgress(nextProgress));};const scheduleUpdate=()=>{if(frameRef.current!==null)return;frameRef.current=window.requestAnimationFrame(update);};scheduleUpdate();window.addEventListener(\"scroll\",scheduleUpdate,{passive:true});window.addEventListener(\"resize\",scheduleUpdate);mediaQuery.addEventListener(\"change\",onReducedMotionChange);return()=>{window.removeEventListener(\"scroll\",scheduleUpdate);window.removeEventListener(\"resize\",scheduleUpdate);mediaQuery.removeEventListener(\"change\",onReducedMotionChange);if(frameRef.current!==null){window.cancelAnimationFrame(frameRef.current);}};},[]);const style=useMemo(()=>{if(reducedMotion){return{...props.style,opacity:1,transformOrigin:\"center center\",transform:`${props.style?.transform?`${props.style.transform} `:\"\"}scale(1)`.trim()};}const opacity=interpolateOpacity(progress);const scale=1-.03*progress;const existingTransform=props.style?.transform?`${props.style.transform} `:\"\";return{...props.style,opacity,transformOrigin:\"center center\",transform:`${existingTransform}scale(${scale})`.trim(),willChange:\"opacity, transform\"};},[props.style,progress,reducedMotion]);return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref),...props,style:style});});}// ---------------------------------------------------------------------------\n// Scroll accordion (Home \"Services\" and About \"How I work\")\n//\n// Desktop and Laptop (1200px and wider):\n//   - If the tallest open state fits between the nav and the floating bar, the\n//     section pins and each item gets its own stretch of scroll (Services 140vh each, How I work 70vh each),\n//     with a short settle zone before the first item and after the last.\n//   - If it does not fit, the section scrolls normally and items open as they\n//     pass the middle of the screen.\n// Tablet and Phone: never pinned; items open as they pass the middle of the screen.\n// prefers-reduced-motion: every item is shown open and nothing pins.\n// Items stay clickable (and keyboard operable, they are buttons).\n// ---------------------------------------------------------------------------\nconst ACCORDION_BAR_ZONE=92// floating bar (79px) plus its 13px offset from the bottom\n;const ACCORDION_SETTLE=.25// pinned scroll before the first item's stretch and after the last\n;const ACCORDION_HOLD=.06// how far past a threshold the scroll must go before the item changes\n;const ACCORDION_FILL_MAX=24// most extra space added around each item to fill a tall screen\n;const ACCORDION_STEP_MS=350// minimum time an item stays open when stepping through\n;const ACCORDION_TOGGLE='button[aria-label=\"Toggle service details\"]';const ACCORDION_CONTENT='[data-framer-name=\"content\"]';const ACCORDION_EASE=\"cubic-bezier(0.22, 1, 0.36, 1)\";const ACCORDION_OPEN_MS=600;const useAccordionLayoutEffect=typeof window===\"undefined\"?useEffect:useLayoutEffect;// The only open/close effect: the item's content is revealed by animating its height.\n// The variant itself switches instantly, so no text moves, scales or fades.\nfunction setAccordionContent(content,open,animate){const was=content.dataset.accordionOpen;const next=open?\"1\":\"0\";const pending=Number(content.dataset.accordionTimer||0);content.style.overflow=\"hidden\";if(was===next){// Keep the settled state in place after a re-render.\nif(!pending)content.style.height=open?\"auto\":\"0px\";return;}if(pending)window.clearTimeout(pending);content.dataset.accordionOpen=next;content.dataset.accordionTimer=\"\";if(was===undefined||!animate){content.style.transition=\"none\";content.style.height=open?\"auto\":\"0px\";return;}// Start from the height shown before this change.\nconst from=was===\"1\"&&!pending?content.scrollHeight:content.getBoundingClientRect().height;content.style.transition=\"none\";content.style.height=`${from}px`;void content.offsetHeight;content.style.transition=`height ${ACCORDION_OPEN_MS}ms ${ACCORDION_EASE}`;content.style.height=open?`${content.scrollHeight}px`:\"0px\";const timer=window.setTimeout(()=>{content.dataset.accordionTimer=\"\";content.style.transition=\"none\";content.style.height=open?\"auto\":\"0px\";},ACCORDION_OPEN_MS+40);content.dataset.accordionTimer=String(timer);}function getAccordionFamily(){if(typeof window===\"undefined\")return\"desktop\";if(window.innerWidth<810)return\"phone\";if(window.innerWidth<1200)return\"tablet\";return\"desktop\";}// Variant names on the canvas: \"Variant 2\", \"Tablet 2\", \"2\" = item 01 open, and so on.\n// \"Service\" / \"Tablet\" / \"Mobile\" show every item open.\nfunction getAccordionVariant(family,step,allOpen){if(allOpen)return family===\"phone\"?\"Mobile\":family===\"tablet\"?\"Tablet\":\"Service\";const n=step+2;return family===\"phone\"?String(n):family===\"tablet\"?`Tablet ${n}`:`Variant ${n}`;}// Pinned: which item a given scroll distance belongs to. The current item is held\n// until the scroll is clearly past its threshold, so pausing near one does not flicker.\nfunction accordionStepFromScroll(scrolled,stretch,steps,current){if(stretch<=0)return 0;const raw=scrolled/stretch;if(raw>=current-ACCORDION_HOLD&&raw<current+1+ACCORDION_HOLD)return current;return Math.min(steps-1,Math.max(0,Math.floor(raw)));}// Not pinned: which item sits at the middle of the screen. A small margin stops\n// the open item flickering when the layout shifts as items open and close.\nfunction accordionStepFromMiddle(progress,steps,current){const raw=progress*steps;const margin=.15;if(raw>=current&&raw<current+1)return current;if(raw>=current+1+margin||raw<current-margin)return Math.min(steps-1,Math.max(0,Math.floor(raw)));return current;}function createScrollAccordion(stackName,containerName,steps,// share of the viewport height each item gets while pinned\nACCORDION_STRETCH){return function withAccordion(Component){return /*#__PURE__*/forwardRef(function WithAccordion(props,ref){const[family,setFamily]=useState(\"desktop\");const[reduced,setReduced]=useState(false);const[step,setStep]=useState(0);// Until the page has loaded in the browser, keep the variant set on the canvas.\nconst[mounted,setMounted]=useState(false);const localRef=useRef(null);const measureRef=useRef(null);const frameRef=useRef(null);const timerRef=useRef(null);const shownRef=useRef(0);const targetRef=useRef(0);const pinnedRef=useRef(false);const manualUntilRef=useRef(0);const manualScrollRef=useRef(null);const spreadRef=useRef(null);useEffect(()=>{setMounted(true);},[]);useEffect(()=>{if(typeof window===\"undefined\")return;const motionQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const getStack=()=>document.querySelector(`[data-framer-name=\"${stackName}\"]`);const getContainer=()=>document.querySelector(`[data-framer-name=\"${containerName}\"]`);// Move one item at a time so a fast scroll still opens every item in order.\nconst advance=()=>{timerRef.current=null;const shown=shownRef.current;const target=targetRef.current;if(shown===target)return;const next=shown+(target>shown?1:-1);shownRef.current=next;startTransition(()=>setStep(next));if(next!==target){timerRef.current=window.setTimeout(advance,ACCORDION_STEP_MS);}};const requestStep=target=>{targetRef.current=target;if(timerRef.current===null&&shownRef.current!==target){advance();}};const applyPinned=(pin,roomBelow)=>{const stack=getStack();const container=getContainer();pinnedRef.current=pin;if(!stack||!container)return;if(pin){stack.style.height=`${100+(steps*ACCORDION_STRETCH+ACCORDION_SETTLE*2)*100}vh`;container.style.position=\"sticky\";container.style.top=\"0px\";container.style.height=\"100vh\";container.style.justifyContent=\"flex-start\";container.style.paddingBottom=\"0px\";}else{stack.style.height=\"auto\";container.style.position=\"relative\";container.style.height=\"auto\";// The pinned layout only has 24px under it, so give the section\n// its normal space below when it scrolls normally.\ncontainer.style.paddingBottom=roomBelow?\"72px\":\"0px\";}};const applySpread=extra=>{const root=localRef.current;if(!root)return;const toggles=Array.from(root.querySelectorAll(ACCORDION_TOGGLE));const list=toggles[0]?.parentElement;if(!list)return;if(spreadRef.current===null){spreadRef.current={list:parseFloat(getComputedStyle(list).rowGap)||0,item:parseFloat(getComputedStyle(toggles[0]).rowGap)||0};}const base=spreadRef.current;list.style.rowGap=extra>0?`${base.list+extra}px`:\"\";toggles.forEach(toggle=>{toggle.style.rowGap=extra>0?`${base.item+extra}px`:\"\";});};// Height of the tallest open state, measured from hidden copies.\nconst getTallest=()=>{const holder=measureRef.current;if(!holder)return 0;let tallest=0;Array.from(holder.children).forEach(child=>{tallest=Math.max(tallest,child.getBoundingClientRect().height);});return tallest;};const evaluate=()=>{const nextFamily=getAccordionFamily();const nextReduced=motionQuery.matches;setFamily(current=>current===nextFamily?current:nextFamily);setReduced(current=>current===nextReduced?current:nextReduced);// The component already includes the space under the nav (top\n// padding) and 24px at the bottom, so it fits when its full\n// height is no more than the viewport minus the floating bar.\nconst available=window.innerHeight-ACCORDION_BAR_ZONE;const tallest=getTallest();const fits=tallest>0&&tallest<=available;const pin=nextFamily===\"desktop\"&&!nextReduced&&fits;applyPinned(pin,nextFamily===\"desktop\"&&!nextReduced);// On a tall screen, spread the items so the pinned content\n// fills the space between the nav and the floating bar.\napplySpread(pin?Math.min(ACCORDION_FILL_MAX,Math.floor((available-tallest)/(steps*2-1))):0);};const update=()=>{frameRef.current=null;if(motionQuery.matches)return;const stack=getStack();if(!stack)return;// After a click, hold the chosen item until the smooth scroll has\n// finished (pinned) or the visitor scrolls on (not pinned).\nif(performance.now()<manualUntilRef.current)return;if(manualScrollRef.current!==null){if(!pinnedRef.current&&Math.abs(window.scrollY-manualScrollRef.current)<120){return;}manualScrollRef.current=null;}let target=targetRef.current;if(pinnedRef.current){const rect=stack.getBoundingClientRect();target=accordionStepFromScroll(-rect.top-window.innerHeight*ACCORDION_SETTLE,window.innerHeight*ACCORDION_STRETCH,steps,targetRef.current);}else{const root=localRef.current;const toggles=root?Array.from(root.querySelectorAll(ACCORDION_TOGGLE)):[];if(toggles.length===0)return;const first=toggles[0].getBoundingClientRect();const last=toggles[toggles.length-1].getBoundingClientRect();const height=Math.max(1,last.bottom-first.top);const progress=(window.innerHeight*.5-first.top)/height;target=accordionStepFromMiddle(progress,steps,targetRef.current);}requestStep(target);};const scheduleUpdate=()=>{if(frameRef.current!==null)return;frameRef.current=window.requestAnimationFrame(update);};const onResize=()=>{evaluate();scheduleUpdate();};evaluate();scheduleUpdate();// Fonts and images can change the measured height after first paint.\nconst settle=window.setTimeout(onResize,400);let observer=null;if(typeof ResizeObserver!==\"undefined\"&&measureRef.current){observer=new ResizeObserver(()=>onResize());observer.observe(measureRef.current);}window.addEventListener(\"scroll\",scheduleUpdate,{passive:true});window.addEventListener(\"resize\",onResize);motionQuery.addEventListener?.(\"change\",onResize);return()=>{window.removeEventListener(\"scroll\",scheduleUpdate);window.removeEventListener(\"resize\",onResize);motionQuery.removeEventListener?.(\"change\",onResize);window.clearTimeout(settle);observer?.disconnect();if(timerRef.current!==null){window.clearTimeout(timerRef.current);timerRef.current=null;}if(frameRef.current!==null){window.cancelAnimationFrame(frameRef.current);frameRef.current=null;}};},[family,reduced,mounted]);const openFromClick=event=>{const root=localRef.current;const target=event.target;if(!root||!target||typeof window===\"undefined\")return;if(reduced)return;const button=target.closest(ACCORDION_TOGGLE);if(!button||!root.contains(button))return;const buttons=Array.from(root.querySelectorAll(ACCORDION_TOGGLE));const index=buttons.indexOf(button);if(index<0||index>steps-1)return;if(timerRef.current!==null){window.clearTimeout(timerRef.current);timerRef.current=null;}shownRef.current=index;targetRef.current=index;manualUntilRef.current=performance.now()+900;manualScrollRef.current=window.scrollY;startTransition(()=>setStep(index));if(!pinnedRef.current)return;const stack=document.querySelector(`[data-framer-name=\"${stackName}\"]`);if(!stack)return;const stretch=window.innerHeight*ACCORDION_STRETCH;const sectionTop=window.scrollY+stack.getBoundingClientRect().top;window.scrollTo({top:sectionTop+window.innerHeight*ACCORDION_SETTLE+stretch*(index+.5),behavior:getReducedMotionPreference()?\"auto\":\"smooth\"});};const variant=mounted?getAccordionVariant(family,step,reduced):props.variant;// Runs before the browser paints, so the instant variant switch is\n// never seen: each item's content height is animated from where it was.\nuseAccordionLayoutEffect(()=>{const root=localRef.current;if(!root||!mounted)return;const toggles=Array.from(root.querySelectorAll(ACCORDION_TOGGLE));toggles.forEach((toggle,index)=>{const content=toggle.querySelector(ACCORDION_CONTENT);if(!content)return;toggle.style.transition=reduced?\"none\":\"opacity 400ms ease\";setAccordionContent(content,reduced||index===step,!reduced);});});// Hidden copies of each open state, used only to measure whether the\n// tallest one fits on this screen.\nconst measureVariants=mounted&&family===\"desktop\"&&!reduced?Array.from({length:steps},(_,index)=>getAccordionVariant(\"desktop\",index,false)):[];const{layoutId:_layoutId,id:_id,...measureProps}=props;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref,localRef),...props,variant:variant,onClickCapture:openFromClick}),measureVariants.length>0&&/*#__PURE__*/_jsx(\"div\",{ref:measureRef,\"aria-hidden\":\"true\",...{inert:\"\"},style:{position:\"absolute\",left:0,top:0,width:\"100%\",height:0,overflow:\"visible\",visibility:\"hidden\",pointerEvents:\"none\",zIndex:-1},children:measureVariants.map(name=>/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:0,width:\"100%\"},children:/*#__PURE__*/_jsx(Component,{...measureProps,variant:name,style:{...props.style??{},position:\"relative\",width:\"100%\",height:\"auto\"}})},name))})]});});};}const servicesAccordion=createScrollAccordion(\"Services Scroll Stack\",\"Services Sticky Container\",3,1.4);const howWorkAccordion=createScrollAccordion(\"How I Work Scroll Stack\",\"How I Work Sticky Container\",5,.7);export function withScrollAccordion(Component){return servicesAccordion(Component);}export function withHowWorkAccordion(Component){return howWorkAccordion(Component);}export function withPinnedSelectedWork(Component){return /*#__PURE__*/forwardRef(function NativeStickySelectedWork(props,ref){return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref),...props});});}export function withSelectedWorkHorizontal(Component){return /*#__PURE__*/forwardRef(function WithSelectedWorkHorizontal(props,ref){const localRef=useRef(null);const targetXRef=useRef(0);const currentXRef=useRef(0);const velocityRef=useRef(0);const updateFrameRef=useRef(null);const springFrameRef=useRef(null);useEffect(()=>{if(typeof window===\"undefined\")return;const renderX=value=>{const element=localRef.current;if(element){element.style.transform=\"translate3d(\"+value+\"px, 0, 0)\";}};const animateSpring=()=>{const delta=targetXRef.current-currentXRef.current;velocityRef.current=0;let next=currentXRef.current+delta*.14;if(targetXRef.current===0&&next>0){next=0;velocityRef.current=-Math.abs(velocityRef.current)*.22;}if(targetXRef.current<0&&next<targetXRef.current){next=targetXRef.current;velocityRef.current=Math.abs(velocityRef.current)*.22;}currentXRef.current=next;renderX(next);if(Math.abs(delta)<.1){currentXRef.current=targetXRef.current;renderX(targetXRef.current);springFrameRef.current=null;return;}springFrameRef.current=window.requestAnimationFrame(animateSpring);};const startSpring=()=>{if(springFrameRef.current!==null)return;springFrameRef.current=window.requestAnimationFrame(animateSpring);};const updateTarget=()=>{updateFrameRef.current=null;const element=localRef.current;const stage=document.querySelector('[data-framer-name=\"Selected Work Scroll Stage\"]');if(!element||!stage||!element.parentElement)return;const rect=stage.getBoundingClientRect();const distance=Math.max(1,rect.height-window.innerHeight);const stageProgress=Math.min(1,Math.max(0,-rect.top/distance));const completionPoint=window.innerWidth<=809.98?.82:window.innerWidth<=1439.98?.7:.55;const movementProgress=Math.min(1,stageProgress/completionPoint);const maxTravel=Math.max(0,element.scrollWidth-element.parentElement.clientWidth);targetXRef.current=-maxTravel*movementProgress;startSpring();};const scheduleUpdate=()=>{if(updateFrameRef.current!==null)return;updateFrameRef.current=window.requestAnimationFrame(updateTarget);};scheduleUpdate();window.addEventListener(\"scroll\",scheduleUpdate,{passive:true});window.addEventListener(\"resize\",scheduleUpdate);return()=>{window.removeEventListener(\"scroll\",scheduleUpdate);window.removeEventListener(\"resize\",scheduleUpdate);if(updateFrameRef.current!==null){window.cancelAnimationFrame(updateFrameRef.current);}if(springFrameRef.current!==null){window.cancelAnimationFrame(springFrameRef.current);}};},[]);return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref,localRef),...props,style:{...props.style,willChange:\"transform\"}});});}export function withStickyMagnet(Component){return /*#__PURE__*/forwardRef(function WithStickyMagnet(props,ref){const localRef=useRef(null);const frameRef=useRef(null);const pullRef=useRef(0);useEffect(()=>{if(typeof window===\"undefined\")return;const update=()=>{frameRef.current=null;const element=localRef.current;if(!element)return;element.style.transition=\"transform 360ms cubic-bezier(0.34, 1.56, 0.64, 1)\";const rect=element.getBoundingClientRect();const layoutTop=rect.top-pullRef.current;const range=220;let pull=0;if(layoutTop>0&&layoutTop<range){const progress=1-layoutTop/range;pull=-28*Math.sin(Math.PI*progress);}pullRef.current=pull;element.style.transform=\"translate3d(0, \"+pull+\"px, 0)\";};const scheduleUpdate=()=>{if(frameRef.current!==null)return;frameRef.current=window.requestAnimationFrame(update);};scheduleUpdate();window.addEventListener(\"scroll\",scheduleUpdate,{passive:true});window.addEventListener(\"resize\",scheduleUpdate);return()=>{window.removeEventListener(\"scroll\",scheduleUpdate);window.removeEventListener(\"resize\",scheduleUpdate);if(frameRef.current!==null){window.cancelAnimationFrame(frameRef.current);}};},[]);return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref,localRef),...props,style:{...props.style,willChange:\"transform\"}});});}export function withContactModal(Component){return /*#__PURE__*/forwardRef(function WithContactModal(props,ref){const[open,setOpen]=useState(false);const ownerRef=useRef(\"contact-\"+Math.random().toString(36).slice(2));const closeModal=()=>{if(activeContactModalOwner===ownerRef.current)activeContactModalOwner=null;if(typeof document!==\"undefined\"&&document.documentElement.dataset.ldContactOwner===ownerRef.current)delete document.documentElement.dataset.ldContactOwner;setOpen(false);};useEffect(()=>{return()=>{if(activeContactModalOwner===ownerRef.current)activeContactModalOwner=null;if(typeof document!==\"undefined\"&&document.documentElement.dataset.ldContactOwner===ownerRef.current)delete document.documentElement.dataset.ldContactOwner;};},[]);useEffect(()=>{if(typeof document===\"undefined\")return;const onClick=event=>{const path=event.composedPath().filter(item=>item instanceof HTMLElement);const anchor=path.find(element=>{if(element.tagName!==\"A\")return false;const href=element.getAttribute(\"href\")||\"\";return href===\"/contact\"||/\\/contact\\/?(?:[?#].*)?$/.test(href);});const trigger=path.slice(0,6).find(element=>{if(element.tagName!==\"BUTTON\"&&element.getAttribute(\"role\")!==\"button\")return false;const label=(element.textContent||\"\").replace(/\\s+/g,\" \").trim().toLowerCase();return label===\"start a project\";});if(!anchor&&!trigger)return;const documentOwner=document.documentElement.dataset.ldContactOwner;if(activeContactModalOwner&&activeContactModalOwner!==ownerRef.current||documentOwner&&documentOwner!==ownerRef.current)return;activeContactModalOwner=ownerRef.current;document.documentElement.dataset.ldContactOwner=ownerRef.current;event.preventDefault();event.stopPropagation();startTransition(()=>setOpen(true));};document.addEventListener(\"click\",onClick,true);return()=>document.removeEventListener(\"click\",onClick,true);},[]);useEffect(()=>{if(!open||typeof document===\"undefined\")return;const previous=document.body.style.overflow;document.body.style.overflow=\"hidden\";const onKey=event=>event.key===\"Escape\"&&closeModal();window.addEventListener(\"keydown\",onKey);return()=>{document.body.style.overflow=previous;window.removeEventListener(\"keydown\",onKey);};},[open]);const submit=event=>{event.preventDefault();const data=new FormData(event.currentTarget);const name=String(data.get(\"name\")||\"\");const email=String(data.get(\"email\")||\"\");const message=String(data.get(\"message\")||\"\");const subject=encodeURIComponent(\"Project enquiry from \"+name);const body=encodeURIComponent(\"Name: \"+name+\"\\nEmail: \"+email+\"\\n\\n\"+message);window.location.href=\"mailto:leahddesign@gmail.com?subject=\"+subject+\"&body=\"+body;};const Arrow=()=>/*#__PURE__*/_jsx(\"svg\",{\"aria-hidden\":\"true\",width:\"15\",height:\"15\",viewBox:\"0 0 15 15\",fill:\"none\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M3 12L12 3M5 3h7v7\",stroke:\"currentColor\",strokeWidth:\"1.4\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})});const field={width:\"100%\",border:\"0\",borderBottom:\"1px solid rgba(250,249,241,.34)\",borderRadius:0,background:\"transparent\",color:\"var(--token-7a0e94b1-010a-42c4-b840-399def2b898f)\",padding:\"12px 2px\",font:\"400 14px General Sans, sans-serif\",outline:\"none\",boxSizing:\"border-box\"};const modal=open&&typeof document!==\"undefined\"?/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(\"div\",{role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":\"Start a project\",onMouseDown:e=>{if(e.target===e.currentTarget)setOpen(false);},style:{position:\"fixed\",inset:0,zIndex:2147483647,display:\"grid\",placeItems:\"center\",padding:12,background:\"rgba(20,23,27,.82)\",backdropFilter:\"blur(8px)\"},children:/*#__PURE__*/_jsxs(\"section\",{className:\"ld-contact-modal\",style:{position:\"relative\",width:\"min(1240px, 96vw)\",overflow:\"hidden\",borderRadius:22,padding:\"clamp(24px, 4vw, 56px)\",color:\"var(--token-7a0e94b1-010a-42c4-b840-399def2b898f)\",background:\"var(--token-dafe3dca-4b6e-4b86-a632-2b2334d04777)\",border:\"1px solid rgba(250,249,241,.1)\",boxShadow:\"0 28px 90px rgba(0,0,0,.42)\",fontFamily:\"General Sans, sans-serif\",boxSizing:\"border-box\"},children:[/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Close contact form\",onClick:closeModal,style:{position:\"absolute\",top:20,right:20,display:\"grid\",placeItems:\"center\",width:44,height:44,border:\"1px solid rgba(250,249,241,.12)\",borderRadius:12,cursor:\"pointer\",background:\"var(--token-c60836c1-0e54-42dc-b058-6a2dcec62571)\",color:\"var(--token-7a0e94b1-010a-42c4-b840-399def2b898f)\",fontSize:27,fontWeight:300,lineHeight:1},children:\"\\xd7\"}),/*#__PURE__*/_jsxs(\"h2\",{className:\"ld-contact-title\",style:{margin:\"0 68px 42px 0\",maxWidth:920,fontSize:\"clamp(42px, 5.4vw, 76px)\",lineHeight:1.02,letterSpacing:\"-.042em\",fontWeight:400},children:[\"Let’s build something\",/*#__PURE__*/_jsx(\"br\",{}),\"that\",\" \",/*#__PURE__*/_jsx(\"em\",{style:{fontStyle:\"italic\",fontWeight:300},children:\"works.\"})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"ld-contact-grid\",style:{display:\"grid\",gridTemplateColumns:\"minmax(0, 1.35fr) minmax(260px, .72fr)\",gap:\"clamp(36px, 7vw, 92px)\",alignItems:\"start\"},children:[/*#__PURE__*/_jsxs(\"form\",{onSubmit:submit,style:{display:\"grid\",gap:16},children:[/*#__PURE__*/_jsxs(\"label\",{style:{display:\"grid\",gap:2},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14},children:\"Name\"}),/*#__PURE__*/_jsx(\"input\",{required:true,name:\"name\",autoComplete:\"name\",placeholder:\"Your name\",style:field})]}),/*#__PURE__*/_jsxs(\"label\",{style:{display:\"grid\",gap:2},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14},children:\"Email\"}),/*#__PURE__*/_jsx(\"input\",{required:true,name:\"email\",type:\"email\",autoComplete:\"email\",placeholder:\"you@company.com\",style:field})]}),/*#__PURE__*/_jsxs(\"label\",{style:{display:\"grid\",gap:2},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14},children:\"Your message\"}),/*#__PURE__*/_jsx(\"textarea\",{required:true,name:\"message\",rows:4,placeholder:\"What are you building, changing or trying to clarify?\",style:{...field,resize:\"none\",minHeight:96}})]}),/*#__PURE__*/_jsxs(\"button\",{type:\"submit\",style:{justifySelf:\"start\",display:\"inline-flex\",alignItems:\"center\",gap:12,height:40,border:0,borderRadius:100,padding:\"10px 18px\",cursor:\"pointer\",background:\"rgba(117,129,142,.7)\",color:\"var(--token-7a0e94b1-010a-42c4-b840-399def2b898f)\",font:\"400 14px General Sans, sans-serif\",backdropFilter:\"blur(2px)\"},children:[\"Submit enquiry \",/*#__PURE__*/_jsx(Arrow,{})]})]}),/*#__PURE__*/_jsxs(\"aside\",{className:\"ld-contact-aside\",style:{display:\"grid\",gap:22,color:\"rgba(250,249,241,.62)\",fontSize:15,lineHeight:1.55},children:[/*#__PURE__*/_jsxs(\"div\",{className:\"ld-contact-intro\",style:{display:\"grid\",gap:14},children:[/*#__PURE__*/_jsx(\"p\",{style:{margin:0},children:\"I typically respond within 1–2 business days and take on a small number of projects at a time.\"}),/*#__PURE__*/_jsx(\"p\",{style:{margin:0},children:\"If you have something worth building, I’d love to hear about it.\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"grid\",gap:7},children:[/*#__PURE__*/_jsx(\"span\",{style:{textTransform:\"uppercase\",fontSize:12,letterSpacing:\".08em\",opacity:.7},children:\"Get in touch\"}),/*#__PURE__*/_jsx(\"a\",{href:\"mailto:leahddesign@gmail.com\",style:{color:\"var(--token-7a0e94b1-010a-42c4-b840-399def2b898f)\",textDecoration:\"none\"},children:\"leahddesign@gmail.com\"}),/*#__PURE__*/_jsx(\"a\",{href:\"tel:+642102753204\",style:{color:\"var(--token-7a0e94b1-010a-42c4-b840-399def2b898f)\",textDecoration:\"none\"},children:\"+64 21 027 53204\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:22,flexWrap:\"wrap\"},children:[/*#__PURE__*/_jsxs(\"a\",{href:\"https://www.instagram.com/leah_ddesign/\",target:\"_blank\",rel:\"noreferrer\",style:{display:\"inline-flex\",alignItems:\"center\",gap:7,color:\"var(--token-7a0e94b1-010a-42c4-b840-399def2b898f)\",textDecoration:\"none\"},children:[\"Instagram \",/*#__PURE__*/_jsx(Arrow,{})]}),/*#__PURE__*/_jsxs(\"a\",{href:\"https://www.linkedin.com/in/leah-dawson-929b83285\",target:\"_blank\",rel:\"noreferrer\",style:{display:\"inline-flex\",alignItems:\"center\",gap:7,color:\"var(--token-7a0e94b1-010a-42c4-b840-399def2b898f)\",textDecoration:\"none\"},children:[\"LinkedIn \",/*#__PURE__*/_jsx(Arrow,{})]})]})]})]}),/*#__PURE__*/_jsx(\"style\",{children:`@media(max-width:760px){.ld-contact-modal{width:calc(100vw - 16px)!important;padding:20px!important;border-radius:16px!important}.ld-contact-title{font-size:38px!important;margin:28px 48px 22px 0!important}.ld-contact-grid{grid-template-columns:1fr!important;gap:18px!important}.ld-contact-grid form{gap:10px!important}.ld-contact-aside{gap:12px!important;font-size:13px!important}.ld-contact-intro{display:none!important}.ld-contact-modal textarea{min-height:72px!important;height:72px!important}}`})]})}),document.body):null;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref),...props}),modal]});});}export function withHomeBarLinks(Component){return /*#__PURE__*/forwardRef(function WithHomeBarLinks(props,ref){const handleCapture=event=>{const target=event.target;const anchor=target?.closest(\"a\");const clicked=anchor||(target?.closest('[role=\"button\"], button'));const label=(clicked?.textContent||target?.textContent||\"\").trim().toLowerCase();let destination=null;if(label.includes(\"work\"))destination=\"/work\";else if(label.includes(\"about\"))destination=\"/about\";else if(label.includes(\"contact\"))destination=\"/contact\";if(!destination)return;event.preventDefault();event.stopPropagation();event.nativeEvent?.stopImmediatePropagation?.();if(destination===\"/contact\"){const contactLink=document.createElement(\"a\");contactLink.href=\"/contact\";contactLink.style.display=\"none\";document.body.appendChild(contactLink);contactLink.click();contactLink.remove();}else{window.location.assign(destination);}};return /*#__PURE__*/_jsx(Component,{ref:ref,...props,onClickCapture:handleCapture});});}export function withGlobalNav(Component){return withScrollDirectionNav(Component);}export function withActionBarVisibility(Component){return /*#__PURE__*/forwardRef(function WithActionBarVisibility(props,ref){const[hidden,setHidden]=useState(false);useEffect(()=>{const update=()=>{const footer=Array.from(document.querySelectorAll(\"[data-framer-name], footer\")).some(el=>{const name=el.dataset.framerName||\"\";const r=el.getBoundingClientRect();return(/footer/i.test(name)||el.tagName.toLowerCase()===\"footer\")&&r.top<window.innerHeight&&r.bottom>0;});setHidden(footer);};update();window.addEventListener(\"scroll\",update,{passive:true});window.addEventListener(\"resize\",update);return()=>{window.removeEventListener(\"scroll\",update);window.removeEventListener(\"resize\",update);};},[]);return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref),...props,style:{...props.style,opacity:hidden?0:1,pointerEvents:hidden?\"none\":props.style?.pointerEvents,transition:\"opacity 220ms ease\"}});});}export function withBouncingDownArrow(Component){return /*#__PURE__*/forwardRef(function WithBouncingDownArrow(props,ref){const localRef=useRef(null);useEffect(()=>{const el=localRef.current;if(!el||window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;const animation=el.animate([{transform:\"translateY(0)\"},{transform:\"translateY(7px)\"},{transform:\"translateY(0)\"}],{duration:1400,iterations:Infinity,easing:\"ease-in-out\"});return()=>animation.cancel();},[]);return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref,localRef),...props,role:\"button\",tabIndex:0,\"aria-label\":\"Scroll to next section\"});});}export function withReliableSticky(Component){return /*#__PURE__*/forwardRef(function WithReliableSticky(props,ref){return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref),...props,style:{...props.style,position:\"sticky\",top:0,alignSelf:\"stretch\",willChange:\"transform\"}});});}// Same as withReliableSticky, but only from 810px up. On Phone the position set\n// on the canvas applies, so a section taller than the screen can scroll normally.\nexport function withStickyFromTablet(Component){return /*#__PURE__*/forwardRef(function WithStickyFromTablet(props,ref){return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`@media (min-width: 810px){[data-sticky-from-tablet]{position:sticky !important;top:0 !important}}`}),/*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref),...props,\"data-sticky-from-tablet\":\"\",style:{...props.style,alignSelf:\"stretch\",willChange:\"transform\"}})]});});}// Sticky only from 1200px up. On Phone and Tablet the section scrolls normally,\n// so the next section can never slide over its text before it has been read.\nexport function withStickyFromDesktop(Component){return /*#__PURE__*/forwardRef(function WithStickyFromDesktop(props,ref){return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`@media (min-width: 1200px){[data-sticky-from-desktop]{position:sticky !important;top:0 !important}}`}),/*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref),...props,\"data-sticky-from-desktop\":\"\",style:{...props.style,alignSelf:\"stretch\",willChange:\"transform\"}})]});});}export function withFooterOverlap(Component){return /*#__PURE__*/forwardRef(function WithFooterOverlap(props,ref){const localRef=useRef(null);const[height,setHeight]=useState(0);useEffect(()=>{const element=localRef.current;if(!element)return;const update=()=>setHeight(element.getBoundingClientRect().height);update();const observer=new ResizeObserver(update);observer.observe(element);window.addEventListener(\"resize\",update);return()=>{observer.disconnect();window.removeEventListener(\"resize\",update);};},[]);const existingTransform=props.style?.transform?props.style.transform+\" \":\"\";return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref,localRef),...props,style:{...props.style,position:\"relative\",zIndex:10,overflow:\"hidden\",backgroundColor:\"var(--token-dafe3dca-4b6e-4b86-a632-2b2334d04777)\",transform:existingTransform+\"translate3d(0, -\"+height+\"px, 0)\",marginBottom:-height,willChange:\"transform\"}});});}export function withScrollToTop(Component){return /*#__PURE__*/forwardRef(function WithScrollToTop(props,ref){const activate=event=>{event?.preventDefault?.();if(typeof window===\"undefined\")return;const reduced=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;window.scrollTo({top:0,behavior:reduced?\"auto\":\"smooth\"});};const onKeyDown=event=>{if(event.key===\"Enter\"||event.key===\" \"){activate(event);}};return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(ref),...props,role:\"button\",tabIndex:0,\"aria-label\":\"Scroll to top\",onClick:activate,onKeyDown:onKeyDown,style:{...props.style,cursor:\"pointer\"}});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withBouncingDownArrow\":{\"type\":\"reactHoc\",\"name\":\"withBouncingDownArrow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHowWorkAccordion\":{\"type\":\"reactHoc\",\"name\":\"withHowWorkAccordion\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPinnedSelectedWork\":{\"type\":\"reactHoc\",\"name\":\"withPinnedSelectedWork\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withActionBarVisibility\":{\"type\":\"reactHoc\",\"name\":\"withActionBarVisibility\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHeroCoverFade\":{\"type\":\"reactHoc\",\"name\":\"withHeroCoverFade\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSelectedWorkHorizontal\":{\"type\":\"reactHoc\",\"name\":\"withSelectedWorkHorizontal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withReliableSticky\":{\"type\":\"reactHoc\",\"name\":\"withReliableSticky\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withFooterOverlap\":{\"type\":\"reactHoc\",\"name\":\"withFooterOverlap\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withContactModal\":{\"type\":\"reactHoc\",\"name\":\"withContactModal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withScrollToTop\":{\"type\":\"reactHoc\",\"name\":\"withScrollToTop\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withStickyFromTablet\":{\"type\":\"reactHoc\",\"name\":\"withStickyFromTablet\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withScrollDirectionNav\":{\"type\":\"reactHoc\",\"name\":\"withScrollDirectionNav\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withStickyMagnet\":{\"type\":\"reactHoc\",\"name\":\"withStickyMagnet\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withGlobalNav\":{\"type\":\"reactHoc\",\"name\":\"withGlobalNav\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHomeBarLinks\":{\"type\":\"reactHoc\",\"name\":\"withHomeBarLinks\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withScrollAccordion\":{\"type\":\"reactHoc\",\"name\":\"withScrollAccordion\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withStickyFromDesktop\":{\"type\":\"reactHoc\",\"name\":\"withStickyFromDesktop\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CodeOverrides.map"],"mappings":"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"}