{"version":3,"file":"script_main.ByWoMRLb.mjs","names":["getProps","React.forwardRef","useState","useRef","useRef","Linkedin","useRef","React.useId","RichText","React.Fragment","React.createElement","PortfolioLayout","Framer.PageRoot","Framer.lazy","Framer.useCurrentRoute","Framer.useLocaleInfo","Framer.useRouter","React.Fragment","React.memo","React.useCallback","React.useEffect","React.useRef","React.useState","React.useLayoutEffect","Framer.LazyValue","Framer.GracefullyDegradingErrorBoundary","Framer.PageEffectsProvider","Framer.patchRoutesForABTesting","Framer.inferInitialRouteFromPath","Framer.yieldToMain","React.startTransition","Framer.ErrorPlaceholder"],"sources":["https:/framerusercontent.com/modules/jLVfLScc4Pw6lyTMb6Ap/WV2r0vnJw1UsYWrqninT/AGIu2296z.js","https:/framerusercontent.com/modules/HO8MtSzawsSPIPu17QZX/uQF1JUOQgOnMCoCenfsF/CopyToClipboardButton.js","https:/framerusercontent.com/modules/tdLkdTcCd4WOU2Tzoq7q/WvEQS9MhlN6DRffKeZHa/NarrowStackReorder.js","https:/framerusercontent.com/modules/zpwzTAabLxvRgvFQDh4m/rOkUbPB5B25zxexLb8AD/SignatureMark.js","https:/framerusercontent.com/modules/Y5kVj9UBXhUtzgrIVTSm/qpbT8yqkcjpGBKok53P3/ihFvbEvJp.js","framer:toplevel/main"],"sourcesContent":["// Generated by Framer (4897c59)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const JW2ySfJQW=undefined;const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 13.631 13.635 L 11.262 13.635 L 11.262 9.922 C 11.262 9.037 11.244 7.897 10.027 7.897 C 8.792 7.897 8.603 8.861 8.603 9.857 L 8.603 13.635 L 6.234 13.635 L 6.234 6 L 8.51 6 L 8.51 7.041 L 8.541 7.041 C 8.859 6.441 9.632 5.807 10.787 5.807 C 13.188 5.807 13.632 7.387 13.632 9.444 L 13.632 13.635 Z M 3.558 4.955 C 3.193 4.956 2.843 4.811 2.584 4.553 C 2.326 4.294 2.182 3.944 2.183 3.579 C 2.183 2.819 2.799 2.203 3.559 2.203 C 4.319 2.204 4.935 2.82 4.935 3.58 C 4.934 4.34 4.318 4.956 3.558 4.955 M 4.746 13.635 L 2.37 13.635 L 2.37 6 L 4.746 6 Z M 14.817 0 L 1.181 0 C 0.528 0 0 0.516 0 1.153 L 0 14.847 C 0 15.485 0.528 16 1.181 16 L 14.815 16 C 15.467 16 16 15.485 16 14.847 L 16 1.153 C 16 0.516 15.467 0 14.815 0 Z\" fill=\"var(--t829wi, rgb(0,0,0))\" height=\"16px\" id=\"lXK6yGtMH\" width=\"16px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({fill,height,id,width,...props})=>{return{...props,JW2ySfJQW:fill??props.JW2ySfJQW??\"rgb(0, 0, 0)\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,JW2ySfJQW,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-bB1hS\",className),layoutId:layoutId,ref:ref,style:{\"--t829wi\":JW2ySfJQW,...style}});});const css=[`.framer-bB1hS { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--t829wi); mask: ${mask}; width: 16px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 16\n * @framerIntrinsicHeight 16\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"JW2ySfJQW\":\"fill\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Linkedin\",\"color\":{\"type\":\"variable\",\"value\":\"t829wi\"},\"set\":{\"localId\":\"vectorSet/uK5ESDkg3\",\"id\":\"uK5ESDkg3\",\"moduleId\":\"rTgCpOIUH6tdiqNh47fL\"}}\n */const Icon=withCSS(Component,css,\"framer-bB1hS\");Icon.displayName=\"Linkedin\";export default Icon;addPropertyControls(Icon,{JW2ySfJQW:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Fill\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"16\",\"framerIntrinsicWidth\":\"16\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerVariables\":\"{\\\"JW2ySfJQW\\\":\\\"fill\\\"}\",\"framerVector\":\"{\\\"name\\\":\\\"Linkedin\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"t829wi\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/uK5ESDkg3\\\",\\\"id\\\":\\\"uK5ESDkg3\\\",\\\"moduleId\\\":\\\"rTgCpOIUH6tdiqNh47fL\\\"}}\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import{useState,useRef,useEffect}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * CopyToClipboardButton\n * Displays an email/text value; clicking it copies that value to the\n * clipboard and temporarily swaps the displayed text to a \"copied\"\n * message via a soft crossfade, before fading back to the original text\n * after a set duration.\n *\n * Rendered with role=\"button\" so custom cursors / hover-interaction\n * detection that look for real a/button/[role=button] elements (e.g. a\n * hover-grow effect) correctly treat this as clickable, even though it's\n * a styled span rather than a native button element.\n *\n * The fontFamily prop expects a REAL CSS font-family name (e.g.\n * \"Zalando Sans SemiExpanded\"), not a Framer internal style selector\n * (like \"GF;Zalando Sans SemiExpanded-regular\") — those selector strings\n * only resolve inside Framer's own native text/style system and are\n * meaningless as literal CSS, so passing one directly here would\n * silently fall back to the default font. When useGoogleFont is on, the\n * named Google Font is loaded automatically via a stylesheet link so it\n * actually renders correctly rather than just being requested.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function CopyToClipboardButton(props){const{text,copiedText,revertDuration,fadeDuration,fontFamily,fontWeight,useGoogleFont,color,fontSize,letterSpacing,lineHeight,textTransform}=props;const[displayedText,setDisplayedText]=useState(text);const[visible,setVisible]=useState(true);const revertTimeoutRef=useRef(null);const fadeTimeoutRef=useRef(null);useEffect(()=>{if(!useGoogleFont||!fontFamily||typeof document===\"undefined\")return;const id=`gf-${fontFamily.replace(/\\s+/g,\"-\")}`;if(document.getElementById(id))return;const link=document.createElement(\"link\");link.id=id;link.rel=\"stylesheet\";link.href=`https://fonts.googleapis.com/css2?family=${encodeURIComponent(fontFamily)}:wght@100;200;300;400;500;600;700;800;900&display=swap`;document.head.appendChild(link);},[useGoogleFont,fontFamily]);const swapTo=(newText,holdThenRevert)=>{if(revertTimeoutRef.current)window.clearTimeout(revertTimeoutRef.current);if(fadeTimeoutRef.current)window.clearTimeout(fadeTimeoutRef.current);const halfFade=fadeDuration/2;// Fade out the current text.\nsetVisible(false);// Once faded out, swap the text content and fade it back in.\nfadeTimeoutRef.current=window.setTimeout(()=>{setDisplayedText(newText);setVisible(true);},halfFade);if(holdThenRevert){revertTimeoutRef.current=window.setTimeout(()=>{swapTo(text,false);},halfFade+revertDuration);}};const handleClick=async e=>{e.preventDefault();try{if(typeof navigator!==\"undefined\"&&navigator.clipboard){await navigator.clipboard.writeText(text);}}catch{// Clipboard write failed (e.g. unsupported browser/permissions) —\n// still show the \"copied\" state for consistent visual feedback.\n}swapTo(copiedText,true);};return /*#__PURE__*/_jsx(\"span\",{role:\"button\",tabIndex:0,onClick:handleClick,style:{fontFamily:`${fontFamily}, sans-serif`,fontWeight,color,fontSize,letterSpacing,lineHeight,textTransform,cursor:\"pointer\",display:\"inline-block\",whiteSpace:\"nowrap\",opacity:visible?1:0,transition:`opacity ${fadeDuration/2}ms ease`},children:displayedText});}addPropertyControls(CopyToClipboardButton,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"hello@carlsherry.com\"},copiedText:{type:ControlType.String,title:\"Copied Text\",defaultValue:\"COPIED\"},revertDuration:{type:ControlType.Number,title:\"Hold Before Revert (ms)\",defaultValue:1e3,min:200,max:5e3,step:100},fadeDuration:{type:ControlType.Number,title:\"Fade Duration (ms)\",defaultValue:1e3,min:100,max:3e3,step:100,description:\"Total crossfade time for each text swap (fade-out + fade-in).\"},fontFamily:{type:ControlType.String,title:\"Font Family\",defaultValue:\"inherit\"},fontWeight:{type:ControlType.Number,title:\"Font Weight\",defaultValue:400,min:100,max:900,step:100},useGoogleFont:{type:ControlType.Boolean,title:\"Load Google Font\",defaultValue:false,description:\"Loads Font Family as a Google Font automatically. Turn off if it's a system font or already loaded elsewhere.\"},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FFFFFF\"},fontSize:{type:ControlType.String,title:\"Font Size\",defaultValue:\"0.8rem\"},letterSpacing:{type:ControlType.String,title:\"Letter Spacing\",defaultValue:\"0.05em\"},lineHeight:{type:ControlType.String,title:\"Line Height\",defaultValue:\"1em\"},textTransform:{type:ControlType.Enum,title:\"Transform\",options:[\"none\",\"uppercase\",\"lowercase\",\"capitalize\"],defaultValue:\"none\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CopyToClipboardButton\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CopyToClipboardButton.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * NarrowStackReorder\n * An invisible helper placed as a child inside a row of items (e.g. a\n * footer). When the layout is narrow (a phone-sized layout) it turns the\n * row into a column, brings the LAST item to the top (e.g. an icon that\n * sits at the right end on desktop now sits above the text), and spaces\n * the items evenly — then restores the original row exactly as soon as\n * the layout is wide again.\n *\n * It measures the width of the row itself (not the browser window), so\n * it behaves the same on a real phone, a narrowed browser, and inside\n * Framer's Phone breakpoint frame. Tablet and desktop are never touched.\n *\n * Why this exists: a Phone breakpoint can't reorder the items inside a\n * row, and a row that merely wraps would drop the last item BELOW the\n * text rather than above it. This switches the row to a column and moves\n * the last item first, only when narrow.\n *\n * Text blocks keep a real width when stacked: in the desktop row, a text\n * block is told to \"fill the space that's left\" (a flexible width). Turned\n * into a column, that same sizing collapses to almost nothing, and the\n * text wraps one letter per line down the screen. So when stacked, every\n * item that contains text is given its natural width instead — the full\n * width of the column — and it's centred. The text then reads as a normal\n * paragraph. The original sizing is restored when the row goes back to\n * wide.\n *\n * Page margins on narrow screens: `narrowSideMargin` sets the clear space\n * (in px) on the left AND right of the stacked content, measured from the\n * edge of the screen. Set to 10, the text block runs from 10px in on the\n * left to 10px in on the right. It does this by replacing the row's own\n * side padding and lifting the text block's maximum width (e.g. a 90%\n * cap) so the block can use the whole width between the margins. -1\n * leaves the row's padding and the text's maximum width exactly as\n * designed.\n *\n * Alignment:\n *  - `narrowAlign` aligns all stacked items.\n *  - `movedItemAlign` aligns the item moved to the top (e.g. an icon) on\n *    its own.\n *  - `centerText` (on by default) also centres the lines of text inside\n *    each text block, so a multi-line paragraph is centred line by line.\n *\n * Empty items — layers with nothing inside them, such as invisible\n * spacers used to balance the row on wide screens — are hidden while\n * stacked (whatever their size), so they don't leave a blank gap between\n * the stacked items.\n *\n * Original values are saved before being overridden and restored exactly\n * on wide layouts; the override is re-applied if Framer re-renders.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function NarrowStackReorder(props){const{narrowBelow,narrowAlign,movedItemAlign,centerText,narrowGap,lastItemFirst,hideEmptyItems,narrowSideMargin}=props;const selfRef=useRef(null);useEffect(()=>{const self=selfRef.current;if(!self||typeof window===\"undefined\")return;// Nearest ancestor with a flex layout = the row being re-ordered.\nlet row=null;let node=self;for(let i=0;i<8&&node;i++){const parent=node.parentElement;if(!parent)break;if(window.getComputedStyle(parent).display===\"flex\"){row=parent;break;}node=parent;}if(!row)return;const rowEl=row;// The direct child of the row that contains this helper.\nlet ownTop=self;while(ownTop&&ownTop.parentElement!==rowEl)ownTop=ownTop.parentElement;const rowProps=[\"flex-direction\",\"align-items\",\"justify-content\",\"row-gap\",\"flex-wrap\",\"padding-left\",\"padding-right\"];const childProps=[\"order\",\"align-self\",\"display\",\"width\",\"flex\",\"max-width\"];const savedRow={};const savedChild=new Map;const savedText=new Map;const saveRow=()=>{rowProps.forEach(p=>{savedRow[p]={value:rowEl.style.getPropertyValue(p),priority:rowEl.style.getPropertyPriority(p)};});};const saveChild=el=>{if(savedChild.has(el))return;const rec={};childProps.forEach(p=>{rec[p]={value:el.style.getPropertyValue(p),priority:el.style.getPropertyPriority(p)};});savedChild.set(el,rec);};const restoreAll=()=>{rowProps.forEach(p=>{const s=savedRow[p];if(s&&s.value)rowEl.style.setProperty(p,s.value,s.priority);else rowEl.style.removeProperty(p);});savedChild.forEach((rec,el)=>{childProps.forEach(p=>{const s=rec[p];if(s&&s.value)el.style.setProperty(p,s.value,s.priority);else el.style.removeProperty(p);});});savedChild.clear();savedText.forEach((s,el)=>{if(s.value)el.style.setProperty(\"text-align\",s.value,s.priority);else el.style.removeProperty(\"text-align\");});savedText.clear();};saveRow();let applying=false;let narrow=false;const toFlex=v=>v===\"center\"?\"center\":v===\"end\"?\"flex-end\":\"flex-start\";const TEXT_SELECTOR=\"p, h1, h2, h3, h4, h5, h6\";const items=()=>Array.from(rowEl.children).filter(el=>{if(el===ownTop)return false;const pos=window.getComputedStyle(el).position;return pos!==\"absolute\"&&pos!==\"fixed\";});// A layer with nothing in it: no child layers and no text.\nconst isEmptyItem=el=>el.children.length===0&&!(el.textContent||\"\").trim();const apply=()=>{const width=rowEl.getBoundingClientRect().width;const nowNarrow=width>0&&width<narrowBelow;const useMargins=narrowSideMargin>=0;applying=true;if(nowNarrow){if(!narrow)saveRow();rowEl.style.setProperty(\"flex-direction\",\"column\",\"important\");rowEl.style.setProperty(\"flex-wrap\",\"nowrap\",\"important\");rowEl.style.setProperty(\"align-items\",toFlex(narrowAlign),\"important\");rowEl.style.setProperty(\"justify-content\",\"flex-start\",\"important\");rowEl.style.setProperty(\"row-gap\",`${narrowGap}px`,\"important\");if(useMargins){// Replace the row's side padding with the page margin.\nrowEl.style.setProperty(\"padding-left\",`${narrowSideMargin}px`,\"important\");rowEl.style.setProperty(\"padding-right\",`${narrowSideMargin}px`,\"important\");}// Hide empty placeholder items first, so the \"last item\" below\n// is a real one.\nconst all=items();all.forEach(el=>{saveChild(el);if(hideEmptyItems&&isEmptyItem(el)){el.style.setProperty(\"display\",\"none\",\"important\");}});const list=hideEmptyItems?all.filter(el=>!isEmptyItem(el)):all;list.forEach((el,i)=>{const isMoved=lastItemFirst&&i===list.length-1;if(isMoved){// Move the last item to the front, and align it on its own.\nel.style.setProperty(\"order\",\"-1\");if(movedItemAlign&&movedItemAlign!==\"same\"){el.style.setProperty(\"align-self\",toFlex(movedItemAlign),\"important\");}}const texts=Array.from(el.querySelectorAll(TEXT_SELECTOR));if(texts.length>0){// A text block must have a real width in a column. Its\n// desktop sizing (\"fill what's left\") collapses to ~1px\n// here, which wraps text one letter per line. Give it the\n// column's width and stop it flexing, then centre it.\nel.style.setProperty(\"width\",\"100%\",\"important\");el.style.setProperty(\"flex\",\"0 0 auto\",\"important\");// With page margins set, lift any maximum-width cap so the\n// block uses the full width between the margins.\nif(useMargins)el.style.setProperty(\"max-width\",\"100%\",\"important\");if(!isMoved)el.style.setProperty(\"align-self\",\"center\",\"important\");if(centerText){texts.forEach(t=>{if(!savedText.has(t)){savedText.set(t,{value:t.style.getPropertyValue(\"text-align\"),priority:t.style.getPropertyPriority(\"text-align\")});}t.style.setProperty(\"text-align\",\"center\",\"important\");});}}});}else if(narrow){restoreAll();}narrow=nowNarrow;applying=false;};apply();const ro=typeof ResizeObserver!==\"undefined\"?new ResizeObserver(apply):null;if(ro)ro.observe(rowEl);const mo=new MutationObserver(()=>{if(!applying&&narrow)apply();});mo.observe(rowEl,{attributes:true,attributeFilter:[\"style\"],subtree:true});window.addEventListener(\"resize\",apply);const timers=[window.setTimeout(apply,300),window.setTimeout(apply,1200)];return()=>{if(ro)ro.disconnect();mo.disconnect();window.removeEventListener(\"resize\",apply);timers.forEach(t=>window.clearTimeout(t));if(narrow)restoreAll();};},[narrowBelow,narrowAlign,movedItemAlign,centerText,narrowGap,lastItemFirst,hideEmptyItems,narrowSideMargin]);return /*#__PURE__*/_jsx(\"div\",{ref:selfRef,style:{width:0,height:0,overflow:\"hidden\"}});}addPropertyControls(NarrowStackReorder,{narrowBelow:{type:ControlType.Number,title:\"Narrow Below (px)\",defaultValue:600,min:200,max:1e3,description:\"When the row is narrower than this, it becomes a column. Phones are ~390px; tablets ~810px.\"},narrowSideMargin:{type:ControlType.Number,title:\"Narrow Side Margin (px)\",defaultValue:10,min:-1,max:120,description:\"On narrow screens, the clear space on each side of the stacked content, from the screen edge. The text block fills the width between. -1 = leave the row's padding and the text's max width as designed.\"},narrowAlign:{type:ControlType.Enum,title:\"Narrow Alignment\",options:[\"start\",\"center\",\"end\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"start\",description:\"Horizontal alignment of the stacked items on narrow screens.\"},movedItemAlign:{type:ControlType.Enum,title:\"Moved Item Alignment\",options:[\"same\",\"start\",\"center\",\"end\"],optionTitles:[\"Same as others\",\"Left\",\"Center\",\"Right\"],defaultValue:\"center\",description:\"Alignment of the item moved to the top (e.g. the logo), independent of the others.\"},centerText:{type:ControlType.Boolean,title:\"Center Text\",defaultValue:true,description:\"On narrow screens, also centre the lines of text inside each text block.\"},narrowGap:{type:ControlType.Number,title:\"Narrow Gap (px)\",defaultValue:10,min:0,max:120,description:\"Space between the stacked items.\"},lastItemFirst:{type:ControlType.Boolean,title:\"Last Item To Top\",defaultValue:true,description:\"On narrow screens, move the last item in the row to the top of the stack.\"},hideEmptyItems:{type:ControlType.Boolean,title:\"Hide Empty Items\",defaultValue:true,description:\"Hide layers with nothing inside them (e.g. balancing spacers) while stacked, so they leave no gap.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NarrowStackReorder\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NarrowStackReorder.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";/**\n * SignatureMark\n * Shows the signature logo image at the size of its layer. The image is\n * loaded straight from where it's already hosted, so it doesn't depend on\n * uploading a new image to the layer. It fills the layer exactly (contain\n * fit, so it's never stretched or cropped), so the layer's width and\n * height set its size: the footer uses 50 x 38.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function SignatureMark(props){const{src,label,opacity}=props;return /*#__PURE__*/_jsx(\"img\",{src:src,alt:label,draggable:false,style:{display:\"block\",width:\"100%\",height:\"100%\",objectFit:\"contain\",opacity,userSelect:\"none\"}});}addPropertyControls(SignatureMark,{src:{type:ControlType.String,title:\"Image URL\",defaultValue:\"https://framerusercontent.com/images/ilHiY6Im9brov7g0eSwPBy1jj9M.png\"},label:{type:ControlType.String,title:\"Alt Text\",defaultValue:\"Carl Sherry signature\"},opacity:{type:ControlType.Number,title:\"Opacity\",defaultValue:1,min:0,max:1,step:.05}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SignatureMark\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SignatureMark.map","// Generated by Framer (f8e97a5)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,Container,cx,GeneratedComponentContext,getFonts,Link,RenderTarget,RichText,useCustomCursors,useHydratedBreakpointVariants,useIsOnFramerCanvas,useLocaleInfo,withCSS}from\"framer\";import{LayoutGroup,motion}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Linkedin from\"https://framerusercontent.com/modules/jLVfLScc4Pw6lyTMb6Ap/WV2r0vnJw1UsYWrqninT/AGIu2296z.js\";import CopyToClipboardButton from\"#framer/local/codeFile/K3YMUrZ/CopyToClipboardButton.js\";import NarrowStackReorder from\"#framer/local/codeFile/A_sodsL/NarrowStackReorder.js\";import SignatureMark from\"#framer/local/codeFile/ztMiocw/SignatureMark.js\";import StaggerRevealGrid from\"#framer/local/codeFile/BAd5Eyh/StaggerRevealGrid.js\";const CopyToClipboardButtonFonts=getFonts(CopyToClipboardButton);const StaggerRevealGridFonts=getFonts(StaggerRevealGrid);const SignatureMarkFonts=getFonts(SignatureMark);const LinkedinFonts=getFonts(Linkedin);const NarrowStackReorderFonts=getFonts(NarrowStackReorder);const breakpoints={};const isBrowser=()=>typeof document!==\"undefined\";const serializationHash=\"framer-KVla5\";const variantClassNames={x7nod19Vn:\"framer-v-sajqgr\"};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 transformTemplate1=(_,t)=>`translateX(-50%) ${t}`;const breakpointRules={};const breakpointKeys=Object.keys(breakpointRules);const rules=[\".framer-KVla5.framer-v4u5au, .framer-KVla5 .framer-v4u5au { display: block; }\",\".framer-KVla5.framer-sajqgr { align-content: center; align-items: center; background-color: #000000; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-KVla5 .framer-1fakk0n { background: transparent; flex-grow: 1; height: 0px; margin: 0px; margin-bottom: -0px; position: relative; width: 0px; }\",\".framer-KVla5 .framer-qncsjw { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; order: 1001; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-KVla5 .framer-1h76uj5 { align-content: center; align-items: center; background-color: rgba(0, 0, 0, 0); display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; max-width: 100%; overflow: visible; padding: 30px 0px 30px 0px; position: relative; width: min-content; }\",\".framer-KVla5 .framer-uva7do-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-KVla5 .framer-6wbb1a-container, .framer-KVla5 .framer-kt98oq-container { flex: none; height: 1px; left: -101px; position: absolute; top: 0px; width: 1px; }\",\".framer-KVla5 .framer-h78jwr-container { flex: none; height: 38px; position: relative; width: 50px; }\",\".framer-KVla5 .framer-1y6jofj { align-content: center; align-items: center; background-color: rgba(0, 0, 0, 0); display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; overflow: var(--overflow-clip-fallback, clip); padding: 30px 36px 30px 36px; position: relative; width: 100%; }\",\".framer-KVla5 .framer-1317rn8 { background-color: rgba(0, 0, 0, 0); flex: none; height: 21px; overflow: visible; position: relative; width: 21px; }\",\".framer-KVla5 .framer-1utqjah { --framer-text-wrap: balance; flex: 1 0 0px; height: auto; max-width: 90%; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-KVla5 .framer-5fwavf { flex: none; height: 21px; overflow: visible; position: relative; text-decoration: none; width: 21px; }\",\".framer-KVla5 .framer-i94f4s { --t829wi: rgba(255, 255, 255, 0.5); bottom: 0px; flex: none; left: 48%; position: absolute; top: 0px; width: auto; will-change: var(--framer-will-change-effect-override, transform); }\",'[data-layout-template=\"true\"] > #overlay { margin-bottom: -0px; }'];const HTMLStyle=({value})=>{const onCanvas=useIsOnFramerCanvas();if(onCanvas)return null;return /*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:value},\"data-framer-html-style\":\"\"});};const getProps=({height,id,width,...props})=>{return{...props};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,children,...restProps}=getProps(props);const[baseVariant,hydratedBaseVariant]=useHydratedBreakpointVariants(variant,breakpoints,false);const gestureVariant=undefined;const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);useCustomCursors({});return /*#__PURE__*/_jsx(GeneratedComponentContext.Provider,{value:{activeVariantId:baseVariant,isLayoutTemplate:true,primaryVariantId:\"x7nod19Vn\",variantClassNames},children:/*#__PURE__*/_jsxs(LayoutGroup,{id:layoutId??defaultLayoutId,children:[/*#__PURE__*/_jsx(HTMLStyle,{value:\":root body { background: rgb(0, 0, 0); }\"}),/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(scopingClassNames,\"framer-sajqgr\",className),\"data-layout-template\":true,ref:refBinding,style:{...style},children:[children,/*#__PURE__*/_jsx(\"div\",{className:\"framer-1fakk0n\"}),/*#__PURE__*/_jsxs(motion.footer,{className:\"framer-qncsjw\",\"data-framer-name\":\"Footer\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"framer-1h76uj5\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-uva7do-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"RH0gyFEnb\",scopeId:\"ihFvbEvJp\",children:/*#__PURE__*/_jsx(CopyToClipboardButton,{color:\"rgb(255, 255, 255)\",copiedText:\"copied\",fadeDuration:1e3,fontFamily:\"Zalando Sans SemiExpanded\",fontSize:\"1.3rem\",fontWeight:400,height:\"100%\",id:\"RH0gyFEnb\",layoutId:\"RH0gyFEnb\",letterSpacing:\"0px\",lineHeight:\"1.12em\",revertDuration:1e3,text:\"hello@carlsherry.com\",textTransform:\"none\",useGoogleFont:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-6wbb1a-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"Ld0XMFLlL\",scopeId:\"ihFvbEvJp\",children:/*#__PURE__*/_jsx(StaggerRevealGrid,{fadeDuration:700,height:\"100%\",hideOnCanvas:true,id:\"Ld0XMFLlL\",layoutId:\"Ld0XMFLlL\",riseDistance:30,staggerStep:120,style:{height:\"100%\",width:\"100%\"},triggerThreshold:.15,width:\"100%\"})})})]}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-h78jwr-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"suJl5f9FH\",scopeId:\"ihFvbEvJp\",children:/*#__PURE__*/_jsx(SignatureMark,{height:\"100%\",id:\"suJl5f9FH\",label:\"Carl Sherry signature\",layoutId:\"suJl5f9FH\",opacity:1,src:\"https://framerusercontent.com/images/ilHiY6Im9brov7g0eSwPBy1jj9M.png\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsxs(\"div\",{className:\"framer-1y6jofj\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"framer-1317rn8\"}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"h6\",{dir:\"auto\",style:{\"--font-selector\":\"RlM7U2F0b3NoaS1tZWRpdW0=\",\"--framer-font-family\":'\"Satoshi\", \"Satoshi Placeholder\", sans-serif',\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 0.6)\",\"--framer-font-weight\":\"500\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.45)\"},children:\"All work and media featured here belong to their respective copyright holders and are displayed solely as a portfolio of my contributions. I claim no ownership over third-party trademarks, and this site is not endorsed by any former employer. Views expressed here are entirely my own and do not reflect those of any featured brands or employers.\"})}),className:\"framer-1utqjah\",fonts:[\"FS;Satoshi-medium\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(Link,{href:\"https://www.linkedin.com/in/carlsherry/\",motionChild:true,nodeId:\"Ybh1LKurr\",openInNewTab:true,scopeId:\"ihFvbEvJp\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-5fwavf framer-v4u5au\",children:/*#__PURE__*/_jsx(Linkedin,{animated:true,className:\"framer-i94f4s\",JW2ySfJQW:true,layoutId:\"vPj8W2QL7\",transformTemplate:transformTemplate1,whileHover:animation})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-kt98oq-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"JthJkWmo8\",scopeId:\"ihFvbEvJp\",children:/*#__PURE__*/_jsx(NarrowStackReorder,{centerText:true,height:\"100%\",hideEmptyItems:true,id:\"JthJkWmo8\",lastItemFirst:true,layoutId:\"JthJkWmo8\",movedItemAlign:\"center\",narrowAlign:\"start\",narrowBelow:600,narrowGap:10,style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})})]})]})]}),/*#__PURE__*/_jsx(\"div\",{id:\"template-overlay\"})]})});});const css=target=>{const isStaticRenderer=target===RenderTarget.canvas||target===RenderTarget.export;if(!isStaticRenderer){return[...rules,...breakpointKeys.map(key=>{const query=breakpointRules[key];return`@media ${query} { ${breakpointRules[key].join(\" \")} }`;})];}return[...rules,...breakpointKeys.flatMap(key=>{const selector=breakpointRules[key];return breakpointRules[key].map(rule=>`${selector} {${rule}}`);})];};/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 1000\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerHitTargets {\"x7nod19Vn\":[\".framer-qncsjw\"]}\n * @framerBreakpoints {\"x7nod19Vn\":{\"canvasClassName\":\"framer-sajqgr-override\",\"minHeight\":1000,\"viewportHeight\":800,\"name\":\"Desktop\",\"width\":1200,\"rootFontSize\":16}}\n * @framerDefaultVariant x7nod19Vn\n * @framerLayoutTemplate true\n */const FramerihFvbEvJp=withCSS(Component,css,\"framer-KVla5\");export default FramerihFvbEvJp;FramerihFvbEvJp.displayName=\"Portfolio Layout\";FramerihFvbEvJp.defaultProps={height:1e3,width:1200};addFonts(FramerihFvbEvJp,[{explicitInter:true,fonts:[{cssFamilyName:\"Satoshi\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Satoshi\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/P2LQKHE6KA6ZP4AAGN72KDWMHH6ZH3TA/ZC32TK2P7FPS5GFTL46EU6KQJA24ZYDB/7AHDUZ4A7LFLVFUIFSARGIWCRQJHISQP.woff2\",weight:\"500\"}]},...CopyToClipboardButtonFonts,...StaggerRevealGridFonts,...SignatureMarkFonts,...LinkedinFonts,...NarrowStackReorderFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerihFvbEvJp\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerAutoSizeImages\":\"true\",\"framerColorSyntax\":\"true\",\"framerIntrinsicHeight\":\"1000\",\"framerDefaultVariant\":\"x7nod19Vn\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerHitTargets\":\"{\\\"x7nod19Vn\\\":[\\\".framer-qncsjw\\\"]}\",\"framerLayoutTemplate\":\"true\",\"framerBreakpoints\":\"{\\\"x7nod19Vn\\\":{\\\"canvasClassName\\\":\\\"framer-sajqgr-override\\\",\\\"minHeight\\\":1000,\\\"viewportHeight\\\":800,\\\"name\\\":\\\"Desktop\\\",\\\"width\\\":1200,\\\"rootFontSize\\\":16}}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","\r\n\t\timport * as Framer from \"framer\";\r\nimport * as React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport * as ReactDOM from \"react-dom/client\";\r\nimport PortfolioLayout from \"https://framerusercontent.com/modules/Y5kVj9UBXhUtzgrIVTSm/qpbT8yqkcjpGBKok53P3/ihFvbEvJp.js\";\r\n\r\n\t\tconst routes = {augiA20Il: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/gqgyvBDu555wFvlgL2QT/obH3ZsRwsQqUo9Elvq4D/augiA20Il.js\")), path: \"/\"}, xmkGB9T7f: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/eD0sX9CeA3apDGRYaemx/qgYBGGhvx8JShG1EIRE2/xmkGB9T7f.js\")), path: \"/xo-bikes\"}, JScWVWe_E: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/Rz8bHs6OGJ6Jc61CeYxB/GG5DhgLWQaWXTQCpp2T6/JScWVWe_E.js\")), path: \"/new-teddy-swims\"}, KxTHZZXVw: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/QwPp3kXj8zUcONE0IfiM/pciTJrbjQb4gUmJ2NIPk/KxTHZZXVw.js\")), path: \"/grab-life-by-the-claw\"}, zYA1Q14kr: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/DUT90wEv5ltPMaZTcfww/tLTdAUXlSqSgLpNnd2zr/zYA1Q14kr.js\")), path: \"/white-claw-brand-campaign\"}, HYwMusWEf: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/3mhfoNsdIlzWikdFvPdY/1hULXGHmuepwNJn3OAwv/HYwMusWEf.js\")), path: \"/o2-in-fortnite\"}, c_dTm7LHL: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/nz2AdinQwq0hyLRn7s2T/TKDGAHQKmfpVtJR4oup7/c_dTm7LHL.js\")), path: \"/bearface\"}, t43RM01Ho: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/10bVbXttskA14Zvcmlzj/raUyhPOoBmwabNUQJWZm/t43RM01Ho.js\")), path: \"/mas\"}, Ng7sAi7_Z: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/Ne7Q8nuBuJDCleWeKCj6/TkrqdKL3apNFAapnyG2i/Ng7sAi7_Z.js\")), path: \"/tfl\"}}\r\n\r\n\t\tconst locales = [{code: \"en\", id: \"default\", name: \"English\", slug: \"\", textDirection: \"ltr\"}]\r\n\t\tconst collectionUtils = {}\r\n\t\tconst serverDatabaseClient = undefined\r\n\t\tconst framerSiteId = \"c1b7e0dc3bba5278bac220b5fb10c72002e339dd6515d3151799cf0138548bae\"\r\n\t\tfunction Template({webPageId, children, style, ...rest}) {const templateProps = {}\r\nconst props = templateProps[webPageId] ?? {}\r\nswitch (webPageId) {case \"augiA20Il\":\r\ncase \"xmkGB9T7f\":\r\ncase \"JScWVWe_E\":\r\ncase \"KxTHZZXVw\":\r\ncase \"zYA1Q14kr\":\r\ncase \"HYwMusWEf\":\r\ncase \"c_dTm7LHL\":\r\ncase \"t43RM01Ho\":\r\ncase \"Ng7sAi7_Z\":\r\nreturn React.createElement(PortfolioLayout, {...props, key: \"PortfolioLayout\", style}, children(true));\r\ndefault: { return children(false) }}}\r\nexport function getLayoutTemplateBreakpoints(routeId) {switch (routeId) {case \"augiA20Il\":\r\ncase \"xmkGB9T7f\":\r\ncase \"JScWVWe_E\":\r\ncase \"KxTHZZXVw\":\r\ncase \"zYA1Q14kr\":\r\ncase \"HYwMusWEf\":\r\ncase \"c_dTm7LHL\":\r\ncase \"t43RM01Ho\":\r\ncase \"Ng7sAi7_Z\":\r\nreturn [{hash: \"sajqgr\"}]\r\ndefault: { return undefined }}}\r\n\r\n\t\tconst isBrowser = typeof document !== \"undefined\"\r\n\t\tconst isBot = isBrowser && /bot|-google|google-|yandex|ia_archiver|crawl|spider/iu.test(navigator.userAgent)\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\texport async function getPageRoot({\r\n\t\t\trouteId,\r\n\t\t\tpathVariables,\r\n\t\t\tcanonicalPathVariables,\r\n\t\t\tlocaleId,\r\n\t\t\tcollectionItemId,\r\n\t\t\tcontentLocaleId,\r\n\t\t\tshouldResolveInitialRouteContentState = false,\r\n\t\t}) {\r\n\t\t\tconst rootPreload = routes[routeId].page.preload()\r\n\r\n\t\t\t\r\n\r\n\t\t\tFramer.setLibraryFeatures({checkServerSideRouter: true, disableCustomCode: false, disableHoverOnMobile: false, editorBarDisableFrameAncestorsSecurity: false, motionDivToDiv: false, onPageLocalizationSupport: true, onPageMoveTool: true, onPageRichTextBlockSelection: true, scrollRestoration: true, synchronousNavigationOnDesktop: false, yieldOnTap: false})\r\n\t\t\tFramer.setCurrentSiteId(framerSiteId)\r\n\r\n\t\t\tconst content = React.createElement(\r\n\t\t\t\tFramer.PageRoot,\r\n\t\t\t\t{\r\n\t\t\t\t\tisWebsite: true,\r\n\t\t\t\t\tenvironment: \"site\",\r\n\t\t\t\t\trouteId,\r\n\t\t\t\t\tpathVariables,\r\n\t\t\t\t\tcanonicalPathVariables,\r\n\t\t\t\t\troutes,\r\n\t\t\t\t\tcollectionUtils,\r\n\t\t\t\t\tserverDatabaseClient,\r\n\t\t\t\t\tframerSiteId,\r\n\t\t\t\t\tnotFoundPage: Framer.lazy(() => import(\"__framer-not-found-page\")),\r\n\t\t\t\t\tisReducedMotion: undefined,\r\n\t\t\t\t\tlocaleId,\r\n\t\t\t\t\tlocales,\r\n\t\t\t\t\tpreserveQueryParams: undefined,\r\n\t\t\t\t\tsiteCanonicalURL: \"https://www.carlsherry.com\",\r\n\t\t\t\t\tEditorBar: \r\n\t\t\ttypeof window !== \"undefined\" ? (() => {\r\n\t\t\t\tif (isBot) {\r\n\t\t\t\t\tconsole.log(\"[Framer On-Page Editing] Unavailable because navigator is bot\")\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn Framer.lazy(async () => {\r\n\t\t\t\t\tconst dependencies = {\r\n\t\t\t\t\t\t__version: 3,\r\n\t\t\t\t\t\tframer: {\r\n\t\t\t\t\t\t\tuseCurrentRoute: Framer.useCurrentRoute,\r\n\t\t\t\t\t\t\tuseLocaleInfo: Framer.useLocaleInfo,\r\n\t\t\t\t\t\t\tuseRouter: Framer.useRouter,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\treact: {\r\n\t\t\t\t\t\t\tcreateElement: React.createElement,\r\n\t\t\t\t\t\t\tFragment: React.Fragment,\r\n\t\t\t\t\t\t\tmemo: React.memo,\r\n\t\t\t\t\t\t\tuseCallback: React.useCallback,\r\n\t\t\t\t\t\t\tuseEffect: React.useEffect,\r\n\t\t\t\t\t\t\tuseRef: React.useRef,\r\n\t\t\t\t\t\t\tuseState: React.useState,\r\n\t\t\t\t\t\t\tuseLayoutEffect: React.useLayoutEffect,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"react-dom\": { createPortal },\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindow.__framer_editorBarDependencies = dependencies\r\n\r\n\t\t\t\t\tconst { createEditorBar } = await import(\"https://framer.com/edit/init.mjs\")\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdefault: createEditorBar(),\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})() : undefined\r\n\t\t,\r\n\t\t\t\t\tadaptLayoutToTextDirection: true,\r\n\t\t\t\t\tLayoutTemplate: Template,\r\n\t\t\t\t\tloadSnippetsModule: new Framer.LazyValue(() => import(\"https://framerusercontent.com/modules/Q74MFx2K23ViC3DeZN0e/xAAkGd02j0ebN0yhJdxb/snippets.js\")),\r\n\t\t\t\t\tinitialCollectionItemId: collectionItemId,\r\n\t\t\t\t\tinitialContentLocaleIdOverride: contentLocaleId,\r\n\t\t\t\t}\r\n\t\t\t)\r\n\r\n\t\t\tconst contentWithGracefullyDegradingErrorBoundary = React.createElement(Framer.GracefullyDegradingErrorBoundary, {\r\n\t\t\t\tchildren: content\r\n\t\t\t})\r\n\r\n\t\t\t\r\n\t\t\tconst page = React.createElement(Framer.PageEffectsProvider, {\r\n\t\t\t\tchildren: contentWithGracefullyDegradingErrorBoundary,\r\n\t\t\t\tvalue: {routes: {}}\r\n\t\t\t})\r\n\r\n\t\t\t// We don't want the initial render to immediately have to suspend.\r\n\t\t\tawait rootPreload\r\n\t\t\treturn page\r\n\t\t}\r\n\t\r\n\r\n\t\tif (isBrowser) {\r\n\t\t\t// Note: HTTPArchive also uses this function to detect Framer sites; see https://github.com/HTTPArchive/wappalyzer/blob/371a17583f74fd9171b9077f59a5619b24062891/src/technologies/f.json#L1722-L1748.\r\n\t\t\twindow.__framer_importFromPackage = (packageAndFilename, exportIdentifier) => () => {\r\n\t\t\t\treturn React.createElement(Framer.ErrorPlaceholder, { error: 'Package component not supported: \"' + exportIdentifier + '\" in \"' + packageAndFilename + '\"' })\r\n\t\t\t}\r\n\r\n\t\t\twindow.__framer_events = window.__framer_events || []\r\n\r\n\t\t\t// Initialize lazy modules cache for hydration\r\n\t\t\tFramer.initLazyModulesCache()\r\n\r\n\t\t\tconst container = document.getElementById(\"main\")\r\n\t\t\t// We know that #main is parsed before this script, so we don't need to wait for DOMContentLoaded or similar events.\r\n\t\t\tif (\"framerHydrateV2\" in container.dataset) main(true, container)\r\n\t\t\telse main(false, container)\r\n\t\t}\r\n\r\n\t\tfunction track() {\r\n\t\t\tif (!isBrowser) return\r\n\t\t\twindow.__framer_events.push(arguments)\r\n\t\t}\r\n\r\n\t\tasync function main(shouldHydrate, container) {\r\n\t\t\tfunction handleError(error, errorInfo, recoverable = true) {\r\n\t\t\t\tif (error.caught || window.__framer_hadFatalError) return // we already logged it\r\n\r\n\t\t\t\tconst componentStack = errorInfo?.componentStack\r\n\t\t\t\tif (recoverable) {\r\n\t\t\t\t\tconsole.warn(\"Caught a recoverable error. The site is still functional, but might have some UI flickering or degraded page load performance. If you are the author of this website, update external components and check recently added custom code or code overrides to fix the following server/client mismatches:\\n\", error, componentStack)\r\n\t\t\t\t\t// we only want to collect 1%, because this can be quite noisy (floods the data pipeline)\r\n\t\t\t\t\tif (Math.random() > 0.01) return\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error(\"Caught a fatal error. Please report the following to the Framer team via https://www.framer.com/contact/:\\n\", error, componentStack)\r\n\t\t\t\t}\r\n\t\t\t\ttrack(recoverable ? \"published_site_load_recoverable_error\" : \"published_site_load_error\", {\r\n\t\t\t\t\tmessage: String(error),\r\n\t\t\t\t\tcomponentStack, // componentStack is more useful\r\n\t\t\t\t\tstack: componentStack ? undefined : error instanceof Error && typeof error.stack === \"string\" ? error.stack : null,\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tlet routeId, localeId, contentLocaleId, pathVariables, canonicalPathVariables, breakpoints, routeData\r\n\t\t\t\tif (shouldHydrate) {\r\n\t\t\t\t\trouteData = JSON.parse(container.dataset[\"framerHydrateV2\"])\r\n\t\t\t\t\trouteId = routeData.routeId\r\n\t\t\t\t\tlocaleId = routeData.localeId\r\n\t\t\t\t\tcontentLocaleId = routeData.contentLocaleId\r\n\t\t\t\t\tpathVariables = routeData.pathVariables\r\n\t\t\t\t\tcanonicalPathVariables = routeData.canonicalPathVariables\r\n\t\t\t\t\tbreakpoints = routeData.breakpoints\r\n\r\n\t\t\t\t\trouteId = Framer.patchRoutesForABTesting(routes, routeId) // Prioritize optimized route id to avoid flickering in browsers not supporting the server-timing header (Safari older than 16.4)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tFramer.patchRoutesForABTesting(routes, undefined) // This must happen before inferInitialRouteFromPath\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\tconst serverRoute = performance.getEntriesByType(\"navigation\")[0]?.serverTiming?.find(e => e.name === \"route\")?.description\r\n\t\t\t\t\tif (serverRoute) {\r\n\t\t\t\t\t\tconst routeData = new URLSearchParams(serverRoute)\r\n\t\t\t\t\t\trouteId = routeData.get(\"id\")\r\n\t\t\t\t\t\tlocaleId = routeData.get(\"locale\")\r\n\t\t\t\t\t\tfor (const [key, value] of routeData.entries()) {\r\n\t\t\t\t\t\t\tif (!key.startsWith(\"var.\")) continue\r\n\t\t\t\t\t\t\tpathVariables ??= {}\r\n\t\t\t\t\t\t\tpathVariables[key.slice(4)] = value\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!routeId || !localeId) {\r\n\t\t\t\t\t\tconst routeData = Framer.inferInitialRouteFromPath(routes, decodeURIComponent(location.pathname), true, locales)\r\n\t\t\t\t\t\trouteId = routeData.routeId\r\n\t\t\t\t\t\tlocaleId = routeData.localeId\r\n\t\t\t\t\t\tpathVariables = routeData.pathVariables\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst pagePromise = getPageRoot({\r\n\t\t\t\t\trouteId,\r\n\t\t\t\t\tlocaleId,\r\n\t\t\t\t\tcontentLocaleId,\r\n\t\t\t\t\tpathVariables,\r\n\t\t\t\t\tcanonicalPathVariables,\r\n\t\t\t\t\tcollectionItemId: shouldHydrate ? routeData?.collectionItemId : undefined,\r\n\t\t\t\t\tshouldResolveInitialRouteContentState: !shouldHydrate,\r\n\t\t\t\t})\r\n\r\n\t\t\t\t\r\nif (typeof window !== \"undefined\") {\r\n\tvoid (async () => {\r\n\t\tconst route = routes[routeId]\r\n\r\n\t\tconst defaultLocaleId = \"default\"\r\n\t\tconst framerLocale = locales.find(({ id }) => !localeId ? id === defaultLocaleId : id === localeId).code\r\n\r\n\t\t\r\n\t\tlet collectionItemId = routeData?.collectionItemId ?? null\r\n\t\tif (collectionItemId === null && route?.collectionId && collectionUtils) {\r\n\t\t\tconst utils = await collectionUtils[route.collectionId]?.()\r\n\t\t\tconst [slug] = Object.values(pathVariables)\r\n\t\t\tif (utils && typeof slug === \"string\") {\r\n\t\t\t\tcollectionItemId = (await utils.getRecordIdBySlug(slug, framerLocale || undefined)) ?? null\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\r\n\t\tconst resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions()\r\n\t\tconst timezone = resolvedDateTimeOptions.timeZone\r\n\t\tconst locale = resolvedDateTimeOptions.locale\r\n\r\n\t\t// wait for the page to be activated before sending the pageview event\r\n\t\t// https://developer.chrome.com/docs/web-platform/prerender-pages#impact-on-analytics\r\n\t\tawait new Promise((resolve) => {\r\n\t\t\tif (document.prerendering) {\r\n\t\t\t\tdocument.addEventListener(\"prerenderingchange\", resolve, { once: true })\r\n\t\t\t} else {\r\n\t\t\t\tresolve()\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\twindow.__framer_events.push([\r\n\t\t\t\"published_site_pageview\",\r\n\t\t\t{\r\n\t\t\t\tframerSiteId,\r\n\t\t\t\tversion: 2,\r\n\t\t\t\troutePath: route?.path || \"/\",\r\n\t\t\t\tcollectionItemId,\r\n\t\t\t\tframerLocale: framerLocale || null,\r\n\t\t\t\twebPageId: route?.abTestingVariantId ?? routeId,\r\n\t\t\t\tabTestId: route?.abTestId,\r\n\t\t\t\treferrer: document.referrer || null,\r\n\t\t\t\turl: window.location.href,\r\n\t\t\t\thostname: window.location.hostname || null,\r\n\t\t\t\tpathname: window.location.pathname || null,\r\n\t\t\t\thash: window.location.hash || null,\r\n\t\t\t\tsearch: window.location.search || null,\r\n\t\t\t\ttimezone,\r\n\t\t\t\tlocale,\r\n\t\t\t},\r\n\t\t\t\"eager\"\r\n\t\t])\r\n\r\n\t\t// Yield to avoid blocking the main thread with the user code\r\n\t\tawait Framer.yieldToMain({ priority: \"background\", ensureContinueBeforeUnload: true, continueAfter: \"paint\" })\r\n\r\n\t\tdocument.dispatchEvent(new CustomEvent(\"framer:pageview\", {\r\n\t\t\tdetail: { framerLocale: framerLocale || null }\r\n\t\t}))\r\n\t})()\r\n}\r\n\r\n\r\n\t\t\t\tconst page = await pagePromise\r\n\t\t\t\tif (shouldHydrate) {\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tFramer.withPerformanceMarks(\"framer-rewrite-breakpoints\", () => {\r\n\t\t\t\t\t\tFramer.removeHiddenBreakpointLayersV2(breakpoints)\r\n\t\t\t\t\t\twindow.__framer_onRewriteBreakpoints?.(breakpoints)\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tconst startTransition = isBot ? cb => cb() : React.startTransition\r\n\t\t\t\t\tstartTransition(() => {\r\n\t\t\t\t\t\tFramer.markHydrationStart()\r\n\t\t\t\t\t\tFramer.turnOffReactEventHandling()\r\n\t\t\t\t\t\tReactDOM.hydrateRoot(container, page, { onRecoverableError: handleError })\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\r\n\t\t\t\t\tReactDOM.createRoot(container, { onRecoverableError: handleError }).render(page)\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\thandleError(error, undefined, false)\r\n\t\t\t\tthrow error\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\r\n\r\n\t\t\r\n\t"],"mappings":"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"}