{"version":3,"file":"SmartNavbarV8.CqUNBH8V.mjs","names":["getSharedRotation","SHARED_ROTATION_KEY","React.useRef","React.useState","React.useMemo","React.useCallback","MENU_EVENT","MENU_REQUEST_CLOSE_EVENT","CURSOR_LOCKED_EVENT","React.useState","React.useRef","React.useCallback","MENU_REQUEST_CLOSE_EVENT","CONTACT_OPEN_EVENT","_Fragment","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","animation","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","RichText","Button4","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","_Fragment","RichText","FormPlainTextInput","RichText","ContactFormWrapper","serializationHash","variantClassNames","transition1","animation","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","MENU_REQUEST_CLOSE_EVENT","React.useRef","React.useCallback","React.useContext","React.useMemo","React.Fragment","React.forwardRef","useRef","React.useId","RichText","getSharedRotation","SHARED_ROTATION_KEY","React.useState","React.useRef","React.useMemo","React.useCallback","customEvent","custom","MENU_EVENT","_Fragment","React.useState","React.useMemo","MENU_EVENT","React.useState","React.useRef","React.useCallback","custom"],"sources":["https:/framerusercontent.com/modules/HnUJBg3afa62ecozuopZ/YK5xmydNyoWW36LM6Yyh/CursorTargetsV8.js","https:/framerusercontent.com/modules/36wUgeFohLlKz31HnUMy/LIKJTL5SmeUlMuBQC609/MenuTriggerV8.js","https:/framerusercontent.com/modules/TRN6LMyvoAqxfAZGICxp/JEgS3Hno9p3n8nA3ckNZ/PortfolioContactHub_V2_8_NAME_POLISH.js","https:/framerusercontent.com/modules/PRcBRsphRZvvElwZUdGv/QsVhkmuwjdWqjsBVB0To/zbTj_v_1i.js","https:/framerusercontent.com/modules/VlAla0TTFsk1Iw1Y1hSF/BUbYshAt6SM46Igd3uEZ/fANfoXcnh.js","https:/framerusercontent.com/modules/MNGHP6obWcZ4KrRPDvcT/ToC1yKcjC8BFjx5uXHiv/TjnkSNABZ.js","https:/framerusercontent.com/modules/EGQBD8iNmB6XMVJlXmuG/yyao8ZugC2VC1czpM9bC/ContactPopupTriggers_V1.js","https:/framerusercontent.com/modules/80ktfHPbqIX11rm5pprd/Uicli6T5rxoHVOmZjhxY/W9PqkUSmL.js","https:/framerusercontent.com/modules/uhlbE3ZgLu7MvpTf3n9K/6BdM7lar6yqGdZpQt526/CursorCompanionHomeV8.js","https:/framerusercontent.com/modules/RTOdaQpdCaxyxrKWaPYx/nqRQad8ndTJblex6p2Jy/MenuPanelV8.js","https:/framerusercontent.com/modules/oFS7vxfSGVpx50LrFqLg/4mNrCxfRgJhfa7i6Fcha/SmartNavbarV8.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useState}from\"react\";/* =========================================================\n\n   BLACK TARGET\n\n   White / neutral backgrounds.\n\n========================================================= */export function withBlackCursorTarget(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,\"data-max-cursor-target\":\"black\",\"data-max-cursor-color\":\"#000000\"});});}/* =========================================================\n\n   DARK NAVY TARGET\n\n   Light blue backgrounds.\n\n========================================================= */export function withDarkCursorTarget(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,\"data-max-cursor-target\":\"dark\",\"data-max-cursor-color\":\"#26384A\"});});}/* =========================================================\n\n   LIGHT BLUE TARGET\n\n   Dark navy backgrounds.\n\n========================================================= */export function withLightCursorTarget(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,\"data-max-cursor-target\":\"light\",\"data-max-cursor-color\":\"#BBDDFF\"});});}/* =========================================================\n\n   RED TARGET\n\n========================================================= */export function withRedCursorTarget(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,\"data-max-cursor-target\":\"red\",\"data-max-cursor-color\":\"#FF6B5F\"});});}/* =========================================================\n\n   PURPLE TARGET\n\n========================================================= */export function withPurpleCursorTarget(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,\"data-max-cursor-target\":\"purple\",\"data-max-cursor-color\":\"#C9B6FF\"});});}/* =========================================================\n\n   GREEN / LIME TARGET\n\n========================================================= */export function withGreenCursorTarget(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,\"data-max-cursor-target\":\"green\",\"data-max-cursor-color\":\"#DDF76F\"});});}/* =========================================================\n\n   LEGACY PROJECT TARGET\n\n   Kept so existing assignments don't break.\n\n========================================================= */export function withProjectCursorTarget(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,\"data-max-cursor-target\":\"project\",\"data-max-cursor-color\":\"#000000\"});});}/* =========================================================\n\n   CTA TARGET\n\n   Uses the normal four-corner cursor frame. The visual highlight is\n   painted as an OUTER box-shadow on the real pill itself, so the black\n   button stays crisp and the highlight reads underneath / behind it.\n\n========================================================= */export function withCTACursorTarget(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[hovered,setHovered]=useState(false);const handlePointerEnter=event=>{setHovered(true);props.onPointerEnter?.(event);};const handlePointerLeave=event=>{setHovered(false);props.onPointerLeave?.(event);};return /*#__PURE__*/_jsx(Component,{ref:ref,...props,\"data-max-cursor-target\":\"cta\",\"data-max-cursor-color\":\"#000000\",onPointerEnter:handlePointerEnter,onPointerLeave:handlePointerLeave,style:{...props.style??{},boxShadow:hovered?\"0 0 0 7px rgba(187, 221, 255, 0.20)\":\"0 0 0 0 rgba(187, 221, 255, 0)\",transition:\"box-shadow 160ms cubic-bezier(0.22, 1, 0.36, 1)\"}});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withRedCursorTarget\":{\"type\":\"reactHoc\",\"name\":\"withRedCursorTarget\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withDarkCursorTarget\":{\"type\":\"reactHoc\",\"name\":\"withDarkCursorTarget\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCTACursorTarget\":{\"type\":\"reactHoc\",\"name\":\"withCTACursorTarget\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withGreenCursorTarget\":{\"type\":\"reactHoc\",\"name\":\"withGreenCursorTarget\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withPurpleCursorTarget\":{\"type\":\"reactHoc\",\"name\":\"withPurpleCursorTarget\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLightCursorTarget\":{\"type\":\"reactHoc\",\"name\":\"withLightCursorTarget\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBlackCursorTarget\":{\"type\":\"reactHoc\",\"name\":\"withBlackCursorTarget\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withProjectCursorTarget\":{\"type\":\"reactHoc\",\"name\":\"withProjectCursorTarget\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CursorTargetsV8.map","import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{motion,motionValue,animate}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";const MENU_EVENT=\"max-portfolio-menu-interaction\";const CURSOR_LOCKED_EVENT=\"max-portfolio-menu-cursor-locked\";/*\n    NEW:\n\n    MenuPanelV8 sends this when one of\n    its actual navigation items is used.\n*/const MENU_REQUEST_CLOSE_EVENT=\"max-portfolio-menu-request-close\";const SHARED_ROTATION_KEY=\"__MAX_PORTFOLIO_MENU_ROTATION__\";const SQUARE=6;const GRID=22;const OPEN_LOCK_SETTLE_MS=70;const CLOSE_LOCK_SETTLE_MS=45;const BLACK_CROSS=[{x:8,y:0},{x:0,y:8},{x:8,y:8},{x:16,y:8},{x:8,y:16}];/* =========================================================\n   SHARED ROTATION\n========================================================= */function getSharedRotation(){if(typeof window===\"undefined\"){return motionValue(0);}const win=window;if(!win[SHARED_ROTATION_KEY]){win[SHARED_ROTATION_KEY]=motionValue(0);}return win[SHARED_ROTATION_KEY];}/* =========================================================\n   COMPONENT\n========================================================= */export default function MenuTriggerV8(props){const{blackColor}=props;const buttonRef=React.useRef(null);const[open,setOpen]=React.useState(false);const openRef=React.useRef(false);const hoveringRef=React.useRef(false);const closingRef=React.useRef(false);const lockedRef=React.useRef(false);const openRequestedRef=React.useRef(false);const closeRequestedRef=React.useRef(false);const settleTimer=React.useRef(null);const rotationAnimation=React.useRef(null);const menuRotation=React.useMemo(()=>getSharedRotation(),[]);/* =====================================================\n       TIMER\n    ===================================================== */const clearSettleTimer=React.useCallback(()=>{if(settleTimer.current){clearTimeout(settleTimer.current);settleTimer.current=null;}},[]);/* =====================================================\n       ICON RECT\n    ===================================================== */const getVisualRect=React.useCallback(()=>{const button=buttonRef.current;if(!button){return null;}const rect=button.getBoundingClientRect();return{left:rect.left+rect.width/2-GRID/2,top:rect.top+rect.height/2-GRID/2,width:GRID,height:GRID};},[]);/* =====================================================\n       STATE → CURSOR + PANEL\n    ===================================================== */const dispatchState=React.useCallback((menuIsOpen,cursorDocked,orbit,tone)=>{window.dispatchEvent(new CustomEvent(MENU_EVENT,{detail:{open:menuIsOpen,docked:cursorDocked,orbit,tone,rect:getVisualRect()}}));},[getVisualRect]);/* =====================================================\n       OPEN\n    ===================================================== */const openMenu=React.useCallback(()=>{if(openRef.current||closingRef.current){return;}clearSettleTimer();openRef.current=true;setOpen(true);lockedRef.current=true;openRequestedRef.current=false;rotationAnimation.current?.stop?.();dispatchState(true,hoveringRef.current,hoveringRef.current,\"open\");rotationAnimation.current=animate(menuRotation,45,{duration:.29,ease:[.2,.92,.25,1]});},[clearSettleTimer,dispatchState,menuRotation]);/* =====================================================\n       CLOSE\n    ===================================================== */const closeMenu=React.useCallback(attached=>{if(!openRef.current||closingRef.current){return;}clearSettleTimer();closingRef.current=true;closeRequestedRef.current=false;rotationAnimation.current?.stop?.();dispatchState(true,attached,attached,\"close\");rotationAnimation.current=animate(menuRotation,0,{duration:.235,ease:[.4,0,.2,1],onComplete:()=>{openRef.current=false;closingRef.current=false;lockedRef.current=false;setOpen(false);dispatchState(false,false,false,\"open\");}});},[clearSettleTimer,dispatchState,menuRotation]);/* =====================================================\n       NEW: MENU ITEM REQUESTS CLOSE\n\n       This is what lets the visual Framer\n       menu content behave like a normal\n       navigation menu without being\n       hard-coded into this component.\n    ===================================================== */React.useEffect(()=>{const handleMenuCloseRequest=()=>{if(!openRef.current||closingRef.current){return;}/*\n                    Content selection closes\n                    the black X normally.\n\n                    Cursor remains wherever\n                    the visitor actually is.\n                */closeMenu(false);};window.addEventListener(MENU_REQUEST_CLOSE_EVENT,handleMenuCloseRequest);return()=>{window.removeEventListener(MENU_REQUEST_CLOSE_EVENT,handleMenuCloseRequest);};},[closeMenu]);/* =====================================================\n       CURSOR LOCK\n    ===================================================== */React.useEffect(()=>{const handleLocked=()=>{if(!hoveringRef.current||closingRef.current){return;}lockedRef.current=true;clearSettleTimer();/*\n                OPEN X:\n\n                Colored cursor pieces attach.\n\n                Do not close automatically.\n            */if(openRef.current){if(closeRequestedRef.current){settleTimer.current=setTimeout(()=>{closeMenu(true);},CLOSE_LOCK_SETTLE_MS);}return;}/*\n                CLOSED +:\n\n                Coral pieces attach,\n                then automatic open.\n            */const delay=openRequestedRef.current?0:OPEN_LOCK_SETTLE_MS;settleTimer.current=setTimeout(()=>{if(!hoveringRef.current||openRef.current||closingRef.current){return;}openMenu();},delay);};window.addEventListener(CURSOR_LOCKED_EVENT,handleLocked);return()=>{window.removeEventListener(CURSOR_LOCKED_EVENT,handleLocked);};},[clearSettleTimer,openMenu,closeMenu]);/* =====================================================\n       HOVER ENTER\n    ===================================================== */const handleEnter=()=>{hoveringRef.current=true;if(closingRef.current){return;}clearSettleTimer();lockedRef.current=false;/*\n            OPEN X:\n\n            colorful return interaction.\n        */if(openRef.current){closeRequestedRef.current=false;dispatchState(true,true,false,\"close\");return;}/*\n            CLOSED +:\n\n            coral opening interaction.\n        */openRequestedRef.current=false;menuRotation.set(0);dispatchState(false,true,false,\"open\");};/* =====================================================\n       HOVER LEAVE\n    ===================================================== */const handleLeave=()=>{hoveringRef.current=false;clearSettleTimer();lockedRef.current=false;openRequestedRef.current=false;closeRequestedRef.current=false;if(openRef.current||closingRef.current){dispatchState(true,false,false,\"close\");return;}dispatchState(false,false,false,\"open\");};/* =====================================================\n       CLICK\n    ===================================================== */const handleClick=()=>{/*\n            OPEN X\n        */if(openRef.current){if(hoveringRef.current&&!lockedRef.current){closeRequestedRef.current=true;return;}closeMenu(hoveringRef.current&&lockedRef.current);return;}/*\n            CLOSED +\n        */if(hoveringRef.current&&!lockedRef.current){/*\n                CLICK-TO-REOPEN WHILE STILL HOVERING\n\n                After clicking the open X closed, the pointer may still be\n                sitting over the trigger. Because no new pointer-enter event\n                fires, the old code only set openRequestedRef and then waited\n                forever for a fresh cursor-lock event.\n\n                Re-issue the exact same CLOSED + docking request that hover\n                enter uses. The cursor pieces therefore reconnect to the\n                trigger, use the normal coral/open color, and the existing\n                CURSOR_LOCKED_EVENT opens the menu as soon as they physically\n                arrive.\n\n                Hover-open behavior is otherwise unchanged.\n            */clearSettleTimer();openRequestedRef.current=true;closeRequestedRef.current=false;lockedRef.current=false;menuRotation.set(0);dispatchState(false,true,false,\"open\");return;}openMenu();};/* =====================================================\n       OUTSIDE CLICK\n    ===================================================== */React.useEffect(()=>{const handleOutsidePointerDown=event=>{if(!openRef.current||closingRef.current){return;}const target=event.target;/*\n                Trigger itself.\n            */if(target instanceof Node&&buttonRef.current?.contains(target)){return;}/*\n                MenuPanelV8 itself.\n\n                Do not treat navigation item\n                clicks as outside clicks.\n\n                MenuPanel separately requests\n                a close after an item is used.\n            */if(target instanceof Element&&target.closest('[data-max-menu-panel=\"true\"]')){return;}closeMenu(false);};document.addEventListener(\"pointerdown\",handleOutsidePointerDown,true);return()=>{document.removeEventListener(\"pointerdown\",handleOutsidePointerDown,true);};},[closeMenu]);/* =====================================================\n       ESCAPE\n    ===================================================== */React.useEffect(()=>{const handleKeyDown=event=>{if(event.key!==\"Escape\"||!openRef.current){return;}closeMenu(false);buttonRef.current?.focus();};window.addEventListener(\"keydown\",handleKeyDown);return()=>{window.removeEventListener(\"keydown\",handleKeyDown);};},[closeMenu]);/* =====================================================\n       POSITION UPDATES\n    ===================================================== */React.useEffect(()=>{const update=()=>{if(!hoveringRef.current||closingRef.current){return;}dispatchState(openRef.current,true,false,openRef.current?\"close\":\"open\");};window.addEventListener(\"resize\",update);window.addEventListener(\"scroll\",update,true);return()=>{window.removeEventListener(\"resize\",update);window.removeEventListener(\"scroll\",update,true);};},[dispatchState]);/* =====================================================\n       CLEANUP\n    ===================================================== */React.useEffect(()=>{return()=>{clearSettleTimer();rotationAnimation.current?.stop?.();menuRotation.set(0);window.dispatchEvent(new CustomEvent(MENU_EVENT,{detail:{open:false,docked:false,orbit:false,tone:\"open\",rect:null}}));};},[clearSettleTimer,menuRotation]);return /*#__PURE__*/_jsx(\"button\",{ref:buttonRef,\"aria-label\":open?\"Close navigation\":\"Open navigation\",\"aria-expanded\":open,onPointerEnter:handleEnter,onPointerLeave:handleLeave,onClick:handleClick,style:{width:\"100%\",height:\"100%\",minWidth:44,minHeight:44,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",position:\"relative\",border:0,padding:0,margin:0,background:\"transparent\",appearance:\"none\"},children:/*#__PURE__*/_jsx(motion.div,{style:{position:\"relative\",width:GRID,height:GRID,rotate:menuRotation,transformOrigin:\"50% 50%\"},children:BLACK_CROSS.map((point,index)=>/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:point.x,top:point.y,width:SQUARE,height:SQUARE,background:blackColor,pointerEvents:\"none\"}},`black-${index}`))})});}/* =========================================================\n   FRAMER\n========================================================= */MenuTriggerV8.defaultProps={blackColor:\"#111111\"};addPropertyControls(MenuTriggerV8,{blackColor:{type:ControlType.Color,title:\"Black\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MenuTriggerV8\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MenuTriggerV8.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType}from\"framer\";export const CONTACT_OPEN_EVENT=\"max:contact-open\";export const CONTACT_CLOSE_EVENT=\"max:contact-close\";const MENU_REQUEST_CLOSE_EVENT=\"max-portfolio-menu-request-close\";const MENU_CONTACT_DELAY_MS=260;const NATIVE_SUCCESS_LABEL=\"MESSAGE SENT\"// Approved native button success variant\n;const SUCCESS_WATCH_MS=3e4// Form owns error display; never infer success from timeout\n;// Navbar variants can mount more than one hub instance. Keep the opener shared\n// so every instance restores focus to the same element when the dialog closes.\nlet sharedRestoreFocusElement=null;let sharedRestoreToMenuTrigger=false;const DEFAULT_GUY_LOOK={x:0,y:0,rotate:-3};export function openMaxContact(){if(typeof window===\"undefined\")return;window.dispatchEvent(new CustomEvent(CONTACT_OPEN_EVENT));}export function closeMaxContact(){if(typeof window===\"undefined\")return;window.dispatchEvent(new CustomEvent(CONTACT_CLOSE_EVENT));}const serif='\"Newsreader\", Georgia, \"Times New Roman\", serif';const sans='\"Google Sans Flex\", \"Google Sans\", Arial, sans-serif';function isUsableLink(link){if(!link)return false;const normalized=link.trim();return Boolean(normalized&&normalized!==\"#\");}function buildMailto(email,subject){const cleanEmail=email.trim();if(!cleanEmail)return\"#\";const cleanSubject=subject.trim();if(!cleanSubject)return`mailto:${cleanEmail}`;return`mailto:${cleanEmail}?subject=${encodeURIComponent(cleanSubject)}`;}// Framer's Date picker supplies an ISO 8601 string. Format the selected\n// calendar date in UTC so visitors in other time zones never see a day earlier.\nfunction formatAwayReturnDate(value){if(!value)return null;const match=/^(\\d{4})-(\\d{2})-(\\d{2})/.exec(value.trim());if(!match)return null;const year=Number(match[1]);const month=Number(match[2]);const day=Number(match[3]);const selected=new Date(Date.UTC(year,month-1,day));if(selected.getUTCFullYear()!==year||selected.getUTCMonth()!==month-1||selected.getUTCDate()!==day)return null;return selected.toLocaleDateString(undefined,{month:\"long\",day:\"numeric\",year:\"numeric\",timeZone:\"UTC\"});}/**\n * Portfolio Contact Hub V3.6 — Optional Out of Office notice (V3.5.2 baseline)\n *\n * Shared site-wide contact modal for Max's portfolio.\n *\n * Open from any code component:\n *   openMaxContact()\n *\n * Or dispatch:\n *   window.dispatchEvent(new CustomEvent(\"max:contact-open\"))\n *\n * Or add this attribute to any clickable element:\n *   data-max-contact-trigger=\"true\"\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function PortfolioContactHubV2({previewOpen=false,showTestTrigger=true,eyebrow=\"CONTACT MAX\",title=\"Let’s talk.\",body=\"Have a project, role, or idea in mind? Send me a message or reach me directly.\",outOfOffice=false,returnDate=\"\",outOfOfficeMessage=\"I'm currently away, so replies may take a little longer than usual.\",emailAddress=\"\",emailLabel=\"EMAIL DIRECTLY\",emailSubject=\"Portfolio inquiry\",copyLabel=\"COPY\",showMessageForm=true,nativeForm,nativeFormHeight=390,showResume=true,resumeLabel=\"VIEW RESUME\",resumeLink=\"\",resumeNewTab=true,showLinkedIn=false,linkedinLabel=\"LINKEDIN\",linkedinLink=\"\",linkedinNewTab=true,showCuriousGuy=true,curiousGuySize=72,curiousGuyX=0,curiousGuyY=0,curiousNameReply=\"{name}. Got it.\",curiousEmailReply=\"Are you sure you spelled that right? Interesting email.\",curiousMessageReply=\"Don’t forget to spell check.\",curiousEasterEgg=\"No stamps needed. This ain’t snail mail, after all.\",cursorColor=\"#FF756B\",copyCursorColor=\"#69AEFF\",overlayOpacity=.24,overlayBlur=12,cardWidth=590}){const[eventOpen,setEventOpen]=React.useState(false);// Let the X dismiss the modal even if Framer's Preview Open prop is enabled.\nconst[previewDismissed,setPreviewDismissed]=React.useState(false);const[copied,setCopied]=React.useState(false);const visitorNameRef=React.useRef(\"\");const[curiousMessage,setCuriousMessage]=React.useState(\"\");const[guyExpression,setGuyExpression]=React.useState(\"normal\");const guyCardRef=React.useRef(null);const pendingGuyLookRef=React.useRef(DEFAULT_GUY_LOOK);const guyLookFrameRef=React.useRef(null);const curiousTimerRef=React.useRef(null);const expressionTimerRef=React.useRef(null);const copyResetTimerRef=React.useRef(null);const restoreFocusRef=React.useRef(null);const restoreToMenuTriggerRef=React.useRef(false);const restoreFocusTimerRef=React.useRef(null);// V3.5: The native Framer form remains the sole owner of submission.\n// We only display a receipt after Framer reports a successful result.\nconst[sentReceipt,setSentReceipt]=React.useState(null);const nativeFormSlotRef=React.useRef(null);const pendingSubmissionRef=React.useRef(null);const successObserverRef=React.useRef(null);const successWatchTimerRef=React.useRef(null);// Touch devices don't have hover. A new key restarts only the spin on tap.\nconst[successGuyTouchTurnCount,setSuccessGuyTouchTurnCount]=React.useState(0);const isOpen=eventOpen||previewOpen&&!previewDismissed;React.useEffect(()=>{// Re-enable Framer's forced-open preview when the prop is toggled.\nsetPreviewDismissed(false);},[previewOpen]);const turnSuccessGuyOnTap=React.useCallback(()=>{// Desktop hover / keyboard focus is CSS-only. Click is for touch.\nif(typeof window!==\"undefined\"&&window.matchMedia?.(\"(hover: none)\").matches){setSuccessGuyTouchTurnCount(count=>count+1);}},[]);// One DOM write per animation frame instead of a full React render on\n// every pointer event. All five existing CSS variables and their exact\n// values are preserved, including focused-field reactions.\nconst scheduleGuyLook=React.useCallback(look=>{pendingGuyLookRef.current=look;if(guyLookFrameRef.current!==null)return;guyLookFrameRef.current=window.requestAnimationFrame(()=>{guyLookFrameRef.current=null;const card=guyCardRef.current;if(!card)return;const{x,y,rotate}=pendingGuyLookRef.current;card.style.setProperty(\"--mch-look-x\",`${x}px`);card.style.setProperty(\"--mch-look-y\",`${y}px`);card.style.setProperty(\"--mch-eye-x\",`${x*.42}px`);card.style.setProperty(\"--mch-eye-y\",`${y*.36}px`);card.style.setProperty(\"--mch-guy-rotate\",`${rotate}deg`);});},[]);const cancelGuyLookFrame=React.useCallback(()=>{if(guyLookFrameRef.current!==null){window.cancelAnimationFrame(guyLookFrameRef.current);guyLookFrameRef.current=null;}pendingGuyLookRef.current=DEFAULT_GUY_LOOK;},[]);const clearCuriousTimer=React.useCallback(()=>{if(curiousTimerRef.current!==null){window.clearTimeout(curiousTimerRef.current);curiousTimerRef.current=null;}},[]);const clearExpressionTimer=React.useCallback(()=>{if(expressionTimerRef.current!==null){window.clearTimeout(expressionTimerRef.current);expressionTimerRef.current=null;}},[]);// OPTIMIZATION 03B: Keep the COPY confirmation reset cancelable.\nconst clearCopyResetTimer=React.useCallback(()=>{if(copyResetTimerRef.current!==null){window.clearTimeout(copyResetTimerRef.current);copyResetTimerRef.current=null;}},[]);const stopWatchingNativeSuccess=React.useCallback(()=>{successObserverRef.current?.disconnect();successObserverRef.current=null;if(successWatchTimerRef.current!==null){window.clearTimeout(successWatchTimerRef.current);successWatchTimerRef.current=null;}},[]);const finishSuccessfulSubmission=React.useCallback(()=>{const pending=pendingSubmissionRef.current;if(!pending)return;// Ignore other forms, duplicate events and unsolicited signals.\npendingSubmissionRef.current=null;stopWatchingNativeSuccess();clearCuriousTimer();clearExpressionTimer();setCuriousMessage(\"\");setSentReceipt({...pending,sentAt:new Date});},[stopWatchingNativeSuccess,clearCuriousTimer,clearExpressionTimer]);const runEyeRoll=React.useCallback(()=>{clearExpressionTimer();setGuyExpression(\"eyeRoll\");expressionTimerRef.current=window.setTimeout(()=>{setGuyExpression(\"normal\");expressionTimerRef.current=null;},900);},[clearExpressionTimer]);const showCuriousMessage=React.useCallback((message,duration=2200)=>{if(!message.trim())return;clearCuriousTimer();setCuriousMessage(message);curiousTimerRef.current=window.setTimeout(()=>{setCuriousMessage(\"\");curiousTimerRef.current=null;},duration);},[clearCuriousTimer]);const formatCuriousCopy=React.useCallback((template,name)=>{const cleanName=name.trim();if(!cleanName)return\"\";const firstName=cleanName.split(/\\s+/)[0];const displayName=firstName.charAt(0).toLocaleUpperCase()+firstName.slice(1);return template.replaceAll(\"{name}\",displayName);},[]);const closeModal=React.useCallback(()=>{pendingSubmissionRef.current=null;stopWatchingNativeSuccess();setSentReceipt(null);setPreviewDismissed(true);setSuccessGuyTouchTurnCount(0);visitorNameRef.current=\"\";cancelGuyLookFrame();clearCuriousTimer();clearExpressionTimer();clearCopyResetTimer();setEventOpen(false);setCopied(false);setCuriousMessage(\"\");setGuyExpression(\"normal\");},[clearCuriousTimer,clearExpressionTimer,clearCopyResetTimer,stopWatchingNativeSuccess,cancelGuyLookFrame]);React.useEffect(()=>{return()=>{cancelGuyLookFrame();successObserverRef.current?.disconnect();if(successWatchTimerRef.current!==null){window.clearTimeout(successWatchTimerRef.current);}if(curiousTimerRef.current!==null){window.clearTimeout(curiousTimerRef.current);}if(expressionTimerRef.current!==null){window.clearTimeout(expressionTimerRef.current);}if(copyResetTimerRef.current!==null){window.clearTimeout(copyResetTimerRef.current);copyResetTimerRef.current=null;}if(restoreFocusTimerRef.current!==null){window.clearTimeout(restoreFocusTimerRef.current);restoreFocusTimerRef.current=null;}};},[cancelGuyLookFrame]);React.useEffect(()=>{if(typeof window===\"undefined\")return;let menuContactTimer=null;const open=()=>{if(restoreFocusTimerRef.current!==null){window.clearTimeout(restoreFocusTimerRef.current);restoreFocusTimerRef.current=null;}const activeElement=document.activeElement;if(activeElement instanceof HTMLElement){restoreFocusRef.current=activeElement;restoreToMenuTriggerRef.current=Boolean(activeElement.closest('[data-max-menu-panel=\"true\"]'));sharedRestoreFocusElement=activeElement;sharedRestoreToMenuTrigger=restoreToMenuTriggerRef.current;}setEventOpen(true);};const close=()=>closeModal();/*\n            HAMBURGER CONTACT BRIDGE\n\n            Keep the real Framer /contact link completely untouched so the\n            existing menu cursor sees the exact same anchor/label structure\n            as Projects, About, and Resume.\n\n            We intercept only that real /contact link at DOCUMENT CAPTURE\n            phase, before Framer routing can consume the click. Then:\n              1. prevent navigation\n              2. close the existing hamburger menu normally\n              3. wait for its close animation\n              4. open this shared Contact Hub\n\n            No override belongs on the Contact menu item.\n        */const onMenuContactCapture=event=>{const target=event.target;if(!(target instanceof Element))return;const menuPanel=target.closest('[data-max-menu-panel=\"true\"]');if(!menuPanel)return;const link=target.closest(\"a[href]\");if(!link)return;let pathname=\"\";try{pathname=new URL(link.getAttribute(\"href\")||\"\",window.location.href).pathname;}catch{return;}const normalizedPath=pathname.length>1?pathname.replace(/\\/+$/,\"\"):pathname;if(normalizedPath!==\"/contact\")return;event.preventDefault();event.stopPropagation();event.stopImmediatePropagation();restoreFocusRef.current=link;restoreToMenuTriggerRef.current=true;sharedRestoreFocusElement=link;sharedRestoreToMenuTrigger=true;window.dispatchEvent(new CustomEvent(MENU_REQUEST_CLOSE_EVENT));if(menuContactTimer!==null){window.clearTimeout(menuContactTimer);}menuContactTimer=window.setTimeout(()=>{setEventOpen(true);menuContactTimer=null;},MENU_CONTACT_DELAY_MS);};const onDocumentClick=event=>{const target=event.target;if(!(target instanceof Element))return;const trigger=target.closest('[data-max-contact-trigger=\"true\"]');if(!trigger)return;event.preventDefault();if(trigger instanceof HTMLElement){restoreFocusRef.current=trigger;sharedRestoreFocusElement=trigger;}restoreToMenuTriggerRef.current=false;sharedRestoreToMenuTrigger=false;setEventOpen(true);};window.addEventListener(CONTACT_OPEN_EVENT,open);window.addEventListener(CONTACT_CLOSE_EVENT,close);document.addEventListener(\"click\",onMenuContactCapture,true);document.addEventListener(\"click\",onDocumentClick);return()=>{if(menuContactTimer!==null){window.clearTimeout(menuContactTimer);}window.removeEventListener(CONTACT_OPEN_EVENT,open);window.removeEventListener(CONTACT_CLOSE_EVENT,close);document.removeEventListener(\"click\",onMenuContactCapture,true);document.removeEventListener(\"click\",onDocumentClick);};},[closeModal]);React.useEffect(()=>{if(!isOpen||typeof document===\"undefined\")return;const previousOverflow=document.body.style.overflow;const dialog=guyCardRef.current;if(restoreFocusTimerRef.current!==null){window.clearTimeout(restoreFocusTimerRef.current);restoreFocusTimerRef.current=null;}if(!restoreFocusRef.current){const activeElement=document.activeElement;if(activeElement instanceof HTMLElement&&activeElement!==document.body){restoreFocusRef.current=activeElement;sharedRestoreFocusElement=activeElement;}}if(sharedRestoreFocusElement){restoreFocusRef.current=sharedRestoreFocusElement;}if(sharedRestoreToMenuTrigger){restoreToMenuTriggerRef.current=true;}const getFocusableElements=()=>{if(!dialog)return[];const candidates=Array.from(dialog.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]):not([type=\"hidden\"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'));return candidates.filter(element=>{if(element.getClientRects().length===0)return false;let node=element;while(node&&node!==dialog){const style=window.getComputedStyle(node);if(node.hidden||node.getAttribute(\"aria-hidden\")===\"true\"||style.display===\"none\"||style.visibility===\"hidden\"||style.visibility===\"collapse\"){return false;}node=node.parentElement;}return true;});};const canRestoreFocus=element=>{if(!element?.isConnected||element.getClientRects().length===0)return false;let node=element;while(node&&node!==document.body){const style=window.getComputedStyle(node);if(node.hidden||node.getAttribute(\"aria-hidden\")===\"true\"||style.display===\"none\"||style.visibility===\"hidden\"||style.visibility===\"collapse\"||Number(style.opacity)<=.01){return false;}node=node.parentElement;}return true;};const onKeyDown=event=>{if(event.key===\"Escape\"){event.preventDefault();event.stopPropagation();closeModal();return;}if(event.key!==\"Tab\"||!dialog)return;const focusableElements=getFocusableElements();if(focusableElements.length===0){event.preventDefault();dialog.focus({preventScroll:true});return;}const first=focusableElements[0];const last=focusableElements[focusableElements.length-1];const activeElement=document.activeElement;if(event.shiftKey&&(activeElement===first||!dialog.contains(activeElement))){event.preventDefault();last.focus({preventScroll:true});}else if(!event.shiftKey&&(activeElement===last||!dialog.contains(activeElement))){event.preventDefault();first.focus({preventScroll:true});}};const focusFrame=window.requestAnimationFrame(()=>{const initialFocus=dialog?.querySelector(\".mch-v2-close\")||getFocusableElements()[0]||dialog;initialFocus?.focus({preventScroll:true});});document.body.style.overflow=\"hidden\";document.addEventListener(\"keydown\",onKeyDown,true);return()=>{window.cancelAnimationFrame(focusFrame);document.body.style.overflow=previousOverflow;document.removeEventListener(\"keydown\",onKeyDown,true);const previousFocus=sharedRestoreFocusElement||restoreFocusRef.current;let previousWasMenuContact=false;if(previousFocus instanceof HTMLAnchorElement){try{const pathname=new URL(previousFocus.getAttribute(\"href\")||\"\",window.location.href).pathname;previousWasMenuContact=(pathname.length>1?pathname.replace(/\\/+$/,\"\"):pathname)===\"/contact\";}catch{previousWasMenuContact=false;}}const restoreToMenuTrigger=sharedRestoreToMenuTrigger||restoreToMenuTriggerRef.current||previousWasMenuContact;restoreFocusRef.current=null;restoreToMenuTriggerRef.current=false;restoreFocusTimerRef.current=window.setTimeout(()=>{restoreFocusTimerRef.current=null;if(!restoreToMenuTrigger&&canRestoreFocus(previousFocus)){previousFocus.focus({preventScroll:true});sharedRestoreFocusElement=null;sharedRestoreToMenuTrigger=false;return;}const menuTrigger=Array.from(document.querySelectorAll('[aria-label=\"Open navigation\"]')).find(canRestoreFocus);menuTrigger?.focus({preventScroll:true});sharedRestoreFocusElement=null;sharedRestoreToMenuTrigger=false;},restoreToMenuTrigger?MENU_CONTACT_DELAY_MS:0);};},[isOpen,closeModal]);React.useEffect(()=>{if(!isOpen||typeof document===\"undefined\")return;const taggedNavbar=document.querySelector('[data-max-smart-navbar=\"true\"]');if(!taggedNavbar)return;let stackHost=taggedNavbar;let node=taggedNavbar;while(node&&node!==document.body){const position=window.getComputedStyle(node).position;if(position===\"fixed\"||position===\"sticky\"){stackHost=node;break;}node=node.parentElement;}const previousZIndex=stackHost.style.zIndex;const previousPointerEvents=stackHost.style.pointerEvents;stackHost.style.zIndex=\"2147483643\";stackHost.style.pointerEvents=\"none\";return()=>{if(stackHost.isConnected){stackHost.style.zIndex=previousZIndex;stackHost.style.pointerEvents=previousPointerEvents;}};},[isOpen]);const emailHref=buildMailto(emailAddress,emailSubject);const hasEmail=Boolean(emailAddress.trim());const handleCardPointerMove=event=>{if(!showCuriousGuy||event.pointerType===\"touch\")return;const rect=event.currentTarget.getBoundingClientRect();const px=(event.clientX-rect.left)/rect.width;const py=(event.clientY-rect.top)/rect.height;const x=Math.max(-4,Math.min(4,(px-.72)*10));const y=Math.max(-3,Math.min(3,(py-.16)*7));const rotate=-3+Math.max(-2,Math.min(2,(px-.5)*4));scheduleGuyLook({x,y,rotate});};const resetGuyLook=()=>{scheduleGuyLook(DEFAULT_GUY_LOOK);};const copyEmail=async()=>{if(!hasEmail)return;clearCopyResetTimer();try{await navigator.clipboard.writeText(emailAddress.trim());setCopied(true);copyResetTimerRef.current=window.setTimeout(()=>{setCopied(false);copyResetTimerRef.current=null;},1700);}catch{setCopied(false);}};const getNativeFieldKind=target=>{if(!(target instanceof HTMLInputElement)&&!(target instanceof HTMLTextAreaElement)){return null;}const descriptor=[target.getAttribute(\"name\"),target.getAttribute(\"aria-label\"),target.getAttribute(\"placeholder\"),target.getAttribute(\"autocomplete\")].filter(Boolean).join(\" \").toLowerCase();if(target instanceof HTMLTextAreaElement||descriptor.includes(\"message\")){return\"message\";}if(target instanceof HTMLInputElement&&target.type===\"email\"||descriptor.includes(\"email\")){return\"email\";}if(descriptor.includes(\"name\")){return\"name\";}return null;};// The form's onSubmit fires after native input validation, but BEFORE\n// delivery is known. Capture sender information only; never mark success.\nconst handleNativeFormSubmitCapture=event=>{const form=event.target;const slot=nativeFormSlotRef.current;if(!(form instanceof HTMLFormElement)||!slot||!slot.contains(form))return;let name=visitorNameRef.current.trim();let email=\"\";form.querySelectorAll(\"input, textarea\").forEach(field=>{const kind=getNativeFieldKind(field);const value=field.value.trim();if(kind===\"name\")name=value;if(kind===\"email\")email=value;});const firstName=name.split(/\\s+/)[0]||\"\";pendingSubmissionRef.current={firstName:firstName?firstName.charAt(0).toLocaleUpperCase()+firstName.slice(1):\"\",email};stopWatchingNativeSuccess();if(typeof MutationObserver===\"undefined\")return;// Existing custom native submit button shows MESSAGE SENT *only*\n// after Framer's form success state. Read its active visible variant;\n// hidden variant copies and ordinary click/submit events do not count.\nconst isVisibleInSlot=element=>{let node=element;while(node&&slot.contains(node)){const style=window.getComputedStyle(node);if(style.display===\"none\"||style.visibility===\"hidden\"||style.visibility===\"collapse\"||Number(style.opacity)<=.01||node.getAttribute(\"aria-hidden\")===\"true\")return false;if(node===slot)break;node=node.parentElement;}return element.getClientRects().length>0;};const checkForNativeSuccess=()=>{if(!pendingSubmissionRef.current||!slot.isConnected)return;const candidates=slot.querySelectorAll(\"button, [role='button'], span, p, div\");for(const node of candidates){// Match the exact native success label, not any parent text.\nif(node.textContent?.trim().toUpperCase()!==NATIVE_SUCCESS_LABEL)continue;if(!isVisibleInSlot(node))continue;finishSuccessfulSubmission();return;}};const observer=new MutationObserver(checkForNativeSuccess);observer.observe(slot,{subtree:true,childList:true,characterData:true,attributes:true,attributeFilter:[\"style\",\"class\",\"hidden\",\"aria-hidden\"]});successObserverRef.current=observer;successWatchTimerRef.current=window.setTimeout(()=>{// Native Framer handles failed/slow submissions. Never show a\n// receipt just because a timer elapsed.\npendingSubmissionRef.current=null;stopWatchingNativeSuccess();},SUCCESS_WATCH_MS);checkForNativeSuccess();};const handleNativeFormInputCapture=event=>{const kind=getNativeFieldKind(event.target);if(kind!==\"name\")return;const field=event.target;visitorNameRef.current=field.value;};const handleNativeFormFocusCapture=event=>{const kind=getNativeFieldKind(event.target);if(kind===\"name\"){scheduleGuyLook({x:-3,y:2,rotate:-5});return;}if(kind===\"email\"){scheduleGuyLook({x:-2,y:3,rotate:-4});return;}if(kind===\"message\"){scheduleGuyLook({x:-3,y:4,rotate:-4});}};const handleNativeFormBlurCapture=event=>{const kind=getNativeFieldKind(event.target);if(!kind)return;resetGuyLook();const field=event.target;const value=field.value.trim();if(!value)return;if(kind===\"name\"){showCuriousMessage(formatCuriousCopy(curiousNameReply,value),1900);return;}if(kind===\"email\"){runEyeRoll();showCuriousMessage(curiousEmailReply,2600);return;}if(kind===\"message\"){showCuriousMessage(curiousMessageReply,2200);}};const awayReturnDate=outOfOffice?formatAwayReturnDate(returnDate):null;const awayMessage=outOfOfficeMessage?.trim()||\"I'm currently away, so replies may take a little longer than usual.\";// The same compact notice is used in either modal state.\nconst awayNotice=outOfOffice?/*#__PURE__*/_jsxs(\"div\",{className:\"mch-v36-away-note\",role:\"note\",\"aria-label\":\"Out of office\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"mch-v36-away-dot\",\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsxs(\"div\",{className:\"mch-v36-away-content\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"mch-v36-away-heading\",children:[/*#__PURE__*/_jsx(\"span\",{children:\"OUT OF OFFICE\"}),awayReturnDate?/*#__PURE__*/_jsxs(\"span\",{className:\"mch-v36-away-return\",children:[\"BACK \",awayReturnDate]}):null]}),/*#__PURE__*/_jsx(\"p\",{className:\"mch-v36-away-message\",children:awayMessage})]})]}):null;const utilityLinks=[{key:\"resume\",show:showResume,label:resumeLabel,link:resumeLink,newTab:resumeNewTab,cursorColor:\"#69AEFF\"},{key:\"linkedin\",show:showLinkedIn,label:linkedinLabel,link:linkedinLink,newTab:linkedinNewTab,cursorColor:\"#A8E84A\"}].filter(item=>item.show);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .mch-v2-test-trigger {\n                    min-height: 52px;\n                    padding: 0 22px;\n                    border: 0;\n                    border-radius: 999px;\n                    background: #171717;\n                    color: #FFFFFF;\n                    font-family: ${sans};\n                    font-size: 11px;\n                    line-height: 1;\n                    font-weight: 700;\n                    letter-spacing: .06em;\n                    text-transform: uppercase;\n                    cursor: pointer;\n                    display: inline-flex;\n                    align-items: center;\n                    justify-content: center;\n                    gap: 24px;\n                    box-sizing: border-box;\n                }\n\n                .mch-v2-overlay {\n                    position: fixed;\n                    inset: 0;\n                    z-index: 2147483644;\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                    padding: 24px;\n                    box-sizing: border-box;\n                    animation: mchV2OverlayIn 180ms ease-out both;\n                }\n\n                .mch-v2-card {\n                    position: relative;\n                    width: min(var(--mch-card-width), calc(100vw - 48px));\n                    max-height: calc(100vh - 48px);\n                    overflow: auto;\n                    box-sizing: border-box;\n                    padding: 34px;\n                    border: 1px solid rgba(221, 218, 212, .92);\n                    border-radius: 30px;\n                    background: rgba(252, 251, 248, .975);\n                    box-shadow:\n                        0 32px 90px rgba(28, 36, 48, .18),\n                        0 2px 12px rgba(28, 36, 48, .04);\n                    color: #171717;\n                    animation: mchV2CardIn 240ms cubic-bezier(.22, 1, .36, 1) both;\n                }\n\n                .mch-v2-close {\n                    position: absolute;\n                    z-index: 10; /* Above the animated success panel, so X remains clickable. */\n                    top: 18px;\n                    right: 18px;\n                    width: 38px;\n                    height: 38px;\n                    padding: 0;\n                    border: 0;\n                    border-radius: 999px;\n                    background: rgba(23, 23, 23, .065);\n                    color: #171717;\n                    font-family: ${sans};\n                    font-size: 21px;\n                    line-height: 1;\n                    cursor: pointer;\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                    transition:\n                        transform 180ms cubic-bezier(.22, 1, .36, 1),\n                        background 180ms ease;\n                }\n\n                .mch-v2-close:hover {\n                    transform: rotate(6deg) scale(1.04);\n                    background: rgba(23, 23, 23, .10);\n                }\n\n                /* V3.6: only displayed when Out of Office is enabled. */\n                .mch-v36-away-note {\n                    display: flex;\n                    align-items: flex-start;\n                    gap: 12px;\n                    margin-top: 22px;\n                    padding: 14px 16px;\n                    border: 1px solid rgba(255, 117, 107, .24);\n                    border-radius: 16px;\n                    background: rgba(255, 117, 107, .065);\n                    box-sizing: border-box;\n                }\n\n                .mch-v36-away-dot {\n                    width: 8px;\n                    height: 8px;\n                    margin-top: 3px;\n                    border-radius: 50%;\n                    background: #FF756B;\n                    flex: 0 0 8px;\n                }\n\n                .mch-v36-away-content {\n                    min-width: 0;\n                    flex: 1;\n                }\n\n                .mch-v36-away-heading {\n                    display: flex;\n                    align-items: baseline;\n                    gap: 8px 12px;\n                    flex-wrap: wrap;\n                    font-family: ${sans};\n                    font-size: 10px;\n                    font-weight: 700;\n                    letter-spacing: .09em;\n                    line-height: 1.35;\n                    color: #171717;\n                }\n\n                .mch-v36-away-return {\n                    color: #68635F;\n                    font-weight: 600;\n                    letter-spacing: .035em;\n                }\n\n                .mch-v36-away-message {\n                    margin: 6px 0 0;\n                    font-family: ${sans};\n                    font-size: 13px;\n                    font-weight: 400;\n                    line-height: 1.5;\n                    color: #5D5B57;\n                    overflow-wrap: anywhere;\n                }\n\n                .mch-v35-success .mch-v36-away-note {\n                    width: 100%;\n                    margin: 18px 0 0;\n                    text-align: left;\n                }\n\n                .mch-v2-email-card {\n                    margin-top: 26px;\n                    padding: 17px;\n                    border: 1px solid #DDDAD4;\n                    border-radius: 22px;\n                    background: rgba(255,255,255,.52);\n                }\n\n                .mch-v2-email-top {\n                    display: flex;\n                    align-items: center;\n                    justify-content: space-between;\n                    gap: 18px;\n                }\n\n                .mch-v2-email-address {\n                    margin-top: 7px;\n                    color: #171717;\n                    text-decoration: none;\n                    font-family: ${sans};\n                    font-size: 18px;\n                    line-height: 1.3em;\n                    font-weight: 500;\n                    letter-spacing: -.015em;\n                    overflow-wrap: anywhere;\n                    transition: opacity 160ms ease;\n                }\n\n                .mch-v2-email-address[data-disabled=\"false\"]:hover {\n                    opacity: .62;\n                }\n\n                .mch-v2-copy {\n                    min-height: 36px;\n                    padding: 0 13px;\n                    border: 1px solid #DDDAD4;\n                    border-radius: 999px;\n                    background: rgba(255,255,255,.64);\n                    color: #171717;\n                    font-family: ${sans};\n                    font-size: 10px;\n                    line-height: 1;\n                    font-weight: 700;\n                    letter-spacing: .08em;\n                    text-transform: uppercase;\n                    cursor: pointer;\n                    white-space: nowrap;\n                    transition:\n                        background 180ms ease,\n                        color 180ms ease,\n                        border-color 180ms ease;\n                }\n\n                .mch-v2-copy:hover {\n                    background: #171717;\n                    border-color: #171717;\n                    color: #FFFFFF;\n                    opacity: 1;\n                }\n\n                .mch-v2-copy[data-disabled=\"true\"] {\n                    opacity: .52;\n                }\n\n                .mch-v2-copy[data-disabled=\"true\"]:hover {\n                    background: #171717;\n                    border-color: #171717;\n                    color: #FFFFFF;\n                    opacity: 1;\n                }\n\n                .mch-v2-submit {\n                    margin-top: 15px;\n                    min-height: 48px;\n                    padding: 0 18px;\n                    border: 0;\n                    border-radius: 999px;\n                    background: #171717;\n                    color: #FFFFFF;\n                    font-family: ${sans};\n                    font-size: 11px;\n                    line-height: 1;\n                    font-weight: 700;\n                    letter-spacing: .06em;\n                    text-transform: uppercase;\n                    text-decoration: none;\n                    display: inline-flex;\n                    align-items: center;\n                    justify-content: center;\n                    gap: 22px;\n                    box-sizing: border-box;\n                    cursor: pointer;\n                }\n\n                .mch-v2-submit:disabled {\n                    opacity: .36;\n                    pointer-events: none;\n                }\n\n                .mch-v2-arrow {\n                    display: inline-block;\n                    font-size: 17px;\n                    line-height: 1;\n                    font-weight: 400;\n                    transform-origin: center;\n                    transition: transform 180ms cubic-bezier(.22,1,.36,1);\n                }\n\n                .mch-v2-submit:hover .mch-v2-arrow,\n                .mch-v2-utility:hover .mch-v2-arrow,\n                .mch-v2-test-trigger:hover .mch-v2-arrow {\n                    transform: translate(2px, -2px) rotate(45deg);\n                }\n\n                .mch-v2-section-label {\n                    font-family: ${sans};\n                    font-size: 10px;\n                    line-height: 1;\n                    font-weight: 700;\n                    letter-spacing: .10em;\n                    text-transform: uppercase;\n                    color: #67645F;\n                }\n\n                .mch-v2-form {\n                    margin-top: 28px;\n                    padding-top: 28px;\n                    border-top: 1px solid #DDDAD4;\n                }\n\n                .mch-v3-native-form-slot {\n                    width: 100%;\n                    height: var(--mch-native-form-height);\n                    min-height: var(--mch-native-form-height);\n                    margin-top: 16px;\n                    overflow: visible;\n                }\n\n                .mch-v3-native-form-slot > * {\n                    width: 100% !important;\n                    height: 100% !important;\n                    max-width: 100% !important;\n                    max-height: 100% !important;\n                    min-width: 0 !important;\n                    min-height: 0 !important;\n                    display: block !important;\n                }\n\n                .mch-v3-native-form-empty {\n                    margin-top: 16px;\n                    padding: 14px 16px;\n                    border: 1px dashed #CFCBC3;\n                    border-radius: 16px;\n                    background: rgba(255,255,255,.48);\n                    color: #6B6862;\n                    font-family: ${sans};\n                    font-size: 12px;\n                    line-height: 1.45em;\n                }\n\n                .mch-v2-field {\n                    display: block;\n                    margin-top: 16px;\n                }\n\n                .mch-v2-field-label {\n                    display: block;\n                    margin-bottom: 8px;\n                    font-family: ${sans};\n                    font-size: 11px;\n                    line-height: 1;\n                    font-weight: 700;\n                    letter-spacing: .06em;\n                    text-transform: uppercase;\n                    color: #575550;\n                }\n\n                .mch-v2-input,\n                .mch-v2-textarea {\n                    width: 100%;\n                    border: 1px solid #DDDAD4;\n                    border-radius: 16px;\n                    background: rgba(255,255,255,.72);\n                    color: #171717;\n                    font-family: ${sans};\n                    font-size: 15px;\n                    line-height: 1.45em;\n                    font-weight: 400;\n                    outline: none;\n                    box-sizing: border-box;\n                    transition:\n                        border-color 160ms ease,\n                        box-shadow 160ms ease,\n                        background 160ms ease;\n                }\n\n                .mch-v2-input {\n                    height: 48px;\n                    padding: 0 14px;\n                }\n\n                .mch-v2-textarea {\n                    min-height: 116px;\n                    padding: 13px 14px;\n                    resize: vertical;\n                }\n\n                .mch-v2-input:focus,\n                .mch-v2-textarea:focus {\n                    border-color: rgba(23,23,23,.48);\n                    box-shadow: 0 0 0 3px rgba(23,23,23,.05);\n                    background: #FFFFFF;\n                }\n\n                .mch-v2-feedback {\n                    margin-top: 18px;\n                    padding: 16px;\n                    border-radius: 16px;\n                    background: rgba(255,255,255,.66);\n                    border: 1px solid #DDDAD4;\n                }\n\n                .mch-v2-utilities {\n                    margin-top: 26px;\n                    padding-top: 22px;\n                    border-top: 1px solid #DDDAD4;\n                    display: flex;\n                    flex-wrap: wrap;\n                    align-items: center;\n                    gap: 12px 22px;\n                }\n\n                .mch-v2-utility {\n                    color: #171717;\n                    text-decoration: none;\n                    display: inline-flex;\n                    align-items: center;\n                    gap: 9px;\n                    font-family: ${sans};\n                    font-size: 11px;\n                    line-height: 1;\n                    font-weight: 700;\n                    letter-spacing: .06em;\n                    text-transform: uppercase;\n                    transition:\n                        transform 180ms cubic-bezier(.22,1,.36,1),\n                        opacity 180ms ease;\n                }\n\n                .mch-v2-utility:hover {\n                    transform: translateY(-1px);\n                }\n\n                .mch-v2-utility[data-disabled=\"true\"] {\n                    opacity: .42;\n                    cursor: default;\n                }\n\n                .mch-v2-guy {\n                    appearance: none;\n                    -webkit-appearance: none;\n                    border: 0;\n                    padding: 0;\n                    background: transparent;\n                    position: absolute;\n                    right: 78px;\n                    top: 30px;\n                    width: var(--mch-guy-size);\n                    height: var(--mch-guy-size);\n                    transform:\n                        translate(\n                            calc(var(--mch-guy-x) + var(--mch-look-x, 0px)),\n                            calc(var(--mch-guy-y) + var(--mch-look-y, 0px))\n                        )\n                        rotate(var(--mch-guy-rotate, -3deg));\n                    pointer-events: auto;\n                    cursor: pointer;\n                    transition: transform 160ms cubic-bezier(.22,1,.36,1);\n                }\n\n                .mch-v2-guy:hover {\n                    transform:\n                        translate(\n                            calc(var(--mch-guy-x) + var(--mch-look-x, 0px)),\n                            calc(var(--mch-guy-y) + var(--mch-look-y, 0px) - 2px)\n                        )\n                        rotate(var(--mch-guy-rotate, -3deg))\n                        scale(1.025);\n                }\n\n                .mch-v2-guy-bubble {\n                    position: absolute;\n                    right: 58px;\n                    top: 100px;\n                    max-width: 210px;\n                    padding: 10px 12px;\n                    border: 1px solid rgba(221,218,212,.92);\n                    border-radius: 14px;\n                    background: rgba(255,255,255,.96);\n                    box-shadow: 0 12px 36px rgba(33,42,58,.10);\n                    color: #25303C;\n                    font-family: ${sans};\n                    font-size: 12px;\n                    line-height: 1.35em;\n                    font-weight: 500;\n                    letter-spacing: -.01em;\n                    pointer-events: none;\n                    z-index: 3;\n                    animation: mchV2GuyBubbleIn 180ms cubic-bezier(.22,1,.36,1) both;\n                }\n\n                .mch-v2-guy-bubble::after {\n                    content: \"\";\n                    position: absolute;\n                    right: 22px;\n                    top: -6px;\n                    width: 12px;\n                    height: 12px;\n                    border-left: 1px solid rgba(221,218,212,.92);\n                    border-top: 1px solid rgba(221,218,212,.92);\n                    background: rgba(255,255,255,.96);\n                    transform: rotate(45deg);\n                }\n\n                .mch-v2-guy-body {\n                    position: absolute;\n                    left: 11%;\n                    top: 22%;\n                    width: 70%;\n                    height: 68%;\n                    border-radius: 37% 31% 34% 40% / 34% 36% 38% 42%;\n                    background:\n                        radial-gradient(\n                            circle at 42% 45%,\n                            #DFFF3F 0%,\n                            #D6FF4D 35%,\n                            #A8EFC4 70%,\n                            #75D7E8 100%\n                        );\n                    box-shadow: inset -7px -4px 14px rgba(62,145,203,.12);\n                }\n\n                .mch-v2-guy-orb {\n                    position: absolute;\n                    right: 0;\n                    top: 0;\n                    width: 35%;\n                    height: 35%;\n                    border-radius: 50%;\n                    background:\n                        radial-gradient(\n                            circle at 33% 27%,\n                            #FFB8AD 0%,\n                            #FF897C 48%,\n                            #FF6F63 100%\n                        );\n                }\n\n                .mch-v2-guy-eye {\n                    position: absolute;\n                    top: calc(47% + var(--mch-eye-y, 0px));\n                    width: 6%;\n                    aspect-ratio: 1;\n                    border-radius: 50%;\n                    background: #111111;\n                    transform:\n                        translateX(var(--mch-eye-x, 0px));\n                    transform-origin: 50% 50%;\n                    transition:\n                        top 120ms ease,\n                        transform 120ms ease;\n                }\n\n                .mch-v2-guy-eye.one { left: 34%; }\n\n                .mch-v2-guy-eye.two {\n                    left: 45%;\n                }\n\n                .mch-v2-guy[data-expression=\"eyeRoll\"] .mch-v2-guy-eye {\n                    animation: mchV2EyeRoll 900ms cubic-bezier(.22,1,.36,1) both;\n                }\n\n                .mch-v2-guy-mouth {\n                    position: absolute;\n                    left: 0;\n                    top: 61%;\n                    width: 43%;\n                    height: 15%;\n                    border-radius: 999px;\n                    background:\n                        linear-gradient(135deg, #8CB5FF, #A39EF0 58%, #C4A8F0);\n                    transform: rotate(5deg);\n                }\n\n                /* V3.5: Success replaces the inner popup only. Form styles unchanged. */\n                .mch-v35-success-card {\n                    min-height: 495px;\n                }\n\n                .mch-v35-success {\n                    display: flex;\n                    min-height: 425px;\n                    padding: 30px 12px 6px;\n                    box-sizing: border-box;\n                    flex-direction: column;\n                    align-items: center;\n                    justify-content: center;\n                    text-align: center;\n                    animation: mchV35SuccessIn 360ms cubic-bezier(.22,1,.36,1) both;\n                }\n\n                .mch-v35-success-guy {\n                    position: relative;\n                    display: block;\n                    width: 128px;\n                    height: 128px;\n                    flex: 0 0 128px;\n                    margin: 0 auto 26px;\n                    --mch-eye-x: 0px;\n                    --mch-eye-y: 0px;\n                    /* Gentle floating resumes after the one-time celebration. */\n                    animation: mchV351GuyFloat 4600ms ease-in-out 1150ms infinite;\n                }\n\n                /* Interactive only in success state. The normal form mascot is unchanged. */\n                .mch-v352-success-guy-trigger {\n                    appearance: none;\n                    -webkit-appearance: none;\n                    padding: 0;\n                    border: 0;\n                    background: transparent;\n                    cursor: pointer;\n                    -webkit-tap-highlight-color: transparent;\n                }\n\n                .mch-v352-success-guy-trigger:focus-visible {\n                    outline: 2px solid #171717;\n                    outline-offset: 6px;\n                    border-radius: 18px;\n                }\n\n                .mch-v351-guy-hop {\n                    position: relative;\n                    width: 100%;\n                    height: 100%;\n                    transform-origin: 50% 72%;\n                    perspective: 640px;\n                    animation: mchV351HappyHop 1150ms cubic-bezier(.22,1,.36,1) both;\n                }\n\n                .mch-v352-guy-turner {\n                    position: relative;\n                    display: block;\n                    width: 100%;\n                    height: 100%;\n                    transform-origin: center center;\n                    transform-style: preserve-3d;\n                    backface-visibility: visible;\n                }\n\n                /* A real edge-on Y rotation. It only runs on mouse hover / keyboard focus. */\n                @media (hover: hover) and (pointer: fine) {\n                    .mch-v352-success-guy-trigger:hover .mch-v352-guy-turner,\n                    .mch-v352-success-guy-trigger:focus-visible .mch-v352-guy-turner {\n                        animation: mchV352GuyHoverTurn 950ms cubic-bezier(.45,.04,.35,1) both;\n                    }\n                }\n\n                /* Tapping Curious Guy provides the same little interaction on touch screens. */\n                .mch-v352-success-guy-trigger[data-touch-turning=\"true\"] .mch-v352-guy-turner {\n                    animation: mchV352GuyHoverTurn 950ms cubic-bezier(.45,.04,.35,1) both;\n                }\n\n                .mch-v35-success-guy .mch-v2-guy-orb {\n                    animation: mchV351OrbBob 1000ms cubic-bezier(.22,1,.36,1) 200ms both;\n                }\n\n                .mch-v35-success-guy .mch-v2-guy-eye {\n                    animation: mchV351Blink 330ms ease-in-out 660ms both;\n                }\n\n                .mch-v35-success-kicker {\n                    display: flex;\n                    align-items: center;\n                    justify-content: center;\n                    gap: 8px;\n                    font-family: ${sans};\n                    font-size: 10px;\n                    font-weight: 700;\n                    letter-spacing: .12em;\n                    color: #575550;\n                }\n\n                .mch-v35-success-check {\n                    width: 21px;\n                    height: 21px;\n                    border-radius: 50%;\n                    display: inline-flex;\n                    justify-content: center;\n                    align-items: center;\n                    background: #DDF76F;\n                    color: #171717;\n                    font-family: ${sans};\n                    font-weight: 700;\n                    font-size: 13px;\n                }\n\n                .mch-v35-success-title {\n                    font-family: ${serif};\n                    font-size: clamp(36px, 6vw, 49px);\n                    line-height: 1.05;\n                    letter-spacing: -.035em;\n                    font-weight: 400;\n                    color: #171717;\n                    margin: 20px 0 10px;\n                }\n\n                .mch-v35-success-message {\n                    font-family: ${sans};\n                    font-size: 15px;\n                    line-height: 1.55;\n                    color: #5D5B57;\n                    margin: 0;\n                    max-width: 330px;\n                }\n\n                .mch-v35-success-meta {\n                    width: 100%;\n                    max-width: 385px;\n                    border-top: 1px solid #DDDAD4;\n                    margin-top: 27px;\n                    padding-top: 18px;\n                    font-family: ${sans};\n                    font-size: 11px;\n                    line-height: 1.6;\n                    color: #67645F;\n                    overflow-wrap: anywhere;\n                }\n\n                .mch-v35-success-done {\n                    display: inline-flex;\n                    align-items: center;\n                    justify-content: center;\n                    width: 100%;\n                    max-width: 385px;\n                    min-height: 52px;\n                    margin-top: 22px;\n                    padding: 0 22px;\n                    border: none;\n                    border-radius: 999px;\n                    background: #171717;\n                    color: #FFFFFF;\n                    font-family: ${sans};\n                    font-size: 11px;\n                    line-height: 1;\n                    font-weight: 700;\n                    letter-spacing: .06em;\n                    text-transform: uppercase;\n                    cursor: pointer;\n                    /* Match the native SEND MESSAGE button: no link movement. */\n                    transition: background 180ms ease;\n                }\n\n                .mch-v35-success-done:hover { background: #FF756B; color: #171717; }\n                .mch-v35-success-done:focus-visible {\n                    outline: 2px solid #171717;\n                    outline-offset: 3px;\n                }\n\n                @keyframes mchV35SuccessIn {\n                    from { opacity: 0; transform: translateY(9px); }\n                    to { opacity: 1; transform: translateY(0); }\n                }\n                @keyframes mchV351HappyHop {\n                    0% { opacity: 0; transform: translateY(10px) scale(.94) rotate(-4deg); }\n                    14% { opacity: 1; transform: translateY(0) scale(1) rotate(0deg); }\n                    37% { transform: translateY(-16px) scale(1.045) rotate(4deg); }\n                    57% { transform: translateY(3px) scale(.985) rotate(-2deg); }\n                    77% { transform: translateY(-5px) scale(1.012) rotate(1deg); }\n                    100% { opacity: 1; transform: translateY(0) scale(1) rotate(0deg); }\n                }\n                @keyframes mchV351GuyFloat {\n                    0%, 100% { transform: translateY(0); }\n                    50% { transform: translateY(-3px); }\n                }\n                @keyframes mchV352GuyHoverTurn {\n                    0% { transform: rotateY(0deg); }\n                    25% { transform: rotateY(90deg); }\n                    50% { transform: rotateY(180deg); }\n                    75% { transform: rotateY(270deg); }\n                    100% { transform: rotateY(360deg); }\n                }\n                @keyframes mchV351OrbBob {\n                    0%, 100% { transform: translateY(0); }\n                    36% { transform: translateY(-9px); }\n                    65% { transform: translateY(3px); }\n                }\n                @keyframes mchV351Blink {\n                    0%, 36%, 72%, 100% { transform: translateX(var(--mch-eye-x, 0px)) scaleY(1); }\n                    50% { transform: translateX(var(--mch-eye-x, 0px)) scaleY(.16); }\n                }\n\n                @keyframes mchV2EyeRoll {\n                    0%, 100% {\n                        transform: translate(\n                            var(--mch-eye-x, 0px),\n                            0\n                        );\n                    }\n                    30% {\n                        transform: translate(\n                            calc(var(--mch-eye-x, 0px) + 2px),\n                            -3px\n                        );\n                    }\n                    58% {\n                        transform: translate(\n                            calc(var(--mch-eye-x, 0px) - 2px),\n                            -3px\n                        );\n                    }\n                }\n\n                @keyframes mchV2GuyBubbleIn {\n                    from {\n                        opacity: 0;\n                        transform: translateY(-4px) scale(.97);\n                    }\n                    to {\n                        opacity: 1;\n                        transform: translateY(0) scale(1);\n                    }\n                }\n\n                @keyframes mchV2OverlayIn {\n                    from { opacity: 0; }\n                    to { opacity: 1; }\n                }\n\n                @keyframes mchV2CardIn {\n                    from {\n                        opacity: 0;\n                        transform: translateY(14px) scale(.975);\n                    }\n                    to {\n                        opacity: 1;\n                        transform: translateY(0) scale(1);\n                    }\n                }\n\n                @media (max-width: 600px) {\n                    .mch-v2-overlay {\n                        padding: 16px;\n                        align-items: flex-end;\n                    }\n\n                    .mch-v2-card {\n                        width: 100%;\n                        max-height: calc(100vh - 32px);\n                        padding: 28px 20px 20px;\n                        border-radius: 26px;\n                    }\n\n                    .mch-v2-guy {\n                        right: 66px;\n                        top: 28px;\n                        transform:\n                            translate(\n                                calc(var(--mch-guy-x) + var(--mch-look-x, 0px)),\n                                calc(var(--mch-guy-y) + var(--mch-look-y, 0px))\n                            )\n                            scale(.86)\n                            rotate(var(--mch-guy-rotate, -3deg));\n                        transform-origin: top right;\n                    }\n\n                    .mch-v2-guy-bubble {\n                        right: 48px;\n                        top: 96px;\n                        max-width: 178px;\n                        font-size: 11.5px;\n                    }\n\n                    .mch-v2-email-address {\n                        font-size: 16px;\n                    }\n\n                    .mch-v2-utilities {\n                        gap: 16px;\n                    }\n                }\n\n                @media (hover: none) {\n                    .mch-v35-success-done:hover { background: #171717; color: #FFFFFF; }\n                    .mch-v2-copy:hover {\n                        background: rgba(255,255,255,.64);\n                        border-color: #DDDAD4;\n                        color: #171717;\n                    }\n\n                    .mch-v2-submit:hover .mch-v2-arrow,\n                    .mch-v2-utility:hover .mch-v2-arrow,\n                    .mch-v2-test-trigger:hover .mch-v2-arrow {\n                        transform: none;\n                    }\n                }\n\n                @media (prefers-reduced-motion: reduce) {\n                    .mch-v2-overlay,\n                    .mch-v2-card {\n                        animation: none !important;\n                    }\n\n                    .mch-v2-close,\n                    .mch-v2-copy,\n                    .mch-v2-arrow,\n                    .mch-v2-input,\n                    .mch-v2-textarea,\n                    .mch-v2-guy,\n                    .mch-v35-success-done,\n                    .mch-v352-success-guy-trigger {\n                        transition: none !important;\n                    }\n\n                    .mch-v2-guy-bubble,\n                    .mch-v35-success,\n                    .mch-v35-success-guy,\n                    .mch-v351-guy-hop,\n                    .mch-v352-guy-turner,\n                    .mch-v35-success-guy .mch-v2-guy-orb,\n                    .mch-v35-success-guy .mch-v2-guy-eye,\n                    .mch-v2-guy[data-expression=\"eyeRoll\"] .mch-v2-guy-eye {\n                        animation: none !important;\n                    }\n\n                }\n            `}),!isOpen&&showTestTrigger?/*#__PURE__*/_jsxs(\"button\",{className:\"mch-v2-test-trigger\",type:\"button\",onClick:()=>{setEventOpen(true);},\"data-max-cursor-target\":\"true\",\"data-max-cursor-color\":cursorColor,children:[/*#__PURE__*/_jsx(\"span\",{children:\"OPEN CONTACT TEST\"}),/*#__PURE__*/_jsx(\"span\",{className:\"mch-v2-arrow\",\"aria-hidden\":\"true\",children:\"↗\"})]}):null,isOpen&&typeof document!==\"undefined\"?/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-overlay\",role:\"presentation\",style:{background:`rgba(15, 18, 22, ${overlayOpacity})`,backdropFilter:`blur(${overlayBlur}px)`,WebkitBackdropFilter:`blur(${overlayBlur}px)`},onMouseDown:event=>{if(event.target===event.currentTarget){closeModal();}},children:/*#__PURE__*/_jsxs(\"div\",{ref:guyCardRef,className:sentReceipt?\"mch-v2-card mch-v35-success-card\":\"mch-v2-card\",role:\"dialog\",\"aria-modal\":\"true\",\"aria-labelledby\":\"mch-v2-title\",tabIndex:-1,onPointerMove:sentReceipt?undefined:handleCardPointerMove,onPointerLeave:sentReceipt?undefined:resetGuyLook,style:{\"--mch-card-width\":`${cardWidth}px`,\"--mch-guy-size\":`${curiousGuySize}px`,\"--mch-guy-x\":`${curiousGuyX}px`,\"--mch-guy-y\":`${curiousGuyY}px`,\"--mch-look-x\":\"0px\",\"--mch-look-y\":\"0px\",\"--mch-eye-x\":\"0px\",\"--mch-eye-y\":\"0px\",\"--mch-guy-rotate\":\"-3deg\"},children:[/*#__PURE__*/_jsx(\"button\",{className:\"mch-v2-close\",type:\"button\",\"aria-label\":\"Close contact options\",onClick:closeModal,\"data-max-cursor-color-only\":\"#FBFAF7\",children:\"\\xd7\"}),sentReceipt?/*#__PURE__*/_jsxs(\"div\",{className:\"mch-v35-success\",role:\"status\",\"aria-live\":\"polite\",children:[/*#__PURE__*/_jsx(\"button\",{className:\"mch-v35-success-guy mch-v352-success-guy-trigger\",type:\"button\",\"aria-label\":\"Spin Curious Guy\",onClick:turnSuccessGuyOnTap,\"data-touch-turning\":successGuyTouchTurnCount>0?\"true\":\"false\",\"data-max-cursor-target\":\"true\",\"data-max-cursor-color\":\"#A8E84A\",children:/*#__PURE__*/_jsx(\"span\",{className:\"mch-v351-guy-hop\",children:/*#__PURE__*/_jsxs(\"span\",{className:\"mch-v352-guy-turner\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"mch-v2-guy-body\"}),/*#__PURE__*/_jsx(\"span\",{className:\"mch-v2-guy-orb\"}),/*#__PURE__*/_jsx(\"span\",{className:\"mch-v2-guy-eye one\"}),/*#__PURE__*/_jsx(\"span\",{className:\"mch-v2-guy-eye two\"}),/*#__PURE__*/_jsx(\"span\",{className:\"mch-v2-guy-mouth\"})]},successGuyTouchTurnCount)})}),/*#__PURE__*/_jsxs(\"div\",{className:\"mch-v35-success-kicker\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"mch-v35-success-check\",children:\"✓\"}),/*#__PURE__*/_jsx(\"span\",{children:\"MESSAGE SENT\"})]}),/*#__PURE__*/_jsx(\"h2\",{className:\"mch-v35-success-title\",id:\"mch-v2-title\",children:sentReceipt.firstName?`Thanks, ${sentReceipt.firstName}.`:\"Thank you!\"}),/*#__PURE__*/_jsx(\"p\",{className:\"mch-v35-success-message\",children:\"Your message has been sent. Max will get back to you soon.\"}),awayNotice,/*#__PURE__*/_jsxs(\"div\",{className:\"mch-v35-success-meta\",children:[/*#__PURE__*/_jsxs(\"div\",{children:[\"Sent at\",\" \",sentReceipt.sentAt.toLocaleString(undefined,{month:\"short\",day:\"numeric\",hour:\"numeric\",minute:\"2-digit\"})]}),sentReceipt.email?/*#__PURE__*/_jsxs(\"div\",{children:[\"From \",sentReceipt.email]}):null]}),/*#__PURE__*/_jsx(\"button\",{className:\"mch-v35-success-done\",type:\"button\",onClick:closeModal,\"data-max-cursor-target\":\"true\",\"data-max-cursor-color\":cursorColor,children:/*#__PURE__*/_jsx(\"span\",{children:\"BACK TO PORTFOLIO\"})})]}):/*#__PURE__*/_jsxs(_Fragment,{children:[showCuriousGuy?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"button\",{className:\"mch-v2-guy\",type:\"button\",\"aria-label\":\"Curious Guy\",\"data-expression\":guyExpression,onClick:()=>showCuriousMessage(curiousEasterEgg,2200),\"data-max-cursor-target\":\"true\",\"data-max-cursor-color\":\"#A8E84A\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-guy-body\"}),/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-guy-orb\"}),/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-guy-eye one\"}),/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-guy-eye two\"}),/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-guy-mouth\"})]}),curiousMessage?/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-guy-bubble\",role:\"status\",\"aria-live\":\"polite\",children:curiousMessage}):null]}):null,/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:10,paddingRight:showCuriousGuy?126:54,fontFamily:sans,fontSize:11,lineHeight:1,fontWeight:700,letterSpacing:\".13em\",textTransform:\"uppercase\"},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{width:9,height:9,borderRadius:999,background:cursorColor,flex:\"0 0 auto\"}}),/*#__PURE__*/_jsx(\"span\",{children:eyebrow})]}),/*#__PURE__*/_jsx(\"h2\",{id:\"mch-v2-title\",style:{margin:\"22px 84px 0 0\",maxWidth:400,fontFamily:serif,fontSize:44,lineHeight:\".98em\",fontWeight:400,letterSpacing:\"-.035em\"},children:title}),/*#__PURE__*/_jsx(\"p\",{style:{margin:\"18px 0 0\",maxWidth:430,fontFamily:sans,fontSize:16,lineHeight:\"1.5em\",fontWeight:400,color:\"#5D5B57\"},children:body}),awayNotice,/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-email-card\",children:/*#__PURE__*/_jsxs(\"div\",{className:\"mch-v2-email-top\",children:[/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-section-label\",children:emailLabel}),/*#__PURE__*/_jsx(\"a\",{className:\"mch-v2-email-address\",href:hasEmail?emailHref:undefined,\"data-disabled\":String(!hasEmail),\"aria-disabled\":!hasEmail,\"data-max-cursor-target\":hasEmail?\"true\":undefined,\"data-max-cursor-color\":hasEmail?cursorColor:undefined,children:hasEmail?emailAddress:\"Add email in Framer\"})]}),/*#__PURE__*/_jsx(\"button\",{className:\"mch-v2-copy\",type:\"button\",onClick:()=>{if(!hasEmail)return;copyEmail();},\"aria-disabled\":!hasEmail,\"data-disabled\":String(!hasEmail),\"data-max-cursor-target\":\"true\",\"data-max-cursor-color\":copyCursorColor,children:copied?\"COPIED ✓\":copyLabel})]})}),showMessageForm?/*#__PURE__*/_jsxs(\"div\",{className:\"mch-v2-form\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-section-label\",children:\"MESSAGE MAX\"}),nativeForm?/*#__PURE__*/_jsx(\"div\",{className:\"mch-v3-native-form-slot\",ref:nativeFormSlotRef,onSubmitCapture:handleNativeFormSubmitCapture,style:{\"--mch-native-form-height\":`${nativeFormHeight}px`},onInputCapture:handleNativeFormInputCapture,onFocusCapture:handleNativeFormFocusCapture,onBlurCapture:handleNativeFormBlurCapture,children:nativeForm}):/*#__PURE__*/_jsx(\"div\",{className:\"mch-v3-native-form-empty\",children:\"Connect a native Framer Form in the “Native Form” property.\"})]}):null,utilityLinks.length>0?/*#__PURE__*/_jsx(\"div\",{className:\"mch-v2-utilities\",children:utilityLinks.map(item=>{const disabled=!isUsableLink(item.link);return /*#__PURE__*/_jsxs(\"a\",{className:\"mch-v2-utility\",href:disabled?undefined:item.link,target:!disabled&&item.newTab?\"_blank\":undefined,rel:!disabled&&item.newTab?\"noopener noreferrer\":undefined,\"data-disabled\":String(disabled),\"aria-disabled\":disabled,\"data-max-cursor-target\":\"true\",\"data-max-cursor-color\":item.cursorColor,onClick:event=>{if(disabled){event.preventDefault();}},children:[/*#__PURE__*/_jsx(\"span\",{children:item.label}),/*#__PURE__*/_jsx(\"span\",{className:\"mch-v2-arrow\",\"aria-hidden\":\"true\",children:\"↗\"})]},item.key);})}):null]})]})}),document.body):null]});}addPropertyControls(PortfolioContactHubV2,{previewOpen:{type:ControlType.Boolean,title:\"Preview Open\",defaultValue:false,enabledTitle:\"Open\",disabledTitle:\"Closed\"},showTestTrigger:{type:ControlType.Boolean,title:\"Test Trigger\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},eyebrow:{type:ControlType.String,title:\"Eyebrow\",defaultValue:\"CONTACT MAX\"},title:{type:ControlType.String,title:\"Title\",defaultValue:\"Let’s talk.\"},body:{type:ControlType.String,title:\"Body\",displayTextArea:true,defaultValue:\"Have a project, role, or idea in mind? Send me a message or reach me directly.\"},// V3.6: All three settings are editable on the Contact Hub instance.\n// No notice is rendered anywhere while this switch is off.\noutOfOffice:{type:ControlType.Boolean,title:\"Out of Office\",defaultValue:false,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Show a small away notice in the contact form and after a successful message.\"},returnDate:{type:ControlType.Date,title:\"Return Date\",displayTime:false,description:\"Optional. Pick the day you're back; leave empty if you don't know yet.\",hidden(props){return props.outOfOffice!==true;}},outOfOfficeMessage:{type:ControlType.String,title:\"Away Message\",displayTextArea:true,defaultValue:\"I'm currently away, so replies may take a little longer than usual.\",hidden(props){return props.outOfOffice!==true;}},emailAddress:{type:ControlType.String,title:\"Email Address\",defaultValue:\"\"},emailLabel:{type:ControlType.String,title:\"Email Label\",defaultValue:\"EMAIL DIRECTLY\"},emailSubject:{type:ControlType.String,title:\"Email Subject\",defaultValue:\"Portfolio inquiry\"},copyLabel:{type:ControlType.String,title:\"Copy Label\",defaultValue:\"COPY\"},showMessageForm:{type:ControlType.Boolean,title:\"Message Form\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},nativeForm:{type:ControlType.ComponentInstance,title:\"Native Form\",description:\"Connect a Framer COMPONENT that wraps your native Form. Root: fixed size. Native Form inside: Fill width + Fill height. Configure Send To → Email on the native Form.\",hidden(props){return props.showMessageForm===false;}},nativeFormHeight:{type:ControlType.Number,title:\"Form Height\",defaultValue:390,min:280,max:620,step:2,unit:\"px\",hidden(props){return props.showMessageForm===false;}},showResume:{type:ControlType.Boolean,title:\"Resume\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},resumeLabel:{type:ControlType.String,title:\"Resume Label\",defaultValue:\"VIEW RESUME\",hidden(props){return props.showResume===false;}},resumeLink:{type:ControlType.Link,title:\"Resume Link\",defaultValue:\"\",hidden(props){return props.showResume===false;}},resumeNewTab:{type:ControlType.Boolean,title:\"Resume New Tab\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",hidden(props){return props.showResume===false;}},showLinkedIn:{type:ControlType.Boolean,title:\"LinkedIn\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\"},linkedinLabel:{type:ControlType.String,title:\"LinkedIn Label\",defaultValue:\"LINKEDIN\",hidden(props){return props.showLinkedIn===false;}},linkedinLink:{type:ControlType.Link,title:\"LinkedIn Link\",defaultValue:\"\",hidden(props){return props.showLinkedIn===false;}},linkedinNewTab:{type:ControlType.Boolean,title:\"LinkedIn New Tab\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\",hidden(props){return props.showLinkedIn===false;}},showCuriousGuy:{type:ControlType.Boolean,title:\"Curious Guy\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},curiousGuySize:{type:ControlType.Number,title:\"Guy Size\",defaultValue:72,min:44,max:130,step:1,unit:\"px\",hidden(props){return props.showCuriousGuy===false;}},curiousGuyX:{type:ControlType.Number,title:\"Guy X\",defaultValue:0,min:-100,max:100,step:1,unit:\"px\",hidden(props){return props.showCuriousGuy===false;}},curiousGuyY:{type:ControlType.Number,title:\"Guy Y\",defaultValue:0,min:-100,max:100,step:1,unit:\"px\",hidden(props){return props.showCuriousGuy===false;}},curiousNameReply:{type:ControlType.String,title:\"Guy Name Reply\",defaultValue:\"{name}. Got it.\",hidden(props){return props.showCuriousGuy===false;}},curiousEmailReply:{type:ControlType.String,title:\"Guy Email Reply\",displayTextArea:true,defaultValue:\"Are you sure you spelled that right? Interesting email.\",hidden(props){return props.showCuriousGuy===false;}},curiousMessageReply:{type:ControlType.String,title:\"Guy Message Reply\",defaultValue:\"Don’t forget to spell check.\",hidden(props){return props.showCuriousGuy===false;}},curiousEasterEgg:{type:ControlType.String,title:\"Guy Easter Egg\",defaultValue:\"No stamps needed. This ain’t snail mail, after all.\",hidden(props){return props.showCuriousGuy===false;}},cursorColor:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#FF756B\"},copyCursorColor:{type:ControlType.Color,title:\"Copy Cursor\",defaultValue:\"#69AEFF\"},overlayOpacity:{type:ControlType.Number,title:\"Overlay\",defaultValue:.24,min:0,max:.7,step:.01},overlayBlur:{type:ControlType.Number,title:\"Overlay Blur\",defaultValue:12,min:0,max:40,step:1,unit:\"px\"},cardWidth:{type:ControlType.Number,title:\"Card Width\",defaultValue:590,min:480,max:760,step:10,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"openMaxContact\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"PortfolioContactHubV2\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"CONTACT_CLOSE_EVENT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CONTACT_OPEN_EVENT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"closeMaxContact\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PortfolioContactHub_V2_8_NAME_POLISH.map","// Generated by Framer (a050651)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCodeBoundaryForOverrides,withCSS,withFX}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{withBlackCursorTarget}from\"https://framerusercontent.com/modules/HnUJBg3afa62ecozuopZ/YK5xmydNyoWW36LM6Yyh/CursorTargetsV8.js\";const MotionDivWithFX=withFX(motion.div);const MotionButtonWithBlackCursorTargetj9t6rp=withCodeBoundaryForOverrides(motion.button,{nodeId:\"cAWAPuDcD\",override:withBlackCursorTarget,scopeId:\"zbTj_v_1i\"});const enabledGestures={cAWAPuDcD:{hover:true,pressed:true}};const cycleOrder=[\"cAWAPuDcD\",\"t6JdrzAAN\",\"EQaJky0e1\",\"Ej9EFIM3r\",\"bkxiENKp2\"];const serializationHash=\"framer-a5gyK\";const variantClassNames={bkxiENKp2:\"framer-v-3k8i3v\",cAWAPuDcD:\"framer-v-j9t6rp\",Ej9EFIM3r:\"framer-v-njpxzk\",EQaJky0e1:\"framer-v-1oj8o08\",t6JdrzAAN:\"framer-v-vq4g6l\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={delay:0,duration:.2,ease:[.44,0,.56,1],type:\"tween\"};const transition2={delay:0,duration:1,ease:[0,0,1,1],type:\"tween\"};const animation={opacity:1,rotate:360,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0};const transformTemplate1=(_,t)=>`translateX(-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:\"cAWAPuDcD\",Disabled:\"EQaJky0e1\",Error:\"bkxiENKp2\",Loading:\"t6JdrzAAN\",Success:\"Ej9EFIM3r\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"cAWAPuDcD\"};};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:\"cAWAPuDcD\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(baseVariant===\"t6JdrzAAN\")return false;return true;};const isDisplayed1=()=>{if(baseVariant===\"t6JdrzAAN\")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(MotionButtonWithBlackCursorTargetj9t6rp,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-j9t6rp\",className,classNames),\"data-framer-name\":\"Default\",\"data-reset\":\"button\",layoutDependency:layoutDependency,layoutId:\"cAWAPuDcD\",ref:refBinding,style:{backgroundColor:\"rgb(23, 23, 23)\",borderBottomLeftRadius:999,borderBottomRightRadius:999,borderTopLeftRadius:999,borderTopRightRadius:999,opacity:1,...style},variants:{\"cAWAPuDcD-hover\":{backgroundColor:\"rgb(17, 17, 17)\",opacity:1},\"cAWAPuDcD-pressed\":{backgroundColor:\"rgb(17, 17, 17)\",opacity:1},bkxiENKp2:{backgroundColor:\"rgba(255, 34, 68, 0.15)\",opacity:1},Ej9EFIM3r:{backgroundColor:\"rgb(17, 17, 17)\",opacity:1},EQaJky0e1:{opacity:.5},t6JdrzAAN:{backgroundColor:\"rgb(17, 17, 17)\"}},...addPropertyOverrides({\"cAWAPuDcD-hover\":{\"data-framer-name\":undefined},\"cAWAPuDcD-pressed\":{\"data-framer-name\":undefined},bkxiENKp2:{\"data-framer-name\":\"Error\"},Ej9EFIM3r:{\"data-framer-name\":\"Success\"},EQaJky0e1:{\"data-framer-name\":\"Disabled\"},t6JdrzAAN:{\"data-framer-name\":\"Loading\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMgRmxleC03MDA=\",\"--framer-font-family\":'\"Google Sans Flex\", \"Google Sans Flex Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"0.06em\",\"--framer-line-height\":\"1em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(252, 251, 248))\"},children:\"SEND MESSAGE\"})}),className:\"framer-b6gv0x\",fonts:[\"GF;Google Sans Flex-700\"],layoutDependency:layoutDependency,layoutId:\"N3h6oYNux\",style:{\"--extracted-r6o4lv\":\"rgb(252, 251, 248)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},variants:{\"cAWAPuDcD-hover\":{\"--extracted-r6o4lv\":\"rgb(187, 221, 255)\"},\"cAWAPuDcD-pressed\":{\"--extracted-r6o4lv\":\"rgb(187, 221, 255)\"},bkxiENKp2:{\"--extracted-r6o4lv\":\"rgb(255, 34, 68)\"},Ej9EFIM3r:{\"--extracted-r6o4lv\":\"rgb(187, 221, 255)\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({\"cAWAPuDcD-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMgRmxleC03MDA=\",\"--framer-font-family\":'\"Google Sans Flex\", \"Google Sans Flex Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"0.06em\",\"--framer-line-height\":\"1em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(187, 221, 255))\"},children:\"SEND MESSAGE\"})})},\"cAWAPuDcD-pressed\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMgRmxleC03MDA=\",\"--framer-font-family\":'\"Google Sans Flex\", \"Google Sans Flex Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"0.06em\",\"--framer-line-height\":\"1em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(187, 221, 255))\"},children:\"SEND MESSAGE\"})})},bkxiENKp2:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-family\":'\"Inter\", \"Inter Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(255, 34, 68))\"},children:\"Something went wrong\"})}),fonts:[\"Inter-SemiBold\"]},Ej9EFIM3r:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"SW50ZXItU2VtaUJvbGQ=\",\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"600\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(187, 221, 255))\"},children:\"MESSAGE SENT\"})}),fonts:[\"Inter-SemiBold\"]}},baseVariant,gestureVariant)}),isDisplayed1()&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-15plub2\",\"data-framer-name\":\"Spinner\",layoutDependency:layoutDependency,layoutId:\"bbEcl5k1g\",style:{mask:\"url('https://framerusercontent.com/images/pGiXYozQ3mE4cilNOItfe2L2fUA.svg?width=20&height=20') alpha no-repeat center / cover add\",WebkitMask:\"url('https://framerusercontent.com/images/pGiXYozQ3mE4cilNOItfe2L2fUA.svg?width=20&height=20') alpha no-repeat center / cover add\"},children:/*#__PURE__*/_jsx(MotionDivWithFX,{__framer__loop:animation,__framer__loopEffectEnabled:true,__framer__loopPauseOffscreen:true,__framer__loopRepeatDelay:0,__framer__loopRepeatType:\"loop\",__framer__loopTransition:transition2,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-h0o8yt\",\"data-framer-name\":\"Conic\",layoutDependency:layoutDependency,layoutId:\"Y067jKsRC\",style:{background:\"conic-gradient(from 180deg at 50% 50%, rgb(68, 204, 255) 0deg, rgb(68, 204, 255) 360deg)\",backgroundColor:\"rgb(68, 204, 255)\",mask:\"none\",WebkitMask:\"none\"},variants:{t6JdrzAAN:{background:\"conic-gradient(from 0deg at 50% 50%, rgba(255, 255, 255, 0) 7.208614864864882deg, rgb(255, 255, 255) 342deg)\",backgroundColor:\"rgba(0, 0, 0, 0)\",mask:\"url('https://framerusercontent.com/images/pGiXYozQ3mE4cilNOItfe2L2fUA.svg?width=20&height=20') alpha no-repeat center / cover add\",WebkitMask:\"url('https://framerusercontent.com/images/pGiXYozQ3mE4cilNOItfe2L2fUA.svg?width=20&height=20') alpha no-repeat center / cover add\"}},children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1t16ggr\",\"data-framer-name\":\"Rounding\",layoutDependency:layoutDependency,layoutId:\"X2OS46IZX\",style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:1,borderBottomRightRadius:1,borderTopLeftRadius:1,borderTopRightRadius:1},transformTemplate:transformTemplate1})})})]})})})});});const css=[\".framer-a5gyK.framer-1kqh2dt, .framer-a5gyK .framer-1kqh2dt { display: block; }\",\".framer-a5gyK.framer-j9t6rp { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 52px; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 240px; }\",\".framer-a5gyK .framer-b6gv0x { -webkit-user-select: none; flex: none; height: auto; position: relative; user-select: none; white-space: pre; width: auto; }\",\".framer-a5gyK .framer-15plub2 { aspect-ratio: 1 / 1; flex: none; gap: 10px; height: auto; overflow: hidden; position: relative; width: 20px; }\",\".framer-a5gyK .framer-h0o8yt { bottom: 0px; flex: none; left: 0px; overflow: visible; position: absolute; right: 0px; top: 0px; }\",\".framer-a5gyK .framer-1t16ggr { aspect-ratio: 1 / 1; flex: none; height: auto; left: 50%; overflow: visible; position: absolute; top: 0px; width: 2px; }\",\".framer-a5gyK.framer-v-vq4g6l.framer-j9t6rp, .framer-a5gyK.framer-v-1oj8o08.framer-j9t6rp, .framer-a5gyK.framer-v-njpxzk.framer-j9t6rp, .framer-a5gyK.framer-v-3k8i3v.framer-j9t6rp { cursor: unset; }\",\".framer-a5gyK.framer-v-vq4g6l .framer-h0o8yt { overflow: hidden; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 52\n * @framerIntrinsicWidth 240\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"t6JdrzAAN\":{\"layout\":[\"fixed\",\"fixed\"]},\"EQaJky0e1\":{\"layout\":[\"fixed\",\"fixed\"]},\"Ej9EFIM3r\":{\"layout\":[\"fixed\",\"fixed\"]},\"bkxiENKp2\":{\"layout\":[\"fixed\",\"fixed\"]},\"HHrmKZ9cM\":{\"layout\":[\"fixed\",\"fixed\"]},\"T0TAZFafO\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerzbTj_v_1i=withCSS(Component,css,\"framer-a5gyK\");export default FramerzbTj_v_1i;FramerzbTj_v_1i.displayName=\"Button 4\";FramerzbTj_v_1i.defaultProps={height:52,width:240};addPropertyControls(FramerzbTj_v_1i,{variant:{options:[\"cAWAPuDcD\",\"t6JdrzAAN\",\"EQaJky0e1\",\"Ej9EFIM3r\",\"bkxiENKp2\"],optionTitles:[\"Default\",\"Loading\",\"Disabled\",\"Success\",\"Error\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerzbTj_v_1i,[{explicitInter:true,fonts:[{cssFamilyName:\"Google Sans Flex\",source:\"google\",style:\"normal\",uiFamilyName:\"Google Sans Flex\",url:\"https://fonts.gstatic.com/s/googlesansflex/v23/t5sJIQcYNIWbFgDgAAzZ34auoVyXkJCOvp3SFWJbN5hF8Ju1x6sKCyp0l9sI40swNJwInycYAJzz0m7kJ4qFQOJBOjLvDSndo0SKMpKSTzwliVdHAy4bxTDHg_ugnAakpyycyc5qU4LBMUM.woff2\",weight:\"700\"},{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\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerzbTj_v_1i\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"52\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"t6JdrzAAN\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"EQaJky0e1\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Ej9EFIM3r\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"bkxiENKp2\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"HHrmKZ9cM\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"T0TAZFafO\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerContractVersion\":\"1\",\"framerDisplayContentsDiv\":\"false\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicWidth\":\"240\",\"framerComponentViewportWidth\":\"true\",\"framerColorSyntax\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./zbTj_v_1i.map","// Generated by Framer (a050651)\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,cx,FormContainer,FormPlainTextInput,forwardLoader,getFonts,RichText,runTasksWithYield,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Button4 from\"https://framerusercontent.com/modules/PRcBRsphRZvvElwZUdGv/QsVhkmuwjdWqjsBVB0To/zbTj_v_1i.js\";const Button4Fonts=getFonts(Button4);const serializationHash=\"framer-gsJFR\";const variantClassNames={mzI8j8i4w:\"framer-v-1pzyb33\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const formVariants=(form,variants,currentVariant)=>{switch(form.state){case\"success\":return variants.success??currentVariant;case\"pending\":return variants.pending??currentVariant;case\"error\":return variants.error??currentVariant;case\"incomplete\":return variants.incomplete??currentVariant;default:return currentVariant;}};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 Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};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({defaultVariant:\"mzI8j8i4w\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);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-1pzyb33\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"mzI8j8i4w\",ref:refBinding,style:{...style},children:/*#__PURE__*/_jsx(FormContainer,{action:\"https://api.framer.com/forms/v1/forms/8f84f68b-9189-4699-86f3-213857722363/submit\",className:\"framer-18gvtxz\",layoutDependency:layoutDependency,layoutId:\"ViWDbuvL4\",nodeId:\"ViWDbuvL4\",submitTrackingId:\"contact-form-submit\",children:formState=>/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(motion.label,{className:\"framer-1ejx1fd\",layoutDependency:layoutDependency,layoutId:\"Z5YycaYX3\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMgRmxleC03MDA=\",\"--framer-font-family\":'\"Google Sans Flex\", \"Google Sans Flex Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"0.06em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(103, 100, 95))\"},children:\"YOUR NAME\"})}),className:\"framer-9smesj\",fonts:[\"GF;Google Sans Flex-700\"],layoutDependency:layoutDependency,layoutId:\"uFlLAGOe2\",style:{\"--extracted-r6o4lv\":\"rgb(103, 100, 95)\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(FormPlainTextInput,{className:\"framer-2lrc5z\",inputName:\"Name\",layoutDependency:layoutDependency,layoutId:\"W8WRFH4x9\",placeholder:\"\",required:true,style:{\"--framer-input-background\":\"rgba(187, 187, 187, 0.15)\",\"--framer-input-border-bottom-width\":\"1px\",\"--framer-input-border-color\":\"rgba(136, 136, 136, 0.1)\",\"--framer-input-border-left-width\":\"1px\",\"--framer-input-border-radius-bottom-left\":\"10px\",\"--framer-input-border-radius-bottom-right\":\"10px\",\"--framer-input-border-radius-top-left\":\"10px\",\"--framer-input-border-radius-top-right\":\"10px\",\"--framer-input-border-right-width\":\"1px\",\"--framer-input-border-style\":\"solid\",\"--framer-input-border-top-width\":\"1px\",\"--framer-input-font-color\":\"rgb(23, 23, 23)\",\"--framer-input-icon-mask-image\":\"none\",\"--framer-input-placeholder-color\":\"rgb(153, 153, 153)\"},type:\"text\"})]}),/*#__PURE__*/_jsxs(motion.label,{className:\"framer-o1g4nb\",layoutDependency:layoutDependency,layoutId:\"AvnckmqIe\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMgRmxleC03MDA=\",\"--framer-font-family\":'\"Google Sans Flex\", \"Google Sans Flex Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"0.06em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(103, 100, 95))\"},children:\"YOUR EMAIL\"})}),className:\"framer-1l9uhbm\",fonts:[\"GF;Google Sans Flex-700\"],layoutDependency:layoutDependency,layoutId:\"mwG_RU0Pu\",style:{\"--extracted-r6o4lv\":\"rgb(103, 100, 95)\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(FormPlainTextInput,{className:\"framer-17sbodw\",inputName:\"Email\",layoutDependency:layoutDependency,layoutId:\"DudSPD4JX\",placeholder:\"\",required:true,style:{\"--framer-input-background\":\"rgba(187, 187, 187, 0.15)\",\"--framer-input-border-bottom-width\":\"1px\",\"--framer-input-border-color\":\"rgba(136, 136, 136, 0.1)\",\"--framer-input-border-left-width\":\"1px\",\"--framer-input-border-radius-bottom-left\":\"10px\",\"--framer-input-border-radius-bottom-right\":\"10px\",\"--framer-input-border-radius-top-left\":\"10px\",\"--framer-input-border-radius-top-right\":\"10px\",\"--framer-input-border-right-width\":\"1px\",\"--framer-input-border-style\":\"solid\",\"--framer-input-border-top-width\":\"1px\",\"--framer-input-font-color\":\"rgb(23, 23, 23)\",\"--framer-input-icon-mask-image\":\"none\",\"--framer-input-placeholder-color\":\"rgb(153, 153, 153)\"},type:\"email\"})]}),/*#__PURE__*/_jsxs(motion.label,{className:\"framer-7y4j4l\",layoutDependency:layoutDependency,layoutId:\"r1NcL2WhM\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMgRmxleC03MDA=\",\"--framer-font-family\":'\"Google Sans Flex\", \"Google Sans Flex Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"0.06em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(103, 100, 95))\"},children:\"MESSAGE\"})}),className:\"framer-wlnvkj\",fonts:[\"GF;Google Sans Flex-700\"],layoutDependency:layoutDependency,layoutId:\"X7xjw2SBU\",style:{\"--extracted-r6o4lv\":\"rgb(103, 100, 95)\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(FormPlainTextInput,{className:\"framer-1p6pdyy\",inputName:\"Email\",layoutDependency:layoutDependency,layoutId:\"yKFfA_H5J\",placeholder:\"\",required:true,style:{\"--framer-input-background\":\"rgba(187, 187, 187, 0.15)\",\"--framer-input-border-bottom-width\":\"1px\",\"--framer-input-border-color\":\"rgba(136, 136, 136, 0.1)\",\"--framer-input-border-left-width\":\"1px\",\"--framer-input-border-radius-bottom-left\":\"10px\",\"--framer-input-border-radius-bottom-right\":\"10px\",\"--framer-input-border-radius-top-left\":\"10px\",\"--framer-input-border-radius-top-right\":\"10px\",\"--framer-input-border-right-width\":\"1px\",\"--framer-input-border-style\":\"solid\",\"--framer-input-border-top-width\":\"1px\",\"--framer-input-font-color\":\"rgb(23, 23, 23)\",\"--framer-input-icon-mask-image\":\"none\",\"--framer-input-placeholder-color\":\"rgb(153, 153, 153)\"},type:\"textarea\"})]}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:40,width:`calc(max(${componentViewport?.width||\"100vw\"}, 1px) - 40px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1gw91ol-container\",layoutDependency:layoutDependency,layoutId:\"SWy76mbVW-container\",nodeId:\"SWy76mbVW\",rendersWithMotion:true,scopeId:\"fANfoXcnh\",children:/*#__PURE__*/_jsx(Button4,{height:\"100%\",id:\"SWy76mbVW\",layoutId:\"SWy76mbVW\",style:{height:\"100%\",width:\"100%\"},type:\"submit\",variant:formVariants(formState,{pending:\"t6JdrzAAN\",success:\"Ej9EFIM3r\"},matchVariant(\"cAWAPuDcD\")),width:\"100%\"})})})]})})})})})});});const css=[\".framer-gsJFR.framer-1vt4a4v, .framer-gsJFR .framer-1vt4a4v { display: block; }\",\".framer-gsJFR.framer-1pzyb33 { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 480px; }\",\".framer-gsJFR .framer-18gvtxz { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 20px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 20px; position: relative; width: 1px; }\",\".framer-gsJFR .framer-1ejx1fd, .framer-gsJFR .framer-o1g4nb, .framer-gsJFR .framer-7y4j4l { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; padding: 0px; position: relative; width: 100%; }\",\".framer-gsJFR .framer-9smesj, .framer-gsJFR .framer-1l9uhbm, .framer-gsJFR .framer-wlnvkj { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",'.framer-gsJFR .framer-2lrc5z, .framer-gsJFR .framer-17sbodw { --framer-input-focused-border-color: #0099ff; --framer-input-focused-border-style: solid; --framer-input-focused-border-width: 1px; --framer-input-font-family: \"Google Sans Flex\"; --framer-input-font-letter-spacing: 0em; --framer-input-font-line-height: 1.4em; --framer-input-font-size: 15px; --framer-input-font-weight: 400; --framer-input-padding: 12px; flex: none; height: 40px; position: relative; width: 100%; }','.framer-gsJFR .framer-1p6pdyy { --framer-input-focused-border-color: #0099ff; --framer-input-focused-border-style: solid; --framer-input-focused-border-width: 1px; --framer-input-font-family: \"Google Sans Flex\"; --framer-input-font-letter-spacing: 0em; --framer-input-font-line-height: 1.4em; --framer-input-font-size: 15px; --framer-input-font-weight: 400; --framer-input-padding: 12px; --framer-input-wrapper-height: auto; --framer-textarea-resize: vertical; flex: none; height: auto; min-height: 130px; position: relative; width: 100%; }',\".framer-gsJFR .framer-1gw91ol-container { flex: none; height: 40px; position: relative; width: 100%; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 419.5\n * @framerIntrinsicWidth 480\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerTrackingIds [{\"id\":\"_1rnwfuh\",\"trackingId\":\"contact-form-submit\",\"type\":\"form_submit\",\"nodeId\":\"ViWDbuvL4\"}]\n */const FramerfANfoXcnh=withCSS(Component,css,\"framer-gsJFR\");export default FramerfANfoXcnh;FramerfANfoXcnh.displayName=\"Contact Form Wrapper\";FramerfANfoXcnh.defaultProps={height:419.5,width:480};addFonts(FramerfANfoXcnh,[{explicitInter:true,fonts:[{cssFamilyName:\"Google Sans Flex\",source:\"google\",style:\"normal\",uiFamilyName:\"Google Sans Flex\",url:\"https://fonts.gstatic.com/s/googlesansflex/v23/t5sJIQcYNIWbFgDgAAzZ34auoVyXkJCOvp3SFWJbN5hF8Ju1x6sKCyp0l9sI40swNJwInycYAJzz0m7kJ4qFQOJBOjLvDSndo0SKMpKSTzwliVdHAy4bxTDHg_ugnAakpyycyc5qU4LBMUM.woff2\",weight:\"700\"},{cssFamilyName:\"Google Sans Flex\",source:\"google\",style:\"normal\",uiFamilyName:\"Google Sans Flex\",url:\"https://fonts.gstatic.com/s/googlesansflex/v23/t5sJIQcYNIWbFgDgAAzZ34auoVyXkJCOvp3SFWJbN5hF8Ju1x6sKCyp0l9sI40swNJwInycYAJzz0m7kJ4qFQOJBOjLvDSndo0SKMpKSTzwliVdHAy4bxTDHg_ugnAakp8ubyc5qU4LBMUM.woff2\",weight:\"400\"}]},...Button4Fonts],{supportsExplicitInterCodegen:true});FramerfANfoXcnh.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(Button4,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerfANfoXcnh\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"480\",\"framerContractVersion\":\"1\",\"framerTrackingIds\":\"[{\\\"id\\\":\\\"_1rnwfuh\\\",\\\"trackingId\\\":\\\"contact-form-submit\\\",\\\"type\\\":\\\"form_submit\\\",\\\"nodeId\\\":\\\"ViWDbuvL4\\\"}]\",\"framerIntrinsicHeight\":\"419.5\",\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (fc3086c)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,forwardLoader,getFonts,Link,RichText,runTasksWithYield,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCodeBoundaryForOverrides,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{withBlackCursorTarget}from\"https://framerusercontent.com/modules/HnUJBg3afa62ecozuopZ/YK5xmydNyoWW36LM6Yyh/CursorTargetsV8.js\";import MenuTriggerV8 from\"https://framerusercontent.com/modules/36wUgeFohLlKz31HnUMy/LIKJTL5SmeUlMuBQC609/MenuTriggerV8.js\";import PortfolioContactHubV2 from\"https://framerusercontent.com/modules/TRN6LMyvoAqxfAZGICxp/JEgS3Hno9p3n8nA3ckNZ/PortfolioContactHub_V2_8_NAME_POLISH.js\";import ContactFormWrapper from\"https://framerusercontent.com/modules/VlAla0TTFsk1Iw1Y1hSF/BUbYshAt6SM46Igd3uEZ/fANfoXcnh.js\";const RichTextWithBlackCursorTarget11dwh7j=withCodeBoundaryForOverrides(RichText,{nodeId:\"NzSKsaRRO\",override:withBlackCursorTarget,scopeId:\"TjnkSNABZ\"});const ContactFormWrapperFonts=getFonts(ContactFormWrapper);const PortfolioContactHubV2Fonts=getFonts(PortfolioContactHubV2);const MenuTriggerV8Fonts=getFonts(MenuTriggerV8);const cycleOrder=[\"piW7YZ6VJ\",\"wa9XrurLA\"];const serializationHash=\"framer-pzLKK\";const variantClassNames={piW7YZ6VJ:\"framer-v-1wqib3s\",wa9XrurLA:\"framer-v-11y67yj\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const coSZUOh7i=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const animation={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1.1,skewX:0,skewY:0,transition:transition1};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={\"Variant 1\":\"piW7YZ6VJ\",Mobile:\"wa9XrurLA\"};const Variants=motion.create(React.Fragment);const getProps=({click,height,id,width,...props})=>{return{...props,coSZUOh7i:click??props.coSZUOh7i,variant:humanReadableVariantMap[props.variant]??props.variant??\"piW7YZ6VJ\"};};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,coSZUOh7i,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"piW7YZ6VJ\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1gqrjmx=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(coSZUOh7i){const res=await coSZUOh7i(...args);if(res===false)return false;}});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__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1wqib3s\",className,classNames),\"data-framer-name\":\"Variant 1\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"piW7YZ6VJ\",onTap:onTap1gqrjmx,ref:refBinding,style:{backgroundColor:\"rgb(255, 255, 255)\",...style},...addPropertyOverrides({wa9XrurLA:{\"data-framer-name\":\"Mobile\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(Link,{href:{webPageId:\"de7Y6iBGO\"},motionChild:true,nodeId:\"cQI0mlkJB\",openInNewTab:false,scopeId:\"TjnkSNABZ\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-cj67x2 framer-1aq5qhw\",\"data-framer-name\":\"Logo\",layoutDependency:layoutDependency,layoutId:\"cQI0mlkJB\",children:/*#__PURE__*/_jsx(RichTextWithBlackCursorTarget11dwh7j,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMtNTAw\",\"--framer-font-family\":'\"Google Sans\", \"Google Sans Placeholder\", sans-serif',\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"1.05em\"},children:\"MAX \"}),/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMtNTAw\",\"--framer-font-family\":'\"Google Sans\", \"Google Sans Placeholder\", sans-serif',\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"1.05em\"},children:\"SZOLLOSI\"})]}),className:\"framer-11dwh7j\",fonts:[\"GF;Google Sans-500\"],layoutDependency:layoutDependency,layoutId:\"NzSKsaRRO\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",whileHover:animation,withExternalLayout:true})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-qjry1j-container\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"Nw_JOtDwj-container\",nodeId:\"Nw_JOtDwj\",rendersWithMotion:true,scopeId:\"TjnkSNABZ\",children:/*#__PURE__*/_jsx(PortfolioContactHubV2,{body:\"Have a project, role, or idea in mind? Send me a message or reach me directly.\",cardWidth:590,copyCursorColor:\"rgb(105, 174, 255)\",copyLabel:\"COPY\",curiousEasterEgg:\"No stamps needed. This ain’t snail mail, after all.\",curiousEmailReply:\"Are you sure you spelled that right? Interesting email.\",curiousGuySize:72,curiousGuyX:0,curiousGuyY:0,curiousMessageReply:\"Don’t forget to spell check.\",curiousNameReply:\"{name}. Got it.\",cursorColor:\"rgb(255, 117, 107)\",emailAddress:\"MaxSzollosi@gmail.com\",emailLabel:\"EMAIL DIRECTLY\",emailSubject:\"Portfolio inquiry\",eyebrow:\"CONTACT MAX\",height:\"100%\",id:\"Nw_JOtDwj\",layoutId:\"Nw_JOtDwj\",linkedinLabel:\"LINKEDIN\",linkedinLink:\"https://www.linkedin.com/in/max-szollosi/\",linkedinNewTab:true,nativeForm:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:419,width:\"480px\",children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-pa1s1s-container\",inComponentSlot:true,layoutDependency:layoutDependency,layoutId:\"jAHGOlHlr-container\",nodeId:\"jAHGOlHlr\",rendersWithMotion:true,scopeId:\"TjnkSNABZ\",children:/*#__PURE__*/_jsx(ContactFormWrapper,{height:\"100%\",id:\"jAHGOlHlr\",layoutId:\"jAHGOlHlr\",style:{width:\"100%\"},width:\"100%\"})})})],nativeFormHeight:390,outOfOffice:false,outOfOfficeMessage:\"I'm currently away, so replies may take a little longer than usual.\",overlayBlur:12,overlayOpacity:.24,previewOpen:false,resumeLabel:\"VIEW RESUME\",resumeLink:\"https://drive.google.com/file/d/1kSzVP8HpiXOFpduMyrHD6mvS9Oyt_7hq/view\",resumeNewTab:true,showCuriousGuy:true,showLinkedIn:true,showMessageForm:true,showResume:true,showTestTrigger:false,title:\"Let’s talk.\",width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1n9p1c7-container\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"u5KwK72m4-container\",nodeId:\"u5KwK72m4\",rendersWithMotion:true,scopeId:\"TjnkSNABZ\",children:/*#__PURE__*/_jsx(MenuTriggerV8,{blackColor:\"rgb(17, 17, 17)\",height:\"100%\",id:\"u5KwK72m4\",layoutId:\"u5KwK72m4\",width:\"100%\"})})})]})})})});});const css=[\".framer-pzLKK.framer-1aq5qhw, .framer-pzLKK .framer-1aq5qhw { display: block; }\",\".framer-pzLKK.framer-1wqib3s { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; height: 72px; justify-content: space-between; padding: 32px; position: relative; width: 1200px; }\",\".framer-pzLKK .framer-cj67x2 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: min-content; }\",\".framer-pzLKK .framer-11dwh7j { flex: none; height: auto; position: relative; white-space: pre; width: auto; will-change: var(--framer-will-change-effect-override, transform); }\",\".framer-pzLKK .framer-qjry1j-container, .framer-pzLKK .framer-1n9p1c7-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-pzLKK .framer-pa1s1s-container { height: auto; position: relative; width: 480px; }\",\".framer-pzLKK.framer-v-11y67yj.framer-1wqib3s { padding: 20px; width: 420px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 72\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"wa9XrurLA\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"coSZUOh7i\":\"click\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerTjnkSNABZ=withCSS(Component,css,\"framer-pzLKK\");export default FramerTjnkSNABZ;FramerTjnkSNABZ.displayName=\"Nav Bar - Homepage Special\";FramerTjnkSNABZ.defaultProps={height:72,width:1200};addPropertyControls(FramerTjnkSNABZ,{variant:{options:[\"piW7YZ6VJ\",\"wa9XrurLA\"],optionTitles:[\"Variant 1\",\"Mobile\"],title:\"Variant\",type:ControlType.Enum},coSZUOh7i:{title:\"Click\",type:ControlType.EventHandler}});addFonts(FramerTjnkSNABZ,[{explicitInter:true,fonts:[{cssFamilyName:\"Google Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Google Sans\",url:\"https://fonts.gstatic.com/s/googlesans/v71/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrw2IKlnrSjiEjo5.woff2\",weight:\"500\"}]},...ContactFormWrapperFonts,...PortfolioContactHubV2Fonts,...MenuTriggerV8Fonts],{supportsExplicitInterCodegen:true});FramerTjnkSNABZ.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(ContactFormWrapper,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerTjnkSNABZ\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"coSZUOh7i\\\":\\\"click\\\"}\",\"framerAutoSizeImages\":\"true\",\"framerColorSyntax\":\"true\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"72\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1200\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"wa9XrurLA\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TjnkSNABZ.map","import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";const CONTACT_OPEN_EVENT=\"max:contact-open\";const MENU_REQUEST_CLOSE_EVENT=\"max-portfolio-menu-request-close\";/*\n    Your menu close animation is about 235ms.\n    Give it a tiny amount of breathing room before\n    opening the contact modal.\n*/const MENU_TO_CONTACT_DELAY_MS=260;function openContact(){if(typeof window===\"undefined\")return;window.dispatchEvent(new CustomEvent(CONTACT_OPEN_EVENT));}function requestMenuClose(){if(typeof window===\"undefined\")return;window.dispatchEvent(new CustomEvent(MENU_REQUEST_CLOSE_EVENT));}/* =========================================================\n   NORMAL CONTACT CTA\n\n   Apply this override to:\n   - Home contact CTA\n   - About contact CTA\n   - Projects/footer \"GET IN TOUCH\"\n   - Any future contact button\n\n   Remove the old mailto / URL link from the Framer layer.\n========================================================= */export function OpenContact(Component){return /*#__PURE__*/React.forwardRef(function OpenContactOverride(props,ref){const handleClick=event=>{event.preventDefault();openContact();};return /*#__PURE__*/_jsx(Component,{...props,ref:ref,onClick:handleClick});});}/* =========================================================\n   HAMBURGER MENU CONTACT ITEM\n\n   Apply ONLY to the Contact item inside the hamburger menu.\n\n   It:\n   1. prevents navigation\n   2. asks the existing menu system to close normally\n   3. waits for the close animation\n   4. opens the contact modal\n========================================================= */export function OpenContactFromMenu(Component){return /*#__PURE__*/React.forwardRef(function OpenContactFromMenuOverride(props,ref){const timerRef=React.useRef(null);const activationLockedRef=React.useRef(false);React.useEffect(()=>{return()=>{if(timerRef.current!==null){window.clearTimeout(timerRef.current);}};},[]);const activateContact=React.useCallback(()=>{if(activationLockedRef.current)return;activationLockedRef.current=true;requestMenuClose();if(timerRef.current!==null){window.clearTimeout(timerRef.current);}timerRef.current=window.setTimeout(()=>{openContact();timerRef.current=null;activationLockedRef.current=false;},MENU_TO_CONTACT_DELAY_MS);},[]);const stopFramerNavigation=event=>{event?.preventDefault?.();event?.stopPropagation?.();activateContact();};return /*#__PURE__*/_jsx(Component,{...props,ref:ref,/*\n                    Keep the real Framer /contact Link on the layer so the\n                    hamburger cursor still recognizes this as a genuine menu\n                    link. Intercept BOTH Framer Motion tap and DOM click before\n                    routing can happen, then close the menu and open the shared\n                    Contact Hub.\n                */onTap:stopFramerNavigation,onClickCapture:stopFramerNavigation,onClick:stopFramerNavigation,\"data-menu-link\":\"true\"});});}\nexport const __FramerMetadata__ = {\"exports\":{\"OpenContactFromMenu\":{\"type\":\"reactHoc\",\"name\":\"OpenContactFromMenu\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"OpenContact\":{\"type\":\"reactHoc\",\"name\":\"OpenContact\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ContactPopupTriggers_V1.map","// Generated by Framer (4ecd144)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,cx,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCodeBoundaryForOverrides,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{OpenContactFromMenu}from\"https://framerusercontent.com/modules/EGQBD8iNmB6XMVJlXmuG/yyao8ZugC2VC1czpM9bC/ContactPopupTriggers_V1.js\";const MotionAOpenContactFromMenu1d753et=withCodeBoundaryForOverrides(motion.a,{nodeId:\"K5zTds6GJ\",override:OpenContactFromMenu,scopeId:\"W9PqkUSmL\"});const serializationHash=\"framer-CTGZC\";const variantClassNames={feiRLZPkz:\"framer-v-1wgx0px\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const animation={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1.1,skewX:0,skewY:0,transition:transition1};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 Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};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({defaultVariant:\"feiRLZPkz\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);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__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1wgx0px\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"feiRLZPkz\",ref:refBinding,style:{backgroundColor:\"rgb(255, 255, 255)\",borderBottomLeftRadius:14,borderBottomRightRadius:14,...style},children:[/*#__PURE__*/_jsx(Link,{href:{webPageId:\"K4J7RQbb8\"},motionChild:true,nodeId:\"znfpYNK8y\",openInNewTab:false,scopeId:\"W9PqkUSmL\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-1jiwr5n framer-1dlgmp7\",layoutDependency:layoutDependency,layoutId:\"znfpYNK8y\",whileHover:animation,children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMtNTAw\",\"--framer-font-family\":'\"Google Sans\", \"Google Sans Placeholder\", sans-serif',\"--framer-font-size\":\"19px\",\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"1.05em\"},children:\"PROJECTS\"})}),className:\"framer-1im0nag\",fonts:[\"GF;Google Sans-500\"],layoutDependency:layoutDependency,layoutId:\"XLvE8Znnk\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})})}),/*#__PURE__*/_jsx(Link,{href:{webPageId:\"kB8jR7zFf\"},motionChild:true,nodeId:\"I8bCaCvQe\",openInNewTab:false,scopeId:\"W9PqkUSmL\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-1rylwct framer-1dlgmp7\",layoutDependency:layoutDependency,layoutId:\"I8bCaCvQe\",whileHover:animation,children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMtNTAw\",\"--framer-font-family\":'\"Google Sans\", \"Google Sans Placeholder\", sans-serif',\"--framer-font-size\":\"19px\",\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"1.05em\"},children:\"ABOUT\"})}),className:\"framer-ga0dx5\",fonts:[\"GF;Google Sans-500\"],layoutDependency:layoutDependency,layoutId:\"hgL01DgKH\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})})}),/*#__PURE__*/_jsx(Link,{clickTrackingId:\"view-resume\",href:\"https://drive.google.com/file/d/1kSzVP8HpiXOFpduMyrHD6mvS9Oyt_7hq/view?usp=sharing\",motionChild:true,nodeId:\"DAkibhkmj\",openInNewTab:true,scopeId:\"W9PqkUSmL\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-1tpk8xh framer-1dlgmp7\",layoutDependency:layoutDependency,layoutId:\"DAkibhkmj\",whileHover:animation,children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMtNTAw\",\"--framer-font-family\":'\"Google Sans\", \"Google Sans Placeholder\", sans-serif',\"--framer-font-size\":\"19px\",\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"1.05em\"},children:\"RESUME\"})}),className:\"framer-1aify8t\",fonts:[\"GF;Google Sans-500\"],layoutDependency:layoutDependency,layoutId:\"R9g_qNMa9\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})})}),/*#__PURE__*/_jsx(Link,{href:{webPageId:\"rG6gIkLJM\"},motionChild:true,nodeId:\"K5zTds6GJ\",openInNewTab:false,scopeId:\"W9PqkUSmL\",children:/*#__PURE__*/_jsx(MotionAOpenContactFromMenu1d753et,{className:\"framer-1d753et framer-1dlgmp7\",layoutDependency:layoutDependency,layoutId:\"K5zTds6GJ\",whileHover:animation,children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R29vZ2xlIFNhbnMtNTAw\",\"--framer-font-family\":'\"Google Sans\", \"Google Sans Placeholder\", sans-serif',\"--framer-font-size\":\"19px\",\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"1.05em\"},children:\"CONTACT\"})}),className:\"framer-1ukqist\",fonts:[\"GF;Google Sans-500\"],layoutDependency:layoutDependency,layoutId:\"uVdcAXGvc\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})})})]})})})});});const css=[\".framer-CTGZC.framer-1dlgmp7, .framer-CTGZC .framer-1dlgmp7 { display: block; }\",\".framer-CTGZC.framer-1wgx0px { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 20px; height: min-content; justify-content: center; max-width: 520px; min-width: 320px; overflow: var(--overflow-clip-fallback, clip); padding: 32px 28px 32px 28px; position: relative; width: min-content; will-change: var(--framer-will-change-override, transform); }\",\".framer-CTGZC .framer-1jiwr5n { align-content: center; align-items: center; align-self: stretch; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: auto; will-change: var(--framer-will-change-effect-override, transform); }\",\".framer-CTGZC .framer-1im0nag, .framer-CTGZC .framer-ga0dx5, .framer-CTGZC .framer-1aify8t, .framer-CTGZC .framer-1ukqist { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-CTGZC .framer-1rylwct, .framer-CTGZC .framer-1tpk8xh, .framer-CTGZC .framer-1d753et { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: 264px; will-change: var(--framer-will-change-effect-override, transform); }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 204\n * @framerIntrinsicWidth 320\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"],\"constraints\":[\"320px\",\"520px\",null,null]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerTrackingIds [{\"id\":\"_1hjo5n\",\"trackingId\":\"view-resume\",\"type\":\"click\",\"nodeId\":\"DAkibhkmj\"}]\n */const FramerW9PqkUSmL=withCSS(Component,css,\"framer-CTGZC\");export default FramerW9PqkUSmL;FramerW9PqkUSmL.displayName=\"Menu Content\";FramerW9PqkUSmL.defaultProps={height:204,width:320};addFonts(FramerW9PqkUSmL,[{explicitInter:true,fonts:[{cssFamilyName:\"Google Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Google Sans\",url:\"https://fonts.gstatic.com/s/googlesans/v70/4Ua_rENHsxJlGDuGo1OIlJfC6l_24rlCK1Yo_Iqcsih3SAyH6cAwhX9RFD48TE63OOYKtrw2IKlnrSjiEjo5.woff2\",weight:\"500\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerW9PqkUSmL\",\"slots\":[],\"annotations\":{\"framerAutoSizeImages\":\"true\",\"framerIntrinsicHeight\":\"204\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerIntrinsicWidth\":\"320\",\"framerTrackingIds\":\"[{\\\"id\\\":\\\"_1hjo5n\\\",\\\"trackingId\\\":\\\"view-resume\\\",\\\"type\\\":\\\"click\\\",\\\"nodeId\\\":\\\"DAkibhkmj\\\"}]\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"],\\\"constraints\\\":[\\\"320px\\\",\\\"520px\\\",null,null]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal}from\"react-dom\";import{animate,motion,motionValue,useMotionValue,useSpring,useTransform}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";const MENU_EVENT=\"max-portfolio-menu-interaction\";const CURSOR_LOCKED_EVENT=\"max-portfolio-menu-cursor-locked\";const SHARED_ROTATION_KEY=\"__MAX_PORTFOLIO_MENU_ROTATION__\";const CURSOR_EAT_REQUEST_EVENT=\"max-cursor-cube-eat-request\";const CURSOR_EAT_START_EVENT=\"max-cursor-cube-eat-start\";const CURSOR_EAT_SWALLOWED_EVENT=\"max-cursor-cube-swallowed\";const CURSOR_EAT_RETURN_EVENT=\"max-cursor-cube-return\";const CURSOR_EAT_RETURNED_EVENT=\"max-cursor-cube-returned\";const CURSOR_EAT_CANCELLED_EVENT=\"max-cursor-cube-cancelled\";const MENU_ITEM_SELECTOR=`\n    a,\n    button,\n    [role=\"link\"],\n    [data-menu-link=\"true\"]\n`;const PAGE_TARGET_SELECTOR=`[data-max-cursor-target]`;const PERSISTENT_NAV_TARGET_SELECTOR=`[data-max-smart-navbar=\"true\"] [data-max-cursor-target]`;const PROJECT_RAIL_TARGET_SELECTOR=`[data-max-project-rail-target=\"true\"]`;/*\n    Optional geometry proxy:\n    A large interactive hit area can remain the actual cursor target while\n    the four cursor pieces frame a smaller descendant. Example: hovering a\n    project image can latch the cursor to its arrow badge.\n*/function resolvePageTargetGeometryElement(element){const selector=element.getAttribute(\"data-max-cursor-frame-selector\");if(!selector)return element;try{return element.querySelector(selector)??element;}catch{return element;}}/*\n    Optional morphing-shape anchors:\n    A target can expose four invisible anchor points inside a descendant.\n    The cursor pieces dock to those live points instead of framing a box.\n    This lets the cursor visibly follow an organic CSS morph.\n*/function resolvePageTargetShapeAnchors(element){const selector=element.getAttribute(\"data-max-cursor-shape-selector\");if(!selector)return null;try{const shape=element.querySelector(selector);if(!shape)return null;const anchors=Array.from(shape.querySelectorAll(\"[data-max-cursor-shape-anchor]\")).sort((a,b)=>Number(a.getAttribute(\"data-max-cursor-shape-anchor\")??0)-Number(b.getAttribute(\"data-max-cursor-shape-anchor\")??0));return anchors.length===4?anchors:null;}catch{return null;}}/* =========================================================\n   VISUAL TUNING\n========================================================= */const MENU_FRAME_GAP_X=8;const MENU_FRAME_GAP_Y=6;/*\n    MENU MAGNETIC ZONE\n\n    The full-width menu row remains the REAL clickable link.\n\n    These values control only when the custom cursor decides to frame\n    the text. This separates usability from the visual interaction:\n      - generous full-row click target\n      - compact cursor interaction around the actual word\n\n    Horizontal gets more breathing room than vertical so neighboring\n    menu labels do not create overlapping magnetic zones.\n*/const MENU_MAGNET_PADDING_X=20;const MENU_MAGNET_PADDING_Y=12;const PAGE_TARGET_PADDING=10;const PROJECT_RAIL_TARGET_PADDING=2;/*\n    STACKING PRIORITY\n\n    Page-target framing/underlays should never visually cover the persistent\n    navbar when a target sits close beneath it. The navbar sits one layer above\n    latched/releasing page-target pieces, while the free/menu cursor remains\n    above the navbar.\n*/const PAGE_TARGET_STACK_Z=2147483645;const PAGE_TARGET_MENU_OPEN_STACK_Z=0;const NAVBAR_STACK_Z=2147483646;const CURSOR_STACK_Z=2147483647;const TARGET_FILL_OPACITY=.045;const TARGET_BORDER_OPACITY=.24;/*\n    IDENTITY LENS MORPH HANDOFF\n\n    The About lens owns the visible travelling cubes. The global cursor\n    remains fully live underneath, but yields quickly on enter and waits\n    until the travelling cubes are almost back in their + slots before\n    becoming visible again. This turns the two renderers into one visual\n    handoff without touching pointer/geometry logic.\n*/const IDENTITY_LENS_MORPH_MS=190;const IDENTITY_LENS_HANDOFF_MS=70;const PAGE_RELEASE_STEP_MS=65;/*\n    NAV TRIGGER COLOR HOLD\n\n    Keep the hamburger / X color for a very short beat after undocking,\n    then switch the SAME ongoing release to the normal adaptive cursor\n    color. This avoids both extremes:\n      - instant black = too abrupt\n      - color all the way home = too slow\n*/const NAV_TRIGGER_COLOR_HOLD_MS=110;/*\n    RELEASE COLOR MEMORY\n\n    Page targets do NOT tint the cursor before contact.\n\n    The unexpected color change happens only AFTER a real latch:\n      - target hover = all four pieces fully adopt the target color\n      - exit = the pieces peel away carrying that color\n      - color drains back to normal piece-by-piece based on real\n        distance from the target\n\n    This keeps the approach clean while making the release feel\n    like the target briefly \"charged\" the cursor.\n*//*\n    RELEASE COLOR CONTACT\n\n    Once a square leaves a colored target, it stays 100% in that\n    target color until its ACTUAL spring reaches its normal home\n    slot around the live center cursor.\n\n    No fading based on distance from the original target.\n*/const RELEASE_COLOR_HOME_THRESHOLD=1.2;const RELEASE_COLOR_TRACK_MS=1400;/*\n    Robot cube interaction timing.\n\n    The cube remains visible while it flies into the mouth,\n    disappears once swallowed, then reappears at the mouth\n    when the robot spits it back toward the live cursor.\n*/const CUBE_FLY_IN_MS=520;/*\n    SPIT PATH\n\n    The first move is intentionally NOT a bounce.\n    The cube is spat in a smooth rainbow-shaped arc through open\n    space, then makes only two real impacts:\n      1) a visible side edge\n      2) the visible bottom edge\n\n    This makes the physics read immediately and avoids the old\n    \"invisible ceiling\" feeling.\n*/const CUBE_SPIT_ARC_MS=760;const CUBE_SPIT_REBOUND_MS=520;const CUBE_SPIT_EDGE_PAUSE_MS=28;const CUBE_SPIT_EDGE_INSET=4;const CUBE_SPIT_VISUAL_CEILING=96;/*\n    After the last real impact, the cube eases into a small\n    catch point near the live cursor, then magnetically settles\n    into its exact home position while tracking the live mouse.\n*/const CUBE_SPIT_AFTER_LAST_IMPACT_MS=80;/*\n    ELASTIC CURSOR RESCUE\n\n    After the real bottom-edge impact, the rogue square rebounds\n    into open space and stops.\n\n    The three remaining OUTER cursor squares:\n      1) freeze for a readable \"wait...\" beat\n      2) stretch into a chain toward the rogue piece\n      3) hold for one tiny catch beat\n      4) snap the entire outer cursor back to the live mouse\n\n    The center square never leaves the user's real pointer.\n*/const CUBE_RESCUE_REBOUND_MS=340;const CUBE_RESCUE_NOTICE_MS=190;const CUBE_RESCUE_CHAIN_MS=720;const CUBE_RESCUE_CATCH_HOLD_MS=105;const CUBE_RESCUE_SNAP_HOME_MS=520;/*\n    HEALING COLOR STORY\n\n    Coral = damaged / stolen\n    Aqua  = connection / energy moving through the chain\n    Lime  = healed / restored\n\n    These already belong to the portfolio palette, so the moment\n    feels magical without introducing a random new visual language.\n*/const CUBE_DAMAGE_COLOR=\"#FF6B5F\";const CUBE_HEAL_ENERGY_COLOR=\"#9FE7DA\";const CUBE_HEALED_COLOR=\"#DDF76F\";const CUBE_HEAL_STEP_MS=65;const CUBE_HEAL_AFTER_CENTER_MS=80;const CUBE_HEAL_LIME_FLASH_MS=160;const CUBE_HEAL_FADE_MS=300;/* =========================================================\n   SHARED ROTATION\n========================================================= */function getSharedRotation(){if(typeof window===\"undefined\"){return motionValue(0);}const win=window;if(!win[SHARED_ROTATION_KEY]){win[SHARED_ROTATION_KEY]=motionValue(0);}return win[SHARED_ROTATION_KEY];}/* =========================================================\n   COLOR\n========================================================= */function parseRGB(color){const match=color.match(/rgba?\\(\\s*([\\d.]+)[,\\s]+([\\d.]+)[,\\s]+([\\d.]+)(?:\\s*[,/]\\s*([\\d.]+))?\\s*\\)/);if(!match)return null;return{r:Number(match[1]),g:Number(match[2]),b:Number(match[3]),a:match[4]!==undefined?Number(match[4]):1};}function getBackground(target){let element=target;while(element&&element!==document.documentElement){const style=window.getComputedStyle(element);const parsed=parseRGB(style.backgroundColor);if(parsed&&parsed.a>.05){return parsed;}element=element.parentElement;}return{r:252,g:251,b:248,a:1};}function isDarkBackground(rgb){const luminance=.2126*(rgb.r/255)+.7152*(rgb.g/255)+.0722*(rgb.b/255);return luminance<.48;}function darkenHex(color,amount=.2){const hex=color.replace(\"#\",\"\").trim();if(!/^[0-9a-fA-F]{6}$/.test(hex)){return\"rgba(17, 17, 17, 0.16)\";}const r=Number.parseInt(hex.slice(0,2),16);const g=Number.parseInt(hex.slice(2,4),16);const b=Number.parseInt(hex.slice(4,6),16);const factor=Math.max(0,Math.min(1,1-amount));return`rgb(${Math.round(r*factor)}, ${Math.round(g*factor)}, ${Math.round(b*factor)})`;}function parseCursorColor(color){const value=color.trim();if(/^#[0-9a-fA-F]{6}$/.test(value)){return{r:Number.parseInt(value.slice(1,3),16),g:Number.parseInt(value.slice(3,5),16),b:Number.parseInt(value.slice(5,7),16)};}if(/^#[0-9a-fA-F]{3}$/.test(value)){return{r:Number.parseInt(value[1]+value[1],16),g:Number.parseInt(value[2]+value[2],16),b:Number.parseInt(value[3]+value[3],16)};}const rgb=parseRGB(value);if(rgb){return{r:rgb.r,g:rgb.g,b:rgb.b};}return null;}function mixCursorColors(fromColor,toColor,amount){const from=parseCursorColor(fromColor);const to=parseCursorColor(toColor);if(!from||!to){return amount>=.5?toColor:fromColor;}const t=Math.max(0,Math.min(1,amount));return`rgb(${Math.round(from.r+(to.r-from.r)*t)}, ${Math.round(from.g+(to.g-from.g)*t)}, ${Math.round(from.b+(to.b-from.b)*t)})`;}function cursorColorWithAlpha(color,alpha){const parsed=parseCursorColor(color);if(!parsed){return color;}return`rgba(${Math.round(parsed.r)}, ${Math.round(parsed.g)}, ${Math.round(parsed.b)}, ${Math.max(0,Math.min(1,alpha))})`;}function distanceFromPointToRect(x,y,rect){const dx=Math.max(rect.left-x,0,x-rect.right);const dy=Math.max(rect.top-y,0,y-rect.bottom);return Math.hypot(dx,dy);}/* =========================================================\n   GEOMETRY\n========================================================= */function rotateOffset(x,y,degrees){const radians=degrees*(Math.PI/180);const cos=Math.cos(radians);const sin=Math.sin(radians);return{x:x*cos-y*sin,y:x*sin+y*cos};}function normalizeText(value){return(value??\"\").replace(/\\s+/g,\" \").trim();}function discoverTightMenuLabel(element){const fullText=normalizeText(element.textContent);let labelElement=element;let bestRect=element.getBoundingClientRect();let bestArea=bestRect.width*bestRect.height;const descendants=Array.from(element.querySelectorAll(\"*\"));descendants.forEach(child=>{const childText=normalizeText(child.textContent);if(!childText||childText!==fullText){return;}const rect=child.getBoundingClientRect();if(rect.width<=0||rect.height<=0){return;}const area=rect.width*rect.height;if(area<bestArea){labelElement=child;bestRect=rect;bestArea=area;}});return{labelElement,rect:bestRect};}function pointInsideExpandedMenuLabel(x,y,rect){return x>=rect.left-MENU_MAGNET_PADDING_X&&x<=rect.right+MENU_MAGNET_PADDING_X&&y>=rect.top-MENU_MAGNET_PADDING_Y&&y<=rect.bottom+MENU_MAGNET_PADDING_Y;}function distanceToMenuLabelCenter(x,y,rect){const cx=rect.left+rect.width/2;const cy=rect.top+rect.height/2;return Math.hypot(x-cx,y-cy);}/* =========================================================\n   COMPONENT\n========================================================= */export default function CursorCompanionHomeV11(props){const{darkColor,lightColor,activeColor,closeColor1,closeColor2,closeColor3,closeColor4,closeColor5}=props;const[mounted,setMounted]=React.useState(false);const[enabled,setEnabled]=React.useState(false);const[visible,setVisible]=React.useState(false);const visibleRef=React.useRef(false);const[cursorColor,setCursorColor]=React.useState(darkColor);const[menuOpen,setMenuOpen]=React.useState(false);const menuOpenRef=React.useRef(false);const[docked,setDocked]=React.useState(false);const[orbitMode,setOrbitMode]=React.useState(false);const[locked,setLocked]=React.useState(false);const[dockTone,setDockTone]=React.useState(\"open\");/* =====================================================\n       MENU PALETTE\n    ===================================================== */const closePalette=React.useMemo(()=>[closeColor1,closeColor2,closeColor3,closeColor4,closeColor5],[closeColor1,closeColor2,closeColor3,closeColor4,closeColor5]);const[closeColorIndex,setCloseColorIndex]=React.useState(0);const closeColorIndexRef=React.useRef(-1);const currentCloseColor=closePalette[closeColorIndex]??closeColor1;/* =====================================================\n       MENU ITEM HOVER\n    ===================================================== */const[menuItemHover,setMenuItemHover]=React.useState(false);const[menuItemColor,setMenuItemColor]=React.useState(closeColor1);const hoveredMenuItemRef=React.useRef(null);/*\n        MENU LABEL UNDERLAY\n\n        Keep the existing soft menu circle and live pointer tracking, but host\n        the circle inside the actual label at z-index -1. This changes only the\n        paint order: the text stays above the highlight at all times.\n    */const[menuUnderlayHost,setMenuUnderlayHost]=React.useState(null);const menuUnderlayHostRef=React.useRef(null);const menuUnderlayX=useMotionValue(0);const menuUnderlayY=useMotionValue(0);const menuUnderlayCleanupTimerRef=React.useRef(null);const menuUnderlayRestoreRef=React.useRef(null);const detachMenuUnderlayHost=React.useCallback(()=>{if(menuUnderlayCleanupTimerRef.current!==null){window.clearTimeout(menuUnderlayCleanupTimerRef.current);menuUnderlayCleanupTimerRef.current=null;}const snapshot=menuUnderlayRestoreRef.current;if(snapshot?.element.isConnected){snapshot.element.style.position=snapshot.position;snapshot.element.style.isolation=snapshot.isolation;snapshot.element.style.overflow=snapshot.overflow;}menuUnderlayRestoreRef.current=null;menuUnderlayHostRef.current=null;setMenuUnderlayHost(null);},[]);const attachMenuUnderlayHost=React.useCallback(element=>{if(menuUnderlayCleanupTimerRef.current!==null){window.clearTimeout(menuUnderlayCleanupTimerRef.current);menuUnderlayCleanupTimerRef.current=null;}if(menuUnderlayHostRef.current===element)return;detachMenuUnderlayHost();menuUnderlayRestoreRef.current={element,position:element.style.position,isolation:element.style.isolation,overflow:element.style.overflow};if(window.getComputedStyle(element).position===\"static\"){element.style.position=\"relative\";}element.style.isolation=\"isolate\";element.style.overflow=\"visible\";menuUnderlayHostRef.current=element;setMenuUnderlayHost(element);},[detachMenuUnderlayHost]);React.useEffect(()=>{if(menuItemHover||!menuUnderlayHostRef.current)return;menuUnderlayCleanupTimerRef.current=window.setTimeout(()=>{detachMenuUnderlayHost();},170);return()=>{if(menuUnderlayCleanupTimerRef.current!==null){window.clearTimeout(menuUnderlayCleanupTimerRef.current);menuUnderlayCleanupTimerRef.current=null;}};},[menuItemHover,detachMenuUnderlayHost]);React.useEffect(()=>{return()=>{detachMenuUnderlayHost();};},[detachMenuUnderlayHost]);const menuTargetCacheRef=React.useRef(null);const getMenuTargetsForPanel=React.useCallback(panel=>{const cached=menuTargetCacheRef.current;if(cached?.panel===panel&&cached.items.length>0&&cached.items.every(item=>item.element.isConnected&&item.labelElement.isConnected)){return cached.items;}const items=Array.from(panel.querySelectorAll(MENU_ITEM_SELECTOR)).map((element,index)=>{const{labelElement}=discoverTightMenuLabel(element);return{element,labelElement,index};});menuTargetCacheRef.current={panel,items};return items;},[]);/* =====================================================\n       PAGE TARGET\n    ===================================================== */const[pageTargetHover,setPageTargetHover]=React.useState(false);const[pageTargetReleasing,setPageTargetReleasing]=React.useState(false);const[isFeaturedProjectTarget,setIsFeaturedProjectTarget]=React.useState(false);const[isContactCTATarget,setIsContactCTATarget]=React.useState(false);const[isProjectRailTarget,setIsProjectRailTarget]=React.useState(false);const[isMorphingImageTarget,setIsMorphingImageTarget]=React.useState(false);const[isPersistentNavPageTarget,setIsPersistentNavPageTarget]=React.useState(false);const[pageTargetColor,setPageTargetColor]=React.useState(\"#000000\");const[projectPulseColor,setProjectPulseColor]=React.useState(null);const[projectPulseActive,setProjectPulseActive]=React.useState(false);const projectPulseTimerRef=React.useRef(null);const projectPulseFrameRef=React.useRef(null);React.useEffect(()=>{if(typeof window===\"undefined\")return;const handleProjectColorPulse=event=>{const customEvent=event;const nextColor=customEvent.detail?.color;if(!nextColor)return;if(projectPulseTimerRef.current!==null){window.clearTimeout(projectPulseTimerRef.current);projectPulseTimerRef.current=null;}if(projectPulseFrameRef.current!==null){window.cancelAnimationFrame(projectPulseFrameRef.current);projectPulseFrameRef.current=null;}setProjectPulseColor(nextColor);setProjectPulseActive(false);projectPulseFrameRef.current=window.requestAnimationFrame(()=>{setProjectPulseActive(true);projectPulseFrameRef.current=null;});projectPulseTimerRef.current=window.setTimeout(()=>{setProjectPulseActive(false);projectPulseTimerRef.current=null;},240);};window.addEventListener(\"max:project-color-pulse\",handleProjectColorPulse);return()=>{window.removeEventListener(\"max:project-color-pulse\",handleProjectColorPulse);if(projectPulseTimerRef.current!==null){window.clearTimeout(projectPulseTimerRef.current);}if(projectPulseFrameRef.current!==null){window.cancelAnimationFrame(projectPulseFrameRef.current);}};},[]);const[pageTargetRadius,setPageTargetRadius]=React.useState(\"0px\");const[pageTargetRotation,setPageTargetRotation]=React.useState(0);const pageTargetRotationRef=React.useRef(0);const[pageTargetHardLocked,setPageTargetHardLocked]=React.useState(false);const pageTargetHardLockedRef=React.useRef(false);const pageTargetHardLockedElementRef=React.useRef(null);const hoveredPageTargetRef=React.useRef(null);/*\n        PAGE TARGET UNDERLAY\n\n        The target tint used to be a fixed overlay above the target. Move that\n        exact tint into the real element as an inset box-shadow. CSS paints\n        inset shadows below element content, so type and icons remain crisp.\n\n        Featured project imagery keeps its no-fill treatment. The About CTA\n        keeps its dedicated outer blue underlay from CursorTargetsV8.\n    */const pageTargetUnderlayRef=React.useRef(null);const clearPageTargetUnderlay=React.useCallback(()=>{const snapshot=pageTargetUnderlayRef.current;if(snapshot?.element.isConnected){snapshot.element.style.boxShadow=snapshot.inlineBoxShadow;}snapshot?.overflowSnapshots.forEach(overflowSnapshot=>{if(!overflowSnapshot.element.isConnected)return;overflowSnapshot.element.style.overflow=overflowSnapshot.overflow;overflowSnapshot.element.style.overflowX=overflowSnapshot.overflowX;overflowSnapshot.element.style.overflowY=overflowSnapshot.overflowY;});pageTargetUnderlayRef.current=null;},[]);const applyPageTargetUnderlay=React.useCallback((element,targetColor)=>{const htmlElement=element;const isContactCTA=element.matches('[data-max-cursor-target=\"cta\"]');const isFeaturedProject=element.matches('[data-max-cursor-target=\"black\"][data-framer-name=\"Project Frame\"]');const isProjectRailTarget=element.matches(PROJECT_RAIL_TARGET_SELECTOR);const usesGeometryProxy=element.hasAttribute(\"data-max-cursor-frame-selector\");const usesMorphingShape=element.hasAttribute(\"data-max-cursor-shape-selector\");if(isContactCTA||isFeaturedProject||isProjectRailTarget||usesGeometryProxy||usesMorphingShape){clearPageTargetUnderlay();return;}if(pageTargetUnderlayRef.current?.element===htmlElement)return;clearPageTargetUnderlay();const computedShadow=window.getComputedStyle(htmlElement).boxShadow;const baseShadow=computedShadow&&computedShadow!==\"none\"?computedShadow:\"\";const underlayColor=cursorColorWithAlpha(targetColor,TARGET_FILL_OPACITY);/*\n                Fill the ENTIRE framed cursor target while keeping the paint\n                behind the real content:\n\n                - inset shadow fills the target's own content box\n                - outer spread fills the PAGE_TARGET_PADDING area all the way\n                  out to the four cursor pieces\n\n                This restores the old full-frame highlight geometry without\n                putting a translucent layer over text or icons.\n            *//*\n                Stop the outer fill just inside the 1px cursor frame. Using\n                the full PAGE_TARGET_PADDING could anti-alias a hair beyond\n                the border on large targets such as the MAX SZOLLOSI logo.\n            */const underlaySpread=Math.max(0,PAGE_TARGET_PADDING-1);const underlayShadow=`inset 0 0 0 9999px ${underlayColor}, 0 0 0 ${underlaySpread}px ${underlayColor}`;/*\n                A few compact Framer links (LINKEDIN / RESUME) are nested\n                inside an ancestor that clips overflow. Clearing overflow on\n                the target itself is not enough: the outer shadow still gets\n                cut off at that ancestor, so only the word-sized inset fill is\n                visible.\n\n                Unlock ONLY ancestors that are actually clipping with\n                overflow:hidden/clip, and restore every inline value exactly\n                when the cursor releases. This leaves all working targets and\n                navbar behavior unchanged while allowing the underlay to reach\n                the four cursor pieces.\n            */const overflowSnapshots=[];let overflowNode=htmlElement;while(overflowNode&&overflowNode!==document.body){const computed=window.getComputedStyle(overflowNode);const clipsX=computed.overflowX===\"hidden\"||computed.overflowX===\"clip\";const clipsY=computed.overflowY===\"hidden\"||computed.overflowY===\"clip\";const isTarget=overflowNode===htmlElement;if(isTarget||clipsX||clipsY){overflowSnapshots.push({element:overflowNode,overflow:overflowNode.style.overflow,overflowX:overflowNode.style.overflowX,overflowY:overflowNode.style.overflowY});overflowNode.style.overflow=\"visible\";overflowNode.style.overflowX=\"visible\";overflowNode.style.overflowY=\"visible\";}overflowNode=overflowNode.parentElement;}pageTargetUnderlayRef.current={element:htmlElement,inlineBoxShadow:htmlElement.style.boxShadow,overflowSnapshots};htmlElement.style.boxShadow=baseShadow?`${baseShadow}, ${underlayShadow}`:underlayShadow;},[clearPageTargetUnderlay]);/*\n        Per-piece release colors are separate from pageTargetColor.\n\n        pageTargetColor owns the fully latched state.\n        releasePieceColors exists only while peeling OFF a target.\n    */const[releasePieceColors,setReleasePieceColors]=React.useState([null,null,null,null]);const releasePieceColorsRef=React.useRef([null,null,null,null]);const applyReleasePieceColors=React.useCallback(nextColors=>{const currentColors=releasePieceColorsRef.current;const colorsChanged=nextColors.some((color,index)=>color!==currentColors[index]);if(!colorsChanged)return;releasePieceColorsRef.current=nextColors;setReleasePieceColors(nextColors);},[]);const releaseColorTargetRef=React.useRef(null);const releaseColorFrameRef=React.useRef(null);const cursorColorRef=React.useRef(darkColor);const pageTargetX=useMotionValue(-100);const pageTargetY=useMotionValue(-100);const pageTargetWidth=useMotionValue(0);const pageTargetHeight=useMotionValue(0);const pageReleaseRef=React.useRef({active:false,released:[false,false,false,false]});const pageReleaseTimersRef=React.useRef([]);/* =====================================================\n       ROBOT CUBE EAT STATE\n    ===================================================== */const[stolenPieceIndex,setStolenPieceIndex]=React.useState(null);const[stolenPieceVisible,setStolenPieceVisible]=React.useState(true);const[stolenPieceWild,setStolenPieceWild]=React.useState(false);const[stolenPieceSettling,setStolenPieceSettling]=React.useState(false);/*\n        Temporary per-piece colors for the damage -> energy -> heal\n        story. Null means \"use the cursor's normal adaptive color.\"\n    */const[cubeMagicColors,setCubeMagicColors]=React.useState([null,null,null,null]);const[cubeCenterMagicColor,setCubeCenterMagicColor]=React.useState(null);const[cubeHealingBloom,setCubeHealingBloom]=React.useState(false);const[cubeHealingFadeSlow,setCubeHealingFadeSlow]=React.useState(false);const stolenPieceRef=React.useRef(null);const cubeEatActiveRef=React.useRef(false);/*\n        Choreography locks for the elastic rescue.\n    */const cubeRescueActiveRef=React.useRef(false);const cubeReturnAllRef=React.useRef(false);const cubeEatTimersRef=React.useRef([]);const cubeSpitFrameRef=React.useRef(null);/* =====================================================\n       REFERENCES\n    ===================================================== */const menuRectRef=React.useRef(null);const dockedRef=React.useRef(false);const orbitRef=React.useRef(false);const lockSentRef=React.useRef(false);const dockTargetRef=React.useRef(null);const lastPointer=React.useRef({x:-100,y:-100});const latestPointerMoveRef=React.useRef(null);const pointerMoveFrameRef=React.useRef(null);const adaptiveBackgroundTargetRef=React.useRef(null);const adaptiveCursorColorRef=React.useRef(null);const adaptiveBackgroundInvalidatedRef=React.useRef(true);const menuRotation=React.useMemo(()=>getSharedRotation(),[]);/* =====================================================\n       CENTER CURSOR\n    ===================================================== */const pointerX=useMotionValue(-100);const pointerY=useMotionValue(-100);const identityLensVisualOpacity=useMotionValue(1);const identityLensFadeRef=React.useRef(null);React.useEffect(()=>{if(typeof window===\"undefined\")return;const stopLensHandoff=()=>{identityLensFadeRef.current?.stop();identityLensFadeRef.current=null;};const handleIdentityLensEnter=()=>{stopLensHandoff();/*\n                The lens-owned morph cubes begin exactly on top of the\n                normal + pieces. Yield quickly so the eye follows those\n                same-position pieces as they physically travel outward.\n            */identityLensFadeRef.current=animate(identityLensVisualOpacity,0,{duration:IDENTITY_LENS_HANDOFF_MS/1e3,ease:[.22,1,.36,1]});};const handleIdentityLensLeave=()=>{stopLensHandoff();/*\n                Keep the global + invisible while the lens-owned cubes\n                physically travel back toward their normal slots. Fade the\n                live cursor in only for the final aligned handoff.\n            */identityLensFadeRef.current=animate(identityLensVisualOpacity,1,{delay:(IDENTITY_LENS_MORPH_MS-IDENTITY_LENS_HANDOFF_MS)/1e3,duration:IDENTITY_LENS_HANDOFF_MS/1e3,ease:[.22,1,.36,1]});};window.addEventListener(\"max:identity-lens-enter\",handleIdentityLensEnter);window.addEventListener(\"max:identity-lens-leave\",handleIdentityLensLeave);return()=>{window.removeEventListener(\"max:identity-lens-enter\",handleIdentityLensEnter);window.removeEventListener(\"max:identity-lens-leave\",handleIdentityLensLeave);stopLensHandoff();};},[identityLensVisualOpacity]);const centerX=useSpring(pointerX,{stiffness:2400,damping:92,mass:.055});const centerY=useSpring(pointerY,{stiffness:2400,damping:92,mass:.055});/* =====================================================\n       FOUR TRANSFERABLE PIECES\n    ===================================================== */const p1x=useMotionValue(-100);const p1y=useMotionValue(-100);const p2x=useMotionValue(-100);const p2y=useMotionValue(-100);const p3x=useMotionValue(-100);const p3y=useMotionValue(-100);const p4x=useMotionValue(-100);const p4y=useMotionValue(-100);const travelSpring={stiffness:760,damping:32,mass:.18};const s1x=useSpring(p1x,travelSpring);const s1y=useSpring(p1y,travelSpring);const s2x=useSpring(p2x,travelSpring);const s2y=useSpring(p2y,travelSpring);const s3x=useSpring(p3x,travelSpring);const s3y=useSpring(p3y,travelSpring);const s4x=useSpring(p4x,travelSpring);const s4y=useSpring(p4y,travelSpring);/*\n        Dedicated direct coordinates are rendered only after scrolling\n        begins during an already-latched page-target hover.\n    */const pageDirect1x=useMotionValue(-100);const pageDirect1y=useMotionValue(-100);const pageDirect2x=useMotionValue(-100);const pageDirect2y=useMotionValue(-100);const pageDirect3x=useMotionValue(-100);const pageDirect3y=useMotionValue(-100);const pageDirect4x=useMotionValue(-100);const pageDirect4y=useMotionValue(-100);const exitPageTargetHardLock=React.useCallback(()=>{if(!pageTargetHardLockedRef.current)return;const direct1x=pageDirect1x.get();const direct1y=pageDirect1y.get();const direct2x=pageDirect2x.get();const direct2y=pageDirect2y.get();const direct3x=pageDirect3x.get();const direct3y=pageDirect3y.get();const direct4x=pageDirect4x.get();const direct4y=pageDirect4y.get();/*\n            Keep the ordinary spring destinations at the exact rendered\n            direct positions, then jump the spring outputs to those same\n            coordinates before switching render sources.\n\n            The release therefore begins from the pixels already on screen\n            with zero source-handoff displacement.\n        */p1x.set(direct1x);p1y.set(direct1y);p2x.set(direct2x);p2y.set(direct2y);p3x.set(direct3x);p3y.set(direct3y);p4x.set(direct4x);p4y.set(direct4y);s1x.jump(direct1x);s1y.jump(direct1y);s2x.jump(direct2x);s2y.jump(direct2y);s3x.jump(direct3x);s3y.jump(direct3y);s4x.jump(direct4x);s4y.jump(direct4y);pageTargetHardLockedRef.current=false;pageTargetHardLockedElementRef.current=null;setPageTargetHardLocked(false);},[p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y,s1x,s1y,s2x,s2y,s3x,s3y,s4x,s4y,pageDirect1x,pageDirect1y,pageDirect2x,pageDirect2y,pageDirect3x,pageDirect3y,pageDirect4x,pageDirect4y]);/* =====================================================\n       SPIT TRAIL\n\n       Four delayed ghost squares sample the ACTUAL stolen\n       piece spring position. The trail therefore follows the\n       motion we really see, rather than a separate fake path.\n    ===================================================== */const trail1x=useMotionValue(-100);const trail1y=useMotionValue(-100);const trail2x=useMotionValue(-100);const trail2y=useMotionValue(-100);const trail3x=useMotionValue(-100);const trail3y=useMotionValue(-100);const trail4x=useMotionValue(-100);const trail4y=useMotionValue(-100);const spitTrailHistoryRef=React.useRef([]);React.useEffect(()=>{if(!stolenPieceWild||stolenPieceIndex===null){spitTrailHistoryRef.current=[];return;}const springs=[{x:s1x,y:s1y},{x:s2x,y:s2y},{x:s3x,y:s3y},{x:s4x,y:s4y}];const active=springs[stolenPieceIndex];let frame=0;const tick=()=>{const history=spitTrailHistoryRef.current;history.unshift({x:active.x.get(),y:active.y.get()});if(history.length>22){history.length=22;}const sample=(historyIndex,xValue,yValue)=>{const point=history[Math.min(historyIndex,Math.max(0,history.length-1))];if(!point)return;xValue.set(point.x);yValue.set(point.y);};sample(3,trail1x,trail1y);sample(7,trail2x,trail2y);sample(12,trail3x,trail3y);sample(18,trail4x,trail4y);frame=requestAnimationFrame(tick);};frame=requestAnimationFrame(tick);return()=>{cancelAnimationFrame(frame);};},[stolenPieceWild,stolenPieceIndex,s1x,s1y,s2x,s2y,s3x,s3y,s4x,s4y,trail1x,trail1y,trail2x,trail2y,trail3x,trail3y,trail4x,trail4y]);/* =====================================================\n       SHARED ROTATION ORBITS\n    ===================================================== */const createOrbitValue=(localX,localY,axis)=>useTransform(menuRotation,angle=>{const rect=menuRectRef.current;if(!rect)return-100;const cx=rect.left+rect.width/2;const cy=rect.top+rect.height/2;const rotated=rotateOffset(localX,localY,angle);return axis===\"x\"?cx+rotated.x:cy+rotated.y;});const orbit1x=createOrbitValue(-8,-8,\"x\");const orbit1y=createOrbitValue(-8,-8,\"y\");const orbit2x=createOrbitValue(8,-8,\"x\");const orbit2y=createOrbitValue(8,-8,\"y\");const orbit3x=createOrbitValue(8,8,\"x\");const orbit3y=createOrbitValue(8,8,\"y\");const orbit4x=createOrbitValue(-8,8,\"x\");const orbit4y=createOrbitValue(-8,8,\"y\");/* =====================================================\n       PIECE HELPERS\n    ===================================================== */const movePieceHome=React.useCallback((pieceIndex,x,y)=>{const d=9;if(pieceIndex===0){p1x.set(x);p1y.set(y-d);return;}if(pieceIndex===1){p2x.set(x+d);p2y.set(y);return;}if(pieceIndex===2){p3x.set(x);p3y.set(y+d);return;}p4x.set(x-d);p4y.set(y);},[p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y]);const movePieceToPoint=React.useCallback((pieceIndex,x,y)=>{if(pieceIndex===0){p1x.set(x);p1y.set(y);return;}if(pieceIndex===1){p2x.set(x);p2y.set(y);return;}if(pieceIndex===2){p3x.set(x);p3y.set(y);return;}p4x.set(x);p4y.set(y);},[p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y]);/* =====================================================\n       RELEASE COLOR MEMORY\n    ===================================================== */const clearReleaseColors=React.useCallback(()=>{releaseColorTargetRef.current=null;if(releaseColorFrameRef.current!==null){cancelAnimationFrame(releaseColorFrameRef.current);releaseColorFrameRef.current=null;}applyReleasePieceColors([null,null,null,null]);},[applyReleasePieceColors]);const trackReleaseColors=React.useCallback((source,targetColor,waitForPageReleaseFlags=true,switchColorAfterMs=null,switchedColor=null)=>{if(typeof window===\"undefined\")return;if(releaseColorFrameRef.current!==null){cancelAnimationFrame(releaseColorFrameRef.current);releaseColorFrameRef.current=null;}releaseColorTargetRef.current=source;/*\n                Start fully charged. There is deliberately NO\n                half-purple / half-normal blend during the flight.\n            */applyReleasePieceColors([targetColor,targetColor,targetColor,targetColor]);const startedAt=performance.now();const getHomePoint=(index,pointerX,pointerY)=>{const d=9;if(index===0){return{x:pointerX,y:pointerY-d};}if(index===1){return{x:pointerX+d,y:pointerY};}if(index===2){return{x:pointerX,y:pointerY+d};}return{x:pointerX-d,y:pointerY};};const tick=now=>{if(releaseColorTargetRef.current!==source){return;}const piecePositions=[{x:s1x.get(),y:s1y.get()},{x:s2x.get(),y:s2y.get()},{x:s3x.get(),y:s3y.get()},{x:s4x.get(),y:s4y.get()}];const pointer=lastPointer.current;/*\n                    Most releases keep one target color all the way home.\n\n                    Only the hamburger / X passes a delayed replacement\n                    color. After the short hold, the existing animation\n                    simply starts returning `switchedColor` instead.\n                    Geometry and timing do not restart.\n                */const activeReleaseColor=switchColorAfterMs!==null&&switchedColor!==null&&now-startedAt>=switchColorAfterMs?switchedColor:targetColor;const nextColors=piecePositions.map((piece,index)=>{/*\n                            Pieces that have not peeled off yet are\n                            still visually attached to the target, so\n                            they stay fully target-colored.\n                        */if(waitForPageReleaseFlags&&!pageReleaseRef.current.released[index]){return activeReleaseColor;}const home=getHomePoint(index,pointer.x,pointer.y);const distanceToHome=Math.hypot(piece.x-home.x,piece.y-home.y);/*\n                            This is the key behavior:\n\n                            FULL target color while traveling.\n                            NORMAL color only once this exact square\n                            physically reconnects with its own slot.\n                        */return distanceToHome<=RELEASE_COLOR_HOME_THRESHOLD?null:activeReleaseColor;});applyReleasePieceColors(nextColors);const allHome=nextColors.every(color=>color===null);const timedOut=now-startedAt>=RELEASE_COLOR_TRACK_MS;if(!allHome&&!timedOut){releaseColorFrameRef.current=requestAnimationFrame(tick);return;}releaseColorFrameRef.current=null;releaseColorTargetRef.current=null;/*\n                    Clearing this array also clears releaseCenterColor.\n                    So the center and the LAST returning outer square\n                    lose the target color as one final reconnection beat.\n                */applyReleasePieceColors([null,null,null,null]);};releaseColorFrameRef.current=requestAnimationFrame(tick);},[s1x,s1y,s2x,s2y,s3x,s3y,s4x,s4y,applyReleasePieceColors]);/* =====================================================\n       PAGE RELEASE\n    ===================================================== */const cancelPageRelease=React.useCallback(()=>{pageReleaseTimersRef.current.forEach(timer=>{window.clearTimeout(timer);});pageReleaseTimersRef.current=[];pageReleaseRef.current.active=false;pageReleaseRef.current.released=[false,false,false,false];setPageTargetReleasing(false);/*\n            Generic menu events can call cancelPageRelease() while a\n            menu-label / hamburger release is already flying home.\n\n            Only clear release color memory here when the active source\n            is an actual PAGE element (or there is no active source).\n            String sources belong to the menu system and may finish.\n        */if(releaseColorTargetRef.current===null||releaseColorTargetRef.current instanceof Element){clearReleaseColors();}},[clearReleaseColors]);const updateReleasedPieces=React.useCallback((x,y)=>{if(!pageReleaseRef.current.active)return;pageReleaseRef.current.released.forEach((released,index)=>{if(!released)return;if(stolenPieceRef.current===index)return;movePieceHome(index,x,y);});},[movePieceHome]);const beginPageRelease=React.useCallback((exitX,exitY)=>{/*\n                Capture the exact target we are leaving BEFORE clearing\n                hover state. Release color memory must belong only to\n                the object that was actually latched.\n            */const releasedFromTarget=hoveredPageTargetRef.current;const releasedFromPersistentNav=Boolean(releasedFromTarget?.matches(PERSISTENT_NAV_TARGET_SELECTOR));const releasedTargetColor=pageTargetColor;clearPageTargetUnderlay();exitPageTargetHardLock();cancelPageRelease();hoveredPageTargetRef.current=null;setPageTargetHover(false);setIsPersistentNavPageTarget(releasedFromPersistentNav);setPageTargetReleasing(true);const piecePositions=[{index:0,x:s1x.get(),y:s1y.get()},{index:1,x:s2x.get(),y:s2y.get()},{index:2,x:s3x.get(),y:s3y.get()},{index:3,x:s4x.get(),y:s4y.get()}];const releaseOrder=piecePositions.map(piece=>({...piece,distance:Math.hypot(piece.x-exitX,piece.y-exitY)})).sort((a,b)=>a.distance-b.distance);pageReleaseRef.current.active=true;pageReleaseRef.current.released=[false,false,false,false];/*\n                Only the RELEASE gets the gradual color behavior.\n\n                Approach remains completely normal.\n                Latch is the existing full target-color snap.\n                Exit carries that color away and drains it piece-by-piece.\n            */if(releasedFromTarget){trackReleaseColors(releasedFromTarget,releasedTargetColor);}releaseOrder.forEach((piece,orderIndex)=>{const delay=orderIndex*PAGE_RELEASE_STEP_MS;const timer=window.setTimeout(()=>{if(!pageReleaseRef.current.active)return;pageReleaseRef.current.released[piece.index]=true;if(stolenPieceRef.current!==piece.index){movePieceHome(piece.index,lastPointer.current.x,lastPointer.current.y);}const isLast=orderIndex===releaseOrder.length-1;if(isLast){pageReleaseRef.current.active=false;pageReleaseTimersRef.current=[];setPageTargetReleasing(false);setIsPersistentNavPageTarget(false);}},delay);pageReleaseTimersRef.current.push(timer);});},[cancelPageRelease,clearPageTargetUnderlay,exitPageTargetHardLock,movePieceHome,s1x,s1y,s2x,s2y,s3x,s3y,s4x,s4y,pageTargetColor,trackReleaseColors]);/*\n        MENU CORNER RELEASE\n\n        Dropdown labels and the hamburger/X use the same four physical\n        cursor pieces as page targets. Releasing all four simultaneously\n        made the color-memory effect almost invisible.\n\n        This gives menu frames the same closest-corner-first peel.\n    */const beginMenuCornerRelease=React.useCallback((exitX,exitY,targetColor,source,switchColorAfterMs=null,switchedColor=null)=>{clearReleaseColors();pageReleaseTimersRef.current.forEach(timer=>{window.clearTimeout(timer);});pageReleaseTimersRef.current=[];pageReleaseRef.current.active=true;pageReleaseRef.current.released=[false,false,false,false];const pieces=[{index:0,x:s1x.get(),y:s1y.get()},{index:1,x:s2x.get(),y:s2y.get()},{index:2,x:s3x.get(),y:s3y.get()},{index:3,x:s4x.get(),y:s4y.get()}];const releaseOrder=pieces.map(piece=>({...piece,distance:Math.hypot(piece.x-exitX,piece.y-exitY)})).sort((a,b)=>a.distance-b.distance);/*\n                The center square + all four corners inherit the menu\n                color, and each corner keeps it until it physically\n                reconnects with its home slot.\n            */trackReleaseColors(source,targetColor,true,switchColorAfterMs,switchedColor);releaseOrder.forEach((piece,orderIndex)=>{const timer=window.setTimeout(()=>{pageReleaseRef.current.released[piece.index]=true;movePieceHome(piece.index,lastPointer.current.x,lastPointer.current.y);},orderIndex*PAGE_RELEASE_STEP_MS);pageReleaseTimersRef.current.push(timer);});const finishTimer=window.setTimeout(()=>{pageReleaseRef.current.active=false;pageReleaseRef.current.released=[false,false,false,false];},PAGE_RELEASE_STEP_MS*3+420);pageReleaseTimersRef.current.push(finishTimer);},[clearReleaseColors,movePieceHome,s1x,s1y,s2x,s2y,s3x,s3y,s4x,s4y,trackReleaseColors]);/* =====================================================\n       ROBOT CUBE EAT\n    ===================================================== */const setCubeMagicColor=React.useCallback((index,color)=>{setCubeMagicColors(current=>{const next=[...current];next[index]=color;return next;});},[]);const clearCubeHealingVisuals=React.useCallback(()=>{setCubeMagicColors([null,null,null,null]);setCubeCenterMagicColor(null);setCubeHealingBloom(false);setCubeHealingFadeSlow(false);},[]);const clearCubeEatTimers=React.useCallback(()=>{cubeEatTimersRef.current.forEach(timer=>{window.clearTimeout(timer);});cubeEatTimersRef.current=[];if(cubeSpitFrameRef.current!==null){cancelAnimationFrame(cubeSpitFrameRef.current);cubeSpitFrameRef.current=null;}},[]);const cancelCubeEat=React.useCallback((notifyRobot=true)=>{if(!cubeEatActiveRef.current&&stolenPieceRef.current===null){return;}clearCubeEatTimers();const pieceIndex=stolenPieceRef.current;if(pieceIndex!==null){setStolenPieceVisible(true);if(cubeRescueActiveRef.current){for(let index=0;index<4;index+=1){movePieceHome(index,lastPointer.current.x,lastPointer.current.y);}}else{movePieceHome(pieceIndex,lastPointer.current.x,lastPointer.current.y);}}cubeEatActiveRef.current=false;cubeRescueActiveRef.current=false;cubeReturnAllRef.current=false;stolenPieceRef.current=null;setStolenPieceIndex(null);setStolenPieceVisible(true);setStolenPieceWild(false);setStolenPieceSettling(false);clearCubeHealingVisuals();if(notifyRobot&&typeof window!==\"undefined\"){window.dispatchEvent(new CustomEvent(CURSOR_EAT_CANCELLED_EVENT));}},[clearCubeEatTimers,clearCubeHealingVisuals,movePieceHome]);React.useEffect(()=>{if(!enabled)return;const handleEatRequest=event=>{const custom=event;const detail=custom.detail;if(!detail)return;if(cubeEatActiveRef.current)return;if(dockedRef.current||menuOpenRef.current)return;if(hoveredPageTargetRef.current)return;if(pageReleaseRef.current.active)return;cancelPageRelease();clearCubeEatTimers();const mouthX=detail.x;const mouthY=detail.y;const piecePositions=[{index:0,x:s1x.get(),y:s1y.get()},{index:1,x:s2x.get(),y:s2y.get()},{index:2,x:s3x.get(),y:s3y.get()},{index:3,x:s4x.get(),y:s4y.get()}];const nearest=piecePositions.map(piece=>({...piece,distance:Math.hypot(piece.x-mouthX,piece.y-mouthY)})).sort((a,b)=>a.distance-b.distance)[0];if(!nearest)return;cubeEatActiveRef.current=true;stolenPieceRef.current=nearest.index;setStolenPieceIndex(nearest.index);setStolenPieceVisible(true);setStolenPieceWild(false);setStolenPieceSettling(false);/*\n                Keep the stolen square in its NORMAL adaptive cursor\n                color while it travels into the mouth.\n\n                This keeps the intake physically believable:\n                nothing has \"magically changed\" yet.\n\n                Coral begins later, when the character forcefully\n                spits the piece back out.\n            */clearCubeHealingVisuals();cubeRescueActiveRef.current=false;cubeReturnAllRef.current=false;window.dispatchEvent(new CustomEvent(CURSOR_EAT_START_EVENT,{detail:{pieceIndex:nearest.index}}));movePieceToPoint(nearest.index,mouthX,mouthY);const swallowTimer=window.setTimeout(()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==nearest.index)return;setStolenPieceVisible(false);window.dispatchEvent(new CustomEvent(CURSOR_EAT_SWALLOWED_EVENT,{detail:{pieceIndex:nearest.index}}));},CUBE_FLY_IN_MS);cubeEatTimersRef.current.push(swallowTimer);};const handleReturn=()=>{if(!cubeEatActiveRef.current)return;const pieceIndex=stolenPieceRef.current;if(pieceIndex===null)return;clearCubeEatTimers();// Reappear at the mouth and ricochet around the viewport.\n// The final return is intentionally softer than the bounces:\n// first a small catch point near the cursor, then a magnetic\n// reassembly that keeps following the live mouse position.\n/*\n                SPIT = DAMAGE STATE\n\n                The piece turns coral only NOW, when it is violently\n                expelled. That makes the color change feel like a\n                consequence of the choke/spit rather than an unexplained\n                transformation while entering the mouth.\n            */setCubeMagicColor(pieceIndex,CUBE_DAMAGE_COLOR);setStolenPieceVisible(true);setStolenPieceWild(true);setStolenPieceSettling(false);cubeRescueActiveRef.current=false;cubeReturnAllRef.current=false;const currentPositions=[{x:s1x.get(),y:s1y.get()},{x:s2x.get(),y:s2y.get()},{x:s3x.get(),y:s3y.get()},{x:s4x.get(),y:s4y.get()}];const start=currentPositions[pieceIndex];const viewportWidth=Math.max(window.innerWidth,320);const viewportHeight=Math.max(window.innerHeight,320);const clamp=(value,min,max)=>Math.max(min,Math.min(max,value));const edge=CUBE_SPIT_EDGE_INSET;/*\n                Spit away from the side of the screen the robot is\n                currently closest to, giving the arc room to breathe.\n            */const direction=start.x>viewportWidth*.5?-1:1;const inward=-direction;const sideImpact={x:direction<0?edge:viewportWidth-edge,y:clamp(start.y+Math.min(120,viewportHeight*.14),150,viewportHeight-180)};/*\n                A visible rainbow arch. The curve rises through open\n                space but deliberately DOES NOT touch the top edge.\n                Because there is no collision there, it reads as a\n                projectile rather than a fake bounce.\n            */const archTopY=Math.max(CUBE_SPIT_VISUAL_CEILING,Math.min(start.y,sideImpact.y)-Math.min(270,viewportHeight*.3));const arcControl1={x:start.x+direction*Math.min(210,viewportWidth*.19),y:archTopY};const arcControl2={x:sideImpact.x-direction*Math.min(190,viewportWidth*.17),y:archTopY};const bottomImpact={x:clamp(viewportWidth*(direction<0?.36:.64),90,viewportWidth-90),y:viewportHeight-edge};/*\n                After the real side-wall impact, the reflected path\n                curves inward and down to one real bottom impact.\n            */const reboundControl1={x:sideImpact.x+inward*Math.min(210,viewportWidth*.2),y:clamp(sideImpact.y+95,sideImpact.y,viewportHeight-140)};const reboundControl2={x:bottomImpact.x-inward*Math.min(105,viewportWidth*.1),y:viewportHeight-125};const cubicPoint=(from,c1,c2,to,t)=>{const mt=1-t;return{x:mt*mt*mt*from.x+3*mt*mt*t*c1.x+3*mt*t*t*c2.x+t*t*t*to.x,y:mt*mt*mt*from.y+3*mt*mt*t*c1.y+3*mt*t*t*c2.y+t*t*t*to.y};};/*\n                Drive the target every animation frame instead of\n                hopping between timed points. The existing cursor\n                spring then adds just a touch of organic follow-through.\n            */const animateCurve=(from,c1,c2,to,duration,onComplete)=>{const startedAt=performance.now();const step=now=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;const rawT=Math.min(1,Math.max(0,(now-startedAt)/duration));/*\n                        Mild ease-in/out keeps the spit readable without\n                        making the projectile feel floaty.\n                    */const t=rawT<.5?2*rawT*rawT:1-Math.pow(-2*rawT+2,2)/2;const point=cubicPoint(from,c1,c2,to,t);movePieceToPoint(pieceIndex,point.x,point.y);if(rawT<1){cubeSpitFrameRef.current=requestAnimationFrame(step);return;}cubeSpitFrameRef.current=null;onComplete();};cubeSpitFrameRef.current=requestAnimationFrame(step);};/*\n                ELASTIC RESCUE\n\n                Rogue square rebounds into open space.\n\n                The three remaining outer pieces then make a readable\n                square-chain from the real mouse toward the rogue:\n                    center -> tail -> middle -> leader -> rogue\n\n                No remote reassembly. The payoff is the elastic snap\n                straight back to the center square.\n            */const beginElasticRescue=()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;const startTimer=window.setTimeout(()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;/*\n                        End the long spit trail here so the rescue gets\n                        its own clean visual beat.\n                    */setStolenPieceWild(false);setStolenPieceSettling(true);const rogueRest={x:clamp(bottomImpact.x+inward*Math.min(155,viewportWidth*.14),130,viewportWidth-130),y:clamp(viewportHeight*.6,220,viewportHeight-220)};const rogueControl1={x:bottomImpact.x+inward*Math.min(75,viewportWidth*.07),y:viewportHeight-105};const rogueControl2={x:rogueRest.x-inward*Math.min(55,viewportWidth*.05),y:rogueRest.y+95};/*\n                        A small real rebound after the bottom impact.\n                    */animateCurve(bottomImpact,rogueControl1,rogueControl2,rogueRest,CUBE_RESCUE_REBOUND_MS,()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;/*\n                                Freeze the OUTER pieces where they are.\n                                The tiny center square keeps following\n                                the user's real mouse.\n                            */cubeRescueActiveRef.current=true;const outerPositions=[{index:0,x:s1x.get(),y:s1y.get()},{index:1,x:s2x.get(),y:s2y.get()},{index:2,x:s3x.get(),y:s3y.get()},{index:3,x:s4x.get(),y:s4y.get()}];const rescuers=outerPositions.filter(piece=>piece.index!==pieceIndex).map(piece=>({...piece,distance:Math.hypot(piece.x-rogueRest.x,piece.y-rogueRest.y)})).sort((a,b)=>a.distance-b.distance);const leader=rescuers[0];const middle=rescuers[1];const tail=rescuers[2];if(!leader||!middle||!tail){cancelCubeEat();return;}/*\n                                Tiny \"notice\" nudge toward the rogue.\n                            */rescuers.forEach(piece=>{const dx=rogueRest.x-piece.x;const dy=rogueRest.y-piece.y;const distance=Math.max(1,Math.hypot(dx,dy));movePieceToPoint(piece.index,piece.x+dx/distance*4,piece.y+dy/distance*4);});const noticeTimer=window.setTimeout(()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;if(!cubeRescueActiveRef.current)return;const springForIndex=index=>{if(index===0){return{x:s1x,y:s1y};}if(index===1){return{x:s2x,y:s2y};}if(index===2){return{x:s3x,y:s3y};}return{x:s4x,y:s4y};};const chainStarts=new Map;[leader,middle,tail].forEach(piece=>{const spring=springForIndex(piece.index);chainStarts.set(piece.index,{x:spring.x.get(),y:spring.y.get()});});const startedAt=performance.now();const clamp01=value=>Math.max(0,Math.min(1,value));const easeOutCubic=value=>1-Math.pow(1-value,3);const lerp=(a,b,t)=>a+(b-a)*t;const chainStep=now=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;if(!cubeRescueActiveRef.current)return;const elapsed=now-startedAt;/*\n                                            The chain anchors to the LIVE\n                                            center square so it feels\n                                            elastic even if the visitor\n                                            moves slightly.\n                                        */const anchor={x:centerX.get(),y:centerY.get()};const dx=rogueRest.x-anchor.x;const dy=rogueRest.y-anchor.y;const targetAt=fraction=>({x:anchor.x+dx*fraction,y:anchor.y+dy*fraction});const animateRescuer=(piece,fraction,delay)=>{const startPoint=chainStarts.get(piece.index);if(!startPoint)return;const local=easeOutCubic(clamp01((elapsed/CUBE_RESCUE_CHAIN_MS-delay)/(1-delay)));const target=targetAt(fraction);movePieceToPoint(piece.index,lerp(startPoint.x,target.x,local),lerp(startPoint.y,target.y,local));};/*\n                                            Leader shoots first.\n                                            The other two stretch behind,\n                                            creating an obvious visual\n                                            chain rather than three random\n                                            independent chasers.\n                                        */animateRescuer(leader,.76,0);animateRescuer(middle,.52,.1);animateRescuer(tail,.28,.2);if(elapsed<CUBE_RESCUE_CHAIN_MS){cubeSpitFrameRef.current=requestAnimationFrame(chainStep);return;}cubeSpitFrameRef.current=null;/*\n                                            HEALING PULSE\n\n                                            Once the chain reaches the\n                                            rogue square, aqua energy\n                                            travels BACKWARD through the\n                                            chain toward the live center:\n\n                                              rogue -> leader -> middle\n                                                    -> tail -> center\n\n                                            Only after the center \"heart\"\n                                            lights up does the cursor heal\n                                            lime and snap back together.\n                                        */const catchTimer=window.setTimeout(()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;const pulseOrder=[pieceIndex,leader.index,middle.index,tail.index];pulseOrder.forEach((pulseIndex,orderIndex)=>{const pulseTimer=window.setTimeout(()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;setCubeMagicColor(pulseIndex,CUBE_HEAL_ENERGY_COLOR);},orderIndex*CUBE_HEAL_STEP_MS);cubeEatTimersRef.current.push(pulseTimer);});const centerPulseDelay=pulseOrder.length*CUBE_HEAL_STEP_MS;const centerPulseTimer=window.setTimeout(()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;setCubeCenterMagicColor(CUBE_HEAL_ENERGY_COLOR);/*\n                                                                    The center square behaves\n                                                                    like the cursor's little\n                                                                    heart rebooting.\n                                                                */setCubeHealingBloom(true);},centerPulseDelay);cubeEatTimersRef.current.push(centerPulseTimer);const healedDelay=centerPulseDelay+CUBE_HEAL_AFTER_CENTER_MS;const healedTimer=window.setTimeout(()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;/*\n                                                                    HEALED.\n\n                                                                    All four outer pieces and\n                                                                    the center flash lime at\n                                                                    the exact moment the elastic\n                                                                    snap begins.\n                                                                */setCubeMagicColors([CUBE_HEALED_COLOR,CUBE_HEALED_COLOR,CUBE_HEALED_COLOR,CUBE_HEALED_COLOR]);setCubeCenterMagicColor(CUBE_HEALED_COLOR);setCubeHealingBloom(true);cubeReturnAllRef.current=true;for(let index=0;index<4;index+=1){movePieceHome(index,lastPointer.current.x,lastPointer.current.y);}/*\n                                                                    Hold the lime heal flash\n                                                                    briefly, then dissolve back\n                                                                    into the cursor's normal\n                                                                    adaptive color over 300ms.\n                                                                */const fadeTimer=window.setTimeout(()=>{if(!cubeEatActiveRef.current)return;setCubeHealingFadeSlow(true);setCubeHealingBloom(false);setCubeMagicColors([null,null,null,null]);setCubeCenterMagicColor(null);const fadeDoneTimer=window.setTimeout(()=>{setCubeHealingFadeSlow(false);},CUBE_HEAL_FADE_MS+40);cubeEatTimersRef.current.push(fadeDoneTimer);},CUBE_HEAL_LIME_FLASH_MS);cubeEatTimersRef.current.push(fadeTimer);const finishTimer=window.setTimeout(()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;cubeEatActiveRef.current=false;cubeRescueActiveRef.current=false;cubeReturnAllRef.current=false;stolenPieceRef.current=null;setStolenPieceIndex(null);setStolenPieceVisible(true);setStolenPieceWild(false);setStolenPieceSettling(false);/*\n                                                                                Do not force colors\n                                                                                here if the slow fade\n                                                                                is still finishing.\n                                                                                The scheduled fade\n                                                                                owns that visual exit.\n                                                                            */window.dispatchEvent(new CustomEvent(CURSOR_EAT_RETURNED_EVENT,{detail:{pieceIndex}}));},CUBE_RESCUE_SNAP_HOME_MS);cubeEatTimersRef.current.push(finishTimer);},healedDelay);cubeEatTimersRef.current.push(healedTimer);},CUBE_RESCUE_CATCH_HOLD_MS);cubeEatTimersRef.current.push(catchTimer);};cubeSpitFrameRef.current=requestAnimationFrame(chainStep);},CUBE_RESCUE_NOTICE_MS);cubeEatTimersRef.current.push(noticeTimer);});},CUBE_SPIT_AFTER_LAST_IMPACT_MS);cubeEatTimersRef.current.push(startTimer);};/*\n                PHASE 1\n                Mouth -> rainbow arc -> REAL side wall.\n            */animateCurve(start,arcControl1,arcControl2,sideImpact,CUBE_SPIT_ARC_MS,()=>{const sidePause=window.setTimeout(()=>{if(!cubeEatActiveRef.current)return;if(stolenPieceRef.current!==pieceIndex)return;/*\n                            PHASE 2\n                            Real side-wall impact -> curved rebound ->\n                            REAL bottom edge.\n                        */animateCurve(sideImpact,reboundControl1,reboundControl2,bottomImpact,CUBE_SPIT_REBOUND_MS,beginElasticRescue);},CUBE_SPIT_EDGE_PAUSE_MS);cubeEatTimersRef.current.push(sidePause);});};window.addEventListener(CURSOR_EAT_REQUEST_EVENT,handleEatRequest);window.addEventListener(CURSOR_EAT_RETURN_EVENT,handleReturn);return()=>{window.removeEventListener(CURSOR_EAT_REQUEST_EVENT,handleEatRequest);window.removeEventListener(CURSOR_EAT_RETURN_EVENT,handleReturn);};},[enabled,menuOpen,cancelPageRelease,clearCubeEatTimers,movePieceHome,movePieceToPoint,s1x,s1y,s2x,s2y,s3x,s3y,s4x,s4y]);/* =====================================================\n       NORMAL CURSOR\n    ===================================================== */const releasePieces=React.useCallback((x,y)=>{cancelPageRelease();dockTargetRef.current=null;lockSentRef.current=false;orbitRef.current=false;setOrbitMode(false);setLocked(false);for(let index=0;index<4;index+=1){if(stolenPieceRef.current===index)continue;movePieceHome(index,x,y);}},[cancelPageRelease,movePieceHome]);/* =====================================================\n       MENU LABEL TARGET\n    ===================================================== */const frameMenuItem=React.useCallback((element,liveRect)=>{cancelCubeEat();cancelPageRelease();const cachedTarget=menuTargetCacheRef.current?.items.find(item=>item.element===element);const discoveredTarget=cachedTarget??discoverTightMenuLabel(element);const labelElement=discoveredTarget.labelElement;const rect=liveRect??labelElement.getBoundingClientRect();if(labelElement instanceof HTMLElement){attachMenuUnderlayHost(labelElement);// Framer may slightly scale menu labels on hover. Convert the\n// viewport pointer back into the label's local coordinate space\n// so the underlay circle stays under the exact same screen point.\nconst localScaleX=rect.width>0&&labelElement.offsetWidth>0?labelElement.offsetWidth/rect.width:1;const localScaleY=rect.height>0&&labelElement.offsetHeight>0?labelElement.offsetHeight/rect.height:1;menuUnderlayX.set((lastPointer.current.x-rect.left)*localScaleX);menuUnderlayY.set((lastPointer.current.y-rect.top)*localScaleY);}dockTargetRef.current=null;lockSentRef.current=false;orbitRef.current=false;setOrbitMode(false);setLocked(false);p1x.set(rect.left-MENU_FRAME_GAP_X);p1y.set(rect.top-MENU_FRAME_GAP_Y);p2x.set(rect.right+MENU_FRAME_GAP_X);p2y.set(rect.top-MENU_FRAME_GAP_Y);p3x.set(rect.right+MENU_FRAME_GAP_X);p3y.set(rect.bottom+MENU_FRAME_GAP_Y);p4x.set(rect.left-MENU_FRAME_GAP_X);p4y.set(rect.bottom+MENU_FRAME_GAP_Y);},[cancelCubeEat,cancelPageRelease,attachMenuUnderlayHost,menuUnderlayX,menuUnderlayY,p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y]);/* =====================================================\n       PAGE TARGET\n    ===================================================== */const updatePageTargetGeometry=React.useCallback((element,targetRotation,measuredRect,updateDirectCorners=false)=>{const geometryElement=resolvePageTargetGeometryElement(element);const shapeAnchors=resolvePageTargetShapeAnchors(element);const usesMorphingShape=Boolean(shapeAnchors);const rect=usesMorphingShape?geometryElement.getBoundingClientRect():measuredRect??geometryElement.getBoundingClientRect();/*\n                Morphing image targets publish four live perimeter anchors.\n                Read their viewport centers every frame so the cursor pieces\n                follow both the image scale and its asymmetric shape change.\n            */if(shapeAnchors){// Keep the visible cursor outline on the same live CSS contour\n// as the morphing image instead of leaving a rectangular box.\nconst liveShapeStyle=window.getComputedStyle(geometryElement);const liveShapeRadius=liveShapeStyle.borderRadius||\"0px\";setPageTargetRadius(current=>current===liveShapeRadius?current:liveShapeRadius);const points=shapeAnchors.map(anchor=>{const anchorRect=anchor.getBoundingClientRect();return{x:anchorRect.left+anchorRect.width/2,y:anchorRect.top+anchorRect.height/2};});pageTargetX.set(rect.left);pageTargetY.set(rect.top);pageTargetWidth.set(rect.width);pageTargetHeight.set(rect.height);p1x.set(points[0].x);p1y.set(points[0].y);p2x.set(points[1].x);p2y.set(points[1].y);p3x.set(points[2].x);p3y.set(points[2].y);p4x.set(points[3].x);p4y.set(points[3].y);if(updateDirectCorners){pageDirect1x.set(points[0].x);pageDirect1y.set(points[0].y);pageDirect2x.set(points[1].x);pageDirect2y.set(points[1].y);pageDirect3x.set(points[2].x);pageDirect3y.set(points[2].y);pageDirect4x.set(points[3].x);pageDirect4y.set(points[3].y);}return;}const isProjectRailTarget=element.matches(PROJECT_RAIL_TARGET_SELECTOR);const targetPadding=isProjectRailTarget?PROJECT_RAIL_TARGET_PADDING:PAGE_TARGET_PADDING;const left=rect.left-targetPadding;const top=rect.top-targetPadding;const width=rect.width+targetPadding*2;const height=rect.height+targetPadding*2;const cx=left+width/2;const cy=top+height/2;const halfW=width/2;const halfH=height/2;pageTargetX.set(left);pageTargetY.set(top);pageTargetWidth.set(width);pageTargetHeight.set(height);const isContactCTA=element.matches('[data-max-cursor-target=\"cta\"]');/*\n                Ordinary page targets keep the established four-corner frame.\n\n                Two intentional exceptions use cardinal docking:\n                - About \"Get in touch\" CTA\n                - Featured Work rail number circles\n\n                Rail circles use their own much smaller padding so the four\n                pieces feel physically attached at 12 / 3 / 6 / 9 o'clock.\n            */const useCardinalTargets=isContactCTA||isProjectRailTarget;const localTargets=useCardinalTargets?[{x:0,y:-halfH},{x:halfW,y:0},{x:0,y:halfH},{x:-halfW,y:0}]:[{x:-halfW,y:-halfH},{x:halfW,y:-halfH},{x:halfW,y:halfH},{x:-halfW,y:halfH}];const rotatedTargets=localTargets.map(point=>rotateOffset(point.x,point.y,targetRotation));const corner1x=cx+rotatedTargets[0].x;const corner1y=cy+rotatedTargets[0].y;const corner2x=cx+rotatedTargets[1].x;const corner2y=cy+rotatedTargets[1].y;const corner3x=cx+rotatedTargets[2].x;const corner3y=cy+rotatedTargets[2].y;const corner4x=cx+rotatedTargets[3].x;const corner4y=cy+rotatedTargets[3].y;/*\n                The ordinary spring destinations always stay current.\n                Direct coordinates are written only while the page target\n                is in solid scroll-lock mode.\n            */p1x.set(corner1x);p1y.set(corner1y);p2x.set(corner2x);p2y.set(corner2y);p3x.set(corner3x);p3y.set(corner3y);p4x.set(corner4x);p4y.set(corner4y);if(updateDirectCorners){pageDirect1x.set(corner1x);pageDirect1y.set(corner1y);pageDirect2x.set(corner2x);pageDirect2y.set(corner2y);pageDirect3x.set(corner3x);pageDirect3y.set(corner3y);pageDirect4x.set(corner4x);pageDirect4y.set(corner4y);}},[p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y,pageDirect1x,pageDirect1y,pageDirect2x,pageDirect2y,pageDirect3x,pageDirect3y,pageDirect4x,pageDirect4y,pageTargetX,pageTargetY,pageTargetWidth,pageTargetHeight]);const framePageTarget=React.useCallback(element=>{if(pageTargetHardLockedRef.current&&pageTargetHardLockedElementRef.current===element){updatePageTargetGeometry(element,pageTargetRotationRef.current,undefined,true);return;}exitPageTargetHardLock();cancelCubeEat();cancelPageRelease();const isProjectRailTarget=element.matches(PROJECT_RAIL_TARGET_SELECTOR);const isActiveProjectRailTarget=isProjectRailTarget&&element.getAttribute(\"data-max-project-rail-active\")===\"true\";const targetColor=isActiveProjectRailTarget?darkColor:element.getAttribute(\"data-max-cursor-color\")??\"#000000\";const rawRotation=Number(element.getAttribute(\"data-max-cursor-rotate\")??\"0\");const targetRotation=Number.isFinite(rawRotation)?rawRotation:0;pageTargetRotationRef.current=targetRotation;setPageTargetColor(targetColor);setPageTargetRotation(targetRotation);applyPageTargetUnderlay(element,targetColor);dockTargetRef.current=null;lockSentRef.current=false;orbitRef.current=false;setOrbitMode(false);setLocked(false);updatePageTargetGeometry(element,targetRotation);},[cancelCubeEat,cancelPageRelease,exitPageTargetHardLock,applyPageTargetUnderlay,updatePageTargetGeometry,darkColor]);const clearPageTarget=React.useCallback(()=>{clearPageTargetUnderlay();exitPageTargetHardLock();hoveredPageTargetRef.current=null;setPageTargetHover(false);setIsContactCTATarget(false);setIsProjectRailTarget(false);setIsMorphingImageTarget(false);if(!pageReleaseRef.current.active){setIsPersistentNavPageTarget(false);}},[clearPageTargetUnderlay,exitPageTargetHardLock]);/* =====================================================\n       DOCK AT NAV + / X\n    ===================================================== */const dockPieces=React.useCallback((rect,angle)=>{cancelCubeEat();cancelPageRelease();const cx=rect.left+rect.width/2;const cy=rect.top+rect.height/2;const corners=[rotateOffset(-8,-8,angle),rotateOffset(8,-8,angle),rotateOffset(8,8,angle),rotateOffset(-8,8,angle)];const targets=corners.map(corner=>({x:cx+corner.x,y:cy+corner.y}));dockTargetRef.current=targets;lockSentRef.current=false;setLocked(false);p1x.set(targets[0].x);p1y.set(targets[0].y);p2x.set(targets[1].x);p2y.set(targets[1].y);p3x.set(targets[2].x);p3y.set(targets[2].y);p4x.set(targets[3].x);p4y.set(targets[3].y);},[cancelCubeEat,cancelPageRelease,p1x,p1y,p2x,p2y,p3x,p3y,p4x,p4y]);/* =====================================================\n       PHYSICAL LOCK DETECTION\n    ===================================================== */React.useEffect(()=>{const springs=[s1x,s1y,s2x,s2y,s3x,s3y,s4x,s4y];const checkLock=()=>{if(!dockedRef.current||orbitRef.current||lockSentRef.current){return;}const targets=dockTargetRef.current;if(!targets)return;const positionTolerance=.42;const velocityTolerance=16;const positionReady=Math.abs(s1x.get()-targets[0].x)<positionTolerance&&Math.abs(s1y.get()-targets[0].y)<positionTolerance&&Math.abs(s2x.get()-targets[1].x)<positionTolerance&&Math.abs(s2y.get()-targets[1].y)<positionTolerance&&Math.abs(s3x.get()-targets[2].x)<positionTolerance&&Math.abs(s3y.get()-targets[2].y)<positionTolerance&&Math.abs(s4x.get()-targets[3].x)<positionTolerance&&Math.abs(s4y.get()-targets[3].y)<positionTolerance;const velocityReady=springs.every(spring=>Math.abs(spring.getVelocity())<velocityTolerance);if(!positionReady||!velocityReady)return;lockSentRef.current=true;setLocked(true);window.dispatchEvent(new CustomEvent(CURSOR_LOCKED_EVENT));};const unsubscribers=springs.map(spring=>spring.on(\"change\",checkLock));return()=>{unsubscribers.forEach(unsubscribe=>unsubscribe());};},[s1x,s1y,s2x,s2y,s3x,s3y,s4x,s4y]);/* =====================================================\n       MOUNT / DESKTOP\n    ===================================================== */React.useEffect(()=>{setMounted(true);return()=>{pageReleaseTimersRef.current.forEach(timer=>window.clearTimeout(timer));cubeEatTimersRef.current.forEach(timer=>window.clearTimeout(timer));if(releaseColorFrameRef.current!==null){cancelAnimationFrame(releaseColorFrameRef.current);}clearPageTargetUnderlay();};},[clearPageTargetUnderlay]);React.useEffect(()=>{if(!mounted)return;const finePointer=window.matchMedia(\"(hover: hover) and (pointer: fine)\");const reducedMotion=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const update=()=>{setEnabled(finePointer.matches&&!reducedMotion.matches);};update();finePointer.addEventListener?.(\"change\",update);reducedMotion.addEventListener?.(\"change\",update);return()=>{finePointer.removeEventListener?.(\"change\",update);reducedMotion.removeEventListener?.(\"change\",update);};},[mounted]);/* =====================================================\n       HIDE NATIVE CURSOR\n    ===================================================== */React.useEffect(()=>{if(!enabled)return;const style=document.createElement(\"style\");style.innerHTML=`\n            html,\n            body,\n            body * {\n                cursor: none !important;\n            }\n\n            input,\n            textarea,\n            select,\n            [contenteditable=\"true\"] {\n                cursor: text !important;\n            }\n        `;document.head.appendChild(style);return()=>{style.remove();};},[enabled]);/* =====================================================\n       NAVBAR STACK PRIORITY\n\n       Keep the persistent navbar visually above nearby PAGE TARGET\n       highlights without changing any navbar/menu interaction behavior.\n       The free cursor and menu cursor still render above the navbar.\n\n       Exception: a target INSIDE the persistent navbar (the MAX SZOLLOSI\n       logo) keeps its own frame/corner pieces above the navbar so its hover\n       remains visible. Nearby page targets still pass underneath.\n    ===================================================== */React.useEffect(()=>{if(!enabled)return;const taggedNavbar=document.querySelector('[data-max-smart-navbar=\"true\"]');if(!taggedNavbar)return;let stackHost=taggedNavbar;let node=taggedNavbar;/*\n            Prefer the navbar's actual fixed/sticky wrapper if the marker\n            lives on an inner element. This keeps the entire white navbar\n            surface above nearby page-target underlays and corner pieces.\n        */while(node&&node!==document.body){const position=window.getComputedStyle(node).position;if(position===\"fixed\"||position===\"sticky\"){stackHost=node;break;}node=node.parentElement;}const previousZIndex=stackHost.style.zIndex;stackHost.style.zIndex=String(NAVBAR_STACK_Z);return()=>{if(stackHost.isConnected){stackHost.style.zIndex=previousZIndex;}};},[enabled]);/* =====================================================\n       MENU EVENTS\n    ===================================================== */React.useEffect(()=>{if(!mounted)return;const handleMenuEvent=event=>{const custom=event;const detail=custom.detail;if(!detail)return;const wasDocked=dockedRef.current;const wasMenuOpen=menuOpenRef.current;menuOpenRef.current=detail.open;if(wasMenuOpen!==detail.open){menuTargetCacheRef.current=null;adaptiveBackgroundInvalidatedRef.current=true;}/*\n                NAV TRIGGER RELEASE COLOR\n\n                Start with the actual color the +/X had while docked.\n                The existing release tracker will keep it briefly, then\n                switch to the normal adaptive cursor color without\n                restarting or changing the peel motion.\n            */const releasedDockColor=dockTone===\"close\"?currentCloseColor:activeColor;const isNewXHover=detail.open&&detail.docked&&detail.tone===\"close\"&&!wasDocked;if(isNewXHover){const nextIndex=(closeColorIndexRef.current+1)%closePalette.length;closeColorIndexRef.current=nextIndex;setCloseColorIndex(nextIndex);}if(detail.open||detail.docked){cancelCubeEat();cancelPageRelease();clearPageTarget();}if(detail.docked){hoveredMenuItemRef.current=null;setMenuItemHover(false);}if(!detail.open){hoveredMenuItemRef.current=null;setMenuItemHover(false);}setMenuOpen(detail.open);setDocked(detail.docked);setOrbitMode(detail.orbit);setDockTone(detail.tone??\"open\");dockedRef.current=detail.docked;orbitRef.current=detail.orbit;if(detail.rect){menuRectRef.current=detail.rect;}if(detail.docked&&!detail.orbit&&detail.rect){dockPieces(detail.rect,menuRotation.get());}if(detail.docked&&detail.orbit){setLocked(true);}if(!detail.docked){if(wasDocked){beginMenuCornerRelease(lastPointer.current.x,lastPointer.current.y,releasedDockColor,\"menu-trigger\",NAV_TRIGGER_COLOR_HOLD_MS,cursorColorRef.current);}else{releasePieces(lastPointer.current.x,lastPointer.current.y);}}};window.addEventListener(MENU_EVENT,handleMenuEvent);return()=>{window.removeEventListener(MENU_EVENT,handleMenuEvent);};},[mounted,closePalette,cancelCubeEat,cancelPageRelease,clearPageTarget,dockPieces,menuRotation,releasePieces,beginMenuCornerRelease,dockTone,currentCloseColor,activeColor]);/* =====================================================\n       POINTER DETECTION\n    ===================================================== */React.useEffect(()=>{if(!enabled)return;adaptiveBackgroundInvalidatedRef.current=true;const processPointerMove=()=>{pointerMoveFrameRef.current=null;const latestPointer=latestPointerMoveRef.current;latestPointerMoveRef.current=null;if(!latestPointer)return;const{x,y,target:preservedTarget}=latestPointer;const menuIsOpen=menuOpenRef.current;lastPointer.current={x,y};pointerX.set(x);pointerY.set(y);/*\n                During the final elastic snap, all FOUR outer squares\n                keep targeting the live mouse position.\n            */if(cubeReturnAllRef.current){for(let index=0;index<4;index+=1){movePieceHome(index,x,y);}}if(!visibleRef.current){visibleRef.current=true;setVisible(true);}let nativeTarget=preservedTarget instanceof Element&&preservedTarget.isConnected?preservedTarget:null;let useMainPageFastPath=false;if(!menuIsOpen&&!dockedRef.current){if(!nativeTarget){nativeTarget=document.elementFromPoint(x,y);}const persistentNavbarTarget=nativeTarget?.closest(PERSISTENT_NAV_TARGET_SELECTOR)??null;useMainPageFastPath=persistentNavbarTarget===null;}const hitElements=useMainPageFastPath?nativeTarget?[nativeTarget]:[]:document.elementsFromPoint(x,y);const target=useMainPageFastPath?nativeTarget:hitElements[0]??nativeTarget;/*\n                COLOR-ONLY ZONES:\n                Allow a page element to override only the free cursor color.\n                This does NOT enter page-target mode, move pieces, spread them,\n                dock them, or alter any target geometry.\n            */const colorOnlyZone=target instanceof Element?target.closest(\"[data-max-cursor-color-only]\"):null;const colorOnlyValue=colorOnlyZone?.getAttribute(\"data-max-cursor-color-only\");let nextCursorColor;if(colorOnlyValue){nextCursorColor=colorOnlyValue;}else if(useMainPageFastPath&&!adaptiveBackgroundInvalidatedRef.current&&adaptiveBackgroundTargetRef.current===target&&adaptiveCursorColorRef.current!==null){nextCursorColor=adaptiveCursorColorRef.current;}else{const background=getBackground(target);nextCursorColor=isDarkBackground(background)?lightColor:darkColor;if(useMainPageFastPath){adaptiveBackgroundTargetRef.current=target;adaptiveCursorColorRef.current=nextCursorColor;adaptiveBackgroundInvalidatedRef.current=false;}}if(cursorColorRef.current!==nextCursorColor){cursorColorRef.current=nextCursorColor;setCursorColor(nextCursorColor);}/*\n                During the rescue, the center square remains live but\n                page/menu hover systems temporarily yield.\n            */if(cubeRescueActiveRef.current){return;}let menuInteractive=null;let menuInteractiveRect=null;let menuInteractiveIndex=0;let menuPanel=null;/* =============================================\n               MENU TARGET DETECTION\n            ============================================= */if(menuIsOpen&&!dockedRef.current&&target instanceof Element){for(const hitElement of hitElements){const ownedPanel=hitElement.closest('[data-max-menu-panel=\"true\"]');if(ownedPanel){menuPanel=ownedPanel;break;}}if(menuPanel){/*\n                        Stable menu elements and their tight text elements\n                        are discovered once per open menu DOM instance.\n\n                        Live rectangles are still read for all four labels\n                        so the existing nearest-zone behavior remains exact\n                        while Framer's hover-scale springs are animating.\n                    */const menuItems=getMenuTargetsForPanel(menuPanel);let nearestDistance=Number.POSITIVE_INFINITY;for(const item of menuItems){const rect=item.labelElement.getBoundingClientRect();if(!pointInsideExpandedMenuLabel(x,y,rect)){continue;}const distance=distanceToMenuLabelCenter(x,y,rect);if(distance<nearestDistance){nearestDistance=distance;menuInteractive=item.element;menuInteractiveRect=rect;menuInteractiveIndex=item.index;}}}}const menuOwnsPointer=menuIsOpen&&menuPanel!==null;/*\n                If the pointer just left a dropdown label, remember that\n                label's color for the release-to-center animation.\n            */let releasedMenuItemColor=null;/* =============================================\n               ACTIVE MENU ITEM\n            ============================================= */if(menuInteractive&&menuPanel){cancelCubeEat();cancelPageRelease();if(hoveredPageTargetRef.current){clearPageTarget();}if(hoveredMenuItemRef.current!==menuInteractive){hoveredMenuItemRef.current=menuInteractive;const nextColor=closePalette[menuInteractiveIndex%closePalette.length]??closeColor1;setMenuItemColor(nextColor);setMenuItemHover(true);}frameMenuItem(menuInteractive,menuInteractiveRect??undefined);return;}if(hoveredMenuItemRef.current){releasedMenuItemColor=menuItemColor;hoveredMenuItemRef.current=null;setMenuItemHover(false);}/* =============================================\n               PAGE TARGET DETECTION\n\n               The dropdown owns only the viewport region it actually\n               covers. Outside that region, ordinary page targets remain\n               eligible even while the menu is open. The persistent smart\n               navbar remains eligible everywhere.\n            ============================================= */let pageTarget=null;if(!dockedRef.current){if(useMainPageFastPath){pageTarget=nativeTarget?.closest(PAGE_TARGET_SELECTOR)??null;}else{const pageTargetSelector=menuOwnsPointer?PERSISTENT_NAV_TARGET_SELECTOR:PAGE_TARGET_SELECTOR;for(const hitElement of hitElements){const candidateTarget=hitElement.closest(pageTargetSelector);if(candidateTarget){pageTarget=candidateTarget;break;}}}}if(pageTarget){cancelCubeEat();cancelPageRelease();clearReleaseColors();if(hoveredPageTargetRef.current!==pageTarget){hoveredPageTargetRef.current=pageTarget;setIsFeaturedProjectTarget(pageTarget.matches('[data-max-cursor-target=\"black\"][data-framer-name=\"Project Frame\"]'));setIsContactCTATarget(pageTarget.matches('[data-max-cursor-target=\"cta\"]'));setIsProjectRailTarget(pageTarget.matches(PROJECT_RAIL_TARGET_SELECTOR));setIsMorphingImageTarget(pageTarget.hasAttribute(\"data-max-cursor-shape-selector\"));setIsPersistentNavPageTarget(pageTarget.matches(PERSISTENT_NAV_TARGET_SELECTOR));setPageTargetHover(true);const geometryElement=resolvePageTargetGeometryElement(pageTarget);const style=window.getComputedStyle(geometryElement);setPageTargetRadius(style.borderRadius||\"0px\");}framePageTarget(pageTarget);return;}/*\n                We just left a dropdown label and did NOT immediately\n                land on a tagged page target. Give those four label\n                corners the same closest-first peel animation.\n            */if(releasedMenuItemColor){beginMenuCornerRelease(x,y,releasedMenuItemColor,\"menu-label\");return;}/*\n                Ordinary page-target peel remains nav-closed only.\n                Persistent smart-navbar targets retain their existing\n                release animation while the menu is open.\n            */if(hoveredPageTargetRef.current&&(!menuOwnsPointer||hoveredPageTargetRef.current.matches(PERSISTENT_NAV_TARGET_SELECTOR))){beginPageRelease(x,y);return;}if(pageReleaseRef.current.active){updateReleasedPieces(x,y);return;}/*\n                The pointer is inside the open dropdown but is not over\n                a dropdown label. Underlying page targets stay suppressed,\n                so return the pieces to the adaptive free cursor.\n\n                If we just left a dropdown label, carry that label's\n                color all the way home too.\n            */if(menuOwnsPointer){cancelCubeEat();/*\n                    IMPORTANT:\n                    Do NOT blindly call cancelPageRelease() here.\n\n                    Menu-label and hamburger/X color-memory releases use\n                    the same release-color tracker. The old code cleared\n                    that tracker again on the very next pointermove,\n                    which is why the effect looked like it never happened\n                    around the navbar/menu.\n\n                    Only cancel a REAL page-target peel if one is active.\n                */if(pageReleaseRef.current.active){cancelPageRelease();}if(hoveredPageTargetRef.current){clearPageTarget();}if(!dockedRef.current){if(pageReleaseRef.current.active){updateReleasedPieces(x,y);}else{releasePieces(x,y);}}return;}if(!dockedRef.current){releasePieces(x,y);}};const handleMove=event=>{if(event.pointerType&&event.pointerType!==\"mouse\"){return;}latestPointerMoveRef.current={x:event.clientX,y:event.clientY,target:event.target instanceof Element?event.target:null};if(pointerMoveFrameRef.current!==null)return;pointerMoveFrameRef.current=requestAnimationFrame(processPointerMove);};const handleOut=event=>{if(!event.relatedTarget){if(pointerMoveFrameRef.current!==null){cancelAnimationFrame(pointerMoveFrameRef.current);pointerMoveFrameRef.current=null;}latestPointerMoveRef.current=null;adaptiveBackgroundInvalidatedRef.current=true;cancelCubeEat();cancelPageRelease();if(visibleRef.current){visibleRef.current=false;setVisible(false);}hoveredMenuItemRef.current=null;setMenuItemHover(false);clearPageTarget();clearReleaseColors();}};window.addEventListener(\"pointermove\",handleMove,{passive:true});document.addEventListener(\"mouseout\",handleOut);return()=>{if(pointerMoveFrameRef.current!==null){cancelAnimationFrame(pointerMoveFrameRef.current);pointerMoveFrameRef.current=null;}latestPointerMoveRef.current=null;window.removeEventListener(\"pointermove\",handleMove);document.removeEventListener(\"mouseout\",handleOut);};},[enabled,pointerX,pointerY,darkColor,lightColor,menuOpen,closePalette,closeColor1,cancelCubeEat,cancelPageRelease,clearPageTarget,releasePieces,frameMenuItem,framePageTarget,beginPageRelease,updateReleasedPieces,clearReleaseColors,menuItemColor,beginMenuCornerRelease,getMenuTargetsForPanel]);/* =====================================================\n       LIVE MORPHING SHAPE TRACKING\n\n       CSS border-radius / scale transitions keep moving after the pointer\n       stops. While one of these image targets is active, sample its four\n       perimeter anchors every animation frame so the cursor visibly rides\n       the morph instead of jumping only on pointermove events.\n    ===================================================== */React.useEffect(()=>{if(!enabled||!pageTargetHover)return;let frame=null;const tick=()=>{const activeTarget=hoveredPageTargetRef.current;if(!activeTarget||!activeTarget.hasAttribute(\"data-max-cursor-shape-selector\")){frame=null;return;}updatePageTargetGeometry(activeTarget,pageTargetRotationRef.current,undefined,pageTargetHardLockedRef.current);frame=window.requestAnimationFrame(tick);};frame=window.requestAnimationFrame(tick);return()=>{if(frame!==null)window.cancelAnimationFrame(frame);};},[enabled,pageTargetHover,updatePageTargetGeometry]);/* =====================================================\n       SOLID PAGE-TARGET SCROLL LOCK / RESIZE\n    ===================================================== */React.useEffect(()=>{if(!enabled)return;let pageTargetScrollFrame=null;const updateActivePageTarget=()=>{pageTargetScrollFrame=null;if(dockedRef.current||hoveredMenuItemRef.current)return;const activeTarget=hoveredPageTargetRef.current;if(!activeTarget)return;const rect=activeTarget.getBoundingClientRect();const{x,y}=lastPointer.current;const pointerInsideTarget=x>=rect.left&&x<=rect.right&&y>=rect.top&&y<=rect.bottom;if(!pointerInsideTarget){beginPageRelease(x,y);return;}if(pageTargetHardLockedRef.current&&pageTargetHardLockedElementRef.current!==activeTarget){exitPageTargetHardLock();}if(!pageTargetHardLockedRef.current){pageTargetHardLockedRef.current=true;pageTargetHardLockedElementRef.current=activeTarget;setPageTargetHardLocked(true);}updatePageTargetGeometry(activeTarget,pageTargetRotationRef.current,rect,true);};const handleScroll=()=>{adaptiveBackgroundInvalidatedRef.current=true;if(dockedRef.current)return;if(hoveredMenuItemRef.current){frameMenuItem(hoveredMenuItemRef.current);return;}if(!hoveredPageTargetRef.current||pageTargetScrollFrame!==null){return;}pageTargetScrollFrame=window.requestAnimationFrame(updateActivePageTarget);};const handleResize=()=>{adaptiveBackgroundInvalidatedRef.current=true;if(dockedRef.current)return;if(hoveredMenuItemRef.current){frameMenuItem(hoveredMenuItemRef.current);return;}const activeTarget=hoveredPageTargetRef.current;if(!activeTarget)return;if(pageTargetHardLockedRef.current&&pageTargetHardLockedElementRef.current===activeTarget){const rect=activeTarget.getBoundingClientRect();updatePageTargetGeometry(activeTarget,pageTargetRotationRef.current,rect,true);return;}framePageTarget(activeTarget);};window.addEventListener(\"scroll\",handleScroll,true);window.addEventListener(\"resize\",handleResize);return()=>{if(pageTargetScrollFrame!==null){window.cancelAnimationFrame(pageTargetScrollFrame);}window.removeEventListener(\"scroll\",handleScroll,true);window.removeEventListener(\"resize\",handleResize);};},[enabled,frameMenuItem,framePageTarget,beginPageRelease,exitPageTargetHardLock,updatePageTargetGeometry]);/* =====================================================\n       VISUAL STATE\n    ===================================================== */const centerVisible=visible&&!docked&&!pageTargetHover;/*\n        RELEASE CENTER COLOR\n\n        The center square is the anchor the four released pieces are\n        reconnecting to. Keeping it in the target/menu color while ANY\n        outer piece is still charged makes the whole release read as one\n        connected system instead of four colored pieces returning to an\n        unrelated black center.\n\n        The center returns to its normal adaptive color only after the\n        final charged outer piece has reconnected.\n    */const releaseCenterColor=releasePieceColors.find(color=>color!==null)??null;const pieceSize=docked||menuItemHover||pageTargetHover||pageTargetReleasing?6:5;const basePieceColor=docked?dockTone===\"close\"?currentCloseColor:activeColor:menuItemHover?menuItemColor:pageTargetHover?pageTargetColor:cursorColor;const pieceColor=projectPulseActive&&projectPulseColor?projectPulseColor:basePieceColor;const pieceScale=projectPulseActive?1.18:docked?locked?1:.96:1;const centerSize=menuItemHover?6:5;if(!mounted||!enabled||typeof document===\"undefined\"){return null;}const pieces=[{springX:s1x,springY:s1y,directX:pageDirect1x,directY:pageDirect1y,orbitX:orbit1x,orbitY:orbit1y},{springX:s2x,springY:s2y,directX:pageDirect2x,directY:pageDirect2y,orbitX:orbit2x,orbitY:orbit2y},{springX:s3x,springY:s3y,directX:pageDirect3x,directY:pageDirect3y,orbitX:orbit3x,orbitY:orbit3y},{springX:s4x,springY:s4y,directX:pageDirect4x,directY:pageDirect4y,orbitX:orbit4x,orbitY:orbit4y}];return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(motion.div,{animate:{opacity:pageTargetHover?1:0},transition:{opacity:{duration:.12}},style:{position:\"fixed\",left:0,top:0,x:pageTargetX,y:pageTargetY,width:pageTargetWidth,height:pageTargetHeight,rotate:pageTargetRotation,transformOrigin:\"50% 50%\",borderRadius:pageTargetRadius,overflow:\"hidden\",pointerEvents:\"none\",zIndex:isPersistentNavPageTarget?CURSOR_STACK_Z:menuOpen?PAGE_TARGET_MENU_OPEN_STACK_Z:PAGE_TARGET_STACK_Z},children:/*#__PURE__*/_jsxs(motion.div,{style:{position:\"absolute\",inset:0,opacity:identityLensVisualOpacity,pointerEvents:\"none\"},children:[/*#__PURE__*/_jsx(motion.div,{animate:{backgroundColor:pageTargetColor},style:{position:\"absolute\",inset:0,// Standard target tint now lives below the real\n// content as an inset box-shadow.\nopacity:0,pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(motion.div,{animate:{borderColor:pageTargetColor},style:{position:\"absolute\",inset:0,boxSizing:\"border-box\",borderWidth:1,borderStyle:\"solid\",opacity:isContactCTATarget||isProjectRailTarget||isMorphingImageTarget?0:TARGET_BORDER_OPACITY,borderRadius:pageTargetRadius,pointerEvents:\"none\"}})]})}),menuUnderlayHost&&/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(motion.div,{animate:{opacity:menuItemHover?.31:0,scale:menuItemHover?1:.58,backgroundColor:menuItemColor,borderColor:menuItemHover?darkenHex(menuItemColor,.22):\"rgba(0, 0, 0, 0)\"},transition:{opacity:{duration:.1},scale:{type:\"spring\",stiffness:900,damping:30,mass:.1},backgroundColor:{duration:.14},borderColor:{duration:.12}},style:{position:\"absolute\",left:0,top:0,x:menuUnderlayX,y:menuUnderlayY,width:28,height:28,marginLeft:-14,marginTop:-14,borderRadius:\"50%\",borderStyle:\"solid\",borderWidth:1,boxSizing:\"border-box\",pointerEvents:\"none\",zIndex:-1}}),menuUnderlayHost),/*#__PURE__*/_jsxs(motion.div,{style:{position:\"fixed\",left:0,top:0,x:centerX,y:centerY,opacity:identityLensVisualOpacity,pointerEvents:\"none\",zIndex:CURSOR_STACK_Z},children:[/*#__PURE__*/_jsx(motion.div,{animate:{opacity:menuItemHover&&centerVisible&&!menuUnderlayHost?.31:0,scale:menuItemHover?1:.58,backgroundColor:menuItemColor,borderColor:menuItemHover&&centerVisible?darkenHex(menuItemColor,.22):\"rgba(0, 0, 0, 0)\"},transition:{opacity:{duration:.1},scale:{type:\"spring\",stiffness:900,damping:30,mass:.1},backgroundColor:{duration:.14},borderColor:{duration:.12}},style:{position:\"absolute\",left:-14,top:-14,width:28,height:28,borderRadius:\"50%\",borderStyle:\"solid\",borderWidth:1,boxSizing:\"border-box\"}}),/*#__PURE__*/_jsx(motion.div,{animate:{/*\n                            MENU LABELS:\n                            Keep the soft colored circle, but hide the\n                            tiny center square so the menu text stays\n                            easier to read.\n\n                            Everywhere else, the normal center square\n                            behaves exactly as before.\n                        */opacity:centerVisible&&!menuItemHover?1:0,scale:cubeHealingBloom&&centerVisible&&!menuItemHover?1.38:projectPulseActive&&centerVisible&&!menuItemHover?1.18:centerVisible&&!menuItemHover?1:.42,width:centerSize,height:centerSize,marginLeft:-centerSize/2,marginTop:-centerSize/2,backgroundColor:cubeCenterMagicColor??releaseCenterColor??(projectPulseActive&&projectPulseColor?projectPulseColor:cursorColor)},transition:{opacity:{duration:.085},scale:{type:\"spring\",stiffness:1050,damping:32},width:{type:\"spring\",stiffness:1e3,damping:32},height:{type:\"spring\",stiffness:1e3,damping:32},marginLeft:{type:\"spring\",stiffness:1e3,damping:32},marginTop:{type:\"spring\",stiffness:1e3,damping:32},backgroundColor:{duration:cubeHealingFadeSlow?CUBE_HEAL_FADE_MS/1e3:releaseCenterColor?.085:.1}},style:{borderRadius:.6}})]}),stolenPieceIndex!==null&&(stolenPieceWild||stolenPieceSettling)&&/*#__PURE__*/_jsx(_Fragment,{children:[{x:trail1x,y:trail1y,opacity:.3,scale:.82},{x:trail2x,y:trail2y,opacity:.2,scale:.68},{x:trail3x,y:trail3y,opacity:.13,scale:.54},{x:trail4x,y:trail4y,opacity:.07,scale:.4}].map((trail,index)=>/*#__PURE__*/_jsx(motion.div,{style:{position:\"fixed\",left:0,top:0,x:trail.x,y:trail.y,width:pieceSize,height:pieceSize,marginLeft:-pieceSize/2,marginTop:-pieceSize/2,pointerEvents:\"none\",zIndex:2147483646,transformOrigin:\"50% 50%\"},animate:{opacity:stolenPieceWild?trail.opacity:0,scale:trail.scale,rotate:45},transition:{opacity:{duration:stolenPieceWild?.08:.18},scale:{duration:.1}},children:/*#__PURE__*/_jsx(motion.div,{style:{width:\"100%\",height:\"100%\",opacity:identityLensVisualOpacity,borderRadius:.6,background:stolenPieceIndex!==null?cubeMagicColors[stolenPieceIndex]??pieceColor:pieceColor}})},`spit-trail-${index}`))}),pieces.map((piece,index)=>{const stolenPieceActive=stolenPieceIndex===index;const stolenAndHidden=stolenPieceActive&&!stolenPieceVisible;const spitPieceActive=stolenPieceActive&&stolenPieceWild;const spitPieceSettling=stolenPieceActive&&stolenPieceSettling;const renderedPieceScale=cubeHealingBloom?pieceScale*1.08:spitPieceActive?pieceScale*1.04:spitPieceSettling?pieceScale:stolenPieceActive&&stolenPieceVisible?pieceScale*.84:pieceScale;const releasePieceCharged=releasePieceColors[index]!==null;const renderedPieceColor=cubeMagicColors[index]??(docked||menuItemHover||pageTargetHover?pieceColor:releasePieceCharged?releasePieceColors[index]:pieceColor);return /*#__PURE__*/_jsx(motion.div,{animate:{/*\n                                Wild bounce ends on two full rotations.\n                                During the catch phase, ease back 45° so\n                                the nested 45° stolen-piece tilt resolves\n                                into a visually upright square. When the\n                                state clears, 675° + 45° and 0° + 0° are\n                                visually identical, so there is no final\n                                orientation pop.\n                            */rotate:spitPieceActive?[0,144,288,432,576,720]:spitPieceSettling?675:0},transition:{rotate:spitPieceActive?{duration:1.3,ease:\"linear\"}:spitPieceSettling?{duration:.34,ease:[.22,1,.36,1]}:{duration:0}},style:{position:\"fixed\",left:0,top:0,x:docked&&orbitMode?piece.orbitX:pageTargetHardLocked&&pageTargetHover?piece.directX:piece.springX,y:docked&&orbitMode?piece.orbitY:pageTargetHardLocked&&pageTargetHover?piece.directY:piece.springY,opacity:identityLensVisualOpacity,pointerEvents:\"none\",zIndex:pageTargetHover||pageTargetReleasing?isPersistentNavPageTarget?CURSOR_STACK_Z:menuOpen?PAGE_TARGET_MENU_OPEN_STACK_Z:PAGE_TARGET_STACK_Z:CURSOR_STACK_Z,transformOrigin:\"50% 50%\"},children:/*#__PURE__*/_jsx(motion.div,{animate:{opacity:stolenAndHidden?0:1,width:pieceSize,height:pieceSize,marginLeft:-pieceSize/2,marginTop:-pieceSize/2,scale:renderedPieceScale,backgroundColor:renderedPieceColor,borderRadius:docked||menuItemHover||pageTargetHover||releasePieceCharged?0:.6},style:{rotate:docked?orbitMode?menuRotation:menuOpen?45:0:stolenPieceActive&&stolenPieceVisible?45:0,transformOrigin:\"50% 50%\"},transition:{opacity:{duration:.07},width:{type:\"spring\",stiffness:950,damping:32},height:{type:\"spring\",stiffness:950,damping:32},scale:{type:\"spring\",stiffness:1150,damping:35,mass:.1},backgroundColor:{duration:cubeHealingFadeSlow?CUBE_HEAL_FADE_MS/1e3:pageTargetHover||menuItemHover||docked?.12:releasePieceCharged?.085:.1}}})},`piece-${index}`);})]}),document.body);}/* =========================================================\n   FRAMER\n========================================================= */CursorCompanionHomeV11.defaultProps={darkColor:\"#26384A\",lightColor:\"#BBDDFF\",activeColor:\"#FF6B5F\",closeColor1:\"#BBDDFF\",closeColor2:\"#DDF76F\",closeColor3:\"#C9B6FF\",closeColor4:\"#9FE7DA\",closeColor5:\"#FFD98A\"};addPropertyControls(CursorCompanionHomeV11,{darkColor:{type:ControlType.Color,title:\"Dark\"},lightColor:{type:ControlType.Color,title:\"Light\"},activeColor:{type:ControlType.Color,title:\"Open\"},closeColor1:{type:ControlType.Color,title:\"Blue\"},closeColor2:{type:ControlType.Color,title:\"Lime\"},closeColor3:{type:ControlType.Color,title:\"Purple\"},closeColor4:{type:ControlType.Color,title:\"Aqua\"},closeColor5:{type:ControlType.Color,title:\"Gold\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CursorCompanionHomeV11\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CursorCompanionHomeV8.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal}from\"react-dom\";import{motion,motionValue,useTransform}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";const MENU_EVENT=\"max-portfolio-menu-interaction\";const MENU_REQUEST_CLOSE_EVENT=\"max-portfolio-menu-request-close\";const SHARED_ROTATION_KEY=\"__MAX_PORTFOLIO_MENU_ROTATION__\";/* =========================================================\n   SHARED ROTATION\n========================================================= */function getSharedRotation(){if(typeof window===\"undefined\"){return motionValue(0);}const win=window;if(!win[SHARED_ROTATION_KEY]){win[SHARED_ROTATION_KEY]=motionValue(0);}return win[SHARED_ROTATION_KEY];}/* =========================================================\n   COMPONENT\n========================================================= */export default function MenuPanelV8(props){const{content,topOffset,rightInset,scrimOpacity,closeOnItemClick,previewOpen}=props;const[mounted,setMounted]=React.useState(false);const[menuOpen,setMenuOpen]=React.useState(false);const menuRotation=React.useMemo(()=>getSharedRotation(),[]);/* =====================================================\n       CONSTRUCTION REVEAL\n    ===================================================== */const panelClip=useTransform(menuRotation,[0,8,20,34,45],[\"inset(0% 0% 100% 100%)\",\"inset(0% 0% 94% 94%)\",\"inset(0% 0% 0% 94%)\",\"inset(0% 0% 0% 30%)\",\"inset(0% 0% 0% 0%)\"]);/* =====================================================\n       CONTENT REVEAL\n    ===================================================== */const contentOpacity=useTransform(menuRotation,[0,25,34,45],[0,0,.55,1]);const contentY=useTransform(menuRotation,[25,45],[-5,0]);const contentScale=useTransform(menuRotation,[25,45],[.992,1]);/* =====================================================\n       OPTIONAL VISUAL SCRIM\n\n       VISUAL ONLY.\n\n       It must NEVER capture the pointer.\n       Outside click is already handled by\n       MenuTriggerV8 at the document level.\n    ===================================================== */const backdropOpacity=useTransform(menuRotation,[0,45],[0,scrimOpacity]);/* =====================================================\n       MOUNT\n    ===================================================== */React.useEffect(()=>{setMounted(true);},[]);/* =====================================================\n       LISTEN TO MENU STATE\n    ===================================================== */React.useEffect(()=>{if(!mounted)return;const handleMenuEvent=event=>{const custom=event;if(!custom.detail){return;}setMenuOpen(custom.detail.open);};window.addEventListener(MENU_EVENT,handleMenuEvent);return()=>{window.removeEventListener(MENU_EVENT,handleMenuEvent);};},[mounted]);/* =====================================================\n       MENU ITEM CLICK\n    ===================================================== */const handleContentClick=event=>{if(!closeOnItemClick){return;}const target=event.target;if(!target){return;}const interactive=target.closest(`\n            a,\n            button,\n            [role=\"link\"],\n            [data-menu-link=\"true\"]\n        `);if(!interactive){return;}window.dispatchEvent(new CustomEvent(MENU_REQUEST_CLOSE_EVENT));};if(!mounted||typeof document===\"undefined\"){return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\"}});}const visible=menuOpen||previewOpen;return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{style:{position:\"fixed\",inset:0,zIndex:2147483e3,/*\n                    IMPORTANT:\n\n                    The portal shell itself is\n                    NEVER allowed to catch the mouse.\n                */pointerEvents:\"none\"},\"aria-hidden\":visible?undefined:true,children:[/*#__PURE__*/_jsx(motion.div,{style:{position:\"absolute\",left:0,right:0,top:topOffset,bottom:0,background:\"#111111\",opacity:previewOpen?scrimOpacity:backdropOpacity,/*\n                        CRITICAL:\n\n                        Even at opacity 0, an element\n                        with pointerEvents:auto still\n                        intercepts hover.\n\n                        Keep this visual-only.\n                    */pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(motion.nav,{\"data-max-menu-panel\":\"true\",\"aria-label\":\"Primary navigation\",onClickCapture:handleContentClick,style:{position:\"absolute\",top:topOffset,right:rightInset,width:\"max-content\",maxWidth:\"100vw\",padding:0,margin:0,background:\"transparent\",border:\"none\",borderRadius:0,clipPath:previewOpen?\"inset(0% 0% 0% 0%)\":panelClip,overflow:\"hidden\",transformOrigin:\"100% 0%\",/*\n                        ONLY the actual dropdown\n                        receives pointer input.\n                    */pointerEvents:visible?\"auto\":\"none\"},children:/*#__PURE__*/_jsx(motion.div,{style:{width:\"max-content\",maxWidth:\"100vw\",opacity:previewOpen?1:contentOpacity,y:previewOpen?0:contentY,scale:previewOpen?1:contentScale,transformOrigin:\"50% 0%\"},children:content?content:/*#__PURE__*/_jsx(\"div\",{style:{padding:28,fontFamily:\"sans-serif\",fontSize:14,color:\"#66635F\"},children:\"Connect Menu Content.\"})})})]}),document.body);}/* =========================================================\n   DEFAULTS\n========================================================= */MenuPanelV8.defaultProps={topOffset:72,rightInset:0,scrimOpacity:0,closeOnItemClick:true,previewOpen:false};/* =========================================================\n   FRAMER CONTROLS\n========================================================= */addPropertyControls(MenuPanelV8,{content:{type:ControlType.ComponentInstance,title:\"Content\"},topOffset:{type:ControlType.Number,title:\"Top\",min:0,max:200,step:1,unit:\"px\"},rightInset:{type:ControlType.Number,title:\"Right\",min:0,max:120,step:1,unit:\"px\"},scrimOpacity:{type:ControlType.Number,title:\"Scrim\",min:0,max:.25,step:.01},closeOnItemClick:{type:ControlType.Boolean,title:\"Close on Click\",enabledTitle:\"Yes\",disabledTitle:\"No\"},previewOpen:{type:ControlType.Boolean,title:\"Preview\",enabledTitle:\"Open\",disabledTitle:\"Closed\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MenuPanelV8\",\"slots\":[\"content\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MenuPanelV8.map","import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{forwardRef}from\"react\";const MENU_EVENT=\"max-portfolio-menu-interaction\";/* =========================================================\n   SMART NAVBAR V8\n\n   IMPORTANT:\n   The navbar itself must be set to FIXED natively in Framer.\n\n   This override ONLY controls show / hide behavior.\n   It does not change position, width, height, or layout.\n========================================================= */const TOP_VISIBLE_ZONE=80;const HIDE_AFTER_DOWN_PX=50;const SHOW_AFTER_UP_PX=10;const MIN_SCROLL_DELTA=1.5;const NAV_TRANSITION_MS=260;export function withSmartNavbar(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[hidden,setHidden]=React.useState(false);const menuOpenRef=React.useRef(false);const lastScrollYRef=React.useRef(0);const downwardTravelRef=React.useRef(0);const upwardTravelRef=React.useRef(0);const resetTravel=React.useCallback(()=>{downwardTravelRef.current=0;upwardTravelRef.current=0;},[]);/* =================================================\n           EXISTING V8 MENU STATE\n        ================================================= */React.useEffect(()=>{const handleMenuEvent=event=>{const custom=event;const detail=custom.detail;if(!detail)return;const isOpen=Boolean(detail.open);menuOpenRef.current=isOpen;/*\n                    OPEN MENU = NAVBAR STAYS VISIBLE\n                */if(isOpen){setHidden(false);resetTravel();}};window.addEventListener(MENU_EVENT,handleMenuEvent);return()=>{window.removeEventListener(MENU_EVENT,handleMenuEvent);};},[resetTravel]);/* =================================================\n           SCROLL BEHAVIOR\n        ================================================= */React.useEffect(()=>{lastScrollYRef.current=Math.max(0,window.scrollY||0);const handleScroll=()=>{const currentY=Math.max(0,window.scrollY||0);const previousY=lastScrollYRef.current;const delta=currentY-previousY;lastScrollYRef.current=currentY;/* =========================================\n                   MENU OPEN\n\n                   Never hide the navbar.\n                ========================================= */if(menuOpenRef.current){setHidden(false);resetTravel();return;}/* =========================================\n                   TOP OF PAGE\n                ========================================= */if(currentY<=TOP_VISIBLE_ZONE){setHidden(false);resetTravel();return;}/* =========================================\n                   IGNORE TINY TRACKPAD MOVEMENTS\n                ========================================= */if(Math.abs(delta)<MIN_SCROLL_DELTA){return;}/* =========================================\n                   SCROLL DOWN\n                ========================================= */if(delta>0){downwardTravelRef.current+=delta;upwardTravelRef.current=0;if(downwardTravelRef.current>=HIDE_AFTER_DOWN_PX){setHidden(true);downwardTravelRef.current=0;}return;}/* =========================================\n                   SCROLL UP\n                ========================================= */upwardTravelRef.current+=Math.abs(delta);downwardTravelRef.current=0;if(upwardTravelRef.current>=SHOW_AFTER_UP_PX){setHidden(false);upwardTravelRef.current=0;}};window.addEventListener(\"scroll\",handleScroll,{passive:true});return()=>{window.removeEventListener(\"scroll\",handleScroll);};},[resetTravel]);/* =================================================\n           RENDER\n\n           ONLY add translate animation.\n\n           Framer owns all actual positioning.\n        ================================================= */return /*#__PURE__*/_jsx(Component,{ref:ref,...props,\"data-max-smart-navbar\":\"true\",style:{...props.style,translate:hidden?\"0 -110%\":\"0 0\",transition:`translate ${NAV_TRANSITION_MS}ms cubic-bezier(0.22, 1, 0.36, 1)`,willChange:\"translate\"}});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withSmartNavbar\":{\"type\":\"reactHoc\",\"name\":\"withSmartNavbar\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SmartNavbarV8.map"],"mappings":"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"}