{"version":3,"file":"shared-lib.ILUxXMyl.mjs","names":["fonts","css","className","useRef"],"sources":["https:/framerusercontent.com/modules/LvUvR7Mugdlo39FJt1bC/LXYKAc2NutY928aFp5c0/FulfSvQVx.js","https:/framerusercontent.com/modules/7oK1MCPqZ8NAzkZduEap/3SettsBYwT4YRhhcwsDI/VxN9Xhzib.js","https:/framerusercontent.com/modules/es4nMpxDh5aly3YPtzbx/AH65PzvTOgEQ4eosocuy/WaveBackground.js"],"sourcesContent":["// Generated by Framer (835d061)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"FS;General Sans-regular\",\"FS;General Sans-bold\",\"FS;General Sans-bold italic\",\"FS;General Sans-italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"General Sans\",openType:true,source:\"fontshare\",style:\"normal\",uiFamilyName:\"General Sans\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/MFQT7HFGCR2L5ULQTW6YXYZXXHMPKLJ3/YWQ244D6TACUX5JBKATPOW5I5MGJ3G73/7YY3ZAAE3TRV2LANYOLXNHTPHLXVWTKH.woff2\",weight:\"400\"},{cssFamilyName:\"General Sans\",openType:true,source:\"fontshare\",style:\"normal\",uiFamilyName:\"General Sans\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/KWXO5X3YW4X7OLUMPO4X24HQJGJU7E2Q/VOWUQZS3YLP66ZHPTXAFSH6YACY4WJHT/NIQ54PVBBIWVK3PFSOIOUJSXIJ5WTNDP.woff2\",weight:\"700\"},{cssFamilyName:\"General Sans\",openType:true,source:\"fontshare\",style:\"italic\",uiFamilyName:\"General Sans\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/IZAMKIKJNFHYAA4XTXOGUSQUJWNXQHPE/2S5HU7TKNAV6MHTRNU2NPZD7U4OT6VKE/HCZ5OQRTYQOAVSHRS6UOFWUZ5CGI6JRO.woff2\",weight:\"700\"},{cssFamilyName:\"General Sans\",openType:true,source:\"fontshare\",style:\"italic\",uiFamilyName:\"General Sans\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/GQOITZI54NH6HDBP26XAMQYTXB4JQ3NQ/VY7SXNCPHYFLQTOFY72GM4OZTBH62U2D/AHPLTG2YASI4OYLGJV4CF3P25VBHPK5X.woff2\",weight:\"400\"}]}];export const css=['.framer-Z1lXn .framer-styles-preset-ssnmbw:not(.rich-text-wrapper), .framer-Z1lXn .framer-styles-preset-ssnmbw.rich-text-wrapper p { --framer-font-family: \"General Sans\", \"General Sans Placeholder\", sans-serif; --framer-font-family-bold: \"General Sans\", \"General Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"General Sans\", \"General Sans Placeholder\", sans-serif; --framer-font-family-italic: \"General Sans\", \"General Sans Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 17px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: 0px; --framer-line-height: 1.6em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-4de84b72-c14e-4cae-9045-5ed148a0abdc); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-Z1lXn\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (835d061)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"FS;General Sans-semibold\",\"FS;General Sans-bold\",\"FS;General Sans-bold italic\",\"FS;General Sans-semibold italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"General Sans\",openType:true,source:\"fontshare\",style:\"normal\",uiFamilyName:\"General Sans\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/K46YRH762FH3QJ25IQM3VAXAKCHEXXW4/ISLWQPUZHZF33LRIOTBMFOJL57GBGQ4B/3ZLMEXZEQPLTEPMHTQDAUXP5ZZXCZAEN.woff2\",weight:\"600\"},{cssFamilyName:\"General Sans\",openType:true,source:\"fontshare\",style:\"normal\",uiFamilyName:\"General Sans\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/KWXO5X3YW4X7OLUMPO4X24HQJGJU7E2Q/VOWUQZS3YLP66ZHPTXAFSH6YACY4WJHT/NIQ54PVBBIWVK3PFSOIOUJSXIJ5WTNDP.woff2\",weight:\"700\"},{cssFamilyName:\"General Sans\",openType:true,source:\"fontshare\",style:\"italic\",uiFamilyName:\"General Sans\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/IZAMKIKJNFHYAA4XTXOGUSQUJWNXQHPE/2S5HU7TKNAV6MHTRNU2NPZD7U4OT6VKE/HCZ5OQRTYQOAVSHRS6UOFWUZ5CGI6JRO.woff2\",weight:\"700\"},{cssFamilyName:\"General Sans\",openType:true,source:\"fontshare\",style:\"italic\",uiFamilyName:\"General Sans\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/T2VB54RK54AYH45QBSFO6FWJJBOGDZQS/WZUJLZL2KK72TQFDHQ6EV4KREZ7WEUL2/6FVUUVSLJPCCVHIJND4LQZIT4MFZBXYJ.woff2\",weight:\"600\"}]}];export const css=['.framer-zCchx .framer-styles-preset-87aisi:not(.rich-text-wrapper), .framer-zCchx .framer-styles-preset-87aisi.rich-text-wrapper p { --framer-font-family: \"General Sans\", \"General Sans Placeholder\", sans-serif; --framer-font-family-bold: \"General Sans\", \"General Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"General Sans\", \"General Sans Placeholder\", sans-serif; --framer-font-family-italic: \"General Sans\", \"General Sans Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: 12px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 600; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 600; --framer-letter-spacing: 1.4px; --framer-line-height: 1.2em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-08e67e07-150d-4c77-8a14-49d2be2c65cc); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: uppercase; }'];export const className=\"framer-zCchx\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// #01 Smooth Flow — five ribbons, all resting in the vertical middle band of\n// the viewport (roughly 25%-72% height) so the composition's richest detail\n// sits in the center, as a genuine horizontal flow rather than edge-to-edge\n// sweep. Two dominant ribbons (close in yOff, different frequency/phase)\n// naturally cross and weave across one another; three quieter, more\n// translucent ribbons sit behind them for depth.\nconst BASE_RIBBONS=[{// Hero — brightest core.\nyOff:.42,amp:.055,freq:.55,phase:0,baseSpeed:.05,thickness:78,lineCount:40,mouseStrength:1,mouseEase:.022,colorFrom:[0,212,255],colorTo:[108,92,231],coreColor:\"225,250,255\",coreAlpha:.88,glowAlpha:.07,dominant:true},{// Dominant — crosses the hero strand.\nyOff:.49,amp:.05,freq:.7,phase:2.3,baseSpeed:-.043,thickness:68,lineCount:34,mouseStrength:.8,mouseEase:.018,colorFrom:[76,112,255],colorTo:[0,212,255],coreColor:\"200,230,255\",coreAlpha:.78,glowAlpha:.058,dominant:true},{// Secondary, translucent — upper.\nyOff:.26,amp:.035,freq:.6,phase:1,baseSpeed:.034,thickness:40,lineCount:18,mouseStrength:.5,mouseEase:.016,colorFrom:[108,92,231],colorTo:[0,212,255],coreColor:\"205,195,255\",coreAlpha:.32,glowAlpha:.03,dominant:false},{// Secondary, translucent — lower-mid.\nyOff:.62,amp:.032,freq:.65,phase:3.6,baseSpeed:.03,thickness:36,lineCount:16,mouseStrength:.5,mouseEase:.016,colorFrom:[0,212,255],colorTo:[76,112,255],coreColor:\"190,230,255\",coreAlpha:.3,glowAlpha:.026,dominant:false},{// Secondary, translucent — lower.\nyOff:.72,amp:.026,freq:.85,phase:5,baseSpeed:-.024,thickness:30,lineCount:14,mouseStrength:.4,mouseEase:.014,colorFrom:[108,92,231],colorTo:[76,112,255],coreColor:\"205,195,255\",coreAlpha:.28,glowAlpha:.022,dominant:false}];// Global cap on cursor-parallax strength — kept extremely subtle (a slight\n// drift, never a chase) so the wave never looks unstable.\nconst PARALLAX_SCALE=.05;// Global cap on scroll-linked speed/deform influence, so scrolling never\n// visibly displaces or speeds up the wave.\nconst SCROLL_VELOCITY_GAIN=.004;const SCROLL_VELOCITY_CLAMP=.4;// Flow-speed multiplier on top of the base ribbon speeds above (~1.25-1.4x\n// the original baseline). Amplitude is untouched — only the rate of flow\n// changes, and only through the curves' own phase progression.\nconst SPEED_MULT_DESKTOP=1.32;const SPEED_MULT_MOBILE=1.15;export default function WaveBackground(props){const intensity=props.intensity??1;const canvasRef=useRef(null);useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const motionQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");let reducedMotion=motionQuery.matches;// Desktop-only cursor interaction: touch/coarse-pointer devices never\n// pay for (or receive) the parallax effect.\nconst canHover=window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;let width=0;let height=0;// Mobile/tablet screens rarely benefit from >1.5x device pixels for a soft,\n// blurred background — capping dpr there cuts canvas fill-rate (and every\n// shadowBlur pass below) substantially without a visible quality loss.\nconst isNarrow=window.innerWidth<=809;let dpr=Math.min(window.devicePixelRatio||1,isNarrow?1.5:2);let elapsed=0;const applyCanvasSize=()=>{width=Math.max(1,window.innerWidth);height=Math.max(1,window.innerHeight);canvas.width=width*dpr;canvas.height=height*dpr;ctx.setTransform(dpr,0,0,dpr,0,0);};applyCanvasSize();// Debounced resize: avoids reallocating/clearing the canvas on every\n// intermediate pixel during a window drag or mobile orientation change.\nlet resizeTimer=null;const resize=()=>{if(resizeTimer)clearTimeout(resizeTimer);resizeTimer=setTimeout(()=>{dpr=Math.min(window.devicePixelRatio||1,window.innerWidth<=809?1.5:2);applyCanvasSize();},150);};window.addEventListener(\"resize\",resize);const scale=Math.max(.6,Math.min(1,width/1440));// Curve resolution for each ribbon's main silhouette (used for the\n// glow + bright core passes, where smoothness matters most).\nconst detail=isNarrow?.6:1;const steps=isNarrow?40:64;// Fine hatch lines sample at roughly a third of that resolution —\n// invisible to the eye at this line weight, but it's what pays for a\n// dense line count without a net performance cost: more lines, each\n// individually cheaper.\nconst fineSteps=Math.max(14,Math.round(steps/3));const speedMult=isNarrow?SPEED_MULT_MOBILE:SPEED_MULT_DESKTOP;const ribbons=BASE_RIBBONS.map(base=>({...base,baseSpeed:base.baseSpeed*speedMult,thickness:base.thickness*scale,lineCount:Math.max(4,Math.round(base.lineCount*detail))}));// Starfield particles embedded along the two dominant ribbons (a\n// small vertical jitter off the ribbon's own curve). Extremely\n// sparse and secondary — atmosphere, never the main visual.\nconst particleCount=isNarrow?6:12;const particles=Array.from({length:particleCount},()=>({ribbonIdx:Math.random()<.55?0:1,x:Math.random(),bandOffset:(Math.random()-.5)*.04,r:Math.random()*1.1+.35,speed:Math.random()*.3+.15,phase:Math.random()*Math.PI*2}));// Scroll reactivity: velocity nudges wave flow speed & deformation very\n// slightly, decaying back to ambient. Clamped tightly so scrolling never\n// visibly displaces or speeds up the wave.\nlet lastScrollY=window.scrollY;let scrollVelocity=0;const onScroll=()=>{const y=window.scrollY;scrollVelocity+=(y-lastScrollY)*SCROLL_VELOCITY_GAIN;lastScrollY=y;};window.addEventListener(\"scroll\",onScroll,{passive:true});// Mouse reactivity: each ribbon eases toward the cursor at its own rate/strength.\n// Only registered on devices that actually hover with a precise pointer.\nlet targetMouseX=.5;let targetMouseY=.5;let mouseActive=false;const ribbonMouse=ribbons.map(()=>({x:.5,y:.5}));const onMouseMove=e=>{targetMouseX=e.clientX/Math.max(1,window.innerWidth);targetMouseY=e.clientY/Math.max(1,window.innerHeight);mouseActive=true;};const onMouseLeave=()=>{mouseActive=false;};if(canHover){window.addEventListener(\"mousemove\",onMouseMove,{passive:true});window.addEventListener(\"mouseout\",onMouseLeave,{passive:true});}const mix=(a,b,t)=>[a[0]+(b[0]-a[0])*t,a[1]+(b[1]-a[1])*t,a[2]+(b[2]-a[2])*t];// Baseline + oscillation. The baseline (`height * ribbon.yOff`) and\n// amplitude never depend on `nx` — this is the key structural change\n// from the previous version: no positional sweep, so the curve is a\n// genuine constant-height horizontal flow, not a diagonal.\nconst curveY=(ribbon,nx,t,speed,wobble,deform)=>{const baseline=height*ribbon.yOff;const amp=ribbon.amp*(1+wobble);return baseline+Math.sin(nx*Math.PI*ribbon.freq+ribbon.phase+t*speed)*height*amp+Math.sin(nx*Math.PI*ribbon.freq*2.2+ribbon.phase*1.3+t*speed*1.6)*height*amp*(.22+deform*.18)+Math.sin(nx*Math.PI*ribbon.freq*.5+t*speed*.55)*height*amp*.35;};const drawRibbon=(ribbon,index,t,speedMultiplier,deform)=>{const speed=ribbon.baseSpeed*speedMultiplier;// Slow, stable amplitude breathing — never enough to look unstable.\nconst wobble=Math.sin(t*.018+index*1.3)*.08;const rm=ribbonMouse[index];const bendStrength=(mouseActive?1:0)*ribbon.mouseStrength*PARALLAX_SCALE;// Main silhouette, full resolution — used for the glow band and\n// the bright core line, where smoothness reads most.\nconst points=[];for(let i=0;i<=steps;i++){const nx=i/steps;const cursorTerm=Math.exp(-Math.pow((nx-rm.x)*2.4,2))*(rm.y-.5)*height*.05*bendStrength;points.push(curveY(ribbon,nx,t,speed,wobble,deform)+cursorTerm);}// Soft ambient glow behind the ribbon, even across the width —\n// the wave's own shape (not the glow gradient) carries the\n// \"richest in the center\" character now.\nconst glowGrad=ctx.createLinearGradient(0,0,width,0);const cFrom=ribbon.colorFrom;const cTo=ribbon.colorTo;const cMid=mix(cFrom,cTo,.5);glowGrad.addColorStop(0,`rgba(${cFrom[0]},${cFrom[1]},${cFrom[2]},${ribbon.glowAlpha*.6})`);glowGrad.addColorStop(.5,`rgba(${cMid[0]},${cMid[1]},${cMid[2]},${ribbon.glowAlpha})`);glowGrad.addColorStop(1,`rgba(${cTo[0]},${cTo[1]},${cTo[2]},${ribbon.glowAlpha*.7})`);ctx.beginPath();points.forEach((py,i)=>{const px=i/steps*width;if(i===0)ctx.moveTo(px,py);else ctx.lineTo(px,py);});ctx.strokeStyle=glowGrad;ctx.lineWidth=ribbon.thickness*1.7;ctx.lineCap=\"round\";ctx.shadowColor=`rgba(${cFrom[0]},${cFrom[1]},${cFrom[2]},0.28)`;ctx.shadowBlur=24*scale;ctx.stroke();ctx.shadowBlur=0;// Dense hatch of fine parallel lines forming the ribbon body — the\n// \"flowing digital fabric\" texture. Sampled at roughly a third of\n// the main curve's resolution (imperceptible at this weight) so a\n// much higher line count costs about the same as a sparse one.\nconst half=ribbon.lineCount/2;for(let j=0;j<ribbon.lineCount;j++){const spread=(j-half)/half;const falloff=Math.max(0,1-Math.abs(spread)*.9);const finePhase=j*.35;const tone=mix(cFrom,cTo,j/Math.max(1,ribbon.lineCount-1));const offset=spread*(ribbon.thickness/2);ctx.beginPath();for(let i=0;i<=fineSteps;i++){const nx=i/fineSteps;const px=nx*width;const baseY=curveY(ribbon,nx,t,speed,wobble,deform);const microWave=Math.sin(nx*Math.PI*ribbon.freq*3+finePhase+t*speed*2)*2*scale;const py=baseY+offset+microWave;if(i===0)ctx.moveTo(px,py);else ctx.lineTo(px,py);}ctx.strokeStyle=`rgba(${tone[0]},${tone[1]},${tone[2]},${(ribbon.dominant?.16:.11)*falloff})`;ctx.lineWidth=ribbon.dominant?1:.75;ctx.stroke();}// Bright luminous core line — only the two dominant ribbons read\n// as strongly luminous; the rest stay noticeably quieter.\nctx.beginPath();points.forEach((py,i)=>{const px=i/steps*width;if(i===0)ctx.moveTo(px,py);else ctx.lineTo(px,py);});ctx.strokeStyle=`rgba(${ribbon.coreColor},${ribbon.coreAlpha})`;ctx.lineWidth=ribbon.dominant?2.2:1.1;ctx.lineCap=\"round\";ctx.shadowColor=`rgba(${cFrom[0]},${cFrom[1]},${cFrom[2]},0.48)`;ctx.shadowBlur=(ribbon.dominant?14:5)*scale;ctx.stroke();ctx.shadowBlur=0;};const drawParticles=(t,speedMultiplier,deform)=>{for(const p of particles){const ribbon=ribbons[p.ribbonIdx];const speed=ribbon.baseSpeed*speedMultiplier;const wobble=Math.sin(t*.018+p.ribbonIdx*1.3)*.08;const baseY=curveY(ribbon,p.x,t,speed,wobble,deform);const px=p.x*width;const py=baseY+p.bandOffset*height;const twinkle=.11+Math.sin(t*p.speed*1.3+p.phase)*.06;ctx.beginPath();ctx.arc(px,py,p.r,0,Math.PI*2);ctx.fillStyle=`rgba(255,255,255,${Math.max(0,twinkle)})`;ctx.fill();}};// Text-safe pass: a soft elliptical \"erase\" (destination-out, not an\n// opaque box) over the region where heading/body copy consistently\n// sits, fading smoothly in every direction. This — not the ribbon\n// geometry — is what keeps bright lines from crossing letterforms,\n// so the wave's own shape stays a genuine, undistorted horizontal\n// flow. Positioned generously enough to cover most page heroes;\n// widened and re-centered on narrow viewports, where text runs\n// closer to the full width.\nconst drawTextSafeErase=()=>{const cx=isNarrow?width*.46:width*.26;const cy=isNarrow?height*.3:height*.44;const rx=isNarrow?width*1.05:width*.58;const ry=isNarrow?height*.46:height*.5;ctx.save();ctx.globalCompositeOperation=\"destination-out\";ctx.translate(cx,cy);ctx.scale(rx,ry);const grad=ctx.createRadialGradient(0,0,0,0,0,1);grad.addColorStop(0,\"rgba(0,0,0,0.98)\");grad.addColorStop(.5,\"rgba(0,0,0,0.94)\");grad.addColorStop(.75,\"rgba(0,0,0,0.62)\");grad.addColorStop(.92,\"rgba(0,0,0,0.16)\");grad.addColorStop(1,\"rgba(0,0,0,0)\");ctx.fillStyle=grad;ctx.fillRect(-1,-1,2,2);ctx.restore();};const render=(t,speedMultiplier,deform)=>{ctx.clearRect(0,0,width,height);ctx.globalAlpha=Math.max(0,Math.min(1,intensity));ribbons.forEach((ribbon,i)=>drawRibbon(ribbon,i,t,speedMultiplier,deform));drawParticles(t,speedMultiplier,deform);ctx.globalAlpha=1;// Applied at full strength regardless of `intensity` — text\n// contrast must never depend on how strong the wave is on a\n// given page (this also means globalAlpha isn't compounded into\n// the destination-out erase itself, which would otherwise weaken\n// it on lower-intensity pages).\ndrawTextSafeErase();};let raf=0;let last=performance.now();const tick=now=>{const dt=Math.min(now-last,50)/1e3;last=now;if(!reducedMotion&&!document.hidden){scrollVelocity*=.9;const clamped=Math.max(-SCROLL_VELOCITY_CLAMP,Math.min(SCROLL_VELOCITY_CLAMP,scrollVelocity));const speedMultiplier=1+clamped;const deform=Math.min(1,Math.abs(clamped)/SCROLL_VELOCITY_CLAMP)*.25;ribbons.forEach((ribbon,i)=>{const rm=ribbonMouse[i];rm.x+=(targetMouseX-rm.x)*ribbon.mouseEase;rm.y+=(targetMouseY-rm.y)*ribbon.mouseEase;});elapsed+=dt;render(elapsed,speedMultiplier,deform);}raf=requestAnimationFrame(tick);};render(0,1,0);requestAnimationFrame(()=>{applyCanvasSize();render(elapsed,1,0);});if(!reducedMotion){raf=requestAnimationFrame(tick);}const onMotionChange=()=>{reducedMotion=motionQuery.matches;if(reducedMotion){cancelAnimationFrame(raf);render(elapsed,1,0);}else{last=performance.now();raf=requestAnimationFrame(tick);}};motionQuery.addEventListener?.(\"change\",onMotionChange);return()=>{cancelAnimationFrame(raf);if(resizeTimer)clearTimeout(resizeTimer);window.removeEventListener(\"resize\",resize);window.removeEventListener(\"scroll\",onScroll);if(canHover){window.removeEventListener(\"mousemove\",onMouseMove);window.removeEventListener(\"mouseout\",onMouseLeave);}motionQuery.removeEventListener?.(\"change\",onMotionChange);};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[intensity]);return /*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",inset:0,overflow:\"hidden\",pointerEvents:\"none\",zIndex:0},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",display:\"block\"}})});}WaveBackground.displayName=\"KINETIX WAVE Background — Smooth Flow\";addPropertyControls(WaveBackground,{intensity:{type:ControlType.Number,title:\"Intensity\",min:0,max:1,step:.05,defaultValue:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"WaveBackground\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WaveBackground.map"],"mappings":"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"}