{"version":3,"file":"Typewriter.DadrdI_Z.mjs","names":["useRef","useCallback","useState","THREE.LinearFilter","THREE.ClampToEdgeWrapping","useThree","useRef","THREE.Vector2","THREE.Color","useMemo","THREE.WebGLRenderer","THREE.PlaneGeometry","THREE.ShaderMaterial","THREE.Scene","THREE.Mesh","THREE.Camera","THREE.VideoTexture","Canvas","THREE.Texture","THREE.DataTexture","THREE.RGBAFormat","THREE.TextureLoader","useState","useRef"],"sources":["https:/framerusercontent.com/modules/yIGQzWunBE0Fw1J7L4KF/MNcCcbpRQO6N7RLTlq40/Swipe.js","https:/framerusercontent.com/modules/iPvyfdXGNX9ucyQEhdnD/sfAFZGUsHQSTFXx6yq3K/Glitch_case.js","https:/framerusercontent.com/modules/wRUPGlAqaeXgChc3oFge/aGtPfnkvwCSyztaB3mlO/Typewriter.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef}from\"react\";const DRAG_THRESHOLD=5;const HOLD_THRESHOLD=180;const AXIS_THRESHOLD=6;const TOUCH_MULTIPLIER=1.05;const THROW_POWER=1.9;const FRICTION=.967;const MAX_SPEED=3.2;const VELOCITY_TIMEOUT=90;const OVERFLOW_THRESHOLD=3;const VIEWPORT_CLASS=\"premium-project-gallery-viewport\";function setRefValue(ref,value){if(!ref)return;if(typeof ref===\"function\"){ref(value);return;}ref.current=value;}function installScrollbarStyles(){if(typeof document===\"undefined\")return;const id=\"premium-project-gallery-scrollbar\";if(document.getElementById(id))return;const style=document.createElement(\"style\");style.id=id;style.textContent=`\n    .${VIEWPORT_CLASS} {\n      scrollbar-width: none !important;\n      -ms-overflow-style: none !important;\n    }\n\n    .${VIEWPORT_CLASS}::-webkit-scrollbar {\n      display: none !important;\n      width: 0 !important;\n      height: 0 !important;\n    }\n  `;document.head.appendChild(style);}function isGalleryViewport(element){if(element.scrollWidth-element.clientWidth<=OVERFLOW_THRESHOLD){return false;}const overflowX=window.getComputedStyle(element).overflowX;return overflowX===\"scroll\"||overflowX===\"auto\"||overflowX===\"hidden\"||overflowX===\"clip\";}function getGalleryViewports(root){if(!root)return[];const elements=[root,...Array.from(root.querySelectorAll(\"*\"))];return elements.filter(isGalleryViewport);}function getTargetElement(target){if(target instanceof HTMLElement)return target;if(target instanceof Node)return target.parentElement;return null;}/**\n * Finds the gallery belonging to the row that was actually pressed.\n * Layer names are intentionally not used, so any number of rows can work.\n */function findGalleryViewport(root,target,cachedViewports){if(!root)return null;const validCachedViewports=cachedViewports?.filter(viewport=>root.contains(viewport));const viewports=validCachedViewports&&validCachedViewports.length>0?validCachedViewports:getGalleryViewports(root);if(viewports.length===0)return null;const targetElement=getTargetElement(target);if(targetElement&&root.contains(targetElement)){let current=targetElement;while(current){if(viewports.includes(current))return current;if(current===root)break;current=current.parentElement;}// A title/button can be a sibling of its image viewport. In that case,\n// choose the gallery nearest to the pressed row on the vertical axis.\nconst targetRect=targetElement.getBoundingClientRect();const targetX=targetRect.left+targetRect.width/2;const targetY=targetRect.top+targetRect.height/2;let nearest=null;let nearestScore=Number.POSITIVE_INFINITY;for(const viewport of viewports){const rect=viewport.getBoundingClientRect();const gapY=targetY<rect.top?rect.top-targetY:targetY>rect.bottom?targetY-rect.bottom:0;const gapX=targetX<rect.left?rect.left-targetX:targetX>rect.right?targetX-rect.right:0;const score=gapY*1e3+gapX;if(score<nearestScore){nearestScore=score;nearest=viewport;}}if(nearest)return nearest;}const openViewports=viewports.filter(isViewportOpen);if(openViewports.length===1)return openViewports[0];// Compatibility fallback for layouts that contain only one logical gallery.\nreturn viewports.reduce((best,current)=>current.scrollWidth-current.clientWidth>best.scrollWidth-best.clientWidth?current:best);}function isViewportOpen(viewport){if(!viewport)return false;const overflowX=window.getComputedStyle(viewport).overflowX;return overflowX===\"scroll\"||overflowX===\"auto\";}const configuredViewportState=new WeakMap;function configureViewport(viewport,open=isViewportOpen(viewport)){// Geometry reads happen before any style writes in a batch.\nif(configuredViewportState.get(viewport)===open)return open;configuredViewportState.set(viewport,open);viewport.classList.add(VIEWPORT_CLASS);viewport.style.setProperty(\"overscroll-behavior-x\",open?\"contain\":\"none\");viewport.style.setProperty(\"touch-action\",\"pan-y pinch-zoom\");viewport.style.cursor=open?\"grab\":\"pointer\";if(!open)viewport.scrollLeft=0;return open;}export function PremiumProjectGallery(Component){return /*#__PURE__*/forwardRef(function PremiumProjectGalleryOverride(props,forwardedRef){const rootRef=useRef(null);const momentumRef=useRef(null);const unblockTimerRef=useRef(null);const refreshFrameRef=useRef(null);const blockNextClickRef=useRef(false);const viewportsRef=useRef([]);const{onClick:originalOnClick,onTap:originalOnTap,onPointerDown:_originalPointerDown,onPointerMove:_originalPointerMove,onPointerUp:_originalPointerUp,onPointerCancel:_originalPointerCancel,onTapStart:_originalTapStart,onTapCancel:_originalTapCancel,...restProps}=props;const gestureRef=useRef({active:false,pointerId:-1,pointerType:\"\",startX:0,startY:0,startTime:0,moved:false,viewport:null,axis:\"pending\",startScrollLeft:0,lastX:0,lastTime:0,velocity:0});const combinedRef=useCallback(node=>{rootRef.current=node;setRefValue(forwardedRef,node);},[forwardedRef]);const stopMomentum=useCallback(()=>{if(momentumRef.current===null)return;cancelAnimationFrame(momentumRef.current);momentumRef.current=null;},[]);const startMomentum=useCallback((viewport,initialVelocity)=>{stopMomentum();let velocity=Math.max(-MAX_SPEED,Math.min(MAX_SPEED,initialVelocity*THROW_POWER));if(Math.abs(velocity)<.025)return;let previousTime=performance.now();const animate=time=>{const dt=Math.min(time-previousTime,32);previousTime=time;const maxScroll=Math.max(0,viewport.scrollWidth-viewport.clientWidth);const next=viewport.scrollLeft+velocity*dt;if(next<=0||next>=maxScroll){viewport.scrollLeft=next<=0?0:maxScroll;momentumRef.current=null;return;}viewport.scrollLeft=next;velocity*=Math.pow(FRICTION,dt/16.67);if(Math.abs(velocity)<.01){momentumRef.current=null;return;}momentumRef.current=requestAnimationFrame(animate);};momentumRef.current=requestAnimationFrame(animate);},[stopMomentum]);const prepareAllViewports=useCallback(()=>{const viewports=getGalleryViewports(rootRef.current);viewportsRef.current=viewports;const openStates=viewports.map(isViewportOpen);viewports.forEach((viewport,index)=>configureViewport(viewport,openStates[index]));},[]);const scheduleViewportRefresh=useCallback(()=>{if(refreshFrameRef.current!==null){cancelAnimationFrame(refreshFrameRef.current);}// Framer applies a new variant after the click handler has completed.\nrefreshFrameRef.current=requestAnimationFrame(()=>{refreshFrameRef.current=requestAnimationFrame(()=>{refreshFrameRef.current=null;prepareAllViewports();});});},[prepareAllViewports]);const prepareViewport=useCallback(target=>{if(viewportsRef.current.length===0){viewportsRef.current=getGalleryViewports(rootRef.current);}const viewport=findGalleryViewport(rootRef.current,target,viewportsRef.current);return{viewport,open:viewport?configureViewport(viewport):false};},[]);const handlePointerDown=useCallback(event=>{if(event.pointerType===\"mouse\"&&event.button!==0)return;stopMomentum();blockNextClickRef.current=false;if(unblockTimerRef.current!==null){window.clearTimeout(unblockTimerRef.current);unblockTimerRef.current=null;}const target=event.target;const{viewport,open}=prepareViewport(target);const targetNode=target instanceof Node?target:null;const canDrag=!!viewport&&open&&!!targetNode&&viewport.contains(targetNode);const now=performance.now();gestureRef.current={active:true,pointerId:event.pointerId,pointerType:event.pointerType,startX:event.clientX,startY:event.clientY,startTime:now,moved:false,viewport:canDrag?viewport:null,axis:canDrag&&event.pointerType===\"mouse\"?\"x\":\"pending\",startScrollLeft:canDrag&&viewport?viewport.scrollLeft:0,lastX:event.clientX,lastTime:now,velocity:0};if(viewport&&!open)viewport.scrollLeft=0;if(canDrag&&viewport&&event.pointerType===\"mouse\"){try{viewport.setPointerCapture(event.pointerId);}catch{}viewport.style.cursor=\"grabbing\";}},[prepareViewport,stopMomentum]);const handlePointerMove=useCallback(event=>{const state=gestureRef.current;if(!state.active||state.pointerId!==event.pointerId)return;const dx=event.clientX-state.startX;const dy=event.clientY-state.startY;if(Math.hypot(dx,dy)>=DRAG_THRESHOLD)state.moved=true;const viewport=state.viewport;if(!viewport)return;if(state.axis===\"pending\"){if(Math.abs(dx)<AXIS_THRESHOLD&&Math.abs(dy)<AXIS_THRESHOLD){return;}if(Math.abs(dx)>Math.abs(dy)){state.axis=\"x\";try{viewport.setPointerCapture(event.pointerId);}catch{}viewport.style.cursor=\"grabbing\";}else{state.axis=\"y\";state.viewport=null;return;}}if(state.axis!==\"x\"||Math.abs(dx)<DRAG_THRESHOLD)return;state.moved=true;if(event.cancelable)event.preventDefault();const multiplier=event.pointerType===\"touch\"?TOUCH_MULTIPLIER:1;const maxScroll=Math.max(0,viewport.scrollWidth-viewport.clientWidth);const wanted=state.startScrollLeft-dx*multiplier;viewport.scrollLeft=Math.max(0,Math.min(maxScroll,wanted));const now=performance.now();const dt=Math.max(now-state.lastTime,1);const movementX=event.clientX-state.lastX;const instantVelocity=-movementX*multiplier/dt;state.velocity=state.velocity*.62+instantVelocity*.38;state.lastX=event.clientX;state.lastTime=now;viewport.style.userSelect=\"none\";viewport.style.setProperty(\"-webkit-user-select\",\"none\");},[]);const finishGesture=useCallback(event=>{const state=gestureRef.current;if(!state.active||state.pointerId!==event.pointerId)return;const now=performance.now();const wasHold=now-state.startTime>=HOLD_THRESHOLD;const wasDrag=state.moved;const viewport=state.viewport;const horizontalDrag=wasDrag&&state.axis===\"x\"&&viewport!==null;state.active=false;if(viewport){try{if(viewport.hasPointerCapture(event.pointerId)){viewport.releasePointerCapture(event.pointerId);}}catch{}viewport.style.cursor=\"grab\";viewport.style.userSelect=\"\";viewport.style.removeProperty(\"-webkit-user-select\");}if(wasDrag||wasHold){blockNextClickRef.current=true;unblockTimerRef.current=window.setTimeout(()=>{blockNextClickRef.current=false;},500);}if(horizontalDrag&&viewport){let velocity=state.velocity;if(now-state.lastTime>VELOCITY_TIMEOUT)velocity*=.15;startMomentum(viewport,velocity);}},[startMomentum]);const handlePointerUp=useCallback(event=>finishGesture(event),[finishGesture]);const handlePointerCancel=useCallback(event=>{const state=gestureRef.current;state.active=false;blockNextClickRef.current=true;if(state.viewport){try{if(state.viewport.hasPointerCapture(event.pointerId)){state.viewport.releasePointerCapture(event.pointerId);}}catch{}state.viewport.style.cursor=\"grab\";state.viewport.style.userSelect=\"\";state.viewport.style.removeProperty(\"-webkit-user-select\");}},[]);const handleClick=useCallback(event=>{if(blockNextClickRef.current){blockNextClickRef.current=false;if(unblockTimerRef.current!==null){window.clearTimeout(unblockTimerRef.current);unblockTimerRef.current=null;}event.preventDefault?.();event.stopPropagation?.();try{event.nativeEvent?.stopImmediatePropagation?.();}catch{}return;}const{viewport,open}=prepareViewport(event.target);if(open&&viewport){stopMomentum();viewport.scrollLeft=0;viewport.style.scrollBehavior=\"auto\";}if(typeof originalOnClick===\"function\"){originalOnClick(event);}else if(typeof originalOnTap===\"function\"){originalOnTap(event);}scheduleViewportRefresh();},[originalOnClick,originalOnTap,prepareViewport,scheduleViewportRefresh,stopMomentum]);const handleWheelCapture=useCallback(event=>{const{viewport,open}=prepareViewport(event.target);if(!viewport)return;const target=event.target;if(!viewport.contains(target))return;if(open)return;const horizontal=Math.abs(event.deltaX)>Math.abs(event.deltaY);if(horizontal||event.shiftKey)event.preventDefault?.();viewport.scrollLeft=0;},[prepareViewport]);const handleDragStartCapture=useCallback(event=>{event.preventDefault();},[]);useEffect(()=>{installScrollbarStyles();prepareAllViewports();const root=rootRef.current;// The variant animates HEIGHT every frame. Rescanning all layers\n// for each height step forces synchronous layout during the reveal.\n// Only width changes can change horizontal overflow here.\nlet observedWidth=null;const resizeObserver=root&&typeof ResizeObserver!==\"undefined\"?new ResizeObserver(entries=>{const entry=entries.find(item=>item.target===root);if(!entry)return;const width=entry.contentRect.width;if(observedWidth===null){observedWidth=width;return;}if(Math.abs(width-observedWidth)<.5)return;observedWidth=width;scheduleViewportRefresh();}):null;if(root&&resizeObserver)resizeObserver.observe(root);// Keyboard interactions can change a variant without a pointer click.\n// Watch variant identity and newly mounted CMS/media elements.\n// Ignore descendant class animation and all inline style updates.\nconst variantObserver=root&&typeof MutationObserver!==\"undefined\"?new MutationObserver(records=>{if(records.some(record=>record.type===\"attributes\"&&record.target===root||record.type===\"childList\"&&[...Array.from(record.addedNodes),...Array.from(record.removedNodes)].some(node=>node.nodeType===1)))scheduleViewportRefresh();}):null;if(root&&variantObserver)variantObserver.observe(root,{attributes:true,attributeFilter:[\"class\",\"data-framer-name\"],childList:true,subtree:true});return()=>{stopMomentum();resizeObserver?.disconnect();variantObserver?.disconnect();if(unblockTimerRef.current!==null){window.clearTimeout(unblockTimerRef.current);}if(refreshFrameRef.current!==null){cancelAnimationFrame(refreshFrameRef.current);}};},[prepareAllViewports,scheduleViewportRefresh,stopMomentum]);return /*#__PURE__*/_jsx(Component,{...restProps,ref:combinedRef,onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp,onPointerCancel:handlePointerCancel,onClick:handleClick,onWheelCapture:handleWheelCapture,onDragStartCapture:handleDragStartCapture});});}\nexport const __FramerMetadata__ = {\"exports\":{\"PremiumProjectGallery\":{\"type\":\"reactHoc\",\"name\":\"PremiumProjectGallery\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Swipe.map","// Seamless Project Preview handoff, 2026-10-06. Other modes are unchanged.\n// Motion-independent intro revision: retain visibility/GPU/media lifecycle, 2026-10-04.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useMemo,useEffect,useState,useLayoutEffect}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useMotionValue,animate,useInView,motion}from\"framer-motion\";import*as THREE from\"https://esm.sh/three@0.154.0\";// Pin Fiber to the same Three module as the materials; Framer resolves a bare\n// external \"three\" to its older copy, mixing renderers and textures.\nimport{Canvas,useFrame,useThree}from\"https://esm.sh/@react-three/fiber@8.13.0?external=react,react-dom&deps=three@0.154.0&bundle\";// A shared transparent placeholder. It is intentionally kept for the lifetime\n// of the page and is never disposed by an individual component instance.\nconst EMPTY_TEXTURE=new THREE.DataTexture(new Uint8Array([0,0,0,0]),1,1,THREE.RGBAFormat);EMPTY_TEXTURE.generateMipmaps=false;EMPTY_TEXTURE.minFilter=THREE.LinearFilter;EMPTY_TEXTURE.magFilter=THREE.LinearFilter;EMPTY_TEXTURE.needsUpdate=true;const EMPTY_RESOLUTION=new THREE.Vector2(1,1);const IMAGE_LOADER=new THREE.TextureLoader;IMAGE_LOADER.setCrossOrigin(\"anonymous\");const KINETIC_BRIDGE=\"__slixelKineticV1\";// Only descendants of a compatible gallery participate. No global events or polling.\nfunction useGalleryBridge(containerRef){const[bridge,setBridge]=useState(null);const[enabled,setEnabled]=useState(false);const[prewarm,setPrewarm]=useState(false);useEffect(()=>{const node=containerRef.current;const gallery=node?.closest(\"[data-kinetic-gallery]\");const cardNode=node?.closest(\"[data-kinetic-card]\");const controller=gallery?.[KINETIC_BRIDGE];const card=cardNode?.[KINETIC_BRIDGE];if(!controller||!card)return;const value={controller,card,cardNode};setBridge(value);const update=()=>{setEnabled(controller.enabled);setPrewarm(Boolean(card.prewarm));};update();controller.listeners.add(update);card.listeners.add(update);return()=>{controller.listeners.delete(update);card.listeners.delete(update);};},[containerRef]);return{bridge,enabled,prewarm};}function usePageVisible(){const[visible,setVisible]=useState(()=>typeof document===\"undefined\"||!document.hidden);useEffect(()=>{const update=()=>setVisible(!document.hidden);document.addEventListener(\"visibilitychange\",update);return()=>document.removeEventListener(\"visibilitychange\",update);},[]);return visible;}// SiteWave releases its CSS boot cover at the START of opening. Intro effects\n// must wait for the controller's open phase / page-revealed event at the END.\n// This gate does not delay texture acquisition or bounded shader preparation.\nfunction waveHasFinishedForIntro(){if(typeof window===\"undefined\"||typeof document===\"undefined\")return true;const wave=window.__SLIXEL_PAGE_WAVE_V1__;const snapshot=wave?.snapshot?.();if(snapshot)return snapshot.phase===\"open\";const root=document.documentElement;if(root.hasAttribute(\"data-slixel-wave-boot\")||root.hasAttribute(\"data-slixel-wave-leaving\")||root.getAttribute(\"data-slixel-wave-cover\")===\"owned\")return false;// Initial SSR hosts can exist before their controller registers its settings.\nif(document.querySelector(\"[data-slixel-wave-host=runtime][data-wave-host-phase=boot]\"))return false;const surface=document.querySelector(\"[data-slixel-page-wave]\");return!surface||surface.style.display===\"none\";}function useWaveIntroReady(){const[ready,setReady]=useState(waveHasFinishedForIntro);useLayoutEffect(()=>{const update=()=>setReady(waveHasFinishedForIntro());const phaseChanged=event=>{const phase=event.detail?.phase;if(typeof phase===\"string\")setReady(phase===\"open\");else update();};const observer=new MutationObserver(update);observer.observe(document.documentElement,{attributes:true,attributeFilter:[\"data-slixel-wave-ready\",\"data-slixel-wave-boot\",\"data-slixel-wave-cover\",\"data-slixel-wave-leaving\"]});window.addEventListener(\"slixel:page-wave\",phaseChanged);window.addEventListener(\"slixel:page-revealed\",update);window.addEventListener(\"slixel:wave-boot-ready\",update);window.addEventListener(\"pageshow\",update);document.addEventListener(\"visibilitychange\",update);update();return()=>{observer.disconnect();window.removeEventListener(\"slixel:page-wave\",phaseChanged);window.removeEventListener(\"slixel:page-revealed\",update);window.removeEventListener(\"slixel:wave-boot-ready\",update);window.removeEventListener(\"pageshow\",update);document.removeEventListener(\"visibilitychange\",update);};},[]);return ready;}const VERTEX_SHADER=`\nvarying vec2 vUv;\nuniform float u_wave;\nuniform float u_direction;\nuniform float u_preset;\nuniform vec2 u_axis;\nuniform float u_scrollPhase;\nuniform vec2 u_grip;\nvoid main() {\n    vUv = uv;\n    vec2 q = position.xy;\n    float a = min(u_wave, 1.0);\n    if (u_preset > 0.5) {\n        // Smoothly bounded force: more power without inversion or boundary clipping.\n        float t = 0.85 * (1.0 - exp(-1.5 * max(u_wave, 0.0)));\n        vec2 axis = u_axis;\n        vec2 side = vec2(axis.y, -axis.x);\n        float along = dot(q, axis);\n        float across = dot(q, side);\n        vec2 target = q;\n        if (u_preset < 1.5) {\n            // The leading corner is held while the rest of the fabric trails behind it.\n            // Forward: top-right. Reverse: bottom-left. This is NOT a centre bulge.\n            vec2 corner = vec2(u_direction);\n            vec2 uvCorner = (q * corner + 1.0) * 0.5;\n            float grip = pow(uvCorner.x * uvCorner.y, 2.0);\n            vec2 lag = -axis * 0.34;\n            target = mix(q * 0.52 + lag, q, grip);\n        } else if (u_preset < 2.5) {\n            // Long diagonal S-ribbon, with alternating edges.\n            target = q * 0.70 + side * (0.22 * sin(along * 2.4));\n        } else if (u_preset < 3.5) {\n            // A tensioned sail; wind catches one side rather than the centre alone.\n            float belly = max(0.0, 1.0 - 0.5 * across * across);\n            target = q * 0.66 + axis * (0.26 * belly * (0.65 + 0.25 * along));\n        } else if (u_preset < 4.5) {\n            // Opposing ends rotate gently, producing a soft torsion.\n            float angle = 0.26 * along;\n            target = mat2(cos(angle), sin(angle), -sin(angle), cos(angle)) * q * 0.66;\n        } else if (u_preset < 5.5) {\n            // Smooth crease across a diagonal: compress across, drag along its ridge.\n            float ridge = exp(-4.0 * across * across);\n            float crease = across * 2.0 / sqrt(1.0 + 4.0 * across * across);\n            target = q * 0.70 - side * (0.13 * crease) + axis * (0.14 * ridge);\n        } else if (u_preset < 6.5) {\n            // Two broad coupled waves, not high-frequency pixel noise.\n            target = q * 0.66 + side * (0.15 * sin(along * 3.0))\n                + axis * (0.12 * sin(across * 2.5 + along));\n        } else if (u_preset < 7.5) {\n            // Cylindrical projection around the travel axis, no full flip.\n            float rolled = sin(across * 0.85) / 0.85;\n            target = (axis * along + side * rolled) * 0.66;\n        } else if (u_preset < 8.5) {\n            // A narrow waist, wide ends: distinct from a one-sided sail.\n            float waist = 1.0 - 0.46 * exp(-3.5 * along * along);\n            target = (axis * along + side * across * waist) * 0.62;\n        } else if (u_preset < 9.5) {\n            // Several smooth pleats transverse to motion (no hard sliced edges).\n            target = q * 0.68 + axis * (0.16 * sin(across * 7.0));\n        } else if (u_preset < 10.5) {\n            // Radial torsion focused slightly ahead of centre, not end-to-end twist.\n            vec2 pivot = axis * 0.16;\n            vec2 v = q - pivot;\n            float spin = 0.62 * exp(-2.0 * dot(v, v)) * u_direction;\n            target = (pivot + mat2(cos(spin), sin(spin), -sin(spin), cos(spin)) * v) * 0.62;\n        } else if (u_preset < 11.5) {\n            // Elliptic lens stretches its core, compresses its perimeter.\n            float r2 = along * along * 0.65 + across * across * 1.4;\n            target = q * (0.60 + 0.24 * exp(-1.8 * r2));\n        } else if (u_preset < 12.5) {\n            // Leading lip pulls first; the pressure front passes down the sheet.\n            float front = mix(0.9, -0.9, u_scrollPhase);\n            float lead = smoothstep(front - 0.55, front + 0.55, along);\n            float crown = exp(-2.0 * across * across);\n            target = q * 0.58 + axis * (0.30 * lead * crown);\n        } else if (u_preset < 13.5) {\n            // Broad compression pulses travel ALONG motion, not left-to-right.\n            target = q * 0.64 + axis * (0.13 * sin(5.0 * along - 6.0 * u_scrollPhase));\n        } else if (u_preset < 14.5) {\n            // A single curved roll crosses the surface from leading to trailing edge.\n            float front = mix(1.1, -1.1, u_scrollPhase) + 0.18 * across * across;\n            target = q * 0.60 - axis * (0.16 * atan(3.0 * (along - front)));\n        } else if (u_preset < 15.5) {\n            // Full leading end and a long tapered tail: no symmetric side bulge.\n            float head = smoothstep(-0.8, 0.8, along + 0.25 * sin(u_scrollPhase * 3.14159265));\n            target = q * 0.58 - side * across * (0.28 * (1.0 - head))\n                - axis * (0.18 * (1.0 - head));\n        } else if (u_preset < 16.5) {\n            // One hinged wing opens and closes in the travel frame (not a whole-card flip).\n            float hinge = smoothstep(-0.25, 0.8, across);\n            float opening = sin(u_scrollPhase * 3.14159265);\n            target = q * 0.60 + axis * (0.23 * hinge * opening)\n                - side * (0.16 * hinge * opening);\n        } else if (u_preset < 19.5) {\n            vec2 corner = vec2(u_direction);\n            vec2 local = (q * corner + 1.0) * 0.5;\n            float hold = pow(local.x * local.y, 2.0);\n            vec2 body;\n            if (u_preset < 17.5) {\n                // Diagonal pleats radiate from the held corner.\n                float pleat = sin((local.x - local.y) * 7.0 - u_scrollPhase * 3.0);\n                body = q * 0.48 + side * (0.12 * pleat) - axis * 0.17;\n            } else if (u_preset < 18.5) {\n                // A hanging, heavy body; the upper corner stays tensioned.\n                body = q * 0.50 - axis * (0.27 * (1.0 - local.y))\n                    + side * (0.12 * local.y * (1.0 - local.x));\n            } else {\n                // Cross-coupled stretched membrane, with a bowed lower corner.\n                body = q * 0.44 + corner * vec2(0.20 * local.y * local.y,\n                    0.20 * local.x * local.x);\n            }\n            target = mix(body, q, hold);\n        } else if (u_preset < 22.5) {\n            vec2 finger = u_grip + axis * (0.30 * u_scrollPhase);\n            vec2 v = q - finger;\n            float pressure = exp(-2.2 * dot(v, v));\n            if (u_preset < 20.5) {\n                // Local elastic traction follows the recorded contact point.\n                target = q * 0.60 + axis * (0.24 * pressure);\n            } else if (u_preset < 21.5) {\n                // A fingertip dent releases into the surrounding sheet.\n                target = q * 0.63 - v * (0.26 * pressure);\n            } else {\n                // A short orbital flick around the touch point, not a central swirl.\n                float angle = 0.36 * pressure * sin(u_scrollPhase * 3.14159265);\n                vec2 rotated = mat2(cos(angle), sin(angle), -sin(angle), cos(angle)) * v;\n                target = q * 0.57 + (rotated - v) * 0.55;\n            }\n        } else if (u_preset < 23.5) {\n            // Two travelling interference fields give the sheet a breathing lattice.\n            float phase = u_scrollPhase * 5.0;\n            target = q * 0.62 + axis * (0.10 * sin(across * 4.0 + phase) * cos(along * 3.0))\n                + side * (0.10 * cos(along * 4.0 - phase) * sin(across * 3.0));\n        } else if (u_preset < 24.5) {\n            // A faceted rhombus grows from a rectangle, oriented to travel.\n            float diamond = sqrt(along * along + 0.025) + sqrt(across * across + 0.025);\n            target = q * (0.95 / (1.0 + 0.52 * diamond));\n        } else {\n            // Two moving attractors tug the surface in opposite directions.\n            vec2 p1 = axis * 0.48 + side * (0.28 * sin(u_scrollPhase * 6.2831853));\n            vec2 p2 = -p1;\n            vec2 v1 = p1 - q;\n            vec2 v2 = p2 - q;\n            target = q * 0.65 + v1 * (0.18 * exp(-2.6 * dot(v1, v1)))\n                + v2 * (0.18 * exp(-2.6 * dot(v2, v2)));\n        }\n        q = mix(q, target, t);\n        gl_Position = vec4(q, 0.0, 1.0);\n        return;\n    }\n    // The top-right corner leads upward; reversing mirrors the leading corner.\n    float leading = (q.x * u_direction + 1.0) * 0.5;\n    float arch = 1.0 - q.x * q.x;\n    q.y = q.y * (1.0 - 0.50 * a)\n        + u_direction * a * (0.28 * arch + 0.24 * leading);\n    q.x *= 1.0 - 0.10 * a * position.y * position.y;\n    // A shallow convex surface, projected while keeping the original bounding box.\n    float z = 0.20 * a * arch * (1.0 - position.y * position.y);\n    q *= 1.0 + z * 0.25;\n    gl_Position = vec4(q, 0.0, 1.0);\n}\n`;const FRAGMENT_SHADER=`\n\nuniform sampler2D u_tex1;\n\nuniform sampler2D u_tex2;\n\nuniform float u_progress;\n\nuniform float u_revealProgress;\n\nuniform float u_time;\n\nuniform vec2 u_res;\n\nuniform vec2 u_tex1Res;\n\nuniform vec2 u_tex2Res;\n\nuniform vec3 u_darkColor;\n\nuniform vec3 u_lightColor;\n\nuniform vec3 u_g1;\n\nuniform vec3 u_g2;\n\nuniform vec3 u_g3;\n\nuniform float u_intensity;\n\nuniform float u_pixelSize;\n\nuniform float u_glitchBlocks;\n\nuniform float u_rgbShift;\n\nuniform float u_continuous;\n\nuniform float u_strength;\n\nuniform float u_horizontal;\nuniform float u_gallery;\nuniform float u_waveRGB;\nuniform float u_direction;\nuniform float u_cardRadius;\nuniform vec3 u_scrollA;\nuniform vec3 u_scrollB;\nuniform vec3 u_scrollC;\nuniform vec2 u_axis;\nuniform float u_preset;\nuniform float u_cardDim;\nuniform vec3 u_cardDimColor;\nuniform float u_backdropMode;\nuniform float u_backdropAmount;\nuniform vec3 u_backdropColor;\n\nvarying vec2 vUv;\n\nvec2 getCoverRatio(vec2 res, vec2 texRes) {\n\n    vec2 safeRes = max(res, vec2(1.0));\n\n    vec2 safeTexRes = max(texRes, vec2(1.0));\n\n    float frameAspect = safeRes.x / safeRes.y;\n\n    float textureAspect = safeTexRes.x / safeTexRes.y;\n\n    return vec2(\n\n        min(frameAspect / textureAspect, 1.0),\n\n        min(textureAspect / frameAspect, 1.0)\n\n    );\n\n}\n\nvec2 applyCover(vec2 uv, vec2 ratio) {\n\n    return uv * ratio + (1.0 - ratio) * 0.5;\n\n}\n\n// Branch-free 4x4 Bayer matrix. This replaces sixteen conditional branches.\n\nfloat bayer2(vec2 p) {\n\n    p = floor(p);\n\n    return fract(p.x * 0.5 + p.y * p.y * 0.75);\n\n}\n\nfloat bayer4(vec2 p) {\n\n    return bayer2(floor(p * 0.5)) * 0.25 + bayer2(p);\n\n}\n\n// A small hash without sin(), used for stable low-cost glitch bands.\n\nfloat hash12(vec2 p) {\n\n    return fract(52.9829189 * fract(dot(p, vec2(0.06711056, 0.00583715))));\n\n}\n\nfloat backdropDodge(float base, float source) {\n    if (base <= 0.0) return 0.0;\n    if (source >= 1.0) return 1.0;\n    return min(1.0, base / (1.0 - source));\n}\n\nvec3 applyBackdrop(vec3 color) {\n    if (u_backdropMode < 0.5) return color;\n    vec3 source = clamp(color, 0.0, 1.0);\n    vec3 base = u_backdropColor;\n    vec3 blended;\n    if (u_backdropMode < 1.5) {\n        blended = base + source - base * source;\n    } else {\n        blended = vec3(backdropDodge(base.r, source.r),\n                       backdropDodge(base.g, source.g),\n                       backdropDodge(base.b, source.b));\n    }\n    // Equivalent to source opacity over an opaque, uniform backdrop.\n    return mix(base, blended, u_backdropAmount);\n}\n\nvec4 galleryFinish(vec3 color) {\n    color = applyBackdrop(color);\n    if (u_gallery < 0.5) return vec4(color, 1.0);\n    vec2 res = max(u_res, vec2(1.0));\n    float radius = min(u_cardRadius, min(res.x, res.y) * 0.5);\n    vec2 q = abs((vUv - 0.5) * res) - res * 0.5 + radius;\n    float distance = length(max(q, 0.0)) + min(max(q.x, q.y), 0.0) - radius;\n    float mask = 1.0 - smoothstep(-0.8, 0.8, distance);\n    return vec4(mix(color, u_cardDimColor, u_cardDim), mask);\n}\n\nvec3 kineticSample(sampler2D tex, vec2 ratio, vec2 offset) {\n    vec2 uv = applyCover(vUv, ratio);\n    vec2 delta = offset * ratio;\n    vec3 base = texture2D(tex, uv).rgb;\n    float r = texture2D(tex, clamp(uv + delta, vec2(0.0), vec2(1.0))).r;\n    float b = texture2D(tex, clamp(uv - delta, vec2(0.0), vec2(1.0))).b;\n    vec3 split = vec3(r, base.g, b);\n    vec3 palette = r * u_scrollA + base.g * u_scrollB + b * u_scrollC;\n    // Custom colours fade out with the same envelope, never leaving a colour jump.\n    return mix(split, palette, smoothstep(0.0, 0.2, u_waveRGB));\n}\n\nvoid main() {\n\n    float p = clamp(u_progress, 0.0, 1.0);\n\n    float r = clamp(u_revealProgress, 0.0, 1.0);\n\n    float safeP = smoothstep(0.01, 0.99, p);\n\n    float hoverPhase = sin(p * 3.14159265);\n\n    hoverPhase *= smoothstep(0.0, 0.05, p) *\n\n        (1.0 - smoothstep(0.95, 1.0, p));\n\n    float revealPhase = sin(r * 3.14159265);\n\n    revealPhase *= smoothstep(0.0, 0.05, r) *\n\n        (1.0 - smoothstep(0.95, 1.0, r));\n\n    float activeEffect = clamp(max(max(hoverPhase, revealPhase), u_continuous), 0.0, 1.0);\n\n    float visibleEffect = activeEffect * clamp(u_strength, 0.0, 1.0);\n\n    // Scroll RGB is a smooth channel separation, not the pixelated hover/reveal effect.\n    if (u_gallery > 0.5 && u_waveRGB > 0.0001) {\n        vec2 offset = u_direction * u_waveRGB * vec2(\n            0.045 * (0.35 + sin(vUv.y * 3.14159265)),\n            0.060 * (0.5 + 0.5 * sin(vUv.x * 3.14159265))\n        );\n        if (u_preset > 0.5) {\n            vec2 side = vec2(u_axis.y, -u_axis.x);\n            offset = u_waveRGB * (u_axis * 0.055 + side * 0.025)\n                * (0.65 + 0.35 * sin((vUv.x + vUv.y) * 3.14159265));\n        }\n        vec3 color;\n        if (p < 0.001) {\n            color = kineticSample(u_tex1, getCoverRatio(u_res, u_tex1Res), offset);\n        } else if (p > 0.999) {\n            color = kineticSample(u_tex2, getCoverRatio(u_res, u_tex2Res), offset);\n        } else {\n            color = mix(\n                kineticSample(u_tex1, getCoverRatio(u_res, u_tex1Res), offset),\n                kineticSample(u_tex2, getCoverRatio(u_res, u_tex2Res), offset), safeP\n            );\n        }\n        gl_FragColor = galleryFinish(color);\n        return;\n    }\n\n    // Uniform fast path: while idle, videos need only one texture read.\n\n    // The expensive RGB split and dither code is skipped for the whole frame.\n\n    if (visibleEffect < 0.001) {\n\n        vec3 cleanColor;\n\n        if (p < 0.001) {\n\n            vec2 cleanUv1 = applyCover(\n\n                vUv,\n\n                getCoverRatio(u_res, u_tex1Res)\n\n            );\n\n            cleanColor = texture2D(u_tex1, cleanUv1).rgb;\n\n        } else if (p > 0.999) {\n\n            vec2 cleanUv2 = applyCover(\n\n                vUv,\n\n                getCoverRatio(u_res, u_tex2Res)\n\n            );\n\n            cleanColor = texture2D(u_tex2, cleanUv2).rgb;\n\n        } else {\n\n            vec2 cleanUv1 = applyCover(\n\n                vUv,\n\n                getCoverRatio(u_res, u_tex1Res)\n\n            );\n\n            vec2 cleanUv2 = applyCover(\n\n                vUv,\n\n                getCoverRatio(u_res, u_tex2Res)\n\n            );\n\n            cleanColor = mix(\n\n                texture2D(u_tex1, cleanUv1).rgb,\n\n                texture2D(u_tex2, cleanUv2).rgb,\n\n                safeP\n\n            );\n\n        }\n\n        gl_FragColor = galleryFinish(cleanColor);\n\n        return;\n\n    }\n\n    float pixelSize = max(u_pixelSize, 1.0);\n\n    vec2 pixelUv = floor(vUv * u_res / pixelSize) * pixelSize / u_res;\n\n    float glitchAmount = activeEffect * u_intensity;\n\n    float blockY = floor((u_horizontal > 0.5 ? pixelUv.x : pixelUv.y) * max(u_glitchBlocks, 1.0));\n\n    // Quantized time makes the glitch more deliberate and avoids noisy shimmer.\n\n    float glitchFrame = floor(u_time * 24.0);\n\n    float noise1 = hash12(vec2(blockY, glitchFrame));\n\n    float noise2 = hash12(vec2(blockY * 0.73 + 9.2, glitchFrame + 17.0));\n\n    float tearGate = step(0.5, noise2);\n\n    float tear = (noise1 - 0.5) * 0.2 * glitchAmount * tearGate;\n\n    float shiftDist = u_rgbShift * glitchAmount;\n\n    vec2 cover1 = getCoverRatio(u_res, u_tex1Res);\n\n    vec2 cover2 = getCoverRatio(u_res, u_tex2Res);\n\n    vec2 cleanUv1 = applyCover(vUv, cover1);\n\n    vec2 cleanUv2 = applyCover(vUv, cover2);\n\n    vec2 uv1R = applyCover(\n\n        pixelUv + (u_horizontal > 0.5 ? vec2(0.0, tear + shiftDist) : vec2(tear + shiftDist, 0.0)), cover1\n\n    );\n\n    vec2 uv1G = applyCover(\n\n        pixelUv + (u_horizontal > 0.5 ? vec2(0.0, tear) : vec2(tear, 0.0)), cover1\n\n    );\n\n    vec2 uv1B = applyCover(\n\n        pixelUv + (u_horizontal > 0.5 ? vec2(0.0, tear - shiftDist) : vec2(tear - shiftDist, 0.0)), cover1\n\n    );\n\n    vec2 uv2R = applyCover(\n\n        pixelUv + (u_horizontal > 0.5 ? vec2(0.0, tear + shiftDist) : vec2(tear + shiftDist, 0.0)), cover2\n\n    );\n\n    vec2 uv2G = applyCover(\n\n        pixelUv + (u_horizontal > 0.5 ? vec2(0.0, tear) : vec2(tear, 0.0)), cover2\n\n    );\n\n    vec2 uv2B = applyCover(\n\n        pixelUv + (u_horizontal > 0.5 ? vec2(0.0, tear - shiftDist) : vec2(tear - shiftDist, 0.0)), cover2\n\n    );\n\n    vec3 glitchedMix;\n\n    if (p < 0.001) {\n\n        glitchedMix = vec3(\n\n            texture2D(u_tex1, uv1R).r,\n\n            texture2D(u_tex1, uv1G).g,\n\n            texture2D(u_tex1, uv1B).b\n\n        );\n\n    } else if (p > 0.999) {\n\n        glitchedMix = vec3(\n\n            texture2D(u_tex2, uv2R).r,\n\n            texture2D(u_tex2, uv2G).g,\n\n            texture2D(u_tex2, uv2B).b\n\n        );\n\n    } else {\n\n        glitchedMix = vec3(\n\n            mix(texture2D(u_tex1, uv1R).r, texture2D(u_tex2, uv2R).r, safeP),\n\n            mix(texture2D(u_tex1, uv1G).g, texture2D(u_tex2, uv2G).g, safeP),\n\n            mix(texture2D(u_tex1, uv1B).b, texture2D(u_tex2, uv2B).b, safeP)\n\n        );\n\n    }\n\n    float bayerValue = bayer4(gl_FragCoord.xy / pixelSize);\n\n    float luma = dot(glitchedMix, vec3(0.299, 0.587, 0.114));\n\n    vec3 baseDither = luma > bayerValue ? u_lightColor : u_darkColor;\n\n    vec3 colorDither = step(vec3(bayerValue), glitchedMix);\n\n    vec3 tintedGlitch =\n\n        colorDither.r * u_g1 +\n\n        colorDither.g * u_g2 +\n\n        colorDither.b * u_g3;\n\n    float maxChannel = max(max(glitchedMix.r, glitchedMix.g), glitchedMix.b);\n\n    float minChannel = min(min(glitchedMix.r, glitchedMix.g), glitchedMix.b);\n\n    float colorFactor = smoothstep(0.05, 0.2, maxChannel - minChannel);\n\n    vec3 effectColor = mix(baseDither, tintedGlitch, colorFactor);\n\n    vec3 cleanMix;\n\n    if (p < 0.001) {\n\n        cleanMix = texture2D(u_tex1, cleanUv1).rgb;\n\n    } else if (p > 0.999) {\n\n        cleanMix = texture2D(u_tex2, cleanUv2).rgb;\n\n    } else {\n\n        cleanMix = mix(\n\n            texture2D(u_tex1, cleanUv1).rgb,\n\n            texture2D(u_tex2, cleanUv2).rgb,\n\n            safeP\n\n        );\n\n    }\n\n    gl_FragColor = galleryFinish(mix(cleanMix, effectColor, visibleEffect));\n\n}\n\n`;function configureTexture(texture){texture.generateMipmaps=false;texture.minFilter=THREE.LinearFilter;texture.magFilter=THREE.LinearFilter;texture.wrapS=THREE.ClampToEdgeWrapping;texture.wrapT=THREE.ClampToEdgeWrapping;texture.needsUpdate=true;return texture;}function disposeVideo(video){if(!video)return;video.pause();video.onloadeddata=null;video.oncanplay=null;video.onerror=null;video.removeAttribute(\"src\");video.load();}function getCanvasDpr(renderQuality){if(typeof window===\"undefined\")return 1;const deviceDpr=window.devicePixelRatio||1;if(renderQuality===\"performance\")return 1;if(renderQuality===\"quality\")return Math.min(deviceDpr,2);const cores=navigator.hardwareConcurrency||8;const memory=navigator.deviceMemory||8;const isLowPowerDevice=cores<=4||memory<=4;return isLowPowerDevice?1:Math.min(deviceDpr,1.5);}function readOpacity(value){const rawValue=value&&typeof value.get===\"function\"?value.get():value;const numericValue=rawValue===undefined?1:Number(rawValue);return Number.isFinite(numericValue)?numericValue:1;}function useVideoFrameInvalidation(sourceTexture,hoverTexture,invalidate,active){useEffect(()=>{if(!active)return;const videos=[];for(const texture of[sourceTexture,hoverTexture]){const video=texture?.isVideoTexture?texture.image:null;if(video&&!videos.includes(video))videos.push(video);}const cleanups=videos.map(video=>{if(typeof video.requestVideoFrameCallback===\"function\"){let callbackId=null;let active=true;const requestNextFrame=()=>{if(!active)return;callbackId=video.requestVideoFrameCallback(()=>{invalidate();requestNextFrame();});};requestNextFrame();return()=>{active=false;if(callbackId!==null&&typeof video.cancelVideoFrameCallback===\"function\"){video.cancelVideoFrameCallback(callbackId);}};}// Older browsers render on media events instead of a 60 fps loop.\nconst requestFrame=()=>invalidate();video.addEventListener(\"timeupdate\",requestFrame);video.addEventListener(\"seeked\",requestFrame);video.addEventListener(\"playing\",requestFrame);return()=>{video.removeEventListener(\"timeupdate\",requestFrame);video.removeEventListener(\"seeked\",requestFrame);video.removeEventListener(\"playing\",requestFrame);};});return()=>cleanups.forEach(cleanup=>cleanup());},[sourceTexture,hoverTexture,invalidate,active]);}// R3F 8 releases its renderer after a 500ms delay. Release this component's\n// context at actual unmount, before a new page can allocate another group.\nfunction prepareGlitchRenderer({gl}){const lose=gl.forceContextLoss.bind(gl);gl.forceContextLoss=()=>{if(!gl.getContext().isContextLost())lose();};}function RendererRelease(){const{gl}=useThree();const lifetime=useRef(null);useEffect(()=>{const lease=lifetime.current?.gl===gl?lifetime.current:{gl,active:false,released:false};lifetime.current=lease;lease.active=true;return()=>{lease.active=false;// React StrictMode cleanup/setup must not destroy a live renderer.\nqueueMicrotask(()=>{if(lease.active||lease.released)return;lease.released=true;gl.dispose();gl.forceContextLoss();});};},[gl]);return null;}function ShaderWarmup({onReady}){const frames=useRef(0);const alive=useRef(false);const announced=useRef(false);const{gl,invalidate,size}=useThree();useLayoutEffect(()=>{alive.current=true;const reset=()=>{frames.current=0;announced.current=false;onReady(false);invalidate();};reset();const lost=event=>{event.preventDefault();reset();};gl.domElement.addEventListener(\"webglcontextlost\",lost);gl.domElement.addEventListener(\"webglcontextrestored\",reset);return()=>{alive.current=false;gl.domElement.removeEventListener(\"webglcontextlost\",lost);gl.domElement.removeEventListener(\"webglcontextrestored\",reset);};},[gl,invalidate,onReady]);// A collapsed Framer breakpoint must sleep. Resize wakes a bounded warmup.\nuseLayoutEffect(()=>{if(size.width>1&&size.height>1)invalidate();},[size.width,size.height,invalidate]);// Positive priority owns rendering. All scene/uniform updates at priority 0\n// run first; readiness is announced AFTER rendering, never before it.\nuseFrame(({scene,camera,size})=>{if(gl.getContext().isContextLost())return;if(size.width<=1||size.height<=1||gl.domElement.width<=1||gl.domElement.height<=1){return;}gl.render(scene,camera);if(announced.current)return;frames.current+=1;if(frames.current<2){invalidate();return;}announced.current=true;Promise.resolve().then(()=>{if(alive.current&&announced.current&&!gl.getContext().isContextLost())onReady(true);});},1);return null;}// Resolve Framer CSS tokens in their own DOM scope, once per input change.\n// THREE.Color does not understand var(--token, fallback).\nfunction resolveGalleryColor(value,node){if(typeof value!==\"string\"||!value.includes(\"var(\"))return value;const probe=document.createElement(\"span\");probe.style.display=\"none\";probe.style.color=value;const parent=node||document.documentElement;parent.appendChild(probe);try{return getComputedStyle(probe).color||\"rgb(21, 26, 36)\";}finally{probe.remove();}}// Shared by the live surface and its exact, non-animated standby frame.\nfunction createGlitchUniforms(source,hoverTexture,hoverResolution,progress,revealProgress,config,size){return{u_wave:{value:0},u_waveRGB:{value:0},u_direction:{value:1},u_preset:{value:0},u_scrollPhase:{value:0},u_grip:{value:new THREE.Vector2(.7,-.35)},u_axis:{value:new THREE.Vector2(0,1)},u_scrollA:{value:new THREE.Color(1,0,0)},u_scrollB:{value:new THREE.Color(0,1,0)},u_scrollC:{value:new THREE.Color(0,0,1)},u_gallery:{value:0},u_backdropMode:{value:config.backdropMode},u_backdropAmount:{value:config.backdropAmount},// This shader writes display RGB directly (no output-color chunk).\n// Convert THREE's linear Color back to CSS/display RGB for blending.\nu_backdropColor:{value:new THREE.Color(config.backdropColor).convertLinearToSRGB()},u_cardRadius:{value:8},u_cardDim:{value:0},u_cardDimColor:{value:new THREE.Color(\"#000000\")},u_tex1:{value:source.texture},u_tex2:{value:hoverTexture},u_progress:{value:progress.get()},u_revealProgress:{value:revealProgress.get()},u_time:{value:0},u_res:{value:new THREE.Vector2(Math.max(size.width,1),Math.max(size.height,1))},u_tex1Res:{value:source.res.clone()},u_tex2Res:{value:hoverResolution.clone()},u_intensity:{value:config.intensity},u_pixelSize:{value:config.pixelSize},u_glitchBlocks:{value:config.glitchBlocks},u_rgbShift:{value:config.rgbShift},u_continuous:{value:config.continuousGlitch?1:0},u_strength:{value:config.glitchStrength},u_horizontal:{value:config.glitchDirection===\"horizontal\"?1:0},u_darkColor:{value:new THREE.Color(config.colors.dark)},u_lightColor:{value:new THREE.Color(config.colors.light)},u_g1:{value:new THREE.Color(config.colors.g1)},u_g2:{value:new THREE.Color(config.colors.g2)},u_g3:{value:new THREE.Color(config.colors.g3)}};}function GlitchScene({galleryBridge,source,hover,progress,revealProgress,config,continuousActive,mediaActive}){const materialRef=useRef(null);const lastGlitchFrame=useRef({at:-1,elapsed:0,phase:-1});const{size,invalidate}=useThree();const hoverTexture=hover.texture||source.texture;const hoverResolution=hover.texture?hover.res:source.res;const uniforms=useMemo(()=>createGlitchUniforms(source,hoverTexture,hoverResolution,progress,revealProgress,config,size),[]);useEffect(()=>{if(!mediaActive)return;invalidate();const stopProgress=progress.on(\"change\",invalidate);const stopReveal=revealProgress.on(\"change\",invalidate);return()=>{stopProgress();stopReveal();};},[progress,revealProgress,invalidate,mediaActive]);useLayoutEffect(()=>{const material=materialRef.current;if(!material)return;material.uniforms.u_tex1.value=source.texture;material.uniforms.u_tex2.value=hoverTexture;material.uniforms.u_tex1Res.value.copy(source.res);material.uniforms.u_tex2Res.value.copy(hoverResolution);invalidate();},[source,hover,hoverTexture,hoverResolution,invalidate]);useLayoutEffect(()=>{const material=materialRef.current;if(!material)return;material.uniforms.u_res.value.set(Math.max(size.width,1),Math.max(size.height,1));invalidate();},[size.width,size.height,invalidate]);useLayoutEffect(()=>{const material=materialRef.current;if(!material)return;const values=material.uniforms;values.u_intensity.value=config.intensity;values.u_backdropMode.value=config.backdropMode;values.u_backdropAmount.value=config.backdropAmount;values.u_backdropColor.value.set(config.backdropColor).convertLinearToSRGB();values.u_pixelSize.value=config.pixelSize;values.u_glitchBlocks.value=config.glitchBlocks;values.u_rgbShift.value=config.rgbShift;values.u_continuous.value=config.continuousGlitch?1:0;values.u_strength.value=config.glitchStrength;values.u_horizontal.value=config.glitchDirection===\"horizontal\"?1:0;values.u_darkColor.value.set(config.colors.dark);values.u_lightColor.value.set(config.colors.light);values.u_g1.value.set(config.colors.g1);values.u_g2.value.set(config.colors.g2);values.u_g3.value.set(config.colors.g3);invalidate();},[config,invalidate]);useEffect(()=>{if(!continuousActive)return;// Video may already have drawn this quantized noise frame. Keep the\n// original 24 Hz clock, but skip a render whose pixels would be identical.\nconst timer=window.setInterval(()=>{const last=lastGlitchFrame.current;const elapsed=last.elapsed+Math.max(0,performance.now()-last.at)/1e3;const phase=Math.floor(elapsed*config.glitchSpeed*24);if(last.at<0||phase!==last.phase)invalidate();},1e3/24);return()=>window.clearInterval(timer);},[continuousActive,config.glitchSpeed,invalidate]);useLayoutEffect(()=>{if(!galleryBridge||!mediaActive)return;const{controller,card}=galleryBridge;const update=()=>{if(!card.prewarm)invalidate();};controller.listeners.add(update);card.listeners.add(update);invalidate();return()=>{controller.listeners.delete(update);card.listeners.delete(update);};},[galleryBridge,invalidate,mediaActive]);useVideoFrameInvalidation(source.texture,hover.texture,invalidate,mediaActive);useFrame(state=>{const material=materialRef.current;if(!material)return;const values=material.uniforms;const controller=galleryBridge?.controller;const card=galleryBridge?.card;const enabled=Boolean(controller?.enabled&&card);values.u_gallery.value=enabled?1:0;values.u_wave.value=enabled?controller.amount*controller.strength*(controller.boost||1):0;values.u_waveRGB.value=enabled?controller.amount*controller.rgb:0;values.u_direction.value=controller?.direction||1;values.u_preset.value=Math.max(controller?.preset||0,0);values.u_scrollPhase.value=controller?.phase||0;values.u_grip.value.set(controller?.grip?.[0]??.7,controller?.grip?.[1]??-.35);values.u_axis.value.set(controller?.axis?.[0]||0,controller?.axis?.[1]??1);const palette=controller?.colors;if(palette&&palette!==values.u_scrollA.palette){values.u_scrollA.value.set(palette[0]).convertLinearToSRGB();values.u_scrollB.value.set(palette[1]).convertLinearToSRGB();values.u_scrollC.value.set(palette[2]).convertLinearToSRGB();values.u_scrollA.palette=palette;}if(enabled){values.u_cardRadius.value=8/Math.max(card.scale.get(),.01);values.u_cardDim.value=card.darken;if(values.u_cardDimColor.input!==card.color){values.u_cardDimColor.value.set(resolveGalleryColor(card.color,galleryBridge.cardNode)).convertLinearToSRGB();values.u_cardDimColor.input=card.color;}}material.uniforms.u_progress.value=progress.get();material.uniforms.u_revealProgress.value=revealProgress.get();material.uniforms.u_time.value=state.clock.elapsedTime*config.glitchSpeed;lastGlitchFrame.current.at=performance.now();lastGlitchFrame.current.elapsed=state.clock.elapsedTime;lastGlitchFrame.current.phase=Math.floor(material.uniforms.u_time.value*24);});return /*#__PURE__*/_jsxs(\"mesh\",{frustumCulled:false,children:[/*#__PURE__*/_jsx(\"planeGeometry\",{args:galleryBridge?[2,2,48,32]:[2,2]}),/*#__PURE__*/_jsx(\"shaderMaterial\",{ref:materialRef,vertexShader:VERTEX_SHADER,fragmentShader:FRAGMENT_SHADER,uniforms:uniforms,transparent:Boolean(galleryBridge),depthTest:false,depthWrite:false,toneMapped:false})]});}// Sequence sections can occupy the viewport while hidden by a clip/mask.\n// Listen only to their explicit activity signal, never to per-frame transforms.\nfunction useSequenceVisible(ref){const[visible,setVisible]=useState(true);useLayoutEffect(()=>{const ancestors=[];for(let node=ref.current?.parentElement;node;node=node.parentElement)ancestors.push(node);const update=()=>setVisible(ancestors.every(node=>node.getAttribute(\"data-sequence-visible\")!==\"false\"));const observer=new MutationObserver(update);for(const node of ancestors)observer.observe(node,{attributes:true,attributeFilter:[\"data-sequence-visible\"]});update();return()=>observer.disconnect();},[ref]);return visible;}// GPU residency is separate from media caching. A paused offscreen Canvas\n// still holds a WebGL context; keep only visible/nearby, displayed cards mounted.\nfunction useCanvasRegion(ref){const[eligible,setEligible]=useState(false);useLayoutEffect(()=>{const node=ref.current;if(!node)return;let near=false;let disposed=false;let wakeFrame=null;const observedAnimations=new WeakSet;const ancestors=[];for(let current=node;current;current=current.parentElement)ancestors.push(current);const signature=()=>ancestors.map(n=>[n.className,n.hidden,n.getAttribute(\"data-sequence-visible\"),// The boot cover changes computed visibility without\n        // changing this card's rect, class or inline styles.\n        n.getAttribute(\"data-slixel-wave-ready\"),n.getAttribute(\"data-slixel-wave-boot\"),n.getAttribute(\"data-slixel-wave-cover\"),n.getAttribute(\"data-slixel-wave-leaving\"),n.style.display,n.style.visibility,Number(n.style.opacity||1)<=.001].join(\"|\")).join(\";\");let previous=signature();const update=()=>{if(disposed)return;// Framer may use native Web Animations instead of CSS transitions.\n// Their finished promises are finite wakeups, not a polling loop.\nfor(const ancestor of ancestors){for(const animation of ancestor.getAnimations?.()||[]){if(observedAnimations.has(animation))continue;if(![\"running\",\"pending\"].includes(animation.playState)&&!animation.pending)continue;if(animation.effect?.getComputedTiming?.().iterations===Infinity)continue;const frames=animation.effect?.getKeyframes?.()||[];if(!frames.some(frame=>\"opacity\"in frame||\"visibility\"in frame))continue;observedAnimations.add(animation);animation.finished.then(update,update);}}if(!near){setEligible(false);return;}const rect=node.getBoundingClientRect();const displayed=rect.width>1&&rect.height>1&&ancestors.every(n=>{const css=getComputedStyle(n);return!n.hidden&&css.display!==\"none\"&&css.visibility!==\"hidden\"&&css.visibility!==\"collapse\"&&Number(css.opacity)>.001;});setEligible(displayed);};// Batch lifecycle signals after their listeners have updated CSS. This\n// is one scheduled check, not an idle RAF loop or a forced resize.\nconst wake=()=>{if(disposed||wakeFrame!==null)return;wakeFrame=requestAnimationFrame(()=>{wakeFrame=null;update();});};const intersection=new IntersectionObserver(entries=>{near=entries[0]?.isIntersecting===true;update();},{rootMargin:\"240px 0px\"});const resize=new ResizeObserver(update);const attributes=new MutationObserver(()=>{// Ignore per-frame gallery transforms and wave masks.\nconst next=signature();if(next===previous)return;previous=next;wake();});intersection.observe(node);resize.observe(node);for(const ancestor of ancestors)attributes.observe(ancestor,{attributes:true,attributeFilter:[\"class\",\"style\",\"hidden\",\"data-sequence-visible\",\"data-slixel-wave-ready\",\"data-slixel-wave-boot\",\"data-slixel-wave-cover\",\"data-slixel-wave-leaving\"]});// CSS/WAAPI fades do not necessarily mutate inline opacity on each\n// frame. A class change may still report opacity=0 at transition start.\n// Recheck at completion instead of retaining that stale hidden state.\nconst onAnimationEnd=event=>{if(event.target===event.currentTarget)update();};const animationEvents=[\"transitionend\",\"transitioncancel\",\"animationend\",\"animationcancel\"];for(const ancestor of ancestors)for(const event of animationEvents)ancestor.addEventListener(event,onAnimationEnd);// Events handle SPA navigation; attributes also handle direct reload,\n// restored pages and covers that release without dispatching an event.\nconst waveEvents=[\"slixel:wave-boot-ready\",\"slixel:page-wave\",\"slixel:page-revealed\"];for(const event of waveEvents)window.addEventListener(event,wake);window.addEventListener(\"pageshow\",update);document.addEventListener(\"visibilitychange\",update);window.addEventListener(\"resize\",update);return()=>{disposed=true;if(wakeFrame!==null)cancelAnimationFrame(wakeFrame);intersection.disconnect();resize.disconnect();attributes.disconnect();for(const ancestor of ancestors)for(const event of animationEvents)ancestor.removeEventListener(event,onAnimationEnd);window.removeEventListener(\"pageshow\",update);document.removeEventListener(\"visibilitychange\",update);window.removeEventListener(\"resize\",update);for(const event of waveEvents)window.removeEventListener(event,wake);};},[ref]);return eligible;}// One finite preparation at a time. Hidden cards keep a 2D frame, not a live\n// WebGL renderer. No animation loop, video playback or global bitmap cache.\nconst frozenFrameJobs=new Set;let frozenFrameTimer=null;function queueFrozenFrame(job){const pump=()=>{frozenFrameTimer=null;const next=frozenFrameJobs.values().next().value;if(!next)return;frozenFrameJobs.delete(next);try{next();}finally{if(frozenFrameJobs.size&&frozenFrameTimer===null)frozenFrameTimer=setTimeout(pump,0);}};frozenFrameJobs.add(job);if(frozenFrameTimer===null)frozenFrameTimer=setTimeout(pump,0);return()=>{frozenFrameJobs.delete(job);if(!frozenFrameJobs.size&&frozenFrameTimer!==null){clearTimeout(frozenFrameTimer);frozenFrameTimer=null;}};}function drawFrozenGlitch(target,source,config,width,height,dpr){let renderer,geometry,material,texture;try{const output=target.getContext(\"2d\");if(!output)return false;renderer=new THREE.WebGLRenderer({alpha:false,depth:false,stencil:false,antialias:false});renderer.setPixelRatio(dpr);renderer.setSize(width,height,false);texture=source.texture.clone();texture.needsUpdate=true;const frozenSource={texture,res:source.res};const uniforms=createGlitchUniforms(frozenSource,texture,source.res,{get:()=>0},{get:()=>.5},config,{width,height});geometry=new THREE.PlaneGeometry(2,2);material=new THREE.ShaderMaterial({vertexShader:VERTEX_SHADER,fragmentShader:FRAGMENT_SHADER,uniforms,depthTest:false,depthWrite:false,toneMapped:false});const scene=new THREE.Scene;const mesh=new THREE.Mesh(geometry,material);mesh.frustumCulled=false;scene.add(mesh);renderer.render(scene,new THREE.Camera);if(renderer.getContext().isContextLost())return false;target.width=renderer.domElement.width;target.height=renderer.domElement.height;// Copy in the same task as render: preserveDrawingBuffer is unnecessary.\noutput.drawImage(renderer.domElement,0,0);return true;}catch(error){console.warn(\"Glitch standby frame unavailable\",error);return false;}finally{geometry?.dispose();material?.dispose();texture?.dispose();renderer?.dispose();if(renderer&&!renderer.getContext().isContextLost())renderer.forceContextLoss();}}function useFrozenGlitchFrame(containerRef,frameRef,eligible,source,config,dpr){const[result,setResult]=useState({key:null,ready:false});const cache=useRef(null);// Source/config identity invalidate the old bitmap before it can be displayed.\nconst key=useMemo(()=>({}),[source,config,dpr]);useLayoutEffect(()=>{if(!eligible)return;const node=containerRef.current;const target=frameRef.current;if(!node||!target)return;let cancel=()=>{};const prepare=()=>{cancel();const width=Math.round(node.clientWidth);const height=Math.round(node.clientHeight);if(width<=1||height<=1)return;// Ignore hidden responsive duplicates, but allow the hidden Info\n// section to prepare its frozen look before the wave exposes it.\nfor(let n=node;n;n=n.parentElement){const css=getComputedStyle(n);if(n.hidden||css.display===\"none\")return;}if(cache.current?.key===key&&cache.current.width===width&&cache.current.height===height)return;cancel=queueFrozenFrame(()=>{const ok=drawFrozenGlitch(target,source,config,width,height,dpr);if(ok){cache.current={key,width,height};}setResult({key,ready:ok});});};const observer=new ResizeObserver(prepare);observer.observe(node);prepare();return()=>{cancel();observer.disconnect();};},[eligible,key,source,config,dpr,containerRef,frameRef]);return{ready:result.key===key&&result.ready,failed:result.key===key&&!result.ready};}// Keep admitted media for this mounted card. Leaving the preload range pauses\n// playback; it must not dispose the texture and restart the request on return.\nfunction usePreparedMedia(key,eligible){const[preparedKey,setPreparedKey]=useState(null);useEffect(()=>{if(key&&eligible)setPreparedKey(key);else if(preparedKey!==key)setPreparedKey(null);},[key,eligible,preparedKey]);return Boolean(key&&preparedKey===key);}// Viewport trigger uses the card's rectangle, not a 1px child that a parent\n// can clip. Coordinates and trigger lines are in the same CSS pixel space.\nfunction cardReachedRevealLine(rect,viewport,point){if(rect.width<=0||rect.height<=0||viewport.height<=0||viewport.width<=0)return false;const bottom=viewport.top+viewport.height;const right=viewport.left+viewport.width;if(rect.bottom<=viewport.top||rect.top>=bottom||rect.right<=viewport.left||rect.left>=right)return false;// Bottom means entry through the viewport's bottom edge. Waiting for the\n// card centre makes the first half remain frozen, especially on tall images.\nif(point===\"bottom\"||point===\"visible\")return true;const ratio=point===\"top\"?.05:point===\"center\"?.5:1;const line=viewport.top+viewport.height*ratio;const middle=rect.top+rect.height/2;// Also handle restoring a page with the card already past the line,\n// reverse scrolling and cards taller than the viewport.\nreturn middle<=line||rect.top<=viewport.top;}const pendingRevealChecks=new Set;let stopRevealChecks=null;function watchRevealPosition(check){if(check())return()=>{};pendingRevealChecks.add(check);if(!stopRevealChecks){let frame=0,timer=0;const visual=window.visualViewport;const tick=()=>{frame=0;window.clearTimeout(timer);timer=0;if(document.hidden)return;pendingRevealChecks.forEach(test=>{if(test())pendingRevealChecks.delete(test);});if(!pendingRevealChecks.size){stopRevealChecks?.();return;}// Transforms used by Framer/smooth-scroll don't necessarily emit\n// scroll or resize. One shared low-rate check only while a visible\n// card is WAITING; never a permanent per-card rendering loop.\ntimer=window.setTimeout(schedule,120);};const schedule=()=>{if(!frame&&!document.hidden)frame=requestAnimationFrame(tick);};window.addEventListener(\"scroll\",schedule,{capture:true,passive:true});window.addEventListener(\"resize\",schedule,{passive:true});window.addEventListener(\"pageshow\",schedule);document.addEventListener(\"visibilitychange\",schedule);visual?.addEventListener(\"resize\",schedule,{passive:true});visual?.addEventListener(\"scroll\",schedule,{passive:true});stopRevealChecks=()=>{cancelAnimationFrame(frame);window.clearTimeout(timer);window.removeEventListener(\"scroll\",schedule,true);window.removeEventListener(\"resize\",schedule);window.removeEventListener(\"pageshow\",schedule);document.removeEventListener(\"visibilitychange\",schedule);visual?.removeEventListener(\"resize\",schedule);visual?.removeEventListener(\"scroll\",schedule);stopRevealChecks=null;};schedule();}return()=>{pendingRevealChecks.delete(check);if(!pendingRevealChecks.size)stopRevealChecks?.();};}function useCardRevealTrigger(ref,point,visible,enabled,replay){const[reached,setReached]=useState(false);const reachedRef=useRef(false);useEffect(()=>{if(!enabled){reachedRef.current=false;setReached(false);return;}if(!visible){if(replay)reachedRef.current=false;setReached(reachedRef.current);return;}if(reachedRef.current){setReached(true);return;}return watchRevealPosition(()=>{const element=ref.current;if(!element?.isConnected)return false;const visual=window.visualViewport;const viewport={top:visual?.offsetTop??0,left:visual?.offsetLeft??0,width:visual?.width??window.innerWidth,height:visual?.height??window.innerHeight};if(!cardReachedRevealLine(element.getBoundingClientRect(),viewport,point))return false;reachedRef.current=true;setReached(true);return true;});},[ref,point,visible,enabled,replay]);// Preserve the once-per-mount mode across an offscreen GPU release.\n// Replay is reset only on actual exit/hide, never on crossing the trigger line.\nreturn enabled&&reached&&(!replay||visible);}function DitherGlitchLive(props){const{internalBlend=\"off\",backdropColor=\"#111111\",blendAmount=100,link,radius=8,enableHover=true,enableReveal=true,defaultMediaType=\"image\",defaultImage,defaultVideo,mediaType=\"image\",hoverImage,hoverVideo,revealTransition,hoverTransition,viewportTrigger=\"top\",compiledConfig,replay=false,renderQuality=\"auto\",alt,style,previewSurface=false,onSurfaceReady,...rest}=props;const isLinkValid=typeof link===\"string\"&&link.trim()!==\"\";const containerRef=useRef(null);const frozenFrameRef=useRef(null);const{bridge:galleryBridge,enabled:galleryEnabled,prewarm}=useGalleryBridge(containerRef);const pageVisible=usePageVisible();const sequenceVisible=useSequenceVisible(containerRef);const waveIntroReady=useWaveIntroReady();const introAllowed=previewSurface||waveIntroReady;const revealAnchorRef=useRef(null);const sourceVideoRef=useRef(null);const hoverVideoRef=useRef(null);const hoverAnimationRef=useRef(null);const revealAnimationRef=useRef(null);const hasTriggeredRef=useRef(false);const isHoveringRef=useRef(false);const revealCompleteRef=useRef(!enableReveal);const initialOpacity=readOpacity(style?.opacity);const activeVisibleRef=useRef(initialOpacity>.01);const variantVisibleRef=useRef(initialOpacity>.3);const[activeVisible,setActiveVisible]=useState(initialOpacity>.01);const[sourceMedia,setSourceMedia]=useState(()=>({key:null,texture:EMPTY_TEXTURE,res:EMPTY_RESOLUTION.clone()}));const[hoverMedia,setHoverMedia]=useState(()=>({texture:null,res:EMPTY_RESOLUTION.clone()}));const[sourceLoaded,setSourceLoaded]=useState(false);const[hoverLoaded,setHoverLoaded]=useState(false);const[canvasReady,setCanvasReady]=useState(false);const sourceKey=defaultMediaType+\":\"+(defaultMediaType===\"video\"?defaultVideo:defaultImage);const validSource=sourceLoaded&&sourceMedia.key===sourceKey&&sourceMedia.texture!==EMPTY_TEXTURE;const galleryRendering=Boolean(galleryBridge&&galleryEnabled&&canvasReady&&validSource&&activeVisible);useLayoutEffect(()=>{const cardNode=galleryBridge?.cardNode;if(!cardNode)return;if(galleryRendering)cardNode.setAttribute(\"data-kinetic-ready\",\"true\");else cardNode.removeAttribute(\"data-kinetic-ready\");return()=>cardNode.removeAttribute(\"data-kinetic-ready\");},[galleryBridge,galleryRendering]);useEffect(()=>{onSurfaceReady?.(canvasReady&&validSource);},[canvasReady,validSource,onSurfaceReady]);const[revealComplete,setRevealComplete]=useState(!enableReveal);const progress=useMotionValue(0);// Prepare one frozen glitch frame offscreen, then resolve it at the selected\n// Top / Center / Bottom viewport trigger.\nconst revealProgress=useMotionValue(enableReveal?.5:1);const visibleInViewport=useInView(containerRef);const cardRevealReached=useCardRevealTrigger(containerRef,viewportTrigger,visibleInViewport&&activeVisible&&sequenceVisible&&!prewarm,enableReveal&&!previewSurface,replay);// Project Preview retains its original bottom-entry anchor and timing.\n// Regular images use the whole card, even when its left edge is clipped.\nconst previewAnchorReached=useInView(revealAnchorRef,{once:!replay});const revealAnchorReached=previewSurface?previewAnchorReached:cardRevealReached;const canvasInRange=useCanvasRegion(containerRef);const viewportHeight=typeof window===\"undefined\"?800:window.innerHeight;const hoverPreloadDistance=Math.ceil(viewportHeight*1.5);const hoverPreloadInView=useInView(containerRef,{margin:`${hoverPreloadDistance}px 0px`});// Match the original component's reliable reveal behavior: build the frozen\n// source image early; a frozen shader frame is prepared near the screen.\n// Media may remain cached while its offscreen Canvas is released.\nconst mediaEligible=hoverPreloadInView&&activeVisible&&pageVisible&&sequenceVisible&&!prewarm;const sourceVideoPrepared=usePreparedMedia(defaultMediaType===\"video\"?sourceKey:null,mediaEligible);// Preserve the frozen image reveal; only video acquisition is deferred.\nconst shouldPrepare=defaultMediaType===\"video\"?sourceVideoPrepared:activeVisible;const shouldPrepareHover=usePreparedMedia(enableHover?`${mediaType}:${mediaType===\"video\"?hoverVideo:hoverImage}`:null,mediaEligible);const shouldRender=visibleInViewport&&activeVisible&&pageVisible&&sequenceVisible&&!prewarm;const canvasMounted=canvasInRange&&activeVisible&&sequenceVisible&&pageVisible&&!prewarm&&shouldPrepare&&validSource;useLayoutEffect(()=>{if(!canvasMounted)setCanvasReady(false);},[canvasMounted]);const canvasDpr=useMemo(()=>getCanvasDpr(renderQuality),[renderQuality]);const{ready:frozenReady,failed:frozenFailed}=useFrozenGlitchFrame(containerRef,frozenFrameRef,enableReveal&&(!revealComplete||replay)&&defaultMediaType===\"image\"&&validSource&&hoverPreloadInView&&activeVisible&&pageVisible&&!prewarm&&!galleryBridge,sourceMedia,compiledConfig,canvasDpr);useEffect(()=>{const opacity=readOpacity(style?.opacity);const isActive=opacity>.01;activeVisibleRef.current=isActive;variantVisibleRef.current=opacity>.3;setActiveVisible(isActive);},[style?.opacity]);// Default media and the first frozen glitch frame are prepared at mount.\n// Playback still stays paused until the card is actually visible.\nuseEffect(()=>{setSourceLoaded(false);setCanvasReady(false);setSourceMedia({key:null,texture:EMPTY_TEXTURE,res:EMPTY_RESOLUTION.clone()});if(!shouldPrepare)return;let active=true;let videoNode=null;let loadedTexture=null;if(defaultMediaType===\"image\"&&defaultImage){IMAGE_LOADER.load(defaultImage,texture=>{if(!active){texture.dispose();return;}loadedTexture=configureTexture(texture);setSourceMedia({key:sourceKey,texture:loadedTexture,res:new THREE.Vector2(texture.image.width||1,texture.image.height||1)});setSourceLoaded(true);},undefined,()=>{if(active){setSourceLoaded(false);setCanvasReady(false);}});}else if(defaultMediaType===\"video\"&&defaultVideo){const video=document.createElement(\"video\");videoNode=video;sourceVideoRef.current=video;video.crossOrigin=\"anonymous\";video.loop=true;video.muted=true;video.playsInline=true;video.preload=\"auto\";video.onloadeddata=()=>{if(!active||loadedTexture)return;loadedTexture=configureTexture(new THREE.VideoTexture(video));setSourceMedia({key:sourceKey,texture:loadedTexture,res:new THREE.Vector2(video.videoWidth||1,video.videoHeight||1)});setSourceLoaded(true);};video.onerror=()=>{if(active){setSourceLoaded(false);setCanvasReady(false);}};// Assign once, after CORS/options/listeners. Setting src starts\n// resource selection; load() here would reset that same request.\nvideo.src=defaultVideo;}else{setSourceLoaded(false);}return()=>{active=false;if(loadedTexture)loadedTexture.dispose();if(videoNode)disposeVideo(videoNode);if(sourceVideoRef.current===videoNode){sourceVideoRef.current=null;}};},[shouldPrepare,defaultMediaType,defaultImage,defaultVideo]);useEffect(()=>{setHoverLoaded(false);setHoverMedia({texture:null,res:EMPTY_RESOLUTION.clone()});if(!enableHover){setHoverLoaded(true);return;}if(!shouldPrepareHover)return;let active=true;let videoNode=null;let loadedTexture=null;if(mediaType===\"image\"&&hoverImage){IMAGE_LOADER.load(hoverImage,texture=>{if(!active){texture.dispose();return;}loadedTexture=configureTexture(texture);setHoverMedia({texture:loadedTexture,res:new THREE.Vector2(texture.image.width||1,texture.image.height||1)});setHoverLoaded(true);},undefined,()=>{if(active)setHoverLoaded(true);});}else if(mediaType===\"video\"&&hoverVideo){const video=document.createElement(\"video\");videoNode=video;hoverVideoRef.current=video;video.crossOrigin=\"anonymous\";video.loop=true;video.muted=true;video.playsInline=true;video.preload=\"auto\";video.oncanplay=()=>{if(!active||loadedTexture)return;loadedTexture=configureTexture(new THREE.VideoTexture(video));setHoverMedia({texture:loadedTexture,res:new THREE.Vector2(video.videoWidth||1,video.videoHeight||1)});setHoverLoaded(true);};video.onerror=()=>{if(active)setHoverLoaded(true);};video.src=hoverVideo;}else{setHoverLoaded(true);}return()=>{active=false;if(loadedTexture)loadedTexture.dispose();if(videoNode)disposeVideo(videoNode);if(hoverVideoRef.current===videoNode){hoverVideoRef.current=null;}};},[shouldPrepareHover,enableHover,mediaType,hoverImage,hoverVideo]);// The first reveal needs only the default media. Hover media can finish\n// loading independently without delaying the frozen glitch frame.\nconst isReady=validSource;const hoverReady=!enableHover||mediaType===\"image\"&&!hoverImage||mediaType===\"video\"&&!hoverVideo||hoverLoaded;useEffect(()=>{if(!shouldPrepare||!isReady)setCanvasReady(false);},[shouldPrepare,isReady]);const startReveal=()=>{if(!enableReveal||prewarm||!introAllowed||!previewSurface&&!waveHasFinishedForIntro())return false;revealAnimationRef.current?.stop();revealCompleteRef.current=false;setRevealComplete(false);revealProgress.set(.5);revealAnimationRef.current=animate(revealProgress,1,revealTransition);return true;};useEffect(()=>{return revealProgress.on(\"change\",value=>{const complete=value>=.999;if(complete===revealCompleteRef.current)return;revealCompleteRef.current=complete;setRevealComplete(complete);});},[revealProgress]);useEffect(()=>{revealAnimationRef.current?.stop();hasTriggeredRef.current=false;revealCompleteRef.current=!enableReveal;setRevealComplete(!enableReveal);revealProgress.set(enableReveal?.5:1);},[enableReveal,revealProgress]);useEffect(()=>{if(!enableReveal)return;// Warmup/media readiness may be reached while the wave is still opaque\n// or revealing. Keep the first glitch frame until the wave finishes.\nif(!introAllowed){if(!revealCompleteRef.current)revealAnimationRef.current?.pause();return;}// A viewport trigger owns the intro timeline once it starts. Scroll,\n// transforms, resizing and temporary GPU warmup must not pause it.\n// Offscreen Canvas/video still sleep through their existing gates.\nif(!previewSurface){if(replay&&!revealAnchorReached){revealAnimationRef.current?.stop();revealAnimationRef.current=null;hasTriggeredRef.current=false;revealProgress.set(.5);return;}if(hasTriggeredRef.current){if(!pageVisible){if(!revealCompleteRef.current)revealAnimationRef.current?.pause();}else if(!revealCompleteRef.current&&revealAnimationRef.current?.state===\"paused\"){revealAnimationRef.current.play();}return;}}if(!shouldRender){if(!revealCompleteRef.current)revealAnimationRef.current?.pause();if(replay&&!revealAnchorReached){revealAnimationRef.current?.stop();revealAnimationRef.current=null;hasTriggeredRef.current=false;revealProgress.set(.5);}return;}if(!isReady||!canvasReady||!revealAnchorReached||prewarm||!pageVisible||!activeVisible){// Wait for the first painted frame before starting. Project\n// Preview also retains its original readiness pause/resume behavior.\nrevealAnimationRef.current?.pause();if(replay&&!revealAnchorReached){revealAnimationRef.current?.stop();revealAnimationRef.current=null;hasTriggeredRef.current=false;revealProgress.set(.5);}return;}if(!hasTriggeredRef.current){// Recheck the live controller inside startReveal: a new wave may\n// begin between this render and its passive effect.\nif(startReveal())hasTriggeredRef.current=true;}else if(!revealCompleteRef.current&&revealAnimationRef.current?.state===\"paused\"){revealAnimationRef.current.play();}},[shouldRender,enableReveal,introAllowed,previewSurface,isReady,canvasReady,revealAnchorReached,replay,revealTransition,activeVisible,prewarm,pageVisible]);useEffect(()=>{if(enableHover&&shouldRender)return;isHoveringRef.current=false;hoverAnimationRef.current?.stop();progress.set(0);hoverVideoRef.current?.pause();if(shouldRender){sourceVideoRef.current?.play().catch(()=>{});}else{sourceVideoRef.current?.pause();}},[enableHover,shouldRender,progress]);// Decode only the video currently contributing to the final frame.\nuseEffect(()=>{const syncVideoPlayback=value=>{const sourceVideo=sourceVideoRef.current;const hoverVideoNode=hoverVideoRef.current;if(sourceVideo){const shouldPlay=shouldRender&&value<.999;if(shouldPlay&&sourceVideo.paused){sourceVideo.play().catch(()=>{});}else if(!shouldPlay&&!sourceVideo.paused){sourceVideo.pause();}}if(hoverVideoNode){const shouldPlay=shouldRender&&revealComplete&&hoverReady&&enableHover&&isHoveringRef.current;if(shouldPlay&&hoverVideoNode.paused){hoverVideoNode.play().catch(()=>{});}else if(!shouldPlay&&!hoverVideoNode.paused){hoverVideoNode.pause();}}};syncVideoPlayback(progress.get());return progress.on(\"change\",syncVideoPlayback);},[progress,shouldRender,revealComplete,hoverReady,enableHover,sourceLoaded,hoverLoaded]);// If the pointer arrives during loading or GPU warmup, start only after the\n// media, shader, and first rendered frame are all ready.\nuseEffect(()=>{if(!isReady||!canvasReady||!revealComplete||!hoverReady||!enableHover||!shouldRender||!isHoveringRef.current){return;}hoverAnimationRef.current?.stop();hoverVideoRef.current?.play().catch(()=>{});hoverAnimationRef.current=animate(progress,1,hoverTransition);},[isReady,canvasReady,revealComplete,hoverReady,enableHover,shouldRender,hoverTransition,progress]);useEffect(()=>()=>{hoverAnimationRef.current?.stop();revealAnimationRef.current?.stop();},[]);const handleHoverStart=()=>{if(!enableHover)return;isHoveringRef.current=true;if(!isReady||!canvasReady||!revealComplete||!hoverReady||!shouldRender)return;hoverAnimationRef.current?.stop();hoverVideoRef.current?.play().catch(()=>{});hoverAnimationRef.current=animate(progress,1,hoverTransition);};const handleHoverEnd=()=>{isHoveringRef.current=false;hoverVideoRef.current?.pause();if(!enableHover||!isReady||!shouldRender)return;hoverAnimationRef.current?.stop();sourceVideoRef.current?.play().catch(()=>{});hoverAnimationRef.current=animate(progress,0,hoverTransition);};// Framer variant animations may call onUpdate every frame. Trigger only\n// when opacity crosses the visibility threshold instead of restarting on\n// every update.\nconst handleVariantUpdate=latest=>{const opacity=readOpacity(latest.opacity);const isActive=opacity>.01;const isVisible=opacity>.3;if(isActive!==activeVisibleRef.current){activeVisibleRef.current=isActive;setActiveVisible(isActive);}if(enableReveal&&introAllowed&&shouldRender&&!prewarm&&replay&&(previewSurface||!hasTriggeredRef.current)&&isReady&&canvasReady&&revealAnchorReached&&isVisible&&!variantVisibleRef.current){if(startReveal())hasTriggeredRef.current=true;}variantVisibleRef.current=isVisible;};const hasDefaultMedia=defaultMediaType===\"image\"?Boolean(defaultImage):Boolean(defaultVideo);if(!hasDefaultMedia){return /*#__PURE__*/_jsxs(\"div\",{...rest,style:{width:\"100%\",height:\"100%\",...style,backgroundColor:\"#111\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:\"#97CD7D\",fontSize:14,fontFamily:\"sans-serif\",borderRadius:radius,border:\"1px dashed #333\",boxSizing:\"border-box\",overflow:\"hidden\"},children:[\"Add a default \",defaultMediaType===\"image\"?\"image\":\"video\"]});}return /*#__PURE__*/_jsxs(motion.div,{ref:containerRef,...rest,\"data-glitch-active\":shouldRender?\"true\":\"false\",role:alt?\"img\":undefined,\"aria-label\":alt||undefined,onUpdate:handleVariantUpdate,onHoverStart:handleHoverStart,onHoverEnd:handleHoverEnd,style:{width:\"100%\",height:\"100%\",...style,position:\"relative\",overflow:\"hidden\",contain:\"layout paint\",backgroundColor:previewSurface||galleryRendering?\"transparent\":compiledConfig.backdropMode?backdropColor:\"#111\",borderRadius:galleryRendering?0:radius},children:[previewSurface&&/*#__PURE__*/_jsx(\"span\",{ref:revealAnchorRef,\"aria-hidden\":\"true\",style:{position:\"absolute\",top:\"50%\",left:0,width:1,height:1,pointerEvents:\"none\"}}),defaultMediaType===\"image\"&&defaultImage&&/*#__PURE__*/_jsx(\"img\",{src:defaultImage,alt:\"\",\"aria-hidden\":\"true\",loading:\"eager\",decoding:\"async\",style:{position:\"absolute\",inset:0,zIndex:0,width:\"100%\",height:\"100%\",display:\"block\",objectFit:\"cover\",visibility:previewSurface&&!canvasReady||galleryRendering||enableReveal&&!revealComplete&&!galleryBridge&&!frozenFailed||compiledConfig.backdropMode&&canvasReady?\"hidden\":\"inherit\",mixBlendMode:compiledConfig.backdropMode?internalBlend===\"screen\"?\"screen\":\"color-dodge\":\"normal\",opacity:compiledConfig.backdropMode?compiledConfig.backdropAmount:1,pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"canvas\",{ref:frozenFrameRef,width:1,height:1,\"aria-hidden\":\"true\",\"data-glitch-standby\":frozenReady?\"ready\":\"pending\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",zIndex:1,pointerEvents:\"none\",opacity:frozenReady&&!revealComplete&&!canvasReady&&!galleryRendering?1:0}}),canvasMounted&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,zIndex:1,opacity:canvasReady?1:0,pointerEvents:\"none\"},children:/*#__PURE__*/_jsxs(Canvas,{onCreated:prepareGlitchRenderer,// Scroll changes position, not the shader's size.\n// Fiber defaults to a trailing 50ms scroll debounce,\n// which can postpone the first measurement indefinitely\n// during continuous movement. ResizeObserver still tracks\n// all real layout changes, without waiting for idle.\nresize:{offsetSize:true,scroll:false,debounce:0},frameloop:\"demand\",dpr:canvasDpr,style:{width:\"100%\",height:\"100%\",display:\"block\",pointerEvents:\"none\"},gl:{antialias:Boolean(galleryBridge),alpha:Boolean(galleryBridge),depth:false,stencil:false,powerPreference:\"high-performance\"},children:[/*#__PURE__*/_jsx(GlitchScene,{galleryBridge:galleryBridge,source:sourceMedia,hover:hoverMedia,progress:progress,revealProgress:revealProgress,config:compiledConfig,mediaActive:shouldRender,continuousActive:compiledConfig.continuousGlitch&&shouldRender}),/*#__PURE__*/_jsx(RendererRelease,{}),/*#__PURE__*/_jsx(ShaderWarmup,{onReady:setCanvasReady})]})}),isLinkValid&&/*#__PURE__*/_jsx(\"a\",{href:link,\"aria-label\":alt||\"Open link\",style:{position:\"absolute\",inset:0,zIndex:10,display:\"block\",width:\"100%\",height:\"100%\",cursor:\"pointer\",backgroundColor:\"transparent\",textDecoration:\"none\",WebkitTapHighlightColor:\"transparent\"}})]});}// Shared with the existing list buttons; no new overrides or button code needed.\nfunction readProjectPreview(detail,group,items){if(!detail||detail.group!==group)return undefined;if(detail.active!==true)return null;const item=items.find(item=>item.id===String(detail.projectId));return item?{item,active:true}:null;}// A list owns one renderer/material, not one WebGL context per hovered row.\n// Retain the painted texture while the latest request decodes. The cache is\n// local, bounded, and released when the preview leaves the page/viewport.\nfunction ProjectPreviewScene({item,props,compiledConfig,onPaint}){const{gl,invalidate}=useThree();const progress=useMotionValue(0);const revealProgress=useMotionValue(1);const[source,setSource]=useState(null);const cache=useRef(new Map);const lifetime=useRef({active:false});const painted=useRef(null);const animation=useRef(null);const sourceRef=useRef(null);sourceRef.current=source;const empty=useMemo(()=>({texture:EMPTY_TEXTURE,res:EMPTY_RESOLUTION.clone()}),[]);const noHover=useMemo(()=>({texture:null,res:EMPTY_RESOLUTION.clone()}),[]);useEffect(()=>{const lease=lifetime.current;lease.active=true;return()=>{lease.active=false;animation.current?.stop();queueMicrotask(()=>{if(lease.active)return;cache.current.forEach(entry=>entry.texture.dispose());cache.current.clear();});};},[]);useEffect(()=>{let active=true;let image=null;const commit=entry=>{if(!active)return;cache.current.delete(item.image);cache.current.set(item.image,entry);// Upload before replacing the last painted surface. No new Canvas,\n// shader compilation, or frozen-frame renderer for this selection.\ngl.initTexture(entry.texture);setSource({...entry,item});};const cached=cache.current.get(item.image);if(cached)commit(cached);else{image=new Image;image.crossOrigin=\"anonymous\";image.decoding=\"async\";image.onload=async()=>{try{await image.decode();}catch(_){}if(!active||!image.naturalWidth)return;const texture=configureTexture(new THREE.Texture(image));commit({texture,res:new THREE.Vector2(image.naturalWidth,image.naturalHeight),bytes:image.naturalWidth*image.naturalHeight*4});};// A failed candidate never removes the already displayed work.\nimage.onerror=()=>{};image.src=item.image;}return()=>{active=false;if(image){image.onload=image.onerror=null;// Keep decoded images backing live/cached textures intact.\nif(!cache.current.has(item.image))image.removeAttribute(\"src\");}};},[item.image,item.id,gl]);useLayoutEffect(()=>{if(!source)return;animation.current?.stop();revealProgress.set(props.enableReveal===false?1:.5);if(props.enableReveal!==false)animation.current=animate(revealProgress,1,props.revealTransition);invalidate();return()=>animation.current?.stop();},[source,props.enableReveal,props.revealTransition,revealProgress,invalidate]);useEffect(()=>{// Never dispose the texture still referenced by the scene. Eviction\n// happens after the replacement's uniforms have been committed.\nlet bytes=Array.from(cache.current.values()).reduce((n,e)=>n+e.bytes,0);for(const[key,entry]of cache.current){if(cache.current.size<=3&&bytes<=48*1024*1024)break;if(entry.texture===source?.texture)continue;cache.current.delete(key);bytes-=entry.bytes;entry.texture.dispose();}},[source]);useEffect(()=>{const lost=event=>{event.preventDefault();painted.current=null;};const restored=()=>{invalidate();};gl.domElement.addEventListener(\"webglcontextlost\",lost);gl.domElement.addEventListener(\"webglcontextrestored\",restored);return()=>{gl.domElement.removeEventListener(\"webglcontextlost\",lost);gl.domElement.removeEventListener(\"webglcontextrestored\",restored);};},[gl,invalidate]);useFrame(({scene,camera,size})=>{if(!source||size.width<=1||size.height<=1||gl.getContext().isContextLost())return;gl.render(scene,camera);if(painted.current===source)return;painted.current=source;queueMicrotask(()=>{if(lifetime.current.active&&sourceRef.current===source)onPaint(source.item);});},1);return /*#__PURE__*/_jsx(GlitchScene,{source:source||empty,hover:noHover,progress:progress,revealProgress:revealProgress,config:compiledConfig,mediaActive:true,continuousActive:Boolean(source&&compiledConfig.continuousGlitch)});}function ProjectPreviewHandoff({item,props,compiledConfig,group}){const[front,setFront]=useState(null);const dpr=useMemo(()=>getCanvasDpr(props.renderQuality),[props.renderQuality]);const visible=Boolean(front);useLayoutEffect(()=>{if(visible)window.dispatchEvent(new CustomEvent(\"slixel:project-preview-layout\",{detail:group}));},[visible,group]);return /*#__PURE__*/_jsxs(\"div\",{\"data-slixel-preview-group\":group,\"data-slixel-preview-visible\":String(Boolean(front)),\"data-project-preview-layer\":front?.id,\"data-project-preview-front\":String(Boolean(front)),role:\"img\",\"aria-label\":front?.alt||item.alt,style:{position:\"relative\",width:\"100%\",height:\"100%\",borderRadius:props.radius??8,overflow:\"hidden\",pointerEvents:\"none\"},children:[front&&/*#__PURE__*/_jsx(\"img\",{src:front.image,alt:front.alt,\"aria-hidden\":\"true\",style:{position:\"absolute\",width:\"100%\",height:\"100%\",objectFit:\"cover\",opacity:0}}),/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",opacity:front?1:0},children:/*#__PURE__*/_jsxs(Canvas,{onCreated:prepareGlitchRenderer,resize:{offsetSize:true,scroll:false,debounce:0},frameloop:\"demand\",dpr:dpr,style:{width:\"100%\",height:\"100%\",display:\"block\",pointerEvents:\"none\"},gl:{antialias:false,alpha:false,depth:false,stencil:false,powerPreference:\"high-performance\"},children:[/*#__PURE__*/_jsx(ProjectPreviewScene,{item:item,props:props,compiledConfig:compiledConfig,onPaint:setFront}),/*#__PURE__*/_jsx(RendererRelease,{})]})})]});}function ProjectListPreview(props){const{previewGroup=\"additional-work\",previewItems=[],previewInitialId=\"\",previewExitDuration=.3,compiledConfig,...surfaceProps}=props;delete surfaceProps.previewEnabled;const group=previewGroup.trim()||\"additional-work\";const items=useMemo(()=>{const ids=new Set;return previewItems.reduce((result,item)=>{const id=String(item.id||\"\").trim();if(!id||!item.image||ids.has(id))return result;ids.add(id);result.push({id,image:item.image,alt:item.alt||\"\"});return result;},[]);},[previewItems]);const ref=useRef(null);const pageVisible=usePageVisible();const sequenceVisible=useSequenceVisible(ref);const inView=useInView(ref);const[selection,setSelection]=useState(null);const exitSeconds=Math.max(0,Math.min(2,Number(previewExitDuration)||0));const isEditor=RenderTarget.current()===RenderTarget.canvas;const hide=()=>setSelection(previous=>previous?{...previous,active:false}:null);useEffect(()=>{if(isEditor||!pageVisible||!sequenceVisible||!inView)return;setSelection(null);const receive=event=>{const next=readProjectPreview(event.detail,group,items);if(next===undefined)return;if(next===null){hide();return;}setSelection(previous=>previous?.active&&previous.item===next.item?previous:next);};const outside=event=>{const button=event.target instanceof Element?event.target.closest(\"[data-slixel-preview-button]\"):null;if(button?.getAttribute(\"data-slixel-preview-button\")!==group)hide();};const hidden=()=>{if(document.hidden)setSelection(null);};window.addEventListener(\"slixel:project-preview-v2\",receive);window.addEventListener(\"blur\",hide);document.addEventListener(\"pointerdown\",outside,true);document.addEventListener(\"visibilitychange\",hidden);// A connected row is not enough: an old cached selection must never\n// show a default project when returning to the page.\nconst cached=window.__slixelProjectPreviewV2?.get(group);const owner=cached?.owner?.element;if(cached?.active&&owner?.isConnected&&owner.matches(\":hover, :focus-visible\"))receive({detail:cached});return()=>{window.removeEventListener(\"slixel:project-preview-v2\",receive);window.removeEventListener(\"blur\",hide);document.removeEventListener(\"pointerdown\",outside,true);document.removeEventListener(\"visibilitychange\",hidden);};},[group,items,isEditor,pageVisible,sequenceVisible,inView]);useEffect(()=>{if(!selection||selection.active)return;const timer=window.setTimeout(()=>setSelection(previous=>previous?.active?previous:null),exitSeconds*1e3);return()=>window.clearTimeout(timer);},[selection,exitSeconds]);useEffect(()=>{if(!pageVisible||!sequenceVisible||!inView)setSelection(null);},[pageVisible,sequenceVisible,inView]);const item=isEditor?items.find(item=>item.id===previewInitialId.trim())||items[0]:selection?.item;return /*#__PURE__*/_jsx(\"div\",{ref:ref,\"data-project-preview-group\":group,style:{width:\"100%\",height:\"100%\",...props.style,pointerEvents:\"none\",background:\"transparent\"},children:isEditor?item&&/*#__PURE__*/_jsx(\"img\",{src:item.image,alt:item.alt,style:{width:\"100%\",height:\"100%\",objectFit:\"cover\"}}):item&&pageVisible&&sequenceVisible&&inView&&/*#__PURE__*/_jsx(motion.div,{\"data-project-preview-id\":item.id,initial:false,animate:{opacity:selection.active?1:0},transition:{duration:selection.active?0:exitSeconds},style:{width:\"100%\",height:\"100%\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(ProjectPreviewHandoff,{item:item,props:surfaceProps,compiledConfig:compiledConfig,group:group},group)})});}/**\n\n * @framerSupportedLayoutWidth any\n\n * @framerSupportedLayoutHeight any\n\n * @framerIntrinsicWidth 640\n\n * @framerIntrinsicHeight 420\n\n */export default function OptimizedDitherGlitch(props){const{internalBlend=\"off\",backdropColor=\"#111111\",blendAmount=100,effectIntensity=1,pixelSize=3,glitchBlocks=40,rgbShift=.1,ditherDarkColor=\"#111111\",ditherLightColor=\"#FFFFFF\",glitchColor1=\"#FF695A\",glitchColor2=\"#97CD7D\",glitchColor3=\"#6650D8\",continuousGlitch=false,glitchStrength=1,glitchSpeed=1,glitchDirection=\"vertical\",style,radius=8,enableHover=true,disableMobileHover=false}=props;// Tablet/phone layouts and touch-only devices must not start hover effects.\nconst[mobileHoverBlocked,setMobileHoverBlocked]=useState(()=>disableMobileHover);useEffect(()=>{if(!disableMobileHover){setMobileHoverBlocked(false);return;}const query=window.matchMedia(\"(max-width: 1279px), (hover: none), (pointer: coarse)\");const update=()=>setMobileHoverBlocked(query.matches);update();query.addEventListener(\"change\",update);return()=>query.removeEventListener(\"change\",update);},[disableMobileHover]);const effectiveHover=enableHover&&!(disableMobileHover&&mobileHoverBlocked);const compiledConfig=useMemo(()=>({backdropMode:internalBlend===\"screen\"?1:internalBlend===\"colorDodge\"?2:0,backdropColor,backdropAmount:Math.max(0,Math.min(100,blendAmount))/100,intensity:effectIntensity,pixelSize,glitchBlocks,rgbShift,continuousGlitch,glitchStrength,glitchSpeed,glitchDirection,colors:{dark:ditherDarkColor,light:ditherLightColor,g1:glitchColor1,g2:glitchColor2,g3:glitchColor3}}),[internalBlend,backdropColor,blendAmount,effectIntensity,pixelSize,glitchBlocks,rgbShift,continuousGlitch,glitchStrength,glitchSpeed,glitchDirection,ditherDarkColor,ditherLightColor,glitchColor1,glitchColor2,glitchColor3]);if(props.previewEnabled){return /*#__PURE__*/_jsx(ProjectListPreview,{...props,compiledConfig:compiledConfig});}if(RenderTarget.current()===RenderTarget.canvas){return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:\"100%\",...style,backgroundColor:compiledConfig.backdropMode?backdropColor:\"#111\",backgroundImage:props.defaultImage&&!compiledConfig.backdropMode?`url(${props.defaultImage})`:\"none\",backgroundSize:\"cover\",backgroundPosition:\"center\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:\"#FF695A\",fontSize:14,fontWeight:600,fontFamily:\"sans-serif\",borderRadius:radius,overflow:\"hidden\",position:\"relative\",isolation:compiledConfig.backdropMode?\"isolate\":undefined},children:[compiledConfig.backdropMode>0&&props.defaultImage&&/*#__PURE__*/_jsx(\"img\",{src:props.defaultImage,alt:\"\",\"aria-hidden\":\"true\",style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",objectFit:\"cover\",pointerEvents:\"none\",mixBlendMode:internalBlend===\"screen\"?\"screen\":\"color-dodge\",opacity:compiledConfig.backdropAmount}}),!props.defaultImage&&\"WebGL Preview Disabled in Editor\"]});}// Each instance controls its intro; explicit Off always overrides the default.\nreturn /*#__PURE__*/_jsx(DitherGlitchLive,{...props,enableReveal:props.enableReveal??true,radius:radius,enableHover:effectiveHover,compiledConfig:compiledConfig});}OptimizedDitherGlitch.defaultProps={internalBlend:\"off\",backdropColor:\"#111111\",blendAmount:100,radius:8,disableMobileHover:false,enableHover:true,enableReveal:true,replay:false,defaultMediaType:\"image\",mediaType:\"image\",viewportTrigger:\"top\",renderQuality:\"auto\",revealTransition:{type:\"tween\",duration:2.2,ease:\"easeInOut\"},hoverTransition:{type:\"tween\",duration:1.4,ease:\"easeInOut\"},effectIntensity:1,pixelSize:3,glitchBlocks:40,rgbShift:.1,continuousGlitch:false,glitchStrength:1,glitchSpeed:1,glitchDirection:\"vertical\",ditherDarkColor:\"#111111\",ditherLightColor:\"#FFFFFF\",glitchColor1:\"#FF695A\",glitchColor2:\"#97CD7D\",glitchColor3:\"#6650D8\"};addPropertyControls(OptimizedDitherGlitch,{previewEnabled:{type:ControlType.Boolean,title:\"Project Preview\",defaultValue:false,description:\"Optional image receiver. Uses Reveal Anim on selection; local Hover and Link are bypassed only in this mode.\"},previewGroup:{type:ControlType.String,title:\"Preview Group\",defaultValue:\"additional-work\",hidden:p=>!p.previewEnabled},previewItems:{type:ControlType.Array,title:\"Preview Images\",defaultValue:[],maxCount:100,hidden:p=>!p.previewEnabled,control:{type:ControlType.Object,controls:{id:{type:ControlType.String,title:\"Project ID\",defaultValue:\"\",description:\"Unique ID, e.g. 1, 2 or yllo. Use exactly this ID on its button.\"},image:{type:ControlType.Image,title:\"Image\"},alt:{type:ControlType.String,title:\"Alt Text\",defaultValue:\"\",displayTextArea:true}}},description:\"Add one entry per project: unique ID, image and descriptive alt. All images live here, not in the buttons.\"},previewInitialId:{type:ControlType.String,title:\"Initial ID\",defaultValue:\"\",hidden:p=>!p.previewEnabled,description:\"Editor thumbnail only. On the website the preview stays hidden until a row is selected.\"},previewExitDuration:{type:ControlType.Number,title:\"Preview Exit\",defaultValue:.3,min:0,max:2,step:.05,unit:\"s\",hidden:p=>!p.previewEnabled,description:\"Glitch-out and fade duration after leaving the list buttons.\"},link:{type:ControlType.Link,title:\"Link\"},internalBlend:{type:ControlType.Enum,title:\"Internal Blend\",options:[\"off\",\"screen\",\"colorDodge\"],optionTitles:[\"Off\",\"Screen\",\"Color Dodge\"],defaultValue:\"off\",description:\"Blends inside the shader over a solid color. Set Framer Blend to Normal and Opacity to 1.\"},backdropColor:{type:ControlType.Color,title:\"Backdrop Color\",defaultValue:\"#111111\",hidden:props=>!props.internalBlend||props.internalBlend===\"off\",description:\"Opaque background color for this instance/theme. Use 100% color alpha.\"},blendAmount:{type:ControlType.Number,title:\"Blend Amount\",defaultValue:100,min:0,max:100,step:1,unit:\"%\",hidden:props=>!props.internalBlend||props.internalBlend===\"off\",description:\"Replaces outer opacity: 0% = backdrop only, 100% = full blend.\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:8,min:0,max:200,unit:\"px\"},enableHover:{type:ControlType.Boolean,title:\"Hover On/Off\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},disableMobileHover:{type:ControlType.Boolean,title:\"No Mobile Hover\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\",description:\"Disable hover on phone/tablet layouts (below 1280px) and touch-only devices.\",hidden:({enableHover})=>!enableHover},replay:{hidden:({enableReveal})=>enableReveal===false,type:ControlType.Boolean,title:\"Replay Anim\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},renderQuality:{type:ControlType.Enum,title:\"Render Quality\",options:[\"auto\",\"performance\",\"quality\"],optionTitles:[\"Auto\",\"Performance\",\"Quality\"],defaultValue:\"auto\"},defaultMediaType:{type:ControlType.Enum,title:\"Default Media\",options:[\"image\",\"video\"],optionTitles:[\"Image\",\"Video\"],defaultValue:\"image\"},defaultImage:{type:ControlType.Image,title:\"Default Image\",hidden:({defaultMediaType})=>defaultMediaType!==\"image\"},defaultVideo:{type:ControlType.File,title:\"Default Video\",allowedFileTypes:[\"mp4\",\"webm\"],hidden:({defaultMediaType})=>defaultMediaType!==\"video\"},mediaType:{type:ControlType.Enum,title:\"Hover Media\",options:[\"image\",\"video\"],optionTitles:[\"Image\",\"Video\"],defaultValue:\"image\",hidden:({enableHover})=>!enableHover},hoverImage:{type:ControlType.Image,title:\"Hover Image\",hidden:({enableHover,mediaType})=>!enableHover||mediaType!==\"image\"},hoverVideo:{type:ControlType.File,title:\"Hover Video\",allowedFileTypes:[\"mp4\",\"webm\"],hidden:({enableHover,mediaType})=>!enableHover||mediaType!==\"video\"},alt:{type:ControlType.String,title:\"Alt Text\",defaultValue:\"\"},enableReveal:{type:ControlType.Boolean,title:\"Intro Glitch\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},revealTransition:{type:ControlType.Transition,title:\"Reveal Anim\",hidden:({enableReveal})=>enableReveal===false,defaultValue:{type:\"tween\",duration:2.2,ease:\"easeInOut\"}},hoverTransition:{type:ControlType.Transition,title:\"Hover Anim\",defaultValue:{type:\"tween\",duration:1.4,ease:\"easeInOut\"},hidden:({enableHover})=>!enableHover},viewportTrigger:{type:ControlType.Enum,title:\"Trigger Point\",hidden:({enableReveal})=>enableReveal===false,options:[\"top\",\"center\",\"bottom\",\"visible\"],optionTitles:[\"Top\",\"Center\",\"Bottom\",\"При появлении\"],defaultValue:\"top\"},continuousGlitch:{type:ControlType.Boolean,title:\"Continuous Glitch\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\"},glitchStrength:{type:ControlType.Number,title:\"Glitch Strength\",defaultValue:1,min:0,max:1,step:.05},glitchSpeed:{type:ControlType.Number,title:\"Glitch Speed\",defaultValue:1,min:.1,max:4,step:.1},glitchDirection:{type:ControlType.Enum,title:\"Glitch Direction\",options:[\"vertical\",\"horizontal\"],optionTitles:[\"Vertical\",\"Horizontal\"],defaultValue:\"vertical\",displaySegmentedControl:true},effectIntensity:{type:ControlType.Number,title:\"Intensity\",defaultValue:1,min:.1,max:3,step:.1},pixelSize:{type:ControlType.Number,title:\"Pixel Size\",defaultValue:3,min:1,max:10,step:1},glitchBlocks:{type:ControlType.Number,title:\"Glitch Blocks\",defaultValue:40,min:10,max:150,step:1},rgbShift:{type:ControlType.Number,title:\"RGB Split\",defaultValue:.1,min:.01,max:.5,step:.01},ditherDarkColor:{type:ControlType.Color,title:\"Dither Dark\",defaultValue:\"#111111\"},ditherLightColor:{type:ControlType.Color,title:\"Dither Light\",defaultValue:\"#FFFFFF\"},glitchColor1:{type:ControlType.Color,title:\"Glitch RGB 1\",defaultValue:\"#FF695A\"},glitchColor2:{type:ControlType.Color,title:\"Glitch RGB 2\",defaultValue:\"#97CD7D\"},glitchColor3:{type:ControlType.Color,title:\"Glitch RGB 3\",defaultValue:\"#6650D8\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"OptimizedDitherGlitch\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicHeight\":\"420\",\"framerIntrinsicWidth\":\"640\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Glitch_case.map","// Typewriter Text — Framer Workshop (optimized, Intersection Observer, SSR/Canvas safe)\n// Author: Slava + GPT-5 tuned (rev. zero-glitch single layer)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";export default function Typewriter(props){const{phrases=[\"Cross Platform Design\",\"Digital Products\",\"Web & Mobile Apps\",\"UX/UI Product Design\",\"User-Centered\\nDesign\",\"Immersive\\nExperiences\"],anchor=\"left\",textAlign=anchor===\"right\"?\"right\":anchor,typingSpeedMs=40,deletingSpeedMs=28,pauseAfterTypedMs=900,pauseAfterDeletedMs=300,startDelayMs=0,loop=true,showCaret=true,caretChar=\"|\",caretBlinkMs=500,font,color=\"#000000\",style,...rest}=props;const safePhrases=Array.isArray(phrases)&&phrases.length>0?phrases:[\"\"];const[idx,setIdx]=useState(0);const[displayText,setDisplayText]=useState(\"\");const[caretVisible,setCaretVisible]=useState(true);const[reduced,setReduced]=useState(false);const[state,setState]=useState(\"initial\");const[isInView,setIsInView]=useState(true);const isStatic=useIsStaticRenderer();const isInteractive=typeof window!==\"undefined\"&&!isStatic;const containerRef=useRef(null);const timeoutRef=useRef(null);const caretIntervalRef=useRef(null);useEffect(()=>{if(!isInteractive)return;const mq=window.matchMedia(\"(prefers-reduced-motion: reduce)\");setReduced(mq.matches);const onChange=e=>setReduced(e.matches);mq.addEventListener?.(\"change\",onChange);return()=>mq.removeEventListener?.(\"change\",onChange);},[isInteractive]);useEffect(()=>{if(!isInteractive||!containerRef.current)return;const observer=new IntersectionObserver(([entry])=>{setIsInView(entry.isIntersecting);},{threshold:0});observer.observe(containerRef.current);return()=>observer.disconnect();},[isInteractive]);useEffect(()=>{if(caretIntervalRef.current){clearInterval(caretIntervalRef.current);caretIntervalRef.current=null;}if(!showCaret||reduced||!isInteractive||!isInView){setCaretVisible(true);return;}caretIntervalRef.current=window.setInterval(()=>{setCaretVisible(v=>!v);},Math.max(100,caretBlinkMs));return()=>{if(caretIntervalRef.current)clearInterval(caretIntervalRef.current);caretIntervalRef.current=null;};},[showCaret,caretBlinkMs,reduced,isInteractive,isInView]);const currentPhrase=safePhrases[idx]||\"\";const untypedText=currentPhrase.slice(displayText.length)// Ненапечатанный остаток\n;useEffect(()=>{const clear=()=>{if(timeoutRef.current){clearTimeout(timeoutRef.current);timeoutRef.current=null;}};clear();if(!isInteractive||!isInView){if(!isInteractive)setDisplayText(safePhrases[0]||\"\");return()=>clear();}if(reduced){setDisplayText(currentPhrase);if(loop&&safePhrases.length>1){timeoutRef.current=window.setTimeout(()=>{startTransition(()=>{setIdx(p=>(p+1)%safePhrases.length);});},Math.max(0,pauseAfterTypedMs));}return()=>clear();}switch(state){case\"initial\":{timeoutRef.current=window.setTimeout(()=>{startTransition(()=>setState(\"typing\"));},Math.max(0,startDelayMs));break;}case\"typing\":{if(displayText.length<currentPhrase.length){timeoutRef.current=window.setTimeout(()=>{startTransition(()=>{setDisplayText(currentPhrase.slice(0,displayText.length+1));});},Math.max(1,typingSpeedMs));}else{if(loop&&safePhrases.length>1){startTransition(()=>setState(\"pauseAfterType\"));}}break;}case\"pauseAfterType\":{timeoutRef.current=window.setTimeout(()=>{startTransition(()=>setState(\"deleting\"));},Math.max(0,pauseAfterTypedMs));break;}case\"deleting\":{if(displayText.length>0){timeoutRef.current=window.setTimeout(()=>{startTransition(()=>{setDisplayText(displayText.slice(0,-1));});},Math.max(1,deletingSpeedMs));}else{startTransition(()=>setState(\"pauseAfterDelete\"));}break;}case\"pauseAfterDelete\":{timeoutRef.current=window.setTimeout(()=>{startTransition(()=>{setIdx(p=>(p+1)%safePhrases.length);setState(\"typing\");});},Math.max(0,pauseAfterDeletedMs));break;}}return()=>clear();},[state,displayText,currentPhrase,safePhrases,typingSpeedMs,deletingSpeedMs,pauseAfterTypedMs,pauseAfterDeletedMs,startDelayMs,loop,reduced,isInteractive,isInView]);useEffect(()=>{startTransition(()=>{setIdx(0);setDisplayText(\"\");setState(\"initial\");});if(!isInteractive){setDisplayText(safePhrases[0]||\"\");}},[safePhrases,isInteractive]);const containerStyle={width:\"100%\",height:\"100%\",display:\"flex\",flexDirection:\"column\",justifyContent:\"flex-start\",overflow:\"hidden\",...style||{}};const showCaretNow=showCaret&&(isStatic||reduced?true:caretVisible);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:containerStyle,role:\"text\",\"aria-live\":isInteractive?\"polite\":\"off\",\"aria-label\":\"Typewriter text\",...rest,children:/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",textAlign,whiteSpace:\"pre-wrap\",wordBreak:\"break-word\",overflowWrap:\"break-word\",color,...font},children:[/*#__PURE__*/_jsx(\"span\",{children:displayText}),showCaret&&/*#__PURE__*/_jsx(\"span\",{style:{position:\"relative\"},children:/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",left:0,top:0,opacity:showCaretNow?1:0},children:caretChar})}),/*#__PURE__*/_jsx(\"span\",{style:{visibility:\"hidden\"},children:untypedText})]})});}addPropertyControls(Typewriter,{phrases:{type:ControlType.Array,title:\"Phrases\",control:{type:ControlType.String,displayTextArea:true,placeholder:\"Enter phrase...\"},defaultValue:[\"Cross Platform Design\",\"Digital Products\",\"Web & Mobile Apps\",\"UX/UI Product Design\",\"User-Centered\\nDesign\",\"Immersive\\nExperiences\"],maxCount:10},anchor:{type:ControlType.Enum,title:\"Anchor\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\",displaySegmentedControl:true},textAlign:{type:ControlType.Enum,title:\"Text Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\",displaySegmentedControl:true},font:{type:ControlType.Font,title:\"Font\",defaultValue:{fontSize:\"24px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\"},controls:\"extended\",defaultFontType:\"sans-serif\"},color:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\"},typingSpeedMs:{type:ControlType.Number,title:\"Typing Speed\",defaultValue:40,min:10,max:200,step:10,unit:\"ms\"},deletingSpeedMs:{type:ControlType.Number,title:\"Deleting Speed\",defaultValue:28,min:10,max:5e3,step:10,unit:\"ms\"},pauseAfterTypedMs:{type:ControlType.Number,title:\"Pause After Typed\",defaultValue:900,min:100,max:1e4,step:100,unit:\"ms\"},pauseAfterDeletedMs:{type:ControlType.Number,title:\"Pause After Deleted\",defaultValue:300,min:100,max:1e4,step:50,unit:\"ms\"},startDelayMs:{type:ControlType.Number,title:\"Start Delay\",defaultValue:0,min:0,max:1e4,step:100,unit:\"ms\"},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},showCaret:{type:ControlType.Boolean,title:\"Show Caret\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},caretChar:{type:ControlType.String,title:\"Caret Character\",defaultValue:\"|\",hidden:({showCaret})=>!showCaret},caretBlinkMs:{type:ControlType.Number,title:\"Caret Blink\",defaultValue:500,min:100,max:2e3,step:100,unit:\"ms\",hidden:({showCaret})=>!showCaret}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Typewriter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Typewriter.map"],"mappings":"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"}