{"version":3,"file":"script_main.CbGt5C9V.mjs","names":["clamp","debounce","Component","useRef","_Fragment","Children","addPropertyOverrides","enabledGestures","cycleOrder","serializationHash","variantClassNames","transition1","transformTemplate1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","RichText","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","sharedStyle.className","RichText","sharedStyle.css","sharedStyle.fonts","css","serializationHash","variantClassNames","transition1","React.useContext","React.useMemo","humanReadableVariantMap","React.Fragment","getProps","React.forwardRef","useRef","React.useId","sharedStyle.className","sharedStyle1.className","className","RichText","sharedStyle.css","sharedStyle1.css","sharedStyle.fonts","sharedStyle1.fonts","useTimers","React.useRef","React.useMemo","React.useState","React.useCallback","matchActive","normPath","MOTION","url","React.useId","c","_Fragment","useIsoLayoutEffect","React.useEffect","React.useLayoutEffect","React.useRef","React.useMemo","p","_Fragment","React.useState","React.useId","React.useCallback","React.useEffect","React.useLayoutEffect","Navigation","DropdownContent","Button","MoAVCIFooter","Lenis","MoAVCINav","Cursor","isBrowser","sharedStyle.css","sharedStyle1.css","sharedStyle2.css","useRef","React.useId","sharedStyle.className","sharedStyle1.className","sharedStyle2.className","React.useRef","PropertyOverrides","Image1","RichText","React.Fragment","_Fragment","sharedStyle.fonts","sharedStyle1.fonts","sharedStyle2.fonts","React.createElement","Template1","Framer.PageRoot","Framer.lazy","Framer.useCurrentRoute","Framer.useLocaleInfo","Framer.useRouter","React.Fragment","React.memo","React.useCallback","React.useEffect","React.useRef","React.useState","React.useLayoutEffect","Framer.LazyValue","Framer.GracefullyDegradingErrorBoundary","Framer.PageEffectsProvider","Framer.patchRoutesForABTesting","Framer.inferInitialRouteFromPath","Framer.yieldToMain","React.startTransition","Framer.ErrorPlaceholder"],"sources":["https:/unpkg.com/lenis@1.3.23/dist/lenis.mjs","https:/unpkg.com/lenis@1.3.23/dist/lenis-snap.mjs","https:/framerusercontent.com/modules/bSeEZJm22jsjERCOGQvq/YmzNUbQh4V7UMGbeal0O/Lenis.js","https:/framerusercontent.com/modules/grynIbj8w7eI74mrtojm/CX7wiG9a6cQ4zYTheoyK/c6TSFDhCz.js","https:/framerusercontent.com/modules/5b3p0bJlhABoAiydUAQQ/3x3mkxIQXyqYaoK0BUyu/vRahVGG7A.js","https:/framerusercontent.com/modules/1YebAqrdxxGcLJ2mIAyb/9Rq64fCgj8s9w9FnaJev/JCTbwXFKE.js","https:/framerusercontent.com/modules/mdGJxtYAiOWn5LYBU9oG/AKW1GEvhuAXXoHaFH4dk/VtZoRV2tQ.js","https:/framerusercontent.com/modules/wlJg99Gtk53hxu8ymS2c/kn3fuyZ5Za443VcxActX/Footer2o3.js","https:/framerusercontent.com/modules/ZhfUHDAudAHKiPFOOpO7/eXCRYhTryo8fF5oUXIdz/MoavciNav.js","https:/framerusercontent.com/modules/hCj9CnUlzBUjYWZtknya/Ef0m72xZOmAxyp0ckoD0/XYq2OWhaQ.js","framer:toplevel/main"],"sourcesContent":["//#region package.json\nvar version = \"1.3.23\";\n//#endregion\n//#region packages/core/src/maths.ts\n/**\n* Clamp a value between a minimum and maximum value\n*\n* @param min Minimum value\n* @param input Value to clamp\n* @param max Maximum value\n* @returns Clamped value\n*/\nfunction clamp(min, input, max) {\n\treturn Math.max(min, Math.min(input, max));\n}\n/**\n*  Linearly interpolate between two values using an amount (0 <= t <= 1)\n*\n* @param x First value\n* @param y Second value\n* @param t Amount to interpolate (0 <= t <= 1)\n* @returns Interpolated value\n*/\nfunction lerp(x, y, t) {\n\treturn (1 - t) * x + t * y;\n}\n/**\n* Damp a value over time using a damping factor\n* {@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}\n*\n* @param x Initial value\n* @param y Target value\n* @param lambda Damping factor\n* @param dt Time elapsed since the last update\n* @returns Damped value\n*/\nfunction damp(x, y, lambda, deltaTime) {\n\treturn lerp(x, y, 1 - Math.exp(-lambda * deltaTime));\n}\n/**\n* Calculate the modulo of the dividend and divisor while keeping the result within the same sign as the divisor\n* {@link https://anguscroll.com/just/just-modulo}\n*\n* @param n Dividend\n* @param d Divisor\n* @returns Modulo\n*/\nfunction modulo(n, d) {\n\treturn (n % d + d) % d;\n}\n//#endregion\n//#region packages/core/src/animate.ts\n/**\n* Animate class to handle value animations with lerping or easing\n*\n* @example\n* const animate = new Animate()\n* animate.fromTo(0, 100, { duration: 1, easing: (t) => t })\n* animate.advance(0.5) // 50\n*/\nvar Animate = class {\n\tisRunning = false;\n\tvalue = 0;\n\tfrom = 0;\n\tto = 0;\n\tcurrentTime = 0;\n\tlerp;\n\tduration;\n\teasing;\n\tonUpdate;\n\t/**\n\t* Advance the animation by the given delta time\n\t*\n\t* @param deltaTime - The time in seconds to advance the animation\n\t*/\n\tadvance(deltaTime) {\n\t\tif (!this.isRunning) return;\n\t\tlet completed = false;\n\t\tif (this.duration && this.easing) {\n\t\t\tthis.currentTime += deltaTime;\n\t\t\tconst linearProgress = clamp(0, this.currentTime / this.duration, 1);\n\t\t\tcompleted = linearProgress >= 1;\n\t\t\tconst easedProgress = completed ? 1 : this.easing(linearProgress);\n\t\t\tthis.value = this.from + (this.to - this.from) * easedProgress;\n\t\t} else if (this.lerp) {\n\t\t\tthis.value = damp(this.value, this.to, this.lerp * 60, deltaTime);\n\t\t\tif (Math.round(this.value) === Math.round(this.to)) {\n\t\t\t\tthis.value = this.to;\n\t\t\t\tcompleted = true;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.value = this.to;\n\t\t\tcompleted = true;\n\t\t}\n\t\tif (completed) this.stop();\n\t\tthis.onUpdate?.(this.value, completed);\n\t}\n\t/** Stop the animation */\n\tstop() {\n\t\tthis.isRunning = false;\n\t}\n\t/**\n\t* Set up the animation from a starting value to an ending value\n\t* with optional parameters for lerping, duration, easing, and onUpdate callback\n\t*\n\t* @param from - The starting value\n\t* @param to - The ending value\n\t* @param options - Options for the animation\n\t*/\n\tfromTo(from, to, { lerp, duration, easing, onStart, onUpdate }) {\n\t\tthis.from = this.value = from;\n\t\tthis.to = to;\n\t\tthis.lerp = lerp;\n\t\tthis.duration = duration;\n\t\tthis.easing = easing;\n\t\tthis.currentTime = 0;\n\t\tthis.isRunning = true;\n\t\tonStart?.();\n\t\tthis.onUpdate = onUpdate;\n\t}\n};\n//#endregion\n//#region packages/core/src/debounce.ts\nfunction debounce(callback, delay) {\n\tlet timer;\n\treturn function(...args) {\n\t\tclearTimeout(timer);\n\t\ttimer = setTimeout(() => {\n\t\t\ttimer = void 0;\n\t\t\tcallback.apply(this, args);\n\t\t}, delay);\n\t};\n}\n//#endregion\n//#region packages/core/src/dimensions.ts\n/**\n* Dimensions class to handle the size of the content and wrapper\n*\n* @example\n* const dimensions = new Dimensions(wrapper, content)\n* dimensions.on('resize', (e) => {\n*   console.log(e.width, e.height)\n* })\n*/\nvar Dimensions = class {\n\twidth = 0;\n\theight = 0;\n\tscrollHeight = 0;\n\tscrollWidth = 0;\n\tdebouncedResize;\n\twrapperResizeObserver;\n\tcontentResizeObserver;\n\tconstructor(wrapper, content, { autoResize = true, debounce: debounceValue = 250 } = {}) {\n\t\tthis.wrapper = wrapper;\n\t\tthis.content = content;\n\t\tif (autoResize) {\n\t\t\tthis.debouncedResize = debounce(this.resize, debounceValue);\n\t\t\tif (this.wrapper instanceof Window) window.addEventListener(\"resize\", this.debouncedResize);\n\t\t\telse {\n\t\t\t\tthis.wrapperResizeObserver = new ResizeObserver(this.debouncedResize);\n\t\t\t\tthis.wrapperResizeObserver.observe(this.wrapper);\n\t\t\t}\n\t\t\tthis.contentResizeObserver = new ResizeObserver(this.debouncedResize);\n\t\t\tthis.contentResizeObserver.observe(this.content);\n\t\t}\n\t\tthis.resize();\n\t}\n\tdestroy() {\n\t\tthis.wrapperResizeObserver?.disconnect();\n\t\tthis.contentResizeObserver?.disconnect();\n\t\tif (this.wrapper === window && this.debouncedResize) window.removeEventListener(\"resize\", this.debouncedResize);\n\t}\n\tresize = () => {\n\t\tthis.onWrapperResize();\n\t\tthis.onContentResize();\n\t};\n\tonWrapperResize = () => {\n\t\tif (this.wrapper instanceof Window) {\n\t\t\tthis.width = window.innerWidth;\n\t\t\tthis.height = window.innerHeight;\n\t\t} else {\n\t\t\tthis.width = this.wrapper.clientWidth;\n\t\t\tthis.height = this.wrapper.clientHeight;\n\t\t}\n\t};\n\tonContentResize = () => {\n\t\tif (this.wrapper instanceof Window) {\n\t\t\tthis.scrollHeight = this.content.scrollHeight;\n\t\t\tthis.scrollWidth = this.content.scrollWidth;\n\t\t} else {\n\t\t\tthis.scrollHeight = this.wrapper.scrollHeight;\n\t\t\tthis.scrollWidth = this.wrapper.scrollWidth;\n\t\t}\n\t};\n\tget limit() {\n\t\treturn {\n\t\t\tx: this.scrollWidth - this.width,\n\t\t\ty: this.scrollHeight - this.height\n\t\t};\n\t}\n};\n//#endregion\n//#region packages/core/src/emitter.ts\n/**\n* Emitter class to handle events\n* @example\n* const emitter = new Emitter()\n* emitter.on('event', (data) => {\n*   console.log(data)\n* })\n* emitter.emit('event', 'data')\n*/\nvar Emitter = class {\n\tevents = {};\n\t/**\n\t* Emit an event with the given data\n\t* @param event Event name\n\t* @param args Data to pass to the event handlers\n\t*/\n\temit(event, ...args) {\n\t\tconst callbacks = this.events[event] || [];\n\t\tfor (let i = 0, length = callbacks.length; i < length; i++) callbacks[i]?.(...args);\n\t}\n\t/**\n\t* Add a callback to the event\n\t* @param event Event name\n\t* @param cb Callback function\n\t* @returns Unsubscribe function\n\t*/\n\ton(event, cb) {\n\t\tif (this.events[event]) this.events[event].push(cb);\n\t\telse this.events[event] = [cb];\n\t\treturn () => {\n\t\t\tthis.events[event] = this.events[event]?.filter((i) => cb !== i);\n\t\t};\n\t}\n\t/**\n\t* Remove a callback from the event\n\t* @param event Event name\n\t* @param callback Callback function\n\t*/\n\toff(event, callback) {\n\t\tthis.events[event] = this.events[event]?.filter((i) => callback !== i);\n\t}\n\t/**\n\t* Remove all event listeners and clean up\n\t*/\n\tdestroy() {\n\t\tthis.events = {};\n\t}\n};\n//#endregion\n//#region packages/core/src/virtual-scroll.ts\nconst LINE_HEIGHT = 100 / 6;\nconst listenerOptions = { passive: false };\nfunction getDeltaMultiplier(deltaMode, size) {\n\tif (deltaMode === 1) return LINE_HEIGHT;\n\tif (deltaMode === 2) return size;\n\treturn 1;\n}\nvar VirtualScroll = class {\n\ttouchStart = {\n\t\tx: 0,\n\t\ty: 0\n\t};\n\tlastDelta = {\n\t\tx: 0,\n\t\ty: 0\n\t};\n\twindow = {\n\t\twidth: 0,\n\t\theight: 0\n\t};\n\temitter = new Emitter();\n\tconstructor(element, options = {\n\t\twheelMultiplier: 1,\n\t\ttouchMultiplier: 1\n\t}) {\n\t\tthis.element = element;\n\t\tthis.options = options;\n\t\twindow.addEventListener(\"resize\", this.onWindowResize);\n\t\tthis.onWindowResize();\n\t\tthis.element.addEventListener(\"wheel\", this.onWheel, listenerOptions);\n\t\tthis.element.addEventListener(\"touchstart\", this.onTouchStart, listenerOptions);\n\t\tthis.element.addEventListener(\"touchmove\", this.onTouchMove, listenerOptions);\n\t\tthis.element.addEventListener(\"touchend\", this.onTouchEnd, listenerOptions);\n\t}\n\t/**\n\t* Add an event listener for the given event and callback\n\t*\n\t* @param event Event name\n\t* @param callback Callback function\n\t*/\n\ton(event, callback) {\n\t\treturn this.emitter.on(event, callback);\n\t}\n\t/** Remove all event listeners and clean up */\n\tdestroy() {\n\t\tthis.emitter.destroy();\n\t\twindow.removeEventListener(\"resize\", this.onWindowResize);\n\t\tthis.element.removeEventListener(\"wheel\", this.onWheel, listenerOptions);\n\t\tthis.element.removeEventListener(\"touchstart\", this.onTouchStart, listenerOptions);\n\t\tthis.element.removeEventListener(\"touchmove\", this.onTouchMove, listenerOptions);\n\t\tthis.element.removeEventListener(\"touchend\", this.onTouchEnd, listenerOptions);\n\t}\n\t/**\n\t* Event handler for 'touchstart' event\n\t*\n\t* @param event Touch event\n\t*/\n\tonTouchStart = (event) => {\n\t\tconst { clientX, clientY } = event.targetTouches ? event.targetTouches[0] : event;\n\t\tthis.touchStart.x = clientX;\n\t\tthis.touchStart.y = clientY;\n\t\tthis.lastDelta = {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t};\n\t\tthis.emitter.emit(\"scroll\", {\n\t\t\tdeltaX: 0,\n\t\t\tdeltaY: 0,\n\t\t\tevent\n\t\t});\n\t};\n\t/** Event handler for 'touchmove' event */\n\tonTouchMove = (event) => {\n\t\tconst { clientX, clientY } = event.targetTouches ? event.targetTouches[0] : event;\n\t\tconst deltaX = -(clientX - this.touchStart.x) * this.options.touchMultiplier;\n\t\tconst deltaY = -(clientY - this.touchStart.y) * this.options.touchMultiplier;\n\t\tthis.touchStart.x = clientX;\n\t\tthis.touchStart.y = clientY;\n\t\tthis.lastDelta = {\n\t\t\tx: deltaX,\n\t\t\ty: deltaY\n\t\t};\n\t\tthis.emitter.emit(\"scroll\", {\n\t\t\tdeltaX,\n\t\t\tdeltaY,\n\t\t\tevent\n\t\t});\n\t};\n\tonTouchEnd = (event) => {\n\t\tthis.emitter.emit(\"scroll\", {\n\t\t\tdeltaX: this.lastDelta.x,\n\t\t\tdeltaY: this.lastDelta.y,\n\t\t\tevent\n\t\t});\n\t};\n\t/** Event handler for 'wheel' event */\n\tonWheel = (event) => {\n\t\tlet { deltaX, deltaY, deltaMode } = event;\n\t\tconst multiplierX = getDeltaMultiplier(deltaMode, this.window.width);\n\t\tconst multiplierY = getDeltaMultiplier(deltaMode, this.window.height);\n\t\tdeltaX *= multiplierX;\n\t\tdeltaY *= multiplierY;\n\t\tdeltaX *= this.options.wheelMultiplier;\n\t\tdeltaY *= this.options.wheelMultiplier;\n\t\tthis.emitter.emit(\"scroll\", {\n\t\t\tdeltaX,\n\t\t\tdeltaY,\n\t\t\tevent\n\t\t});\n\t};\n\tonWindowResize = () => {\n\t\tthis.window = {\n\t\t\twidth: window.innerWidth,\n\t\t\theight: window.innerHeight\n\t\t};\n\t};\n};\n//#endregion\n//#region packages/core/src/lenis.ts\nconst defaultEasing = (t) => Math.min(1, 1.001 - 2 ** (-10 * t));\nvar Lenis = class {\n\t_isScrolling = false;\n\t_isStopped = false;\n\t_isLocked = false;\n\t_preventNextNativeScrollEvent = false;\n\t_resetVelocityTimeout = null;\n\t_rafId = null;\n\t/**\n\t* Whether or not the user is touching the screen\n\t*/\n\tisTouching;\n\t/**\n\t* The time in ms since the lenis instance was created\n\t*/\n\ttime = 0;\n\t/**\n\t* User data that will be forwarded through the scroll event\n\t*\n\t* @example\n\t* lenis.scrollTo(100, {\n\t*   userData: {\n\t*     foo: 'bar'\n\t*   }\n\t* })\n\t*/\n\tuserData = {};\n\t/**\n\t* The last velocity of the scroll\n\t*/\n\tlastVelocity = 0;\n\t/**\n\t* The current velocity of the scroll\n\t*/\n\tvelocity = 0;\n\t/**\n\t* The direction of the scroll\n\t*/\n\tdirection = 0;\n\t/**\n\t* The options passed to the lenis instance\n\t*/\n\toptions;\n\t/**\n\t* The target scroll value\n\t*/\n\ttargetScroll;\n\t/**\n\t* The animated scroll value\n\t*/\n\tanimatedScroll;\n\tanimate = new Animate();\n\temitter = new Emitter();\n\tdimensions;\n\tvirtualScroll;\n\tconstructor({ wrapper = window, content = document.documentElement, eventsTarget = wrapper, smoothWheel = true, syncTouch = false, syncTouchLerp = .075, touchInertiaExponent = 1.7, duration, easing, lerp = .1, infinite = false, orientation = \"vertical\", gestureOrientation = orientation === \"horizontal\" ? \"both\" : \"vertical\", touchMultiplier = 1, wheelMultiplier = 1, autoResize = true, prevent, virtualScroll, overscroll = true, autoRaf = false, anchors = false, autoToggle = false, allowNestedScroll = false, __experimental__naiveDimensions = false, naiveDimensions = __experimental__naiveDimensions, stopInertiaOnNavigate = false } = {}) {\n\t\twindow.lenisVersion = version;\n\t\tif (!window.lenis) window.lenis = {};\n\t\twindow.lenis.version = version;\n\t\tif (orientation === \"horizontal\") window.lenis.horizontal = true;\n\t\tif (syncTouch === true) window.lenis.touch = true;\n\t\tif (!wrapper || wrapper === document.documentElement) wrapper = window;\n\t\tif (typeof duration === \"number\" && typeof easing !== \"function\") easing = defaultEasing;\n\t\telse if (typeof easing === \"function\" && typeof duration !== \"number\") duration = 1;\n\t\tthis.options = {\n\t\t\twrapper,\n\t\t\tcontent,\n\t\t\teventsTarget,\n\t\t\tsmoothWheel,\n\t\t\tsyncTouch,\n\t\t\tsyncTouchLerp,\n\t\t\ttouchInertiaExponent,\n\t\t\tduration,\n\t\t\teasing,\n\t\t\tlerp,\n\t\t\tinfinite,\n\t\t\tgestureOrientation,\n\t\t\torientation,\n\t\t\ttouchMultiplier,\n\t\t\twheelMultiplier,\n\t\t\tautoResize,\n\t\t\tprevent,\n\t\t\tvirtualScroll,\n\t\t\toverscroll,\n\t\t\tautoRaf,\n\t\t\tanchors,\n\t\t\tautoToggle,\n\t\t\tallowNestedScroll,\n\t\t\tnaiveDimensions,\n\t\t\tstopInertiaOnNavigate\n\t\t};\n\t\tthis.dimensions = new Dimensions(wrapper, content, { autoResize });\n\t\tthis.updateClassName();\n\t\tthis.targetScroll = this.animatedScroll = this.actualScroll;\n\t\tthis.options.wrapper.addEventListener(\"scroll\", this.onNativeScroll);\n\t\tthis.options.wrapper.addEventListener(\"scrollend\", this.onScrollEnd, { capture: true });\n\t\tif (this.options.anchors || this.options.stopInertiaOnNavigate) this.options.wrapper.addEventListener(\"click\", this.onClick);\n\t\tthis.options.wrapper.addEventListener(\"pointerdown\", this.onPointerDown);\n\t\tthis.virtualScroll = new VirtualScroll(eventsTarget, {\n\t\t\ttouchMultiplier,\n\t\t\twheelMultiplier\n\t\t});\n\t\tthis.virtualScroll.on(\"scroll\", this.onVirtualScroll);\n\t\tif (this.options.autoToggle) {\n\t\t\tthis.checkOverflow();\n\t\t\tthis.rootElement.addEventListener(\"transitionend\", this.onTransitionEnd);\n\t\t}\n\t\tif (this.options.autoRaf) this._rafId = requestAnimationFrame(this.raf);\n\t}\n\t/**\n\t* Destroy the lenis instance, remove all event listeners and clean up the class name\n\t*/\n\tdestroy() {\n\t\tthis.emitter.destroy();\n\t\tthis.options.wrapper.removeEventListener(\"scroll\", this.onNativeScroll);\n\t\tthis.options.wrapper.removeEventListener(\"scrollend\", this.onScrollEnd, { capture: true });\n\t\tthis.options.wrapper.removeEventListener(\"pointerdown\", this.onPointerDown);\n\t\tif (this.options.anchors || this.options.stopInertiaOnNavigate) this.options.wrapper.removeEventListener(\"click\", this.onClick);\n\t\tthis.virtualScroll.destroy();\n\t\tthis.dimensions.destroy();\n\t\tthis.cleanUpClassName();\n\t\tif (this._rafId) cancelAnimationFrame(this._rafId);\n\t}\n\ton(event, callback) {\n\t\treturn this.emitter.on(event, callback);\n\t}\n\toff(event, callback) {\n\t\treturn this.emitter.off(event, callback);\n\t}\n\tonScrollEnd = (e) => {\n\t\tif (!(e instanceof CustomEvent)) {\n\t\t\tif (this.isScrolling === \"smooth\" || this.isScrolling === false) e.stopPropagation();\n\t\t}\n\t};\n\tdispatchScrollendEvent = () => {\n\t\tthis.options.wrapper.dispatchEvent(new CustomEvent(\"scrollend\", {\n\t\t\tbubbles: this.options.wrapper === window,\n\t\t\tdetail: { lenisScrollEnd: true }\n\t\t}));\n\t};\n\tget overflow() {\n\t\tconst property = this.isHorizontal ? \"overflow-x\" : \"overflow-y\";\n\t\treturn getComputedStyle(this.rootElement)[property];\n\t}\n\tcheckOverflow() {\n\t\tif ([\"hidden\", \"clip\"].includes(this.overflow)) this.internalStop();\n\t\telse this.internalStart();\n\t}\n\tonTransitionEnd = (event) => {\n\t\tif (event.propertyName?.includes(\"overflow\") && event.target === this.rootElement) this.checkOverflow();\n\t};\n\tsetScroll(scroll) {\n\t\tif (this.isHorizontal) this.options.wrapper.scrollTo({\n\t\t\tleft: scroll,\n\t\t\tbehavior: \"instant\"\n\t\t});\n\t\telse this.options.wrapper.scrollTo({\n\t\t\ttop: scroll,\n\t\t\tbehavior: \"instant\"\n\t\t});\n\t}\n\tonClick = (event) => {\n\t\tconst linkElementsUrls = event.composedPath().filter((node) => node instanceof HTMLAnchorElement && node.href).map((element) => new URL(element.href));\n\t\tconst currentUrl = new URL(window.location.href);\n\t\tif (this.options.anchors) {\n\t\t\tconst anchorElementUrl = linkElementsUrls.find((targetUrl) => currentUrl.host === targetUrl.host && currentUrl.pathname === targetUrl.pathname && targetUrl.hash);\n\t\t\tif (anchorElementUrl) {\n\t\t\t\tconst options = typeof this.options.anchors === \"object\" && this.options.anchors ? this.options.anchors : void 0;\n\t\t\t\tconst target = `#${anchorElementUrl.hash.split(\"#\")[1]}`;\n\t\t\t\tthis.scrollTo(target, options);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (this.options.stopInertiaOnNavigate) {\n\t\t\tif (linkElementsUrls.some((targetUrl) => currentUrl.host === targetUrl.host && currentUrl.pathname !== targetUrl.pathname)) {\n\t\t\t\tthis.reset();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n\tonPointerDown = (event) => {\n\t\tif (event.button === 1) this.reset();\n\t};\n\tonVirtualScroll = (data) => {\n\t\tif (typeof this.options.virtualScroll === \"function\" && this.options.virtualScroll(data) === false) return;\n\t\tconst { deltaX, deltaY, event } = data;\n\t\tthis.emitter.emit(\"virtual-scroll\", {\n\t\t\tdeltaX,\n\t\t\tdeltaY,\n\t\t\tevent\n\t\t});\n\t\tif (event.ctrlKey) return;\n\t\tif (event.lenisStopPropagation) return;\n\t\tconst isTouch = event.type.includes(\"touch\");\n\t\tconst isWheel = event.type.includes(\"wheel\");\n\t\tthis.isTouching = event.type === \"touchstart\" || event.type === \"touchmove\";\n\t\tconst isClickOrTap = deltaX === 0 && deltaY === 0;\n\t\tif (this.options.syncTouch && isTouch && event.type === \"touchstart\" && isClickOrTap && !this.isStopped && !this.isLocked) {\n\t\t\tthis.reset();\n\t\t\treturn;\n\t\t}\n\t\tconst isUnknownGesture = this.options.gestureOrientation === \"vertical\" && deltaY === 0 || this.options.gestureOrientation === \"horizontal\" && deltaX === 0;\n\t\tif (isClickOrTap || isUnknownGesture) return;\n\t\tlet composedPath = event.composedPath();\n\t\tcomposedPath = composedPath.slice(0, composedPath.indexOf(this.rootElement));\n\t\tconst prevent = this.options.prevent;\n\t\tconst gestureOrientation = Math.abs(deltaX) >= Math.abs(deltaY) ? \"horizontal\" : \"vertical\";\n\t\tif (composedPath.find((node) => node instanceof HTMLElement && (typeof prevent === \"function\" && prevent?.(node) || node.hasAttribute?.(\"data-lenis-prevent\") || gestureOrientation === \"vertical\" && node.hasAttribute?.(\"data-lenis-prevent-vertical\") || gestureOrientation === \"horizontal\" && node.hasAttribute?.(\"data-lenis-prevent-horizontal\") || isTouch && node.hasAttribute?.(\"data-lenis-prevent-touch\") || isWheel && node.hasAttribute?.(\"data-lenis-prevent-wheel\") || this.options.allowNestedScroll && this.hasNestedScroll(node, {\n\t\t\tdeltaX,\n\t\t\tdeltaY\n\t\t})))) return;\n\t\tif (this.isStopped || this.isLocked) {\n\t\t\tif (event.cancelable) event.preventDefault();\n\t\t\treturn;\n\t\t}\n\t\tif (!(this.options.syncTouch && isTouch || this.options.smoothWheel && isWheel)) {\n\t\t\tthis.isScrolling = \"native\";\n\t\t\tthis.animate.stop();\n\t\t\tevent.lenisStopPropagation = true;\n\t\t\treturn;\n\t\t}\n\t\tlet delta = deltaY;\n\t\tif (this.options.gestureOrientation === \"both\") delta = Math.abs(deltaY) > Math.abs(deltaX) ? deltaY : deltaX;\n\t\telse if (this.options.gestureOrientation === \"horizontal\") delta = deltaX;\n\t\tif (!this.options.overscroll || this.options.infinite || this.options.wrapper !== window && this.limit > 0 && (this.animatedScroll > 0 && this.animatedScroll < this.limit || this.animatedScroll === 0 && deltaY > 0 || this.animatedScroll === this.limit && deltaY < 0)) event.lenisStopPropagation = true;\n\t\tif (event.cancelable) event.preventDefault();\n\t\tconst isSyncTouch = isTouch && this.options.syncTouch;\n\t\tconst hasTouchInertia = isTouch && event.type === \"touchend\";\n\t\tif (hasTouchInertia) delta = Math.sign(delta) * Math.abs(this.velocity) ** this.options.touchInertiaExponent;\n\t\tthis.scrollTo(this.targetScroll + delta, {\n\t\t\tprogrammatic: false,\n\t\t\t...isSyncTouch ? { lerp: hasTouchInertia ? this.options.syncTouchLerp : 1 } : {\n\t\t\t\tlerp: this.options.lerp,\n\t\t\t\tduration: this.options.duration,\n\t\t\t\teasing: this.options.easing\n\t\t\t}\n\t\t});\n\t};\n\t/**\n\t* Force lenis to recalculate the dimensions\n\t*/\n\tresize() {\n\t\tthis.dimensions.resize();\n\t\tthis.animatedScroll = this.targetScroll = this.actualScroll;\n\t\tthis.emit();\n\t}\n\temit() {\n\t\tthis.emitter.emit(\"scroll\", this);\n\t}\n\tonNativeScroll = () => {\n\t\tif (this._resetVelocityTimeout !== null) {\n\t\t\tclearTimeout(this._resetVelocityTimeout);\n\t\t\tthis._resetVelocityTimeout = null;\n\t\t}\n\t\tif (this._preventNextNativeScrollEvent) {\n\t\t\tthis._preventNextNativeScrollEvent = false;\n\t\t\treturn;\n\t\t}\n\t\tif (this.isScrolling === false || this.isScrolling === \"native\") {\n\t\t\tconst lastScroll = this.animatedScroll;\n\t\t\tthis.animatedScroll = this.targetScroll = this.actualScroll;\n\t\t\tthis.lastVelocity = this.velocity;\n\t\t\tthis.velocity = this.animatedScroll - lastScroll;\n\t\t\tthis.direction = Math.sign(this.animatedScroll - lastScroll);\n\t\t\tif (!this.isStopped) this.isScrolling = \"native\";\n\t\t\tthis.emit();\n\t\t\tif (this.velocity !== 0) this._resetVelocityTimeout = setTimeout(() => {\n\t\t\t\tthis.lastVelocity = this.velocity;\n\t\t\t\tthis.velocity = 0;\n\t\t\t\tthis.isScrolling = false;\n\t\t\t\tthis.emit();\n\t\t\t}, 400);\n\t\t}\n\t};\n\treset() {\n\t\tthis.isLocked = false;\n\t\tthis.isScrolling = false;\n\t\tthis.animatedScroll = this.targetScroll = this.actualScroll;\n\t\tthis.lastVelocity = this.velocity = 0;\n\t\tthis.animate.stop();\n\t}\n\t/**\n\t* Start lenis scroll after it has been stopped\n\t*/\n\tstart() {\n\t\tif (!this.isStopped) return;\n\t\tif (this.options.autoToggle) {\n\t\t\tthis.rootElement.style.removeProperty(\"overflow\");\n\t\t\treturn;\n\t\t}\n\t\tthis.internalStart();\n\t}\n\tinternalStart() {\n\t\tif (!this.isStopped) return;\n\t\tthis.reset();\n\t\tthis.isStopped = false;\n\t\tthis.emit();\n\t}\n\t/**\n\t* Stop lenis scroll\n\t*/\n\tstop() {\n\t\tif (this.isStopped) return;\n\t\tif (this.options.autoToggle) {\n\t\t\tthis.rootElement.style.setProperty(\"overflow\", \"clip\");\n\t\t\treturn;\n\t\t}\n\t\tthis.internalStop();\n\t}\n\tinternalStop() {\n\t\tif (this.isStopped) return;\n\t\tthis.reset();\n\t\tthis.isStopped = true;\n\t\tthis.emit();\n\t}\n\t/**\n\t* RequestAnimationFrame for lenis\n\t*\n\t* @param time The time in ms from an external clock like `requestAnimationFrame` or Tempus\n\t*/\n\traf = (time) => {\n\t\tconst deltaTime = time - (this.time || time);\n\t\tthis.time = time;\n\t\tthis.animate.advance(deltaTime * .001);\n\t\tif (this.options.autoRaf) this._rafId = requestAnimationFrame(this.raf);\n\t};\n\t/**\n\t* Scroll to a target value\n\t*\n\t* @param target The target value to scroll to\n\t* @param options The options for the scroll\n\t*\n\t* @example\n\t* lenis.scrollTo(100, {\n\t*   offset: 100,\n\t*   duration: 1,\n\t*   easing: (t) => 1 - Math.cos((t * Math.PI) / 2),\n\t*   lerp: 0.1,\n\t*   onStart: () => {\n\t*     console.log('onStart')\n\t*   },\n\t*   onComplete: () => {\n\t*     console.log('onComplete')\n\t*   },\n\t* })\n\t*/\n\tscrollTo(_target, { offset = 0, immediate = false, lock = false, programmatic = true, lerp = programmatic ? this.options.lerp : void 0, duration = programmatic ? this.options.duration : void 0, easing = programmatic ? this.options.easing : void 0, onStart, onComplete, force = false, userData } = {}) {\n\t\tif ((this.isStopped || this.isLocked) && !force) return;\n\t\tlet target = _target;\n\t\tlet adjustedOffset = offset;\n\t\tif (typeof target === \"string\" && [\n\t\t\t\"top\",\n\t\t\t\"left\",\n\t\t\t\"start\",\n\t\t\t\"#\"\n\t\t].includes(target)) target = 0;\n\t\telse if (typeof target === \"string\" && [\n\t\t\t\"bottom\",\n\t\t\t\"right\",\n\t\t\t\"end\"\n\t\t].includes(target)) target = this.limit;\n\t\telse {\n\t\t\tlet node = null;\n\t\t\tif (typeof target === \"string\") {\n\t\t\t\tnode = document.querySelector(target);\n\t\t\t\tif (!node) if (target === \"#top\") target = 0;\n\t\t\t\telse console.warn(\"Lenis: Target not found\", target);\n\t\t\t} else if (target instanceof HTMLElement && target?.nodeType) node = target;\n\t\t\tif (node) {\n\t\t\t\tif (this.options.wrapper !== window) {\n\t\t\t\t\tconst wrapperRect = this.rootElement.getBoundingClientRect();\n\t\t\t\t\tadjustedOffset -= this.isHorizontal ? wrapperRect.left : wrapperRect.top;\n\t\t\t\t}\n\t\t\t\tconst rect = node.getBoundingClientRect();\n\t\t\t\tconst targetStyle = getComputedStyle(node);\n\t\t\t\tconst scrollMargin = this.isHorizontal ? Number.parseFloat(targetStyle.scrollMarginLeft) : Number.parseFloat(targetStyle.scrollMarginTop);\n\t\t\t\tconst containerStyle = getComputedStyle(this.rootElement);\n\t\t\t\tconst scrollPadding = this.isHorizontal ? Number.parseFloat(containerStyle.scrollPaddingLeft) : Number.parseFloat(containerStyle.scrollPaddingTop);\n\t\t\t\ttarget = (this.isHorizontal ? rect.left : rect.top) + this.animatedScroll - (Number.isNaN(scrollMargin) ? 0 : scrollMargin) - (Number.isNaN(scrollPadding) ? 0 : scrollPadding);\n\t\t\t}\n\t\t}\n\t\tif (typeof target !== \"number\") return;\n\t\ttarget += adjustedOffset;\n\t\tif (this.options.infinite) {\n\t\t\tif (programmatic) {\n\t\t\t\tthis.targetScroll = this.animatedScroll = this.scroll;\n\t\t\t\tconst distance = target - this.animatedScroll;\n\t\t\t\tif (distance > this.limit / 2) target -= this.limit;\n\t\t\t\telse if (distance < -this.limit / 2) target += this.limit;\n\t\t\t}\n\t\t} else target = clamp(0, target, this.limit);\n\t\tif (target === this.targetScroll) {\n\t\t\tonStart?.(this);\n\t\t\tonComplete?.(this);\n\t\t\treturn;\n\t\t}\n\t\tthis.userData = userData ?? {};\n\t\tif (immediate) {\n\t\t\tthis.animatedScroll = this.targetScroll = target;\n\t\t\tthis.setScroll(this.scroll);\n\t\t\tthis.reset();\n\t\t\tthis.preventNextNativeScrollEvent();\n\t\t\tthis.emit();\n\t\t\tonComplete?.(this);\n\t\t\tthis.userData = {};\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.dispatchScrollendEvent();\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tif (!programmatic) this.targetScroll = target;\n\t\tif (typeof duration === \"number\" && typeof easing !== \"function\") easing = defaultEasing;\n\t\telse if (typeof easing === \"function\" && typeof duration !== \"number\") duration = 1;\n\t\tthis.animate.fromTo(this.animatedScroll, target, {\n\t\t\tduration,\n\t\t\teasing,\n\t\t\tlerp,\n\t\t\tonStart: () => {\n\t\t\t\tif (lock) this.isLocked = true;\n\t\t\t\tthis.isScrolling = \"smooth\";\n\t\t\t\tonStart?.(this);\n\t\t\t},\n\t\t\tonUpdate: (value, completed) => {\n\t\t\t\tthis.isScrolling = \"smooth\";\n\t\t\t\tthis.lastVelocity = this.velocity;\n\t\t\t\tthis.velocity = value - this.animatedScroll;\n\t\t\t\tthis.direction = Math.sign(this.velocity);\n\t\t\t\tthis.animatedScroll = value;\n\t\t\t\tthis.setScroll(this.scroll);\n\t\t\t\tif (programmatic) this.targetScroll = value;\n\t\t\t\tif (!completed) this.emit();\n\t\t\t\tif (completed) {\n\t\t\t\t\tthis.reset();\n\t\t\t\t\tthis.emit();\n\t\t\t\t\tonComplete?.(this);\n\t\t\t\t\tthis.userData = {};\n\t\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\t\tthis.dispatchScrollendEvent();\n\t\t\t\t\t});\n\t\t\t\t\tthis.preventNextNativeScrollEvent();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tpreventNextNativeScrollEvent() {\n\t\tthis._preventNextNativeScrollEvent = true;\n\t\trequestAnimationFrame(() => {\n\t\t\tthis._preventNextNativeScrollEvent = false;\n\t\t});\n\t}\n\thasNestedScroll(node, { deltaX, deltaY }) {\n\t\tconst time = Date.now();\n\t\tif (!node._lenis) node._lenis = {};\n\t\tconst cache = node._lenis;\n\t\tlet hasOverflowX;\n\t\tlet hasOverflowY;\n\t\tlet isScrollableX;\n\t\tlet isScrollableY;\n\t\tlet hasOverscrollBehaviorX;\n\t\tlet hasOverscrollBehaviorY;\n\t\tlet scrollWidth;\n\t\tlet scrollHeight;\n\t\tlet clientWidth;\n\t\tlet clientHeight;\n\t\tif (time - (cache.time ?? 0) > 2e3) {\n\t\t\tcache.time = Date.now();\n\t\t\tconst computedStyle = window.getComputedStyle(node);\n\t\t\tcache.computedStyle = computedStyle;\n\t\t\thasOverflowX = [\n\t\t\t\t\"auto\",\n\t\t\t\t\"overlay\",\n\t\t\t\t\"scroll\"\n\t\t\t].includes(computedStyle.overflowX);\n\t\t\thasOverflowY = [\n\t\t\t\t\"auto\",\n\t\t\t\t\"overlay\",\n\t\t\t\t\"scroll\"\n\t\t\t].includes(computedStyle.overflowY);\n\t\t\thasOverscrollBehaviorX = [\"auto\"].includes(computedStyle.overscrollBehaviorX);\n\t\t\thasOverscrollBehaviorY = [\"auto\"].includes(computedStyle.overscrollBehaviorY);\n\t\t\tcache.hasOverflowX = hasOverflowX;\n\t\t\tcache.hasOverflowY = hasOverflowY;\n\t\t\tif (!(hasOverflowX || hasOverflowY)) return false;\n\t\t\tscrollWidth = node.scrollWidth;\n\t\t\tscrollHeight = node.scrollHeight;\n\t\t\tclientWidth = node.clientWidth;\n\t\t\tclientHeight = node.clientHeight;\n\t\t\tisScrollableX = scrollWidth > clientWidth;\n\t\t\tisScrollableY = scrollHeight > clientHeight;\n\t\t\tcache.isScrollableX = isScrollableX;\n\t\t\tcache.isScrollableY = isScrollableY;\n\t\t\tcache.scrollWidth = scrollWidth;\n\t\t\tcache.scrollHeight = scrollHeight;\n\t\t\tcache.clientWidth = clientWidth;\n\t\t\tcache.clientHeight = clientHeight;\n\t\t\tcache.hasOverscrollBehaviorX = hasOverscrollBehaviorX;\n\t\t\tcache.hasOverscrollBehaviorY = hasOverscrollBehaviorY;\n\t\t} else {\n\t\t\tisScrollableX = cache.isScrollableX;\n\t\t\tisScrollableY = cache.isScrollableY;\n\t\t\thasOverflowX = cache.hasOverflowX;\n\t\t\thasOverflowY = cache.hasOverflowY;\n\t\t\tscrollWidth = cache.scrollWidth;\n\t\t\tscrollHeight = cache.scrollHeight;\n\t\t\tclientWidth = cache.clientWidth;\n\t\t\tclientHeight = cache.clientHeight;\n\t\t\thasOverscrollBehaviorX = cache.hasOverscrollBehaviorX;\n\t\t\thasOverscrollBehaviorY = cache.hasOverscrollBehaviorY;\n\t\t}\n\t\tif (!(hasOverflowX && isScrollableX || hasOverflowY && isScrollableY)) return false;\n\t\tconst orientation = Math.abs(deltaX) >= Math.abs(deltaY) ? \"horizontal\" : \"vertical\";\n\t\tlet scroll;\n\t\tlet maxScroll;\n\t\tlet delta;\n\t\tlet hasOverflow;\n\t\tlet isScrollable;\n\t\tlet hasOverscrollBehavior;\n\t\tif (orientation === \"horizontal\") {\n\t\t\tscroll = Math.round(node.scrollLeft);\n\t\t\tmaxScroll = scrollWidth - clientWidth;\n\t\t\tdelta = deltaX;\n\t\t\thasOverflow = hasOverflowX;\n\t\t\tisScrollable = isScrollableX;\n\t\t\thasOverscrollBehavior = hasOverscrollBehaviorX;\n\t\t} else if (orientation === \"vertical\") {\n\t\t\tscroll = Math.round(node.scrollTop);\n\t\t\tmaxScroll = scrollHeight - clientHeight;\n\t\t\tdelta = deltaY;\n\t\t\thasOverflow = hasOverflowY;\n\t\t\tisScrollable = isScrollableY;\n\t\t\thasOverscrollBehavior = hasOverscrollBehaviorY;\n\t\t} else return false;\n\t\tif (!hasOverscrollBehavior && (scroll >= maxScroll || scroll <= 0)) return true;\n\t\treturn (delta > 0 ? scroll < maxScroll : scroll > 0) && hasOverflow && isScrollable;\n\t}\n\t/**\n\t* The root element on which lenis is instanced\n\t*/\n\tget rootElement() {\n\t\treturn this.options.wrapper === window ? document.documentElement : this.options.wrapper;\n\t}\n\t/**\n\t* The limit which is the maximum scroll value\n\t*/\n\tget limit() {\n\t\tif (this.options.naiveDimensions) {\n\t\t\tif (this.isHorizontal) return this.rootElement.scrollWidth - this.rootElement.clientWidth;\n\t\t\treturn this.rootElement.scrollHeight - this.rootElement.clientHeight;\n\t\t}\n\t\treturn this.dimensions.limit[this.isHorizontal ? \"x\" : \"y\"];\n\t}\n\t/**\n\t* Whether or not the scroll is horizontal\n\t*/\n\tget isHorizontal() {\n\t\treturn this.options.orientation === \"horizontal\";\n\t}\n\t/**\n\t* The actual scroll value\n\t*/\n\tget actualScroll() {\n\t\tconst wrapper = this.options.wrapper;\n\t\treturn this.isHorizontal ? wrapper.scrollX ?? wrapper.scrollLeft : wrapper.scrollY ?? wrapper.scrollTop;\n\t}\n\t/**\n\t* The current scroll value\n\t*/\n\tget scroll() {\n\t\treturn this.options.infinite ? modulo(this.animatedScroll, this.limit) : this.animatedScroll;\n\t}\n\t/**\n\t* The progress of the scroll relative to the limit\n\t*/\n\tget progress() {\n\t\treturn this.limit === 0 ? 1 : this.scroll / this.limit;\n\t}\n\t/**\n\t* Current scroll state\n\t*/\n\tget isScrolling() {\n\t\treturn this._isScrolling;\n\t}\n\tset isScrolling(value) {\n\t\tif (this._isScrolling !== value) {\n\t\t\tthis._isScrolling = value;\n\t\t\tthis.updateClassName();\n\t\t}\n\t}\n\t/**\n\t* Check if lenis is stopped\n\t*/\n\tget isStopped() {\n\t\treturn this._isStopped;\n\t}\n\tset isStopped(value) {\n\t\tif (this._isStopped !== value) {\n\t\t\tthis._isStopped = value;\n\t\t\tthis.updateClassName();\n\t\t}\n\t}\n\t/**\n\t* Check if lenis is locked\n\t*/\n\tget isLocked() {\n\t\treturn this._isLocked;\n\t}\n\tset isLocked(value) {\n\t\tif (this._isLocked !== value) {\n\t\t\tthis._isLocked = value;\n\t\t\tthis.updateClassName();\n\t\t}\n\t}\n\t/**\n\t* Check if lenis is smooth scrolling\n\t*/\n\tget isSmooth() {\n\t\treturn this.isScrolling === \"smooth\";\n\t}\n\t/**\n\t* The class name applied to the wrapper element\n\t*/\n\tget className() {\n\t\tlet className = \"lenis\";\n\t\tif (this.options.autoToggle) className += \" lenis-autoToggle\";\n\t\tif (this.isStopped) className += \" lenis-stopped\";\n\t\tif (this.isLocked) className += \" lenis-locked\";\n\t\tif (this.isScrolling) className += \" lenis-scrolling\";\n\t\tif (this.isScrolling === \"smooth\") className += \" lenis-smooth\";\n\t\treturn className;\n\t}\n\tupdateClassName() {\n\t\tthis.cleanUpClassName();\n\t\tthis.className.split(\" \").forEach((className) => {\n\t\t\tthis.rootElement.classList.add(className);\n\t\t});\n\t}\n\tcleanUpClassName() {\n\t\tfor (const className of Array.from(this.rootElement.classList)) if (className === \"lenis\" || className.startsWith(\"lenis-\")) this.rootElement.classList.remove(className);\n\t}\n};\n//#endregion\nexport { Lenis as default };\n\n//# sourceMappingURL=lenis.mjs.map","//#region packages/snap/src/debounce.ts\nfunction debounce(callback, delay) {\n\tlet timer;\n\treturn function(...args) {\n\t\tclearTimeout(timer);\n\t\ttimer = setTimeout(() => {\n\t\t\ttimer = void 0;\n\t\t\tcallback.apply(this, args);\n\t\t}, delay);\n\t};\n}\n//#endregion\n//#region packages/snap/src/element.ts\nfunction removeParentSticky(element) {\n\tif (getComputedStyle(element).position === \"sticky\") {\n\t\telement.style.setProperty(\"position\", \"static\");\n\t\telement.dataset.sticky = \"true\";\n\t}\n\tif (element.offsetParent) removeParentSticky(element.offsetParent);\n}\nfunction addParentSticky(element) {\n\tif (element?.dataset?.sticky === \"true\") {\n\t\telement.style.removeProperty(\"position\");\n\t\tdelete element.dataset.sticky;\n\t}\n\tif (element.offsetParent) addParentSticky(element.offsetParent);\n}\nfunction offsetTop(element, accumulator = 0) {\n\tconst top = accumulator + element.offsetTop;\n\tif (element.offsetParent) return offsetTop(element.offsetParent, top);\n\treturn top;\n}\nfunction offsetLeft(element, accumulator = 0) {\n\tconst left = accumulator + element.offsetLeft;\n\tif (element.offsetParent) return offsetLeft(element.offsetParent, left);\n\treturn left;\n}\nfunction scrollTop(element, accumulator = 0) {\n\tconst top = accumulator + element.scrollTop;\n\tif (element.offsetParent) return scrollTop(element.offsetParent, top);\n\treturn top + window.scrollY;\n}\nfunction scrollLeft(element, accumulator = 0) {\n\tconst left = accumulator + element.scrollLeft;\n\tif (element.offsetParent) return scrollLeft(element.offsetParent, left);\n\treturn left + window.scrollX;\n}\nvar SnapElement = class {\n\telement;\n\toptions;\n\talign;\n\trect = {};\n\twrapperResizeObserver;\n\tresizeObserver;\n\tdebouncedWrapperResize;\n\tconstructor(element, { align = [\"start\"], ignoreSticky = true, ignoreTransform = false } = {}) {\n\t\tthis.element = element;\n\t\tthis.options = {\n\t\t\talign,\n\t\t\tignoreSticky,\n\t\t\tignoreTransform\n\t\t};\n\t\tthis.align = [align].flat();\n\t\tthis.debouncedWrapperResize = debounce(this.onWrapperResize, 500);\n\t\tthis.wrapperResizeObserver = new ResizeObserver(this.debouncedWrapperResize);\n\t\tthis.wrapperResizeObserver.observe(document.body);\n\t\tthis.onWrapperResize();\n\t\tthis.resizeObserver = new ResizeObserver(this.onResize);\n\t\tthis.resizeObserver.observe(this.element);\n\t\tthis.setRect({\n\t\t\twidth: this.element.offsetWidth,\n\t\t\theight: this.element.offsetHeight\n\t\t});\n\t}\n\tdestroy() {\n\t\tthis.wrapperResizeObserver.disconnect();\n\t\tthis.resizeObserver.disconnect();\n\t}\n\tsetRect({ top, left, width, height, element } = {}) {\n\t\ttop = top ?? this.rect.top;\n\t\tleft = left ?? this.rect.left;\n\t\twidth = width ?? this.rect.width;\n\t\theight = height ?? this.rect.height;\n\t\telement = element ?? this.rect.element;\n\t\tif (top === this.rect.top && left === this.rect.left && width === this.rect.width && height === this.rect.height && element === this.rect.element) return;\n\t\tthis.rect.top = top;\n\t\tthis.rect.y = top;\n\t\tthis.rect.width = width;\n\t\tthis.rect.height = height;\n\t\tthis.rect.left = left;\n\t\tthis.rect.x = left;\n\t\tthis.rect.bottom = top + height;\n\t\tthis.rect.right = left + width;\n\t}\n\tonWrapperResize = () => {\n\t\tlet top;\n\t\tlet left;\n\t\tif (this.options.ignoreSticky) removeParentSticky(this.element);\n\t\tif (this.options.ignoreTransform) {\n\t\t\ttop = offsetTop(this.element);\n\t\t\tleft = offsetLeft(this.element);\n\t\t} else {\n\t\t\tconst rect = this.element.getBoundingClientRect();\n\t\t\ttop = rect.top + scrollTop(this.element);\n\t\t\tleft = rect.left + scrollLeft(this.element);\n\t\t}\n\t\tif (this.options.ignoreSticky) addParentSticky(this.element);\n\t\tthis.setRect({\n\t\t\ttop,\n\t\t\tleft\n\t\t});\n\t};\n\tonResize = ([entry]) => {\n\t\tif (!entry?.borderBoxSize[0]) return;\n\t\tconst width = entry.borderBoxSize[0].inlineSize;\n\t\tconst height = entry.borderBoxSize[0].blockSize;\n\t\tthis.setRect({\n\t\t\twidth,\n\t\t\theight\n\t\t});\n\t};\n};\n//#endregion\n//#region packages/snap/src/uid.ts\nlet index = 0;\nfunction uid() {\n\treturn index++;\n}\n//#endregion\n//#region packages/snap/src/snap.ts\n/**\n* Snap class to handle the snap functionality\n*\n* @example\n* const snap = new Snap(lenis, {\n*   type: 'mandatory', // 'mandatory', 'proximity' or 'lock'\n*   onSnapStart: (snap) => {\n*     console.log('onSnapStart', snap)\n*   },\n*   onSnapComplete: (snap) => {\n*     console.log('onSnapComplete', snap)\n*   },\n* })\n*\n* snap.add(500) // snap at 500px\n*\n* const removeSnap = snap.add(500)\n*\n* if (someCondition) {\n*   removeSnap()\n* }\n*/\nvar Snap = class {\n\toptions;\n\telements = /* @__PURE__ */ new Map();\n\tsnaps = /* @__PURE__ */ new Map();\n\tviewport = {\n\t\twidth: window.innerWidth,\n\t\theight: window.innerHeight\n\t};\n\tisStopped = false;\n\tonSnapDebounced;\n\tcurrentSnapIndex;\n\tconstructor(lenis, { type = \"proximity\", lerp, easing, duration, distanceThreshold = \"50%\", debounce: debounceDelay = 500, onSnapStart, onSnapComplete } = {}) {\n\t\tthis.lenis = lenis;\n\t\tif (!window.lenis) window.lenis = {};\n\t\twindow.lenis.snap = true;\n\t\tthis.options = {\n\t\t\ttype,\n\t\t\tlerp,\n\t\t\teasing,\n\t\t\tduration,\n\t\t\tdistanceThreshold,\n\t\t\tdebounce: debounceDelay,\n\t\t\tonSnapStart,\n\t\t\tonSnapComplete\n\t\t};\n\t\tthis.onWindowResize();\n\t\twindow.addEventListener(\"resize\", this.onWindowResize);\n\t\tthis.onSnapDebounced = debounce(this.onSnap, this.options.debounce);\n\t\tthis.lenis.on(\"virtual-scroll\", this.onSnapDebounced);\n\t}\n\t/**\n\t* Destroy the snap instance\n\t*/\n\tdestroy() {\n\t\tthis.lenis.off(\"virtual-scroll\", this.onSnapDebounced);\n\t\twindow.removeEventListener(\"resize\", this.onWindowResize);\n\t\tthis.elements.forEach((element) => {\n\t\t\telement.destroy();\n\t\t});\n\t}\n\t/**\n\t* Start the snap after it has been stopped\n\t*/\n\tstart() {\n\t\tthis.isStopped = false;\n\t}\n\t/**\n\t* Stop the snap\n\t*/\n\tstop() {\n\t\tthis.isStopped = true;\n\t}\n\t/**\n\t* Add a snap to the snap instance\n\t*\n\t* @param value The value to snap to\n\t* @param userData User data that will be forwarded through the snap event\n\t* @returns Unsubscribe function\n\t*/\n\tadd(value) {\n\t\tconst id = uid();\n\t\tthis.snaps.set(id, { value });\n\t\treturn () => this.snaps.delete(id);\n\t}\n\t/**\n\t* Add an element to the snap instance\n\t*\n\t* @param element The element to add\n\t* @param options The options for the element\n\t* @returns Unsubscribe function\n\t*/\n\taddElement(element, options = {}) {\n\t\tconst id = uid();\n\t\tthis.elements.set(id, new SnapElement(element, options));\n\t\treturn () => this.elements.delete(id);\n\t}\n\taddElements(elements, options = {}) {\n\t\tconst map = [...elements].map((element) => this.addElement(element, options));\n\t\treturn () => {\n\t\t\tmap.forEach((remove) => {\n\t\t\t\tremove();\n\t\t\t});\n\t\t};\n\t}\n\tonWindowResize = () => {\n\t\tthis.viewport.width = window.innerWidth;\n\t\tthis.viewport.height = window.innerHeight;\n\t};\n\tcomputeSnaps = () => {\n\t\tconst { isHorizontal } = this.lenis;\n\t\tlet snaps = [...this.snaps.values()];\n\t\tthis.elements.forEach(({ rect, align }) => {\n\t\t\tlet value;\n\t\t\talign.forEach((align) => {\n\t\t\t\tif (align === \"start\") value = rect.top;\n\t\t\t\telse if (align === \"center\") value = isHorizontal ? rect.left + rect.width / 2 - this.viewport.width / 2 : rect.top + rect.height / 2 - this.viewport.height / 2;\n\t\t\t\telse if (align === \"end\") value = isHorizontal ? rect.left + rect.width - this.viewport.width : rect.top + rect.height - this.viewport.height;\n\t\t\t\tif (typeof value === \"number\") snaps.push({ value: Math.ceil(value) });\n\t\t\t});\n\t\t});\n\t\tsnaps = snaps.sort((a, b) => Math.abs(a.value) - Math.abs(b.value));\n\t\treturn snaps;\n\t};\n\tprevious() {\n\t\tthis.goTo((this.currentSnapIndex ?? 0) - 1);\n\t}\n\tnext() {\n\t\tthis.goTo((this.currentSnapIndex ?? 0) + 1);\n\t}\n\tgoTo(index) {\n\t\tconst snaps = this.computeSnaps();\n\t\tif (snaps.length === 0) return;\n\t\tthis.currentSnapIndex = Math.max(0, Math.min(index, snaps.length - 1));\n\t\tconst currentSnap = snaps[this.currentSnapIndex];\n\t\tif (currentSnap === void 0) return;\n\t\tthis.lenis.scrollTo(currentSnap.value, {\n\t\t\tduration: this.options.duration,\n\t\t\teasing: this.options.easing,\n\t\t\tlerp: this.options.lerp,\n\t\t\tlock: this.options.type === \"lock\",\n\t\t\tuserData: { initiator: \"snap\" },\n\t\t\tonStart: () => {\n\t\t\t\tthis.options.onSnapStart?.({\n\t\t\t\t\tindex: this.currentSnapIndex,\n\t\t\t\t\t...currentSnap\n\t\t\t\t});\n\t\t\t},\n\t\t\tonComplete: () => {\n\t\t\t\tthis.options.onSnapComplete?.({\n\t\t\t\t\tindex: this.currentSnapIndex,\n\t\t\t\t\t...currentSnap\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tget distanceThreshold() {\n\t\tlet distanceThreshold = Number.POSITIVE_INFINITY;\n\t\tif (this.options.type === \"mandatory\") return Number.POSITIVE_INFINITY;\n\t\tconst { isHorizontal } = this.lenis;\n\t\tconst axis = isHorizontal ? \"width\" : \"height\";\n\t\tif (typeof this.options.distanceThreshold === \"string\" && this.options.distanceThreshold.endsWith(\"%\")) distanceThreshold = Number(this.options.distanceThreshold.replace(\"%\", \"\")) / 100 * this.viewport[axis];\n\t\telse if (typeof this.options.distanceThreshold === \"number\") distanceThreshold = this.options.distanceThreshold;\n\t\telse distanceThreshold = this.viewport[axis];\n\t\treturn distanceThreshold;\n\t}\n\tonSnap = (e) => {\n\t\tif (this.isStopped) return;\n\t\tif (e.event.type === \"touchmove\") return;\n\t\tif (this.options.type === \"lock\" && this.lenis.userData?.initiator === \"snap\") return;\n\t\tlet { scroll, isHorizontal } = this.lenis;\n\t\tconst delta = isHorizontal ? e.deltaX : e.deltaY;\n\t\tscroll = Math.ceil(this.lenis.scroll + delta);\n\t\tconst snaps = this.computeSnaps();\n\t\tif (snaps.length === 0) return;\n\t\tlet snapIndex;\n\t\tconst prevSnapIndex = snaps.findLastIndex(({ value }) => value < scroll);\n\t\tconst nextSnapIndex = snaps.findIndex(({ value }) => value > scroll);\n\t\tif (this.options.type === \"lock\") {\n\t\t\tif (delta > 0) snapIndex = nextSnapIndex;\n\t\t\telse if (delta < 0) snapIndex = prevSnapIndex;\n\t\t} else {\n\t\t\tconst prevSnap = snaps[prevSnapIndex];\n\t\t\tconst distanceToPrevSnap = prevSnap ? Math.abs(scroll - prevSnap.value) : Number.POSITIVE_INFINITY;\n\t\t\tconst nextSnap = snaps[nextSnapIndex];\n\t\t\tsnapIndex = distanceToPrevSnap < (nextSnap ? Math.abs(scroll - nextSnap.value) : Number.POSITIVE_INFINITY) ? prevSnapIndex : nextSnapIndex;\n\t\t}\n\t\tif (snapIndex === void 0) return;\n\t\tif (snapIndex === -1) return;\n\t\tsnapIndex = Math.max(0, Math.min(snapIndex, snaps.length - 1));\n\t\tconst snap = snaps[snapIndex];\n\t\tif (Math.abs(scroll - snap.value) <= this.distanceThreshold) this.goTo(snapIndex);\n\t};\n\tresize() {\n\t\tthis.elements.forEach((element) => {\n\t\t\telement.onWrapperResize();\n\t\t});\n\t}\n};\n//#endregion\nexport { Snap as default };\n\n//# sourceMappingURL=lenis-snap.mjs.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import Lenis from\"https://unpkg.com/lenis@1.3.23/dist/lenis.mjs\";import Snap from\"https://unpkg.com/lenis@1.3.23/dist/lenis-snap.mjs\";import{useEffect,useRef,Children,isValidElement,cloneElement}from\"react\";/**\n * @framerSupportedLayoutHeight any\n * @framerSupportedLayoutWidth any\n * @framerDisableUnlink\n */export default function Component({smooth,infinite,orientation,intensity,children,snap}){const wrapperRef=useRef();const contentRef=useRef();const lenisRef=useRef();useEffect(()=>{if(children&&(!wrapperRef.current||!contentRef.current))return;if(wrapperRef.current&&contentRef.current){if(orientation===\"horizontal\"){wrapperRef.current.style.setProperty(\"overflowX\",\"auto\");}else{wrapperRef.current.style.setProperty(\"overflowY\",\"auto\");}}const lenis=new Lenis({smoothWheel:smooth,// duration: intensity / 10,\ninfinite,orientation,gestureOrientation:orientation===\"horizontal\"?\"both\":\"vertical\",autoRaf:true,autoToggle:true,anchors:true,allowNestedScroll:true,wrapper:wrapperRef.current,content:contentRef.current,syncTouch:Boolean(infinite)||orientation===\"horizontal\",stopInertiaOnNavigate:true});lenisRef.current=lenis;let lenisSnap;if(snap&&snap.snaps.length>0){lenisSnap=new Snap(lenis,{type:snap.type,distanceThreshold:snap.threshold+\"%\"});snap.snaps.forEach(item=>{if(!item.target?.current)return;const id=item.target.current.id;// workaround when content is duplicated by LenisSeamlessInfinite\nconst elements=document.querySelectorAll(`#${id}`);elements.forEach(element=>{lenisSnap.addElement(element,{align:item.align});});});}window.lenis=lenis;window.lenisSnap=snap;return()=>{if(lenis)lenis.destroy();if(lenisSnap)lenisSnap.destroy();};},[smooth,infinite,orientation,intensity,children,snap]);// useEffect(() => {\n//     function onClick(event: PointerEvent | MouseEvent) {\n//         const path = event.composedPath()\n//         const pageLink = path.find(\n//             (node) =>\n//                 node instanceof HTMLAnchorElement &&\n//                 (node.getAttribute(\"href\")?.startsWith(\"./\") ||\n//                     node.getAttribute(\"href\")?.startsWith(\"../\"))\n//         ) as HTMLAnchorElement | undefined\n//         if (pageLink) {\n//             if (lenisRef.current) {\n//                 lenisRef.current.reset()\n//             }\n//         }\n//     }\n//     window.addEventListener(\"click\", onClick)\n//     return () => {\n//         window.removeEventListener(\"click\", onClick)\n//     }\n// }, [])\nreturn /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"link\",{href:\"https://unpkg.com/lenis@1.3.23/dist/lenis.css\",rel:\"stylesheet\"}),children&&/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(\"div\",{ref:wrapperRef,style:orientation===\"horizontal\"?{overflowX:\"auto\",width:\"100%\"}:{overflowY:\"auto\",height:\"100%\"},children:/*#__PURE__*/_jsx(\"div\",{ref:contentRef,style:{width:\"100%\"},children:Children.map(children,child=>/*#__PURE__*/isValidElement(child)?/*#__PURE__*/cloneElement(child,{style:{...child.props.style,width:\"100%\"}}):child)})})})]});}Component.displayName=\"Lenis\";addPropertyControls(Component,{smooth:{type:ControlType.Boolean,title:\"Smooth\",defaultValue:true},intensity:{type:ControlType.Number,title:\"Intensity\",defaultValue:12,step:1,min:1,max:100,hidden(props){return props.smooth===false;},description:\"This will be ignored on mobile.\"},infinite:{type:ControlType.Boolean,title:\"Infinite\",defaultValue:false,hidden(props){return props.smooth===false;}},orientation:{type:ControlType.Enum,defaultValue:\"Vertical\",displaySegmentedControl:true,options:[\"vertical\",\"horizontal\"],optionTitles:[\"Vertical\",\"Horizontal\"],hidden(props){return props.smooth===false;}},children:{type:ControlType.ComponentInstance,title:\"Content\"},snap:{type:ControlType.Object,optional:true,description:\"Cooked and served by [darkroom.engineering](https://darkroom.engineering).\",controls:{type:{type:ControlType.Enum,defaultValue:\"proximity\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\",options:[\"proximity\",\"mandatory\",\"lock\"],optionTitles:[\"Proximity\",\"Mandatory\",\"Lock\"]},threshold:{type:ControlType.Number,defaultValue:50,min:0,max:100,unit:\"%\",hidden:props=>{return props.snap.type===\"mandatory\";}},snaps:{type:ControlType.Array,control:{type:ControlType.Object,controls:{target:{title:\"Target\",type:ControlType.ScrollSectionRef},align:{type:ControlType.Enum,defaultValue:\"center\",displaySegmentedControl:true,segmentedControlDirection:\"horizontal\",options:[\"start\",\"center\",\"end\"],optionIcons:[\"align-top\",\"align-middle\",\"align-bottom\"]}}}}}}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Component\",\"slots\":[\"children\"],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Lenis.map","// Generated by Framer (6ae8a13)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const enabledGestures={KN2FOv4Pf:{hover:true}};const cycleOrder=[\"KN2FOv4Pf\",\"kP8iFDhCI\"];const serializationHash=\"framer-1QNM6\";const variantClassNames={KN2FOv4Pf:\"framer-v-zqh0pq\",kP8iFDhCI:\"framer-v-9m7k8t\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const wYZBuvekn=undefined;const xnsg8Mutw=undefined;const transition1={bounce:0,delay:0,duration:.2,type:\"spring\"};const transformTemplate1=(_,t)=>`translate(-50%, -50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Active:\"kP8iFDhCI\",Intactive:\"KN2FOv4Pf\"};const Variants=motion.create(React.Fragment);const getProps=({height,hover,id,title,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"KN2FOv4Pf\",wYZBuvekn:hover??props.wYZBuvekn,xnsg8Mutw:title??props.xnsg8Mutw??\"@\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,wYZBuvekn,xnsg8Mutw,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"KN2FOv4Pf\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onMouseEntertfba2z=activeVariantCallback(async(...args)=>{setGestureState({isHovered:true});if(wYZBuvekn){const res=await wYZBuvekn(...args);if(res===false)return false;}});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-zqh0pq\",className,classNames),\"data-framer-name\":\"Intactive\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"KN2FOv4Pf\",onMouseEnter:onMouseEntertfba2z,ref:refBinding,style:{backgroundColor:\"var(--token-eee4728f-06ef-4d99-9d02-ac8944e7f6dd, rgb(226, 226, 226))\",borderBottomLeftRadius:32,borderBottomRightRadius:32,borderTopLeftRadius:32,borderTopRightRadius:32,...style},variants:{\"KN2FOv4Pf-hover\":{backgroundColor:\"var(--token-1892785e-8581-4826-b411-015017430ad3, rgb(0, 94, 217))\"},kP8iFDhCI:{backgroundColor:\"rgb(48, 54, 41)\"}},...addPropertyOverrides({\"KN2FOv4Pf-hover\":{\"data-framer-name\":undefined},kP8iFDhCI:{\"data-framer-name\":\"Active\"}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBTZW1pYm9sZA==\",\"--framer-font-family\":'\"PP Neue Montreal Semibold\", \"PP Neue Montreal Semibold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"600\",\"--framer-letter-spacing\":\"-0.03em\",\"--framer-line-height\":\"100%\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(48, 54, 41))\",\"--framer-text-transform\":\"uppercase\"},children:\"@\"})}),className:\"framer-1njt74i\",fonts:[\"CUSTOMV2;PP Neue Montreal Semibold\"],layoutDependency:layoutDependency,layoutId:\"Azq5vd6cp\",style:{\"--extracted-r6o4lv\":\"rgb(48, 54, 41)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:xnsg8Mutw,transformTemplate:transformTemplate1,variants:{\"KN2FOv4Pf-hover\":{\"--extracted-r6o4lv\":\"var(--token-4f4ed186-9023-4858-830a-5202d69249c1, rgb(17, 18, 18))\"},kP8iFDhCI:{\"--extracted-r6o4lv\":\"var(--token-4f4ed186-9023-4858-830a-5202d69249c1, rgb(17, 18, 18))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({\"KN2FOv4Pf-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBTZW1pYm9sZA==\",\"--framer-font-family\":'\"PP Neue Montreal Semibold\", \"PP Neue Montreal Semibold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"600\",\"--framer-letter-spacing\":\"-0.03em\",\"--framer-line-height\":\"100%\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-4f4ed186-9023-4858-830a-5202d69249c1, rgb(17, 18, 18)))\",\"--framer-text-transform\":\"uppercase\"},children:\"@\"})})},kP8iFDhCI:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBTZW1pYm9sZA==\",\"--framer-font-family\":'\"PP Neue Montreal Semibold\", \"PP Neue Montreal Semibold Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"600\",\"--framer-letter-spacing\":\"-0.03em\",\"--framer-line-height\":\"100%\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-4f4ed186-9023-4858-830a-5202d69249c1, rgb(17, 18, 18)))\",\"--framer-text-transform\":\"uppercase\"},children:\"@\"})})}},baseVariant,gestureVariant)})})})})});});const css=[\".framer-1QNM6.framer-1iwvsp, .framer-1QNM6 .framer-1iwvsp { display: block; }\",\".framer-1QNM6.framer-zqh0pq { cursor: pointer; height: 32px; overflow: visible; position: relative; width: 32px; }\",\".framer-1QNM6 .framer-1njt74i { flex: none; height: auto; left: 50%; position: absolute; top: 50%; white-space: pre; width: auto; }\",\".framer-1QNM6.framer-v-9m7k8t.framer-zqh0pq { cursor: unset; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 32\n * @framerIntrinsicWidth 32\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"kP8iFDhCI\":{\"layout\":[\"fixed\",\"fixed\"]},\"NnX2GmHL0\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"wYZBuvekn\":\"hover\",\"xnsg8Mutw\":\"title\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framerc6TSFDhCz=withCSS(Component,css,\"framer-1QNM6\");export default Framerc6TSFDhCz;Framerc6TSFDhCz.displayName=\"Dropdown Content\";Framerc6TSFDhCz.defaultProps={height:32,width:32};addPropertyControls(Framerc6TSFDhCz,{variant:{options:[\"KN2FOv4Pf\",\"kP8iFDhCI\"],optionTitles:[\"Intactive\",\"Active\"],title:\"Variant\",type:ControlType.Enum},wYZBuvekn:{title:\"Hover\",type:ControlType.EventHandler},xnsg8Mutw:{defaultValue:\"@\",displayTextArea:false,title:\"Title\",type:ControlType.String},onxnsg8MutwChange:{changes:\"xnsg8Mutw\",type:ControlType.ChangeHandler}});addFonts(Framerc6TSFDhCz,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Semibold\",source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/RsrBGDtBZnbPqQ3mBgIfqBBKnM.woff2\",weight:\"600\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"Framerc6TSFDhCz\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"wYZBuvekn\\\":\\\"hover\\\",\\\"xnsg8Mutw\\\":\\\"title\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"kP8iFDhCI\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"NnX2GmHL0\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerIntrinsicWidth\":\"32\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerAutoSizeImages\":\"true\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerIntrinsicHeight\":\"32\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./c6TSFDhCz.map","// Generated by Framer (625f89c)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,Link,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import SVGComponent from\"https://framerusercontent.com/modules/jsd9bAs3tcXwny3iop3B/TD23g7uXx0qxQCmLtpE4/SVGComponent.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/oRCRt1u3e40MtPuENl6q/0pU1s4C8RlfQyIwHjbKI/MffBJovlA.js\";const SVGComponentFonts=getFonts(SVGComponent);const enabledGestures={Kk1gIUTyx:{hover:true}};const cycleOrder=[\"yqU47cpyn\",\"Kk1gIUTyx\"];const serializationHash=\"framer-x7PFg\";const variantClassNames={Kk1gIUTyx:\"framer-v-pwe3fj\",yqU47cpyn:\"framer-v-1lelg4r\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const zjpTYehEH=undefined;const WZ0ygxKhu=undefined;const m5wLQuVvP=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={\"desktop--active\":\"yqU47cpyn\",\"desktop--inactive\":\"Kk1gIUTyx\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,link,sVGCode,title,width,...props})=>{return{...props,m5wLQuVvP:title??props.m5wLQuVvP??\"Home\",variant:humanReadableVariantMap[props.variant]??props.variant??\"yqU47cpyn\",WZ0ygxKhu:sVGCode??props.WZ0ygxKhu??'<svg width=\"800px\" height=\"800px\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path d=\"M1 6V15H6V11C6 9.89543 6.89543 9 8 9C9.10457 9 10 9.89543 10 11V15H15V6L8 0L1 6Z\" fill=\"#000000\"/>\\n</svg>',zjpTYehEH:link??props.zjpTYehEH};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,m5wLQuVvP,WZ0ygxKhu,zjpTYehEH,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"yqU47cpyn\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(gestureVariant===\"Kk1gIUTyx-hover\")return false;if(baseVariant===\"Kk1gIUTyx\")return false;return true;};const isDisplayed1=()=>{if(gestureVariant===\"Kk1gIUTyx-hover\")return true;if(baseVariant===\"Kk1gIUTyx\")return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:zjpTYehEH,motionChild:true,nodeId:\"yqU47cpyn\",openInNewTab:false,scopeId:\"vRahVGG7A\",smoothScroll:true,children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-1lelg4r\",className,classNames)} framer-1szvw3r`,\"data-framer-name\":\"desktop--active\",layoutDependency:layoutDependency,layoutId:\"yqU47cpyn\",ref:refBinding,style:{backgroundColor:\"rgb(48, 54, 41)\",...style},variants:{Kk1gIUTyx:{backgroundColor:\"rgb(255, 255, 255)\"}},...addPropertyOverrides({\"Kk1gIUTyx-hover\":{\"data-framer-name\":undefined},Kk1gIUTyx:{\"data-framer-name\":\"desktop--inactive\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-lvhgcu-container\",\"data-code-component-plugin-id\":\"84d4c1\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"DuTLCES3R-container\",nodeId:\"DuTLCES3R\",rendersWithMotion:true,scopeId:\"vRahVGG7A\",children:/*#__PURE__*/_jsx(SVGComponent,{animation:\"none\",animationDuration:1,color:\"rgb(242, 226, 5)\",height:\"100%\",id:\"DuTLCES3R\",layoutId:\"DuTLCES3R\",presetIcon:\"custom\",stroke:false,strokeColor:\"rgb(0, 0, 0)\",style:{height:\"100%\",width:\"100%\"},svgCode:WZ0ygxKhu,theme:\"custom\",width:\"100%\"})})}),isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-8e9c3p-container\",\"data-code-component-plugin-id\":\"84d4c1\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"drn5HoJqD-container\",nodeId:\"drn5HoJqD\",rendersWithMotion:true,scopeId:\"vRahVGG7A\",children:/*#__PURE__*/_jsx(SVGComponent,{animation:\"none\",animationDuration:1,color:\"rgb(48, 54, 41)\",height:\"100%\",id:\"drn5HoJqD\",layoutId:\"drn5HoJqD\",presetIcon:\"custom\",stroke:false,strokeColor:\"rgb(0, 0, 0)\",style:{height:\"100%\",width:\"100%\"},svgCode:WZ0ygxKhu,theme:\"custom\",width:\"100%\"})})}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-27ku3y\",\"data-styles-preset\":\"MffBJovlA\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(242, 226, 5))\"},children:\"Home\"})}),className:\"framer-4g28vk\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"hWVDd21nt\",style:{\"--extracted-r6o4lv\":\"rgb(242, 226, 5)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:m5wLQuVvP,variants:{Kk1gIUTyx:{\"--extracted-r6o4lv\":\"rgb(48, 54, 41)\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({Kk1gIUTyx:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-27ku3y\",\"data-styles-preset\":\"MffBJovlA\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(48, 54, 41))\"},children:\"Home\"})})}},baseVariant,gestureVariant)})]})})})})});});const css=[\".framer-x7PFg.framer-1szvw3r, .framer-x7PFg .framer-1szvw3r { display: block; }\",\".framer-x7PFg.framer-1lelg4r { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 16px; position: relative; text-decoration: none; width: min-content; }\",\".framer-x7PFg .framer-lvhgcu-container, .framer-x7PFg .framer-8e9c3p-container { aspect-ratio: 1 / 1; flex: none; height: auto; position: relative; width: 16px; z-index: 1; }\",\".framer-x7PFg .framer-4g28vk { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-x7PFg.framer-v-pwe3fj.framer-1lelg4r { cursor: pointer; }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 48\n * @framerIntrinsicWidth 101\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"Kk1gIUTyx\":{\"layout\":[\"auto\",\"auto\"]},\"mAVTeFGwU\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"m5wLQuVvP\":\"title\",\"WZ0ygxKhu\":\"sVGCode\",\"zjpTYehEH\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramervRahVGG7A=withCSS(Component,css,\"framer-x7PFg\");export default FramervRahVGG7A;FramervRahVGG7A.displayName=\"Navigation\";FramervRahVGG7A.defaultProps={height:48,width:101};addPropertyControls(FramervRahVGG7A,{variant:{options:[\"yqU47cpyn\",\"Kk1gIUTyx\"],optionTitles:[\"desktop--active\",\"desktop--inactive\"],title:\"Variant\",type:ControlType.Enum},m5wLQuVvP:{defaultValue:\"Home\",displayTextArea:false,title:\"Title\",type:ControlType.String},onm5wLQuVvPChange:{changes:\"m5wLQuVvP\",type:ControlType.ChangeHandler},WZ0ygxKhu:{defaultValue:'<svg width=\"800px\" height=\"800px\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path d=\"M1 6V15H6V11C6 9.89543 6.89543 9 8 9C9.10457 9 10 9.89543 10 11V15H15V6L8 0L1 6Z\" fill=\"#000000\"/>\\n</svg>',displayTextArea:true,title:\"SVG Code\",type:ControlType.String},onWZ0ygxKhuChange:{changes:\"WZ0ygxKhu\",type:ControlType.ChangeHandler},zjpTYehEH:{title:\"Link\",type:ControlType.Link}});addFonts(FramervRahVGG7A,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...SVGComponentFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramervRahVGG7A\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"48\",\"framerAutoSizeImages\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"Kk1gIUTyx\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"mAVTeFGwU\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"101\",\"framerVariables\":\"{\\\"m5wLQuVvP\\\":\\\"title\\\",\\\"WZ0ygxKhu\\\":\\\"sVGCode\\\",\\\"zjpTYehEH\\\":\\\"link\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./vRahVGG7A.map","// Generated by Framer (a520bf1)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;ABC Diatype Unlicensed Trial Regular\",\"CUSTOMV2;ABC Diatype Unlicensed Trial Bold\",\"CUSTOMV2;ABC Diatype Unlicensed Trial Bold Italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"ABC Diatype Unlicensed Trial Regular\",source:\"custom\",style:\"normal\",uiFamilyName:\"ABC Diatype Unlicensed Trial\",url:\"https://framerusercontent.com/assets/W6xxsLFHk7Z9R7quDJQAnVO9kQ.woff2\",weight:\"400\"},{cssFamilyName:\"ABC Diatype Unlicensed Trial Bold\",source:\"custom\",style:\"normal\",uiFamilyName:\"ABC Diatype Unlicensed Trial\",url:\"https://framerusercontent.com/assets/4LFcFkhFrJuqERF0lxFiA2vXo.woff2\",weight:\"700\"},{cssFamilyName:\"ABC Diatype Unlicensed Trial Bold Italic\",source:\"custom\",style:\"italic\",uiFamilyName:\"ABC Diatype Unlicensed Trial\",url:\"https://framerusercontent.com/assets/DnwfrPfTjRk4kCfEL2haBQxlrQ.woff2\",weight:\"700\"}]}];export const css=['.framer-S2dMX .framer-styles-preset-7q6rdi:not(.rich-text-wrapper), .framer-S2dMX .framer-styles-preset-7q6rdi.rich-text-wrapper h5 { --framer-font-family: \"ABC Diatype Unlicensed Trial Regular\", \"ABC Diatype Unlicensed Trial Regular Placeholder\", sans-serif; --framer-font-family-bold: \"ABC Diatype Unlicensed Trial Bold\", \"ABC Diatype Unlicensed Trial Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"ABC Diatype Unlicensed Trial Bold Italic\", \"ABC Diatype Unlicensed Trial Bold Italic Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 24px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-letter-spacing: -0.03em; --framer-line-height: 130%; --framer-paragraph-spacing: 40px; --framer-text-alignment: left; --framer-text-color: var(--token-4f4ed186-9023-4858-830a-5202d69249c1, #111212); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-S2dMX .framer-styles-preset-7q6rdi:not(.rich-text-wrapper), .framer-S2dMX .framer-styles-preset-7q6rdi.rich-text-wrapper h5 { --framer-font-family: \"ABC Diatype Unlicensed Trial Regular\", \"ABC Diatype Unlicensed Trial Regular Placeholder\", sans-serif; --framer-font-family-bold: \"ABC Diatype Unlicensed Trial Bold\", \"ABC Diatype Unlicensed Trial Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"ABC Diatype Unlicensed Trial Bold Italic\", \"ABC Diatype Unlicensed Trial Bold Italic Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 20px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-letter-spacing: -0.03em; --framer-line-height: 130%; --framer-paragraph-spacing: 40px; --framer-text-alignment: left; --framer-text-color: var(--token-4f4ed186-9023-4858-830a-5202d69249c1, #111212); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-S2dMX .framer-styles-preset-7q6rdi:not(.rich-text-wrapper), .framer-S2dMX .framer-styles-preset-7q6rdi.rich-text-wrapper h5 { --framer-font-family: \"ABC Diatype Unlicensed Trial Regular\", \"ABC Diatype Unlicensed Trial Regular Placeholder\", sans-serif; --framer-font-family-bold: \"ABC Diatype Unlicensed Trial Bold\", \"ABC Diatype Unlicensed Trial Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"ABC Diatype Unlicensed Trial Bold Italic\", \"ABC Diatype Unlicensed Trial Bold Italic Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 18px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-letter-spacing: -0.03em; --framer-line-height: 130%; --framer-paragraph-spacing: 40px; --framer-text-alignment: left; --framer-text-color: var(--token-4f4ed186-9023-4858-830a-5202d69249c1, #111212); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-S2dMX\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (a520bf1)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/kBh0Mn2R285BG4GskQfx/kF8pCwORpgxsb6eSXaVO/jB2nPzqr7.js\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/1YebAqrdxxGcLJ2mIAyb/9Rq64fCgj8s9w9FnaJev/JCTbwXFKE.js\";const cycleOrder=[\"PsKAjAkcv\",\"CjMjwGjne\",\"EFVy2p6H0\",\"m8LCJl9A_\"];const serializationHash=\"framer-QvRAo\";const variantClassNames={CjMjwGjne:\"framer-v-1i5vsvd\",EFVy2p6H0:\"framer-v-2uyzs5\",m8LCJl9A_:\"framer-v-wxbmqc\",PsKAjAkcv:\"framer-v-1cbkm86\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:0,delay:0,duration:.4,type:\"spring\"};const transformTemplate1=(_,t)=>`translate(-50%, -50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Default:\"PsKAjAkcv\",Drag:\"m8LCJl9A_\",Expand:\"CjMjwGjne\",See:\"EFVy2p6H0\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"PsKAjAkcv\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"PsKAjAkcv\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(baseVariant===\"EFVy2p6H0\")return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1cbkm86\",className,classNames),\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"PsKAjAkcv\",ref:refBinding,style:{...style},...addPropertyOverrides({CjMjwGjne:{\"data-framer-name\":\"Expand\"},EFVy2p6H0:{\"data-framer-name\":\"See\"},m8LCJl9A_:{\"data-framer-name\":\"Drag\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1aouf9l\",\"data-framer-name\":\"Base\",layoutDependency:layoutDependency,layoutId:\"GSWoD93M5\",style:{backgroundColor:\"var(--token-341b58e0-d728-43ce-a1dc-e77a522cab4f, rgb(255, 255, 255))\",borderBottomLeftRadius:128,borderBottomRightRadius:128,borderTopLeftRadius:128,borderTopRightRadius:128},variants:{CjMjwGjne:{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1vt67qp\",\"data-border\":true,layoutDependency:layoutDependency,layoutId:\"FHrKGrjgB\",style:{\"--border-bottom-width\":\"2px\",\"--border-color\":\"var(--token-341b58e0-d728-43ce-a1dc-e77a522cab4f, rgb(255, 255, 255))\",\"--border-left-width\":\"2px\",\"--border-right-width\":\"2px\",\"--border-style\":\"solid\",\"--border-top-width\":\"2px\",backgroundColor:\"var(--token-341b58e0-d728-43ce-a1dc-e77a522cab4f, rgb(255, 255, 255))\",borderBottomLeftRadius:16,borderBottomRightRadius:16,borderTopLeftRadius:16,borderTopRightRadius:16},variants:{CjMjwGjne:{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-89npij\",\"data-border\":true,layoutDependency:layoutDependency,layoutId:\"LMA2zWxd1\",style:{\"--border-bottom-width\":\"2px\",\"--border-color\":\"var(--token-341b58e0-d728-43ce-a1dc-e77a522cab4f, rgb(255, 255, 255))\",\"--border-left-width\":\"2px\",\"--border-right-width\":\"2px\",\"--border-style\":\"solid\",\"--border-top-width\":\"2px\",backgroundColor:\"var(--token-341b58e0-d728-43ce-a1dc-e77a522cab4f, rgb(255, 255, 255))\",borderBottomLeftRadius:16,borderBottomRightRadius:16,borderTopLeftRadius:16,borderTopRightRadius:16},variants:{CjMjwGjne:{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1vfe6s1\",\"data-border\":true,layoutDependency:layoutDependency,layoutId:\"t6eQWlIZL\",style:{\"--border-bottom-width\":\"2px\",\"--border-color\":\"var(--token-341b58e0-d728-43ce-a1dc-e77a522cab4f, rgb(255, 255, 255))\",\"--border-left-width\":\"2px\",\"--border-right-width\":\"2px\",\"--border-style\":\"solid\",\"--border-top-width\":\"2px\",backgroundColor:\"var(--token-341b58e0-d728-43ce-a1dc-e77a522cab4f, rgb(255, 255, 255))\",borderBottomLeftRadius:16,borderBottomRightRadius:16,borderTopLeftRadius:16,borderTopRightRadius:16},variants:{CjMjwGjne:{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1pmuojo\",\"data-border\":true,layoutDependency:layoutDependency,layoutId:\"guiUdiIeK\",style:{\"--border-bottom-width\":\"2px\",\"--border-color\":\"var(--token-341b58e0-d728-43ce-a1dc-e77a522cab4f, rgb(255, 255, 255))\",\"--border-left-width\":\"2px\",\"--border-right-width\":\"2px\",\"--border-style\":\"solid\",\"--border-top-width\":\"2px\",backgroundColor:\"var(--token-341b58e0-d728-43ce-a1dc-e77a522cab4f, rgb(255, 255, 255))\",borderBottomLeftRadius:16,borderBottomRightRadius:16,borderTopLeftRadius:16,borderTopRightRadius:16},variants:{CjMjwGjne:{borderBottomLeftRadius:0,borderBottomRightRadius:0,borderTopLeftRadius:0,borderTopRightRadius:0}}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1bwsdzm\",\"data-framer-name\":\"you\",layoutDependency:layoutDependency,layoutId:\"ECuT4hUOF\",style:{backgroundColor:\"var(--token-341b58e0-d728-43ce-a1dc-e77a522cab4f, rgb(255, 255, 255))\",borderBottomLeftRadius:24,borderBottomRightRadius:24,borderTopRightRadius:24},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1833qg6\",\"data-styles-preset\":\"jB2nPzqr7\",dir:\"auto\",children:\"You\"})}),className:\"framer-1jqp3b1\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"c6Mu2LAa4\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},transformTemplate:transformTemplate1,verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({m8LCJl9A_:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1833qg6\",\"data-styles-preset\":\"jB2nPzqr7\",dir:\"auto\",children:\"Drag\"})})}},baseVariant,gestureVariant)})}),isDisplayed()&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h5,{className:\"framer-styles-preset-7q6rdi\",\"data-styles-preset\":\"JCTbwXFKE\",dir:\"auto\",children:\"See\"})}),className:\"framer-mfwd5f\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"oQDX1sC2T\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},transformTemplate:transformTemplate1,verticalAlignment:\"top\",withExternalLayout:true})]})})})});});const css=[\".framer-QvRAo.framer-18z3sh8, .framer-QvRAo .framer-18z3sh8 { display: block; }\",\".framer-QvRAo.framer-1cbkm86 { height: 16px; mix-blend-mode: difference; overflow: visible; position: relative; width: 16px; }\",\".framer-QvRAo .framer-1aouf9l { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-QvRAo .framer-1vt67qp, .framer-QvRAo .framer-89npij, .framer-QvRAo .framer-1vfe6s1, .framer-QvRAo .framer-1pmuojo { flex: none; height: 16px; left: calc(50.00000000000002% - 16px / 2); overflow: visible; position: absolute; top: calc(50.00000000000002% - 16px / 2); width: 16px; }\",\".framer-QvRAo .framer-1bwsdzm { bottom: -24px; flex: none; height: 24px; overflow: var(--overflow-clip-fallback, clip); position: absolute; right: -42px; width: 42px; will-change: var(--framer-will-change-override, transform); }\",\".framer-QvRAo .framer-1jqp3b1 { flex: none; height: auto; left: 50%; position: absolute; top: 49%; white-space: pre; width: auto; }\",\".framer-QvRAo .framer-mfwd5f { flex: none; height: auto; left: 50%; position: absolute; top: 50%; white-space: pre; width: auto; }\",\".framer-QvRAo.framer-v-1i5vsvd.framer-1cbkm86 { height: 350px; width: 350px; }\",\".framer-QvRAo.framer-v-1i5vsvd .framer-1aouf9l { bottom: 8px; left: 8px; right: 8px; top: 8px; }\",\".framer-QvRAo.framer-v-1i5vsvd .framer-1vt67qp { bottom: 0px; left: unset; right: 0px; top: unset; }\",\".framer-QvRAo.framer-v-1i5vsvd .framer-89npij { bottom: 0px; left: 0px; top: unset; }\",\".framer-QvRAo.framer-v-1i5vsvd .framer-1vfe6s1 { left: unset; right: 0px; top: 0px; }\",\".framer-QvRAo.framer-v-1i5vsvd .framer-1pmuojo { left: 0px; top: 0px; }\",\".framer-QvRAo.framer-v-2uyzs5.framer-1cbkm86 { height: 80px; width: 80px; }\",...sharedStyle.css,...sharedStyle1.css,'.framer-QvRAo[data-border=\"true\"]::after, .framer-QvRAo [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 16\n * @framerIntrinsicWidth 16\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"CjMjwGjne\":{\"layout\":[\"fixed\",\"fixed\"]},\"EFVy2p6H0\":{\"layout\":[\"fixed\",\"fixed\"]},\"m8LCJl9A_\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerVtZoRV2tQ=withCSS(Component,css,\"framer-QvRAo\");export default FramerVtZoRV2tQ;FramerVtZoRV2tQ.displayName=\"Cursor\";FramerVtZoRV2tQ.defaultProps={height:16,width:16};addPropertyControls(FramerVtZoRV2tQ,{variant:{options:[\"PsKAjAkcv\",\"CjMjwGjne\",\"EFVy2p6H0\",\"m8LCJl9A_\"],optionTitles:[\"Default\",\"Expand\",\"See\",\"Drag\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerVtZoRV2tQ,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerVtZoRV2tQ\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"16\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"CjMjwGjne\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"EFVy2p6H0\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"m8LCJl9A_\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerColorSyntax\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicWidth\":\"16\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// ————————————————————————————————————————————————————————————————\n// Motion — every amplitude and timing lives here\n// ————————————————————————————————————————————————————————————————\nconst MOTION={key:{hover:.6},glitch:{frame:45,split:2},screen:{hold:2.2,erase:2.6,idleFade:3},radar:{boost:2.4,follow:5,afterglow:1.8,drag:.014},logo:{cycle:4},tilt:{soft:.16,mobile:.4},touch:{armFor:4e3},slowLoad:1400,crt:{boot:1.1,switch:.46,trace:2.6},frameMin:.0125,frameMinLow:.03,adapt:{every:90,slow:1.5,step:.15,floor:.6,settle:1.5},led:{flicker:[0,.7,.15,.9,.4,1],flickerStep:1/18,band:[.05,.42],bitsAt:.2,bitsFps:20,hot:.1,noise:.06,glowAt:.85,glowFor:.5,riseAt:.75,riseEase:[.38,0,.12,1],fade:.4,twinkle:.15,hover:{follow:14,fade:5},burst:{life:2.4,spacing:.38,max:12,lift:.9,spin:7,share:.14,speed:2200},hang:.7,shock:{life:.9},sweep:{life:.55,band:3},trail:36,edge:{full:.46,small:.24},rim:.35,back:.9},// the type's squares: knocked off the surface by the cursor, they hop, land, slide and are drawn home (pixels: they never turn)\ntype:{impulse:70,speedGain:.07,maxSpeed:3e3,inherit:.1,hop:260,jitter:1.6,mass:[.8,1.25],free:[.4,1.2],drag:1.8,hopG:1800,restitution:.28,friction:6,springIn:.25,spring:34,zeta:.9,blur:.012,shadow:.14},// the type's programme: power, wipe, rain, decode, idle events\npanel:{far:3,near:2,power:[0,.55,.4,.85,1],powerT:.35,wipe:.36,rain:[.15,1.7],rainAcc:30,decode0:.55,glyphHz:25,settle:.16,every:[6,9],glitch:.36,flashStep:.16,flashLow:.3,scramble:.32}};// ————————————————————————————————————————————————————————————————\n// Defaults\n// ————————————————————————————————————————————————————————————————\nconst INK_KEY=\"#1A1B19\";const INK_TYPE=\"#121311\"// the type in Black: a warm near-black that sits on the brand yellow\n;const PAPER=\"#F4F4F2\";const DEFAULT_KEYS=[{label:\"Home\",url:\"/\",message:\"home — back to the start\",color:INK_KEY,gradient:false,color2:INK_KEY,legend:PAPER,size:1.5,row:1},{label:\"GH\",url:\"https://github.com/\",message:\"github — code & components\",color:\"#A9D4F5\",gradient:false,color2:\"#A9D4F5\",legend:\"#28465F\",size:1,row:1},{label:\"IG\",url:\"https://www.instagram.com/\",message:\"instagram — process & play\",color:\"#E23A8E\",gradient:true,color2:\"#FF6A13\",legend:\"#FFFFFF\",size:1,row:1},{label:\"@\",url:\"mailto:hello@moavci.com\",message:\"hello@moavci.com\",color:\"#E4CDA6\",gradient:false,color2:\"#E4CDA6\",legend:\"#5B4527\",size:1,row:2},{label:\"Hire me\",url:\"/contact\",message:\"available for projects — say hi\",color:INK_KEY,gradient:false,color2:INK_KEY,legend:PAPER,size:1.75,row:2},{label:\"IN\",url:\"https://www.linkedin.com/\",message:\"linkedin — experience\",color:INK_KEY,gradient:false,color2:INK_KEY,legend:PAPER,size:1,row:2},{label:\"Call me\",url:\"tel:+490000000000\",message:\"call — +49 000 000 0000\",color:INK_KEY,gradient:false,color2:INK_KEY,legend:PAPER,size:1.75,row:3},{label:\"M●\",url:\"/about\",message:\"moavci — designer in berlin\",color:\"#FFD23F\",gradient:false,color2:\"#FFD23F\",legend:\"#191C15\",size:1,row:3},{label:\"BE\",url:\"https://www.behance.net/\",message:\"behance — full case studies\",color:\"#2E46FF\",gradient:false,color2:\"#2E46FF\",legend:\"#FFFFFF\",size:1,row:3}];const DEFAULT_NAV=[{label:\"Home\",url:\"/\"},{label:\"About\",url:\"/about\"},{label:\"Works\",url:\"/case-study\"},{label:\"AI Work\",url:\"/ai-work\"},{label:\"Playground\",url:\"/play-ground\"},{label:\"Contact\",url:\"/contact\"}];const DEFAULT_LINES=[\"available for projects\",\"brand \\xb7 ui/ux \\xb7 motion \\xb7 ai workflows\",\"based in berlin — working worldwide\"];const DEFAULT_BLIPS=[{label:\"Brand Identity\",url:\"\"},{label:\"UI/UX\",url:\"\"},{label:\"Motion\",url:\"\"},{label:\"AI Workflows\",url:\"\"},{label:\"Berlin\",url:\"\"},{label:\"Figma\",url:\"\"},{label:\"Framer\",url:\"\"},{label:\"After Effects\",url:\"\"}];const BIG_LINE=.92// line height of the big text, em\n;const FALLBACK_SANS='\"Inter\", \"Helvetica Neue\", Arial, sans-serif';const FALLBACK_MONO='\"JetBrains Mono\", ui-monospace, \"SF Mono\", Menlo, Consolas, monospace';// ————————————————————————————————————————————————————————————————\n// Helpers\n// ————————————————————————————————————————————————————————————————\nconst useIsoLayoutEffect=typeof window===\"undefined\"?React.useEffect:React.useLayoutEffect;const clamp=(v,lo,hi)=>v<lo?lo:v>hi?hi:v;const TAU=Math.PI*2;/** Seeded RNG — deterministic blip positions (same on server, canvas, site). */function mulberry32(a){return()=>{a|=0;a=a+1831565813|0;let t=Math.imul(a^a>>>15,1|a);t=t+Math.imul(t^t>>>7,61|t)^t;return((t^t>>>14)>>>0)/4294967296;};}function hash(s){let h=2166136261;for(let i=0;i<s.length;i++)h=Math.imul(h^s.charCodeAt(i),16777619);return h>>>0;}/** setTimeout that is always cleared on unmount. */function useTimers(){const ids=React.useRef([]);React.useEffect(()=>()=>ids.current.forEach(id=>clearTimeout(id)),[]);return React.useMemo(()=>({after(ms,fn){ids.current.push(window.setTimeout(fn,ms));},clear(){ids.current.forEach(id=>clearTimeout(id));ids.current=[];}}),[]);}function usePrefersReducedMotion(){const[reduced,setReduced]=React.useState(false);React.useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const mq=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const on=()=>setReduced(mq.matches);on();mq.addEventListener?.(\"change\",on);return()=>mq.removeEventListener?.(\"change\",on);},[]);return reduced;}/**\n * Low tier: phones, touch-first devices and small machines (≤ 4 cores or ≤ 4 GB).\n * It renders at ≤ 1.5× pixel ratio and 30 fps, with a smaller shadow map and\n * no clearcoat layer on the plastics.\n */function detectLowTier(quality,phone){if(quality!==\"auto\")return quality===\"low\";if(typeof window===\"undefined\")return false;const nav=navigator;const coarse=!!window.matchMedia&&window.matchMedia(\"(pointer: coarse)\").matches;const small=(nav.hardwareConcurrency||8)<=4||(nav.deviceMemory||8)<=4;return phone||coarse||small;}/** Soft mechanical click, synthesised (no files). AudioContext is created on the first press. */function useClickSound(enabled,volume){const ref=React.useRef(null);React.useEffect(()=>()=>{ref.current?.close().catch(()=>undefined);ref.current=null;},[]);return React.useCallback(()=>{if(!enabled||typeof window===\"undefined\")return;const AC=window.AudioContext||window.webkitAudioContext;if(!AC)return;if(!ref.current)ref.current=new AC;const ac=ref.current;if(ac.state===\"suspended\")ac.resume().catch(()=>undefined);const t=ac.currentTime;const v=clamp(volume,0,1);// tick: a short burst of filtered noise…\nconst len=Math.floor(ac.sampleRate*.03);const buf=ac.createBuffer(1,len,ac.sampleRate);const d=buf.getChannelData(0);for(let i=0;i<len;i++)d[i]=(Math.random()*2-1)*Math.pow(1-i/len,4);const src=ac.createBufferSource();src.buffer=buf;const hp=ac.createBiquadFilter();hp.type=\"highpass\";hp.frequency.value=1800;const g=ac.createGain();g.gain.value=v*.45;src.connect(hp).connect(g).connect(ac.destination);src.start(t);// …over a soft thump\nconst o=ac.createOscillator();o.frequency.setValueAtTime(150,t);o.frequency.exponentialRampToValueAtTime(60,t+.05);const og=ac.createGain();og.gain.setValueAtTime(v*.3,t);og.gain.exponentialRampToValueAtTime(1e-4,t+.07);o.connect(og).connect(ac.destination);o.start(t);o.stop(t+.08);},[enabled,volume]);}const normPath=p=>p.replace(/\\/+$/,\"\")||\"/\";/** Index of the nav item whose link matches the current page (longest prefix wins). */function matchActive(items){if(typeof window===\"undefined\")return-1;const here=normPath(window.location.pathname);let best=-1;let len=-1;items.forEach((it,i)=>{if(!it.url)return;try{const u=new URL(it.url,window.location.href);if(u.origin!==window.location.origin)return;const p=normPath(u.pathname);if(p===here&&len<Infinity){best=i;len=Infinity;}else if(p!==\"/\"&&here.startsWith(p+\"/\")&&p.length>len){best=i;len=p.length;}}catch{/* not a URL — ignore */}});return best;}const isExternal=url=>/^https?:\\/\\//i.test(url)&&!(typeof window!==\"undefined\"&&url.startsWith(window.location.origin));function parseRGB(c){const m=c.match(/rgba?\\(\\s*([\\d.]+)[,\\s]+([\\d.]+)[,\\s]+([\\d.]+)/i);return m?[+m[1],+m[2],+m[3]]:[255,210,63];}const rgba=(c,a)=>`rgba(${c[0]|0},${c[1]|0},${c[2]|0},${a})`;/** Did the sweep pass angle b while moving from p to a (radians, either direction)? */function crossed(p,a,b){const d=a-p;if(Math.abs(d)>=TAU)return true;if(d>=0)return((b-p)%TAU+TAU)%TAU<=d;return((p-b)%TAU+TAU)%TAU<=-d;}/** Seeded, spread-out blip positions (angle, radius as a fraction of the rings). */function layoutBlips(labels,minR){const pts=[];labels.forEach((label,i)=>{const rand=mulberry32(hash(label)^Math.imul(i+1,2654435761));let best=null;for(let t=0;t<40;t++){const a=rand()*TAU;const r=minR+rand()*(.9-minR);const x=Math.cos(a)*r;const y=Math.sin(a)*r;let d=Infinity;for(const q of pts)d=Math.min(d,Math.hypot(q.x-x,q.y-y));if(!best||d>best.d)best={a,r,x,y,d};if(d>.34)break;}if(best)pts.push(best);});return pts.map(({a,r})=>({a,r}));}// The M● mark from moavci.svg (viewBox 44 70 186 114)\nconst MARK_D=\"M49.45,76.85h30.99c.75,0,1.43.45,1.71,1.15l22.93,55.93h1.08l23.06-55.93c.29-.69.96-1.14,1.71-1.14h30.86c1.02,0,1.85.83,1.85,1.85v97.07c0,1.02-.83,1.85-1.85,1.85h-23.08c-1.02,0-1.85-.83-1.85-1.85v-56.44h-.68l-21.99,56.31c-.28.71-.96,1.180-1.72,1.18h-13.7c-.76,0-1.45-.47-1.72-1.18l-21.86-56.57h-.81v56.72c0,1.02-.83,1.85-1.85,1.85h-23.08c-1.02,0-1.85-.83-1.85-1.85v-97.07c0-1.02.83-1.85,1.85-1.85Z\";const MARK_ASPECT=114/186;let markPath=null;const isMarkLabel=s=>/^\\s*(m●|m•|\\{logo\\})\\s*$/i.test(s);/** A key's accessible name: short legends and the mark read as their message. */const keyName=k=>k.label.length<=2||isMarkLabel(k.label)?k.message||k.label:k.label;/** Draws the M● mark centred on (cx, cy), w wide. */function drawMark(ctx,cx,cy,w,color){if(!markPath&&typeof Path2D!==\"undefined\")markPath=new Path2D(MARK_D);const s=w/186;ctx.save();ctx.translate(cx-w/2,cy-w*MARK_ASPECT/2);ctx.scale(s,s);ctx.translate(-44,-70);ctx.fillStyle=color;if(markPath)ctx.fill(markPath);ctx.beginPath();ctx.arc(199.51,151.61,26,0,TAU);ctx.fill();ctx.restore();}/** The mark as DOM, for the flat fallback. */function MarkLogo({color,size}){return /*#__PURE__*/_jsxs(\"svg\",{width:size,height:size*MARK_ASPECT,viewBox:\"44 70 186 114\",\"aria-hidden\":true,style:{display:\"block\"},children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"199.51\",cy:\"151.61\",r:\"26\",fill:color}),/*#__PURE__*/_jsx(\"path\",{fill:color,d:MARK_D})]});}const DEV={pad:.07,gap:.05,top:.2,lcdH:.38,knobR:.2,slab:.2,bevel:.05,floor:-.29,raise:.13,tube:.15,glassRim:.05,glassCap:.2,ring:.95,maxWidth:16.6};const keyWidth=k=>clamp(Math.round((k.size||1)*4)/4,1,3);/**\n * Where everything sits on the slab. The slab's top edge is y = 0 and the\n * device extends downward (negative y); z = 0 is the slab's top surface.\n * Rows are right-aligned, so a shorter row starts further in (the reference's\n * stagger: 1.5 · 1 · 1 above 1 · 1.75 · 1 above 1.75 · 1 · 1).\n */function computeLayout(mode,availU,keys,angleDeg){const{pad}=DEV;const byRow=new Map;keys.forEach((k,i)=>{const r=clamp(Math.round(k.row||1),1,4);const list=byRow.get(r);if(list)list.push(i);else byRow.set(r,[i]);});const rowIds=[...byRow.keys()].sort((a,b)=>a-b);const rowW=rowIds.map(r=>byRow.get(r).reduce((s,i)=>s+keyWidth(keys[i]),0));const kw=Math.max(1,...rowW);const rows=Math.max(1,rowIds.length);const wellW=kw+pad*2;const wellH=rows+pad*2;const wellY0=-(DEV.top+DEV.lcdH+.09);const wellY1=wellY0-wellH;let width;let wellX0;let grille=null;let bezel;if(mode===\"wide\"){const m=.24;const mr=.17;const gap=.3;const bezY0=-.12;const bezY1=wellY1-.08;const bezW=(bezY0-bezY1)*1.03;const fixed=m+wellW+gap+bezW+mr;const gw=Math.min(availU,DEV.maxWidth)-fixed-gap;width=gw>=1?fixed+gap+gw:fixed;wellX0=-width/2+m;if(gw>=1){const gx0=wellX0+wellW+gap;const yTop=wellY0-.3;const yBot=wellY1+.1;const pitch=.205;const n=Math.max(1,Math.floor((yTop-yBot)/pitch)+1);const off=(yTop-yBot-(n-1)*pitch)/2;grille={x0:gx0,x1:gx0+gw,ys:Array.from({length:n},(_,i)=>yTop-off-i*pitch),h:.085};}bezel={x0:width/2-mr-bezW,x1:width/2-mr,y0:bezY0,y1:bezY1};}else{const m=.26;width=wellW+m*2;wellX0=-wellW/2;const bezW=wellW;const bezY0=wellY1-.26;bezel={x0:-bezW/2,x1:bezW/2,y0:bezY0,y1:bezY0-bezW*.97};}const wellX1=wellX0+wellW;const knob={x:wellX1-DEV.knobR-.02,y:-(DEV.top+DEV.lcdH/2),r:DEV.knobR};const lcd={x0:wellX0,x1:knob.x-DEV.knobR-.13,y:knob.y,h:DEV.lcdH};const cells=keys.map(()=>({x:0,y:0,w:1}));rowIds.forEach((r,ri)=>{let x=wellX0+pad+(kw-rowW[ri]);const y=wellY0-pad-.5-ri;for(const i of byRow.get(r)){const w=keyWidth(keys[i]);cells[i]={x:x+w/2,y,w};x+=w;}});const bw=bezel.x1-bezel.x0;const bh=bezel.y0-bezel.y1;const R=Math.min(bw,bh)/2-.36;const crt={x:(bezel.x0+bezel.x1)/2,y:(bezel.y0+bezel.y1)/2,R,tube:DEV.tube,glassR:R-DEV.tube-.04};const cropY=Math.min(wellY1,bezel.y1)-.3;const alpha=clamp(angleDeg,0,70)*(mode===\"phone\"?.65:1)*Math.PI/180;const tops=[[crt.y+R+DEV.tube,DEV.raise+DEV.tube*2]];const sig=[mode,width.toFixed(3),...cells.map(c=>`${c.x.toFixed(3)},${c.y.toFixed(3)},${c.w}`)].join(\"|\");return{mode,width,cropY,alpha,lcd,knob,well:{x0:wellX0,x1:wellX1,y0:wellY0,y1:wellY1},cells,grille,bezel,crt,tops,sig};}/** Height of the glass surface above the slab at distance rho from its centre. */function glassZ(dev,rho){const g=dev.crt.glassR;const c=DEV.glassCap;const Rs=(g*g+c*c)/(2*c);return DEV.glassRim+Math.sqrt(Math.max(0,Rs*Rs-rho*rho))-(Rs-c);}/** Blip / logo position on the glass, in device units. */function blipLocal(dev,a,r){const rr=r*DEV.ring*dev.crt.glassR;return[dev.crt.x+Math.cos(a)*rr,dev.crt.y-Math.sin(a)*rr,glassZ(dev,rr)+.005];}function fitCamera(dev,W,lensDeg,sky,maxU){const ca=Math.cos(dev.alpha);const sa=Math.sin(dev.alpha);const f=W/2/Math.tan(clamp(lensDeg,2,60)*Math.PI/360);const zc=-dev.cropY*sa;const span=dev.mode===\"phone\"?Math.min(W*.94,dev.width*maxU):W*.995;const D=f*dev.width/span+zc;const yc=dev.cropY*ca/2;const sy=(y,z)=>f*(y*ca+z*sa-yc)/(D-(-y*sa+z*ca));let top=sy(0,0);for(const[y,z]of dev.tops)top=Math.max(top,sy(y,z));const bottom=sy(dev.cropY,0);const H=Math.max(1,Math.round(top-bottom+sky));const c=(top+sky+bottom)/2;return{W,H,f,D,yc,offY:-c,topUp:c+H/2,edge:c+H/2-sy(0,0),scale:f/D};}/** Same projection as the 3D camera (without the cursor tilt): device units → stage px. */function projectFit(fit,alpha,x,y,z){const ca=Math.cos(alpha);const sa=Math.sin(alpha);const Y=y*ca+z*sa;const Z=-y*sa+z*ca;const k=fit.f/(fit.D-Z);return[fit.W/2+x*k,fit.topUp-(Y-fit.yc)*k];}const LEGEND_PX=512// texture px per key unit\n;function spacedWidth(ctx,s,sp){if(!sp)return ctx.measureText(s).width;let w=0;for(const ch of s)w+=ctx.measureText(ch).width;return w+sp*Math.max(0,[...s].length-1);}function fillSpaced(ctx,s,x,y,sp){if(!sp)return ctx.fillText(s,x,y);for(const ch of s){ctx.fillText(ch,x,y);x+=ctx.measureText(ch).width+sp;}}/** White legend on transparent, sized to the keycap's top face (wU × dU key units). */function paintLegend(c,label,wU,dU,font){const w=Math.max(16,Math.round(wU*LEGEND_PX));const h=Math.max(16,Math.round(dU*LEGEND_PX));if(c.width!==w)c.width=w;if(c.height!==h)c.height=h;const ctx=c.getContext(\"2d\");if(!ctx)return;ctx.clearRect(0,0,w,h);ctx.fillStyle=\"#fff\";if(isMarkLabel(label)){drawMark(ctx,w/2,h/2,Math.min(w*.62,h*.5/MARK_ASPECT),\"#fff\");return;}const text=label.trim().toUpperCase();let px=font.size*LEGEND_PX;const set=()=>{ctx.font=`${font.weight} ${px}px ${font.family}`;return spacedWidth(ctx,text,font.spacing*px);};let tw=set();const maxW=w*.84;if(tw>maxW){px*=maxW/tw;tw=set();}ctx.textBaseline=\"alphabetic\";const cap=ctx.measureText(\"H\").actualBoundingBoxAscent||px*.7;fillSpaced(ctx,text,(w-tw)/2,h/2+cap/2,font.spacing*px);}const lcdGlassCache=new WeakMap;/** The LCD's fixed layers — dot-matrix mask, recess shadow, glass sheen — painted once per size. */function lcdGlass(target,w,h){let c=lcdGlassCache.get(target);if(c&&c.width===w&&c.height===h)return c;c=c||document.createElement(\"canvas\");c.width=w;c.height=h;lcdGlassCache.set(target,c);const ctx=c.getContext(\"2d\");if(!ctx)return c;// dot-matrix mask\nconst step=Math.max(3,Math.round(h/30));const lp=w/2048// same coverage on the half-size low-tier canvas\n;ctx.fillStyle=\"rgba(0,0,0,0.42)\";for(let x=0;x<w;x+=step)ctx.fillRect(x,0,lp,h);for(let y=0;y<h;y+=step)ctx.fillRect(0,y,w,lp);// recess: shadow under the slab lip, darker round ends\nlet g=ctx.createLinearGradient(0,0,0,h);g.addColorStop(0,\"rgba(0,0,0,0.66)\");g.addColorStop(.3,\"rgba(0,0,0,0)\");g.addColorStop(.8,\"rgba(0,0,0,0)\");g.addColorStop(1,\"rgba(0,0,0,0.32)\");ctx.fillStyle=g;ctx.fillRect(0,0,w,h);const e=Math.min(.2,h/w*.8);g=ctx.createLinearGradient(0,0,w,0);g.addColorStop(0,\"rgba(0,0,0,0.5)\");g.addColorStop(e,\"rgba(0,0,0,0)\");g.addColorStop(1-e,\"rgba(0,0,0,0)\");g.addColorStop(1,\"rgba(0,0,0,0.5)\");ctx.fillStyle=g;ctx.fillRect(0,0,w,h);// glass: a soft reflection band across the upper half\ng=ctx.createLinearGradient(0,h*.16,0,h*.5);g.addColorStop(0,\"rgba(255,255,255,0)\");g.addColorStop(.5,\"rgba(255,255,255,0.075)\");g.addColorStop(.94,\"rgba(255,255,255,0.03)\");g.addColorStop(1,\"rgba(255,255,255,0)\");ctx.fillStyle=g;ctx.fillRect(0,h*.16,w,h*.34);return c;}/** The LCD strip: phosphor text with glow, cursor, dot-matrix mask, LED. */function paintLcd(ctx,w,h,text,cursorOn,glitchFrame,ledOn,o){ctx.setTransform(1,0,0,1,0,0);ctx.globalAlpha=1;ctx.shadowBlur=0;ctx.fillStyle=o.bg;ctx.fillRect(0,0,w,h);const fs=h*.46;ctx.font=`${o.weight} ${fs}px ${o.family}`;ctx.textBaseline=\"middle\";const padL=h*.62;const ledX=w-h*.62;const maxW=ledX-h*.55-padL;const line=\"› \"+text;const tw=ctx.measureText(line).width;const cw=fs*.62;const off=Math.min(0,maxW-(tw+cw+fs*.2));const sp=o.split*(h/46);// phosphor: a soft halo in the text colour under a hotter, paler core\nconst f=parseRGB(o.fg);const core=rgba([f[0]+(255-f[0])*.16,f[1]+(255-f[1])*.16,f[2]+(255-f[2])*.16],1);const draw=(color,dx,alpha,glow)=>{const x=padL+off+dx;const pass=(c,blur)=>{ctx.fillStyle=c;ctx.shadowColor=color;ctx.shadowBlur=blur;ctx.fillText(line,x,h/2+fs*.04);if(cursorOn){const cx=x+tw+fs*.12;if(o.cursor===\"block\")ctx.fillRect(cx,h/2-fs*.52,cw,fs*1.04);else if(o.cursor===\"bar\")ctx.fillRect(cx,h/2-fs*.56,fs*.11,fs*1.12);else ctx.fillRect(cx,h/2+fs*.4,cw,fs*.11);}};ctx.globalAlpha=alpha;pass(color,glow?fs*.5:0);if(glow)pass(core,0);ctx.globalAlpha=1;ctx.shadowBlur=0;};ctx.save();ctx.beginPath();ctx.rect(padL-6,0,maxW+12,h);ctx.clip();if(glitchFrame===1){draw(o.gA,-sp,.85,false);draw(o.gB,sp,.85,false);}draw(o.fg,0,1,true);if(glitchFrame===2){ctx.beginPath();ctx.rect(0,h*.42,w,h*.26);ctx.clip();ctx.fillStyle=o.bg;ctx.fillRect(0,0,w,h);draw(o.fg,sp*1.5,1,false);}ctx.restore();ctx.drawImage(lcdGlass(ctx.canvas,w,h),0,0);// LED\nconst lr=h*.1;ctx.globalAlpha=.25+.75*ledOn;ctx.fillStyle=o.led;ctx.shadowColor=o.led;ctx.shadowBlur=h*.35;ctx.beginPath();ctx.arc(ledX,h/2,lr,0,TAU);ctx.fill();ctx.shadowBlur=0;ctx.globalAlpha=1;}// ————————————————————————————————————————————————————————————————\n// CRT — everything on the glass is drawn by a shader, so it is sharp at any\n// size and nothing is re-uploaded per frame; only text and logos come from a\n// texture that is painted once. Four modes share the tube: radar, scope,\n// Lissajous and a vector trace of the M● mark.\n// ————————————————————————————————————————————————————————————————\nconst CRT_MODES=[\"radar\",\"scope\",\"lissajous\",\"mark\"];const CRT_NAMES={radar:\"radar\",scope:\"oscilloscope\",lissajous:\"lissajous\",mark:\"logo trace\"};const CRT_CYCLE=[0,1,3,2]// radar → scope → mark → lissajous\n;const LISSAJOUS=[[3,2],[5,4],[3,4],[5,6],[1,2]];/** The M● outline as a closed polygon (moavci.svg viewBox units) plus its dot. */const MARK_POLY=[[47.6,76.85],[81.5,76.85],[105.6,133.93],[129.8,76.85],[163.64,76.85],[163.64,177.63],[136.86,177.63],[136.86,119.34],[113.3,176.8],[97.9,176.8],[74.4,119.08],[74.4,177.65],[47.6,177.65],[47.6,76.85]];/** The mark in radar units (centred, `width` wide), with cumulative trace fractions. */function markGeometry(width){const s=width/186;const pts=MARK_POLY.map(([x,y])=>[(x-137)*s,-(y-127)*s]);const dot=[(199.51-137)*s,-(151.61-127)*s,26*s];const lens=pts.slice(1).map((p,i)=>Math.hypot(p[0]-pts[i][0],p[1]-pts[i][1]));const poly=lens.reduce((a,b)=>a+b,0);const total=poly+TAU*dot[2];const cum=[0];lens.forEach(l=>cum.push(cum[cum.length-1]+l/total));return{pts,dot,cum};}const MARK=markGeometry(1.25);/** Where the beam is while tracing the mark (progress 0–1). */function markHead(p){const{pts,dot,cum}=MARK;if(p<cum[13]){for(let i=0;i<13;i++){if(p<=cum[i+1]){const f=(p-cum[i])/Math.max(1e-6,cum[i+1]-cum[i]);return[pts[i][0]+(pts[i+1][0]-pts[i][0])*f,pts[i][1]+(pts[i+1][1]-pts[i][1])*f];}}}const a=(p-cum[13])/Math.max(1e-6,1-cum[13])*TAU;return[dot[0]+Math.sin(a)*dot[2],dot[1]+Math.cos(a)*dot[2]];}/**\n * Text and logos for the radar, packed in channels so the shader can colour\n * them: red = bearing / range labels, green = logo, blue = logo glow.\n */function paintCrtLabels(c,o){const S=c.width;const ctx=c.getContext(\"2d\");if(!ctx)return;const k=S/420;ctx.setTransform(1,0,0,1,0,0);ctx.globalCompositeOperation=\"source-over\";ctx.globalAlpha=1;ctx.shadowBlur=0;ctx.fillStyle=\"#000\";ctx.fillRect(0,0,S,S);ctx.globalCompositeOperation=\"lighter\";const cx=S/2;const cy=S/2;const R=S/2*DEV.ring;const fontPx=Math.max(9,Math.round(R*.058));ctx.font=`500 ${fontPx}px ui-monospace, Menlo, Consolas, monospace`;ctx.textBaseline=\"middle\";ctx.fillStyle=\"#ff0000\";const n=Math.max(1,Math.round(o.rings));ctx.textAlign=\"left\";for(let i=1;i<n;i++){const r=R*i/n;ctx.fillText(String(i*10).padStart(2,\"0\"),cx+r*.71+4*k,cy-r*.71-3*k);}ctx.textAlign=\"center\";for(const d of[0,90,180,270]){const a=(d-90)*Math.PI/180;const rr=R-R*.07-fontPx*.95;ctx.fillText(String(d).padStart(3,\"0\"),cx+Math.cos(a)*rr,cy+Math.sin(a)*rr);}// logos as masks: crisp in green, blurred glow in blue\nconst logoPx=o.logoSize/100*R*2;const mask=(img,w,color)=>{const h=w*img.naturalHeight/img.naturalWidth;const m=document.createElement(\"canvas\");m.width=Math.max(1,Math.ceil(w));m.height=Math.max(1,Math.ceil(h));const mc=m.getContext(\"2d\");if(mc){mc.drawImage(img,0,0,w,h);mc.globalCompositeOperation=\"source-in\";mc.fillStyle=color;mc.fillRect(0,0,w,h);}return m;};const logo=(img,x,y,w,alpha)=>{const ok=img&&img.complete&&img.naturalWidth>0;ctx.globalAlpha=alpha;for(const[color,blur]of[[\"#0000ff\",16*k],[\"#00ff00\",0]]){ctx.shadowColor=color;ctx.shadowBlur=blur;if(ok){const m=mask(img,w,color);ctx.drawImage(m,x-m.width/2,y-m.height/2);}else drawMark(ctx,x,y,w,color);}ctx.shadowBlur=0;ctx.globalAlpha=1;};if(o.logoMode===\"blips\"){o.logoPos.forEach((b,i)=>logo(o.logos.length?o.logos[i%o.logos.length]:null,cx+Math.cos(b.a)*b.r*R,cy+Math.sin(b.a)*b.r*R,logoPx*.55,.65));}else logo(o.logos.length?o.logos[o.logoIdx%o.logos.length]:null,cx,cy,logoPx,1);}const CRT_PARS=/* glsl */`\nuniform sampler2D crtLabels;\nuniform float crtTime;\nuniform float crtAngle;\nuniform float crtMode;\nuniform vec3 crtSq;\nuniform float crtGlitch;\nuniform vec3 crtBg;\nuniform vec3 crtLine;\nuniform vec3 crtSweep;\nuniform vec3 crtBlip;\nuniform vec3 crtGA;\nuniform vec3 crtGB;\nuniform vec4 crtBlips[28];\nuniform int crtBlipCount;\nuniform float crtRings;\nuniform vec4 crtScope;\nuniform vec4 crtLiss;\nuniform float crtTrace;\nuniform vec2 crtHead;\nuniform vec2 crtMark[14];\nuniform float crtMarkCum[14];\nuniform vec3 crtMarkDot;\nuniform float crtLogoGlitch;\nuniform float crtSplit;\n\nfloat crtAA(float d, float w, float px) {\n    return 1.0 - smoothstep(w, w + px * 1.5, d);\n}\n\nfloat crtSeg(vec2 p, vec2 a, vec2 b, out float h) {\n    vec2 pa = p - a;\n    vec2 ba = b - a;\n    h = clamp(dot(pa, ba) / max(dot(ba, ba), 1e-6), 0.0, 1.0);\n    return length(pa - ba * h);\n}\n\nfloat crtBeamD(vec2 q, float ang) {\n    vec2 dir = vec2(cos(ang), -sin(ang));\n    return dot(q, dir) > 0.0 ? abs(q.x * dir.y - q.y * dir.x) : length(q);\n}\n\nfloat crtWave(float x) {\n    float w = crtScope.x * 3.14159265;\n    return crtScope.y * (sin(w * x + crtScope.z) + 0.28 * crtScope.w * sin(w * 2.7 * x - crtScope.z * 1.3));\n}\n\nfloat crtWaveD(float x) {\n    float w = crtScope.x * 3.14159265;\n    return crtScope.y * w * (cos(w * x + crtScope.z) + 0.28 * crtScope.w * 2.7 * cos(w * 2.7 * x - crtScope.z * 1.3));\n}\n\nvec3 crtShade(vec2 uv) {\n    const float TAU = 6.28318530718;\n    vec2 p0 = (uv - 0.5) * (2.0 / 0.95);\n    float px0 = max(length(fwidth(p0)), 1e-4);\n    // glitch: a few horizontal slices jump sideways\n    float slice = fract(sin(floor(uv.y * 26.0) * 91.7 + floor(crtTime * 24.0) * 13.13) * 43758.5453);\n    p0.x += step(1.0 - 0.25 * crtGlitch, slice) * crtGlitch * 0.07;\n    // power-on / mode switch squeeze the picture into a line\n    vec2 q = vec2(p0.x / max(crtSq.x, 0.001), p0.y / max(crtSq.y, 0.001));\n    float px = px0 / max(min(crtSq.x, crtSq.y), 0.03);\n    float r = length(q);\n    float inside = 1.0 - smoothstep(1.0, 1.0 + px, r);\n    vec3 c = vec3(0.0);\n    vec2 g = abs(fract(q * 6.0 + 0.5) - 0.5) / 6.0;\n    float grid = crtAA(min(g.x, g.y), 0.0, px);\n    if (crtMode < 0.5) {\n        // —— radar, kept quiet: rings, one cross, one sweep arm with a short tail, the mark ——\n        float n = max(1.0, crtRings);\n        float dR = abs(fract(r * n + 0.5) - 0.5) / n;\n        c += crtLine * 0.22 * crtAA(dR, 0.0, px) * step(0.5 / n, r) * step(r, 1.0 - 0.5 / n);\n        c += crtLine * 0.5 * crtAA(abs(r - 1.0), px * 0.35, px);\n        c += crtLine * 0.2 * crtAA(min(abs(q.x), abs(q.y)), 0.0, px) * inside;\n        float behind = mod(crtAngle - atan(-q.y, q.x), TAU);\n        c += crtSweep * 0.32 * exp(-behind * 3.2) * inside;\n        float bd = crtBeamD(q, crtAngle);\n        c += crtSweep * (crtAA(bd, px * 0.45, px) * 0.95 + exp(-bd * 40.0) * 0.18) * inside;\n        for (int i = 0; i < 28; i++) {\n            if (i >= crtBlipCount) break;\n            vec4 b = crtBlips[i];\n            float d = length(q - b.xy);\n            c += crtBlip * crtAA(d, 0.009, px) * max(b.z, 0.12);\n        }\n        vec2 lq = q * 0.475 + 0.5;\n        vec3 L = texture2D(crtLabels, lq).rgb;\n        c += crtSweep * (L.g * 0.95 + L.b * 0.35);\n    } else {\n        // —— scope graticule ——\n        c += crtLine * 0.07 * grid * inside;\n        c += crtLine * 0.2 * crtAA(min(abs(q.x), abs(q.y)), 0.0, px) * inside;\n        vec2 t30 = abs(fract(q * 30.0 + 0.5) - 0.5) / 30.0;\n        c += crtLine * 0.28 * (crtAA(t30.x, 0.0, px) * step(abs(q.y), 0.02) + crtAA(t30.y, 0.0, px) * step(abs(q.x), 0.02)) * inside;\n        float tr = 0.0;\n        if (crtMode < 1.5) {\n            // oscilloscope: a moving beam with phosphor persistence\n            float dw = crtWaveD(q.x);\n            float d = abs(q.y - crtWave(q.x)) / sqrt(1.0 + dw * dw);\n            float head = fract(crtTime * 0.42) * 2.6 - 1.3;\n            float persist = 0.3 + 0.7 * exp(-mod(head - q.x, 2.6) * 1.6);\n            tr = (crtAA(d, px * 0.45, px) + exp(-d * 42.0) * 0.38 + exp(-d * 11.0) * 0.1) * persist;\n            float hd = length(q - vec2(head, crtWave(head)));\n            tr += exp(-hd * hd * 2600.0) * 1.4 * step(abs(head), 1.0);\n        } else if (crtMode < 2.5) {\n            // Lissajous figure\n            float best = 1e5;\n            float bt = 0.0;\n            vec2 prev = vec2(sin(crtLiss.z), 0.0) * 0.8;\n            for (int i = 1; i <= 64; i++) {\n                float tt = float(i) / 64.0 * TAU;\n                vec2 cur = vec2(sin(crtLiss.x * tt + crtLiss.z), sin(crtLiss.y * tt)) * 0.8;\n                float h;\n                float d = crtSeg(q, prev, cur, h);\n                if (d < best) {\n                    best = d;\n                    bt = (float(i) - 1.0 + h) / 64.0 * TAU;\n                }\n                prev = cur;\n            }\n            float persist = 0.22 + 0.78 * exp(-mod(crtLiss.w - bt, TAU) * 0.55);\n            tr = (crtAA(best, px * 0.45, px) + exp(-best * 42.0) * 0.36 + exp(-best * 11.0) * 0.08) * persist;\n            vec2 hp = vec2(sin(crtLiss.x * crtLiss.w + crtLiss.z), sin(crtLiss.y * crtLiss.w)) * 0.8;\n            float hd = length(q - hp);\n            tr += exp(-hd * hd * 2600.0) * 1.3;\n        } else {\n            // the M● traced on like a vector display\n            float d = 1e5;\n            for (int i = 0; i < 13; i++) {\n                float s0 = crtMarkCum[i];\n                float s1 = crtMarkCum[i + 1];\n                float vis = clamp((crtTrace - s0) / max(s1 - s0, 1e-4), 0.0, 1.0);\n                if (vis <= 0.0) break;\n                float h;\n                d = min(d, crtSeg(q, crtMark[i], mix(crtMark[i], crtMark[i + 1], vis), h));\n            }\n            float cv = clamp((crtTrace - crtMarkCum[13]) / max(1.0 - crtMarkCum[13], 1e-4), 0.0, 1.0);\n            if (cv > 0.0) {\n                vec2 cq = q - crtMarkDot.xy;\n                if (mod(atan(cq.x, cq.y) + TAU, TAU) <= cv * TAU) d = min(d, abs(length(cq) - crtMarkDot.z));\n            }\n            tr = crtAA(d, px * 0.55, px) + exp(-d * 40.0) * 0.36 + exp(-d * 10.0) * 0.09;\n            float hd = length(q - crtHead);\n            tr += exp(-hd * hd * 2600.0) * 1.4 * step(crtTrace, 0.999);\n        }\n        c += crtSweep * tr * inside;\n    }\n    vec3 col = crtBg * smoothstep(0.0, 0.5, crtSq.y) * min(1.0, crtSq.x * 3.0) + c;\n    col += crtSweep * crtSq.z * exp(-abs(p0.y) / (0.005 + crtSq.y * 0.35)) * (1.0 - smoothstep(crtSq.x, crtSq.x + 0.05, abs(p0.x)));\n    col *= 1.0 - 0.55 * smoothstep(0.5, 1.06, length(p0));\n    col *= mix(1.0, 0.9 + 0.1 * sin(p0.y * 340.0), clamp(1.0 - px0 * 60.0, 0.0, 1.0));\n    return col;\n}\n`;// Tuned calm: a soft, slow-fading trail, a spark every second or so, slow ripples (when on)\nconst NO_POINTER={x:0,y:0,on:false};const SKY={levels:8,decay:.9,brush:4,trail:.5,sparks:1.2,rippleSpeed:300,rippleLife:2.2,rippleAmp:.4,aura:.34,shimmer:.9,trace:.55};/** Smooth 2D value noise in [0, 1]. */function vnoise(x,y){const xi=Math.floor(x);const yi=Math.floor(y);const u=x-xi;const v=y-yi;const h=(a,b)=>{let n=Math.imul(a,374761393)+Math.imul(b,668265263);n=Math.imul(n^n>>>13,1274126177);return((n^n>>>16)>>>0)/4294967296;};const su=u*u*(3-2*u);const sv=v*v*(3-2*v);const a=h(xi,yi)+(h(xi+1,yi)-h(xi,yi))*su;const b=h(xi,yi+1)+(h(xi+1,yi+1)-h(xi,yi+1))*su;return a+(b-a)*sv;}function makeSky(canvas,W,H,dpr,cell,horizon,base){const ctx=canvas.getContext(\"2d\");if(!ctx)return null;const cols=Math.max(1,Math.ceil(W/cell));const rows=Math.max(1,Math.ceil(H/cell));const n=cols*rows;const aura=new Float32Array(n);for(let r=0;r<rows;r++){for(let c=0;c<cols;c++){const x=(c+.5)*cell;const dy=horizon-(r+.5)*cell;const sx=(x-W/2)/(W*.62);aura[r*cols+c]=dy<0?0:SKY.aura*Math.exp(-dy/(H*.14))*Math.max(0,1-sx*sx);}}// the dim dot grid is one pattern fill\nlet pattern=null;const tile=document.createElement(\"canvas\");tile.width=tile.height=Math.max(1,Math.round(cell*dpr));const tc=tile.getContext(\"2d\");if(tc){const s=Math.max(1,Math.round((cell-Math.max(1,Math.round(cell*.22)))*dpr));tc.fillStyle=base;tc.fillRect(0,0,s,s);pattern=ctx.createPattern(tile,\"repeat\");if(pattern&&typeof DOMMatrix!==\"undefined\")pattern.setTransform(new DOMMatrix().scale(1/dpr));}return{ctx,W,H,dpr,cell,cols,rows,horizon,heat:new Float32Array(n),hue:new Uint8Array(n),aura,v:new Float32Array(n),bucket:new Uint8Array(n),order:new Int32Array(n),counts:new Int32Array(SKY.levels*3+1),ripples:[],base:pattern};}/** Trails, sparks and ripple bookkeeping. */function stepSky(s,t,dt,ptr,ambient,speed){const k=Math.exp(-dt/SKY.decay);const{heat,hue,cols,rows,cell}=s;for(let i=0;i<heat.length;i++){heat[i]*=k;if(heat[i]<.03)hue[i]=0;}if(ptr.on&&ptr.y<s.H+cell*2){const R=SKY.brush;const c0=Math.floor(ptr.x/cell);const r0=Math.floor(ptr.y/cell);for(let r=Math.max(0,r0-6);r<=Math.min(rows-1,r0+6);r++){for(let c=Math.max(0,c0-6);c<=Math.min(cols-1,c0+6);c++){const d=Math.hypot(c+.5-ptr.x/cell,r+.5-ptr.y/cell);if(d<R){const i=r*cols+c;heat[i]=Math.max(heat[i],Math.pow(1-d/R,1.6)*SKY.trail);}}}}if(ambient&&Math.random()<dt*SKY.sparks*speed){const i=Math.floor(Math.random()*cols*Math.floor(rows*.8));heat[i]=.35+Math.random()*.3;hue[i]=0;}s.ripples=s.ripples.filter(rp=>t-rp.t0<SKY.rippleLife);}/** Paints one backdrop frame. `speed` scales every ambient motion (1 = the original lively pace). */function paintSky(s,t,mode,strength,speed,glow,gA,gB,base,ptr,ambient){const{ctx,W,H,dpr,cell,cols,rows,v,heat,hue,aura}=s;const ta=ambient?t*speed:0;ctx.setTransform(dpr,0,0,dpr,0,0);ctx.clearRect(0,0,W,H);const st=clamp(strength,0,2);if(mode===\"pixels\"){if(s.base){ctx.globalAlpha=Math.min(1,st);ctx.fillStyle=s.base;ctx.fillRect(0,0,W,H);ctx.globalAlpha=1;// the dot grid fades out toward the top of the sky\nconst fade=ctx.createLinearGradient(0,0,0,s.horizon);fade.addColorStop(0,\"rgba(0,0,0,0.85)\");fade.addColorStop(1,\"rgba(0,0,0,0)\");ctx.globalCompositeOperation=\"destination-out\";ctx.fillStyle=fade;ctx.fillRect(0,0,W,H);ctx.globalCompositeOperation=\"source-over\";}for(let r=0;r<rows;r++){for(let c=0;c<cols;c++){const i=r*cols+c;const a=aura[i];// heat shimmer: noise blobs drifting upward out of the glow\nv[i]=(a>.01?a*(.12+SKY.shimmer*Math.max(0,vnoise(c*.11,r*.19+ta*.55)-.42)):0)+heat[i];}}// a signal trace runs across the sky like an oscilloscope beam\nconst yc=H*.46;const A=H*.17*(.7+.3*Math.sin(ta*.21));const period=W*1.5;const head=ta*W*.16%period-W*.25;for(let c=0;c<cols;c++){const x=(c+.5)*cell;const age=head-x;const b=age<0?.08:.08+.92*Math.exp(-age/(W*.35));const y=(yc+A*Math.sin(x*.0062+ta*.8)*Math.cos(x*.0021-ta*.37))/cell-.5;const r0=Math.floor(y);const f=y-r0;if(r0>=0&&r0<rows)v[r0*cols+c]+=(1-f)*b*SKY.trace;if(r0+1>=0&&r0+1<rows)v[(r0+1)*cols+c]+=f*b*SKY.trace;}for(const rp of s.ripples){const age=t-rp.t0;const rad=age*SKY.rippleSpeed;const amp=SKY.rippleAmp*Math.pow(1-age/SKY.rippleLife,2);const band=cell*1.3;const cA=Math.max(0,Math.floor((rp.x-rad-band)/cell));const cB=Math.min(cols-1,Math.ceil((rp.x+rad+band)/cell));const rA=Math.max(0,Math.floor((rp.y-rad-band)/cell));const rB=Math.min(rows-1,Math.ceil((rp.y+rad+band)/cell));for(let r=rA;r<=rB;r++){for(let c=cA;c<=cB;c++){const d=Math.abs(Math.hypot((c+.5)*cell-rp.x,(r+.5)*cell-rp.y)-rad);if(d<band){const i=r*cols+c;const val=amp*(1-d/band);v[i]+=val;if(rp.hue&&val>.35){hue[i]=rp.hue;heat[i]=Math.max(heat[i],val*.28);}}}}}// bucket by colour × brightness, then one fill per bucket\nconst L=SKY.levels;const counts=s.counts;counts.fill(0);const skip=L*3;for(let i=0;i<v.length;i++){const val=v[i]*st;if(val<.05){s.bucket[i]=skip;continue;}const b=hue[i]*L+Math.min(L-1,Math.floor(val*L));s.bucket[i]=b;counts[b]++;}const start=new Int32Array(skip+1);for(let b=1;b<=skip;b++)start[b]=start[b-1]+counts[b-1];const fill=start.slice();for(let i=0;i<v.length;i++)if(s.bucket[i]<skip)s.order[fill[s.bucket[i]]++]=i;const size=cell-Math.max(1,Math.round(cell*.22));const cols3=[glow,gA,gB];for(let b=0;b<skip;b++){if(!counts[b])continue;const lvl=b%L;ctx.beginPath();for(let k=start[b];k<start[b]+counts[b];k++){const i=s.order[k];ctx.rect(i%cols*cell,Math.floor(i/cols)*cell,size,size);}ctx.fillStyle=rgba(cols3[Math.floor(b/L)],.12+.88*Math.pow((lvl+1)/L,1.3));ctx.fill();}}else if(mode===\"lines\"){const gap=Math.max(10,Math.round(cell*1.8));const n=Math.floor((H-gap*.5)/gap);const step=10;const sig=Math.round(n*.5);const head=ta*W*.16%(W*1.5)-W*.25;for(let i=0;i<n;i++){const y0=(i+.6)*gap;const depth=y0/H;const amp=gap*(.25+1.9*depth*depth);ctx.beginPath();for(let x=0;x<=W+step;x+=step){let y=y0+amp*.4*(Math.sin(x*.0105+ta*.62+i*.55)+Math.sin(x*.0043-ta*.41+i*1.9));if(ptr.on){const dx=x-ptr.x;const dy=y0-ptr.y;y-=gap*1.1*Math.exp(-(dx*dx)/(2*95*95)-dy*dy/(2*70*70));}for(const rp of s.ripples){const age=t-rp.t0;const d=Math.hypot(x-rp.x,y0-rp.y)-age*SKY.rippleSpeed;y-=gap*.8*Math.pow(1-age/SKY.rippleLife,2)*Math.exp(-(d*d)/1600);}if(x===0)ctx.moveTo(x,y);else ctx.lineTo(x,y);}ctx.lineWidth=1;ctx.strokeStyle=rgba(base,Math.min(1,(.08+.18*depth)*st));ctx.stroke();if(ptr.on&&Math.abs(ptr.y-y0)<220){const g=ctx.createRadialGradient(ptr.x,ptr.y,0,ptr.x,ptr.y,220);g.addColorStop(0,rgba(glow,Math.min(1,.5*st)));g.addColorStop(1,rgba(glow,0));ctx.strokeStyle=g;ctx.stroke();}for(const rp of s.ripples){const age=t-rp.t0;const rad=age*SKY.rippleSpeed;const g=ctx.createRadialGradient(rp.x,rp.y,Math.max(0,rad-40),rp.x,rp.y,rad+40);const col=rp.hue===1?gA:rp.hue===2?gB:glow;const a=Math.min(1,SKY.rippleAmp*Math.pow(1-age/SKY.rippleLife,2)*st);g.addColorStop(0,rgba(col,0));g.addColorStop(.5,rgba(col,a));g.addColorStop(1,rgba(col,0));ctx.strokeStyle=g;ctx.stroke();}if(i===sig&&ambient){const g=ctx.createLinearGradient(head-W*.5,0,head,0);g.addColorStop(0,rgba(glow,0));g.addColorStop(1,rgba(glow,Math.min(1,.6*st)));ctx.strokeStyle=g;ctx.lineWidth=1.5;ctx.stroke();}}}}const SMALL_TYPE=10// below this x-height (in cells) glyphs are snapped one by one\n;const FIT_MIN={x:7,cap:9}// fitting never shrinks the x-height / cap height below this many cells; longer words break\n;const canTrack=typeof CanvasRenderingContext2D!==\"undefined\"&&\"letterSpacing\"in CanvasRenderingContext2D.prototype;const SegCtor=typeof Intl!==\"undefined\"?Intl.Segmenter:undefined;const segmenter=SegCtor?new SegCtor(undefined,{granularity:\"grapheme\"}):null;/** User-perceived characters (an emoji, a letter with its marks) — never split. */const graphemes=s=>segmenter?Array.from(segmenter.segment(s),g=>g.segment):Array.from(s);/** Right-to-left, joining or shaped scripts and combining marks: drawn as a whole line, never glyph by glyph. */const complex=s=>RegExp(\"[֐-ࣿיִ-﷿ﹰ-\\uFEFFऀ-෿฀-࿿က-႟ក-៿‌‍]|\\\\p{M}\",\"u\").test(s);function setFont(ctx,weight,px,family,tracking){ctx.font=`${weight} ${px}px ${family}`;if(canTrack)ctx.letterSpacing=`${tracking}px`;}/** Line width with tracking (kerning kept where the browser can track canvas text). */function lineWidth(ctx,s,tracking){if(canTrack||!tracking||complex(s))return Math.max(0,ctx.measureText(s).width-(canTrack?tracking:0));const gs=graphemes(s);let w=0;for(const g of gs)w+=ctx.measureText(g).width;return w+tracking*Math.max(0,gs.length-1);}function drawLine(ctx,s,x,y,tracking){if(canTrack||!tracking||complex(s))return ctx.fillText(s,x,y);for(const g of graphemes(s)){ctx.fillText(g,x,y);x+=ctx.measureText(g).width+tracking;}}let inkCtx=null;/** Rasterises one glyph to find its ink row by row (a slanted or overhanging glyph is not its bounding box). */function glyphInk(ctx,chr,pitch){const m=ctx.measureText(chr);const g={m,l:new Map,r:new Map};const x0=Math.ceil(m.actualBoundingBoxLeft)+1;const b=Math.ceil(m.actualBoundingBoxAscent)+1;const w=x0+Math.ceil(m.actualBoundingBoxRight)+1;const h=b+Math.ceil(m.actualBoundingBoxDescent)+1;if(w<=2||h<=2)return g;if(!inkCtx)inkCtx=document.createElement(\"canvas\").getContext(\"2d\",{willReadFrequently:true});const c=inkCtx;if(!c)return g;if(c.canvas.width<w||c.canvas.height<h){c.canvas.width=Math.max(c.canvas.width,w);c.canvas.height=Math.max(c.canvas.height,h);}c.clearRect(0,0,w,h);c.font=ctx.font;c.fillStyle=\"#000\";c.fillText(chr,x0,b);const d=c.getImageData(0,0,w,h).data;for(let y=0;y<h;y++){const k=Math.floor((b-y-.5)/pitch);for(let x=0;x<w;x++){if(d[(y*w+x)*4+3]<96)continue;const lo=g.l.get(k);const hi=g.r.get(k);if(lo===undefined||x-x0<lo)g.l.set(k,x-x0);if(hi===undefined||x+1-x0>hi)g.r.set(k,x+1-x0);}}return g;}/**\n * Small type, glyph by glyph in whole cells: each glyph's left ink edge on a\n * cell edge, pushed right until every row keeps one dark column after the\n * ink to its left (the rows above and below too, so nothing touches on a\n * diagonal), and the pen carries the shift on — so stems stay one clean\n * column and letters never fuse.\n */function glyphRun(ctx,s,tracking,pitch,cache){if(canTrack)ctx.letterSpacing=\"0px\";const chars=graphemes(s);const xs=[];const end=new Map// per cell row: the last lit column so far\n;const endAt=k=>end.get(k)??-Infinity;let pen=0;for(const chr of chars){let g=cache.get(chr);if(!g)cache.set(chr,g=glyphInk(ctx,chr,pitch));const abl=g.m.actualBoundingBoxLeft;let x=pen;if(g.l.size){let n=Math.round((pen-abl)/pitch)// ink edge on the nearest cell edge\n;// a row's first lit column, floor((x + l) / pitch + 0.2), stays ≥ two past the last lit one beside it\ng.l.forEach((l,k)=>{const e=Math.max(endAt(k-1),endAt(k),endAt(k+1));if(e>-Infinity)n=Math.max(n,Math.ceil(((e+1.8)*pitch-l-abl)/pitch-1e-6));});x=n*pitch+abl;g.r.forEach((r,k)=>end.set(k,Math.max(endAt(k),Math.ceil((x+r)/pitch-.2)-1)))// a column under 20 % ink stays dark\n;}xs.push(x);pen=x+g.m.width+tracking;}if(canTrack)ctx.letterSpacing=`${tracking}px`;return{chars,xs,w:Math.max(0,pen-tracking)};}/**\n * Wraps the text to maxW. The size is hinted to the grid: the x-height (cap\n * height when the text is mostly capitals) becomes a whole number of cells\n * and the line height a whole number of pitches, so flat tops and baselines\n * fall on cell edges and only curves and diagonals need the smaller edge\n * pixels. With fit, the size steps down a cell at a time until the widest\n * word fits, but not below a legible floor; a word still too wide breaks.\n * Tracking is in em, so it follows the hinted size.\n */function layoutText(ctx,text,o){const paras=text.replace(/\\r/g,\"\").replace(/\\s+$/,\"\").split(\"\\n\");const{family,weight,pitch,maxW}=o;let tracking=o.trackEm*o.size;setFont(ctx,weight,o.size,family,tracking);const lower=(text.match(/[a-z]/g)||[]).length;const upper=(text.match(/[A-Z0-9]/g)||[]).length;const ref=lower>=upper?\"x\":\"H\";const refH=ctx.measureText(ref).actualBoundingBoxAscent||o.size*(ref===\"x\"?.55:.72);const req=Math.max(2,Math.round(refH/pitch))// the size asked for, in cells\n;let cells=req;let cache=new Map;const use=c=>{const px=o.size*c*pitch/refH;tracking=o.trackEm*px;setFont(ctx,weight,px,family,tracking);cache=new Map;cells=c;};const measure=s=>cells<SMALL_TYPE&&!complex(s)?glyphRun(ctx,s,tracking,pitch,cache).w:lineWidth(ctx,s,tracking);if(o.fit){const words=paras.join(\" \").split(/\\s+/).filter(Boolean);const widest=c=>{use(c);let m=0;for(const w of words)m=Math.max(m,measure(w));return m;};const lo=Math.max(2,Math.min(ref===\"x\"?FIT_MIN.x:FIT_MIN.cap,Math.floor(refH/pitch)));const w=widest(req);if(w>maxW){let c=clamp(Math.floor(req*maxW/w),lo,req-1);while(c>lo&&widest(c)>maxW)c--;while(c+1<req&&widest(c+1)<=maxW)c++;cells=c;}}use(cells);const px=o.size*cells*pitch/refH;const lines=[];for(const p of paras){let cur=\"\";for(const w of p.split(/ +/)){// fit: a word too wide even alone breaks between characters; a plain word gets a hyphen at each break\nif(o.fit&&measure(w)>maxW){if(cur)lines.push(cur);cur=\"\";const hy=!complex(w)&&RegExp(\"^[\\\\p{L}\\\\p{M}]+$\",\"u\").test(w)?\"-\":\"\";const gs=graphemes(w);gs.forEach((g,i)=>{const tail=i<gs.length-1?hy:\"\";if(cur&&measure(cur+g+tail)>maxW){lines.push(cur+hy);cur=g;}else cur+=g;});continue;}const next=cur?`${cur} ${w}`:w;if(cur&&measure(next)>maxW){lines.push(cur);cur=w;}else cur=next;}lines.push(cur);}const runs=lines.map(l=>cells<SMALL_TYPE&&!complex(l)?glyphRun(ctx,l,tracking,pitch,cache):null);const widths=lines.map((l,i)=>runs[i]?.w??lineWidth(ctx,l,tracking));const m=ctx.measureText(\"Hgjpqy\");const ascent=ctx.measureText(\"H\").actualBoundingBoxAscent||px*.72;const descent=m.actualBoundingBoxDescent||px*.2;const lineH=Math.max(pitch,Math.round(px*o.leading/pitch)*pitch);const key=[family,weight,px,tracking,o.leading,pitch,...lines,...widths.map(w=>w.toFixed(2))].join(\"|\");return{lines,widths,runs,family,weight,tracking,px,cells,lineH,ascent,descent,blockH:lineH*lines.length,key};}/** Whether a neighbour (the 8 around, or the 4 beside) has a coverage in [lo, hi); off the grid counts as empty. */function touches(cov,cols,rows,r,k,diag,lo,hi){for(let dr=-1;dr<=1;dr++){for(let dk=-1;dk<=1;dk++){if(!(dr||dk)||!diag&&dr&&dk)continue;const rr=r+dr;const kk=k+dk;const v=rr>=0&&rr<rows&&kk>=0&&kk<cols?cov[rr*cols+kk]:0;if(v>=lo&&v<hi)return true;}}return false;}/** Two passes of a separable box blur (≈ gaussian), in place. */function blurCells(a,cols,rows,r){if(r<1)return;const t=new Float32Array(a.length);const n=2*r+1;for(let pass=0;pass<2;pass++){for(let y=0;y<rows;y++){for(let x=0;x<cols;x++){let s=0;for(let k=-r;k<=r;k++){const xx=x+k;if(xx>=0&&xx<cols)s+=a[y*cols+xx];}t[y*cols+x]=s/n;}}for(let y=0;y<rows;y++){for(let x=0;x<cols;x++){let s=0;for(let k=-r;k<=r;k++){const yy=y+k;if(yy>=0&&yy<rows)s+=t[yy*cols+x];}a[y*cols+x]=s/n;}}}}/** Typographer's punctuation: curly quotes and apostrophes, an ellipsis, en and em dashes. */function smartType(s){return s.replace(/\\.\\.\\./g,\"…\").replace(/ -- /g,\" — \").replace(/--/g,\"—\").replace(/ - /g,\" – \").replace(/(^|[\\s([{“‘—–])\"/g,\"$1“\").replace(/\"/g,\"”\").replace(/(^|[\\s([{“—–])'/g,\"$1‘\").replace(/'/g,\"’\");}/** A line split for optical margins: punctuation that may hang outside the measure, and the core between. */const HANG=/^([“‘\"'«‹]*)([\\s\\S]*?)([.,:;’”\"'»›…\\-–—]*)$/;function splitHang(s){const m=s.match(HANG);return m&&m[2]?{lead:m[1],core:m[2]}:{lead:\"\",core:s};}/** Where a line's ink starts and ends at the context's font — the letters alone, and with their punctuation. */function lineInk(ctx,s,tracking){const{lead,core}=splitHang(s);const leadW=!lead?0:canTrack?ctx.measureText(lead).width:lineWidth(ctx,lead,tracking)+tracking;const c=ctx.measureText(core);const a=ctx.measureText(s);return{lead:leadW,core0:-c.actualBoundingBoxLeft,core1:c.actualBoundingBoxRight,all0:-leadW-a.actualBoundingBoxLeft,all1:-leadW+a.actualBoundingBoxRight};}/** The largest scale at which every line's letters fit the measure, its punctuation hanging at most `hang` past it. */function inkFit(ctx,lines,tracking,maxW,hang){let k=Infinity;for(const s of lines){if(!s.trim())continue;const i=lineInk(ctx,s,tracking);const wc=Math.max(1,i.core1-i.core0);k=Math.min(k,maxW/wc,(maxW+hang)/(wc+Math.max(0,i.all1-i.core1)),(maxW+hang)/(wc+Math.max(0,i.core0-i.all0)));}return k;}/**\n * Fit Width: the size at which the widest line's letters span the measure\n * exactly (optical, ink to ink), then hinted to the grid; the hinting can\n * round up, so it steps down until the hinted lines fit too.\n */function fitLed(ctx,text,o){const lines=text.split(\"\\n\");setFont(ctx,o.weight,100,o.family,o.trackEm*100);let size=100*Math.min(8,inkFit(ctx,lines,o.trackEm*100,o.maxW,o.hang));let l=layoutText(ctx,text,{...o,size,fit:false,maxW:1e6});for(let n=0;n<4;n++){let k=inkFit(ctx,l.lines,l.tracking,o.maxW,o.hang)// the context holds the hinted font\n;l.runs.forEach(r=>{if(r)k=Math.min(k,o.maxW/Math.max(1,r.w));});if(k>=.999)break;size*=k*.995;l=layoutText(ctx,text,{...o,size,fit:false,maxW:1e6});}return l;}/**\n * Draws the text once at 1 px per wall px and turns each cell's ink coverage\n * into a pixel: mostly ink lights a full pixel, an edge cell next to one a\n * smaller pixel, so curves and diagonals read smooth. Columns are global\n * (x = 0 is the middle of the wall), so at rest the text sits exactly on the\n * wall's own grid. Lines align optically: the letters' ink — not their boxes —\n * meets the margin on a cell edge, and punctuation hangs into the margin.\n */function sampleLed(l,o){const pitch=o.size+o.gap;const m=2+Math.ceil(o.glow/pitch);const left=-o.W/2+o.pad;const right=o.W/2-o.pad;const c0=Math.floor((left-o.hang)/pitch)-m;const cols=Math.max(1,Math.ceil((right+o.hang)/pitch)+m-c0);const room=Math.ceil(Math.max(0,l.descent-(l.lineH-l.ascent)/2)/pitch)// descender room, in cells\n;const rows=Math.max(1,Math.ceil(l.blockH/pitch)+2*(m+room));const cw=cols*pitch;const chH=rows*pitch;const cov=new Float32Array(cols*rows);const top=(m+room)*pitch;const c=document.createElement(\"canvas\");c.width=Math.max(1,Math.ceil(cw));c.height=Math.max(1,Math.ceil(chH));const ctx=c.getContext(\"2d\",{willReadFrequently:true});let shift=0;const Lc=left-c0*pitch;const Rc=right-c0*pitch;let inkL=Infinity;let inkR=-Infinity;let xCells=0;let capCells=0;const chars=[];let word=0;if(ctx){setFont(ctx,l.weight,l.px,l.family,l.tracking);ctx.fontKerning=\"normal\";ctx.fillStyle=\"#fff\";ctx.textBaseline=\"alphabetic\";xCells=Math.round((ctx.measureText(\"x\").actualBoundingBoxAscent||l.px*.53)/pitch);capCells=Math.round((ctx.measureText(\"H\").actualBoundingBoxAscent||l.ascent)/pitch);// caps centred in each line box, then every baseline moved onto the nearest cell edge\nconst b0=top+l.lineH/2+l.ascent/2;shift=Math.round(b0/pitch)*pitch-b0;l.lines.forEach((s,i)=>{const base=top+shift+i*l.lineH+l.lineH/2+l.ascent/2;const run=l.runs[i];if(run){// small type: the glyphs at their whole-cell positions from the layout\nconst w=l.widths[i];const x=Math.round((o.align===\"left\"?Lc:o.align===\"right\"?Rc-w:(Lc+Rc-w)/2)/pitch)*pitch;if(canTrack)ctx.letterSpacing=\"0px\";run.chars.forEach((chr,j)=>{ctx.fillText(chr,x+run.xs[j],base);if(/\\s/.test(chr))word++;else chars.push({ch:chr,x0:x+run.xs[j],x1:j+1<run.chars.length?x+run.xs[j+1]:x+w,base,line:i,word});});word++;inkL=Math.min(inkL,x);inkR=Math.max(inkR,x+w);return;}if(canTrack)ctx.letterSpacing=`${l.tracking}px`;const ink=lineInk(ctx,s,l.tracking);let pen=o.align===\"left\"?Lc-ink.core0:o.align===\"right\"?Rc-ink.core1:(Lc+Rc)/2-(ink.core0+ink.core1)/2;// punctuation hangs into the margin, but never further than the hang\npen=Math.max(pen,Lc-o.hang-ink.all0);pen=Math.min(pen,Rc+o.hang-ink.all1);// the letters' first ink column starts on a cell edge\npen=Math.round((pen+ink.core0)/pitch)*pitch-ink.core0;drawLine(ctx,s,pen-ink.lead,base,l.tracking);// each character's advance, for the decode / scramble glyph bank\nconst gs=graphemes(s);let acc=\"\";let xa=pen-ink.lead;gs.forEach(g=>{const next=acc+g;const xb=pen-ink.lead+(canTrack||!l.tracking?ctx.measureText(next).width:lineWidth(ctx,next,l.tracking)+l.tracking);if(/\\s/.test(g))word++;else chars.push({ch:g,x0:xa,x1:xb,base,line:i,word});xa=xb;acc=next;});word++;inkL=Math.min(inkL,pen+ink.core0);inkR=Math.max(inkR,pen+ink.core1);});const data=ctx.getImageData(0,0,c.width,c.height).data;const W=c.width;for(let r=0;r<rows;r++){const y0=r*pitch;const y1=Math.min(c.height,y0+pitch);for(let k=0;k<cols;k++){const x0=k*pitch;const x1=Math.min(W,x0+pitch);let sum=0;for(let y=y0;y<y1;y++){let i=(y*W+x0)*4+3;for(let x=x0;x<x1;x++,i+=4)sum+=data[i];}cov[r*cols+k]=sum/(255*Math.max(1,(x1-x0)*(y1-y0)));}}}// full pixels where a cell is mostly ink; a smaller one on an edge cell touching a full one\n// (diagonals count, so thin diagonal strokes stay joined). Small type: only on an outer\n// edge — side by side with a full cell and with an empty one — so small counters stay open\nconst small=l.cells<SMALL_TYPE;const{full,small:part}=MOTION.led.edge;const size=new Float32Array(cols*rows);let lit=0;for(let r=0;r<rows;r++){for(let k=0;k<cols;k++){const v=cov[r*cols+k];if(v<part)continue;const isFull=v>=full;if(!isFull&&!(small?touches(cov,cols,rows,r,k,false,full,1)&&touches(cov,cols,rows,r,k,false,-1,part):touches(cov,cols,rows,r,k,true,full,1)))continue;size[r*cols+k]=isFull?o.size/pitch:o.size*o.edge/pitch;lit++;}}// switch-on order: left to right with a dithered scatter (bits), or top to bottom (scan)\nconst rand=mulberry32(lit*7919+cols*31+rows);const th=new Float32Array(cols*rows);let hi=1e-6;for(let r=0;r<rows;r++){for(let k=0;k<cols;k++){const i=r*cols+k;if(!size[i])continue;const t=o.reveal===\"scan\"?.85*(r/rows)+.15*rand():.55*(k/cols)+.45*rand();th[i]=t;hi=Math.max(hi,t);}}// cells within two of a lit one: the boot's decode noise stays around the letters\nconst near=new Uint8Array(cols*rows);for(let r=0;r<rows;r++){for(let k=0;k<cols;k++){if(!size[r*cols+k])continue;for(let dr=-2;dr<=2;dr++){for(let dk=-2;dk<=2;dk++){const rr=r+dr;const kk=k+dk;if(rr>=0&&rr<rows&&kk>=0&&kk<cols)near[rr*cols+kk]=1;}}}}const cells=new Uint8Array(cols*rows*4);const glowA=size.slice();blurCells(glowA,cols,rows,o.glow>0?Math.max(1,Math.round(o.glow/pitch/2)):0);const glow=new Uint8Array(cols*rows*4);const inst={cell:new Float32Array(lit*2),info:new Float32Array(lit*4),rand:new Float32Array(lit*4)};let n=0;for(let r=0;r<rows;r++){const tr=rows-1-r// textures and instances run bottom up\n;for(let k=0;k<cols;k++){const i=r*cols+k;const j=(tr*cols+k)*4;if(size[i]){cells[j]=Math.round(size[i]*255);cells[j+1]=Math.round(th[i]/hi*250);inst.cell[n*2]=k;inst.cell[n*2+1]=tr;inst.info.set([size[i],th[i]/hi*.98,rand(),rand()],n*4);inst.rand.set([rand(),rand(),rand(),rand()],n*4);n++;}glow[j]=o.glow>0?Math.round(clamp(glowA[i]/(o.size/pitch),0,1)*255):0;glow[j+1]=near[i]?255:0;}}// type guides: the row under the first baseline, the rows over its x-height and cap height,\n// the row under the last baseline, and the columns just outside the letters' ink\nconst base0=top+shift+l.lineH/2+l.ascent/2;const baseN=base0+(l.lines.length-1)*l.lineH;const up=y=>chH-y;const guide={rows:[up(base0+pitch/2),up(base0-xCells*pitch-pitch/2),up(base0-capCells*pitch-pitch/2)],cols:[isFinite(inkL)?Math.round(inkL/pitch)*pitch-pitch/2:0,isFinite(inkR)?Math.ceil(inkR/pitch)*pitch+pitch/2:0],foot:up(baseN+pitch/2)};const key=[l.key,o.W,o.pad,o.hang,o.align,o.size,o.gap,o.edge,o.glow,o.reveal].join(\"|\");return{cols,rows,cells,glow,inst,c0,top:top+shift,blockH:l.blockH,lineH:l.lineH,margin:m,lit,guide,chars,font:{weight:l.weight,px:l.px,family:l.family,tracking:l.tracking},key};}/**\n * Lean of the wall. 100 % foreshortens the text exactly like the keyboard's\n * surface (sin(α + β) = cos α); 0 % faces the camera; more leans it upright.\n */function wallAngle(alpha,persp){const p=clamp(persp,0,150)/100;const s=clamp(1-p*(1-Math.cos(alpha)),Math.sin(alpha),1);return Math.max(0,Math.asin(s)-alpha);}/** Device-local point of a wall coordinate. */const wallLocal=(yw,beta,u,v)=>[u,yw+v*Math.sin(beta),v*Math.cos(beta)];/** The wall height (v, u) that projects to stage y — exact, since y(v) is a ratio of linears. */function wallVAt(fit,alpha,beta,yw,y){const T=fit.topUp-y;return(T*(fit.D+yw*Math.sin(alpha))-fit.f*(yw*Math.cos(alpha)-fit.yc))/(fit.f*Math.sin(alpha+beta)+T*Math.cos(alpha+beta));}function computeWall(fit,dev,persp,dist,margin,refUp){const alpha=dev.alpha;const beta=wallAngle(alpha,persp);const yw=clamp(dist,.2,8);const horizonPx=projectFit(fit,alpha,0,0,-DEV.bevel)[1];const vH=wallVAt(fit,alpha,beta,yw,horizonPx);const zAt=v=>-yw*Math.sin(alpha)+v*Math.cos(alpha+beta);// 1 wall px = 1 css px across, measured refUp wall px above the horizon (the middle of the visible text)\nconst pxH=(fit.D-zAt(vH))/fit.f;const pxU=(fit.D-zAt(vH+refUp*pxH))/fit.f;const vTop=wallVAt(fit,alpha,beta,yw,-margin);const vBot=vH-40*pxU;const k=v=>fit.f/(fit.D-zAt(v));const uHalf=(fit.W/2+margin+40)/Math.min(k(vTop),k(vBot));const yA=projectFit(fit,alpha,...wallLocal(yw,beta,0,vH))[1];const yB=projectFit(fit,alpha,...wallLocal(yw,beta,0,vH+100*pxU))[1];return{beta,yw,pxU,uHalf,vBot,vTop,min:[-uHalf/pxU,vBot/pxU],size:[2*uHalf/pxU,(vTop-vBot)/pxU],horizon:vH/pxU,skyTop:wallVAt(fit,alpha,beta,yw,0)/pxU,horizonPx,squash:(yA-yB)/100};}/**\n * The LED wall: one shader draws the shared grid — ghost dots and the\n * backdrop living on them (aura, signal trace, trail, sparks, ripples) — and\n * the lit text cells on top, with their boot, glow, twinkle, hover drift,\n * bit-flip shocks and key-press sweeps. Everything is analytic per fragment,\n * so it stays sharp at any size; only the text cells, their glow and the\n * trail heat come from small textures.\n */const LED_VERT=/* glsl */`\nvarying vec2 vUv;\nvoid main() {\n    vUv = uv;\n    gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n`;/**\n * A burst's time course: out in ≈ 0.14 s, then a long glide back (two\n * exponentials, peak = 1), eased to exactly zero by the end of its life so\n * nothing snaps. Shared by both shaders.\n */const BURST_GLSL=/* glsl */`\nfloat ledBurst(float t) {\n    return t < 0.0 ? 0.0 : (1.0 - exp(-t / 0.07)) * exp(-t / 0.42) / 0.62 * (1.0 - smoothstep(1.8, 2.4, t));\n}\n`;const LED_FRAG=/* glsl */`\nuniform sampler2D ledCells;\nuniform sampler2D ledGlowTex;\nuniform sampler2D ledHeat;\nuniform vec2 ledMin;\nuniform vec2 ledSize;\nuniform float ledPitch;\nuniform float ledPix;\nuniform float ledSoft;\nuniform vec2 ledTextOrg;\nuniform vec2 ledTextDim;\nuniform float ledHasText;\nuniform vec4 ledTextBox;\nuniform vec3 ledColor;\nuniform vec3 ledHot;\nuniform vec3 ledGhostCol;\nuniform float ledGhostA;\nuniform float ledGlowA;\nuniform float ledPower;\nuniform float ledFade;\nuniform float ledBits;\nuniform float ledNoise;\nuniform float ledStep;\nuniform float ledBand;\nuniform float ledSquash;\nuniform float ledHorizon;\nuniform float ledSkyTop;\nuniform float ledW;\nuniform float ledHorizonPx;\nuniform float ledSky;\nuniform float ledSkyAmt;\nuniform vec3 ledSkyGlow;\nuniform vec3 ledGA;\nuniform vec3 ledGB;\nuniform float ledTa;\nuniform vec4 ledHeatBox;\nuniform float ledHeatOn;\nuniform vec4 ledRipples[6];\nuniform vec4 ledShocks[4];\nuniform vec4 ledSweeps[2];\nuniform vec3 ledSweepCol[2];\nuniform vec4 ledBlasts[12];\nuniform float ledBurstR;\nuniform vec3 ledGuideRows;\nuniform vec2 ledGuideCols;\nuniform float ledGuideFoot;\nuniform float ledGuideA;\nvarying vec2 vUv;\n${BURST_GLSL}\nfloat ledHash(vec2 p) {\n    return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);\n}\n\nfloat ledVNoise(vec2 p) {\n    vec2 i = floor(p);\n    vec2 f = fract(p);\n    vec2 u = f * f * (3.0 - 2.0 * f);\n    return mix(mix(ledHash(i), ledHash(i + vec2(1.0, 0.0)), u.x), mix(ledHash(i + vec2(0.0, 1.0)), ledHash(i + vec2(1.0, 1.0)), u.x), u.y);\n}\n\n// a square of half-size h centred on the origin, anti-aliased over aa\nfloat ledBox(vec2 f, float h, vec2 aa) {\n    vec2 q = 1.0 - smoothstep(vec2(h) - aa, vec2(h) + aa, abs(f));\n    return q.x * q.y;\n}\n\n// premultiplied \"over\"\nvec4 ledOver(vec4 dst, vec3 c, float a) {\n    return vec4(c * a + dst.rgb * (1.0 - a), a + dst.a * (1.0 - a));\n}\n\n// how much of the text bursts have blown away around p (the glow there dims with it)\nfloat ledBlown(vec2 p) {\n    float s = 0.0;\n    for (int i = 0; i < 12; i++) {\n        vec4 b = ledBlasts[i];\n        if (b.z < 0.0) continue;\n        float R = ledBurstR * (0.75 + 0.5 * b.w);\n        float d = length(vec2(p.x - b.x, (p.y - b.y) * ledSquash));\n        if (d < R) s += pow(1.0 - d / R, 1.3) * b.w * ledBurst(b.z);\n    }\n    return min(s, 1.0);\n}\n\nvoid main() {\n    vec2 p = ledMin + vUv * ledSize;\n    vec2 fw = fwidth(p);\n    vec2 aa = fw * 0.5 + ledSoft;\n    // nothing below the slab's silhouette (beside a narrow device, past its rounded corners)\n    float clip = smoothstep(ledHorizon - 1.5 * fw.y, ledHorizon + 0.5 * fw.y, p.y);\n    if (clip <= 0.0) discard;\n    vec2 gc = floor(p / ledPitch);\n    vec2 cc = (gc + 0.5) * ledPitch;\n    vec2 gf = p - cc;\n    float cxs = cc.x + ledW * 0.5;\n    float cys = (ledSkyTop - cc.y) * ledSquash;\n    vec4 acc = vec4(0.0);\n\n    // —— the shared grid: ghost dots, and the backdrop living on them ——\n    float edge = smoothstep(0.0, ledW * 0.04, cxs) * smoothstep(0.0, ledW * 0.04, ledW - cxs);\n    float ghostA = ledGhostA * edge;\n    float v = 0.0;\n    vec3 skyCol = ledSkyGlow;\n    if (ledSky > 0.5) {\n        ghostA *= 1.0 - 0.85 * clamp(1.0 - cys / max(ledHorizonPx, 1.0), 0.0, 1.0);\n        // heat shimmer drifting up out of the glow at the horizon\n        float dy = ledHorizonPx - cys;\n        float sx = (cxs - ledW * 0.5) / (ledW * 0.62);\n        float aura = dy < 0.0 ? 0.0 : 0.34 * exp(-dy / (ledHorizonPx * 0.14)) * max(0.0, 1.0 - sx * sx);\n        if (aura > 0.01) v += aura * (0.12 + 0.9 * max(0.0, ledVNoise(vec2(cxs * 0.0122, cys * 0.0211 + ledTa * 0.55)) - 0.42));\n        // a signal trace runs across like an oscilloscope beam\n        float H = ledHorizonPx + 24.0;\n        float A = H * 0.17 * (0.7 + 0.3 * sin(ledTa * 0.21));\n        float head = mod(ledTa * ledW * 0.16, ledW * 1.5) - ledW * 0.25;\n        float age = head - cxs;\n        float b = age < 0.0 ? 0.08 : 0.08 + 0.92 * exp(-age / (ledW * 0.35));\n        float ty = H * 0.46 + A * sin(cxs * 0.0062 + ledTa * 0.8) * cos(cxs * 0.0021 - ledTa * 0.37);\n        v += max(0.0, 1.0 - abs(cys - ty) / max(ledPitch * ledSquash, 1.0)) * b * 0.55;\n        // cursor trail and sparks\n        if (ledHeatOn > 0.5) {\n            vec2 hc = gc - ledHeatBox.xy;\n            if (hc.x >= 0.0 && hc.y >= 0.0 && hc.x < ledHeatBox.z && hc.y < ledHeatBox.w) {\n                vec4 hh = texture2D(ledHeat, (hc + 0.5) / ledHeatBox.zw);\n                v += hh.r;\n                if (hh.g > 0.25) skyCol = hh.g > 0.75 ? ledGB : ledGA;\n            }\n        }\n        for (int i = 0; i < 6; i++) {\n            vec4 rp = ledRipples[i];\n            if (rp.z < 0.0) continue;\n            float d = abs(length(vec2(cc.x - rp.x, (cc.y - rp.y) * ledSquash)) - rp.z * 300.0);\n            if (d < 12.0) {\n                float val = 0.4 * pow(1.0 - rp.z / 2.2, 2.0) * (1.0 - d / 12.0);\n                v += val;\n                if (rp.w > 0.5 && val > 0.2) skyCol = rp.w > 1.5 ? ledGB : ledGA;\n            }\n        }\n        v *= ledSkyAmt;\n    } else {\n        // no backdrop: the ghost grid is a soft halo around the text\n        vec2 dd = max(vec2(0.0), max(ledTextBox.xy - p, p - ledTextBox.zw));\n        ghostA *= 1.0 - smoothstep(0.0, ledPitch * 10.0, length(dd));\n    }\n    // type guides, a step brighter than the ghost grid: the rows on the baseline, x-height and\n    // cap height (ticked every eight cells) and the columns at the letters' optical margins\n    if (ledGuideA > 0.0 && ledHasText > 0.5) {\n        vec3 gr = ledGuideRows + ledTextOrg.y;\n        float g = 0.0;\n        if (min(min(abs(cc.y - gr.x), abs(cc.y - gr.y)), abs(cc.y - gr.z)) < ledPitch * 0.5) g = 1.0 + 0.9 * step(mod(gc.x, 8.0), 0.5);\n        vec2 gx = ledGuideCols + ledTextOrg.x;\n        if (min(abs(cc.x - gx.x), abs(cc.x - gx.y)) < ledPitch * 0.5 && cc.y > ledGuideFoot + ledTextOrg.y - ledPitch * 3.0 && cc.y < gr.z + ledPitch * 3.0) g = max(g, 1.4);\n        ghostA += ledGuideA * g * edge;\n    }\n    float va = v < 0.05 ? 0.0 : 0.12 + 0.88 * pow(min(v, 1.0), 1.3);\n    // power-on: a bright sync band runs down the panel\n    float band = 0.5 * exp(-abs(cc.y - ledBand) / (ledPitch * 2.5));\n    float wG = ghostA + band;\n    float dotA = min(1.0, wG + va) * ledPower;\n    vec3 dotC = (ledGhostCol * wG + skyCol * va) / max(wG + va, 0.0001);\n    float dot0 = ledBox(gf, ledPix * 0.5, aa);\n    acc = ledOver(acc, dotC, dotA * dot0);\n    // click: a bit-flip shock ring in the two glitch colours\n    float flip = 0.0;\n    vec3 flipC = ledGA;\n    for (int i = 0; i < 4; i++) {\n        vec4 s = ledShocks[i];\n        if (s.z < 0.0) continue;\n        float d = length(vec2(cc.x - s.x, (cc.y - s.y) * ledSquash)) - s.z * 900.0;\n        float k = 1.0 - abs(d) / max(ledPitch * 2.2, 10.0);\n        if (k > 0.0) {\n            float f = k * pow(1.0 - s.z / 0.9, 2.0);\n            if (f > flip) {\n                flip = f;\n                flipC = d < 0.0 ? ledGA : ledGB;\n            }\n        }\n    }\n    if (flip > 0.0) acc = ledOver(acc, flipC, flip * 0.85 * dot0 * ledPower);\n    // key press: the scan bar lights the empty cells of the text block too\n    bool inText = cc.y > ledTextBox.y && cc.y < ledTextBox.w && cc.x > ledTextBox.x && cc.x < ledTextBox.z;\n    if (inText) {\n        for (int k = 0; k < 2; k++) {\n            vec4 sw = ledSweeps[k];\n            if (sw.z <= 0.0) continue;\n            float inBar = 1.0 - abs(cc.x - sw.x) / sw.y;\n            if (inBar > 0.0) acc = ledOver(acc, ledSweepCol[k], 0.22 * inBar * sw.z * dot0);\n        }\n    }\n\n    // —— under the text: its glow (dimmed where bursts blew the pixels away) and, while it boots, decode noise ——\n    if (ledHasText > 0.5) {\n        vec2 tp = p - ledTextOrg;\n        vec2 tdim = ledTextDim * ledPitch;\n        if (tp.x > -ledPitch && tp.y > -ledPitch && tp.x < tdim.x + ledPitch && tp.y < tdim.y + ledPitch) {\n            vec2 tc = floor(tp / ledPitch);\n            float g = texture2D(ledGlowTex, tp / tdim).r * ledGlowA;\n            if (g > 0.002) acc = ledOver(acc, ledColor, g * 0.55 * max(0.0, 1.0 - 2.2 * ledBlown(p)));\n            if (ledNoise > 0.0 && tc.x >= 0.0 && tc.y >= 0.0 && tc.x < ledTextDim.x && tc.y < ledTextDim.y) {\n                vec2 tuv = (tc + 0.5) / ledTextDim;\n                vec4 cell = texture2D(ledCells, tuv);\n                bool dark = cell.r < 0.01 || cell.g > ledBits;\n                if (dark && texture2D(ledGlowTex, tuv).g > 0.5 && ledHash(tc + ledStep * 17.13) < ledNoise * 2.5) {\n                    float na = (0.3 + 0.45 * ledHash(tc * 1.7 + ledStep)) * ledBox(tp - (tc + 0.5) * ledPitch, ledPix * 0.5, aa);\n                    acc = ledOver(acc, mix(ledColor, ledHot, 0.5), na);\n                }\n            }\n        }\n    }\n    acc *= ledFade * clip;\n    if (acc.a < 0.003) discard;\n    gl_FragColor = vec4(acc.rgb / acc.a, acc.a);\n}\n`;/**\n * The lit text: one small square per lit cell, instanced on the wall plane.\n * They switch on in the boot, rise with the text, and burst — blown out from\n * the cursor, tumbling toward the camera, a few flashing in the glitch\n * colours — then glide back into their slots on the grid.\n */const SQ_VERT=/* glsl */`\nattribute vec2 aCell;\nattribute vec4 aInfo;\nattribute vec4 aRand;\nuniform vec2 sqOrg;\nuniform float sqPitch;\nuniform float sqPxU;\nuniform float sqMid;\nuniform float sqSquash;\nuniform float sqSkyTop;\nuniform float sqBits;\nuniform float sqHotW;\nuniform float sqTime;\nuniform float sqTwinkle;\nuniform float sqScan;\nuniform float sqSoft;\nuniform float sqFade;\nuniform float sqShare;\nuniform vec4 sqHover;\nuniform vec3 sqBurstK;\nuniform vec4 ledBlasts[12];\nuniform float ledBurstR;\nuniform vec4 ledShocks[4];\nuniform vec4 ledSweeps[2];\nuniform vec3 ledSweepCol[2];\nuniform vec3 ledColor;\nuniform vec3 ledHot;\nuniform vec3 ledGA;\nuniform vec3 ledGB;\nvarying vec3 vCol;\nvarying float vA;\nvarying vec2 vQ;\nvarying float vHalf;\nvarying float vY;\n${BURST_GLSL}\nmat3 sqRot(vec3 a, float t) {\n    float s = sin(t);\n    float c = cos(t);\n    float o = 1.0 - c;\n    return mat3(o * a.x * a.x + c, o * a.x * a.y + a.z * s, o * a.z * a.x - a.y * s,\n                o * a.x * a.y - a.z * s, o * a.y * a.y + c, o * a.y * a.z + a.x * s,\n                o * a.z * a.x + a.y * s, o * a.y * a.z - a.x * s, o * a.z * a.z + c);\n}\n\nvoid main() {\n    vCol = ledColor;\n    vA = 0.0;\n    vQ = vec2(0.0);\n    vHalf = 0.0;\n    vY = 0.0;\n    // not switched on yet: off screen, no fragments at all\n    if (aInfo.y > sqBits) {\n        gl_Position = vec4(2.0, 2.0, 2.0, 1.0);\n        return;\n    }\n    vec2 rest = sqOrg + (aCell + 0.5) * sqPitch;\n    float hot = clamp(1.0 - (sqBits - aInfo.y) / max(sqHotW, 0.0001), 0.0, 1.0);\n    vec2 off = vec2(0.0);\n    float lift = 0.0;\n    float spin = 0.0;\n    float fly = 0.0;\n    // a resting cursor keeps a small opening in the text\n    if (sqHover.z > 0.001) {\n        vec2 e = vec2(rest.x - sqHover.x, (rest.y - sqHover.y) * sqSquash);\n        float d = length(e);\n        if (d < sqHover.w) {\n            float w = 1.0 - d / sqHover.w;\n            float k = w * w * sqHover.z;\n            vec2 dir = d > 0.001 ? e / d : vec2(cos(aRand.x * 6.2832), sin(aRand.x * 6.2832));\n            off += vec2(dir.x, dir.y / sqSquash) * 9.0 * k;\n            lift += 0.12 * sqBurstK.y * k;\n            fly = max(fly, 0.4 * k);\n        }\n    }\n    // bursts: blown outward with a little scatter, lifted toward the camera, tumbling\n    for (int i = 0; i < 12; i++) {\n        vec4 b = ledBlasts[i];\n        if (b.z < 0.0) continue;\n        float R = ledBurstR * (0.75 + 0.5 * b.w);\n        vec2 e = vec2(rest.x - b.x, (rest.y - b.y) * sqSquash);\n        float d = length(e);\n        if (d > R) continue;\n        float k = pow(1.0 - d / R, 1.3) * b.w * ledBurst(b.z);\n        float ang = (d > 0.001 ? atan(e.y, e.x) : aRand.x * 6.2832) + (aRand.x - 0.5) * 1.1;\n        off += vec2(cos(ang), sin(ang) / sqSquash) * R * (0.5 + 0.9 * aRand.y) * k * sqBurstK.x;\n        lift += sqBurstK.y * (0.3 + 0.7 * aRand.z) * k;\n        spin += sqBurstK.z * (aRand.w - 0.5) * 2.0 * k;\n        fly = max(fly, k);\n    }\n    fly = min(fly, 1.0);\n    vec2 c = rest + off;\n    // the quad: one pixel, a touch larger while it flies, anti-aliased in the fragment shader\n    float hs = aInfo.x * sqPitch * 0.5 * (1.0 + 0.6 * fly);\n    vec2 q = position.xy * 2.0 * (hs + 1.0 + sqSoft);\n    vec3 axis = normalize(vec3(aRand.z - 0.5, aRand.w - 0.5, 0.3));\n    vec3 corner = sqRot(axis, spin) * vec3(q * sqPxU, 0.0);\n    vec3 local = vec3(c.x * sqPxU, c.y * sqPxU - sqMid, lift) + corner;\n    gl_Position = projectionMatrix * modelViewMatrix * vec4(local, 1.0);\n    vQ = q;\n    vHalf = hs;\n    vY = c.y + q.y;\n    // colour: hot when fresh or flying; a few take a glitch colour in flight; the key-press bar\n    float a = 1.0 - sqTwinkle * (0.5 + 0.5 * sin(sqTime * (0.25 + aInfo.w * 0.35) + aInfo.z * 6.2832));\n    a *= 1.0 - sqScan * 0.07 * (0.5 + 0.5 * sin((sqSkyTop - rest.y) * sqSquash * 0.012 - sqTime * 0.9));\n    vec3 col = mix(ledColor, ledHot, max(hot, 0.65 * fly));\n    if (aRand.w > 1.0 - sqShare) col = mix(col, aRand.z < 0.5 ? ledGA : ledGB, fly);\n    for (int k = 0; k < 2; k++) {\n        vec4 sw = ledSweeps[k];\n        if (sw.z <= 0.0) continue;\n        float inBar = 1.0 - abs(rest.x - sw.x) / sw.y;\n        if (inBar > 0.0) col = mix(col, ledSweepCol[k], inBar * sw.z * 0.85);\n    }\n    // click: bits flip off in the shock ring\n    for (int j = 0; j < 4; j++) {\n        vec4 s = ledShocks[j];\n        if (s.z < 0.0) continue;\n        float d = length(vec2(rest.x - s.x, (rest.y - s.y) * sqSquash)) - s.z * 900.0;\n        float kk = 1.0 - abs(d) / max(sqPitch * 2.2, 10.0);\n        if (kk > 0.0) a *= 1.0 - 0.9 * kk * pow(1.0 - s.z / 0.9, 2.0);\n    }\n    vCol = col;\n    vA = clamp(a, 0.0, 1.0) * sqFade;\n}\n`;const SQ_FRAG=/* glsl */`\nuniform float sqSoft;\nuniform float sqScan;\nuniform float sqHorizon;\nvarying vec3 vCol;\nvarying float vA;\nvarying vec2 vQ;\nvarying float vHalf;\nvarying float vY;\nvoid main() {\n    if (vA <= 0.002 || vY < sqHorizon) discard;\n    vec2 aa = fwidth(vQ) * 0.5 + sqSoft;\n    vec2 cv = 1.0 - smoothstep(vec2(vHalf) - aa, vec2(vHalf) + aa, abs(vQ));\n    // an LED is a touch brighter at its top edge\n    float a = vA * cv.x * cv.y * (1.0 + sqScan * 0.06 * clamp(vQ.y / max(vHalf, 0.001), -1.0, 1.0));\n    if (a <= 0.002) discard;\n    gl_FragColor = vec4(vCol, clamp(a, 0.0, 1.0));\n}\n`;// ————————————————————————————————————————————————————————————————\n// Pixel type — the decode's glyph pool and a 3×5 micro face for the binary rain\n// ————————————————————————————————————————————————————————————————\n/** Characters the decode cycles through. */const LED_NOISE=\"ABCDEFGHJKLMNOPQRSTUVWXYZ0123456789#%&@$*+=?\";/** 3×5 micro face for the binary rain: 0 and 1. */const BIN3=[[7,5,5,5,7],[2,6,2,2,7]];// ————————————————————————————————————————————————————————————————\n// Three.js — loaded at runtime (never during server rendering)\n// ————————————————————————————————————————————————————————————————\nconst THREE_URL=\"https://cdn.jsdelivr.net/npm/three@0.160.0/build/three.module.min.js\";let threeLoad=null;function loadThree(){if(!threeLoad){const url=THREE_URL;threeLoad=import(/* webpackIgnore: true *//* @vite-ignore */url).catch(e=>{threeLoad=null;throw e;});}return threeLoad;}/** Rounded rectangle into a Shape / Path (x0 < x1, y0 < y1). */function roundRect(target,x0,y0,x1,y1,r){r=Math.max(.001,Math.min(r,(x1-x0)/2,(y1-y0)/2));target.moveTo(x0+r,y0);target.lineTo(x1-r,y0);target.absarc(x1-r,y0+r,r,-Math.PI/2,0,false);target.lineTo(x1,y1-r);target.absarc(x1-r,y1-r,r,0,Math.PI/2,false);target.lineTo(x0+r,y1);target.absarc(x0+r,y1-r,r,Math.PI/2,Math.PI,false);target.lineTo(x0,y0+r);target.absarc(x0+r,y0+r,r,Math.PI,Math.PI*1.5,false);return target;}/**\n * Smooth normals across bevels (faces within `deg` of each other) while the\n * big flat caps keep their own normal — otherwise earcut's long triangles\n * smear the bevel shading across the whole slab.\n */function creaseNormals(T,geo,deg){const p=geo.attributes.position;const n=p.count;const faces=n/3;const fn=new Float32Array(faces*3);const cap=new Uint8Array(faces);const keys=new Array(n);const map=new Map;for(let f=0;f<faces;f++){const i=f*3;const ax=p.getX(i),ay=p.getY(i),az=p.getZ(i);const ux=p.getX(i+1)-ax,uy=p.getY(i+1)-ay,uz=p.getZ(i+1)-az;const vx=p.getX(i+2)-ax,vy=p.getY(i+2)-ay,vz=p.getZ(i+2)-az;let nx=uy*vz-uz*vy,ny=uz*vx-ux*vz,nz=ux*vy-uy*vx;const l=Math.hypot(nx,ny,nz);if(l<1e-12)cap[f]=2;else{nx/=l;ny/=l;nz/=l;if(Math.abs(nz)>.9995)cap[f]=1;}fn[i]=nx;fn[i+1]=ny;fn[i+2]=nz;for(let c=0;c<3;c++){const key=`${Math.round(p.getX(i+c)*4e3)},${Math.round(p.getY(i+c)*4e3)},${Math.round(p.getZ(i+c)*4e3)}`;keys[i+c]=key;const list=map.get(key);if(list)list.push(f);else map.set(key,[f]);}}const out=new Float32Array(n*3);const cos=Math.cos(deg*Math.PI/180);for(let f=0;f<faces;f++){const fx=fn[f*3],fy=fn[f*3+1],fz=fn[f*3+2];for(let c=0;c<3;c++){const i=f*3+c;let sx=fx,sy=fy,sz=fz;if(cap[f]===0){sx=sy=sz=0;for(const g of map.get(keys[i])){if(cap[g])continue;const gx=fn[g*3],gy=fn[g*3+1],gz=fn[g*3+2];if(fx*gx+fy*gy+fz*gz>=cos){sx+=gx;sy+=gy;sz+=gz;}}const l=Math.hypot(sx,sy,sz)||1;sx/=l;sy/=l;sz/=l;}out[i*3]=sx;out[i*3+1]=sy;out[i*3+2]=sz;}}geo.setAttribute(\"normal\",new T.BufferAttribute(out,3));}/**\n * A sculpted keycap as one smooth surface: rounded-rectangle rings lofted\n * from the footprint up a slightly bowed, tapering wall, round the top edge\n * and in over a faintly domed top. Planar UVs put the legend on the top face;\n * vertex colours carry the (optional) two-colour gradient — first colour at\n * the back of the top, second at the front of the skirt — and \"keyAo\" the\n * occlusion of ambient light toward the foot.\n */function keycapGeometry(T,w,d,h,c1,c2,gradient){const S=8// segments per rounded corner\n;const E=Math.max(4,Math.round(w*6))// segments along the long edges\n;const Ey=6// …and the short ones\n;const taper=Math.min(.09,w*.09);const edge=.1;const rFoot=.08;const rTop=.15;const dome=.03;const hw=w/2;const hh=d/2;const top0=taper+edge;const maxIn=Math.min(hw,hh)-.012;const hwT=hw-top0;const hhT=hh-top0;// profile rings: [inset, z, corner radius, on the top face?]\nconst rings=[];const wallH=h-edge;for(let k=0;k<=7;k++){const t=k/7;rings.push([taper*Math.pow(t,1.4),wallH*t,rFoot+(rTop-rFoot)*t,false]);}for(let k=1;k<=7;k++){const a=k/7*Math.PI/2;const inset=edge*(1-Math.cos(a));rings.push([taper+inset,wallH+edge*Math.sin(a),Math.max(.01,rTop-inset),k===7]);}for(let k=1;k<=6;k++){const inset=(maxIn-top0)*(k/6);rings.push([top0+inset,h,Math.max(0,rTop-edge-inset),true]);}// the top face is a smooth cushion: z = h + dome·(1 − u²)(1 − v²), so no creases\nconst cushion=(x,y)=>{const u=clamp(x/hwT,-1,1);const v=clamp(y/hhT,-1,1);return dome*(1-u*u)*(1-v*v);};const pos=[];const uv=[];const col=[];const occ=[];const add=(x,y,z)=>{pos.push(x,y,z);let e=0;if(gradient){const f=clamp(1-(.74*((y+hh)/(2*hh))+.26*(z/h)),0,1);e=f*f*(3-2*f);}col.push(c1.r+(c2.r-c1.r)*e,c1.g+(c2.g-c1.g)*e,c1.b+(c2.b-c1.b)*e);// occlusion toward the foot, where the cap sinks into the well\nconst s=clamp(z/(wallH*.7),0,1);occ.push(.4+.6*s*s*(3-2*s));uv.push((x/hwT+1)/2,(y/hhT+1)/2);};let N=0;for(const[inset,z,r,onTop]of rings){const a=hw-inset;const b=hh-inset;const rr=Math.max(0,Math.min(r,a,b));const ring=[];for(let q=0;q<4;q++){const sx=q===0||q===3?1:-1;const sy=q<2?1:-1;const ccx=sx*(a-rr);const ccy=sy*(b-rr);for(let s=0;s<=S;s++){const ang=(q+s/S)*Math.PI/2;ring.push([ccx+Math.cos(ang)*rr,ccy+Math.sin(ang)*rr]);}// straight edge to the next corner\nconst[x0,y0]=ring[ring.length-1];const nq=(q+1)%4;const nx=(nq===0||nq===3?1:-1)*(a-rr)+Math.cos(nq*Math.PI/2)*rr;const ny=(nq<2?1:-1)*(b-rr)+Math.sin(nq*Math.PI/2)*rr;const segs=q%2===0?E:Ey;for(let e=1;e<segs;e++)ring.push([x0+(nx-x0)*e/segs,y0+(ny-y0)*e/segs]);}N=ring.length;for(const[x,y]of ring)add(x,y,onTop?z+cushion(x,y):z);}add(0,0,h+dome);const idx=[];for(let k=0;k<rings.length-1;k++){for(let j=0;j<N;j++){const a=k*N+j;const b=k*N+(j+1)%N;const c=(k+1)*N+j;const e=(k+1)*N+(j+1)%N;idx.push(a,b,e,a,e,c);}}const last=(rings.length-1)*N;const center=rings.length*N;for(let j=0;j<N;j++)idx.push(last+j,last+(j+1)%N,center);const geo=new T.BufferGeometry;geo.setAttribute(\"position\",new T.Float32BufferAttribute(pos,3));geo.setAttribute(\"uv\",new T.Float32BufferAttribute(uv,2));geo.setAttribute(\"color\",new T.Float32BufferAttribute(col,3));geo.setAttribute(\"keyAo\",new T.Float32BufferAttribute(occ,1));geo.setIndex(idx);geo.computeVertexNormals();return{geo,topW:hwT*2,topD:hhT*2};}/**\n * Physical plastic, or on the low tier a standard one: the clearcoat layer and\n * bump are dropped and the base gets a little smoother so the gloss survives.\n */function plastic(T,low,p){if(!low)return new T.MeshPhysicalMaterial(p);const rest={...p};const coat=typeof rest.clearcoat===\"number\"?rest.clearcoat:0;for(const k of[\"clearcoat\",\"clearcoatRoughness\",\"bumpMap\",\"bumpScale\"])delete rest[k];if(typeof rest.roughness===\"number\")rest.roughness*=1-.3*clamp(coat,0,1);return new T.MeshStandardMaterial(rest);}/**\n * Slab finish: a soft light falloff (brighter at the top edge, dimmer toward\n * the bottom and the ends), polished chamfers, a rim of the glow behind along\n * the top edge (plus the LED wall's light, shared and live), and occluded hole\n * walls so the grille and the well read deep.\n */function slabFinish(T,m,o,low){const u={slabSize:{value:new T.Vector2(o.w,o.h)},slabTop:{value:o.top},slabRim:{value:o.rim},slabCavity:{value:o.cavity},slabLed:o.led};m.onBeforeCompile=s=>{Object.assign(s.uniforms,u);s.vertexShader=s.vertexShader.replace(\"#include <common>\",\"#include <common>\\nvarying vec3 vSlab;\\nvarying vec3 vSlabN;\").replace(\"#include <begin_vertex>\",\"#include <begin_vertex>\\n\tvSlab = position;\\n\tvSlabN = objectNormal;\");s.fragmentShader=s.fragmentShader.replace(\"#include <common>\",\"#include <common>\\nuniform vec2 slabSize;\\nuniform float slabTop;\\nuniform vec3 slabRim;\\nuniform vec3 slabLed;\\nuniform float slabCavity;\\nvarying vec3 vSlab;\\nvarying vec3 vSlabN;\").replace(\"#include <color_fragment>\",\"#include <color_fragment>\\n\tvec3 slabN = normalize( vSlabN );\\n\tfloat slabX = vSlab.x / slabSize.x;\\n\tdiffuseColor.rgb *= ( 1.12 - 0.3 * clamp( -vSlab.y / slabSize.y, 0.0, 1.0 ) ) * ( 1.0 - 0.5 * slabX * slabX );\").replace(\"#include <roughnessmap_fragment>\",\"#include <roughnessmap_fragment>\\n\troughnessFactor = mix( roughnessFactor, 0.3, smoothstep( 0.15, 0.45, slabN.z ) * ( 1.0 - smoothstep( 0.7, 0.96, slabN.z ) ) );\").replace(\"#include <emissivemap_fragment>\",\"#include <emissivemap_fragment>\\n\ttotalEmissiveRadiance += ( slabRim + slabLed ) * smoothstep( 0.08, 0.5, slabN.y ) * smoothstep( slabTop - 0.12, slabTop - 0.03, vSlab.y );\").replace(\"#include <aomap_fragment>\",\"float slabAo = 1.0 - slabCavity * ( 1.0 - smoothstep( 0.05, 0.5, slabN.z ) );\\n\treflectedLight.indirectDiffuse *= slabAo;\\n\treflectedLight.indirectSpecular *= slabAo;\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatSpecularIndirect *= slabAo;\\n\t#endif\\n\t#include <aomap_fragment>\");};m.customProgramCacheKey=()=>low?\"mf-slab-low\":\"mf-slab\";return m;}/** Glossy keycap plastic whose legend is mixed into the base colour, so it's lit like print. */function keyMaterial(T,tex,legend,gloss,low){const u={legendMap:{value:tex},legendColor:{value:legend},legendShift:{value:new T.Vector2}};const g=clamp(gloss,0,1);const m=plastic(T,low,{color:16777215,vertexColors:true,roughness:.6-.32*g,metalness:0,clearcoat:.15+.55*g,clearcoatRoughness:.32-.2*g});m.defines={...m.defines||{},USE_UV:\"\"};m.onBeforeCompile=s=>{Object.assign(s.uniforms,u);s.vertexShader=s.vertexShader.replace(\"#include <common>\",\"#include <common>\\nattribute float keyAo;\\nvarying float vKeyAo;\").replace(\"#include <begin_vertex>\",\"#include <begin_vertex>\\n\tvKeyAo = keyAo;\");s.fragmentShader=s.fragmentShader.replace(\"#include <common>\",\"#include <common>\\nuniform sampler2D legendMap;\\nuniform vec3 legendColor;\\nuniform vec2 legendShift;\\nvarying float vKeyAo;\").replace(\"#include <color_fragment>\",\"#include <color_fragment>\\n\tfloat legendA = texture2D( legendMap, vUv + legendShift ).a;\\n\tdiffuseColor.rgb = mix( diffuseColor.rgb, legendColor, legendA );\").replace(\"#include <aomap_fragment>\",\"reflectedLight.indirectDiffuse *= vKeyAo;\\n\treflectedLight.indirectSpecular *= vKeyAo;\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatSpecularIndirect *= vKeyAo;\\n\t#endif\\n\t#include <aomap_fragment>\");};m.customProgramCacheKey=()=>low?\"mf-key-low\":\"mf-key\";return{m,u};}const LABELS_PX=1024;/** A soft radial sprite texture (used for the CRT's bloom). */function glowTexture(T){const c=document.createElement(\"canvas\");c.width=c.height=256;const ctx=c.getContext(\"2d\");if(ctx){const g=ctx.createRadialGradient(128,128,0,128,128,128);g.addColorStop(0,\"rgba(255,255,255,0.9)\");g.addColorStop(.45,\"rgba(255,255,255,0.35)\");g.addColorStop(.75,\"rgba(255,255,255,0.08)\");g.addColorStop(1,\"rgba(255,255,255,0)\");ctx.fillStyle=g;ctx.fillRect(0,0,256,256);}return new T.CanvasTexture(c);}/** Fine grain for the satin plastic (roughness + a whisper of bump). */function grainTexture(T){const c=document.createElement(\"canvas\");c.width=c.height=128;const ctx=c.getContext(\"2d\");if(ctx){const img=ctx.createImageData(128,128);const rand=mulberry32(7);for(let i=0;i<128*128;i++){const v=205+(rand()-.5)*70;img.data[i*4]=img.data[i*4+1]=img.data[i*4+2]=v;img.data[i*4+3]=255;}ctx.putImageData(img,0,0);}const t=new T.CanvasTexture(c);t.wrapS=t.wrapT=T.RepeatWrapping;t.repeat.set(3,3);return t;}/** The 3D device: renderer, scene, camera and everything built from a Dev. */function createStage(T,canvas,lowAtStart){// preserveDrawingBuffer: idle frames only redraw the screens (scissor), the rest stays\nconst renderer=new T.WebGLRenderer({canvas,antialias:true,alpha:true,powerPreference:lowAtStart?\"default\":\"high-performance\",preserveDrawingBuffer:true});renderer.setClearColor(0,0);renderer.outputColorSpace=T.SRGBColorSpace;renderer.toneMapping=T.LinearToneMapping;renderer.shadowMap.enabled=true;renderer.shadowMap.type=T.PCFShadowMap;renderer.shadowMap.autoUpdate=false;const aniso=Math.min(8,renderer.capabilities.getMaxAnisotropy());const scene=new T.Scene;const camera=new T.PerspectiveCamera(10,2,1,1e3);const root=new T.Group;const tilt=new T.Group;root.add(tilt);scene.add(root);const hemi=new T.HemisphereLight(16777215,657930,.55);const sun=new T.DirectionalLight(16777215,2.2);sun.castShadow=true;const shadowSize=low=>low?1024:2048;sun.shadow.mapSize.set(shadowSize(lowAtStart),shadowSize(lowAtStart));sun.shadow.bias=-4e-4;sun.shadow.normalBias=.01;sun.shadow.radius=4;scene.add(hemi,sun,sun.target);const labelsCanvas=document.createElement(\"canvas\");labelsCanvas.width=labelsCanvas.height=LABELS_PX;const labelsTex=new T.CanvasTexture(labelsCanvas);labelsTex.anisotropy=aniso;const knobCanvas=document.createElement(\"canvas\");knobCanvas.width=knobCanvas.height=256;const knobTex=new T.CanvasTexture(knobCanvas);knobTex.colorSpace=T.SRGBColorSpace;const lcdCanvas=document.createElement(\"canvas\");const lcdCtx=lcdCanvas.getContext(\"2d\");let lcdTex=null;const glowTex=glowTexture(T);const grain=grainTexture(T);// CRT uniforms live as long as the stage; the glass material is rebuilt with each layout\nconst crt={crtLabels:{value:labelsTex},crtTime:{value:0},crtAngle:{value:-Math.PI/2},crtMode:{value:0},crtSq:{value:new T.Vector3(1,1,0)},crtGlitch:{value:0},crtBg:{value:new T.Color(855818)},crtLine:{value:new T.Color(16765503)},crtSweep:{value:new T.Color(16765503)},crtBlip:{value:new T.Color(16765503)},crtGA:{value:new T.Color(3032831)},crtGB:{value:new T.Color(16738835)},crtBlips:{value:Array.from({length:28},()=>new T.Vector4(0,0,0,-1))},crtBlipCount:{value:0},crtRings:{value:4},crtScope:{value:new T.Vector4(1.6,.42,0,.5)},crtLiss:{value:new T.Vector4(3,2,0,0)},crtTrace:{value:1},crtHead:{value:new T.Vector2},crtMark:{value:MARK.pts.map(([x,y])=>new T.Vector2(x,y))},crtMarkCum:{value:MARK.cum.slice()},crtMarkDot:{value:new T.Vector3(MARK.dot[0],MARK.dot[1],MARK.dot[2])},crtLogoGlitch:{value:0},crtSplit:{value:.012}};// LED wall: uniforms, material and light live as long as the stage; the plane follows the layout\nconst v4s=(n,w)=>Array.from({length:n},()=>new T.Vector4(0,0,w,0));const led={ledCells:{value:null},ledGlowTex:{value:null},ledHeat:{value:null},ledMin:{value:new T.Vector2},ledSize:{value:new T.Vector2(1,1)},ledPitch:{value:6},ledPix:{value:4},ledSoft:{value:.3},ledTextOrg:{value:new T.Vector2},ledTextDim:{value:new T.Vector2(1,1)},ledHasText:{value:0},ledTextBox:{value:new T.Vector4(0,0,-1,-1)},ledColor:{value:new T.Vector3(1,1,1)},ledHot:{value:new T.Vector3(1,1,1)},ledGhostCol:{value:new T.Vector3(1,1,1)},ledGhostA:{value:.07},ledGlowA:{value:0},ledPower:{value:0},ledFade:{value:1},ledBits:{value:-1},ledNoise:{value:0},ledStep:{value:0},ledBand:{value:-1e5},ledSquash:{value:1},ledHorizon:{value:0},ledSkyTop:{value:0},ledW:{value:1},ledHorizonPx:{value:1},ledSky:{value:0},ledSkyAmt:{value:.8},ledSkyGlow:{value:new T.Vector3(1,.82,.25)},ledGA:{value:new T.Vector3(.18,.27,1)},ledGB:{value:new T.Vector3(1,.42,.07)},ledTa:{value:0},ledHeatBox:{value:new T.Vector4(0,0,1,1)},ledHeatOn:{value:0},ledRipples:{value:v4s(6,-1)},ledShocks:{value:v4s(4,-1)},ledSweeps:{value:v4s(2,0)},ledSweepCol:{value:[new T.Vector3,new T.Vector3]},ledBlasts:{value:v4s(12,-1)},ledBurstR:{value:120},ledGuideRows:{value:new T.Vector3(-1e5,-1e5,-1e5)},ledGuideCols:{value:new T.Vector2(-1e5,-1e5)},ledGuideFoot:{value:0},ledGuideA:{value:0}};const ledMat=new T.ShaderMaterial({uniforms:led,vertexShader:LED_VERT,fragmentShader:LED_FRAG,transparent:true,depthWrite:false});ledMat.extensions={...ledMat.extensions||{},derivatives:true};ledMat.toneMapped=false;// the lit text: instanced squares on the wall plane (the colour, burst, shock and sweep uniforms are shared with the wall)\nconst sq={sqOrg:{value:new T.Vector2},sqPitch:{value:4},sqPxU:{value:.01},sqMid:{value:0},sqSquash:{value:1},sqSkyTop:{value:0},sqBits:{value:-1},sqHotW:{value:.1},sqTime:{value:0},sqTwinkle:{value:0},sqScan:{value:0},sqSoft:{value:.3},sqFade:{value:1},sqShare:{value:.14},sqHover:{value:new T.Vector4(0,0,0,120)},sqBurstK:{value:new T.Vector3(1,.9,7)},sqHorizon:{value:0},ledBlasts:led.ledBlasts,ledBurstR:led.ledBurstR,ledShocks:led.ledShocks,ledSweeps:led.ledSweeps,ledSweepCol:led.ledSweepCol,ledColor:led.ledColor,ledHot:led.ledHot,ledGA:led.ledGA,ledGB:led.ledGB};const sqMat=new T.ShaderMaterial({uniforms:sq,vertexShader:SQ_VERT,fragmentShader:SQ_FRAG,transparent:true,depthWrite:false});sqMat.extensions={...sqMat.extensions||{},derivatives:true};sqMat.toneMapped=false;const sqBase=new T.PlaneGeometry(1,1);let squares=null;const ledRim={value:new T.Color(0,0,0)};// the wall's light from behind: a rim on the keycaps' back edges, no shadows\nconst backLight=new T.DirectionalLight(16777215,0);let wall=null;let wallSpec=null;let cellsTex=null;let cellsGlow=null;let heatTex=null;const occluders=[];const wallPlane=new T.Plane;const wp=new T.Vector3;const wn=new T.Vector3;let env=null;let envGlow=\"\";let content=null;let glass=null;let knob=null;let crtLight=null;let crtGlow=null;let trash=[];const keyMeshes=[];const keyUniforms=[];const legendCanvases=[];let legendFont=null;let labels=[];let legendTex=[];let legendBase=[];let topSizes=[];let size={W:1,H:1};let dpr=1;const v3=new T.Vector3;const ray=new T.Raycaster;const own=x=>{trash.push(x);return x;};function setEnv(glow){if(env)env.dispose();const es=new T.Scene;const junk=[];const box=new T.BoxGeometry(1,1,1);const wall=new T.MeshBasicMaterial({color:new T.Color(.01,.01,.01),side:T.BackSide});junk.push(box,wall);const room=new T.Mesh(box,wall);room.scale.set(40,24,40);room.position.y=7;es.add(room);const plane=new T.PlaneGeometry(1,1);junk.push(plane);const panel=(c,k,sx,sy,x,y,z,rx,ry)=>{const m=new T.MeshBasicMaterial({color:c.clone().multiplyScalar(k),side:T.DoubleSide});junk.push(m);const p=new T.Mesh(plane,m);p.scale.set(sx,sy,1);p.position.set(x,y,z);p.rotation.set(rx,ry,0);es.add(p);};const white=new T.Color(1,1,1);const warm=new T.Color(1,.97,.92);const g=new T.Color(glow);// Key tops reflect straight up (a little toward the camera), key sides\n// reflect straight back, skirts reflect the floor — so: a soft ceiling\n// panel, a dark back wall with the brand glow high up, a dim floor.\npanel(warm,.9,12,3.2,0,11,2.6,Math.PI/2,0)// ceiling softbox → the gloss band on key tops\n;panel(warm,.14,24,12,0,11.2,0,Math.PI/2,0)// dim ceiling around it (soft falloff)\n;panel(white,2.2,22,.35,0,10.9,6.6,Math.PI/2,0)// crisp strip → bright front edges\n;panel(white,1.2,.25,9,-6,10.8,1,Math.PI/2,0)// thin cross strip → glints on rounded corners\n;panel(g,.8,34,5,0,9,-15,-.5,0)// brand glow high behind → rim light on back edges\n;panel(white,.6,1.4,10,-18,6,4,0,Math.PI/2)// left strip → corner glints\n;panel(white,.35,1.4,10,18,6,2,0,-Math.PI/2)// right strip\n;panel(white,.06,40,40,0,-4.9,0,-Math.PI/2,0)// floor bounce\n;panel(warm,.4,20,6,0,-4.8,1.5,-Math.PI/2,0)// bounce card below → soft light on the key skirts\n;const pm=new T.PMREMGenerator(renderer);env=pm.fromScene(es,.03);pm.dispose();junk.forEach(j=>j.dispose());scene.environment=env.texture;envGlow=glow;}function clear(){if(content)tilt.remove(content);trash.forEach(x=>x.dispose&&x.dispose());trash=[];content=null;glass=null;knob=null;crtLight=null;crtGlow=null;keyMeshes.length=0;keyUniforms.length=0;occluders.length=0;legendCanvases.length=0;legendTex=[];legendBase=[];topSizes=[];}/** Planar UVs over a disc of radius r centred on (cx, cy). */function planarUV(geo,cx,cy,r){const p=geo.attributes.position;const uv=new Float32Array(p.count*2);for(let i=0;i<p.count;i++){uv[i*2]=(p.getX(i)-cx)/(2*r)+.5;uv[i*2+1]=(p.getY(i)-cy)/(2*r)+.5;}geo.setAttribute(\"uv\",new T.BufferAttribute(uv,2));}function build(d,look){clear();if(look.glow!==envGlow)setEnv(look.glow);const low=look.low;const ss=shadowSize(low);if(sun.shadow.mapSize.x!==ss){sun.shadow.mapSize.set(ss,ss);if(sun.shadow.map){sun.shadow.map.dispose();sun.shadow.map=null;}}const col=c=>new T.Color(c);content=new T.Group;content.position.y=-d.cropY/2;tilt.position.y=d.cropY/2;if(wall)content.add(wall);backLight.position.set(0,6,3.5);backLight.target.position.set(0,-1.5,0);content.add(backLight,backLight.target);// —— slab, with real holes for the LCD, knob, key well and grille ——\nconst shape=roundRect(new T.Shape,-d.width/2,d.cropY-1.4,d.width/2,0,.5);shape.holes.push(roundRect(new T.Path,d.lcd.x0,d.lcd.y-d.lcd.h/2,d.lcd.x1,d.lcd.y+d.lcd.h/2,d.lcd.h/2));shape.holes.push(new T.Path().absarc(d.knob.x,d.knob.y,d.knob.r+.045,0,TAU,true));shape.holes.push(roundRect(new T.Path,d.well.x0,d.well.y1,d.well.x1,d.well.y0,.16));if(d.grille)for(const y of d.grille.ys)shape.holes.push(roundRect(new T.Path,d.grille.x0,y-d.grille.h/2,d.grille.x1,y+d.grille.h/2,d.grille.h/2));const slabGeo=own(new T.ExtrudeGeometry(shape,{depth:DEV.slab,bevelEnabled:true,bevelThickness:DEV.bevel,bevelSize:DEV.bevel,bevelOffset:-DEV.bevel,bevelSegments:6,curveSegments:12}));creaseNormals(T,slabGeo,40);const slabMat=own(plastic(T,low,{color:col(look.slab),roughness:.74,roughnessMap:grain,bumpMap:grain,bumpScale:.35,metalness:0,clearcoat:.12,clearcoatRoughness:.5}));slabFinish(T,slabMat,{w:d.width,h:-d.cropY,top:0,rim:col(look.glow).multiplyScalar(.6),cavity:.8,led:ledRim},low);const slab=new T.Mesh(slabGeo,slabMat);slab.position.z=-(DEV.slab+DEV.bevel);slab.castShadow=slab.receiveShadow=true;content.add(slab);occluders.push(slab);// matte and barely reflective, so the well reads deep where a row is shorter\nconst floorMat=own(new T.MeshStandardMaterial({color:col(look.well),roughness:.92,metalness:0,envMapIntensity:.1}));// its top stays under the slab's edge (y = 0) but above the knob hole (−0.145)\nconst floor=new T.Mesh(own(new T.PlaneGeometry(d.width-.2,-d.cropY+.9)),floorMat);floor.position.set(0,d.cropY/2-.55,DEV.floor);floor.receiveShadow=true;content.add(floor);// —— LCD ——\nconst lw=d.lcd.x1-d.lcd.x0;const lcdW=low?1024:2048// repainted per typed character, so half size on the low tier\n;lcdCanvas.width=lcdW;lcdCanvas.height=Math.max(64,Math.round(lcdW*d.lcd.h/lw));if(lcdTex)lcdTex.dispose();lcdTex=new T.CanvasTexture(lcdCanvas);lcdTex.colorSpace=T.SRGBColorSpace;lcdTex.anisotropy=aniso;const lcdMat=own(plastic(T,low,{color:0,emissive:16777215,emissiveMap:lcdTex,roughness:.18,clearcoat:1,clearcoatRoughness:.05,envMapIntensity:.2}));lcdMat.toneMapped=false;const lcd=new T.Mesh(own(new T.PlaneGeometry(lw,d.lcd.h)),lcdMat);lcd.position.set((d.lcd.x0+d.lcd.x1)/2,d.lcd.y,-.075);lcd.receiveShadow=true;content.add(lcd);// —— knob: glossy dome with the mark; turning it switches the screen ——\nconst kctx=knobCanvas.getContext(\"2d\");if(kctx){kctx.fillStyle=\"#000\";kctx.fillRect(0,0,256,256);drawMark(kctx,128,128,120,\"#6c6f66\");kctx.fillStyle=\"#8a8d82\";kctx.fillRect(124,14,8,30)// pointer notch\n;}knobTex.needsUpdate=true;const knobGeo=own(new T.LatheGeometry([[.202,-.28],[.202,-.02],[.2,.025],[.185,.052],[.15,.072],[.09,.083],[0,.085]].map(([x,y])=>new T.Vector2(x,y)),64));knobGeo.rotateX(Math.PI/2);planarUV(knobGeo,0,0,d.knob.r);const knobMat=own(plastic(T,low,{color:1645081,roughness:.3,clearcoat:1,clearcoatRoughness:.05,emissive:16777215,emissiveMap:knobTex,emissiveIntensity:1}));knob=new T.Mesh(knobGeo,knobMat);knob.position.set(d.knob.x,d.knob.y,0);knob.castShadow=knob.receiveShadow=true;content.add(knob);// —— keycaps ——\nlegendFont=look.legend;labels=look.keys.map(k=>k.label);d.cells.forEach((c,i)=>{const k=look.keys[i];if(!k)return;const g=keycapGeometry(T,c.w-DEV.gap,1-DEV.gap,look.keyH,col(k.color),col(k.gradient?k.color2:k.color),k.gradient);own(g.geo);const lc=document.createElement(\"canvas\");paintLegend(lc,k.label,g.topW,g.topD,look.legend);const tex=own(new T.CanvasTexture(lc));tex.anisotropy=aniso;const base=col(k.legend);const{m,u}=keyMaterial(T,tex,base.clone(),look.gloss,low);own(m);const mesh=new T.Mesh(g.geo,m);mesh.position.set(c.x,c.y,DEV.floor);mesh.castShadow=mesh.receiveShadow=true;content.add(mesh);keyMeshes[i]=mesh;keyUniforms[i]=u;legendCanvases[i]=lc;legendTex[i]=tex;legendBase[i]=base;topSizes[i]=[g.topW,g.topD];});// —— CRT: raised bezel, standoffs, tube ring, throat, curved glass ——\nconst b=d.bezel;const crtD=d.crt;const bezShape=roundRect(new T.Shape,b.x0,b.y1,b.x1,b.y0,.2);bezShape.holes.push(new T.Path().absarc(crtD.x,crtD.y,crtD.glassR+.03,0,TAU,true));const bezGeo=own(new T.ExtrudeGeometry(bezShape,{depth:.06,bevelEnabled:true,bevelThickness:.04,bevelSize:.04,bevelOffset:-.04,bevelSegments:6,curveSegments:20}));creaseNormals(T,bezGeo,40);const bezMat=own(plastic(T,low,{color:col(look.slab).offsetHSL(0,0,.012),roughness:.7,roughnessMap:grain,bumpMap:grain,bumpScale:.3,clearcoat:.25,clearcoatRoughness:.4}));slabFinish(T,bezMat,{w:d.width,h:-d.cropY,top:b.y0,rim:col(look.glow).multiplyScalar(.4),cavity:0,led:ledRim},low);const bez=new T.Mesh(bezGeo,bezMat);bez.position.z=DEV.raise-.1;bez.castShadow=bez.receiveShadow=true;content.add(bez);occluders.push(bez);const metal=own(new T.MeshStandardMaterial({color:9212041,metalness:1,roughness:.3}));const standoff=own(new T.LatheGeometry([[.108,-.02],[.108,.006],[.1,.022],[.08,.03],[.08,.085],[.074,.1],[.058,.108],[.036,.1],[.032,.05],[0,.05]].map(([x,y])=>new T.Vector2(x,y)),32));standoff.rotateX(Math.PI/2);const si=.25;for(const[x,y]of[[b.x0+si,b.y0-si],[b.x1-si,b.y0-si],[b.x0+si,b.y1+si],[b.x1-si,b.y1+si]]){const s=new T.Mesh(standoff,metal);s.position.set(x,y,DEV.raise);s.castShadow=s.receiveShadow=true;content.add(s);}const tubeMat=own(plastic(T,low,{color:526602,roughness:.2,clearcoat:1,clearcoatRoughness:.06}));const tz=DEV.raise+crtD.tube*.75;const torus=new T.Mesh(own(new T.TorusGeometry(crtD.R,crtD.tube,40,160)),tubeMat);torus.position.set(crtD.x,crtD.y,tz);torus.castShadow=torus.receiveShadow=true;content.add(torus);occluders.push(torus);const throatMat=own(new T.MeshStandardMaterial({color:197379,roughness:.85,side:T.DoubleSide}));const th=tz-DEV.glassRim+.01;const throat=new T.Mesh(own(new T.CylinderGeometry(crtD.R-crtD.tube*.55,crtD.glassR+.02,th,128,1,true)),throatMat);throat.rotation.x=Math.PI/2;throat.position.set(crtD.x,crtD.y,tz-th/2);throat.receiveShadow=true;content.add(throat);const gR=crtD.glassR;const cap=DEV.glassCap;const Rs=(gR*gR+cap*cap)/(2*cap);const glassGeo=own(new T.SphereGeometry(Rs,128,40,0,TAU,0,Math.asin(gR/Rs)));glassGeo.rotateX(Math.PI/2);planarUV(glassGeo,0,0,gR);const glassMat=own(plastic(T,low,{color:0,emissive:16777215,roughness:.08,metalness:0,clearcoat:.8,clearcoatRoughness:.04,envMapIntensity:.4}));glassMat.toneMapped=false;glassMat.defines={...glassMat.defines||{},USE_UV:\"\"};glassMat.extensions={...glassMat.extensions||{},derivatives:true};glassMat.onBeforeCompile=s=>{Object.assign(s.uniforms,crt);s.fragmentShader=s.fragmentShader.replace(\"#include <common>\",\"#include <common>\\n\"+CRT_PARS).replace(\"#include <emissivemap_fragment>\",\"totalEmissiveRadiance = crtShade( vUv );\");};glassMat.customProgramCacheKey=()=>low?\"mf-crt-low\":\"mf-crt\";glass=new T.Mesh(glassGeo,glassMat);glass.position.set(crtD.x,crtD.y,DEV.glassRim-(Rs-cap));glass.receiveShadow=true;content.add(glass);occluders.push(glass);// phosphor light on the ring and bezel, plus a soft bloom over the glass\ncrtLight=new T.PointLight(16765503,0,3.6,2);crtLight.position.set(crtD.x,crtD.y,DEV.glassRim+.7);content.add(crtLight);const glowMat=own(new T.MeshBasicMaterial({map:glowTex,color:16765503,transparent:true,opacity:0,blending:T.AdditiveBlending,depthWrite:false,depthTest:false,toneMapped:false}));crtGlow=new T.Mesh(own(new T.PlaneGeometry(gR*2.5,gR*2.5)),glowMat);crtGlow.position.set(crtD.x,crtD.y,DEV.glassRim+DEV.glassCap+.02);crtGlow.renderOrder=10;content.add(crtGlow);tilt.add(content);renderer.shadowMap.needsUpdate=true;}function repaintLegends(){if(!legendFont)return;legendCanvases.forEach((lc,i)=>{const[w,d]=topSizes[i];paintLegend(lc,labels[i],w,d,legendFont);legendTex[i].needsUpdate=true;});}function setFit(fit,d,o){size={W:fit.W,H:fit.H};root.rotation.x=-d.alpha;dpr=o.dpr;renderer.setPixelRatio(dpr);renderer.setSize(fit.W,fit.H,false);renderer.toneMappingExposure=clamp(o.exposure,.2,3);camera.fov=2*Math.atan(fit.H/2/fit.f)*180/Math.PI;camera.aspect=fit.W/fit.H;camera.near=Math.max(.1,fit.D-30);camera.far=fit.D+30;camera.position.set(0,fit.yc,fit.D);camera.setViewOffset(fit.W,fit.H,0,fit.offY,fit.W,fit.H);camera.updateProjectionMatrix();// Key light from up-left, toward the camera: it lights the key tops\n// (and leaves the skirts in shade) but sits ~25° off the mirror\n// angle, so it never glints straight back off the glossy tops.\nconst ca=Math.cos(d.alpha);const sa=Math.sin(d.alpha);const cy=d.cropY/2;sun.target.position.set(0,cy*ca,-cy*sa);sun.position.set(-11,cy*ca+13,-cy*sa+10.4);sun.intensity=2.2*clamp(o.shadow,0,2);hemi.intensity=.55+.2*(1-clamp(o.shadow,0,2)/2);const ext=Math.max(d.width,-d.cropY)/2+1.5;const sc=sun.shadow.camera;sc.left=-ext;sc.right=ext;sc.top=ext;sc.bottom=-ext;sc.near=1;sc.far=40;sc.updateProjectionMatrix();renderer.shadowMap.needsUpdate=true;}/** Changes the pixel ratio in place (adaptive quality); the caller forces a full frame. */function setDpr(next){if(Math.abs(next-dpr)<.01)return;dpr=next;renderer.setPixelRatio(dpr);renderer.setSize(size.W,size.H,false);}function setTilt(rx,ry){tilt.rotation.x=rx;tilt.rotation.y=ry;}function setKnob(angle){if(knob)knob.rotation.z=-angle;}function setCrtColors(c){crt.crtBg.value.set(c.bg);crt.crtLine.value.set(c.line);crt.crtSweep.value.set(c.sweep);crt.crtBlip.value.set(c.blip);crt.crtGA.value.set(c.gA);crt.crtGB.value.set(c.gB);if(crtLight)crtLight.color.set(c.sweep);if(crtGlow)crtGlow.material.color.set(c.sweep);}/** Screen power 0–1: drives the phosphor light and bloom. Changing it needs a full render. */function setCrtPower(k){if(crtLight)crtLight.intensity=1.6*k;if(crtGlow)crtGlow.material.opacity=.13*k;}/** Device units → stage px, through the current tilt. */function project(x,y,z){if(!content)return[0,0];v3.set(x,y,z).applyMatrix4(content.matrixWorld).project(camera);return[(v3.x+1)/2*size.W,(1-v3.y)/2*size.H];}/** Stage px → uv on the glass, or null. */function hitGlass(px,py){if(!glass)return null;ray.setFromCamera({x:px/size.W*2-1,y:1-py/size.H*2},camera);const hit=ray.intersectObject(glass,false)[0];return hit&&hit.uv?[hit.uv.x,hit.uv.y]:null;}/** Places the LED wall plane (or removes it): upright behind the slab, leaning back by beta. */function setWall(s){if(wall){if(wall.parent)wall.parent.remove(wall);wall.geometry.dispose();wall=null;}wallSpec=s;if(!s)return;wall=new T.Mesh(new T.PlaneGeometry(2*s.uHalf,s.vTop-s.vBot),ledMat);const vm=(s.vBot+s.vTop)/2;wall.position.set(...wallLocal(s.yw,s.beta,0,vm));wall.rotation.x=Math.PI/2-s.beta;wall.frustumCulled=false;if(squares)wall.add(squares);if(content)content.add(wall);sq.sqPxU.value=s.pxU;sq.sqMid.value=vm;led.ledMin.value.set(s.min[0],s.min[1]);led.ledSize.value.set(s.size[0],s.size[1]);}function dataTex(data,w,h,smooth){const t=new T.DataTexture(data,w,h,T.RGBAFormat,T.UnsignedByteType);t.magFilter=t.minFilter=smooth?T.LinearFilter:T.NearestFilter;t.needsUpdate=true;return t;}/** The sampled text: one texel per cell plus its blurred glow, and one instanced square per lit cell. */function setLedCells(sm){if(cellsTex)cellsTex.dispose();if(cellsGlow)cellsGlow.dispose();if(squares){if(squares.parent)squares.parent.remove(squares);squares.geometry.dispose();squares=null;}if(sm&&sm.lit){const g=new T.InstancedBufferGeometry;g.index=sqBase.index;g.setAttribute(\"position\",sqBase.attributes.position);g.setAttribute(\"aCell\",new T.InstancedBufferAttribute(sm.inst.cell,2));g.setAttribute(\"aInfo\",new T.InstancedBufferAttribute(sm.inst.info,4));g.setAttribute(\"aRand\",new T.InstancedBufferAttribute(sm.inst.rand,4));g.instanceCount=sm.lit;squares=new T.Mesh(g,sqMat);squares.frustumCulled=false;squares.renderOrder=1;if(wall)wall.add(squares);}cellsTex=sm?dataTex(sm.cells,sm.cols,sm.rows,false):null;cellsGlow=sm?dataTex(sm.glow,sm.cols,sm.rows,true):null;led.ledCells.value=cellsTex;led.ledGlowTex.value=cellsGlow;led.ledTextDim.value.set(sm?sm.cols:1,sm?sm.rows:1);led.ledHasText.value=sm&&sm.lit?1:0;}/** Trail / spark heat over the visible cells; re-uploaded only while it changes. */function setHeat(data,cols,rows){if(!data){if(heatTex)heatTex.dispose();heatTex=null;}else if(!heatTex||heatTex.image.data!==data){if(heatTex)heatTex.dispose();heatTex=dataTex(data,cols,rows,false);}else heatTex.needsUpdate=true;led.ledHeat.value=heatTex;}/** The LED light on the device: slab / bezel top edges and the back light. sRGB colour. */function setLedLight(rgb,rim,back){ledRim.value.setRGB(rgb[0],rgb[1],rgb[2],T.SRGBColorSpace).multiplyScalar(rim);backLight.color.setRGB(rgb[0],rgb[1],rgb[2],T.SRGBColorSpace);backLight.intensity=back;}/** Stage px → wall px where the wall is the first thing the ray meets (not behind the device), or null. */function hitWall(px,py){if(!wall||!wallSpec)return null;ray.setFromCamera({x:px/size.W*2-1,y:1-py/size.H*2},camera);const h=ray.intersectObjects([wall,...occluders],false)[0];if(!h||h.object!==wall||!h.uv)return null;return[wallSpec.min[0]+h.uv.x*wallSpec.size[0],wallSpec.min[1]+h.uv.y*wallSpec.size[1]];}/** Stage px → wall px on the wall's plane, even where the device hides it (ripples from keys). */function wallPoint(px,py){if(!wall||!wallSpec)return null;wall.updateMatrixWorld();wn.set(0,0,1).transformDirection(wall.matrixWorld);wp.setFromMatrixPosition(wall.matrixWorld);wallPlane.setFromNormalAndCoplanarPoint(wn,wp);ray.setFromCamera({x:px/size.W*2-1,y:1-py/size.H*2},camera);if(!ray.ray.intersectPlane(wallPlane,wp))return null;wall.worldToLocal(wp);return[wp.x/wallSpec.pxU,(wp.y+(wallSpec.vBot+wallSpec.vTop)/2)/wallSpec.pxU];}function setKeyGlitch(g){keyUniforms.forEach((u,i)=>{if(g&&g.key===i&&g.frame){u.legendShift.value.set((g.frame===1?-1:1.5)*g.split,0);u.legendColor.value.set(g.frame===1?g.a:g.b);}else{u.legendShift.value.set(0,0);u.legendColor.value.copy(legendBase[i]);}});}function sync(){scene.updateMatrixWorld(true);}/** Full frame, or only the given stage-px rects (x, y, w, h) — the rest of the canvas is kept. */function render(rects){if(!rects){renderer.setScissorTest(false);renderer.render(scene,camera);return;}renderer.setScissorTest(true);for(const[x,y,w,h]of rects){if(w<=0||h<=0)continue;renderer.setScissor(x,size.H-y-h,w,h);renderer.render(scene,camera);}renderer.setScissorTest(false);}function dispose(){clear();if(env)env.dispose();labelsTex.dispose();knobTex.dispose();glowTex.dispose();grain.dispose();if(lcdTex)lcdTex.dispose();setWall(null);setLedCells(null);setHeat(null,0,0);ledMat.dispose();sqMat.dispose();sqBase.dispose();renderer.dispose();}return{build,repaintLegends,setFit,setDpr,setTilt,setKnob,setCrtColors,setCrtPower,setKeyGlitch,project,hitGlass,setWall,setLedCells,setHeat,setLedLight,hitWall,wallPoint,led,sq,sync,render,dispose,crt,keyMeshes,labelsCanvas,labelsTex,lcdCtx,lcdCanvas,lcdTexture:()=>lcdTex,shadowsDirty:()=>{renderer.shadowMap.needsUpdate=true;}};}// ————————————————————————————————————————————————————————————————\n// Typewriter — writes into the LCD without React re-renders\n// ————————————————————————————————————————————————————————————————\nfunction useTypewriter(o){const timers=useTimers();const cb=React.useRef(o);cb.current=o;const linesKey=o.lines.join(\"\\n\");React.useEffect(()=>{const lines=cb.current.lines.length?cb.current.lines:DEFAULT_LINES;const set=s=>cb.current.onText(s);const say=s=>cb.current.onAnnounce(s);timers.clear();if(o.still){set(o.preview||o.message||lines[0]||\"\");return;}const ms=1e3/Math.max(4,o.cps);if(o.message!==null){cb.current.onGlitch();say(o.message);if(o.reduced){set(o.message);return;}const msg=o.message;let i=0;set(\"\");const step=()=>{i++;set(msg.slice(0,i));if(i<msg.length)timers.after(ms,step);};timers.after(ms,step);return;}say(\"\")// idle lines are not announced; emptied, a returning message is read again\n;// Idle: type a line, hold, erase, next\nlet idx=0;if(o.reduced){const show=()=>{set(lines[idx%lines.length]);idx++;timers.after(MOTION.screen.idleFade*1e3,show);};show();return;}const typeLine=()=>{const line=lines[idx%lines.length];let i=0;const step=()=>{i++;set(line.slice(0,i));if(i<line.length)timers.after(ms,step);else timers.after(MOTION.screen.hold*1e3,erase);};const erase=()=>{i--;set(line.slice(0,Math.max(0,i)));if(i>0)timers.after(ms/MOTION.screen.erase,erase);else{idx++;timers.after(300,typeLine);}};step();};set(\"\");timers.after(400,typeLine);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[o.message,o.still,o.reduced,o.cps,o.preview,linesKey]);}function makeLive(mode){return{hover:-1,focus:-1,down:new Uint8Array(16),press:new Float32Array(16),vel:new Float32Array(16),kg:-1,kgT:0,kgOn:false,tx:0,ty:0,rx:0,ry:0,vx:0,vy:0,lcdText:\"\",lcdDirty:true,lcdG:-1,lcdKey:\"\",typedAt:0,radar:{angle:-Math.PI/2,mul:1,hover:false,px:0,py:0,dragX:-1,glitchUntil:0,hoverBlip:-1,lit:new Float32Array(32),ping:new Float64Array(32).fill(-9),logoLit:new Float32Array(8),logoIdx:0,logoGlitchUntil:0,nextLogo:0,overLogo:false},crt:{mode,to:mode,sw:-1,boot:-1,power:-1,next:0,F:1.6,A:.42,ph:0,li:0,ld:0,traceT0:0,knob:0,knobV:0,knobTo:0,labelsKey:\"\"},bez:[0,0,0,0],glassRect:[0,0,0,0],lcdRect:[0,0,0,0],crtC:[0,0],keyC:[],dragClientX:-1,ptr:{x:0,y:0,on:false},skyN:0,skyDt:0,forceFull:false,dprScale:1,adapt:{since:0,avg:0,frames:0},led:{t0:-1,armed:false,ptr:{x:0,y:0,on:false,mouse:false},hx:0,hy:0,hs:0,ripples:[],shocks:[],sweeps:[],blasts:[],last:{x:0,y:0,t:-1},off:0,heat:new Float32Array(0),bytes:null,heatLive:false,heatDt:0,n:0,light:-1,dirty:true,readout:\"\"},wallRect:[0,0,0,0]};}/** Restarts the adaptive-quality window, so a decision only rests on frames of the current scene and size. */function rearmAdapt(live){live.adapt.since=live.adapt.avg=live.adapt.frames=0;}const now=()=>typeof performance!==\"undefined\"?performance.now()/1e3:0;const ease=x=>x<=0?0:x>=1?1:x*x*(3-2*x);/** CSS-style cubic-bezier easing (x solved by Newton steps, then bisection). */function bezier([x1,y1,x2,y2]){const f=(t,a,b)=>((1-3*b+3*a)*t+(3*b-6*a))*t*t+3*a*t;const df=(t,a,b)=>3*(1-3*b+3*a)*t*t+2*(3*b-6*a)*t+3*a;return x=>{if(x<=0)return 0;if(x>=1)return 1;let t=x;for(let i=0;i<6;i++){const d=df(t,x1,x2);if(Math.abs(d)<1e-6)break;t-=(f(t,x1,x2)-x)/d;}if(!(t>=0&&t<=1)||Math.abs(f(t,x1,x2)-x)>1e-4){let lo=0;let hi=1;t=x;for(let i=0;i<24;i++){if(f(t,x1,x2)<x)lo=t;else hi=t;t=(lo+hi)/2;}}return f(t,y1,y2);};}const riseEase=bezier(MOTION.led.riseEase);export default function MoavciFooter(props){const{keys:keysProp=DEFAULT_KEYS,navItems:navProp=DEFAULT_NAV,screenLines=DEFAULT_LINES,copyright=\"\\xa9 2026 MoAVCI\",bigText=\"Let’s talk.\",bigTextFont,bigTextSize=13,bigTextSpacing=-.045,bigTextColor=PAPER,bigTextStyle=\"led\",bigTextAlign=\"left\",bigTextOverlap=22,bigTextTag=\"p\",bigTextLeading=BIG_LINE,bigTextFit=true,textTone=\"black\",textDepth=16,pixelSize=4,pixelGap=2,edgePixel=55,ghostOpacity=7,ghostColor=\"#FFFFFF\",ledGlow=8,ledSoftness=.3,ledTwinkle=true,ledHover=true,ledHoverRadius=70,ledBurst=1,ledGuides=true,ledScanlines=true,wallPerspective=100,wallDistance=1.2,wallLight=1,revealStyle=\"bits\",bootTime=1.2,riseFrom=45,riseTime=3.2,revealReplay=false,previewReveal=100,status=\"Available for work\",version=\"v2.6\",readout=true,statusColor=\"#FFD23F\",blips:blipsProp=DEFAULT_BLIPS,blipCount=0,logos=[],logoMode=\"center\",logoSize=18,screenModes=\"radar\",cycleSeconds=8,backdrop=\"none\",backdropSize=9,backdropStrength=.8,backdropSpeed=.35,backdropTrail=true,backdropRipples=false,stageColor=\"#FFD23F\",glowColor=\"#FFD23F\",slabColor=\"#212220\",wellColor=\"#080908\",keyStyle=\"accents\",monoColor=INK_KEY,monoLegend=PAPER,screenBg=\"#0B0D08\",screenText=\"#FFD23F\",ledColor=\"#FFD23F\",radarBg=\"#0D0F0A\",radarLines=\"#FFD23F\",sweepColor=\"#FFD23F\",blipColor=\"#FFD23F\",navBg=\"#0C0D0B\",navText=PAPER,navActive=\"#FFD23F\",glitchColorA=\"#2E46FF\",glitchColorB=\"#FF6A13\",legendFont,legendSize=21,legendSpacing=.04,screenFont,navFont,navSize=17,viewAngle=54,lens=9,keySize=92,skySpace=28,keyHeight=.6,pressDistance=.12,gloss=.8,shadow=1,exposure=1,tilt=1.5,typingSpeed=38,cursorStyle=\"block\",touchPreview=true,turnSeconds=4,rings=2,followCursor=false,glitch=true,glitchIntensity=1,sound=false,volume=.5,stiffness=700,damping=30,speed=1,mobileBreakpoint=640,quality=\"auto\",previewKey=-1,previewScreen=\"\",previewAngle=120,previewBlip=-1,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const prefersReduced=usePrefersReducedMotion();const still=isCanvas;const reduced=prefersReduced&&!isCanvas;const uid=React.useId().replace(/[^a-zA-Z0-9]/g,\"\");const cls=`mfoot-${uid}`;const keys=(keysProp&&keysProp.length?keysProp:DEFAULT_KEYS).slice(0,16);const nav=navProp||[];const blips=(blipsProp&&blipsProp.length?blipsProp:DEFAULT_BLIPS).slice(0,clamp(Math.round(blipCount),0,24));const split=MOTION.glitch.split*glitchIntensity;const glitchOn=glitch&&!still&&!reduced;const fixedMode=screenModes===\"cycle\"?-1:Math.max(0,CRT_MODES.indexOf(screenModes));const live=React.useRef(makeLive(Math.max(0,fixedMode))).current;const timers=useTimers();const[mounted,setMounted]=React.useState(false);React.useEffect(()=>setMounted(true),[]);// —— size: component width, viewport width, nav card height ——————————\nconst rootRef=React.useRef(null);const navRef=React.useRef(null);const bigMeasureRef=React.useRef(null);const hasBig=!!bigText.trim();const[dims,setDims]=React.useState({w:0,vw:0,nav:0,big:0});useIsoLayoutEffect(()=>{const el=rootRef.current;if(!el)return;const measure=()=>{const w=el.offsetWidth;const vw=window.innerWidth;const n=navRef.current?navRef.current.offsetHeight:0;const b=bigMeasureRef.current?bigMeasureRef.current.offsetWidth:0;setDims(s=>s.w===w&&s.vw===vw&&s.nav===n&&s.big===b?s:{w,vw,nav:n,big:b});};measure();const ro=typeof ResizeObserver===\"undefined\"?null:new ResizeObserver(measure);ro?.observe(el);if(navRef.current)ro?.observe(navRef.current);if(bigMeasureRef.current)ro?.observe(bigMeasureRef.current);window.addEventListener(\"resize\",measure);return()=>{ro?.disconnect();window.removeEventListener(\"resize\",measure);};},[nav.length,hasBig]);const Wm=dims.w||1440;const phone=Math.min(Wm,dims.vw||Wm)<mobileBreakpoint;const mode=phone?\"phone\":\"wide\";const availU=Math.round(Wm*.995/clamp(keySize,40,240)*4)/4;const keysSig=keys.map(k=>`${keyWidth(k)}:${clamp(Math.round(k.row||1),1,4)}`).join(\",\");const dev=React.useMemo(()=>computeLayout(mode,availU,keys,viewAngle),[mode,availU,keysSig,viewAngle])// eslint-disable-line react-hooks/exhaustive-deps\n;const pad=Math.round(clamp(Wm*.026,16,52));const navNeed=dims.nav?dims.nav+pad*2:pad*2;// big text: Size % of the width, shrunk to fit one line per line; the device covers Overlap % of the last line\nconst bigLead=clamp(bigTextLeading,.7,1.6);const bigLines=hasBig?bigText.replace(/\\s+$/,\"\").split(\"\\n\").length:0;const bigWant=Wm*clamp(bigTextSize,2,40)*(phone?1.7:1)/100;const bigPx=hasBig?Math.max(12,dims.big?Math.min(bigWant,(Wm-pad*2)*100/dims.big):bigWant):0;const bigShow=bigPx*bigLead*(bigLines-clamp(bigTextOverlap,0,80)/100);const bigGap=hasBig?Math.max(12,pad*.6):0;// —— LED text: laid out and sampled once the font is in ————————————————\nconst ledStyle=hasBig&&(bigTextStyle===\"led\"||bigTextStyle===\"pixels\");// the copy as a typographer would set it: curly quotes and apostrophes, real dashes and ellipses\nconst bigCopy=smartType(bigText.replace(/\\s+$/,\"\"));const domStyle=ledStyle?\"pixels\":bigTextStyle;// phones get a finer diode grid, so the headline keeps its resolution on a narrow panel\nconst ledPix=clamp(Math.round(phone?Math.max(2,pixelSize*.75):pixelSize),1,24);const ledGap=clamp(Math.round(phone?Math.max(1,pixelGap*.5):pixelGap),0,24);const pitch=ledPix+ledGap;const bigFamily=bigTextFont&&bigTextFont.fontFamily||FALLBACK_SANS;const bigWeightCss=`${bigTextFont&&bigTextFont.fontStyle||\"normal\"} ${bigTextFont&&bigTextFont.fontWeight||700}`;const trackEm=clamp(bigTextSpacing,-.2,.5);const ledOv=clamp(bigTextOverlap,0,80)/100;const[fontTick,setFontTick]=React.useState(0);React.useEffect(()=>{if(!ledStyle)return;const fonts=document.fonts;let dead=false;const done=()=>{if(!dead)setFontTick(t=>t+1);};if(!fonts||!fonts.load){done();return;}const timer=window.setTimeout(done,2500)// never wait forever\n;fonts.load(`${bigWeightCss} 64px ${bigFamily}`,bigText.trim()||\"A\").then(done,done);fonts.addEventListener?.(\"loadingdone\",done);return()=>{dead=true;clearTimeout(timer);fonts.removeEventListener?.(\"loadingdone\",done);};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[ledStyle,bigFamily,bigWeightCss]);// the text band: below the menu (and, on phones, the info lines), down to just above the console\nconst hudOn=!!(status||copyright);const typeGap=Math.max(12,Math.round(pad*.6));const typeTop=Math.round(phone?pad+dims.nav+12+(hudOn?44:0)+typeGap:pad+dims.nav+typeGap);// the largest box the type may fill, measured on its own plane: a share of the width, never of the text\nconst bandH=Math.round(phone?clamp(Wm*.42,120,300):clamp(Wm*.27,150,480));// the pixel grid (an even number of columns, so the middle falls between two)\nconst panelW=Math.max(40,Wm-pad*2);const panelInset=Math.max(10,Math.round(pitch*1.5));const gCols=Math.max(8,Math.floor((panelW-panelInset*2)/pitch/2)*2);const maxRows=Math.max(6,Math.floor((bandH-panelInset*2)/pitch));const ledShow=0;void ledOv;const measureRef=React.useRef(null);const ledSample=React.useMemo(()=>{if(!ledStyle||!fontTick||!dims.w)return null;if(!measureRef.current)measureRef.current=document.createElement(\"canvas\").getContext(\"2d\");const ctx=measureRef.current;if(!ctx)return null;ctx.fontKerning=\"normal\";const text=bigCopy;// the headline sits on the panel's grid, two diodes in from each side\nconst maxW=Math.max(pitch*4,(gCols-4)*pitch);const hang=pitch*1.5;let l;const boxH=Math.max(pitch*6,(maxRows-3)*pitch);if(bigTextFit){// Fit Width: the widest line's letters span the measure ink to ink; punctuation hangs into the margin;\n// a block taller than the band scales down instead of spilling\n// the height that shows: the line boxes above, then the last line's caps and its real descenders\nconst inkH=q=>(q.lines.length-1)*q.lineH+q.ascent+Math.max(0,ctx.measureText(q.lines[q.lines.length-1]||\"\").actualBoundingBoxDescent);const fitBox=t=>{let q=fitLed(ctx,t,{family:bigFamily,weight:bigWeightCss,trackEm,leading:bigLead,maxW,hang,pitch});for(let n=0;n<3&&inkH(q)>boxH;n++)q=layoutText(ctx,t,{family:bigFamily,weight:bigWeightCss,size:q.px*boxH/inkH(q)*.98,trackEm,leading:bigLead,maxW:1e6,fit:false,pitch});return q;};l=fitBox(text);// a long line without breaks of its own: try balanced 2–4 line settings and keep the largest type\nif(!text.includes(\"\\n\")){const words=text.split(/\\s+/).filter(Boolean);setFont(ctx,bigWeightCss,100,bigFamily,trackEm*100);const ww=words.map(w=>lineWidth(ctx,w,trackEm*100));const sp=lineWidth(ctx,\" \",0);const total=ww.reduce((x,y)=>x+y,0)+sp*Math.max(0,words.length-1);for(let n=2;n<=Math.min(4,words.length);n++){const target=total/n;const lines=[];let cur=[];let cw=0;words.forEach((w,i)=>{const add=(cur.length?sp:0)+ww[i];if(cur.length&&cw+add/2>target&&lines.length<n-1){lines.push(cur.join(\" \"));cur=[];cw=0;}cw+=(cur.length?sp:0)+ww[i];cur.push(w);});if(cur.length)lines.push(cur.join(\" \"));const q=fitBox(lines.join(\"\\n\"));// a break has to buy clearly larger type: a single line that spans the measure reads better on the tilted plane\nif(q.px>l.px*1.2)l=q;}}}else{// Size % of the width; a line too wide shrinks the whole block to fit (words only break below a legible floor)\nlet size=bigWant;setFont(ctx,bigWeightCss,size,bigFamily,trackEm*size);const widest=Math.max(1,...text.split(\"\\n\").map(s=>lineWidth(ctx,s,trackEm*size)));if(widest>maxW*.96)size=Math.max(8,size*maxW*.96/widest);l=layoutText(ctx,text,{family:bigFamily,weight:bigWeightCss,size,trackEm,leading:bigLead,maxW,fit:true,pitch});}setFont(ctx,l.weight,l.px,l.family,l.tracking);const desc=Math.max(0,ctx.measureText(l.lines[l.lines.length-1]||\"\").actualBoundingBoxDescent);return{...sampleLed(l,{W:gCols*pitch,pad:pitch*2,hang,align:bigTextAlign,size:ledPix,gap:ledGap,edge:clamp(edgePixel,20,100)/100,glow:0,reveal:revealStyle}),desc};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[ledStyle,fontTick,dims.w,bigCopy,bigFamily,bigWeightCss,bigWant,bigTextFit,trackEm,bigLead,pitch,ledPix,ledGap,edgePixel,revealStyle,bigTextAlign,gCols,maxRows]);// the plane's rows: the type's ink, a margin on the far side (the rain's head, hops) and a smaller one on the near\nconst ledInk=React.useMemo(()=>{if(!ledSample)return null;let rMin=ledSample.rows;let rMax=-1;for(let i=0;i<ledSample.lit;i++){const r=ledSample.rows-1-ledSample.inst.cell[i*2+1];rMin=Math.min(rMin,r);rMax=Math.max(rMax,r);}return rMax<rMin?null:{rMin,rMax};},[ledSample]);const gRows=ledInk?ledInk.rMax-ledInk.rMin+1+MOTION.panel.far+MOTION.panel.near:maxRows;// the plane lies on the keyboard's surface: tilted back by the View Angle (CSS rotateX about its near edge) and seen\n// through a perspective whose depth makes its far edge Text Depth % narrower — 0 is a parallel view\nconst planeA=dev.alpha;const planeTilt=ledStyle&&planeA>.009;const planeH=gRows*pitch;const depthP=clamp(textDepth,0,40)/100;const planeD=planeTilt&&depthP>0?Math.max(planeH*Math.sin(planeA)*(1-depthP)/depthP,panelW*.6):0;const bandProj=planeTilt?planeH*Math.cos(planeA)*(planeD?planeD/(planeD+planeH*Math.sin(planeA)):1):planeH;// room above the grid for squares hopping off the surface\nconst hopPad=Math.round(clamp(pitch*10,40,96));const textShow=ledStyle?0:bigShow;// how far the CRT's dome rises above the slab's top edge (the fit moves with the sky, it never changes shape)\nconst domePx=React.useMemo(()=>fitCamera(dev,Wm,lens,0,96).edge,[dev,Wm,lens]);// LED text sets the sky: the tilted plane fills the band exactly, no empty stage above or below it\nconst sky=ledStyle?Math.max(navNeed,Math.round(typeTop+bandProj+typeGap-domePx)):phone?navNeed+(hudOn?44:0)+bandH+typeGap:Math.max(clamp(Wm*clamp(skySpace,0,80)/100,navNeed,640),navNeed-pad+bandH+typeGap*2,hasBig?navNeed-pad+bigGap+textShow:0);const fit=React.useMemo(()=>fitCamera(dev,Wm,lens,sky,96),[dev,Wm,lens,sky]);// the console no longer turns toward the cursor\nconst maxTilt=0;const tiltDip=0;const typeBottom=Math.round(fit.edge-typeGap);// the 3D LED wall is retired: the text is a flat layer of its own (see the type layer below)\nconst wallSpec=null;const ledPlace=React.useMemo(()=>{if(!wallSpec||!ledSample)return null;const sm=ledSample;// at rest the device covers Overlap % of the last line; the grid snaps onto the wall's own grid\nconst gridBottom=wallSpec.horizon-ledOv*sm.lineH-(sm.rows*pitch-sm.top-sm.blockH);const org=[sm.c0*pitch,Math.round(gridBottom/pitch)*pitch];const m=sm.margin*pitch;const blockTop=org[1]+sm.rows*pitch-sm.top;const top=projectFit(fit,dev.alpha,...wallLocal(wallSpec.yw,wallSpec.beta,0,blockTop*wallSpec.pxU))[1];const r0=Math.floor(wallSpec.horizon/pitch)-1;const c0=Math.floor(-fit.W/2/pitch)-1;return{org,rise:Math.max(0,clamp(riseFrom,0,100)/100*sm.blockH-ledOv*sm.lineH),box:[org[0]+m,org[1]+m,org[0]+sm.cols*pitch-m,org[1]+sm.rows*pitch-m],top,heat:[c0,r0,Math.ceil(fit.W/2/pitch)+1-c0,Math.max(1,Math.ceil(wallSpec.skyTop/pitch)+1-r0)]};},[wallSpec,ledSample,ledOv,riseFrom,pitch,fit,dev]);const lowTier=React.useMemo(()=>detectLowTier(quality,phone),[quality,phone,mounted]);const lowRef=React.useRef(lowTier);lowRef.current=lowTier;/** Tier cap × adaptive scale, never below 1. */const pixelRatio=()=>Math.max(1,Math.min(window.devicePixelRatio||1,lowRef.current?1.5:2)*live.dprScale);// —— Three.js ——————————————————————————————————————————————————————\nconst canvasRef=React.useRef(null);const stageRef=React.useRef(null);const[gl,setGl]=React.useState(\"loading\");const[slow,setSlow]=React.useState(false);React.useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;let dead=false;const t=window.setTimeout(()=>setSlow(true),MOTION.slowLoad);const fail=()=>{if(!dead)setGl(\"failed\");};loadThree().then(T=>{if(dead)return;try{stageRef.current=createStage(T,canvas,lowRef.current);setGl(\"ready\");}catch{fail();}},fail);const onLost=e=>{e.preventDefault();fail();};canvas.addEventListener(\"webglcontextlost\",onLost);return()=>{dead=true;clearTimeout(t);canvas.removeEventListener(\"webglcontextlost\",onLost);stageRef.current?.dispose();stageRef.current=null;};},[]);const glReady=gl===\"ready\";const showFlat=gl===\"failed\"||gl===\"loading\"&&slow;// the LED style lives on the 3D wall; its backdrop too, so the 2D sky only paints for the other styles, lines and the flat fallback\nconst ledWallOn=false;const sky2D=backdrop!==\"none\"&&!(ledStyle&&backdrop===\"pixels\"&&!showFlat);// —— colours resolved once per change (Framer colour styles come in as var(--token, …)) ——\nconst probeRef=React.useRef(null);const resolve=React.useCallback(v=>{const p=probeRef.current;if(!p||!v)return v;p.style.color=\"\";p.style.color=v;return getComputedStyle(p).color||v;},[]);const legendFamily=legendFont&&legendFont.fontFamily||FALLBACK_SANS;const legendWeight=legendFont&&legendFont.fontWeight||700;const screenFamily=screenFont&&screenFont.fontFamily||FALLBACK_MONO;const screenWeight=screenFont&&screenFont.fontWeight||500;const keyLook=keys.map(k=>keyStyle===\"mono\"?{label:k.label,color:monoColor,color2:monoColor,gradient:false,legend:monoLegend}:{label:k.label,color:k.color||INK_KEY,color2:k.color2||k.color||INK_KEY,gradient:!!k.gradient,legend:k.legend||PAPER});const lookKey=JSON.stringify([slabColor,wellColor,glowColor,keyLook,legendFamily,legendWeight,legendSize,legendSpacing,keyHeight,gloss,lowTier]);const colorKey=[screenBg,screenText,ledColor,radarBg,radarLines,sweepColor,blipColor,glitchColorA,glitchColorB,glowColor,navText].join(\"|\");const colors=React.useMemo(()=>{const r=v=>resolve(v);return{screenBg:r(screenBg),screenText:r(screenText),led:r(ledColor),radarBg:r(radarBg),radarLines:r(radarLines),sweepCss:r(sweepColor),blipCss:r(blipColor),gACss:r(glitchColorA),gBCss:r(glitchColorB),glow:parseRGB(r(glowColor)),gA:parseRGB(r(glitchColorA)),gB:parseRGB(r(glitchColorB)),base:parseRGB(r(navText))};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[colorKey,mounted,glReady,resolve]);// —— radar data ——————————————————————————————————————————————————————\nconst logoImgs=React.useRef([]);const[logoTick,setLogoTick]=React.useState(0);const logoSrcs=(logos||[]).filter(l=>l&&l.src);const logoKey=logoSrcs.map(l=>l.src).join(\"|\");React.useEffect(()=>{logoImgs.current=logoSrcs.map(l=>{const img=new Image;img.crossOrigin=\"anonymous\";img.decoding=\"async\";img.onload=()=>setLogoTick(n=>n+1);img.onerror=()=>{logoImgs.current=logoImgs.current.map(x=>x===img?null:x);setLogoTick(n=>n+1);};img.src=l.src;return img;});setLogoTick(n=>n+1);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[logoKey]);const logoCount=Math.max(1,logoSrcs.length);const blipKey=blips.map(b=>b.label).join(\"|\");const minR=logoMode===\"blips\"?.24:clamp(logoSize/100+.12,.24,.6);const blipPos=React.useMemo(()=>layoutBlips(blips.map(b=>b.label),minR),[blipKey,minR])// eslint-disable-line react-hooks/exhaustive-deps\n;const logoPos=React.useMemo(()=>logoMode===\"blips\"?layoutBlips([...blips.map(b=>b.label),...Array.from({length:logoCount},(_,i)=>`logo-${i}`)],.24).slice(blips.length):[],[blipKey,logoCount,logoMode]// eslint-disable-line react-hooks/exhaustive-deps\n);// —— LCD message from keys (and the knob) ————————————————————————————\nconst[active,setActive]=React.useState(-1);const[armed,setArmed]=React.useState(-1);const[announce,setAnnounce]=React.useState(\"\");const[note,setNote]=React.useState(null);const[crtName,setCrtName]=React.useState(CRT_MODES[Math.max(0,fixedMode)]);const armedAt=React.useRef(0);const pointerType=React.useRef(\"mouse\");const playClick=useClickSound(sound&&!still,volume);const lcdFlatRef=React.useRef(null);const keyMessage=active>=0&&keys[active]?keys[active].message+(armed===active&&pointerType.current!==\"mouse\"&&keys[active].url?\"  ↵\":\"\"):null;const message=keyMessage??note;const previewText=previewScreen||(still&&previewKey>=0&&keys[previewKey]?keys[previewKey].message:\"\");const requestStill=React.useRef(()=>undefined);useTypewriter({message,lines:screenLines&&screenLines.length?screenLines:DEFAULT_LINES,cps:typingSpeed,still,reduced,preview:previewText,onText:s=>{live.lcdText=s;live.lcdDirty=true;live.typedAt=now();if(lcdFlatRef.current)lcdFlatRef.current.textContent=s;if(still)requestStill.current();},// a focused key whose name already is its message is not read twice\nonAnnounce:s=>{if(!(active>=0&&live.focus===active&&keys[active]&&keyName(keys[active])===s))setAnnounce(s);},onGlitch:()=>{if(glitchOn)live.lcdG=now();}});// —— LCD + CRT labels painting ——————————————————————————————————————\nconst lcdLook={bg:colors.screenBg,fg:colors.screenText,led:colors.led,family:screenFamily,weight:screenWeight,cursor:cursorStyle,gA:colors.gACss,gB:colors.gBCss,split};/** Repaints the LCD only when something on it changed; returns whether it did. */const paintLcdNow=(t,force)=>{const stage=stageRef.current;const tex=stage&&stage.lcdTexture();if(!stage||!tex)return false;const cursorOn=still?true:t-live.typedAt<.5||Math.floor(t*2)%2===0;const gt=(t-live.lcdG)*1e3;const frame=gt>=0&&gt<MOTION.glitch.frame?1:gt>=MOTION.glitch.frame&&gt<MOTION.glitch.frame*2?2:0;const ledOn=still?1:t-live.typedAt<.12?1:Math.floor(t/.9)%2?1:.45;const key=`${live.lcdText}|${cursorOn}|${frame}|${ledOn}`;if(!force&&!live.lcdDirty&&key===live.lcdKey)return false;live.lcdKey=key;live.lcdDirty=false;paintLcd(stage.lcdCtx,stage.lcdCanvas.width,stage.lcdCanvas.height,live.lcdText,cursorOn,frame,ledOn,lcdLook);tex.needsUpdate=true;return true;};const paintLabelsNow=stage=>{const L=live.radar;const key=[rings,logoMode,logoSize,L.logoIdx,logoKey,logoTick].join(\"|\");if(key===live.crt.labelsKey)return;live.crt.labelsKey=key;paintCrtLabels(stage.labelsCanvas,{rings,logoMode,logoSize,logos:logoImgs.current,logoIdx:L.logoIdx,logoPos});stage.labelsTex.needsUpdate=true;};// —— backdrop ————————————————————————————————————————————————————————\nconst skyRef=React.useRef(null);const skyS=React.useRef(null);const skyH=Math.max(1,Math.min(fit.H,Math.ceil(fit.edge+24)));const cellPx=Math.round(clamp(backdropSize,4,32));const paintSkyNow=(t,dt,force)=>{const s=skyS.current;if(!s||!sky2D)return;const ambient=!reduced&&!still;const activeSky=backdropTrail&&live.ptr.on||s.ripples.length>0;live.skyN++;live.skyDt+=dt;if(!force&&!activeSky&&live.skyN%2)return;// idle: half rate\nconst ptr=backdropTrail?live.ptr:NO_POINTER;const sp=clamp(backdropSpeed,0,2);stepSky(s,t,live.skyDt,ptr,ambient,sp);live.skyDt=0;paintSky(s,t,backdrop,backdropStrength,sp,colors.glow,colors.gA,colors.gB,colors.base,ptr,ambient);};useIsoLayoutEffect(()=>{const c=skyRef.current;if(!c||!sky2D||!dims.w){skyS.current=null;return;}const dpr=Math.min(window.devicePixelRatio||1,2);c.width=Math.round(Wm*dpr);c.height=Math.round(skyH*dpr);const old=skyS.current;skyS.current=makeSky(c,Wm,skyH,dpr,cellPx,fit.edge,rgba(colors.base,.07));if(old&&skyS.current)skyS.current.ripples=old.ripples;paintSkyNow(now(),0,true);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[Wm,skyH,fit.edge,backdrop,cellPx,colorKey,mounted,dims.w,sky2D]);const addRipple=(x,y,hue)=>{if(still||reduced||!backdropRipples)return;if(ledWallOn&&backdrop===\"pixels\"){const w=stageRef.current?stageRef.current.wallPoint(x,y):null;if(!w)return;live.led.ripples.push({x:w[0],y:w[1],t0:now(),hue});if(live.led.ripples.length>6)live.led.ripples.shift();return;}const s=skyS.current;if(!s)return;s.ripples.push({x,y,t0:now(),hue});if(s.ripples.length>6)s.ripples.shift();};// —— overlays: links over keys, blip buttons, knob, tooltip, focus ring ———\nconst keyEls=React.useRef([]);const blipEls=React.useRef([]);const knobRef=React.useRef(null);const tipRef=React.useRef(null);const focusRef=React.useRef(null);const focusVisible=React.useRef(false);const[hoverBlip,setHoverBlip]=React.useState(-1);const shownBlip=still?previewBlip:hoverBlip;const place=()=>{const stage=glReady?stageRef.current:null;if(stage)stage.sync();const proj=stage?stage.project:(x,y,z)=>projectFit(fit,dev.alpha,x,y,z);const zTop=DEV.floor+clamp(keyHeight,.3,.9);const quad=(x0,y0,x1,y1,z)=>[proj(x0,y0,z),proj(x1,y0,z),proj(x1,y1,z),proj(x0,y1,z)];const box=q=>{const xs=q.map(p=>p[0]);const ys=q.map(p=>p[1]);return[Math.min(...xs),Math.min(...ys),Math.max(...xs),Math.max(...ys)];};dev.cells.forEach((c,i)=>{const el=keyEls.current[i];const q=quad(c.x-c.w/2,c.y+.5,c.x+c.w/2,c.y-.5,zTop);const[l,t,r,b]=box(q);live.keyC[i]=[(l+r)/2,(t+b)/2];if(!el)return;el.style.left=`${l}px`;el.style.top=`${t}px`;el.style.width=`${r-l}px`;el.style.height=`${b-t}px`;el.style.clipPath=`polygon(${q.map(p=>`${(p[0]-l).toFixed(1)}px ${(p[1]-t).toFixed(1)}px`).join(\",\")})`;});const f=focusRef.current;if(f){const i=live.focus;const c=dev.cells[i];if(i>=0&&c&&focusVisible.current){const m=.03;const q=quad(c.x-c.w/2+m,c.y+.5-m,c.x+c.w/2-m,c.y-.5+m,zTop-live.press[i]*pressDistance);f.setAttribute(\"points\",q.map(p=>`${p[0].toFixed(1)},${p[1].toFixed(1)}`).join(\" \"));f.style.display=\"\";}else f.style.display=\"none\";}blipPos.forEach((b,i)=>{const el=blipEls.current[i];if(!el)return;const[x,y,z]=blipLocal(dev,b.a,b.r);const p=proj(x,y,z);el.style.transform=`translate(${p[0].toFixed(1)}px, ${p[1].toFixed(1)}px)`;});const tip=tipRef.current;if(tip&&shownBlip>=0&&blipPos[shownBlip]){const b=blipPos[shownBlip];const[x,y,z]=blipLocal(dev,b.a,b.r);const p=proj(x,y,z);tip.style.left=`${p[0]}px`;tip.style.top=`${p[1]}px`;tip.style.transform=`translate(-50%, ${Math.sin(b.a)<-.55?\"16px\":\"calc(-100% - 16px)\"})`;}const k=dev.knob;const[kl,kt,kr,kb]=box(quad(k.x-k.r,k.y+k.r,k.x+k.r,k.y-k.r,.085));const kn=knobRef.current;if(kn){const s=Math.max(kr-kl,kb-kt,44)// touch-size target\n;kn.style.left=`${(kl+kr)/2-s/2}px`;kn.style.top=`${(kt+kb)/2-s/2}px`;kn.style.width=kn.style.height=`${s}px`;}const[bl,bt,br,bb]=box(quad(dev.bezel.x0,dev.bezel.y0,dev.bezel.x1,dev.bezel.y1,DEV.raise));live.bez=[bl,bt,br,bb];// idle frames redraw only the glass: everything else in the bezel is unchanged between full renders\nconst g=dev.crt.glassR;const gq=z=>quad(dev.crt.x-g,dev.crt.y+g,dev.crt.x+g,dev.crt.y-g,z);const[cl,ct,cr,cb]=box([...gq(DEV.glassRim),...gq(DEV.glassRim+DEV.glassCap)]);live.glassRect=[Math.floor(cl)-4,Math.floor(ct)-4,Math.ceil(cr-cl)+8,Math.ceil(cb-ct)+8];const[ll,lt,lr,lb]=box(quad(dev.lcd.x0,dev.lcd.y+dev.lcd.h/2,dev.lcd.x1,dev.lcd.y-dev.lcd.h/2,0));live.lcdRect=[Math.floor(ll)-3,Math.floor(lt)-3,Math.ceil(lr-ll)+6,Math.ceil(lb-lt)+6];live.crtC=proj(dev.crt.x,dev.crt.y,DEV.glassRim+DEV.glassCap);// the LED wall shows only above the slab's silhouette; quiet frames redraw just this band\nconst horizon=projectFit(fit,dev.alpha,0,0,-DEV.bevel)[1];live.wallRect=[0,0,Math.ceil(fit.W),Math.min(Math.ceil(fit.H),Math.ceil(horizon+tiltDip+12))];};const placeRef=React.useRef(place);placeRef.current=place;useIsoLayoutEffect(()=>{placeRef.current();});// —— screen modes ——————————————————————————————————————————————————\nconst enterMode=(m,t)=>{const C=live.crt;C.mode=m;C.to=m;if(m===3)C.traceT0=t;if(m===2)C.li=(C.li+1)%LISSAJOUS.length;C.next=t+(m===0?cycleSeconds*1.5:cycleSeconds);setCrtName(CRT_MODES[m]);};const startSwitch=(to,t)=>{const C=live.crt;if(to===(C.sw>=0?C.to:C.mode))return;if(reduced||still||!glReady){enterMode(to,t);return;}C.sw=t;C.to=to;C.next=Infinity;addRipple(live.crtC[0],live.crtC[1],Math.random()<.5?1:2);};const startSwitchRef=React.useRef(startSwitch);startSwitchRef.current=startSwitch;React.useEffect(()=>{startSwitchRef.current(fixedMode>=0?fixedMode:0,now());},[fixedMode]);/** CRT uniforms for this frame; returns whether a full render is needed. */const updateCrt=(stage,t,dt)=>{const C=live.crt;const L=live.radar;const U=stage.crt;let needFull=false;if(C.boot<0){C.boot=t;C.next=t+cycleSeconds*1.5;}const bk=still||reduced?1:clamp((t-C.boot)/MOTION.crt.boot,0,1);if(bk!==C.power){C.power=bk;stage.setCrtPower(bk);needFull=true;}if(!still&&fixedMode<0&&C.sw<0&&bk>=1&&!L.hover&&hoverBlipRef.current<0&&t>C.next){const at=CRT_CYCLE.indexOf(C.mode);startSwitch(CRT_CYCLE[(at+1)%CRT_CYCLE.length],t);}let sq=0;if(C.sw>=0){const k=(t-C.sw)/MOTION.crt.switch;if(k>=.5&&C.mode!==C.to)enterMode(C.to,t);sq=k<.45?ease(k/.45):k<.55?1:k<1?1-ease((k-.55)/.45):0;if(k>=1){C.sw=-1;if(C.next===Infinity)C.next=t+(C.mode===0?cycleSeconds*1.5:cycleSeconds);}}let sx=1;let sy=1-.985*sq;let flash=sq*.9;if(bk<1){const a=clamp(bk/.35,0,1);const b=clamp((bk-.35)/.65,0,1);sx=.02+.98*ease(a);sy=.012+.988*ease(b);flash=1-.9*b;}U.crtSq.value.set(sx,sy,flash);U.crtTime.value=t;U.crtMode.value=C.mode;U.crtRings.value=Math.max(1,Math.round(rings));U.crtGlitch.value=glitchOn?Math.max(sq*.8,t<L.glitchUntil?.6:0):0;U.crtSplit.value=.012*glitchIntensity;// radar sweep: hover speeds it up and (Follow Cursor) turns it toward the pointer\nconst base=TAU/Math.max(.5,turnSeconds);const prev=L.angle;if(!still&&L.dragX<0){const boost=L.hover&&followCursor&&!reduced?MOTION.radar.boost:1;L.mul+=(boost-L.mul)*(1-Math.exp(-6*dt));if(followCursor&&L.hover&&!reduced&&C.mode===0){let diff=(Math.atan2(-L.py,L.px)-L.angle)%TAU;if(diff>Math.PI)diff-=TAU;if(diff<-Math.PI)diff+=TAU;L.angle+=clamp(diff*MOTION.radar.follow,-base*3,base*3)*dt;}else L.angle+=base*L.mul*dt;}const decay=Math.exp(-dt/MOTION.radar.afterglow);for(let i=0;i<blipPos.length;i++){L.lit[i]*=decay;if(!still&&crossed(prev,L.angle,blipPos[i].a)){L.lit[i]=1;L.ping[i]=t;}}for(let i=0;i<logoPos.length;i++){L.logoLit[i]*=decay;if(!still&&crossed(prev,L.angle,logoPos[i].a))L.logoLit[i]=1;}if(!still&&logoMode===\"cycle\"&&logoCount>1&&t>L.nextLogo){if(L.nextLogo){L.logoIdx=(L.logoIdx+1)%logoCount;if(glitchOn)L.logoGlitchUntil=t+MOTION.glitch.frame*2/1e3;}L.nextLogo=t+MOTION.logo.cycle;}L.hoverBlip=still?previewBlip:hoverBlipRef.current;U.crtAngle.value=L.angle;let n=0;const blipsU=U.crtBlips.value;for(let i=0;i<blipPos.length&&n<28;i++,n++){const b=blipPos[i];const age=(t-L.ping[i])/.9;blipsU[n].set(Math.cos(b.a)*b.r,-Math.sin(b.a)*b.r,Math.max(L.lit[i],L.hoverBlip===i?1:0),age>=0&&age<1?age:-1);}for(let i=0;i<logoPos.length&&n<28;i++,n++){const b=logoPos[i];blipsU[n].set(Math.cos(b.a)*b.r,-Math.sin(b.a)*b.r,L.logoLit[i]*.5,-1);}U.crtBlipCount.value=n;U.crtLogoGlitch.value=glitchOn&&t<L.logoGlitchUntil?.8:0;// scope: the pointer tunes frequency (x) and amplitude (y)\nconst hov=L.hover&&!still;const tF=hov&&C.mode===1?.8+(clamp(L.px,-1,1)*.5+.5)*4.2:1.6+.6*Math.sin(t*.21);const tA=hov&&C.mode===1?.1+(1-clamp(Math.abs(L.py),0,1))*.55:.42+.12*Math.sin(t*.33);const ks=still?1:1-Math.exp(-dt*4);C.F+=(tF-C.F)*ks;C.A+=(tA-C.A)*ks;C.ph+=dt*(2+C.F*.4);U.crtScope.value.set(C.F,C.A,C.ph,.5+.5*Math.sin(t*.17));// Lissajous: the pointer turns the phase\nconst[la,lb]=LISSAJOUS[C.li%LISSAJOUS.length];C.ld+=dt*(hov&&C.mode===2?L.px*1.8:.35);U.crtLiss.value.set(la,lb,C.ld,t*2.4%TAU);// mark: traced on, then held\nconst tp=still||reduced?1:clamp((t-C.traceT0)/MOTION.crt.trace,0,1);U.crtTrace.value=tp;const h=markHead(tp);U.crtHead.value.set(h[0],h[1]);return needFull;};// —— LED wall: reveal, hover, trail, shocks and sweeps → uniforms ————————————\nconst ledRef=React.useRef(null);const readoutRef=React.useRef(null);const ledCol=React.useMemo(()=>{const n=c=>[c[0]/255,c[1]/255,c[2]/255];const glow=n(colors.glow);return{text:n(parseRGB(resolve(bigTextColor))),hot:glow.map(g=>1-(1-g)*.35),ghost:n(parseRGB(resolve(ghostColor))),glow,gA:n(colors.gA),gB:n(colors.gB)};},[bigTextColor,ghostColor,colors,resolve]);/** Trail and sparks on the visible cells (the 2D sky's, on the wall's grid); uploads only when something changed. */const stepHeat=(stage,dt,trail,ambient)=>{const D=ledRef.current;const L=live.led;if(!D)return;const[hc0,hr0,cols,rows]=D.place.heat;const n=cols*rows;if(L.heat.length!==n){L.heat=new Float32Array(n);L.bytes=new Uint8Array(n*4);L.heatLive=false;}const heat=L.heat;let changed=false;let any=false;if(L.heatLive){const k=Math.exp(-dt/SKY.decay);for(let i=0;i<n;i++){if(!heat[i])continue;heat[i]*=k;if(heat[i]<.03)heat[i]=0;else any=true;}changed=true;}// over the text the squares answer the cursor; the trail stays in the open sky\nconst bx=D.place.box;const overText=L.ptr.x>bx[0]-pitch*4&&L.ptr.x<bx[2]+pitch*4&&L.ptr.y>bx[1]-L.off-pitch*4&&L.ptr.y<bx[3]-L.off+pitch*4;if(trail&&!overText){const rx=MOTION.led.trail/pitch;const ry=MOTION.led.trail/(pitch*D.spec.squash)// round on screen\n;const cx=L.ptr.x/pitch-hc0;const cy=L.ptr.y/pitch-hr0;for(let r=Math.max(0,Math.floor(cy-ry));r<=Math.min(rows-1,Math.ceil(cy+ry));r++){for(let c=Math.max(0,Math.floor(cx-rx));c<=Math.min(cols-1,Math.ceil(cx+rx));c++){const d=Math.hypot((c+.5-cx)/rx,(r+.5-cy)/ry);if(d>=1)continue;const i=r*cols+c;heat[i]=Math.max(heat[i],Math.pow(1-d,1.6)*SKY.trail);any=changed=true;}}}if(ambient&&Math.random()<dt*SKY.sparks*clamp(backdropSpeed,0,2)){const r=Math.min(rows-1,Math.floor(rows*.2+Math.random()*rows*.8))// away from the horizon\n;heat[r*cols+Math.floor(Math.random()*cols)]=.35+Math.random()*.3;any=changed=true;}L.heatLive=any;if(changed&&L.bytes){const b=L.bytes;for(let i=0;i<n;i++)b[i*4]=Math.min(255,Math.round(heat[i]*255));stage.setHeat(b,cols,rows);}stage.led.ledHeatOn.value=any?1:0;};/** Steps the wall for this frame. It draws (its band of the canvas) only when something on it moved; a change of its light on the device needs a full frame. */const updateLed=(stage,t,dt,force)=>{const D=ledRef.current;const L=live.led;if(!D)return{render:false,full:false};const M=MOTION.led;const U=stage.led;L.n++;L.heatDt+=dt;const ambient=!reduced&&!still;const instant=reduced||revealStyle===\"off\";const boot=clamp(bootTime,.3,4);const riseT=clamp(riseTime,.4,8);const riseAt=M.bitsAt+boot*M.riseAt;const total=instant?M.fade:Math.max(riseAt+riseT,M.bitsAt+boot*M.glowAt+M.glowFor)+.05;if(!still&&L.t0<0&&L.armed)L.t0=t;const tau=still?clamp(previewReveal,0,100)/100*total:L.t0<0?-1:t-L.t0;const revealing=!still&&tau>=0&&tau<total+.1;// hover: a lagged cursor and an eased strength, so pixels drift off and settle back\nif(L.ptr.on){if(L.hs<.002){L.hx=L.ptr.x;L.hy=L.ptr.y;}const kf=1-Math.exp(-dt*M.hover.follow);L.hx+=(L.ptr.x-L.hx)*kf;L.hy+=(L.ptr.y-L.hy)*kf;}const target=ledHover&&ambient&&L.ptr.on&&L.ptr.mouse?1:0;L.hs+=(target-L.hs)*(1-Math.exp(-dt*M.hover.fade));if(Math.abs(L.hs-target)<.002)L.hs=target;L.ripples=L.ripples.filter(r=>t-r.t0<SKY.rippleLife);L.shocks=L.shocks.filter(r=>t-r.t0<M.shock.life);L.sweeps=L.sweeps.filter(r=>t-r.t0<M.sweep.life);L.blasts=L.blasts.filter(r=>t-r.t0<M.burst.life);const skyOn=backdrop===\"pixels\";const trail=skyOn&&backdropTrail&&L.ptr.on;const busy=revealing||L.hs>0||L.ripples.length>0||L.shocks.length>0||L.sweeps.length>0||L.blasts.length>0||L.heatLive||trail;const every=lowRef.current?2:1;const ambientSky=skyOn&&ambient&&backdropSpeed>0;const twinkleOn=ledTwinkle&&ambient;const render=force||L.dirty||busy&&L.n%every===0||ambientSky&&L.n%(2*every)===0||twinkleOn&&L.n%(4*every)===0;if(!render)return{render:false,full:false};L.dirty=false;if(skyOn)stepHeat(stage,L.heatDt,trail,ambient);else U.ledHeatOn.value=0;L.heatDt=0;// the reveal: power flicker + sync band, bits in whole steps, glow, then the slow rise\nlet power=0;let bits=-1;let band=-1e5;let noise=0;let stepN=0;let glowIn=0;let e=0;let fade=1;if(tau>=0){if(instant){power=1;bits=2;glowIn=1;e=1;fade=still?1:clamp(tau/M.fade,0,1);}else{const fi=Math.floor(tau/M.flickerStep);power=fi<M.flicker.length?M.flicker[fi]:1;if(tau>=M.band[0]&&tau<M.band[1])band=D.spec.skyTop-(tau-M.band[0])/(M.band[1]-M.band[0])*(D.spec.skyTop-D.spec.horizon);const bt=tau-M.bitsAt;stepN=Math.floor(bt*M.bitsFps);bits=bt<0?-1:stepN/M.bitsFps/boot;noise=bits>=0&&bits<1?M.noise*(1-bits):0;glowIn=clamp((tau-(M.bitsAt+boot*M.glowAt))/M.glowFor,0,1);e=riseEase((tau-riseAt)/riseT);}}const off=D.place.rise*(1-e);L.off=off;const bx=D.place.box;const S=stage.sq;const gd=D.sample.guide;U.ledPitch.value=pitch;U.ledPix.value=ledPix;U.ledSoft.value=clamp(ledSoftness,0,2);U.ledTextOrg.value.set(D.place.org[0],D.place.org[1]-off);U.ledGuideRows.value.set(gd.rows[0],gd.rows[1],gd.rows[2]);U.ledGuideCols.value.set(gd.cols[0],gd.cols[1]);U.ledGuideFoot.value=gd.foot;U.ledGuideA.value=ledGuides?clamp(ghostOpacity,0,100)/100*1.4:0;U.ledBurstR.value=clamp(ledHoverRadius,20,320);S.sqOrg.value.set(D.place.org[0],D.place.org[1]-off);S.sqPitch.value=pitch;S.sqSquash.value=D.spec.squash;S.sqSkyTop.value=D.spec.skyTop;S.sqHorizon.value=D.spec.horizon;S.sqBits.value=bits;S.sqHotW.value=M.hot/boot;S.sqTime.value=t;S.sqTwinkle.value=twinkleOn?M.twinkle:0;S.sqScan.value=ledScanlines?1:0;S.sqSoft.value=clamp(ledSoftness,0,2);S.sqFade.value=fade;S.sqShare.value=glitchOn?M.burst.share:0;S.sqHover.value.set(L.hx,L.hy,L.hs,clamp(ledHoverRadius,20,320)*.6);S.sqBurstK.value.set(clamp(ledBurst,0,2),M.burst.lift*clamp(ledBurst,0,2),M.burst.spin);U.ledBlasts.value.forEach((v,i)=>{const r=L.blasts[i];if(r)v.set(r.x,r.y,t-r.t0,r.s);else v.set(0,0,-1,0);});U.ledTextBox.value.set(bx[0],bx[1]-off,bx[2],bx[3]-off);U.ledColor.value.set(...ledCol.text);U.ledHot.value.set(...ledCol.hot);U.ledGhostCol.value.set(...ledCol.ghost);U.ledGhostA.value=clamp(ghostOpacity,0,100)/100;U.ledGlowA.value=ledGlow>0?glowIn:0;U.ledPower.value=power;U.ledFade.value=fade;U.ledBits.value=bits;U.ledNoise.value=noise;U.ledStep.value=stepN;U.ledBand.value=band;U.ledSquash.value=D.spec.squash;U.ledHorizon.value=D.spec.horizon;U.ledSkyTop.value=D.spec.skyTop;U.ledW.value=fit.W;U.ledHorizonPx.value=D.spec.horizonPx;U.ledSky.value=skyOn?1:0;U.ledSkyAmt.value=clamp(backdropStrength,0,2);U.ledSkyGlow.value.set(...ledCol.glow);U.ledGA.value.set(...glitchOn?ledCol.gA:ledCol.text);U.ledGB.value.set(...glitchOn?ledCol.gB:ledCol.text);U.ledTa.value=ambient?t*clamp(backdropSpeed,0,2):0;U.ledRipples.value.forEach((v,i)=>{const r=L.ripples[i];if(r)v.set(r.x,r.y,t-r.t0,r.hue);else v.set(0,0,-1,0);});U.ledShocks.value.forEach((v,i)=>{const r=L.shocks[i];if(r)v.set(r.x,r.y,t-r.t0,0);else v.set(0,0,-1,0);});const sb=M.sweep.band*pitch;U.ledSweeps.value.forEach((v,i)=>{const r=L.sweeps[i];if(!r)return v.set(0,0,0,0);const k=(t-r.t0)/M.sweep.life;v.set(bx[0]-sb+k*(bx[2]-bx[0]+2*sb),sb,Math.sin(Math.PI*clamp(k,0,1)),0);U.ledSweepCol.value[i].set(...r.col);});// the LED's light on the device rises with the text\nconst light=tau<0?0:instant?fade:e*glowIn;let full=false;if(Math.abs(light-L.light)>.004||light===0!==(L.light===0)){L.light=light;stage.setLedLight(ledCol.text,M.rim*clamp(wallLight,0,2)*light,M.back*clamp(wallLight,0,2)*light);full=true;}return{render:true,full};};/** Squares burst where the cursor sweeps over the text — spaced along its path, stronger the faster it moves — or under a click / tap. */const burstAt=(w,sx,sy,strength)=>{const D=ledRef.current;const L=live.led;if(!D||reduced||still||!ledHover||ledBurst<=0)return;const B=MOTION.led.burst;const R=clamp(ledHoverRadius,20,320);const bx=D.place.box;const yr=R/D.spec.squash;if(w[0]<bx[0]-R||w[0]>bx[2]+R||w[1]<bx[1]-L.off-yr||w[1]>bx[3]-L.off+yr)return;const t=now();let s=strength;if(s===null){const moved=Math.hypot(sx-L.last.x,sy-L.last.y);if(L.last.t>=0&&moved<R*B.spacing)return;const dt=L.last.t>=0?Math.max(1/60,t-L.last.t):.1;s=clamp(.45+moved/dt/B.speed,.45,1);}L.last={x:sx,y:sy,t};L.blasts.push({x:w[0],y:w[1],t0:t,s});if(L.blasts.length>B.max)L.blasts.shift();};/** The readout: the LED cell under the pointer, else the grid (pixel / gap, columns × rows). */const showReadout=w=>{const el=readoutRef.current;const D=ledRef.current;if(!el||!D)return;const[hc0,hr0,cols,rows]=D.place.heat;let s=`LED ${ledPix}/${ledGap} \\xb7 ${cols}\\xd7${rows}`;if(w){const c=clamp(Math.floor(w[0]/pitch)-hc0,0,cols-1);const r=clamp(hr0+rows-1-Math.floor(w[1]/pitch),0,rows-1);s=`X ${String(c).padStart(3,\"0\")} \\xb7 Y ${String(r).padStart(3,\"0\")}`;}if(s===live.led.readout)return;live.led.readout=s;el.textContent=s;};// —— the frame: springs, CRT, LCD, backdrop, then a full or partial render ——\nconst hoverBlipRef=React.useRef(-1);hoverBlipRef.current=hoverBlip;const frame=(t,dt,force)=>{const stage=glReady?stageRef.current:null;paintSkyNow(t,dt,force);if(!stage)return;let full=force||live.forceFull;live.forceFull=false;let moved=false;let tilted=false;const s=Math.max(.1,speed);// keys: spring toward 0 / 60 % / 100 % press\nconst kS=stiffness*s*s;const cS=damping*s;for(let i=0;i<keys.length;i++){const target=still?previewKey===i?1:0:live.down[i]?1:live.hover===i||live.focus===i?MOTION.key.hover:0;let x=live.press[i];let v=live.vel[i];if(reduced||still){x=target;v=0;}else if(Math.abs(x-target)>1e-4||Math.abs(v)>1e-4){const n=Math.max(1,Math.ceil(dt/(1/240)));const h=dt/n;for(let k=0;k<n;k++){v+=(-kS*(x-target)-cS*v)*h;x+=v*h;}}else{x=target;v=0;}live.press[i]=x;live.vel[i]=v;const m=stage.keyMeshes[i];if(m){const z=DEV.floor-x*pressDistance;if(Math.abs(m.position.z-z)>1e-6){m.position.z=z;moved=true;}}}// key legend glitch\nconst kgms=(t-live.kgT)*1e3;const kf=live.kg>=0&&kgms<MOTION.glitch.frame*2?kgms<MOTION.glitch.frame?1:2:0;if(kf||live.kgOn){stage.setKeyGlitch(kf?{key:live.kg,frame:kf,a:colors.gACss,b:colors.gBCss,split:.02*glitchIntensity}:null);full=true;}live.kgOn=!!kf;if(!kf)live.kg=-1;// tilt toward the cursor (soft spring)\nif(maxTilt||live.rx||live.ry){const tk=stiffness*MOTION.tilt.soft*s*s;const tc=damping*.7*s;const tx=maxTilt?live.tx:0;const ty=maxTilt?live.ty:0;if(Math.abs(live.rx-tx)>.001||Math.abs(live.ry-ty)>.001||Math.abs(live.vx)>.001||Math.abs(live.vy)>.001){const n=Math.max(1,Math.ceil(dt/(1/240)));const h=dt/n;for(let k=0;k<n;k++){live.vx+=(-tk*(live.rx-tx)-tc*live.vx)*h;live.vy+=(-tk*(live.ry-ty)-tc*live.vy)*h;live.rx+=live.vx*h;live.ry+=live.vy*h;}stage.setTilt(live.rx*Math.PI/180,live.ry*Math.PI/180);tilted=true;}}// knob turns a quarter per click\nconst C=live.crt;if(Math.abs(C.knob-C.knobTo)>1e-4||Math.abs(C.knobV)>1e-4){if(reduced){C.knob=C.knobTo;C.knobV=0;}else{const n=Math.max(1,Math.ceil(dt/(1/240)));const h=dt/n;for(let k=0;k<n;k++){C.knobV+=(-kS*.5*(C.knob-C.knobTo)-cS*.7*C.knobV)*h;C.knob+=C.knobV*h;}}stage.setKnob(C.knob);moved=true;}if(updateCrt(stage,t,dt))full=true;const ledF=updateLed(stage,t,dt,full);if(ledF.full)full=true;paintLabelsNow(stage);const lcd=paintLcdNow(t,full);if(moved||tilted){stage.shadowsDirty();full=true;}if(tilted||moved&&live.focus>=0)placeRef.current();if(full)stage.render();else{const rects=[live.glassRect];if(lcd)rects.push(live.lcdRect);if(ledF.render)rects.push(live.wallRect);stage.render(rects);}};const frameRef=React.useRef(frame);frameRef.current=frame;// —— build + fit the scene when layout or looks change ——————————————————\nconst built=React.useRef({sig:\"\",look:\"\"});React.useEffect(()=>{const stage=stageRef.current;if(!glReady||!stage)return;const r=v=>resolve(v);if(built.current.sig!==dev.sig||built.current.look!==lookKey){stage.build(dev,{slab:r(slabColor),well:r(wellColor),glow:r(glowColor),keys:keyLook.map(k=>({...k,color:r(k.color),color2:r(k.color2),legend:r(k.legend)})),legend:{family:legendFamily,weight:legendWeight,size:clamp(legendSize,8,40)/100,spacing:legendSpacing},keyH:clamp(keyHeight,.3,.9),gloss,low:lowTier});built.current={sig:dev.sig,look:lookKey};live.lcdDirty=true;live.crt.power=-1;live.crt.labelsKey=\"\";stage.setKnob(live.crt.knob);// repaint legends once the chosen font has arrived\nconst fonts=document.fonts;if(fonts&&fonts.load){fonts.load(`${legendWeight} 64px ${legendFamily}`).then(()=>{if(stageRef.current!==stage)return;stage.repaintLegends();live.forceFull=true;rearmAdapt(live);if(still)requestStill.current();}).catch(()=>undefined);}}stage.setCrtColors({bg:colors.radarBg,line:colors.radarLines,sweep:colors.sweepCss,blip:colors.blipCss,gA:colors.gACss,gB:colors.gBCss});stage.setFit(fit,dev,{exposure,shadow,dpr:pixelRatio()});placeRef.current();if(still){const L=live.radar;L.angle=(previewAngle-90)*Math.PI/180;for(let i=0;i<blipPos.length;i++)L.lit[i]=Math.exp(-(((L.angle-blipPos[i].a)%TAU+TAU)%TAU)/1.1);for(let i=0;i<logoPos.length;i++)L.logoLit[i]=.25+.75*Math.exp(-(((L.angle-logoPos[i].a)%TAU+TAU)%TAU)/1.1);}frameRef.current(now(),0,true);rearmAdapt(live);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[glReady,dev,lookKey,fit,exposure,shadow,colorKey,still,previewAngle,previewBlip,previewKey,pressDistance,blipPos,logoPos,logoMode,logoSize,rings,cursorStyle,screenFamily,screenWeight,logoTick]);// —— the LED wall: plane, text cells and visible-cell box follow the layout ————————\nReact.useEffect(()=>{const stage=stageRef.current;if(!glReady||!stage)return;if(!wallSpec||!ledSample||!ledPlace){if(ledRef.current){stage.setWall(null);stage.setLedCells(null);stage.setHeat(null,0,0);stage.setLedLight([0,0,0],0,0);ledRef.current=null;frameRef.current(now(),0,true);}return;}const prev=ledRef.current;if(!prev||prev.spec!==wallSpec)stage.setWall(wallSpec);if(!prev||prev.sample!==ledSample)stage.setLedCells(ledSample);const hb=ledPlace.heat;if(!prev||prev.place.heat.join()!==hb.join()){stage.setHeat(null,0,0);stage.led.ledHeatOn.value=0;live.led.heat=new Float32Array(0);live.led.heatLive=false;}stage.led.ledHeatBox.value.set(hb[0],hb[1],hb[2],hb[3]);ledRef.current={spec:wallSpec,sample:ledSample,place:ledPlace};live.led.dirty=true;live.led.light=-1;live.led.readout=\"\";showReadout(null);frameRef.current(now(),0,true);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[glReady,wallSpec,ledSample,ledPlace]);// the reveal waits until most of the text area is in view (and, with Replay, re-arms once it has left)\nconst sentinelRef=React.useRef(null);React.useEffect(()=>{const L=live.led;const el=sentinelRef.current;if(still)return;if(!el||typeof IntersectionObserver===\"undefined\"){L.armed=true;return;}const io=new IntersectionObserver(es=>{const e=es[es.length-1];if(e.isIntersecting&&e.intersectionRatio>=.55)L.armed=true;else if(!e.isIntersecting&&revealReplay){L.armed=false;L.t0=-1;L.dirty=true;}},{threshold:[0,.6]});io.observe(el);return()=>io.disconnect();// eslint-disable-next-line react-hooks/exhaustive-deps\n},[still,revealReplay,ledStyle]);// —— the type plane: the headline lying on the keyboard's surface ————————————————\n// Pixel type in ink on the flat stage colour. The canvas is the plane itself; the browser tilts it back by the\n// View Angle about its near edge, in a perspective of Text Depth, so every stroke, gap and move recedes like the\n// keys do. Everything on the grid is one ink buffer, one value per pixel — the headline, the binary rain, the\n// decode's flickering glyphs, the idle events — composed each frame and cut into square pixels. Squares the\n// cursor knocks loose leave the grid: they hop off the surface, land, slide and are drawn home.\nconst typeRef=React.useRef(null);const typeApi=React.useRef(null);const typeT0=React.useRef(-1)// boot start (performance s), kept across re-layouts so a resize never replays it\n;const typeInk=textTone===\"white\"?\"#FFFFFF\":INK_TYPE;React.useEffect(()=>{const c=typeRef.current;const sm=ledSample;typeApi.current=null;if(!c||!sm||!ledInk||!dims.w)return;const ctx=c.getContext(\"2d\");if(!ctx)return;const P=MOTION.panel;const T=MOTION.type;const dpr=Math.min(window.devicePixelRatio||1,2);// the canvas: the stage's width (loose squares may fly past the grid), the grid plus room above it for hops\nconst CW=Wm;const CH=planeH+hopPad;c.width=Math.round(CW*dpr);c.height=Math.round(CH*dpr);const cols=gCols;const rows=gRows;const N=cols*rows;const gw=cols*pitch;const gh=rows*pitch;const gx=Math.round((CW-gw)/2);const gy=hopPad;const rand=mulberry32(cols*131+rows*7+sm.lit);const instant=still||reduced||revealStyle===\"off\";const motion=!still&&!reduced;const dDur=clamp(bootTime,.3,4)+.2;const bootEnd=P.decode0+dDur+.25;const sa=Math.sin(planeA);const ca=Math.cos(planeA);const tanA=planeTilt?sa/Math.max(.2,ca):0;const ink=textTone===\"white\"?[255,255,255]:[18,19,17];const smooth=(a,b,x)=>{const u=clamp((x-a)/(b-a),0,1);return u*u*(3-2*u);};const easeIO3=x=>x<.5?4*x*x*x:1-Math.pow(-2*x+2,3)/2;const easeOut3=x=>1-Math.pow(1-clamp(x,0,1),3);// —— the headline's pixels: sample grid → plane grid, the ink's top row P.far rows in ——\nconst colOff=sm.c0+cols/2;const rowOff=ledInk.rMin-P.far;const full=ledPix/pitch;const nt=sm.lit;const tCell=new Int32Array(nt);const tVal=new Float32Array(nt);const tChar=new Int16Array(nt);const hx=new Float32Array(nt)// home, grid px\n;const hy=new Float32Array(nt);const ch=sm.chars;for(let i=0;i<nt;i++){const k=sm.inst.cell[i*2];const r=sm.rows-1-sm.inst.cell[i*2+1];const pc=k+colOff;const pr=r-rowOff;tCell[i]=pc>=0&&pc<cols&&pr>=0&&pr<rows?pr*cols+pc:-1;tVal[i]=sm.inst.info[i*4]>=full*.99?1:clamp(edgePixel,20,100)/100;hx[i]=(pc+.5)*pitch;hy[i]=(pr+.5)*pitch;// the character this pixel belongs to: same advance, nearest baseline above\nconst cx=(k+.5)*pitch;const cy=(r+.5)*pitch;let best=-1;let bd=Infinity;for(let j=0;j<ch.length;j++){if(cx<ch[j].x0-pitch||cx>ch[j].x1+pitch)continue;const d=Math.abs(cy-(ch[j].base-sm.font.px*.35))+(cx>=ch[j].x0&&cx<ch[j].x1?0:pitch*3);if(d<bd){bd=d;best=j;}}tChar[i]=best;}// —— the glyph bank: six random characters per position, sampled onto the plane grid ——\nconst nc=ch.length;const bank=[];const scratch=document.createElement(\"canvas\");const sctx=scratch.getContext(\"2d\",{willReadFrequently:true});const capH=sm.font.px*.78;for(let j=0;j<nc;j++){const list=[];const k0=Math.floor(ch[j].x0/pitch)-1;const k1=Math.ceil(ch[j].x1/pitch)+1;const r0=Math.floor((ch[j].base-capH*1.1)/pitch);const r1=Math.ceil((ch[j].base+sm.font.px*.08)/pitch);const bw=Math.max(1,k1-k0);const bh=Math.max(1,r1-r0);if(sctx){scratch.width=bw*pitch;scratch.height=bh*pitch;for(let v=0;v<6;v++){sctx.clearRect(0,0,scratch.width,scratch.height);setFont(sctx,sm.font.weight,sm.font.px,sm.font.family,0);sctx.fillStyle=\"#fff\";sctx.textBaseline=\"alphabetic\";const g=LED_NOISE[Math.floor(rand()*LED_NOISE.length)];const gwid=sctx.measureText(g).width;// centred in the real character's advance, clipped to its band\nsctx.fillText(g,(ch[j].x0+ch[j].x1)/2-gwid/2-k0*pitch,ch[j].base-r0*pitch);const data=sctx.getImageData(0,0,scratch.width,scratch.height).data;const idx=[];const val=[];for(let rr=0;rr<bh;rr++){for(let kk=0;kk<bw;kk++){let sum=0;for(let y=rr*pitch;y<(rr+1)*pitch;y++){let q=(y*scratch.width+kk*pitch)*4+3;for(let x=0;x<pitch;x++,q+=4)sum+=data[q];}const cov=sum/(255*pitch*pitch);if(cov<MOTION.led.edge.small)continue;const pc=k0+kk+colOff;const pr=r0+rr-rowOff;if(pc<0||pc>=cols||pr<0||pr>=rows)continue;idx.push(pr*cols+pc);val.push(cov>=MOTION.led.edge.full?1:.55);}}list.push({idx:Int32Array.from(idx),val:Float32Array.from(val)});}}bank.push(list);}// —— decode: line by line, left to right — unhurried at the first characters, quick through the middle,\n// unhurried again into the last ones — with a little scatter ——\nconst resolve=new Float32Array(nc);const scrFrom=new Float32Array(nc);const scrUntil=new Float32Array(nc).fill(-1)// the cursor's scramble…\n;const scrA=new Float32Array(nc)// …and when it began\n;const resolve2=new Float32Array(nc).fill(-1)// an idle re-decode…\n;const red0=new Float32Array(nc)// …and when it began\n;let scrEnd=-1;const order=u=>u+.6*Math.sin(TAU*u)/TAU;ch.forEach((_,j)=>{const u=nc>1?j/(nc-1):0;resolve[j]=P.decode0+dDur*(.72*order(u)+.28*rand());scrFrom[j]=P.decode0-.2+.3*rand()*u;});const words=Array.from(new Set(ch.map(q=>q.word)));const wordIdx=ch.map(q=>words.indexOf(q.word));/** The window a character scrambles in right now (the cursor's, a re-decode's or the boot's), or null. */const win=(j,tau)=>{if(scrUntil[j]>tau)return[scrA[j],scrUntil[j]];if(resolve2[j]>tau)return[red0[j],resolve2[j]];if(!instant&&tau>=scrFrom[j]&&tau<resolve[j])return[scrFrom[j],resolve[j]];return null;};/** When the character last landed on its own glyph (in the future while the boot still hides it). */const landed=(j,tau)=>{let l=instant?-1e9:resolve[j];if(resolve2[j]>=0&&resolve2[j]<=tau)l=Math.max(l,resolve2[j]);if(scrUntil[j]>=0&&scrUntil[j]<=tau)l=Math.max(l,scrUntil[j]);return l;};const landFrom=(j,l)=>l===scrUntil[j]?scrA[j]:l===resolve2[j]?red0[j]:scrFrom[j];/** The glyph shown through a window: 25 a second at first, slowing to 30 % as the character lands — a reel's inertia. */const glyphAt=(j,a,b,tau)=>{const span=Math.max(.05,b-a);const u=clamp((tau-a)/span,0,1);return Math.floor(P.glyphHz*span*(u-.35*u*u))+j*3;};// —— the binary rain: drops fall from rest and gather speed toward the near edge ——\nconst drops=Array.from({length:Math.max(1,Math.floor(cols/4))},(_,i)=>({c:i*4+(rand()<.5?0:1),y:-5-rand()*rows*1.2,v:4+rand()*10,a:P.rainAcc*(.8+.4*rand()),n:2+Math.floor(rand()*4)}));// —— buffers: one ink value per pixel, its colour fixed; the square pixel mask ——\nconst L=new Float32Array(N);const tmp=new Float32Array(cols);const lum=document.createElement(\"canvas\");lum.width=cols;lum.height=rows;const lctx=lum.getContext(\"2d\");const img=lctx?lctx.createImageData(cols,rows):null;if(img){for(let p=0;p<N;p++){img.data[p*4]=ink[0];img.data[p*4+1]=ink[1];img.data[p*4+2]=ink[2];}}const lit=document.createElement(\"canvas\");lit.width=Math.max(1,Math.round(gw*dpr));lit.height=Math.max(1,Math.round(gh*dpr));const lit2=lit.getContext(\"2d\");const mk=(()=>{const s=Math.max(2,Math.round(pitch*dpr));const tc=document.createElement(\"canvas\");tc.width=tc.height=s;const t=tc.getContext(\"2d\");if(t){const q=ledPix/pitch*s;t.fillStyle=\"#000\";t.fillRect((s-q)/2,(s-q)/2,q,q);}return{tc,s};})();const maskPat=lit2?lit2.createPattern(mk.tc,\"repeat\"):null;if(maskPat&&typeof DOMMatrix!==\"undefined\")maskPat.setTransform(new DOMMatrix().scale(pitch*dpr/mk.s));// a soft contact shadow for squares in the air\nconst shade=document.createElement(\"canvas\");shade.width=shade.height=32;const shc=shade.getContext(\"2d\");if(shc){const g=shc.createRadialGradient(16,16,0,16,16,16);g.addColorStop(0,\"rgba(0,0,0,0.9)\");g.addColorStop(.45,\"rgba(0,0,0,0.5)\");g.addColorStop(1,\"rgba(0,0,0,0)\");shc.fillStyle=g;shc.fillRect(0,0,32,32);}// —— loose squares: knocked off the surface, they hop, land, slide and are drawn home ——\nconst dx=new Float32Array(nt);const dy=new Float32Array(nt);const dz=new Float32Array(nt)// height above the surface\n;const vx=new Float32Array(nt);const vy=new Float32Array(nt);const vz=new Float32Array(nt);const free=new Float32Array(nt);const eng=new Float32Array(nt)// how far the home spring has taken hold\n;const mass=new Float32Array(nt);for(let i=0;i<nt;i++)mass[i]=T.mass[0]+(T.mass[1]-T.mass[0])*rand();const on=new Uint8Array(nt);let act=[];const kS=T.spring;const cS=2*T.zeta*Math.sqrt(kS);const Rh=clamp(ledHoverRadius,20,320);const force=clamp(ledBurst,0,2);// —— idle events ——\nlet evKind=0// 0 none, 1 glitch, 2 word flash, 3 re-decode\n;let evT0=0;let evNext=bootEnd+3+rand()*3;const glitchBands=[];let raf=0;let last=0;let rest=false// the frame on screen is the settled type: nothing to draw until something moves\n;let armed=still;let visible=true;let ptr={x:0,y:0,t:0,in:false};const powerAt=tau=>{const k=P.power;const x=clamp(tau/P.powerT,0,1)*(k.length-1);const i=Math.min(k.length-2,Math.floor(x));const f=x-i;return k[i]+(k[i+1]-k[i])*f*f*(3-2*f);};const compose=tau=>{L.fill(0);if(tau<0)return 0;// power-on: the ink comes up on a soft, uneven curve while a faint row sweeps from the far edge to the near one\nlet gain=1;if(!instant){gain=powerAt(tau);if(tau<P.wipe){const pos=easeIO3(tau/P.wipe)*(rows+4)-1;for(let r=0;r<rows;r++){const dist=pos-r;if(dist<-1||dist>8)continue;const v=.2*(dist<0?1+dist:Math.exp(-dist/1.2));for(let k=0;k<cols;k++)L[r*cols+k]=v;}}}else if(!still)gain=clamp(tau/MOTION.led.fade,0,1);// word flash: one word at a time at full ink, the rest low, each change a short cross-fade\nlet wordLv=null;if(evKind===2){const te=tau-evT0;const end=words.length*P.flashStep;const dimIn=smooth(0,.08,te);const back=smooth(end,end+.25,te);const k=te/P.flashStep;wordLv=w=>{const bump=smooth(w-.25,w+.15,k)*(1-smooth(w+.85,w+1.25,k));const lv=P.flashLow+(1-P.flashLow)*bump;return 1-dimIn*(1-back)*(1-lv);};}// the headline: hidden while its character scrambles, then its ink settles in\nfor(let i=0;i<nt;i++){const p=tCell[i];if(p<0||on[i])continue;const j=tChar[i];let v=tVal[i];if(j>=0){if(win(j,tau))continue;const l=landed(j,tau);if(tau<l)continue;if(motion&&tau-l<P.settle)v*=.55+.45*easeOut3((tau-l)/P.settle);if(wordLv)v*=wordLv(wordIdx[j]);}L[p]=Math.max(L[p],v);}// the scrambling glyphs, and the last one fading out under a character that just landed\nif(motion){for(let j=0;j<nc;j++){if(!bank[j].length)continue;const w=win(j,tau);let g=-1;let a=.85;if(w)g=glyphAt(j,w[0],w[1],tau);else{const l=landed(j,tau);if(tau>=l&&tau-l<P.settle){g=glyphAt(j,landFrom(j,l),l,l);a*=1-easeOut3((tau-l)/P.settle);}}if(g<0)continue;const G=bank[j][g%bank[j].length];if(wordLv)a*=wordLv(wordIdx[j]);for(let q=0;q<G.idx.length;q++)L[G.idx[q]]=Math.max(L[G.idx[q]],G.val[q]*a);}}// binary rain over the plane, thinning out as the decode lands; a drop between two rows lights both\nif(motion&&!instant&&tau>P.rain[0]&&tau<P.rain[1]){const env=smooth(P.rain[0],P.rain[0]+.25,tau)*(1-smooth(P.rain[1]-.6,P.rain[1],tau));const te=tau-P.rain[0];const flick=Math.floor(tau*9);for(const d of drops){const head=d.y+d.v*te+.5*d.a*te*te;for(let g=0;g<d.n;g++){const top=head-g*6;const r0=Math.floor(top);const f=top-r0;const bits=BIN3[d.c*13+g*7+flick&1];const b=(g===0?1:.7*Math.pow(.6,g))*env*.75;for(let r=0;r<5;r++){for(let q=0;q<3;q++){if(!(bits[r]>>2-q&1))continue;const pc=d.c+q;if(pc>=cols)continue;let pr=r0+r;if(pr>=0&&pr<rows)L[pr*cols+pc]=Math.min(Math.max(L[pr*cols+pc],b),L[pr*cols+pc]+b*(1-f));pr++;if(pr>=0&&pr<rows)L[pr*cols+pc]=Math.min(Math.max(L[pr*cols+pc],b),L[pr*cols+pc]+b*f);}}}}}// glitch: a few row bands jump sideways in whole pixels and step back on a fast decay; the ink dips once or twice\nlet dip=1;if(evKind===1){const te=tau-evT0;const steps=Math.floor(te*24);const decay=Math.exp(-steps/24/.09);for(const[r0,h,s0]of glitchBands){const s=Math.round(s0*decay);if(!s)continue;for(let r=r0;r<Math.min(rows,r0+h);r++){for(let k2=0;k2<cols;k2++)tmp[k2]=L[r*cols+((k2-s)%cols+cols)%cols];L.set(tmp,r*cols);}}if(te<.15&&steps%2)dip=.85;}return gain*dip;};const drawLoose=gain=>{ctx.setTransform(dpr,0,0,dpr,0,0);const cx0=CW/2;// contact shadows first, under each square that is in the air\nfor(const i of act){const z=dz[i];if(z<.3)continue;ctx.globalAlpha=T.shadow*smooth(0,4,z)*(1-.6*Math.min(1,z/40))*gain;const s=ledPix*(1.6+z/30);ctx.drawImage(shade,gx+hx[i]+dx[i]-s/2,gy+hy[i]+dy[i]-s/2,s,s);}// the squares: lifted along the surface's normal (up the plane by z·tan α, a touch nearer), a ghost behind when fast\nctx.fillStyle=typeInk;const edgeA=clamp(edgePixel,20,100)/100;for(const ghost of[1,0]){for(const edge of[0,1]){ctx.globalAlpha=(edge?edgeA:1)*(ghost?.3:1)*gain;for(const i of act){if((tVal[i]<1?1:0)!==edge)continue;const z=dz[i];const k=planeD?1+z/(ca*planeD):1;let x=cx0+(gx+hx[i]+dx[i]-cx0)*k;let y=gy+hy[i]+dy[i]-z*tanA;if(ghost){const bx=vx[i]*T.blur;const by=(vy[i]-vz[i]*tanA)*T.blur;if(bx*bx+by*by<.5)continue;x-=bx;y-=by;}const s=ledPix*k;ctx.fillRect(x-s/2,y-s/2,s,s);}}}ctx.globalAlpha=1;};const paint=gain=>{ctx.setTransform(1,0,0,1,0,0);ctx.globalCompositeOperation=\"source-over\";ctx.globalAlpha=1;ctx.clearRect(0,0,c.width,c.height);if(!img||!lctx||!lit2)return;const d=img.data;for(let p=0;p<N;p++){const v=L[p]*gain;d[p*4+3]=v<=.004?0:Math.min(255,Math.round(v*255));}lctx.putImageData(img,0,0);// the buffer, blown up pixel by pixel and cut into squares\nlit2.globalCompositeOperation=\"copy\";lit2.imageSmoothingEnabled=false;lit2.drawImage(lum,0,0,lit.width,lit.height);if(maskPat){lit2.globalCompositeOperation=\"destination-in\";lit2.fillStyle=maskPat;lit2.fillRect(0,0,lit.width,lit.height);}ctx.drawImage(lit,gx*dpr,gy*dpr);if(act.length)drawLoose(gain);};const step=dt=>{const sub=Math.max(1,Math.ceil(dt/(1/120)));const h=dt/sub;const keep=[];for(const i of act){for(let s=0;s<sub;s++){if(free[i]>0)free[i]-=h;else eng[i]=Math.min(1,eng[i]+h/T.springIn);// the home spring takes hold softly (no jolt in the acceleration), sliding friction lets go as it does\nconst e=eng[i]*eng[i]*(3-2*eng[i]);const ground=dz[i]<=0&&vz[i]<=0;const fr=T.drag+(ground?T.friction:0)*(1-e);vx[i]+=(-fr*vx[i]-e*(kS*dx[i]+cS*vx[i]))*h;vy[i]+=(-fr*vy[i]-e*(kS*dy[i]+cS*vy[i]))*h;dx[i]+=vx[i]*h;dy[i]+=vy[i]*h;if(!ground){// gravity is normal to the surface: the square falls back onto it and bounces a little\nvz[i]+=(-T.hopG-T.drag*vz[i])*h;dz[i]+=vz[i]*h;if(dz[i]<=0){dz[i]=0;vz[i]=-vz[i]*T.restitution;if(vz[i]<30)vz[i]=0;}}}if(free[i]<=0&&eng[i]>=1&&dz[i]===0&&Math.abs(dx[i])<.15&&Math.abs(dy[i])<.15&&Math.abs(vx[i])+Math.abs(vy[i])<4){// home: back on the grid\ndx[i]=dy[i]=vx[i]=vy[i]=vz[i]=eng[i]=0;on[i]=0;}else keep.push(i);}act=keep;};const tick=ms=>{raf=0;const t=ms/1e3;if(armed&&typeT0.current<0)typeT0.current=t;const tau=typeT0.current<0?-1:t-typeT0.current;const dt=last?clamp(t-last,0,1/20):1/60;last=t;if(tau>=0&&motion){// idle events\nif(evKind===0&&tau>evNext){const r=rand();evKind=r<.55?1:r<.8?2:3;evT0=tau;if(evKind===1){glitchBands.length=0;const n=2+Math.floor(rand()*2);for(let b=0;b<n;b++){const r0=P.far+Math.floor(rand()*Math.max(1,rows-P.far-P.near));glitchBands.push([r0,1+Math.floor(rand()*3),(rand()<.5?-1:1)*(2+Math.floor(rand()*3))]);}}if(evKind===3&&words.length){const w=Math.floor(rand()*words.length);const js=ch.map((_,j)=>j).filter(j=>wordIdx[j]===w);js.forEach((j,n)=>{scrUntil[j]=-1;red0[j]=tau;resolve2[j]=tau+.12+.5*n/Math.max(1,js.length)+.1*rand();});}}const dur=evKind===1?P.glitch:evKind===2?words.length*P.flashStep+.3:evKind===3?1.1:0;if(evKind!==0&&tau-evT0>dur){evKind=0;evNext=tau+P.every[0]+rand()*(P.every[1]-P.every[0]);}}const busy=tau>=0&&tau<bootEnd+P.settle+.1||act.length>0||evKind!==0||tau>=0&&tau<scrEnd+P.settle+.05;// at rest nothing is drawn; the loop only keeps time for the next idle event\nif(busy||!rest){if(act.length)step(dt);paint(compose(tau));rest=!busy;}schedule();};const schedule=()=>{if(!raf&&!still&&visible&&!document.hidden)raf=requestAnimationFrame(tick);};// the cursor over the headline knocks its squares loose and scrambles the characters under it\nconst move=(x,y,mouse)=>{const tau=typeT0.current<0?-1:now()-typeT0.current;if(!motion||!ledHover||force<=0||tau<bootEnd-.2)return;// the stage point back onto the plane: the inverse of the tilt and its perspective\nconst q=y-typeBottom;let X0=x-CW/2;let Y0=q;if(planeTilt&&!planeD)Y0=q/ca;else if(planeTilt){const den=q*sa+planeD*ca;if(den<=.001){ptr.in=false;return;}Y0=planeD*q/den;X0=X0*(planeD-Y0*sa)/planeD;}const lx=X0+CW/2-gx;const ly=planeH+Y0;const inside=lx>-Rh*.3&&lx<gw+Rh*.3&&ly>-Rh*.3&&ly<gh+Rh*.3;const t=now();if(!inside){ptr.in=false;return;}if(!ptr.in){ptr={x:lx,y:ly,t,in:true};if(mouse)return;}const mx=lx-ptr.x;const my=ly-ptr.y;const moved=Math.hypot(mx,my);const dt2=Math.max(1/120,t-ptr.t);ptr={x:lx,y:ly,t,in:true};if(moved<1&&mouse)return;const speed=Math.min(moved/dt2,T.maxSpeed);const R2=Rh*Rh;let hit=false;for(let i=0;i<nt;i++){if(tCell[i]<0||free[i]>0)continue;const ex=hx[i]+dx[i]-lx;const ey=hy[i]+dy[i]-ly;const d2=ex*ex+ey*ey;if(d2>R2)continue;const d=Math.sqrt(d2)||1;const w=1-d/Rh;const r1=Math.sin(i*12.9898+t*78.233)*43758.5453;const r2=Math.sin(i*39.3467+t*11.135)*24634.6345;if(r2-Math.floor(r2)>Math.pow(w,.6))continue;const f1=r1-Math.floor(r1);const j=(f1-.5)*T.jitter;const cj=Math.cos(j);const sj=Math.sin(j);const ux=ex/d*cj-ey/d*sj;const uy=ex/d*sj+ey/d*cj;const m=mass[i];const imp=force*w*(T.impulse+speed*T.speedGain)*(mouse?1:1.3)/m;vx[i]+=ux*imp+mx/dt2*T.inherit*w*force/m;vy[i]+=uy*imp+my/dt2*T.inherit*w*force/m;vz[i]=Math.min(340,vz[i]+T.hop*w*force*(.7+.6*(1-f1))/m);free[i]=Math.max(free[i],T.free[0]+(T.free[1]-T.free[0])*w*(.5+.5*Math.abs(j)));eng[i]=0;if(!on[i]){on[i]=1;act.push(i);}hit=true;}// characters under the cursor flicker through glyphs for a moment\nif(hit){for(let j=0;j<nc;j++){const kx=(ch[j].x0+ch[j].x1)/2/pitch+colOff;const ky=(ch[j].base-sm.font.px*.35)/pitch-rowOff;if(Math.hypot(kx*pitch-lx,ky*pitch-ly)>=Rh*.55)continue;if(scrUntil[j]<=tau)scrA[j]=tau;scrUntil[j]=Math.max(scrUntil[j],tau+P.scramble);scrEnd=Math.max(scrEnd,scrUntil[j]);}}schedule();};typeApi.current={move,leave:()=>ptr.in=false};// first view arms the boot; visibility pauses the loop\nlet io=null;let vio=null;const el=sentinelRef.current;if(!still){if(!el||typeof IntersectionObserver===\"undefined\")armed=true;else{io=new IntersectionObserver(es=>{const e=es[es.length-1];if(e.isIntersecting&&e.intersectionRatio>=.55){armed=true;rest=false;schedule();}else if(!e.isIntersecting&&revealReplay){armed=false;typeT0.current=-1;rest=false;}},{threshold:[0,.6]});io.observe(el);vio=new IntersectionObserver(es=>{visible=es[es.length-1].isIntersecting;if(visible){last=0;schedule();}});vio.observe(c);}}const onVis=()=>{if(!document.hidden){last=0;schedule();}};document.addEventListener(\"visibilitychange\",onVis);// first frame (and the only one on the Framer canvas)\nconst t0=now();const tauStill=still?clamp(previewReveal,0,100)/100*bootEnd:typeT0.current<0?-1:t0-typeT0.current;paint(compose(tauStill));schedule();return()=>{if(raf)cancelAnimationFrame(raf);io?.disconnect();vio?.disconnect();document.removeEventListener(\"visibilitychange\",onVis);typeApi.current=null;};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[ledSample,ledInk,Wm,planeH,hopPad,gCols,gRows,pitch,ledPix,planeA,planeTilt,planeD,typeBottom,textTone,typeInk,edgePixel,reduced,still,revealStyle,bootTime,ledHover,ledHoverRadius,ledBurst,revealReplay,previewReveal,dims.w]);// any prop change: draw the wall once more (and, on the Framer canvas, the frame)\nReact.useEffect(()=>{live.led.dirty=true;if(still)requestStill.current();});// Framer canvas: re-render one frame when the LCD text or fonts change\nrequestStill.current=()=>{const stage=stageRef.current;if(!stage||!still)return;requestAnimationFrame(()=>{if(stageRef.current!==stage)return;frameRef.current(now(),0,true);});};// Adaptive quality: when rendered frames keep running long, step the pixel ratio down\nconst adaptRef=React.useRef(()=>undefined);adaptRef.current=(avg,budget)=>{const stage=stageRef.current;if(!stage||avg<=budget*MOTION.adapt.slow||live.dprScale<=MOTION.adapt.floor)return;live.dprScale=Math.max(MOTION.adapt.floor,live.dprScale-MOTION.adapt.step);stage.setDpr(pixelRatio());live.forceFull=true;};// —— the loop: only while on screen, capped at 60 fps (30 on the low tier) ————————\nReact.useEffect(()=>{if(still)return;const el=rootRef.current;let raf=0;let last=0;let visible=typeof IntersectionObserver===\"undefined\";let pageVisible=!document.hidden;let prev=0;let cadence=Infinity// shortest rAF interval seen: the display's refresh, or a throttled one (battery saver, 30 Hz screens)\n;const tick=ms=>{raf=0;const t=ms/1e3;if(prev&&t>prev)cadence=Math.min(cadence,t-prev);prev=t;if(last&&t-last<(lowRef.current?MOTION.frameMinLow:MOTION.frameMin)){schedule();return;}const raw=last?t-last:0;const dt=last?clamp(raw,0,1/20):1/60;last=t;// measure only after the scene has settled (shader compiles, first uploads); before the frame, so a step renders at once\nif(raw>0&&raw<.25){const A=live.adapt;if(!A.since)A.since=t;if(t-A.since>MOTION.adapt.settle){A.avg=A.avg?A.avg*.94+raw*.06:raw;if(++A.frames>=MOTION.adapt.every){A.frames=0;adaptRef.current(A.avg,Math.max(lowRef.current?1/30:1/60,cadence));}}}frameRef.current(t,dt,false);schedule();};const schedule=()=>{if(!raf&&visible&&pageVisible)raf=requestAnimationFrame(tick);};const io=typeof IntersectionObserver===\"undefined\"||!el?null:new IntersectionObserver(e=>{visible=e[e.length-1].isIntersecting;if(visible){last=0;rearmAdapt(live);schedule();}});if(el)io?.observe(el);const onVis=()=>{pageVisible=!document.hidden;if(pageVisible){last=0;rearmAdapt(live);schedule();}};document.addEventListener(\"visibilitychange\",onVis);schedule();return()=>{if(raf)cancelAnimationFrame(raf);io?.disconnect();document.removeEventListener(\"visibilitychange\",onVis);};},[still]);// —— key interaction ————————————————————————————————————————————————\nconst pressKey=i=>{live.down[i]=1;playClick();if(ledWallOn&&!reduced&&keyLook[i]){const c=parseRGB(resolve(keyLook[i].color));// a dark key would only dim the text: those sweep in the glow colour\nconst col=.2126*c[0]+.7152*c[1]+.0722*c[2]<64?ledCol.glow:[c[0]/255,c[1]/255,c[2]/255];live.led.sweeps.push({t0:now(),col});if(live.led.sweeps.length>2)live.led.sweeps.shift();}if(glitchOn){live.kg=i;live.kgT=now();}const c=live.keyC[i];if(c)addRipple(c[0],c[1],0);};const onClickKey=(i,e)=>{// Touch: first tap previews (press + screen), second tap opens\nif(!touchPreview||pointerType.current===\"mouse\"||!keys[i].url)return;const t=Date.now();if(armed!==i||t-armedAt.current>MOTION.touch.armFor){e.preventDefault();setArmed(i);setActive(i);armedAt.current=t;}};const keyHandlers=i=>({onPointerEnter:e=>{pointerType.current=e.pointerType;if(e.pointerType===\"mouse\"){live.hover=i;setActive(i);}},onPointerLeave:()=>{if(live.hover===i)live.hover=-1;// touch fires pointerleave right after pointerup; its release is timed in onPointerUp\n    if(pointerType.current!==\"mouse\")return;live.down[i]=0;setActive(a=>a===i&&live.focus!==i?-1:a);},onPointerDown:e=>{pointerType.current=e.pointerType;pressKey(i);if(e.pointerType!==\"mouse\")setActive(i);},onPointerUp:()=>{if(pointerType.current===\"mouse\")live.down[i]=0;else timers.after(140,()=>live.down[i]=0);},onPointerCancel:()=>{live.down[i]=0;},onFocus:e=>{live.focus=i;try{focusVisible.current=e.currentTarget.matches(\":focus-visible\");}catch{focusVisible.current=true;}setActive(i);placeRef.current();live.forceFull=true;},onBlur:()=>{if(live.focus===i)live.focus=-1;live.down[i]=0;setActive(a=>a===i&&live.hover!==i?-1:a);placeRef.current();},onKeyDown:e=>{if(e.key===\"Enter\"||e.key===\" \"){pressKey(i);timers.after(140,()=>live.down[i]=0);}},onClick:e=>onClickKey(i,e)});const noteId=React.useRef(0);/** A short message typed on the LCD, cleared after a while unless replaced. */const showNote=msg=>{const id=++noteId.current;// the same note again: clear it first so it types (and is announced) afresh\nsetNote(m=>m===msg?null:msg);timers.after(0,()=>{if(noteId.current===id)setNote(msg);});timers.after(2600,()=>{if(noteId.current===id)setNote(null);});};// —— knob: next screen mode ————————————————————————————————————————————\nconst onKnob=()=>{const C=live.crt;const next=((C.sw>=0?C.to:C.mode)+1)%CRT_MODES.length;startSwitch(next,now());C.knobTo+=Math.PI/2;playClick();showNote(`screen — ${CRT_NAMES[CRT_MODES[next]]}`);};// —— stage pointer: tilt, backdrop, radar hover / follow / drag ————————————\nconst toStage=e=>{const r=e.currentTarget.getBoundingClientRect();return[(e.clientX-r.left)*fit.W/(r.width||1),(e.clientY-r.top)*fit.H/(r.height||1)];};/** Stage px → radar units on the glass (rings radius = 1, y up), or null. */const radarAt=(sx,sy)=>{const stage=stageRef.current;const[x0,y0,x1,y1]=live.bez;if(!glReady||!stage||sx<x0||sx>x1||sy<y0||sy>y1)return null;const uv=stage.hitGlass(sx,sy);return uv?[(uv[0]-.5)*2/DEV.ring,(uv[1]-.5)*2/DEV.ring]:null;};const enterBlip=(i,toRadar)=>{setHoverBlip(i);if(glitchOn)live.radar.glitchUntil=now()+.1;if(toRadar&&(live.crt.mode!==0||live.crt.sw>=0))startSwitch(0,now());};const stageHandlers=still?{}:{onPointerMove:e=>{const[sx,sy]=toStage(e);typeApi.current?.move(sx,sy,e.pointerType===\"mouse\");const L=live.radar;live.ptr.x=sx;live.ptr.y=sy;live.ptr.on=true;if(ledWallOn){const w=stageRef.current?stageRef.current.hitWall(sx,sy):null;const P=live.led.ptr;P.on=!!w;P.mouse=e.pointerType===\"mouse\";if(w){P.x=w[0];P.y=w[1];if(P.mouse)burstAt(w,sx,sy,null);}if(readout)showReadout(w);}if(e.pointerType===\"mouse\"){if(maxTilt){live.ty=clamp(sx/fit.W*2-1,-1,1)*maxTilt;live.tx=clamp(sy/fit.H*2-1,-1,1)*maxTilt*.6;}const p=radarAt(sx,sy);L.hover=!!p;if(p){L.px=p[0];L.py=p[1];const over=live.crt.mode===0&&Math.hypot(p[0],p[1])<logoSize/100;if(over&&!L.overLogo&&logoMode===\"center\"){if(logoCount>1)L.logoIdx=(L.logoIdx+1)%logoCount;if(glitchOn)L.logoGlitchUntil=now()+MOTION.glitch.frame*2/1e3;}L.overLogo=over;if(live.crt.mode===3&&now()-live.crt.traceT0>MOTION.crt.trace+1.5)live.crt.traceT0=now()// re-trace on hover\n;}else L.overLogo=false;}else if(L.dragX>=0){L.angle+=(e.clientX-live.dragClientX)*MOTION.radar.drag;live.dragClientX=e.clientX;}},onPointerLeave:()=>{typeApi.current?.leave();live.radar.hover=false;live.radar.overLogo=false;live.tx=0;live.ty=0;live.ptr.on=false;live.led.ptr.on=false;if(readout)showReadout(null);},onPointerDown:e=>{const[sx,sy]=toStage(e);const onLink=!!e.target.closest(\"a,button\");if(sy<skyH-10&&!onLink)addRipple(sx,sy,0);// a click on the LED wall: a bit-flip shock ring\nconst w=ledWallOn&&!onLink&&!reduced&&stageRef.current?stageRef.current.hitWall(sx,sy):null;if(w){live.led.shocks.push({x:w[0],y:w[1],t0:now()});if(live.led.shocks.length>4)live.led.shocks.shift();burstAt(w,sx,sy,1.5);if(e.pointerType!==\"mouse\"){const P=live.led.ptr;P.x=w[0];P.y=w[1];P.on=true;P.mouse=false;}}if(e.pointerType===\"mouse\")return;live.ptr.x=sx;live.ptr.y=sy;live.ptr.on=true;if(radarAt(sx,sy)){live.radar.dragX=1;live.dragClientX=e.clientX;}},onPointerUp:e=>{live.radar.dragX=-1;if(e.pointerType!==\"mouse\"){live.ptr.on=false;live.led.ptr.on=false;}},onPointerCancel:()=>{live.radar.dragX=-1;live.ptr.on=false;live.led.ptr.on=false;}};// —— nav card ——————————————————————————————————————————————————————\nconst[navActiveIdx,setNavActiveIdx]=React.useState(-1);const navSig=nav.map(n=>n.url).join(\"|\");React.useEffect(()=>{const check=()=>setNavActiveIdx(matchActive(nav));check();window.addEventListener(\"popstate\",check);window.addEventListener(\"hashchange\",check);const id=still?0:window.setInterval(check,1e3)// client-side route changes\n;return()=>{window.removeEventListener(\"popstate\",check);window.removeEventListener(\"hashchange\",check);if(id)clearInterval(id);};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[navSig,still]);// —— flat device (loading / no WebGL) ——————————————————————————————————\nconst flat=(()=>{if(!showFlat)return null;const rect=(x0,y0,x1,y1,z=0)=>{const q=[projectFit(fit,dev.alpha,x0,y0,z),projectFit(fit,dev.alpha,x1,y0,z),projectFit(fit,dev.alpha,x1,y1,z),projectFit(fit,dev.alpha,x0,y1,z)];const l=Math.min(...q.map(p=>p[0]));const t=Math.min(...q.map(p=>p[1]));return{left:l,top:t,width:Math.max(...q.map(p=>p[0]))-l,height:Math.max(...q.map(p=>p[1]))-t};};const s=fit.scale;const c=dev.crt;const g=dev.grille;return /*#__PURE__*/_jsxs(\"div\",{className:\"mf-flatdev\",\"aria-hidden\":true,children:[/*#__PURE__*/_jsx(\"span\",{className:\"mf-fslab\",style:{...rect(-dev.width/2,0,dev.width/2,dev.cropY-1),borderRadius:`${.5*s}px ${.5*s}px 0 0`}}),/*#__PURE__*/_jsx(\"span\",{className:\"mf-fwell\",style:{...rect(dev.well.x0,dev.well.y0,dev.well.x1,dev.well.y1),borderRadius:.16*s}}),/*#__PURE__*/_jsxs(\"span\",{className:\"mf-flcd\",style:{...rect(dev.lcd.x0,dev.lcd.y+dev.lcd.h/2,dev.lcd.x1,dev.lcd.y-dev.lcd.h/2),fontSize:dev.lcd.h*s*.42},children:[/*#__PURE__*/_jsx(\"span\",{children:\"›\\xa0\"}),/*#__PURE__*/_jsx(\"span\",{ref:lcdFlatRef,children:live.lcdText})]}),/*#__PURE__*/_jsx(\"span\",{className:\"mf-fknob\",style:rect(dev.knob.x-dev.knob.r,dev.knob.y+dev.knob.r,dev.knob.x+dev.knob.r,dev.knob.y-dev.knob.r)}),g&&/*#__PURE__*/_jsx(\"span\",{className:\"mf-fgrille\",style:{...rect(g.x0,g.ys[0]+g.h,g.x1,g.ys[g.ys.length-1]-g.h),backgroundSize:`100% ${.205*s*Math.cos(dev.alpha)}px`}}),/*#__PURE__*/_jsx(\"span\",{className:\"mf-fbezel\",style:{...rect(dev.bezel.x0,dev.bezel.y0,dev.bezel.x1,dev.bezel.y1,DEV.raise),borderRadius:.2*s}}),/*#__PURE__*/_jsx(\"span\",{className:\"mf-fcrt\",style:rect(c.x-c.R-c.tube,c.y+c.R+c.tube,c.x+c.R+c.tube,c.y-c.R-c.tube,DEV.raise),children:/*#__PURE__*/_jsx(\"span\",{className:\"mf-fglass\",children:/*#__PURE__*/_jsx(MarkLogo,{color:sweepColor,size:c.glassR*s*(logoSize/50)})})})]});})();// —— styles ————————————————————————————————————————————————————————\nconst glowRy=Math.max(120,sky*.62);// the menu card's corners follow the console slab's (0.5u)\nconst navR=Math.round(clamp(fit.scale*.5*.5,12,24));const bigFontCss={...bigTextFont,fontFamily:bigTextFont&&bigTextFont.fontFamily||FALLBACK_SANS,fontWeight:bigTextFont&&bigTextFont.fontWeight||700,letterSpacing:`${clamp(bigTextSpacing,-.2,.5)}em`};const bigTop=fit.edge-bigShow;// nothing below the slab's top edge is painted, so where the device is narrower than the text\n// (phones, the rounded corners) the glyphs still end at its horizon instead of hanging beside it\n// the chamfer's outer lip is the silhouette; the cursor tilt can lower the slab's ends by tiltDip\nconst bigHorizon=projectFit(fit,dev.alpha,0,0,-DEV.bevel)[1]+1+tiltDip;const bigHide=Math.max(0,bigTop+bigPx*bigLead*bigLines-bigHorizon);const bigCell=cellPx;const bigDot=Math.max(1,bigCell-Math.max(1,Math.round(bigCell*.22)));const bigMask=`url(\"data:image/svg+xml,${encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' width='${bigCell}' height='${bigCell}'><rect width='${bigDot}' height='${bigDot}'/></svg>`)}\")`;const navFontCss={...navFont,fontFamily:navFont&&navFont.fontFamily||FALLBACK_SANS,fontWeight:navFont&&navFont.fontWeight||400};const css=`\n.${cls}{position:relative;width:100%;height:clamp(560px,50vw,900px);overflow:hidden;background:${stageColor};container-type:inline-size;isolation:isolate;box-sizing:border-box}\n.${cls} *{box-sizing:border-box}\n.${cls} .mf-stage{position:absolute;inset:0;touch-action:pan-y;background:${stageColor}}\n.${cls} .mf-sky{position:absolute;left:0;top:0;width:100%;display:block;pointer-events:none}\n.${cls} .mf-big{position:absolute;left:${pad}px;right:${pad}px;top:${bigTop.toFixed(1)}px;margin:0;padding:0;font-size:${bigPx.toFixed(2)}px;line-height:${bigLead};text-align:${bigTextAlign};white-space:pre;color:${bigTextColor};clip-path:inset(-50% -20% ${bigHide.toFixed(1)}px -20%);pointer-events:none;user-select:none;font-kerning:normal;text-rendering:geometricPrecision}\n.${cls} .mf-big-outline{color:transparent;-webkit-text-stroke:${Math.max(1,bigPx*.012).toFixed(2)}px ${bigTextColor}}\n.${cls} .mf-big-pixels{-webkit-mask-image:${bigMask};mask-image:${bigMask};-webkit-mask-size:${bigCell}px ${bigCell}px;mask-size:${bigCell}px ${bigCell}px;-webkit-mask-position:${-(pad%bigCell)}px ${(-((bigTop%bigCell+bigCell)%bigCell)).toFixed(1)}px;mask-position:${-(pad%bigCell)}px ${(-((bigTop%bigCell+bigCell)%bigCell)).toFixed(1)}px}\n.${cls} .mf-bigmeasure{position:absolute;left:0;top:0;display:inline-block;font-size:100px;line-height:${bigLead};white-space:pre;visibility:hidden;pointer-events:none}\n.${cls} .mf-canvas{position:absolute;left:0;top:0;width:100%;height:100%;display:block;opacity:0;transition:opacity .7s ease}\n.${cls}.mf-gl .mf-canvas{opacity:1}\n.${cls} .mf-keys{position:absolute;inset:0;margin:0;padding:0;pointer-events:none}\n.${cls} .mf-key{position:absolute;left:0;top:0;display:block;pointer-events:auto;outline:none;border:0;padding:0;margin:0;background:none;color:transparent;font-size:0;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}\n.${cls} .mf-cap{display:none}\n.${cls}.mf-flat .mf-cap{position:absolute;inset:5% 4% 10%;display:flex;align-items:center;justify-content:center;border-radius:${Math.round(fit.scale*.12)}px;background:linear-gradient(180deg,color-mix(in srgb,var(--kc) 82%,white) 0%,var(--kc) 45%,var(--kc2) 100%);box-shadow:inset 0 2px 0 rgba(255,255,255,.25),inset 0 -${Math.round(fit.scale*.08)}px 0 rgba(0,0,0,.35),0 4px 10px rgba(0,0,0,.55);color:var(--kl);font-family:${legendFamily};font-weight:${legendWeight};font-size:${Math.round(fit.scale*clamp(legendSize,8,40)*.01)}px;letter-spacing:${legendSpacing}em;text-transform:uppercase;white-space:nowrap}\n.${cls} .mf-focus{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}\n.${cls} .mf-focus polygon{fill:none;stroke:${screenText};stroke-width:2;stroke-linejoin:round}\n.${cls} .mf-radar{position:absolute;inset:0;margin:0;padding:0;pointer-events:none}\n.${cls} .mf-blip{position:absolute;left:0;top:0;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;border:0;padding:0;background:transparent;cursor:pointer;outline:none;pointer-events:auto;-webkit-tap-highlight-color:transparent}\n.${cls} .mf-blip:focus-visible{box-shadow:0 0 0 2px ${sweepColor}}\n.${cls} .mf-radar-off .mf-blip{pointer-events:none}\n.${cls} .mf-knob{position:absolute;left:0;top:0;border-radius:50%;border:0;padding:0;margin:0;background:transparent;cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}\n.${cls} .mf-knob:focus-visible{box-shadow:0 0 0 2px ${screenText}}\n.${cls} .mf-tip{position:absolute;left:0;top:0;z-index:2;pointer-events:none;padding:5px 9px;border-radius:6px;background:color-mix(in srgb,${radarBg} 90%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,${sweepColor} 55%,transparent);color:${sweepColor};font-family:${screenFamily};font-size:12px;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}\n.${cls} .mf-tip-g{position:absolute;inset:5px 9px;opacity:0}\n.${cls} .mf-tip.mf-tip-on .mf-tip-a{animation:mftipa ${MOTION.glitch.frame*2}ms steps(1) 1}\n.${cls} .mf-tip.mf-tip-on .mf-tip-b{animation:mftipb ${MOTION.glitch.frame*2}ms steps(1) 1}\n@keyframes mftipa{0%{opacity:.85;transform:translateX(-${split}px);color:${glitchColorA}}50%{opacity:0}}\n@keyframes mftipb{0%{opacity:.85;transform:translateX(${split}px);color:${glitchColorB}}50%{opacity:1;transform:translateX(${split*1.5}px);clip-path:inset(40% 0 32% 0);color:${sweepColor}}}\n.${cls}.mf-phone .mf-blip{width:44px;height:44px;margin:-22px 0 0 -22px}\n.${cls} .mf-flatdev{position:absolute;inset:0;pointer-events:none}\n.${cls} .mf-flatdev>span{position:absolute;display:block}\n.${cls} .mf-fslab{background:linear-gradient(180deg,color-mix(in srgb,${slabColor} 80%,white) 0,${slabColor} 3%,color-mix(in srgb,${slabColor} 85%,black) 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.14)}\n.${cls} .mf-fwell{background:${wellColor};box-shadow:inset 0 6px 14px rgba(0,0,0,.8)}\n.${cls} .mf-flcd{display:flex!important;align-items:center;padding:0 1.6em;overflow:hidden;white-space:pre;border-radius:999px;background:${screenBg};color:${screenText};font-family:${screenFamily};text-shadow:0 0 8px color-mix(in srgb,${screenText} 60%,transparent);box-shadow:inset 0 3px 6px rgba(0,0,0,.8)}\n.${cls} .mf-fknob{border-radius:50%;background:radial-gradient(circle at 35% 30%,#3a3c38,#0b0c0b 70%);box-shadow:0 2px 4px rgba(0,0,0,.6)}\n.${cls} .mf-fgrille{background-image:linear-gradient(180deg,rgba(0,0,0,.85) 0 42%,transparent 42%)}\n.${cls} .mf-fbezel{background:linear-gradient(180deg,color-mix(in srgb,${slabColor} 88%,white),${slabColor});box-shadow:0 8px 20px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.14)}\n.${cls} .mf-fcrt{border-radius:50%;padding:7%;background:radial-gradient(circle,#000 62%,#202220 72%,#060606 100%);box-shadow:0 10px 24px rgba(0,0,0,.6)}\n.${cls} .mf-fglass{position:relative!important;display:flex!important;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;background:radial-gradient(circle at 50% 65%,color-mix(in srgb,${radarLines} 22%,${radarBg}),${radarBg} 75%);box-shadow:inset 0 8px 18px rgba(0,0,0,.8)}\n.${cls} .mf-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}\n.${cls} .mf-sentinel{position:absolute;pointer-events:none;visibility:hidden}\n.${cls} .mf-typewrap{position:absolute;inset:0;z-index:2;pointer-events:none}\n.${cls} .mf-type{position:absolute;left:0;display:block;pointer-events:none;transform-origin:50% 100%}\n.${cls} .mf-navcard{position:absolute;left:${pad}px;top:${pad}px;z-index:3;margin:0;padding:0}\n.${cls} .mf-navcard ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}\n.${cls} .mf-navlink{position:relative;display:flex;align-items:center;gap:10px;height:22px;color:${INK_TYPE};opacity:.55;text-decoration:none;font-family:${screenFamily};font-weight:${screenWeight};font-size:11px;line-height:22px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;outline:none;transition:opacity .2s ease}\n.${cls} .mf-navlabel{display:inline-block;transition:transform .3s cubic-bezier(.3,1.4,.5,1)}\n.${cls} .mf-dot,.${cls} .mf-sdot{flex:none;position:relative;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#3a3a36,#191917 70%);box-shadow:0 0 0 1px rgba(18,19,17,.35)}\n.${cls} .mf-navlink:hover,.${cls} .mf-navlink:focus-visible{opacity:1}\n.${cls} .mf-navlink:hover .mf-navlabel,.${cls} .mf-navlink:focus-visible .mf-navlabel{transform:translateX(3px)}\n.${cls} .mf-navlink[aria-current=\"page\"]{opacity:1}\n.${cls} .mf-navlink[aria-current=\"page\"] .mf-dot,.${cls} .mf-sdot{background:radial-gradient(circle at 40% 35%,#fff4c2 0%,#ffb21c 45%,#e07800 100%);box-shadow:0 0 0 1px rgba(18,19,17,.55),0 0 6px 1px rgba(255,150,0,.75),0 0 14px rgba(255,170,30,.45)}\n.${cls} .mf-navlink:hover .mf-dot{background:radial-gradient(circle at 40% 35%,#6a5a2a,#2a2617 70%)}\n.${cls} .mf-navlink:focus-visible .mf-navlabel{text-decoration:underline;text-underline-offset:4px}\n.${cls}.mf-phone .mf-navcard{right:${pad}px}\n.${cls}.mf-phone .mf-navcard ul{display:grid;grid-template-columns:1fr 1fr;column-gap:16px}\n.${cls} .mf-hud{position:absolute;right:${pad}px;top:${pad}px;z-index:3;display:flex;flex-direction:column;align-items:flex-end;gap:0;font-family:${screenFamily};font-weight:${screenWeight};font-size:11px;line-height:22px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;color:${INK_TYPE};pointer-events:none}\n.${cls} .mf-hud p{margin:0}\n.${cls} .mf-status{display:flex;align-items:center;gap:10px}\n.${cls} .mf-sdot{animation:mfpulse 2.4s ease-in-out infinite}\n.${cls} .mf-copy{opacity:.55}\n.${cls}.mf-phone .mf-hud{right:auto;left:${pad}px;top:${pad+dims.nav+10}px;align-items:flex-start}\n@keyframes mfpulse{0%,100%{opacity:1}50%{opacity:.6}}\n@media (prefers-reduced-motion:reduce){.${cls} .mf-navlabel::before,.${cls} .mf-navlabel::after,.${cls} .mf-tip-g,.${cls} .mf-sdot{animation:none!important}.${cls} .mf-navlabel,.${cls} .mf-dot,.${cls} .mf-canvas{transition:none}}\n`;React.useEffect(()=>{if(crtName!==\"radar\"&&!still)setHoverBlip(-1);},[crtName,still]);const tipLabel=shownBlip>=0&&blips[shownBlip]?blips[shownBlip].label:\"\";const[tipKey,setTipKey]=React.useState(0);React.useEffect(()=>{if(hoverBlip>=0)setTipKey(k=>k+1);},[hoverBlip]);const nextName=CRT_NAMES[CRT_MODES[(CRT_MODES.indexOf(crtName)+1)%CRT_MODES.length]];const BigTag=bigTextTag===\"h1\"||bigTextTag===\"h2\"?bigTextTag:\"p\";return /*#__PURE__*/_jsxs(\"footer\",{ref:rootRef,className:[cls,glReady?\"mf-gl\":\"\",showFlat?\"mf-flat\":\"\",phone?\"mf-phone\":\"\"].join(\" \"),style:{...style,...dims.w?{height:fit.H}:{}},children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:css}}),/*#__PURE__*/_jsxs(\"div\",{className:\"mf-stage\",style:{\"--edge\":`${fit.edge.toFixed(1)}px`},...stageHandlers,children:[sky2D&&/*#__PURE__*/_jsx(\"canvas\",{ref:skyRef,className:\"mf-sky\",style:{height:skyH},\"aria-hidden\":true}),hasBig&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{ref:bigMeasureRef,className:\"mf-bigmeasure\",style:bigFontCss,\"aria-hidden\":true,children:bigText.replace(/\\s+$/,\"\")}),/*#__PURE__*/_jsx(BigTag,{className:!ledStyle?`mf-big mf-big-${domStyle}`:\"mf-sr\",style:!ledStyle?bigFontCss:undefined,children:bigCopy})]}),ledStyle&&/*#__PURE__*/_jsx(\"div\",{ref:sentinelRef,className:\"mf-sentinel\",style:{left:pad,width:Math.max(1,fit.W-pad*2),top:typeTop,height:Math.max(8,typeBottom-typeTop)},\"aria-hidden\":true}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,className:\"mf-canvas\",\"aria-hidden\":true}),flat,ledStyle&&// the type plane, tilted back about its near edge by the View Angle, in the perspective of Text Depth\n/*#__PURE__*/_jsx(\"div\",{className:\"mf-typewrap\",style:{perspective:planeD?`${planeD.toFixed(1)}px`:undefined,perspectiveOrigin:`${(Wm/2).toFixed(1)}px ${typeBottom}px`},\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"canvas\",{ref:typeRef,className:\"mf-type\",style:{top:typeBottom-planeH-hopPad,width:Wm,height:planeH+hopPad,transform:planeTilt?`rotateX(${planeA.toFixed(4)}rad)`:undefined}})}),/*#__PURE__*/_jsx(\"nav\",{className:\"mf-keys\",\"aria-label\":\"Footer links\",children:keys.map((k,i)=>{const ext=isExternal(k.url);const look=keyLook[i];const common={className:\"mf-key\",\"aria-label\":keyName(k),ref:el=>{keyEls.current[i]=el;},...keyHandlers(i)};const cap=/*#__PURE__*/_jsx(\"span\",{className:\"mf-cap\",style:{\"--kc\":look.color,\"--kc2\":look.color2,\"--kl\":look.legend},children:isMarkLabel(k.label)?/*#__PURE__*/_jsx(MarkLogo,{color:look.legend,size:fit.scale*.42}):k.label});return k.url?/*#__PURE__*/_jsx(\"a\",{...common,href:k.url,target:ext?\"_blank\":undefined,rel:ext?\"noopener noreferrer\":undefined,children:cap},i):/*#__PURE__*/_jsx(\"button\",{...common,type:\"button\",children:cap},i);})}),/*#__PURE__*/_jsx(\"svg\",{className:\"mf-focus\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"polygon\",{ref:focusRef,style:{display:\"none\"}})}),/*#__PURE__*/_jsx(\"div\",{className:`mf-radar${crtName===\"radar\"?\"\":\" mf-radar-off\"}`,role:\"group\",\"aria-label\":\"Radar: skills, tools and places\",children:blipPos.map((_,i)=>{const item=blips[i];const ext=isExternal(item.url);const props={className:\"mf-blip\",\"aria-label\":item.label,ref:el=>{blipEls.current[i]=el;},onPointerEnter:()=>enterBlip(i,false),onPointerLeave:()=>setHoverBlip(-1),onFocus:()=>enterBlip(i,true),onBlur:()=>setHoverBlip(-1)};return item.url?/*#__PURE__*/_jsx(\"a\",{...props,href:item.url,target:ext?\"_blank\":undefined,rel:ext?\"noopener noreferrer\":undefined},i):/*#__PURE__*/_jsx(\"button\",{...props,type:\"button\",onClick:()=>showNote(`radar — ${item.label.toLowerCase()}`)},i);})}),glReady&&/*#__PURE__*/_jsx(\"button\",{ref:knobRef,type:\"button\",className:\"mf-knob\",\"aria-label\":`Screen: ${CRT_NAMES[crtName]}. Switch to ${nextName}`,onClick:onKnob}),tipLabel&&/*#__PURE__*/_jsxs(\"span\",{ref:tipRef,className:`mf-tip ${glitchOn?\"mf-tip-on\":\"\"}`,\"aria-hidden\":true,children:[/*#__PURE__*/_jsx(\"span\",{className:\"mf-tip-g mf-tip-a\",children:tipLabel}),/*#__PURE__*/_jsx(\"span\",{className:\"mf-tip-g mf-tip-b\",children:tipLabel}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"relative\"},children:tipLabel})]},tipKey),nav.length>0&&/*#__PURE__*/_jsx(\"nav\",{ref:navRef,className:\"mf-navcard\",\"aria-label\":\"Site\",children:/*#__PURE__*/_jsx(\"ul\",{children:nav.map((it,i)=>/*#__PURE__*/_jsx(\"li\",{children:/*#__PURE__*/_jsxs(\"a\",{className:\"mf-navlink\",href:it.url||undefined,\"aria-current\":navActiveIdx===i?\"page\":undefined,children:[/*#__PURE__*/_jsx(\"span\",{className:\"mf-dot\",\"aria-hidden\":true}),/*#__PURE__*/_jsx(\"span\",{className:\"mf-navlabel\",children:it.label})]})},i))})}),hudOn&&/*#__PURE__*/_jsxs(\"div\",{className:\"mf-hud\",children:[status&&/*#__PURE__*/_jsxs(\"p\",{className:\"mf-status\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"mf-sdot\",\"aria-hidden\":true}),/*#__PURE__*/_jsx(\"span\",{children:status})]}),copyright&&/*#__PURE__*/_jsx(\"p\",{className:\"mf-copy\",children:copyright})]}),/*#__PURE__*/_jsx(\"span\",{className:\"mf-sr\",\"aria-live\":\"polite\",children:announce}),/*#__PURE__*/_jsx(\"span\",{ref:probeRef,\"aria-hidden\":true,style:{display:\"none\"}})]})]});}MoavciFooter.displayName=\"MoAVCI Footer\";/** The LED-only controls hide for flat type (or no text). */const noLed=p=>p.bigText===\"\"||p.bigTextStyle===\"solid\"||p.bigTextStyle===\"outline\";const noReveal=p=>noLed(p)||p.revealStyle===\"off\";addPropertyControls(MoavciFooter,{// — Content —\nkeys:{type:ControlType.Array,title:\"Keys\",maxCount:16,control:{type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Key\",description:\"“M●” draws the MoAVCI mark.\"},url:{type:ControlType.Link,title:\"Link\"},message:{type:ControlType.String,title:\"Screen\",defaultValue:\"\",description:\"Typed on the LCD while this key is hovered.\"},color:{type:ControlType.Color,title:\"Colour\",defaultValue:INK_KEY},gradient:{type:ControlType.Boolean,title:\"Gradient\",defaultValue:false},color2:{type:ControlType.Color,title:\"Colour 2\",defaultValue:\"#FF6A13\",description:\"Front of the key when Gradient is on.\"},legend:{type:ControlType.Color,title:\"Legend\",defaultValue:PAPER},size:{type:ControlType.Number,title:\"Width\",min:1,max:3,step:.25,defaultValue:1,unit:\"u\",description:\"Key units (1u = one key).\"},row:{type:ControlType.Number,title:\"Row\",min:1,max:4,step:1,defaultValue:1,displayStepper:true,description:\"Rows are right-aligned.\"}}},defaultValue:DEFAULT_KEYS},navItems:{type:ControlType.Array,title:\"Nav\",maxCount:10,control:{type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Page\"},url:{type:ControlType.Link,title:\"Link\"}}},defaultValue:DEFAULT_NAV,description:\"Card in the top-left corner; the current page gets a dot.\"},screenLines:{type:ControlType.Array,title:\"Screen Lines\",maxCount:8,control:{type:ControlType.String},defaultValue:DEFAULT_LINES,description:\"Cycled on the LCD when no key is hovered.\"},copyright:{type:ControlType.String,title:\"Copyright\",defaultValue:\"\\xa9 2026 MoAVCI\",description:\"Top right, under the status.\"},status:{type:ControlType.String,title:\"Status\",defaultValue:\"Available for work\",description:\"Top right, after a pulsing dot. Empty hides it.\"},version:{type:ControlType.String,title:\"Version\",defaultValue:\"v2.6\",hidden:()=>true},readout:{type:ControlType.Boolean,title:\"Readout\",defaultValue:true,hidden:()=>true},bigText:{type:ControlType.String,title:\"Big Text\",defaultValue:\"Let’s talk.\",displayTextArea:true,description:\"Large type behind the device. New lines make new lines; empty hides it.\"},bigTextFont:{type:ControlType.Font,title:\"Big Font\",controls:\"basic\",defaultFontType:\"sans-serif\",defaultValue:{variant:\"Bold\"},hidden:p=>p.bigText===\"\"},bigTextSize:{type:ControlType.Number,title:\"Big Size\",min:2,max:40,step:.5,unit:\"%\",defaultValue:13,hidden:p=>p.bigText===\"\"||!noLed(p)&&p.bigTextFit!==false,description:\"Of the footer width; long lines shrink to fit.\"},bigTextSpacing:{type:ControlType.Number,title:\"Big Spacing\",min:-.2,max:.5,step:.005,defaultValue:-.045,hidden:p=>p.bigText===\"\"},bigTextColor:{type:ControlType.Color,title:\"Big Colour\",defaultValue:PAPER,hidden:p=>p.bigText===\"\"||!noLed(p)},textTone:{type:ControlType.Enum,title:\"Text Colour\",options:[\"black\",\"white\"],optionTitles:[\"Black\",\"White\"],defaultValue:\"black\",displaySegmentedControl:true,hidden:noLed,description:\"The pixel type's ink on the flat stage colour.\"},textDepth:{type:ControlType.Number,title:\"Text Depth\",min:0,max:40,step:1,unit:\"%\",defaultValue:16,hidden:noLed,description:\"The text lies on the keyboard's surface at its View Angle; this is how much narrower its far edge is. About 5 % is the keyboard's own lens, 0 a parallel view.\"},bigTextStyle:{type:ControlType.Enum,title:\"Big Style\",options:[\"led\",\"solid\",\"outline\"],optionTitles:[\"LED\",\"Solid\",\"Outline\"],defaultValue:\"led\",displaySegmentedControl:true,hidden:p=>p.bigText===\"\",description:\"LED: pixel type lying on the keyboard's surface, in its perspective. Solid / Outline: flat type.\"},bigTextAlign:{type:ControlType.Enum,title:\"Big Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"left\",displaySegmentedControl:true,hidden:p=>p.bigText===\"\"},bigTextOverlap:{type:ControlType.Number,title:\"Big Overlap\",min:0,max:80,step:1,unit:\"%\",defaultValue:22,hidden:p=>p.bigText===\"\",description:\"How much of the last line sits behind the device.\"},bigTextFit:{type:ControlType.Boolean,title:\"Fit Width\",defaultValue:true,hidden:noLed,description:\"LED: the widest line spans the full width, ink to ink, with punctuation hanging into the margin. Off: Big Size sets it.\"},bigTextLeading:{type:ControlType.Number,title:\"Big Leading\",min:.7,max:1.6,step:.01,defaultValue:BIG_LINE,hidden:p=>p.bigText===\"\",description:\"Line height, em.\"},bigTextTag:{type:ControlType.Enum,title:\"Big Tag\",options:[\"p\",\"h2\",\"h1\"],optionTitles:[\"P\",\"H2\",\"H1\"],defaultValue:\"p\",displaySegmentedControl:true,hidden:p=>p.bigText===\"\",description:\"The real text kept in the page for screen readers and search.\"},// — LED text —\npixelSize:{type:ControlType.Number,title:\"LED Pixel\",min:1,max:16,step:1,unit:\"px\",defaultValue:4,hidden:noLed,description:\"One lit cell — small for fine micro-typography. The backdrop shares this grid.\"},pixelGap:{type:ControlType.Number,title:\"LED Gap\",min:0,max:12,step:1,unit:\"px\",defaultValue:2,hidden:noLed},edgePixel:{type:ControlType.Number,title:\"Edge Pixel\",min:20,max:100,step:5,unit:\"%\",defaultValue:55,hidden:noLed,description:\"Size of the pixels on curve edges, so shapes read smooth.\"},ghostOpacity:{type:ControlType.Number,title:\"Ghost Grid\",min:0,max:30,step:1,unit:\"%\",defaultValue:7,hidden:noLed,description:\"The unlit cells, faintly visible.\"},ghostColor:{type:ControlType.Color,title:\"Ghost Colour\",defaultValue:\"#FFFFFF\",hidden:()=>true},ledGlow:{type:ControlType.Number,title:\"LED Glow\",min:0,max:16,step:1,unit:\"px\",defaultValue:8,hidden:()=>true,description:\"Soft light around the lit pixels.\"},ledSoftness:{type:ControlType.Number,title:\"Softness\",min:0,max:1.5,step:.05,unit:\"px\",defaultValue:.3,hidden:()=>true,description:\"Edge softness: the wall is behind the device, a touch out of focus.\"},ledTwinkle:{type:ControlType.Boolean,title:\"Twinkle\",defaultValue:true,hidden:()=>true,description:\"A very slow shimmer on the lit pixels.\"},ledHover:{type:ControlType.Boolean,title:\"Burst\",defaultValue:true,hidden:noLed,description:\"The squares burst where the cursor sweeps over the text — tumbling out toward you, a few in the glitch colours — and glide back into place. A click bursts harder and sends a bit-flip ring.\"},ledHoverRadius:{type:ControlType.Number,title:\"Burst Radius\",min:30,max:320,step:5,unit:\"px\",defaultValue:70,hidden:p=>noLed(p)||p.ledHover===false},ledBurst:{type:ControlType.Number,title:\"Burst Force\",min:.2,max:2,step:.05,defaultValue:1,hidden:p=>noLed(p)||p.ledHover===false,description:\"How far the squares fly and how high they lift.\"},ledGuides:{type:ControlType.Boolean,title:\"Type Guides\",defaultValue:true,hidden:()=>true,description:\"Baseline, x-height and cap-height rows and the optical margins, a step brighter than the ghost grid — like a type specimen.\"},ledScanlines:{type:ControlType.Boolean,title:\"Scanlines\",defaultValue:true,hidden:()=>true,description:\"A slow refresh band and lit pixel tops, like a real panel.\"},// — LED wall —\nwallPerspective:{type:ControlType.Number,title:\"Perspective\",min:0,max:150,step:5,unit:\"%\",defaultValue:100,hidden:()=>true,description:\"100 % foreshortens the text exactly like the keyboard. 0 % faces the camera; more stands it up.\"},wallDistance:{type:ControlType.Number,title:\"Wall Distance\",min:.2,max:6,step:.1,unit:\"u\",defaultValue:1.2,hidden:()=>true,description:\"How far behind the device the wall stands (1u = one key). Further = more parallax.\"},wallLight:{type:ControlType.Number,title:\"Wall Light\",min:0,max:2,step:.05,defaultValue:1,hidden:()=>true,description:\"How much the LED light falls on the device's top edge and the keys.\"},// — Reveal —\nrevealStyle:{type:ControlType.Enum,title:\"Reveal\",options:[\"bits\",\"scan\",\"off\"],optionTitles:[\"Bits\",\"Scan\",\"Off\"],defaultValue:\"bits\",displaySegmentedControl:true,hidden:noLed,description:\"The first time the footer is seen: the panel powers on, the text switches on bit by bit (or row by row), then rises from behind the device.\"},bootTime:{type:ControlType.Number,title:\"Boot\",min:.3,max:4,step:.1,unit:\"s\",defaultValue:1.2,hidden:noReveal,description:\"How long the bits take to switch on.\"},riseFrom:{type:ControlType.Number,title:\"Rise From\",min:0,max:100,step:1,unit:\"%\",defaultValue:45,hidden:()=>true,description:\"How much of the text is hidden behind the device while it boots, before it rises.\"},riseTime:{type:ControlType.Number,title:\"Rise\",min:.4,max:8,step:.1,unit:\"s\",defaultValue:3.2,hidden:()=>true,description:\"How long the slow rise takes.\"},revealReplay:{type:ControlType.Boolean,title:\"Replay\",defaultValue:false,hidden:noReveal,description:\"Play again every time the footer comes back into view.\"},previewReveal:{type:ControlType.Number,title:\"Preview Reveal\",min:0,max:100,step:1,unit:\"%\",defaultValue:100,hidden:noLed,description:\"Framer canvas only: a moment of the reveal.\"},blips:{type:ControlType.Array,title:\"Blips\",maxCount:24,control:{type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Skill\"},url:{type:ControlType.Link,title:\"Link\"}}},defaultValue:DEFAULT_BLIPS},blipCount:{type:ControlType.Number,title:\"Blip Count\",min:0,max:24,step:1,defaultValue:0,displayStepper:true,description:\"Dots on the radar (0 = a clean radar).\"},logos:{type:ControlType.Array,title:\"Logos\",maxCount:6,control:{type:ControlType.ResponsiveImage},description:\"Empty = the M● mark drawn in the sweep colour.\"},logoMode:{type:ControlType.Enum,title:\"Logo Mode\",options:[\"center\",\"cycle\",\"blips\"],optionTitles:[\"Center\",\"Cycle\",\"Blips\"],defaultValue:\"center\",displaySegmentedControl:true,description:\"Center: hovering the logo switches it. Cycle: every 4 s. Blips: logos ride the radar.\"},logoSize:{type:ControlType.Number,title:\"Logo Size\",min:8,max:50,step:1,unit:\"%\",defaultValue:18},screenModes:{type:ControlType.Enum,title:\"Screen\",options:[\"cycle\",\"radar\",\"scope\",\"lissajous\",\"mark\"],optionTitles:[\"Cycle\",\"Radar\",\"Scope\",\"Lissajous\",\"Logo\"],defaultValue:\"radar\",description:\"Cycle: radar → scope → logo trace → Lissajous. The knob always switches by hand.\"},cycleSeconds:{type:ControlType.Number,title:\"Cycle\",min:3,max:30,step:.5,unit:\"s\",defaultValue:8,hidden:p=>p.screenModes!==undefined&&p.screenModes!==\"cycle\",description:\"Per mode (the radar stays 1.5\\xd7 longer).\"},backdrop:{type:ControlType.Enum,title:\"Backdrop\",options:[\"pixels\",\"lines\",\"none\"],optionTitles:[\"Pixels\",\"Lines\",\"None\"],defaultValue:\"none\",displaySegmentedControl:true,description:\"Interactive layer in the dark space above the device. With LED text, Pixels live on the same 3D LED wall.\"},backdropSize:{type:ControlType.Number,title:\"Backdrop Size\",min:4,max:24,step:1,unit:\"px\",defaultValue:9,hidden:p=>p.backdrop===\"none\"||!noLed(p)&&p.backdrop!==\"lines\",description:\"Pixel size (lines are spaced 1.8\\xd7 this). With LED text the pixels follow the LED grid.\"},backdropStrength:{type:ControlType.Number,title:\"Backdrop Amt\",min:0,max:2,step:.05,defaultValue:.8,hidden:p=>p.backdrop===\"none\"},backdropSpeed:{type:ControlType.Number,title:\"Backdrop Speed\",min:0,max:2,step:.05,defaultValue:.35,hidden:p=>p.backdrop===\"none\",description:\"Pace of the drifting glow, signal trace and sparks. 0 = still, 1 = lively.\"},backdropTrail:{type:ControlType.Boolean,title:\"Cursor Trail\",defaultValue:true,hidden:p=>p.backdrop===\"none\",description:\"A soft glow follows the pointer.\"},backdropRipples:{type:ControlType.Boolean,title:\"Ripples\",defaultValue:false,hidden:p=>p.backdrop===\"none\",description:\"Rings spread from clicks, key presses and screen switches.\"},// — Colour —\nstageColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFD23F\",description:\"A flat colour behind everything.\"},glowColor:{type:ControlType.Color,title:\"Glow\",defaultValue:\"#FFD23F\"},slabColor:{type:ControlType.Color,title:\"Device\",defaultValue:\"#212220\"},wellColor:{type:ControlType.Color,title:\"Keyboard\",defaultValue:\"#080908\",description:\"The well the keys sit in (and the grille slots).\"},keyStyle:{type:ControlType.Enum,title:\"Key Colours\",options:[\"accents\",\"mono\"],optionTitles:[\"Accents\",\"Mono\"],defaultValue:\"accents\",displaySegmentedControl:true,description:\"Accents: each key's own colour. Mono: every key in the colours below.\"},monoColor:{type:ControlType.Color,title:\"Mono Key\",defaultValue:INK_KEY,hidden:p=>p.keyStyle!==\"mono\"},monoLegend:{type:ControlType.Color,title:\"Mono Legend\",defaultValue:PAPER,hidden:p=>p.keyStyle!==\"mono\"},screenBg:{type:ControlType.Color,title:\"LCD BG\",defaultValue:\"#0B0D08\"},screenText:{type:ControlType.Color,title:\"LCD Text\",defaultValue:\"#FFD23F\"},ledColor:{type:ControlType.Color,title:\"LED\",defaultValue:\"#FFD23F\"},radarBg:{type:ControlType.Color,title:\"Radar BG\",defaultValue:\"#0D0F0A\"},radarLines:{type:ControlType.Color,title:\"Radar Lines\",defaultValue:\"#FFD23F\"},sweepColor:{type:ControlType.Color,title:\"Sweep\",defaultValue:\"#FFD23F\"},blipColor:{type:ControlType.Color,title:\"Blips\",defaultValue:\"#FFD23F\"},navBg:{type:ControlType.Color,title:\"Nav Card\",defaultValue:\"#0C0D0B\"},navText:{type:ControlType.Color,title:\"Nav Text\",defaultValue:PAPER},navActive:{type:ControlType.Color,title:\"Nav Dot\",defaultValue:\"#FFD23F\"},statusColor:{type:ControlType.Color,title:\"Status Dot\",defaultValue:\"#FFD23F\"},glitchColorA:{type:ControlType.Color,title:\"Glitch A\",defaultValue:\"#2E46FF\"},glitchColorB:{type:ControlType.Color,title:\"Glitch B\",defaultValue:\"#FF6A13\"},// — Type —\nlegendFont:{type:ControlType.Font,title:\"Legend Font\",controls:\"basic\",defaultFontType:\"sans-serif\",defaultValue:{variant:\"Bold\"}},legendSize:{type:ControlType.Number,title:\"Legend Size\",min:8,max:40,step:1,unit:\"%\",defaultValue:21,description:\"Of one key unit; long legends shrink to fit.\"},legendSpacing:{type:ControlType.Number,title:\"Legend Spacing\",min:-.05,max:.3,step:.005,defaultValue:.04},screenFont:{type:ControlType.Font,title:\"LCD Font\",controls:\"basic\",defaultFontType:\"monospace\",defaultValue:{variant:\"Medium\"}},navFont:{type:ControlType.Font,title:\"Nav Font\",controls:\"basic\",defaultFontType:\"sans-serif\",defaultValue:{variant:\"Regular\"}},navSize:{type:ControlType.Number,title:\"Nav Size\",min:11,max:28,step:1,unit:\"px\",defaultValue:17},// — 3D —\nviewAngle:{type:ControlType.Number,title:\"View Angle\",min:0,max:70,step:1,unit:\"\\xb0\",defaultValue:54,description:\"How far the camera looks down onto the device (65 % of this on phones). The LED text lies at the same angle.\"},lens:{type:ControlType.Number,title:\"Lens\",min:3,max:40,step:1,unit:\"\\xb0\",defaultValue:9,description:\"Field of view. Low = flat product-shot look, high = strong perspective.\"},keySize:{type:ControlType.Number,title:\"Key Size\",min:60,max:160,step:1,unit:\"px\",defaultValue:92,description:\"Target size of one key on wide screens; the grille takes the rest.\"},skySpace:{type:ControlType.Number,title:\"Top Space\",min:0,max:60,step:1,unit:\"%\",defaultValue:28,hidden:p=>!noLed(p),description:\"Space above the device, % of the width (never less than the menu). With LED text the text sets it.\"},keyHeight:{type:ControlType.Number,title:\"Key Height\",min:.3,max:.9,step:.01,unit:\"u\",defaultValue:.6},pressDistance:{type:ControlType.Number,title:\"Press\",min:.02,max:.25,step:.01,unit:\"u\",defaultValue:.12},gloss:{type:ControlType.Number,title:\"Gloss\",min:0,max:1,step:.05,defaultValue:.8},shadow:{type:ControlType.Number,title:\"Key Light\",min:0,max:2,step:.05,defaultValue:1,description:\"Strength of the shadow-casting light.\"},exposure:{type:ControlType.Number,title:\"Exposure\",min:.4,max:2,step:.05,defaultValue:1},tilt:{type:ControlType.Number,title:\"Tilt\",min:0,max:5,step:.25,unit:\"\\xb0\",defaultValue:1.5,hidden:()=>true},// — Motion —\ntypingSpeed:{type:ControlType.Number,title:\"Typing\",min:8,max:120,step:1,unit:\"ch/s\",defaultValue:38},cursorStyle:{type:ControlType.Enum,title:\"Cursor\",options:[\"block\",\"bar\",\"underline\"],optionTitles:[\"Block\",\"Bar\",\"Underline\"],defaultValue:\"block\",displaySegmentedControl:true},touchPreview:{type:ControlType.Boolean,title:\"Touch Preview\",defaultValue:true,description:\"On touch, the first tap shows the key's message; a second tap opens it.\"},turnSeconds:{type:ControlType.Number,title:\"Sweep Turn\",min:1,max:20,step:.5,unit:\"s\",defaultValue:4,description:\"Seconds per revolution.\"},rings:{type:ControlType.Number,title:\"Rings\",min:1,max:10,step:1,defaultValue:2,displayStepper:true},followCursor:{type:ControlType.Boolean,title:\"Follow Cursor\",defaultValue:false,description:\"While the glass is hovered, the sweep turns toward the pointer.\"},glitch:{type:ControlType.Boolean,title:\"Glitch\",defaultValue:true},glitchIntensity:{type:ControlType.Number,title:\"Glitch Amt\",min:0,max:3,step:.1,defaultValue:1,hidden:p=>p.glitch===false},sound:{type:ControlType.Boolean,title:\"Key Sound\",defaultValue:false},volume:{type:ControlType.Number,title:\"Volume\",min:0,max:1,step:.05,defaultValue:.5,hidden:p=>!p.sound},stiffness:{type:ControlType.Number,title:\"Stiffness\",min:100,max:1500,step:10,defaultValue:700,description:\"Key press spring; the tilt uses a softer version.\"},damping:{type:ControlType.Number,title:\"Damping\",min:5,max:80,step:1,defaultValue:30},speed:{type:ControlType.Number,title:\"Speed\",min:.25,max:3,step:.05,defaultValue:1},// — Breakpoint —\nmobileBreakpoint:{type:ControlType.Number,title:\"Mobile BP\",min:320,max:1e3,step:10,unit:\"px\",defaultValue:640,description:\"Below this the device turns portrait (radar under the keys).\"},quality:{type:ControlType.Enum,title:\"Quality\",options:[\"auto\",\"high\",\"low\"],optionTitles:[\"Auto\",\"High\",\"Low\"],defaultValue:\"auto\",displaySegmentedControl:true,description:\"Auto: Low on phones, touch devices and small machines (30 fps, ≤ 1.5\\xd7 pixels, lighter materials). The pixel ratio also steps down whenever frames run slow.\"},// — Canvas preview —\npreviewKey:{type:ControlType.Number,title:\"Preview Key\",min:-1,max:15,step:1,defaultValue:-1,displayStepper:true,description:\"Framer canvas only: press a key (−1 = none).\"},previewScreen:{type:ControlType.String,title:\"Preview Text\",defaultValue:\"\",description:\"Framer canvas only.\"},previewAngle:{type:ControlType.Number,title:\"Preview Sweep\",min:0,max:360,step:1,unit:\"\\xb0\",defaultValue:120},previewBlip:{type:ControlType.Number,title:\"Preview Blip\",min:-1,max:23,step:1,defaultValue:-1,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MoavciFooter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Footer2o3.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion,AnimatePresence,animate,useMotionValue,useSpring,useReducedMotion}from\"framer-motion\";// ————————————————————————————————————————————————————————————————\n// Motion — every amplitude and timing lives here\n// ————————————————————————————————————————————————————————————————\nconst MOTION={label:{lift:2.5,nudge:2},cta:{lift:2},glitch:{split:2,slice:3,frame:[30,60]},hide:{delta:6,gap:14},ruler:{// tick heights in px: major > half > minor\ntick:{major:12,half:10,minor:6},label:{top:18,size:10},ease:[.5,1,.89,1]},menu:{stagger:.04,rise:18,ease:[.22,1,.36,1],duration:.42},fade:{duration:.18}};/**\n * The designer's spring, scaled by Speed so the damping ratio stays the\n * same: k × s², c × s. Defaults 420 / 28 → ζ = c / 2√k ≈ 0.68, one slight\n * overshoot.\n */function tune(stiffness,damping,speed){const s=Math.max(.1,speed);return{type:\"spring\",stiffness:stiffness*s*s,damping:damping*s,mass:1};}/**\n * Hide / show spring: same stiffness (so same pace as the rest of the bar),\n * damping raised to critical (ζ = 1) — the bar + ruler layer lands exactly\n * on its slot and never overshoots past the top edge.\n */function tuneHide(stiffness,speed){const s=Math.max(.1,speed);const k=stiffness*s*s;return{type:\"spring\",stiffness:k,damping:2*Math.sqrt(k),mass:1,restDelta:.01,restSpeed:.01};}// ————————————————————————————————————————————————————————————————\n// Helpers\n// ————————————————————————————————————————————————————————————————\nconst DEFAULT_ITEMS=[{label:\"Home\",link:\"/\",icon:\"home\"},{label:\"About\",link:\"/about\",icon:\"about\"},{label:\"Works\",link:\"/case-study\",icon:\"works\"},{label:\"AI Work\",link:\"/ai-work\",icon:\"ai\"},{label:\"Playground\",link:\"/play-ground\",icon:\"playground\"},{label:\"Contact\",link:\"/contact\",icon:\"contact\"}];const FALLBACK_FONT='\"Inter\", \"Helvetica Neue\", Arial, sans-serif';const INDICATOR_BASE=100// px; the block is scaled from this width, never resized\n;const useIsoLayoutEffect=typeof window===\"undefined\"?React.useEffect:React.useLayoutEffect;/** setTimeout that is always cleared on unmount. */function useTimers(){const ids=React.useRef([]);React.useEffect(()=>()=>ids.current.forEach(id=>clearTimeout(id)),[]);return React.useMemo(()=>({after(ms,fn){ids.current.push(window.setTimeout(fn,ms));},clear(){ids.current.forEach(id=>clearTimeout(id));ids.current=[];}}),[]);}const normPath=p=>p.replace(/\\/+$/,\"\")||\"/\";/** Index of the item whose link matches the current page (longest prefix wins). */function matchActive(items){if(typeof window===\"undefined\")return-1;const here=normPath(window.location.pathname);let best=-1;let len=-1;items.forEach((it,i)=>{if(!it.link)return;try{const u=new URL(it.link,window.location.href);if(u.origin!==window.location.origin)return;const p=normPath(u.pathname);if(p===here&&len<Infinity){best=i;len=Infinity;}else if(p!==\"/\"&&here.startsWith(p+\"/\")&&p.length>len){best=i;len=p.length;}}catch{/* not a URL — ignore */}});return best;}// ————————————————————————————————————————————————————————————————\n// Icons — filled, 24-grid, drawn in currentColor\n// ————————————————————————————————————————————————————————————————\nfunction Glyph({icon,size}){if(icon===\"none\")return null;const p={width:size,height:size,viewBox:\"0 0 24 24\",\"aria-hidden\":true,style:{display:\"block\",flex:\"none\"}};switch(icon){case\"home\":return /*#__PURE__*/_jsx(\"svg\",{...p,children:/*#__PURE__*/_jsx(\"path\",{fill:\"currentColor\",d:\"M12 2.8 2.5 10.6V21h7v-6.2h5V21h7V10.6z\"})});case\"about\":return /*#__PURE__*/_jsx(\"svg\",{...p,children:/*#__PURE__*/_jsxs(\"g\",{fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2.6\",children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"6.5\",cy:\"14\",r:\"4\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"17.5\",cy:\"14\",r:\"4\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M10.5 13.5c1-1 2-1 3 0M2.5 13 4 7M21.5 13 20 7\"})]})});case\"works\":return /*#__PURE__*/_jsx(\"svg\",{...p,children:/*#__PURE__*/_jsx(\"path\",{fill:\"currentColor\",d:\"M5 2.5h14v19H5zM7.5 17h9v2h-9z\",fillRule:\"evenodd\"})});case\"ai\":return /*#__PURE__*/_jsx(\"svg\",{...p,children:/*#__PURE__*/_jsx(\"path\",{fill:\"currentColor\",d:\"M12 1.8 14.3 9.7 22.2 12l-7.9 2.3L12 22.2l-2.3-7.9L1.8 12l7.9-2.3z\"})});case\"playground\":return /*#__PURE__*/_jsx(\"svg\",{...p,children:/*#__PURE__*/_jsx(\"path\",{fill:\"currentColor\",d:\"M12 1.5 4.5 9.5 7.6 18h8.8l3.1-8.5zM11 9.4V3.8h2v5.6a2 2 0 1 1-2 0zM7.5 20h9v2.5h-9z\",fillRule:\"evenodd\"})});case\"contact\":return /*#__PURE__*/_jsx(\"svg\",{...p,children:/*#__PURE__*/_jsx(\"path\",{fill:\"currentColor\",d:\"M12 21.3S2.5 15.4 2.5 8.9A5 5 0 0 1 12 6.3a5 5 0 0 1 9.5 2.6c0 6.5-9.5 12.4-9.5 12.4z\"})});}return null;}function Label({item,look,color}){return /*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",gap:look.gap,color,whiteSpace:\"nowrap\"},children:[look.icons&&/*#__PURE__*/_jsx(Glyph,{icon:item.icon,size:Math.round(look.fontSize*1.15)}),/*#__PURE__*/_jsx(\"span\",{children:item.label})]});}/** Glitch copies for one slot: frame 1 = RGB split, frame 2 = one slice. */function GlitchCopies(p){if(!p.frame)return null;const layer={position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",padding:`0 ${p.look.pad}px`,pointerEvents:\"none\"};if(p.frame===1)return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{...layer,transform:`translateX(${-p.split}px)`,opacity:.9},children:/*#__PURE__*/_jsx(Label,{item:p.item,look:p.look,color:p.a})}),/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{...layer,transform:`translateX(${p.split}px)`,opacity:.9},children:/*#__PURE__*/_jsx(Label,{item:p.item,look:p.look,color:p.b})})]});return /*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{...layer,transform:`translateX(${p.slice}px)`,clipPath:\"inset(42% 0 30% 0)\",zIndex:3},children:/*#__PURE__*/_jsx(Label,{item:p.item,look:p.look,color:p.top})});}// ————————————————————————————————————————————————————————————————\n// One desktop slot\n// ————————————————————————————————————————————————————————————————\nfunction Slot(p){const y=p.hovered&&!p.still?-p.lift:0;const ix=p.hovered&&!p.still?p.nudge:0;const fade={duration:p.still?0:.12};const layer={position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",padding:`0 ${p.look.pad}px`};return /*#__PURE__*/_jsxs(\"span\",{style:{position:\"relative\",display:\"flex\",alignItems:\"center\",height:\"100%\",padding:`0 ${p.look.pad}px`,overflow:\"hidden\"},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{visibility:\"hidden\"},children:/*#__PURE__*/_jsx(Label,{item:p.item,look:p.look,color:p.text})}),/*#__PURE__*/_jsx(GlitchCopies,{item:p.item,look:p.look,frame:p.frame,a:p.glitchA,b:p.glitchB,top:p.onBlock?p.blockLabel:p.text,split:p.split,slice:p.slice}),/*#__PURE__*/_jsx(motion.span,{style:{...layer,zIndex:1},initial:false,animate:{y,opacity:p.onBlock?0:1},transition:{y:p.spring,opacity:fade},children:/*#__PURE__*/_jsx(motion.span,{style:{display:\"inline-flex\"},initial:false,animate:{x:-ix},transition:p.spring,children:/*#__PURE__*/_jsx(Label,{item:p.item,look:p.look,color:p.text})})}),/*#__PURE__*/_jsx(motion.span,{\"aria-hidden\":true,style:{...layer,zIndex:2},initial:false,animate:{y,opacity:p.onBlock?1:0},transition:{y:p.spring,opacity:fade},children:/*#__PURE__*/_jsx(Label,{item:p.item,look:p.look,color:p.blockLabel})})]});}// ————————————————————————————————————————————————————————————————\n// Ruler — one SVG strip that drifts with the cursor. It is drawn wider than\n// the screen by Travel on both sides, so drifting never shows an empty edge.\n// The numbers only ever translate, never scale.\n// ————————————————————————————————————————————————————————————————\nfunction RulerStrip(p){const boxRef=React.useRef(null);const[width,setWidth]=React.useState(1920)// SSR guess; measured on mount\n;const x=useMotionValue(0);useIsoLayoutEffect(()=>{const el=boxRef.current;if(!el)return;const measure=()=>setWidth(Math.ceil(el.clientWidth)||1920);measure();if(typeof ResizeObserver===\"undefined\")return;const ro=new ResizeObserver(measure);ro.observe(el);return()=>ro.disconnect();},[]);React.useEffect(()=>{if(p.still||typeof window===\"undefined\"){x.set(0);return;}let anim=null;const onMove=e=>{const target=(e.clientX/window.innerWidth-.5)*p.travel;anim?.stop();anim=animate(x,target,{duration:Math.max(.01,p.speed),ease:MOTION.ruler.ease});};window.addEventListener(\"mousemove\",onMove,{passive:true});return()=>{window.removeEventListener(\"mousemove\",onMove);anim?.stop();};},[p.still,p.travel,p.speed,x]);const geo=React.useMemo(()=>{const sub=Math.max(1,Math.round(p.subdivisions));const minor=Math.max(2,p.majorStep/sub);const half=sub%2===0?sub/2:0;const pad=Math.ceil(p.travel/2+p.majorStep);const k0=-Math.ceil(pad/minor);const k1=Math.ceil((width+pad)/minor);const t=MOTION.ruler.tick;let d=\"\";const labels=[];for(let k=k0;k<=k1;k++){const v=k*minor;const px=Math.round(v+pad)+.5// crisp 1px line\n;const major=k%sub===0;const h=major?t.major:half&&k%half===0?t.half:t.minor;d+=`M${px} 0V${h}`;if(major)labels.push({x:px,v:Math.round(v)});}return{d,labels,pad,w:width+pad*2};},[p.majorStep,p.subdivisions,p.travel,width]);return /*#__PURE__*/_jsx(\"div\",{ref:boxRef,\"aria-hidden\":true,style:{position:\"relative\",width:\"100%\",height:p.height,overflow:\"hidden\",background:p.background,borderBottom:`1px solid ${p.line}`,pointerEvents:\"none\",boxSizing:\"border-box\"},children:/*#__PURE__*/_jsxs(motion.svg,{width:geo.w,height:p.height,style:{position:\"absolute\",top:0,left:-geo.pad,x,display:\"block\",willChange:\"transform\"},children:[/*#__PURE__*/_jsx(\"path\",{d:geo.d,stroke:p.color,strokeWidth:1,shapeRendering:\"crispEdges\",fill:\"none\"}),geo.labels.map(l=>/*#__PURE__*/_jsx(\"text\",{x:l.x,y:MOTION.ruler.label.top,fill:p.color,textAnchor:\"middle\",dominantBaseline:\"hanging\",style:{fontFamily:p.fontFamily,fontSize:MOTION.ruler.label.size,fontWeight:400,letterSpacing:0,textTransform:\"none\",fontVariantNumeric:\"tabular-nums\"},children:l.v},l.v))]})});}// ————————————————————————————————————————————————————————————————\n// Component\n// ————————————————————————————————————————————————————————————————\nexport default function MoavciNav(props){const{items:itemsProp=DEFAULT_ITEMS,ctaLast=true,autoActive=true,activeIndex=0,logo,logoLink=\"/\",textColor=\"#191C15\",background=\"#FFFFFF\",inkColor=\"#191C15\",hoverTextColor=\"#FFFFFF\",activeColor=\"#FFD23F\",glitchColorA=\"#2E46FF\",glitchColorB=\"#FF6A13\",borderColor=\"#CFCFCB\",font,fontSize=13,letterSpacing=.02,uppercase=true,icons=true,barStyle=\"line\",barHeight:height=56,padding=24,maxWidth=1200,border=true,blur=0,radius=999,position=\"layout\",scrollHide=true,hideThreshold=80,ruler=true,rulerHeight=40,rulerMajorStep=100,rulerSubdivisions=10,rulerColor=\"#000000\",rulerBackground=\"#FFFFFF\",rulerTravel=300,rulerSpeed=.2,hoverEffect=\"block\",intensity=1,glitch=true,glitchIntensity=1,stiffness=420,damping=28,speed=1,mobileBreakpoint=960,mobileMenu=\"fullscreen\",menuBackground=\"#FFFFFF\",previewState=\"rest\",previewIndex=1,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const reduce=!!useReducedMotion();const still=isCanvas||reduce;const spring=React.useMemo(()=>tune(stiffness,damping,speed),[stiffness,damping,speed]);const hideSpring=React.useMemo(()=>tuneHide(stiffness,speed),[stiffness,speed]);const timers=useTimers();const uid=React.useId().replace(/[^a-zA-Z0-9]/g,\"\");const cls=`mnav-${uid}`;const menuId=`${cls}-menu`;const items=itemsProp&&itemsProp.length?itemsProp:DEFAULT_ITEMS;const cta=ctaLast&&items.length>1?items.length-1:-1;const main=cta>=0?items.slice(0,cta):items;// —— palette per bar style ——————————————————————————————————————————\nconst solid=barStyle===\"solid\";const pal={bar:solid?inkColor:background,text:solid?background:textColor,block:solid?background:inkColor,onBlock:solid?inkColor:hoverTextColor,active:solid?inkColor:activeColor,line:solid?background:inkColor};// —— active page ————————————————————————————————————————————————————\nconst[autoIdx,setAutoIdx]=React.useState(-1);const itemsKey=items.map(i=>i.link).join(\"|\");React.useEffect(()=>{if(!autoActive||isCanvas)return;const check=()=>setAutoIdx(matchActive(items));check();// Framer routes with pushState (no event), so re-check after clicks too\nconst later=()=>window.setTimeout(check,60);window.addEventListener(\"popstate\",check);window.addEventListener(\"hashchange\",check);document.addEventListener(\"click\",later,true);return()=>{window.removeEventListener(\"popstate\",check);window.removeEventListener(\"hashchange\",check);document.removeEventListener(\"click\",later,true);};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[autoActive,isCanvas,itemsKey]);const active=autoActive&&!isCanvas&&autoIdx>=0?autoIdx:activeIndex;// —— hover + glitch —————————————————————————————————————————————————\nconst[hover,setHover]=React.useState(-1);const[gl,setGl]=React.useState({i:-1,f:0});const runGlitch=React.useCallback(i=>{if(!glitch||still||glitchIntensity<=0)return;timers.clear();const[lo,hi]=MOTION.glitch.frame;const a=lo+Math.random()*(hi-lo);const b=lo+Math.random()*(hi-lo);setGl({i,f:1});timers.after(a,()=>setGl({i,f:2}));timers.after(a+b,()=>setGl({i:-1,f:0}));},[glitch,still,glitchIntensity,timers]);const enter=i=>{if(i===hover)return;setHover(i);runGlitch(i);};const previewHover=isCanvas&&previewState===\"hover\"?previewIndex:-1;const hovered=hover>=0?hover:previewHover;// The block follows hover, and rests on the active page\nconst target=hoverEffect===\"shift\"?active:hovered>=0?hovered:active;// —— shared indicator (block / underline) ————————————————————————————\nconst listRef=React.useRef(null);const slotRefs=React.useRef([]);const rects=React.useRef([]);const placed=React.useRef(false);const sp={stiffness:spring.stiffness,damping:spring.damping,mass:1};const ix=useSpring(0,sp);const isx=useSpring(1,sp);const io=useSpring(0,{stiffness:600,damping:50});const[measured,setMeasured]=React.useState(0);useIsoLayoutEffect(()=>{const ul=listRef.current;if(!ul)return;const measure=()=>{rects.current=slotRefs.current.map(el=>el?{x:el.offsetLeft,w:el.offsetWidth}:{x:0,w:0});setMeasured(m=>m+1);};measure();const ro=typeof ResizeObserver===\"undefined\"?null:new ResizeObserver(measure);ro?.observe(ul);const fonts=document.fonts;fonts?.ready.then(measure).catch(()=>undefined);return()=>ro?.disconnect();},[main.length,fontSize,letterSpacing,icons,uppercase]);useIsoLayoutEffect(()=>{const r=target>=0&&target<main.length?rects.current[target]:undefined;if(!r||!r.w){io.set(0);return;}const sx=r.w/INDICATOR_BASE;if(still||!placed.current){ix.jump(r.x);isx.jump(sx);io.jump(1);placed.current=true;}else{ix.set(r.x);isx.set(sx);io.set(1);}},[target,measured,still,main.length]);// —— mobile ——————————————————————————————————————————————————————————\nconst rootRef=React.useRef(null);const btnRef=React.useRef(null);const panelRef=React.useRef(null);const[isMobile,setIsMobile]=React.useState(false);const[open,setOpen]=React.useState(false);const openRef=React.useRef(false);openRef.current=open;const menuShown=open||isCanvas&&previewState===\"menu\";useIsoLayoutEffect(()=>{const el=rootRef.current;if(!el||typeof ResizeObserver===\"undefined\")return;// Mobile if either the component or the viewport is narrow — a parent\n// frame with a fixed width must not keep the desktop bar on a phone\nconst check=()=>setIsMobile(Math.min(el.getBoundingClientRect().width||Infinity,window.innerWidth)<mobileBreakpoint);const ro=new ResizeObserver(check);ro.observe(el);window.addEventListener(\"resize\",check);check();return()=>{ro.disconnect();window.removeEventListener(\"resize\",check);};},[mobileBreakpoint]);React.useEffect(()=>{if(!isMobile)setOpen(false);},[isMobile]);// Open menu: lock scroll, Escape / Tab trap, close on navigation\nReact.useEffect(()=>{if(!open||isCanvas)return;const de=document.documentElement;const body=document.body;const sw=window.innerWidth-de.clientWidth;const prev={overflow:de.style.overflow,pad:body.style.paddingRight};de.style.overflow=\"hidden\";if(sw>0)body.style.paddingRight=`${sw}px`;const focusables=()=>[btnRef.current,...Array.from(panelRef.current?.querySelectorAll(\"a\")||[])].filter(Boolean);const onKey=e=>{if(e.key===\"Escape\"){setOpen(false);btnRef.current?.focus();}else if(e.key===\"Tab\"){const f=focusables();if(!f.length)return;const i=f.indexOf(document.activeElement);const next=e.shiftKey?i<=0?f.length-1:i-1:i===f.length-1?0:i+1;e.preventDefault();f[next].focus();}};const close=()=>setOpen(false);document.addEventListener(\"keydown\",onKey);window.addEventListener(\"popstate\",close);window.addEventListener(\"hashchange\",close);const raf=requestAnimationFrame(()=>focusables()[1]?.focus({preventScroll:true}));return()=>{de.style.overflow=prev.overflow;body.style.paddingRight=prev.pad;document.removeEventListener(\"keydown\",onKey);window.removeEventListener(\"popstate\",close);window.removeEventListener(\"hashchange\",close);cancelAnimationFrame(raf);};},[open,isCanvas]);// The active item flickers once after the menu has revealed\nReact.useEffect(()=>{if(!open||still)return;const id=window.setTimeout(()=>runGlitch(active),(items.length*MOTION.menu.stagger+.3)*1e3);return()=>clearTimeout(id);},[open,still,active,items.length,runGlitch]);// —— scroll hide ————————————————————————————————————————————————————\nconst[hidden,setHidden]=React.useState(false);const focusIn=React.useRef(false);React.useEffect(()=>{if(!scrollHide||isCanvas){setHidden(false);return;}let last=window.scrollY;let h=false;const onScroll=()=>{const y=window.scrollY;const dy=y-last;if(Math.abs(dy)<MOTION.hide.delta&&y>hideThreshold)return;const next=y>hideThreshold&&dy>0&&!openRef.current&&!focusIn.current;last=y;if(next!==h){h=next;setHidden(next);}};window.addEventListener(\"scroll\",onScroll,{passive:true});return()=>window.removeEventListener(\"scroll\",onScroll);},[scrollHide,hideThreshold,isCanvas]);// —— look ———————————————————————————————————————————————————————————\nconst fontFamily=font&&font.fontFamily||FALLBACK_FONT;const look={fontSize,gap:Math.round(fontSize*.75),icons,pad:Math.round(fontSize*1.25)};const typo={...font,fontFamily,fontWeight:font&&font.fontWeight||600,fontSize,letterSpacing:`${letterSpacing}em`,lineHeight:1,textTransform:uppercase?\"uppercase\":\"none\"};const split=MOTION.glitch.split*glitchIntensity*Math.max(.5,intensity);const slice=MOTION.glitch.slice*glitchIntensity*Math.max(.5,intensity);const pill=barStyle===\"pill\";const outer=pill?12:0;const totalH=height+outer*2;const rulerH=ruler?rulerHeight:0;const fade={duration:MOTION.fade.duration};const barStyleCss={height,maxWidth:pill?maxWidth:undefined,margin:pill?`${outer}px auto`:undefined,background:pal.bar,borderRadius:pill?radius:0,border:pill&&border?`1px solid ${borderColor}`:undefined,borderBottom:!pill&&border?`1px solid ${solid?pal.bar:borderColor}`:undefined,borderTop:!pill&&border&&!solid?`4px solid ${inkColor}`:undefined,backdropFilter:blur?`blur(${blur}px)`:undefined,WebkitBackdropFilter:blur?`blur(${blur}px)`:undefined,boxSizing:\"border-box\",overflow:\"hidden\"};const css=`\n.${cls} *{box-sizing:border-box}\n.${cls} a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}\n.${cls} a:focus-visible,.${cls} button:focus-visible{outline:2px solid ${pal.line};outline-offset:-2px}\n.${cls} .mn-desk{display:flex}\n.${cls} .mn-mob{display:none}\n@container mnav (max-width:${Math.max(0,mobileBreakpoint-1)}px){.${cls} .mn-desk{display:none}.${cls} .mn-mob{display:flex}}\n@media (max-width:${Math.max(0,mobileBreakpoint-1)}px){.${cls} .mn-desk{display:none}.${cls} .mn-mob{display:flex}}\n`;const logoEl=/*#__PURE__*/_jsx(\"a\",{href:logoLink,\"aria-label\":\"Home\",style:{display:\"flex\",alignItems:\"center\",height:\"100%\",padding:`0 ${look.pad}px 0 0`,flex:\"none\"},children:logo&&logo.src?/*#__PURE__*/_jsx(\"img\",{src:logo.src,alt:logo.alt||\"\",style:{height:Math.round(height*.5),width:\"auto\",display:\"block\"}}):/*#__PURE__*/_jsxs(\"span\",{\"aria-hidden\":true,style:{...typo,fontWeight:900,fontSize:Math.round(fontSize*2.1),letterSpacing:\"-0.04em\",textTransform:\"none\",color:pal.text,display:\"flex\",alignItems:\"baseline\"},children:[\"M\",/*#__PURE__*/_jsx(\"span\",{style:{width:\"0.3em\",height:\"0.3em\",borderRadius:\"50%\",background:pal.text,marginLeft:\"0.06em\",display:\"inline-block\"}})]})});// —— CTA (outlined button, own slot) ————————————————————————————————\nconst ctaItem=cta>=0?items[cta]:null;const ctaOn=hovered===cta&&cta>=0;const ctaEl=ctaItem&&/*#__PURE__*/_jsxs(\"a\",{className:\"mn-desk\",href:ctaItem.link,\"aria-current\":active===cta?\"page\":undefined,onPointerEnter:()=>enter(cta),onPointerLeave:()=>setHover(-1),onFocus:()=>enter(cta),onBlur:()=>setHover(-1),style:{position:\"relative\",alignItems:\"center\",height:Math.round(height*.6),border:`1px solid ${pal.line}`,overflow:\"hidden\",flex:\"none\",isolation:\"isolate\"},children:[/*#__PURE__*/_jsx(motion.span,{\"aria-hidden\":true,style:{position:\"absolute\",inset:0,background:pal.block,originY:1,zIndex:0},initial:false,animate:{scaleY:ctaOn||active===cta?1:0},transition:still?fade:spring}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"relative\",zIndex:1,height:\"100%\",display:\"flex\"},children:/*#__PURE__*/_jsx(Slot,{item:ctaItem,look:look,hovered:ctaOn,onBlock:ctaOn||active===cta,blockLabel:active===cta?pal.active:pal.onBlock,text:pal.text,lift:MOTION.cta.lift*intensity,nudge:MOTION.label.nudge*intensity,spring:spring,still:still,frame:gl.i===cta?gl.f:0,glitchA:glitchColorA,glitchB:glitchColorB,split:split,slice:slice})})]});// —— desktop list ———————————————————————————————————————————————————\nconst underline=hoverEffect!==\"block\";const desktop=/*#__PURE__*/_jsxs(\"ul\",{ref:listRef,className:\"mn-desk\",onPointerLeave:()=>setHover(-1),onBlur:e=>{if(!e.currentTarget.contains(e.relatedTarget))setHover(-1);},style:{position:\"relative\",listStyle:\"none\",margin:0,padding:0,height:\"100%\",alignItems:\"stretch\",isolation:\"isolate\"},children:[/*#__PURE__*/_jsx(motion.li,{\"aria-hidden\":true,style:{position:\"absolute\",left:0,top:underline?undefined:0,bottom:0,width:INDICATOR_BASE,height:underline?2:\"100%\",background:pal.block,originX:0,x:ix,scaleX:isx,opacity:io,zIndex:0,listStyle:\"none\"}}),main.map((it,i)=>{const isTarget=i===target;const onBlock=!underline&&isTarget;return /*#__PURE__*/_jsx(\"li\",{ref:el=>{slotRefs.current[i]=el;},style:{position:\"relative\",zIndex:1,display:\"flex\"},onPointerEnter:()=>enter(i),children:/*#__PURE__*/_jsx(\"a\",{href:it.link,\"aria-current\":i===active?\"page\":undefined,onFocus:()=>enter(i),style:{display:\"flex\",height:\"100%\"},children:/*#__PURE__*/_jsx(Slot,{item:it,look:look,hovered:i===hovered,onBlock:onBlock,blockLabel:i===active?pal.active:pal.onBlock,text:pal.text,lift:MOTION.label.lift*intensity*(hoverEffect===\"shift\"?1.6:1),nudge:MOTION.label.nudge*intensity,spring:spring,still:still,frame:gl.i===i?gl.f:0,glitchA:glitchColorA,glitchB:glitchColorB,split:split,slice:slice})})},i);})]});// —— mobile button + panel ——————————————————————————————————————————\nconst bars=dir=>/*#__PURE__*/_jsx(motion.span,{\"aria-hidden\":true,style:{position:\"absolute\",left:12,width:20,height:2,background:pal.text,top:21},initial:false,animate:menuShown?{y:0,rotate:45*dir}:{y:dir*-4,rotate:0},transition:still?{duration:0}:spring});const button=/*#__PURE__*/_jsxs(\"button\",{ref:btnRef,className:\"mn-mob\",type:\"button\",\"aria-expanded\":menuShown,\"aria-controls\":menuId,\"aria-label\":menuShown?\"Close menu\":\"Open menu\",onClick:()=>setOpen(o=>!o),style:{position:\"relative\",width:44,height:44,marginLeft:\"auto\",border:0,padding:0,background:\"transparent\",cursor:\"pointer\",flex:\"none\",alignSelf:\"center\"},children:[bars(1),bars(-1)]});// The menu panel keeps the light palette (ink on Menu BG) whatever the\n// bar style, so a Solid ink bar never turns the menu text white-on-white\nconst full=mobileMenu===\"fullscreen\";const panelStyle=full?{position:isCanvas?\"absolute\":\"fixed\",left:0,right:0,top:0,height:isCanvas?520:\"100dvh\",paddingTop:totalH}:{position:\"absolute\",left:0,right:0,top:totalH,borderBottom:`1px solid ${borderColor}`};const panel=/*#__PURE__*/_jsx(AnimatePresence,{children:menuShown&&/*#__PURE__*/_jsx(motion.div,{ref:panelRef,id:menuId,className:\"mn-mob\",style:{...panelStyle,zIndex:1,background:menuBackground,flexDirection:\"column\",overflowY:\"auto\",overscrollBehavior:\"contain\"},initial:still?{opacity:0}:full?{y:\"-100%\"}:{clipPath:\"inset(0 0 100% 0)\"},animate:still?{opacity:1}:full?{y:0}:{clipPath:\"inset(0 0 0% 0)\"},exit:still?{opacity:0}:full?{y:\"-100%\"}:{clipPath:\"inset(0 0 100% 0)\"},transition:still?fade:{duration:MOTION.menu.duration,ease:MOTION.menu.ease},children:/*#__PURE__*/_jsx(motion.ul,{style:{listStyle:\"none\",margin:0,padding:`8px ${padding}px 32px`,display:\"flex\",flexDirection:\"column\"},initial:\"hide\",animate:\"show\",variants:{show:{transition:{staggerChildren:still?0:MOTION.menu.stagger,delayChildren:still?0:.12}}},children:items.map((it,i)=>{const on=i===active;const big={fontSize:Math.round(fontSize*2.4),gap:Math.round(fontSize*1.1),icons,pad:14};return /*#__PURE__*/_jsx(motion.li,{style:{position:\"relative\",borderBottom:`1px solid ${borderColor}`},variants:{hide:still?{opacity:0}:{opacity:0,y:MOTION.menu.rise},show:{opacity:1,y:0,transition:still?fade:spring}},children:/*#__PURE__*/_jsx(\"a\",{href:it.link,\"aria-current\":on?\"page\":undefined,onClick:()=>setOpen(false),style:{position:\"relative\",display:\"flex\",alignItems:\"center\",minHeight:64,overflow:\"hidden\",...typo,fontWeight:900,fontSize:big.fontSize,letterSpacing:\"-0.01em\",background:on?inkColor:\"transparent\"},children:/*#__PURE__*/_jsxs(\"span\",{style:{position:\"relative\",display:\"flex\",alignItems:\"center\",height:64,padding:`0 ${big.pad}px`},children:[/*#__PURE__*/_jsx(GlitchCopies,{item:it,look:big,frame:gl.i===i?gl.f:0,a:glitchColorA,b:glitchColorB,top:on?activeColor:textColor,split:split*.75,slice:slice*.75}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"relative\",zIndex:1},children:/*#__PURE__*/_jsx(Label,{item:it,look:big,color:on?activeColor:textColor})})]})})},i);})})},\"panel\")});// —— assemble ——————————————————————————————————————————————————————\n// Bar and ruler ride in one layer. Hidden = that layer moved up by exactly\n// the bar's height, so the ruler sits where the bar was. Without a ruler\n// the bar keeps its old behaviour (an extra gap so its shadow clears).\nconst barShown=!hidden||menuShown;const hideY=ruler?-totalH:-(totalH+MOTION.hide.gap);const layerAnimate=still?ruler?{y:barShown?0:hideY}// reduced motion: jump, no slide\n:{opacity:barShown?1:0}:{y:barShown?0:hideY};const layerTransition=still?ruler?{duration:0}:fade:hideSpring;return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,className:cls,style:{...style,position:\"relative\",width:\"100%\",height:totalH+rulerH,containerType:\"inline-size\",containerName:\"mnav\",...typo,color:pal.text},onFocusCapture:()=>{focusIn.current=true;setHidden(false);},onBlurCapture:e=>{if(!e.currentTarget.contains(e.relatedTarget))focusIn.current=false;},children:[/*#__PURE__*/_jsx(\"style\",{children:css}),/*#__PURE__*/_jsxs(motion.div,{\"data-mnav-layer\":\"\",style:{position:position===\"fixed\"&&!isCanvas?\"fixed\":\"absolute\",top:0,left:0,right:0,zIndex:2,willChange:\"transform\"},initial:false,animate:layerAnimate,transition:layerTransition,children:[/*#__PURE__*/_jsx(\"div\",{\"data-mnav-bar\":\"\",style:{height:totalH,padding:pill?`0 ${padding}px`:0,overflow:pill?\"hidden\":undefined},children:/*#__PURE__*/_jsx(\"div\",{style:barStyleCss,children:/*#__PURE__*/_jsxs(\"nav\",{\"aria-label\":\"Main\",style:{display:\"flex\",alignItems:\"stretch\",height:\"100%\",maxWidth:pill?undefined:maxWidth,margin:\"0 auto\",padding:`0 ${pill?Math.round(padding*.75):padding}px`},children:[logoEl,desktop,/*#__PURE__*/_jsx(\"span\",{className:\"mn-desk\",style:{flex:1}}),ctaEl&&/*#__PURE__*/_jsx(\"span\",{className:\"mn-desk\",style:{alignItems:\"center\"},children:ctaEl}),button]})})}),ruler&&/*#__PURE__*/_jsx(motion.div,{\"data-mnav-ruler\":\"\",initial:false,animate:{opacity:menuShown?0:1},transition:fade,children:/*#__PURE__*/_jsx(RulerStrip,{height:rulerHeight,majorStep:rulerMajorStep,subdivisions:rulerSubdivisions,color:rulerColor,line:borderColor,background:rulerBackground,travel:rulerTravel,speed:rulerSpeed,still:still,fontFamily:fontFamily})})]}),panel]});}MoavciNav.displayName=\"MoAVCI Nav\";addPropertyControls(MoavciNav,{// — Content —\nitems:{type:ControlType.Array,title:\"Items\",maxCount:10,control:{type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Item\"},link:{type:ControlType.Link,title:\"Link\"},icon:{type:ControlType.Enum,title:\"Icon\",options:[\"none\",\"home\",\"about\",\"works\",\"ai\",\"playground\",\"contact\"],optionTitles:[\"None\",\"House\",\"Glasses\",\"Book\",\"Spark\",\"Pen nib\",\"Heart\"],defaultValue:\"none\"}}},defaultValue:DEFAULT_ITEMS},ctaLast:{type:ControlType.Boolean,title:\"Last as Button\",defaultValue:true,description:\"The last item becomes the outlined button on the right.\"},autoActive:{type:ControlType.Boolean,title:\"Auto Active\",defaultValue:true,description:\"Highlights the item whose link matches the current page.\"},activeIndex:{type:ControlType.Number,title:\"Active Item\",min:-1,max:9,step:1,defaultValue:0,displayStepper:true,description:\"0-based. Used on the canvas and when Auto Active finds no match.\"},logo:{type:ControlType.ResponsiveImage,title:\"Logo\",description:\"Optional. Empty = the M● mark set in the font.\"},logoLink:{type:ControlType.Link,title:\"Logo Link\",defaultValue:\"/\"},// — Colour —\ntextColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#191C15\"},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},inkColor:{type:ControlType.Color,title:\"Block\",defaultValue:\"#191C15\",description:\"The black block, top rule and button outline.\"},hoverTextColor:{type:ControlType.Color,title:\"On Block\",defaultValue:\"#FFFFFF\"},activeColor:{type:ControlType.Color,title:\"Active\",defaultValue:\"#FFD23F\",description:\"Active page label on the block.\"},glitchColorA:{type:ControlType.Color,title:\"Glitch A\",defaultValue:\"#2E46FF\"},glitchColorB:{type:ControlType.Color,title:\"Glitch B\",defaultValue:\"#FF6A13\"},borderColor:{type:ControlType.Color,title:\"Hairline\",defaultValue:\"#CFCFCB\"},// — Type —\nfont:{type:ControlType.Font,title:\"Font\",controls:\"basic\",defaultFontType:\"sans-serif\",defaultValue:{variant:\"Semibold\"},description:\"Labels. The M● mark uses the same family at 900.\"},fontSize:{type:ControlType.Number,title:\"Size\",min:10,max:24,step:1,unit:\"px\",defaultValue:13},letterSpacing:{type:ControlType.Number,title:\"Spacing\",min:-.1,max:.3,step:.005,defaultValue:.02,description:\"em\"},uppercase:{type:ControlType.Boolean,title:\"Uppercase\",defaultValue:true},icons:{type:ControlType.Boolean,title:\"Icons\",defaultValue:true},// — Bar —\nbarStyle:{type:ControlType.Enum,title:\"Bar\",options:[\"line\",\"pill\",\"solid\"],optionTitles:[\"Line\",\"Pill\",\"Solid\"],defaultValue:\"line\",displaySegmentedControl:true,description:\"Line = your current bar. Pill floats. Solid inverts to an ink bar.\"},barHeight:{type:ControlType.Number,title:\"Height\",min:40,max:96,step:1,unit:\"px\",defaultValue:56},padding:{type:ControlType.Number,title:\"Padding\",min:0,max:80,step:1,unit:\"px\",defaultValue:24},maxWidth:{type:ControlType.Number,title:\"Max Width\",min:600,max:1920,step:10,unit:\"px\",defaultValue:1200},border:{type:ControlType.Boolean,title:\"Border\",defaultValue:true},radius:{type:ControlType.Number,title:\"Radius\",min:0,max:999,step:1,defaultValue:999,hidden:p=>p.barStyle!==\"pill\"},blur:{type:ControlType.Number,title:\"Blur\",min:0,max:40,step:1,unit:\"px\",defaultValue:0,description:\"Backdrop blur — pair with a translucent background.\"},position:{type:ControlType.Enum,title:\"Position\",options:[\"layout\",\"fixed\"],optionTitles:[\"Framer\",\"Fixed\"],defaultValue:\"layout\",displaySegmentedControl:true,description:\"Framer = use the layer's own Fixed/Sticky position. Fixed = pin to the top of the viewport.\"},scrollHide:{type:ControlType.Boolean,title:\"Hide on Scroll\",defaultValue:true},hideThreshold:{type:ControlType.Number,title:\"After\",min:0,max:600,step:10,unit:\"px\",defaultValue:80,hidden:p=>p.scrollHide===false},// — Ruler —\nruler:{type:ControlType.Boolean,title:\"Ruler\",defaultValue:true,description:\"A ruler under the bar. When the bar hides, the ruler slides up into its place in the same motion.\"},rulerHeight:{type:ControlType.Number,title:\"Ruler Height\",min:24,max:80,step:1,unit:\"px\",defaultValue:40,hidden:p=>p.ruler===false},rulerMajorStep:{type:ControlType.Number,title:\"Major Step\",min:50,max:500,step:10,defaultValue:100,description:\"Distance between numbered ticks, in px.\",hidden:p=>p.ruler===false},rulerSubdivisions:{type:ControlType.Number,title:\"Subdivisions\",min:2,max:50,step:1,defaultValue:10,description:\"Small ticks between two numbers.\",hidden:p=>p.ruler===false},rulerColor:{type:ControlType.Color,title:\"Ticks\",defaultValue:\"#000000\",hidden:p=>p.ruler===false},rulerBackground:{type:ControlType.Color,title:\"Ruler BG\",defaultValue:\"#FFFFFF\",description:\"Keeps page content from showing through the ruler.\",hidden:p=>p.ruler===false},rulerTravel:{type:ControlType.Number,title:\"Drift\",min:0,max:800,step:10,unit:\"px\",defaultValue:300,description:\"How far the ruler slides as the cursor crosses the screen.\",hidden:p=>p.ruler===false},rulerSpeed:{type:ControlType.Number,title:\"Drift Lag\",min:.05,max:1,step:.05,unit:\"s\",defaultValue:.2,description:\"How long the ruler takes to catch up with the cursor.\",hidden:p=>p.ruler===false},// — Motion —\nhoverEffect:{type:ControlType.Enum,title:\"Hover\",options:[\"block\",\"underline\",\"shift\"],optionTitles:[\"Block\",\"Underline\",\"Shift\"],defaultValue:\"block\",displaySegmentedControl:true,description:\"Shift = labels only lift; the underline stays on the active page.\"},intensity:{type:ControlType.Number,title:\"Intensity\",min:0,max:2,step:.05,defaultValue:1},glitch:{type:ControlType.Boolean,title:\"Glitch\",defaultValue:true},glitchIntensity:{type:ControlType.Number,title:\"Glitch Amt\",min:0,max:3,step:.1,defaultValue:1,hidden:p=>p.glitch===false},stiffness:{type:ControlType.Number,title:\"Stiffness\",min:60,max:1200,step:10,defaultValue:420},damping:{type:ControlType.Number,title:\"Damping\",min:5,max:80,step:1,defaultValue:28,description:\"Lower = more overshoot.\"},speed:{type:ControlType.Number,title:\"Speed\",min:.25,max:3,step:.05,defaultValue:1},// — Mobile —\nmobileBreakpoint:{type:ControlType.Number,title:\"Breakpoint\",min:320,max:1400,step:10,unit:\"px\",defaultValue:960,description:\"Below this width (component or screen) the mobile bar shows.\"},mobileMenu:{type:ControlType.Enum,title:\"Menu\",options:[\"fullscreen\",\"dropdown\"],optionTitles:[\"Full screen\",\"Drop-down\"],defaultValue:\"fullscreen\",displaySegmentedControl:true},menuBackground:{type:ControlType.Color,title:\"Menu BG\",defaultValue:\"#FFFFFF\"},// — Canvas preview —\npreviewState:{type:ControlType.Enum,title:\"Preview\",options:[\"rest\",\"hover\",\"menu\"],optionTitles:[\"Rest\",\"Hover\",\"Menu\"],defaultValue:\"rest\",displaySegmentedControl:true,description:\"Framer canvas only.\"},previewIndex:{type:ControlType.Number,title:\"Hover Item\",min:0,max:9,step:1,defaultValue:1,displayStepper:true,hidden:p=>p.previewState!==\"hover\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MoavciNav\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MoavciNav.map","// Generated by Framer (fc3086c)\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,Container,cx,Floating,forwardLoader,GeneratedComponentContext,getFonts,getFontsFromSharedStyle,getLoadingLazyAtYPosition,Image as Image1,Link,PropertyOverrides,RenderTarget,ResolveLinks,RichText,runTasksWithYield,useActiveVariantCallback,useCustomCursors,useHydratedBreakpointVariants,useIsOnFramerCanvas,useLocaleInfo,useOverlayState,useRouter,withCSS}from\"framer\";import{AnimatePresence,LayoutGroup,motion}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Lenis from\"https://framerusercontent.com/modules/bSeEZJm22jsjERCOGQvq/YmzNUbQh4V7UMGbeal0O/Lenis.js\";import DropdownContent from\"#framer/local/canvasComponent/c6TSFDhCz/c6TSFDhCz.js\";import Navigation from\"#framer/local/canvasComponent/vRahVGG7A/vRahVGG7A.js\";import Cursor from\"#framer/local/canvasComponent/VtZoRV2tQ/VtZoRV2tQ.js\";import Button from\"#framer/local/canvasComponent/Zq7grirf4/Zq7grirf4.js\";import{Ruler}from\"#framer/local/codeFile/xyzFeg2/Ruler.js\";import MoAVCIFooter from\"#framer/local/codeFile/GtzEK4X/Footer2o3.js\";import MoAVCINav from\"#framer/local/codeFile/mJLeD6H/MoavciNav.js\";import*as sharedStyle2 from\"#framer/local/css/aJRokyP_h/aJRokyP_h.js\";import*as sharedStyle from\"#framer/local/css/jB2nPzqr7/jB2nPzqr7.js\";import*as sharedStyle1 from\"#framer/local/css/MffBJovlA/MffBJovlA.js\";const NavigationFonts=getFonts(Navigation);const DropdownContentFonts=getFonts(DropdownContent);const ButtonFonts=getFonts(Button);const MoAVCIFooterFonts=getFonts(MoAVCIFooter);const RulerFonts=getFonts(Ruler);const LenisFonts=getFonts(Lenis);const MoAVCINavFonts=getFonts(MoAVCINav);const CursorFonts=getFonts(Cursor);const breakpoints={dK7H8sjGC:\"(max-width: 809.98px)\",ssLAEIxaE:\"(min-width: 1200px)\",SYic1sA4k:\"(min-width: 810px) and (max-width: 1199.98px)\"};const isBrowser=()=>typeof document!==\"undefined\";const serializationHash=\"framer-Rhi8z\";const variantClassNames={dK7H8sjGC:\"framer-v-vb5p67\",ssLAEIxaE:\"framer-v-7f13km\",SYic1sA4k:\"framer-v-17tolvd\"};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const transition1={bounce:0,delay:0,duration:.2,type:\"spring\"};const animation={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition1,x:0,y:0};const animation1={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition1,x:0,y:0};const animation2={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0};const Overlay=({children,blockDocumentScrolling,dismissWithEsc,enabled=true})=>{const[visible,setVisible]=useOverlayState({blockDocumentScrolling,dismissWithEsc:enabled&&dismissWithEsc});return children({hide:()=>setVisible(false),show:()=>setVisible(true),toggle:()=>setVisible(!visible),visible:enabled&&visible});};const breakpointRules={dK7H8sjGC:[\".framer-Rhi8z .framer-7n8y2s-container { height: 735px; width: 394px; }\",\".framer-Rhi8z .framer-1a8y1ly { justify-content: flex-start; max-width: 390px; }\",\".framer-Rhi8z .framer-1xy3tcu-container { height: 123px; width: 397px; }\"],SYic1sA4k:[\".framer-Rhi8z .framer-7n8y2s-container { width: 807px; }\",\".framer-Rhi8z .framer-1a8y1ly { max-width: 810px; }\",\".framer-Rhi8z .framer-1xy3tcu-container { width: 817px; }\"]};const breakpointKeys=Object.keys(breakpointRules);const selectors={dK7H8sjGC:\".framer-vb5p67-override\",SYic1sA4k:\".framer-17tolvd-override\"};const rules=[\".framer-Rhi8z.framer-16ys7e3, .framer-Rhi8z .framer-16ys7e3 { display: block; }\",\".framer-Rhi8z.framer-7f13km { align-content: center; align-items: center; background-color: #ffffff; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-Rhi8z .framer-1cr77nt { align-content: center; align-items: center; background-color: #ffffff; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 48px; justify-content: flex-start; order: -1000; overflow: var(--overflow-clip-fallback, clip); padding: 0px 12px 0px 12px; position: relative; width: 390px; }\",\".framer-Rhi8z .framer-61m56p { align-content: center; align-items: center; background-color: #ffffff; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; max-width: 390px; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-Rhi8z .framer-7881jq { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: 48px; justify-content: space-between; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-Rhi8z .framer-3usu8k { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: 48px; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: min-content; }\",\".framer-Rhi8z .framer-1v0fo4g { aspect-ratio: 1 / 1; flex: none; height: auto; overflow: visible; position: relative; width: 60px; }\",\".framer-Rhi8z .framer-1qpkx1t { background-color: var(--token-0aa568ec-3cf9-436c-a43a-7190c1309ca5, #c6c6c7); flex: none; height: 24px; overflow: visible; position: relative; width: 1px; z-index: 1; }\",\".framer-Rhi8z .framer-1r3z5ey { --border-bottom-width: 1px; --border-color: var(--token-4f4ed186-9023-4858-830a-5202d69249c1, #111212); --border-left-width: 1px; --border-right-width: 1px; --border-style: solid; --border-top-width: 1px; align-content: center; align-items: center; cursor: pointer; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 4px 8px 4px 8px; position: relative; width: min-content; }\",\".framer-Rhi8z .framer-1vblqda { --framer-link-text-color: #0099ff; --framer-link-text-decoration: underline; flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-Rhi8z .framer-x03plj { flex: none; height: 24px; overflow: visible; position: relative; width: 24px; }\",\".framer-Rhi8z .framer-akiqx6 { background-color: #303629; flex: none; height: 2px; left: calc(50.00000000000002% - 16px / 2); overflow: visible; position: absolute; top: 8px; width: 16px; }\",\".framer-Rhi8z .framer-1mo6urp { background-color: #303629; bottom: 8px; flex: none; height: 2px; left: calc(50.00000000000002% - 16px / 2); overflow: visible; position: absolute; width: 16px; }\",\".framer-Rhi8z .framer-1q2aqr8 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: visible; padding: 8px 0px 8px 0px; position: relative; width: 100%; }\",\".framer-Rhi8z .framer-chsf5h-container, .framer-Rhi8z .framer-9dv44g-container, .framer-Rhi8z .framer-v1v6u6-container, .framer-Rhi8z .framer-ydxjmn-container, .framer-Rhi8z .framer-1xy3tcu-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-Rhi8z .framer-1spcyah { align-content: flex-start; align-items: flex-start; background-color: #ffffff; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: visible; padding: 8px 0px 16px 0px; position: relative; width: 100%; }\",\".framer-Rhi8z .framer-13c6l9p-container, .framer-Rhi8z .framer-zzdmhv-container { flex: none; height: 32px; position: relative; width: 32px; }\",\".framer-Rhi8z .framer-v0loqk, .framer-Rhi8z .framer-1j78ry7 { align-content: center; align-items: center; box-shadow: 0px 10px 20px 0px rgba(0, 0, 0, 0.05); display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; will-change: var(--framer-will-change-effect-override, transform); }\",\".framer-Rhi8z .framer-imvnjq, .framer-Rhi8z .framer-5my20 { align-content: center; align-items: center; background-color: var(--token-1892785e-8581-4826-b411-015017430ad3, #005ed9); border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 16px; position: relative; width: min-content; }\",\".framer-Rhi8z .framer-k6avhk, .framer-Rhi8z .framer-12ofcs { background-color: var(--token-1892785e-8581-4826-b411-015017430ad3, #005ed9); border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; border-top-left-radius: 2px; border-top-right-radius: 2px; flex: none; height: 10px; left: calc(50.00000000000002% - 10px / 2); overflow: visible; position: absolute; top: -5px; width: 10px; z-index: 1; }\",\".framer-Rhi8z .framer-w0k6yt, .framer-Rhi8z .framer-1gq9k8b { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-Rhi8z .framer-zfto8a-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-Rhi8z .framer-1smnmk7 { background: transparent; flex-grow: 1; height: 0px; margin: 0px; margin-bottom: -0px; position: relative; width: 0px; }\",\".framer-Rhi8z .framer-7n8y2s-container { flex: none; height: auto; order: 1002; position: relative; width: 100%; }\",\".framer-Rhi8z .framer-15q8cw1-container { flex: none; height: auto; order: 1003; position: relative; width: 390px; z-index: 1; }\",\".framer-Rhi8z .framer-1mqga0d-container { flex: none; height: auto; order: 1004; position: relative; width: auto; }\",\".framer-Rhi8z .framer-1a8y1ly { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; left: 0px; order: 1005; overflow: visible; padding: 0px; position: var(--framer-canvas-fixed-position, fixed); right: 0px; top: 0px; z-index: 10; }\",\".framer-Rhi8z .framer-mh6eh { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; order: 1006; overflow: hidden; padding: 0px; position: relative; width: 1200px; z-index: 2; }\",\".framer-Rhi8z .framer-1bhyjs1 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 0px; position: relative; width: 1200px; z-index: 2; }\",\".framer-Rhi8z .framer-c38o8w { align-content: center; align-items: center; background-color: #ffffff; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 1px; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-Rhi8z .framer-1ve5mvx-container { flex: none; height: auto; order: 1007; position: relative; width: 390px; z-index: 1; }\",'[data-layout-template=\"true\"] > #overlay { margin-bottom: -0px; }',...sharedStyle.css,...sharedStyle1.css,...sharedStyle2.css,'.framer-Rhi8z[data-border=\"true\"]::after, .framer-Rhi8z [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];const mediaQueries={dK7H8sjGC:\"(max-width: 809.98px)\",ssLAEIxaE:\"(min-width: 1200px)\",SYic1sA4k:\"(min-width: 810px) and (max-width: 1199.98px)\"};const humanReadableVariantMap={Desktop:\"ssLAEIxaE\",Phone:\"dK7H8sjGC\",Tablet:\"SYic1sA4k\"};const HTMLStyle=({value})=>{const onCanvas=useIsOnFramerCanvas();if(onCanvas)return null;return /*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:value},\"data-framer-html-style\":\"\"});};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"ssLAEIxaE\"};};const cursor={alignment:\"center\",component:Cursor,offset:{x:0,y:-8},placement:\"bottom\",variant:\"PsKAjAkcv\"};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,children,...restProps}=getProps(props);const[baseVariant,hydratedBaseVariant]=useHydratedBreakpointVariants(variant,breakpoints,false);const gestureVariant=undefined;const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className,sharedStyle2.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(!isBrowser())return true;if(baseVariant===\"dK7H8sjGC\")return true;return false;};const router=useRouter();const{activeVariantCallback,delay}=useActiveVariantCallback(undefined);const wYZBuvekn13elrgn=({overlay})=>activeVariantCallback(async(...args)=>{overlay.show();});const ref1=React.useRef(null);const ref2=React.useRef(null);const ref3=React.useRef(null);const ref4=React.useRef(null);const isDisplayed1=()=>{if(!isBrowser())return true;if(baseVariant===\"dK7H8sjGC\")return false;return true;};useCustomCursors({\"10lja5m\":cursor});return /*#__PURE__*/_jsx(GeneratedComponentContext.Provider,{value:{activeVariantId:baseVariant,humanReadableVariantMap,isLayoutTemplate:true,primaryVariantId:\"ssLAEIxaE\",variantClassNames},children:/*#__PURE__*/_jsxs(LayoutGroup,{id:layoutId??defaultLayoutId,children:[/*#__PURE__*/_jsx(HTMLStyle,{value:\":root body { background: rgb(255, 255, 255); } @media (max-width: 809.98px) { :root { font-size: 93.75%; } }\"}),/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(scopingClassNames,\"framer-7f13km\",className),\"data-framer-cursor\":\"10lja5m\",\"data-layout-template\":true,ref:refBinding,style:{...style},children:[isDisplayed()&&/*#__PURE__*/_jsx(motion.nav,{className:\"framer-1cr77nt hidden-7f13km hidden-17tolvd\",\"data-framer-name\":\"Mobile\",children:/*#__PURE__*/_jsxs(\"div\",{className:\"framer-61m56p\",\"data-framer-name\":\"Content\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"framer-7881jq\",\"data-framer-name\":\"Logo + Menu\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"framer-3usu8k\",\"data-framer-name\":\"Logo\",children:[/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:272,intrinsicWidth:272,loading:getLoadingLazyAtYPosition(-6),pixelHeight:272,pixelWidth:272,sizes:\"60px\",src:\"https://framerusercontent.com/images/i2WCaFgba4kYx2PwBW6gdHPO8.svg?width=272&height=272\"}}},children:/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:272,intrinsicWidth:272,pixelHeight:272,pixelWidth:272,sizes:\"60px\",src:\"https://framerusercontent.com/images/i2WCaFgba4kYx2PwBW6gdHPO8.svg?width=272&height=272\"},className:\"framer-1v0fo4g\",\"data-framer-name\":\"MOAVVCI\\xcc\\x87LOGO-01\"})}),/*#__PURE__*/_jsx(\"div\",{className:\"framer-1qpkx1t\",\"data-framer-name\":\"Line\"})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"framer-1r3z5ey\",\"data-border\":true,\"data-framer-name\":\"Menu\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-1833qg6\",\"data-styles-preset\":\"jB2nPzqr7\",dir:\"auto\",style:{\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(48, 54, 41)\"},children:\"Menu\"})}),className:\"framer-1vblqda\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsxs(\"div\",{className:\"framer-x03plj\",\"data-framer-name\":\"Icon\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"framer-akiqx6\"}),/*#__PURE__*/_jsx(\"div\",{className:\"framer-1mo6urp\"})]})]})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"framer-1q2aqr8\",\"data-framer-name\":\"Navigation\",children:[/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"IMzwiuEeL\"},implicitPathVariables:undefined},{href:{webPageId:\"IMzwiuEeL\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{width:\"366px\",y:56}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,children:/*#__PURE__*/_jsx(Container,{className:\"framer-chsf5h-container\",nodeId:\"oi3jG0YLH\",scopeId:\"XYq2OWhaQ\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{zjpTYehEH:resolvedLinks[1]}},children:/*#__PURE__*/_jsx(Navigation,{height:\"100%\",id:\"oi3jG0YLH\",layoutId:\"oi3jG0YLH\",m5wLQuVvP:\"Home\",style:{width:\"100%\"},variant:matchVariant(\"yqU47cpyn\"),width:\"100%\",WZ0ygxKhu:'<svg width=\"800px\" height=\"800px\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\\n<path d=\"M1 6V15H6V11C6 9.89543 6.89543 9 8 9C9.10457 9 10 9.89543 10 11V15H15V6L8 0L1 6Z\" fill=\"#000000\"/>\\n</svg>',zjpTYehEH:resolvedLinks[0]})})})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"NFldwpxHM\"},implicitPathVariables:undefined},{href:{webPageId:\"NFldwpxHM\"},implicitPathVariables:undefined}],children:resolvedLinks1=>/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{width:\"366px\",y:104}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,children:/*#__PURE__*/_jsx(Container,{className:\"framer-9dv44g-container\",nodeId:\"j36kXA40Z\",scopeId:\"XYq2OWhaQ\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{zjpTYehEH:resolvedLinks1[1]}},children:/*#__PURE__*/_jsx(Navigation,{height:\"100%\",id:\"j36kXA40Z\",layoutId:\"j36kXA40Z\",m5wLQuVvP:\"About\",style:{width:\"100%\"},variant:matchVariant(\"Kk1gIUTyx\"),width:\"100%\",WZ0ygxKhu:'<svg fill=\"#000000\" width=\"800px\" height=\"800px\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M22,13h0v5a2,2,0,0,1-2,2H15a2,2,0,0,1-2-2V17H11v1a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V13H2a1,1,0,0,1,.083-.406l4-8A1,1,0,0,1,7,4H9A1,1,0,0,1,9,6H7.65L4.094,13H10a1,1,0,0,1,1,1v1h2V14a1,1,0,0,1,1-1h5.906L16.35,6H15a1,1,0,0,1,0-2h2a1,1,0,0,1,.914.594l4,8A1,1,0,0,1,22,13Z\"/></svg>',zjpTYehEH:resolvedLinks1[0]})})})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"xZeukHXrK\"},implicitPathVariables:undefined},{href:{webPageId:\"xZeukHXrK\"},implicitPathVariables:undefined}],children:resolvedLinks2=>/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{width:\"366px\",y:152}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,children:/*#__PURE__*/_jsx(Container,{className:\"framer-v1v6u6-container\",nodeId:\"jfyoXr0xI\",scopeId:\"XYq2OWhaQ\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{zjpTYehEH:resolvedLinks2[1]}},children:/*#__PURE__*/_jsx(Navigation,{height:\"100%\",id:\"jfyoXr0xI\",layoutId:\"jfyoXr0xI\",m5wLQuVvP:\"WORKS\",style:{width:\"100%\"},variant:matchVariant(\"Kk1gIUTyx\"),width:\"100%\",WZ0ygxKhu:'<svg version=\"1.0\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" \\n\t width=\"800px\" height=\"800px\" viewBox=\"0 0 64 64\" enable-background=\"new 0 0 64 64\" xml:space=\"preserve\">\\n<path fill=\"#231F20\" d=\"M56,0H8C5.789,0,4,1.789,4,4v52c0,4.418,3.582,8,8,8h40h4c2.211,0,4-1.789,4-4V4C60,1.789,58.211,0,56,0z\\n\t M52,56H16c-2.211,0-4-1.789-4-4s1.789-4,4-4h36V56z\"/>\\n</svg>',zjpTYehEH:resolvedLinks2[0]})})})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"OZ8sqXvDF\"},implicitPathVariables:undefined},{href:{webPageId:\"OZ8sqXvDF\"},implicitPathVariables:undefined}],children:resolvedLinks3=>/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{width:\"366px\",y:200}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:48,children:/*#__PURE__*/_jsx(Container,{className:\"framer-ydxjmn-container\",nodeId:\"UupMtIQsm\",scopeId:\"XYq2OWhaQ\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{zjpTYehEH:resolvedLinks3[1]}},children:/*#__PURE__*/_jsx(Navigation,{height:\"100%\",id:\"UupMtIQsm\",layoutId:\"UupMtIQsm\",m5wLQuVvP:\"Playground\",style:{width:\"100%\"},variant:matchVariant(\"Kk1gIUTyx\"),width:\"100%\",WZ0ygxKhu:'<svg version=\"1.1\" id=\"Uploaded to svgrepo.com\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"  \t width=\"800px\" height=\"800px\" viewBox=\"0 0 32 32\" xml:space=\"preserve\"> <style type=\"text/css\"> \t.sharpcorners_een{fill:#111918;} \t.st0{fill:#0B1719;} </style> <g> \t<g> \t\t<rect x=\"9\" y=\"1\" class=\"sharpcorners_een\" width=\"13\" height=\"2\"/> \t\t<path class=\"sharpcorners_een\" d=\"M24.598,12.998C22.318,11.098,21,8.284,21,5.316V4H10v1.316c0,2.968-1.318,5.782-3.598,7.682 \t\t\tL4,15l11,16V19.95c-1.141-0.232-2-1.24-2-2.45c0-1.381,1.119-2.5,2.5-2.5s2.5,1.119,2.5,2.5c0,1.209-0.859,2.218-2,2.45V31l11-16 \t\t\tL24.598,12.998z\"/> \t</g> \t<g> \t\t<rect x=\"9\" y=\"1\" class=\"sharpcorners_een\" width=\"13\" height=\"2\"/> \t\t<path class=\"sharpcorners_een\" d=\"M24.598,12.998C22.318,11.098,21,8.284,21,5.316V4H10v1.316c0,2.968-1.318,5.782-3.598,7.682 \t\t\tL4,15l11,16V19.95c-1.141-0.232-2-1.24-2-2.45c0-1.381,1.119-2.5,2.5-2.5s2.5,1.119,2.5,2.5c0,1.209-0.859,2.218-2,2.45V31l11-16 \t\t\tL24.598,12.998z\"/> \t</g> </g> </svg>',zjpTYehEH:resolvedLinks3[0]})})})})})})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"framer-1spcyah\",\"data-framer-name\":\"Contact\",children:[/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:false,dismissWithEsc:false,children:overlay=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{y:264}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,width:\"32px\",children:/*#__PURE__*/_jsxs(Container,{className:\"framer-13c6l9p-container\",nodeId:\"Fr5AMwxYJ\",ref:ref1,scopeId:\"XYq2OWhaQ\",children:[/*#__PURE__*/_jsx(DropdownContent,{height:\"100%\",id:\"Fr5AMwxYJ\",layoutId:\"Fr5AMwxYJ\",style:{height:\"100%\",width:\"100%\"},variant:matchVariant(overlay.visible&&\"kP8iFDhCI\",overlay.visible?\"kP8iFDhCI\":\"KN2FOv4Pf\"),width:\"100%\",wYZBuvekn:wYZBuvekn13elrgn({overlay}),xnsg8Mutw:\"@\"}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay.visible&&/*#__PURE__*/_jsx(Floating,{alignment:\"center\",anchorRef:ref1,className:cx(scopingClassNames),collisionDetection:true,collisionDetectionPadding:20,offsetX:0,offsetY:10,onDismiss:overlay.hide,placement:\"bottom\",safeArea:true,zIndex:11,children:/*#__PURE__*/_jsx(motion.div,{animate:animation1,className:\"framer-v0loqk\",exit:animation,initial:animation2,ref:ref2,role:\"dialog\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-imvnjq\",\"data-framer-name\":\"Contain\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-k6avhk\",style:{rotate:45}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-27ku3y\",\"data-styles-preset\":\"MffBJovlA\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--token-4f4ed186-9023-4858-830a-5202d69249c1, rgb(17, 18, 18))\"},children:/*#__PURE__*/_jsx(Link,{href:\"mailto:Hello@selenadesigns.com\",motionChild:true,nodeId:\"KicbI4_ie\",openInNewTab:true,relValues:[],scopeId:\"XYq2OWhaQ\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1gbd6t2\",\"data-styles-preset\":\"aJRokyP_h\",children:\"Hello@BEJAMANdesigns.com\"})})})}),className:\"framer-w0k6yt\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true})]})})})})]})})})})}),/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:false,dismissWithEsc:false,children:overlay1=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{y:306}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,width:\"32px\",children:/*#__PURE__*/_jsxs(Container,{className:\"framer-zzdmhv-container\",nodeId:\"Y9lLofZai\",ref:ref3,scopeId:\"XYq2OWhaQ\",children:[/*#__PURE__*/_jsx(DropdownContent,{height:\"100%\",id:\"Y9lLofZai\",layoutId:\"Y9lLofZai\",style:{height:\"100%\",width:\"100%\"},variant:matchVariant(overlay1.visible&&\"kP8iFDhCI\",overlay1.visible?\"kP8iFDhCI\":\"KN2FOv4Pf\"),width:\"100%\",wYZBuvekn:wYZBuvekn13elrgn({overlay:overlay1}),xnsg8Mutw:\"PH\"}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay1.visible&&/*#__PURE__*/_jsx(Floating,{alignment:\"center\",anchorRef:ref3,className:cx(scopingClassNames),collisionDetection:true,collisionDetectionPadding:20,offsetX:0,offsetY:10,onDismiss:overlay1.hide,placement:\"bottom\",safeArea:true,zIndex:11,children:/*#__PURE__*/_jsx(motion.div,{animate:animation1,className:\"framer-1j78ry7\",exit:animation,initial:animation2,ref:ref4,role:\"dialog\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-5my20\",\"data-framer-name\":\"Contain\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-12ofcs\",style:{rotate:45}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-27ku3y\",\"data-styles-preset\":\"MffBJovlA\",dir:\"auto\",style:{\"--framer-text-color\":\"rgb(255, 255, 255)\"},children:/*#__PURE__*/_jsx(Link,{href:\"tel:+123456789\",motionChild:true,nodeId:\"ieqtgM8Ew\",openInNewTab:true,relValues:[],scopeId:\"XYq2OWhaQ\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-1gbd6t2\",\"data-styles-preset\":\"aJRokyP_h\",children:\"+123456789\"})})})}),className:\"framer-1gq9k8b\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true})]})})})})]})})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"rsFYOsZlS\"},implicitPathVariables:undefined},{href:{webPageId:\"rsFYOsZlS\"},implicitPathVariables:undefined}],children:resolvedLinks4=>/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{y:348}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,children:/*#__PURE__*/_jsx(Container,{className:\"framer-zfto8a-container\",nodeId:\"esqRmrOmK\",scopeId:\"XYq2OWhaQ\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{zt8ifGc_Q:resolvedLinks4[1]}},children:/*#__PURE__*/_jsx(Button,{errt8torn:\"Contact\",height:\"100%\",id:\"esqRmrOmK\",layoutId:\"esqRmrOmK\",OY8OQlhvY:true,variant:matchVariant(\"ubuftqAhL\"),width:\"100%\",zt8ifGc_Q:resolvedLinks4[0]})})})})})})]})]})}),children,/*#__PURE__*/_jsx(\"div\",{className:\"framer-1smnmk7\"}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{webPageId:\"IMzwiuEeL\"},implicitPathVariables:undefined},{href:{webPageId:\"rsFYOsZlS\"},implicitPathVariables:undefined},{href:{webPageId:\"IMzwiuEeL\"},implicitPathVariables:undefined},{href:{webPageId:\"rsFYOsZlS\"},implicitPathVariables:undefined},{href:{webPageId:\"IMzwiuEeL\"},implicitPathVariables:undefined},{href:{webPageId:\"rsFYOsZlS\"},implicitPathVariables:undefined}],children:resolvedLinks5=>/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-7n8y2s-container\",isAuthoredByUser:true,nodeId:\"numOqVe9Q\",scopeId:\"XYq2OWhaQ\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{bigTextLeading:1.25,bigTextOverlap:31,bigTextSpacing:.095,bigTextTag:\"p\",edgePixel:20,ghostOpacity:1,keys:[{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-0\",label:\"Home\",legend:\"rgb(244, 244, 242)\",message:\"home — back to the start\",row:1,size:1.5,url:resolvedLinks5[4]},{color:\"rgb(169, 212, 245)\",color2:\"rgb(169, 212, 245)\",gradient:false,id:\"default-item-1\",label:\"GH\",legend:\"rgb(40, 70, 95)\",message:\"github — code & components\",row:1,size:1},{color:\"rgb(226, 58, 142)\",color2:\"rgb(255, 106, 19)\",gradient:true,id:\"default-item-2\",label:\"IG\",legend:\"rgb(255, 255, 255)\",message:\"instagram — process & play\",row:1,size:1},{color:\"rgb(228, 205, 166)\",color2:\"rgb(228, 205, 166)\",gradient:false,id:\"default-item-3\",label:\"@\",legend:\"rgb(91, 69, 39)\",message:\"hello@moavci.com\",row:2,size:1},{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-4\",label:\"Hire me\",legend:\"rgb(244, 244, 242)\",message:\"available for projects — say hi\",row:2,size:1.75,url:resolvedLinks5[5]},{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-5\",label:\"IN\",legend:\"rgb(244, 244, 242)\",message:\"linkedin — experience\",row:2,size:1},{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-6\",label:\"Call me\",legend:\"rgb(244, 244, 242)\",message:\"call — +49 000 000 0000\",row:3,size:1.75},{color:\"rgb(255, 210, 63)\",color2:\"rgb(255, 210, 63)\",gradient:false,id:\"default-item-7\",label:\"M●\",legend:\"rgb(25, 28, 21)\",message:\"moavci — designer in berlin\",row:3,size:1},{color:\"rgb(46, 70, 255)\",color2:\"rgb(46, 70, 255)\",gradient:false,id:\"default-item-8\",label:\"BE\",legend:\"rgb(255, 255, 255)\",message:\"behance — full case studies\",row:3,size:1}],navItems:[],pixelGap:0,pixelSize:1,style:{height:\"100%\",width:\"100%\"}},SYic1sA4k:{keys:[{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-0\",label:\"Home\",legend:\"rgb(244, 244, 242)\",message:\"home — back to the start\",row:1,size:1.5,url:resolvedLinks5[2]},{color:\"rgb(169, 212, 245)\",color2:\"rgb(169, 212, 245)\",gradient:false,id:\"default-item-1\",label:\"GH\",legend:\"rgb(40, 70, 95)\",message:\"github — code & components\",row:1,size:1},{color:\"rgb(226, 58, 142)\",color2:\"rgb(255, 106, 19)\",gradient:true,id:\"default-item-2\",label:\"IG\",legend:\"rgb(255, 255, 255)\",message:\"instagram — process & play\",row:1,size:1},{color:\"rgb(228, 205, 166)\",color2:\"rgb(228, 205, 166)\",gradient:false,id:\"default-item-3\",label:\"@\",legend:\"rgb(91, 69, 39)\",message:\"hello@moavci.com\",row:2,size:1},{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-4\",label:\"Hire me\",legend:\"rgb(244, 244, 242)\",message:\"available for projects — say hi\",row:2,size:1.75,url:resolvedLinks5[3]},{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-5\",label:\"IN\",legend:\"rgb(244, 244, 242)\",message:\"linkedin — experience\",row:2,size:1},{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-6\",label:\"Call me\",legend:\"rgb(244, 244, 242)\",message:\"call — +49 000 000 0000\",row:3,size:1.75},{color:\"rgb(255, 210, 63)\",color2:\"rgb(255, 210, 63)\",gradient:false,id:\"default-item-7\",label:\"M●\",legend:\"rgb(25, 28, 21)\",message:\"moavci — designer in berlin\",row:3,size:1},{color:\"rgb(46, 70, 255)\",color2:\"rgb(46, 70, 255)\",gradient:false,id:\"default-item-8\",label:\"BE\",legend:\"rgb(255, 255, 255)\",message:\"behance — full case studies\",row:3,size:1}]}},children:/*#__PURE__*/_jsx(MoAVCIFooter,{backdrop:\"pixels\",backdropRipples:false,backdropSize:9,backdropSpeed:.35,backdropStrength:.8,backdropTrail:true,bigText:\"Let’s design and build something together.\",bigTextAlign:\"center\",bigTextColor:\"rgb(244, 244, 242)\",bigTextFit:true,bigTextFont:{fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',fontStyle:\"normal\",fontWeight:700},bigTextLeading:.91,bigTextOverlap:49,bigTextSize:13,bigTextSpacing:-.03,bigTextStyle:\"led\",bigTextTag:\"h2\",blipColor:\"rgb(255, 210, 63)\",blipCount:1,blips:[{id:\"default-item-0\",label:\"Brand Identity\"},{id:\"default-item-1\",label:\"UI/UX\"},{id:\"default-item-2\",label:\"Motion\"},{id:\"default-item-3\",label:\"AI Workflows\"},{id:\"default-item-4\",label:\"Berlin\"},{id:\"default-item-5\",label:\"Figma\"},{id:\"default-item-6\",label:\"Framer\"},{id:\"default-item-7\",label:\"After Effects\"}],bootTime:1.5,copyright:\"\\xa9 2026 MoAVCI\",cursorStyle:\"block\",cycleSeconds:8,damping:30,edgePixel:100,exposure:1,followCursor:true,ghostColor:\"rgb(255, 255, 255)\",ghostOpacity:16,glitch:true,glitchColorA:\"rgb(46, 70, 255)\",glitchColorB:\"rgb(255, 106, 19)\",glitchIntensity:2,gloss:.85,glowColor:\"rgb(255, 210, 63)\",height:\"100%\",id:\"numOqVe9Q\",keyHeight:.75,keys:[{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-0\",label:\"Home\",legend:\"rgb(244, 244, 242)\",message:\"home — back to the start\",row:1,size:1.5,url:resolvedLinks5[0]},{color:\"rgb(169, 212, 245)\",color2:\"rgb(169, 212, 245)\",gradient:false,id:\"default-item-1\",label:\"GH\",legend:\"rgb(40, 70, 95)\",message:\"github — code & components\",row:1,size:1},{color:\"rgb(226, 58, 142)\",color2:\"rgb(255, 106, 19)\",gradient:true,id:\"default-item-2\",label:\"IG\",legend:\"rgb(255, 255, 255)\",message:\"instagram — process & play\",row:1,size:1},{color:\"rgb(228, 205, 166)\",color2:\"rgb(228, 205, 166)\",gradient:false,id:\"default-item-3\",label:\"@\",legend:\"rgb(91, 69, 39)\",message:\"hello@moavci.com\",row:2,size:1},{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-4\",label:\"Hire me\",legend:\"rgb(244, 244, 242)\",message:\"available for projects — say hi\",row:2,size:1.75,url:resolvedLinks5[1]},{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-5\",label:\"IN\",legend:\"rgb(244, 244, 242)\",message:\"linkedin — experience\",row:2,size:1},{color:\"rgb(26, 27, 25)\",color2:\"rgb(26, 27, 25)\",gradient:false,id:\"default-item-6\",label:\"Call me\",legend:\"rgb(244, 244, 242)\",message:\"call — +49 000 000 0000\",row:3,size:1.75},{color:\"rgb(255, 210, 63)\",color2:\"rgb(255, 210, 63)\",gradient:false,id:\"default-item-7\",label:\"M●\",legend:\"rgb(25, 28, 21)\",message:\"moavci — designer in berlin\",row:3,size:1},{color:\"rgb(46, 70, 255)\",color2:\"rgb(46, 70, 255)\",gradient:false,id:\"default-item-8\",label:\"BE\",legend:\"rgb(255, 255, 255)\",message:\"behance — full case studies\",row:3,size:1}],keySize:67,keyStyle:\"accents\",layoutId:\"numOqVe9Q\",ledBurst:1,ledColor:\"rgb(255, 210, 63)\",ledGlow:8,ledGuides:true,ledHover:true,ledHoverRadius:195,ledScanlines:true,ledSoftness:.3,ledTwinkle:true,legendFont:{fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',fontStyle:\"normal\",fontWeight:700},legendSize:21,legendSpacing:.115,lens:22,logoMode:\"center\",logos:[],logoSize:30,mobileBreakpoint:640,monoColor:\"rgb(26, 27, 25)\",monoLegend:\"rgb(244, 244, 242)\",navActive:\"rgb(0, 0, 0)\",navBg:\"rgb(255, 255, 255)\",navFont:{fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',fontStyle:\"normal\",fontWeight:600},navItems:[{id:\"default-item-5\",label:\"\"},{id:\"AOaTsj7ct\",label:\"\"},{id:\"T9LCfavRE\",label:\"\"},{id:\"DCWZEx0B0\",label:\"\"},{id:\"OupgQxhgE\",label:\"\"}],navSize:24,navText:\"rgb(244, 244, 242)\",pixelGap:2,pixelSize:2,pressDistance:.16,previewAngle:120,previewBlip:-1,previewKey:-1,previewReveal:20,previewScreen:\"as\",quality:\"auto\",radarBg:\"rgb(0, 0, 0)\",radarLines:\"rgb(253, 210, 63)\",readout:true,revealReplay:false,revealStyle:\"bits\",rings:3,riseFrom:45,riseTime:3.2,screenBg:\"rgb(17, 18, 16)\",screenFont:{fontFamily:'\"Fragment Mono\", \"Fragment Mono Placeholder\", monospace',fontStyle:\"normal\",fontWeight:400},screenLines:[\"available for projects\",\"brand \\xb7 ui/ux \\xb7 motion \\xb7 ai workflows\",\"based in berlin — working worldwide\"],screenModes:\"lissajous\",screenText:\"rgb(255, 210, 63)\",shadow:1.25,skySpace:28,slabColor:\"rgb(25, 28, 21)\",sound:false,speed:1,stageColor:\"rgb(253, 210, 63)\",status:\"Available for work\",statusColor:\"rgb(255, 210, 63)\",stiffness:700,style:{width:\"100%\"},sweepColor:\"rgb(255, 210, 63)\",textDepth:14,textTone:\"black\",tilt:1.5,touchPreview:true,turnSeconds:4,typingSpeed:74,version:\"v2.6\",viewAngle:34,volume:.5,wallDistance:1.2,wallLight:1,wallPerspective:100,wellColor:\"rgb(8, 9, 8)\",width:\"100%\"})})})})}),isDisplayed()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-15q8cw1-container hidden-7f13km hidden-17tolvd\",isAuthoredByUser:true,nodeId:\"pjkLvCG62\",scopeId:\"XYq2OWhaQ\",children:/*#__PURE__*/_jsx(Ruler,{color:\"var(--token-8d85ac4c-48a8-4cd1-a641-810c723e95b1, rgb(170, 171, 171))\",height:\"100%\",id:\"pjkLvCG62\",layoutId:\"pjkLvCG62\",majorStep:100,speed:.2,style:{width:\"100%\"},subdivisions:2,width:\"100%\"})})}),isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1mqga0d-container hidden-vb5p67\",\"data-framer-name\":\"Smooth Scroll\",isModuleExternal:true,name:\"Smooth Scroll\",nodeId:\"nBmPTUGDA\",scopeId:\"XYq2OWhaQ\",children:/*#__PURE__*/_jsx(Lenis,{height:\"100%\",id:\"nBmPTUGDA\",infinite:false,intensity:8,layoutId:\"nBmPTUGDA\",name:\"Smooth Scroll\",orientation:\"vertical\",smooth:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1a8y1ly\",\"data-framer-name\":\"Header + Line\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1xy3tcu-container\",isAuthoredByUser:true,nodeId:\"K6j07l6k3\",scopeId:\"XYq2OWhaQ\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{dK7H8sjGC:{style:{height:\"100%\",width:\"100%\"}}},children:/*#__PURE__*/_jsx(MoAVCINav,{activeColor:\"rgb(255, 210, 63)\",activeIndex:0,autoActive:true,background:\"rgb(255, 255, 255)\",barHeight:62,barStyle:\"line\",blur:29,border:true,borderColor:\"rgb(207, 207, 203)\",ctaLast:true,damping:28,font:{fontFamily:'\"Inter\", \"Inter Placeholder\", sans-serif',fontStyle:\"normal\",fontWeight:700},fontSize:14,glitch:true,glitchColorA:\"rgb(46, 70, 255)\",glitchColorB:\"rgb(255, 106, 19)\",glitchIntensity:2,height:\"100%\",hideThreshold:80,hoverEffect:\"block\",hoverTextColor:\"rgb(255, 255, 255)\",icons:true,id:\"K6j07l6k3\",inkColor:\"rgb(25, 28, 21)\",intensity:1.45,items:[{icon:\"home\",id:\"default-item-0\",label:\"Home\"},{icon:\"about\",id:\"default-item-1\",label:\"About\"},{icon:\"works\",id:\"default-item-2\",label:\"Works\"},{icon:\"ai\",id:\"default-item-3\",label:\"AI Work\"},{icon:\"playground\",id:\"default-item-4\",label:\"Playground\"},{icon:\"contact\",id:\"default-item-5\",label:\"Contact\"}],layoutId:\"K6j07l6k3\",letterSpacing:-.03,logoLink:\"/\",maxWidth:1920,menuBackground:\"rgb(255, 255, 255)\",mobileBreakpoint:960,mobileMenu:\"fullscreen\",padding:38,position:\"layout\",previewIndex:1,previewState:\"rest\",radius:999,ruler:true,rulerBackground:\"rgb(255, 255, 255)\",rulerColor:\"rgb(71, 67, 67)\",rulerHeight:38,rulerMajorStep:200,rulerSpeed:.2,rulerSubdivisions:10,rulerTravel:200,scrollHide:true,speed:1,stiffness:420,style:{width:\"100%\"},textColor:\"rgb(25, 28, 21)\",uppercase:true,width:\"100%\"})})})})}),isDisplayed1()&&/*#__PURE__*/_jsx(motion.footer,{className:\"framer-mh6eh hidden-vb5p67\",\"data-framer-name\":\"Footer\",children:/*#__PURE__*/_jsx(\"footer\",{className:\"framer-1bhyjs1\",\"data-framer-name\":\"Footer\",children:/*#__PURE__*/_jsx(\"div\",{className:\"framer-c38o8w\",\"data-framer-name\":\"Footer\"})})}),isDisplayed()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1ve5mvx-container hidden-7f13km hidden-17tolvd\",isAuthoredByUser:true,nodeId:\"hmeTdW1mi\",scopeId:\"XYq2OWhaQ\",children:/*#__PURE__*/_jsx(Ruler,{color:\"var(--token-8d85ac4c-48a8-4cd1-a641-810c723e95b1, rgb(170, 171, 171))\",height:\"100%\",id:\"hmeTdW1mi\",layoutId:\"hmeTdW1mi\",majorStep:100,speed:.2,style:{width:\"100%\"},subdivisions:2,width:\"100%\"})})})]}),/*#__PURE__*/_jsx(\"div\",{id:\"template-overlay\"})]})});});const css=target=>{const isStaticRenderer=target===RenderTarget.canvas||target===RenderTarget.export;if(!isStaticRenderer){return[...rules,...breakpointKeys.map(key=>{const query=mediaQueries[key];return`@media ${query} { ${breakpointRules[key].join(\" \")} }`;})];}return[...rules,...breakpointKeys.flatMap(key=>{const selector=selectors[key];return breakpointRules[key].map(rule=>`${selector} {${rule}}`);})];};/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 1691\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"SYic1sA4k\":{\"layout\":[\"fixed\",\"fixed\"]},\"dK7H8sjGC\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerHitTargets {\"dK7H8sjGC\":[\".framer-1cr77nt\",\".framer-7n8y2s-container\",\".framer-15q8cw1-container\",\".framer-1a8y1ly\",\".framer-1ve5mvx-container\"],\"ssLAEIxaE\":[\".framer-7n8y2s-container\",\".framer-1mqga0d-container\",\".framer-1a8y1ly\",\".framer-mh6eh\"],\"SYic1sA4k\":[\".framer-7n8y2s-container\",\".framer-1mqga0d-container\",\".framer-1a8y1ly\",\".framer-mh6eh\"]}\n * @framerBreakpoints {\"ssLAEIxaE\":{\"min\":1200,\"canvasClassName\":\"framer-7f13km-override\",\"minHeight\":1691,\"viewportHeight\":2328,\"name\":\"Desktop\",\"width\":1200,\"rootFontSize\":16},\"SYic1sA4k\":{\"min\":810,\"max\":1199,\"canvasClassName\":\"framer-17tolvd-override\",\"minHeight\":1600,\"viewportHeight\":1080,\"name\":\"Tablet\",\"width\":810,\"rootFontSize\":16},\"dK7H8sjGC\":{\"max\":809,\"canvasClassName\":\"framer-vb5p67-override\",\"minHeight\":1600,\"viewportHeight\":844,\"name\":\"Phone\",\"width\":390,\"rootFontSize\":15}}\n * @framerDefaultVariant ssLAEIxaE\n * @framerLayoutTemplate true\n */const FramerXYq2OWhaQ=withCSS(Component,css,\"framer-Rhi8z\");export default FramerXYq2OWhaQ;FramerXYq2OWhaQ.displayName=\"Template\";FramerXYq2OWhaQ.defaultProps={height:1691,width:1200};addFonts(FramerXYq2OWhaQ,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/DpPBYI0sL4fYLgAkX8KXOPVt7c.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/4RAEQdEOrcnDkhHiiCbJOw92Lk.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/1K3W8DizY3v4emK8Mb08YHxTbs.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/tUSCtfYVM1I1IchuyCwz9gDdQ.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/VgYFWiwsAC5OYxAycRXXvhze58.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/syRNPWzAMIrcJ3wIlPIP43KjQs.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/GIryZETIX4IFypco5pYZONKhJIo.woff2\",weight:\"700\"},{cssFamilyName:\"Fragment Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Fragment Mono\",url:\"https://fonts.gstatic.com/s/fragmentmono/v6/4iCr6K5wfMRRjxp0DA6-2CLnN4FNh4UI_1U.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/hyOgCu0Xnghbimh0pE8QTvtt2AU.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/NeGmSOXrPBfEFIy5YZeHq17LEDA.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/oYaAX5himiTPYuN8vLWnqBbfD2s.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/lEJLP4R0yuCaMCjSXYHtJw72M.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/cRJyLNuTJR5jbyKzGi33wU9cqIQ.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/yDtI2UI8XcEg1W2je9XPN3Noo.woff2\",weight:\"600\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/A0Wcc7NgXMjUuFdquHDrIZpzZw0.woff2\",weight:\"600\"}]},...NavigationFonts,...DropdownContentFonts,...ButtonFonts,...MoAVCIFooterFonts,...RulerFonts,...LenisFonts,...MoAVCINavFonts,...CursorFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts),...getFontsFromSharedStyle(sharedStyle2.fonts)],{supportsExplicitInterCodegen:true});FramerXYq2OWhaQ.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(Navigation,{},context),()=>forwardLoader(DropdownContent,{},context),()=>forwardLoader(Button,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerXYq2OWhaQ\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"1691\",\"framerContractVersion\":\"1\",\"framerBreakpoints\":\"{\\\"ssLAEIxaE\\\":{\\\"min\\\":1200,\\\"canvasClassName\\\":\\\"framer-7f13km-override\\\",\\\"minHeight\\\":1691,\\\"viewportHeight\\\":2328,\\\"name\\\":\\\"Desktop\\\",\\\"width\\\":1200,\\\"rootFontSize\\\":16},\\\"SYic1sA4k\\\":{\\\"min\\\":810,\\\"max\\\":1199,\\\"canvasClassName\\\":\\\"framer-17tolvd-override\\\",\\\"minHeight\\\":1600,\\\"viewportHeight\\\":1080,\\\"name\\\":\\\"Tablet\\\",\\\"width\\\":810,\\\"rootFontSize\\\":16},\\\"dK7H8sjGC\\\":{\\\"max\\\":809,\\\"canvasClassName\\\":\\\"framer-vb5p67-override\\\",\\\"minHeight\\\":1600,\\\"viewportHeight\\\":844,\\\"name\\\":\\\"Phone\\\",\\\"width\\\":390,\\\"rootFontSize\\\":15}}\",\"framerDefaultVariant\":\"ssLAEIxaE\",\"framerColorSyntax\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"SYic1sA4k\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"dK7H8sjGC\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerComponentViewportWidth\":\"true\",\"framerLayoutTemplate\":\"true\",\"framerHitTargets\":\"{\\\"dK7H8sjGC\\\":[\\\".framer-1cr77nt\\\",\\\".framer-7n8y2s-container\\\",\\\".framer-15q8cw1-container\\\",\\\".framer-1a8y1ly\\\",\\\".framer-1ve5mvx-container\\\"],\\\"ssLAEIxaE\\\":[\\\".framer-7n8y2s-container\\\",\\\".framer-1mqga0d-container\\\",\\\".framer-1a8y1ly\\\",\\\".framer-mh6eh\\\"],\\\"SYic1sA4k\\\":[\\\".framer-7n8y2s-container\\\",\\\".framer-1mqga0d-container\\\",\\\".framer-1a8y1ly\\\",\\\".framer-mh6eh\\\"]}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","\r\n\t\timport * as Framer from \"framer\";\r\nimport * as React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport * as ReactDOM from \"react-dom/client\";\r\nimport Template1 from \"https://framerusercontent.com/modules/hCj9CnUlzBUjYWZtknya/Ef0m72xZOmAxyp0ckoD0/XYq2OWhaQ.js\";\r\n\r\n\t\tconst routes = {IMzwiuEeL: {elements: {mCVQkQbAZ: \"about\", Ynvfhqqqd: \"pj1\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/3YBTuI52ZVvrIbKZyWUy/h5iVFxqu62rp8mzicmKH/IMzwiuEeL.js\")), path: \"/\"}, NFldwpxHM: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/ggNMOcihJZJzVIDeL4ID/ZteUdmGFMltvDCOUKzqG/NFldwpxHM.js\")), path: \"/about\"}, xZeukHXrK: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/As4sDRt83i3RNPKU0BDM/TW2dgIlYLDNrO7us1g05/xZeukHXrK.js\")), path: \"/case-study\"}, OZ8sqXvDF: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/aLaw12OO5wHGy11J9sqo/4OR9f96eEToPPqIEAplN/OZ8sqXvDF.js\")), path: \"/play-ground\"}, rsFYOsZlS: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/s8cQuzgdBHrJpKeZ3kYO/11yw2Bv79QHkpqkn9zHJ/rsFYOsZlS.js\")), path: \"/contact\"}, PrskVenBC: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/6esfnjpYhv3vRRI5kmFB/hlTN5feLEIL7DgUgRsT6/PrskVenBC.js\")), path: \"/404\"}, UtbWdMK4X: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/m9cyatr25lPEaJUsLboR/a79AALQ2whzLr6s0o4Re/UtbWdMK4X.js\")), path: \"/page-2\"}, OdsspAoSF: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/TlYZYASZx2Alz1Q4q0oM/hQ1sxrmBN98k3jTLTIYo/OdsspAoSF.js\")), path: \"/sinutu\"}, Vm4Q41x9_: {elements: {E3GvRzp2n: \"2\", lx3ERpzKo: \"3\", XJLFuTsIP: \"1\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/KYaW88ioJNlzIcr6yuPy/qwsUNDSzW8gCcIWDAUG5/Vm4Q41x9_.js\")), path: \"/kalfa\"}, e5sX0h4JC: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/BsNQwblgoNxWIxzb0RPY/qK61pTJNYJGnPjPBMXQ1/e5sX0h4JC.js\")), path: \"/nitro\"}, bWUa4_ZbD: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/4t2rHNqAPNbduyGZJo9s/K41Z7wbjiDuINkVp15ZT/bWUa4_ZbD.js\")), path: \"/page-6\"}, aB5jQkg0t: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/sUx0B0tTRd2c850Cy6OR/zdPe0WP22W4rpFk4P65s/aB5jQkg0t.js\")), path: \"/page-7\"}, NSm0XS9_e: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/J0qLnZltTfblxOaUhiQY/fyAo3haW9dt731rg3j6k/NSm0XS9_e.js\")), path: \"/page\"}, u1OYjwVZQ: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/vpPQ0uK0fL9RfZNlhzuI/otnuFlI61kK4MS2PcxeR/u1OYjwVZQ.js\")), path: \"/page-8\"}, vnI2U203A: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/5n6BU8ESLgTeCIm36UBE/JbQfYmw0ovR02zH1dfb1/vnI2U203A.js\")), path: \"/page-9\"}, GoqsNyDTZ: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/XHdWPLGsjnZfoS4QlV8A/Y9I5XKcSC1GrKjSHsixe/GoqsNyDTZ.js\")), path: \"/page-3\"}, ooP4yMWDH: {collectionId: \"hu3yniggG\", elements: {A7s3GO7Hl: \"trigger-four-1\", b27NJ0nSN: \"trigger-six-1\", d7ntY9Le6: \"trigger-seven\", DhBNDOvHc: \"trigger-eight-1\", e_i3tK1C4: \"trigger-three-1\", eALEbXZCF: \"trigger-one\", EJpH__Mfp: \"trigger-one-1\", enRgLJpb7: \"trigger-five-1\", Eon7WYWWs: \"trigger-eleven\", f9T8hi6wS: \"trigger-eight\", fj5rPoHPX: \"trigger-six\", k48Jl8Iey: \"trigger-seven-1\", Kjv13bBtV: \"trigger-twelve\", Lb87inGUF: \"trigger-twelve-3\", mj4dSMbte: \"trigger-twelve-2\", mYsopnfB_: \"trigger-eleven-1\", oBTaedKzs: \"trigger-nine\", OpWwbJx4J: \"trigger-twelve-1\", PIMg_vu5o: \"trigger-nine-1\", rqToWTqX6: \"trigger-ten\", UOI3JmhWK: \"trigger-ten-1\", wJ2Qt3HXL: \"trigger-three\", WsbizksKW: \"trigger-two-1\", YKXv4WlIc: \"trigger-two\", ZAII8TlJT: \"trigger-four\", zM6dEhTzU: \"trigger-five\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/rendYChtP9QlK3azrdCE/tIu3ijOrrgtVKHoI1CLv/ooP4yMWDH.js\")), path: \"/case-study/:KVCXsWDZS\"}}\r\n\r\n\t\tconst locales = [{code: \"en\", id: \"default\", name: \"English\", slug: \"\", textDirection: \"ltr\"}]\r\n\t\tconst collectionUtils = {hu3yniggG: async () => (await import(\"https://framerusercontent.com/modules/bn6rJrfQVDVz0YwtLQYG/2vz21FTlk5JDYn9N0m2i/hu3yniggG.js\"))?.[\"utils\"]}\r\n\t\tconst serverDatabaseClient = undefined\r\n\t\tconst framerSiteId = \"80d82c48225ace51774f45fc984c2513ab1fc20707cccf07df62eb5fe33c4df0\"\r\n\t\tfunction Template({webPageId, children, style, ...rest}) {const templateProps = {}\r\nconst props = templateProps[webPageId] ?? {}\r\nswitch (webPageId) {case \"IMzwiuEeL\":\r\ncase \"NFldwpxHM\":\r\ncase \"xZeukHXrK\":\r\ncase \"OZ8sqXvDF\":\r\ncase \"rsFYOsZlS\":\r\ncase \"PrskVenBC\":\r\ncase \"UtbWdMK4X\":\r\ncase \"OdsspAoSF\":\r\ncase \"Vm4Q41x9_\":\r\ncase \"e5sX0h4JC\":\r\ncase \"bWUa4_ZbD\":\r\ncase \"aB5jQkg0t\":\r\ncase \"NSm0XS9_e\":\r\ncase \"u1OYjwVZQ\":\r\ncase \"vnI2U203A\":\r\ncase \"GoqsNyDTZ\":\r\ncase \"ooP4yMWDH\":\r\nreturn React.createElement(Template1, {...props, key: \"Template1\", style}, children(true));\r\ndefault: { return children(false) }}}\r\nexport function getLayoutTemplateBreakpoints(routeId) {switch (routeId) {case \"IMzwiuEeL\":\r\ncase \"NFldwpxHM\":\r\ncase \"xZeukHXrK\":\r\ncase \"OZ8sqXvDF\":\r\ncase \"rsFYOsZlS\":\r\ncase \"PrskVenBC\":\r\ncase \"UtbWdMK4X\":\r\ncase \"OdsspAoSF\":\r\ncase \"Vm4Q41x9_\":\r\ncase \"e5sX0h4JC\":\r\ncase \"bWUa4_ZbD\":\r\ncase \"aB5jQkg0t\":\r\ncase \"NSm0XS9_e\":\r\ncase \"u1OYjwVZQ\":\r\ncase \"vnI2U203A\":\r\ncase \"GoqsNyDTZ\":\r\ncase \"ooP4yMWDH\":\r\nreturn [{hash: \"7f13km\", mediaQuery: \"(min-width: 1200px)\"}, {hash: \"17tolvd\", mediaQuery: \"(min-width: 810px) and (max-width: 1199.98px)\"}, {hash: \"vb5p67\", mediaQuery: \"(max-width: 809.98px)\"}]\r\ndefault: { return undefined }}}\r\n\r\n\t\tconst isBrowser = typeof document !== \"undefined\"\r\n\t\tconst isBot = isBrowser && /bot|-google|google-|yandex|ia_archiver|crawl|spider/iu.test(navigator.userAgent)\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\texport async function getPageRoot({\r\n\t\t\trouteId,\r\n\t\t\tpathVariables,\r\n\t\t\tcanonicalPathVariables,\r\n\t\t\tlocaleId,\r\n\t\t\tcollectionItemId,\r\n\t\t\tcontentLocaleId,\r\n\t\t\tshouldResolveInitialRouteContentState = false,\r\n\t\t}) {\r\n\t\t\tconst rootPreload = routes[routeId].page.preload()\r\n\r\n\t\t\t\r\n\r\n\t\t\tFramer.setLibraryFeatures({checkServerSideRouter: true, disableCustomCode: false, disableHoverOnMobile: false, editorBarDisableFrameAncestorsSecurity: false, motionDivToDiv: false, onPageRichTextBlockSelection: true, scrollRestoration: true, synchronousNavigationOnDesktop: false, yieldOnTap: false})\r\n\t\t\tFramer.setCurrentSiteId(framerSiteId)\r\n\r\n\t\t\tconst content = React.createElement(\r\n\t\t\t\tFramer.PageRoot,\r\n\t\t\t\t{\r\n\t\t\t\t\tisWebsite: true,\r\n\t\t\t\t\tenvironment: \"site\",\r\n\t\t\t\t\trouteId,\r\n\t\t\t\t\tpathVariables,\r\n\t\t\t\t\tcanonicalPathVariables,\r\n\t\t\t\t\troutes,\r\n\t\t\t\t\tcollectionUtils,\r\n\t\t\t\t\tserverDatabaseClient,\r\n\t\t\t\t\tframerSiteId,\r\n\t\t\t\t\tnotFoundPage: Framer.lazy(() => import(\"https://framerusercontent.com/modules/6esfnjpYhv3vRRI5kmFB/hlTN5feLEIL7DgUgRsT6/PrskVenBC.js\")),\r\n\t\t\t\t\tisReducedMotion: true,\r\n\t\t\t\t\tlocaleId,\r\n\t\t\t\t\tlocales,\r\n\t\t\t\t\tpreserveQueryParams: true,\r\n\t\t\t\t\tsiteCanonicalURL: \"https://moavci.com\",\r\n\t\t\t\t\tEditorBar: \r\n\t\t\ttypeof window !== \"undefined\" ? (() => {\r\n\t\t\t\tif (isBot) {\r\n\t\t\t\t\tconsole.log(\"[Framer On-Page Editing] Unavailable because navigator is bot\")\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn Framer.lazy(async () => {\r\n\t\t\t\t\tconst dependencies = {\r\n\t\t\t\t\t\t__version: 3,\r\n\t\t\t\t\t\tframer: {\r\n\t\t\t\t\t\t\tuseCurrentRoute: Framer.useCurrentRoute,\r\n\t\t\t\t\t\t\tuseLocaleInfo: Framer.useLocaleInfo,\r\n\t\t\t\t\t\t\tuseRouter: Framer.useRouter,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\treact: {\r\n\t\t\t\t\t\t\tcreateElement: React.createElement,\r\n\t\t\t\t\t\t\tFragment: React.Fragment,\r\n\t\t\t\t\t\t\tmemo: React.memo,\r\n\t\t\t\t\t\t\tuseCallback: React.useCallback,\r\n\t\t\t\t\t\t\tuseEffect: React.useEffect,\r\n\t\t\t\t\t\t\tuseRef: React.useRef,\r\n\t\t\t\t\t\t\tuseState: React.useState,\r\n\t\t\t\t\t\t\tuseLayoutEffect: React.useLayoutEffect,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"react-dom\": { createPortal },\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindow.__framer_editorBarDependencies = dependencies\r\n\r\n\t\t\t\t\tconst { createEditorBar } = await import(\"https://framer.com/edit/init.mjs\")\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdefault: createEditorBar(),\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})() : undefined\r\n\t\t,\r\n\t\t\t\t\tadaptLayoutToTextDirection: true,\r\n\t\t\t\t\tLayoutTemplate: Template,\r\n\t\t\t\t\tloadSnippetsModule: new Framer.LazyValue(() => import(\"https://framerusercontent.com/modules/hkx8hYDkOevewrtKytbx/ybXSbo315NLPjf5SmL5W/snippets.js\")),\r\n\t\t\t\t\tinitialCollectionItemId: collectionItemId,\r\n\t\t\t\t\tinitialContentLocaleIdOverride: contentLocaleId,\r\n\t\t\t\t}\r\n\t\t\t)\r\n\r\n\t\t\tconst contentWithGracefullyDegradingErrorBoundary = React.createElement(Framer.GracefullyDegradingErrorBoundary, {\r\n\t\t\t\tchildren: content\r\n\t\t\t})\r\n\r\n\t\t\t\r\n\t\t\tconst page = React.createElement(Framer.PageEffectsProvider, {\r\n\t\t\t\tchildren: contentWithGracefullyDegradingErrorBoundary,\r\n\t\t\t\tvalue: {routes: {}}\r\n\t\t\t})\r\n\r\n\t\t\t// We don't want the initial render to immediately have to suspend.\r\n\t\t\tawait rootPreload\r\n\t\t\treturn page\r\n\t\t}\r\n\t\r\n\r\n\t\tif (isBrowser) {\r\n\t\t\t// Note: HTTPArchive also uses this function to detect Framer sites; see https://github.com/HTTPArchive/wappalyzer/blob/371a17583f74fd9171b9077f59a5619b24062891/src/technologies/f.json#L1722-L1748.\r\n\t\t\twindow.__framer_importFromPackage = (packageAndFilename, exportIdentifier) => () => {\r\n\t\t\t\treturn React.createElement(Framer.ErrorPlaceholder, { error: 'Package component not supported: \"' + exportIdentifier + '\" in \"' + packageAndFilename + '\"' })\r\n\t\t\t}\r\n\r\n\t\t\twindow.__framer_events = window.__framer_events || []\r\n\r\n\t\t\t// Initialize lazy modules cache for hydration\r\n\t\t\tFramer.initLazyModulesCache()\r\n\r\n\t\t\tconst container = document.getElementById(\"main\")\r\n\t\t\t// We know that #main is parsed before this script, so we don't need to wait for DOMContentLoaded or similar events.\r\n\t\t\tif (\"framerHydrateV2\" in container.dataset) main(true, container)\r\n\t\t\telse main(false, container)\r\n\t\t}\r\n\r\n\t\tfunction track() {\r\n\t\t\tif (!isBrowser) return\r\n\t\t\twindow.__framer_events.push(arguments)\r\n\t\t}\r\n\r\n\t\tasync function main(shouldHydrate, container) {\r\n\t\t\tfunction handleError(error, errorInfo, recoverable = true) {\r\n\t\t\t\tif (error.caught || window.__framer_hadFatalError) return // we already logged it\r\n\r\n\t\t\t\tconst componentStack = errorInfo?.componentStack\r\n\t\t\t\tif (recoverable) {\r\n\t\t\t\t\tconsole.warn(\"Caught a recoverable error. The site is still functional, but might have some UI flickering or degraded page load performance. If you are the author of this website, update external components and check recently added custom code or code overrides to fix the following server/client mismatches:\\n\", error, componentStack)\r\n\t\t\t\t\t// we only want to collect 1%, because this can be quite noisy (floods the data pipeline)\r\n\t\t\t\t\tif (Math.random() > 0.01) return\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error(\"Caught a fatal error. Please report the following to the Framer team via https://www.framer.com/contact/:\\n\", error, componentStack)\r\n\t\t\t\t}\r\n\t\t\t\ttrack(recoverable ? \"published_site_load_recoverable_error\" : \"published_site_load_error\", {\r\n\t\t\t\t\tmessage: String(error),\r\n\t\t\t\t\tcomponentStack, // componentStack is more useful\r\n\t\t\t\t\tstack: componentStack ? undefined : error instanceof Error && typeof error.stack === \"string\" ? error.stack : null,\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tlet routeId, localeId, contentLocaleId, pathVariables, canonicalPathVariables, breakpoints, routeData\r\n\t\t\t\tif (shouldHydrate) {\r\n\t\t\t\t\trouteData = JSON.parse(container.dataset[\"framerHydrateV2\"])\r\n\t\t\t\t\trouteId = routeData.routeId\r\n\t\t\t\t\tlocaleId = routeData.localeId\r\n\t\t\t\t\tcontentLocaleId = routeData.contentLocaleId\r\n\t\t\t\t\tpathVariables = routeData.pathVariables\r\n\t\t\t\t\tcanonicalPathVariables = routeData.canonicalPathVariables\r\n\t\t\t\t\tbreakpoints = routeData.breakpoints\r\n\r\n\t\t\t\t\trouteId = Framer.patchRoutesForABTesting(routes, routeId) // Prioritize optimized route id to avoid flickering in browsers not supporting the server-timing header (Safari older than 16.4)\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\r\n\t\t\t\t\tFramer.patchRoutesForABTesting(routes, undefined) // This must happen before inferInitialRouteFromPath\r\n\t\t\t\t\tconst serverRoute = performance.getEntriesByType(\"navigation\")[0]?.serverTiming?.find(e => e.name === \"route\")?.description\r\n\t\t\t\t\tif (serverRoute) {\r\n\t\t\t\t\t\tconst routeData = new URLSearchParams(serverRoute)\r\n\t\t\t\t\t\trouteId = routeData.get(\"id\")\r\n\t\t\t\t\t\tlocaleId = routeData.get(\"locale\")\r\n\t\t\t\t\t\tfor (const [key, value] of routeData.entries()) {\r\n\t\t\t\t\t\t\tif (!key.startsWith(\"var.\")) continue\r\n\t\t\t\t\t\t\tpathVariables ??= {}\r\n\t\t\t\t\t\t\tpathVariables[key.slice(4)] = value\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!routeId || !localeId) {\r\n\t\t\t\t\t\tconst routeData = Framer.inferInitialRouteFromPath(routes, decodeURIComponent(location.pathname), true, locales)\r\n\t\t\t\t\t\trouteId = routeData.routeId\r\n\t\t\t\t\t\tlocaleId = routeData.localeId\r\n\t\t\t\t\t\tpathVariables = routeData.pathVariables\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst pagePromise = getPageRoot({\r\n\t\t\t\t\trouteId,\r\n\t\t\t\t\tlocaleId,\r\n\t\t\t\t\tcontentLocaleId,\r\n\t\t\t\t\tpathVariables,\r\n\t\t\t\t\tcanonicalPathVariables,\r\n\t\t\t\t\tcollectionItemId: shouldHydrate ? routeData?.collectionItemId : undefined,\r\n\t\t\t\t\tshouldResolveInitialRouteContentState: !shouldHydrate,\r\n\t\t\t\t})\r\n\r\n\t\t\t\t\r\nif (typeof window !== \"undefined\") {\r\n\tvoid (async () => {\r\n\t\tconst route = routes[routeId]\r\n\r\n\t\tconst defaultLocaleId = \"default\"\r\n\t\tconst framerLocale = locales.find(({ id }) => !localeId ? id === defaultLocaleId : id === localeId).code\r\n\r\n\t\t\r\n\t\tlet collectionItemId = routeData?.collectionItemId ?? null\r\n\t\tif (collectionItemId === null && route?.collectionId && collectionUtils) {\r\n\t\t\tconst utils = await collectionUtils[route.collectionId]?.()\r\n\t\t\tconst [slug] = Object.values(pathVariables)\r\n\t\t\tif (utils && typeof slug === \"string\") {\r\n\t\t\t\tcollectionItemId = (await utils.getRecordIdBySlug(slug, framerLocale || undefined)) ?? null\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\r\n\t\tconst resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions()\r\n\t\tconst timezone = resolvedDateTimeOptions.timeZone\r\n\t\tconst locale = resolvedDateTimeOptions.locale\r\n\r\n\t\t// wait for the page to be activated before sending the pageview event\r\n\t\t// https://developer.chrome.com/docs/web-platform/prerender-pages#impact-on-analytics\r\n\t\tawait new Promise((resolve) => {\r\n\t\t\tif (document.prerendering) {\r\n\t\t\t\tdocument.addEventListener(\"prerenderingchange\", resolve, { once: true })\r\n\t\t\t} else {\r\n\t\t\t\tresolve()\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\twindow.__framer_events.push([\r\n\t\t\t\"published_site_pageview\",\r\n\t\t\t{\r\n\t\t\t\tframerSiteId,\r\n\t\t\t\tversion: 2,\r\n\t\t\t\troutePath: route?.path || \"/\",\r\n\t\t\t\tcollectionItemId,\r\n\t\t\t\tframerLocale: framerLocale || null,\r\n\t\t\t\twebPageId: route?.abTestingVariantId ?? routeId,\r\n\t\t\t\tabTestId: route?.abTestId,\r\n\t\t\t\treferrer: document.referrer || null,\r\n\t\t\t\turl: window.location.href,\r\n\t\t\t\thostname: window.location.hostname || null,\r\n\t\t\t\tpathname: window.location.pathname || null,\r\n\t\t\t\thash: window.location.hash || null,\r\n\t\t\t\tsearch: window.location.search || null,\r\n\t\t\t\ttimezone,\r\n\t\t\t\tlocale,\r\n\t\t\t},\r\n\t\t\t\"eager\"\r\n\t\t])\r\n\r\n\t\t// Yield to avoid blocking the main thread with the user code\r\n\t\tawait Framer.yieldToMain({ priority: \"background\", ensureContinueBeforeUnload: true, continueAfter: \"paint\" })\r\n\r\n\t\tdocument.dispatchEvent(new CustomEvent(\"framer:pageview\", {\r\n\t\t\tdetail: { framerLocale: framerLocale || null }\r\n\t\t}))\r\n\t})()\r\n}\r\n\r\n\r\n\t\t\t\tconst page = await pagePromise\r\n\t\t\t\tif (shouldHydrate) {\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tFramer.withPerformanceMarks(\"framer-rewrite-breakpoints\", () => {\r\n\t\t\t\t\t\tFramer.removeHiddenBreakpointLayersV2(breakpoints)\r\n\t\t\t\t\t\twindow.__framer_onRewriteBreakpoints?.(breakpoints)\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tconst startTransition = isBot ? cb => cb() : React.startTransition\r\n\t\t\t\t\tstartTransition(() => {\r\n\t\t\t\t\t\tFramer.markHydrationStart()\r\n\t\t\t\t\t\tFramer.turnOffReactEventHandling()\r\n\t\t\t\t\t\tReactDOM.hydrateRoot(container, page, { onRecoverableError: handleError })\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\r\n\t\t\t\t\tReactDOM.createRoot(container, { onRecoverableError: handleError }).render(page)\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\thandleError(error, undefined, false)\r\n\t\t\t\tthrow error\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\r\n\r\n\t\t\r\n\t"],"mappings":"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"}