{"version":3,"file":"WorkCardMobileVideo.BdJv3vGu.mjs","names":["Phosphor","React.useContext","React.useMemo","React.Fragment","React.forwardRef","useRef","React.useId","useState","useRef","useRef","useState","useCallback"],"sources":["https:/framerusercontent.com/modules/75u2d3MDAhRpz4aPmMy6/163NdNw12q7LGkBsxDmI/R6vqUcAAM.js","https:/framerusercontent.com/modules/oAfPGKVIlXenmPjP7yEa/7jtI2M8NOmToS0Ql9xvQ/BackToTopReveal.js","https:/framerusercontent.com/modules/wMZ7YERtto9ZB9dQ2SiR/W4i6axm5y9ggzqRuFauJ/WorkCardMobileVideo.js"],"sourcesContent":["// Generated by Framer (0116799)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,Link,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{Icon as Phosphor}from\"https://framerusercontent.com/modules/tYScH7LTqUtz5KUaUAYP/p8dptk4UIND8hbFWz9V7/Phosphor.js\";const PhosphorFonts=getFonts(Phosphor);const enabledGestures={XdXddcZ0I:{hover:true}};const serializationHash=\"framer-bEldj\";const variantClassNames={XdXddcZ0I:\"framer-v-eth18w\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const Xg7IFwGTR=undefined;const transition1={bounce:0,delay:0,duration:.35,type:\"spring\"};const transition2={bounce:0,delay:0,duration:.3,type:\"spring\"};const animation={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:.96,skewX:0,skewY:0,transition:transition2};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,width,...props})=>{return{...props,Xg7IFwGTR:link??props.Xg7IFwGTR};};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,Xg7IFwGTR,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"XdXddcZ0I\",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:Xg7IFwGTR,motionChild:true,nodeId:\"XdXddcZ0I\",scopeId:\"R6vqUcAAM\",smoothScroll:true,children:/*#__PURE__*/_jsx(motion.a,{...restProps,...gestureHandlers,\"aria-label\":\"Back to top\",className:`${cx(scopingClassNames,\"framer-eth18w\",className,classNames)} framer-1bkb7h4`,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"XdXddcZ0I\",ref:refBinding,style:{...style},...addPropertyOverrides({\"XdXddcZ0I-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-z53510\",\"data-border\":true,\"data-framer-name\":\"Pill\",layoutDependency:layoutDependency,layoutId:\"Dg5TtTKQx\",style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-02626317-f26d-4283-9daf-535630fe7998)\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",backgroundColor:\"var(--token-4b25110c-ad91-4f33-be74-51c8243a1584)\",borderBottomLeftRadius:50,borderBottomRightRadius:50,borderTopLeftRadius:50,borderTopRightRadius:50,boxShadow:\"0px 1px 2px 0px rgba(18, 18, 18, 0.06), 0px 8px 20px -6px rgba(18, 18, 18, 0.16)\"},variants:{\"XdXddcZ0I-hover\":{\"--border-color\":\"var(--token-5e567a17-d1f3-497c-bf0a-447b73ec9faf)\",backgroundColor:\"var(--token-5e567a17-d1f3-497c-bf0a-447b73ec9faf)\",boxShadow:\"0px 2px 4px 0px rgba(0, 43, 186, 0.14), 0px 12px 28px -8px rgba(0, 43, 186, 0.32)\"}},whileTap:animation,children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-8fdmgm-container\",\"data-framer-name\":\"Arrow Up\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"afnfgCJr7-container\",name:\"Arrow Up\",nodeId:\"afnfgCJr7\",rendersWithMotion:true,scopeId:\"R6vqUcAAM\",children:/*#__PURE__*/_jsx(Phosphor,{color:\"var(--token-5e567a17-d1f3-497c-bf0a-447b73ec9faf)\",height:\"100%\",iconSearch:\"House\",iconSelection:\"ArrowUp\",id:\"afnfgCJr7\",layoutId:\"afnfgCJr7\",mirrored:false,name:\"Arrow Up\",selectByList:true,style:{height:\"100%\",width:\"100%\"},weight:\"bold\",width:\"100%\",...addPropertyOverrides({\"XdXddcZ0I-hover\":{color:\"var(--token-4b25110c-ad91-4f33-be74-51c8243a1584)\"}},baseVariant,gestureVariant)})})})})})})})})})});});const css=[\".framer-bEldj.framer-1bkb7h4, .framer-bEldj .framer-1bkb7h4 { display: block; }\",\".framer-bEldj.framer-eth18w { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-bEldj .framer-z53510 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 48px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 48px; will-change: var(--framer-will-change-effect-override, transform); }\",\".framer-bEldj .framer-8fdmgm-container { aspect-ratio: 1 / 1; flex: none; height: auto; position: relative; width: 20px; }\",'.framer-bEldj[data-border=\"true\"]::after, .framer-bEldj [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 48\n * @framerIntrinsicWidth 48\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"lEYxIcmiY\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"Xg7IFwGTR\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerR6vqUcAAM=withCSS(Component,css,\"framer-bEldj\");export default FramerR6vqUcAAM;FramerR6vqUcAAM.displayName=\"Back to Top\";FramerR6vqUcAAM.defaultProps={height:48,width:48};addPropertyControls(FramerR6vqUcAAM,{Xg7IFwGTR:{title:\"Link\",type:ControlType.Link}});addFonts(FramerR6vqUcAAM,[{explicitInter:true,fonts:[]},...PhosphorFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerR6vqUcAAM\",\"slots\":[],\"annotations\":{\"framerDisplayContentsDiv\":\"false\",\"framerVariables\":\"{\\\"Xg7IFwGTR\\\":\\\"link\\\"}\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"lEYxIcmiY\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicWidth\":\"48\",\"framerIntrinsicHeight\":\"48\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerComponentViewportWidth\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./R6vqUcAAM.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{useIsStaticRenderer}from\"framer\";// How close to the bottom of the document the reader has to be before the\n// button reveals itself. Roughly \"the last screenful and a bit\".\nconst REVEAL_OFFSET=320;// Once revealed, the button only hides again after the reader has scrolled\n// back up past this larger distance. The gap between the two thresholds stops\n// the button flickering on and off while hovering the boundary.\nconst HIDE_OFFSET=420;function distanceFromBottom(){const doc=document.documentElement;const scrollTop=window.scrollY??doc.scrollTop??0;const viewport=window.innerHeight??doc.clientHeight??0;const total=Math.max(doc.scrollHeight,document.body?.scrollHeight??0,viewport);return total-(scrollTop+viewport);}/**\n * Reveals the node it wraps once the reader reaches the bottom of the page,\n * and hides it again on the way back up. The node keeps all of its canvas\n * styling — this only drives opacity, a small lift, and interactivity.\n */export function withRevealAtPageBottom(Component){return function WithRevealAtPageBottom(props){const[revealed,setRevealed]=useState(false);const[reducedMotion,setReducedMotion]=useState(false);const revealedRef=useRef(false);const isStatic=useIsStaticRenderer();useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const media=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const apply=()=>setReducedMotion(media.matches);apply();media.addEventListener?.(\"change\",apply);return()=>media.removeEventListener?.(\"change\",apply);},[]);useEffect(()=>{if(isStatic||typeof window===\"undefined\")return;let ticking=false;const measure=()=>{ticking=false;const distance=distanceFromBottom();const next=revealedRef.current?distance<=HIDE_OFFSET:distance<=REVEAL_OFFSET;if(next===revealedRef.current)return;revealedRef.current=next;setRevealed(next);};const schedule=()=>{if(ticking)return;ticking=true;requestAnimationFrame(measure);};measure();window.addEventListener(\"scroll\",schedule,{passive:true});window.addEventListener(\"resize\",schedule,{passive:true});// Lazy images, fonts and CMS lists change the document height after\n// the first paint, which moves the threshold with them.\nconst observer=typeof ResizeObserver!==\"undefined\"?new ResizeObserver(schedule):null;observer?.observe(document.documentElement);return()=>{window.removeEventListener(\"scroll\",schedule);window.removeEventListener(\"resize\",schedule);observer?.disconnect();};},[isStatic]);// On the canvas and in the static export the button stays visible, so\n// it can still be selected and styled like any other layer.\nif(isStatic)return /*#__PURE__*/_jsx(Component,{...props});return /*#__PURE__*/_jsx(Component,{...props,\"aria-hidden\":revealed?undefined:true,tabIndex:revealed?undefined:-1,style:{...props?.style,opacity:revealed?1:0,transform:reducedMotion?undefined:`translateY(${revealed?0:8}px)`,pointerEvents:revealed?\"auto\":\"none\",willChange:\"opacity, transform\",transitionProperty:\"opacity, transform\",transitionDuration:reducedMotion?\"0.01ms\":\"0.28s\",transitionTimingFunction:\"cubic-bezier(0.2, 0, 0, 1)\"}});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withRevealAtPageBottom\":{\"type\":\"reactHoc\",\"name\":\"withRevealAtPageBottom\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BackToTopReveal.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useCallback,useEffect,useRef,useState}from\"react\";import{useIsStaticRenderer}from\"framer\";// Only touch devices with no hover. Desktop hover behaviour is left untouched.\nconst TOUCH_QUERY=\"(hover: none) and (pointer: coarse)\";// ---- Shared, single-instance playback controller ----------------------------\n// Every card registers its <video>. On scroll/resize we find the one whose\n// media is nearest the vertical centre of the viewport and play only that one;\n// all others are paused and rewound to their first frame (the poster state).\nconst videos=new Set;let ticking=false;let listening=false;function updatePlayback(){ticking=false;if(typeof window===\"undefined\"||videos.size===0)return;const viewportCentre=window.innerHeight/2;let nearest=null;let nearestDistance=Infinity;for(const video of videos){const rect=video.getBoundingClientRect();const inView=rect.bottom>0&&rect.top<window.innerHeight;if(!inView||rect.height===0)continue;const distance=Math.abs(rect.top+rect.height/2-viewportCentre);if(distance<nearestDistance){nearestDistance=distance;nearest=video;}}for(const video of videos){if(video===nearest){video.muted=true;video.playsInline=true;const played=video.play();if(played&&typeof played.catch===\"function\")played.catch(()=>{});}else{if(!video.paused)video.pause();try{video.currentTime=0;}catch(error){}}}}function scheduleUpdate(){if(ticking)return;ticking=true;requestAnimationFrame(updatePlayback);}function ensureListeners(){if(listening||typeof window===\"undefined\")return;listening=true;window.addEventListener(\"scroll\",scheduleUpdate,{passive:true});window.addEventListener(\"resize\",scheduleUpdate,{passive:true});}// ---- \"Coming soon\" detection ------------------------------------------------\n// A card marked coming-soon (its \"Case Study Live\" toggle turned off) shows the\n// built-in \"Coming Soon\" overlay and must not navigate anywhere. We read the\n// component's own `caseStudyLive` prop first; if that is not present for any\n// reason we fall back to detecting the visible overlay text in the DOM.\nfunction isComingSoonVisible(root){if(typeof window===\"undefined\"||!root)return false;const nodes=root.querySelectorAll(\"*\");for(const el of Array.from(nodes)){const text=(el.textContent||\"\").trim().toLowerCase();if(text!==\"coming soon\")continue;const style=window.getComputedStyle(el);if(style.display!==\"none\"&&style.visibility!==\"hidden\"&&Number(style.opacity)!==0){return true;}}return false;}// ---- Override ---------------------------------------------------------------\nexport function withMobileWorkCardVideo(Component){return function WithMobileWorkCardVideo(props){const wrapperRef=useRef(null);const[isTouch,setIsTouch]=useState(false);const isStatic=useIsStaticRenderer();// Detect touch / no-hover devices on the client only.\nuseEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const media=window.matchMedia(TOUCH_QUERY);const apply=()=>setIsTouch(media.matches);apply();media.addEventListener?.(\"change\",apply);return()=>media.removeEventListener?.(\"change\",apply);},[]);// Register this card's <video> with the shared controller while on touch.\nuseEffect(()=>{if(!isTouch||isStatic)return;const root=wrapperRef.current;if(!root)return;let registered=null;let raf=0;const register=()=>{const video=root.querySelector(\"video\");if(!video){// The <video> mounts a tick after the variant flips; retry.\nraf=requestAnimationFrame(register);return;}video.muted=true;video.playsInline=true;video.setAttribute(\"playsinline\",\"\");video.setAttribute(\"webkit-playsinline\",\"\");video.loop=true;registered=video;videos.add(video);ensureListeners();scheduleUpdate();};register();return()=>{cancelAnimationFrame(raf);if(registered){videos.delete(registered);try{registered.pause();}catch(error){}}scheduleUpdate();};},[isTouch,isStatic]);// Block navigation for coming-soon cards, on every device. Runs in the\n// capture phase so it fires before the card's link would navigate.\nconst blockIfComingSoon=useCallback(event=>{const live=props?.caseStudyLive;const comingSoon=live===false||live===\"false\"||live==null&&isComingSoonVisible(wrapperRef.current);if(comingSoon){event.preventDefault();event.stopPropagation();}},[props?.caseStudyLive]);// Canvas / export renderer: render untouched.\nif(isStatic)return /*#__PURE__*/_jsx(Component,{...props});// Desktop: hover behaviour is identical; we only add the coming-soon\n// link guard via a display:contents wrapper (no layout impact).\nif(!isTouch){return /*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:{display:\"contents\"},onClickCapture:blockIfComingSoon,children:/*#__PURE__*/_jsx(Component,{...props})});}// Touch: force the Video variant so the <video> is actually mounted,\n// let the controller decide which single card plays, and guard the link.\nreturn /*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:{display:\"contents\"},onClickCapture:blockIfComingSoon,children:/*#__PURE__*/_jsx(Component,{...props,variant:\"Video\"})});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withMobileWorkCardVideo\":{\"type\":\"reactHoc\",\"name\":\"withMobileWorkCardVideo\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WorkCardMobileVideo.map"],"mappings":"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"}