{"version":3,"file":"script_main.08iXkILT.mjs","names":["addPropertyOverrides","UnderlineHoverLinkFonts","UnderlineHoverLink","cycleOrder","serializationHash","variantClassNames","transition1","animation","matchVariant","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","sharedStyle.className","sharedStyle1.className","className","RichText","sharedStyle.css","sharedStyle1.css","sharedStyle.fonts","sharedStyle1.fonts","findRouter","routeOf","React.useId","React.useRef","useFramerRouter","React.useState","React.useMemo","FramerLib.useRouter","serializationHash","variantClassNames","React.useContext","React.useMemo","humanReadableVariantMap","React.Fragment","getProps","React.forwardRef","useRef","React.useId","EASE","useId","useRef","useState","useLayoutEffect","useEffect","React.useState","React.useRef","FramerLib.useRouter","_Fragment","Navbar","UnderlineHoverLink","WorkPortfolioPill","FloatingContact","isBrowser","useRef","_Fragment","PropertyOverrides","React.createElement","HomeLayout","Framer.PageRoot","Framer.lazy","Framer.useCurrentRoute","Framer.useLocaleInfo","Framer.useRouter","React.Fragment","React.memo","React.useCallback","React.useEffect","React.useRef","React.useState","React.useLayoutEffect","Framer.LazyValue","Framer.GracefullyDegradingErrorBoundary","Framer.PageEffectsProvider","Framer.patchRoutesForABTesting","Framer.inferInitialRouteFromPath","Framer.yieldToMain","React.startTransition","Framer.ErrorPlaceholder"],"sources":["https:/framerusercontent.com/modules/A7GTykWY2DfIA43AI39q/IcEcOmRxKnfN3AbxxP4u/R5MnH9mZg.js","https:/framerusercontent.com/modules/K684RIq2sG7Dsp8MIEfU/lL8ZMFy0UfB06VxNSnVu/GBLLiquidMetalCircle.js","https:/framerusercontent.com/modules/a8V4lzFzIbHMNx1OTbFj/utTAoC5bRMAr8xKJ6h6h/wfp4v5Kr4.js","https:/framerusercontent.com/modules/z0oKC34VUTzKOTVtlSNZ/I49T5AVl6R57rTubExrx/GBLLogoConstruct.js","https:/framerusercontent.com/modules/4Bhg6Y3eEWbIOLKupcWk/kVtundEBeJzYPSZxR2mT/GBLRollLinks.js","https:/framerusercontent.com/modules/QM86IjXvtQW2QqDZQfo7/wUzw7FQkc9qK9SPjvHWc/KeepAllKorean.js","https:/framerusercontent.com/modules/SvIHJUIqdD1MHpy2jMJS/On7vs4yojhqmDITlU2Q4/y96I9ppUj.js","framer:toplevel/main"],"sourcesContent":["// Generated by Framer (4aa4c0b)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,forwardLoader,getFonts,getFontsFromSharedStyle,Link,RichText,runTasksWithYield,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS,withFX}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/jV5Tt3IFn58hBMa6Llmr/MjH3N3SnXAtECLumR6PS/HICcptq_v.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/lC1EWL7k0Uwot1qvlplC/8VmPYg4lqRoOI0Vg5nDG/MJB8FpKSN.js\";import UnderlineHoverLink from\"https://framerusercontent.com/modules/7IyktWAgt9jteny8Xhtd/B3yyNOQF6caejKRR4KCh/V0K50PR1o.js\";const UnderlineHoverLinkFonts=getFonts(UnderlineHoverLink);const MotionNavWithFX=withFX(motion.nav);const cycleOrder=[\"TBVoh75zg\",\"bfGlC2K6I\",\"ENCm9is6W\",\"bNwVRUl9P\",\"hqcbofAnS\"];const serializationHash=\"framer-z5teY\";const variantClassNames={bfGlC2K6I:\"framer-v-dxfvzg\",bNwVRUl9P:\"framer-v-1hj6djc\",ENCm9is6W:\"framer-v-1bfng1j\",hqcbofAnS:\"framer-v-5lyuqx\",TBVoh75zg:\"framer-v-1v7mdnv\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const jbLaJLl17=undefined;const transition1={delay:0,duration:.8,ease:[.6,.2,0,1],type:\"tween\"};const animation={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:-80};const transition2={delay:0,duration:.8,ease:[.32,.94,.6,1],type:\"tween\"};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};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 humanReadableVariantMap={\"Default Open\":\"hqcbofAnS\",\"Mobile Open\":\"bNwVRUl9P\",Default:\"TBVoh75zg\",Mobile:\"ENCm9is6W\",Tablet:\"bfGlC2K6I\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,openNav,width,...props})=>{return{...props,jbLaJLl17:openNav??props.jbLaJLl17,variant:humanReadableVariantMap[props.variant]??props.variant??\"TBVoh75zg\"};};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,jbLaJLl17,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"TBVoh75zg\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if([\"ENCm9is6W\",\"bNwVRUl9P\"].includes(baseVariant))return true;return false;};const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTaplxzwkc=activeVariantCallback(async(...args)=>{if(jbLaJLl17){const res=await jbLaJLl17(...args);if(res===false)return false;}});const isDisplayed1=()=>{if([\"ENCm9is6W\",\"bNwVRUl9P\"].includes(baseVariant))return false;return true;};const isDisplayed2=()=>{if(baseVariant===\"bfGlC2K6I\")return false;return true;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition2,children:/*#__PURE__*/_jsx(MotionNavWithFX,{...restProps,...gestureHandlers,__framer__animate:{transition:transition1},__framer__animateOnce:false,__framer__scrollDirection:{direction:\"down\",target:animation},__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:cx(scopingClassNames,\"framer-1v7mdnv\",className,classNames),\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"TBVoh75zg\",ref:refBinding,style:{...style},...addPropertyOverrides({bfGlC2K6I:{\"data-framer-name\":\"Tablet\"},bNwVRUl9P:{\"data-framer-name\":\"Mobile Open\"},ENCm9is6W:{\"data-framer-name\":\"Mobile\"},hqcbofAnS:{\"data-framer-name\":\"Default Open\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-17t59zs\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"p9HoO21jP\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-zg5okp\",\"data-framer-name\":\"Brand\",layoutDependency:layoutDependency,layoutId:\"jA5wEARhb\",style:{borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4},children:[/*#__PURE__*/_jsx(Link,{href:{webPageId:\"augiA20Il\"},motionChild:true,nodeId:\"ociI91hdy\",scopeId:\"R5MnH9mZg\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-16vj0rf framer-1iuztg9\",\"data-framer-name\":\"Design GBL Wordmark\",layoutDependency:layoutDependency,layoutId:\"ociI91hdy\"})}),isDisplayed()&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-nzpxk6\",\"data-styles-preset\":\"HICcptq_v\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250)))\"},children:\"DESIGN GBL\"})}),className:\"framer-sopo1j\",\"data-highlight\":true,fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"nhZJfvXwl\",onTap:onTaplxzwkc,style:{\"--extracted-r6o4lv\":\"var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250))\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({bNwVRUl9P:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-nzpxk6\",\"data-styles-preset\":\"HICcptq_v\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250)))\"},children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"augiA20Il\"},motionChild:true,nodeId:\"nhZJfvXwl\",openInNewTab:false,relValues:[],scopeId:\"R5MnH9mZg\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-hlmlam\",\"data-styles-preset\":\"MJB8FpKSN\",children:\"DESIGN GBL\"})})})})}},baseVariant,gestureVariant)})]}),isDisplayed1()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-rcer8b\",\"data-framer-name\":\"Loc & Time\",layoutDependency:layoutDependency,layoutId:\"IxdRmkJnD\",style:{borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7U1VJVCBSZWd1bGFy\",\"--framer-font-family\":'\"SUIT Regular\", \"SUIT Regular Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv09' on, 'cv03' on, 'cv04' on, 'cv11' on\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-f3752b46-d621-4dd7-9209-30756b88ff82, rgb(163, 163, 163)))\"},children:\"SEOUL, KOREA\"})}),className:\"framer-yejrzp\",fonts:[\"CUSTOMV2;SUIT Regular\"],layoutDependency:layoutDependency,layoutId:\"Y4SRzQhfJ\",style:{\"--extracted-r6o4lv\":\"var(--token-f3752b46-d621-4dd7-9209-30756b88ff82, rgb(163, 163, 163))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7U1VJVCBSZWd1bGFy\",\"--framer-font-family\":'\"SUIT Regular\", \"SUIT Regular Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv09' on, 'cv03' on, 'cv04' on, 'cv11' on\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-363e0396-688b-4390-8542-5fe4040ca3c6))\"},children:\"DESIGN GBL\"})}),className:\"framer-106xygm\",\"data-framer-name\":\"Design Studio\",fonts:[\"CUSTOMV2;SUIT Regular\"],layoutDependency:layoutDependency,layoutId:\"MyeMZTZOF\",style:{\"--extracted-r6o4lv\":\"var(--token-363e0396-688b-4390-8542-5fe4040ca3c6)\"},verticalAlignment:\"top\",withExternalLayout:true})]}),isDisplayed1()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1sg74he\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"TJLzrbLxD\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7U1VJVCBSZWd1bGFy\",\"--framer-font-family\":'\"SUIT Regular\", \"SUIT Regular Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv09' on, 'cv03' on, 'cv04' on, 'cv11' on\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-f3752b46-d621-4dd7-9209-30756b88ff82))\"},children:\"INQUIRY\"})}),className:\"framer-2g95x2\",fonts:[\"CUSTOMV2;SUIT Regular\"],layoutDependency:layoutDependency,layoutId:\"eE_nCjMb8\",style:{\"--extracted-r6o4lv\":\"var(--token-f3752b46-d621-4dd7-9209-30756b88ff82)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),isDisplayed2()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{height:23,y:(componentViewport?.y||0)+0+(((componentViewport?.height||200)-0-68.2)/2+0+0)+11+0+0+23.2,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-10vbqim-container\",layoutDependency:layoutDependency,layoutId:\"Jo1R7p01d-container\",nodeId:\"Jo1R7p01d\",rendersWithMotion:true,scopeId:\"R5MnH9mZg\",children:/*#__PURE__*/_jsx(UnderlineHoverLink,{b4yKQTya4:\"gbl@designgbl.com\",height:\"100%\",id:\"Jo1R7p01d\",KSAFNm8tj:\"var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250))\",KVhN7aKAf:false,layoutId:\"Jo1R7p01d\",SyA9CEwpa:\"var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250))\",variant:matchVariant(\"t2ftcILFS\"),width:\"100%\"})})})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-cl635s\",\"data-framer-name\":\"Button\",layoutDependency:layoutDependency,layoutId:\"xpI2nc_Ro\",style:{borderBottomLeftRadius:4,borderBottomRightRadius:4,borderTopLeftRadius:4,borderTopRightRadius:4},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-nzpxk6\",\"data-styles-preset\":\"HICcptq_v\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250)))\"},children:\"MENU\"})}),className:\"framer-mxqn7z\",\"data-highlight\":true,fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"AZWpRrp3n\",onTap:onTaplxzwkc,style:{\"--extracted-r6o4lv\":\"var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-nzpxk6\",\"data-styles-preset\":\"HICcptq_v\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250)))\"},children:\"CLOSE\"})}),className:\"framer-14zxh10\",\"data-highlight\":true,fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"kY98TWFvB\",onTap:onTaplxzwkc,style:{\"--extracted-r6o4lv\":\"var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})});});const css=[\".framer-z5teY.framer-1iuztg9, .framer-z5teY .framer-1iuztg9 { display: block; }\",\".framer-z5teY.framer-1v7mdnv { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1200px; }\",\".framer-z5teY .framer-17t59zs { display: grid; flex: none; gap: 0px; grid-auto-rows: min-content; grid-template-columns: repeat(4, minmax(50px, 1fr)); grid-template-rows: repeat(1, min-content); height: min-content; justify-content: center; overflow: visible; padding: 11px; position: relative; width: 100%; z-index: 8; }\",\".framer-z5teY .framer-zg5okp { align-content: center; align-items: center; align-self: start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 140px; height: min-content; justify-content: flex-start; justify-self: start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-z5teY .framer-16vj0rf { align-content: center; align-items: center; aspect-ratio: 5.01 / 1; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: auto; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; text-decoration: none; width: 130px; z-index: 10; }\",\".framer-z5teY .framer-sopo1j, .framer-z5teY .framer-mxqn7z, .framer-z5teY .framer-14zxh10 { cursor: pointer; flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-z5teY .framer-rcer8b, .framer-z5teY .framer-1sg74he { align-content: flex-start; align-items: flex-start; align-self: start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; justify-self: start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-z5teY .framer-yejrzp, .framer-z5teY .framer-106xygm, .framer-z5teY .framer-2g95x2 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-z5teY .framer-10vbqim-container { cursor: default; flex: none; height: auto; pointer-events: none; position: relative; width: auto; }\",\".framer-z5teY .framer-cl635s { align-content: flex-end; align-items: flex-end; align-self: start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 14px; height: 26px; justify-content: flex-start; justify-self: end; overflow: hidden; padding: 0px; position: relative; width: 100%; will-change: var(--framer-will-change-override, transform); }\",\".framer-z5teY.framer-v-1bfng1j.framer-1v7mdnv, .framer-z5teY.framer-v-1hj6djc.framer-1v7mdnv { width: 390px; }\",\".framer-z5teY.framer-v-1bfng1j .framer-zg5okp { align-content: flex-start; align-items: flex-start; flex-direction: column; gap: 14px; height: 26px; order: 0; overflow: hidden; will-change: var(--framer-will-change-override, transform); }\",\".framer-z5teY.framer-v-1bfng1j .framer-cl635s { order: 3; position: absolute; right: 11px; top: 11px; width: min-content; }\",\".framer-z5teY.framer-v-1hj6djc .framer-zg5okp { align-content: flex-start; align-items: flex-start; flex-direction: column; gap: 14px; height: 26px; justify-content: flex-end; order: 0; overflow: hidden; will-change: var(--framer-will-change-override, transform); }\",\".framer-z5teY.framer-v-1hj6djc .framer-cl635s { justify-content: flex-end; order: 3; }\",\".framer-z5teY.framer-v-5lyuqx .framer-cl635s { justify-content: flex-end; }\",...sharedStyle.css,...sharedStyle1.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 68\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"bfGlC2K6I\":{\"layout\":[\"fixed\",\"auto\"]},\"ENCm9is6W\":{\"layout\":[\"fixed\",\"auto\"]},\"bNwVRUl9P\":{\"layout\":[\"fixed\",\"auto\"]},\"hqcbofAnS\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"jbLaJLl17\":\"openNav\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerR5MnH9mZg=withCSS(Component,css,\"framer-z5teY\");export default FramerR5MnH9mZg;FramerR5MnH9mZg.displayName=\"Navbar\";FramerR5MnH9mZg.defaultProps={height:68,width:1200};addPropertyControls(FramerR5MnH9mZg,{variant:{options:[\"TBVoh75zg\",\"bfGlC2K6I\",\"ENCm9is6W\",\"bNwVRUl9P\",\"hqcbofAnS\"],optionTitles:[\"Default\",\"Tablet\",\"Mobile\",\"Mobile Open\",\"Default Open\"],title:\"Variant\",type:ControlType.Enum},jbLaJLl17:{title:\"Open Nav\",type:ControlType.EventHandler}});addFonts(FramerR5MnH9mZg,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"},{cssFamilyName:\"SUIT Regular\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"SUIT\",url:\"https://framerusercontent.com/assets/1hNig7WnaTIZ3AzZ050r67ytF2M.woff2\",weight:\"400\"}]},...UnderlineHoverLinkFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});FramerR5MnH9mZg.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(UnderlineHoverLink,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerR5MnH9mZg\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerVariables\":\"{\\\"jbLaJLl17\\\":\\\"openNav\\\"}\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerIntrinsicHeight\":\"68\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"bfGlC2K6I\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"ENCm9is6W\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"bNwVRUl9P\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"hqcbofAnS\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./R5MnH9mZg.map","// GBLLiquidMetalCircle - 오른쪽 아래 고정 원형 버튼(리퀴드 메탈 셰이더 + 실제 링크·버튼을 위에 겹침)\n// 원본: ThreeUI Liquid Metal Button (https://github.com/MengTo/threeui, src/shaders/liquid-metal-button), 아래는 원본 MIT 고지 전문.\n/*\nMIT License\n\nCopyright (c) 2026 Meng To\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import*as FramerLib from\"framer\";// 빌드 단계에서 셰이더 HTML(JSON 문자열)로 바뀌는 자리\nconst SHADER_HTML='<!DOCTYPE html>\\n<html lang=\"en\">\\n<head>\\n<meta charset=\"utf-8\">\\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\\n<title>Liquid Metal Button</title>\\n<style>\\n  *{box-sizing:border-box;margin:0;padding:0}\\n  html,body{height:100%}\\n  body{\\n    /* A shadow needs something to fall on: a soft ambient pool lifts the\\n       ground just off black so the button reads as sitting above it. */\\n    background:\\n      radial-gradient(46vmax 32vmax at 50% 47%,\\n        #191b21 0%, #0e0f13 34%, #050506 62%, #000 88%) #000;\\n    display:grid;place-items:center;\\n    overflow:hidden;\\n    font-family:\"Inter\",-apple-system,BlinkMacSystemFont,\"Helvetica Neue\",Arial,sans-serif;\\n    font-optical-sizing:auto;\\n    -webkit-font-smoothing:antialiased;\\n  }\\n\\n  /* Everything is expressed in the reference\\'s own units (the pill measured\\n     1407 x 516 there), scaled off one ergonomic knob: the button height. */\\n  .stage{\\n    --h: 52px;                            /* a normal control height */\\n    --u: calc(var(--h) / 516);\\n    --bw: calc(1407 * var(--u));\\n    --bh: var(--h);\\n    /* The canvas is the stage, so this has to clear the bloom\\'s full reach\\n       (~4 sigma) or the halo gets cut off against a visible rectangle. */\\n    --pad: calc(900 * var(--u));\\n    position:relative;\\n    width:calc(var(--bw) + 2 * var(--pad));\\n    height:calc(var(--bh) + 2 * var(--pad));\\n    display:grid;place-items:center;\\n    touch-action:manipulation;\\n  }\\n\\n  /* the button\\'s own solid body, and the shadow it casts on the pool */\\n  .plate{\\n    position:absolute;\\n    width:var(--bw);height:var(--bh);\\n    border-radius:999px;\\n    background:#0b0c0e;\\n    box-shadow:\\n      0 calc(var(--h) * 0.10) calc(var(--h) * 0.22) rgba(0,0,0,.72),\\n      0 calc(var(--h) * 0.30) calc(var(--h) * 0.66) rgba(0,0,0,.62),\\n      0 calc(var(--h) * 0.62) calc(var(--h) * 1.30) rgba(0,0,0,.42);\\n    transition:box-shadow .38s cubic-bezier(.22,.61,.36,1),\\n               background .38s cubic-bezier(.22,.61,.36,1);\\n  }\\n  /* deepen it while the metal is lit, so the bright face keeps its edge */\\n  body.hot .plate{\\n    background:#08090a;\\n    box-shadow:\\n      0 calc(var(--h) * 0.12) calc(var(--h) * 0.26) rgba(0,0,0,.80),\\n      0 calc(var(--h) * 0.40) calc(var(--h) * 0.86) rgba(0,0,0,.72),\\n      0 calc(var(--h) * 0.86) calc(var(--h) * 1.80) rgba(0,0,0,.55);\\n  }\\n\\n  #fx{position:absolute;inset:0;width:100%;height:100%;display:block}\\n\\n  .btn{\\n    position:relative;\\n    width:var(--bw);height:var(--bh);\\n    border:0;background:none;padding:0;\\n    border-radius:999px;\\n    display:flex;align-items:center;justify-content:center;\\n    gap:calc(88 * var(--u));\\n    color:#fff;\\n    font-family:inherit;\\n    font-weight:500;\\n    font-size:calc(207 * var(--u));\\n    line-height:1;\\n    letter-spacing:0;\\n    cursor:pointer;\\n    -webkit-tap-highlight-color:transparent;\\n    outline:none;\\n  }\\n  .btn:focus-visible{outline:calc(4 * var(--u)) solid rgba(255,255,255,.55);outline-offset:calc(10 * var(--u))}\\n  .btn .ico{\\n    width:calc(115 * var(--u));height:calc(115 * var(--u));\\n    display:block;flex:none;overflow:visible;\\n  }\\n  /* descenders pull the flex box up — nudge back so the cap box, not the\\n     em box, is what sits centred on the pill (measured, not guessed) */\\n  .btn .lbl{display:block;transform:translateY(calc(2 * var(--u)))}\\n\\n  /* pressed: the button settles onto the surface, so the shadow tightens */\\n  body.press .plate{\\n    background:#070809;\\n    box-shadow:\\n      0 calc(var(--h) * 0.05) calc(var(--h) * 0.13) rgba(0,0,0,.82),\\n      0 calc(var(--h) * 0.16) calc(var(--h) * 0.40) rgba(0,0,0,.70),\\n      0 calc(var(--h) * 0.34) calc(var(--h) * 0.80) rgba(0,0,0,.50);\\n    transition-duration:.10s;\\n  }\\n</style>\\n<style>\\n/* Design GBL 덧붙임 - 원형, 투명 바탕, 글자 숨김(지름 --h는 부품이 head 끝에 넣음) */\\n:root { color-scheme: normal; }\\nhtml, body { background: transparent !important; }\\n.stage { --bw: var(--h); }\\n.btn { gap: 0; }\\n.btn .ico { width: 34%; height: 34%; }\\n.btn .lbl { display: none; }\\n</style></head>\\n<body>\\n<div class=\"stage\" id=\"stage\">\\n  <div class=\"plate\" aria-hidden=\"true\"></div>\\n  <canvas id=\"fx\"></canvas>\\n\\n  <button class=\"btn\" id=\"btn\" type=\"button\">\\n    <svg class=\"ico\" viewBox=\"0 0 115 115\" aria-hidden=\"true\">\\n      <g stroke=\"currentColor\" stroke-width=\"17\" stroke-linecap=\"round\">\\n        <path d=\"M57.5 8.5 V106.5\"/>\\n        <path d=\"M8.5 57.5 H106.5\"/>\\n      </g>\\n    </svg>\\n    <span class=\"lbl\">Sign up</span>\\n  </button>\\n</div>\\n\\n<script>\\n/* =====================================================================\\n   Liquid metal — a dispersion shader.\\n\\n   A scalar field V is painted through a soft plateau: dark below it, blown\\n   white inside, dark above.  The plateau is evaluated once per spectral\\n   wavelength at a slightly different height in V, so the plateau\\'s lower\\n   edge fringes warm (red turns on first) and its upper edge fringes cool\\n   (red turns off first).  Fringe width falls out as dispersion / |grad V|,\\n   which is why the same shader gives razor-thin rainbow lines where the\\n   field is pinched and huge navy-to-cyan washes where it is not.\\n\\n   V itself is built as a family of parallel curves — one swooping valley\\n   repeated up the button, at a density that varies along its length — so\\n   the ribbons stay laminar rather than turbulent.  See the shader body.\\n   ===================================================================== */\\n\\nconst VERT = `#version 300 es\\nin vec2 position; void main(){ gl_Position = vec4(position,0.,1.); }`;\\n\\nconst HEAD = `#version 300 es\\nprecision highp float;\\nout vec4 o;\\n\\nuniform vec2  uC;        // pill centre, device px\\nuniform vec2  uHalf;     // pill half-extent, device px\\nuniform float uT;        // seconds\\nuniform float uHover;    // 0..1\\nuniform float uPress;    // 0..1, eased\\nuniform vec4  uRip[3];   // xy centre (button heights, +y down), z start, w live\\nuniform vec4  uRipK;     // speed, ring width, decay, amplitude\\nuniform vec4  uRipK2;    // facet depth, facet count, crest sharpness, emission\\nuniform vec4  uPtr;      // xy trailing cursor, z strength, w normalised speed\\nuniform vec4  uPtrK;     // radius, base amplitude, speed amplitude, rim lift\\n\\n#define PI 3.14159265\\n\\nfloat sdPill(vec2 p, vec2 b, float r){\\n  vec2 q = abs(p) - b + r;\\n  return min(max(q.x,q.y),0.) + length(max(q,0.)) - r;\\n}\\n\\n/* Expanding ring from each press, in button-height units.  Three slots so a\\n   quick double-tap overlaps instead of cutting the first one off.\\n\\n   Two things keep it from reading as a water ripple: the wavefront is\\n   faceted rather than circular — its radius is modulated by angle, and the\\n   facets rotate as it travels — and the crest profile is a cusp rather than\\n   a gaussian, so it lands as a crease in sheet metal instead of a soft swell. */\\nfloat ripple(vec2 p, float t){\\n  float sum = 0.;\\n  for(int i = 0; i < 3; i++){\\n    if(uRip[i].w < 0.5) continue;\\n    float age = t - uRip[i].z;\\n    if(age < 0. || age > 4.) continue;\\n    vec2  rp = p - uRip[i].xy;\\n    float facet = 1. + uRipK2.x * cos(uRipK2.y * atan(rp.y, rp.x) + age * 2.1 + float(i) * 2.4);\\n    float x = (length(rp) - age * uRipK.x * facet) / uRipK.y;\\n    sum += exp(-pow(abs(x) + 1e-4, uRipK2.z)) * exp(-age * uRipK.z);\\n  }\\n  return sum;\\n}\\n\\n/* A soft well under the cursor.  It lags behind the real pointer and swells\\n   with speed, so moving across the button drags the metal rather than sliding\\n   a static blob over it. */\\nfloat pointerW(vec2 p){\\n  if(uPtr.z < 0.001) return 0.;\\n  float d = length(p - uPtr.xy) / uPtrK.x;\\n  return exp(-d*d) * uPtr.z;\\n}\\n/* Displacing the sample point, not the field value, is what makes this read as\\n   liquid: the bands bulge and stretch around the cursor like a lens instead of\\n   just getting brighter under it. */\\nvec2 pointerWarp(vec2 p){\\n  float w = pointerW(p);\\n  if(w <= 0.) return vec2(0.);\\n  return normalize(p - uPtr.xy + vec2(1e-5)) * w * (uPtrK.y + uPtrK.z * uPtr.w);\\n}\\n`;\\n\\n/* ---- the travelling rim, in its own pass so the blur below never touches it */\\nconst FRAG_RIM = HEAD + `\\nuniform float uBw;       // stroke half-width, device px\\nuniform float uE[8];     // base, hot, chroma-across, chroma-along, speed,\\n                         // topBias, press lift, ripple lift\\n\\n/* Arc-length position around the pill, 0..1, starting at the right-hand\\n   extreme and running counter-clockwise.  Straight runs and caps are measured\\n   in real length so a highlight travels at a constant speed all the way\\n   round instead of stalling on the caps. */\\nfloat perim(vec2 d, float a, float r){\\n  float P = 4.*a + 2.*PI*r;\\n  float s;\\n  if(d.x >= a){                                   // right cap\\n    float th = atan(d.y, d.x - a); if(th < 0.) th += 2.*PI;\\n    s = (th <= PI*0.5) ? r*th : P - r*(2.*PI - th);\\n  } else if(d.x <= -a){                           // left cap\\n    float th = atan(d.y, d.x + a); if(th < 0.) th += 2.*PI;\\n    s = r*PI*0.5 + 2.*a + r*(th - PI*0.5);\\n  } else if(d.y >= 0.){                           // top run\\n    s = r*PI*0.5 + (a - d.x);\\n  } else {                                        // bottom run\\n    s = r*PI*1.5 + 2.*a + (d.x + a);\\n  }\\n  return s / P;\\n}\\n// periodic bump, so a highlight wraps cleanly at s = 0\\nfloat pb(float u, float w){ u = fract(u); float x = min(u, 1.-u); return exp(-(x*x)/(w*w)); }\\n\\n// travelling brightness around the rim — three lobes at different speeds and\\n// widths, which never quite re-align, so the light keeps re-pooling\\nfloat rimHot(float s, float t){\\n  float v = uE[0];\\n  v += 0.62 * pb(s - t*uE[4],             0.075);\\n  v += 0.44 * pb(s + t*uE[4]*0.63 + 0.41, 0.135);\\n  v += 0.30 * pb(s - t*uE[4]*0.34 + 0.73, 0.200);\\n  return v;\\n}\\n// soft band riding the pill edge, offset per channel to fringe across the stroke\\nfloat rimBand(float sd, float off){ return 1. - smoothstep(0., uBw*1.05, abs(sd + uBw*0.55 + off)); }\\n\\nvoid main(){\\n  vec2  d  = gl_FragCoord.xy - uC;\\n  float sd = sdPill(d, uHalf, uHalf.y);\\n  if(sd > uBw*2.5 || sd < -uBw*3.5){ o = vec4(0.); return; }\\n\\n  /* Each channel is offset both *across* the stroke and *along* it, so the rim\\n     fringes red-outside / cyan-inside and its hue also drifts as a highlight\\n     slides past — the two together are what read as metal rather than as a\\n     moving white dot. */\\n  float a = max(uHalf.x - uHalf.y, 0.);\\n  float s = perim(d, a, uHalf.y);\\n  float top = mix(1., 0.5 + 0.5 * (d.y / uHalf.y), uE[5]);\\n\\n  // pressing lifts the whole outline, and each ripple flares it again as the\\n  // ring sweeps past — so the rim reports the press twice, once as a step and\\n  // once as a wave running round the edge\\n  // …and the stretch of outline nearest the cursor picks up a little too\\n  vec2  p   = vec2(d.x, -d.y) / (uHalf.y * 2.);\\n  float lift = 1. + uPress * uE[6] + ripple(p, uT) * uE[7]\\n             + pointerW(p) * uPtrK.w;\\n\\n  o = vec4(vec3(\\n    rimBand(sd,  uE[2]) * rimHot(s + uE[3], uT),\\n    rimBand(sd,  0.   ) * rimHot(s,         uT),\\n    rimBand(sd, -uE[2]) * rimHot(s - uE[3], uT)\\n  ) * uE[1] * top * lift, 1.);\\n}`;\\n\\nconst FRAG_SCENE = HEAD + `\\nuniform float uP[21];    // tunables\\n\\nfloat h21(vec2 p){\\n  vec3 p3 = fract(vec3(p.xyx) * 0.1031);\\n  p3 += dot(p3, p3.yzx + 33.33);\\n  return fract((p3.x + p3.y) * p3.z);\\n}\\nfloat vn(vec2 p){\\n  vec2 i = floor(p), f = fract(p);\\n  f = f*f*(3.-2.*f);\\n  float a = h21(i), b = h21(i+vec2(1,0)), c = h21(i+vec2(0,1)), d = h21(i+vec2(1,1));\\n  return mix(mix(a,b,f.x), mix(c,d,f.x), f.y) * 2. - 1.;\\n}\\n// normalised to roughly -1..1; low gain keeps the first octave dominant, which\\n// is what keeps the ribbons big and smooth instead of turbulent\\nfloat fbm(vec2 p, float g){\\n  float s = 0., a = 1., n = 0.;\\n  for(int i=0;i<4;i++){ s += a*vn(p); n += a; p = p*2.03 + 11.7; a *= g; }\\n  return s / n;\\n}\\nfloat fbm(vec2 p){ return fbm(p, 0.5); }\\n\\n/* p is in button-height units, +y down, origin at the pill centre.\\n\\n   The bands in the reference are a *family of parallel curves*: one swooping\\n   valley repeated up the button, dense where the light is pinched and pulled\\n   wide open where it is not.  So the field is built that way explicitly —\\n\\n       V = (y - valley(x)) * density(x)\\n\\n   — rather than hoping 2-D noise happens to produce it.  Level sets of V are\\n   all vertical translates of the same valley curve, which is what makes the\\n   ribbons laminar and near-parallel; a density that varies along x is what makes\\n   them crowd into razor fringes at one end and open into a broad wash at the\\n   other.  A soft plateau over V then paints them, sampled once per\\n   wavelength at slightly offset heights, so every edge opens into a prism of\\n   width dispersion / |grad V|.                                             */\\n\\n// smooth 1-D wiggle that drifts slowly with time\\nfloat wig(float x, float t, float seed){\\n  return vn(vec2(x,          t*0.150 + seed)) * 0.60\\n       + vn(vec2(x*2.07 + 4., t*0.105 + seed)) * 0.27\\n       + vn(vec2(x*4.30 - 7., t*0.080 + seed)) * 0.13;\\n}\\n\\nfloat valleyAt(vec2 p, float t){ return wig(p.x*uP[0], t, 0.0) * uP[1]; }\\nfloat densAt  (vec2 p, float t){ return uP[2] * exp(uP[3] * wig(p.x*uP[4] + 9.0, t, 2.7)); }\\n\\nfloat surface(vec2 p, float t){\\n  float V = (p.y - valleyAt(p,t)) * densAt(p,t);\\n  V += uP[5] * fbm(p*vec2(0.8, 1.7)*uP[6] + vec2(t*0.05, -t*0.03), uP[17]);\\n  return V - uP[7];\\n}\\n// One plateau per unit of V — so the density is literally bands per button height.\\n// A plateau rather than a step is what puts warm on the low edge and cool on\\n// the high edge of every ribbon.\\nfloat tone(float v){\\n  float u = fract(v);\\n  float e = uP[9], W = uP[10] * 0.5;\\n  return smoothstep(0.5-W-e, 0.5-W, u) * (1. - smoothstep(0.5+W, 0.5+W+e, u));\\n}\\nvec3 spec(float t){ return clamp(vec3(1.5) - abs(4.*t - vec3(3.,2.,1.)), 0., 1.); }\\n\\nvoid main(){\\n  vec2  d  = gl_FragCoord.xy - uC;\\n  float sd = sdPill(d, uHalf, uHalf.y);\\n  float pill = 1. - smoothstep(-1., 1., sd);\\n  float S = uHalf.y * 2.;                 // button height, device px\\n  float t = uT;\\n\\n  // rgb is premultiplied by the mask and alpha carries it, so the blur that\\n  // follows can normalise and keep a clean edge instead of a dark vignette\\n  if(uHover <= 0.0015 || pill <= 0.0015){ o = vec4(0., 0., 0., pill); return; }\\n\\n  vec2  p = vec2(d.x, -d.y) / S;          // gl_FragCoord is y-up\\n  vec2  q = p + pointerWarp(p);           // the cursor drags the sheet\\n\\n  // self-refraction: bend the lookup along the field\\'s own slope, which piles\\n  // iso-lines up into folds instead of leaving them evenly spaced\\n  float h0 = surface(q, t);\\n  vec2  gp = vec2(dFdx(h0), -dFdy(h0)) * S;          // grad in p-units\\n  float V  = surface(q - gp * uP[8] / max(uP[2], .001), t);\\n\\n  // gradient-aligned filaments: fast variation across the iso-lines, slow\\n  // along them, so the fine detail reads as drawn-out fibres of light\\n  vec2  gd = normalize(gp + vec2(1e-5));\\n  V += uP[13] * fbm(vec2(dot(q,gd)*uP[14], dot(q, vec2(-gd.y,gd.x))*uP[14]*0.04) + vec2(0., t*0.06));\\n\\n  // press ripple: displacing the field rather than adding light means the\\n  // bands themselves bow outwards as the ring passes, which is what sells it\\n  // as a disturbance *in* the metal instead of a decal over it\\n  float rip  = ripple(p, t);\\n  float well = pointerW(p);\\n  V += rip * uRipK.w;\\n\\n  // Real dispersion is not linear in wavelength — the blue end bends far more\\n  // than the red (Cauchy).  Skewing the sample offsets the same way is what\\n  // gives the reference its broad cool wash against a tight warm edge.\\n  const int N = 21;\\n  float mid = 1. - pow(0.5, uP[12]);\\n  vec3 col = vec3(0.), wsum = vec3(0.);\\n  for(int i=0;i<N;i++){\\n    float k = float(i)/float(N-1);\\n    vec3  w = spec(k);\\n    col  += w * tone(V + ((1. - pow(1. - k, uP[12])) - mid) * uP[11]);\\n    wsum += w;\\n  }\\n  col /= wsum;\\n  col = pow(col, vec3(uP[15]));\\n\\n  // light envelope — the ribbons only exist where the sheet is lit, and the\\n  // dark upper region is bounded by the same valley curve the bands follow\\n  float lit = smoothstep(uP[18], uP[19], q.y - valleyAt(q, t));\\n  lit *= mix(1., lit, 0.55);                     // deepen the unlit crescent\\n  col *= uP[16] * lit;\\n\\n  // the crest runs hotter, and carries a little light of its own so it stays\\n  // legible through the softening blur and across the unlit part of the pill\\n  col = col * (1. + rip * 1.15 + well * 0.60);\\n\\n  o = vec4(col * pill * uHover, pill);\\n}`;\\n\\n/* Downsample; optionally adding a second source (used to fold the rim into\\n   the bloom input).  Alpha rides along so the metal\\'s coverage mask survives\\n   the blur chain. */\\nconst FRAG_DOWN = `#version 300 es\\nprecision highp float;\\nout vec4 o;\\nuniform sampler2D uTex, uTex2;\\nuniform vec2 uDstTexel;   // 1 / destination size  (maps dest fragCoord -> uv)\\nuniform vec2 uSrcTexel;   // 1 / source size       (tap spacing)\\nuniform float uAdd;       // 1 to include uTex2\\nvoid main(){\\n  vec2 uv = gl_FragCoord.xy * uDstTexel;\\n  // Taps sit a quarter of a *destination* texel out, so for a 2x reduction\\n  // they land exactly on the four source texel centres.  Spacing them by a\\n  // whole source texel instead — as this did originally — skips every other\\n  // pixel, and any fine detail in the field folds down into low-frequency\\n  // moir\\xe9 that no amount of subsequent blurring can remove.\\n  vec2 e = uDstTexel * 0.25;\\n  vec4 s = texture(uTex, uv + vec2(-e.x,-e.y)) + texture(uTex, uv + vec2( e.x,-e.y))\\n         + texture(uTex, uv + vec2(-e.x, e.y)) + texture(uTex, uv + vec2( e.x, e.y));\\n  s *= 0.25;\\n  if(uAdd > 0.5){\\n    vec4 r = texture(uTex2, uv + vec2(-e.x,-e.y)) + texture(uTex2, uv + vec2( e.x,-e.y))\\n           + texture(uTex2, uv + vec2(-e.x, e.y)) + texture(uTex2, uv + vec2( e.x, e.y));\\n    s.rgb += r.rgb * 0.25;\\n  }\\n  o = s;\\n}`;\\n\\nconst FRAG_BLUR = `#version 300 es\\nprecision highp float;\\nout vec4 o;\\nuniform sampler2D uTex; uniform vec2 uTexel; uniform vec2 uDir; uniform float uR;\\nvoid main(){\\n  vec2 uv = gl_FragCoord.xy * uTexel;\\n  vec2 st = uTexel * uDir * uR;\\n  vec4 s = texture(uTex, uv) * 0.1964;\\n  s += (texture(uTex, uv + st*1.4118) + texture(uTex, uv - st*1.4118)) * 0.2969;\\n  s += (texture(uTex, uv + st*3.2941) + texture(uTex, uv - st*3.2941)) * 0.0944;\\n  s += (texture(uTex, uv + st*5.1765) + texture(uTex, uv - st*5.1765)) * 0.0104;\\n  o = s;\\n}`;\\n\\nconst FRAG_COMP = HEAD + `\\nuniform sampler2D uSoft, uRim, uGlow;\\nuniform vec2  uRes;\\nuniform float uGlowGain, uGlowIn, uOccl, uDim, uPunch, uTintAmt; uniform vec3 uTint;\\n\\nvoid main(){\\n  vec2 uv = gl_FragCoord.xy / uRes;\\n  vec3 glow = texture(uGlow, uv).rgb;\\n\\n  vec2  d    = gl_FragCoord.xy - uC;\\n  float sd   = sdPill(d, uHalf, uHalf.y);\\n  float pill = 1. - smoothstep(-1., 1., sd);\\n\\n  // normalised blur: dividing by the blurred coverage keeps the softened metal\\n  // full strength right up to the edge instead of fading into the mask\\n  vec4 m = texture(uSoft, uv);\\n\\n  // Scrim, applied *after* the blur: knock the metal back through the middle\\n  // where the label sits, leaving the top and bottom at full brightness.  Doing\\n  // this before the blur would smear the protection away at high blur values.\\n  float veil = 1. - smoothstep(0.46, 0.88, abs(d.y) / uHalf.y);\\n\\n  // Blurring flattens the tonal range into a wash; putting the contrast back\\n  // with a power curve — after the blur, so it costs no smoothness — is what\\n  // makes it read as poured metal rather than a soft glow.  Highlights keep\\n  // their level while the mid-tones drop away.\\n  vec3 metal = pow(max(m.rgb / max(m.a, 1e-3), 0.), vec3(uPunch));\\n\\n  vec3 core = metal * pill * mix(1., uDim, veil) + texture(uRim, uv).rgb;\\n\\n  // The ripple\\'s own light is added here, after the blur, so the crease stays\\n  // a hard line.  Its displacement of the field still rides inside the\\n  // softened metal — the sheet bows, and the crest glints along the fold.\\n  float rip = ripple(vec2(d.x, -d.y) / (uHalf.y * 2.), uT);\\n  core += vec3(rip * rip) * uRipK2.w * pill * mix(1., 0.42, veil);\\n\\n  // The button occludes its own bloom over the patch where its shadow falls,\\n  // so the drop shadow keeps its contrast even when the face is blown out.\\n  float sdSh = sdPill(d + vec2(0., uHalf.y * 0.62), uHalf * 0.94, uHalf.y * 0.94);\\n  float occl = uOccl * exp(-max(sdSh, 0.) / (uHalf.y * 0.75));\\n\\n  // Bloom spills mostly outward; a little of it is allowed back inside so the\\n  // hot rim bleeds onto the face, as it does on the reference component.\\n  vec3 rgb = core + glow * uGlowGain * mix(1., uGlowIn, pill) * (1. - occl * (1. - pill)); rgb = min(rgb, vec3(1.)) * mix(vec3(1.), uTint, uTintAmt * uHover);\\n\\n  // premultiplied — the page\\'s ambient pool and the button\\'s drop shadow are\\n  // CSS underneath, and this layer adds light on top of them\\n  float a = clamp(max(rgb.r, max(rgb.g, rgb.b)), 0., 1.);\\n  o = vec4(min(rgb, vec3(1.)), a);\\n}`;\\n\\n/* --------------------------------------------------------------- */\\nconst cv = document.getElementById(\\'fx\\');\\nconst gl = cv.getContext(\\'webgl2\\', {alpha:true, antialias:false, premultipliedAlpha:true, powerPreference:\\'high-performance\\'});\\nconst stage = document.getElementById(\\'stage\\');\\nconst btn   = document.getElementById(\\'btn\\');\\nconst plate = document.querySelector(\\'.plate\\');\\n\\n// the metal field — uP[0..20]\\nconst P = window.__P = {\\n  valFreq:   0.50,   // 0  x-frequency of the valley curve\\n  valAmp:    0.55,   // 1  valley depth, in button heights (bounded so the\\n                     //    ribbon can never drift entirely off the pill)\\n  dens:      2.40,   // 2  band density — bands per button height\\n  densVar:   2.20,   // 3  how much the density swings along x (exponential)\\n  densFreq:  0.32,   // 4  x-frequency of the density variation\\n  wobAmp:    0.12,   // 5  organic 2-D wobble, in field units\\n  wobFreq:   1.60,   // 6  its frequency\\n  lift:      0.05,   // 7  phase offset of the band family\\n  refract:   0.18,   // 8  self-refraction — folds the iso-lines\\n  edge:      0.04,   // 9  softness of the plateau edges\\n  width:     0.46,   // 10 plateau width, as a fraction of one band period\\n  disp:      0.30,   // 11 spectral dispersion, in band periods\\n  skew:      1.50,   // 12 dispersion skew — >1 spreads the blue end\\n  // The filaments were 20 cycles per button height — finer than the softening\\n  // buffer can carry, so they aliased into stripes instead of reading as\\n  // fibres.  At this blur they contribute nothing but that, so they are off.\\n  fineAmp:   0.0,    // 13 filament amplitude\\n  fineFreq:  9.0,    // 14 filament frequency across the iso-lines\\n  gamma:     1.00,   // 15 tone gamma\\n  gain:      1.90,   // 16 overall gain\\n  octGain:   0.32,   // 17 fbm octave gain — low keeps the wobble big\\n  litLo:    -0.26,   // 18 distance below the valley where light begins\\n  litHi:     0.10,   // 19 …and where it is full\\n  dim:       0.44    // 20 how far the metal is knocked back under the label\\n};\\nconst PKEYS = Object.keys(P);\\n\\n// the animated rim — uE[0..5]\\nconst E = window.__E = {\\n  base:   0.20,      // 0 floor brightness, so the whole outline stays drawn\\n  hot:    0.82,      // 1 gain on the travelling highlights\\n  chromA: 0.42,      // 2 chromatic offset across the stroke, device px\\n  chromS: 0.030,     // 3 chromatic offset along the perimeter, in laps\\n  speed:  0.070,     // 4 laps per second of the leading highlight\\n  top:    0.35,      // 5 how much the rim stays biased to the top edge\\n  press:  0.85,      // 6 how far the outline brightens while held\\n  ripple: 1.60       // 7 extra flare as a ripple crest crosses the outline\\n};\\nconst EKEYS = Object.keys(E);\\n\\n// composite / JS-side only\\nconst C = window.__C = { tint: [0.902, 1.0, 0.169], tintAmt: 0.35,\\n  glow:   1.95,      // outer-glow gain\\n  glowR:  1.30,      // outer-glow radius\\n  glowIn: 0.30,      // how much bloom is allowed back inside the pill\\n  occl:   0.62,      // how much the drop shadow eats the bloom beneath it\\n  soften: 0.24,      // blur on the metal, in button heights — the \"molten\" knob\\n  punch:  1.50       // contrast curve on the softened metal; 1 = off\\n};\\n\\n// disturbances — all distances in button heights, times in seconds\\nconst R = window.__R = {\\n  // press ripple\\n  speed:  1.85,      // how fast the ring expands\\n  width:  0.20,      // ring thickness\\n  decay:  1.35,      // e-fold fade\\n  amp:    1.35,      // how far it displaces the metal field\\n  facet:  0.18,      // depth of the faceting on the wavefront\\n  lobes:  6.0,       // how many facets\\n  sharp:  1.15,      // crest profile: 2 = gaussian swell, ~1 = hard crease\\n  emit:   0.45,      // light the crest carries of its own\\n  // cursor well\\n  ptrRad:  0.55,     // radius of the well\\n  ptrAmp:  0.32,     // how far the sheet is dragged when the cursor is still\\n  ptrFast: 0.40,     // extra drag at full speed\\n  ptrRim:  0.80,     // how much the nearest rim brightens\\n  ptrLag:  0.0016,   // trail: fraction of the gap left after 1s (lower = snappier)\\n  ptrVref: 4.5       // cursor speed, in button heights/sec, that counts as \"fast\"\\n};\\n\\nif(!gl){\\n  document.body.innerHTML = \\'<p style=\"color:#888;font:14px system-ui\">WebGL2 is required for this page.</p>\\';\\n} else {\\n\\nfunction sh(type, src){\\n  const s = gl.createShader(type); gl.shaderSource(s, src); gl.compileShader(s);\\n  if(!gl.getShaderParameter(s, gl.COMPILE_STATUS)) throw new Error(gl.getShaderInfoLog(s) + \\'\\\\n\\' + src);\\n  return s;\\n}\\nfunction prog(fs){\\n  const p = gl.createProgram();\\n  gl.attachShader(p, sh(gl.VERTEX_SHADER, VERT));\\n  gl.attachShader(p, sh(gl.FRAGMENT_SHADER, fs));\\n  gl.bindAttribLocation(p, 0, \\'position\\');\\n  gl.linkProgram(p);\\n  if(!gl.getProgramParameter(p, gl.LINK_STATUS)) throw new Error(gl.getProgramInfoLog(p));\\n  const u = {};\\n  const n = gl.getProgramParameter(p, gl.ACTIVE_UNIFORMS);\\n  for(let i=0;i<n;i++){ const info = gl.getActiveUniform(p,i); u[info.name.replace(\\'[0]\\',\\'\\')] = gl.getUniformLocation(p, info.name); }\\n  return {p, u};\\n}\\nconst pScene = prog(FRAG_SCENE), pRim = prog(FRAG_RIM),\\n      pDown  = prog(FRAG_DOWN),  pBlur = prog(FRAG_BLUR), pComp = prog(FRAG_COMP);\\n\\nconst vao = gl.createVertexArray(); gl.bindVertexArray(vao);\\nconst vbo = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, vbo);\\ngl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1,-1, 3,-1, -1,3]), gl.STATIC_DRAW);\\ngl.enableVertexAttribArray(0); gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 0, 0);\\n\\nconst hasFloat = !!gl.getExtension(\\'EXT_color_buffer_half_float\\');\\nfunction makeTarget(){\\n  const tex = gl.createTexture();\\n  gl.bindTexture(gl.TEXTURE_2D, tex);\\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\\n  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\\n  const fbo = gl.createFramebuffer();\\n  gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\\n  gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, tex, 0);\\n  return {tex, fbo, w:0, h:0};\\n}\\nfunction sizeTarget(t, w, h){\\n  if(t.w === w && t.h === h) return;\\n  t.w = w; t.h = h;\\n  gl.bindTexture(gl.TEXTURE_2D, t.tex);\\n  if(hasFloat) gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA16F, w, h, 0, gl.RGBA, gl.HALF_FLOAT, null);\\n  else         gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA8,   w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\\n}\\nconst T_core = makeTarget(), T_rim = makeTarget(),   // full res\\n      T_s1   = makeTarget(), T_s2  = makeTarget(),   // half res: metal softening\\n      T_a    = makeTarget(), T_b   = makeTarget();   // 1/DOWN: bloom\\n\\nlet W = 0, H = 0, DPR = 1, BW = 0, BH = 0, CX = 0, CY = 0;\\n// The bloom buffer is downsampled to keep the button ~129 texels tall at any\\n// size, so one set of blur radii gives a glow of the same *relative* extent\\n// whether this renders at 52px or as a hero.\\nlet DOWN = 4;\\nconst GLOW_TEX = 129;\\nlet needResize = true;\\n\\nfunction resize(){\\n  const r  = stage.getBoundingClientRect();\\n  const br = btn.getBoundingClientRect();\\n  DPR = Math.min(window.devicePixelRatio || 1, 2);\\n  const w = Math.max(2, Math.round(r.width  * DPR));\\n  const h = Math.max(2, Math.round(r.height * DPR));\\n  if(w !== W || h !== H){ W = w; H = h; cv.width = W; cv.height = H; }\\n  BW = br.width  * DPR; BH = br.height * DPR;\\n  CX = (br.left - r.left) * DPR + BW/2;\\n  CY = H - ((br.top - r.top) * DPR + BH/2);     // gl_FragCoord is y-up\\n  sizeTarget(T_core, W, H); sizeTarget(T_rim, W, H);\\n  const hw = Math.max(2, Math.ceil(W/2)), hh = Math.max(2, Math.ceil(H/2));\\n  sizeTarget(T_s1, hw, hh); sizeTarget(T_s2, hw, hh);\\n  DOWN = Math.max(1, Math.min(4, Math.round(BH / GLOW_TEX)));\\n  const dw = Math.max(2, Math.ceil(W/DOWN)), dh = Math.max(2, Math.ceil(H/DOWN));\\n  sizeTarget(T_a, dw, dh); sizeTarget(T_b, dw, dh);\\n  needResize = false;\\n}\\nnew ResizeObserver(() => { needResize = true; }).observe(stage);\\n\\nfunction drawTo(t){\\n  gl.bindFramebuffer(gl.FRAMEBUFFER, t ? t.fbo : null);\\n  gl.viewport(0, 0, t ? t.w : W, t ? t.h : H);\\n  gl.drawArrays(gl.TRIANGLES, 0, 3);\\n}\\n\\nconst uArr = new Float32Array(PKEYS.length);\\nconst eArr = new Float32Array(EKEYS.length);\\nlet hover = 0, hoverTarget = 0, clock = 0, last = performance.now();\\n\\n// three ripple slots, reused round-robin so rapid taps overlap\\nconst RIP = [0,1,2].map(() => ({x:0, y:0, t:-99, on:0}));\\nconst ripArr = new Float32Array(12);\\nlet ripNext = 0, press = 0, pressTarget = 0;\\n\\n// the cursor well: a target the metal chases, plus how fast it is being moved\\nconst ptr = {x:0, y:0}, ptrS = {x:0, y:0};\\nlet ptrAmt = 0, ptrSpeed = 0;\\n\\nfunction addRipple(x, y){\\n  const r = RIP[ripNext];\\n  ripNext = (ripNext + 1) % RIP.length;\\n  r.x = x; r.y = y; r.t = clock; r.on = 1;\\n}\\n// pointer position -> button-height units from the pill centre, +y down\\nfunction localPt(e){\\n  const b = btn.getBoundingClientRect(), s = b.height;\\n  return [(e.clientX - (b.left + b.width/2)) / s,\\n          (e.clientY - (b.top  + b.height/2)) / s];\\n}\\n\\nconst calm = matchMedia(\\'(prefers-reduced-motion: reduce)\\');\\nlet drawn = null;                  // signature of the last frame actually drawn\\n\\nfunction frame(now){\\n  const dtRaw = (now - last) / 1000; last = now;\\n  const dt = Math.min(dtRaw, 1/20);\\n  if(!calm.matches && !(window.__idleStill && hover < 0.002 && press < 0.002)) clock += dt;\\n\\n  // asymmetric ease: quick to bloom, a touch quicker to die\\n  const k = hoverTarget > hover ? 1 - Math.pow(0.0012, dt) : 1 - Math.pow(0.00012, dt);\\n  hover += (hoverTarget - hover) * k;\\n  if(Math.abs(hoverTarget - hover) < 0.0008) hover = hoverTarget;\\n\\n  // press snaps on and lets go slowly\\n  const pk = pressTarget > press ? 1 - Math.pow(1e-9, dt) : 1 - Math.pow(0.004, dt);\\n  press += (pressTarget - press) * pk;\\n  if(Math.abs(pressTarget - press) < 0.002) press = pressTarget;\\n\\n  for(let i = 0; i < RIP.length; i++){\\n    const r = RIP[i];\\n    if(r.on && clock - r.t > 4) r.on = 0;\\n    ripArr[i*4] = r.x; ripArr[i*4+1] = r.y; ripArr[i*4+2] = r.t; ripArr[i*4+3] = r.on;\\n  }\\n  const ripLive = RIP.some(r => r.on);\\n\\n  // the well trails the cursor and swells with how fast it is being dragged\\n  const lag = 1 - Math.pow(R.ptrLag, dt);\\n  const dx = (ptr.x - ptrS.x) * lag, dy = (ptr.y - ptrS.y) * lag;\\n  ptrS.x += dx; ptrS.y += dy;\\n  const inst = Math.min(Math.hypot(dx, dy) / Math.max(dt, 1e-3) / R.ptrVref, 1);\\n  ptrSpeed += (inst - ptrSpeed) * (1 - Math.pow(inst > ptrSpeed ? 0.001 : 0.02, dt));\\n  const wantWell = (on.over || on.press) ? 1 : 0;\\n  ptrAmt += (wantWell - ptrAmt) * (1 - Math.pow(0.004, dt));\\n  if(Math.abs(wantWell - ptrAmt) < 0.002) ptrAmt = wantWell;\\n\\n  if(needResize) resize();\\n\\n  // The rim keeps travelling even at rest, so the only truly static case is\\n  // reduced motion with nothing in flight.\\n  const sig = ((calm.matches || (window.__idleStill && hover < 0.002 && press < 0.002)) && !ripLive && ptrAmt < 0.002)\\n    ? `${hover}|${press}|${W}|${H}` : null;\\n  if(sig !== null && sig === drawn){ requestAnimationFrame(frame); return; }\\n  drawn = sig;\\n\\n  for(let i = 0; i < uArr.length; i++) uArr[i] = P[PKEYS[i]];\\n  for(let i = 0; i < eArr.length; i++) eArr[i] = E[EKEYS[i]];\\n  const bw = Math.max(1.5, 3.2 * (BH/516));      // stroke half-width, device px\\n\\n  // 1. metal + travelling rim, masked to the pill\\n  gl.useProgram(pScene.p);\\n  gl.uniform2f(pScene.u.uC, CX, CY);\\n  gl.uniform2f(pScene.u.uHalf, BW/2, BH/2);\\n  gl.uniform1f(pScene.u.uT, clock);\\n  gl.uniform1f(pScene.u.uHover, hover);\\n  gl.uniform1f(pScene.u.uPress, press);\\n  gl.uniform4fv(pScene.u.uRip, ripArr);\\n  gl.uniform4f(pScene.u.uRipK, R.speed, R.width, R.decay, R.amp);\\n  gl.uniform4f(pScene.u.uRipK2, R.facet, R.lobes, R.sharp, R.emit);\\n  gl.uniform4f(pScene.u.uPtr, ptrS.x, ptrS.y, ptrAmt, ptrSpeed);\\n  gl.uniform4f(pScene.u.uPtrK, R.ptrRad, R.ptrAmp, R.ptrFast, R.ptrRim);\\n  gl.uniform1fv(pScene.u.uP, uArr);\\n  drawTo(T_core);\\n\\n  // 2. rim, kept out of the softening blur so the outline stays razor thin\\n  gl.useProgram(pRim.p);\\n  gl.uniform2f(pRim.u.uC, CX, CY);\\n  gl.uniform2f(pRim.u.uHalf, BW/2, BH/2);\\n  gl.uniform1f(pRim.u.uT, clock);\\n  gl.uniform1f(pRim.u.uBw, bw);\\n  gl.uniform1f(pRim.u.uPress, press);\\n  gl.uniform4fv(pRim.u.uRip, ripArr);\\n  gl.uniform4f(pRim.u.uRipK, R.speed, R.width, R.decay, R.amp);\\n  gl.uniform4f(pRim.u.uRipK2, R.facet, R.lobes, R.sharp, R.emit);\\n  gl.uniform4f(pRim.u.uPtr, ptrS.x, ptrS.y, ptrAmt, ptrSpeed);\\n  gl.uniform4f(pRim.u.uPtrK, R.ptrRad, R.ptrAmp, R.ptrFast, R.ptrRim);\\n  gl.uniform1fv(pRim.u.uE, eArr);\\n  drawTo(T_rim);\\n\\n  // 3. soften the metal — half-res box down, then a separable gaussian.  This\\n  //    is what turns the prismatic ribbons molten rather than etched.\\n  gl.useProgram(pDown.p);\\n  gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, T_core.tex);\\n  gl.uniform1i(pDown.u.uTex, 0);\\n  gl.uniform1f(pDown.u.uAdd, 0);\\n  gl.uniform2f(pDown.u.uDstTexel, 1/T_s1.w, 1/T_s1.h);\\n  gl.uniform2f(pDown.u.uSrcTexel, 1/W, 1/H);\\n  drawTo(T_s1);\\n\\n  gl.useProgram(pBlur.p);\\n  gl.uniform1i(pBlur.u.uTex, 0);\\n  gl.uniform2f(pBlur.u.uTexel, 1/T_s1.w, 1/T_s1.h);\\n  // Target sigma in half-res texels, tied to the button so it scales with any\\n  // size.  One very wide 9-tap pass leaves visible comb ghosts — the taps end\\n  // up further apart than the sigma they are meant to describe — so the blur\\n  // is split into passes whose radii add in quadrature.\\n  const sigTex = C.soften * (BH * 0.5) * 0.95;\\n  if(sigTex > 0.1){\\n    const iters = Math.min(4, Math.max(1, Math.ceil(sigTex / 3.0)));\\n    gl.uniform1f(pBlur.u.uR, sigTex / Math.sqrt(iters) / 1.95);\\n    for(let i = 0; i < iters; i++){\\n      gl.bindTexture(gl.TEXTURE_2D, T_s1.tex); gl.uniform2f(pBlur.u.uDir, 1, 0); drawTo(T_s2);\\n      gl.bindTexture(gl.TEXTURE_2D, T_s2.tex); gl.uniform2f(pBlur.u.uDir, 0, 1); drawTo(T_s1);\\n    }\\n  }\\n\\n  // 4. bloom, fed by the softened metal plus the crisp rim\\n  gl.useProgram(pDown.p);\\n  gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, T_s1.tex);\\n  gl.activeTexture(gl.TEXTURE1); gl.bindTexture(gl.TEXTURE_2D, T_rim.tex);\\n  gl.uniform1i(pDown.u.uTex, 0);\\n  gl.uniform1i(pDown.u.uTex2, 1);\\n  gl.uniform1f(pDown.u.uAdd, 1);\\n  gl.uniform2f(pDown.u.uDstTexel, 1/T_a.w, 1/T_a.h);\\n  gl.uniform2f(pDown.u.uSrcTexel, 1/T_s1.w, 1/T_s1.h);\\n  drawTo(T_a);\\n\\n  gl.useProgram(pBlur.p);\\n  gl.activeTexture(gl.TEXTURE0);\\n  gl.uniform1i(pBlur.u.uTex, 0);\\n  gl.uniform2f(pBlur.u.uTexel, 1/T_a.w, 1/T_a.h);\\n  const rs = C.glowR * (BH / DOWN) / GLOW_TEX;\\n  for(const r of [1.0, 2.3, 5.2, 9.0].map(v => v * rs)){\\n    gl.uniform1f(pBlur.u.uR, r);\\n    gl.bindTexture(gl.TEXTURE_2D, T_a.tex); gl.uniform2f(pBlur.u.uDir, 1, 0); drawTo(T_b);\\n    gl.bindTexture(gl.TEXTURE_2D, T_b.tex); gl.uniform2f(pBlur.u.uDir, 0, 1); drawTo(T_a);\\n  }\\n\\n  // 5. composite\\n  gl.useProgram(pComp.p);\\n  gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, T_s1.tex);  gl.uniform1i(pComp.u.uSoft, 0);\\n  gl.activeTexture(gl.TEXTURE1); gl.bindTexture(gl.TEXTURE_2D, T_rim.tex); gl.uniform1i(pComp.u.uRim, 1);\\n  gl.activeTexture(gl.TEXTURE2); gl.bindTexture(gl.TEXTURE_2D, T_a.tex);   gl.uniform1i(pComp.u.uGlow, 2);\\n  gl.uniform2f(pComp.u.uRes, W, H);\\n  gl.uniform2f(pComp.u.uC, CX, CY);\\n  gl.uniform2f(pComp.u.uHalf, BW/2, BH/2);\\n  gl.uniform1f(pComp.u.uT, clock);\\n  gl.uniform4fv(pComp.u.uRip, ripArr);\\n  gl.uniform4f(pComp.u.uRipK, R.speed, R.width, R.decay, R.amp);\\n  gl.uniform4f(pComp.u.uRipK2, R.facet, R.lobes, R.sharp, R.emit);\\n  gl.uniform1f(pComp.u.uGlowGain, C.glow);\\n  gl.uniform1f(pComp.u.uGlowIn, C.glowIn);\\n  gl.uniform1f(pComp.u.uOccl, C.occl);\\n  gl.uniform1f(pComp.u.uDim, P.dim);\\n  gl.uniform1f(pComp.u.uPunch, C.punch); gl.uniform1f(pComp.u.uHover, hover); gl.uniform3fv(pComp.u.uTint, C.tint); gl.uniform1f(pComp.u.uTintAmt, C.tintAmt);\\n  drawTo(null);\\n\\n  requestAnimationFrame(frame);\\n}\\n\\n/* ---------------- interaction ----------------\\n   Hover, press and focus all light the metal; press additionally throws a\\n   ripple from wherever it landed.  Works for mouse, touch and keyboard. */\\nconst on = {over:false, press:false, focus:false};\\nconst sync = () => {\\n  hoverTarget = (on.over || on.press || on.focus) ? 1 : 0;\\n  pressTarget = on.press ? 1 : 0;\\n  document.body.classList.toggle(\\'hot\\', hoverTarget > 0.5);\\n  document.body.classList.toggle(\\'press\\', on.press);\\n};\\n\\nbtn.addEventListener(\\'pointerenter\\', e => {\\n  if(e.pointerType !== \\'mouse\\') return;\\n  // land the well where the cursor actually entered, not where it last was\\n  [ptr.x, ptr.y] = localPt(e);\\n  ptrS.x = ptr.x; ptrS.y = ptr.y; ptrSpeed = 0;\\n  on.over = true; sync();\\n});\\nbtn.addEventListener(\\'pointerleave\\', e => { if(e.pointerType === \\'mouse\\'){ on.over = false; sync(); } });\\n\\n// the cursor drags the metal; tracked on the window so a press can slide off\\n// the button, but only measured while the button is actually engaged\\nwindow.addEventListener(\\'pointermove\\', e => {\\n  if(!on.over && !on.press) return;\\n  [ptr.x, ptr.y] = localPt(e);\\n}, {passive:true});\\n\\nbtn.addEventListener(\\'pointerdown\\', e => {\\n  [ptr.x, ptr.y] = localPt(e);\\n  on.press = true; sync();\\n  addRipple(ptr.x, ptr.y);\\n});\\nwindow.addEventListener(\\'pointerup\\',     () => { on.press = false; sync(); });\\nwindow.addEventListener(\\'pointercancel\\', () => { on.press = false; sync(); });\\n// only keyboard focus keeps it lit — a mouse click shouldn\\'t leave the button\\n// glowing after the pointer has moved away\\nbtn.addEventListener(\\'focus\\', () => {\\n  on.focus = btn.matches(\\':focus-visible\\'); sync();\\n});\\nbtn.addEventListener(\\'blur\\', () => { on.focus = false; sync(); });\\n\\n// keyboard activation gets the same treatment, rippling from the centre\\nbtn.addEventListener(\\'keydown\\', e => {\\n  if(e.key !== \\'Enter\\' && e.key !== \\' \\' || e.repeat) return;\\n  on.press = true; sync(); addRipple(0, 0);\\n});\\nbtn.addEventListener(\\'keyup\\', e => {\\n  if(e.key !== \\'Enter\\' && e.key !== \\' \\') return;\\n  on.press = false; sync();\\n});\\n\\nresize();\\nrequestAnimationFrame(frame);\\n\\n// tiny console hooks for tuning\\nwindow.__set = (o = {}, e = {}, c = {}, r = {}) => {\\n  Object.assign(P, o); Object.assign(E, e); Object.assign(C, c); Object.assign(R, r);\\n  drawn = null;\\n};\\nwindow.__hover  = v => { on.over = !!v; sync(); };\\nwindow.__press  = v => { on.press = !!v; sync(); if(v) addRipple(0, 0); };\\nwindow.__ripple = (x = 0, y = 0) => addRipple(x, y);\\nwindow.__seek   = v => { clock = v; drawn = null; };\\n}\\n</script>\\n<script>\\n// Design GBL 덧붙임(셰이더 문서 맨 끝에 들어감) - 아이콘 바꾸기, 은색, 부품이 보낸 마우스 신호 받기\\n// 설정은 부품이 body 시작 바로 뒤에 넣는 window.__LM_CFG = { icon, mono, idle }, 멈춤은 window.__idleStill\\n// 원본: ThreeUI Liquid Metal Button (MIT, Copyright (c) 2026 Meng To)\\n(() => {\\n  const cfg = window.__LM_CFG || {};\\n  const ICONS = {\\n    top: \\'<svg class=\"ico\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 19V5M5.5 11.5 12 5l6.5 6.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\\',\\n    kakao: \\'<svg class=\"ico\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 4.5c-4.7 0-8.5 2.9-8.5 6.5 0 2.3 1.6 4.3 3.9 5.5l-.9 3.4 3.8-2.4c.6.1 1.1.1 1.7.1 4.7 0 8.5-2.9 8.5-6.5S16.7 4.5 12 4.5Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linejoin=\"round\"/></svg>\\',\\n    grid: \\'<svg class=\"ico\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"4\" y=\"4\" width=\"6.5\" height=\"6.5\" rx=\"1.6\"/><rect x=\"13.5\" y=\"4\" width=\"6.5\" height=\"6.5\" rx=\"1.6\"/><rect x=\"4\" y=\"13.5\" width=\"6.5\" height=\"6.5\" rx=\"1.6\"/><rect x=\"13.5\" y=\"13.5\" width=\"6.5\" height=\"6.5\" rx=\"1.6\"/></g></svg>\\'\\n  };\\n  const btn = document.getElementById(\\'btn\\');\\n  const ico = btn.querySelector(\\'.ico\\');\\n  if (ico) ico.outerHTML = ICONS[cfg.icon] || ICONS.grid;\\n  // 실제 링크\\xb7버튼은 바깥 부품에 있으므로 안쪽 버튼은 키보드\\xb7낭독기에서 뺌\\n  btn.setAttribute(\\'tabindex\\', \\'-1\\');\\n  btn.setAttribute(\\'aria-hidden\\', \\'true\\');\\n  if (cfg.mono) document.getElementById(\\'fx\\').style.filter = \\'grayscale(1) contrast(1.04)\\';\\n\\n  // 바깥 부품이 보낸 마우스 신호를 버튼에 그대로 전달(dx, dy = 버튼 가운데 기준 -1~1)\\n  window.addEventListener(\\'message\\', (e) => {\\n    const d = e.data && e.data.lm;\\n    if (!d) return;\\n    const r = btn.getBoundingClientRect();\\n    const x = r.left + r.width / 2 + (d.dx || 0) * r.width / 2;\\n    const y = r.top + r.height / 2 + (d.dy || 0) * r.height / 2;\\n    const fire = (type, target, bubbles) => target.dispatchEvent(new PointerEvent(type, { clientX: x, clientY: y, pointerType: \\'mouse\\', bubbles }));\\n    if (d.t === \\'enter\\') fire(\\'pointerenter\\', btn, false);\\n    else if (d.t === \\'leave\\') fire(\\'pointerleave\\', btn, false);\\n    else if (d.t === \\'move\\') fire(\\'pointermove\\', window, true);\\n    else if (d.t === \\'down\\') fire(\\'pointerdown\\', btn, true);\\n    else if (d.t === \\'up\\') fire(\\'pointerup\\', window, true);\\n  });\\n})();\\n</script></body>\\n</html>\\n';// 사이트 안 페이지 링크는 Framer 길찾기(router)로 이동해야 미리보기에서도 열린다(일반 링크는 미리보기에서 404).\n// useRouter가 없거나 모양이 다르면 링크 요소에서 React 연결을 거슬러 올라가 navigate·routes를 가진 값을 찾는다.\nconst useFramerRouter=FramerLib.useRouter||(()=>null);function findRouter(router,el){if(router&&typeof router.navigate===\"function\"&&router.routes)return router;if(!el)return null;const key=Object.keys(el).find(k=>k.startsWith(\"__reactFiber\"));let f=key?el[key]:null;for(let i=0;f&&i<400;i++){const v=f.memoizedProps&&f.memoizedProps.value;if(v&&typeof v===\"object\"&&typeof v.navigate===\"function\"&&v.routes)return v;f=f.return;}return null;}// \"/project\", \"./project\", \"/project#id\" 같은 사이트 안 주소를 길 id로 바꿈(못 찾으면 null)\nfunction routeOf(router,href){if(!router||!href)return null;let h=href.trim();if(h.startsWith(\"./\"))h=h.slice(1);if(!h.startsWith(\"/\")||h.startsWith(\"//\"))return null;const[path,hash]=h.split(\"#\");const clean=path.length>1?path.replace(/\\/$/,\"\"):path;const routes=router.routes||{};const id=Object.keys(routes).find(k=>routes[k]&&routes[k].path===clean);return id?{id,hash:hash||undefined}:null;}// 글로우가 들어갈 여유까지 포함한 iframe 한 변 (원 지름 기준)\nconst frameSide=d=>Math.ceil(d*(1+2*900/516));// 셰이더 HTML에 지름·아이콘 설정을 끼워 넣음(정규식·$ 치환 없이 자르고 붙임)\nfunction buildDoc(d,icon,mono,idle){let html=SHADER_HTML;const cfg={icon,mono,idle};const h=html.indexOf(\"</head>\");if(h>=0)html=html.slice(0,h)+`<style>.stage{--h:${d}px}</style>`+html.slice(h);const b=html.indexOf(\"<body>\");if(b>=0){const script=`<script>window.__LM_CFG=${JSON.stringify(cfg)};window.__idleStill=${idle?\"true\":\"false\"};</script>`;html=html.slice(0,b+6)+script+html.slice(b+6);}return html;}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n * @framerIntrinsicWidth 56\n * @framerIntrinsicHeight 56\n */export default function GBLLiquidMetalCircle(props){const{action=\"link\",href=\"/project\",newTab=false,icon=\"grid\",label=\"포트폴리오\"}=props;const{tooltip=true,colors=\"colored\",motion=\"hover\",showAfterScroll=false}=props;const cls=\"gblmc\"+React.useId().replace(/[^A-Za-z0-9]/g,\"\");const wrapRef=React.useRef(null);const frameRef=React.useRef(null);const loadedDoc=React.useRef(null);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const router=useFramerRouter();const[d,setD]=React.useState(56);const[reduced,setReduced]=React.useState(false);const[hover,setHover]=React.useState(false);const[focus,setFocus]=React.useState(false);const[shown,setShown]=React.useState(!showAfterScroll||isCanvas);// 동작 줄이기 설정\nReact.useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const mq=window.matchMedia(\"(prefers-reduced-motion: reduce)\");setReduced(mq.matches);const on=e=>setReduced(e.matches);mq.addEventListener(\"change\",on);return()=>mq.removeEventListener(\"change\",on);},[]);// 자기 상자 크기로 지름 정하기(최소 40)\nReact.useEffect(()=>{const el=wrapRef.current;if(!el||typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(entries=>{const r=entries[0].contentRect;if(r.width>0&&r.height>0)setD(Math.max(40,Math.round(Math.min(r.width,r.height))));});ro.observe(el);return()=>ro.disconnect();},[]);// 한 화면 넘게 내려간 뒤에만 보이기(캔버스에서는 늘 보임)\nReact.useEffect(()=>{if(typeof window===\"undefined\")return;if(!showAfterScroll||isCanvas){setShown(true);return;}let raf=0;const check=()=>{raf=0;setShown(window.scrollY>window.innerHeight);};const onScroll=()=>{if(!raf)raf=requestAnimationFrame(check);};check();window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",onScroll);return()=>{window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",onScroll);if(raf)cancelAnimationFrame(raf);};},[showAfterScroll,isCanvas]);const mono=colors===\"mono\";const idle=motion===\"hover\";const doc=React.useMemo(()=>buildDoc(d,icon,mono,idle),[d,icon,mono,idle]);const S=frameSide(d);// 포인터 위치를 원 중심 기준 -1..1로 바꿔 iframe에 전달(로드 끝난 뒤에만)\nconst post=(t,e)=>{const win=frameRef.current?.contentWindow;if(!win||loadedDoc.current!==doc)return;let dx=0;let dy=0;if(e){const r=e.currentTarget.getBoundingClientRect();if(r.width>0&&r.height>0){dx=(e.clientX-(r.left+r.width/2))/(r.width/2);dy=(e.clientY-(r.top+r.height/2))/(r.height/2);}}const c=v=>Math.max(-1,Math.min(1,v));win.postMessage({lm:{t,dx:c(dx),dy:c(dy)}},\"*\");};const leave=e=>{setHover(false);post(\"leave\",e);};const common={className:cls,\"aria-label\":label,style:{position:\"absolute\",inset:0,display:\"block\",width:\"100%\",height:\"100%\",borderRadius:\"50%\",background:\"transparent\",border:0,padding:0,margin:0,cursor:\"pointer\",zIndex:2,WebkitTapHighlightColor:\"transparent\"},onPointerEnter:e=>{if(e.pointerType===\"mouse\")setHover(true);post(\"enter\",e);},onPointerMove:e=>post(\"move\",e),onPointerLeave:leave,onPointerCancel:leave,onPointerDown:e=>post(\"down\",e),onPointerUp:e=>post(\"up\",e),// 키보드로 닿았을 때만 호버처럼 보이게\nonFocus:e=>{let visible=false;try{visible=e.currentTarget.matches(\":focus-visible\");}catch(err){}if(!visible)return;setFocus(true);post(\"enter\");},onBlur:()=>{setFocus(false);post(\"leave\");}};const showTip=tooltip&&(hover||focus);return /*#__PURE__*/_jsxs(\"div\",{ref:wrapRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"visible\",opacity:shown?1:0,visibility:shown?\"visible\":\"hidden\",pointerEvents:shown?undefined:\"none\",transition:reduced?\"none\":shown?\"opacity .2s ease, visibility 0s\":\"opacity .2s ease, visibility 0s linear .2s\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`.${cls}{outline:none;text-decoration:none;-webkit-appearance:none;appearance:none}.${cls}:focus-visible{outline:2px solid rgba(255,255,255,.68);outline-offset:4px}`}),/*#__PURE__*/_jsx(\"iframe\",{ref:frameRef,srcDoc:doc,sandbox:\"allow-scripts\",title:\"\",tabIndex:-1,\"aria-hidden\":\"true\",onLoad:()=>{loadedDoc.current=doc;},style:{position:\"absolute\",left:\"50%\",top:\"50%\",width:S,height:S,transform:\"translate(-50%,-50%)\",border:0,background:\"transparent\",colorScheme:\"normal\",pointerEvents:\"none\"}}),action===\"top\"?/*#__PURE__*/_jsx(\"button\",{type:\"button\",...common,onClick:()=>{if(typeof window===\"undefined\")return;window.scrollTo({top:0,behavior:reduced?\"auto\":\"smooth\"});}}):/*#__PURE__*/_jsx(\"a\",{href:href,...common,target:newTab?\"_blank\":undefined,rel:newTab?\"noopener noreferrer\":undefined,onClick:e=>{// 새 탭·보조 키·가운데 클릭은 브라우저 기본 동작 그대로\nif(newTab||e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;const r=findRouter(router,e.currentTarget);const to=routeOf(r,href);if(!to)return;e.preventDefault();r.navigate(to.id,to.hash);}}),tooltip&&/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",right:\"calc(100% + 10px)\",top:\"50%\",transform:`translateY(-50%) translateX(${showTip?0:6}px)`,whiteSpace:\"nowrap\",fontFamily:'\"SUIT\", Pretendard, sans-serif',fontSize:13,lineHeight:1,color:\"#F5F5F2\",background:\"rgba(20,20,20,0.9)\",border:\"1px solid rgba(255,255,255,0.14)\",borderRadius:20,padding:\"7px 12px\",pointerEvents:\"none\",zIndex:3,opacity:showTip?1:0,transition:reduced?\"none\":\"opacity .2s ease, transform .2s ease\"},children:label})]});}GBLLiquidMetalCircle.displayName=\"GBL Liquid Metal Circle\";addPropertyControls(GBLLiquidMetalCircle,{action:{type:ControlType.Enum,title:\"Action\",options:[\"link\",\"top\"],optionTitles:[\"링크\",\"맨 위로\"],defaultValue:\"link\"},href:{type:ControlType.String,title:\"Link\",defaultValue:\"/project\",hidden:p=>p.action===\"top\"},newTab:{type:ControlType.Boolean,title:\"New tab\",defaultValue:false,hidden:p=>p.action===\"top\"},icon:{type:ControlType.Enum,title:\"Icon\",options:[\"top\",\"kakao\",\"grid\"],optionTitles:[\"위 화살표\",\"말풍선\",\"네모 네 칸\"],defaultValue:\"grid\"},label:{type:ControlType.String,title:\"Label\",defaultValue:\"포트폴리오\"},tooltip:{type:ControlType.Boolean,title:\"Tooltip\",defaultValue:true},colors:{type:ControlType.Enum,title:\"Colors\",options:[\"colored\",\"mono\"],optionTitles:[\"색\",\"은색\"],defaultValue:\"colored\"},motion:{type:ControlType.Enum,title:\"Motion\",options:[\"hover\",\"always\"],optionTitles:[\"마우스 올릴 때만\",\"늘 흐름\"],defaultValue:\"hover\"},showAfterScroll:{type:ControlType.Boolean,title:\"Show after scroll\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"GBLLiquidMetalCircle\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"56\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicHeight\":\"56\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GBLLiquidMetalCircle.map","// Generated by Framer (2b87f15)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import GBLLiquidMetalCircle from\"https://framerusercontent.com/modules/K684RIq2sG7Dsp8MIEfU/lL8ZMFy0UfB06VxNSnVu/GBLLiquidMetalCircle.js\";const GBLLiquidMetalCircleFonts=getFonts(GBLLiquidMetalCircle);const cycleOrder=[\"o_VJ_F43d\",\"OVvcu9Oo0\"];const serializationHash=\"framer-yABuE\";const variantClassNames={o_VJ_F43d:\"framer-v-aw3qto\",OVvcu9Oo0:\"framer-v-pgupmh\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}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 humanReadableVariantMap={Desktop:\"o_VJ_F43d\",Phone:\"OVvcu9Oo0\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"o_VJ_F43d\"};};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,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"o_VJ_F43d\",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__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-aw3qto\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"o_VJ_F43d\",ref:refBinding,style:{...style},...addPropertyOverrides({OVvcu9Oo0:{\"data-framer-name\":\"Phone\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-qjmy9g-container\",\"data-framer-name\":\"맨 위로\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"hEhj_JfS4-container\",name:\"맨 위로\",nodeId:\"hEhj_JfS4\",rendersWithMotion:true,scopeId:\"wfp4v5Kr4\",children:/*#__PURE__*/_jsx(GBLLiquidMetalCircle,{action:\"top\",colors:\"colored\",height:\"100%\",href:\"/project\",icon:\"top\",id:\"hEhj_JfS4\",label:\"맨 위로\",layoutId:\"hEhj_JfS4\",motion:\"hover\",name:\"맨 위로\",newTab:false,showAfterScroll:true,style:{height:\"100%\",width:\"100%\"},tooltip:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1wn1lc7-container\",\"data-framer-name\":\"카카오톡 상담\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"RqMEqBP_U-container\",name:\"카카오톡 상담\",nodeId:\"RqMEqBP_U\",rendersWithMotion:true,scopeId:\"wfp4v5Kr4\",children:/*#__PURE__*/_jsx(GBLLiquidMetalCircle,{action:\"link\",colors:\"colored\",height:\"100%\",href:\"https://pf.kakao.com/_xoJFnn/chat\",icon:\"kakao\",id:\"RqMEqBP_U\",label:\"카카오톡 상담\",layoutId:\"RqMEqBP_U\",motion:\"hover\",name:\"카카오톡 상담\",newTab:true,showAfterScroll:false,style:{height:\"100%\",width:\"100%\"},tooltip:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1798l73-container\",\"data-framer-name\":\"포트폴리오\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"lfT7PMnEF-container\",name:\"포트폴리오\",nodeId:\"lfT7PMnEF\",rendersWithMotion:true,scopeId:\"wfp4v5Kr4\",children:/*#__PURE__*/_jsx(GBLLiquidMetalCircle,{action:\"link\",colors:\"colored\",height:\"100%\",href:\"/project\",icon:\"grid\",id:\"lfT7PMnEF\",label:\"포트폴리오\",layoutId:\"lfT7PMnEF\",motion:\"hover\",name:\"포트폴리오\",newTab:false,showAfterScroll:false,style:{height:\"100%\",width:\"100%\"},tooltip:true,width:\"100%\"})})})]})})})});});const css=[\".framer-yABuE.framer-nwb7n8, .framer-yABuE .framer-nwb7n8 { display: block; }\",\".framer-yABuE.framer-aw3qto { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 56px; }\",\".framer-yABuE .framer-qjmy9g-container, .framer-yABuE .framer-1wn1lc7-container, .framer-yABuE .framer-1798l73-container { flex: none; height: 56px; position: relative; width: 56px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 200\n * @framerIntrinsicWidth 136\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"OVvcu9Oo0\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framerwfp4v5Kr4=withCSS(Component,css,\"framer-yABuE\");export default Framerwfp4v5Kr4;Framerwfp4v5Kr4.displayName=\"Floating Contact\";Framerwfp4v5Kr4.defaultProps={height:200,width:136};addPropertyControls(Framerwfp4v5Kr4,{variant:{options:[\"o_VJ_F43d\",\"OVvcu9Oo0\"],optionTitles:[\"Desktop\",\"Phone\"],title:\"Variant\",type:ControlType.Enum}});addFonts(Framerwfp4v5Kr4,[{explicitInter:true,fonts:[]},...GBLLiquidMetalCircleFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"Framerwfp4v5Kr4\",\"slots\":[],\"annotations\":{\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"136\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"OVvcu9Oo0\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerIntrinsicHeight\":\"200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// GBLLogoConstruct - 심볼 구성선이 그려지고 세 조각이 격자 위로 맞춰진 뒤, 구성 전체가 물러나며 DESIGN GBL 워드마크가 나타나는 로고 모션(페이지 끝 brand memory용, 반복 없음)\n// Design GBL 심볼(육각형 G)은 정삼각형 격자 위에서 만들어졌다. 그 구성 과정을 보여 준다.\n//   1) 구성선 13줄이 심볼 중심에서 가까운 점부터 양쪽 끝으로 그려진다  2) 꼭짓점 13곳에 기준점이 찍힌다\n//   3) 세 조각(위 막대·C자 몸통·라임 홈)이 격자 방향으로 미끄러져 맞춰진다  4) 라임 홈에 빛이 한 번 번졌다 사라진다\n//   5) 기준점이 사라지고 구성선만 아주 흐리게 남는다(설계도)\n//   6) 구성 전체(선·기준점·심볼)가 심볼 중심으로 살짝 물러나며 흐려지고, 그 위로 DESIGN GBL 워드마크가 부드럽게 나타난다. 그 뒤로는 멈춤.\n// 좌표: 공식 원본 'GBL_로고 리뉴얼_v2.ai' 대지 16(조각)·19(구성선), 1000x1000 단위, 육각형 중심 (500, 500), y는 아래로\n//       워드마크는 같은 원본의 대지 3 윤곽선(글자마다 baseline y = 0, 대문자 높이 51.65625, 위쪽이 음수)\n// 한 시각(tau)의 화면을 요소 속성에 직접 칠하는 방식이라 previewTime 화면과 실제 재생이 같은 그림이다.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useId,useLayoutEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";export const GBL_LOGO_CONSTRUCT_DEFAULTS={lineColor:\"#E6FF2B\",lineOpacity:.32,settledOpacity:.12,bodyColor:\"#E5E5E5\",notchColor:\"#D4FF5A\",symbolWidth:50,maxSymbolHeight:58,phoneSymbolWidth:70,offsetY:0,travel:60,speed:1,replay:true,parallax:true,showWordmark:true,wordmarkColor:\"#E6E6E5\",wordmarkAccent:\"#D4FF5A\",wordmarkWidth:74,wordmarkOffsetY:0,recedeScale:.86,recedeOpacity:.18,recededLineOpacity:.05,previewTime:-1,label:\"Design GBL 로고\"};// ---- 격자 한 벌: 조각 꼭짓점·기준점·구성선 좌표는 모두 여기서만 만든다 ----\n// U = 육각형 가로 폭의 1/8(가로 한 칸), V = U·√3(세로 한 칸), 격자점 P(i, j) = (500 + i·U, 500 + j·V) (i, j는 정수)\n// 같은 꼭짓점은 같은 식으로 계산돼 숫자가 완전히 같다 → 심볼 모서리와 구성선 교차점이 어긋날 수 없음\nconst SQRT3=Math.sqrt(3);const U=601.4/8;const V=U*SQRT3;const lat=(i,j)=>[500+i*U,500+j*V];const polyPoints=cells=>cells.map(([i,j])=>{const[x,y]=lat(i,j);return`${x},${y}`;}).join(\" \");const BAR_POINTS=polyPoints([[2,-2],[1,-1],[-3,-1],[-2,-2]]);const BODY_POINTS=polyPoints([[-3,-1],[-4,0],[-2,2],[2,2],[3,1],[-1,1]]);const NOTCH_POINTS=polyPoints([[4,0],[3,1],[2,0],[0,0],[1,-1],[3,-1]]);const HEX_W=8*U// 육각형 가로 폭(601.4)\n;const HEX_H=4*V// 육각형 세로 높이(약 520.83)\n;// 기준점 13개(꼭짓점)\nconst POINTS_U=[[-2,-2],[2,-2],[1,-1],[-3,-1],[-4,0],[-2,2],[2,2],[3,1],[-1,1],[3,-1],[4,0],[2,0],[0,0]].map(([i,j])=>lat(i,j));const LINE_STEP=.06;const lineAt=(i,j,dx,dy,start)=>{const[x,y]=lat(i,j);return{x,y,dx,dy,start};};const LINES=[...[-2,-1,0,1,2].map((j,k)=>lineAt(0,j,1,0,0+k*LINE_STEP)),...[-4,-2,2,4].map((c,k)=>lineAt(c,0,.5,SQRT3/2,.18+k*LINE_STEP)),...[-4,0,4].map((c,k)=>lineAt(c,0,.5,-SQRT3/2,.3+k*LINE_STEP)),lineAt(1,0,0,1,.42)];// ---- 워드마크 윤곽선(공식 원본 대지 3). 글자마다 baseline y = 0, 위쪽이 음수. 채움 규칙은 기본(nonzero) ----\nconst WORD_GLYPHS={D:\"M37.640625 -51.65625L5.90625 -51.65625L5.90625 0L37.640625 0C48.109375 0 56.609375 -8.484375 56.609375 -18.96875L56.609375 -32.625C56.609375 -43.09375 48.109375 -51.65625 37.640625 -51.65625ZM47.296875 -8.34375L15.203125 -8.34375L15.203125 -43.25L47.296875 -43.25Z\",E:\"M50.328125 -8.34375L15.203125 -8.34375L15.203125 -22.359375L49.8125 -22.359375L49.8125 -30.703125L15.203125 -30.703125L15.203125 -43.25L49.8125 -43.25L49.8125 -51.65625L5.90625 -51.65625L5.90625 0L50.328125 0Z\",S:\"M40.59375 -30.03125L14.25 -30.03125L14.25 -43.25L45.828125 -43.25L45.828125 -34.6875L55.203125 -34.6875L55.203125 -36.09375C55.203125 -44.640625 48.265625 -51.65625 39.703125 -51.65625L19.78125 -51.65625C11.140625 -51.65625 4.875 -47.75 4.875 -39.1875L4.875 -34.09375C4.875 -25.53125 10.625 -21.625 19.1875 -21.625L46.78125 -21.625L46.78125 -8.34375L13.578125 -8.34375L13.578125 -16.90625L4.28125 -16.90625L4.28125 -15.5C4.28125 -6.9375 11.140625 0 19.78125 0L40.59375 0C49.15625 0 56.078125 -3.84375 56.078125 -12.390625L56.078125 -17.5625C56.078125 -26.125 49.15625 -30.03125 40.59375 -30.03125Z\",I:\"M15.203125 0L15.203125 -51.65625L5.90625 -51.65625L5.90625 0Z\",G:\"M24.71875 -31L24.71875 -23.171875L48.484375 -23.171875L48.484375 -8.34375L14.171875 -8.34375L14.171875 -43.25L56.671875 -43.25L56.671875 -51.65625L20.375 -51.65625C11.8125 -51.65625 4.875 -44.640625 4.875 -36.09375L4.875 -15.5C4.875 -6.9375 11.8125 0.078125 20.375 0.078125L42.359375 0.078125C50.921875 0.078125 57.859375 -6.859375 57.859375 -15.5L57.859375 -31Z\",N:\"M46.34375 -51.65625L46.34375 -3.6875L24.28125 -51.65625L5.90625 -51.65625L5.90625 0L14.828125 0L14.828125 -48.046875L37.703125 0L55.28125 0L55.28125 -51.65625Z\",B:\"M50.703125 -26.5C52.90625 -28.046875 54.75 -31.65625 54.75 -34.765625L54.75 -38.15625C54.75 -45.609375 48.78125 -51.65625 41.328125 -51.65625L5.90625 -51.65625L5.90625 0L42.578125 0C50.03125 0 56.015625 -5.984375 56.015625 -13.4375L56.015625 -16.90625C56.015625 -20.8125 53.578125 -25.234375 50.703125 -26.5ZM15.203125 -43.25L45.390625 -43.25L45.390625 -29.671875L15.203125 -29.671875ZM46.640625 -8.34375L15.203125 -8.34375L15.203125 -21.921875L46.640625 -21.921875Z\",L:\"M15.203125 -8.34375L15.203125 -51.65625L5.90625 -51.65625L5.90625 0L49.8125 0L49.8125 -8.34375Z\"};const WORD_DESIGN=[[\"D\",238.0088],[\"E\",299.042723],[\"S\",353.508304],[\"I\",413.951814],[\"G\",435.132874],[\"N\",497.642829]];const WORD_GBL=[[\"G\",587.754582],[\"B\",650.264538],[\"L\",710.708048]];const WORD_BASE_Y=522.7305// 글자를 놓는 baseline (translate(xOffset, WORD_BASE_Y))\n;// 이어 붙인 워드마크의 바깥 상자(원본 좌표). 가로 516.6055, 중심 (502.218, 496.94)\nconst WORD_X0=243.915;const WORD_X1=760.5205;const WORD_Y0=471.0742;const WORD_Y1=522.8086;const WORD_W=WORD_X1-WORD_X0;const WORD_CX=(WORD_X0+WORD_X1)/2;const WORD_CY=(WORD_Y0+WORD_Y1)/2;// ---- 시간표(트리거부터 초. speed 배수는 tau에 이미 곱해져 있음) ----\nconst LINE_DUR=.9;const POINT_START=.55;const POINT_STEP=.03;const POINT_DUR=.4;const BAR_START=1.05;const BODY_START=1.2;const NOTCH_START=1.45;const PIECE_DUR=.8;const GLOW_START=2.1;const GLOW_DUR=.8;const GLOW_PEAK=.55;const GLOW_BLUR=14// 번짐 정도(단위)\n;const FINISH_START=2.4;const FINISH_DUR=.8;const RECEDE_START=3.1// 구성 전체가 심볼 중심으로 물러나며 흐려짐\n;const RECEDE_DUR=1.3;const WORD_START=3.55// DESIGN 먼저, GBL은 WORD_STAGGER 뒤\n;const WORD_STAGGER=.12;const WORD_DUR=1.25;const WORD_RISE=12// 아래에서 올라오는 거리(화면 px)\n;const WORD_BLUR=8// 시작 흐림 정도(화면 px)\n;const TOTAL_PLAIN=FINISH_START+FINISH_DUR// 3.2초 - 워드마크를 끈 설정의 옛 끝\n;const TOTAL=WORD_START+WORD_STAGGER+WORD_DUR// 4.92초\n;const LINE_MARGIN=14// 선을 상자보다 넓게 그려 두는 여백(마우스 반응 최대 5px 대비)\n;const TAIL_EXTRA=8// 물러난 뒤에도 선 끝이 상자 가장자리 밖에 남도록 꼬리를 더 뻗는 여백(마우스 반응 5px + 여유)\n;const POLL_MS=400// 드러남 검사를 scroll·resize 외에 천천히 한 번씩 더 돌리는 간격\n;// SSR(Framer 미리 그리기)에서는 useLayoutEffect 경고가 나므로 서버에서는 useEffect로 대신함\nconst useIsoLayoutEffect=typeof window!==\"undefined\"?useLayoutEffect:useEffect;function clamp(value,minimum,maximum){return Math.min(maximum,Math.max(minimum,value));}function finiteNumber(value,fallback){return typeof value===\"number\"&&Number.isFinite(value)?value:fallback;}function asText(value,fallback){return typeof value===\"string\"&&value.length>0?value:fallback;}function isFramerCanvas(){try{return typeof RenderTarget!==\"undefined\"&&typeof RenderTarget.current===\"function\"&&RenderTarget.current()===RenderTarget.canvas;}catch{return false;}}function prefersReducedMotion(){try{return typeof window!==\"undefined\"&&typeof window.matchMedia===\"function\"&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;}catch{return false;}}// cubic-bezier(x1, y1, x2, y2)를 숫자로 푸는 완화 함수\nfunction makeBezier(x1,y1,x2,y2){const cx=3*x1,bx=3*(x2-x1)-cx,ax=1-cx-bx;const cy=3*y1,by=3*(y2-y1)-cy,ay=1-cy-by;const sx=t=>((ax*t+bx)*t+cx)*t;const sy=t=>((ay*t+by)*t+cy)*t;const dx=t=>(3*ax*t+2*bx)*t+cx;return x=>{if(x<=0)return 0;if(x>=1)return 1;let t=x;for(let i=0;i<6;i++){const e=sx(t)-x;if(Math.abs(e)<1e-5)return sy(t);const d=dx(t);if(Math.abs(d)<1e-6)break;t-=e/d;}let lo=0,hi=1;t=x;for(let i=0;i<24;i++){const v=sx(t);if(Math.abs(v-x)<1e-5)break;if(v<x)lo=t;else hi=t;t=(lo+hi)/2;}return sy(t);};}const EASE=makeBezier(.22,1,.36,1);const EASE_INOUT=makeBezier(.4,0,.2,1)// 물러남(들어가고 나오는 완만한 곡선)\n;// 끝 값에 아주 가까우면 딱 1로 붙임(더하기 오차로 마무리 값이 0.99999...로 남는 일 방지)\nconst prog=(tau,start,dur)=>{const p=(tau-start)/dur;return p>=1-1e-9?1:p<=0?0:p;};const num=v=>(Math.round(v*100)/100).toString();// 직선(점 x,y · 방향 dx,dy)을 사각형으로 자른 매개변수 범위. 사각형 밖이면 null\nfunction clipLine(x,y,dx,dy,x0,y0,x1,y1){let t0=-Infinity,t1=Infinity;const axes=[[x,dx,x0,x1],[y,dy,y0,y1]];for(const[p,d,lo,hi]of axes){if(Math.abs(d)<1e-9){if(p<lo||p>hi)return null;}else{let a=(lo-p)/d,b=(hi-p)/d;if(a>b)[a,b]=[b,a];t0=Math.max(t0,a);t1=Math.min(t1,b);}}return t0<t1?[t0,t1]:null;}function lineParts(ln,px,py,cx,cy,w,h,scaleK){const none={halves:[\"M0 0\",\"M0 0\"],tails:[\"M0 0\",\"M0 0\"]};const x=px(ln.x),y=py(ln.y);const c=clipLine(x,y,ln.dx,ln.dy,-LINE_MARGIN,-LINE_MARGIN,w+LINE_MARGIN,h+LINE_MARGIN);if(!c)return none;const tf=clamp((cx-x)*ln.dx+(cy-y)*ln.dy,c[0],c[1]);const at=t=>`${num(x+ln.dx*t)} ${num(y+ln.dy*t)}`;const halves=[`M${at(tf)}L${at(c[1])}`,`M${at(tf)}L${at(c[0])}`];// 확장 사각형: 심볼 중심 기준 1/k배로 늘린 상자 + 여백. k배로 줄면 정확히 상자 ±(LINE_MARGIN + TAIL_EXTRA)가 됨\nconst k=clamp(scaleK,.5,1);const m=LINE_MARGIN+TAIL_EXTRA;const e=clipLine(x,y,ln.dx,ln.dy,cx-(cx+m)/k,cy-(cy+m)/k,cx+(w-cx+m)/k,cy+(h-cy+m)/k);if(!e)return{halves,tails:[\"M0 0\",\"M0 0\"]};return{halves,tails:[`M${at(c[1])}L${at(Math.max(c[1],e[1]))}`,`M${at(c[0])}L${at(Math.min(c[0],e[0]))}`]};}function collectEls(svg){const one=s=>svg.querySelector(s);const all=s=>Array.from(svg.querySelectorAll(s));const lines=one('[data-lc=\"lines\"]'),bar=one('[data-lc=\"bar\"]'),body=one('[data-lc=\"body\"]');const notch=one('[data-lc=\"notch\"]'),glow=one('[data-lc=\"glow\"]');const recede=one('[data-lc=\"recede\"]'),symbol=one('[data-lc=\"symbol\"]');const halves=all('[data-lc=\"half\"]'),tails=all('[data-lc=\"tail\"]'),points=all('[data-lc=\"point\"]');if(!lines||!bar||!body||!notch||!glow||!recede||!symbol)return null;if(halves.length!==LINES.length*2||points.length!==POINTS_U.length)return null;if(tails.length!==0&&tails.length!==halves.length)return null;const wd=one('[data-lc=\"word-design\"]'),wg=one('[data-lc=\"word-gbl\"]'),wb=all('[data-lc=\"word-blur\"]');const word=wd&&wg&&wb.length===2?[{g:wd,blur:wb[0],filter:wd.getAttribute(\"data-lc-filter\")||\"\"},{g:wg,blur:wb[1],filter:wg.getAttribute(\"data-lc-filter\")||\"\"}]:null;return{lines,halves,tails,points,recede,symbol,bar,body,notch,glow,word};}function slide(el,u,dx,dy){el.setAttribute(\"opacity\",String(u));el.setAttribute(\"transform\",`translate(${(1-u)*dx} ${(1-u)*dy})`);}// tau < 0이면 재생 전(아무것도 안 보임, 물러남 배율 1), tau >= 총 길이면 마무리 상태\nfunction paint(els,cfg,tau){els.halves.forEach((el,i)=>{const ln=LINES[i>>1];const p=prog(tau,ln.start,LINE_DUR);el.setAttribute(\"stroke-dashoffset\",String(1-EASE(p)));const tail=els.tails[i];if(tail)tail.setAttribute(\"visibility\",p>=1?\"visible\":\"hidden\")// 반쪽이 다 그려진 뒤에만 꼬리가 보임(어차피 상자 밖이라 줄어들기 전에는 안 보임)\n;});const fin=EASE(prog(tau,FINISH_START,FINISH_DUR));const rec=cfg.showWordmark?EASE_INOUT(prog(tau,RECEDE_START,RECEDE_DUR)):0// 물러남 진행(0~1). 워드마크를 끄면 항상 0\n;const settled=cfg.lineOpacity+(cfg.settledOpacity-cfg.lineOpacity)*fin;els.lines.setAttribute(\"opacity\",String(settled+(cfg.recededLineOpacity-settled)*rec));els.points.forEach((el,i)=>{const u=EASE(prog(tau,POINT_START+i*POINT_STEP,POINT_DUR));el.setAttribute(\"opacity\",String(u*(1-fin)));el.setAttribute(\"transform\",`scale(${.4+.6*u})`);});const k=cfg.travel/60;slide(els.bar,EASE(prog(tau,BAR_START,PIECE_DUR)),-cfg.travel,0)// 왼쪽에서 가로로\n;slide(els.body,EASE(prog(tau,BODY_START,PIECE_DUR)),-30*k,52*k)// 왼쪽 아래에서 사선 B를 따라 올라옴\n;slide(els.notch,EASE(prog(tau,NOTCH_START,PIECE_DUR)),cfg.travel,0)// 오른쪽에서 가로로(열쇠가 꽂히듯)\n;const g=prog(tau,GLOW_START,GLOW_DUR);const glow=g>0&&g<1?GLOW_PEAK*Math.sin(Math.PI*g):0;els.glow.setAttribute(\"opacity\",String(glow));els.glow.setAttribute(\"visibility\",glow>.001?\"visible\":\"hidden\");// 물러남: 구성 전체가 심볼 중심으로 배율만 줄고(중심 이동은 마크업의 translate가 맡음), 심볼은 따로 흐려짐(조각 자신의 opacity는 그대로 1)\nels.recede.setAttribute(\"transform\",`scale(${1+(cfg.recedeScale-1)*rec})`);els.symbol.setAttribute(\"opacity\",String(1+(cfg.recedeOpacity-1)*rec));// 워드마크: DESIGN 먼저, GBL은 WORD_STAGGER 뒤. 투명→선명 + 아래에서 올라옴 + 흐림이 걷힘(화면 px)\nif(els.word){els.word.forEach((part,idx)=>{const u=EASE(prog(tau,WORD_START+idx*WORD_STAGGER,WORD_DUR));const blur=WORD_BLUR*(1-u);part.g.setAttribute(\"opacity\",String(u));part.g.setAttribute(\"visibility\",u>0?\"visible\":\"hidden\");part.g.setAttribute(\"transform\",`translate(0 ${num(WORD_RISE*(1-u))})`);part.blur.setAttribute(\"stdDeviation\",String(blur));// 거의 걷히면 필터를 떼어 마무리 글자가 또렷하게. 안 보일 때도 필터를 쓰지 않음\nif(u>0&&blur>=.05)part.g.setAttribute(\"filter\",part.filter);else part.g.removeAttribute(\"filter\");});}}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function GBLLogoConstruct(props){const D=GBL_LOGO_CONSTRUCT_DEFAULTS;const lineColor=asText(props.lineColor,D.lineColor);const lineOpacity=clamp(finiteNumber(props.lineOpacity,D.lineOpacity),0,1);const settledOpacity=clamp(finiteNumber(props.settledOpacity,D.settledOpacity),0,1);const bodyColor=asText(props.bodyColor,D.bodyColor);const notchColor=asText(props.notchColor,D.notchColor);const symbolWidth=clamp(finiteNumber(props.symbolWidth,D.symbolWidth),10,100);const maxSymbolHeight=clamp(finiteNumber(props.maxSymbolHeight,D.maxSymbolHeight),10,100);const phoneSymbolWidth=clamp(finiteNumber(props.phoneSymbolWidth,D.phoneSymbolWidth),10,100);const offsetY=finiteNumber(props.offsetY,D.offsetY);const travel=clamp(finiteNumber(props.travel,D.travel),0,400);const speed=clamp(finiteNumber(props.speed,D.speed),.2,4);const replay=props.replay!==false;const parallax=props.parallax!==false;const showWordmark=props.showWordmark!==false;const wordmarkColor=asText(props.wordmarkColor,D.wordmarkColor);const wordmarkAccent=asText(props.wordmarkAccent,D.wordmarkAccent);const wordmarkWidth=clamp(finiteNumber(props.wordmarkWidth,D.wordmarkWidth),30,100);const wordmarkOffsetY=finiteNumber(props.wordmarkOffsetY,D.wordmarkOffsetY);const recedeScale=clamp(finiteNumber(props.recedeScale,D.recedeScale),.5,1);const recedeOpacity=clamp(finiteNumber(props.recedeOpacity,D.recedeOpacity),0,1);const recededLineOpacity=clamp(finiteNumber(props.recededLineOpacity,D.recededLineOpacity),0,1);const previewTime=finiteNumber(props.previewTime,D.previewTime);const label=asText(props.label,D.label);const total=showWordmark?TOTAL:TOTAL_PLAIN// 워드마크를 끄면 옛 끝(3.2초)\n;const uid=useId().replace(/[^A-Za-z0-9]/g,\"\");const clipId=`gbl-lc-clip-${uid}`;const blurId=`gbl-lc-blur-${uid}`;const wordBlurIds=[`gbl-lc-wd-${uid}`,`gbl-lc-wg-${uid}`];const rootRef=useRef(null);const cfgRef=useRef({travel,lineOpacity,settledOpacity,showWordmark,recedeScale,recedeOpacity,recededLineOpacity});cfgRef.current={travel,lineOpacity,settledOpacity,showWordmark,recedeScale,recedeOpacity,recededLineOpacity};const[box,setBox]=useState({w:0,h:0});// 처음부터 실제 설정을 읽어 움직임 줄이기 사용자에게 재생이 잠깐 시작되는 일이 없게 함(마크업에는 쓰이지 않아 서버 그림과 어긋나지 않음)\nconst[reduced,setReduced]=useState(prefersReducedMotion);const canvas=isFramerCanvas();const hasBox=box.w>0&&box.h>0;// 멈춘 화면: previewTime >= 0이면 편집 화면·미리보기 모두 그 시각, 편집 화면·움직임 줄이기는 마무리 상태. null이면 실제 재생\nconst frozenTau=previewTime>=0?previewTime:canvas||reduced?total:null;useEffect(()=>{if(typeof window===\"undefined\"||typeof window.matchMedia!==\"function\")return;const media=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const apply=()=>setReduced(media.matches);apply();if(typeof media.addEventListener===\"function\"){media.addEventListener(\"change\",apply);return()=>media.removeEventListener(\"change\",apply);}media.addListener(apply);return()=>media.removeListener(apply);},[]);// 크기 읽기: 처음 크기가 0이면 그리지 않고(svg 없음) 크기가 생기는 순간 그린다\nuseEffect(()=>{const node=rootRef.current;if(!node)return;const apply=(w,h)=>{if(!(w>0&&h>0))return;setBox(prev=>prev.w===w&&prev.h===h?prev:{w,h});};const rect=node.getBoundingClientRect();apply(rect.width,rect.height);if(typeof ResizeObserver===\"undefined\")return;const observer=new ResizeObserver(entries=>{const entry=entries[entries.length-1];if(entry)apply(entry.contentRect.width,entry.contentRect.height);});observer.observe(node);return()=>observer.disconnect();},[]);// 재생 트리거 - '드러남'을 실제로 가려져 있는지까지 본다.\n// 화면 고정(fixed) 층 안에 들어가 본문 뒤에 가려져 있어도 IntersectionObserver는 '보임'으로만 잡으므로,\n// 상자 가로 가운데·세로 50%/85% 지점을 document.elementFromPoint로 찍어 부품 자신이 맨 위인지 확인한다.\n//   - 재생 시작: 상자가 35% 이상 화면 안이고, 50%·85% 지점 모두 부품이 맨 위일 때 한 번\n//   - 처음 상태로(replay 켬): 85% 지점이 가려지거나 상자가 화면 밖. 시작(50%)과 되돌리기(85%)를 나눠 경계에서 깜빡이지 않게 함\n// 검사는 scroll·resize·IntersectionObserver 변화·load 때, 그리고 화면 안에 있는 동안 400ms마다 rAF 한 번으로 몰아서 한다.\n// (본문이 늦게 깔려 scroll 없이 부품을 덮는 경우를 잡기 위한 느린 타이머. 일반 자리(고정 아님)에서도 같은 규칙으로 동작한다.)\nuseIsoLayoutEffect(()=>{const root=rootRef.current;const svg=root?root.querySelector(\"svg\"):null;const els=svg?collectEls(svg):null;if(!root||!els)return;if(frozenTau!==null){paint(els,cfgRef.current,frozenTau);return;}paint(els,cfgRef.current,-1);let raf=0;let checkRaf=0;let state=\"idle\";let startedAt=0;let inView=true// IntersectionObserver가 알려 주는 값. 밖이면 scroll 검사를 쉼\n;const stop=()=>{if(raf)window.cancelAnimationFrame(raf);raf=0;};const tick=now=>{const tau=Math.max(0,now-startedAt)/1e3*speed;if(tau>=total){paint(els,cfgRef.current,total);state=\"done\";raf=0;return;}paint(els,cfgRef.current,tau);raf=window.requestAnimationFrame(tick);};const play=()=>{if(state!==\"idle\")return;state=\"playing\";startedAt=performance.now();raf=window.requestAnimationFrame(tick);};const reset=()=>{stop();state=\"idle\";paint(els,cfgRef.current,-1)// 선·조각·기준점·빛·꼬리·워드마크 모두 재생 전 상태, 물러남 배율 1\n;};// 상자가 화면(뷰포트) 안에 들어온 정도: 면적 비율, 세로 길이\nconst measure=()=>{const r=root.getBoundingClientRect();const w=Math.min(r.right,window.innerWidth)-Math.max(r.left,0);const h=Math.min(r.bottom,window.innerHeight)-Math.max(r.top,0);const area=r.width*r.height;const inside=w>0&&h>0&&area>0;return{r,ratio:inside?w*h/area:0,visibleH:inside?h:0};};// 상자 가로 가운데 · 세로 fy 지점(화면 안으로 자른 좌표)에서 맨 위 요소가 부품 자신(또는 그 안쪽)인가\nconst topmostIsUs=(r,fy)=>{const x=clamp(r.left+r.width/2,0,Math.max(0,window.innerWidth-1));const y=clamp(r.top+r.height*fy,0,Math.max(0,window.innerHeight-1));try{const hit=document.elementFromPoint(x,y);return!!hit&&(hit===root||root.contains(hit));}catch{return false;}};const check=()=>{checkRaf=0;const m=measure();if(state===\"idle\"){const onScreen=m.ratio>=.35||m.visibleH>=window.innerHeight*.35// 부품이 뷰포트보다 클 때도 대비\n;// 50% 지점만 보면 아래에서부터 드러나는 층이 아닌 경우(위에서 덮는 층 등) 시작과 되돌리기가 맞물려 깜빡일 수 있어 85% 지점도 함께 본다\nif(onScreen&&topmostIsUs(m.r,.5)&&topmostIsUs(m.r,.85))play();}else if(replay){if(m.ratio<=0||!topmostIsUs(m.r,.85))reset();}else if(state===\"playing\"&&m.ratio<=0){// 다시 재생하지 않는 설정에서 화면 밖으로 나가면 남은 재생을 바로 끝냄(화면 밖에서는 아무것도 돌지 않게)\nstop();state=\"done\";paint(els,cfgRef.current,total);}};const schedule=()=>{if(!checkRaf)checkRaf=window.requestAnimationFrame(check);};const onScroll=()=>{if(inView)schedule();};// 느린 타이머: 화면 안(inView)에 있는 동안만 돌고, 밖으로 나가면 멈춤. 다시 안으로 들어오면 재시작\nlet pollId=0;const startPoll=()=>{if(pollId)return;pollId=window.setInterval(()=>{if(state===\"done\"&&!replay)return;// 다시 재생하지 않는 설정에서 끝난 뒤에는 검사할 일이 없음\nschedule();},POLL_MS);};const stopPoll=()=>{if(pollId)window.clearInterval(pollId);pollId=0;};let io=null;if(typeof IntersectionObserver!==\"undefined\"){io=new IntersectionObserver(entries=>{const e=entries[entries.length-1];if(!e)return;inView=e.isIntersecting;if(inView)startPoll();else stopPoll();schedule()// 들어올 때도 나갈 때도 한 번 검사\n;},{threshold:[0,.35,1]});io.observe(root);}startPoll()// 마운트 직후부터(첫 IntersectionObserver 알림 전에도). 밖이라고 알려 오면 멈춤\n;// scroll은 안쪽 스크롤 영역에서도 잡히도록 capture로 듣는다(scroll 이벤트는 위로 올라가지 않음)\nwindow.addEventListener(\"scroll\",onScroll,{passive:true,capture:true});window.addEventListener(\"resize\",schedule,{passive:true});if(document.readyState!==\"complete\")window.addEventListener(\"load\",schedule);schedule()// 처음 자리에서 이미 드러나 있는 경우\n;return()=>{if(io)io.disconnect();stopPoll();window.removeEventListener(\"scroll\",onScroll,{capture:true});window.removeEventListener(\"resize\",schedule);window.removeEventListener(\"load\",schedule);if(checkRaf)window.cancelAnimationFrame(checkRaf);checkRaf=0;stop();};},[hasBox,frozenTau,speed,replay,travel,lineOpacity,settledOpacity,showWordmark,recedeScale,recedeOpacity,recededLineOpacity]);// 마우스 반응: 구성선·기준점·심볼은 한 덩어리로 묶여 반대쪽으로 최대 5px(서로 어긋나지 않음), 워드마크는 따로 같은 쪽으로 최대 4px\n// (멈춘 화면·pointer: fine이 아닌 기기에서는 끔)\nuseEffect(()=>{const root=rootRef.current;const svg=root?root.querySelector(\"svg\"):null;if(!root||!svg||!parallax||frozenTau!==null)return;if(typeof window.matchMedia!==\"function\"||!window.matchMedia(\"(pointer: fine)\").matches)return;const construct=svg.querySelector('[data-lc=\"par-construct\"]');const word=svg.querySelector('[data-lc=\"par-word\"]');if(!construct)return;let tgtX=0,tgtY=0,curX=0,curY=0,raf=0,visible=false;const place=()=>{construct.setAttribute(\"transform\",`translate(${-curX*5} ${-curY*5})`);if(word)word.setAttribute(\"transform\",`translate(${curX*4} ${curY*4})`);};const loop=()=>{curX+=(tgtX-curX)*.08;curY+=(tgtY-curY)*.08;if(Math.abs(tgtX-curX)<.002&&Math.abs(tgtY-curY)<.002){curX=tgtX;curY=tgtY;place();raf=0// 커서가 멈추고 따라잡으면 rAF도 멈춤\n;return;}place();raf=window.requestAnimationFrame(loop);};const onMove=e=>{if(!visible)return;const r=root.getBoundingClientRect();if(!(r.width>0&&r.height>0))return;tgtX=clamp((e.clientX-(r.left+r.width/2))/(r.width/2),-1,1);tgtY=clamp((e.clientY-(r.top+r.height/2))/(r.height/2),-1,1);if(!raf)raf=window.requestAnimationFrame(loop);};const io=new IntersectionObserver(entries=>{const e=entries[entries.length-1];visible=!!e&&e.isIntersecting;if(!visible&&raf){window.cancelAnimationFrame(raf);raf=0;}});io.observe(root);window.addEventListener(\"pointermove\",onMove,{passive:true});return()=>{window.removeEventListener(\"pointermove\",onMove);io.disconnect();if(raf)window.cancelAnimationFrame(raf);curX=curY=tgtX=tgtY=0;place();};},[hasBox,parallax,frozenTau,showWordmark]);// ---- 크기·자리: 육각형 가로 폭 = 부품 폭의 symbolWidth%(폭 600px 미만은 phoneSymbolWidth%), 높이는 상한 안으로 ----\nconst phone=box.w<600;const widthPct=(phone?phoneSymbolWidth:symbolWidth)/100;const s=Math.max(1e-4,Math.min(box.w*widthPct/HEX_W,box.h*(maxSymbolHeight/100)/HEX_H));const cx=box.w/2;const cy=box.h/2+offsetY;const px=u=>cx+(u-500)*s;const py=u=>cy+(u-500)*s;// 워드마크: 가로 폭 = 커지지 않은 육각형 가로 폭(HEX_W·s)의 wordmarkWidth%, 바깥 상자 중심을 (cx, cy + wordmarkOffsetY)에 놓음\nconst sw=wordmarkWidth/100*HEX_W*s/WORD_W;const wordTransform=`translate(${cx-WORD_CX*sw} ${cy+wordmarkOffsetY-WORD_CY*sw}) scale(${sw})`;return(// 바깥 요소는 pointer-events 기본값(auto)으로 둔다: 드러남 검사(elementFromPoint)가 부품 자신을 맨 위로 찍어야 하기 때문. 클릭·포커스는 막지 않고 SVG 안쪽만 none\n/*#__PURE__*/_jsx(\"div\",{ref:rootRef,role:\"img\",\"aria-label\":label,\"data-gbl-lc\":\"1\",style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",boxSizing:\"border-box\"},children:hasBox?/*#__PURE__*/_jsxs(\"svg\",{width:box.w,height:box.h,viewBox:`0 0 ${box.w} ${box.h}`,\"aria-hidden\":\"true\",focusable:\"false\",style:{position:\"absolute\",left:0,top:0,display:\"block\",overflow:\"hidden\",pointerEvents:\"none\"},children:[/*#__PURE__*/_jsxs(\"defs\",{children:[/*#__PURE__*/_jsx(\"clipPath\",{id:clipId,children:/*#__PURE__*/_jsx(\"rect\",{x:0,y:0,width:box.w,height:box.h})}),/*#__PURE__*/_jsx(\"filter\",{id:blurId,x:\"-50%\",y:\"-50%\",width:\"200%\",height:\"200%\",children:/*#__PURE__*/_jsx(\"feGaussianBlur\",{stdDeviation:GLOW_BLUR})}),showWordmark?wordBlurIds.map(id=>/*#__PURE__*/_jsx(\"filter\",{id:id,x:\"-20%\",y:\"-60%\",width:\"140%\",height:\"220%\",children:/*#__PURE__*/_jsx(\"feGaussianBlur\",{\"data-lc\":\"word-blur\",stdDeviation:WORD_BLUR})},id)):null]}),/*#__PURE__*/_jsxs(\"g\",{clipPath:`url(#${clipId})`,children:[/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"par-construct\",children:/*#__PURE__*/_jsx(\"g\",{transform:`translate(${cx} ${cy})`,children:/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"recede\",children:/*#__PURE__*/_jsxs(\"g\",{transform:`translate(${-cx} ${-cy})`,children:[/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"lines\",fill:\"none\",stroke:lineColor,strokeWidth:1,children:LINES.map((ln,i)=>{const parts=lineParts(ln,px,py,cx,cy,box.w,box.h,recedeScale);return /*#__PURE__*/_jsxs(\"g\",{children:[/*#__PURE__*/_jsx(\"path\",{\"data-lc\":\"half\",d:parts.halves[0],pathLength:1,strokeDasharray:\"1 1\",strokeDashoffset:1}),/*#__PURE__*/_jsx(\"path\",{\"data-lc\":\"half\",d:parts.halves[1],pathLength:1,strokeDasharray:\"1 1\",strokeDashoffset:1}),showWordmark?/*#__PURE__*/_jsx(\"path\",{\"data-lc\":\"tail\",d:parts.tails[0],visibility:\"hidden\"}):null,showWordmark?/*#__PURE__*/_jsx(\"path\",{\"data-lc\":\"tail\",d:parts.tails[1],visibility:\"hidden\"}):null]},i);})}),/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"symbol\",children:/*#__PURE__*/_jsxs(\"g\",{transform:`translate(${cx-500*s} ${cy-500*s}) scale(${s})`,children:[/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"glow\",opacity:0,visibility:\"hidden\",filter:`url(#${blurId})`,children:/*#__PURE__*/_jsx(\"polygon\",{points:NOTCH_POINTS,fill:notchColor})}),/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"bar\",\"data-gbl-lc-piece\":\"1\",opacity:0,children:/*#__PURE__*/_jsx(\"polygon\",{points:BAR_POINTS,fill:bodyColor})}),/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"body\",\"data-gbl-lc-piece\":\"1\",opacity:0,children:/*#__PURE__*/_jsx(\"polygon\",{points:BODY_POINTS,fill:bodyColor})}),/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"notch\",\"data-gbl-lc-piece\":\"1\",opacity:0,children:/*#__PURE__*/_jsx(\"polygon\",{points:NOTCH_POINTS,fill:notchColor})})]})}),POINTS_U.map((p,i)=>/*#__PURE__*/_jsx(\"g\",{transform:`translate(${px(p[0])} ${py(p[1])})`,children:/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"point\",opacity:0,children:/*#__PURE__*/_jsx(\"rect\",{x:-3,y:-3,width:6,height:6,fill:\"#0F0F0F\",stroke:lineColor,strokeOpacity:.9,strokeWidth:1})})},i))]})})})}),showWordmark?/*#__PURE__*/_jsxs(\"g\",{\"data-lc\":\"par-word\",children:[/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"word-design\",\"data-lc-filter\":`url(#${wordBlurIds[0]})`,opacity:0,visibility:\"hidden\",fill:wordmarkColor,children:/*#__PURE__*/_jsx(\"g\",{transform:wordTransform,children:WORD_DESIGN.map(([ch,ox],i)=>/*#__PURE__*/_jsx(\"path\",{d:WORD_GLYPHS[ch],transform:`translate(${ox} ${WORD_BASE_Y})`},i))})}),/*#__PURE__*/_jsx(\"g\",{\"data-lc\":\"word-gbl\",\"data-lc-filter\":`url(#${wordBlurIds[1]})`,opacity:0,visibility:\"hidden\",fill:wordmarkAccent,children:/*#__PURE__*/_jsx(\"g\",{transform:wordTransform,children:WORD_GBL.map(([ch,ox],i)=>/*#__PURE__*/_jsx(\"path\",{d:WORD_GLYPHS[ch],transform:`translate(${ox} ${WORD_BASE_Y})`},i))})})]}):null]})]}):null}));}GBLLogoConstruct.displayName=\"GBL Logo Construct\";addPropertyControls(GBLLogoConstruct,{lineColor:{type:ControlType.Color,title:\"Line color\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.lineColor},lineOpacity:{type:ControlType.Number,title:\"Line opacity\",min:0,max:1,step:.01,defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.lineOpacity},settledOpacity:{type:ControlType.Number,title:\"Settled opacity\",min:0,max:1,step:.01,defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.settledOpacity},bodyColor:{type:ControlType.Color,title:\"Body color\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.bodyColor},notchColor:{type:ControlType.Color,title:\"Notch color\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.notchColor},symbolWidth:{type:ControlType.Number,title:\"Symbol width\",min:10,max:100,step:1,unit:\"%\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.symbolWidth},maxSymbolHeight:{type:ControlType.Number,title:\"Max height\",min:10,max:100,step:1,unit:\"%\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.maxSymbolHeight},phoneSymbolWidth:{type:ControlType.Number,title:\"Phone width\",min:10,max:100,step:1,unit:\"%\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.phoneSymbolWidth},offsetY:{type:ControlType.Number,title:\"Offset Y\",min:-400,max:400,step:1,unit:\"px\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.offsetY},travel:{type:ControlType.Number,title:\"Travel\",min:0,max:400,step:1,defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.travel},speed:{type:ControlType.Number,title:\"Speed\",min:.2,max:4,step:.05,defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.speed},replay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.replay,enabledTitle:\"On\",disabledTitle:\"Off\"},parallax:{type:ControlType.Boolean,title:\"Parallax\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.parallax,enabledTitle:\"On\",disabledTitle:\"Off\"},showWordmark:{type:ControlType.Boolean,title:\"Wordmark\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.showWordmark,enabledTitle:\"On\",disabledTitle:\"Off\"},wordmarkColor:{type:ControlType.Color,title:\"Word color\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.wordmarkColor},wordmarkAccent:{type:ControlType.Color,title:\"Accent color\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.wordmarkAccent},wordmarkWidth:{type:ControlType.Number,title:\"Word width\",min:30,max:100,step:1,unit:\"%\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.wordmarkWidth},wordmarkOffsetY:{type:ControlType.Number,title:\"Word offset Y\",min:-400,max:400,step:1,unit:\"px\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.wordmarkOffsetY},recedeScale:{type:ControlType.Number,title:\"Recede scale\",min:.5,max:1,step:.01,defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.recedeScale},recedeOpacity:{type:ControlType.Number,title:\"Recede opacity\",min:0,max:1,step:.01,defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.recedeOpacity},recededLineOpacity:{type:ControlType.Number,title:\"Receded lines\",min:0,max:1,step:.01,defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.recededLineOpacity},previewTime:{type:ControlType.Number,title:\"Preview time\",min:-1,max:6,step:.05,unit:\"s\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.previewTime},label:{type:ControlType.String,title:\"Label\",defaultValue:GBL_LOGO_CONSTRUCT_DEFAULTS.label}});\nexport const __FramerMetadata__ = {\"exports\":{\"GBLLogoConstructProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"GBLLogoConstruct\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"GBL_LOGO_CONSTRUCT_DEFAULTS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GBLLogoConstruct.map","import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import*as FramerLib from\"framer\";const useFramerRouter=FramerLib.useRouter||(()=>null);function findRouter(router,el){if(router&&typeof router.navigate===\"function\"&&router.routes)return router;if(!el)return null;const key=Object.keys(el).find(k=>k.startsWith(\"__reactFiber\"));let f=key?el[key]:null;for(let i=0;f&&i<400;i++){const v=f.memoizedProps&&f.memoizedProps.value;if(v&&typeof v===\"object\"&&typeof v.navigate===\"function\"&&v.routes)return v;f=f.return;}return null;}function routeOf(router,href){if(!router||!href)return null;let h=href.trim();if(h.startsWith(\"./\"))h=h.slice(1);if(!h.startsWith(\"/\")||h.startsWith(\"//\"))return null;const[path,hash]=h.split(\"#\");const clean=path.length>1?path.replace(/\\/$/,\"\"):path;const routes=router.routes||{};const id=Object.keys(routes).find(k=>routes[k]&&routes[k].path===clean);return id?{id,hash:hash||undefined}:null;}const STEP_MS=120;const MOVE_MS=65;const STAGGER_MS=30;const EASE=\"cubic-bezier(.4, 0, .2, 1)\";const CHARS=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";const MONO='ui-monospace, \"SFMono-Regular\", Menlo, Consolas, monospace';const FALLBACK_FONTS='\"Apple SD Gothic Neo\", sans-serif';function setAt(setter,idx,value){setter(prev=>prev[idx]===value?prev:prev.map((v,n)=>n===idx?value:v));}/**\n * GBL 약관 줄 - 두 링크를 양끝 정렬하고, 마우스를 올린 링크의 글자가 한 칸씩 굴러 바뀐다.\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 20\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n */export default function GBLRollLinks(props){const{text1=\"이용약관\",link1=\"/terms\",newTab1=false,text2=\"개인정보처리방침\",link2=\"/privacy\",newTab2=false,fontFamily=\"SUIT\",fontSize=14,fontWeight=400,lineHeight=1.4,color=\"rgba(238, 238, 238, 1)\",hoverColor=\"#E6FF2B\",roll=true,style}=props;const router=useFramerRouter();const[hovered,setHovered]=React.useState([false,false]);const[focused,setFocused]=React.useState([false,false]);const linkRefs=React.useRef([null,null]);const rolling=React.useRef([false,false]);const cleanups=React.useRef(new Set);React.useEffect(()=>{const pending=cleanups.current;return()=>{Array.from(pending).forEach(finish=>finish());};},[]);const startRoll=idx=>{if(!roll||rolling.current[idx])return;if(typeof window===\"undefined\"||typeof document===\"undefined\")return;if(window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;const link=linkRefs.current[idx];if(!link)return;const shift=rows=>`translateY(${-Math.round(rows*lineHeight*1e3)/1e3}em)`;const cells=Array.from(link.querySelectorAll(\"[data-roll-cell]\"));let pending=0;cells.forEach((cell,i)=>{const reel=cell.firstElementChild;const glyph=reel?reel.firstElementChild:null;if(!reel||!glyph||typeof reel.animate!==\"function\")return;if((glyph.textContent||\"\").trim()===\"\")return;const k=3+i%2;const steps=k+1;const total=steps*STEP_MS;const measured=parseFloat(window.getComputedStyle(cell).width);if(measured>0)cell.style.width=`${measured}px`;const added=[];for(let n=0;n<k;n++){const random=document.createElement(\"span\");random.textContent=CHARS.charAt(Math.floor(Math.random()*CHARS.length));random.style.display=\"block\";random.style.height=`${lineHeight}em`;random.style.lineHeight=`${lineHeight}em`;random.style.fontFamily=MONO;random.style.textAlign=\"center\";random.style.whiteSpace=\"pre\";reel.appendChild(random);added.push(random);}const original=glyph.cloneNode(true);reel.appendChild(original);added.push(original);const frames=[];for(let s=0;s<steps;s++){frames.push({offset:s*STEP_MS/total,transform:shift(s),easing:EASE});frames.push({offset:(s*STEP_MS+MOVE_MS)/total,transform:shift(s+1),easing:\"linear\"});}frames.push({offset:1,transform:shift(steps)});const anim=reel.animate(frames,{duration:total,delay:i*STAGGER_MS,fill:\"forwards\",easing:\"linear\"});let finished=false;const finish=()=>{if(finished)return;finished=true;added.forEach(node=>node.remove());anim.cancel();cell.style.width=\"\";cleanups.current.delete(finish);pending-=1;if(pending<=0)rolling.current[idx]=false;};pending+=1;cleanups.current.add(finish);anim.onfinish=finish;});if(pending>0)rolling.current[idx]=true;};const handleClick=(e,item)=>{if(item.newTab||e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;const r=findRouter(router,e.currentTarget);const to=routeOf(r,item.href);if(!to)return;e.preventDefault();r.navigate(to.id,to.hash);};const items=[{text:text1,href:link1,newTab:newTab1},{text:text2,href:link2,newTab:newTab2}];return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:\"100%\",height:\"auto\",display:\"flex\",flexDirection:\"row\",justifyContent:\"space-between\",alignItems:\"center\",columnGap:16,boxSizing:\"border-box\"},children:items.map((item,idx)=>{const active=hovered[idx]||focused[idx];return /*#__PURE__*/_jsx(\"a\",{ref:el=>{linkRefs.current[idx]=el;},href:item.href||undefined,target:item.newTab?\"_blank\":undefined,rel:item.newTab?\"noopener noreferrer\":undefined,\"aria-label\":item.text,onClick:e=>handleClick(e,item),onMouseEnter:()=>{setAt(setHovered,idx,true);startRoll(idx);},onMouseLeave:()=>setAt(setHovered,idx,false),onFocus:()=>{setAt(setFocused,idx,true);startRoll(idx);},onBlur:()=>setAt(setFocused,idx,false),style:{display:\"inline-block\",color:active?hoverColor:color,transition:\"color 0.2s cubic-bezier(0.32, 0.94, 0.6, 1)\",textDecoration:\"none\",fontFamily:`${fontFamily}, ${FALLBACK_FONTS}`,fontSize,fontWeight,lineHeight:`${lineHeight}em`,whiteSpace:\"nowrap\",cursor:\"pointer\"},children:Array.from(item.text).map((ch,i)=>/*#__PURE__*/_jsx(\"span\",{\"data-roll-cell\":\"\",\"aria-hidden\":\"true\",style:{display:\"inline-block\",height:`${lineHeight}em`,overflow:\"hidden\",verticalAlign:\"top\",whiteSpace:\"pre\"},children:/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\"},children:/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",height:`${lineHeight}em`,lineHeight:`${lineHeight}em`},children:ch})})},i))},idx);})});}addPropertyControls(GBLRollLinks,{text1:{type:ControlType.String,title:\"글자 1\",defaultValue:\"이용약관\"},link1:{type:ControlType.Link,title:\"링크 1\",defaultValue:\"/terms\"},newTab1:{type:ControlType.Boolean,title:\"새 탭 1\",defaultValue:false},text2:{type:ControlType.String,title:\"글자 2\",defaultValue:\"개인정보처리방침\"},link2:{type:ControlType.Link,title:\"링크 2\",defaultValue:\"/privacy\"},newTab2:{type:ControlType.Boolean,title:\"새 탭 2\",defaultValue:false},fontFamily:{type:ControlType.String,title:\"글꼴\",defaultValue:\"SUIT\"},fontSize:{type:ControlType.Number,title:\"글자 크기\",defaultValue:14,min:8,max:48,step:1,displayStepper:true},fontWeight:{type:ControlType.Number,title:\"굵기\",defaultValue:400,min:100,max:900,step:100},lineHeight:{type:ControlType.Number,title:\"줄 높이\",defaultValue:1.4,min:1,max:3,step:.05},color:{type:ControlType.Color,title:\"글자색\",defaultValue:\"rgba(238, 238, 238, 1)\"},hoverColor:{type:ControlType.Color,title:\"올림 색\",defaultValue:\"#E6FF2B\"},roll:{type:ControlType.Boolean,title:\"굴림\",defaultValue:true,enabledTitle:\"켜짐\",disabledTitle:\"꺼짐\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"GBLRollLinks\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicHeight\":\"20\",\"framerIntrinsicWidth\":\"200\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GBLRollLinks.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";/** Single source for preview.html (_build_preview.py reads this constant). */const KEEP_ALL_KOREAN_CSS=`\nbody {\n  word-break: keep-all;\n  overflow-wrap: break-word;\n}\n\n.framer-text {\n  word-break: keep-all;\n  overflow-wrap: break-word;\n}\n\ntable.framer-text {\n  word-break: normal;\n}\n`.trim();const hostStyle={position:\"absolute\",width:0,height:0,overflow:\"hidden\",pointerEvents:\"none\",margin:0,padding:0,border:0};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 1\n * @framerIntrinsicHeight 1\n */export default function KeepAllKorean(){return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:KEEP_ALL_KOREAN_CSS}),/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",\"data-gbl-korean-wrap\":\"1\",style:hostStyle})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"KeepAllKorean\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"1\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicWidth\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./KeepAllKorean.map","// Generated by Framer (b7e356e)\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,Container,ControlType,cx,forwardLoader,GeneratedComponentContext,getFonts,InjectSelectionStyle,PropertyOverrides,RenderTarget,ResetOuterLinkContext,ResolveLinks,runTasksWithYield,useActiveVariantCallback,useCustomCursors,useHydratedBreakpointVariants,useIsOnFramerCanvas,useLocaleInfo,useOverlayState,useRouter,withCSS,withFX}from\"framer\";import{AnimatePresence,LayoutGroup,motion}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as ReactDOM from\"react-dom\";import WorkPortfolioPill from\"#framer/local/canvasComponent/OPbzRv5qd/OPbzRv5qd.js\";import Navbar from\"#framer/local/canvasComponent/R5MnH9mZg/R5MnH9mZg.js\";import UnderlineHoverLink from\"#framer/local/canvasComponent/V0K50PR1o/V0K50PR1o.js\";import FloatingContact from\"#framer/local/canvasComponent/wfp4v5Kr4/wfp4v5Kr4.js\";import GBLLogoConstruct from\"#framer/local/codeFile/R3gywJF/GBLLogoConstruct.js\";import GBLRollLinks from\"#framer/local/codeFile/oZ4zd1l/GBLRollLinks.js\";import KeepAllKorean from\"#framer/local/codeFile/cuuJME7/KeepAllKorean.js\";const NavbarFonts=getFonts(Navbar);const UnderlineHoverLinkFonts=getFonts(UnderlineHoverLink);const WorkPortfolioPillFonts=getFonts(WorkPortfolioPill);const GBLRollLinksFonts=getFonts(GBLRollLinks);const MotionFooterWithFX=withFX(motion.footer);const GBLLogoConstructFonts=getFonts(GBLLogoConstruct);const KeepAllKoreanFonts=getFonts(KeepAllKorean);const FloatingContactFonts=getFonts(FloatingContact);const breakpoints={b4UbShXBK:\"(min-width: 1200px)\",SxKdUnFAJ:\"(min-width: 810px) and (max-width: 1199.98px)\",UqoGjRDFH:\"(max-width: 809.98px)\"};const isBrowser=()=>typeof document!==\"undefined\";const serializationHash=\"framer-t6deo\";const variantClassNames={b4UbShXBK:\"framer-v-uye3p9\",SxKdUnFAJ:\"framer-v-34xoj7\",UqoGjRDFH:\"framer-v-1f4zlpa\"};const IzM84v0KufYKtXyfM4=undefined;const fKqBupMWS=undefined;const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const transition1={delay:0,duration:.2,ease:[.44,0,.56,1],type:\"tween\"};const animation={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition1,x:0,y:0};const transition2={delay:.4,duration:.6,ease:[.44,0,.56,1],type:\"tween\"};const animation1={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:0};const animation2={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0};const transition3={delay:0,duration:.2,ease:[.6,.2,0,1],type:\"tween\"};const animation3={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition3,x:-800,y:0};const transition4={delay:.5,duration:.8,ease:[.32,.94,.6,1],type:\"tween\"};const animation4={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition4,x:0,y:0};const animation5={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:-400,y:0};const transition5={delay:.58,duration:.8,ease:[.32,.94,.6,1],type:\"tween\"};const animation6={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition5,x:0,y:0};const transition6={delay:.64,duration:.8,ease:[.32,.94,.6,1],type:\"tween\"};const animation7={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition6,x:0,y:0};const transition7={delay:.2,duration:.8,ease:[.32,.94,.6,1],type:\"tween\"};const animation8={opacity:1,rotate:0,rotateX:0,rotateY:90,scale:1,skewX:0,skewY:0,transition:transition7,x:0,y:0};const animation9={opacity:1,rotate:0,rotateX:0,rotateY:90,scale:1,skewX:0,skewY:0,x:0,y:0};const transition8={delay:0,duration:1,ease:[.6,.2,0,1],type:\"tween\"};const animation10={opacity:.14,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition8,x:0,y:1200};const transition9={delay:0,duration:1,ease:[.32,.94,.6,1],type:\"tween\"};const animation11={opacity:.14,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition9,x:0,y:0};const animation12={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:-1200};const getContainer=()=>{return document.querySelector(\"#template-overlay\")??document.querySelector(\"#overlay\")??document.body;};const Overlay=({children,blockDocumentScrolling,dismissWithEsc,enabled=true})=>{const[visible,setVisible]=useOverlayState({blockDocumentScrolling,dismissWithEsc:enabled&&dismissWithEsc});return children({hide:()=>setVisible(false),show:()=>setVisible(true),toggle:()=>setVisible(!visible),visible:enabled&&visible});};const breakpointRules={SxKdUnFAJ:[\".framer-t6deo .framer-cqxh52 { grid-template-columns: repeat(1, minmax(50px, 1fr)); }\",\".framer-t6deo .framer-1oc1hhf { grid-column: span 1; }\"],UqoGjRDFH:[\".framer-t6deo .framer-cqxh52 { grid-template-columns: repeat(1, minmax(50px, 1fr)); }\",\".framer-t6deo .framer-1oc1hhf { grid-column: span 1; }\",\".framer-t6deo .framer-1mojz2 { grid-template-columns: repeat(3, minmax(1px, 1fr)); }\",\".framer-t6deo .framer-17brfry { justify-content: center; }\",\".framer-t6deo .framer-p3dqug { justify-content: flex-end; }\",\".framer-t6deo .framer-wf59c2-container { bottom: calc(calc(100% - min(var(--framer-viewport-height, 100%), 100%)) + 16px); right: 16px; }\"]};const breakpointKeys=Object.keys(breakpointRules);const selectors={SxKdUnFAJ:\".framer-34xoj7-override\",UqoGjRDFH:\".framer-1f4zlpa-override\"};const rules=[\".framer-t6deo.framer-6ogegp, .framer-t6deo .framer-6ogegp { display: block; }\",\".framer-t6deo.framer-uye3p9 { align-content: center; align-items: center; background-color: var(--token-21aec9cc-d526-4ca7-b1a8-8ff05a3dc5a6, #0a0a0a); display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-t6deo .framer-5q8dv5-container { flex: none; height: auto; left: 50%; mix-blend-mode: difference; order: -1000; position: var(--framer-canvas-fixed-position, fixed); top: 0px; transform: translateX(-50%); width: 100%; z-index: 10; }\",\".framer-t6deo.framer-ki0t8p { background-color: rgba(10, 10, 10, 0.4); inset: 0px; position: fixed; user-select: none; z-index: 8; }\",\".framer-t6deo.framer-1qetvgx { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 140px; height: 100%; justify-content: center; left: calc(50.00000000000002% - 100% / 2); overflow: visible; padding: 0px; position: fixed; top: calc(50.00000000000002% - 100% / 2); width: 100%; z-index: 9; }\",\".framer-t6deo .framer-cqxh52 { display: grid; flex: none; gap: 64px 14px; grid-auto-rows: minmax(0, 1fr); grid-template-columns: repeat(8, minmax(50px, 1fr)); grid-template-rows: repeat(1, minmax(0, 1fr)); height: 100%; justify-content: center; max-width: 1680px; overflow: hidden; padding: 200px 14px 14px 14px; position: relative; width: 100%; z-index: 9; }\",\".framer-t6deo .framer-js87mn { align-self: start; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; display: grid; flex: none; gap: 14px; grid-auto-rows: minmax(0, 1fr); grid-column: span 4; grid-template-columns: repeat(2, minmax(50px, 1fr)); grid-template-rows: repeat(1, minmax(0, 1fr)); height: min-content; justify-content: center; justify-self: start; overflow: visible; padding: 0px; position: relative; width: 100%; z-index: 5; }\",\".framer-t6deo .framer-rrbfgh { align-content: flex-start; align-items: flex-start; align-self: start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 14px; height: min-content; justify-content: center; justify-self: start; min-height: 51px; overflow: visible; padding: 0px; position: relative; width: 100%; will-change: var(--framer-will-change-effect-override, transform); }\",\".framer-t6deo .framer-1oc1hhf { align-content: center; align-items: center; align-self: start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; grid-column: span 4; height: min-content; justify-content: center; justify-self: start; overflow: hidden; padding: 0px; position: relative; width: 100%; }\",\".framer-t6deo .framer-1mm7gdr { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; z-index: 6; }\",\".framer-t6deo .framer-htoolj-container, .framer-t6deo .framer-t1soz3-container, .framer-t6deo .framer-1ofpo37-container { flex: none; height: auto; position: relative; width: auto; will-change: var(--framer-will-change-effect-override, transform); }\",\".framer-t6deo .framer-11ex8oq { -webkit-user-select: none; align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 100%; justify-content: center; left: calc(50.00000000000002% - 100% / 2); overflow: var(--overflow-clip-fallback, clip); padding: 0px; pointer-events: none; position: absolute; top: calc(50.00000000000002% - 100% / 2); user-select: none; width: 100%; z-index: 4; }\",\".framer-t6deo .framer-16lu28u { display: grid; flex: 1 0 0px; gap: 14px 0px; grid-auto-rows: minmax(0, 1fr); grid-template-columns: repeat(4, minmax(1px, 1fr)); grid-template-rows: repeat(1, minmax(0, 1fr)); height: 100%; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1px; }\",\".framer-t6deo .framer-qf5v7q { align-content: flex-start; align-items: flex-start; align-self: start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 140px; height: 100%; justify-content: flex-start; justify-self: start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-t6deo .framer-15jamk1 { align-content: center; align-items: center; background-color: var(--token-21aec9cc-d526-4ca7-b1a8-8ff05a3dc5a6, #0a0a0a); display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 140px; height: 100%; justify-content: center; overflow: visible; padding: 0px 0px 0px 15px; position: relative; width: 120%; will-change: var(--framer-will-change-effect-override, transform); }\",\".framer-t6deo .framer-f2q0ck, .framer-t6deo .framer-dyk6ln, .framer-t6deo .framer-mxxdob, .framer-t6deo .framer-1iyji2m, .framer-t6deo .framer-17brfry, .framer-t6deo .framer-p3dqug { align-content: center; align-items: center; align-self: start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 140px; height: 100%; justify-content: flex-start; justify-self: start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-t6deo .framer-1kwa3c0, .framer-t6deo .framer-xtj0zj, .framer-t6deo .framer-t3wdr7 { align-content: center; align-items: center; background-color: var(--token-21aec9cc-d526-4ca7-b1a8-8ff05a3dc5a6, #0a0a0a); display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 140px; height: 100%; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 120%; will-change: var(--framer-will-change-effect-override, transform); }\",\".framer-t6deo .framer-i8cz0x { -webkit-user-select: none; align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 100%; justify-content: center; left: calc(50.00000000000002% - min(1680px, 100%) / 2); max-width: 1680px; overflow: var(--overflow-clip-fallback, clip); padding: 0px; pointer-events: none; position: absolute; top: calc(50.00000000000002% - 100% / 2); user-select: none; width: 100%; z-index: 4; }\",\".framer-t6deo .framer-1mojz2 { display: grid; flex: 1 0 0px; gap: 14px 0px; grid-auto-rows: minmax(0, 1fr); grid-template-columns: repeat(4, minmax(1px, 1fr)); grid-template-rows: repeat(1, minmax(0, 1fr)); height: 100%; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px 6px 0px 6px; position: relative; width: 1px; }\",\".framer-t6deo .framer-1nzoh6b { align-content: center; align-items: center; align-self: start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 140px; height: 100%; justify-content: center; justify-self: start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-t6deo .framer-1uz7t7x, .framer-t6deo .framer-s4ltcv, .framer-t6deo .framer-17vcs6d { background-color: var(--token-cca174bb-3505-487e-8856-609d2f1a097c, #d4d4d4); flex: none; height: 100%; opacity: 0.14; overflow: var(--overflow-clip-fallback, clip); position: relative; width: 1px; will-change: var(--framer-will-change-effect-override, transform); }\",\".framer-t6deo .framer-1keulyl { background: transparent; flex-grow: 1; height: 0px; margin: 0px; margin-bottom: -0px; position: relative; width: 0px; }\",\".framer-t6deo .framer-6xvxmr { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 140px; height: calc(min(var(--framer-viewport-height, 100vh), 100%) * 1); justify-content: center; left: calc(50.00000000000002% - 100% / 2); order: 1002; overflow: visible; padding: 0px; position: var(--framer-canvas-fixed-position, fixed); top: 0px; width: 100%; z-index: 1; }\",\".framer-t6deo .framer-gzsg11 { align-content: flex-start; align-items: flex-start; background-color: var(--token-21aec9cc-d526-4ca7-b1a8-8ff05a3dc5a6, #0a0a0a); display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 36px; height: 100%; justify-content: flex-end; max-width: 1680px; overflow: var(--overflow-clip-fallback, clip); padding: 56px; position: relative; width: 1px; z-index: 9; }\",\".framer-t6deo .framer-12c4869 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: min-content; }\",\".framer-t6deo .framer-14y05m9 { flex: none; height: 52px; overflow: var(--overflow-clip-fallback, clip); position: relative; width: 231px; }\",\".framer-t6deo .framer-1x74neb { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 14px; height: min-content; justify-content: flex-start; max-width: 520px; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-t6deo .framer-cysua1-container { flex: none; height: 48px; position: relative; width: 200px; }\",\".framer-t6deo .framer-134vftp { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 6px 0px 0px 0px; position: relative; width: min-content; }\",\".framer-t6deo .framer-18jgazn-container { flex: none; height: auto; position: relative; width: 200px; }\",\".framer-t6deo .framer-m8ep23-container { flex: none; height: 70%; left: 0px; position: absolute; right: 0px; top: 0px; z-index: 10; }\",\".framer-t6deo .framer-oxgvx0-container { flex: none; height: auto; left: 56px; order: 1003; position: absolute; top: 53%; transform: translateY(-50%); width: auto; z-index: 1; }\",\".framer-t6deo .framer-wf59c2-container { bottom: calc(calc(100% - min(var(--framer-viewport-height, 100%), 100%)) + 24px); flex: none; height: auto; order: 1004; position: var(--framer-canvas-fixed-position, fixed); right: 24px; width: 56px; z-index: 6; }\",'[data-layout-template=\"true\"] > #overlay { margin-bottom: -0px; }'];const mediaQueries={b4UbShXBK:\"(min-width: 1200px)\",SxKdUnFAJ:\"(min-width: 810px) and (max-width: 1199.98px)\",UqoGjRDFH:\"(max-width: 809.98px)\"};const humanReadableVariantMap={Desktop:\"b4UbShXBK\",Phone:\"UqoGjRDFH\",Tablet:\"SxKdUnFAJ\"};const HTMLStyle=({value})=>{const onCanvas=useIsOnFramerCanvas();if(onCanvas)return null;return /*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:value},\"data-framer-html-style\":\"\"});};const getProps=({floatingContactEnabled,height,id,width,...props})=>{return{...props,fKqBupMWS:floatingContactEnabled??props.fKqBupMWS??true,variant:humanReadableVariantMap[props.variant]??props.variant??\"b4UbShXBK\"};};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{style,className,layoutId,variant,fKqBupMWS,children,...restProps}=getProps(props);const[baseVariant,hydratedBaseVariant]=useHydratedBreakpointVariants(variant,breakpoints,false);const gestureVariant=undefined;const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const{activeVariantCallback,delay}=useActiveVariantCallback(undefined);const jbLaJLl17ko9la1=({overlay})=>activeVariantCallback(async(...args)=>{overlay.toggle();});const componentScopeId=\"y96I9ppUj\";const isDisplayed=()=>{if(!isBrowser())return true;if([\"SxKdUnFAJ\",\"UqoGjRDFH\"].includes(baseVariant))return false;return true;};const router=useRouter();const HZVS9srD21q29jei=({overlay})=>activeVariantCallback(async(...args)=>{overlay.hide();});const isDisplayed1=()=>{if(!isBrowser())return true;if(baseVariant===\"UqoGjRDFH\")return false;return true;};useCustomCursors({});return /*#__PURE__*/_jsx(GeneratedComponentContext.Provider,{value:{activeVariantId:baseVariant,humanReadableVariantMap,isLayoutTemplate:true,primaryVariantId:\"b4UbShXBK\",variantClassNames},children:/*#__PURE__*/_jsxs(LayoutGroup,{id:layoutId??componentScopeId,children:[/*#__PURE__*/_jsx(HTMLStyle,{value:\":root body { background: var(--token-21aec9cc-d526-4ca7-b1a8-8ff05a3dc5a6, rgb(10, 10, 10)); }\"}),/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(scopingClassNames,\"framer-uye3p9\",className),\"data-layout-template\":true,ref:refBinding,style:{...style},children:[/*#__PURE__*/_jsx(Overlay,{dismissWithEsc:true,children:overlay=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:68,width:\"100vw\",y:0,children:/*#__PURE__*/_jsxs(Container,{className:\"framer-5q8dv5-container\",\"data-framer-layout-hint-center-x\":true,id:`${componentScopeId}-5q8dv5`,layoutScroll:true,nodeId:\"WSbCgM_U7\",scopeId:\"y96I9ppUj\",children:[/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{SxKdUnFAJ:{variant:matchVariant(overlay.visible&&\"hqcbofAnS\",overlay.visible?\"hqcbofAnS\":\"bfGlC2K6I\")},UqoGjRDFH:{variant:matchVariant(overlay.visible&&\"bNwVRUl9P\",overlay.visible?\"bNwVRUl9P\":\"ENCm9is6W\")}},children:/*#__PURE__*/_jsx(Navbar,{height:\"100%\",id:\"WSbCgM_U7\",jbLaJLl17:jbLaJLl17ko9la1({overlay}),layoutId:\"WSbCgM_U7\",style:{width:\"100%\"},variant:matchVariant(overlay.visible&&\"hqcbofAnS\",overlay.visible?\"hqcbofAnS\":\"TBVoh75zg\"),width:\"100%\"})}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay.visible&&/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx(InjectSelectionStyle,{triggerId:`${componentScopeId}-5q8dv5`,children:/*#__PURE__*/_jsxs(ResetOuterLinkContext,{children:[/*#__PURE__*/_jsx(motion.div,{animate:{opacity:1,transition:{delay:0,duration:.5,ease:[.32,.94,.6,1],type:\"tween\"}},className:cx(scopingClassNames,\"framer-ki0t8p\"),\"data-framer-portal-id\":`${componentScopeId}-5q8dv5`,exit:{opacity:0,transition:{delay:.2,duration:.5,ease:[.32,.94,.6,1],type:\"tween\"}},initial:{opacity:0},onTap:()=>overlay.hide()},\"As1VcxCgv\"),/*#__PURE__*/_jsxs(motion.div,{className:cx(scopingClassNames,\"framer-1qetvgx\"),\"data-framer-name\":\"Container\",\"data-framer-portal-id\":`${componentScopeId}-5q8dv5`,children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-cqxh52\",\"data-framer-name\":\"Main\",children:[isDisplayed()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-js87mn hidden-34xoj7 hidden-1f4zlpa\",\"data-framer-name\":\"Image + Tel\",children:/*#__PURE__*/_jsx(motion.div,{animate:animation1,className:\"framer-rrbfgh\",\"data-framer-name\":\"Container\",exit:animation,initial:animation2})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1oc1hhf\",\"data-framer-name\":\"Sitemap\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1mm7gdr\",\"data-framer-name\":\"Container\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"augiA20Il\"},implicitPathVariables:undefined},{href:{webPageId:\"augiA20Il\"},implicitPathVariables:undefined},{href:{webPageId:\"augiA20Il\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{animate:animation4,className:\"framer-htoolj-container\",exit:animation3,inComponentSlot:true,initial:animation5,nodeId:\"R2vWn5j5A\",rendersWithMotion:true,scopeId:\"y96I9ppUj\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{SxKdUnFAJ:{uZKzqPJHI:resolvedLinks[1],variant:matchVariant(\"OST1ngVui\")},UqoGjRDFH:{uZKzqPJHI:resolvedLinks[2],variant:matchVariant(\"xAx412ghU\")}},children:/*#__PURE__*/_jsx(UnderlineHoverLink,{b4yKQTya4:\"HOME\",height:\"100%\",HZVS9srD2:HZVS9srD21q29jei({overlay}),id:\"R2vWn5j5A\",KSAFNm8tj:\"var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250))\",KVhN7aKAf:false,layoutId:\"R2vWn5j5A\",SyA9CEwpa:\"var(--token-cca174bb-3505-487e-8856-609d2f1a097c, rgb(212, 212, 212))\",uZKzqPJHI:resolvedLinks[0],variant:matchVariant(\"zShK3pd5J\"),width:\"100%\"})})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"ciy2xevxT\"},implicitPathVariables:undefined},{href:{webPageId:\"ciy2xevxT\"},implicitPathVariables:undefined},{href:{webPageId:\"ciy2xevxT\"},implicitPathVariables:undefined}],children:resolvedLinks1=>/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{animate:animation6,className:\"framer-t1soz3-container\",exit:animation3,inComponentSlot:true,initial:animation5,nodeId:\"k6iBML33k\",rendersWithMotion:true,scopeId:\"y96I9ppUj\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{SxKdUnFAJ:{uZKzqPJHI:resolvedLinks1[1],variant:matchVariant(\"OST1ngVui\")},UqoGjRDFH:{uZKzqPJHI:resolvedLinks1[2],variant:matchVariant(\"xAx412ghU\")}},children:/*#__PURE__*/_jsx(UnderlineHoverLink,{b4yKQTya4:\"PROJECTS\",height:\"100%\",HZVS9srD2:HZVS9srD21q29jei({overlay}),id:\"k6iBML33k\",KSAFNm8tj:\"var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250))\",KVhN7aKAf:false,layoutId:\"k6iBML33k\",SyA9CEwpa:\"var(--token-cca174bb-3505-487e-8856-609d2f1a097c, rgb(212, 212, 212))\",uZKzqPJHI:resolvedLinks1[0],variant:matchVariant(\"zShK3pd5J\"),width:\"100%\"})})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{animate:animation7,className:\"framer-1ofpo37-container\",exit:animation3,inComponentSlot:true,initial:animation5,nodeId:\"bIlyGnhS4\",rendersWithMotion:true,scopeId:\"y96I9ppUj\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{SxKdUnFAJ:{variant:matchVariant(\"OST1ngVui\")},UqoGjRDFH:{variant:matchVariant(\"xAx412ghU\")}},children:/*#__PURE__*/_jsx(UnderlineHoverLink,{b4yKQTya4:\"CONTACT\",height:\"100%\",HZVS9srD2:HZVS9srD21q29jei({overlay}),id:\"bIlyGnhS4\",KSAFNm8tj:\"var(--token-363e0396-688b-4390-8542-5fe4040ca3c6, rgb(250, 250, 250))\",KVhN7aKAf:true,layoutId:\"bIlyGnhS4\",SyA9CEwpa:\"var(--token-cca174bb-3505-487e-8856-609d2f1a097c, rgb(212, 212, 212))\",uZKzqPJHI:\"https://tally.so/r/lbx15v\",variant:matchVariant(\"zShK3pd5J\"),width:\"100%\"})})})})]})})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-11ex8oq\",\"data-framer-name\":\"Grid BG\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-16lu28u\",\"data-framer-name\":\"Vertical\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-qf5v7q\",\"data-framer-name\":\"BG Container\",children:/*#__PURE__*/_jsx(motion.div,{animate:animation4,className:\"framer-15jamk1\",\"data-framer-name\":\"BG\",exit:animation8,initial:animation9})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-f2q0ck\",\"data-framer-name\":\"BG Container\",children:/*#__PURE__*/_jsx(motion.div,{animate:animation4,className:\"framer-1kwa3c0\",\"data-framer-name\":\"BG\",exit:animation8,initial:animation9})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-dyk6ln\",\"data-framer-name\":\"BG Container\",children:/*#__PURE__*/_jsx(motion.div,{animate:animation4,className:\"framer-xtj0zj\",\"data-framer-name\":\"BG\",exit:animation8,initial:animation9})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-mxxdob\",\"data-framer-name\":\"BG Container\",children:/*#__PURE__*/_jsx(motion.div,{animate:animation4,className:\"framer-t3wdr7\",\"data-framer-name\":\"BG\",exit:animation8,initial:animation9})})]})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-i8cz0x\",\"data-framer-name\":\"Grid Line\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1mojz2\",\"data-framer-name\":\"Vertical\",children:[isDisplayed1()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1nzoh6b hidden-1f4zlpa\",\"data-framer-name\":\"Helper\"}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1iyji2m\",\"data-framer-name\":\"Line\",children:/*#__PURE__*/_jsx(motion.div,{animate:animation11,className:\"framer-1uz7t7x\",exit:animation10,initial:animation12})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-17brfry\",\"data-framer-name\":\"Line\",children:/*#__PURE__*/_jsx(motion.div,{animate:animation11,className:\"framer-s4ltcv\",exit:animation10,initial:animation12})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-p3dqug\",\"data-framer-name\":\"Line\",children:/*#__PURE__*/_jsx(motion.div,{animate:animation11,className:\"framer-17vcs6d\",exit:animation10,initial:animation12})})]})})]})]})}),getContainer())})})]})})})}),children,/*#__PURE__*/_jsx(\"div\",{className:\"framer-1keulyl\"}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-6xvxmr\",\"data-framer-name\":\"Footer\",children:[/*#__PURE__*/_jsxs(MotionFooterWithFX,{__framer__styleTransformEffectEnabled:true,__framer__transformTargets:[{target:{opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0}},{ref:IzM84v0KufYKtXyfM4,target:{opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0}}],__framer__transformTrigger:\"onScrollTarget\",__framer__transformViewportThreshold:1,__perspectiveFX:false,__targetOpacity:1,className:\"framer-gzsg11\",\"data-framer-name\":\"Footer\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"framer-12c4869\",\"data-framer-name\":\"Brand Wordmark\",children:/*#__PURE__*/_jsx(\"div\",{className:\"framer-14y05m9\",\"data-framer-name\":\"GBL Wordmark\"})}),/*#__PURE__*/_jsxs(\"div\",{className:\"framer-1x74neb\",\"data-framer-name\":\"Contact Links\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,width:\"200px\",y:856,children:/*#__PURE__*/_jsx(Container,{className:\"framer-cysua1-container\",\"data-framer-name\":\"Kakao Consult Button\",name:\"Kakao Consult Button\",nodeId:\"R7g6JHBBY\",scopeId:\"y96I9ppUj\",children:/*#__PURE__*/_jsx(WorkPortfolioPill,{G4rrIVfrO:\"https://pf.kakao.com/_xoJFnn/chat\",height:\"100%\",id:\"R7g6JHBBY\",IEb81zbUp:\"카카오톡 상담\",layoutId:\"R7g6JHBBY\",name:\"Kakao Consult Button\",style:{height:\"100%\",width:\"100%\"},width:\"100%\",X2MiiaAKr:true})})}),/*#__PURE__*/_jsx(\"div\",{className:\"framer-134vftp\",\"data-framer-name\":\"Legal Links\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-18jgazn-container\",\"data-framer-name\":\"Legal Roll Links\",isAuthoredByUser:true,name:\"Legal Roll Links\",nodeId:\"eKGFv7O2K\",scopeId:\"y96I9ppUj\",children:/*#__PURE__*/_jsx(GBLRollLinks,{color:\"rgb(238, 238, 238)\",fontFamily:\"SUIT\",fontSize:14,fontWeight:400,height:\"100%\",hoverColor:\"rgb(230, 255, 43)\",id:\"eKGFv7O2K\",layoutId:\"eKGFv7O2K\",lineHeight:1.4,link1:\"/terms\",link2:\"/privacy\",name:\"Legal Roll Links\",newTab1:false,newTab2:false,roll:true,style:{width:\"100%\"},text1:\"이용약관\",text2:\"개인정보처리방침\",width:\"100%\"})})})})]})]}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-m8ep23-container\",\"data-framer-name\":\"Logo Construct\",isAuthoredByUser:true,name:\"Logo Construct\",nodeId:\"YmtAyUkon\",scopeId:\"y96I9ppUj\",children:/*#__PURE__*/_jsx(GBLLogoConstruct,{bodyColor:\"rgb(229, 229, 229)\",height:\"100%\",id:\"YmtAyUkon\",label:\"Design GBL 로고\",layoutId:\"YmtAyUkon\",lineColor:\"rgb(230, 255, 43)\",lineOpacity:.32,maxSymbolHeight:58,name:\"Logo Construct\",notchColor:\"rgb(212, 255, 90)\",offsetY:0,parallax:true,phoneSymbolWidth:70,previewTime:-1,recededLineOpacity:.05,recedeOpacity:.18,recedeScale:.86,replay:true,settledOpacity:.12,showWordmark:true,speed:1,style:{height:\"100%\",width:\"100%\"},symbolWidth:50,travel:60,width:\"100%\",wordmarkAccent:\"rgb(212, 255, 90)\",wordmarkColor:\"rgb(230, 230, 229)\",wordmarkOffsetY:0,wordmarkWidth:74})})})]}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-oxgvx0-container\",\"data-framer-layout-hint-center-y\":true,isAuthoredByUser:true,nodeId:\"LmLImJLR0\",scopeId:\"y96I9ppUj\",children:/*#__PURE__*/_jsx(KeepAllKorean,{height:\"100%\",id:\"LmLImJLR0\",layoutId:\"LmLImJLR0\",width:\"100%\"})})}),fKqBupMWS!==false&&/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{UqoGjRDFH:{y:784}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:200,width:\"56px\",y:776,children:/*#__PURE__*/_jsx(Container,{className:\"framer-wf59c2-container\",\"data-framer-name\":\"Floating Contact\",layoutScroll:true,name:\"Floating Contact\",nodeId:\"b0RZ20v3C\",scopeId:\"y96I9ppUj\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{UqoGjRDFH:{variant:matchVariant(\"OVvcu9Oo0\")}},children:/*#__PURE__*/_jsx(FloatingContact,{height:\"100%\",id:\"b0RZ20v3C\",layoutId:\"b0RZ20v3C\",name:\"Floating Contact\",style:{width:\"100%\"},variant:matchVariant(\"o_VJ_F43d\"),width:\"100%\"})})})})})]}),/*#__PURE__*/_jsx(\"div\",{id:\"template-overlay\"})]})});});const css=target=>{const isStaticRenderer=target===RenderTarget.canvas||target===RenderTarget.export;if(!isStaticRenderer){return[...rules,...breakpointKeys.map(key=>{const query=mediaQueries[key];return`@media ${query} { ${breakpointRules[key].join(\" \")} }`;})];}return[...rules,...breakpointKeys.flatMap(key=>{const selector=selectors[key];return breakpointRules[key].map(rule=>`${selector} {${rule}}`);})];};/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 1000\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"SxKdUnFAJ\":{\"layout\":[\"fixed\",\"fixed\"]},\"UqoGjRDFH\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"fKqBupMWS\":\"floatingContactEnabled\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerHitTargets {\"b4UbShXBK\":[\".framer-5q8dv5-container\",\".framer-6xvxmr\",\".framer-oxgvx0-container\",\".framer-wf59c2-container\"],\"SxKdUnFAJ\":[\".framer-5q8dv5-container\",\".framer-6xvxmr\",\".framer-oxgvx0-container\",\".framer-wf59c2-container\"],\"UqoGjRDFH\":[\".framer-5q8dv5-container\",\".framer-6xvxmr\",\".framer-oxgvx0-container\",\".framer-wf59c2-container\"]}\n * @framerBreakpoints {\"b4UbShXBK\":{\"min\":1200,\"canvasClassName\":\"framer-uye3p9-override\",\"minHeight\":1000,\"name\":\"Desktop\",\"width\":1200,\"rootFontSize\":16},\"SxKdUnFAJ\":{\"min\":810,\"max\":1199,\"canvasClassName\":\"framer-34xoj7-override\",\"minHeight\":1000,\"viewportHeight\":1080,\"name\":\"Tablet\",\"width\":810,\"rootFontSize\":16},\"UqoGjRDFH\":{\"max\":809,\"canvasClassName\":\"framer-1f4zlpa-override\",\"minHeight\":1000,\"viewportHeight\":844,\"name\":\"Phone\",\"width\":390,\"rootFontSize\":16}}\n * @framerDefaultVariant b4UbShXBK\n * @framerLayoutTemplate true\n */const Framery96I9ppUj=withCSS(Component,css,\"framer-t6deo\");export default Framery96I9ppUj;Framery96I9ppUj.displayName=\"Home Layout\";Framery96I9ppUj.defaultProps={height:1e3,width:1200};addPropertyControls(Framery96I9ppUj,{fKqBupMWS:{defaultValue:true,title:\"Floating Contact Enabled\",type:ControlType.Boolean}});addFonts(Framery96I9ppUj,[{explicitInter:true,fonts:[]},...NavbarFonts,...UnderlineHoverLinkFonts,...WorkPortfolioPillFonts,...GBLRollLinksFonts,...GBLLogoConstructFonts,...KeepAllKoreanFonts,...FloatingContactFonts],{supportsExplicitInterCodegen:true});Framery96I9ppUj.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(Navbar,{},context),()=>forwardLoader(UnderlineHoverLink,{},context),()=>forwardLoader(WorkPortfolioPill,{},context),()=>forwardLoader(FloatingContact,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Framery96I9ppUj\",\"slots\":[],\"annotations\":{\"framerDefaultVariant\":\"b4UbShXBK\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerColorSyntax\":\"true\",\"framerBreakpoints\":\"{\\\"b4UbShXBK\\\":{\\\"min\\\":1200,\\\"canvasClassName\\\":\\\"framer-uye3p9-override\\\",\\\"minHeight\\\":1000,\\\"name\\\":\\\"Desktop\\\",\\\"width\\\":1200,\\\"rootFontSize\\\":16},\\\"SxKdUnFAJ\\\":{\\\"min\\\":810,\\\"max\\\":1199,\\\"canvasClassName\\\":\\\"framer-34xoj7-override\\\",\\\"minHeight\\\":1000,\\\"viewportHeight\\\":1080,\\\"name\\\":\\\"Tablet\\\",\\\"width\\\":810,\\\"rootFontSize\\\":16},\\\"UqoGjRDFH\\\":{\\\"max\\\":809,\\\"canvasClassName\\\":\\\"framer-1f4zlpa-override\\\",\\\"minHeight\\\":1000,\\\"viewportHeight\\\":844,\\\"name\\\":\\\"Phone\\\",\\\"width\\\":390,\\\"rootFontSize\\\":16}}\",\"framerIntrinsicHeight\":\"1000\",\"framerLayoutTemplate\":\"true\",\"framerHitTargets\":\"{\\\"b4UbShXBK\\\":[\\\".framer-5q8dv5-container\\\",\\\".framer-6xvxmr\\\",\\\".framer-oxgvx0-container\\\",\\\".framer-wf59c2-container\\\"],\\\"SxKdUnFAJ\\\":[\\\".framer-5q8dv5-container\\\",\\\".framer-6xvxmr\\\",\\\".framer-oxgvx0-container\\\",\\\".framer-wf59c2-container\\\"],\\\"UqoGjRDFH\\\":[\\\".framer-5q8dv5-container\\\",\\\".framer-6xvxmr\\\",\\\".framer-oxgvx0-container\\\",\\\".framer-wf59c2-container\\\"]}\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"1200\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"SxKdUnFAJ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"UqoGjRDFH\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerVariables\":\"{\\\"fKqBupMWS\\\":\\\"floatingContactEnabled\\\"}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","\r\n\t\timport * as Framer from \"framer\";\r\nimport * as React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport * as ReactDOM from \"react-dom/client\";\r\nimport HomeLayout from \"https://framerusercontent.com/modules/SvIHJUIqdD1MHpy2jMJS/On7vs4yojhqmDITlU2Q4/y96I9ppUj.js\";\r\n\r\n\t\tconst routes = {augiA20Il: {elementPatterns: {q19Je2fGP: \":W9z43xXAG-itm-work\"}, elements: {EkPJCvey0: \"4\", hOw_dTVEH: \"trigger-service-card\", lE4Rtbeyw: \"about\", ognWo9Ady: \"3\", q19Je2fGP: \"itm-work\", qa80WZr4d: \"1\", qUc09ZhH7: \"main-container\", QUCtTS4fv: \"hero\", sXIjasJ69: \"about-headline-1\", TllWPEHj5: \"2\", TNx9EYxj4: \"backup-footer\", YgDCLlJni: \"about-headline\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/xvMaXAI5GX89JzPLj77G/SyOGjtMC3z1375Yu6JQn/augiA20Il.js\")), path: \"/\"}, ciy2xevxT: {elements: {KRsxoRP_4: \"hero\", OZ7kDXO_3: \"backup-footer\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/s0ku0xD5dlAioxyPuzFK/QXYCHoAONSrppiUzFPIk/ciy2xevxT.js\")), path: \"/project\"}, yL1qMcFK7: {elements: {s_lohytUu: \"hero\", VsRawgucd: \"backup-footer\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/jyyZE0NNKV8ZidMPCeqN/WX6YdpnEHu57XroZgnwv/yL1qMcFK7.js\")), path: \"/404\"}, CYqvDqWlc: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/QdXUR6TAli1M1p3v8qut/toiI1LXAXa27AvAJBkzs/CYqvDqWlc.js\")), path: \"/privacy\"}, ItAAgAvjg: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/cLRo9e2fOQomkSqX5XY7/wWCE0PhknB1Oc4FUX7XW/ItAAgAvjg.js\")), path: \"/terms\"}}\r\n\r\n\t\tconst locales = [{code: \"ko\", id: \"default\", name: \"Korean\", slug: \"\", textDirection: \"ltr\"}]\r\n\t\tconst collectionUtils = {iAfkz_1TG: async () => (await import(\"https://framerusercontent.com/modules/kzrMzv1ko3t1DIyCDymo/dvlYISCosPhOo2ZA6XcV/iAfkz_1TG.js\"))?.[\"utils\"]}\r\n\t\tconst serverDatabaseClient = undefined\r\n\t\tconst framerSiteId = \"f0060fc49967921f3e80ab4db22a274f28794809a1b99d20a157c22ec0db284a\"\r\n\t\tfunction Template({webPageId, children, style, ...rest}) {const props1 = {fKqBupMWS: true}\r\nconst props2 = {...props1, fKqBupMWS: false}\r\nconst templateProps = {augiA20Il: props1, bBB6kyWaV: props1, ciy2xevxT: props1, CYqvDqWlc: props1, ItAAgAvjg: props1, lXXaxf_7u: props2, Nkrx_bPOP: props2, yL1qMcFK7: props1}\r\nconst props = templateProps[webPageId] ?? {}\r\nswitch (webPageId) {case \"augiA20Il\":\r\ncase \"ciy2xevxT\":\r\ncase \"Nkrx_bPOP\":\r\ncase \"lXXaxf_7u\":\r\ncase \"yL1qMcFK7\":\r\ncase \"CYqvDqWlc\":\r\ncase \"ItAAgAvjg\":\r\ncase \"bBB6kyWaV\":\r\nreturn React.createElement(HomeLayout, {...props, key: \"HomeLayout\", style}, children(true));\r\ndefault: { return children(false) }}}\r\nexport function getLayoutTemplateBreakpoints(routeId) {switch (routeId) {case \"augiA20Il\":\r\ncase \"ciy2xevxT\":\r\ncase \"Nkrx_bPOP\":\r\ncase \"lXXaxf_7u\":\r\ncase \"yL1qMcFK7\":\r\ncase \"CYqvDqWlc\":\r\ncase \"ItAAgAvjg\":\r\ncase \"bBB6kyWaV\":\r\nreturn [{hash: \"uye3p9\", mediaQuery: \"(min-width: 1200px)\"}, {hash: \"34xoj7\", mediaQuery: \"(min-width: 810px) and (max-width: 1199.98px)\"}, {hash: \"1f4zlpa\", mediaQuery: \"(max-width: 809.98px)\"}]\r\ndefault: { return undefined }}}\r\n\r\n\t\tconst isBrowser = typeof document !== \"undefined\"\r\n\t\tconst isBot = isBrowser && /bot|-google|google-|yandex|ia_archiver|crawl|spider/iu.test(navigator.userAgent)\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\texport async function getPageRoot({\r\n\t\t\trouteId,\r\n\t\t\tpathVariables,\r\n\t\t\tcanonicalPathVariables,\r\n\t\t\tlocaleId,\r\n\t\t\tcollectionItemId,\r\n\t\t\tcontentLocaleId,\r\n\t\t\tshouldResolveInitialRouteContentState = false,\r\n\t\t}) {\r\n\t\t\tconst rootPreload = routes[routeId].page.preload()\r\n\r\n\t\t\t\r\n\r\n\t\t\tFramer.setLibraryFeatures({checkServerSideRouter: true, disableCustomCode: false, disableHoverOnMobile: false, editorBarDisableFrameAncestorsSecurity: false, motionDivToDiv: false, onPageRichTextBlockSelection: true, scrollRestoration: true, synchronousNavigationOnDesktop: false, yieldOnTap: false})\r\n\t\t\tFramer.setCurrentSiteId(framerSiteId)\r\n\r\n\t\t\tconst content = React.createElement(\r\n\t\t\t\tFramer.PageRoot,\r\n\t\t\t\t{\r\n\t\t\t\t\tisWebsite: true,\r\n\t\t\t\t\tenvironment: \"site\",\r\n\t\t\t\t\trouteId,\r\n\t\t\t\t\tpathVariables,\r\n\t\t\t\t\tcanonicalPathVariables,\r\n\t\t\t\t\troutes,\r\n\t\t\t\t\tcollectionUtils,\r\n\t\t\t\t\tserverDatabaseClient,\r\n\t\t\t\t\tframerSiteId,\r\n\t\t\t\t\tnotFoundPage: Framer.lazy(() => import(\"https://framerusercontent.com/modules/jyyZE0NNKV8ZidMPCeqN/WX6YdpnEHu57XroZgnwv/yL1qMcFK7.js\")),\r\n\t\t\t\t\tisReducedMotion: undefined,\r\n\t\t\t\t\tlocaleId,\r\n\t\t\t\t\tlocales,\r\n\t\t\t\t\tpreserveQueryParams: undefined,\r\n\t\t\t\t\tsiteCanonicalURL: \"https://designgbl.com\",\r\n\t\t\t\t\tEditorBar: \r\n\t\t\ttypeof window !== \"undefined\" ? (() => {\r\n\t\t\t\tif (isBot) {\r\n\t\t\t\t\tconsole.log(\"[Framer On-Page Editing] Unavailable because navigator is bot\")\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn Framer.lazy(async () => {\r\n\t\t\t\t\tconst dependencies = {\r\n\t\t\t\t\t\t__version: 3,\r\n\t\t\t\t\t\tframer: {\r\n\t\t\t\t\t\t\tuseCurrentRoute: Framer.useCurrentRoute,\r\n\t\t\t\t\t\t\tuseLocaleInfo: Framer.useLocaleInfo,\r\n\t\t\t\t\t\t\tuseRouter: Framer.useRouter,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\treact: {\r\n\t\t\t\t\t\t\tcreateElement: React.createElement,\r\n\t\t\t\t\t\t\tFragment: React.Fragment,\r\n\t\t\t\t\t\t\tmemo: React.memo,\r\n\t\t\t\t\t\t\tuseCallback: React.useCallback,\r\n\t\t\t\t\t\t\tuseEffect: React.useEffect,\r\n\t\t\t\t\t\t\tuseRef: React.useRef,\r\n\t\t\t\t\t\t\tuseState: React.useState,\r\n\t\t\t\t\t\t\tuseLayoutEffect: React.useLayoutEffect,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"react-dom\": { createPortal },\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindow.__framer_editorBarDependencies = dependencies\r\n\r\n\t\t\t\t\tconst { createEditorBar } = await import(\"https://framer.com/edit/init.mjs\")\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdefault: createEditorBar(),\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})() : undefined\r\n\t\t,\r\n\t\t\t\t\tadaptLayoutToTextDirection: false,\r\n\t\t\t\t\tLayoutTemplate: Template,\r\n\t\t\t\t\tloadSnippetsModule: new Framer.LazyValue(() => import(\"https://framerusercontent.com/modules/bFGA0vrSAxz3B08Qnaot/UcODSdB8icbV7Q4RuJtB/snippets.js\")),\r\n\t\t\t\t\tinitialCollectionItemId: collectionItemId,\r\n\t\t\t\t\tinitialContentLocaleIdOverride: contentLocaleId,\r\n\t\t\t\t}\r\n\t\t\t)\r\n\r\n\t\t\tconst contentWithGracefullyDegradingErrorBoundary = React.createElement(Framer.GracefullyDegradingErrorBoundary, {\r\n\t\t\t\tchildren: content\r\n\t\t\t})\r\n\r\n\t\t\t\r\n\t\t\tconst page = React.createElement(Framer.PageEffectsProvider, {\r\n\t\t\t\tchildren: contentWithGracefullyDegradingErrorBoundary,\r\n\t\t\t\tvalue: {global: {enter: {mask: {angle: 270, type: \"wipe\", width: \"0%\"}, opacity: 1, rotate: 0, rotate3d: false, rotateX: 0, rotateY: 0, scale: 1, transition: {bounce: 0, damping: 30, delay: 0, duration: 0.8, durationBasedSpring: true, ease: [0.32, 0.94, 0.6, 1], mass: 1, stiffness: 400, type: \"tween\"}, x: \"0%\", y: \"20%\"}, exit: {opacity: 0, rotate: 0, rotate3d: false, rotateX: 0, rotateY: 0, scale: 1, transition: {bounce: 0, damping: 30, delay: 0.02, duration: 0.8, durationBasedSpring: true, ease: [0.32, 0.94, 0.6, 1], mass: 1, stiffness: 400, type: \"tween\"}, x: \"0%\", y: \"-20%\"}}, routes: {}}\r\n\t\t\t})\r\n\r\n\t\t\t// We don't want the initial render to immediately have to suspend.\r\n\t\t\tawait rootPreload\r\n\t\t\treturn page\r\n\t\t}\r\n\t\r\n\r\n\t\tif (isBrowser) {\r\n\t\t\t// Note: HTTPArchive also uses this function to detect Framer sites; see https://github.com/HTTPArchive/wappalyzer/blob/371a17583f74fd9171b9077f59a5619b24062891/src/technologies/f.json#L1722-L1748.\r\n\t\t\twindow.__framer_importFromPackage = (packageAndFilename, exportIdentifier) => () => {\r\n\t\t\t\treturn React.createElement(Framer.ErrorPlaceholder, { error: 'Package component not supported: \"' + exportIdentifier + '\" in \"' + packageAndFilename + '\"' })\r\n\t\t\t}\r\n\r\n\t\t\twindow.__framer_events = window.__framer_events || []\r\n\r\n\t\t\t// Initialize lazy modules cache for hydration\r\n\t\t\tFramer.initLazyModulesCache()\r\n\r\n\t\t\tconst container = document.getElementById(\"main\")\r\n\t\t\t// We know that #main is parsed before this script, so we don't need to wait for DOMContentLoaded or similar events.\r\n\t\t\tif (\"framerHydrateV2\" in container.dataset) main(true, container)\r\n\t\t\telse main(false, container)\r\n\t\t}\r\n\r\n\t\tfunction track() {\r\n\t\t\tif (!isBrowser) return\r\n\t\t\twindow.__framer_events.push(arguments)\r\n\t\t}\r\n\r\n\t\tasync function main(shouldHydrate, container) {\r\n\t\t\tfunction handleError(error, errorInfo, recoverable = true) {\r\n\t\t\t\tif (error.caught || window.__framer_hadFatalError) return // we already logged it\r\n\r\n\t\t\t\tconst componentStack = errorInfo?.componentStack\r\n\t\t\t\tif (recoverable) {\r\n\t\t\t\t\tconsole.warn(\"Caught a recoverable error. The site is still functional, but might have some UI flickering or degraded page load performance. If you are the author of this website, update external components and check recently added custom code or code overrides to fix the following server/client mismatches:\\n\", error, componentStack)\r\n\t\t\t\t\t// we only want to collect 1%, because this can be quite noisy (floods the data pipeline)\r\n\t\t\t\t\tif (Math.random() > 0.01) return\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error(\"Caught a fatal error. Please report the following to the Framer team via https://www.framer.com/contact/:\\n\", error, componentStack)\r\n\t\t\t\t}\r\n\t\t\t\ttrack(recoverable ? \"published_site_load_recoverable_error\" : \"published_site_load_error\", {\r\n\t\t\t\t\tmessage: String(error),\r\n\t\t\t\t\tcomponentStack, // componentStack is more useful\r\n\t\t\t\t\tstack: componentStack ? undefined : error instanceof Error && typeof error.stack === \"string\" ? error.stack : null,\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tlet routeId, localeId, contentLocaleId, pathVariables, canonicalPathVariables, breakpoints, routeData\r\n\t\t\t\tif (shouldHydrate) {\r\n\t\t\t\t\trouteData = JSON.parse(container.dataset[\"framerHydrateV2\"])\r\n\t\t\t\t\trouteId = routeData.routeId\r\n\t\t\t\t\tlocaleId = routeData.localeId\r\n\t\t\t\t\tcontentLocaleId = routeData.contentLocaleId\r\n\t\t\t\t\tpathVariables = routeData.pathVariables\r\n\t\t\t\t\tcanonicalPathVariables = routeData.canonicalPathVariables\r\n\t\t\t\t\tbreakpoints = routeData.breakpoints\r\n\r\n\t\t\t\t\trouteId = Framer.patchRoutesForABTesting(routes, routeId) // Prioritize optimized route id to avoid flickering in browsers not supporting the server-timing header (Safari older than 16.4)\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\r\n\t\t\t\t\tFramer.patchRoutesForABTesting(routes, undefined) // This must happen before inferInitialRouteFromPath\r\n\t\t\t\t\tconst serverRoute = performance.getEntriesByType(\"navigation\")[0]?.serverTiming?.find(e => e.name === \"route\")?.description\r\n\t\t\t\t\tif (serverRoute) {\r\n\t\t\t\t\t\tconst routeData = new URLSearchParams(serverRoute)\r\n\t\t\t\t\t\trouteId = routeData.get(\"id\")\r\n\t\t\t\t\t\tlocaleId = routeData.get(\"locale\")\r\n\t\t\t\t\t\tfor (const [key, value] of routeData.entries()) {\r\n\t\t\t\t\t\t\tif (!key.startsWith(\"var.\")) continue\r\n\t\t\t\t\t\t\tpathVariables ??= {}\r\n\t\t\t\t\t\t\tpathVariables[key.slice(4)] = value\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!routeId || !localeId) {\r\n\t\t\t\t\t\tconst routeData = Framer.inferInitialRouteFromPath(routes, decodeURIComponent(location.pathname), true, locales)\r\n\t\t\t\t\t\trouteId = routeData.routeId\r\n\t\t\t\t\t\tlocaleId = routeData.localeId\r\n\t\t\t\t\t\tpathVariables = routeData.pathVariables\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst pagePromise = getPageRoot({\r\n\t\t\t\t\trouteId,\r\n\t\t\t\t\tlocaleId,\r\n\t\t\t\t\tcontentLocaleId,\r\n\t\t\t\t\tpathVariables,\r\n\t\t\t\t\tcanonicalPathVariables,\r\n\t\t\t\t\tcollectionItemId: shouldHydrate ? routeData?.collectionItemId : undefined,\r\n\t\t\t\t\tshouldResolveInitialRouteContentState: !shouldHydrate,\r\n\t\t\t\t})\r\n\r\n\t\t\t\t\r\nif (typeof window !== \"undefined\") {\r\n\tvoid (async () => {\r\n\t\tconst route = routes[routeId]\r\n\r\n\t\tconst defaultLocaleId = \"default\"\r\n\t\tconst framerLocale = locales.find(({ id }) => !localeId ? id === defaultLocaleId : id === localeId).code\r\n\r\n\t\t\r\n\t\tlet collectionItemId = routeData?.collectionItemId ?? null\r\n\t\tif (collectionItemId === null && route?.collectionId && collectionUtils) {\r\n\t\t\tconst utils = await collectionUtils[route.collectionId]?.()\r\n\t\t\tconst [slug] = Object.values(pathVariables)\r\n\t\t\tif (utils && typeof slug === \"string\") {\r\n\t\t\t\tcollectionItemId = (await utils.getRecordIdBySlug(slug, framerLocale || undefined)) ?? null\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\r\n\t\tconst resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions()\r\n\t\tconst timezone = resolvedDateTimeOptions.timeZone\r\n\t\tconst locale = resolvedDateTimeOptions.locale\r\n\r\n\t\t// wait for the page to be activated before sending the pageview event\r\n\t\t// https://developer.chrome.com/docs/web-platform/prerender-pages#impact-on-analytics\r\n\t\tawait new Promise((resolve) => {\r\n\t\t\tif (document.prerendering) {\r\n\t\t\t\tdocument.addEventListener(\"prerenderingchange\", resolve, { once: true })\r\n\t\t\t} else {\r\n\t\t\t\tresolve()\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\twindow.__framer_events.push([\r\n\t\t\t\"published_site_pageview\",\r\n\t\t\t{\r\n\t\t\t\tframerSiteId,\r\n\t\t\t\tversion: 2,\r\n\t\t\t\troutePath: route?.path || \"/\",\r\n\t\t\t\tcollectionItemId,\r\n\t\t\t\tframerLocale: framerLocale || null,\r\n\t\t\t\twebPageId: route?.abTestingVariantId ?? routeId,\r\n\t\t\t\tabTestId: route?.abTestId,\r\n\t\t\t\treferrer: document.referrer || null,\r\n\t\t\t\turl: window.location.href,\r\n\t\t\t\thostname: window.location.hostname || null,\r\n\t\t\t\tpathname: window.location.pathname || null,\r\n\t\t\t\thash: window.location.hash || null,\r\n\t\t\t\tsearch: window.location.search || null,\r\n\t\t\t\ttimezone,\r\n\t\t\t\tlocale,\r\n\t\t\t},\r\n\t\t\t\"eager\"\r\n\t\t])\r\n\r\n\t\t// Yield to avoid blocking the main thread with the user code\r\n\t\tawait Framer.yieldToMain({ priority: \"background\", ensureContinueBeforeUnload: true, continueAfter: \"paint\" })\r\n\r\n\t\tdocument.dispatchEvent(new CustomEvent(\"framer:pageview\", {\r\n\t\t\tdetail: { framerLocale: framerLocale || null }\r\n\t\t}))\r\n\t})()\r\n}\r\n\r\n\r\n\t\t\t\tconst page = await pagePromise\r\n\t\t\t\tif (shouldHydrate) {\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tFramer.withPerformanceMarks(\"framer-rewrite-breakpoints\", () => {\r\n\t\t\t\t\t\tFramer.removeHiddenBreakpointLayersV2(breakpoints)\r\n\t\t\t\t\t\twindow.__framer_onRewriteBreakpoints?.(breakpoints)\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tconst startTransition = isBot ? cb => cb() : React.startTransition\r\n\t\t\t\t\tstartTransition(() => {\r\n\t\t\t\t\t\tFramer.markHydrationStart()\r\n\t\t\t\t\t\tFramer.turnOffReactEventHandling()\r\n\t\t\t\t\t\tReactDOM.hydrateRoot(container, page, { onRecoverableError: handleError })\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\r\n\t\t\t\t\tReactDOM.createRoot(container, { onRecoverableError: handleError }).render(page)\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\thandleError(error, undefined, false)\r\n\t\t\t\tthrow error\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\r\n\r\n\t\t\r\n\t"],"mappings":"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"}