{"version":3,"file":"script_main.BMiRowM7.mjs","names":["getProps","React.forwardRef","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/tdLkdTcCd4WOU2Tzoq7q/R9IHXYov9CHvG4CkF4nw/NarrowStackReorder.js","https:/framerusercontent.com/modules/Y5kVj9UBXhUtzgrIVTSm/ZmRrLWSk5xB5l5ZPKlnF/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{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 * 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) centres every text item as a box AND\n *    centres the lines of text inside it, so multi-line paragraphs are\n *    centred line by line, not just positioned in the middle.\n *\n * Empty items (zero-size placeholder groups) are hidden while narrow so\n * they don't leave a blank gap between 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}=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\"];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 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((s,el)=>{if(s.order)el.style.order=s.order;else el.style.removeProperty(\"order\");if(s.alignSelf)el.style.setProperty(\"align-self\",s.alignSelf);else el.style.removeProperty(\"align-self\");if(s.display)el.style.setProperty(\"display\",s.display,s.displayPriority);else el.style.removeProperty(\"display\");});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\";});const apply=()=>{const width=rowEl.getBoundingClientRect().width;const nowNarrow=width>0&&width<narrowBelow;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\");const list=items();list.forEach((el,i)=>{if(!savedChild.has(el)){savedChild.set(el,{order:el.style.order,alignSelf:el.style.getPropertyValue(\"align-self\"),display:el.style.getPropertyValue(\"display\"),displayPriority:el.style.getPropertyPriority(\"display\")});}const isMoved=lastItemFirst&&i===list.length-1;if(isMoved){// Move the last item to the front, and align it on its own.\nel.style.order=\"-1\";if(movedItemAlign&&movedItemAlign!==\"same\"){el.style.setProperty(\"align-self\",toFlex(movedItemAlign),\"important\");}}// Centre text items as a box, and the lines of text inside.\nif(centerText){const texts=Array.from(el.querySelectorAll(TEXT_SELECTOR));if(texts.length>0){if(!isMoved)el.style.setProperty(\"align-self\",\"center\",\"important\");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\");});}}// Hide empty placeholder items so they add no gap.\nif(hideEmptyItems&&el.offsetWidth===0&&el.offsetHeight===0&&el.children.length===0){el.style.setProperty(\"display\",\"none\",\"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]);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.\"},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, centre text items — both the box and the lines of text inside.\"},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 zero-size placeholder items while stacked, so they leave no gap.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NarrowStackReorder\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NarrowStackReorder.map","// Generated by Framer (a050651)\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 NarrowStackReorder from\"#framer/local/codeFile/A_sodsL/NarrowStackReorder.js\";const LinkedinFonts=getFonts(Linkedin);const NarrowStackReorderFonts=getFonts(NarrowStackReorder);const breakpoints={};const isBrowser=()=>typeof document!==\"undefined\";const serializationHash=\"framer-H9XCe\";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-H9XCe.framer-v4u5au, .framer-H9XCe .framer-v4u5au { display: block; }\",\".framer-H9XCe.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-H9XCe .framer-1fakk0n { background: transparent; flex-grow: 1; height: 0px; margin: 0px; margin-bottom: -0px; position: relative; width: 0px; }\",\".framer-H9XCe .framer-qncsjw { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; order: 1001; overflow: var(--overflow-clip-fallback, clip); padding: 30px 36px 30px 36px; position: relative; width: 100%; }\",\".framer-H9XCe .framer-1usot1u { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 18px; height: min-content; justify-content: center; min-height: 18px; min-width: 18px; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: min-content; }\",\".framer-H9XCe .framer-1utqjah { --framer-text-wrap: balance; flex: none; height: auto; max-width: 90%; position: relative; white-space: pre-wrap; width: 1016px; word-break: break-word; word-wrap: break-word; }\",\".framer-H9XCe .framer-5fwavf { flex: none; height: 21px; overflow: visible; position: relative; text-decoration: none; width: 21px; }\",\".framer-H9XCe .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); }\",\".framer-H9XCe .framer-kt98oq-container { flex: none; height: 1px; left: -101px; position: absolute; top: 0px; width: 1px; }\",'[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__*/_jsx(\"div\",{className:\"framer-1usot1u\",\"data-framer-name\":\"Social Links\"}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsxs(\"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 imagery, case studies, and creative content featured on this site are the property of their respective copyright holders, including the agencies and clients for whom they were produced. These materials are displayed solely as a retrospective exhibition of my professional contributions as an employee. I do not claim ownership over any third-party trademarks, logos, or brand assets. This portfolio is independent and has not been authorised, sponsored, or endorsed by any former employer or brand.\",/*#__PURE__*/_jsx(\"br\",{}),/*#__PURE__*/_jsx(\"br\",{}),/*#__PURE__*/_jsx(\"br\",{}),/*#__PURE__*/_jsx(\"span\",{style:{\"--font-selector\":\"RlM7U2F0b3NoaS1yZWd1bGFy\",\"--framer-font-weight\":\"400\",\"--framer-letter-spacing\":\"0.16em\",\"--framer-text-color\":\"rgba(255, 255, 255, 0.48)\"},children:\"\\xa9 2026 CARL SHERRY\"})]})}),className:\"framer-1utqjah\",fonts:[\"FS;Satoshi-medium\",\"FS;Satoshi-regular\"],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-H9XCe\");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\"},{cssFamilyName:\"Satoshi\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Satoshi\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/TTX2Z3BF3P6Y5BQT3IV2VNOK6FL22KUT/7QYRJOI3JIMYHGY6CH7SOIFRQLZOLNJ6/KFIAZD4RUMEZIYV6FQ3T3GP5PDBDB6JY.woff2\",weight:\"400\"}]},...LinkedinFonts,...NarrowStackReorderFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerihFvbEvJp\",\"slots\":[],\"annotations\":{\"framerHitTargets\":\"{\\\"x7nod19Vn\\\":[\\\".framer-qncsjw\\\"]}\",\"framerDisplayContentsDiv\":\"false\",\"framerColorSyntax\":\"true\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerAutoSizeImages\":\"true\",\"framerBreakpoints\":\"{\\\"x7nod19Vn\\\":{\\\"canvasClassName\\\":\\\"framer-sajqgr-override\\\",\\\"minHeight\\\":1000,\\\"viewportHeight\\\":800,\\\"name\\\":\\\"Desktop\\\",\\\"width\\\":1200,\\\"rootFontSize\\\":16}}\",\"framerIntrinsicHeight\":\"1000\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerDefaultVariant\":\"x7nod19Vn\",\"framerLayoutTemplate\":\"true\"}},\"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/ZmRrLWSk5xB5l5ZPKlnF/ihFvbEvJp.js\";\r\n\r\n\t\tconst routes = {augiA20Il: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/gqgyvBDu555wFvlgL2QT/VQI06EPIHexlyvdXdGEs/augiA20Il.js\")), path: \"/\"}, xmkGB9T7f: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/eD0sX9CeA3apDGRYaemx/gUAtL0SFcb6tfYaw9U5d/xmkGB9T7f.js\")), path: \"/xo-bikes\"}, JScWVWe_E: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/Rz8bHs6OGJ6Jc61CeYxB/NVbyXKdfZZaEpKtktTRY/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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"}