1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,491344,e=>{"use strict";var o=e.i(503423),t=e.i(111760),i=e.i(912184),n=e.i(49806);e.s(["Image",0,e=>{let{borderRadius:r,fadeIn:a,quality:l=95,...s}=e,[b,d]=(0,n.useState)(!1);return(0,o.jsx)(i.default,{...s,"data-nosnippet":!0,quality:l,"data-loaded":b,"data-fade":a,onLoad:o=>{d(!0),e.onLoad?.(o)},style:{borderRadius:r,...s.style},className:(0,t.clx)("transition duration-700 [transition-timing-function:cubic-bezier(0.31,0.325,0,0.92)]",{"opacity-0":a&&!b},e.className)})}])},851315,e=>{"use strict";var o=e.i(49806);e.s(["useShouldAnimate",0,()=>{let[e,t]=(0,o.useState)(!1);return(0,o.useLayoutEffect)(()=>{window.matchMedia("(prefers-reduced-motion: reduce)").matches||("deviceMemory"in navigator?navigator.deviceMemory<=4:navigator.hardwareConcurrency<=2)||t(!0)},[]),e}])},209439,853104,e=>{"use strict";var o=e.i(503423),t=e.i(111760),i=e.i(49806);let n={showBlobs:!0,blob1:{position:{x:.11,y:.86},width:.72,height:1.34,cornerRadius:1,intensity:1,rotation:47.057},blob2:{position:{x:.5,y:.9},width:.71,height:.64,cornerRadius:1,intensity:1,rotation:-16.443},blob3:{position:{x:.85,y:.85},width:1.15,height:.95,cornerRadius:1,intensity:1,rotation:39.057},blobInnerGlow:0,noiseEnabled:!0,noiseType:1,noiseIntensity:.5,noiseScale:.6,noiseSpeed:.24,noiseOctaves:2,blobBlendMode:9,noiseRotation:145,noiseDirection:{x:-.5,y:0},noisePosition:{x:0,y:0},noiseBrightness:1,noiseRefraction:0,showGlass:!0,columnCount:12,refractionStrength:.059,blurRadius:.08,borderOpacity:1,borderWidth:.012,glassOverlay:.2,glassBlendMode:1,glassTint:.2,paused:!0,backgroundColor:"#F2EDE9",color1:"#C0E6FF",color2:"#BAD9F9",color3:"#C0E6FF"};function r(e){let o=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return o?[parseInt(o[1],16)/255,parseInt(o[2],16)/255,parseInt(o[3],16)/255]:[.72,.83,.91]}let a=` 2 attribute vec2 a_position; 3 varying vec2 v_uv; 4 void main() { 5 v_uv = a_position * 0.5 + 0.5; 6 gl_Position = vec4(a_position, 0.0, 1.0); 7 } 8`,l=` 9 precision highp float; 10 varying vec2 v_uv; 11 uniform sampler2D u_backgroundTexture; 12 uniform vec2 u_resolution; 13 uniform vec3 u_color1; 14 uniform vec3 u_color2; 15 uniform vec3 u_color3; 16 uniform vec2 u_blob1Pos; 17 uniform vec2 u_blob2Pos; 18 uniform vec2 u_blob3Pos; 19 uniform vec2 u_blob1Size; 20 uniform vec2 u_blob2Size; 21 uniform vec2 u_blob3Size; 22 uniform float u_blob1Corner; 23 uniform float u_blob2Corner; 24 uniform float u_blob3Corner; 25 uniform float u_blob1Intensity; 26 uniform float u_blob2Intensity; 27 uniform float u_blob3Intensity; 28 uniform float u_showBlobs; 29 uniform float u_blob1Rotation; 30 uniform float u_blob2Rotation; 31 uniform float u_blob3Rotation; 32 uniform float u_blobInnerGlow; 33 uniform float u_blobIntro; 34 uniform float u_blendMode; 35 36 // Blend helpers 37 float colorDodge(float base, float blend) { 38 return (blend >= 1.0) ? 1.0 : min(1.0, base / (1.0 - blend)); 39 } 40 float colorBurn(float base, float blend) { 41 return (blend <= 0.0) ? 0.0 : max(0.0, 1.0 - (1.0 - base) / blend); 42 } 43 float vividLight(float base, float blend) { 44 return blend < 0.5 45 ? ((blend <= 0.0) ? 0.0 : max(0.0, 1.0 - (1.0 - base) / (2.0 * blend))) 46 : ((blend >= 1.0) ? 1.0 : min(1.0, base / (2.0 * (1.0 - blend)))); 47 } 48 49 vec3 blendColors(vec3 base, vec3 blend, float mode) { 50 vec3 result; 51 if (mode < 0.5) { 52 result = blend; 53 } else if (mode < 1.5) { 54 result.r = base.r < 0.5 ? 2.0 * base.r * blend.r : 1.0 - 2.0 * (1.0 - base.r) * (1.0 - blend.r); 55 result.g = base.g < 0.5 ? 2.0 * base.g * blend.g : 1.0 - 2.0 * (1.0 - base.g) * (1.0 - blend.g); 56 result.b = base.b < 0.5 ? 2.0 * base.b * blend.b : 1.0 - 2.0 * (1.0 - base.b) * (1.0 - blend.b); 57 } else if (mode < 2.5) { 58 result.r = blend.r < 0.5 ? base.r - (1.0 - 2.0 * blend.r) * base.r * (1.0 - base.r) : base.r + (2.0 * blend.r - 1.0) * (sqrt(base.r) - base.r); 59 result.g = blend.g < 0.5 ? base.g - (1.0 - 2.0 * blend.g) * base.g * (1.0 - base.g) : base.g + (2.0 * blend.g - 1.0) * (sqrt(base.g) - base.g); 60 result.b = blend.b < 0.5 ? base.b - (1.0 - 2.0 * blend.b) * base.b * (1.0 - base.b) : base.b + (2.0 * blend.b - 1.0) * (sqrt(base.b) - base.b); 61 } else if (mode < 3.5) { 62 result = base * blend; 63 } else if (mode < 4.5) { 64 result = 1.0 - (1.0 - base) * (1.0 - blend); 65 } else if (mode < 5.5) { 66 result = min(base + blend, 1.0); 67 } else if (mode < 6.5) { 68 result = max(base - blend, 0.0); 69 } else if (mode < 7.5) { 70 result = abs(base - blend); 71 } else if (mode < 8.5) { 72 result = base + blend - 2.0 * base * blend; 73 } else if (mode < 9.5) { 74 result.r = blend.r < 0.5 ? 2.0 * base.r * blend.r : 1.0 - 2.0 * (1.0 - base.r) * (1.0 - blend.r); 75 result.g = blend.g < 0.5 ? 2.0 * base.g * blend.g : 1.0 - 2.0 * (1.0 - base.g) * (1.0 - blend.g); 76 result.b = blend.b < 0.5 ? 2.0 * base.b * blend.b : 1.0 - 2.0 * (1.0 - base.b) * (1.0 - blend.b); 77 } else if (mode < 10.5) { 78 result = vec3(colorDodge(base.r, blend.r), colorDodge(base.g, blend.g), colorDodge(base.b, blend.b)); 79 } else if (mode < 11.5) { 80 result = vec3(colorBurn(base.r, blend.r), colorBurn(base.g, blend.g), colorBurn(base.b, blend.b)); 81 } else if (mode < 12.5) { 82 result = vec3(vividLight(base.r, blend.r), vividLight(base.g, blend.g), vividLight(base.b, blend.b)); 83 } else if (mode < 13.5) { 84 result = clamp(base + 2.0 * blend - 1.0, 0.0, 1.0); 85 } else { 86 result = vec3(vividLight(base.r, blend.r), vividLight(base.g, blend.g), vividLight(base.b, blend.b)); 87 result = step(0.5, result); 88 } 89 return result; 90 } 91 92 // Signed distance function for a rounded rectangle 93 float sdRoundedRect(vec2 p, vec2 halfSize, float cornerRadius) { 94 vec2 d = abs(p) - halfSize + vec2(cornerRadius); 95 return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0) - cornerRadius; 96 } 97 98 // Rotate a 2D point 99 vec2 rotate2d(vec2 p, float angle) { 100 float c = cos(angle); 101 float s = sin(angle); 102 return vec2(p.x * c - p.y * s, p.x * s + p.y * c); 103 } 104 105 // Conic gradient (approximated) from CSS: from 195deg 106 vec3 conicGrad(vec2 p, vec3 colorA, vec3 colorB) { 107 float angle = atan(p.y, p.x); 108 float t = (angle + 3.14159) / (2.0 * 3.14159); 109 t = fract(t + 195.0 / 360.0); 110 return mix(colorA, colorB, t); 111 } 112 113 vec4 blobShape(vec2 uv, vec2 center, vec2 size, float corner, float rotation, vec3 tintA, vec3 tintB, float intensity) { 114 vec2 local = uv - center; 115 local = rotate2d(local, rotation); 116 117 vec2 halfSize = size * 0.5; 118 float cornerRadius = min(halfSize.x, halfSize.y) * corner; 119 float h = halfSize.y; 120 121 float d = sdRoundedRect(local, halfSize, cornerRadius); 122
123 // Sharp mask with thin anti-aliased edge 124 float px = 0.003; 125 float mask = 1.0 - smoothstep(-px, px, d); 126 127 // Conic gradient fill 128 vec3 fill = conicGrad(local, tintA, tintB); 129 130 // Inset glow: white glow toward center (box-shadow inset) 131 float glowDist = -d / (h * 0.6); 132 float glow = smoothstep(0.0, 1.0, glowDist) * u_blobInnerGlow; 133 fill = mix(fill, vec3(1.0), glow); 134 135 // Apply intensity 136 fill = mix(vec3(1.0), fill, intensity); 137 138 return vec4(fill, mask); 139 } 140 141 void main() { 142 vec2 uv = v_uv; 143 float aspect = u_resolution.x / u_resolution.y; 144 uv.x *= aspect; 145 146 vec2 p1 = vec2(u_blob1Pos.x * aspect, u_blob1Pos.y); 147 vec2 p2 = vec2(u_blob2Pos.x * aspect, u_blob2Pos.y); 148 vec2 p3 = vec2(u_blob3Pos.x * aspect, u_blob3Pos.y); 149 150 vec3 noiseBg = texture2D(u_backgroundTexture, v_uv).rgb; 151 vec3 color = noiseBg; 152 153 if (u_showBlobs > 0.5) { 154 vec4 b1 = blobShape(uv, p1, u_blob1Size, u_blob1Corner, u_blob1Rotation, u_color1, u_color2, u_blob1Intensity); 155 vec4 b2 = blobShape(uv, p2, u_blob2Size, u_blob2Corner, u_blob2Rotation, u_color1, u_color2, u_blob2Intensity); 156 vec4 b3 = blobShape(uv, p3, u_blob3Size, u_blob3Corner, u_blob3Rotation, u_color3, u_color2, u_blob3Intensity); 157 158 // Composite blobs onto white background 159 vec3 blobLayer = vec3(1.0); 160 blobLayer = mix(blobLayer, b3.rgb, b3.a); 161 blobLayer = mix(blobLayer, b1.rgb, b1.a); 162 blobLayer = mix(blobLayer, b2.rgb, b2.a); 163 164 // Blend entire blob layer (white + blobs) onto noise 165 vec3 blended = blendColors(noiseBg, blobLayer, u_blendMode); 166 color = mix(noiseBg, blended, u_blobIntro); 167 } 168 169 // Dither to break up banding (triangular noise, \xb10.5/255) 170 vec3 dither = vec3(fract(sin(dot(v_uv, vec2(12.9898, 78.233))) * 43758.5453)); 171 color += (dither - 0.5) / 255.0; 172 173 gl_FragColor = vec4(color, 1.0); 174 } 175`,s=` 176 precision highp float; 177 varying vec2 v_uv; 178 uniform float u_noiseType; 179 uniform float u_noiseIntensity; 180 uniform float u_noiseScale; 181 uniform vec2 u_noiseOffset; 182 uniform vec2 u_noisePosition; 183 uniform float u_noiseBrightness; 184 uniform float u_noiseOctaves; 185 uniform float u_noiseRotation; 186 uniform float u_noiseColumns; 187 uniform float u_noiseRefraction; 188 uniform float u_noiseIntro; 189 190 // Simplex noise (Ashima Arts, public domain) 191 vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } 192 vec2 mod289(vec2 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } 193 vec3 permute(vec3 x) { return mod289(((x * 34.0) + 1.0) * x); } 194 195 float snoise(vec2 v) { 196 const vec4 C = vec4(0.211324865405187, 0.366025403784439, 197 -0.577350269189626, 0.024390243902439); 198 vec2 i = floor(v + dot(v, C.yy)); 199 vec2 x0 = v - i + dot(i, C.xx); 200 vec2 i1; 201 i1 = (x0.x > x0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0); 202 vec4 x12 = x0.xyxy + C.xxzz; 203 x12.xy -= i1; 204 i = mod289(i); 205 vec3 p = permute(permute(i.y + vec3(0.0, i1.y, 1.0)) 206 + i.x + vec3(0.0, i1.x, 1.0)); 207 vec3 m = max(0.5 - vec3(dot(x0, x0), dot(x12.xy, x12.xy), 208 dot(x12.zw, x12.zw)), 0.0); 209 m = m * m; 210 m = m * m; 211 vec3 x = 2.0 * fract(p * C.www) - 1.0; 212 vec3 h = abs(x) - 0.5; 213 vec3 ox = floor(x + 0.5); 214 vec3 a0 = x - ox; 215 m *= 1.79284291400159 - 0.85373472095314 * (a0 * a0 + h * h); 216 vec3 g; 217 g.x = a0.x * x0.x + h.x * x0.y; 218 g.yz = a0.yz * x12.xz + h.yz * x12.yw; 219 return 130.0 * dot(m, g); 220 } 221 222 float sineWaves(vec2 p, float octaves) { 223 float value = 0.0; 224 float amplitude = 0.6; 225 float frequency = 1.0; 226 for (int i = 0; i < 4; i++) { 227 if (float(i) >= octaves) break; 228 float angle = float(i) * 1.047; 229 float c = cos(angle); 230 float s = sin(angle); 231 vec2 rp = vec2(p.x * c - p.y * s, p.x * s + p.y * c); 232 value += amplitude * sin(rp.x * frequency * 6.28318); 233 frequency *= 1.8; 234 amplitude *= 0.5; 235 } 236 return value; 237 } 238 239 float stripePattern(vec2 p, float octaves) { 240 float angle = 0.7854; 241 float c = cos(angle); 242 float s = sin(angle); 243 vec2 rp = vec2(p.x * c - p.y * s, p.x * s + p.y * c); 244 float stripe = sin(rp.x * 6.28318 * 2.0); 245 if (octaves > 1.0) {
246 stripe += snoise(p * 2.0) * 0.3; 247 } 248 if (octaves > 2.0) { 249 stripe += snoise(p * 4.0) * 0.15; 250 } 251 return stripe; 252 } 253 254 float getPattern(vec2 p, float type, float octaves) { 255 if (type < 0.5) { 256 return sineWaves(p, octaves) * 0.5 + 0.5; 257 } else { 258 return stripePattern(p, octaves) * 0.5 + 0.5; 259 } 260 } 261 262 void main() { 263 vec3 color = vec3(1.0); 264 265 if (u_noiseIntensity > 0.0) { 266 vec2 centeredUv = v_uv - 0.5; 267 float rc = cos(u_noiseRotation); 268 float rs = sin(u_noiseRotation); 269 centeredUv = vec2(centeredUv.x * rc - centeredUv.y * rs, centeredUv.x * rs + centeredUv.y * rc); 270 vec2 rotatedUv = centeredUv + 0.5; 271 272 vec2 noiseUv = rotatedUv * u_noiseScale + u_noiseOffset + u_noisePosition; 273 274 // Column-based refraction: warp noise UVs to match glass column structure 275 if (u_noiseRefraction > 0.0 && u_noiseColumns > 1.0) { 276 float colUv = v_uv.x * u_noiseColumns; 277 float colIdx = floor(colUv); 278 float withinCol = fract(colUv); 279 float colPhase = colIdx * 2.39996; 280 float bend = sin(withinCol * 3.14159); 281 noiseUv.x += bend * u_noiseRefraction * u_noiseScale * sin(colPhase); 282 noiseUv.y += bend * u_noiseRefraction * u_noiseScale * 0.5 * cos(colPhase); 283 } 284 285 float n = getPattern(noiseUv, u_noiseType, u_noiseOctaves); 286 color = mix(vec3(1.0), vec3(n), u_noiseIntensity * u_noiseIntro); 287 color = min(color, vec3(u_noiseBrightness)); 288 } 289 290 gl_FragColor = vec4(color, 1.0); 291 } 292`,b=` 293 precision highp float; 294 varying vec2 v_uv; 295 uniform sampler2D u_blobTexture; 296 uniform vec2 u_resolution; 297 uniform float u_time; 298 uniform float u_columns; 299 uniform float u_refractionStrength; 300 uniform float u_blurRadius; 301 uniform float u_borderOpacity; 302 uniform float u_borderWidth; 303 uniform float u_glassOverlay; 304 uniform float u_glassBlendMode; 305 uniform float u_glassTint; 306 uniform vec3 u_bgColor; 307 uniform float u_showGlass; 308 uniform float u_glassIntro; 309 310 // Blend helpers 311 float colorDodge(float base, float blend) { 312 return (blend >= 1.0) ? 1.0 : min(1.0, base / (1.0 - blend)); 313 } 314 float colorBurn(float base, float blend) { 315 return (blend <= 0.0) ? 0.0 : max(0.0, 1.0 - (1.0 - base) / blend); 316 } 317 float vividLight(float base, float blend) { 318 return blend < 0.5 319 ? ((blend <= 0.0) ? 0.0 : max(0.0, 1.0 - (1.0 - base) / (2.0 * blend))) 320 : ((blend >= 1.0) ? 1.0 : min(1.0, base / (2.0 * (1.0 - blend)))); 321 } 322 323 vec3 blendColors(vec3 base, vec3 blend, float mode) { 324 vec3 result; 325 if (mode < 0.5) { 326 result = blend; 327 } else if (mode < 1.5) { 328 result.r = base.r < 0.5 ? 2.0 * base.r * blend.r : 1.0 - 2.0 * (1.0 - base.r) * (1.0 - blend.r); 329 result.g = base.g < 0.5 ? 2.0 * base.g * blend.g : 1.0 - 2.0 * (1.0 - base.g) * (1.0 - blend.g); 330 result.b = base.b < 0.5 ? 2.0 * base.b * blend.b : 1.0 - 2.0 * (1.0 - base.b) * (1.0 - blend.b); 331 } else if (mode < 2.5) { 332 result.r = blend.r < 0.5 ? base.r - (1.0 - 2.0 * blend.r) * base.r * (1.0 - base.r) : base.r + (2.0 * blend.r - 1.0) * (sqrt(base.r) - base.r); 333 result.g = blend.g < 0.5 ? base.g - (1.0 - 2.0 * blend.g) * base.g * (1.0 - base.g) : base.g + (2.0 * blend.g - 1.0) * (sqrt(base.g) - base.g); 334 result.b = blend.b < 0.5 ? base.b - (1.0 - 2.0 * blend.b) * base.b * (1.0 - base.b) : base.b + (2.0 * blend.b - 1.0) * (sqrt(base.b) - base.b); 335 } else if (mode < 3.5) { 336 result = base * blend; 337 } else if (mode < 4.5) { 338 result = 1.0 - (1.0 - base) * (1.0 - blend); 339 } else if (mode < 5.5) { 340 result = min(base + blend, 1.0); 341 } else if (mode < 6.5) { 342 result = max(base - blend, 0.0); 343 } else if (mode < 7.5) { 344 result = abs(base - blend); 345 } else if (mode < 8.5) { 346 result = base + blend - 2.0 * base * blend; 347 } else if (mode < 9.5) { 348 result.r = blend.r < 0.5 ? 2.0 * base.r * blend.r : 1.0 - 2.0 * (1.0 - base.r) * (1.0 - blend.r); 349 result.g = blend.g < 0.5 ? 2.0 * base.g * blend.g : 1.0 - 2.0 * (1.0 - base.g) * (1.0 - blend.g); 350 result.b = blend.b < 0.5 ? 2.0 * base.b * blend.b : 1.0 - 2.0 * (1.0 - base.b) * (1.0 - blend.b); 351 } else if (mode < 10.5) { 352 result = vec3(colorDodge(base.r, blend.r), colorDodge(base.g, blend.g), colorDodge(base.b, blend.b)); 353 } else if (mode < 11.5) { 354 result = vec3(colorBurn(base.r, blend.r), colorBurn(base.g, blend.g), colorBurn(base.b, blend.b)); 355 } else if (mode < 12.5) { 356 result = vec3(vividLight(base.r, blend.r), vividLight(base.g, blend.g), vividLight(base.b, blend.b)); 357 } else if (mode < 13.5) { 358 result = clamp(base + 2.0 * blend - 1.0, 0.0, 1.0); 359 } else { 360 result = vec3(vividLight(base.r, blend.r), vividLight(base.g, blend.g), vividLight(base.b, blend.b)); 361 result = step(0.5, result); 362 } 363 return result; 364 } 365 366 void main() { 367 vec2 uv = v_uv; 368 369 // When glass is off, pass through the blob texture directly 370 if (u_showGlass < 0.5) { 371 gl_FragColor = texture2D(u_blobTexture, uv); 372 return; 373 } 374 375 float columnUv = uv.x * u_columns; 376 float columnIndex = floor(columnUv); 377 float withinColumn = fract(columnUv); 378 379 float columnPhase = columnIndex * 2.39996; 380 float refractX = u_refractionStrength * sin(columnPhase + u_time * 0.06); 381 float refractY = u_refractionStrength * 0.7 * cos(columnPhase + u_time * 0.05); 382 383 // Blur simulation 384 vec3 color = vec3(0.0); 385 float totalWeight = 0.0; 386 387 for (int i = -4; i <= 4; i++) {
388 for (int j = -4; j <= 4; j++) { 389 vec2 offset = vec2(float(i), float(j)) * u_blurRadius / 4.0; 390 vec2 sampleUv = uv + offset + vec2(refractX, refractY); 391 sampleUv = clamp(sampleUv, 0.0, 1.0); 392 393 float weight = 1.0 - length(vec2(float(i), float(j))) / 5.66; 394 weight = max(weight, 0.0); 395 weight *= weight; 396 397 color += texture2D(u_blobTexture, sampleUv).rgb * weight; 398 totalWeight += weight; 399 } 400 } 401 color /= totalWeight; 402 403 // Glass column tint (backgroundColor at glassTint opacity) 404 color = mix(color, u_bgColor, u_glassTint); 405 406 // Horizontal gradient per column (left to right): 407 // white 0% â #808076 28% â white 100%, at 20% opacity 408 vec3 gradWhite = vec3(1.0); 409 vec3 gradGray = vec3(0.502, 0.502, 0.463); // #808076 410 vec3 gradColor; 411 if (withinColumn < 0.28) { 412 gradColor = mix(gradWhite, gradGray, withinColumn / 0.28); 413 } else { 414 gradColor = mix(gradGray, gradWhite, (withinColumn - 0.28) / (1.0 - 0.28)); 415 } 416 vec3 blended = blendColors(color, gradColor, u_glassBlendMode); 417 color = mix(color, blended, u_glassOverlay); 418 419 // Column left-edge border: thin vertical line at each column boundary 420 float borderLine = 1.0 - smoothstep(0.0, u_borderWidth, withinColumn); 421 color = mix(color, vec3(1.0), borderLine * u_borderOpacity); 422 423 // Intro fade: glass emerges from raw blob texture 424 vec3 rawColor = texture2D(u_blobTexture, uv).rgb; 425 color = mix(rawColor, color, u_glassIntro); 426 427 // Dither to break up banding (triangular noise, \xb10.5/255) 428 vec3 dither = vec3(fract(sin(dot(v_uv, vec2(12.9898, 78.233))) * 43758.5453)); 429 color += (dither - 0.5) / 255.0; 430 431 gl_FragColor = vec4(color, 1.0); 432 } 433`;function d(e,o,t){let i=e.createShader(o);return i?(e.shaderSource(i,t),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS))?i:(console.error("Shader compile error:",e.getShaderInfoLog(i)),e.deleteShader(i),null):null}function u(e,o,t){let i=d(e,e.VERTEX_SHADER,o),n=d(e,e.FRAGMENT_SHADER,t);if(!i||!n)return null;let r=e.createProgram();return r?(e.attachShader(r,i),e.attachShader(r,n),e.linkProgram(r),e.getProgramParameter(r,e.LINK_STATUS))?r:(console.error("Program link error:",e.getProgramInfoLog(r)),e.deleteProgram(r),null):null}e.s(["DEFAULT_CONFIG",0,n,"FractalGlassShader",0,function({config:e,configRef:d,canvasRef:c,className:f,paused:g=!1,onReady:m}){let v=(0,i.useRef)(null),h=c??v,p=(0,i.useRef)(0),x=(0,i.useRef)(null),_=(0,i.useRef)(!0),y=(0,i.useRef)(m);y.current=m;let R=(0,i.useRef)(e??n);e&&!d&&(R.current=e);let w=d??R,B=(0,i.useCallback)(()=>{let e=h.current;if(!e)return null;let o=e.getContext("webgl",{alpha:!1,antialias:!1,preserveDrawingBuffer:!0});return o||(console.warn("WebGL not supported"),null)},[]);return(0,i.useEffect)(()=>{let e=B();if(!e)return;let o=e.canvas,t=r(w.current.backgroundColor);e.clearColor(t[0],t[1],t[2],1),e.clear(e.COLOR_BUFFER_BIT);let i=u(e,a,l),n=u(e,a,s),d=u(e,a,b);if(!i||!n||!d)return;let c=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,c),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),e.STATIC_DRAW);let f=e.createTexture(),g=e.createFramebuffer(),m=e.createTexture(),v=e.createFramebuffer();function h(e,o,t,i,n){e.bindTexture(e.TEXTURE_2D,o),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,i,n,0,e.RGBA,e.UNSIGNED_BYTE,null),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindFramebuffer(e.FRAMEBUFFER,t),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,o,0),e.bindFramebuffer(e.FRAMEBUFFER,null)}let R={a_position:e.getAttribLocation(i,"a_position"),u_backgroundTexture:e.getUniformLocation(i,"u_backgroundTexture"),u_resolution:e.getUniformLocation(i,"u_resolution"),u_color1:e.getUniformLocation(i,"u_color1"),u_color2:e.getUniformLocation(i,"u_color2"),u_color3:e.getUniformLocation(i,"u_color3"),u_blob1Pos:e.getUniformLocation(i,"u_blob1Pos"),u_blob2Pos:e.getUniformLocation(i,"u_blob2Pos"),u_blob3Pos:e.getUniformLocation(i,"u_blob3Pos"),u_blob1Size:e.getUniformLocation(i,"u_blob1Size"),u_blob2Size:e.getUniformLocation(i,"u_blob2Size"),u_blob3Size:e.getUniformLocation(i,"u_blob3Size"),u_blob1Corner:e.getUniformLocation(i,"u_blob1Corner"),u_blob2Corner:e.getUniformLocation(i,"u_blob2Corner"),u_blob3Corner:e.getUniformLocation(i,"u_blob3Corner"),u_blob1Intensity:e.getUniformLocation(i,"u_blob1Intensity"),u_blob2Intensity:e.getUniformLocation(i,"u_blob2Intensity"),u_blob3Intensity:e.getUniformLocation(i,"u_blob3Intensity"),u_showBlobs:e.getUniformLocation(i,"u_showBlobs"),u_blob1Rotation:e.getUniformLocation(i,"u_blob1Rotation"),u_blob2Rotation:e.getUniformLocation(i,"u_blob2Rotation"),u_blob3Rotation:e.getUniformLocation(i,"u_blob3Rotation"),u_blobInnerGlow:e.getUniformLocation(i,"u_blobInnerGlow"),u_blobIntro:e.getUniformLocation(i,"u_blobIntro"),u_blendMode:e.getUniformLocation(i,"u_blendMode")},L={a_position:e.getAttribLocation(n,"a_position"),u_noiseType:e.getUniformLocation(n,"u_noiseType"),u_noiseIntensity:e.getUniformLocation(n,"u_noiseIntensity"),u_noiseScale:e.getUniformLocation(n,"u_noiseScale"),u_noiseOffset:e.getUniformLocation(n,"u_noiseOffset"),u_noisePosition:e.getUniformLocation(n,"u_noisePosition"),u_noiseBrightness:e.getUniformLocation(n,"u_noiseBrightness"),u_noiseOctaves:e.getUniformLocation(n,"u_noiseOctaves"),u_noiseRotation:e.getUniformLocation(n,"u_noiseRotation"),u_noiseColumns:e.getUniformLocation(n,"u_noiseColumns"),u_noiseRefraction:e.getUniformLocation(n,"u_noiseRefraction"),u_noiseIntro:e.getUniformLocation(n,"u_noiseIntro")},C={a_position:e.getAttribLocation(d,"a_position"),u_blobTexture:e.getUniformLocation(d,"u_blobTexture"),u_resolution:e.getUniformLocation(d,"u_resolution"),u_time:e.getUniformLocation(d,"u_time"),u_columns:e.getUniformLocation(d,"u_columns"),u_refractionStrength:e.getUniformLocation(d,"u_refractionStrength"),u_blurRadius:e.getUniformLocation(d,"u_blurRadius"),u_borderOpacity:e.getUniformLocation(d,"u_borderOpacity"),u_borderWidth:e.getUniformLocation(d,"u_borderWidth"),u_glassOverlay:e.getUniformLocation(d,"u_glassOverlay"),u_glassBlendMode:e.getUniformLocation(d,"u_glassBlendMode"),u_glassTint:e.getUniformLocation(d,"u_glassTint"),u_bgColor:e.getUniformLocation(d,"u_bgColor"),u_showGlass:e.getUniformLocation(d,"u_showGlass"),u_glassIntro:e.getUniformLocation(d,"u_glassIntro")},S=0,U=0;function T(){let t=Math.min(window.devicePixelRatio,2),i=Math.floor(o.clientWidth*t),n=Math.floor(o.clientHeight*t);(S!==i||U!==n)&&(o.width=i,o.height=n,S=i,U=n,h(e,m,v,i,n),h(e,f,g,i,n))}let E=!1,P=0,I=-1;function A(o){T();let t=w.current;I>=0&&!t.paused&&(P+=(o-I)*.001),I=o;let a=r(t.backgroundColor),l=r(t.color1),s=r(t.color2),b=r(t.color3);e.bindFramebuffer(e.FRAMEBUFFER,g),e.viewport(0,0,S,U),e.useProgram(n),e.bindBuffer(e.ARRAY_BUFFER,c),e.enableVertexAttribArray(L.a_position),e.vertexAttribPointer(L.a_position,2,e.FLOAT,!1,0,0);let u=P*t.noiseSpeed;e.uniform1f(L.u_noiseType,t.noiseType),e.uniform1f(L.u_noiseIntensity,t.noiseEnabled?t.noiseIntensity:0),e.uniform1f(L.u_noiseScale,t.noiseScale),e.uniform2f(L.u_noiseOffset,u*t.noiseDirection.x,u*t.noiseDirection.y),e.uniform2f(L.u_noisePosition,t.noisePosition.x,t.noisePosition.y),e.uniform1f(L.u_noiseBrightness,t.noiseBrightness),e.uniform1f(L.u_noiseOctaves,t.noiseOctaves),e.uniform1f(L.u_noiseRotation,t.noiseRotation*Math.PI/180),e.uniform1f(L.u_noiseColumns,t.columnCount),e.uniform1f(L.u_noiseRefraction,t.noiseRefraction),e.uniform1f(L.u_noiseIntro,1),e.drawArrays(e.TRIANGLES,0,6),e.bindFramebuffer(e.FRAMEBUFFER,v),e.viewport(0,0,S,U),e.useProgram(i),e.bindBuffer(e.ARRAY_BUFFER,c),e.enableVertexAttribArray(R.a_position),e.vertexAttribPointer(R.a_position,2,e.FLOAT,!1,0,0),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,f),e.uniform1i(R.u_backgroundTexture,0),e.uniform2f(R.u_resolution,S,U),e.uniform3f(R.u_color1,l[0],l[1],l[2]),e.uniform3f(R.u_color2,s[0],s[1],s[2]),e.uniform3f(R.u_color3,b[0],b[1],b[2]),e.uniform2f(R.u_blob1Pos,t.blob1.position.x,t.blob1.position.y),e.uniform2f(R.u_blob2Pos,t.blob2.position.x,t.blob2.position.y),e.uniform2f(R.u_blob3Pos,t.blob3.position.x,t.blob3.position.y),e.uniform2f(R.u_blob1Size,t.blob1.width,t.blob1.height),e.uniform2f(R.u_blob2Size,t.blob2.width,t.blob2.height),e.uniform2f(R.u_blob3Size,t.blob3.width,t.blob3.height),e.uniform1f(R.u_blob1Corner,t.blob1.cornerRadius),e.uniform1f(R.u_blob2Corner,t.blob2.cornerRadius),e.uniform1f(R.u_blob3Corner,t.blob3.cornerRadius),e.uniform1f(R.u_blob1Intensity,t.blob1.intensity),e.uniform1f(R.u_blob2Intensity,t.blob2.intensity),e.uniform1f(R.u_blob3Intensity,t.blob3.
433intensity),e.uniform1f(R.u_showBlobs,+!!t.showBlobs),e.uniform1f(R.u_blob1Rotation,t.blob1.rotation*Math.PI/180),e.uniform1f(R.u_blob2Rotation,t.blob2.rotation*Math.PI/180),e.uniform1f(R.u_blob3Rotation,t.blob3.rotation*Math.PI/180),e.uniform1f(R.u_blobInnerGlow,t.blobInnerGlow),e.uniform1f(R.u_blobIntro,1),e.uniform1f(R.u_blendMode,t.blobBlendMode),e.drawArrays(e.TRIANGLES,0,6),e.bindFramebuffer(e.FRAMEBUFFER,null),e.viewport(0,0,S,U),e.useProgram(d),e.bindBuffer(e.ARRAY_BUFFER,c),e.enableVertexAttribArray(C.a_position),e.vertexAttribPointer(C.a_position,2,e.FLOAT,!1,0,0),e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,m),e.uniform1i(C.u_blobTexture,0),e.uniform2f(C.u_resolution,S,U),e.uniform1f(C.u_time,P),e.uniform1f(C.u_columns,t.columnCount),e.uniform1f(C.u_refractionStrength,t.refractionStrength),e.uniform1f(C.u_blurRadius,t.blurRadius),e.uniform1f(C.u_borderOpacity,t.borderOpacity),e.uniform1f(C.u_borderWidth,t.borderWidth),e.uniform1f(C.u_glassOverlay,t.glassOverlay),e.uniform1f(C.u_glassBlendMode,t.glassBlendMode),e.uniform1f(C.u_glassTint,t.glassTint),e.uniform3f(C.u_bgColor,a[0],a[1],a[2]),e.uniform1f(C.u_showGlass,+!!t.showGlass),e.uniform1f(C.u_glassIntro,1),e.drawArrays(e.TRIANGLES,0,6),!E&&S>0&&U>0&&(E=!0,y.current?.()),_.current&&(p.current=requestAnimationFrame(A))}x.current=A,T(),p.current=requestAnimationFrame(A);let j=new ResizeObserver(()=>T());return j.observe(o),()=>{x.current=null,cancelAnimationFrame(p.current),j.disconnect(),e.deleteProgram(i),e.deleteProgram(n),e.deleteProgram(d),e.deleteBuffer(c),e.deleteTexture(m),e.deleteTexture(f),e.deleteFramebuffer(v),e.deleteFramebuffer(g)}},[B,w]),(0,i.useEffect)(()=>{_.current=!g,!g&&x.current&&(cancelAnimationFrame(p.current),p.current=requestAnimationFrame(x.current))},[g]),(0,o.jsx)("canvas",{ref:h,"data-visual-mask":!0,className:(0,t.clx)("block size-full",f)})}],209439);var c=e.i(847510);let f={Normal:0,Overlay:1,"Soft Light":2,Multiply:3,Screen:4,Add:5,Subtract:6,Difference:7,Exclusion:8,"Hard Light":9,"Color Dodge":10,"Color Burn":11,"Vivid Light":12,"Linear Light":13,"Hard Mix":14};e.s(["ShaderTweakpane",0,function({configRef:e,canvasRef:t,className:r}){let a=(0,i.useRef)(null),l=(0,i.useRef)(null),s=(0,i.useRef)({dragging:!1,startX:0,startY:0,origX:0,origY:0}),b=(0,i.useCallback)(e=>{let o=a.current?.getBoundingClientRect();if(!o||!a.current||e.clientY-o.top>30)return;let t=a.current;s.current={dragging:!0,startX:e.clientX,startY:e.clientY,origX:o.left,origY:o.top},t.style.right="auto",t.style.left=`${o.left}px`,t.style.top=`${o.top}px`,t.setPointerCapture(e.pointerId)},[]),d=(0,i.useCallback)(e=>{let o=s.current;o.dragging&&a.current&&(a.current.style.left=`${o.origX+(e.clientX-o.startX)}px`,a.current.style.top=`${o.origY+(e.clientY-o.startY)}px`)},[]),u=(0,i.useCallback)(()=>{s.current.dragging=!1},[]);return(0,i.useEffect)(()=>{let o=e.current;if(!a.current||!o)return;let i=new c.Pane({title:"Shader Controls",expanded:!0,container:a.current});l.current=i;let r=i.addFolder({title:"Blobs",expanded:!1});r.addBinding(o,"showBlobs",{label:"Show"});let s=(e,o)=>{e.addBinding(o.position,"x",{min:0,max:1,step:.01,label:"X"}),e.addBinding(o.position,"y",{min:0,max:1.5,step:.01,label:"Y"}),e.addBinding(o,"width",{min:.1,max:2,step:.01,label:"Width"}),e.addBinding(o,"height",{min:.1,max:2,step:.01,label:"Height"}),e.addBinding(o,"rotation",{min:-180,max:180,step:.5,label:"Rotation (deg)"}),e.addBinding(o,"cornerRadius",{min:0,max:1,step:.01,label:"Corner Radius"})};s(r.addFolder({title:"Blob 1 (Left)"}),o.blob1),s(r.addFolder({title:"Blob 2 (Center)"}),o.blob2),s(r.addFolder({title:"Blob 3 (Right)"}),o.blob3),r.addBinding(o,"blobBlendMode",{label:"Blend Mode",options:f}),r.addBinding(o,"color1",{label:"Color 1"}),r.addBinding(o,"color2",{label:"Color 2"}),r.addBinding(o,"color3",{label:"Color 3"});let b=i.addFolder({title:"Glass",expanded:!1});b.addBinding(o,"showGlass",{label:"Show"}),b.addBinding(o,"columnCount",{min:1,max:30,step:1,label:"Columns"}),b.addBinding(o,"refractionStrength",{min:0,max:.1,step:.001,label:"Refraction"}),b.addBinding(o,"blurRadius",{min:0,max:.1,step:.001,label:"Blur Radius"}
433),b.addBinding(o,"borderOpacity",{min:0,max:1,step:.01,label:"Border Opacity"}),b.addBinding(o,"borderWidth",{min:0,max:.02,step:.001,label:"Border Width"}),b.addBinding(o,"glassOverlay",{min:0,max:1,step:.01,label:"Gradient Overlay"}),b.addBinding(o,"glassTint",{min:0,max:1,step:.01,label:"Glass Tint"}),b.addBinding(o,"glassBlendMode",{label:"Blend Mode",options:f}),b.addBinding(o,"backgroundColor",{label:"Tint Color"});let d=i.addFolder({title:"Noise",expanded:!1});return d.addBinding(o,"noiseEnabled",{label:"Enabled"}),d.addBinding(o,"noiseType",{label:"Pattern",options:{Waves:0,Stripes:1}}),d.addBinding(o,"noiseIntensity",{min:0,max:.5,step:.01,label:"Intensity"}),d.addBinding(o,"noiseBrightness",{min:0,max:1,step:.01,label:"Brightness"}),d.addBinding(o,"noiseScale",{min:.5,max:10,step:.1,label:"Scale"}),d.addBinding(o,"noiseSpeed",{min:0,max:2,step:.01,label:"Speed"}),d.addBinding(o,"noiseOctaves",{min:1,max:4,step:1,label:"Octaves"}),d.addBinding(o,"noiseRotation",{min:-180,max:180,step:1,label:"Rotation"}),d.addBinding(o,"noiseRefraction",{min:0,max:.2,step:.005,label:"Column Refraction"}),d.addBinding(o.noiseDirection,"x",{min:-2,max:2,step:.1,label:"Dir X"}),d.addBinding(o.noiseDirection,"y",{min:-2,max:2,step:.1,label:"Dir Y"}),d.addBinding(o.noisePosition,"x",{min:-5,max:5,step:.1,label:"Pos X"}),d.addBinding(o.noisePosition,"y",{min:-5,max:5,step:.1,label:"Pos Y"}),i.addButton({title:"Play / Pause"}).on("click",()=>{o.paused=!o.paused}),i.addButton({title:"Copy Config to Clipboard"}).on("click",()=>{let o=JSON.stringify(e.current,null,2);navigator.clipboard.writeText(o)}),t&&i.addButton({title:"Capture Frame"}).on("click",()=>{let e=t.current;if(!e)return;let o=document.createElement("a");o.download="shader-frame.png",o.href=e.toDataURL("image/png"),o.click()}),i.addButton({title:"Reset to Defaults"}).on("click",()=>{let o=e.current;o&&(Object.assign(o.blob1.position,n.blob1.position),Object.assign(o.blob1,{width:n.blob1.width,height:n.blob1.height,rotation:n.blob1.rotation}),Object.assign(o.blob2.position,n.blob2.position),Object.assign(o.blob2,{width:n.blob2.width,height:n.blob2.height,rotation:n.blob2.rotation}),Object.assign(o.blob3.position,n.blob3.position),Object.assign(o.blob3,{width:n.blob3.width,height:n.blob3.height,rotation:n.blob3.rotation}),o.showBlobs=n.showBlobs,o.showGlass=n.showGlass,o.noiseEnabled=n.noiseEnabled,o.noiseType=n.noiseType,o.noiseIntensity=n.noiseIntensity,o.noiseScale=n.noiseScale,o.noiseSpeed=n.noiseSpeed,o.noiseOctaves=n.noiseOctaves,o.blobBlendMode=n.blobBlendMode,o.noiseRotation=n.noiseRotation,o.noiseBrightness=n.noiseBrightness,o.noiseRefraction=n.noiseRefraction,Object.assign(o.noiseDirection,n.noiseDirection),Object.assign(o.noisePosition,n.noisePosition),o.columnCount=n.columnCount,o.refractionStrength=n.refractionStrength,o.blurRadius=n.blurRadius,o.borderOpacity=n.borderOpacity,o.borderWidth=n.borderWidth,o.glassOverlay=n.glassOverlay,o.glassBlendMode=n.glassBlendMode,o.glassTint=n.glassTint,o.backgroundColor=n.backgroundColor,o.color1=n.color1,o.color2=n.color2,o.color3=n.color3,o.paused=n.paused,i.refresh())}),()=>{i.dispose()}},[e]),(0,o.jsx)("div",{ref:a,className:r,style:{cursor:"grab"},onPointerDown:b,onPointerMove:d,onPointerUp:u})}],853104)},779452,e=>{"use strict";e.s(["CUSTOMER_LOGOS",0,[{src:"/logos/legora.svg",alt:"Legora",title:"Legora",originalWidth:135,originalHeight:42,width:80},{src:"/logos/collect/incidentio-white.svg",alt:"incident.io's logo",title:"incident.io",className:"-translate-y-1 invert",originalWidth:1e3,originalHeight:248,width:95},{src:"/logos/bridge.svg",alt:"Bridge's logo",title:"Bridge",className:"translate-y-0.5",originalWidth:95,originalHeight:37,width:90},{src:"/logos/cognition.svg",alt:"Cognition's logo",title:"Cognition",originalWidth:160,originalHeight:38,width:100},{src:"/logos/openrouter.svg",alt:"OpenRouter's logo",title:"OpenRouter",originalWidth:135,originalHeight:42,width:130},{src:"/logos/lead.svg",alt:"Lead Bank's logo",title:"Lead Bank",originalWidth:1024,originalHeight:321,width:80},{src:"/logos/wispr.svg",alt:"Wispr's logo",title:"Wispr",originalWidth:135,originalHeight:42,width:110},{src:"/logos/pearl.svg",alt:"Pearl Health's logo",title:"Pearl Health",originalWidth:445,originalHeight:115,width:95},{src:"/logos/primer.svg",alt:"Primer's logo",title:"Primer",originalWidth:90,originalHeight:23,width:72},{src:"/logos/buildkite.svg",alt:"Buildkite's logo",title:"Buildkite",originalWidth:962,originalHeight:160,width:105},{src:"/logos/attention.svg",alt:"Attention's logo",title:"Attention",originalWidth:829,originalHeight:204,width:90},{src:"/logos/moonpay.svg",alt:"MoonPay's logo",title:"MoonPay",originalWidth:129,originalHeight:27,width:100},{src:"/logos/collect/sphere-white.svg",alt:"Sphere's logo",title:"Sphere",className:"invert",originalWidth:1199,originalHeight:366,width:85},{src:"/logos/dovetail.svg",alt:"Dovetail's logo",title:"Dovetail",originalWidth:1384,originalHeight:240,width:104}],"getLogoSize",0,({originalWidth:e,originalHeight:o,width:t})=>({width:t,height:t*o/e})])},925316,e=>{"use strict";var o=e.i(503423),t=e.i(111760),i=e.i(665096);e.s(["ArrowLink",0,function({children:e,className:n,arrowClassName:r,...a}){return(0,o.jsxs)(i.default,{...a,className:(0,t.clx)("group text-sm",n),children:[e," ",(0,o.jsx)("span",{"aria-hidden":"true",className:(0,t.clx)("ml-1.5 inline-block transition duration-150 group-hover:translate-x-1 group-focus-visible:translate-x-1",r),children:"â"})]})}])},903825,e=>{"use strict";var o=e.i(503423),t=e.i(925316),i=e.i(348978),n=e.i(745983),r=e.i(6278),a=e.i(851315),l=e.i(111760),s=e.i(779452),b=e.i(912184),d=e.i(665096),u=e.i(49806),c=e.i(491344),f=e.i(209439);function g({children:e,className:t}){let[i,{inView:n}]=(0,r.useIntersectionObserver)({triggerOnce:!1,rootMargin:"0px 0px -5% 0px"});return(0,o.jsx)("div",{className:"col-span-full pb-14 max-1079:pt-3",children:(0,o.jsx)("div",{ref:i,"data-inview":n,className:(0,l.clx)("flex flex-wrap items-center justify-center gap-x-10 gap-y-4 transition duration-500 ease-out-quad data-[inview=false]:opacity-50 max-767:scale-90 min-768:gap-x-16 min-1080:gap-x-14",t),children:e})})}function m({src:e,alt:t,title:i,width:n,height:r,className:a}){return(0,o.jsx)(b.default,{src:e,alt:t,title:i,width:n,height:r,className:a})}function v({label:e,headline:l,description:s,image:g,poster:m,shaderConfig:h,showTourLink:p=!1,ctaLabel:x="Book demo",ctaHref:_="/book-a-demo",tourHref:y,tourLabel:R,children:w}){let B=(0,u.useRef)({...structuredClone(f.DEFAULT_CONFIG),...h}),L=(0,u.useRef)(null),C=(0,a.useShouldAnimate)(),[S,U]=(0,u.useState)(!1),T=(0,u.useCallback)(()=>U(!0),[]),[E,{inView:P}]=(0,r.useIntersectionObserver)({initialValue:!0}),[I,A]=(0,u.useState)(!1),[j,O]=(0,u.useState)(!1);return(0,o.jsx)("section",{className:"pt-12 min-1080:pt-10",children:(0,o.jsxs)(n.SectionContainer,{className:"min-1080:gap-y-14",children:[(0,o.jsxs)("div",{className:"col-span-full grid gap-8 max-1079:px-3 min-1080:grid-cols-12",children:[(0,o.jsxs)("div",{className:"min-1080:col-span-6",children:[(0,o.jsx)("span",{className:"mb-6 block text-lg font-medium tracking-normal",children:e}),(0,o.jsx)("h1",{className:"mb-10 font-serif text-4xl font-light leading-[1] tracking-tight min-1080:text-[48px]",children:l}),(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)(d.default,{href:_,className:"contents",children:(0,o.jsx)(i.Button,{variant:"primary",label:x})}),p&&y&&(0,o.jsx)(t.ArrowLink,{href:y,className:"px-4 py-3 opacity-70 transition-opacity hover:opacity-100",arrowClassName:"group-hover:translate-x-1.5",children:R})]})]}),(0,o.jsx)("div",{className:"flex items-end min-1080:col-span-5 min-1080:col-start-8 min-1080:mb-[5.5rem]",children:(0,o.jsx)("p",{className:"text-pretty text-sm leading-relaxed text-brand-gray-muted",children:s})})]}),g&&m&&(0,o.jsx)("div",{"data-ready":j,className:"col-span-full rounded-2xl transition-opacity duration-200 data-[ready=false]:opacity-0",children:(0,o.jsxs)("div",{ref:E,"data-visual-mask":!0,className:"relative aspect-[1095/522] w-full overflow-clip rounded-2xl",children:[C&&
433(0,o.jsx)("div",{className:"absolute overflow-clip rounded-2xl",children:(0,o.jsx)(f.FractalGlassShader,{configRef:B,canvasRef:L,paused:!P,onReady:T})}),(0,o.jsx)(b.default,{src:m,alt:"","aria-hidden":"true",className:"object-cover transition-opacity duration-500 data-[hidden=true]:pointer-events-none data-[hidden=true]:opacity-0","data-hidden":S,onLoad:()=>O(!0),priority:!0}),!1,(0,o.jsx)("div",{"data-loaded":I,className:"absolute bottom-0 left-1/2 w-full max-w-[912px] -translate-x-1/2 translate-y-1 transform-gpu rounded-t-2xl bg-[radial-gradient(100%_86.26%_at_38.25%_-4.84%,rgba(247,247,247,0.70)_0%,rgba(247,247,247,0.60)_25%,rgba(247,247,247,0.50)_80%,_rgba(229,228,228,0.1))] px-2 pt-2 ring-1 ring-[#fafafa]/80 backdrop-blur-2xl duration-[600ms] ease-[cubic-bezier(0.25,0.75,0.65,0.94)] data-[loaded=false]:scale-[1.015] data-[loaded=false]:opacity-0 max-767:max-w-[calc(100%-2rem)] md:max-1079:max-w-[calc(100%-8rem)]",children:(0,o.jsx)("div",{className:"relative overflow-clip rounded-t-lg shadow-md after:absolute after:inset-0 after:rounded-t-lg after:ring-1 after:ring-black/[0.03]",children:(0,o.jsx)(c.Image,{src:g.src,onLoad:()=>A(!0),alt:g.alt,className:"object-contain",quality:100,priority:!0})})})]})}),w]})})}e.i(853104),v.Logos=g,v.Logo=m,v.DefaultLogos=function({className:e}){return(0,o.jsx)(g,{className:e,children:s.CUSTOMER_LOGOS.map(e=>(0,o.jsx)(m,{src:e.src,alt:e.alt,title:e.title,className:e.className,...(0,s.getLogoSize)(e)},e.src))})},e.s(["ProductHero",0,v])},19499,e=>{"use strict";var o=e.i(503423),t=e.i(745983),i=e.i(6278),n=e.i(111760),r=e.i(912184),a=e.i(49806);function l({children:e}){return(0,o.jsx)("h2",{className:"text-brand-gray-dark min-1080:text-[40px] font-serif text-3xl leading-none font-light text-pretty",children:e})}function s({children:e}){return(0,o.jsx)("p",{className:"text-brand-gray-dark max-w-[50ch] text-sm leading-[1.4] text-pretty",children:e})}function b({integrations:e,className:t}){let[a,{inView:l}]=(0,i.useIntersectionObserver)({triggerOnce:!0,rootMargin:"0px 0px -20% 0px"});return(0,o.jsxs)("div",{className:t??"min-1080:col-span-6 min-1080:p-20 relative",children:[(0,o.jsx)("div",{className:"bg-brand-gray-dark/10 max-1079:hidden absolute inset-y-0 -left-2 w-px"}),(0,o.jsx)(u,{className:"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"}),(0,o.jsxs)("div",{className:"relative",children:[(0,o.jsx)("div",{className:"text-brand-gray-dark/10 dashed-border-l max-1079:hidden absolute -inset-y-20 left-0 w-px"}),(0,o.jsx)("div",{className:"text-brand-gray-dark/10 dashed-border-l max-1079:hidden absolute -inset-y-20 right-0 w-px"}),(0,o.jsx)("div",{className:"text-brand-gray-dark/10 dashed-border-t absolute -inset-x-[5.5rem] top-0 h-px"}),(0,o.jsx)("div",{className:"text-brand-gray-dark/10 dashed-border-b absolute -inset-x-[5.5rem] bottom-0 h-px"}),(0,o.jsx)("div",{ref:a,className:"bg-brand-gray-light/40 after:border-brand-gray-light relative grid grid-cols-5 after:pointer-events-none after:absolute after:inset-0 after:border",children:e.map((e,t)=>(0,o.jsx)("div",{className:(0,n.clx)("border-brand-gray-light relative flex aspect-square w-full items-center justify-center border-r border-b",{"before:absolute before:inset-0 before:bg-white before:opacity-0":e,"before:animate-fade-in before:[--duration:500ms] before:[--easing:cubic-bezier(0.25,0.46,0.45,0.94)]":e&&l}),style:{"--delay":`${e?.delay??0}ms`},children:e&&(0,o.jsx)(r.default,{src:e.icon,alt:`${e.name} logo`,title:e.name,width:28,height:28,className:`object-contain ${l?"animate-fade-in-zoom opacity-0 [--duration:800ms] [--easing:cubic-bezier(0.25,0.46,0.45,0.94)] [--scale:0.9]":"opacity-0"}`})},e?.name??`empty-${t}`))}),(0,o.jsx)("div",{className:"bg-brand-gray-medium absolute -top-[3px] -left-[3px] size-1.5 rounded-full"}),(0,o.jsx)("div",{className:"bg-brand-gray-medium absolute -top-[3px] -right-[3px] size-1.5 rounded-full"}),(0,o.jsx)("div",{className:"bg-brand-gray-medium absolute -right-[3px] -bottom-[3px] size-1.5 rounded-full"}),(0,o.jsx)("div",{className:"bg-brand-gray-medium absolute -bottom-[3px] -left-[3px] size-1.5 rounded-full"})]})]})}function d({children:e}){let i=a.Children.toArray(e),n=i.find(e=>(0,a.isValidElement)(e)&&e.type===l),r=i.find(e=>(0,a.isValidElement)(e)&&e.type===s),u=i.find(e=>(0,a.isValidElement)(e)&&e.type===b);return(0,o.jsxs)("section",{className:"relative",children:[(0,o.jsx)(t.OuterContainer,{children:(0,o.jsx)("div",{className:"bg-brand-gray-muted/10 h-
433px"})}),(0,o.jsxs)(t.SectionContainer,{className:"min-1080:gap-y-0 relative",children:[(0,o.jsx)(t.SectionContainerLines,{className:"min-1080:block hidden"}),(0,o.jsxs)("div",{className:"max-1079:px-3 max-1079:pt-12 min-1080:col-span-6 min-1080:pb-12 min-1080:pl-6 flex flex-col justify-center gap-6 pb-6 text-left",children:[n,r]}),u]})]})}d.Title=l,d.Description=s,d.Grid=b;let u=e=>(0,o.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:486,height:486,fill:"none",...e,children:(0,o.jsxs)("g",{opacity:.12,children:[(0,o.jsx)("mask",{id:"path-1-inside-1_702_532",fill:"#fff",children:(0,o.jsx)("path",{d:"M486 243c0 134.205-108.795 243-243 243C108.795 486 0 377.205 0 243 0 108.795 108.795 0 243 0c134.205 0 243 108.795 243 243Zm-454.653 0c0 116.893 94.76 211.653 211.653 211.653 116.893 0 211.653-94.76 211.653-211.653 0-116.893-94.76-211.653-211.653-211.653-116.893 0-211.653 94.76-211.653 211.653Z"})}),(0,o.jsx)("path",{stroke:"#808076",strokeDasharray:"2.99 2.99",strokeOpacity:.8,strokeWidth:2.99,d:"M486 243c0 134.205-108.795 243-243 243C108.795 486 0 377.205 0 243 0 108.795 108.795 0 243 0c134.205 0 243 108.795 243 243Zm-454.653 0c0 116.893 94.76 211.653 211.653 211.653 116.893 0 211.653-94.76 211.653-211.653 0-116.893-94.76-211.653-211.653-211.653-116.893 0-211.653 94.76-211.653 211.653Z",mask:"url(#path-1-inside-1_702_532)"})]})});e.s(["IntegrationsGrid",0,d])}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.