{"version":3,"file":"shared-lib.CGS_QdoM.mjs","names":["useRef","useState","fonts","css","className","fonts","css","className","mask","SVG","getProps","Icon","React.forwardRef","addPropertyOverrides","Medium","enabledGestures","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","fonts","css","className","addPropertyOverrides","enabledGestures","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","getProps","React.forwardRef","Linkedin","React.useContext","React.useMemo","React.Fragment","React.forwardRef","useRef","React.useId","__esmMin","oe","ie","init_ssg_sandbox_shims","x","window","_e","pe","p","c","J","init_jsx_runtime","ce","init_npm_react_18_3_1","de","motion","MotionConfigContext","LayoutGroup","init_framer_motion_DhsWWWsN","SmartComponentScopedContainer","withCSS","getFonts","cx","useVariantState","addPropertyControls","init_framer_CaDWdxiz","ComponentViewportProvider","fontStore","useLocaleInfo","ControlType","Link","useComponentViewport","addFonts","withCodeBoundaryForOverrides","readSelectedFilterFromUrl","isSpaceKey","attachFilterSpaceActivation","filterSpaceActivationAttached","el","forwardEnter","target","type","registerFilterPressCancelGuard","filterButtons","filterPressCancelGuardRegistered","isFilter","filterKeyboardPressActive","withFilterAriaPressed","localRef","isPressed","setIsPressed","update","label","selected","interval","observer","Component","props","node","ref","withAriaHiddenIcon","withReducedMotionNoScale","REDUCED_MOTION_SCALE_STYLE_ID","style","REDUCED_MOTION_SCALE_ATTR","ensureSkipLinkStyle","SKIP_LINK_STYLE_ID","makeSkipLinkActivateHandler","targetId","event","withSkipLinkVisibility","handleSkipLinkActivate","SKIP_LINK_HIDDEN_STYLE","SKIP_LINK_ATTR","withSkipLinkVisibilityToContentStart","withSkipLinkVisibilityAnchored","ensureModalityTracking","modalityTrackingStarted","resolveTokenAsComputedColor","probe","cssVar","resolved","pickContrastAwareRingColor","MAIN_TOKEN","BG_TOKEN","defaultColor","applyBrandedOutline","color","geometry","suppressNativeOutline","clearBrandedOutline","useDeterministicFocusRing","handleFocusIn","lastInputWasKeyboard","handleFocusOut","positionRingOverlay","rect","o","useFocusRingOverlay","overlay","reposition","removeOverlay","overlayAttr","renderCardRingBands","svg","width","height","depth","band","CARD_RING_BANDS","centerlineInset","outerRadius","setExternalIconFocusColor","card","clearExternalIconFocusColor","useCardFocusRingOverlay","position","CARD_RING_OVERLAY_ATTR","useCompactFocusRingOverlay","COMPACT_RING_GEOMETRY","COMPACT_RING_OVERLAY_ATTR","mergeRefs","withBrandedFocusRing","PILL_RING","withLetsTalkFocusRing","LETS_TALK_RING","withBrandedFocusRingCompact","applyExternalCardAccessibleName","setByUs","EXTERNAL_LABEL_ATTR","clear","url","title","useExternalCardAccessibleName","withCardAccessibleNameAndFocus","applySeamlessMarquee","track","half","duration","withSeamlessMarquee","ensureUnifiedHoverStyle","UNIFIED_HOVER_STYLE_ID","UNIFIED_HOVER_SCOPE_CLASS","GREY_TEXT_2_TOKEN","withUnifiedHoverColor","root","withBrandedFocusRingAndUnifiedHoverColor","applyPillMask","size","marginPx","PILL_MASK_SVG","withGlowMaskGpuTest","SAFE_MARGIN_PX","ensureTouchHoverGateStyle","TOUCH_HOVER_GATE_STYLE_ID","withTouchHoverGate","withBrandedFocusRingCompactAndHoverGate","withBrandedFocusRingAndHoverGate","withBrandedFocusRingAndUnifiedHoverColorAndHoverGate","withHoverGestureGate","parent","blockHoverGestureTrigger","withGlowMaskGpuTestAndHoverGestureGate","ensureJsonLd","existing","id","script","data","withHomeStructuredData","SITE_URL","withWorkDetailStructuredData","canonical","description","image","init_AccessibilityOverrides","fonts$3","css$3","className$3","init_b6FC9IuvV","fonts$2","css$2","className$2","init_FOf5FssP2","mask$1","SVG$1","getProps$4","Icon$1","init_vNqCVHugg","rest","animated","fill","restProps","className","JW2ySfJQW","addPropertyOverrides$2","variants","nextOverrides","variant","overrides","MediumFonts","MotionAWithBrandedFocusRingCompactAndHoverGate1ncq4xj","enabledGestures$2","serializationHash$2","variantClassNames$2","transition1$2","Transition$2","Variants$2","getProps$3","createLayoutDependency$2","Framergt3FSE_io","init_gt3FSE_io","config","transition","value","contextValue","fallbackRef","refBinding","defaultLayoutId","layoutDependency","scopingClassNames","layoutId","gestureHandlers","classNames","baseVariant","gestureVariant","fonts$1","css$1","className$1","init_UkINy4iVd","SquareBehanceIcon","init_SquareBehanceIcon","addPropertyOverrides$1","SquareBehanceIconFonts","MotionAWithBrandedFocusRingCompactAndHoverGate1lc37gx","enabledGestures$1","serializationHash$1","variantClassNames$1","transition1$1","Transition$1","Variants$1","getProps$2","createLayoutDependency$1","FramerWAf836G34","init_WAf836G34","mask","SVG","getProps$1","Icon","init_AGIu2296z","addPropertyOverrides","LinkedinFonts","MotionAWithBrandedFocusRingCompactAndHoverGate1er0t5l","enabledGestures","serializationHash","variantClassNames","transition1","Transition","Variants","getProps","createLayoutDependency","FramerZzihk1u16","init_Zzihk1u16","fonts","css","init_SpZM8fjOU"],"sources":["https:/framerusercontent.com/modules/HMKbVbUCXwNqt1BSY99u/IClucC9GVsFblIYdQ1Zg/AccessibilityOverrides.js","https:/framerusercontent.com/modules/2UzKGKtgHs9uH1kwPTJ0/Bo94sVfOsleAAcKoTfK1/b6FC9IuvV.js","https:/framerusercontent.com/modules/q9aai1dQrCKXrYbPhULm/aKSuM83HSk3ryCpRH4WP/FOf5FssP2.js","https:/framerusercontent.com/modules/gyKuM1CMegMRRGdZbi9B/yEUlOzMD0UeMPVP9YrsA/vNqCVHugg.js","https:/framerusercontent.com/modules/Y7CrK1X8OIVWyY2ImvCh/TyUPgfuEN8VayQkQ04W6/gt3FSE_io.js","https:/framerusercontent.com/modules/DamUE7RpmbjqO7tjKUHa/loXGwzKOfldJXAI0V3f6/UkINy4iVd.js","https:/framerusercontent.com/modules/dPQKS2XfnKhrHJfXRTvS/VA4Z2588uemXSw4NuPUk/SquareBehanceIcon.js","https:/framerusercontent.com/modules/pqYFB9oN2xpBEr6sZyZA/94wz9Wb32foMweeCRT2u/WAf836G34.js","https:/framerusercontent.com/modules/jLVfLScc4Pw6lyTMb6Ap/WV2r0vnJw1UsYWrqninT/AGIu2296z.js","https:/framerusercontent.com/modules/ovsgq0WDOVQ1uSGHbLvW/58HDqVgQ8sO7RjHBUwEa/Zzihk1u16.js","https:/framerusercontent.com/modules/3MYhHYuin9nZ8aLVS8mt/eqsmdsJMsRKeRJ7EvMMC/SpZM8fjOU.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useEffect,useRef,useState}from\"react\";// Learn more: https://www.framer.com/developers/overrides/\nfunction readSelectedFilterFromUrl(){try{return new URLSearchParams(window.location.search).get(\"selected-filter\")||\"All\";}catch(e){return\"All\";}}/**\n * Space-key activation for a Filter Tab button. The button is a native\n * <button>, but Framer's tap gesture only listens for pointer events and the\n * Enter key, so Space did nothing. A real Space press is forwarded as the\n * same Enter keydown/keyup pair Framer already handles, so Space goes\n * through the exact existing Enter path (same filter logic, same pressed\n * state and visuals). preventDefault on both Space events stops the page\n * from scrolling and cancels the native Space click, so each press fires\n * once; auto-repeat keydowns are ignored. Only trusted Space events are\n * handled, so the forwarded Enter events can never loop back.\n */function isSpaceKey(e){return e.key===\" \"||e.key===\"Spacebar\"||e.code===\"Space\";}/**\n * Attached from the ref callback (not a one-time effect), because the\n * Filter Tab's element can mount after this override's first effect has\n * run. The WeakSet makes it attach exactly once per element. The Enter pair\n * is sent to the element that actually received the Space press (the\n * focused button), which is where Framer's Enter handling listens.\n */const filterSpaceActivationAttached=new WeakSet;function attachFilterSpaceActivation(el){if(filterSpaceActivationAttached.has(el))return;filterSpaceActivationAttached.add(el);const forwardEnter=(target,type)=>(target instanceof HTMLElement?target:el).dispatchEvent(new KeyboardEvent(type,{key:\"Enter\",code:\"Enter\",bubbles:true,cancelable:true}));el.addEventListener(\"keydown\",e=>{if(!e.isTrusted||!isSpaceKey(e))return;e.preventDefault();if(!e.repeat)forwardEnter(e.target,\"keydown\");});el.addEventListener(\"keyup\",e=>{if(!e.isTrusted||!isSpaceKey(e))return;e.preventDefault();forwardEnter(e.target,\"keyup\");});}/**\n * Keyboard → pointer fix for the Filter Tab buttons. Framer's (motion's)\n * keyboard press handler adds a `blur` listener to a button on every\n * Enter press that dispatches a synthetic `pointercancel` from it - and\n * never removes it. Motion tracks every press with window `pointerup` /\n * `pointercancel` listeners in the capture phase, so when a mouse/touch\n * press on ANOTHER filter moves focus off a previously keyboard-activated\n * one, that stale synthetic cancel reaches the window first and cancels the\n * new press: the first click did nothing, the second worked.\n *\n * This window capture listener is registered once, before any press can\n * start, so it runs ahead of motion's per-press listeners. It stops only\n * synthetic `pointercancel` events coming from a filter button that has no\n * keyboard press of its own in progress (i.e. the stale ones). A real\n * pointer cancel, or a blur in the middle of that button's own keyboard\n * press, still goes through unchanged.\n */const filterButtons=new WeakSet;const filterKeyboardPressActive=new WeakSet;let filterPressCancelGuardRegistered=false;function registerFilterPressCancelGuard(el){filterButtons.add(el);if(filterPressCancelGuardRegistered)return;filterPressCancelGuardRegistered=true;const isFilter=target=>target instanceof HTMLElement&&filterButtons.has(target);window.addEventListener(\"pointerdown\",e=>{if(!e.isTrusted&&isFilter(e.target))filterKeyboardPressActive.add(e.target);},true);window.addEventListener(\"pointerup\",e=>{if(!e.isTrusted&&isFilter(e.target))filterKeyboardPressActive.delete(e.target);},true);window.addEventListener(\"pointercancel\",e=>{if(e.isTrusted||!isFilter(e.target))return;if(filterKeyboardPressActive.has(e.target)){filterKeyboardPressActive.delete(e.target);return;}e.stopImmediatePropagation();},true);}/**\n * Adds a live aria-pressed state to a Filter Tab button by reading its own\n * rendered label and comparing it to the \"selected-filter\" URL query param\n * that already drives the filter's visual selected state. The aria-pressed\n * part is purely observational: it never touches the existing filter/tap\n * logic. Also adds Space-key activation (see attachFilterSpaceActivation above).\n */export function withFilterAriaPressed(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);const[isPressed,setIsPressed]=useState(false);useEffect(()=>{const update=()=>{const el=localRef.current;if(!el)return;const label=(el.textContent||\"\").trim().toLowerCase();const selected=readSelectedFilterFromUrl().trim().toLowerCase();setIsPressed(selected===label);};update();const interval=setInterval(update,300);window.addEventListener(\"popstate\",update);let observer=null;if(localRef.current){observer=new MutationObserver(update);observer.observe(localRef.current,{attributes:true,attributeFilter:[\"class\",\"style\"]});}return()=>{clearInterval(interval);window.removeEventListener(\"popstate\",update);if(observer)observer.disconnect();};},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:node=>{localRef.current=node;if(node)attachFilterSpaceActivation(node);if(node)registerFilterPressCancelGuard(node);if(typeof ref===\"function\")ref(node);else if(ref)ref.current=node;},\"aria-pressed\":isPressed});});}/**\n * REMOVED for LinkedIn / Behance / Medium (superseded, not patched further):\n * withRobustIconRendering and withAriaHiddenAndRobustIcon used to live here\n * - a MutationObserver-based runtime patch that watched for the Phosphor\n * package icon's async-mounted `<svg>` and force-resolved its `color`/\n * `fill` off `document.body` with `!important`, to work around a suspected\n * Safari `display:contents` + unfallbacked `var()` inheritance gap. Manual\n * testing in both browsers showed the underlying rendering still wasn't\n * reliable enough, so instead of patching the symptom further, these three\n * social icon links no longer use the Phosphor package component at all:\n * they are now native `IconNode`s from the project's built-in \"Logos\" icon\n * set (exact names \"Linkedin\", \"Behance\", \"Medium\" - verified via\n * `readIcons`, not searched). A native `IconNode`'s SVG is compiled\n * directly into the page's own output (synchronous, no runtime `import()`,\n * no extra `display:contents` wrapper), so the entire async-load +\n * inheritance class of failure this patch was working around no longer\n * applies - there's nothing left to repair, and no runtime override of any\n * kind is attached to these icons any more.\n *\n * ALSO REMOVED (this pass): the plain `withAriaHidden` export and the plain\n * `withCardAccessibleName` export (no focus ring). Both had zero remaining\n * `codeOverride` references anywhere in the project (confirmed by scanning\n * every node) - dead code left over from before `withAriaHiddenAndResolvedIconColor`\n * and `withCardAccessibleNameAndFocus` superseded them. Removed rather than\n * kept \"just in case,\" per the instruction to clear out obsolete workaround\n * code once the current architecture no longer needs it.\n *\n * KEPT, narrowed to one confirmed exception: the Nav/Button icon (Download\n * CV, Read on LinkedIn) still needs the Phosphor package component itself,\n * since that button's icon is genuinely configurable per instance across\n * the site - a real requirement a single fixed IconNode can't express.\n * Icon identity is fixed declaratively on the canvas (see the accompanying\n * project-update), as far as this component's own control surface allows:\n * the Phosphor instance's exact-match `name` enum control cannot accept a\n * variable binding (confirmed directly - Framer's own validator rejects\n * `$control__name=\"var(--variable-…)\"` on this specific control with\n * \"Expected an existing variable, but it could not be found\", while the\n * identical binding is accepted without error on the free-text `name1`\n * control right next to it), so true per-instance enum selection isn't\n * reachable through this third-party component's control surface. The\n * fuzzy substring risk is still closed the deterministic way available\n * here: each button's exposed \"Icon\" value is no longer the ambiguous,\n * two-letter `\"cv\"` (which is what let both Download CV and Read on\n * LinkedIn silently resolve to the same wrong icon before this pass) but\n * the full, exact, verified catalog identifier itself - `DownloadSimple`\n * for Download CV, `LinkedinLogo` for Read on LinkedIn - passed as the\n * search text. An exact catalog name searched against its own catalog has\n * exactly one possible match, so this closes the specific bug (shared\n * icon, wrong icon) without depending on runtime code. This override is\n * left with exactly one remaining job: icon color reliability, which is\n * NOT fixable declaratively, confirmed by\n * direct testing against the live project rather than assumed. Framer's\n * own canvas editor silently strips any literal `, <fallback>` portion off\n * a `var(--token-…, fallback)` string the moment it's written to this\n * control (reproduced repeatedly, regardless of value) - for a native style\n * attribute (`fill`, `border`, etc.) Framer's own compiler re-embeds a\n * correct fallback at publish time, but this control is a plain opaque\n * string prop belonging to the third-party Phosphor package, which Framer's\n * compiler does not recognize as a color and so never re-adds anything to.\n * There is no way to make Framer keep an explicit fallback in this one\n * field through the design surface alone, so this one specific case keeps a\n * small, narrowly-scoped runtime resolver (below) as a deliberate,\n * justified exception rather than a general pattern: not \"a fragile hack\n * instead of a deterministic fix,\" but the one remaining option once the\n * deterministic, declarative route was actually tried (and, for identity,\n * succeeded) and confirmed insufficient for this specific third-party-typed\n * control's color prop.\n */function resolveIconCssColor(rawValue){const match=/var\\(\\s*(--[^,)]+)\\s*(?:,\\s*([^)]+))?\\)/.exec(rawValue);if(!match)return rawValue;const[,tokenName,fallback]=match;const fromBody=document.body?getComputedStyle(document.body).getPropertyValue(tokenName).trim():\"\";return fromBody||(fallback?fallback.trim():rawValue);}function applyResolvedIconColor(root){const svg=root.querySelector(\"svg\");if(!svg)return;const currentColor=svg.style.getPropertyValue(\"color\");if(!currentColor||!currentColor.includes(\"var(\"))return;const resolved=resolveIconCssColor(currentColor);if(!resolved||resolved.includes(\"var(\"))return;svg.style.setProperty(\"color\",resolved,\"important\");svg.style.setProperty(\"fill\",resolved,\"important\");}/**\n * Combines withAriaHidden with the resolved-icon-color safety net described\n * above. Used exclusively by the Nav/Button icon (Download CV, Read on\n * LinkedIn) - see that comment for why this one case keeps a runtime\n * resolver instead of the plain `withAriaHidden` every other decorative\n * icon in this project uses.\n */export function withAriaHiddenAndResolvedIconColor(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);useEffect(()=>{const el=localRef.current;if(!el)return;applyResolvedIconColor(el);const observer=new MutationObserver(()=>applyResolvedIconColor(el));observer.observe(el,{childList:true,subtree:true,attributes:true,attributeFilter:[\"style\"]});return()=>observer.disconnect();},[]);return /*#__PURE__*/_jsx(Component,{ref:node=>{localRef.current=node;if(typeof ref===\"function\")ref(node);else if(ref)ref.current=node;},...props,\"aria-hidden\":\"true\",focusable:\"false\"});});}/**\n * Plain aria-hidden wrapper, no color resolution. Used by the Text Icon\n * Link icon (Download CV, Read on LinkedIn) now that its color control is\n * `currentColor` and inherits from withUnifiedHoverColor on the parent\n * link: resolving and freezing a static color here (as\n * withAriaHiddenAndResolvedIconColor does for the unrelated Button icon)\n * would write a competing inline `!important` that wins over the shared\n * hover stylesheet, which is why the icon previously stopped following the\n * text on hover after its first paint.\n */export function withAriaHiddenIcon(Component){return /*#__PURE__*/forwardRef((props,ref)=>/*#__PURE__*/_jsx(Component,{ref:ref,...props,\"aria-hidden\":\"true\",focusable:\"false\"}));}const REDUCED_MOTION_SCALE_STYLE_ID=\"__rm-no-scale-style\";const REDUCED_MOTION_SCALE_ATTR=\"data-rm-no-scale\";/**\n * Neutralizes the Work Card image's scroll-driven scale-in effect only when\n * the visitor has prefers-reduced-motion: reduce set. Implemented as a real\n * CSS @media (prefers-reduced-motion: reduce) rule (native browser detection,\n * not a JS matchMedia check), scoped to a single data attribute on this node\n * only. In normal mode (no-preference) this is a no-op: the rule simply does\n * not match, so the existing onInView scale effect renders exactly as before.\n * Does not touch crop, image size, card size, border, radius, link, the\n * accessible-name override, or CMS binding.\n */export function withReducedMotionNoScale(Component){return /*#__PURE__*/forwardRef((props,ref)=>{useEffect(()=>{if(document.getElementById(REDUCED_MOTION_SCALE_STYLE_ID))return;const style=document.createElement(\"style\");style.id=REDUCED_MOTION_SCALE_STYLE_ID;style.textContent=\"@media (prefers-reduced-motion: reduce) { [\"+REDUCED_MOTION_SCALE_ATTR+'=\"true\"] { transform: none !important; } }';document.head.appendChild(style);},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref,[REDUCED_MOTION_SCALE_ATTR]:\"true\"});});}const SKIP_LINK_STYLE_ID=\"__skip-link-style\";const SKIP_LINK_ATTR=\"data-skip-link\";/**\n * Inline mirror of the hidden (non-focus) half of the Skip Link stylesheet\n * rule below, applied directly in each override's render output (not in an\n * effect). Framer prerenders this project's pages to static HTML on the\n * server, where `document` does not exist, so the `ensureSkipLinkStyle`\n * <style> tag below can only ever be injected client-side, inside a\n * useEffect, after React has committed and the browser has already painted\n * once. Confirmed by fetching the live prerendered HTML directly: the\n * Skip Link's `data-skip-link=\"true\"` anchor is present in the initial\n * response with no hiding rule anywhere in the document yet (only its\n * normal, fully visible Framer button styling), so every load flashed the\n * Skip Link visible in-flow until hydration's effect caught up - the root\n * cause of the reported \"visible on load\" bug. Setting this object as a\n * `style` prop happens during render itself, so it is included in the\n * server-rendered markup exactly like any other prop, guaranteeing the\n * off-canvas position is present from the very first byte instead of\n * depending on any effect timing. The stylesheet below still owns the\n * :focus-visible reveal (a pseudo-class, impossible to express as an inline\n * style) and stays as a harmless, idempotent duplicate of this same base\n * state once it mounts.\n */const SKIP_LINK_HIDDEN_STYLE={position:\"fixed\",top:16,left:16,zIndex:9999,transform:\"translateY(-200%)\",transition:\"transform 150ms ease\"};/**\n * Injects the Skip Link's shared show/hide + focus-ring stylesheet once.\n * Suppresses the browser's default focus outline on both known programmatic\n * focus destinations (#main-content on 404, which still targets <main>\n * itself; #main-content-start on Home and the Work detail page, a deeper\n * anchor chosen so activation actually bypasses the repeated top\n * profile/social block - see withSkipLinkVisibilityToContentStart below).\n * Both selectors are always present; whichever id doesn't exist on a given\n * page is simply inert.\n */function ensureSkipLinkStyle(){if(document.getElementById(SKIP_LINK_STYLE_ID))return;const style=document.createElement(\"style\");style.id=SKIP_LINK_STYLE_ID;style.textContent=\"[\"+SKIP_LINK_ATTR+'=\"true\"] { position: fixed !important; '+\"top: 16px !important; left: 16px !important; z-index: 9999; \"+\"transform: translateY(-200%) !important; transition: transform 150ms ease; }\"+\"[\"+SKIP_LINK_ATTR+'=\"true\"]:focus-visible { '+\"transform: translateY(0%) !important; \"+\"outline: 2px solid var(--token-43464fc0-8f12-4214-bfdd-fa0c6aa29267); outline-offset: 2px; }\"+\"#main-content:focus { outline: none; }\"+\"#main-content-start:focus { outline: none; }\";document.head.appendChild(style);}/**\n * Framer's own fragment navigation (native or intercepted by the site's\n * Smooth Scroll library) moves the viewport but does not reliably move\n * keyboard focus to the tabindex=\"-1\" destination in this runtime (confirmed\n * via manual keyboard QA in Framer Preview: the Skip Link stayed focused\n * after activation instead of the destination). This takes over activation\n * to guarantee focus actually transfers: it scrolls the target into view\n * instantly (no smooth animation, independent of whatever the Smooth Scroll\n * library would otherwise do), moves keyboard focus onto it, and updates the\n * URL fragment without letting the browser's own fragment-scroll (or the\n * Smooth Scroll library's own click handling) from running a second time on\n * top of it. No timing delay is used: the destination is static markup\n * already mounted before the click can ever fire, so there is nothing to\n * wait for. targetId is parameterized because different pages need different\n * destinations (see each override below for why).\n */function makeSkipLinkActivateHandler(targetId){return function handleSkipLinkActivate(event){const target=document.getElementById(targetId);if(!target)return;event.preventDefault();event.stopPropagation();target.scrollIntoView({behavior:\"auto\",block:\"start\"});target.focus({preventScroll:true});if(window.history&&window.history.pushState){window.history.pushState(null,\"\",\"#\"+targetId);}else{window.location.hash=targetId;}};}/**\n * 404: the whole page is just the logo/social/message/button block, there is\n * no separate substantive content area beyond it, so the Skip Link's\n * destination stays the <main id=\"main-content\"> landmark itself (not\n * changed in this task - the existing destination was judged adequate here,\n * per \"do not change pages unnecessarily\").\n */export function withSkipLinkVisibility(Component){const handleSkipLinkActivate=makeSkipLinkActivateHandler(\"main-content\");return /*#__PURE__*/forwardRef((props,ref)=>{useEffect(ensureSkipLinkStyle,[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref,onClick:handleSkipLinkActivate,style:{...props.style,...SKIP_LINK_HIDDEN_STYLE},[SKIP_LINK_ATTR]:\"true\"});});}/**\n * Home: the previous \"main-content\" target (the <main> landmark itself) sat\n * before the profile/email/social/hero block, so activating the Skip Link\n * still left the top social links as the next Tab stop - confirmed by manual\n * QA. <main> stays exactly where it is for semantics (no duplicate\n * landmark); the Skip Link instead targets \"main-content-start\", set on the\n * existing \"Container\" <section> that already wraps the filter tabs, the\n * project grid, and the About/Clients-ticker section - the actual start of\n * Home's substantive content, immediately after the repeated hero block.\n */export function withSkipLinkVisibilityToContentStart(Component){const handleSkipLinkActivate=makeSkipLinkActivateHandler(\"main-content-start\");return /*#__PURE__*/forwardRef((props,ref)=>{useEffect(ensureSkipLinkStyle,[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref,onClick:handleSkipLinkActivate,style:{...props.style,...SKIP_LINK_HIDDEN_STYLE},[SKIP_LINK_ATTR]:\"true\"});});}/**\n * Work detail page: same visibility treatment, plus a real native\n * <a href=\"#main-content-start\"> as the actual focusable/interactive\n * element. Needed because Framer's design-time link.href attribute\n * reproducibly refuses to store a same-page hash link on this CMS-templated\n * route (it resolves \"/works/:Works\" as a dynamic path requiring a\n * collectionItem, which doesn't apply to an in-page anchor) - confirmed by\n * testing link.href on a disposable probe node on that same page, not\n * specific to this component. Home and 404 use the native link.href\n * attribute directly (it works there) and do not use this override.\n * Targets \"main-content-start\", set on the page's \"text\" node (the project\n * title/description) - this page's Hero also repeats the same top\n * \"Go back\" + social block seen on Home, so the destination was moved past\n * it the same way, landing on the actual project content.\n * The wrapping <a> - not the inner Component - carries data-skip-link, since\n * it is the element that actually receives keyboard focus; the inner\n * Component stays a plain, non-interactive visual child (no nested\n * interactive elements). No JS focus management for the link itself - this\n * is a plain native anchor with a real href, matching the site's existing\n * link.href pattern; only activation is handled in code, for the reason\n * above.\n */export function withSkipLinkVisibilityAnchored(Component){const handleSkipLinkActivate=makeSkipLinkActivateHandler(\"main-content-start\");return /*#__PURE__*/forwardRef((props,ref)=>{useEffect(ensureSkipLinkStyle,[]);return /*#__PURE__*/_jsx(\"a\",{href:\"#main-content-start\",onClick:handleSkipLinkActivate,[SKIP_LINK_ATTR]:\"true\",style:{display:\"inline-flex\",textDecoration:\"none\",color:\"inherit\",...SKIP_LINK_HIDDEN_STYLE},children:/*#__PURE__*/_jsx(Component,{...props,ref:ref})});});}const MAIN_TOKEN=\"var(--token-43464fc0-8f12-4214-bfdd-fa0c6aa29267)\";const BG_TOKEN=\"var(--token-520d2e3b-0e8d-44c4-9def-6dead0a14a09)\";let lastInputWasKeyboard=false;let modalityTrackingStarted=false;/**\n * Tracks whether the visitor's most recent input was a keyboard Tab press\n * or a mouse/touch interaction, using the same heuristic the WICG\n * focus-visible polyfill uses. Started once, shared by every ring override\n * below regardless of geometry class. Deliberately kept exactly as-is:\n * Safari Tab/Shift+Tab navigation and this input-modality split are\n * confirmed working and out of scope for this pass.\n */function ensureModalityTracking(){if(modalityTrackingStarted)return;modalityTrackingStarted=true;window.addEventListener(\"keydown\",e=>{if(e.key===\"Tab\")lastInputWasKeyboard=true;},true);window.addEventListener(\"mousedown\",()=>{lastInputWasKeyboard=false;},true);window.addEventListener(\"pointerdown\",()=>{lastInputWasKeyboard=false;},true);}const PILL_RING={width:2,offset:-2,color:MAIN_TOKEN};/**\n * Root cause of the confirmed \"selected filter's keyboard focus disappears\"\n * failure: the Filter Tab component's \"Active\" variant already fills its\n * entire pill with solid `Main` (and its border is the same `Main` color,\n * so the fill and border read as one flat shape) - that is what makes the\n * selected chip look filled/pressed in the first place. Every focus ring on\n * this site, including the Default/hover states of this exact same\n * component, is drawn in that same `Main` color, because on a transparent\n * or light background `Main` is exactly the right high-contrast choice.\n * Against the Active variant's own already-`Main`-colored fill, a\n * `Main`-colored ring is a same-color-on-same-color overlay - functionally\n * invisible, independent of width, inset, or z-order.\n * A separate override (tried first, during this same pass) cannot target\n * just the Active variant: `codeOverride` is a shared, component-level\n * setting - Framer's own applyChanges result confirmed this directly\n * (\"Code overrides are shared across variants, so the change was applied\n * to the Primary Variant\") when an attempt was made to set a different\n * override on the Active variant alone. So the fix instead makes the one\n * shared `withBrandedFocusRing` itself contrast-aware at the moment of\n * focus: it reads the real, live `getComputedStyle(target).backgroundColor`\n * of whatever control is actually focused, and only when that background\n * resolves to the exact same computed color as `Main` does it draw the\n * ring in `Bg` instead. `Bg` is not a new or arbitrary color - it is the\n * exact token this same Active variant's own label text already uses to\n * read against its `Main` fill, i.e. the project's own design system\n * already treats this pair as the correct high-contrast combination\n * against a `Main`-filled surface, in both Light Mode (`Main` near-black,\n * `Bg` near-white) and Dark Mode (`Main` near-white, `Bg` near-black) - a\n * full inversion, not a tiny color difference, and it costs no new token or\n * global change. Because the check is a live computed-style comparison\n * (not a name, id, or class check), it needs no per-node tagging on the\n * canvas at all: every other current or future user of\n * `withBrandedFocusRing` whose background is not `Main` is completely\n * unaffected (comparison resolves false, ring stays `Main` exactly as\n * before) - Go back, footer links, Let's talk, Download CV / Read on\n * LinkedIn, and the filter tabs' own Default/hover states all keep their\n * existing ring color unchanged. Geometry (width, inset) never changes -\n * only the one color that would otherwise vanish is swapped, and only for\n * the one control it actually vanishes on.\n */function resolveTokenAsComputedColor(cssVar){const probe=document.createElement(\"div\");probe.style.cssText=\"position:fixed;top:-9999px;left:-9999px;pointer-events:none;\";probe.style.backgroundColor=cssVar;document.body.appendChild(probe);const resolved=getComputedStyle(probe).backgroundColor;probe.remove();return resolved;}function pickContrastAwareRingColor(target,defaultColor){const targetBackground=getComputedStyle(target).backgroundColor;if(targetBackground===resolveTokenAsComputedColor(MAIN_TOKEN))return BG_TOKEN;return defaultColor;}function applyBrandedOutline(target,geometry){const color=pickContrastAwareRingColor(target,geometry.color);target.style.setProperty(\"outline\",geometry.width+\"px solid \"+color,\"important\");target.style.setProperty(\"outline-offset\",geometry.offset+\"px\",\"important\");}function suppressNativeOutline(target){target.style.setProperty(\"outline\",\"none\",\"important\");}function clearBrandedOutline(target){target.style.removeProperty(\"outline\");target.style.removeProperty(\"outline-offset\");}function useDeterministicFocusRing(localRef,geometry){useEffect(()=>{ensureModalityTracking();const el=localRef.current;if(!el)return;// focus/blur do not bubble; Framer may render the real focusable\n// <a>/<button> as a descendant of the node this ref points to, not\n// the ref'd node itself. focusin/focusout bubble, and event.target\n// is the actual element that received focus, so this reaches the\n// real interactive element either way.\nconst handleFocusIn=e=>{if(!(e.target instanceof HTMLElement))return;if(lastInputWasKeyboard)applyBrandedOutline(e.target,geometry);else suppressNativeOutline(e.target);};const handleFocusOut=e=>{if(e.target instanceof HTMLElement)clearBrandedOutline(e.target);};el.addEventListener(\"focusin\",handleFocusIn);el.addEventListener(\"focusout\",handleFocusOut);return()=>{el.removeEventListener(\"focusin\",handleFocusIn);el.removeEventListener(\"focusout\",handleFocusOut);};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[geometry.width,geometry.offset,geometry.color]);}function positionRingOverlay(overlay,target,geometry){const rect=target.getBoundingClientRect();const o=geometry.outset;// getBoundingClientRect() returns sub-pixel floats - confirmed directly\n// on the live site's own focused card (e.g. a CMS-driven card grid\n// produced a real width of 920.5px, left 960.5px). A previous pass\n// rounded left/top and width/height as four *independent* Math.round()\n// calls, which was confirmed by direct measurement to be a real bug,\n// not a defensive improvement: rounding width independently of position\n// does not generally land on the same right edge as the true box.\n// Concretely, on that live card: left 960.5 rounds to 961, but width\n// 920.5 *also* rounds to 921 - giving an overlay right edge of\n// 961+921=1882, a full pixel past the card's own true right edge of\n// 960.5+920.5=1881. That mismatch between the overlay's box and the\n// real card's box is invisible along the straight edges, but at the\n// *rounded corners* - where the visible arc is generated directly from\n// the box's own edges - it shows up as exactly the reported stray\n// fragment: the overlay's corner curve no longer traces the same arc as\n// the card's own true corner.\n// A same-day attempt at fixing this by rounding all four *edges*\n// independently (left/top/right/bottom, then deriving width/height from\n// those) is internally consistent but still leaves up to 0.5px of drift\n// between the overlay's edges and the card's true edges - not\n// guaranteed to be zero at the exact corner the report is about.\n// The rounding was added in the first place to guard against a\n// *different*, never-confirmed concern (that this element's own\n// multiple box-shadow bands might rasterize their corner arcs\n// inconsistently at a fractional size) - re-tested directly with a\n// fractional-sized element carrying this exact 3-band shadow and found\n// no artifact from that alone, before or after rounding. So rounding\n// was solving a theoretical risk that isn't real, while provably\n// creating a concrete one. Removed entirely: the overlay's left/top/\n// width/height are now the exact same floating-point numbers as the\n// real card's own rect (plus/minus the compact-icon outset), so the\n// overlay's box is mathematically identical to the card's box - not\n// approximately aligned, identical - and its corner arc is generated\n// from the exact same geometry as the card's own corner.\noverlay.style.left=rect.left-o+\"px\";overlay.style.top=rect.top-o+\"px\";overlay.style.width=rect.width+o*2+\"px\";overlay.style.height=rect.height+o*2+\"px\";overlay.style.borderRadius=geometry.borderRadius;}function useFocusRingOverlay(localRef,geometry,overlayAttr){useEffect(()=>{ensureModalityTracking();const el=localRef.current;if(!el)return;let overlay=null;let reposition=null;const removeOverlay=()=>{if(reposition){window.removeEventListener(\"scroll\",reposition,true);window.removeEventListener(\"resize\",reposition);reposition=null;}if(overlay){overlay.remove();overlay=null;}};const handleFocusIn=e=>{if(!(e.target instanceof HTMLElement))return;// The overlay is a fully separate element - it draws a ring but\n// does nothing to the real focused element's own outline, so the\n// browser's native default focus outline (e.g. Chrome/Edge's blue\n// ring) was rendering directly on the target underneath/around\n// the overlay on every real keyboard focus, producing a visible\n// double ring. Suppressed unconditionally here (not just on the\n// keyboard branch below) so a mouse-focused control never shows\n// the native ring either, exactly mirroring how the outline-based\n// engine above always sets an explicit `outline` value (either\n// \"none\" or the branded ring) instead of leaving the browser\n// default in place.\ne.target.style.setProperty(\"outline\",\"none\",\"important\");if(!lastInputWasKeyboard)return;removeOverlay();overlay=document.createElement(\"div\");overlay.setAttribute(overlayAttr,\"true\");overlay.setAttribute(\"aria-hidden\",\"true\");overlay.style.position=\"fixed\";overlay.style.pointerEvents=\"none\";overlay.style.zIndex=\"9999\";overlay.style.boxShadow=geometry.boxShadow;document.body.appendChild(overlay);const target=e.target;reposition=()=>{if(overlay)positionRingOverlay(overlay,target,geometry);};positionRingOverlay(overlay,target,geometry);window.addEventListener(\"scroll\",reposition,true);window.addEventListener(\"resize\",reposition);};const handleFocusOut=e=>{if(e.target instanceof HTMLElement)e.target.style.removeProperty(\"outline\");removeOverlay();};el.addEventListener(\"focusin\",handleFocusIn);el.addEventListener(\"focusout\",handleFocusOut);return()=>{el.removeEventListener(\"focusin\",handleFocusIn);el.removeEventListener(\"focusout\",handleFocusOut);removeOverlay();};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[geometry.boxShadow,geometry.outset,overlayAttr]);}const CARD_RING_BANDS=[{width:2,color:\"#ffffff\"},{width:4,color:MAIN_TOKEN},{width:2,color:\"#000000\"}];const CARD_RING_OVERLAY_ATTR=\"data-card-focus-ring-overlay\";/**\n * Confirmed regression in the geometry above (real production build,\n * inspected directly, not just measured): stacking all three bands as\n * `inset 0 0 0 Npx` box-shadow layers on one element produced a visible\n * fragment/hook at every one of a card's four rounded corners, at the\n * card's real 20px radius with 2px/4px/2px bands. It reproduced\n * identically on all four corners because the geometry - and therefore the\n * defect - is identical at each corner of the same rounded rect; it is not\n * a per-corner coordinate problem (the overlay's box already matches the\n * card's own box exactly, per the sub-pixel fix above).\n *\n * The per-layer math itself was not wrong: each box-shadow layer's\n * effective corner radius (outer radius minus that layer's own cumulative\n * spread - 20, 18, 14, 12px) is strictly positive and strictly decreasing,\n * so no layer was clamped to a hard square corner. Confirmed directly by\n * rendering the identical technique - same band-width-to-radius ratio,\n * scaled up - which produced clean concentric arcs with no artifact at\n * all. That isolates the defect to the delivery mechanism, not the ring's\n * math: three hard-edged `inset` shadows painted in sequence on a *single*\n * element, at these specific small band widths (as thin as 2px against a\n * 12-20px radius), do not all land their independently-computed\n * anti-aliased curve edges on the same sub-pixel boundary - most visible\n * exactly where curvature is highest, i.e. the diagonal of each corner.\n *\n * Fix: draw each band as its own SVG `<rect>` stroke inside one `<svg>`\n * overlay, instead of stacking box-shadow layers on one element. Every\n * ring is one vector shape with its own explicit radius - never a shared\n * radius reused across differently-inset bands - computed from a single\n * formula, `outerRadius - centerlineInset`, where `centerlineInset` is\n * this band's own distance from the card's true edge to its stroke\n * centerline (every band drawn further out, plus half this band's own\n * width). Every ring shares the same top-left origin and that one formula,\n * so they are concentric by construction - not by visual approximation -\n * and each is rasterized as its own single-edge vector shape rather than\n * competing with two other layers in one paint step.\n */function renderCardRingBands(svg,width,height,outerRadius){const svgNs=\"http://www.w3.org/2000/svg\";svg.setAttribute(\"width\",String(width));svg.setAttribute(\"height\",String(height));svg.setAttribute(\"viewBox\",\"0 0 \"+width+\" \"+height);svg.replaceChildren();let depth=0;for(const band of CARD_RING_BANDS){const centerlineInset=depth+band.width/2;const rect=document.createElementNS(svgNs,\"rect\");rect.setAttribute(\"x\",String(centerlineInset));rect.setAttribute(\"y\",String(centerlineInset));rect.setAttribute(\"width\",String(Math.max(0,width-centerlineInset*2)));rect.setAttribute(\"height\",String(Math.max(0,height-centerlineInset*2)));rect.setAttribute(\"rx\",String(Math.max(0,outerRadius-centerlineInset)));rect.setAttribute(\"fill\",\"none\");rect.setAttribute(\"stroke\",band.color);rect.setAttribute(\"stroke-width\",String(band.width));rect.setAttribute(\"shape-rendering\",\"geometricPrecision\");svg.appendChild(rect);depth+=band.width;}}/**\n * Card ring engine: a dedicated overlay (SVG, not the shared `<div>` +\n * `box-shadow` engine above) so the compact social-icon ring - which never\n * showed this artifact - is untouched. Mirrors the shared engine's\n * lifecycle exactly (top-layer element on `document.body`, created on real\n * keyboard focus only, tracked via the same `lastInputWasKeyboard`/\n * `ensureModalityTracking`, native outline suppressed on the real target\n * while focused, removed outright on blur, repositioned on scroll/resize)\n * so the accessibility behavior already verified for it is unchanged - only\n * the ring's own rendering moved from stacked box-shadow layers to\n * concentric SVG strokes.\n *//**\n * Keyboard-focus color for the Work Card's external-link (Arrow Up Right)\n * indicator, driven by the same event/DOM-based mechanism as the card's\n * own focus ring below - not a CSS `:focus-visible` rule, per the\n * confirmed-unreliable-on-these-native-controls finding documented on\n * useFocusRingOverlay above. A card's markup contains exactly one `<svg>`\n * (the external-link icon; only present in the DOM at all when\n * $control__external is true, per the icon's own `visible` binding), so a\n * plain querySelector is sufficient - the same single-svg assumption\n * applyResolvedIconColor already relies on above. No-op on internal cards,\n * where the icon is not in the DOM. Color is cleared (not just left) on\n * blur so the underlying declarative state - the hover-variant Main color\n * while still hovered, or the default secondary color otherwise - shows\n * through untouched; nothing here changes icon size, position, visibility\n * condition, or the Default/hover token values themselves.\n */function setExternalIconFocusColor(card,color){const svg=card.querySelector(\"svg\");if(!svg)return;svg.style.setProperty(\"color\",color,\"important\");svg.style.setProperty(\"fill\",color,\"important\");}function clearExternalIconFocusColor(card){const svg=card.querySelector(\"svg\");if(!svg)return;svg.style.removeProperty(\"color\");svg.style.removeProperty(\"fill\");}function useCardFocusRingOverlay(localRef){useEffect(()=>{ensureModalityTracking();const el=localRef.current;if(!el)return;let overlay=null;let reposition=null;const removeOverlay=()=>{if(reposition){window.removeEventListener(\"scroll\",reposition,true);window.removeEventListener(\"resize\",reposition);reposition=null;}if(overlay){overlay.remove();overlay=null;}};const position=target=>{if(!overlay)return;const rect=target.getBoundingClientRect();overlay.style.left=rect.left+\"px\";overlay.style.top=rect.top+\"px\";renderCardRingBands(overlay,rect.width,rect.height,parseFloat(getComputedStyle(target).borderRadius)||0);};const handleFocusIn=e=>{if(!(e.target instanceof HTMLElement))return;e.target.style.setProperty(\"outline\",\"none\",\"important\");if(!lastInputWasKeyboard)return;setExternalIconFocusColor(e.target,MAIN_TOKEN);removeOverlay();const target=e.target;overlay=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");overlay.setAttribute(CARD_RING_OVERLAY_ATTR,\"true\");overlay.setAttribute(\"aria-hidden\",\"true\");overlay.style.position=\"fixed\";overlay.style.pointerEvents=\"none\";overlay.style.zIndex=\"9999\";overlay.style.overflow=\"visible\";document.body.appendChild(overlay);reposition=()=>position(target);position(target);window.addEventListener(\"scroll\",reposition,true);window.addEventListener(\"resize\",reposition);};const handleFocusOut=e=>{if(e.target instanceof HTMLElement){e.target.style.removeProperty(\"outline\");clearExternalIconFocusColor(e.target);}removeOverlay();};el.addEventListener(\"focusin\",handleFocusIn);el.addEventListener(\"focusout\",handleFocusOut);return()=>{el.removeEventListener(\"focusin\",handleFocusIn);el.removeEventListener(\"focusout\",handleFocusOut);removeOverlay();};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[]);}const COMPACT_RING_OVERLAY_ATTR=\"data-compact-focus-ring-overlay\";/** How far outside the real 36x36 wrapper the ring floats, in px per side - see the shared comment above for why this needed to be outward growth on a separate element rather than any change to the real control. */const COMPACT_RING_OUTSET=6;const COMPACT_RING_GEOMETRY={boxShadow:\"inset 0 0 0 2px \"+MAIN_TOKEN,borderRadius:\"8px\",outset:COMPACT_RING_OUTSET};/**\n * Compact rounded-square icon-target ring - see the shared comment above for\n * why this moved off `outline` to an outward-inflating overlay. The real\n * 36x36 wrapper is completely unchanged (no resize, no layout shift, no\n * social-rail movement); the visible ring simply floats `COMPACT_RING_OUTSET`\n * px outside it, using the same 8px rounded-square radius as the control\n * itself (not a scaled-up radius) so the ring traces the same corner shape,\n * just further out. Clearance to the 24x24 icon's own edge (6px inset from\n * the wrapper) is now 6px (wrapper margin) + 6px (outset) = 12px on every\n * side - an unambiguous, clearly visible gap between glyph and ring, up from\n * the ~2px that previously read as touching. All three social icons\n * (LinkedIn, Behance, Medium) use this exact same geometry, so their focus\n * treatment is identical, not tuned per icon.\n */function useCompactFocusRingOverlay(localRef){useFocusRingOverlay(localRef,COMPACT_RING_GEOMETRY,COMPACT_RING_OVERLAY_ATTR);}function mergeRefs(localRef,ref){return node=>{localRef.current=node;if(typeof ref===\"function\")ref(node);else if(ref)ref.current=node;};}/**\n * Text/pill CTA ring - see the shared-engine comment above for PILL_RING's\n * role and why every geometry here is inset. Used by: the project-detail\n * \"Go back\" link, footer links, the header email link, the Nav/Button\n * frame (Download CV, Read on LinkedIn), and all three states of the\n * filter tabs (Default, hover, and the selected \"Active\" state - see the\n * contrast-aware color pick in applyBrandedOutline above for why one\n * shared override correctly handles all three without a separate export\n * per variant). \"Let's talk\" no longer uses this export directly - see\n * withLetsTalkFocusRing below for why.\n */export function withBrandedFocusRing(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);useDeterministicFocusRing(localRef,PILL_RING);return /*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(localRef,ref),\"data-focus-override-mounted\":\"true\"});});}/**\n * \"Let's talk\"-only focus ring. Empirically measured (real keyboard focus,\n * Chrome, DPR 1, 100% zoom, Light Mode, lossless PNG pixel sampling) that\n * PILL_RING's 2px width renders as only ~1 clean solid pixel on this one\n * control - unlike every other PILL_RING consumer (Go Back, Download CV,\n * the header email link, footer links, filter tabs), which all render a\n * crisp, fully solid 2px band at the same width. Repeated identical\n * measurements at 2px were also inconsistent frame to frame (sometimes ~1\n * clean pixel, sometimes a blended/discolored single row), while 3px\n * produced a fully solid 2px band on every repeated sample - so the\n * instability specific to this control is absorbed rather than fixed by a\n * larger nominal width, not eliminated at the code level. 2.5px was tried\n * and is not usable: this browser computes it back down to 2px (fractional\n * outline-width is not honored here), so 3px is the smallest integer step\n * that reliably matches the other controls' rendered thickness. This does\n * not change PILL_RING, so every other consumer of withBrandedFocusRing is\n * completely unaffected - only this one control's own codeOverride points\n * here instead. Offset, color, and radius are intentionally identical to\n * PILL_RING; only width differs.\n */const LETS_TALK_RING={width:3,offset:-2,color:MAIN_TOKEN};export function withLetsTalkFocusRing(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);useDeterministicFocusRing(localRef,LETS_TALK_RING);return /*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(localRef,ref),\"data-focus-override-mounted\":\"true\"});});}/**\n * Compact rounded-square icon-target ring - see the shared overlay-engine\n * comment above for why this moved off `outline` to an outward-inflating\n * overlay. Used exclusively by the LinkedIn / Behance / Medium social icon\n * links.\n */export function withBrandedFocusRingCompact(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);useCompactFocusRingOverlay(localRef);return /*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(localRef,ref),\"data-focus-override-mounted\":\"true\"});});}/**\n * Resolves the external-link disclosure for a Work Card from the card's own\n * rendered <a>, not from props. This override is attached to the Work Card\n * component's variant root frames, where the component's controls\n * (Title / External) are not passed through as props, so the previous\n * props-based label was always undefined and never rendered. The rendered\n * link is the single source of truth: only a cross-origin href gets a\n * label, so internal (same-origin) project cards are left exactly as they\n * were - no aria-label, accessible name still derived from their content.\n * \"in a new tab\" is only appended when the link really has\n * target=\"_blank\", and the destination is named only when it is known\n * (Behance), otherwise the wording stays destination-agnostic. The title\n * is read from the card's visible heading so the label always matches the\n * CMS title shown on screen. Re-evaluated if href/target change.\n */const EXTERNAL_LABEL_ATTR=\"data-external-card-label\";function applyExternalCardAccessibleName(el){const setByUs=el.hasAttribute(EXTERNAL_LABEL_ATTR);const clear=()=>{if(setByUs){el.removeAttribute(\"aria-label\");el.removeAttribute(EXTERNAL_LABEL_ATTR);}};if(!(el instanceof HTMLAnchorElement)||!el.href)return clear();let url;try{url=new URL(el.href,window.location.href);}catch{return clear();}if(url.origin===window.location.origin)return clear();const heading=el.querySelector(\"h1, h2, h3, h4, h5, h6\");const title=heading?.textContent?.replace(/\\s+/g,\" \").trim();if(!title)return clear();const destination=/(^|\\.)behance\\.net$/i.test(url.hostname)?\"Behance\":\"external site\";const newTab=el.target===\"_blank\"?\" in a new tab\":\"\";const label=`${title}, opens ${destination}${newTab}`;if(el.getAttribute(\"aria-label\")!==label)el.setAttribute(\"aria-label\",label);el.setAttribute(EXTERNAL_LABEL_ATTR,\"true\");}function useExternalCardAccessibleName(localRef){useEffect(()=>{const el=localRef.current;if(!el)return;applyExternalCardAccessibleName(el);const observer=new MutationObserver(()=>applyExternalCardAccessibleName(el));observer.observe(el,{attributes:true,attributeFilter:[\"href\",\"target\"]});return()=>observer.disconnect();// eslint-disable-next-line react-hooks/exhaustive-deps\n},[]);}/**\n * See the dedicated comment above the shared overlay engine for the full\n * root-cause analysis (separation, then contrast, then the\n * box-shadow-behind-the-image bug caught by an actual browser render) and\n * why this uses a top-layer overlay element instead of styling the card's\n * own root frame directly.\n */export function withCardAccessibleNameAndFocus(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);useExternalCardAccessibleName(localRef);useCardFocusRingOverlay(localRef);return /*#__PURE__*/_jsx(Component,{ref:mergeRefs(localRef,ref),...props,\"data-focus-override-mounted\":\"true\"});});}/**\n * Deterministic, mask-free seamless marquee for the Work Card category ticker.\n * The track holds two identical content sequences side by side; animating by\n * exactly half the track's own rendered width (measured at runtime, since\n * category text length varies per CMS item) always lands the loop reset at\n * the seam between the two sequences, so it is seamless by construction -\n * no coverage math to get wrong, and no CSS mask-image + transform\n * combination (the prior fade-mask approach made Safari intermittently fail\n * to repaint text mid-scroll; this uses only transform, nothing else).\n * The fade edges are separate static overlays (not this element), so this\n * override never touches glyph-level opacity or clipping.\n */function applySeamlessMarquee(track){track.setAttribute(\"aria-hidden\",\"true\");const half=track.scrollWidth/2;if(half<=0)return;const pxPerSecond=25;const duration=half/pxPerSecond;if(!document.getElementById(\"framer-ticker-marquee-keyframes\")){const style=document.createElement(\"style\");style.id=\"framer-ticker-marquee-keyframes\";style.textContent=\"@keyframes frameTickerMarquee { from { transform: translateX(0) } to { transform: translateX(-50%) } }\";document.head.appendChild(style);}track.style.animation=`frameTickerMarquee ${duration}s linear infinite`;track.style.willChange=\"transform\";}export function withSeamlessMarquee(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);useEffect(()=>{const track=localRef.current;if(!track)return;applySeamlessMarquee(track);const observer=new ResizeObserver(()=>applySeamlessMarquee(track));observer.observe(track);return()=>observer.disconnect();},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(localRef,ref)});});}const GREY_TEXT_2_TOKEN=\"var(--token-a6b9dd68-a1cb-491e-bd6a-fb24b574eb34)\";/**\n * Single-source hover color for Text Icon Link: the RichText preset's own\n * color drives through a build-time extracted CSS custom property that does\n * not update reliably when only a gesture-variant token changes (confirmed:\n * the icon's own inline-style color control updates correctly, but the\n * RichText's stayed on a stale extracted value even with Framer's native\n * hover-gesture variant driving it) - so text and icon end up on two\n * independent color state machines that can desync. This installs ONE\n * static stylesheet rule, once, at mount: the color lives only on the root\n * link, and both children are forced to inherit it via currentColor -\n * nothing here runs again after the initial injection; the browser's\n * native :hover cascade does the rest, so there is no polling, observer,\n * or repeated write.\n *\n * The resting color and the child inherit/currentColor rules are\n * unconditional (outside the hover media query): the text has its own\n * always-on color source from Framer's RichText binding regardless, but\n * the icon has none of its own - it only ever gets a color by inheriting\n * from the root. Only the hover-triggered swap to Main stays inside the\n * media query, since a real :hover only fires on hover-capable pointers\n * anyway.\n *\n * The rule targets `svg *` (every descendant), not just the `svg` element\n * itself: the Phosphor package bakes its own `color=\"...\"` presentation\n * attribute directly onto the inner `<g>` it renders (confirmed by\n * inspecting the live DOM), not just onto the outer `<svg>`. `fill:\n * currentColor` re-resolves against each element's *own* `color`, and\n * inheritance only fills in a `color` that isn't otherwise set - so a\n * `<g color=\"...\">` between the `<svg>` and the `<path>` shadows the\n * `<svg>`'s corrected color and pins fill back to Phosphor's baked-in\n * default. Forcing `color: inherit` on every descendant closes that gap\n * at whichever level it appears, without depending on the icon's\n * internal markup shape.\n */const UNIFIED_HOVER_SCOPE_CLASS=\"text-icon-link-unified-hover\";const UNIFIED_HOVER_STYLE_ID=\"text-icon-link-unified-hover-style\";function ensureUnifiedHoverStyle(){if(document.getElementById(UNIFIED_HOVER_STYLE_ID))return;const style=document.createElement(\"style\");style.id=UNIFIED_HOVER_STYLE_ID;style.textContent=`\n        .${UNIFIED_HOVER_SCOPE_CLASS} {\n            color: ${GREY_TEXT_2_TOKEN} !important;\n        }\n        .${UNIFIED_HOVER_SCOPE_CLASS} .framer-text,\n        .${UNIFIED_HOVER_SCOPE_CLASS} .framer-text * {\n            color: inherit !important;\n            -webkit-text-fill-color: inherit !important;\n        }\n        .${UNIFIED_HOVER_SCOPE_CLASS} svg,\n        .${UNIFIED_HOVER_SCOPE_CLASS} svg * {\n            fill: currentColor !important;\n            color: inherit !important;\n        }\n        @media (hover: hover) and (pointer: fine) {\n            .${UNIFIED_HOVER_SCOPE_CLASS} {\n                transition: color 0.4s cubic-bezier(0.22, 1, 0.36, 1) !important;\n            }\n            .${UNIFIED_HOVER_SCOPE_CLASS}:hover {\n                color: ${MAIN_TOKEN} !important;\n            }\n        }\n    `;document.head.appendChild(style);}export function withUnifiedHoverColor(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);useEffect(()=>{const root=localRef.current;if(!root)return;ensureUnifiedHoverStyle();root.classList.add(UNIFIED_HOVER_SCOPE_CLASS);},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(localRef,ref)});});}/**\n * Composes the existing branded focus ring (unchanged) with the unified\n * single-source hover color above.\n */export function withBrandedFocusRingAndUnifiedHoverColor(Component){return withUnifiedHoverColor(withBrandedFocusRing(Component));}// ============================================================\n// S/G4 - WebKit mask + GPU layer promotion. Transferred verbatim from\n// the QA project after real-device Safari validation. Applies exactly\n// one static compositing hint (mask + translateZ) to the existing\n// Contact button root on mount - no change to Glow geometry, blur,\n// gradients, or animation timing. Used only by the Tablet/Mobile\n// Contact button; the Desktop Contact button never references this.\n// ============================================================\nfunction findGlow(root){return root.querySelector('[data-framer-name=\"Glow\"]');}const SAFE_MARGIN_PX=48;const PILL_MASK_SVG=\"data:image/svg+xml;utf8,\"+encodeURIComponent('<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\">'+'<rect x=\"0\" y=\"0\" width=\"100\" height=\"100\" rx=\"50\" ry=\"50\" fill=\"#fff\"/>'+\"</svg>\");function applyPillMask(root,marginPx){const size=`calc(100% + ${marginPx*2}px)`;root.style.setProperty(\"-webkit-mask-image\",`url(\"${PILL_MASK_SVG}\")`);root.style.setProperty(\"-webkit-mask-repeat\",\"no-repeat\");root.style.setProperty(\"-webkit-mask-size\",`${size} ${size}`);root.style.setProperty(\"-webkit-mask-position\",\"center center\");root.style.setProperty(\"mask-image\",`url(\"${PILL_MASK_SVG}\")`);root.style.setProperty(\"mask-repeat\",\"no-repeat\");root.style.setProperty(\"mask-size\",`${size} ${size}`);root.style.setProperty(\"mask-position\",\"center center\");}export function withGlowMaskGpuTest(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);useEffect(()=>{const root=localRef.current;if(!root)return;applyPillMask(root,SAFE_MARGIN_PX);root.style.transform=\"translateZ(0.01px)\";},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(localRef,ref)});});}const TOUCH_HOVER_GATE_STYLE_ID=\"touch-hover-gate-style\";/**\n * Tablet/Mobile only: prevents the LinkedIn icon, Medium icon, Download\n * CV, Read on LinkedIn, and Email link from ever visually entering their\n * Hover appearance on touch in the first place - CSS-only, no event\n * listeners, no pointer-events changes, no programmatic blur.\n *\n * Root cause (confirmed by inspecting the live stylesheet, not assumed):\n * two separate hover mechanisms exist here, neither originally gated to\n * real-hover devices.\n * 1. LinkedIn/Medium's icon fill comes from Framer's own native\n *    mask+background-color gesture-hover rendering (verified live: the\n *    icon is a CSS mask with `background-color` swapped by an\n *    ancestor `:hover`). That rule is generated by Framer itself and\n *    cannot be edited from a code file.\n * 2. Download CV / Read on LinkedIn / Email use Framer's native Link\n *    Style Preset hover rule (confirmed live in the stylesheet:\n *    `a.framer-text:hover, span.framer-text[data-nested-link]:hover\n *    { color: var(--framer-link-hover-text-color, ...) }`), which is\n *    separate from - and not covered by - this project's own\n *    `withUnifiedHoverColor`, whose CSS is already correctly scoped to\n *    `(hover: hover) and (pointer: fine)`.\n * Rather than fight either native rule's specificity, this pins the\n * exact CSS custom property / property each one reads (background-color\n * for the mask icons, the --framer-link-hover-text-color custom property\n * for the text links - confirmed via getComputedStyle on the live site)\n * back to the resting value, `!important`, scoped inside\n * `@media (hover: none), (pointer: coarse)` and to these five links only\n * (matched by their exact, stable `href` - never by Framer's\n * build-specific hash classes, which can change on republish). Outside\n * that media query - i.e. on any device with real hover and a fine\n * pointer - this rule does not exist at all, so Desktop's native hover is\n * completely unaffected.\n * The Behance icon's own hover rule lives in SquareBehanceIcon.tsx and is\n * gated the same way, directly at its source.\n *\n * The `[aria-label=\"LinkedIn\"]` / `[aria-label=\"Medium\"]` qualifiers on\n * the first (background-color) group are required, not decorative: \"Read\n * on LinkedIn\" links to the exact same URL as the LinkedIn icon, and its\n * own DOM (confirmed live) also has a plain `<div>` as a direct child of\n * its `<a>` (the one wrapping its text). Without the aria-label\n * qualifier, `a[href=\"...linkedin...\"] > div` matched that text-wrapping\n * div too and painted a permanent grey rectangle behind \"Read on\n * LinkedIn\" in its Default state - the icons carry `aria-label`\n * (\"LinkedIn\"/\"Medium\") that the text links do not, so this scopes the\n * background-color rule to only the actual icon markup.\n */function ensureTouchHoverGateStyle(){if(document.getElementById(TOUCH_HOVER_GATE_STYLE_ID))return;const style=document.createElement(\"style\");style.id=TOUCH_HOVER_GATE_STYLE_ID;style.textContent=`\n        @media (hover: none), (pointer: coarse) {\n            a[href=\"https://www.linkedin.com/in/akis-kounellis/\"][aria-label=\"LinkedIn\"] > div,\n            a[href=\"https://medium.com/@akounellis\"][aria-label=\"Medium\"] > div {\n                background-color: ${GREY_TEXT_2_TOKEN} !important;\n            }\n            a[href=\"https://www.linkedin.com/in/akis-kounellis/\"],\n            a[href=\"https://drive.google.com/file/d/1IarHhsmbVcPztQWBRH3UmXp-9X4m_RKg/view?usp=drive_link\"],\n            a[href=\"mailto:hello@akiskounellis.com\"] {\n                --framer-link-hover-text-color: ${GREY_TEXT_2_TOKEN} !important;\n            }\n        }\n    `;document.head.appendChild(style);}function withTouchHoverGate(Component){return /*#__PURE__*/forwardRef((props,ref)=>{useEffect(ensureTouchHoverGateStyle,[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}/**\n * Used by the LinkedIn, Behance, and Medium social icons: composes the\n * existing compact branded focus ring (unchanged) with the CSS-only touch\n * hover gate above.\n */export function withBrandedFocusRingCompactAndHoverGate(Component){return withTouchHoverGate(withBrandedFocusRingCompact(Component));}/**\n * Used by the Email link: composes the existing branded focus ring\n * (unchanged) with the CSS-only touch hover gate above.\n */export function withBrandedFocusRingAndHoverGate(Component){return withTouchHoverGate(withBrandedFocusRing(Component));}/**\n * Used by Download CV and Read on LinkedIn: composes the existing branded\n * focus ring + unified hover color (both unchanged) with the CSS-only\n * touch hover gate above.\n */export function withBrandedFocusRingAndUnifiedHoverColorAndHoverGate(Component){return withTouchHoverGate(withBrandedFocusRingAndUnifiedHoverColor(Component));}/**\n * Tablet/Mobile S/G4 (\"Let's Talk\") only: prevents its hover-gesture\n * Replica Variant (the Stroke/Glow \"selected\"-looking state - a different\n * gradient than the resting Top/Right/Bottom/Left state) from ever being\n * triggered by a touch tap in the first place, so it can never appear\n * \"stuck\" after opening the mail link and returning.\n *\n * Root cause, established by direct investigation rather than assumed:\n * this button's own DOM (checked live on the /safari-diagnostic page,\n * the same underlying component) is a single element tree - Glow, Stroke,\n * Fill, Text as direct children of the `<a>`, no second \"hover\" tree\n * layered on top of it - and a full stylesheet search for any `:hover`\n * rule referencing those elements' classes came back empty. So unlike the\n * icons/text-links above, this hover-gesture is not CSS-driven at all;\n * it is Framer's own internal pointer/mouse listener (the same\n * variant-interpolation engine that drives the normal Top/Right/Bottom/\n * Left cycle, just triggered by hover-enter instead of the onAppear\n * timer), which a CSS media query cannot gate because there is no CSS\n * rule to gate.\n * Since that listener is compiled into Framer's own runtime and attached\n * directly to this button's root element, it can only be pre-empted by\n * intercepting the triggering event before it ever reaches that element -\n * not by disabling it (no such API exists) and not by resetting state\n * after the fact. On touch devices only, this attaches capture-phase\n * listeners for `pointerenter` / `pointerover` / `mouseenter` /\n * `mouseover` on the button's existing DOM parent (no new wrapper\n * element - layout is untouched) and calls `stopPropagation()`. Capture\n * phase always completes the full descent to the target before any\n * listener on the target itself (of either phase) can run, so this\n * reliably stops Framer's own hover-gesture listener from ever seeing\n * the event, regardless of whether it was registered in the capture or\n * bubble phase. `pointerdown` / `pointerup` / `click` are never touched,\n * so tapping still opens the mail link exactly as before, and the\n * onAppear-driven Top/Right/Bottom/Left cycle - a completely separate\n * mechanism - keeps running untouched throughout. No `pointer-events`\n * changes, no `blur()`, no pageshow/visibilitychange/focus listeners.\n * On real desktop mouse/trackpad, gated off entirely (same `(hover:\n * none), (pointer: coarse)` check used above), so hovering \"Let's Talk\"\n * with a real mouse is completely unaffected.\n */function withHoverGestureGate(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const localRef=useRef(null);useEffect(()=>{if(typeof window===\"undefined\")return;const el=localRef.current;if(!el)return;const parent=el.parentElement;if(!parent)return;const isTouchLike=window.matchMedia(\"(hover: none), (pointer: coarse)\").matches;if(!isTouchLike)return;function blockHoverGestureTrigger(e){e.stopPropagation();}parent.addEventListener(\"pointerenter\",blockHoverGestureTrigger,true);parent.addEventListener(\"pointerover\",blockHoverGestureTrigger,true);parent.addEventListener(\"mouseenter\",blockHoverGestureTrigger,true);parent.addEventListener(\"mouseover\",blockHoverGestureTrigger,true);return()=>{parent.removeEventListener(\"pointerenter\",blockHoverGestureTrigger,true);parent.removeEventListener(\"pointerover\",blockHoverGestureTrigger,true);parent.removeEventListener(\"mouseenter\",blockHoverGestureTrigger,true);parent.removeEventListener(\"mouseover\",blockHoverGestureTrigger,true);};},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:mergeRefs(localRef,ref)});});}/**\n * Used by the Tablet/Mobile S/G4 (\"Let's Talk\") button only: composes the\n * existing WebKit mask + GPU promotion override (unchanged, still applied\n * exactly as before) with the hover-gesture gate above.\n */export function withGlowMaskGpuTestAndHoverGestureGate(Component){return withHoverGestureGate(withGlowMaskGpuTest(Component));}/**\n * Structured-data (JSON-LD) injection, shared by the Home and Works-detail\n * overrides below. Writes/replaces a single `<script type=\"application/ld+json\">`\n * by a stable element id so re-mounts (e.g. client-side navigation between\n * Works detail pages, which reuses this same override on the same Hero node)\n * always leave exactly one, current copy in the DOM rather than accumulating\n * duplicates. Never rendered as visible page content - this only ever touches\n * `document.head`, never the component tree - so it carries zero layout or\n * visual footprint.\n */function ensureJsonLd(id,data){if(typeof document===\"undefined\")return;const existing=document.getElementById(id);if(existing)existing.remove();const script=document.createElement(\"script\");script.type=\"application/ld+json\";script.id=id;script.textContent=JSON.stringify(data);document.head.appendChild(script);}/**\n * Canonical production hostname: the connected custom domain, matching the\n * canonical, og:url and sitemap URLs Framer generates for the production site.\n */const SITE_URL=\"https://akiskounellis.com\";/**\n * Home only: attached directly to Home's own Hero node (a page-specific\n * node id, distinct from the Works-detail and 404 pages' own separate Hero\n * nodes), so this never fires on any other route. Adds a `WebSite` entity\n * and a `Person` entity for the portfolio owner, using only facts already\n * published elsewhere on the site: the display name and role text used in\n * the page's own title/heading, the same profile photo already used as the\n * site's own avatar image, and the three social profile links that already\n * exist as real, crawlable icon links in the page header (LinkedIn, Behance,\n * Medium) - listed here as `sameAs` to identify the same real-world person\n * across those profiles. No invented awards, employer, credentials, or\n * biographical data.\n */export function withHomeStructuredData(Component){return /*#__PURE__*/forwardRef((props,ref)=>{useEffect(()=>{ensureJsonLd(\"ld-website\",{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"@id\":`${SITE_URL}/#website`,name:\"Akis Kounellis\",url:`${SITE_URL}/`});ensureJsonLd(\"ld-person\",{\"@context\":\"https://schema.org\",\"@type\":\"Person\",\"@id\":`${SITE_URL}/#person`,name:\"Akis Kounellis\",url:`${SITE_URL}/`,image:\"https://framerusercontent.com/images/nNNu4khhtTsYBCbJEXCE8CJ2ilA.jpg\",jobTitle:\"Graphic and UI/UX Designer\",sameAs:[\"https://www.linkedin.com/in/akis-kounellis/\",\"https://www.behance.net/akis_kounellis\",\"https://medium.com/@akounellis\"]});},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}/**\n * Works detail template only: attached directly to the Works-detail page's\n * own Hero node, a single template node shared by all 19 CMS items, so one\n * assignment covers every `/works/:slug` page automatically - no per-item\n * hardcoding. Reads the already-CMS-bound, already-correct, per-item\n * `<title>`, meta description, OG image, and canonical URL straight from\n * the rendered document at mount (these were fixed to be project-specific\n * per item in an earlier pass - see the description/OG/title metadata\n * bindings on this page's own WebPageNode), rather than re-deriving the\n * same CMS field values a second time through a separate binding path.\n * This guarantees the CreativeWork entity can never drift out of sync with\n * the page's own visible/meta title and description. Links back to the\n * Home page's Person entity by `@id` reference (no duplicate Person data\n * repeated on every project page).\n */export function withWorkDetailStructuredData(Component){return /*#__PURE__*/forwardRef((props,ref)=>{useEffect(()=>{if(typeof document===\"undefined\")return;const canonical=document.querySelector('link[rel=\"canonical\"]')?.getAttribute(\"href\")||window.location.href;const title=document.title.replace(/\\s*—\\s*Akis Kounellis\\s*$/,\"\");const description=document.querySelector('meta[name=\"description\"]')?.getAttribute(\"content\")||undefined;const image=document.querySelector('meta[property=\"og:image\"]')?.getAttribute(\"content\")||undefined;ensureJsonLd(\"ld-creativework\",{\"@context\":\"https://schema.org\",\"@type\":\"CreativeWork\",\"@id\":`${canonical}#creativework`,name:title,description,image,url:canonical,creator:{\"@id\":`${SITE_URL}/#person`}});},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withGlowMaskGpuTest\":{\"type\":\"reactHoc\",\"name\":\"withGlowMaskGpuTest\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBrandedFocusRingAndHoverGate\":{\"type\":\"reactHoc\",\"name\":\"withBrandedFocusRingAndHoverGate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withFilterAriaPressed\":{\"type\":\"reactHoc\",\"name\":\"withFilterAriaPressed\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBrandedFocusRingCompact\":{\"type\":\"reactHoc\",\"name\":\"withBrandedFocusRingCompact\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withWorkDetailStructuredData\":{\"type\":\"reactHoc\",\"name\":\"withWorkDetailStructuredData\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withReducedMotionNoScale\":{\"type\":\"reactHoc\",\"name\":\"withReducedMotionNoScale\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSkipLinkVisibilityToContentStart\":{\"type\":\"reactHoc\",\"name\":\"withSkipLinkVisibilityToContentStart\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSkipLinkVisibility\":{\"type\":\"reactHoc\",\"name\":\"withSkipLinkVisibility\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withUnifiedHoverColor\":{\"type\":\"reactHoc\",\"name\":\"withUnifiedHoverColor\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withCardAccessibleNameAndFocus\":{\"type\":\"reactHoc\",\"name\":\"withCardAccessibleNameAndFocus\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBrandedFocusRingAndUnifiedHoverColor\":{\"type\":\"reactHoc\",\"name\":\"withBrandedFocusRingAndUnifiedHoverColor\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAriaHiddenIcon\":{\"type\":\"reactHoc\",\"name\":\"withAriaHiddenIcon\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBrandedFocusRing\":{\"type\":\"reactHoc\",\"name\":\"withBrandedFocusRing\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLetsTalkFocusRing\":{\"type\":\"reactHoc\",\"name\":\"withLetsTalkFocusRing\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSkipLinkVisibilityAnchored\":{\"type\":\"reactHoc\",\"name\":\"withSkipLinkVisibilityAnchored\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withSeamlessMarquee\":{\"type\":\"reactHoc\",\"name\":\"withSeamlessMarquee\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBrandedFocusRingAndUnifiedHoverColorAndHoverGate\":{\"type\":\"reactHoc\",\"name\":\"withBrandedFocusRingAndUnifiedHoverColorAndHoverGate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withAriaHiddenAndResolvedIconColor\":{\"type\":\"reactHoc\",\"name\":\"withAriaHiddenAndResolvedIconColor\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHomeStructuredData\":{\"type\":\"reactHoc\",\"name\":\"withHomeStructuredData\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withBrandedFocusRingCompactAndHoverGate\":{\"type\":\"reactHoc\",\"name\":\"withBrandedFocusRingCompactAndHoverGate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withGlowMaskGpuTestAndHoverGestureGate\":{\"type\":\"reactHoc\",\"name\":\"withGlowMaskGpuTestAndHoverGestureGate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AccessibilityOverrides.map","// Generated by Framer (ea53337)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;DM Mono-regular\",\"Inter-Bold\",\"Inter-BoldItalic\",\"Inter-Italic\"]);export const fonts=[{explicitInter:true,fonts:[{family:\"DM Mono\",source:\"google\",style:\"normal\",url:\"https://fonts.gstatic.com/s/dmmono/v14/aFTU7PB1QTsUX8KYhhiaBYyMcKw.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",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\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/4RAEQdEOrcnDkhHiiCbJOw92Lk.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/1K3W8DizY3v4emK8Mb08YHxTbs.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/tUSCtfYVM1I1IchuyCwz9gDdQ.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",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\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/DXD0Q7LSl7HEvDzucnyLnGBHM.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",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\"},{family:\"Inter\",source:\"framer\",style:\"italic\",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\"},{family:\"Inter\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/u6gJwDuwB143kpNK1T1MDKDWkMc.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"italic\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/43sJ6MfOPh1LCJt46OvyDuSbA6o.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/wccHG0r4gBDAIRhfHiOlq6oEkqw.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"italic\",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\"},{family:\"Inter\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/QxmhnWTzLtyjIiZcfaLIJ8EFBXU.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"italic\",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\"},{family:\"Inter\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/CfMzU8w2e7tHgF4T4rATMPuWosA.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/867QObYax8ANsfX4TGEVU9YiCM.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"italic\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Oyn2ZbENFdnW7mt2Lzjk1h9Zb9k.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/cdAe8hgZ1cMyLu9g005pAW3xMo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"italic\",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/DOfvtmE1UplCq161m6Hj8CSQYg.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vFzuJY0c65av44uhEKB6vyjFMg.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"italic\",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/tKtBcDnBMevsEEJKdNGhhkLzYo.woff2\",weight:\"400\"}]}];export const css=['.framer-YdVQr .framer-styles-preset-1qeryyb:not(.rich-text-wrapper), .framer-YdVQr .framer-styles-preset-1qeryyb.rich-text-wrapper p { --framer-font-family: \"DM Mono\", monospace; --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: normal; --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: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: 0em; --framer-line-height: 15px; --framer-paragraph-spacing: 12px; --framer-text-alignment: start; --framer-text-color: var(--token-a6b9dd68-a1cb-491e-bd6a-fb24b574eb34, #5c5c5e); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-YdVQr\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (ea53337)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"FR;InterDisplay\",\"FR;InterDisplay-Bold\",\"FR;InterDisplay-BoldItalic\",\"FR;InterDisplay-Italic\"]);export const fonts=[{explicitInter:true,fonts:[{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/2uIBiALfCHVpWbHqRMZutfT7giU.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/Zwfz6xbVe5pmcWRJRgBDHnMkOkI.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/U9LaDDmbRhzX3sB8g8glTy5feTE.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/tVew2LzXJ1t7QfxP1gdTIdj2o0g.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",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/DF7bjCRmStYPqSb945lAlMfCCVQ.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/nCpxWS6DaPlPe0lHzStXAPCo3lw.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",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/vebZUMjGyKkYsfcY73iwWTzLNag.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/I11LrmuBDQZweplJ62KkVsklU5Y.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/UjFZPDy3qGuDktQM4q9CxhKfIa8.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/8exwVHJy2DhJ4N5prYlVMrEKmQ.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/UTeedEK21hO5jDxEUldzdScUqpg.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",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/Ig8B8nzy11hzIWEIYnkg91sofjo.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/n9CXKI3tsmCPeC6MCT9NziShSuQ.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",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/qctQFoJqJ9aIbRSIp0AhCQpFxn8.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/fXvVh2JeZlehNcEhKHpHH0frSl0.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/7pScaNeb6M7n2HF2jKemDqzCIr4.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/qS4UjQYyATcVV9rODk0Zx9KhkY8.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/VfD2n20yM7v0hrUEBHEyafsmMBY.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",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/4oIO9fB59bn3cKFWz7piCj28z9s.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/TBccIZR9kIpkRce5i9ATfPp7a4.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",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/F5Lmfd3fCAu7TwiYbI4DLWw4ks.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/THWAFHoAcmqLMy81E8hCSdziVKA.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/sQxGYWDlRkDr0eOKqiNRl6g5rs.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/NNTAT1XAm8ZRkr824inYPkjNeL4.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/P2qr9PAWBt905929rHfxmneMUG0.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",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/2BmSa4TZZvFKAZg2DydxTbvKlTU.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/djqIk3Er2JcAcz7Rup88BdINEw.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",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/KMFW46iYsEZaUBwXbwPc9nQm71o.woff2\",weight:\"400\"}]}];export const css=['.framer-HSRbb .framer-styles-preset-9782ty:not(.rich-text-wrapper), .framer-HSRbb .framer-styles-preset-9782ty.rich-text-wrapper p { --framer-font-family: \"Inter Display\", \"Inter Display Placeholder\", sans-serif; --framer-font-family-bold: \"Inter Display\", \"Inter Display Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Inter Display\", \"Inter Display Placeholder\", sans-serif; --framer-font-family-italic: \"Inter Display\", \"Inter Display Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 16px; --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: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.6em; --framer-paragraph-spacing: 10px; --framer-text-alignment: start; --framer-text-color: var(--token-b819ff3b-80ad-45f2-8389-6a403046bb14, #6a6b6c); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-HSRbb\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// 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 2.807 0 C 2.062 -0.002 1.347 0.293 0.82 0.82 C 0.293 1.347 -0.002 2.062 0 2.807 L 0 13.193 C -0.002 13.938 0.293 14.653 0.82 15.18 C 1.347 15.707 2.062 16.002 2.807 16 L 13.193 16 C 13.938 16.002 14.653 15.707 15.18 15.18 C 15.707 14.653 16.002 13.938 16 13.193 L 16 12.465 C 15.906 12.473 15.813 12.478 15.719 12.478 C 14.001 12.478 13.034 11.047 12.992 9.257 C 12.99 9.099 12.995 8.942 13.007 8.785 C 13.069 7.994 13.323 7.291 13.743 6.77 C 13.993 6.457 14.311 6.206 14.673 6.037 C 14.985 5.879 15.425 5.792 15.783 5.792 L 15.798 5.792 C 15.865 5.792 15.932 5.794 16 5.799 L 16 2.807 C 16.002 2.062 15.707 1.347 15.18 0.82 C 14.653 0.293 13.938 -0.002 13.193 0 Z M 2.939 3.722 L 5.715 3.722 L 8.107 9.345 L 10.501 3.722 L 13.077 3.722 L 13.077 3.819 L 13.064 3.822 C 12.594 3.929 12.355 4.087 12.355 4.658 L 12.353 4.658 L 12.355 11.507 C 12.395 11.958 12.638 12.097 13.064 12.194 L 13.077 12.197 L 13.077 12.293 L 9.795 12.293 L 9.795 12.197 L 9.808 12.193 C 10.234 12.097 10.471 11.958 10.511 11.507 L 10.511 4.845 L 7.347 12.278 L 7.173 12.278 L 4.1 5.046 L 4.1 11.343 C 4.1 11.914 4.339 12.072 4.809 12.178 L 4.822 12.181 L 4.822 12.279 L 2.937 12.279 L 2.937 12.181 L 2.949 12.178 C 3.419 12.071 3.659 11.913 3.659 11.343 L 3.659 4.658 C 3.659 4.087 3.421 3.929 2.95 3.822 L 2.938 3.819 Z M 15.772 6.167 C 15.048 6.183 14.617 7.049 14.563 8.25 L 16 8.25 L 16 6.199 C 15.926 6.179 15.849 6.168 15.772 6.167 M 14.531 8.589 C 14.464 9.759 15.104 10.748 16 11.011 L 16 8.589 Z\" fill=\"var(--t829wi, rgb(0,0,0))\" height=\"16.00001593788341px\" id=\"fai_SDNWO\" transform=\"translate(0 0)\" width=\"16.000017604859515px\"/></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-5dKLl\",className),layoutId:layoutId,ref:ref,style:{\"--t829wi\":JW2ySfJQW,...style}});});const css=[`.framer-5dKLl { -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\":\"Medium\",\"color\":{\"type\":\"variable\",\"value\":\"t829wi\"},\"set\":{\"localId\":\"vectorSet/uK5ESDkg3\",\"id\":\"uK5ESDkg3\",\"moduleId\":\"rTgCpOIUH6tdiqNh47fL\"}}\n */const Icon=withCSS(Component,css,\"framer-5dKLl\");Icon.displayName=\"Medium\";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\":{\"framerIntrinsicHeight\":\"16\",\"framerVector\":\"{\\\"name\\\":\\\"Medium\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"t829wi\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/uK5ESDkg3\\\",\\\"id\\\":\\\"uK5ESDkg3\\\",\\\"moduleId\\\":\\\"rTgCpOIUH6tdiqNh47fL\\\"}}\",\"framerVariables\":\"{\\\"JW2ySfJQW\\\":\\\"fill\\\"}\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"16\",\"framerImmutableVariables\":\"true\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (9801af1)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,cx,getFonts,Link,useComponentViewport,useLocaleInfo,useVariantState,withCodeBoundaryForOverrides,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Medium from\"https://framerusercontent.com/modules/gyKuM1CMegMRRGdZbi9B/yEUlOzMD0UeMPVP9YrsA/vNqCVHugg.js\";import{withBrandedFocusRingCompactAndHoverGate}from\"https://framerusercontent.com/modules/HMKbVbUCXwNqt1BSY99u/IClucC9GVsFblIYdQ1Zg/AccessibilityOverrides.js\";const MediumFonts=getFonts(Medium);const MotionAWithBrandedFocusRingCompactAndHoverGate1ncq4xj=withCodeBoundaryForOverrides(motion.a,{nodeId:\"GDd9x5nrZ\",override:withBrandedFocusRingCompactAndHoverGate,scopeId:\"gt3FSE_io\"});const enabledGestures={GDd9x5nrZ:{hover:true}};const serializationHash=\"framer-Xbyil\";const variantClassNames={GDd9x5nrZ:\"framer-v-1ncq4xj\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"GDd9x5nrZ\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:\"https://medium.com/@akounellis\",motionChild:true,nodeId:\"GDd9x5nrZ\",openInNewTab:true,relValues:[\"noreferrer\"],scopeId:\"gt3FSE_io\",children:/*#__PURE__*/_jsx(MotionAWithBrandedFocusRingCompactAndHoverGate1ncq4xj,{...restProps,...gestureHandlers,\"aria-label\":\"Medium\",className:`${cx(scopingClassNames,\"framer-1ncq4xj\",className,classNames)} framer-12knkho`,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"GDd9x5nrZ\",ref:refBinding,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},...addPropertyOverrides({\"GDd9x5nrZ-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(Medium,{animated:true,className:\"framer-xabdl0\",layoutDependency:layoutDependency,layoutId:\"WsGDzqn_R\",style:{\"--t829wi\":\"var(--token-a6b9dd68-a1cb-491e-bd6a-fb24b574eb34)\"},variants:{\"GDd9x5nrZ-hover\":{\"--t829wi\":\"var(--token-43464fc0-8f12-4214-bfdd-fa0c6aa29267)\"}}})})})})})});});const css=[\".framer-Xbyil.framer-12knkho, .framer-Xbyil .framer-12knkho { display: block; }\",\".framer-Xbyil.framer-1ncq4xj { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 36px; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: 36px; }\",\".framer-Xbyil .framer-xabdl0 { flex: none; height: auto; position: relative; width: 24px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 36\n * @framerIntrinsicWidth 36\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"pMwZ06fLk\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framergt3FSE_io=withCSS(Component,css,\"framer-Xbyil\");export default Framergt3FSE_io;Framergt3FSE_io.displayName=\"Social Icon Link - Medium\";Framergt3FSE_io.defaultProps={height:36,width:36};addFonts(Framergt3FSE_io,[{explicitInter:true,fonts:[]},...MediumFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"Framergt3FSE_io\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"36\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"pMwZ06fLk\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerIntrinsicHeight\":\"36\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (ea53337)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"FR;InterDisplay\",\"FR;InterDisplay-Bold\",\"FR;InterDisplay-BoldItalic\",\"FR;InterDisplay-Italic\"]);export const fonts=[{explicitInter:true,fonts:[{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/2uIBiALfCHVpWbHqRMZutfT7giU.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/Zwfz6xbVe5pmcWRJRgBDHnMkOkI.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/U9LaDDmbRhzX3sB8g8glTy5feTE.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/tVew2LzXJ1t7QfxP1gdTIdj2o0g.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",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/DF7bjCRmStYPqSb945lAlMfCCVQ.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/nCpxWS6DaPlPe0lHzStXAPCo3lw.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",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/vebZUMjGyKkYsfcY73iwWTzLNag.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/I11LrmuBDQZweplJ62KkVsklU5Y.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/UjFZPDy3qGuDktQM4q9CxhKfIa8.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/8exwVHJy2DhJ4N5prYlVMrEKmQ.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/UTeedEK21hO5jDxEUldzdScUqpg.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",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/Ig8B8nzy11hzIWEIYnkg91sofjo.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/n9CXKI3tsmCPeC6MCT9NziShSuQ.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"normal\",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/qctQFoJqJ9aIbRSIp0AhCQpFxn8.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/fXvVh2JeZlehNcEhKHpHH0frSl0.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/7pScaNeb6M7n2HF2jKemDqzCIr4.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/qS4UjQYyATcVV9rODk0Zx9KhkY8.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/VfD2n20yM7v0hrUEBHEyafsmMBY.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",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/4oIO9fB59bn3cKFWz7piCj28z9s.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/TBccIZR9kIpkRce5i9ATfPp7a4.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",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/F5Lmfd3fCAu7TwiYbI4DLWw4ks.woff2\",weight:\"700\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/THWAFHoAcmqLMy81E8hCSdziVKA.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/sQxGYWDlRkDr0eOKqiNRl6g5rs.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/NNTAT1XAm8ZRkr824inYPkjNeL4.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/P2qr9PAWBt905929rHfxmneMUG0.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",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/2BmSa4TZZvFKAZg2DydxTbvKlTU.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/djqIk3Er2JcAcz7Rup88BdINEw.woff2\",weight:\"400\"},{family:\"Inter Display\",source:\"framer\",style:\"italic\",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/KMFW46iYsEZaUBwXbwPc9nQm71o.woff2\",weight:\"400\"}]}];export const css=['.framer-xjF4P .framer-styles-preset-367i6i:not(.rich-text-wrapper), .framer-xjF4P .framer-styles-preset-367i6i.rich-text-wrapper p { --framer-font-family: \"Inter Display\", \"Inter Display Placeholder\", sans-serif; --framer-font-family-bold: \"Inter Display\", \"Inter Display Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Inter Display\", \"Inter Display Placeholder\", sans-serif; --framer-font-family-italic: \"Inter Display\", \"Inter Display Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv09\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv11\\' 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: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: 0.04em; --framer-line-height: 1.2em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-b819ff3b-80ad-45f2-8389-6a403046bb14, #6a6a6c); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-xjF4P\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","/**\n * Exact official Font Awesome Free \"square-behance\" brand mark (path fetched\n * verbatim from the upstream Font-Awesome repository, not redrawn or\n * approximated), rendered as a static, deterministic SVG path - no icon-set\n * lookup, no fuzzy name search, no runtime resolution of any kind. Framer's\n * own \"Logos\" icon set has only the bare \"Behance\" wordmark (no enclosing\n * shape), which is why LinkedIn/Medium's boxed app-icon style and Behance's\n * bare wordmark read as two different icon families; this component gives\n * Behance the same boxed silhouette as the other two without touching\n * LinkedIn or Medium at all.\n *\n * `viewBox=\"0 32 448 448\"` (not the upstream file's own declared\n * `\"0 0 448 512\"`) - measured directly with `path.getBBox()` on the live\n * rendered icon: the actual visible badge is a perfect 448x448 square\n * sitting at y=32 within Font-Awesome's taller 448x512 grid (32px of\n * transparent margin above and below, 0px left/right), not a genuinely\n * non-square mark. Using the file's own declared viewBox unmodified rendered\n * the icon letterboxed to ~21x24 inside its 24x24 slot (the SVG spec's\n * default `preserveAspectRatio` contains a non-square viewBox inside a\n * square box rather than stretching it) - about 12% narrower than\n * LinkedIn/Medium's own icons, which fill their 24x24 box edge-to-edge -\n * exactly the \"looks smaller than the other two\" mismatch reported in\n * manual review. Cropping the viewBox to the artwork's real bounding box is\n * a reframe, not a redraw or a stretch: every path coordinate is untouched,\n * only the visible window into them changed, so the mark now fills its full\n * 24x24 slot on all four sides, matching LinkedIn/Medium's optical size and\n * weight with no distortion.\n *\n * Fill is a hardcoded reference to the project's own \"Grey text 2\" color\n * token (the same token the sibling LinkedIn/Medium IconNodes use for their\n * default state), not a property control. Confirmed directly: a\n * ComponentInstanceNode's `$control__*` value written on either the primary\n * variant or its hover-gesture replica of this component does not diverge\n * independently between the two (verified by setting a plain `width`\n * override on one and observing it silently apply to both) - a real,\n * reproducible limitation of this specific parent/child pairing (a code\n * component instance nested inside a gesture-replica frame), not something\n * fixable from this file. Hardcoding the token directly sidesteps that\n * limitation entirely: it needs no per-instance override to begin with, so\n * there is nothing to fail to diverge, and it still resolves correctly in\n * both Light and Dark Mode via the same CSS custom property every other\n * token-based fill on this site already depends on.\n * Hover parity with LinkedIn/Medium (Grey text 2 -> Main) is implemented\n * with a scoped `a:hover` CSS rule targeting this path's own class, rather\n * than a Framer `$control__*` override - deliberately sidestepping the\n * confirmed limitation above instead of fighting it. This works because the\n * wrapper FrameNode already renders as a real `<a>` (it carries the site's\n * `link` attribute), so the mouse-hover pseudo-class naturally scopes to\n * exactly the same element LinkedIn/Medium's own hover-gesture replica\n * relies on. Both the resting and hover fills reference the project's real\n * color tokens (`Grey text 2`, `Main`) via `var(--token-...)`, the exact\n * same CSS custom properties every other token-bound fill on this site\n * depends on - no hex/rgb literal, no separate light/dark value, no JS\n * event listener, no duplicated icon layer. Keyboard focus is untouched:\n * this is a `:hover` rule only, with no `:focus` counterpart, so it cannot\n * alter the existing `withBrandedFocusRingCompact` focus-ring behavior.\n * The rule is scoped inside `@media (hover: hover) and (pointer: fine)` so\n * it can only ever match on a real mouse/trackpad - on touch devices the\n * rule does not exist at all, so a tap can never trigger or leave behind a\n * synthetic \"stuck\" hover fill (mobile Safari's well-documented sticky\n * :hover behavior).\n */import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";export default function SquareBehanceIcon(){return /*#__PURE__*/_jsxs(\"svg\",{viewBox:\"0 32 448 448\",width:\"100%\",height:\"100%\",\"aria-hidden\":\"true\",focusable:\"false\",style:{display:\"block\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`@media (hover: hover) and (pointer: fine) { a:hover .square-behance-icon-fill { fill: var(--token-43464fc0-8f12-4214-bfdd-fa0c6aa29267); } }`}),/*#__PURE__*/_jsx(\"path\",{className:\"square-behance-icon-fill\",fill:\"var(--token-a6b9dd68-a1cb-491e-bd6a-fb24b574eb34)\",d:\"M155.3 318.4c17.2 0 31.2-6.1 31.2-25.4c0-19.7-11.7-27.4-30.3-27.5h-46v52.9h45.1zm-5.4-129.6H110.3v44.8H153c15.1 0 25.8-6.6 25.8-22.9c0-17.7-13.7-21.9-28.9-21.9zm129.5 74.8h62.2c-1.7-18.5-11.3-29.7-30.5-29.7c-18.3 0-30.5 11.4-31.7 29.7zM384 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zM349.5 185H271.7V166.1h77.8V185zM193.7 243.7c23.6 6.7 35 27.5 35 51.6c0 39-32.7 55.7-67.6 55.9H68v-192h90.5c32.9 0 61.4 9.3 61.4 47.5c0 19.3-9 28.8-26.2 37zm118.7-38.6c43.5 0 67.6 34.3 67.6 75.4c0 1.6-.1 3.3-.2 5c0 .8-.1 1.5-.1 2.2H279.5c0 22.2 11.7 35.3 34.1 35.3c11.6 0 26.5-6.2 30.2-18.1h33.7c-10.4 31.9-31.9 46.8-65.1 46.8c-43.8 0-71.1-29.7-71.1-73c0-41.8 28.7-73.6 71.1-73.6z\"})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SquareBehanceIcon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SquareBehanceIcon.map","// Generated by Framer (9801af1)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,cx,getFonts,Link,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCodeBoundaryForOverrides,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{withBrandedFocusRingCompactAndHoverGate}from\"https://framerusercontent.com/modules/HMKbVbUCXwNqt1BSY99u/IClucC9GVsFblIYdQ1Zg/AccessibilityOverrides.js\";import SquareBehanceIcon from\"https://framerusercontent.com/modules/dPQKS2XfnKhrHJfXRTvS/VA4Z2588uemXSw4NuPUk/SquareBehanceIcon.js\";const SquareBehanceIconFonts=getFonts(SquareBehanceIcon);const MotionAWithBrandedFocusRingCompactAndHoverGate1lc37gx=withCodeBoundaryForOverrides(motion.a,{nodeId:\"rMpM3bagD\",override:withBrandedFocusRingCompactAndHoverGate,scopeId:\"WAf836G34\"});const enabledGestures={rMpM3bagD:{hover:true}};const serializationHash=\"framer-2oY4X\";const variantClassNames={rMpM3bagD:\"framer-v-1lc37gx\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"rMpM3bagD\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:\"https://www.behance.net/akis_kounellis\",motionChild:true,nodeId:\"rMpM3bagD\",openInNewTab:true,relValues:[\"noreferrer\"],scopeId:\"WAf836G34\",children:/*#__PURE__*/_jsx(MotionAWithBrandedFocusRingCompactAndHoverGate1lc37gx,{...restProps,...gestureHandlers,\"aria-label\":\"Behance\",className:`${cx(scopingClassNames,\"framer-1lc37gx\",className,classNames)} framer-fq0pr`,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"rMpM3bagD\",ref:refBinding,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},...addPropertyOverrides({\"rMpM3bagD-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1jgv9xl-container\",\"data-code-component-plugin-id\":\"api\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"YviHLGcWj-container\",nodeId:\"YviHLGcWj\",rendersWithMotion:true,scopeId:\"WAf836G34\",children:/*#__PURE__*/_jsx(SquareBehanceIcon,{height:\"100%\",id:\"YviHLGcWj\",layoutId:\"YviHLGcWj\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})})})})})})});});const css=[\".framer-2oY4X.framer-fq0pr, .framer-2oY4X .framer-fq0pr { display: block; }\",\".framer-2oY4X.framer-1lc37gx { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 36px; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: 36px; }\",\".framer-2oY4X .framer-1jgv9xl-container { flex: none; height: 24px; position: relative; width: 24px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 36\n * @framerIntrinsicWidth 36\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"Jvz0fw5Vc\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerWAf836G34=withCSS(Component,css,\"framer-2oY4X\");export default FramerWAf836G34;FramerWAf836G34.displayName=\"Social Icon Link - Behance\";FramerWAf836G34.defaultProps={height:36,width:36};addFonts(FramerWAf836G34,[{explicitInter:true,fonts:[]},...SquareBehanceIconFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerWAf836G34\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"Jvz0fw5Vc\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerAutoSizeImages\":\"true\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"36\",\"framerComponentViewportWidth\":\"true\",\"framerColorSyntax\":\"true\",\"framerIntrinsicHeight\":\"36\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// 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\"}}}","// Generated by Framer (9801af1)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,cx,getFonts,Link,useComponentViewport,useLocaleInfo,useVariantState,withCodeBoundaryForOverrides,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Linkedin from\"https://framerusercontent.com/modules/jLVfLScc4Pw6lyTMb6Ap/WV2r0vnJw1UsYWrqninT/AGIu2296z.js\";import{withBrandedFocusRingCompactAndHoverGate}from\"https://framerusercontent.com/modules/HMKbVbUCXwNqt1BSY99u/IClucC9GVsFblIYdQ1Zg/AccessibilityOverrides.js\";const LinkedinFonts=getFonts(Linkedin);const MotionAWithBrandedFocusRingCompactAndHoverGate1er0t5l=withCodeBoundaryForOverrides(motion.a,{nodeId:\"ukNTvojTw\",override:withBrandedFocusRingCompactAndHoverGate,scopeId:\"Zzihk1u16\"});const enabledGestures={ukNTvojTw:{hover:true}};const serializationHash=\"framer-fvCuI\";const variantClassNames={ukNTvojTw:\"framer-v-1er0t5l\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"ukNTvojTw\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:\"https://www.linkedin.com/in/akis-kounellis/\",motionChild:true,nodeId:\"ukNTvojTw\",openInNewTab:true,relValues:[\"noreferrer\"],scopeId:\"Zzihk1u16\",children:/*#__PURE__*/_jsx(MotionAWithBrandedFocusRingCompactAndHoverGate1er0t5l,{...restProps,...gestureHandlers,\"aria-label\":\"LinkedIn\",className:`${cx(scopingClassNames,\"framer-1er0t5l\",className,classNames)} framer-ea3cp5`,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"ukNTvojTw\",ref:refBinding,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},...addPropertyOverrides({\"ukNTvojTw-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(Linkedin,{animated:true,className:\"framer-vrv4pt\",layoutDependency:layoutDependency,layoutId:\"q84dJ0Huf\",style:{\"--t829wi\":\"var(--token-a6b9dd68-a1cb-491e-bd6a-fb24b574eb34, rgb(111, 111, 125))\"},variants:{\"ukNTvojTw-hover\":{\"--t829wi\":\"var(--token-43464fc0-8f12-4214-bfdd-fa0c6aa29267)\"}}})})})})})});});const css=[\".framer-fvCuI.framer-ea3cp5, .framer-fvCuI .framer-ea3cp5 { display: block; }\",\".framer-fvCuI.framer-1er0t5l { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 36px; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: 36px; }\",\".framer-fvCuI .framer-vrv4pt { flex: none; height: auto; position: relative; width: 24px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 36\n * @framerIntrinsicWidth 36\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"iQ0z9MNQa\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerZzihk1u16=withCSS(Component,css,\"framer-fvCuI\");export default FramerZzihk1u16;FramerZzihk1u16.displayName=\"Social Icon Link - LinkedIn\";FramerZzihk1u16.defaultProps={height:36,width:36};addFonts(FramerZzihk1u16,[{explicitInter:true,fonts:[]},...LinkedinFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerZzihk1u16\",\"slots\":[],\"annotations\":{\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerIntrinsicWidth\":\"36\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"iQ0z9MNQa\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerImmutableVariables\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"36\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (48da836)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Inter Tight-500\",\"GF;Inter Tight-700\",\"GF;Inter Tight-700italic\",\"GF;Inter Tight-500italic\"]);export const fonts=[{explicitInter:true,fonts:[{family:\"Inter Tight\",source:\"google\",style:\"normal\",url:\"https://fonts.gstatic.com/s/intertight/v7/NGSnv5HMAFg6IuGlBNMjxJEL2VmU3NS7Z2mjPQ-qWSRToK8EPg.woff2\",weight:\"500\"},{family:\"Inter Tight\",source:\"google\",style:\"normal\",url:\"https://fonts.gstatic.com/s/intertight/v7/NGSnv5HMAFg6IuGlBNMjxJEL2VmU3NS7Z2mj6AiqWSRToK8EPg.woff2\",weight:\"700\"},{family:\"Inter Tight\",source:\"google\",style:\"italic\",url:\"https://fonts.gstatic.com/s/intertight/v7/NGShv5HMAFg6IuGlBNMjxLsC66ZMtb8hyW62x0ylGC5SgqoUPvi5.woff2\",weight:\"700\"},{family:\"Inter Tight\",source:\"google\",style:\"italic\",url:\"https://fonts.gstatic.com/s/intertight/v7/NGShv5HMAFg6IuGlBNMjxLsC66ZMtb8hyW62x0xwHy5SgqoUPvi5.woff2\",weight:\"500\"}]}];export const css=['.framer-7clOQ .framer-styles-preset-3bmclk:not(.rich-text-wrapper), .framer-7clOQ .framer-styles-preset-3bmclk.rich-text-wrapper h1 { --framer-font-family: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-family-bold: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-family-italic: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 132px; --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: -0.3px; --framer-line-height: 1em; --framer-paragraph-spacing: 0px; --framer-text-alignment: left; --framer-text-color: var(--token-43464fc0-8f12-4214-bfdd-fa0c6aa29267, #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: 810px) { .framer-7clOQ .framer-styles-preset-3bmclk:not(.rich-text-wrapper), .framer-7clOQ .framer-styles-preset-3bmclk.rich-text-wrapper h1 { --framer-font-family: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-family-bold: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-family-italic: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 96px; --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: -0.3px; --framer-line-height: 1em; --framer-paragraph-spacing: 0px; --framer-text-alignment: left; --framer-text-color: var(--token-43464fc0-8f12-4214-bfdd-fa0c6aa29267, #141414); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-7clOQ .framer-styles-preset-3bmclk:not(.rich-text-wrapper), .framer-7clOQ .framer-styles-preset-3bmclk.rich-text-wrapper h1 { --framer-font-family: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-family-bold: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-family-bold-italic: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-family-italic: \"Inter Tight\", \"Inter Tight Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 64px; --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: -0.3px; --framer-line-height: 1.1em; --framer-paragraph-spacing: 0px; --framer-text-alignment: left; --framer-text-color: var(--token-43464fc0-8f12-4214-bfdd-fa0c6aa29267, #141414); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-7clOQ\";\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\"}}}"],"mappings":"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"}