{"version":3,"file":"shared-lib.C9XFu9an.mjs","names":["useState","useMemo","vertexShaderSource","p","q","useRef","useMemo","ShaderMount","ShaderMountVanilla","metadata","metadataVersion","__FramerMetadata__"],"sources":["https:/framerusercontent.com/modules/4CGSptzzGByFGX5D3ZZl/mgeU5mhscfR0FG0X0FOL/ghmc7Lx7M.js","https:/framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js","https:/framerusercontent.com/modules/NLpw4UPElXpirDfZ8gK3/pnnblFdmCm84r7TGjG3U/shader_mount.js","https:/framerusercontent.com/modules/zIDOp1iaNFIXSAIx7ljo/VX06XYWdAlD95B9usTKm/warp.js","https:/framerusercontent.com/modules/r591zLdRh7n2CKaaHRG7/PCYxubr6wk68eTxKLhEH/get_shader_color_from_string.js","https:/framerusercontent.com/modules/q3nWgGXMhG0Ina6vgRVz/PVl4bshKvCOZO36e3vK1/index.js","https:/framer.com/m/index-uMsj.js@PVl4bshKvCOZO36e3vK1","https:/framerusercontent.com/modules/xx99X8dO7V1Egbc8GwnH/ghH1aHLmGZ0iE7qXDFVk/AnimatedLiquidBackground_Prod.js","https:/framerusercontent.com/modules/zT8wzr9AaLw8FbUC71D1/XXPodSZV8TP1QTFKQyoz/augiA20Il.js","https:/framerusercontent.com/modules/FiySC0Ib8ZgA2LXOQOyf/y7WVG3YXZcbLyoDlohhu/P8BTGjh2O.js"],"sourcesContent":["// Generated by Framer (9eb3b99)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.img,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"img\",{...rest,ref:ref});});const getProps=({height,id,width,...props})=>{return{...props};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,alt:\"\",className:cx(\"framer-SbMW4\",className),layoutId:layoutId,ref:ref,src:'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 424 68\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 14.313 7.016 L 14.313 12.86 L 7.207 12.86 L 7.207 7.016 L 9.522 7.016 L 9.522 8.229 C 9.522 8.91 10.074 9.462 10.755 9.462 C 11.436 9.462 11.988 8.91 11.988 8.229 L 11.988 7.016 Z M 18.874 5.994 L 10.775 0 L 2.676 5.994 L 5.803 5.994 L 5.803 13.923 L 3.628 13.923 L 3.628 15.055 L 1.924 15.055 L 1.924 16.479 L 4.641 16.479 L 0 47.462 L 22.012 47.462 L 21.661 45.347 L 10.805 42.42 L 10.805 16.619 L 15.115 16.619 L 20.308 39.513 L 16.889 16.479 L 19.606 16.479 L 19.606 15.055 L 17.902 15.055 L 17.902 13.923 L 15.727 13.923 L 15.727 5.994 Z\" fill=\"rgb(229, 229, 229)\" height=\"47.462px\" id=\"aHstx5Kwp\" transform=\"translate(23 10)\" width=\"22.012px\"/><path d=\"M 33.89 1.173 C 42.631 1.173 50.84 4.571 57.024 10.755 C 63.199 16.93 66.607 25.149 66.607 33.89 C 66.607 42.631 63.209 50.84 57.024 57.024 C 50.85 63.199 42.631 66.607 33.89 66.607 C 25.149 66.607 16.94 63.209 10.755 57.024 C 4.581 50.85 1.173 42.631 1.173 33.89 C 1.173 25.149 4.571 16.94 10.755 10.755 C 16.94 4.581 25.149 1.173 33.89 1.173 M 33.89 0 C 15.176 0 0 15.166 0 33.89 C 0 52.614 15.176 67.78 33.89 67.78 C 52.604 67.78 67.78 52.604 67.78 33.89 C 67.78 15.176 52.604 0 33.89 0\" fill=\"rgb(229, 229, 229)\" height=\"67.78px\" id=\"zfc7Tvr8h\" width=\"67.78px\"/><path d=\"M 207.88 43.232 C 205.514 44.616 201.625 45.728 197.345 45.728 C 188.925 45.728 185.236 40.005 185.236 32.958 C 185.236 23.345 192.343 12.49 202.607 12.49 C 208.662 12.49 211.949 16.108 211.949 20.649 C 211.949 29.009 202.537 31.244 190.759 31.044 C 190.499 32.427 190.689 35.384 191.421 37.098 C 192.674 39.925 195.24 41.378 198.528 41.378 C 202.277 41.378 205.113 40.195 207.088 39.143 L 207.88 43.222 Z M 201.826 16.78 C 196.623 16.78 192.744 21.852 191.431 26.854 C 199.991 26.924 206.697 25.801 206.697 20.87 C 206.697 18.233 204.722 16.79 201.826 16.79 Z M 162.603 13.222 L 165.37 31.384 C 165.831 35.003 166.222 37.439 166.352 39.213 L 166.552 39.213 C 167.214 37.499 168.066 35.394 169.91 31.775 L 179.653 13.212 L 185.637 13.212 L 167.936 45.067 L 162.543 45.067 L 157.01 13.212 L 162.603 13.212 Z M 140.431 45.077 L 146.555 13.222 L 152.018 13.222 L 145.894 45.077 Z M 147.537 4.341 C 147.537 2.236 149.181 0.652 151.156 0.652 C 153.131 0.652 154.384 2.095 154.384 4.07 C 154.313 6.245 152.8 7.759 150.695 7.759 C 148.79 7.759 147.537 6.315 147.537 4.341 Z M 134.116 4.671 L 132.472 13.232 L 140.11 13.232 L 139.258 17.512 L 131.62 17.512 L 128.663 32.978 C 128.332 34.752 128.072 36.396 128.072 38.11 C 128.072 40.015 128.994 41.137 131.099 41.137 C 132.021 41.137 132.943 41.067 133.665 40.937 L 133.404 45.217 C 132.412 45.608 130.768 45.808 129.194 45.808 C 124.323 45.808 122.478 42.851 122.478 39.624 C 122.478 37.779 122.679 35.935 123.14 33.64 L 126.297 17.512 L 121.687 17.512 L 122.539 13.232 L 127.079 13.232 L 128.462 6.055 L 134.126 4.671 Z M 106.601 45.077 C 106.601 43.172 106.932 40.145 107.323 36.847 L 107.192 36.847 C 103.704 43.433 99.364 45.798 94.823 45.798 C 89.23 45.798 85.672 41.328 85.672 35.264 C 85.672 24.207 93.831 12.49 107.714 12.49 C 110.741 12.49 114.099 13.021 116.274 13.743 L 113.046 30.332 C 111.994 35.865 111.533 41.518 111.663 45.077 L 106.591 45.077 Z M 110.159 17.301 C 109.367 17.101 108.185 16.84 106.34 16.84 C 98.111 16.84 91.405 25.46 91.335 34.281 C 91.335 37.84 92.588 41.328 96.798 41.328 C 101.339 41.328 106.731 35.404 108.315 26.914 Z M 78.635 43.232 C 76.269 44.616 72.38 45.728 68.1 45.728 C 59.68 45.728 55.992 40.005 55.992 32.958 C 55.992 23.345 63.098 12.49 73.363 12.49 C 79.417 12.49 82.705 16.108 82.705 20.649 C 82.705 29.009 73.292 31.244 61.515 31.044 C 61.254 32.427 61.444 35.384 62.176 37.098 C 63.429 39.925 65.995 41.378 69.283 41.378 C 73.032 41.378 75.868 40.195 77.843 39.143 L 78.635 43.222 Z M 72.581 16.78 C 67.378 16.78 63.499 21.852 62.186 26.854 C 70.746 26.924 77.452 25.801 77.452 20.87 C 77.452 18.233 75.478 16.79 72.581 16.79 Z M 35.132 45.077 L 39.012 24.548 C 39.803 20.398 40.325 16.189 40.655 13.232 L 45.457 13.232 C 45.196 15.467 44.925 17.702 44.605 20.138 L 44.805 20.138 C 46.85 15.798 50.268 12.5 54.548 12.5 C 55.009 12.5 55.671 12.57 56.062 12.63 L 55.009 18.023 C 54.533 17.933 54.05 17.889 53.566 17.893 C 48.825 17.893 44.615 23.616 43.231 31.054 L 40.595 45.067 L 35.132 45.067 Z M 29.479 43.633 C 26.983 44.756 22.964 45.738 17.962 45.738 C 6.775 45.738 0 38.692 0 27.375 C 0 19.015 3.357 11.056 9.472 5.984 C 14.013 2.105 19.676 0 26.191 0 C 31.123 0 34.611 1.253 35.804 2.175 L 34.03 6.586 C 32.386 5.604 29.228 4.742 25.279 4.742 C 20.668 4.742 15.997 6.516 12.579 9.743 C 8.429 13.622 5.803 19.877 5.803 26.593 C 5.803 34.552 9.422 41.067 19.295 41.067 C 22.653 41.067 26.342 40.406 28.767 39.163 L 29.489 43.633 Z\" fill=\"rgb(229, 229, 229)\" height=\"45.8080000038147px\" id=\"YmSEKm8Di\" transform=\"translate(212.5 12.5)\" width=\"211.9489924316406px\"/><path d=\"M 98.723 46.731 L 107.543 0 L 117.016 0 L 113.457 18.624 L 113.588 18.695 C 116.224 15.738 119.572 13.823 123.852 13.823 C 128.854 13.823 131.951 16.981 131.951 22.514 C 131.951 24.027 131.69 26.463 131.359 28.307 L 127.871 46.731 L 118.399 46.731 L 121.687 29.089 C 121.947 27.836 122.148 26.453 122.148 25.07 C 122.148 22.965 121.226 21.451 118.86 21.451 C 115.572 21.451 112.214 25.471 110.961 31.986 L 108.195 46.731 Z M 94.041 5.534 L 92.327 14.545 L 99.174 14.545 L 97.79 21.722 L 90.944 21.722 L 88.769 32.647 C 88.508 33.961 88.238 35.604 88.238 36.727 C 88.238 38.311 88.899 39.423 90.934 39.423 C 91.786 39.423 92.708 39.423 93.57 39.293 L 92.448 46.731 C 91.265 47.192 88.889 47.452 86.855 47.452 C 81.191 47.452 78.495 44.556 78.495 40.546 C 78.495 38.772 78.695 36.988 79.156 34.562 L 81.652 21.732 L 77.573 21.732 L 78.886 14.555 L 83.036 14.555 L 84.349 7.779 L 94.021 5.544 Z M 49.757 46.731 L 53.376 27.575 C 54.298 22.704 54.689 17.311 55.019 14.545 L 63.249 14.545 C 63.048 16.72 62.858 18.885 62.657 21.13 L 62.858 21.13 C 65.093 16.85 68.712 13.823 73.122 13.823 C 73.714 13.823 74.305 13.823 74.896 13.893 L 73.052 23.105 C 72.591 23.035 72.06 23.035 71.538 23.035 C 65.484 23.035 62.657 28.427 61.465 34.752 L 59.229 46.731 Z M 32.316 46.731 L 38.44 14.545 L 47.913 14.545 L 41.788 46.731 Z M 39.753 5.924 C 39.824 2.697 42.319 0.532 45.216 0.532 C 48.113 0.532 49.958 2.376 49.958 5.203 C 49.958 8.561 47.391 10.535 44.364 10.535 C 41.728 10.535 39.753 8.761 39.753 5.924 Z M 8.43 2.376 L 34.421 2.376 L 32.837 10.475 L 16.388 10.475 L 14.344 20.87 L 29.81 20.87 L 28.226 28.899 L 12.83 28.899 L 9.472 46.731 L 0 46.731 L 8.42 2.376 Z\" fill=\"rgb(250, 250, 250)\" height=\"47.45199991989135px\" id=\"HmOFWl6Ez\" transform=\"translate(74 11)\" width=\"131.95099957275391px\"/></svg>',style:{...style}});});const css=[`.framer-SbMW4 { -webkit-mask: ${mask}; aspect-ratio: 6.235294117647059; display: block; mask: ${mask}; user-select: none; width: 424px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 424\n * @framerIntrinsicHeight 68\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"FCL Logo Light\",\"set\":{\"localId\":\"vectorSet/NIKN5VTX5\",\"id\":\"NIKN5VTX5\",\"moduleId\":\"wPAzs2EkdWGar9p8vPWl\"}}\n */const Icon=withCSS(Component,css,\"framer-SbMW4\");Icon.displayName=\"FCL Logo Light\";export default Icon;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"424\",\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerVector\":\"{\\\"name\\\":\\\"FCL Logo Light\\\",\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/NIKN5VTX5\\\",\\\"id\\\":\\\"NIKN5VTX5\\\",\\\"moduleId\\\":\\\"wPAzs2EkdWGar9p8vPWl\\\"}}\",\"framerIntrinsicHeight\":\"68\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{RenderTarget}from\"framer\";import{useEffect,useState,useMemo}from\"react\";const cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;export function useColors(...colors){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isOptimizing=typeof window===\"undefined\";const darkMode=useDarkMode();const[styleValues,setStyleValues]=useState(()=>extractStyleValues(colors.map(extractCSSVariableName)));useEffect(()=>{if(!isCanvas)return;const div=document.body.querySelector(\"main > div\");if(!div)return;const observer=new MutationObserver(()=>{setStyleValues(extractStyleValues(colors.map(extractCSSVariableName)));});observer.observe(div,{attributes:true,attributeFilter:[\"style\"]});return()=>observer.disconnect();},colors);const variableNames=useMemo(()=>colors.map(extractCSSVariableName),[colors]);if(isOptimizing){return colors.map(color=>extractDefaultValue(color));}let values=[];for(let i=0;i<colors.length;i++){const color=colors[i];// Return original value if not a string\nif(typeof color!==\"string\"){values.push(color);continue;}const variableName=variableNames[i];const colorValues=styleValues[variableName];if(variableName&&colorValues){values.push(darkMode?colorValues.dark||colorValues.light||color:colorValues.light||color);}else{values.push(color);}}return values;}////////////////////\nfunction extractStyleValues(variableNames){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const result={};let lightVars={};let darkVars={};if(isCanvas&&typeof document!==\"undefined\"){const div=document.body.querySelector(\"main > div\");if(div){const style=div.getAttribute(\"style\");if(style){const vars=parseVariables(style);lightVars=vars;darkVars=vars;}}}else{const{light,dark}=extractColorStyles();lightVars=parseVariables(light);darkVars=parseVariables(dark);}// Include all variables\nconst allVarNames=new Set([...Object.keys(lightVars),...Object.keys(darkVars)]);allVarNames.forEach(varName=>{result[varName]={light:lightVars[varName]||\"\",dark:darkVars[varName]||\"\"};});return result;}function extractColorStyles(){let lightSection=\"\";let darkSection=\"\";if(typeof document!==\"undefined\"){const styles=document.head.querySelectorAll(\"style[data-framer-css], style[data-framer-css-ssr], style[data-framer-css-ssr-minified]\");for(const style of styles){const rules=style.sheet?.cssRules;if(!rules)continue;const styleRules=[];for(const rule of rules){if(rule instanceof CSSStyleRule){styleRules.push([rule,false]);}else if(rule instanceof CSSMediaRule){if(rule.conditionText===\"(prefers-color-scheme: dark)\"){for(const subrule of rule.cssRules){if(subrule instanceof CSSStyleRule){styleRules.push([subrule,true]);}}}}}for(const[rule,isDarkMedia]of styleRules){const css=rule.cssText;const hasVars=css.includes(\"--token-\");if(!hasVars)continue;const isDark=isDarkMedia?rule.selectorText===\"body\":rule.selectorText==='body[data-framer-theme=\"dark\"]';const isLight=!isDarkMedia&&rule.selectorText===\"body\";if(!isDark&&!isLight)continue;if(isDark){if(!darkSection){darkSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}else{if(!lightSection){lightSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}if(darkSection&&lightSection)break;}if(darkSection&&lightSection)break;}}return{light:lightSection,dark:darkSection};}export function useDarkMode(){const isPreview=typeof window!==\"undefined\"&&window.location.origin.endsWith(\"framercanvas.com\");const[isDarkMode,setIsDarkMode]=useState(()=>{if(typeof window===\"undefined\"){return false;}else if(isPreview&&typeof document!==\"undefined\"){return document.body.getAttribute(\"data-framer-theme\")===\"dark\";}else{return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;}});useEffect(()=>{if(isPreview){const observer=new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.attributeName===\"data-framer-theme\"){const theme=document.body.getAttribute(\"data-framer-theme\");setIsDarkMode(theme===\"dark\");}});});observer.observe(document.body,{attributes:true,attributeFilter:[\"data-framer-theme\"]});return()=>observer.disconnect();}else{const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");const handleChange=e=>{setIsDarkMode(e.matches);};// Update initial value\nif(mediaQuery.matches!==isDarkMode){setIsDarkMode(mediaQuery.matches);}mediaQuery.addListener(handleChange);return()=>mediaQuery.removeListener(handleChange);}},[isPreview]);return isDarkMode;}function extractCSSVariableName(cssString){if(!cssString||!cssString.startsWith(\"var(\")){return\"\";}const match=cssVariableRegex.exec(cssString);if(match){const variableName=match[1];return variableName||\"\";}return\"\";}function parseVariables(section){const vars={};if(!section)return vars;const declarations=section.split(\";\").filter(Boolean);declarations.forEach(declaration=>{const[name,value]=declaration.split(\":\").map(s=>s.trim());if(name&&value){vars[name]=value;}});return vars;}function extractDefaultValue(cssVar){// Check if the string starts with \"var(\"\nif(!cssVar||!cssVar.startsWith(\"var(\")){return cssVar// Return the original value if it doesn't start with \"var(\"\n;}// Remove \"var(\" from the beginning and \")\" from the end\nconst content=cssVar.slice(4,-1);// Split the content by comma\nconst parts=content.split(\",\");// If there's more than one part, the second part is the default value\nif(parts.length>1){// Trim any whitespace from the default value\nreturn parts.slice(1).join(\",\").trim();}// If there's no comma, return an empty string or null\nreturn\"\";}\nexport const __FramerMetadata__ = {\"exports\":{\"useDarkMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useColors\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useColors.map","function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}export class ShaderMount{constructor(canvas,fragmentShader,uniforms={},webGlContextAttributes,/** The speed of the animation, or 0 to stop it. Supports negative values to play in reverse. */speed=1,/** Pass a seed to offset the starting u_time value and give deterministic results*/seed=0){_define_property(this,\"canvas\",void 0);_define_property(this,\"gl\",void 0);_define_property(this,\"program\",null);_define_property(this,\"uniformLocations\",{});/** The fragment shader that we are using */_define_property(this,\"fragmentShader\",void 0);/** Stores the RAF for the render loop */_define_property(this,\"rafId\",null);/** Time of the last rendered frame */_define_property(this,\"lastFrameTime\",0);/** Total time that we have played any animation, passed as a uniform to the shader for time-based VFX */_define_property(this,\"totalAnimationTime\",0);/** The current speed that we progress through animation time (multiplies by delta time every update). Allows negatives to play in reverse. If set to 0, rAF will stop entirely so static shaders have no recurring performance costs */_define_property(this,\"speed\",1);/** Uniforms that are provided by the user for the specific shader being mounted (not including uniforms that this Mount adds, like time and resolution) */_define_property(this,\"providedUniforms\",void 0);/** Just a sanity check to make sure frames don't run after we're disposed */_define_property(this,\"hasBeenDisposed\",false);/** If the resolution of the canvas has changed since the last render */_define_property(this,\"resolutionChanged\",true);_define_property(this,\"initWebGL\",()=>{const program=createProgram(this.gl,vertexShaderSource,this.fragmentShader);if(!program)return;this.program=program;this.setupPositionAttribute();this.setupUniforms();});_define_property(this,\"setupPositionAttribute\",()=>{const positionAttributeLocation=this.gl.getAttribLocation(this.program,\"a_position\");const positionBuffer=this.gl.createBuffer();this.gl.bindBuffer(this.gl.ARRAY_BUFFER,positionBuffer);const positions=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1];this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array(positions),this.gl.STATIC_DRAW);this.gl.enableVertexAttribArray(positionAttributeLocation);this.gl.vertexAttribPointer(positionAttributeLocation,2,this.gl.FLOAT,false,0,0);});_define_property(this,\"setupUniforms\",()=>{this.uniformLocations={u_time:this.gl.getUniformLocation(this.program,\"u_time\"),u_pixelRatio:this.gl.getUniformLocation(this.program,\"u_pixelRatio\"),u_resolution:this.gl.getUniformLocation(this.program,\"u_resolution\"),...Object.fromEntries(Object.keys(this.providedUniforms).map(key=>[key,this.gl.getUniformLocation(this.program,key)]))};});_define_property(this,\"resizeObserver\",null);_define_property(this,\"setupResizeObserver\",()=>{this.resizeObserver=new ResizeObserver(()=>this.handleResize());this.resizeObserver.observe(this.canvas);this.handleResize();});_define_property(this,\"handleResize\",()=>{const pixelRatio=window.devicePixelRatio;const newWidth=this.canvas.clientWidth*pixelRatio;const newHeight=this.canvas.clientHeight*pixelRatio;if(this.canvas.width!==newWidth||this.canvas.height!==newHeight){this.canvas.width=newWidth;this.canvas.height=newHeight;this.resolutionChanged=true;this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height);this.render(performance.now())// this is necessary to avoid flashes while resizing (the next scheduled render will set uniforms)\n;}});_define_property(this,\"render\",currentTime=>{if(this.hasBeenDisposed)return;// Calculate the delta time\nconst dt=currentTime-this.lastFrameTime;this.lastFrameTime=currentTime;// Increase the total animation time by dt * animationSpeed\nif(this.speed!==0){this.totalAnimationTime+=dt*this.speed;}// Clear the canvas\nthis.gl.clear(this.gl.COLOR_BUFFER_BIT);// Update uniforms\nthis.gl.useProgram(this.program);// Update the time uniform\nthis.gl.uniform1f(this.uniformLocations.u_time,this.totalAnimationTime*.001);// If the resolution has changed, we need to update the uniform\nif(this.resolutionChanged){this.gl.uniform2f(this.uniformLocations.u_resolution,this.gl.canvas.width,this.gl.canvas.height);this.gl.uniform1f(this.uniformLocations.u_pixelRatio,window.devicePixelRatio);this.resolutionChanged=false;}this.gl.drawArrays(this.gl.TRIANGLES,0,6);// Loop if we're animating\nif(this.speed!==0){this.requestRender();}else{this.rafId=null;}});_define_property(this,\"requestRender\",()=>{if(this.rafId!==null){cancelAnimationFrame(this.rafId);}this.rafId=requestAnimationFrame(this.render);});_define_property(this,\"updateProvidedUniforms\",()=>{this.gl.useProgram(this.program);Object.entries(this.providedUniforms).forEach(([key,value])=>{const location=this.uniformLocations[key];if(location){if(Array.isArray(value)){switch(value.length){case 2:this.gl.uniform2fv(location,value);break;case 3:this.gl.uniform3fv(location,value);break;case 4:this.gl.uniform4fv(location,value);break;default:if(value.length===9){this.gl.uniformMatrix3fv(location,false,value);}else if(value.length===16){this.gl.uniformMatrix4fv(location,false,value);}else{console.warn(`Unsupported uniform array length: ${value.length}`);}}}else if(typeof value===\"number\"){this.gl.uniform1f(location,value);}else if(typeof value===\"boolean\"){this.gl.uniform1i(location,value?1:0);}else{console.warn(`Unsupported uniform type for ${key}: ${typeof value}`);}}});});/** Set a seed to get a deterministic result */_define_property(this,\"setSeed\",newSeed=>{const oneFrameAt120Fps=1e3/120;this.totalAnimationTime=newSeed*oneFrameAt120Fps;this.lastFrameTime=performance.now();this.render(performance.now());});/** Set an animation speed (or 0 to stop animation) */_define_property(this,\"setSpeed\",(newSpeed=1)=>{// Set the new animation speed\nthis.speed=newSpeed;if(this.rafId===null&&newSpeed!==0){// Moving from 0 to animating, kick off a new rAF loop\nthis.lastFrameTime=performance.now();this.rafId=requestAnimationFrame(this.render);}if(this.rafId!==null&&newSpeed===0){// Moving from animating to not animating, cancel the rAF loop\ncancelAnimationFrame(this.rafId);this.rafId=null;}});/** Update the uniforms that are provided by the outside shader */_define_property(this,\"setUniforms\",newUniforms=>{this.providedUniforms={...this.providedUniforms,...newUniforms};// If we need to allow users to add uniforms after the shader has been created, we can do that here\n// But right now we're expecting the uniform list to be predictable and static\n// this.setupUniforms();\nthis.updateProvidedUniforms();this.render(performance.now());});/** Dispose of the shader mount, cleaning up all of the WebGL resources */_define_property(this,\"dispose\",()=>{// Immediately mark as disposed to prevent future renders from leaking in\nthis.hasBeenDisposed=true;// Cancel the rAF loop\nif(this.rafId!==null){cancelAnimationFrame(this.rafId);this.rafId=null;}if(this.gl&&this.program){this.gl.deleteProgram(this.program);this.program=null;// Reset the WebGL context\nthis.gl.bindBuffer(this.gl.ARRAY_BUFFER,null);this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,null);this.gl.bindRenderbuffer(this.gl.RENDERBUFFER,null);this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,null);// Clear any errors\nthis.gl.getError();}if(this.resizeObserver){this.resizeObserver.disconnect();this.resizeObserver=null;}this.uniformLocations={};});this.canvas=canvas;this.fragmentShader=fragmentShader;this.providedUniforms=uniforms;// Base our starting animation time on the provided seed value\nthis.totalAnimationTime=seed;const gl=canvas.getContext(\"webgl2\",webGlContextAttributes);if(!gl){throw new Error(\"WebGL not supported\");}this.gl=gl;this.initWebGL();this.setupResizeObserver();// Set the animation speed after everything is ready to go\nthis.setSpeed(speed);// Mark canvas as paper shader mount\nthis.canvas.setAttribute(\"data-paper-shaders\",\"true\");}}/** Vertex shader for the shader mount */const vertexShaderSource=`#version 300 es\nlayout(location = 0) in vec4 a_position;\n\nvoid main() {\n  gl_Position = a_position;\n}\n`;function createShader(gl,type,source){const shader=gl.createShader(type);if(!shader)return null;gl.shaderSource(shader,source);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){console.error(\"An error occurred compiling the shaders: \"+gl.getShaderInfoLog(shader));gl.deleteShader(shader);return null;}return shader;}function createProgram(gl,vertexShaderSource,fragmentShaderSource){const vertexShader=createShader(gl,gl.VERTEX_SHADER,vertexShaderSource);const fragmentShader=createShader(gl,gl.FRAGMENT_SHADER,fragmentShaderSource);if(!vertexShader||!fragmentShader)return null;const program=gl.createProgram();if(!program)return null;gl.attachShader(program,vertexShader);gl.attachShader(program,fragmentShader);gl.linkProgram(program);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){console.error(\"Unable to initialize the shader program: \"+gl.getProgramInfoLog(program));gl.deleteProgram(program);gl.deleteShader(vertexShader);gl.deleteShader(fragmentShader);return null;}// Clean up shaders after successful linking\ngl.detachShader(program,vertexShader);gl.detachShader(program,fragmentShader);gl.deleteShader(vertexShader);gl.deleteShader(fragmentShader);return program;}\nexport const __FramerMetadata__ = {\"exports\":{\"ShaderMount\":{\"type\":\"class\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./shader_mount.map","export const PatternShapes={Checks:0,Stripes:1,Edge:2};/**\n * 3d Perlin noise with exposed parameters\n *\n * Uniforms include:\n * u_scale - the scale applied to user space\n * u_rotation - the rotation applied to user space\n * u_color1 - the first pattern color\n * u_color2 - the second pattern color\n * u_color3 - the third pattern color\n * u_proportion (0 .. 1) - the proportion between colors (on 0.5 colors are equally distributed)\n * u_softness (0 .. 1) - the color blur (0 for pronounced edges, 1 for gradient)\n * u_shape (0 ... 2) - the color pattern to be distorted with noise & swirl\n *    - u_shape = 0 is checks\n *    - u_shape = 1 is stripes\n *    - u_shape = 2 is 2 halves of canvas (mapping the canvas height regardless of resolution)\n * u_shapeScale - the scale of color pattern (appies over the global scaling)\n * u_distortion - the noisy distortion over the UV coordinate (applied before the overlapping swirl)\n * u_swirl - the power of swirly distortion\n * u_swirlIterations - the number of swirl iterations (layering curves effect)\n *\n */export const warpFragmentShader=`#version 300 es\nprecision highp float;\n\nuniform float u_time;\nuniform float u_pixelRatio;\nuniform vec2 u_resolution;\n\nuniform float u_scale;\nuniform float u_rotation;\nuniform vec4 u_color1;\nuniform vec4 u_color2;\nuniform vec4 u_color3;\nuniform float u_proportion;\nuniform float u_softness;\nuniform float u_shape;\nuniform float u_shapeScale;\nuniform float u_distortion;\nuniform float u_swirl;\nuniform float u_swirlIterations;\n\n\nout vec4 fragColor;\n\n#define TWO_PI 6.28318530718\n#define PI 3.14159265358979323846\n\nvec2 rotate(vec2 uv, float th) {\n  return mat2(cos(th), sin(th), -sin(th), cos(th)) * uv;\n}\n\nfloat random(vec2 st) {\n  return fract(sin(dot(st.xy, vec2(12.9898, 78.233))) * 43758.5453123);\n}\nfloat noise(vec2 st) {\n  vec2 i = floor(st);\n  vec2 f = fract(st);\n  float a = random(i);\n  float b = random(i + vec2(1.0, 0.0));\n  float c = random(i + vec2(0.0, 1.0));\n  float d = random(i + vec2(1.0, 1.0));\n\n  // Smoothstep for interpolation\n  vec2 u = f * f * (3.0 - 2.0 * f);\n\n  // Do the interpolation as two nested mix operations\n  // If you try to do this in one big operation, there's enough precision loss to be off by 1px at cell boundaries\n  float x1 = mix(a, b, u.x);\n  float x2 = mix(c, d, u.x);\n  return mix(x1, x2, u.y);\n\n}\n\nvec4 blend_colors(vec4 c1, vec4 c2, vec4 c3, float mixer, float edgesWidth, float edge_blur) {\n    vec3 color1 = c1.rgb * c1.a;\n    vec3 color2 = c2.rgb * c2.a;\n    vec3 color3 = c3.rgb * c3.a;\n\n    float r1 = smoothstep(.0 + .35 * edgesWidth, .7 - .35 * edgesWidth + .5 * edge_blur, mixer);\n    float r2 = smoothstep(.3 + .35 * edgesWidth, 1. - .35 * edgesWidth + edge_blur, mixer);\n\n    vec3 blended_color_2 = mix(color1, color2, r1);\n    float blended_opacity_2 = mix(c1.a, c2.a, r1);\n\n    vec3 c = mix(blended_color_2, color3, r2);\n    float o = mix(blended_opacity_2, c3.a, r2);\n    return vec4(c, o);\n}\n\nvoid main() {\n    vec2 uv = gl_FragCoord.xy / u_resolution.xy;\n    vec2 uv_original = uv;\n\n    float t = .5 * u_time;\n\n    float noise_scale = .0005 + .006 * u_scale;\n\n    uv -= .5;\n    uv *= (noise_scale * u_resolution);\n    uv = rotate(uv, u_rotation * .5 * PI);\n    uv /= u_pixelRatio;\n    uv += .5;\n\n    float n1 = noise(uv * 1. + t);\n    float n2 = noise(uv * 2. - t);\n    float angle = n1 * TWO_PI;\n    uv.x += 4. * u_distortion * n2 * cos(angle);\n    uv.y += 4. * u_distortion * n2 * sin(angle);\n\n    float iterations_number = ceil(clamp(u_swirlIterations, 1., 30.));\n    for (float i = 1.; i <= iterations_number; i++) {\n        uv.x += clamp(u_swirl, 0., 2.) / i * cos(t + i * 1.5 * uv.y);\n        uv.y += clamp(u_swirl, 0., 2.) / i * cos(t + i * 1. * uv.x);\n    }\n\n    float proportion = clamp(u_proportion, 0., 1.);\n\n    float shape = 0.;\n    float mixer = 0.;\n    if (u_shape < .5) {\n      vec2 checks_shape_uv = uv * (.5 + 3.5 * u_shapeScale);\n      shape = .5 + .5 * sin(checks_shape_uv.x) * cos(checks_shape_uv.y);\n      mixer = shape + .48 * sign(proportion - .5) * pow(abs(proportion - .5), .5);\n    } else if (u_shape < 1.5) {\n      vec2 stripes_shape_uv = uv * (.25 + 3. * u_shapeScale);\n      float f = fract(stripes_shape_uv.y);\n      shape = smoothstep(.0, .55, f) * smoothstep(1., .45, f);\n      mixer = shape + .48 * sign(proportion - .5) * pow(abs(proportion - .5), .5);\n    } else {\n      float sh = 1. - uv.y;\n      sh -= .5;\n      sh /= (noise_scale * u_resolution.y);\n      sh += .5;\n      float shape_scaling = .2 * (1. - u_shapeScale);\n      shape = smoothstep(.45 - shape_scaling, .55 + shape_scaling, sh + .3 * (proportion - .5));\n      mixer = shape;\n    }\n\n    vec4 color_mix = blend_colors(u_color1, u_color2, u_color3, mixer, 1. - clamp(u_softness, 0., 1.), .01 + .01 * u_scale);\n\n    fragColor = vec4(color_mix.rgb, color_mix.a);\n}\n`;\nexport const __FramerMetadata__ = {\"exports\":{\"WarpUniforms\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"warpFragmentShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PatternShapes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PatternShape\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./warp.map","/**  Convert color string from HSL, RGB, or hex to 0-to-1-range-RGBA array */export function getShaderColorFromString(colorString,fallback=[0,0,0,1]){// If the color string is already an array of 3 or 4 numbers, return it (with alpha=1 if needed)\nif(Array.isArray(colorString)){if(colorString.length===4)return colorString;if(colorString.length===3)return[...colorString,1];return getShaderColorFromString(fallback);}// If the color string is not a string, return the fallback\nif(typeof colorString!==\"string\"){return getShaderColorFromString(fallback);}let r,g,b,a=1;if(colorString.startsWith(\"#\")){[r,g,b,a]=hexToRgba(colorString);}else if(colorString.startsWith(\"rgb\")){[r,g,b,a]=parseRgba(colorString);}else if(colorString.startsWith(\"hsl\")){[r,g,b,a]=hslaToRgba(parseHsla(colorString));}else{console.error(\"Unsupported color format\",colorString);return getShaderColorFromString(fallback);}return[clamp(r,0,1),clamp(g,0,1),clamp(b,0,1),clamp(a,0,1)];}/** Convert hex to RGBA (0 to 1 range) */function hexToRgba(hex){// Remove # if present\nhex=hex.replace(/^#/,\"\");// Expand three-letter hex to six-letter\nif(hex.length===3){hex=hex.split(\"\").map(char=>char+char).join(\"\");}// Expand six-letter hex to eight-letter (add full opacity if no alpha)\nif(hex.length===6){hex=hex+\"ff\";}// Parse the components\nconst r=parseInt(hex.slice(0,2),16)/255;const g=parseInt(hex.slice(2,4),16)/255;const b=parseInt(hex.slice(4,6),16)/255;const a=parseInt(hex.slice(6,8),16)/255;return[r,g,b,a];}/** Parse RGBA string to RGBA (0 to 1 range) */function parseRgba(rgba){// Match both rgb and rgba patterns\nconst match=rgba.match(/^rgba?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([0-9.]+))?\\s*\\)$/i);if(!match)return[0,0,0,1];return[parseInt(match[1]??\"0\")/255,parseInt(match[2]??\"0\")/255,parseInt(match[3]??\"0\")/255,match[4]===undefined?1:parseFloat(match[4])];}/** Parse HSLA string */function parseHsla(hsla){const match=hsla.match(/^hsla?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(?:,\\s*([0-9.]+))?\\s*\\)$/i);if(!match)return[0,0,0,1];return[parseInt(match[1]??\"0\"),parseInt(match[2]??\"0\"),parseInt(match[3]??\"0\"),match[4]===undefined?1:parseFloat(match[4])];}/** Convert HSLA to RGBA (0 to 1 range) */function hslaToRgba(hsla){const[h,s,l,a]=hsla;const hDecimal=h/360;const sDecimal=s/100;const lDecimal=l/100;let r,g,b;if(s===0){r=g=b=lDecimal// achromatic\n;}else{const hue2rgb=(p,q,t)=>{if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*(2/3-t)*6;return p;};const q=lDecimal<.5?lDecimal*(1+sDecimal):lDecimal+sDecimal-lDecimal*sDecimal;const p=2*lDecimal-q;r=hue2rgb(p,q,hDecimal+1/3);g=hue2rgb(p,q,hDecimal);b=hue2rgb(p,q,hDecimal-1/3);}return[r,g,b,a];}export const clamp=(n,min,max)=>Math.min(Math.max(n,min),max);\nexport const __FramerMetadata__ = {\"exports\":{\"clamp\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getShaderColorFromString\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./get_shader_color_from_string.map","/** The core Shader Mounting class. Pass it a canvas element and a fragment shader to get started. */import{jsx as _jsx}from\"react/jsx-runtime\";export{ShaderMount}from\"https://framerusercontent.com/modules/NLpw4UPElXpirDfZ8gK3/pnnblFdmCm84r7TGjG3U/shader_mount.js\";// ----- Warping Distortion ----- //\n/** Warp: distortion + swirl + underlying shapes */export{warpFragmentShader,PatternShapes}from\"https://framerusercontent.com/modules/zIDOp1iaNFIXSAIx7ljo/VX06XYWdAlD95B9usTKm/warp.js\";// ----- Uniform conversion utils ----- //\nexport{getShaderColorFromString}from\"https://framerusercontent.com/modules/r591zLdRh7n2CKaaHRG7/PCYxubr6wk68eTxKLhEH/get_shader_color_from_string.js\";export default function A(props){return /*#__PURE__*/_jsx(\"div\",{});}\nexport const __FramerMetadata__ = {\"exports\":{\"PatternShapes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PatternShape\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ShaderMount\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getShaderColorFromString\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"A\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"warpFragmentShader\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"WarpUniforms\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./index.map","/*\n * index\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/q3nWgGXMhG0Ina6vgRVz/PVl4bshKvCOZO36e3vK1/index.js\"\nexport { default } from \"https://framerusercontent.com/modules/q3nWgGXMhG0Ina6vgRVz/PVl4bshKvCOZO36e3vK1/index.js\"\n","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,useIsStaticRenderer}from\"framer\";import{useEffect,useRef,useMemo}from\"react\";import{useColors}from\"https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js\";import{getShaderColorFromString,warpFragmentShader,PatternShapes,ShaderMount as ShaderMountVanilla}from\"https://framer.com/m/index-uMsj.js@PVl4bshKvCOZO36e3vK1\";import{cubicBezier,useInView}from\"framer-motion\";const speedEase=cubicBezier(.65,0,.88,.77);const templates={Prism:{color1:\"#050505\",color2:\"#66B3FF\",color3:\"#FFFFFF\",rotation:-50,proportion:1,scale:.01,speed:30,distortion:0,swirl:50,swirlIterations:16,softness:47,offset:-299,shape:\"Checks\",shapeSize:45},Lava:{color1:\"#FF9F21\",color2:\"#FF0303\",color3:\"#000000\",rotation:114,proportion:100,scale:.52,speed:30,distortion:7,swirl:18,swirlIterations:20,softness:100,offset:717,shape:\"Edge\",shapeSize:12},Plasma:{color1:\"#B566FF\",color2:\"#000000\",color3:\"#000000\",rotation:0,proportion:63,scale:.75,speed:30,distortion:5,swirl:61,swirlIterations:5,softness:100,offset:-168,shape:\"Checks\",shapeSize:28},Pulse:{color1:\"#66FF85\",color2:\"#000000\",color3:\"#000000\",rotation:-167,proportion:92,scale:0,speed:20,distortion:54,swirl:75,swirlIterations:3,softness:28,offset:-813,shape:\"Checks\",shapeSize:79},Vortex:{color1:\"#000000\",color2:\"#FFFFFF\",color3:\"#000000\",rotation:50,proportion:41,scale:.4,speed:20,distortion:0,swirl:100,swirlIterations:3,softness:5,offset:-744,shape:\"Stripes\",shapeSize:80},Mist:{color1:\"#050505\",color2:\"#FF66B8\",color3:\"#050505\",rotation:0,proportion:33,scale:.48,speed:39,distortion:4,swirl:65,swirlIterations:5,softness:100,offset:-235,shape:\"Edge\",shapeSize:48}};/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n */export default function AnimatedGradientBackground(props){const isStaticRenderer=useIsStaticRenderer();const isCanvas=RenderTarget.current()===RenderTarget.canvas;const useCustomColors=props.preset===\"custom\"||props.colorMode===\"custom\";const values=props.preset===\"custom\"?props:templates[props.preset]||Object.values(templates)[0];const[color1,color2,color3]=useColors(props.color1,props.color2,props.color3);const ref=useRef(null);const isInView=useInView(ref,{once:false,amount:.1});const currentSpeed=useMemo(()=>{if(isCanvas&&props.preview)return speedEase(props.speed/100)*5;if(!isStaticRenderer&&isInView)return speedEase(props.speed/100)*5;return 0;},[isInView,isStaticRenderer,props.speed,props.preview,isCanvas]);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{borderRadius:props.radius,overflow:\"hidden\",position:\"relative\",...props.style},children:[/*#__PURE__*/_jsx(Warp,{color1:useCustomColors?color1:values.color1,color2:useCustomColors?color2:values.color2,color3:useCustomColors?color3:values.color3,scale:values.scale,proportion:values.proportion/100,distortion:values.distortion/50,swirl:values.swirl/100,swirlIterations:values.swirl===0?0:values.swirlIterations,rotation:values.rotation*Math.PI/180,speed:currentSpeed,seed:values.offset*10,shape:PatternShapes[values.shape],shapeScale:values.shapeSize/100,softness:values.softness/100,style:props.style}),props.noise&&props.noise.opacity>0&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,backgroundImage:`url(\"https://framerusercontent.com/images/g0QcWrxr87K0ufOxIUFBakwYA8.png\")`,backgroundSize:props.noise.scale*200,backgroundRepeat:\"repeat\",opacity:props.noise.opacity/2}})]});}addPropertyControls(AnimatedGradientBackground,{preset:{type:ControlType.Enum,defaultValue:Object.keys(templates)[0],options:[...Object.keys(templates),\"custom\"],optionTitles:[...Object.keys(templates),\"Custom\"]},preview:{type:ControlType.Boolean,defaultValue:false},colorMode:{type:ControlType.Enum,defaultValue:\"preset\",options:[\"preset\",\"custom\"],optionTitles:[\"Preset\",\"Custom\"],displaySegmentedControl:true,title:\"Colors\",hidden:props=>props.preset===\"custom\"},color1:{type:ControlType.Color,defaultValue:\"#262626\",hidden:props=>props.preset!==\"custom\"&&props.colorMode===\"preset\"},color2:{type:ControlType.Color,defaultValue:\"#75c1f0\",hidden:props=>props.preset!==\"custom\"&&props.colorMode===\"preset\"},color3:{type:ControlType.Color,defaultValue:\"#ffffff\",hidden:props=>props.preset!==\"custom\"&&props.colorMode===\"preset\"},noise:{type:ControlType.Object,optional:true,icon:\"effect\",controls:{opacity:{type:ControlType.Number,defaultValue:.5,min:0,max:1,step:.01},scale:{type:ControlType.Number,defaultValue:1,min:.2,max:2,step:.1}}},rotation:{type:ControlType.Number,defaultValue:0,min:-360,max:360,step:1,unit:\"\\xb0\",hidden:props=>props.preset!==\"custom\"},proportion:{type:ControlType.Number,defaultValue:35,min:0,max:100,step:1,hidden:props=>props.preset!==\"custom\"},scale:{type:ControlType.Number,defaultValue:1,min:0,max:10,step:.01,hidden:props=>props.preset!==\"custom\"},speed:{type:ControlType.Number,defaultValue:25,step:1,min:0,max:100},distortion:{type:ControlType.Number,defaultValue:12,min:0,max:100,step:1,hidden:props=>props.preset!==\"custom\"},swirl:{type:ControlType.Number,defaultValue:80,min:0,max:100,step:1,hidden:props=>props.preset!==\"custom\"},swirlIterations:{type:ControlType.Number,defaultValue:10,min:0,max:20,step:1,title:\"Iterations\",hidden:props=>props.swirl===0||props.preset!==\"custom\"},softness:{type:ControlType.Number,defaultValue:100,min:0,max:100,step:1,hidden:props=>props.preset!==\"custom\"},offset:{type:ControlType.Number,defaultValue:0,min:-1e3,max:1e3,step:1,hidden:props=>props.preset!==\"custom\"},shape:{type:ControlType.Enum,defaultValue:\"Checks\",options:Object.keys(PatternShapes),hidden:props=>props.preset!==\"custom\"},shapeSize:{type:ControlType.Number,defaultValue:10,min:0,max:100,step:1,hidden:props=>props.preset!==\"custom\"},radius:{type:ControlType.BorderRadius,defaultValue:\"0px\"}});//////////////////////////////\nconst defaultPreset={name:\"Default\",params:{scale:1,rotation:0,speed:20,seed:0,color1:\"hsla(0, 0%, 15%, 1)\",color2:\"hsla(203, 80%, 70%, 1)\",color3:\"hsla(0, 0%, 100%, 1)\",proportion:.35,softness:1,distortion:.25,swirl:.8,swirlIterations:10,shapeScale:.1,shape:PatternShapes.Checks}};// Due to Leva controls limitation:\n// 1) keep default colors in HSLA format to keep alpha channel\n// 2) don't use decimal values on HSL values (to avoid button highlight bug)\nconst Warp=props=>{const uniforms=useMemo(()=>{return{u_scale:props.scale??defaultPreset.params.scale,u_rotation:props.rotation??defaultPreset.params.rotation,u_color1:getShaderColorFromString(props.color1,defaultPreset.params.color1),u_color2:getShaderColorFromString(props.color2,defaultPreset.params.color2),u_color3:getShaderColorFromString(props.color3,defaultPreset.params.color2),u_proportion:props.proportion??defaultPreset.params.proportion,u_softness:props.softness??defaultPreset.params.softness,u_distortion:props.distortion??defaultPreset.params.distortion,u_swirl:props.swirl??defaultPreset.params.swirl,u_swirlIterations:props.swirlIterations??defaultPreset.params.swirlIterations,u_shapeScale:props.shapeScale??defaultPreset.params.shapeScale,u_shape:props.shape??defaultPreset.params.shape};},[props.scale,props.rotation,props.color1,props.color2,props.color3,props.proportion,props.softness,props.distortion,props.swirl,props.swirlIterations,props.shapeScale,props.shape,props.speed]);return /*#__PURE__*/_jsx(ShaderMount,{...props,fragmentShader:warpFragmentShader,uniforms:uniforms});};const ShaderMount=({ref,fragmentShader,style,uniforms={},webGlContextAttributes,speed=1,seed=0})=>{const canvasRef=ref??useRef(null);const shaderMountRef=useRef(null);useEffect(()=>{if(canvasRef.current){shaderMountRef.current=new ShaderMountVanilla(canvasRef.current,fragmentShader,uniforms,webGlContextAttributes,speed,seed);}return()=>{shaderMountRef.current?.dispose();};},[fragmentShader,webGlContextAttributes]);useEffect(()=>{shaderMountRef.current?.setUniforms(uniforms);},[uniforms]);useEffect(()=>{shaderMountRef.current?.setSpeed(speed);},[speed]);useEffect(()=>{shaderMountRef.current?.setSeed(seed);},[seed]);return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:style});};function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}AnimatedGradientBackground.displayName=\"Animated Gradient Background\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AnimatedGradientBackground\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"400\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerDisableUnlink\":\"*\",\"framerIntrinsicHeight\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedLiquidBackground_Prod.map","// Generated by Framer (904da2c)\nexport default function metadata(params,activeLocale){return{breakpoints:[{hash:\"72rtr7\",mediaQuery:\"(min-width: 1440px)\"},{hash:\"12hu2gx\",mediaQuery:\"(min-width: 810px) and (max-width: 1439.98px)\"},{hash:\"d75sn9\",mediaQuery:\"(max-width: 809.98px)\"}],description:\"Web development agency specialising in the design and development pf Framer and Webflow websites, Shopify and Shopify Plus stores that elevate your brand. Shopify Select Partner.\",elements:{},framerSearch:{index:true},robots:\"max-image-preview:large\",serializationId:\"framer-64Qz9\",title:\"Welcome to Firth Creative\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (9eb3b99)\nexport default function metadata(params,activeLocale){return{breakpoints:[{hash:\"1sfatbf\",mediaQuery:\"(min-width: 1440px)\"},{hash:\"1ichvav\",mediaQuery:\"(min-width: 810px) and (max-width: 1439.98px)\"},{hash:\"kclnm6\",mediaQuery:\"(max-width: 809.98px)\"}],description:\"You've found you're way to a domain that has been secured for a future client or studio project. Should you have an enquiry, please get in touch.\",elements:{},framerSearch:{index:false},robots:\"noindex\",serializationId:\"framer-F8yIk\",title:\"Reserved Domain // Firth Creative\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}