{"version":3,"file":"LogoGradient.CXMHDLk7.mjs","names":["hash"],"sources":["https:/framerusercontent.com/modules/dZ9c6z10n71dmz3JQVi4/9V4bd6GeC5hErLrBqMW9/Arc.js","https:/framerusercontent.com/modules/sn3kFeOAS2vnDEbB9klI/KguKJz2kIw6pimaQJByM/AnimatedMesh.js","https:/framerusercontent.com/modules/VHx6h9GDKMSkp9munUQE/WkfqDlgOscoCUsXhBk4G/LogoGradient.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,withCSS}from\"framer\";import hash from\"@emotion/hash\";function getAlignmentIcon(alignmentBaseline){switch(alignmentBaseline){case\"top\":return\"Text Top\";case\"center\":return\"Central\";case\"bottom\":return\"Hanging\";}}/**\n * ARC TEXT FOR INSERT\n * By Adam and Benjamin\n *\n * @framerIntrinsicWidth 150\n * @framerIntrinsicHeight 150\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */const Arc=withCSS(function Arc(_props){const props={..._props,width:_props.width??50,height:_props.height??50};// Checks\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;// For Ellipse\nconst isEllipse=!props.type;const cylinder=isEllipse?props.cylinderHeight/2:0;// Base arc path\nconst path=createPath(props.flip,cylinder);// Unique IDs to avoid multiple instances on the canvas sharing a single path\nconst id=`curve-${hash(path)}`;// Alignment icon conversion\nconst alignmentValue=getAlignmentIcon(props.alignmentBaseline);return /*#__PURE__*/_jsxs(\"svg\",{className:\"transform-origin-center-center\",style:{width:\"100%\",height:\"100%\",transformOrigin:\"center\"},viewBox:`0 0 100 100`,overflow:\"visible\",children:[/*#__PURE__*/_jsx(\"path\",{id:id,d:path,strokeWidth:\"none\",fill:\"transparent\"}),/*#__PURE__*/_jsx(\"text\",{children:/*#__PURE__*/_jsx(\"textPath\",{href:`#${id}`,startOffset:props.startOffset,dominantBaseline:alignmentValue,style:{letterSpacing:props.font?.letterSpacing?props.font.letterSpacing:1.85,...props.font,fill:props.color},children:props.text})})]});},// Work around a bug with framer-motion that calculates a px origin when animating SVG elements.\n[\".transform-origin-center-center { transform-origin: center center !important; }\"],\"framer-arc-text\");export default Arc;addPropertyControls(Arc,{text:{title:\"Content\",type:ControlType.String,defaultValue:\"DESIGN SITES LIKE A PRO WITH FRAMER\",displayTextArea:true},type:{title:\"Type\",type:ControlType.Boolean,enabledTitle:\"Circle\",disabledTitle:\"Ellipse\",defaultValue:true},cylinderHeight:{title:\"Height\",type:ControlType.Number,min:0,max:1e3,displayStepper:true,hidden:props=>props.type},alignmentBaseline:{title:\"Align\",type:ControlType.Enum,options:[\"top\",\"center\",\"bottom\"],optionIcons:[\"align-top\",\"align-middle\",\"align-bottom\"],defaultValue:\"bottom\",displaySegmentedControl:true},flip:{type:ControlType.Boolean,defaultValue:false,title:\"Direction\",enabledTitle:\"CW\",disabledTitle:\"CCW\"},startOffset:{title:\"Offset\",type:ControlType.Number,defaultValue:0,max:360,unit:\"\\xb0\",step:.5},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",displayTextAlignment:false},color:{title:\"Color\",type:ControlType.Color,defaultValue:\"#999\"}});/* Path creation method */const createPath=(flip,cylinder)=>{const cylinderTop=50-cylinder;const cylinderBottom=50+cylinder;return!flip?`M 0 50 L 0 ${cylinderTop} A 1 1 0 0 1 100 ${cylinderTop} L 100 50 L 100 ${cylinderBottom} A 1 1 0 0 1 0 ${cylinderBottom} L 0 ${cylinderTop}`:`M 0 50 L 0 ${cylinderBottom} A 1 1 0 1 0 100 ${cylinderBottom} L 100 ${cylinderTop} A 1 1 0 1 0 0 ${cylinderTop} L 0 50`;};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Arc\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerDisableUnlink\":\"*\",\"framerIntrinsicHeight\":\"150\",\"framerIntrinsicWidth\":\"150\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Arc.map","import{defineShader,ControlType}from\"framer\";export default defineShader({title:\"Mesh\",resolutionScale:\"consistent\",fragment:`\n// === PCG hash - https://www.jcgt.org/published/0009/03/02/\nuvec3 hash3(uvec3 v) {\n    v = v * 1664525u + 1013904223u;\n    v.x += v.y * v.z;\n    v.y += v.z * v.x;\n    v.z += v.x * v.y;\n    v ^= v >> 16u;\n    v.x += v.y * v.z;\n    v.y += v.z * v.x;\n    v.z += v.x * v.y;\n    return v;\n}\n\nvec3 seedRandom(float seedVal) {\n    uvec3 s = uvec3(\n        floatBitsToUint(seedVal),\n        floatBitsToUint(seedVal * 1.5 + 7.31),\n        floatBitsToUint(seedVal * 2.7 + 13.37)\n    );\n    s = hash3(s);\n    return vec3(s) / float(0xFFFFFFFFu);\n}\n\nvoid main() {\n    vec2 r = u_resolution;\n    vec2 I = gl_FragCoord.xy;\n    float t = u_time * u_speed;\n    vec3 w, p;\n    vec4 o = vec4(0.0);\n\n    vec3 seedA = seedRandom(u_seed);\n    vec3 seedB = seedRandom(u_seed + 100.0);\n\n    float seedAngle = seedA.x * 6.2831;\n    mat2 seedRot = mat2(cos(seedAngle), -sin(seedAngle), sin(seedAngle), cos(seedAngle));\n\n    vec3 seedPhase = seedB * 6.2831;\n\n    float a = radians(u_tilt);\n    mat3 rot = mat3(\n        1.0, 0.0, 0.0,\n        0.0, cos(a), sin(a),\n        0.0, -sin(a), cos(a)\n    );\n\n    float z = 0.0;\n    float d = 0.1;\n    \n    vec4 offset = vec4(0.0);\n\n    for (float i = 0.0; i < 30.0; i++) {\n        vec3 rd = (vec3(I, 0.0) * 2.0 - r.xyy) / r.y * u_zoom;\n        p = z * (rot * rd) + vec3(1.0, u_cameraHeight, 1.0);\n        w = p;\n\n        vec3 nw = w;\n        nw.xz = seedRot * nw.xz;\n\n        float f;\n        for (f = 2.0; f <= 3.0; f++)\n            nw += sin(nw.zxy * f + t + seedPhase) / f;\n\n        w = mix(p, nw, 1.0);\n\n        d = 0.1 * (p.y + 3.0);\n        z += d;\n\n        vec4 surface = mix(p, w, u_amplitude).y + offset;\n        vec4 fw = max(fwidth(surface), 0.0001);\n        vec4 pixelDist = abs(surface) / fw;\n        float lw = u_lineWidth * u_pixelRatio;\n        vec4 acc = smoothstep(lw + u_lineBlur, lw, pixelDist) * u_lightIntensity * d;\n        o += acc;\n    }\n\n    vec4 raw = tanh(o);\n\n    if (u_backgroundColor.a > 0.0) {\n    float lineAlpha = raw.a * u_lineColor.a;\n    vec3 col = mix(u_backgroundColor.rgb, u_lineColor.rgb, lineAlpha);\n    fragColor = vec4(col, u_backgroundColor.a);\n    } else {\n        fragColor = vec4(raw.rgb * u_lineColor.rgb, raw.a * u_lineColor.a);\n    }\n}\n`,propertyControls:{backgroundColor:{type:ControlType.Color,title:\"Fill\",defaultValue:\"#000000\"},lineColor:{type:ControlType.Color,title:\"Line Color\",defaultValue:\"#FFFFFF\"},lineWidth:{type:ControlType.Number,title:\"Line Width\",defaultValue:.1,min:.1,max:4,step:.1,displayStepper:true},lineBlur:{type:ControlType.Number,title:\"Line Blur\",defaultValue:2,min:1,max:4,step:.1,displayStepper:true},seed:{type:ControlType.Number,title:\"Seed\",defaultValue:200,min:0,max:1e3,step:1},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:.5,min:0,max:5,step:.1},amplitude:{type:ControlType.Number,title:\"Amplitude\",defaultValue:.2,min:0,max:1,step:.01},tilt:{type:ControlType.Number,title:\"Tilt\",defaultValue:-32,min:-180,max:180,step:1},zoom:{type:ControlType.Number,title:\"Zoom\",defaultValue:.35,min:.1,max:1,step:.01},cameraHeight:{type:ControlType.Number,title:\"Height\",defaultValue:2,min:0,max:3.5,step:.1},lightIntensity:{type:ControlType.Number,title:\"Brightness\",defaultValue:3,min:.1,max:10,step:.1}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"shader\",\"name\":null,\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AnimatedMesh.map","import{defineShader,ControlType}from\"framer\";export default defineShader({title:\"Logo Gradient\",heightmapSource:\"image\",mouse:\"enabledByDefault\",fragment:`\n// === CONSTANTS ===\nconst float GOLDEN_ANGLE = 2.3999632;\nconst float TAU = 6.28318530;\n\n// === PCG hash ===\nuvec3 hash3(uvec3 v) {\n    v = v * 1664525u + 1013904223u;\n    v.x += v.y * v.z;\n    v.y += v.z * v.x;\n    v.z += v.x * v.y;\n    v ^= v >> 16u;\n    v.x += v.y * v.z;\n    v.y += v.z * v.x;\n    v.z += v.x * v.y;\n    return v;\n}\n\nvec3 seedRandom(float seedVal) {\n    uvec3 s = uvec3(\n        floatBitsToUint(seedVal),\n        floatBitsToUint(seedVal * 1.5 + 7.31),\n        floatBitsToUint(seedVal * 2.7 + 13.37)\n    );\n    s = hash3(s);\n    return vec3(s) / float(0xFFFFFFFFu);\n}\n\n// === COLOR SPACE (Oklab/LCH) ===\n\nvec3 toLinear(vec3 c) {\n    return pow(c, vec3(2.2));\n}\n\nvec3 toSrgb(vec3 c) {\n    return pow(clamp(c, 0.0, 1.0), vec3(0.4545));\n}\n\nvec3 linearToOklab(vec3 c) {\n    float l = 0.4122214708 * c.r + 0.5363325363 * c.g + 0.0514459929 * c.b;\n    float m = 0.2119034982 * c.r + 0.6806995451 * c.g + 0.1073969566 * c.b;\n    float s = 0.0883024619 * c.r + 0.2817188376 * c.g + 0.6299787005 * c.b;\n\n    l = pow(max(l, 0.0), 1.0 / 3.0);\n    m = pow(max(m, 0.0), 1.0 / 3.0);\n    s = pow(max(s, 0.0), 1.0 / 3.0);\n\n    return vec3(\n        0.2104542553 * l + 0.7936177850 * m - 0.0040720468 * s,\n        1.9779984951 * l - 2.4285922050 * m + 0.4505937099 * s,\n        0.0259040371 * l + 0.7827717662 * m - 0.8086757660 * s\n    );\n}\n\nvec3 oklabToLinear(vec3 c) {\n    float l = c.x + 0.3963377774 * c.y + 0.2158037573 * c.z;\n    float m = c.x - 0.1055613458 * c.y - 0.0638541728 * c.z;\n    float s = c.x - 0.0894841775 * c.y - 1.2914855480 * c.z;\n\n    l = l * l * l;\n    m = m * m * m;\n    s = s * s * s;\n\n    return vec3(\n        +4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,\n        -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,\n        -0.0041960863 * l - 0.7034186147 * m + 1.7076147010 * s\n    );\n}\n\nvec3 oklabToLch(vec3 lab) {\n    return vec3(lab.x, length(lab.yz), atan(lab.z, lab.y));\n}\n\nvec3 lchToOklab(vec3 lch) {\n    return vec3(lch.x, lch.y * cos(lch.z), lch.y * sin(lch.z));\n}\n\nvec3 mixLch(vec3 lab0, vec3 lab1, float t) {\n    vec3 lch0 = oklabToLch(lab0);\n    vec3 lch1 = oklabToLch(lab1);\n\n    if (lch0.y < 0.05) lch0.z = lch1.z;\n    if (lch1.y < 0.05) lch1.z = lch0.z;\n\n    float dh = lch1.z - lch0.z;\n    if (dh > 3.14159265) dh -= 6.28318530;\n    if (dh < -3.14159265) dh += 6.28318530;\n\n    return lchToOklab(vec3(\n        mix(lch0.x, lch1.x, t),\n        mix(lch0.y, lch1.y, t),\n        lch0.z + dh * t\n    ));\n}\n\n// === PALETTE ===\n\nvec3 getColor(int idx) {\n    if (u_colors_length < 1) return vec3(0.0);\n    int safeIdx = clamp(idx, 0, u_colors_length - 1);\n    return u_colors[safeIdx].rgb;\n}\n\nvec3 paletteN(float t, int count) {\n    if (count < 1) return vec3(0.0);\n    if (count < 2) return toLinear(getColor(0));\n\n    float segmentSize = 1.0 / float(count - 1);\n    t = clamp(t, 0.0, 1.0);\n    int idx = min(int(floor(t / segmentSize)), count - 2);\n    float localT = clamp((t - float(idx) * segmentSize) / segmentSize, 0.0, 1.0);\n\n    vec3 lab0 = linearToOklab(toLinear(getColor(idx)));\n    vec3 lab1 = linearToOklab(toLinear(getColor(idx + 1)));\n\n    return oklabToLinear(mixLch(lab0, lab1, localT));\n}\n\n// === POST-PROCESS ===\n\nvec3 softGamutMap(vec3 linearRgb) {\n    float maxC = max(linearRgb.r, max(linearRgb.g, linearRgb.b));\n    float minC = min(linearRgb.r, min(linearRgb.g, linearRgb.b));\n\n    if (minC >= 0.0 && maxC <= 1.0) return linearRgb;\n\n    vec3 lab = linearToOklab(max(linearRgb, 0.0));\n    float L = clamp(lab.x, 0.0, 1.0);\n    float C = length(lab.yz);\n    float h = atan(lab.z, lab.y);\n\n    float maxChroma = 0.4 * (1.0 - pow(abs(2.0 * L - 1.0), 2.0));\n\n    if (C > maxChroma * 0.7) {\n        float knee = maxChroma * 0.7;\n        C = knee + (maxChroma - knee) * tanh((C - knee) / (maxChroma - knee + 0.001));\n    }\n\n    return clamp(oklabToLinear(vec3(L, C * cos(h), C * sin(h))), 0.0, 1.0);\n}\n\n// === HEIGHTMAP HELPERS ===\n\nfloat blurDepth3x3(vec2 uv, vec2 dudx, vec2 dudy, vec2 texel, float radius) {\n    vec2 r = radius * texel;\n\n    float sum = 4.0 * textureGrad(u_image_heightmap, uv, dudx, dudy).r;\n\n    sum += 2.0 * textureGrad(u_image_heightmap, uv + vec2(0.0, -r.y), dudx, dudy).r;\n    sum += 2.0 * textureGrad(u_image_heightmap, uv + vec2(0.0,  r.y), dudx, dudy).r;\n    sum += 2.0 * textureGrad(u_image_heightmap, uv + vec2(-r.x, 0.0), dudx, dudy).r;\n    sum += 2.0 * textureGrad(u_image_heightmap, uv + vec2( r.x, 0.0), dudx, dudy).r;\n\n    sum += textureGrad(u_image_heightmap, uv + vec2(-r.x, -r.y), dudx, dudy).r;\n    sum += textureGrad(u_image_heightmap, uv + vec2( r.x, -r.y), dudx, dudy).r;\n    sum += textureGrad(u_image_heightmap, uv + vec2(-r.x,  r.y), dudx, dudy).r;\n    sum += textureGrad(u_image_heightmap, uv + vec2( r.x,  r.y), dudx, dudy).r;\n\n    return sum / 16.0;\n}\n\nvec2 heightGrad(vec2 uv, vec2 dudx, vec2 dudy, vec2 texel, float blurRadius) {\n    float eps = 4.0;\n    float dR = blurDepth3x3(uv + vec2(eps * texel.x, 0.0), dudx, dudy, texel, blurRadius);\n    float dL = blurDepth3x3(uv - vec2(eps * texel.x, 0.0), dudx, dudy, texel, blurRadius);\n    float dU = blurDepth3x3(uv + vec2(0.0, eps * texel.y), dudx, dudy, texel, blurRadius);\n    float dD = blurDepth3x3(uv - vec2(0.0, eps * texel.y), dudx, dudy, texel, blurRadius);\n    return vec2(dR - dL, dU - dD) / (2.0 * eps * texel);\n}\n\n// === MAIN ===\n\nvoid main() {\n    vec2 uv = vec2(v_uv.x, 1.0 - v_uv.y);\n    vec2 texSize = vec2(textureSize(u_image_heightmap, 0));\n    float imgAspect = texSize.x / texSize.y;\n    float canvasAspect = u_resolution.x / u_resolution.y;\n\n    if (canvasAspect > imgAspect) {\n        uv.x = (uv.x - 0.5) * (canvasAspect / imgAspect) + 0.5;\n    } else {\n        uv.y = (uv.y - 0.5) * (imgAspect / canvasAspect) + 0.5;\n    }\n\n    /*\n    if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) {\n        fragColor = vec4(u_colorBack.rgb * u_colorBack.a, u_colorBack.a);\n        return;\n    }\n    */\n\n    // 1.0 on DPR 2+, up to 2.0 on DPR 1\n    float aaScale = max(1.0, 2.0 / u_pixelRatio);\n\n    vec2 dudx = dFdx(uv);\n    vec2 dudy = dFdy(uv);\n\n    vec4 hm = textureGrad(u_image_heightmap, uv, dudx, dudy);\n    float fw_b = 0.5 * fwidth(hm.b);\n    float hardMask = smoothstep(0.5 - fw_b, 0.5 + fw_b, hm.b);\n    float opacity = hardMask * (1.0 - hm.g);\n\n    // Only fade at the letterbox boundary, not on the axis the image fills\n    float edgeDist;\n    if (canvasAspect > imgAspect) {\n        // Letterbox bars are left/right → only fade X edges\n        edgeDist = min(uv.x, 1.0 - uv.x);\n    } else if (canvasAspect < imgAspect) {\n        // Letterbox bars are top/bottom → only fade Y edges\n        edgeDist = min(uv.y, 1.0 - uv.y);\n    } else {\n        // Aspects match — no letterboxing, no seam, no fade needed\n        edgeDist = 1.0;\n    }\n    opacity *= smoothstep(0.0, 1.0 * fwidth(edgeDist), edgeDist);\n\n    if (opacity < 0.001) {\n        fragColor = vec4(u_colorBack.rgb * u_colorBack.a, u_colorBack.a);\n        return;\n    }\n\n    vec2 texel = 1.0 / texSize;\n    int colorCount = u_colors_length;\n\n    if (colorCount < 1) {\n        fragColor = vec4(u_colorBack.rgb * u_colorBack.a, u_colorBack.a);\n        return;\n    }\n\n    float rawDepth = blurDepth3x3(uv, dudx, dudy, texel, 6.0);\n    float depth = max(rawDepth, 0.001);\n\n    vec2 grad = heightGrad(uv, dudx, dudy, texel, 6.0);\n    float gradMag = min(length(grad), 5.0);\n    vec2 gradDir = gradMag > 0.001 ? normalize(grad) : vec2(0.0);\n    vec2 contourDir = vec2(-gradDir.y, gradDir.x);\n\n    float t = mod(u_time * u_speed, 3600.0);\n\n    // Motion mode: 0 = Random, 1 = Melt\n    float isMelt = step(0.5, u_motionMode);\n\n    // Seed\n    vec3 seedOffset = seedRandom(u_seed);\n    vec3 seedOffset2 = seedRandom(u_seed + 100.0);\n    float seedAngle = u_seed * GOLDEN_ANGLE;\n    vec2 seedPhase = (seedOffset2.xy - 0.5) * TAU;\n\n    // World-space coordinates anchored to the image\n    vec2 p = (uv - 0.5) * 2.0;\n    p.x *= imgAspect;\n\n    // Seed-based rotation\n    float cs = cos(seedAngle);\n    float sn = sin(seedAngle);\n    p = mat2(cs, -sn, sn, cs) * p;\n\n    // Angle — rotates the gradient flow direction\n    float ang = u_angle * 3.14159 / 180.0;\n    float cosA = cos(ang);\n    float sinA = sin(ang);\n    p = vec2(p.x * cosA - p.y * sinA, p.x * sinA + p.y * cosA);\n\n    // === MOUSE ===\n    vec2 mouseRaw = u_mousePosition.xy;\n    vec2 mouseVel = u_mousePosition.zw;\n    float hover   = u_mouseHover;\n    float clicked = u_mousePointerDown;\n    // Flip Y to match this shader's top-left UV convention\n    vec2 mouseUV = vec2(mouseRaw.x, 1.0 - mouseRaw.y);\n\n    // Apply the same letterbox transform as uv\n    if (canvasAspect > imgAspect) {\n        mouseUV.x = (mouseUV.x - 0.5) * (canvasAspect / imgAspect) + 0.5;\n    } else {\n        mouseUV.y = (mouseUV.y - 0.5) * (imgAspect / canvasAspect) + 0.5;\n    }\n\n    // Mouse as centered, aspect-corrected, scaled offset\n    vec2 mOffset = (mouseUV - 0.5) * vec2(imgAspect, 1.0) * u_pushAmount * hover;\n\n    // Distance in image-space (both uv and mouseUV are now in the same space)\n    float mouseDist = length((uv - mouseUV) * vec2(imgAspect, 1.0));\n    float mouseInfluence = smoothstep(u_pushRadius, 0.0, mouseDist);\n    vec2 mFinal = mOffset * mouseInfluence;\n\n    // Turbulence time\n    float tTurb = t * mix(1.0, 0.4, isMelt);\n\n    // Melt flow offset applied to q inside turbulence, not to p\n    vec2 meltOffset = vec2(1.0, 0.0) * t * 0.4 * isMelt;\n\n    // === SHAPE-AWARE COORDINATE WARPING ===\n    float edgeProximity = 1.0 - smoothstep(0.0, 0.8, depth);\n\n    float coordScale = max(0.4, 0.1 + depth * 1.0);\n    p *= coordScale;\n\n    p += contourDir * edgeProximity * u_bend * 2.0;\n    p -= gradDir * edgeProximity * u_bend * 0.5;\n    p *= max(0.5, mix(1.0, 0.4 + 0.6 * smoothstep(0.0, 0.5, depth), u_contour));\n\n    // === TURBULENCE ===\n    int turbIter = int(u_turbIter);\n    float freq = 1.0 / max(u_turbFreq, 0.01);\n\n    vec2 q = p * u_scale + meltOffset;\n    // Small directional nudge — slides the pattern toward the cursor\n    q += (mouseUV - uv) * mouseInfluence * 2.0 * hover;\n\n    float a = seedPhase.x;\n    float d = seedPhase.y;\n\n    for (int j = 2; j < 10; j++) {\n        if (j >= turbIter) break;\n        float fj = float(j);\n        q += u_turbAmp * sin(length(q) / freq * fj + tTurb + vec2(a, d) + seedOffset.xy * fj) / fj;\n        a += cos(fj + d * 1.2 + mFinal.x + q.x * 2.0 - tTurb + seedOffset2.z);\n        d += sin(fj * q.y + a + mFinal.y * 0.7 + seedOffset.z + tTurb + seedOffset2.y);\n    }\n\n    float base = length(q.yx + vec2(a, d) * 0.2) * u_waveFreq + seedOffset.x;\n    float val = 0.5 + 0.125 * sin(base + 1.0) + 0.25 * sin(base + 4.0) + 0.125 * sin(base + 9.0);\n    val = clamp((val - 0.3) / 0.4, 0.0, 1.0);\n\n    // Depth-based intensity modulation\n    float innerIntensity = smoothstep(0.0, 0.4, depth);\n    float contourHeat = (1.0 - innerIntensity) * u_contour;\n    val = mix(val, val * innerIntensity + contourHeat, 0.5 + 0.5 * u_contour);\n\n    vec3 col = paletteN(val, colorCount);\n    col = softGamutMap(col);\n    col = toSrgb(col);\n\n    /*\n    // Silhouette AA — hardMask + clamped fwidth\n    float fw = fwidth(depth);\n    float effectMask = hardMask * smoothstep(0.0, max(fw, min(2.0 * fw, 0.1)), depth);\n    opacity *= effectMask;\n    */\n\n    // Alpha compositing\n    col *= opacity;\n    vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\n    col = col + bgColor * (1.0 - opacity);\n    float finalAlpha = opacity + u_colorBack.a * (1.0 - opacity);\n\n    fragColor = vec4(col, finalAlpha);\n}\n`,propertyControls:{image:{type:ControlType.ResponsiveImage,title:\"Image\",defaultValue:\"data:framer/asset-reference,7XHsXmlUUmdQM95fkSvi3LRCuSk.svg?originalFilename=Path.svg&width=32&height=48\"},colors:{type:ControlType.Array,title:\"Colors\",control:{type:ControlType.Color},maxCount:8,defaultValue:[\"#000000\",\"#0051FF\",\"#0DAAFF\",\"#BDE4FF\"]},colorBack:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"},seed:{type:ControlType.Number,title:\"Seed\",defaultValue:6,min:0,max:1e3,step:1,section:\"Motion\"},speed:{type:ControlType.Number,title:\"Speed\",defaultValue:.6,min:0,max:2,step:.01,section:\"Motion\"},motionMode:{type:ControlType.Enum,title:\"Motion\",options:[0,1],optionTitles:[\"Random\",\"Directional\"],defaultValue:0,section:\"Motion\"},angle:{type:ControlType.Number,title:\"Angle\",defaultValue:20,min:0,max:360,step:1,section:\"Motion\"},scale:{type:ControlType.Number,title:\"Scale\",defaultValue:1.2,min:.1,max:2,step:.01,section:\"Motion\"},turbAmp:{type:ControlType.Number,title:\"Amplitude\",defaultValue:.21,min:0,max:1,step:.01,section:\"Motion\"},turbFreq:{type:ControlType.Number,title:\"Frequency\",defaultValue:1.15,min:.1,max:2,step:.01,section:\"Motion\"},turbIter:{type:ControlType.Number,title:\"Definition\",defaultValue:7,min:3,max:8,step:1,displayStepper:true,section:\"Motion\"},waveFreq:{type:ControlType.Number,title:\"Bands\",defaultValue:2.4,min:.1,max:5,step:.1,section:\"Motion\"},bend:{type:ControlType.Number,title:\"Bevel\",defaultValue:.24,min:0,max:1,step:.01,section:\"Shape\",hiddenWhenUnset:true},contour:{type:ControlType.Number,title:\"Contour\",defaultValue:.8,min:0,max:1,step:.1,section:\"Shape\",hiddenWhenUnset:true},pushRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:1.5,min:.2,max:4,step:.1,section:\"Interaction\"},pushAmount:{type:ControlType.Number,title:\"Strength\",defaultValue:8,min:0,max:20,step:.5,section:\"Interaction\"}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"shader\",\"name\":null,\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LogoGradient.map"],"mappings":"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"}