{
  "version": 3,
  "sources": ["/cdn/shop/t/18/assets/footer-family-motion.js?verify=monitor10"],
  "sourcesContent": ["/* Prototype-only local image deformation. Original picture remains the fallback. */\n(() => {\n  const script = document.currentScript;\n  const art = document.querySelector('.ffp-art');\n  if (!art || art.querySelector('canvas')) return;\n  const picture = art.querySelector('img'), canvas = document.createElement('canvas');\n  const gl = canvas.getContext('webgl', { alpha:false, antialias:false });\n  if (!gl) return;\n  canvas.setAttribute('aria-hidden','true');\n  const vertex = 'attribute vec2 p; varying vec2 uv; void main(){uv=vec2((p.x+1.)*.5,(1.-p.y)*.5);gl_Position=vec4(p,0,1);}';\n  const fragment = `precision highp float;\n  varying vec2 uv; uniform sampler2D tex, babyPoses, babyPlate; uniform float t, blink, mobile, babyReady; uniform vec2 sourceSize, displaySize;\n  vec4 babyFrame(vec2 q,float frame){\n    vec2 cell=vec2(mod(frame,3.),floor(frame/3.));\n    vec3 rgb=texture2D(babyPoses,(cell+clamp(q,.002,.998))/vec2(3.,2.)).rgb;\n    float chroma=max(rgb.r,max(rgb.g,rgb.b))-min(rgb.r,min(rgb.g,rgb.b));\n    float a=max(smoothstep(.012,.045,chroma),smoothstep(.82,.92,min(rgb.r,min(rgb.g,rgb.b))));\n    return vec4(rgb*a,a);\n  }\n  vec3 baby(vec3 col,vec2 p){\n    vec2 px=p*sourceSize;\n    vec2 origin=mobile>.5?vec2(70.,354.):vec2(100.,205.);\n    vec2 size=mobile>.5?vec2(255.,235.):vec2(310.,285.);\n    vec2 q=(px-origin)/size;\n    if(babyReady<.5||q.x<0.||q.x>1.||q.y<0.||q.y>1.)return col;\n    vec2 platePx=mobile>.5?(px-vec2(75.,426.))*vec2(300./250.,135./121.)+vec2(100.,298.):px;\n    vec2 patch=(platePx-vec2(100.,298.))/vec2(300.,135.);\n    float mask=smoothstep(0.,.035,patch.x)*smoothstep(0.,.035,patch.y)*(1.-smoothstep(.965,1.,patch.x))*(1.-smoothstep(.965,1.,patch.y));\n    col=mix(col,texture2D(babyPlate,platePx/vec2(1983.,793.)).rgb,mask);\n    float cycle=mod(t,23.);\n    float progress=cycle<3.?0.:(cycle<6.?smoothstep(3.,6.,cycle):(cycle<20.?1.:1.-smoothstep(20.,23.,cycle)));\n    float f=progress*5.;\n    vec4 sprite=mix(babyFrame(q,floor(f)),babyFrame(q,min(5.,floor(f)+1.)),fract(f));\n    return col*(1.-sprite.a)+sprite.rgb;\n  }\n  vec3 monitorFeed(vec3 col,vec2 p){\n    if(babyReady<.5)return col;\n    // Inner LCD corners only; preserve the illustrated bezel and controls.\n    vec2 a=mobile>.5?vec2(243.,785.):vec2(722.,453.);\n    vec2 b=mobile>.5?vec2(359.,781.):vec2(834.,450.);\n    vec2 c=mobile>.5?vec2(247.,851.):vec2(726.,520.);\n    vec2 d=mobile>.5?vec2(364.,845.):vec2(839.,516.);\n    vec2 px=p*sourceSize;\n    vec2 q=vec2(0.5,(px.y-a.y)/(c.y-a.y));\n    // Inverse bilinear projection keeps the feed inside the tilted LCD.\n    for(int i=0;i<4;i++){\n      vec2 left=mix(a,c,q.y),right=mix(b,d,q.y);\n      q.x=(px.x-left.x)/(right.x-left.x);\n      vec2 top=mix(a,b,q.x),bottom=mix(c,d,q.x);\n      q.y=(px.y-top.y)/(bottom.y-top.y);\n    }\n    if(q.x<0.||q.x>1.||q.y<0.||q.y>1.)return col;\n    vec2 origin=mobile>.5?vec2(50.,386.):vec2(70.,245.);\n    vec2 size=mobile>.5?vec2(320.,187.):vec2(380.,225.);\n    vec2 feedPoint=(origin+q*size)/sourceSize;\n    // Same baby() and clock as the crib: no separate animation or drift.\n    vec3 feed=baby(texture2D(tex,feedPoint).rgb,feedPoint);\n    float edge=min(min(q.x,1.-q.x)*112.,min(q.y,1.-q.y)*66.);\n    return mix(col,feed,smoothstep(0.,.8,edge));\n  }\n  float region(vec2 p,vec2 c,vec2 r){return 1.-smoothstep(.45,1.,length((p-c)/r));}\n  vec3 eye(vec3 col,vec2 p,vec2 c,vec2 r){\n    vec2 q=(p-c)/r; float front=-1.2+2.4*blink; float mask=(1.-smoothstep(.88,1.,length(q)))*(1.-smoothstep(front-.08,front+.08,q.y));\n    col=mix(col,vec3(.365,.245,.59),mask*step(.01,blink));\n    float crease=(1.-smoothstep(.055,.12,abs(q.y-(.12+.3*(1.-q.x*q.x)))))*(1.-smoothstep(.72,.88,abs(q.x)))*smoothstep(.75,.98,blink);\n    return mix(col,vec3(.20,.11,.34),crease);\n  }\n  void main(){\n    float scale=max(displaySize.x/sourceSize.x,displaySize.y/sourceSize.y);\n    vec2 visible=displaySize/(sourceSize*scale);\n    vec2 p=uv*visible+(1.-visible)*vec2(.5,.6);\n    float m=0.;\n    if(mobile>.5){\n      m+=region(p,vec2(.515,.21),vec2(.085,.17));m+=region(p,vec2(.795,.31),vec2(.065,.19));\n      m+=region(p,vec2(.13,.58),vec2(.085,.065));m+=region(p,vec2(.735,.52),vec2(.08,.07));\n      m+=region(p,vec2(.05,.87),vec2(.18,.2));m+=region(p,vec2(.96,.89),vec2(.2,.18));\n      m+=region(p,vec2(.95,.3),vec2(.1,.17));\n    }else{\n      m+=region(p,vec2(.495,.14),vec2(.045,.17));m+=region(p,vec2(.745,.28),vec2(.045,.22));\n      m+=region(p,vec2(.33,.52),vec2(.045,.1));m+=region(p,vec2(.7,.51),vec2(.045,.09));\n      m+=region(p,vec2(.12,.82),vec2(.14,.17));m+=region(p,vec2(.96,.65),vec2(.08,.2));\n      m+=region(p,vec2(.945,.16),vec2(.1,.2));\n    }\n    float windTime=t*(mobile>.5?.5:.75);\n    vec2 wind=vec2(sin(windTime*1.15+p.y*13.)+sin(windTime*.71+p.x*19.)*.3,cos(windTime*.8+p.x*13.)*.25);\n    vec2 amplitude=mobile>.5?vec2(.0045,.00175):vec2(.0022,.001);\n    vec2 sampleAt=p+wind*min(m,1.)*amplitude;\n    vec3 col=monitorFeed(baby(texture2D(tex,sampleAt).rgb,p),p);\n    if(mobile>.5){col=eye(col,p,vec2(539./1229.,666./1280.),vec2(19./1229.,23./1280.));col=eye(col,p,vec2(642./1229.,656./1280.),vec2(14./1229.,21./1280.));}\n    else{col=eye(col,p,vec2(1006./1983.,354./793.),vec2(17./1983.,21./793.));col=eye(col,p,vec2(1110./1983.,350./793.),vec2(13./1983.,20./793.));}\n    gl_FragColor=vec4(col,1.);\n  }`;\n  function shader(type,code){const s=gl.createShader(type);gl.shaderSource(s,code);gl.compileShader(s);if(!gl.getShaderParameter(s,gl.COMPILE_STATUS))throw Error(gl.getShaderInfoLog(s));return s;}\n  let program;\n  try {program=gl.createProgram();gl.attachShader(program,shader(gl.VERTEX_SHADER,vertex));gl.attachShader(program,shader(gl.FRAGMENT_SHADER,fragment));gl.linkProgram(program);if(!gl.getProgramParameter(program,gl.LINK_STATUS))throw Error('link');}\n  catch(e){return;}\n  gl.useProgram(program);const buffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,buffer);gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),gl.STATIC_DRAW);\n  const pos=gl.getAttribLocation(program,'p');gl.enableVertexAttribArray(pos);gl.vertexAttribPointer(pos,2,gl.FLOAT,false,0,0);\n  const uniforms={};['t','blink','mobile','sourceSize','displaySize','babyReady'].forEach(k=>uniforms[k]=gl.getUniformLocation(program,k));\n  async function extraTexture(url,unit,name){const img=new Image();img.crossOrigin='anonymous';img.src=url;await img.decode();const tx=gl.createTexture();gl.activeTexture(gl.TEXTURE0+unit);gl.bindTexture(gl.TEXTURE_2D,tx);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,img);gl.uniform1i(gl.getUniformLocation(program,name),unit);gl.activeTexture(gl.TEXTURE0);}\n  if(script?.dataset.babyPoses&&script?.dataset.babyPlate)Promise.all([extraTexture(script.dataset.babyPoses,1,'babyPoses'),extraTexture(script.dataset.babyPlate,2,'babyPlate')]).then(()=>gl.uniform1f(uniforms.babyReady,1)).catch(()=>{});\n  const texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,texture);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.LINEAR);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.LINEAR);\n  const reduced=matchMedia('(prefers-reduced-motion: reduce)');let ready=false,visible=false,raf=0,last=0,time=0,loadedSrc='';\n  function draw(now){raf=0;if(!ready||!visible||reduced.matches||document.hidden)return;\n    if(last && now-last<32){raf=requestAnimationFrame(draw);return;}\n    time+=last?Math.min((now-last)/1000,.05):0;last=now;\n    const cycle=(time+4.5)%6.5;\n    const b=cycle<.38?Math.sin(Math.PI*cycle/.38):0;\n    gl.uniform1f(uniforms.t,time);gl.uniform1f(uniforms.blink,b);gl.drawArrays(gl.TRIANGLES,0,6);canvas.hidden=false;raf=requestAnimationFrame(draw);\n  }\n  function sync(){cancelAnimationFrame(raf);raf=0;last=0;canvas.hidden=true;if(ready&&!reduced.matches)raf=requestAnimationFrame(draw);}\n  async function load(){const src=picture.currentSrc;if(!src||src===loadedSrc)return;loadedSrc=src;const img=new Image();img.crossOrigin='anonymous';img.src=src;try{await img.decode();if(src!==loadedSrc)return;gl.bindTexture(gl.TEXTURE_2D,texture);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGB,gl.RGB,gl.UNSIGNED_BYTE,img);gl.uniform2f(uniforms.sourceSize,img.naturalWidth,img.naturalHeight);gl.uniform1f(uniforms.mobile,img.naturalHeight>img.naturalWidth?1:0);ready=true;resize();}catch(e){canvas.hidden=true;}}\n  function resize(){canvas.hidden=true;const r=art.getBoundingClientRect(),d=Math.min(devicePixelRatio,1.5);canvas.width=Math.round(r.width*d);canvas.height=Math.round(r.height*d);gl.viewport(0,0,canvas.width,canvas.height);gl.uniform2f(uniforms.displaySize,r.width,r.height);sync();}\n  art.append(canvas);canvas.hidden=true;picture.addEventListener('load',load);new ResizeObserver(()=>{resize();load();}).observe(art);\n  new IntersectionObserver(entries=>{visible=entries[0].isIntersecting;sync();},{threshold:.05}).observe(art);\n  reduced.addEventListener('change',sync);document.addEventListener('visibilitychange',sync);canvas.addEventListener('webglcontextlost',e=>{e.preventDefault();ready=false;canvas.hidden=true;cancelAnimationFrame(raf);});load();\n})();\n"],
  "mappings": "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",
  "names": []
}
