{"version":3,"file":"shared-lib.sbXrhAOS.mjs","names":["ensureRollStyle","ROLL_ID","ROLL_OUT","ROLL_FILL","ROLL_H","ROLL_INV","rollDelays","useRef","useCallback","React.useContext","React.useMemo","React.Fragment","React.forwardRef","useRef","React.useId","ensureRollStyle","ROLL_ID","ROLL_OUT","ROLL_FILL","ROLL_H","ROLL_INV","_Fragment","c","RollIcon","INK","useState","startTransition","useState","useRef","startTransition","useRef","useCallback","useState","_Fragment","__esmMin","pe","init_npm_react_18_3_1","ne","init_ssg_sandbox_shims","window","te","x","ie","init_npm_react_dom_18_3_1","l","_e","Ha","oe","p","c","J","init_jsx_runtime","motion","useSpring","useMotionValue","MotionConfigContext","AnimatePresence","LayoutGroup","init_framer_motion_DhsWWWsN","init_framer_B1b760uK","useComponentViewport","addFonts","useVariantState","cx","useIsStaticRenderer","RichText","Link","withCSS","ControlType","withCodeBoundaryForOverrides","useLocaleInfo","addPropertyControls","fontStore","ensureRollStyle$2","ROLL_ID$2","s","fill","st","up","ROLL_OUT$2","ROLL_FILL$2","ROLL_H$2","ROLL_INV$2","rollDelays$1","total","i","splitRoll","root","walker","n","texts","label","t","target","line","ch","d","withSweep","node","de","setRef","el","ref","ce","Component","props","init_SweepButton","addPropertyOverrides","variants","nextOverrides","variant","overrides","MotionAWithSweepff51fc","cycleOrder","serializationHash","variantClassNames","transition1","Transition","humanReadableVariantMap","Variants","getProps","createLayoutDependency","FramermL3JxK_TY","init_mL3JxK_TY","config","transition","value","contextValue","link","fallbackRef","refBinding","defaultLayoutId","restProps","layoutDependency","scopingClassNames","layoutId","gvccJA6LL","gestureHandlers","className","classNames","style","baseVariant","gestureVariant","jT5Yh7uHO","ensureRollStyle$1","ROLL_ID$1","ROLL_OUT$1","ROLL_FILL$1","ROLL_H$1","ROLL_INV$1","rollDelays","RollText","chars","text","start","c$1","ROLL_SR","RollIcon$1","ensureStyle","STYLE_ID","INK$1","timeIn","zone","LocalTime","isStatic","time","setTime","showTime","tick","timeZone","id","INK_SOFT","DOT","city","showLinks","LINKS","init_LocalTime","ensureRollStyle","ROLL_ID","ROLL_OUT","ROLL_FILL","ROLL_H","ROLL_INV","RollIcon","tokenSets","light","dark","read","rule","name","sheet","rules","inner","systemTheme","savedTheme","v","KEY","applyTheme","sets","values","theme","ThemeToggle","setTheme","hold","setHold","btnRef","initial","onChange","EVENT","mq","onSystem","onMove","r","toggle","next","run","doc","still","ease","INK","a","init_ThemeToggle","withTilt","rx","SPRING","ry","onPointerMove","px","py","MAX","onPointerLeave","withTiltRise","Tilted","own","phase","setPhase","io","filter","e","FOCUS","withTiltLightbox","src","setSrc","onClick","img","onKey","prev","overlay","BACKDROP","ICON","init_TiltCard","fonts","css","init_DctTRX9Mi"],"sources":["https:/framerusercontent.com/modules/z2sO0OfgnL2gI60XIn5z/prVKbdEy9h11wVkVBOrZ/SweepButton.js","https:/framerusercontent.com/modules/AVwGa4rHKneaQsQ4FKsz/WItjScJnzdvkKJUZiVra/mL3JxK_TY.js","https:/framerusercontent.com/modules/zbpZujMYRl0cCw1I76VU/X7KaQ2IGgc0KuorSki0u/LocalTime.js","https:/framerusercontent.com/modules/yJOv8mP1M16NeGHrfdm8/QTlZeFI1FmcGz8PVbKCp/ThemeToggle.js","https:/framerusercontent.com/modules/bJwKziZ902M5dee11tsO/sTvWZc6mSc8dy8e32tR3/TiltCard.js","https:/framerusercontent.com/modules/kSqP6SaM9ZiHXOpPE7HC/PdyhFHltIFZgnH9HlSHA/DctTRX9Mi.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef}from\"react\";// Hover \"rotolo\". Stesso blocco in SweepButton, EmailCopy, RoundLink, ThemeToggle e LocalTime\n// (i code file di Framer non possono importarsi a vicenda): se cambi qui, cambia anche lì.\n// Il riempimento sale dal basso con il bordo curvo; le lettere salgono una alla volta e dal basso\n// arriva la loro copia nel colore invertito (è il text-shadow), come i titoli di TextRise.tsx.\n// Le lettere nuove salgono insieme al riempimento: mai testo scuro su fondo scuro.\n// Le icone fanno lo stesso con una seconda copia, già nel colore invertito, sotto la prima.\n// roll-plain (i link di testo): niente riempimento, la copia ha lo stesso colore del link.\nconst ROLL_ID=\"roll-style-v2\";const ROLL_FILL=\"var(--token-87fce4c7-d8e4-43aa-9aa4-c43ac8633a01, #474338)\";const ROLL_INV=\"var(--token-23690a27-b284-46fa-9c43-c5d4822475d9, #fff)\";const ROLL_IN=\"cubic-bezier(.16,1,.3,1)\";const ROLL_OUT=\"cubic-bezier(.4,0,.2,1)\";const ROLL_RISE=\"cubic-bezier(.6,0,.2,1)\";const ROLL_H=\"1.25em\";function ensureRollStyle(){if(typeof document===\"undefined\"||document.getElementById(ROLL_ID))return;const s=document.createElement(\"style\");s.id=ROLL_ID;const fill=st=>\".roll\"+st+\"::before{top:-60%;border-radius:40%;transition:top .8s \"+ROLL_RISE+\",border-radius .8s \"+ROLL_RISE+\"}\";const up=st=>\".roll\"+st+\" .roll-c{translate:0 -\"+ROLL_H+\";transition:translate .6s \"+ROLL_IN+\" var(--di,140ms)}\"+\".roll\"+st+\" .roll-i>*{translate:0 -100%;transition:translate .6s \"+ROLL_IN+\" 160ms}\";s.textContent=\".roll{isolation:isolate;overflow:hidden;transition:scale .2s \"+ROLL_OUT+\"}\"+\".roll:active{scale:.97}\"+\".roll::before{content:'';position:absolute;left:-25%;width:150%;height:220%;top:100%;border-radius:50%;background:\"+ROLL_FILL+\";\"+\"transition:top .45s \"+ROLL_OUT+\",border-radius .45s \"+ROLL_OUT+\";z-index:-1;pointer-events:none}\"+\".roll-l{display:inline-flex;overflow:clip;height:\"+ROLL_H+\";line-height:\"+ROLL_H+\"}\"+\".roll-c{display:inline-block;white-space:pre;text-shadow:0 \"+ROLL_H+\" 0 \"+ROLL_INV+\";transition:translate .35s \"+ROLL_OUT+\" var(--do,0ms)}\"+// La copia invertita sta appena sotto l'icona, fuori dalla maschera: il contenitore resta alto quanto l'icona.\n\".roll-i{position:relative;display:inline-flex;overflow:clip;flex:none}\"+\".roll-i>*{display:flex;transition:translate .35s \"+ROLL_OUT+\"}\"+\".roll-i>.roll-inv{position:absolute;left:0;top:100%;width:100%;justify-content:center}\"+\".roll-inv{color:\"+ROLL_INV+\"}.roll-inv [stroke]:not([stroke=none]):not([stroke=currentColor]){stroke:\"+ROLL_INV+\" !important}\"+\".roll-plain{overflow:visible}.roll-plain::before{content:none}.roll-plain .roll-c{text-shadow:0 \"+ROLL_H+\" 0 currentColor}.roll-plain .roll-inv{color:inherit}\"+\"@media (hover:hover){\"+fill(\":hover\")+up(\":hover\")+\"}\"+fill(\":focus-visible\")+up(\":focus-visible\")+fill(\".roll-hold\")+up(\".roll-hold\")+// Dopo il clic sul tema la view transition toglie :hover: roll-hold tiene il bottone pieno, senza rifare il giro.\n\".roll.roll-hold::before,.roll.roll-hold .roll-c,.roll.roll-hold .roll-i>*{transition:none}\"+\"@media (prefers-reduced-motion:reduce){.roll,.roll::before,.roll *{transition-duration:0s !important;transition-delay:0s !important}}\";document.head.appendChild(s);}// Una riga dura al massimo mezzo secondo: le etichette lunghe (la mail) hanno lettere più fitte.\nfunction rollDelays(i,total){const n=Math.max(1,total);return{di:Math.round(140+i*Math.min(22,500/n))+\"ms\",dout:Math.round(i*Math.min(8,200/n))+\"ms\"};}// Per i bottoni disegnati in Framer (override): divide nel DOM le etichette già renderizzate.\nfunction splitRoll(root){if(root.dataset.roll)return;root.dataset.roll=\"1\";const walker=document.createTreeWalker(root,NodeFilter.SHOW_TEXT,{acceptNode:n=>n.parentElement?.closest(\"svg\")||!n.textContent?.trim()?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT});const texts=[];while(walker.nextNode())texts.push(walker.currentNode);const label=texts.map(t=>t.textContent).join(\"\").trim();const target=root.closest(\"a,button\")??root;if(label&&!target.getAttribute(\"aria-label\"))target.setAttribute(\"aria-label\",label);const total=label.replace(/\\s/g,\"\").length;let i=0;texts.forEach(t=>{const line=document.createElement(\"span\");line.className=\"roll-l\";line.setAttribute(\"aria-hidden\",\"true\");for(const ch of Array.from(t.textContent??\"\")){const c=document.createElement(\"span\");c.className=\"roll-c\";c.textContent=ch;const d=rollDelays(/\\s/.test(ch)?i:i++,total);c.style.setProperty(\"--di\",d.di);c.style.setProperty(\"--do\",d.dout);line.appendChild(c);}t.replaceWith(line);});}// Bottoni disegnati in Framer (Nav Button, Project Button): hover \"rotolo\" (blocco qui sopra).\n// Il riempimento sale dal basso e le lettere dell'etichetta salgono una alla volta, già invertite.\n// (Il nome del file resta SweepButton: l'override è collegato ai componenti con questo nome.)\nexport function withSweep(Component){return /*#__PURE__*/forwardRef(function Sweep(props,ref){const node=useRef(null);const setRef=useCallback(el=>{node.current=el;if(typeof ref===\"function\")ref(el);else if(ref)ref.current=el;},[ref]);useEffect(()=>{ensureRollStyle();if(node.current)splitRoll(node.current);},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:setRef,className:[props.className,\"roll\"].filter(Boolean).join(\" \")});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withSweep\":{\"type\":\"reactHoc\",\"name\":\"withSweep\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SweepButton.map","// Generated by Framer (b4b3e20)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,Link,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCodeBoundaryForOverrides,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{withSweep}from\"https://framerusercontent.com/modules/z2sO0OfgnL2gI60XIn5z/prVKbdEy9h11wVkVBOrZ/SweepButton.js\";const MotionAWithSweepff51fc=withCodeBoundaryForOverrides(motion.a,{nodeId:\"vh_Cbnjqh\",override:withSweep,scopeId:\"mL3JxK_TY\"});const cycleOrder=[\"vh_Cbnjqh\",\"JJsY7G3Xe\"];const serializationHash=\"framer-rDMcg\";const variantClassNames={JJsY7G3Xe:\"framer-v-1fp2km\",vh_Cbnjqh:\"framer-v-ff51fc\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const gvccJA6LL=undefined;const jT5Yh7uHO=undefined;const transition1={delay:0,duration:1.3,ease:[.5,0,.15,1],type:\"tween\"};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 humanReadableVariantMap={Default:\"vh_Cbnjqh\",Selected:\"JJsY7G3Xe\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,label,link,width,...props})=>{return{...props,gvccJA6LL:link??props.gvccJA6LL,jT5Yh7uHO:label??props.jT5Yh7uHO??\"About\",variant:humanReadableVariantMap[props.variant]??props.variant??\"vh_Cbnjqh\"};};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,jT5Yh7uHO,gvccJA6LL,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"vh_Cbnjqh\",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:gvccJA6LL,motionChild:true,nodeId:\"vh_Cbnjqh\",scopeId:\"mL3JxK_TY\",children:/*#__PURE__*/_jsxs(MotionAWithSweepff51fc,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-ff51fc\",className,classNames)} framer-17tg1if`,\"data-border\":true,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"vh_Cbnjqh\",ref:refBinding,style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-1960ee1d-51e3-4fcc-b6ae-27f3aaadf4f8)\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",backgroundColor:\"var(--token-9f55bf52-c772-43cf-a5fe-2cff4feb418e)\",borderBottomLeftRadius:180,borderBottomRightRadius:180,borderTopLeftRadius:180,borderTopRightRadius:180,...style},variants:{JJsY7G3Xe:{\"--border-color\":\"var(--token-87fce4c7-d8e4-43aa-9aa4-c43ac8633a01)\"}},...addPropertyOverrides({JJsY7G3Xe:{\"data-framer-name\":\"Selected\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1gjqhs7\",\"data-framer-name\":\"Fill\",layoutDependency:layoutDependency,layoutId:\"hEBGx92Ma\",style:{backgroundColor:\"var(--token-87fce4c7-d8e4-43aa-9aa4-c43ac8633a01)\",skewX:15}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7SW5zdHJ1bWVudCBTYW5zLXJlZ3VsYXI=\",\"--framer-font-family\":'\"Instrument Sans\", \"Instrument Sans Placeholder\", sans-serif',\"--framer-line-height\":\"115%\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-206aeda9-4415-4dbc-a636-10ac9ec2ead8))\"},children:\"About\"})}),className:\"framer-zxpktu\",\"data-framer-name\":\"Label\",fonts:[\"GF;Instrument Sans-regular\"],layoutDependency:layoutDependency,layoutId:\"LWBajzjul\",style:{\"--extracted-r6o4lv\":\"var(--token-206aeda9-4415-4dbc-a636-10ac9ec2ead8)\"},text:jT5Yh7uHO,variants:{JJsY7G3Xe:{\"--extracted-r6o4lv\":\"var(--token-23690a27-b284-46fa-9c43-c5d4822475d9)\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({JJsY7G3Xe:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7SW5zdHJ1bWVudCBTYW5zLXJlZ3VsYXI=\",\"--framer-font-family\":'\"Instrument Sans\", \"Instrument Sans Placeholder\", sans-serif',\"--framer-line-height\":\"115%\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-23690a27-b284-46fa-9c43-c5d4822475d9))\"},children:\"About\"})})}},baseVariant,gestureVariant)})]})})})})});});const css=[\".framer-rDMcg.framer-17tg1if, .framer-rDMcg .framer-17tg1if { display: block; }\",\".framer-rDMcg.framer-ff51fc { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 72px; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 24px; position: relative; text-decoration: none; width: min-content; will-change: var(--framer-will-change-override, transform); }\",\".framer-rDMcg .framer-1gjqhs7 { flex: none; height: 100%; left: -30px; position: absolute; top: 0px; width: 0%; }\",\".framer-rDMcg .framer-zxpktu { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-rDMcg.framer-v-1fp2km .framer-1gjqhs7 { width: 140%; }\",'.framer-rDMcg[data-border=\"true\"]::after, .framer-rDMcg [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 72\n * @framerIntrinsicWidth 93\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"fixed\"]},\"JJsY7G3Xe\":{\"layout\":[\"auto\",\"fixed\"]}}}\n * @framerVariables {\"jT5Yh7uHO\":\"label\",\"gvccJA6LL\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramermL3JxK_TY=withCSS(Component,css,\"framer-rDMcg\");export default FramermL3JxK_TY;FramermL3JxK_TY.displayName=\"Nav Button\";FramermL3JxK_TY.defaultProps={height:72,width:93};addPropertyControls(FramermL3JxK_TY,{variant:{options:[\"vh_Cbnjqh\",\"JJsY7G3Xe\"],optionTitles:[\"Default\",\"Selected\"],title:\"Variant\",type:ControlType.Enum},jT5Yh7uHO:{defaultValue:\"About\",title:\"Label\",type:ControlType.String},onjT5Yh7uHOChange:{changes:\"jT5Yh7uHO\",type:ControlType.ChangeHandler},gvccJA6LL:{title:\"Link\",type:ControlType.Link}});addFonts(FramermL3JxK_TY,[{explicitInter:true,fonts:[{cssFamilyName:\"Instrument Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"Instrument Sans\",url:\"https://fonts.gstatic.com/s/instrumentsans/v4/pximypc9vsFDm051Uf6KVwgkfoSxQ0GsQv8ToedPibnr-yp2JGEJOH9npSTF-QfwmS0v3_7Y.woff2\",weight:\"400\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramermL3JxK_TY\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"93\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"JJsY7G3Xe\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"72\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerVariables\":\"{\\\"jT5Yh7uHO\\\":\\\"label\\\",\\\"gvccJA6LL\\\":\\\"link\\\"}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// Hover \"rotolo\". Stesso blocco in SweepButton, EmailCopy, RoundLink, ThemeToggle e LocalTime\n// (i code file di Framer non possono importarsi a vicenda): se cambi qui, cambia anche lì.\n// Il riempimento sale dal basso con il bordo curvo; le lettere salgono una alla volta e dal basso\n// arriva la loro copia nel colore invertito (è il text-shadow), come i titoli di TextRise.tsx.\n// Le lettere nuove salgono insieme al riempimento: mai testo scuro su fondo scuro.\n// Le icone fanno lo stesso con una seconda copia, già nel colore invertito, sotto la prima.\n// roll-plain (i link di testo): niente riempimento, la copia ha lo stesso colore del link.\nconst ROLL_ID=\"roll-style-v2\";const ROLL_FILL=\"var(--token-87fce4c7-d8e4-43aa-9aa4-c43ac8633a01, #474338)\";const ROLL_INV=\"var(--token-23690a27-b284-46fa-9c43-c5d4822475d9, #fff)\";const ROLL_IN=\"cubic-bezier(.16,1,.3,1)\";const ROLL_OUT=\"cubic-bezier(.4,0,.2,1)\";const ROLL_RISE=\"cubic-bezier(.6,0,.2,1)\";const ROLL_H=\"1.25em\";function ensureRollStyle(){if(typeof document===\"undefined\"||document.getElementById(ROLL_ID))return;const s=document.createElement(\"style\");s.id=ROLL_ID;const fill=st=>\".roll\"+st+\"::before{top:-60%;border-radius:40%;transition:top .8s \"+ROLL_RISE+\",border-radius .8s \"+ROLL_RISE+\"}\";const up=st=>\".roll\"+st+\" .roll-c{translate:0 -\"+ROLL_H+\";transition:translate .6s \"+ROLL_IN+\" var(--di,140ms)}\"+\".roll\"+st+\" .roll-i>*{translate:0 -100%;transition:translate .6s \"+ROLL_IN+\" 160ms}\";s.textContent=\".roll{isolation:isolate;overflow:hidden;transition:scale .2s \"+ROLL_OUT+\"}\"+\".roll:active{scale:.97}\"+\".roll::before{content:'';position:absolute;left:-25%;width:150%;height:220%;top:100%;border-radius:50%;background:\"+ROLL_FILL+\";\"+\"transition:top .45s \"+ROLL_OUT+\",border-radius .45s \"+ROLL_OUT+\";z-index:-1;pointer-events:none}\"+\".roll-l{display:inline-flex;overflow:clip;height:\"+ROLL_H+\";line-height:\"+ROLL_H+\"}\"+\".roll-c{display:inline-block;white-space:pre;text-shadow:0 \"+ROLL_H+\" 0 \"+ROLL_INV+\";transition:translate .35s \"+ROLL_OUT+\" var(--do,0ms)}\"+// La copia invertita sta appena sotto l'icona, fuori dalla maschera: il contenitore resta alto quanto l'icona.\n\".roll-i{position:relative;display:inline-flex;overflow:clip;flex:none}\"+\".roll-i>*{display:flex;transition:translate .35s \"+ROLL_OUT+\"}\"+\".roll-i>.roll-inv{position:absolute;left:0;top:100%;width:100%;justify-content:center}\"+\".roll-inv{color:\"+ROLL_INV+\"}.roll-inv [stroke]:not([stroke=none]):not([stroke=currentColor]){stroke:\"+ROLL_INV+\" !important}\"+\".roll-plain{overflow:visible}.roll-plain::before{content:none}.roll-plain .roll-c{text-shadow:0 \"+ROLL_H+\" 0 currentColor}.roll-plain .roll-inv{color:inherit}\"+\"@media (hover:hover){\"+fill(\":hover\")+up(\":hover\")+\"}\"+fill(\":focus-visible\")+up(\":focus-visible\")+fill(\".roll-hold\")+up(\".roll-hold\")+// Dopo il clic sul tema la view transition toglie :hover: roll-hold tiene il bottone pieno, senza rifare il giro.\n\".roll.roll-hold::before,.roll.roll-hold .roll-c,.roll.roll-hold .roll-i>*{transition:none}\"+\"@media (prefers-reduced-motion:reduce){.roll,.roll::before,.roll *{transition-duration:0s !important;transition-delay:0s !important}}\";document.head.appendChild(s);}// Una riga dura al massimo mezzo secondo: le etichette lunghe (la mail) hanno lettere più fitte.\nfunction rollDelays(i,total){const n=Math.max(1,total);return{di:Math.round(140+i*Math.min(22,500/n))+\"ms\",dout:Math.round(i*Math.min(8,200/n))+\"ms\"};}const ROLL_SR={position:\"absolute\",width:1,height:1,overflow:\"hidden\",clip:\"rect(0 0 0 0)\",clipPath:\"inset(50%)\",whiteSpace:\"nowrap\"};// Etichetta per i code component: lettere visibili ma nascoste agli screen reader, testo vero fuori vista.\nfunction RollText({text,start=0,total}){const chars=Array.from(text);const n=total??chars.length;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{className:\"roll-l\",\"aria-hidden\":\"true\",children:chars.map((c,i)=>{const d=rollDelays(start+i,n);return /*#__PURE__*/_jsx(\"span\",{className:\"roll-c\",style:{\"--di\":d.di,\"--do\":d.dout},children:c},i);})}),/*#__PURE__*/_jsx(\"span\",{style:ROLL_SR,children:text})]});}function RollIcon({children}){return /*#__PURE__*/_jsxs(\"span\",{className:\"roll-i\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"span\",{children:children}),/*#__PURE__*/_jsx(\"span\",{className:\"roll-inv\",children:children})]});}// Etichetta \"● MILANO, IT · 19:42\": dove sono e che ora è lì, aggiornata dal vivo.\n// Non è un bottone: niente contorno. Maiuscole normali, peso 400, come i link del footer e i bottoni della nav.\nconst INK_SOFT=\"var(--token-3ed0aec8-d7c4-4c14-9544-7afc4971e67f, #474338)\";const DOT=\"var(--token-0f225d8c-1e06-406e-8271-910b8041bf25, #8C877B)\";const STYLE_ID=\"local-time-style-v3\";function ensureStyle(){if(typeof document===\"undefined\"||document.getElementById(STYLE_ID))return;const s=document.createElement(\"style\");s.id=STYLE_ID;s.textContent=\"@keyframes lt-pulse{0%{transform:scale(1);opacity:.55}70%{transform:scale(2.6);opacity:0}100%{transform:scale(2.6);opacity:0}}\"+\"@media (prefers-reduced-motion: reduce){.lt-ring{animation:none!important;opacity:0!important}}\"+// Link: hover \"rotolo\" senza riempimento (roll-plain), lettere e freccia girano nel colore pieno del testo.\n\".lt-link{pointer-events:auto;color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:6px;position:relative;transition:color .25s cubic-bezier(.44,0,.56,1)}\"+\"@media (hover:hover){.lt-link:hover{color:\"+INK+\"}}\"+\".lt-link:focus-visible{color:\"+INK+\"}\";document.head.appendChild(s);}function timeIn(zone){return new Intl.DateTimeFormat(\"it-IT\",{hour:\"2-digit\",minute:\"2-digit\",hour12:false,timeZone:zone}).format(new Date);}const LINKS=[{label:\"LinkedIn\",href:\"https://www.linkedin.com/in/alessandroroasio/\"},{label:\"Medium\",href:\"https://medium.com/@alessandroroasio\"}];const INK=\"var(--token-206aeda9-4415-4dbc-a636-10ac9ec2ead8, #474338)\";/**\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 20\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function LocalTime(props){const{city=\"Milan, IT\",timeZone=\"Europe/Rome\",showTime=true,showLinks=true}=props;const isStatic=useIsStaticRenderer();const[time,setTime]=useState(null);useEffect(()=>{ensureStyle();ensureRollStyle();if(isStatic||!showTime)return;const tick=()=>startTransition(()=>setTime(timeIn(timeZone)));tick();const id=window.setInterval(tick,15e3);return()=>window.clearInterval(id);},[isStatic,showTime,timeZone]);return /*#__PURE__*/_jsxs(\"div\",{style:{...props.style,position:\"relative\",display:\"flex\",alignItems:\"center\",gap:10,minWidth:\"max-content\",fontFamily:'\"Instrument Sans\", sans-serif',fontWeight:400,fontSize:16,lineHeight:\"115%\",letterSpacing:\"0em\",color:INK_SOFT,whiteSpace:\"nowrap\"},children:[/*#__PURE__*/_jsxs(\"span\",{\"aria-hidden\":\"true\",style:{position:\"relative\",width:7,height:7,flex:\"none\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",inset:0,borderRadius:\"50%\",background:DOT}}),!isStatic&&/*#__PURE__*/_jsx(\"span\",{className:\"lt-ring\",style:{position:\"absolute\",inset:0,borderRadius:\"50%\",background:DOT,animation:\"lt-pulse 2.8s cubic-bezier(.16,1,.3,1) infinite\"}})]}),/*#__PURE__*/_jsx(\"span\",{children:city}),showTime&&/*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-flex\",gap:10,opacity:time?1:0,transition:\"opacity .6s ease\",fontVariantNumeric:\"tabular-nums\"},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",children:\"\\xb7\"}),/*#__PURE__*/_jsx(\"time\",{children:time??\"00:00\"})]}),showLinks&&/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-flex\",gap:22,marginLeft:18},children:LINKS.map(l=>/*#__PURE__*/_jsxs(\"a\",{className:\"lt-link roll roll-plain\",href:l.href,target:\"_blank\",rel:\"noopener\",children:[/*#__PURE__*/_jsx(RollText,{text:l.label}),/*#__PURE__*/_jsx(RollIcon,{children:/*#__PURE__*/_jsx(\"svg\",{width:\"11\",height:\"11\",viewBox:\"0 0 20 20\",fill:\"none\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M6 14 14 6m0 0H7.5M14 6v6.5\",stroke:\"currentColor\",strokeWidth:\"1.8\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})})})]},l.label))})]});}addPropertyControls(LocalTime,{city:{type:ControlType.String,title:\"City\",defaultValue:\"Milan, IT\"},timeZone:{type:ControlType.String,title:\"Time zone\",defaultValue:\"Europe/Rome\"},showTime:{type:ControlType.Boolean,title:\"Time\",defaultValue:true},showLinks:{type:ControlType.Boolean,title:\"Links\",defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LocalTime\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"200\",\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicHeight\":\"20\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./LocalTime.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useRef,useState,startTransition}from\"react\";import{addPropertyControls,useIsStaticRenderer}from\"framer\";// Hover \"rotolo\". Stesso blocco in SweepButton, EmailCopy, RoundLink, ThemeToggle e LocalTime\n// (i code file di Framer non possono importarsi a vicenda): se cambi qui, cambia anche lì.\n// Il riempimento sale dal basso con il bordo curvo; le lettere salgono una alla volta e dal basso\n// arriva la loro copia nel colore invertito (è il text-shadow), come i titoli di TextRise.tsx.\n// Le lettere nuove salgono insieme al riempimento: mai testo scuro su fondo scuro.\n// Le icone fanno lo stesso con una seconda copia, già nel colore invertito, sotto la prima.\n// roll-plain (i link di testo): niente riempimento, la copia ha lo stesso colore del link.\nconst ROLL_ID=\"roll-style-v2\";const ROLL_FILL=\"var(--token-87fce4c7-d8e4-43aa-9aa4-c43ac8633a01, #474338)\";const ROLL_INV=\"var(--token-23690a27-b284-46fa-9c43-c5d4822475d9, #fff)\";const ROLL_IN=\"cubic-bezier(.16,1,.3,1)\";const ROLL_OUT=\"cubic-bezier(.4,0,.2,1)\";const ROLL_RISE=\"cubic-bezier(.6,0,.2,1)\";const ROLL_H=\"1.25em\";function ensureRollStyle(){if(typeof document===\"undefined\"||document.getElementById(ROLL_ID))return;const s=document.createElement(\"style\");s.id=ROLL_ID;const fill=st=>\".roll\"+st+\"::before{top:-60%;border-radius:40%;transition:top .8s \"+ROLL_RISE+\",border-radius .8s \"+ROLL_RISE+\"}\";const up=st=>\".roll\"+st+\" .roll-c{translate:0 -\"+ROLL_H+\";transition:translate .6s \"+ROLL_IN+\" var(--di,140ms)}\"+\".roll\"+st+\" .roll-i>*{translate:0 -100%;transition:translate .6s \"+ROLL_IN+\" 160ms}\";s.textContent=\".roll{isolation:isolate;overflow:hidden;transition:scale .2s \"+ROLL_OUT+\"}\"+\".roll:active{scale:.97}\"+\".roll::before{content:'';position:absolute;left:-25%;width:150%;height:220%;top:100%;border-radius:50%;background:\"+ROLL_FILL+\";\"+\"transition:top .45s \"+ROLL_OUT+\",border-radius .45s \"+ROLL_OUT+\";z-index:-1;pointer-events:none}\"+\".roll-l{display:inline-flex;overflow:clip;height:\"+ROLL_H+\";line-height:\"+ROLL_H+\"}\"+\".roll-c{display:inline-block;white-space:pre;text-shadow:0 \"+ROLL_H+\" 0 \"+ROLL_INV+\";transition:translate .35s \"+ROLL_OUT+\" var(--do,0ms)}\"+// La copia invertita sta appena sotto l'icona, fuori dalla maschera: il contenitore resta alto quanto l'icona.\n\".roll-i{position:relative;display:inline-flex;overflow:clip;flex:none}\"+\".roll-i>*{display:flex;transition:translate .35s \"+ROLL_OUT+\"}\"+\".roll-i>.roll-inv{position:absolute;left:0;top:100%;width:100%;justify-content:center}\"+\".roll-inv{color:\"+ROLL_INV+\"}.roll-inv [stroke]:not([stroke=none]):not([stroke=currentColor]){stroke:\"+ROLL_INV+\" !important}\"+\".roll-plain{overflow:visible}.roll-plain::before{content:none}.roll-plain .roll-c{text-shadow:0 \"+ROLL_H+\" 0 currentColor}.roll-plain .roll-inv{color:inherit}\"+\"@media (hover:hover){\"+fill(\":hover\")+up(\":hover\")+\"}\"+fill(\":focus-visible\")+up(\":focus-visible\")+fill(\".roll-hold\")+up(\".roll-hold\")+// Dopo il clic sul tema la view transition toglie :hover: roll-hold tiene il bottone pieno, senza rifare il giro.\n\".roll.roll-hold::before,.roll.roll-hold .roll-c,.roll.roll-hold .roll-i>*{transition:none}\"+\"@media (prefers-reduced-motion:reduce){.roll,.roll::before,.roll *{transition-duration:0s !important;transition-delay:0s !important}}\";document.head.appendChild(s);}// Una riga dura al massimo mezzo secondo: le etichette lunghe (la mail) hanno lettere più fitte.\nfunction rollDelays(i,total){const n=Math.max(1,total);return{di:Math.round(140+i*Math.min(22,500/n))+\"ms\",dout:Math.round(i*Math.min(8,200/n))+\"ms\"};}const ROLL_SR={position:\"absolute\",width:1,height:1,overflow:\"hidden\",clip:\"rect(0 0 0 0)\",clipPath:\"inset(50%)\",whiteSpace:\"nowrap\"};// Etichetta per i code component: lettere visibili ma nascoste agli screen reader, testo vero fuori vista.\nfunction RollText({text,start=0,total}){const chars=Array.from(text);const n=total??chars.length;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{className:\"roll-l\",\"aria-hidden\":\"true\",children:chars.map((c,i)=>{const d=rollDelays(start+i,n);return /*#__PURE__*/_jsx(\"span\",{className:\"roll-c\",style:{\"--di\":d.di,\"--do\":d.dout},children:c},i);})}),/*#__PURE__*/_jsx(\"span\",{style:ROLL_SR,children:text})]});}function RollIcon({children}){return /*#__PURE__*/_jsxs(\"span\",{className:\"roll-i\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"span\",{children:children}),/*#__PURE__*/_jsx(\"span\",{className:\"roll-inv\",children:children})]});}// Stesso hover \"rotolo\" dei bottoni della nav (blocco qui sopra): il riempimento sale e l'icona gira, già invertita.\n// La maschera della falce resta bianca e nera: si inverte solo il colore dell'icona (currentColor).\nconst INK=\"var(--token-206aeda9-4415-4dbc-a636-10ac9ec2ead8, #474338)\";const KEY=\"theme\";const EVENT=\"themechange\";function tokenSets(){const light={};const dark={};const read=(rule,into)=>{for(let i=0;i<rule.style.length;i++){const name=rule.style[i];if(name.startsWith(\"--token-\"))into[name]=rule.style.getPropertyValue(name).trim();}};for(const sheet of Array.from(document.styleSheets)){let rules;try{rules=sheet.cssRules;}catch{continue;}for(const rule of Array.from(rules)){if(rule instanceof CSSStyleRule&&rule.selectorText===\"body\")read(rule,light);if(rule instanceof CSSMediaRule&&rule.conditionText.includes(\"prefers-color-scheme: dark\")){for(const inner of Array.from(rule.cssRules)){if(inner instanceof CSSStyleRule&&inner.selectorText===\"body\")read(inner,dark);}}}}return{light,dark};}function systemTheme(){return matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\";}function savedTheme(){try{const v=localStorage.getItem(KEY);return v===\"light\"||v===\"dark\"?v:null;}catch{return null;}}function applyTheme(theme){const sets=tokenSets();const values=theme===\"dark\"?{...sets.light,...sets.dark}:sets.light;for(const[name,value]of Object.entries(values))document.body.style.setProperty(name,value);document.documentElement.style.colorScheme=theme;document.documentElement.dataset.theme=theme;}/**\n * @framerIntrinsicWidth 72\n * @framerIntrinsicHeight 72\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function ThemeToggle(props){const isStatic=useIsStaticRenderer();const[theme,setTheme]=useState(\"light\");const[hold,setHold]=useState(false);const btnRef=useRef(null);useEffect(()=>ensureRollStyle(),[]);useEffect(()=>{if(isStatic||typeof window===\"undefined\")return;const initial=savedTheme()??systemTheme();startTransition(()=>setTheme(initial));if(savedTheme())applyTheme(initial);const onChange=e=>startTransition(()=>setTheme(e.detail));window.addEventListener(EVENT,onChange);const mq=matchMedia(\"(prefers-color-scheme: dark)\");const onSystem=()=>{if(!savedTheme())startTransition(()=>setTheme(systemTheme()));};mq.addEventListener(\"change\",onSystem);return()=>{window.removeEventListener(EVENT,onChange);mq.removeEventListener(\"change\",onSystem);};},[isStatic]);// Il puntatore esce davvero solo quando le sue coordinate lasciano il bottone:\n// durante la view transition l'elemento sotto il cursore è la pagina, non il bottone.\nuseEffect(()=>{if(!hold)return;const onMove=e=>{const r=btnRef.current?.getBoundingClientRect();if(!r||e.clientX<r.left||e.clientX>r.right||e.clientY<r.top||e.clientY>r.bottom)setHold(false);};document.addEventListener(\"pointermove\",onMove);return()=>document.removeEventListener(\"pointermove\",onMove);},[hold]);function toggle(){if(btnRef.current?.matches(\":hover\"))setHold(true);const next=theme===\"dark\"?\"light\":\"dark\";const run=()=>{applyTheme(next);try{localStorage.setItem(KEY,next);}catch{}window.dispatchEvent(new CustomEvent(EVENT,{detail:next}));};const doc=document;const still=matchMedia(\"(prefers-reduced-motion: reduce)\").matches;if(doc.startViewTransition&&!still)doc.startViewTransition(run);else run();startTransition(()=>setTheme(next));}const dark=theme===\"dark\";const ease=\"cubic-bezier(.16,1,.3,1)\";const surface=\"var(--token-9f55bf52-c772-43cf-a5fe-2cff4feb418e, transparent)\";return /*#__PURE__*/_jsx(\"button\",{type:\"button\",ref:btnRef,onClick:isStatic?undefined:toggle,className:hold?\"roll roll-hold\":\"roll\",\"aria-label\":dark?\"Switch to light mode\":\"Switch to dark mode\",\"aria-pressed\":dark,style:{...props.style,position:\"relative\",width:\"100%\",height:\"100%\",padding:0,borderRadius:180,border:\"1px solid var(--token-1960ee1d-51e3-4fcc-b6ae-27f3aaadf4f8, rgba(71,67,56,.25))\",background:surface,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:\"pointer\",WebkitTapHighlightColor:\"transparent\"},children:/*#__PURE__*/_jsx(\"span\",{className:\"tt-ink\",style:{display:\"flex\",color:INK},children:/*#__PURE__*/_jsx(RollIcon,{children:/*#__PURE__*/_jsxs(\"svg\",{width:\"22\",height:\"22\",viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",style:{overflow:\"visible\",transform:`rotate(${dark?40:0}deg)`,transition:`transform .8s ${ease}`},children:[/*#__PURE__*/_jsxs(\"mask\",{id:\"theme-toggle-moon\",children:[/*#__PURE__*/_jsx(\"rect\",{x:\"-4\",y:\"-4\",width:\"32\",height:\"32\",fill:\"white\"}),/*#__PURE__*/_jsx(\"circle\",{cx:dark?16.5:30,cy:dark?7.5:-6,r:\"7\",fill:\"black\",style:{transition:`cx .8s ${ease}, cy .8s ${ease}`}})]}),/*#__PURE__*/_jsx(\"circle\",{cx:\"12\",cy:\"12\",r:dark?9:5,fill:\"currentColor\",mask:\"url(#theme-toggle-moon)\",style:{transition:`r .8s ${ease}`}}),/*#__PURE__*/_jsx(\"g\",{stroke:\"currentColor\",strokeWidth:\"1.6\",strokeLinecap:\"round\",style:{transformOrigin:\"12px 12px\",transform:`scale(${dark?.4:1}) rotate(${dark?-45:0}deg)`,opacity:dark?0:1,transition:`transform .8s ${ease}, opacity .5s ${ease}`},children:[0,45,90,135,180,225,270,315].map(a=>/*#__PURE__*/_jsx(\"line\",{x1:\"12\",y1:\"2\",x2:\"12\",y2:\"4.2\",transform:`rotate(${a} 12 12)`},a))})]})})})});}addPropertyControls(ThemeToggle,{});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ThemeToggle\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"72\",\"framerIntrinsicWidth\":\"72\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ThemeToggle.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{forwardRef,useCallback,useEffect,useRef,useState}from\"react\";import{createPortal}from\"react-dom\";import{AnimatePresence,motion,useMotionValue,useSpring}from\"framer-motion\";// La card si piega appena verso il cursore (max 0,8°, quasi impercettibile) e torna piatta con una molla morbida.\n// Solo con mouse: su touch non fa nulla.\nconst MAX=.8;const SPRING={stiffness:60,damping:20,mass:1};export function withTilt(Component){return /*#__PURE__*/forwardRef(function Tilt(props,ref){const node=useRef(null);const rx=useSpring(useMotionValue(0),SPRING);const ry=useSpring(useMotionValue(0),SPRING);const setRef=useCallback(el=>{node.current=el;if(typeof ref===\"function\")ref(el);else if(ref)ref.current=el;},[ref]);const onPointerMove=useCallback(e=>{props.onPointerMove?.(e);if(e.pointerType!==\"mouse\"||!node.current)return;const r=node.current.getBoundingClientRect();const px=(e.clientX-r.left)/r.width-.5;const py=(e.clientY-r.top)/r.height-.5;ry.set(px*MAX*2);rx.set(-py*MAX*2);},[props.onPointerMove]);const onPointerLeave=useCallback(e=>{props.onPointerLeave?.(e);rx.set(0);ry.set(0);},[props.onPointerLeave]);return /*#__PURE__*/_jsx(Component,{...props,ref:setRef,onPointerMove:onPointerMove,onPointerLeave:onPointerLeave,style:{...props.style,rotateX:rx,rotateY:ry,transformPerspective:1400}});});}// Card progetto in home: stesso tilt, e quando entra in vista arriva sfocata e si mette a fuoco\n// (come nel video motion del sito). Finita l'entrata il filtro si toglie, così lo scroll resta leggero.\nconst FOCUS=\"filter 1.1s cubic-bezier(.16,1,.3,1)\";export function withTiltRise(Component){const Tilted=withTilt(Component);return /*#__PURE__*/forwardRef(function TiltRise(props,ref){const own=useRef(null);const[phase,setPhase]=useState(\"wait\");const setRef=useCallback(el=>{own.current=el;if(typeof ref===\"function\")ref(el);else if(ref)ref.current=el;},[ref]);useEffect(()=>{const el=own.current;if(!el||window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return setPhase(\"done\");const io=new IntersectionObserver(([e])=>{if(!e.isIntersecting)return;setPhase(\"in\");io.disconnect();},{threshold:.15});io.observe(el);return()=>io.disconnect();},[]);const filter=phase===\"wait\"?\"blur(14px)\":phase===\"in\"?\"blur(0px)\":undefined;return /*#__PURE__*/_jsx(Tilted,{...props,ref:setRef,onTransitionEnd:e=>{if(e.propertyName===\"filter\"&&e.target===own.current)setPhase(\"done\");props.onTransitionEnd?.(e);},style:{...props.style,filter,transition:phase===\"done\"?props.style?.transition:FOCUS}});});}// Immagini dei progetti: stesso tilt + al clic si aprono a schermo intero.\n// Si chiudono con clic, Esc o la X. Colori dai token del sito.\nconst BACKDROP=\"color-mix(in srgb, var(--token-87fce4c7-d8e4-43aa-9aa4-c43ac8633a01) 92%, transparent)\";const ICON=\"var(--token-23690a27-b284-46fa-9c43-c5d4822475d9)\";export function withTiltLightbox(Component){const Tilted=withTilt(Component);return /*#__PURE__*/forwardRef(function TiltLightbox(props,ref){const own=useRef(null);const[src,setSrc]=useState(null);const setRef=useCallback(el=>{own.current=el;if(typeof ref===\"function\")ref(el);else if(ref)ref.current=el;},[ref]);const onClick=useCallback(e=>{props.onClick?.(e);const img=own.current?.querySelector(\"img\");if(img)setSrc(img.currentSrc||img.src);},[props.onClick]);useEffect(()=>{if(!src)return;const onKey=e=>e.key===\"Escape\"&&setSrc(null);window.addEventListener(\"keydown\",onKey);const prev=document.body.style.overflow;document.body.style.overflow=\"hidden\";return()=>{window.removeEventListener(\"keydown\",onKey);document.body.style.overflow=prev;};},[src]);const overlay=typeof document!==\"undefined\"?/*#__PURE__*/createPortal(/*#__PURE__*/_jsx(AnimatePresence,{children:src&&/*#__PURE__*/_jsxs(motion.div,{role:\"dialog\",\"aria-modal\":\"true\",onClick:()=>setSrc(null),initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.35,ease:[.22,1,.36,1]},style:{position:\"fixed\",inset:0,zIndex:1e3,background:BACKDROP,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",padding:\"4vmin\",cursor:\"zoom-out\"},children:[/*#__PURE__*/_jsx(motion.img,{src:src,alt:\"\",initial:{scale:.96,opacity:0},animate:{scale:1,opacity:1},exit:{scale:.98,opacity:0},transition:{duration:.45,ease:[.22,1,.36,1]},style:{maxWidth:\"100%\",maxHeight:\"100%\",objectFit:\"contain\",borderRadius:16}}),/*#__PURE__*/_jsx(\"button\",{\"aria-label\":\"Chiudi\",onClick:()=>setSrc(null),style:{position:\"absolute\",top:20,right:20,width:44,height:44,borderRadius:22,border:\"1px solid \"+ICON,background:\"transparent\",color:ICON,fontSize:20,cursor:\"pointer\"},children:\"\\xd7\"})]},\"lightbox\")}),document.body):null;return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(Tilted,{...props,ref:setRef,onClick:onClick,style:{...props.style,cursor:\"zoom-in\"}}),overlay]});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withTiltLightbox\":{\"type\":\"reactHoc\",\"name\":\"withTiltLightbox\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTilt\":{\"type\":\"reactHoc\",\"name\":\"withTilt\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withTiltRise\":{\"type\":\"reactHoc\",\"name\":\"withTiltRise\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TiltCard.map","// Generated by Framer (a56d1fd)\nimport{fontStore}from\"framer\";fontStore.loadFonts([]);export const fonts=[{explicitInter:true,fonts:[]}];export const css=[\".framer-7eiay .framer-styles-preset-nxwu5t:not(.rich-text-wrapper), .framer-7eiay .framer-styles-preset-nxwu5t.rich-text-wrapper a { --framer-link-hover-text-color: var(--token-206aeda9-4415-4dbc-a636-10ac9ec2ead8); --framer-link-hover-text-decoration: none; --framer-link-text-color: var(--token-3ed0aec8-d7c4-4c14-9544-7afc4971e67f); --framer-link-text-decoration: none; transition-delay: 0s; transition-duration: 0.25s; transition-property: color; transition-timing-function: cubic-bezier(0.44, 0, 0.56, 1); }\"];export const className=\"framer-7eiay\";\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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"}