{"version":3,"file":"shared-lib.oKd7ePNX.mjs","names":["useRef","p","useRef"],"sources":["https:/framerusercontent.com/modules/tSB4yk9h0eXnVX2Evz21/GoLZjOAcsw6v6skvLOS2/L__PMULe0.js","https:/framerusercontent.com/modules/GRjhCMjIfhhZYUP9B0mq/ZwoYTD9GRoBiJfdlzdNd/Overrides.js","https:/framerusercontent.com/modules/HjdrtjeW5ohm8Xn3bxIP/DLP24v8X5omAqCCheU7c/signarure.js","https:/framerusercontent.com/modules/t3b72F2kw2NEl8umRGDi/eIkvrLPoTtS2IxE0HmRk/Textreveal.js","https:/framerusercontent.com/modules/eMwDCNWhofQWU9eIJvPO/cVnUfFCuTKjekGcMv2rg/siteMetadata.js"],"sourcesContent":["// Generated by Framer (4655520)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"Inter-Medium\",\"Inter-Bold\",\"Inter-BoldItalic\",\"Inter-MediumItalic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5A3Ce6C9YYmCjpQx9M4inSaKU.woff2\",weight:\"500\"},{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/Qx95Xyt0Ka3SGhinnbXIGpEIyP4.woff2\",weight:\"500\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/6mJuEAguuIuMog10gGvH5d3cl8.woff2\",weight:\"500\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/xYYWaj7wCU5zSQH0eXvSaS19wo.woff2\",weight:\"500\"},{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/otTaNuNpVK4RbdlT7zDDdKvQBA.woff2\",weight:\"500\"},{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/UjlFhCnUjxhNfep4oYBPqnEssyo.woff2\",weight:\"500\"},{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/DolVirEGb34pEXEp8t8FQBSK4.woff2\",weight:\"500\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/DpPBYI0sL4fYLgAkX8KXOPVt7c.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/4RAEQdEOrcnDkhHiiCbJOw92Lk.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/1K3W8DizY3v4emK8Mb08YHxTbs.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/tUSCtfYVM1I1IchuyCwz9gDdQ.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/VgYFWiwsAC5OYxAycRXXvhze58.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/syRNPWzAMIrcJ3wIlPIP43KjQs.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/GIryZETIX4IFypco5pYZONKhJIo.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",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/H89BbHkbHDzlxZzxi8uPzTsp90.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/u6gJwDuwB143kpNK1T1MDKDWkMc.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/43sJ6MfOPh1LCJt46OvyDuSbA6o.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/wccHG0r4gBDAIRhfHiOlq6oEkqw.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",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/WZ367JPwf9bRW6LdTHN8rXgSjw.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",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/ia3uin3hQWqDrVloC1zEtYHWw.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",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/2A4Xx7CngadFGlVV4xrO06OBHY.woff2\",weight:\"700\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",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/khkJkwSL66WFg8SX6Wa726c.woff2\",weight:\"500\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/0E7IMbDzcGABpBwwqNEt60wU0w.woff2\",weight:\"500\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/NTJ0nQgIF0gcDelS14zQ9NR9Q.woff2\",weight:\"500\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/QrcNhgEPfRl0LS8qz5Ln8olanl8.woff2\",weight:\"500\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",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/JEXmejW8mXOYMtt0hyRg811kHac.woff2\",weight:\"500\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",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/Bo5CNzBv77CafbxOtKIkpw9egw.woff2\",weight:\"500\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"italic\",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/uy9s0iWuxiNnVt8EpTI3gzohpwo.woff2\",weight:\"500\"}]}];export const css=['.framer-qlsfn .framer-styles-preset-1dla3kv:not(.rich-text-wrapper), .framer-qlsfn .framer-styles-preset-1dla3kv.rich-text-wrapper h1 { --framer-font-family: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-family-bold: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-family-italic: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on, \\'ss03\\' on; --framer-font-size: 14px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 500; --framer-letter-spacing: 0em; --framer-line-height: 120%; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-c8b27cc1-8788-44e8-9d85-be44f1b926ba, #141414); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 0px) { .framer-qlsfn .framer-styles-preset-1dla3kv:not(.rich-text-wrapper), .framer-qlsfn .framer-styles-preset-1dla3kv.rich-text-wrapper h1 { --framer-font-family: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-family-bold: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-family-italic: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on, \\'ss03\\' on; --framer-font-size: 14px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 500; --framer-letter-spacing: 0em; --framer-line-height: 120%; --framer-paragraph-spacing: 0px; --framer-text-alignment: start; --framer-text-color: var(--token-c8b27cc1-8788-44e8-9d85-be44f1b926ba, #141414); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-qlsfn\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Overrides.tsx — Framer Code Overrides\n// Usage:\n//   1. In Framer, select an element\n//   2. Right panel → Code Overrides → File: \"Overrides\" → pick the override\n//\n// PAGE ENTER (stagger):\n//   EnterStagger1 → Name heading\n//   EnterStagger2 → Subtitle, clock\n//   EnterStagger3 → Bio / about text\n//   EnterStagger4 → Used for anything that should appear last\n//\n// SCROLL REVEAL:\n//   ScrollReveal → Career, Projects, Education section stacks\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";// ─────────────────────────────────────────\n// Page enter — stagger 1 (name heading)\n// ─────────────────────────────────────────\nexport function EnterStagger1(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,className:`animate-enter ${props.className??\"\"}`,style:{...props.style,\"--stagger\":1}});}// ─────────────────────────────────────────\n// Page enter — stagger 2 (subtitle, clock)\n// ─────────────────────────────────────────\nexport function EnterStagger2(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,className:`animate-enter ${props.className??\"\"}`,style:{...props.style,\"--stagger\":2}});}// ─────────────────────────────────────────\n// Page enter — stagger 3 (bio / about)\n// ─────────────────────────────────────────\nexport function EnterStagger3(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,className:`animate-enter ${props.className??\"\"}`,style:{...props.style,\"--stagger\":3}});}// ─────────────────────────────────────────\n// Page enter — stagger 4 (last elements)\n// ─────────────────────────────────────────\nexport function EnterStagger4(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,className:`animate-enter ${props.className??\"\"}`,style:{...props.style,\"--stagger\":4}});}// ─────────────────────────────────────────\n// Doodle styles — apply to .doodle-link wrappers\n// ─────────────────────────────────────────\nexport function DoodleEllipse(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,className:`doodle-link ${props.className??\"\"}`,\"data-doodle\":\"ellipse\"});}export function DoodleScribble(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,className:`doodle-link ${props.className??\"\"}`,\"data-doodle\":\"scribble\"});}export function DoodleCircle(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,className:`doodle-link ${props.className??\"\"}`,\"data-doodle\":\"circle\"});}// ─────────────────────────────────────────\n// Doodle link — draws wobbly ellipse on hover\n// ─────────────────────────────────────────\nexport function DoodleLink(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,className:`doodle-link ${props.className??\"\"}`});}// ─────────────────────────────────────────\n// Lightbox trigger — adds class to any image\n// so the global lightbox script picks it up\n// ─────────────────────────────────────────\nexport function LightboxTrigger(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,className:`lightbox-trigger ${props.className??\"\"}`});}// ─────────────────────────────────────────\n// Section heading — Career, Projects, Education\n// #808080, weight 500, text-wrap: balance\n// ─────────────────────────────────────────\nexport function SectionHeading(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,style:{...props.style,color:\"#808080\",fontWeight:500,textWrap:\"balance\"}});}// Adds .reveal class + hooks up IntersectionObserver\n// ─────────────────────────────────────────\nexport function ScrollReveal(Component){return props=>{const ref=useRef(null);useEffect(()=>{const el=ref.current;if(!el)return;const observer=new IntersectionObserver(([entry])=>{if(entry.isIntersecting){el.classList.add(\"is-visible\");observer.unobserve(el);}},{threshold:.1});observer.observe(el);return()=>observer.disconnect();},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref,className:`reveal ${props.className??\"\"}`});};}\nexport const __FramerMetadata__ = {\"exports\":{\"DoodleEllipse\":{\"type\":\"reactHoc\",\"name\":\"DoodleEllipse\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LightboxTrigger\":{\"type\":\"reactHoc\",\"name\":\"LightboxTrigger\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EnterStagger2\":{\"type\":\"reactHoc\",\"name\":\"EnterStagger2\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DoodleScribble\":{\"type\":\"reactHoc\",\"name\":\"DoodleScribble\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EnterStagger1\":{\"type\":\"reactHoc\",\"name\":\"EnterStagger1\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DoodleCircle\":{\"type\":\"reactHoc\",\"name\":\"DoodleCircle\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EnterStagger4\":{\"type\":\"reactHoc\",\"name\":\"EnterStagger4\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SectionHeading\":{\"type\":\"reactHoc\",\"name\":\"SectionHeading\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EnterStagger3\":{\"type\":\"reactHoc\",\"name\":\"EnterStagger3\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DoodleLink\":{\"type\":\"reactHoc\",\"name\":\"DoodleLink\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ScrollReveal\":{\"type\":\"reactHoc\",\"name\":\"ScrollReveal\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Overrides.map","// SignatureAnimation.tsx — Framer Code Component\n// Animates SVG path segments sequentially like a real signature\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";// Split a compound SVG path into individual subpaths\nfunction splitPath(d){if(!d)return[];const segments=d.match(/M[^M]*/g)||[];return segments.map(s=>s.trim());}export default function SignatureAnimation(props){const{svgPath,viewBoxWidth,viewBoxHeight,strokeColor,strokeWidth,drawDuration,holdDuration,eraseDuration,pauseDuration}=props;const svgRef=useRef(null);const animRef=useRef(null);useEffect(()=>{const svg=svgRef.current;if(!svg||!svgPath)return;// Clear previous paths\nwhile(svg.firstChild)svg.removeChild(svg.firstChild);const subpaths=splitPath(svgPath);if(!subpaths.length)return;// Create a path element per subpath\nconst pathEls=subpaths.map(d=>{const p=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\");p.setAttribute(\"d\",d);p.setAttribute(\"fill\",\"none\");p.setAttribute(\"stroke\",strokeColor);p.setAttribute(\"stroke-width\",strokeWidth);p.setAttribute(\"stroke-linecap\",\"round\");p.setAttribute(\"stroke-linejoin\",\"round\");svg.appendChild(p);return p;});// Measure lengths\nconst lengths=pathEls.map(p=>p.getTotalLength());const totalLength=lengths.reduce((a,b)=>a+b,0);// Set initial state — all hidden\npathEls.forEach((p,i)=>{p.style.strokeDasharray=lengths[i];p.style.strokeDashoffset=lengths[i];});const draw=drawDuration*1e3;const hold=holdDuration*1e3;const erase=eraseDuration*1e3;const pause=pauseDuration*1e3;const total=draw+hold+erase+pause;function ease(t){return t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2;}// Cumulative length offsets for each segment\nconst cumulative=lengths.reduce((acc,len,i)=>{acc.push((acc[i-1]||0)+len);return acc;},[]);let start=null;function animate(ts){if(!start)start=ts;const t=(ts-start)%total;let globalProgress// 0..1 across full draw\n;if(t<draw){globalProgress=ease(t/draw);}else if(t<draw+hold){globalProgress=1;}else if(t<draw+hold+erase){globalProgress=1-ease((t-draw-hold)/erase);}else{globalProgress=0;}const drawnLength=globalProgress*totalLength;pathEls.forEach((p,i)=>{const segStart=i===0?0:cumulative[i-1];const segEnd=cumulative[i];const segLen=lengths[i];const drawn=Math.max(0,Math.min(segLen,drawnLength-segStart));p.style.strokeDashoffset=segLen-drawn;});animRef.current=requestAnimationFrame(animate);}animRef.current=requestAnimationFrame(animate);return()=>cancelAnimationFrame(animRef.current);},[svgPath,strokeColor,strokeWidth,drawDuration,holdDuration,eraseDuration,pauseDuration]);return /*#__PURE__*/_jsx(\"svg\",{ref:svgRef,width:\"100%\",height:\"100%\",viewBox:`0 0 ${viewBoxWidth} ${viewBoxHeight}`,preserveAspectRatio:\"xMidYMid meet\",xmlns:\"http://www.w3.org/2000/svg\",style:{display:\"block\",overflow:\"visible\"}});}SignatureAnimation.defaultProps={svgPath:\"M180.499 62L237.499 2L193.996 78.3125M193.996 78.3125L147.999 159C160.192 136.731 171.751 103.374 159.626 86.2226M193.996 78.3125L159.626 86.2226M193.996 78.3125L373.5 37M159.626 86.2226C151.697 75.0052 133.637 70.7193 98.999 81L39 106L2 122.5L159.626 86.2226ZM194 92L274 2L217 106L287.5 45L263 88.5\",viewBoxWidth:376,viewBoxHeight:161,strokeColor:\"oklch(0.15 0 0)\",strokeWidth:1.5,drawDuration:2,holdDuration:1.2,eraseDuration:1.6,pauseDuration:.8};addPropertyControls(SignatureAnimation,{svgPath:{type:ControlType.String,title:\"SVG Path\",displayTextArea:true,placeholder:\"Paste d='...' path data here\"},viewBoxWidth:{type:ControlType.Number,title:\"ViewBox W\",min:10,max:2e3,step:1},viewBoxHeight:{type:ControlType.Number,title:\"ViewBox H\",min:10,max:2e3,step:1},strokeColor:{type:ControlType.Color,title:\"Stroke Color\"},strokeWidth:{type:ControlType.Number,title:\"Stroke Width\",min:.5,max:10,step:.5},drawDuration:{type:ControlType.Number,title:\"Draw (s)\",min:.2,max:10,step:.1},holdDuration:{type:ControlType.Number,title:\"Hold (s)\",min:0,max:10,step:.1},eraseDuration:{type:ControlType.Number,title:\"Erase (s)\",min:.2,max:10,step:.1},pauseDuration:{type:ControlType.Number,title:\"Pause (s)\",min:0,max:10,step:.1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SignatureAnimation\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./signarure.map","// TextReveal.tsx — Framer Code Component\n// Usage: wrap trigger words in [[ ]] in the text field\n// e.g. \"...whether it's [[Alvar Aalto]], [[Miuccia Prada]], or [[Pusha T]].\"\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";function parseText(text){if(!text)return[];const regex=/\\[\\[([^\\]]+)\\]\\]/g;const segments=[];let lastIndex=0;let match;let triggerCount=0;while((match=regex.exec(text))!==null){if(match.index>lastIndex){const raw=text.slice(lastIndex,match.index);raw.split(\"\\n\").forEach((part,i)=>{if(i>0)segments.push({type:\"break\",content:\"\"});if(part)segments.push({type:\"text\",content:part});});}segments.push({type:\"trigger\",content:match[1],triggerIndex:triggerCount++});lastIndex=match.index+match[0].length;}if(lastIndex<text.length){const raw=text.slice(lastIndex);raw.split(\"\\n\").forEach((part,i)=>{if(i>0)segments.push({type:\"break\",content:\"\"});if(part)segments.push({type:\"text\",content:part});});}return segments;}export default function TextReveal(props){const{text,triggers,// Typography\nfontSize,fontFamily,fontWeight,lineHeight,letterSpacing,color,// Trigger styling\ntriggerColor,triggerDecoration,triggerDecorationStyle,triggerUnderlineOffset,// Image styling\nimageWidth,imageHeight,imageRadius,imageBorderWidth,imageBorderColor,imageShadowX,imageShadowY,imageShadowBlur,imageShadowSpread,imageShadowColor}=props;const anchorRefs=useRef([]);const popoverRef=useRef(null);const segments=parseText(text);useEffect(()=>{const pop=document.createElement(\"div\");pop.style.cssText=\"position:absolute;top:0;left:0;pointer-events:none;z-index:9990;display:flex;align-items:flex-end;gap:8px;opacity:0;transform:translate(-50%,calc(-100% - 16px)) scale(0.88);transform-origin:bottom center;transition:opacity 120ms ease,transform 160ms cubic-bezier(0.25,0.46,0.45,0.94);\";document.body.appendChild(pop);popoverRef.current=pop;return()=>{pop.remove();};},[]);const showPopover=index=>{const el=anchorRefs.current[index];const pop=popoverRef.current;const trigger=triggers[index];if(!el||!pop||!trigger)return;const images=[trigger.image1,trigger.image2].filter(Boolean);if(!images.length)return;const r=el.getBoundingClientRect();const left=r.left+r.width/2+window.scrollX;const top=r.top+window.scrollY;const rot=[trigger.rotation1??-4,trigger.rotation2??3];const border=imageBorderWidth>0?`${imageBorderWidth}px solid ${imageBorderColor}`:\"none\";const shadow=`${imageShadowX}px ${imageShadowY}px ${imageShadowBlur}px ${imageShadowSpread}px ${imageShadowColor}`;pop.innerHTML=images.map((src,i)=>`\n            <div style=\"transform:rotate(${rot[i]}deg);border-radius:${imageRadius+4}px;box-shadow:${shadow};overflow:hidden;flex-shrink:0;border:${border};\">\n                <img src=\"${src}\" style=\"width:${imageWidth}px;height:${imageHeight}px;object-fit:cover;display:block;border-radius:${imageRadius}px;outline:1px solid rgba(0,0,0,0.06);outline-offset:-1px;\" />\n            </div>\n        `).join(\"\");pop.style.left=left+\"px\";pop.style.top=top+\"px\";pop.getBoundingClientRect();pop.style.transition=\"opacity 180ms ease, transform 220ms cubic-bezier(0.25,0.46,0.45,0.94)\";pop.style.opacity=\"1\";pop.style.transform=\"translate(-50%, calc(-100% - 16px)) scale(1)\";};const hidePopover=()=>{const pop=popoverRef.current;if(!pop)return;pop.style.transition=\"opacity 120ms ease, transform 160ms cubic-bezier(0.25,0.46,0.45,0.94)\";pop.style.opacity=\"0\";pop.style.transform=\"translate(-50%, calc(-100% - 16px)) scale(0.88)\";};const typographyStyle={fontFamily,fontSize,fontWeight,lineHeight,letterSpacing,WebkitFontSmoothing:\"antialiased\",MozOsxFontSmoothing:\"grayscale\"};return /*#__PURE__*/_jsx(\"p\",{style:{...typographyStyle,color,margin:0,width:\"100%\",textWrap:\"pretty\"},children:segments.map((seg,i)=>{if(seg.type===\"break\")return /*#__PURE__*/_jsx(\"br\",{},i);if(seg.type===\"text\")return /*#__PURE__*/_jsx(\"span\",{children:seg.content},i);const ti=seg.triggerIndex;return /*#__PURE__*/_jsx(\"span\",{ref:el=>{anchorRefs.current[ti]=el;},onMouseEnter:()=>showPopover(ti),onMouseLeave:hidePopover,style:{color:triggerColor,textDecoration:triggerDecoration,textDecorationStyle:triggerDecorationStyle,textUnderlineOffset:triggerUnderlineOffset+\"px\",cursor:\"default\",transition:\"color 150ms ease\"},children:seg.content},i);})});}TextReveal.defaultProps={text:\"...whether it's [[Alvar Aalto]], [[Miuccia Prada]], or [[Pusha T]].\",triggers:[{label:\"Alvar Aalto\",image1:\"\",image2:\"\",rotation1:-4,rotation2:3},{label:\"Miuccia Prada\",image1:\"\",image2:\"\",rotation1:-3,rotation2:5},{label:\"Pusha T\",image1:\"\",image2:\"\",rotation1:-5,rotation2:2}],// Typography\nfontSize:14,fontFamily:\"Inter, sans-serif\",fontWeight:450,lineHeight:1.6,letterSpacing:\"-0.01em\",color:\"oklch(0.15 0 0)\",// Trigger\ntriggerColor:\"oklch(0.15 0 0)\",triggerDecoration:\"underline\",triggerDecorationStyle:\"dotted\",triggerUnderlineOffset:3,// Images\nimageWidth:160,imageHeight:120,imageRadius:8,imageBorderWidth:0,imageBorderColor:\"rgba(0,0,0,0.1)\",imageShadowX:0,imageShadowY:4,imageShadowBlur:16,imageShadowSpread:0,imageShadowColor:\"rgba(0,0,0,0.12)\"};addPropertyControls(TextReveal,{// ── Content ──────────────────────────────────\ntext:{type:ControlType.String,title:\"Text\",displayTextArea:true,placeholder:\"Use [[word]] to mark hover triggers\"},triggers:{type:ControlType.Array,title:\"Triggers\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Word\"},image1:{type:ControlType.Image,title:\"Image 1\"},image2:{type:ControlType.Image,title:\"Image 2\"},rotation1:{type:ControlType.Number,title:\"Rot. 1\",min:-15,max:15,step:1,unit:\"\\xb0\"},rotation2:{type:ControlType.Number,title:\"Rot. 2\",min:-15,max:15,step:1,unit:\"\\xb0\"}}}},// ── Colors ───────────────────────────────────\ncolor:{type:ControlType.Color,title:\"Text Color\"},triggerColor:{type:ControlType.Color,title:\"Trigger Color\"},// ── Trigger styling ──────────────────────────\ntriggerDecoration:{type:ControlType.Enum,title:\"Decoration\",options:[\"none\",\"underline\",\"overline\",\"line-through\"],optionTitles:[\"None\",\"Underline\",\"Overline\",\"Strikethrough\"]},triggerDecorationStyle:{type:ControlType.Enum,title:\"Deco Style\",options:[\"solid\",\"dotted\",\"dashed\",\"wavy\"],optionTitles:[\"Solid\",\"Dotted\",\"Dashed\",\"Wavy\"]},triggerUnderlineOffset:{type:ControlType.Number,title:\"Underline Offset\",min:0,max:12,step:1,unit:\"px\"},// ── Images ───────────────────────────────────\nimageWidth:{type:ControlType.Number,title:\"Image Width\",min:60,max:400,step:4,unit:\"px\"},imageHeight:{type:ControlType.Number,title:\"Image Height\",min:40,max:400,step:4,unit:\"px\"},imageRadius:{type:ControlType.Number,title:\"Image Radius\",min:0,max:32,step:1,unit:\"px\"},imageBorderWidth:{type:ControlType.Number,title:\"Border Width\",min:0,max:8,step:.5,unit:\"px\"},imageBorderColor:{type:ControlType.Color,title:\"Border Color\"},imageShadowX:{type:ControlType.Number,title:\"Shadow X\",min:-40,max:40,step:1,unit:\"px\"},imageShadowY:{type:ControlType.Number,title:\"Shadow Y\",min:-40,max:40,step:1,unit:\"px\"},imageShadowBlur:{type:ControlType.Number,title:\"Shadow Blur\",min:0,max:80,step:1,unit:\"px\"},imageShadowSpread:{type:ControlType.Number,title:\"Shadow Spread\",min:-20,max:40,step:1,unit:\"px\"},imageShadowColor:{type:ControlType.Color,title:\"Shadow Color\"},// ── Typography ───────────────────────────────\nfontFamily:{type:ControlType.String,title:\"Font Family\"},fontSize:{type:ControlType.Number,title:\"Font Size\",min:10,max:64,step:1,unit:\"px\"},fontWeight:{type:ControlType.Number,title:\"Font Weight\",min:100,max:900,step:1},lineHeight:{type:ControlType.Number,title:\"Line Height\",min:1,max:3,step:.05},letterSpacing:{type:ControlType.String,title:\"Letter Spacing\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TextReveal\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Textreveal.map","// Generated by Framer (d369d66)\nexport default function metadata(params,activeLocale){return{description:\"Portfolio / Resum\\xe9\",favicon:\"https://framerusercontent.com/assets/e8q01cWxm8kTlz0Zscu3tuF0Eyw.png\",robots:\"max-image-preview:large\",title:\"Jonathan H\\xf6gnelid – Designer\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}