{"version":3,"file":"script_main.FH7hzyHu.mjs","names":["getProps","React.forwardRef","useId","useRef","Linkedin","sharedStyle.css","useRef","React.useId","sharedStyle.className","className","RichText","React.Fragment","sharedStyle.fonts","React.createElement","MainLayout","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/vLzRrmBkL0vN6wP0XAtk/4pmHqKcj0yqDEQM0DApq/PillNavIntro.js","https:/framerusercontent.com/modules/jhzFUVupyCrcIogvJLSo/L9AetjvoEpj55oxZeFaN/TileExpandTransition.js","https:/framerusercontent.com/modules/pBLWaIu7DFEuxK5I2Ua7/kO8M9lQCy5389ukQb83j/JqQqoxuYw.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,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useId,useLayoutEffect,useRef}from\"react\";import{addPropertyControls,ControlType,Link,useIsStaticRenderer}from\"framer\";/*\n * Pill nav + logo intro — a port of logo-intro-hero_3.html.\n *\n * The canvas trace/flight code, the timing CONFIG, and the nav pill CSS/JS are\n * kept line-for-line with the reference. Differences, all deliberate:\n *  - class names are prefixed (lih-) so they can't collide with Framer's;\n *  - html-level state classes: lih-js, lih-home (this is the intro page),\n *    lih-skip, lih-fast, lih-reset, lih-started, lih-hero-in, lih-glow-in;\n *  - the \"hero\" is your existing hero frames, found by element id (HERO_IDS);\n *  - pill look follows nav-pill.html (glass tint, Hanken Grotesk 400);\n *  - links are the site's, not the reference placeholders;\n *  - nav/canvas are absolutely positioned inside this layer (which is itself a\n *    fixed, full-viewport layer) instead of position: fixed;\n *  - the logo sits on its own top-left; once it lands, a dot traces the\n *    centred pill's outline; Resume / LinkedIn sit top-right.\n */// ─── Timing & look (verbatim from the reference CONFIG) ───\nconst CONFIG={traceDuration:2.4,easing:\"easeInOutSine\",startZoom:5.5,pullbackAt:.88,size:.6,tail:.2,thickness:1.2,glow:1,glowColor:\"#ffffff\",settle:.45,flightDelay:.15,flight:.75,outlineDuration:.5,heroIn:.4};// Landing lap: after the logo lands, a small dot with a short tail runs once\n// round the pill (clockwise from its left end), drawing the outline behind it.\nconst LAP={delay:.18,duration:1.2,fastDuration:.6,tail:40,fadeFrom:.7,linksDelay:300,linkDuration:900,linkStagger:220,sideIn:350,selectedAt:.6};const TAIL_SLICES=16;// Hero groups in reveal order (reference: h1 = --i:0, p = --i:1, ...).\n// One id per breakpoint copy of each group.\nconst HERO_GROUPS=[[\"site-hero-lines-desktop\",\"site-hero-lines-tablet\",\"site-hero-lines-phone\"],[\"site-hero-subtitle-desktop\",\"site-hero-subtitle-tablet\",\"site-hero-subtitle-phone\"]];const HERO_IDS=HERO_GROUPS.flat();// Hero reveal, matched to the old Wix home page (its motion settings, verbatim):\n// greeting + headline float in first; 0.8s later the fun line slides down,\n// the bio floats in.\nconst WIX_FLOAT=\"cubic-bezier(0.445, 0.05, 0.55, 0.95)\";const WIX_SLIDE=\"cubic-bezier(0.645, 0.045, 0.355, 1)\";const WIX_FADE_IN=\"cubic-bezier(0.55, 0.055, 0.675, 0.19)\";const HERO_REVEAL=[{ids:[\"site-hero-intro\"],animation:`lih-float-in 800ms ${WIX_FLOAT} 1ms`},{ids:[\"site-hero-fun\"],animation:`lih-slide-in 800ms ${WIX_SLIDE} 800ms`},{ids:HERO_GROUPS[1],animation:`lih-float-in 800ms ${WIX_FLOAT} 800ms`}];// Background glow: forms and spins behind the logo while it traces, cued when the\n// intro starts (lih-glow-in) and settling as the logo lands in the nav.\n// The glow layers' edges would show as a hard rectangle while turning, so a soft\n// elliptical mask hides them and grows away just as the spin settles.\nconst GLOW_ID=\"site-hero-glow\";const GLOW_MS=Math.round((CONFIG.traceDuration+CONFIG.flightDelay+CONFIG.flight)*1e3);const GLOW_ANIMATION=`lih-fade-in ${GLOW_MS}ms ${WIX_FADE_IN}, lih-spin-in ${GLOW_MS}ms ${WIX_SLIDE}, lih-glow-mask ${GLOW_MS}ms linear`;const REVEAL_IDS=HERO_REVEAL.flatMap(g=>g.ids);// If the intro never cues the hero (script error, slow mount), show it anyway\nconst HERO_FAILSAFE_MS=8e3;const SESSION_KEY=\"lihIntroPlayed\";// Links are full page loads, so the lamp's slide is handed to the next page:\n// on click we store where it was, and the new page slides it on from there.\nconst LAMP_KEY=\"lihLampFrom\";const LAMP_HANDOFF_MS=4e3;const SEGS=[[\"C\",[178,60],[150,88],[98,132],[100,160]],[\"C\",[100,160],[102,184],[140,180],[200,172]],[\"C\",[200,172],[262,164],[322,150],[322,190]],[\"C\",[322,190],[322,238],[230,312],[112,336]],[\"L\",[112,336],[178,60]],[\"L\",[178,60],[240,278]]];const CENTER=[210,198];const BOUNDS=[98,60,322,336];const VIEW_H=288;const LOGO_PATH=\"M178 60 C150 88 98 132 100 160 C102 184 140 180 200 172 C262 164 322 150 322 190 C322 238 230 312 112 336 L178 60 L240 278\";const clamp01=v=>Math.min(1,Math.max(0,v));const smooth=v=>v*v*(3-2*v);const lerp=(a,b,t)=>a+(b-a)*t;const easeOutCubic=p=>1-Math.pow(1-p,3);const easeInOutQuart=p=>p<.5?8*p*p*p*p:1-Math.pow(-2*p+2,4)/2;function ease(p,kind){switch(kind){case\"linear\":return p;case\"easeInOutSine\":return-(Math.cos(Math.PI*p)-1)/2;case\"easeOutExpo\":return p===1?1:1-Math.pow(2,-10*p);case\"easeInOutQuint\":return p<.5?16*p**5:1-Math.pow(-2*p+2,5)/2;default:return p<.5?4*p*p*p:1-Math.pow(-2*p+2,3)/2;}}// Path sampling (evenly spaced points) — verbatim.\nconst STEP=.5;const PTS=(()=>{const dense=[];for(const s of SEGS){const n=400;for(let i=dense.length?1:0;i<=n;i++){const t=i/n;const u=1-t;if(s[0]===\"C\"){const[,a,b,c,d]=s;dense.push([u*u*u*a[0]+3*u*u*t*b[0]+3*u*t*t*c[0]+t*t*t*d[0],u*u*u*a[1]+3*u*u*t*b[1]+3*u*t*t*c[1]+t*t*t*d[1]]);}else{const[,a,b]=s;dense.push([a[0]+(b[0]-a[0])*t,a[1]+(b[1]-a[1])*t]);}}}const pts=[dense[0]];let acc=0;for(let i=1;i<dense.length;i++){const[x0,y0]=dense[i-1];const[x1,y1]=dense[i];const d=Math.hypot(x1-x0,y1-y0);acc+=d;while(acc>=STEP){acc-=STEP;const f=1-acc/d;pts.push([x0+(x1-x0)*f,y0+(y1-y0)*f]);}}pts.push(dense[dense.length-1]);return pts;})();const TOTAL=(PTS.length-1)*STEP;const ptAt=len=>PTS[Math.max(0,Math.min(PTS.length-1,Math.round(len/STEP)))];// ─── Links ───\n// Framer page ids, so links follow Framer's router (Preview, renamed paths, no full reload).\nconst PAGE={home:\"augiA20Il\",about:\"VcIxtvFuG\",fun:\"zKE5_esUX\"};function currentKey(){const p=window.location.pathname;if(p===\"/\"||p.startsWith(\"/work\"))return\"work\";if(p.startsWith(\"/about\"))return\"about\";if(p.startsWith(\"/fun\"))return\"fun\";// Framer preview can run under a different path: fall back to the hero\nif(HERO_IDS.some(id=>document.getElementById(id)))return\"work\";return\"\";}// Keys the prepaint script can mark from the URL, mirrored in currentKey()\nconst LINK_KEYS=[\"work\",\"about\",\"fun\"];const SELECTED_SEL=[`.lih-nav a.lih-link[aria-current=\"page\"]`,...LINK_KEYS.map(k=>`html[data-lih-cur=\"${k}\"] .lih-nav a.lih-link[data-key=\"${k}\"]`)];// ─── CSS (reference styles, prefixed) ───\n// H = \"intro will play / is playing on this page\" — the reference's `.js` hidden states.\nconst H=\"html.lih-js.lih-home:not(.lih-skip)\";const HF=\"html.lih-js.lih-home.lih-fast:not(.lih-skip)\";const heroSel=(suffix,prefix)=>HERO_IDS.map(id=>`${prefix} #${id}${suffix}`).join(\",\\n\");function buildCss(gid){return`\n.lih-root a:focus-visible, .lih-root button:focus-visible { outline: 2px solid #f2f1f5; outline-offset: 3px; }\n\n/* ---------- Intro canvas ---------- */\n.lih-canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: none; z-index: 30; pointer-events: none; }\n\n/* ---------- Nav pill ---------- */\n/* Hugs the page links and sits centred; the logo and Resume / LinkedIn sit\n   outside it at the page gutters (40 / 24 / 20px per breakpoint). Centred with\n   auto margins. */\n.lih-root { --lih-gutter: 40px; --lih-top: calc(16px + env(safe-area-inset-top, 0px)); --lih-h: 40px; }\n.lih-nav {\n  position: absolute;\n  top: var(--lih-top);\n  left: 0; right: 0; margin: 0 auto;\n  box-sizing: border-box;\n  width: max-content;\n  height: var(--lih-h);\n  z-index: 20;\n  display: flex; align-items: center; justify-content: center; gap: 4px;\n  padding: 3px 6px;\n  border: 1px solid transparent;\n  border-radius: 999px;\n  isolation: isolate;\n  pointer-events: auto;\n  font-family: 'Hanken Grotesk', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n  font-weight: 400;\n  -webkit-font-smoothing: antialiased;\n  white-space: nowrap;\n}\n/* The glass is its own layer so the intro can fade it in after the outline is traced */\n.lih-nav::before {\n  content: ''; position: absolute; inset: -1px; z-index: 0;\n  border-radius: inherit; pointer-events: none;\n  background: rgba(45, 45, 53, 0.22);\n  -webkit-backdrop-filter: saturate(180%) blur(10px);\n  backdrop-filter: saturate(180%) blur(10px);\n}\n@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {\n  .lih-nav::before { background: rgba(22, 22, 23, 0.94); }\n}\n.lih-nav > .lih-group { position: relative; z-index: 1; }\n\n.lih-outline {\n  position: absolute; left: -1px; top: -1px;\n  overflow: visible; pointer-events: none; z-index: 1;\n  will-change: transform;\n}\n.lih-outline path {\n  fill: none;\n  stroke-width: 1;\n  stroke-linecap: butt;\n  stroke-dasharray: 1 2;\n  stroke-dashoffset: 0;\n}\n\n/* Landing lap: the dot and its fading tail */\n.lih-sweep {\n  position: absolute; left: -1px; top: -1px;\n  overflow: visible; pointer-events: none; z-index: 2;\n  filter: drop-shadow(0 0 2px rgba(255,255,255,.6)) drop-shadow(0 0 6px rgba(255,255,255,.25));\n}\n.lih-sweep path { fill: none; stroke: #fff; stroke-width: 1.2; stroke-linecap: round; opacity: 0; }\n.lih-sweep circle { fill: #fff; opacity: 0; }\n.lih-group { display: flex; gap: 2px; }\n.lih-nav a.lih-link {\n  color: rgba(245, 245, 247, 0.48); text-decoration: none;\n  font-size: 14px; line-height: 1;\n  padding: 9px 14px; border-radius: 999px;\n  transition: color .2s;\n}\n.lih-nav a.lih-link:not([href]) { cursor: default; }\n.lih-nav a.lih-link:hover { color: #f5f5f7; }\n.lih-nav a.lih-link { position: relative; }\n/* Selected look lives on its own layer and cross-fades, so a link's text is\n   never left transparent while the gradient is gone (that was the blink). */\n.lih-nav .lih-lit {\n  position: absolute; inset: 0; padding: inherit;\n  color: transparent;\n  background-image: linear-gradient(to top,\n    #ffffff 0, #ffffff 11px,\n    rgba(250, 250, 252, 0.94) 16px,\n    rgba(245, 245, 247, 0.8) 22px);\n  -webkit-background-clip: text;\n          background-clip: text;\n  filter: drop-shadow(0 2px 4px rgba(255, 255, 255, 0.35));\n  opacity: 0;\n  transition: opacity .2s;\n  pointer-events: none;\n}\n/* Selected: set by the effect (aria-current), or before first paint from the\n   URL by the prepaint script (html[data-lih-cur]) so the right link is lit\n   on the very first frame. */\n${SELECTED_SEL.map(sel=>sel).join(\",\\n\")} { color: transparent; }\n${SELECTED_SEL.map(sel=>sel+\" .lih-lit\").join(\",\\n\")} { opacity: 1; }\n@media (prefers-reduced-motion: reduce) { .lih-nav a.lih-link, .lih-nav .lih-lit { transition: none; } }\n\n.lih-lamp {\n  position: absolute; bottom: -1px; left: 0;\n  height: calc(100% + 1px); width: 0;\n  pointer-events: none; z-index: 1;\n  transition:\n    transform .5s cubic-bezier(.3, 1.15, .4, 1),\n    width .5s cubic-bezier(.3, 1.15, .4, 1);\n}\n.lih-lamp::before {\n  content: ''; position: absolute; bottom: 0; left: 50%;\n  width: 10px; height: 1.5px; margin-left: -5px;\n  border-radius: 2px 2px 0 0;\n  background: #fff;\n  box-shadow: 0 0 5px 1px rgba(255, 255, 255, 0.55), 0 0 12px 2px rgba(255, 255, 255, 0.2);\n}\n.lih-lamp::after {\n  content: ''; position: absolute;\n  top: 0; bottom: 0; left: -36px; right: -36px;\n  background:\n    radial-gradient(28px 12px at 50% 100%, rgba(255, 255, 255, 0.07), transparent),\n    conic-gradient(from -70deg at 50% 100%,\n      transparent 0deg,\n      rgba(255, 255, 255, 0.015) 20deg,\n      rgba(255, 255, 255, 0.04) 45deg,\n      rgba(255, 255, 255, 0.07) 70deg,\n      rgba(255, 255, 255, 0.04) 95deg,\n      rgba(255, 255, 255, 0.015) 120deg,\n      transparent 140deg,\n      transparent 360deg);\n  -webkit-mask-image: linear-gradient(to top, #000 0%, rgba(0,0,0,.5) 45%, transparent 90%);\n          mask-image: linear-gradient(to top, #000 0%, rgba(0,0,0,.5) 45%, transparent 90%);\n}\n/* Hidden until placed: the server-rendered lamp has no position yet and would sit at the left edge */\n.lih-lamp:not(.is-placed) { visibility: hidden; }\n@media (prefers-reduced-motion: reduce) { .lih-lamp { transition: none; } }\n.lih-logo {\n  position: absolute; top: var(--lih-top); left: var(--lih-gutter); z-index: 20;\n  height: var(--lih-h); display: grid; place-items: center; padding: 0 4px;\n  border-radius: 999px; pointer-events: auto;\n}\n.lih-logo svg {\n  display: block; height: 27px; width: auto; overflow: visible;\n  filter: drop-shadow(0 0 1.5px rgba(255,255,255,.7)) drop-shadow(0 0 5px rgba(255,255,255,.3));\n}\n\n/* ---------- Resume / LinkedIn (top right, no pill) ---------- */\n.lih-side {\n  position: absolute; top: var(--lih-top); right: var(--lih-gutter); z-index: 20;\n  height: var(--lih-h); display: flex; align-items: center; gap: 22px;\n  pointer-events: auto;\n  font-family: 'Hanken Grotesk', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n  font-weight: 400; -webkit-font-smoothing: antialiased; white-space: nowrap;\n}\n.lih-side a {\n  display: inline-flex; align-items: center; gap: 5px;\n  color: rgba(245, 245, 247, 0.48); text-decoration: none;\n  font-size: 14px; line-height: 1; padding: 9px 2px;\n  transition: color .2s;\n}\n.lih-side a:not([href]) { cursor: default; }\n.lih-side a:hover { color: #f5f5f7; }\n.lih-side a svg { width: 10px; height: 10px; flex: none; transition: transform .25s cubic-bezier(.3,1.4,.5,1); }\n.lih-side a:hover svg { transform: translate(1.5px, -1.5px); }\n.lih-logo, .lih-side { will-change: transform; }\n\n/* ---------- Replay control ---------- */\n.lih-replay {\n  position: absolute;\n  right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px));\n  z-index: 40;\n  padding: 10px 14px; min-height: 40px;\n  border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.1);\n  background: rgba(255,255,255,.04); color: #9c9aa8;\n  font: 500 12px/1 'Nunito Sans', system-ui, sans-serif; cursor: pointer;\n  opacity: 0; pointer-events: none; transition: opacity .3s, color .2s;\n}\n.lih-replay.is-in { opacity: 1; pointer-events: auto; }\n.lih-replay:hover { color: #f2f1f5; }\n\n/* ---------- Intro states (only on the intro page while it is not skipped) ---------- */\n${H} .lih-nav { opacity: 0; }\n${H} .lih-nav.is-in { opacity: 1; transition: opacity .25s ease; }\n${H} .lih-nav::before { opacity: 0; }\n/* The current page stays unlit until the pill's links have shown (sel-in), then lights up */\n${H} .lih-nav:not(.sel-in) a.lih-link:not(:hover) { color: rgba(245, 245, 247, 0.48) !important; }\n${H} .lih-nav:not(.sel-in) .lih-lit { opacity: 0 !important; }\n${H} .lih-nav.sel-fade a.lih-link, ${H} .lih-nav.sel-fade .lih-lit { transition: color .3s ease, opacity .3s ease; }\n${H} .lih-nav.glass-in::before { opacity: 1; transition: opacity .5s ease; }\n${H} .lih-side { opacity: 0; }\n${H} .lih-side.is-in { opacity: 1; transition: opacity .6s ease; }\n${H} .lih-outline path { stroke-dashoffset: 1; }\n${H} .lih-nav.is-in .lih-outline path {\n  stroke-dashoffset: 0;\n  transition: stroke-dashoffset var(--outline-dur, .5s) cubic-bezier(.4, 0, .2, 1);\n}\n/* Links stay hidden until the landing comet passes over them (is-shown), or all at once (links-in);\n   the lamp shows with the current page's link (lamp-in). */\n${H} .lih-nav a.lih-link { opacity: 0; }\n${H} .lih-nav.links-in a.lih-link, ${H} .lih-nav a.lih-link.is-shown { opacity: 1; }\n${H} .lih-lamp { opacity: 0; }\n${H} .lih-nav.lamp-in .lih-lamp { opacity: 1; transition: opacity .3s ease, transform .5s cubic-bezier(.3,1.15,.4,1), width .5s cubic-bezier(.3,1.15,.4,1); }\n${H} .lih-logo svg { opacity: 0; }\n${H} .lih-logo svg.is-in { opacity: 1; }\n/* Hero reveal (Wix timings). Plays on every visit to the intro page, cued by lih-hero-in:\n   after the logo lands, or straight away when the logo intro is skipped. */\n@keyframes lih-float-in {\n  from { opacity: 0; transform: translateY(60px); }\n  to { opacity: 1; transform: translateY(0); }\n}\n@keyframes lih-slide-in {\n  from { opacity: 0; transform: translateY(-100%); clip-path: polygon(0% 20%, 100% 20%, 100% 100%, 0% 100%); }\n  to { opacity: 1; transform: translateY(0); clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%); }\n}\n@keyframes lih-fade-in { from { opacity: 0; } to { opacity: 1; } }\n@keyframes lih-spin-in { from { rotate: -90deg; } to { rotate: 0deg; } }\n@keyframes lih-glow-mask {\n  0%, 80% {\n    -webkit-mask-image: radial-gradient(closest-side, #000 55%, transparent 100%);\n    mask-image: radial-gradient(closest-side, #000 55%, transparent 100%);\n    -webkit-mask-position: center; mask-position: center;\n    -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;\n    -webkit-mask-size: 100% 100%; mask-size: 100% 100%;\n  }\n  100% {\n    -webkit-mask-image: radial-gradient(closest-side, #000 55%, transparent 100%);\n    mask-image: radial-gradient(closest-side, #000 55%, transparent 100%);\n    -webkit-mask-position: center; mask-position: center;\n    -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;\n    -webkit-mask-size: 400% 400%; mask-size: 400% 400%;\n  }\n}\n@media (prefers-reduced-motion: no-preference) {\n${REVEAL_IDS.map(id=>`html.lih-js.lih-home:not(.lih-hero-in) #${id}`).join(\",\\n\")} { opacity: 0 !important; }\n${HERO_REVEAL.map(g=>g.ids.map(id=>`html.lih-js.lih-home.lih-hero-in #${id}`).join(\", \")+` { animation: ${g.animation} backwards; }`).join(\"\\n\")}\n/* Skipped by input: finish quickly */\n${REVEAL_IDS.map(id=>`${HF}.lih-hero-in #${id}`).join(\",\\n\")} { animation-duration: .3s; animation-delay: 0s; }\nhtml.lih-js.lih-home:not(.lih-glow-in) #${GLOW_ID} { opacity: 0 !important; }\nhtml.lih-js.lih-home.lih-glow-in #${GLOW_ID} { animation: ${GLOW_ANIMATION} backwards; }\n${HF}.lih-glow-in #${GLOW_ID} { animation-duration: .3s; }\n}\n\n/* Skipped by input: finish quickly */\n${HF} .lih-nav.is-in .lih-outline path { transition-duration: .3s !important; transition-delay: 0s !important; }\n\n/* Once drawn (or never animated), drop the dash so rounding can't leave a hairline gap */\n.lih-nav.outline-done .lih-outline path { stroke-dasharray: none; }\n\n/* Instant reset before replaying */\nhtml.lih-reset .lih-nav, html.lih-reset .lih-nav::before, html.lih-reset .lih-side, html.lih-reset .lih-nav a.lih-link, html.lih-reset .lih-lamp, html.lih-reset .lih-outline path,\nhtml.lih-reset .lih-logo svg { transition: none !important; }\n\n@media (max-width: 1199.98px) { .lih-root { --lih-gutter: 24px; } }\n/* Phones: logo + pill with Work \\xb7 About; Fun and Resume / LinkedIn hidden */\n@media (max-width: 809.98px) {\n  .lih-root { --lih-gutter: 20px; }\n  .lih-nav .hide-sm, .lih-side { display: none; }\n}\n@media (max-width: 560px) {\n  .lih-nav a.lih-link { padding: 9px 12px; }\n}\n@media (min-width: 561px) {\n  /* More room between links on tablet/desktop */\n  .lih-nav .lih-group { gap: 14px; }\n}\n/* gradient id for this instance: ${gid} */\n`;}// Runs as the server-rendered HTML is parsed — before the hero below it paints —\n// so the intro's hidden states apply from the first frame (the reference does\n// this in <head>). React never executes it on client renders; the effect below\n// covers that case.\nfunction prepaintScript(introPath,oncePerSession){return`(function(){try{var d=document.documentElement;var p=location.pathname,k=p==='/'||p.indexOf('/work')===0?'work':p.indexOf('/about')===0?'about':p.indexOf('/fun')===0?'fun':'';if(k)d.setAttribute('data-lih-cur',k);if(d.classList.contains('lih-js'))return;d.classList.add('lih-js');if(location.pathname===${JSON.stringify(introPath)})d.classList.add('lih-home');var s=false;try{if(${oncePerSession?\"true\":\"false\"}&&sessionStorage.getItem('${SESSION_KEY}'))s=true}catch(e){}if(window.matchMedia&&matchMedia('(prefers-reduced-motion: reduce)').matches)s=true;if(s)d.classList.add('lih-skip');setTimeout(function(){d.classList.add('lih-hero-in','lih-glow-in')},${HERO_FAILSAFE_MS})}catch(e){}})();`;}/**\n * Pill Nav + Logo Intro\n *\n * The site nav: logo on its own top-left, a centred glass pill with\n * Work · About · Fun (Work · About on phones), and Resume / LinkedIn text links\n * top-right. Only the pill stays pinned; logo and side links scroll away.\n * Landing intro: the logo traces on a full-page canvas, then shrinks and flies\n * to the top-left, landing with a small squash and flash.\n * A small dot with a short tail runs once round the pill, clockwise from its\n * left end, drawing the outline behind it; then the pill's glass fades in,\n * followed by the links. The hero frames\n * carrying the HERO_IDS element ids fade/rise in, staggered.\n *\n * Put ONE instance in the layout template: position fixed, 100% x 100%,\n * pointer events none, top-most zIndex. The intro only plays on `introPath`.\n *\n * @framerIntrinsicWidth 1200\n * @framerIntrinsicHeight 800\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function PillNavIntro(props){const{introPath=\"/\",oncePerSession=true,showReplay=true,resumeUrl=\"\",linkedinUrl=\"\"}=props;const isStatic=useIsStaticRenderer();const gid=\"lihg\"+useId().replace(/[^a-zA-Z0-9_-]/g,\"\");const canvasRef=useRef(null);const navRef=useRef(null);const svgRef=useRef(null);const outlineRef=useRef(null);const outLRef=useRef(null);const outRRef=useRef(null);const gradRef=useRef(null);const lampRef=useRef(null);const sweepRef=useRef(null);const replayRef=useRef(null);const rootRef=useRef(null);const dotRef=useRef(null);const logoRef=useRef(null);const sideRef=useRef(null);const navLinks=[{key:\"work\",label:\"Work\",page:{webPageId:PAGE.home},cls:\"\"},{key:\"about\",label:\"About\",page:{webPageId:PAGE.about},cls:\"\"},{key:\"fun\",label:\"Fun\",page:{webPageId:PAGE.fun},cls:\"hide-sm\"}];const sideLinks=[{key:\"resume\",label:\"Resume\",href:resumeUrl},{key:\"linkedin\",label:\"LinkedIn\",href:linkedinUrl}];// Only the pill stays pinned: logo and side links ride up with the page.\nuseEffect(()=>{if(isStatic)return;let raf=0;let lastY=-1;const apply=()=>{raf=0;// Past ~120px they're off-screen; stop writing.\nconst y=Math.min(window.scrollY||0,120);if(y===lastY)return;lastY=y;const t=y?`translateY(${-y}px)`:\"\";// The logo sits in Framer's Link (hydrates late), so fall back to the DOM\nconst logo=logoRef.current||rootRef.current?.querySelector(\".lih-logo\");if(logo)logo.style.transform=t;if(sideRef.current)sideRef.current.style.transform=t;};const onScroll=()=>{if(!raf)raf=requestAnimationFrame(apply);};apply();window.addEventListener(\"scroll\",onScroll,{passive:true});return()=>{window.removeEventListener(\"scroll\",onScroll);if(raf)cancelAnimationFrame(raf);};},[isStatic]);useLayoutEffect(()=>{const canvas=canvasRef.current;const nav=navRef.current;// Framer's Link wraps the logo in a Suspense boundary that hydrates after\n// this effect runs, so the ref can still be null here. The element itself\n// is already in the server HTML (and hydrates in place), so find it in the DOM.\nconst navSvg=svgRef.current||rootRef.current?.querySelector(\".lih-logo svg\")||null;const outline=outlineRef.current;const outL=outLRef.current;const outR=outRRef.current;const grad=gradRef.current;const lamp=lampRef.current;const sweep=sweepRef.current;const sweepPaths=sweep?Array.from(sweep.querySelectorAll(\"path\")):[];if(!canvas||!nav||!navSvg||!outline||!outL||!outR||!grad||!lamp||!sweep||!sweepPaths.length){// Never leave the page hidden waiting for an intro that can't run:\n// lih-skip turns off every intro-hidden state (nav and hero show as final).\ndocument.documentElement.classList.add(\"lih-skip\",\"lih-hero-in\",\"lih-glow-in\");return;}const html=document.documentElement;const cleanups=[];const timeouts=[];const later=(fn,ms)=>timeouts.push(window.setTimeout(fn,ms));// ---------- Pill outline geometry ----------\n// The outline is one loop, clockwise from the pill's left end: the dot's lap.\nlet perimeter=0;function sizeOutline(){const w=nav.offsetWidth;const h=nav.offsetHeight;if(!w||!h)return;const r=h/2-.5;const top=.5;const bot=h-.5;const cy=h/2;outline.setAttribute(\"width\",String(w));outline.setAttribute(\"height\",String(h));outline.setAttribute(\"viewBox\",`0 0 ${w} ${h}`);// One closed loop, clockwise from the left end (the dot's lap); outL is unused\nconst lap=`M0.5 ${cy} A${r} ${r} 0 0 1 ${h/2} ${top} H${w-h/2} A${r} ${r} 0 0 1 ${w-h/2} ${bot} H${h/2} A${r} ${r} 0 0 1 0.5 ${cy} Z`;outR.setAttribute(\"d\",lap);outL.setAttribute(\"d\",\"\");// Tail layer: slices of the same loop\nsweep.setAttribute(\"width\",String(w));sweep.setAttribute(\"height\",String(h));sweep.setAttribute(\"viewBox\",`0 0 ${w} ${h}`);for(const p of sweepPaths)p.setAttribute(\"d\",lap);perimeter=2*(w-h)+2*Math.PI*r;const len=Math.hypot(w,h);const nx=h/len;const ny=w/len;const D=w*h/len;grad.setAttribute(\"x1\",String(w/2-nx*D));grad.setAttribute(\"y1\",String(h/2-ny*D));grad.setAttribute(\"x2\",String(w/2+nx*D));grad.setAttribute(\"y2\",String(h/2+ny*D));}// ---------- Selected-state lamp ----------\nconst links=Array.from(nav.querySelectorAll(\"a.lih-link\"));function setCurrent(key){for(const l of links){if(key&&l.dataset.key===key)l.setAttribute(\"aria-current\",\"page\");else l.removeAttribute(\"aria-current\");}}function linkBox(el){const parent=el.offsetParent;return{x:el.offsetLeft+(parent?parent.offsetLeft:0),w:el.offsetWidth};}function setLamp(x,w,instant){if(instant)lamp.style.transition=\"none\";lamp.style.width=w+\"px\";lamp.style.transform=`translateX(${x}px)`;if(instant){void lamp.offsetWidth;lamp.style.transition=\"\";}lamp.classList.add(\"is-placed\");}function placeLamp(instant){// Phones show a different copy of some links, so use the visible one.\nconst el=links.find(l=>l.getAttribute(\"aria-current\")===\"page\"&&l.offsetWidth>0);if(!el){lamp.style.visibility=\"hidden\";return;}lamp.style.visibility=\"\";const{x,w}=linkBox(el);setLamp(x,w,instant);}// Lamp position stored by the previous page's click, if it is fresh\nfunction takeHandoff(){try{const raw=sessionStorage.getItem(LAMP_KEY);sessionStorage.removeItem(LAMP_KEY);if(!raw)return null;const v=JSON.parse(raw);if(Date.now()-v.t>LAMP_HANDOFF_MS)return null;return{x:v.x,w:v.w,navW:v.navW};}catch(e){return null;}}setCurrent(currentKey());// aria-current now carries the selection (same styles), so drop the prepaint marker\nhtml.removeAttribute(\"data-lih-cur\");for(const link of links){const onClick=()=>{const key=link.dataset.key||\"\";if(!key||link.dataset.external===\"1\")return;// Work opens Home at the hero; already on Home, glide back up to it\nif(key===\"work\"&&window.location.pathname===\"/\")window.scrollTo({top:0,behavior:\"smooth\"});if(link.getAttribute(\"aria-current\")===\"page\")return;const cur=links.find(l=>l.getAttribute(\"aria-current\")===\"page\"&&l.offsetWidth>0);if(cur){try{sessionStorage.setItem(LAMP_KEY,JSON.stringify({...linkBox(cur),navW:nav.offsetWidth,t:Date.now()}));}catch(e){}}setCurrent(key);placeLamp(false);// The router may keep this nav mounted (no reload): then nothing consumes the hand-off\nlater(()=>{try{sessionStorage.removeItem(LAMP_KEY);}catch(e){}},1500);};link.addEventListener(\"click\",onClick);cleanups.push(()=>link.removeEventListener(\"click\",onClick));}const onOutlineEnd=e=>{if(e.propertyName===\"stroke-dashoffset\"&&nav.classList.contains(\"is-in\"))nav.classList.add(\"outline-done\");};outR.addEventListener(\"transitionend\",onOutlineEnd);cleanups.push(()=>outR.removeEventListener(\"transitionend\",onOutlineEnd));sizeOutline();// Only re-snap the lamp when the pill's size really changes, so the\n// observer's first callback can't cut a slide short.\nlet navSize=\"\";let handoffPending=false;const onNavResize=()=>{if(handoffPending)return sizeOutline();const size=nav.offsetWidth+\"x\"+nav.offsetHeight;if(size===navSize)return;navSize=size;sizeOutline();placeLamp(true);};let alive=true;cleanups.push(()=>{alive=false;});const from=takeHandoff();if(from){handoffPending=true;// Measure in the final font (link widths change when it loads), then slide on.\nconst fontsReady=document.fonts&&document.fonts.ready?document.fonts.ready:Promise.resolve();fontsReady.then(()=>{if(!alive)return;handoffPending=false;navSize=nav.offsetWidth+\"x\"+nav.offsetHeight;sizeOutline();const target=links.find(l=>l.getAttribute(\"aria-current\")===\"page\"&&l.offsetWidth>0);// Different pill width (e.g. crossed a breakpoint): positions don't carry over\nif(!target||from.navW!==nav.offsetWidth)return placeLamp(true);// setLamp(instant) commits the start with a reflow, so the\n// move to the current link transitions straight away.\nsetLamp(from.x,from.w,true);placeLamp(false);});}else{onNavResize();if(document.fonts&&document.fonts.ready)document.fonts.ready.then(()=>alive&&onNavResize());}// Back/forward cache restores the old page as it was left (lamp on the clicked link)\nconst onPageShow=e=>{if(!e.persisted)return;setCurrent(currentKey());placeLamp(true);};window.addEventListener(\"pageshow\",onPageShow);// Router back/forward without a reload\nconst onPopState=()=>{setCurrent(currentKey());placeLamp(false);};window.addEventListener(\"popstate\",onPopState);cleanups.push(()=>window.removeEventListener(\"popstate\",onPopState));cleanups.push(()=>window.removeEventListener(\"pageshow\",onPageShow));const navRO=new ResizeObserver(onNavResize);navRO.observe(nav);cleanups.push(()=>navRO.disconnect());window.addEventListener(\"resize\",onNavResize);cleanups.push(()=>window.removeEventListener(\"resize\",onNavResize));nav.style.setProperty(\"--outline-dur\",CONFIG.outlineDuration+\"s\");// ---------- Link reveal (the landing comet uncovers the links) ----------\nconst revealTimers=[];const showAllLinks=()=>nav.classList.add(\"links-in\",\"lamp-in\");const resetLinks=()=>{revealTimers.forEach(t=>window.clearTimeout(t));revealTimers.length=0;for(const l of links){l.classList.remove(\"is-shown\");if(l.getAnimations)l.getAnimations().forEach(a=>a.cancel());}nav.classList.remove(\"links-in\",\"lamp-in\");};cleanups.push(()=>revealTimers.forEach(t=>window.clearTimeout(t)));const side=sideRef.current;const finalLocal=()=>{nav.classList.add(\"is-in\",\"outline-done\",\"glass-in\",\"sel-in\");navSvg.classList.add(\"is-in\");if(side)side.classList.add(\"is-in\");showAllLinks();};const cleanupAll=()=>{timeouts.forEach(t=>window.clearTimeout(t));cleanups.forEach(fn=>fn());};if(isStatic){finalLocal();return cleanupAll;}// Pre-paint script didn't run (client-only render, e.g. Framer preview).\nif(!html.classList.contains(\"lih-js\")){html.classList.add(\"lih-reset\")// hide instantly, no fade-out\n;html.classList.add(\"lih-js\");const heroPresent=HERO_IDS.some(id=>document.getElementById(id));if(window.location.pathname===introPath||heroPresent)html.classList.add(\"lih-home\");let skip=false;try{if(oncePerSession&&sessionStorage.getItem(SESSION_KEY))skip=true;}catch(e){}if(window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)skip=true;if(skip)html.classList.add(\"lih-skip\");void document.body.offsetHeight;html.classList.remove(\"lih-reset\");later(()=>html.classList.add(\"lih-hero-in\",\"lih-glow-in\"),HERO_FAILSAFE_MS);}const isHome=html.classList.contains(\"lih-home\");const replayBtn=replayRef.current;// Only the copy that is actually laid out plays (breakpoint copies of the\n// layout can coexist, hidden by CSS).\nconst active=nav.getClientRects().length>0;if(!active){finalLocal();if(isHome){// Failsafe: if no visible copy starts, show the final state.\nlater(()=>{if(!html.classList.contains(\"lih-started\"))html.classList.add(\"lih-skip\",\"lih-hero-in\",\"lih-glow-in\");},400);}return cleanupAll;}// The visible copy always sets the intro up (so Replay works even when it\n// doesn't auto-play: already seen this session, or the page mounted late).\nconst autoPlay=isHome&&!html.classList.contains(\"lih-skip\")&&!html.classList.contains(\"lih-started\");// ---------- Canvases ----------\nconst ctx=canvas.getContext(\"2d\");const core=document.createElement(\"canvas\");const halo=document.createElement(\"canvas\")// half resolution: it gets blurred anyway\n;const cctx=core.getContext(\"2d\");const hctx=halo.getContext(\"2d\");if(!ctx||!cctx||!hctx){html.classList.add(\"lih-skip\",\"lih-hero-in\",\"lih-glow-in\");finalLocal();return cleanupAll;}const showReplayBtn=()=>{if(showReplay&&replayBtn)replayBtn.classList.add(\"is-in\");};const HALO_RES=.5;ctx.filter=\"blur(1px)\";const hasFilter=ctx.filter===\"blur(1px)\";ctx.filter=\"none\";let W=0;let Hh=0;let dpr=1;let originX=0;let originY=0;function resize(){dpr=Math.min(window.devicePixelRatio||1,2);W=canvas.clientWidth;Hh=canvas.clientHeight;const cr=canvas.getBoundingClientRect();originX=cr.left;originY=cr.top;canvas.width=core.width=Math.round(W*dpr);canvas.height=core.height=Math.round(Hh*dpr);halo.width=Math.round(W*dpr*HALO_RES);halo.height=Math.round(Hh*dpr*HALO_RES);}function strokeRange(c,a,b,w,alpha,color){if(b<=a||alpha<=.002)return;const i0=Math.max(0,Math.floor(a/STEP));const i1=Math.min(PTS.length-1,Math.ceil(b/STEP));if(i1<=i0)return;c.globalAlpha=Math.min(1,alpha);c.strokeStyle=color;c.lineWidth=w;c.beginPath();c.moveTo(PTS[i0][0],PTS[i0][1]);for(let i=i0+1;i<=i1;i++)c.lineTo(PTS[i][0],PTS[i][1]);c.stroke();}// ---------- State ----------\nlet state=\"idle\";let raf=0;let t0=0;let last=0;let cam=null;let fired={};let navTarget=null;const onWinResize=()=>{navTarget=null;if(state===\"running\")resize();};window.addEventListener(\"resize\",onWinResize);cleanups.push(()=>window.removeEventListener(\"resize\",onWinResize));function frame(now){const C=CONFIG;const t=(now-t0)/1e3;const dt=Math.min(.1,Math.max(0,(now-last)/1e3));last=now;if(!W||!Hh)return;// Trace progress\nconst p=clamp01(t/C.traceDuration);const e=ease(p,C.easing);const L=e*TOTAL;const settle=smooth(clamp01((t-C.traceDuration)/C.settle));// Camera: follows the head, pulling back to the centred logo\nconst zs=smooth(Math.min(1,e/C.pullbackAt));const zoom=Math.pow(C.startZoom,1-zs);const head=ptAt(L);const lead=ptAt(Math.max(0,L-C.tail*TOTAL*.35));const target=[(lead[0]+head[0])/2,(lead[1]+head[1])/2];if(!cam)cam=[target[0],target[1]];const k=1-Math.exp(-dt*6);cam[0]+=(target[0]-cam[0])*k;cam[1]+=(target[1]-cam[1])*k;const cw=Math.pow(zs,1.4);let ax=lerp(cam[0],CENTER[0],cw);let ay=lerp(cam[1],CENTER[1],cw);const baseS=C.size*Math.min(W,Hh)/290;let s=baseS*zoom;let sx=W/2;let sy=Hh/2;let glowMul=1;let blurMul=1;let arrived=false;// Flight: shrink first, then shoot up into the nav logo slot\nconst ft=clamp01((t-C.traceDuration-C.flightDelay)/C.flight);const flightStart=C.traceDuration+C.flightDelay;if(t>=flightStart){const r=navTarget||(navTarget=navSvg.getBoundingClientRect());const tS=r.height/VIEW_H;const tX=r.left+r.width/2-originX;const tY=r.top+r.height/2-originY;const fs=easeOutCubic(ft);const fp=easeInOutQuart(ft);ax=CENTER[0];ay=CENTER[1];s=baseS*Math.pow(tS/baseS,fs);sx=lerp(W/2,tX,fp);sy=lerp(Hh/2,tY,fp);glowMul=lerp(1,.45,fs);blurMul=lerp(1,.5,fs);if(ft>.5&&Math.hypot(sx-tX,sy-tY)<2&&Math.abs(s/tS-1)<.03)arrived=true;if(!fired.hero&&t>=flightStart+C.heroIn){fired.hero=true;html.classList.add(\"lih-hero-in\");}}const px=1/s;const lw=C.thickness*(1+Math.log(zoom)*.6);const setup=(c,ratio)=>{c.setTransform(1,0,0,1,0,0);c.clearRect(0,0,c.canvas.width,c.canvas.height);c.setTransform(ratio*s,0,0,ratio*s,ratio*(sx-ax*s),ratio*(sy-ay*s));c.lineJoin=\"round\";c.lineCap=\"round\";};const draw=(c,ratio,color,wm)=>{setup(c,ratio);const tailLen=C.tail*TOTAL;strokeRange(c,0,L,lw*wm*px*(.55+.45*settle),.3+.7*settle,color);const ta=1-settle;if(ta>0&&L>0){// Tail as a ribbon of edge-sharing quads (no overlap → no alpha stacking)\nconst n=PTS.length;const st=2;const iHead=Math.min(n-1,Math.round(L/STEP));const iEnd=Math.max(0,Math.round((L-tailLen)/STEP));const edge=i=>{const a=PTS[Math.max(0,i-2)];const b=PTS[Math.min(n-1,i+2)];const dx=b[0]-a[0];const dy=b[1]-a[1];const d=Math.hypot(dx,dy)||1;const f=Math.min(1,(L-i*STEP)/tailLen);const hw=lw*wm*px*(.25+1.25*Math.pow(1-f,1.2))/2;return{l:[PTS[i][0]-dy/d*hw,PTS[i][1]+dx/d*hw],r:[PTS[i][0]+dy/d*hw,PTS[i][1]-dx/d*hw],f};};c.fillStyle=color;let prev=edge(iEnd);for(let i=iEnd+st;i<=iHead+st-1;i+=st){const cur=edge(Math.min(i,iHead));c.globalAlpha=Math.pow(1-(prev.f+cur.f)/2,1.7)*ta;c.beginPath();c.moveTo(prev.l[0],prev.l[1]);c.lineTo(cur.l[0],cur.l[1]);c.lineTo(cur.r[0],cur.r[1]);c.lineTo(prev.r[0],prev.r[1]);c.closePath();c.fill();prev=cur;if(i>=iHead)break;}c.globalAlpha=ta;c.beginPath();c.arc(head[0],head[1],lw*wm*px*.85,0,Math.PI*2);c.fill();}c.globalAlpha=1;};draw(hctx,dpr*HALO_RES,C.glowColor,1.6);draw(cctx,dpr,\"#ffffff\",1);// Composite only the logo's on-screen bounds (+ glow).\nconst pad=lw*7*blurMul*3+lw*4+4;const x0=Math.max(0,Math.floor((sx+(BOUNDS[0]-ax)*s-pad)*dpr));const y0=Math.max(0,Math.floor((sy+(BOUNDS[1]-ay)*s-pad)*dpr));const x1=Math.min(canvas.width,Math.ceil((sx+(BOUNDS[2]-ax)*s+pad)*dpr));const y1=Math.min(canvas.height,Math.ceil((sy+(BOUNDS[3]-ay)*s+pad)*dpr));const bw=x1-x0;const bh=y1-y0;ctx.setTransform(1,0,0,1,0,0);ctx.clearRect(0,0,canvas.width,canvas.height);if(bw>0&&bh>0){ctx.globalCompositeOperation=\"lighter\";const g=C.glow*glowMul;const hs=HALO_RES;const layers=[[lw*7*blurMul,.55*g],[lw*2.4*blurMul,.9*g]];for(const[r,a]of layers){if(a<=0)continue;ctx.globalAlpha=Math.min(1,a);if(hasFilter){ctx.filter=`blur(${r*dpr}px)`;ctx.drawImage(halo,x0*hs,y0*hs,bw*hs,bh*hs,x0,y0,bw,bh);ctx.filter=\"none\";}else{ctx.shadowColor=C.glowColor;ctx.shadowBlur=r*dpr*2;ctx.drawImage(halo,x0*hs,y0*hs,bw*hs,bh*hs,x0,y0,bw,bh);ctx.shadowBlur=0;}}ctx.globalAlpha=1;ctx.drawImage(core,x0,y0,bw,bh,x0,y0,bw,bh);ctx.globalCompositeOperation=\"source-over\";}if(ft>=1||arrived)land(false);}function loop(now){if(state!==\"running\")return;frame(now);if(state===\"running\")raf=requestAnimationFrame(loop);}// ---------- Skip on any input ----------\nconst SKIP_EVENTS=[\"pointerdown\",\"keydown\",\"wheel\",\"touchstart\"];function onSkip(){if(state!==\"running\")return;html.classList.add(\"lih-fast\");land(true);}function listen(on){for(const ev of SKIP_EVENTS){if(on)window.addEventListener(ev,onSkip,{passive:true});else window.removeEventListener(ev,onSkip);}}cleanups.push(()=>listen(false));// ---------- Landing lap: a dot traces the pill ----------\nconst canAnimate=!!Element.prototype.animate;const LOGO_GLOW=\"drop-shadow(0 0 1.5px rgba(255,255,255,.7)) drop-shadow(0 0 5px rgba(255,255,255,.3))\";const LOGO_FLASH=\"drop-shadow(0 0 2px rgba(255,255,255,.85)) drop-shadow(0 0 8px rgba(255,255,255,.45))\";const reducedMotion=()=>!!window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;const dot=dotRef.current;// Once the lap is done: the glass fades in, then the links one by one, then\n// the current page lights up, and last Resume / LinkedIn fade in.\nfunction revealLinks(){nav.classList.add(\"outline-done\",\"glass-in\",\"links-in\");const shown=links.filter(el=>el.offsetWidth>0);const animate=canAnimate&&!reducedMotion();if(animate){shown.forEach((el,i)=>el.animate([{opacity:0,transform:\"translateY(3px)\"},{opacity:1,transform:\"none\"}],{duration:LAP.linkDuration,delay:LAP.linksDelay+i*LAP.linkStagger,easing:\"cubic-bezier(.25,.6,.3,1)\",fill:\"backwards\"}));}const lastStart=animate?LAP.linksDelay+Math.max(0,shown.length-1)*LAP.linkStagger:0;// The current page lights up as the last link finishes appearing (its\n// eased fade looks complete well before the animation ends), with no pause\nconst selAt=animate?lastStart+LAP.linkDuration*LAP.selectedAt:0;revealTimers.push(window.setTimeout(()=>nav.classList.add(\"sel-fade\",\"sel-in\",\"lamp-in\"),selAt));// The light-up timing is only for this moment; hovers go back to normal speed\nrevealTimers.push(window.setTimeout(()=>nav.classList.remove(\"sel-fade\"),selAt+400));// Resume / LinkedIn come last, after the light-up (.3s)\nconst sideAt=animate?selAt+LAP.sideIn:0;if(side)revealTimers.push(window.setTimeout(()=>side.classList.add(\"is-in\"),sideAt));}let lapRaf=0;function clearLap(){if(lapRaf)cancelAnimationFrame(lapRaf);lapRaf=0;outR.style.transition=\"\";outR.style.strokeDashoffset=\"\";for(const p of sweepPaths)p.style.opacity=\"\";if(dot)dot.style.opacity=\"\";}cleanups.push(clearLap);// One clockwise lap from the pill's left end: along the top, round the\n// right end, back along the bottom and up round the left end. The outline\n// is drawn behind the dot; a short tail of slices fades out behind it.\n// Returns false when it can't play, so the caller shows everything directly.\nfunction playLap(delay,D,done){if(!dot||reducedMotion())return false;sizeOutline();if(!perimeter)return false;const total=outR.getTotalLength();if(!total)return false;const N=sweepPaths.length;const sliceLen=Math.min(LAP.tail/N/perimeter,.5);sweepPaths.forEach((p,k)=>{p.style.strokeDasharray=`${sliceLen} ${1-sliceLen}`;p.style.strokeOpacity=String(.85*Math.pow((k+1)/N,1.6));p.style.opacity=\"0\";});outR.style.transition=\"none\";outR.style.strokeDashoffset=\"1\";dot.style.opacity=\"0\";const t0l=performance.now()+delay;let finished=false;const tick=now=>{const u=(now-t0l)/D;if(u<0){lapRaf=requestAnimationFrame(tick);return;}const p=.5-Math.cos(Math.PI*Math.min(1,u))/2// ease in-out\n;// Fade in quickly at the start; fade out over the last stretch so the\n// dot is gone just as it arrives back at the left end\nconst a=Math.min(1,u/.06)*(1-smooth(clamp01((u-LAP.fadeFrom)/(1-LAP.fadeFrom))));outR.style.strokeDashoffset=String(1-p);const pt=outR.getPointAtLength(p*total);dot.setAttribute(\"cx\",pt.x.toFixed(2));dot.setAttribute(\"cy\",pt.y.toFixed(2));dot.style.opacity=String(a);sweepPaths.forEach((s,k)=>{const pos=p-LAP.tail*(1-k/N)/perimeter;s.style.strokeDashoffset=String(-pos);// Never wrap round to the end of the loop before the dot has left\ns.style.opacity=pos<0?\"0\":String(a);});if(!finished&&u>=1){finished=true;nav.classList.add(\"outline-done\");outR.style.transition=\"\";outR.style.strokeDashoffset=\"\";done();}if(u>=1){lapRaf=0;clearLap();return;}lapRaf=requestAnimationFrame(tick);};lapRaf=requestAnimationFrame(tick);return true;}// Hand-off: the canvas logo now sits exactly on the logo SVG, so swap them;\n// the dot sets off round the (still glassless) pill.\nfunction land(fast){state=\"done\";cancelAnimationFrame(raf);listen(false);canvas.style.display=\"none\";navSvg.classList.add(\"is-in\");html.classList.add(\"lih-hero-in\");showReplayBtn();if(!fast&&canAnimate&&!reducedMotion()){navSvg.animate([{transform:\"scale(1)\",filter:LOGO_FLASH},{transform:\"scale(0.9, 0.86)\",offset:.15},{transform:\"scale(1.05)\",offset:.45},{transform:\"scale(0.99)\",offset:.7},{transform:\"scale(1)\",filter:LOGO_GLOW}],{duration:620,easing:\"ease-out\"});}// playLap sets the outline's hidden start before the pill shows\nconst lapping=playLap(fast?100:LAP.delay*1e3,(fast?LAP.fastDuration:LAP.duration)*1e3,revealLinks);nav.classList.add(\"is-in\");if(!lapping)revealLinks();}function start(){try{sessionStorage.setItem(SESSION_KEY,\"1\");}catch(e){}html.classList.remove(\"lih-skip\",\"lih-fast\");html.classList.add(\"lih-started\",\"lih-glow-in\");canvas.style.display=\"block\";resize();state=\"running\";cam=null;fired={};navTarget=null;t0=last=performance.now();listen(true);raf=requestAnimationFrame(loop);}function replay(){html.classList.add(\"lih-reset\");if(replayBtn)replayBtn.classList.remove(\"is-in\");clearLap();if(canAnimate)navSvg.getAnimations().forEach(a=>a.cancel());nav.classList.remove(\"is-in\",\"outline-done\",\"glass-in\",\"sel-in\",\"sel-fade\");navSvg.classList.remove(\"is-in\");if(side)side.classList.remove(\"is-in\");resetLinks();html.classList.add(\"lih-home\");html.classList.remove(\"lih-hero-in\",\"lih-glow-in\",\"lih-skip\",\"lih-fast\");void document.body.offsetHeight;html.classList.remove(\"lih-reset\");start();}if(replayBtn){replayBtn.addEventListener(\"click\",replay);cleanups.push(()=>replayBtn.removeEventListener(\"click\",replay));}if(autoPlay){start();}else{finalLocal();if(isHome){html.classList.add(\"lih-hero-in\",\"lih-glow-in\");showReplayBtn();}else if(!html.classList.contains(\"lih-started\")){// Framer's preview can mount the page after this layout, so the hero\n// wasn't found yet: watch briefly, and treat it as the intro page once it appears.\nconst heroFound=()=>HERO_IDS.some(id=>document.getElementById(id));const mo=new MutationObserver(()=>{if(!heroFound())return;mo.disconnect();let skip=false;try{if(oncePerSession&&sessionStorage.getItem(SESSION_KEY))skip=true;}catch(e){}if(skip||reducedMotion()){html.classList.add(\"lih-home\",\"lih-skip\",\"lih-hero-in\",\"lih-glow-in\");showReplayBtn();}else{replay();}});mo.observe(document.body,{childList:true,subtree:true});cleanups.push(()=>mo.disconnect());later(()=>mo.disconnect(),1500);}}return()=>{state=\"done\";cancelAnimationFrame(raf);cleanupAll();};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isStatic,introPath,oncePerSession,showReplay]);const renderLink=(l,i)=>{const cls=`lih-link${l.cls?\" \"+l.cls:\"\"}`;if(l.page){return /*#__PURE__*/_jsx(Link,{href:l.page,openInNewTab:false,children:/*#__PURE__*/_jsxs(\"a\",{className:cls,\"data-key\":l.key,children:[l.label,/*#__PURE__*/_jsx(\"span\",{className:\"lih-lit\",\"aria-hidden\":\"true\",children:l.label})]})},l.key+i);}return /*#__PURE__*/_jsxs(\"a\",{className:cls,href:l.href,\"data-key\":l.key,\"data-external\":l.external?\"1\":undefined,target:l.external&&l.href?\"_blank\":undefined,rel:l.external&&l.href?\"noopener noreferrer\":undefined,children:[l.label,/*#__PURE__*/_jsx(\"span\",{className:\"lih-lit\",\"aria-hidden\":\"true\",children:l.label})]},l.key+i);};return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,className:\"lih-root\",style:{...props.style,position:\"relative\",width:\"100%\",height:\"100%\",pointerEvents:\"none\"},children:[/*#__PURE__*/_jsx(\"script\",{dangerouslySetInnerHTML:{__html:prepaintScript(introPath,oncePerSession)}}),/*#__PURE__*/_jsx(\"link\",{rel:\"stylesheet\",href:\"https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400&display=swap\"}),/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:buildCss(gid)}}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,className:\"lih-canvas\",\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsxs(\"nav\",{ref:navRef,className:\"lih-nav\",\"aria-label\":\"Main\",children:[/*#__PURE__*/_jsxs(\"svg\",{ref:sweepRef,className:\"lih-sweep\",\"aria-hidden\":\"true\",children:[Array.from({length:TAIL_SLICES},(_,i)=>/*#__PURE__*/_jsx(\"path\",{pathLength:1},i)),/*#__PURE__*/_jsx(\"circle\",{ref:dotRef,r:1.7,cx:0,cy:0})]}),/*#__PURE__*/_jsxs(\"svg\",{ref:outlineRef,className:\"lih-outline\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsxs(\"linearGradient\",{ref:gradRef,id:gid,gradientUnits:\"userSpaceOnUse\",children:[/*#__PURE__*/_jsx(\"stop\",{offset:\"0\",stopColor:\"#fff\",stopOpacity:\"0.14\"}),/*#__PURE__*/_jsx(\"stop\",{offset:\"0.35\",stopColor:\"#fff\",stopOpacity:\"0.14\"}),/*#__PURE__*/_jsx(\"stop\",{offset:\"0.5\",stopColor:\"#fff\",stopOpacity:\"0.03\"}),/*#__PURE__*/_jsx(\"stop\",{offset:\"0.65\",stopColor:\"#fff\",stopOpacity:\"0.14\"}),/*#__PURE__*/_jsx(\"stop\",{offset:\"1\",stopColor:\"#fff\",stopOpacity:\"0.14\"})]})}),/*#__PURE__*/_jsx(\"path\",{ref:outLRef,pathLength:1,stroke:`url(#${gid})`}),/*#__PURE__*/_jsx(\"path\",{ref:outRRef,pathLength:1,stroke:`url(#${gid})`})]}),/*#__PURE__*/_jsx(\"span\",{ref:lampRef,className:\"lih-lamp\",\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsx(\"div\",{className:\"lih-group\",children:navLinks.map(renderLink)})]}),/*#__PURE__*/_jsx(Link,{href:{webPageId:PAGE.home},openInNewTab:false,children:/*#__PURE__*/_jsx(\"a\",{ref:logoRef,className:\"lih-logo\",\"aria-label\":\"Home\",children:/*#__PURE__*/_jsx(\"svg\",{ref:svgRef,viewBox:\"92 54 236 288\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:LOGO_PATH,fill:\"none\",stroke:\"#fff\",strokeWidth:1.2,strokeLinecap:\"round\",strokeLinejoin:\"round\",vectorEffect:\"non-scaling-stroke\"})})})}),/*#__PURE__*/_jsx(\"div\",{ref:sideRef,className:\"lih-side\",children:sideLinks.map(l=>/*#__PURE__*/_jsxs(\"a\",{href:l.href||undefined,target:l.href?\"_blank\":undefined,rel:l.href?\"noopener noreferrer\":undefined,children:[l.label,/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 10 10\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M2.5 7.5 L7.5 2.5 M3.5 2.5 H7.5 V6.5\",fill:\"none\",stroke:\"currentColor\",strokeWidth:1.2,strokeLinecap:\"round\",strokeLinejoin:\"round\"})})]},l.key))}),showReplay&&/*#__PURE__*/_jsx(\"button\",{ref:replayRef,className:\"lih-replay\",type:\"button\",children:\"Replay intro\"})]});}addPropertyControls(PillNavIntro,{introPath:{type:ControlType.String,title:\"Intro Page Path\",defaultValue:\"/\"},oncePerSession:{type:ControlType.Boolean,title:\"Once Per Session\",defaultValue:true},showReplay:{type:ControlType.Boolean,title:\"Replay Button\",defaultValue:true},resumeUrl:{type:ControlType.String,title:\"Resume URL\",defaultValue:\"\",placeholder:\"https://…\"},linkedinUrl:{type:ControlType.String,title:\"LinkedIn URL\",defaultValue:\"\",placeholder:\"https://linkedin.com/in/…\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"PillNavIntro\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"1200\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"800\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PillNavIntro.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";const EXPAND_EASE=\"cubic-bezier(0.7, 0, 0.2, 1)\";const FLAG_KEY=\"tileXfer\"// full-page-load fallback hand-off\n;const PAGE_BG_VAR=\"--token-7469e6a7-243c-4bd4-8ac2-2f61e4786f59\"// layout fill\n;function shared(){const w=window;return w.__tileXfer||={bypass:false,busy:false,installed:false,overlay:null};}const reducedMotion=()=>!!window.matchMedia&&window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;const nextFrame=()=>new Promise(r=>requestAnimationFrame(()=>r()));const wait=ms=>new Promise(r=>window.setTimeout(r,ms));function pageBackground(){const v=getComputedStyle(document.documentElement).getPropertyValue(PAGE_BG_VAR).trim();return v||\"#000000\";}// The card's visible surface: the largest rounded, filled box inside the link\nfunction findSurface(link){let best=link;let bestArea=0;for(const el of Array.from(link.querySelectorAll(\"*\"))){const cs=getComputedStyle(el);if(cs.borderTopLeftRadius===\"0px\")continue;if(cs.backgroundColor===\"rgba(0, 0, 0, 0)\"||cs.backgroundColor===\"transparent\")continue;const r=el.getBoundingClientRect();if(r.width*r.height>bestArea){best=el;bestArea=r.width*r.height;}}return best;}function makeOverlay(css){const el=document.createElement(\"div\");Object.assign(el.style,{position:\"fixed\",zIndex:\"2147483000\",pointerEvents:\"none\",margin:\"0\",willChange:\"left, top, width, height, border-radius, background-color, opacity\",...css});document.body.appendChild(el);return el;}// A static copy of the tile, wrapped in stand-ins for its ancestors (display: contents)\n// so Framer's scoped styles still apply, positioned exactly over the original.\nfunction cloneTile(link,r){const layer=document.createElement(\"div\");Object.assign(layer.style,{position:\"fixed\",left:r.left+\"px\",top:r.top+\"px\",width:r.width+\"px\",height:r.height+\"px\",zIndex:\"2147483001\",pointerEvents:\"none\",margin:\"0\"});let inner=layer;const chain=[];for(let a=link.parentElement;a&&a!==document.body&&a!==document.documentElement;a=a.parentElement)chain.unshift(a);for(const a of chain){const w=document.createElement(a.tagName);for(const at of Array.from(a.attributes))if(at.name!==\"id\"&&at.name!==\"style\")w.setAttribute(at.name,at.value);w.style.display=\"contents\";inner.appendChild(w);inner=w;}const copy=link.cloneNode(true);copy.removeAttribute(\"href\");copy.querySelectorAll(\"[id]\").forEach(el=>el.removeAttribute(\"id\"));Object.assign(copy.style,{position:\"absolute\",left:\"0\",top:\"0\",width:link.offsetWidth+\"px\",height:link.offsetHeight+\"px\",margin:\"0\"});inner.appendChild(copy);document.body.appendChild(layer);return layer;}// Page fades in: the full-screen layer fades away once the new page has rendered\nasync function revealPage(overlay,fadeIn){await nextFrame();await nextFrame();await wait(80);const a=overlay.animate([{opacity:1},{opacity:0}],{duration:fadeIn*1e3,easing:\"ease-out\",fill:\"forwards\"});await a.finished.catch(()=>{});overlay.remove();if(shared().overlay===overlay)shared().overlay=null;}/**\n * Tile Expand Transition\n *\n * Put ONE instance in the layout template. Clicking a project tile (a link whose\n * path starts with `pathPrefix`) expands the tile to the edges of the screen while\n * its content fades out over the expansion, then opens the project page, which fades in.\n *\n * @framerIntrinsicWidth 1\n * @framerIntrinsicHeight 1\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function TileExpandTransition(props){const{pathPrefix=\"/work/\",expand=.75,fadeOut=.75,fadeIn=.55}=props;const isStatic=useIsStaticRenderer();useEffect(()=>{if(isStatic)return;const s=shared();// Full page load fallback: the expanded layer didn't survive, so cover and fade in here\ntry{const t=Number(sessionStorage.getItem(FLAG_KEY)||0);sessionStorage.removeItem(FLAG_KEY);if(t&&Date.now()-t<4e3&&!s.overlay&&!reducedMotion()){const cover=makeOverlay({left:\"0\",top:\"0\",width:\"100vw\",height:\"100vh\",background:pageBackground()});s.overlay=cover;revealPage(cover,fadeIn);}}catch(e){}// Breakpoint copies of the layout can coexist: only one listener\nif(s.installed)return;s.installed=true;async function play(link,targetPath){s.busy=true;const surface=findSurface(link);const r=surface.getBoundingClientRect();const linkRect=link.getBoundingClientRect();const cs=getComputedStyle(surface);const radius=cs.borderTopLeftRadius;const vw=document.documentElement.clientWidth;const vh=window.innerHeight;const overlay=makeOverlay({left:r.left+\"px\",top:r.top+\"px\",width:r.width+\"px\",height:r.height+\"px\",borderRadius:radius,background:cs.backgroundColor});s.overlay=overlay;// The real tile hides under the surface; a copy of it fades out on top\n// while the surface expands to the edges of the screen\nconst copy=cloneTile(link,linkRect);const tileFade=link.animate([{opacity:0},{opacity:0}],{duration:1,fill:\"forwards\"});const copyFade=copy.animate([{opacity:1},{opacity:0}],{duration:fadeOut*1e3,easing:\"ease-in-out\",fill:\"forwards\"});// The surface expands to the edges of the screen and becomes the page background\nconst grow=overlay.animate([{left:r.left+\"px\",top:r.top+\"px\",width:r.width+\"px\",height:r.height+\"px\",borderRadius:radius,backgroundColor:cs.backgroundColor},{left:\"0px\",top:\"0px\",width:vw+\"px\",height:vh+\"px\",borderRadius:\"0px\",backgroundColor:pageBackground()}],{duration:expand*1e3,easing:EXPAND_EASE,fill:\"forwards\"});await Promise.all([grow.finished.catch(()=>{}),copyFade.finished.catch(()=>{})]);copy.remove();Object.assign(overlay.style,{left:\"0\",top:\"0\",width:\"100vw\",height:\"100vh\",borderRadius:\"0\",background:pageBackground(),opacity:\"1\"});overlay.getAnimations().forEach(a=>a.cancel());// Open the page through Framer's own link handling\ntry{sessionStorage.setItem(FLAG_KEY,String(Date.now()));}catch(e){}s.bypass=true;link.click();s.bypass=false;const t0=performance.now();while(window.location.pathname!==targetPath&&performance.now()-t0<3e3)await wait(30);try{sessionStorage.removeItem(FLAG_KEY);}catch(e){}tileFade.cancel()// the tile is back to normal if this page is shown again\n;await revealPage(overlay,fadeIn);s.busy=false;}function onClick(e){if(s.bypass)return;if(e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey)return;const link=e.target?.closest?.(\"a\");if(!link||!link.href||link.target===\"_blank\")return;let url;try{url=new URL(link.href,window.location.href);}catch(err){return;}if(url.origin!==window.location.origin||!url.pathname.startsWith(pathPrefix))return;if(url.pathname===window.location.pathname)return;// Tiles only, not text links\nconst box=link.getBoundingClientRect();if(box.width<200||box.height<150)return;if(reducedMotion())return;e.preventDefault();e.stopPropagation();if(s.busy)return;play(link,url.pathname);}window.addEventListener(\"click\",onClick,true);return()=>{window.removeEventListener(\"click\",onClick,true);s.installed=false;};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isStatic]);return /*#__PURE__*/_jsx(\"div\",{style:{...props.style,width:1,height:1,pointerEvents:\"none\"},\"aria-hidden\":\"true\"});}addPropertyControls(TileExpandTransition,{pathPrefix:{type:ControlType.String,title:\"Path Prefix\",defaultValue:\"/work/\"},expand:{type:ControlType.Number,title:\"Expand\",defaultValue:.75,min:.1,max:3,step:.05,unit:\"s\"},fadeOut:{type:ControlType.Number,title:\"Tile Fade\",defaultValue:.75,min:.05,max:2,step:.05,unit:\"s\"},fadeIn:{type:ControlType.Number,title:\"Page Fade\",defaultValue:.55,min:.05,max:3,step:.05,unit:\"s\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TileExpandTransition\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicHeight\":\"1\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TileExpandTransition.map","// Generated by Framer (d485f69)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,Container,cx,GeneratedComponentContext,getFonts,getFontsFromSharedStyle,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 PillNavIntro from\"#framer/local/codeFile/pvmkOm4/PillNavIntro.js\";import TileExpandTransition from\"#framer/local/codeFile/S7lbqXZ/TileExpandTransition.js\";import*as sharedStyle from\"#framer/local/css/mMBLsYrnS/mMBLsYrnS.js\";const PillNavIntroFonts=getFonts(PillNavIntro);const TileExpandTransitionFonts=getFonts(TileExpandTransition);const LinkedinFonts=getFonts(Linkedin);const breakpoints={fbVevlTE5:\"(min-width: 1200px)\",Iz7TNBke7:\"(max-width: 809.98px)\",w0MIGmzQb:\"(min-width: 810px) and (max-width: 1199.98px)\"};const isBrowser=()=>typeof document!==\"undefined\";const serializationHash=\"framer-9tmfV\";const variantClassNames={fbVevlTE5:\"framer-v-zfvs0\",Iz7TNBke7:\"framer-v-1yfot5\",w0MIGmzQb:\"framer-v-1xkigv2\"};const breakpointRules={Iz7TNBke7:[\".framer-9tmfV .framer-1suk03b { padding: 64px 20px 48px 20px; }\"],w0MIGmzQb:[\".framer-9tmfV .framer-1suk03b { padding: 72px 24px 56px 24px; }\"]};const breakpointKeys=Object.keys(breakpointRules);const selectors={Iz7TNBke7:\".framer-1yfot5-override\",w0MIGmzQb:\".framer-1xkigv2-override\"};const rules=[\".framer-9tmfV.framer-n6no1j, .framer-9tmfV .framer-n6no1j { display: block; }\",\".framer-9tmfV.framer-zfvs0 { align-content: center; align-items: center; background-color: var(--token-7469e6a7-243c-4bd4-8ac2-2f61e4786f59); 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-9tmfV .framer-vtxz52-container { bottom: calc(calc(100% - min(var(--framer-viewport-height, 100%), 100%)) + 0px); flex: none; height: calc(min(var(--framer-viewport-height, 100%), 100%) * 1); left: 0px; order: -1000; pointer-events: none; position: var(--framer-canvas-fixed-position, fixed); right: 0px; top: 0px; z-index: 10; }\",\".framer-9tmfV .framer-1rhmow8-container { flex: none; height: 1px; left: 0px; order: -999; pointer-events: none; position: var(--framer-canvas-fixed-position, fixed); top: 0px; width: 1px; }\",\".framer-9tmfV .framer-9civjj { flex: none; height: 72px; order: -998; position: relative; width: 100%; }\",\".framer-9tmfV .framer-17eb53l { background: transparent; flex-grow: 1; height: 0px; margin: 0px; margin-bottom: -0px; position: relative; width: 0px; }\",\".framer-9tmfV .framer-1suk03b { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 28px; height: min-content; justify-content: center; order: 1004; padding: 96px 40px 72px 40px; position: relative; width: 100%; }\",\".framer-9tmfV .framer-1nvo628 { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-9tmfV .framer-y3qp2r { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 24px; height: min-content; justify-content: center; padding: 0px; position: relative; width: min-content; }\",\".framer-9tmfV .framer-quxjlf { --t829wi: var(--token-80b5587e-379e-47f2-8541-28ec9ce1c0fa); flex: none; height: auto; position: relative; width: 38px; }\",'[data-layout-template=\"true\"] > #overlay { margin-bottom: -0px; }',...sharedStyle.css];const mediaQueries={fbVevlTE5:\"(min-width: 1200px)\",Iz7TNBke7:\"(max-width: 809.98px)\",w0MIGmzQb:\"(min-width: 810px) and (max-width: 1199.98px)\"};const humanReadableVariantMap={Desktop:\"fbVevlTE5\",Phone:\"Iz7TNBke7\",Tablet:\"w0MIGmzQb\"};const HTMLStyle=({value})=>{const onCanvas=useIsOnFramerCanvas();if(onCanvas)return null;return /*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:value},\"data-framer-html-style\":\"\"});};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"fbVevlTE5\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,children,...restProps}=getProps(props);const[baseVariant,hydratedBaseVariant]=useHydratedBreakpointVariants(variant,breakpoints,false);const gestureVariant=undefined;const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);useCustomCursors({});return /*#__PURE__*/_jsx(GeneratedComponentContext.Provider,{value:{activeVariantId:baseVariant,humanReadableVariantMap,isLayoutTemplate:true,primaryVariantId:\"fbVevlTE5\",variantClassNames},children:/*#__PURE__*/_jsxs(LayoutGroup,{id:layoutId??defaultLayoutId,children:[/*#__PURE__*/_jsx(HTMLStyle,{value:\":root body { background: var(--token-7469e6a7-243c-4bd4-8ac2-2f61e4786f59); }\"}),/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(scopingClassNames,\"framer-zfvs0\",className),\"data-layout-template\":true,ref:refBinding,style:{...style},children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-vtxz52-container\",\"data-code-component-plugin-id\":\"api\",\"data-framer-name\":\"Pill Nav + Intro\",isAuthoredByUser:true,layoutScroll:true,name:\"Pill Nav + Intro\",nodeId:\"wkjmY2c5D\",scopeId:\"JqQqoxuYw\",children:/*#__PURE__*/_jsx(PillNavIntro,{height:\"100%\",id:\"wkjmY2c5D\",introPath:\"/\",layoutId:\"wkjmY2c5D\",linkedinUrl:\"\",name:\"Pill Nav + Intro\",oncePerSession:true,resumeUrl:\"\",showReplay:true,style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1rhmow8-container\",\"data-code-component-plugin-id\":\"api\",\"data-framer-name\":\"Tile Expand Transition\",isAuthoredByUser:true,layoutScroll:true,name:\"Tile Expand Transition\",nodeId:\"TlTWsOwY6\",scopeId:\"JqQqoxuYw\",children:/*#__PURE__*/_jsx(TileExpandTransition,{expand:.75,fadeIn:.55,fadeOut:.75,height:\"100%\",id:\"TlTWsOwY6\",layoutId:\"TlTWsOwY6\",name:\"Tile Expand Transition\",pathPrefix:\"/work/\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-9civjj\",\"data-framer-name\":\"Nav Spacer\"}),children,/*#__PURE__*/_jsx(\"div\",{className:\"framer-17eb53l\"}),/*#__PURE__*/_jsxs(motion.footer,{className:\"framer-1suk03b\",\"data-framer-name\":\"Footer\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-vshv5l\",\"data-styles-preset\":\"mMBLsYrnS\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--token-80b5587e-379e-47f2-8541-28ec9ce1c0fa)\"},children:\"Open to connect and start new adventures\"})}),className:\"framer-1nvo628\",\"data-framer-name\":\"Copyright\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(\"div\",{className:\"framer-y3qp2r\",\"data-framer-name\":\"Footer Links\",children:/*#__PURE__*/_jsx(Linkedin,{animated:false,className:\"framer-quxjlf\",JW2ySfJQW:true,layoutId:\"MqPfE5X7B\"})})]})]}),/*#__PURE__*/_jsx(\"div\",{id:\"template-overlay\"})]})});});const css=target=>{const isStaticRenderer=target===RenderTarget.canvas||target===RenderTarget.export;if(!isStaticRenderer){return[...rules,...breakpointKeys.map(key=>{const query=mediaQueries[key];return`@media ${query} { ${breakpointRules[key].join(\" \")} }`;})];}return[...rules,...breakpointKeys.flatMap(key=>{const selector=selectors[key];return breakpointRules[key].map(rule=>`${selector} {${rule}}`);})];};/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 800\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"w0MIGmzQb\":{\"layout\":[\"fixed\",\"fixed\"]},\"Iz7TNBke7\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerHitTargets {\"fbVevlTE5\":[\".framer-vtxz52-container\",\".framer-1rhmow8-container\",\".framer-9civjj\",\".framer-1suk03b\"],\"w0MIGmzQb\":[\".framer-vtxz52-container\",\".framer-1rhmow8-container\",\".framer-9civjj\",\".framer-1suk03b\"],\"Iz7TNBke7\":[\".framer-vtxz52-container\",\".framer-1rhmow8-container\",\".framer-9civjj\",\".framer-1suk03b\"]}\n * @framerBreakpoints {\"fbVevlTE5\":{\"min\":1200,\"canvasClassName\":\"framer-zfvs0-override\",\"minHeight\":800,\"viewportHeight\":800,\"name\":\"Desktop\",\"width\":1200,\"rootFontSize\":16},\"w0MIGmzQb\":{\"min\":810,\"max\":1199,\"canvasClassName\":\"framer-1xkigv2-override\",\"minHeight\":800,\"viewportHeight\":800,\"name\":\"Tablet\",\"width\":810,\"rootFontSize\":16},\"Iz7TNBke7\":{\"max\":809,\"canvasClassName\":\"framer-1yfot5-override\",\"minHeight\":800,\"viewportHeight\":800,\"name\":\"Phone\",\"width\":390,\"rootFontSize\":16}}\n * @framerDefaultVariant fbVevlTE5\n * @framerLayoutTemplate true\n */const FramerJqQqoxuYw=withCSS(Component,css,\"framer-9tmfV\");export default FramerJqQqoxuYw;FramerJqQqoxuYw.displayName=\"Main Layout\";FramerJqQqoxuYw.defaultProps={height:800,width:1200};addFonts(FramerJqQqoxuYw,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...PillNavIntroFonts,...TileExpandTransitionFonts,...LinkedinFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerJqQqoxuYw\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerDefaultVariant\":\"fbVevlTE5\",\"framerIntrinsicWidth\":\"1200\",\"framerLayoutTemplate\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerHitTargets\":\"{\\\"fbVevlTE5\\\":[\\\".framer-vtxz52-container\\\",\\\".framer-1rhmow8-container\\\",\\\".framer-9civjj\\\",\\\".framer-1suk03b\\\"],\\\"w0MIGmzQb\\\":[\\\".framer-vtxz52-container\\\",\\\".framer-1rhmow8-container\\\",\\\".framer-9civjj\\\",\\\".framer-1suk03b\\\"],\\\"Iz7TNBke7\\\":[\\\".framer-vtxz52-container\\\",\\\".framer-1rhmow8-container\\\",\\\".framer-9civjj\\\",\\\".framer-1suk03b\\\"]}\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"w0MIGmzQb\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Iz7TNBke7\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerBreakpoints\":\"{\\\"fbVevlTE5\\\":{\\\"min\\\":1200,\\\"canvasClassName\\\":\\\"framer-zfvs0-override\\\",\\\"minHeight\\\":800,\\\"viewportHeight\\\":800,\\\"name\\\":\\\"Desktop\\\",\\\"width\\\":1200,\\\"rootFontSize\\\":16},\\\"w0MIGmzQb\\\":{\\\"min\\\":810,\\\"max\\\":1199,\\\"canvasClassName\\\":\\\"framer-1xkigv2-override\\\",\\\"minHeight\\\":800,\\\"viewportHeight\\\":800,\\\"name\\\":\\\"Tablet\\\",\\\"width\\\":810,\\\"rootFontSize\\\":16},\\\"Iz7TNBke7\\\":{\\\"max\\\":809,\\\"canvasClassName\\\":\\\"framer-1yfot5-override\\\",\\\"minHeight\\\":800,\\\"viewportHeight\\\":800,\\\"name\\\":\\\"Phone\\\",\\\"width\\\":390,\\\"rootFontSize\\\":16}}\",\"framerIntrinsicHeight\":\"800\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerDisplayContentsDiv\":\"false\"}},\"__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 MainLayout from \"https://framerusercontent.com/modules/pBLWaIu7DFEuxK5I2Ua7/kO8M9lQCy5389ukQb83j/JqQqoxuYw.js\";\r\n\r\n\t\tconst routes = {augiA20Il: {elements: {FcCRZOvEa: \"site-hero-subtitle-desktop\", h1sbxEfZf: \"site-hero-fun\", hkX4KqPrI: \"work\", OcQ5n3K5n: \"site-hero-glow\", qpbVihjzx: \"site-hero-intro\", x3sbI5DPT: \"site-hero-lines-desktop\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/wsme5CFekWkaOMWYOCxE/B8Rj4naxejgLsc00Bzl8/augiA20Il.js\")), path: \"/\"}, VcIxtvFuG: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/eajYqNtvVlyKzCcEVtMF/sFG2tzNa6462fYfY4Skh/VcIxtvFuG.js\")), path: \"/about\"}, zKE5_esUX: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/Zz1JVd8mccs05CcI5Seg/AuOnx6TAJz0MphpH1flq/zKE5_esUX.js\")), path: \"/fun\"}, qKq5cfTLe: {collectionId: \"neM4lBLXR\", elements: {ctC5yENi2: \"solution-1\", dqbiyM8w9: \"highlights\", E1HtGWXi5: \"persona-1\", fHnnK4A2L: \"impact-1\", FnN92YORP: \"overview-1\", GIci9qWWS: \"iterations\", GwJ80TKn3: \"retrospective-1\", HR6NPqRqd: \"problem-1\", JI6enhhBK: \"overview\", jZbxEcDWx: \"ideation-1\", L7lQVTyED: \"context\", ln8Jx7HV9: \"impact\", PQeDCUQyO: \"persona\", rhbCHdGxY: \"ideation\", sERu6piSa: \"solution\", SF8DR_fvd: \"problem\", vhwXOTeSo: \"research\", W5a7XL4nc: \"research-1\", x3UHZeSDf: \"process\", x97mW8CWq: \"retrospective\", YfouCzyGh: \"iterations-1\", yYD8p799q: \"design-system\", Z_JORHMvB: \"highlights-1\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/bTWCw0iINA9NXbiYhdbM/VmBF9zuB6QGUGpmDZLPq/qKq5cfTLe.js\")), path: \"/work/:k43teJtfm\"}}\r\n\r\n\t\tconst locales = [{code: \"en\", id: \"default\", name: \"English\", slug: \"\", textDirection: \"ltr\"}]\r\n\t\tconst collectionUtils = {neM4lBLXR: async () => (await import(\"https://framerusercontent.com/modules/k4lnu876Wb0oqVyN7BtJ/EOyD4ntzfjKKw22CMd3d/neM4lBLXR.js\"))?.[\"utils\"]}\r\n\t\tconst serverDatabaseClient = undefined\r\n\t\tconst framerSiteId = \"5292ee93f08a647ea11fe4ee2b7c006f859bd7c840ad900d3e74b6fc446829a3\"\r\n\t\tfunction Template({webPageId, children, style, ...rest}) {const templateProps = {}\r\nconst props = templateProps[webPageId] ?? {}\r\nswitch (webPageId) {case \"augiA20Il\":\r\ncase \"VcIxtvFuG\":\r\ncase \"zKE5_esUX\":\r\ncase \"qKq5cfTLe\":\r\nreturn React.createElement(MainLayout, {...props, key: \"MainLayout\", style}, children(true));\r\ndefault: { return children(false) }}}\r\nexport function getLayoutTemplateBreakpoints(routeId) {switch (routeId) {case \"augiA20Il\":\r\ncase \"VcIxtvFuG\":\r\ncase \"zKE5_esUX\":\r\ncase \"qKq5cfTLe\":\r\nreturn [{hash: \"1yfot5\", mediaQuery: \"(max-width: 809.98px)\"}, {hash: \"1xkigv2\", mediaQuery: \"(min-width: 810px) and (max-width: 1199.98px)\"}, {hash: \"zfvs0\", mediaQuery: \"(min-width: 1200px)\"}]\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://shradhaa.me\",\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/lyrR4TkGJcUjFsbqMpEw/hW9WwEL6LRcAZdZW8jj0/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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"}