Files
ragusaitweb/build/assets/index-DpUrPOvK.js
2026-01-21 23:05:42 +01:00

4 lines
112 KiB
JavaScript

import{r as a,j as l,C as jn,u as Pt,F as Ln,M as Rn,R as G,c as kn}from"./three-A7r-9XvZ.js";import{g as Tn,s as St,i as Ct,a as Qe,b as jt,c as In,d as Mn,e as Nn,f as Dn,r as An,h as $n,j as Lt,k as Vn,l as On,m as Fn,o as zn,S as Wn,H as Bn,F,n as Hn,p as Rt,q as be,t as Un,u as Ze,v as A,w as kt,x as Gn,y as Kn,z as qn,A as we,B as $e,C as et,D as Yn,E as Jn,G as D,I as Xn,J as Qn,K as Zn,L as tt,M as er,N as tr,O as nr,P as rr,Q as pe,R as or,T as ir,U as Tt,V as sr,W as ar}from"./motion-BIOHP8Ul.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const s of i.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&r(s)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();var nt="popstate";function lr(e={}){function t(r,o){let{pathname:i,search:s,hash:c}=r.location;return Ve("",{pathname:i,search:s,hash:c},o.state&&o.state.usr||null,o.state&&o.state.key||"default")}function n(r,o){return typeof o=="string"?o:ie(o)}return ur(t,n,null,e)}function E(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function N(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function cr(){return Math.random().toString(36).substring(2,10)}function rt(e,t){return{usr:e.state,key:e.key,idx:t}}function Ve(e,t,n=null,r){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?X(t):t,state:n,key:t&&t.key||r||cr()}}function ie({pathname:e="/",search:t="",hash:n=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function X(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function ur(e,t,n,r={}){let{window:o=document.defaultView,v5Compat:i=!1}=r,s=o.history,c="POP",u=null,m=h();m==null&&(m=0,s.replaceState({...s.state,idx:m},""));function h(){return(s.state||{idx:null}).idx}function d(){c="POP";let x=h(),b=x==null?null:x-m;m=x,u&&u({action:c,location:y.location,delta:b})}function f(x,b){c="PUSH";let v=Ve(y.location,x,b);m=h()+1;let w=rt(v,m),j=y.createHref(v);try{s.pushState(w,"",j)}catch(R){if(R instanceof DOMException&&R.name==="DataCloneError")throw R;o.location.assign(j)}i&&u&&u({action:c,location:y.location,delta:1})}function p(x,b){c="REPLACE";let v=Ve(y.location,x,b);m=h();let w=rt(v,m),j=y.createHref(v);s.replaceState(w,"",j),i&&u&&u({action:c,location:y.location,delta:0})}function g(x){return dr(x)}let y={get action(){return c},get location(){return e(o,s)},listen(x){if(u)throw new Error("A history only accepts one active listener");return o.addEventListener(nt,d),u=x,()=>{o.removeEventListener(nt,d),u=null}},createHref(x){return t(o,x)},createURL:g,encodeLocation(x){let b=g(x);return{pathname:b.pathname,search:b.search,hash:b.hash}},push:f,replace:p,go(x){return s.go(x)}};return y}function dr(e,t=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),E(n,"No window.location.(origin|href) available to create URL");let r=typeof e=="string"?e:ie(e);return r=r.replace(/ $/,"%20"),!t&&r.startsWith("//")&&(r=n+r),new URL(r,n)}function It(e,t,n="/"){return hr(e,t,n,!1)}function hr(e,t,n,r){let o=typeof t=="string"?X(t):t,i=V(o.pathname||"/",n);if(i==null)return null;let s=Mt(e);mr(s);let c=null;for(let u=0;c==null&&u<s.length;++u){let m=Pr(i);c=_r(s[u],m,r)}return c}function Mt(e,t=[],n=[],r="",o=!1){let i=(s,c,u=o,m)=>{let h={relativePath:m===void 0?s.path||"":m,caseSensitive:s.caseSensitive===!0,childrenIndex:c,route:s};if(h.relativePath.startsWith("/")){if(!h.relativePath.startsWith(r)&&u)return;E(h.relativePath.startsWith(r),`Absolute route path "${h.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),h.relativePath=h.relativePath.slice(r.length)}let d=$([r,h.relativePath]),f=n.concat(h);s.children&&s.children.length>0&&(E(s.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${d}".`),Mt(s.children,t,f,d,u)),!(s.path==null&&!s.index)&&t.push({path:d,score:br(d,s.index),routesMeta:f})};return e.forEach((s,c)=>{if(s.path===""||!s.path?.includes("?"))i(s,c);else for(let u of Nt(s.path))i(s,c,!0,u)}),t}function Nt(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,o=n.endsWith("?"),i=n.replace(/\?$/,"");if(r.length===0)return o?[i,""]:[i];let s=Nt(r.join("/")),c=[];return c.push(...s.map(u=>u===""?i:[i,u].join("/"))),o&&c.push(...s),c.map(u=>e.startsWith("/")&&u===""?"/":u)}function mr(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:wr(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var fr=/^:[\w-]+$/,pr=3,gr=2,vr=1,yr=10,xr=-2,ot=e=>e==="*";function br(e,t){let n=e.split("/"),r=n.length;return n.some(ot)&&(r+=xr),t&&(r+=gr),n.filter(o=>!ot(o)).reduce((o,i)=>o+(fr.test(i)?pr:i===""?vr:yr),r)}function wr(e,t){return e.length===t.length&&e.slice(0,-1).every((r,o)=>r===t[o])?e[e.length-1]-t[t.length-1]:0}function _r(e,t,n=!1){let{routesMeta:r}=e,o={},i="/",s=[];for(let c=0;c<r.length;++c){let u=r[c],m=c===r.length-1,h=i==="/"?t:t.slice(i.length)||"/",d=_e({path:u.relativePath,caseSensitive:u.caseSensitive,end:m},h),f=u.route;if(!d&&m&&n&&!r[r.length-1].route.index&&(d=_e({path:u.relativePath,caseSensitive:u.caseSensitive,end:!1},h)),!d)return null;Object.assign(o,d.params),s.push({params:o,pathname:$([i,d.pathname]),pathnameBase:Lr($([i,d.pathnameBase])),route:f}),d.pathnameBase!=="/"&&(i=$([i,d.pathnameBase]))}return s}function _e(e,t){typeof e=="string"&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Er(e.path,e.caseSensitive,e.end),o=t.match(n);if(!o)return null;let i=o[0],s=i.replace(/(.)\/+$/,"$1"),c=o.slice(1);return{params:r.reduce((m,{paramName:h,isOptional:d},f)=>{if(h==="*"){let g=c[f]||"";s=i.slice(0,i.length-g.length).replace(/(.)\/+$/,"$1")}const p=c[f];return d&&!p?m[h]=void 0:m[h]=(p||"").replace(/%2F/g,"/"),m},{}),pathname:i,pathnameBase:s,pattern:e}}function Er(e,t=!1,n=!0){N(e==="*"||!e.endsWith("*")||e.endsWith("/*"),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,"/*")}".`);let r=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,c,u)=>(r.push({paramName:c,isOptional:u!=null}),u?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(r.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),r]}function Pr(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return N(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function V(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}var Dt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Sr=e=>Dt.test(e);function Cr(e,t="/"){let{pathname:n,search:r="",hash:o=""}=typeof e=="string"?X(e):e,i;if(n)if(Sr(n))i=n;else{if(n.includes("//")){let s=n;n=n.replace(/\/\/+/g,"/"),N(!1,`Pathnames cannot have embedded double slashes - normalizing ${s} -> ${n}`)}n.startsWith("/")?i=it(n.substring(1),"/"):i=it(n,t)}else i=t;return{pathname:i,search:Rr(r),hash:kr(o)}}function it(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?n.length>1&&n.pop():o!=="."&&n.push(o)}),n.length>1?n.join("/"):"/"}function Re(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function jr(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function At(e){let t=jr(e);return t.map((n,r)=>r===t.length-1?n.pathname:n.pathnameBase)}function $t(e,t,n,r=!1){let o;typeof e=="string"?o=X(e):(o={...e},E(!o.pathname||!o.pathname.includes("?"),Re("?","pathname","search",o)),E(!o.pathname||!o.pathname.includes("#"),Re("#","pathname","hash",o)),E(!o.search||!o.search.includes("#"),Re("#","search","hash",o)));let i=e===""||o.pathname==="",s=i?"/":o.pathname,c;if(s==null)c=n;else{let d=t.length-1;if(!r&&s.startsWith("..")){let f=s.split("/");for(;f[0]==="..";)f.shift(),d-=1;o.pathname=f.join("/")}c=d>=0?t[d]:"/"}let u=Cr(o,c),m=s&&s!=="/"&&s.endsWith("/"),h=(i||s===".")&&n.endsWith("/");return!u.pathname.endsWith("/")&&(m||h)&&(u.pathname+="/"),u}var $=e=>e.join("/").replace(/\/\/+/g,"/"),Lr=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),Rr=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,kr=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,Tr=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Ir(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}function Mr(e){return e.map(t=>t.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var Vt=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Ot(e,t){let n=e;if(typeof n!="string"||!Dt.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,o=!1;if(Vt)try{let i=new URL(window.location.href),s=n.startsWith("//")?new URL(i.protocol+n):new URL(n),c=V(s.pathname,t);s.origin===i.origin&&c!=null?n=c+s.search+s.hash:o=!0}catch{N(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:o,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Ft=["POST","PUT","PATCH","DELETE"];new Set(Ft);var Nr=["GET",...Ft];new Set(Nr);var Q=a.createContext(null);Q.displayName="DataRouter";var Ce=a.createContext(null);Ce.displayName="DataRouterState";var Dr=a.createContext(!1),zt=a.createContext({isTransitioning:!1});zt.displayName="ViewTransition";var Ar=a.createContext(new Map);Ar.displayName="Fetchers";var $r=a.createContext(null);$r.displayName="Await";var I=a.createContext(null);I.displayName="Navigation";var ae=a.createContext(null);ae.displayName="Location";var O=a.createContext({outlet:null,matches:[],isDataRoute:!1});O.displayName="Route";var Be=a.createContext(null);Be.displayName="RouteError";var Wt="REACT_ROUTER_ERROR",Vr="REDIRECT",Or="ROUTE_ERROR_RESPONSE";function Fr(e){if(e.startsWith(`${Wt}:${Vr}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.location=="string"&&typeof t.reloadDocument=="boolean"&&typeof t.replace=="boolean")return t}catch{}}function zr(e){if(e.startsWith(`${Wt}:${Or}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t=="object"&&t&&typeof t.status=="number"&&typeof t.statusText=="string")return new Tr(t.status,t.statusText,t.data)}catch{}}function Wr(e,{relative:t}={}){E(le(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:r}=a.useContext(I),{hash:o,pathname:i,search:s}=ce(e,{relative:t}),c=i;return n!=="/"&&(c=i==="/"?n:$([n,i])),r.createHref({pathname:c,search:s,hash:o})}function le(){return a.useContext(ae)!=null}function z(){return E(le(),"useLocation() may be used only in the context of a <Router> component."),a.useContext(ae).location}var Bt="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Ht(e){a.useContext(I).static||a.useLayoutEffect(e)}function Br(){let{isDataRoute:e}=a.useContext(O);return e?no():Hr()}function Hr(){E(le(),"useNavigate() may be used only in the context of a <Router> component.");let e=a.useContext(Q),{basename:t,navigator:n}=a.useContext(I),{matches:r}=a.useContext(O),{pathname:o}=z(),i=JSON.stringify(At(r)),s=a.useRef(!1);return Ht(()=>{s.current=!0}),a.useCallback((u,m={})=>{if(N(s.current,Bt),!s.current)return;if(typeof u=="number"){n.go(u);return}let h=$t(u,JSON.parse(i),o,m.relative==="path");e==null&&t!=="/"&&(h.pathname=h.pathname==="/"?t:$([t,h.pathname])),(m.replace?n.replace:n.push)(h,m.state,m)},[t,n,i,o,e])}a.createContext(null);function ce(e,{relative:t}={}){let{matches:n}=a.useContext(O),{pathname:r}=z(),o=JSON.stringify(At(n));return a.useMemo(()=>$t(e,JSON.parse(o),r,t==="path"),[e,o,r,t])}function Ur(e,t){return Ut(e,t)}function Ut(e,t,n,r,o){E(le(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:i}=a.useContext(I),{matches:s}=a.useContext(O),c=s[s.length-1],u=c?c.params:{},m=c?c.pathname:"/",h=c?c.pathnameBase:"/",d=c&&c.route;{let v=d&&d.path||"";Kt(m,!d||v.endsWith("*")||v.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${m}" (under <Route path="${v}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
Please change the parent <Route path="${v}"> to <Route path="${v==="/"?"*":`${v}/*`}">.`)}let f=z(),p;if(t){let v=typeof t=="string"?X(t):t;E(h==="/"||v.pathname?.startsWith(h),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${h}" but pathname "${v.pathname}" was given in the \`location\` prop.`),p=v}else p=f;let g=p.pathname||"/",y=g;if(h!=="/"){let v=h.replace(/^\//,"").split("/");y="/"+g.replace(/^\//,"").split("/").slice(v.length).join("/")}let x=It(e,{pathname:y});N(d||x!=null,`No routes matched location "${p.pathname}${p.search}${p.hash}" `),N(x==null||x[x.length-1].route.element!==void 0||x[x.length-1].route.Component!==void 0||x[x.length-1].route.lazy!==void 0,`Matched leaf route at location "${p.pathname}${p.search}${p.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let b=Jr(x&&x.map(v=>Object.assign({},v,{params:Object.assign({},u,v.params),pathname:$([h,i.encodeLocation?i.encodeLocation(v.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:v.pathname]),pathnameBase:v.pathnameBase==="/"?h:$([h,i.encodeLocation?i.encodeLocation(v.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:v.pathnameBase])})),s,n,r,o);return t&&b?a.createElement(ae.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...p},navigationType:"POP"}},b):b}function Gr(){let e=to(),t=Ir(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:r},i={padding:"2px 4px",backgroundColor:r},s=null;return console.error("Error handled by React Router default ErrorBoundary:",e),s=a.createElement(a.Fragment,null,a.createElement("p",null,"💿 Hey developer 👋"),a.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",a.createElement("code",{style:i},"ErrorBoundary")," or"," ",a.createElement("code",{style:i},"errorElement")," prop on your route.")),a.createElement(a.Fragment,null,a.createElement("h2",null,"Unexpected Application Error!"),a.createElement("h3",{style:{fontStyle:"italic"}},t),n?a.createElement("pre",{style:o},n):null,s)}var Kr=a.createElement(Gr,null),Gt=class extends a.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error("React Router caught the following error during render",e)}render(){let e=this.state.error;if(this.context&&typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){const n=zr(e.digest);n&&(e=n)}let t=e!==void 0?a.createElement(O.Provider,{value:this.props.routeContext},a.createElement(Be.Provider,{value:e,children:this.props.component})):this.props.children;return this.context?a.createElement(qr,{error:e},t):t}};Gt.contextType=Dr;var ke=new WeakMap;function qr({children:e,error:t}){let{basename:n}=a.useContext(I);if(typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){let r=Fr(t.digest);if(r){let o=ke.get(t);if(o)throw o;let i=Ot(r.location,n);if(Vt&&!ke.get(t))if(i.isExternal||r.reloadDocument)window.location.href=i.absoluteURL||i.to;else{const s=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:r.replace}));throw ke.set(t,s),s}return a.createElement("meta",{httpEquiv:"refresh",content:`0;url=${i.absoluteURL||i.to}`})}}return e}function Yr({routeContext:e,match:t,children:n}){let r=a.useContext(Q);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),a.createElement(O.Provider,{value:e},n)}function Jr(e,t=[],n=null,r=null,o=null){if(e==null){if(!n)return null;if(n.errors)e=n.matches;else if(t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let i=e,s=n?.errors;if(s!=null){let h=i.findIndex(d=>d.route.id&&s?.[d.route.id]!==void 0);E(h>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),i=i.slice(0,Math.min(i.length,h+1))}let c=!1,u=-1;if(n)for(let h=0;h<i.length;h++){let d=i[h];if((d.route.HydrateFallback||d.route.hydrateFallbackElement)&&(u=h),d.route.id){let{loaderData:f,errors:p}=n,g=d.route.loader&&!f.hasOwnProperty(d.route.id)&&(!p||p[d.route.id]===void 0);if(d.route.lazy||g){c=!0,u>=0?i=i.slice(0,u+1):i=[i[0]];break}}}let m=n&&r?(h,d)=>{r(h,{location:n.location,params:n.matches?.[0]?.params??{},unstable_pattern:Mr(n.matches),errorInfo:d})}:void 0;return i.reduceRight((h,d,f)=>{let p,g=!1,y=null,x=null;n&&(p=s&&d.route.id?s[d.route.id]:void 0,y=d.route.errorElement||Kr,c&&(u<0&&f===0?(Kt("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),g=!0,x=null):u===f&&(g=!0,x=d.route.hydrateFallbackElement||null)));let b=t.concat(i.slice(0,f+1)),v=()=>{let w;return p?w=y:g?w=x:d.route.Component?w=a.createElement(d.route.Component,null):d.route.element?w=d.route.element:w=h,a.createElement(Yr,{match:d,routeContext:{outlet:h,matches:b,isDataRoute:n!=null},children:w})};return n&&(d.route.ErrorBoundary||d.route.errorElement||f===0)?a.createElement(Gt,{location:n.location,revalidation:n.revalidation,component:y,error:p,children:v(),routeContext:{outlet:null,matches:b,isDataRoute:!0},onError:m}):v()},null)}function He(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Xr(e){let t=a.useContext(Q);return E(t,He(e)),t}function Qr(e){let t=a.useContext(Ce);return E(t,He(e)),t}function Zr(e){let t=a.useContext(O);return E(t,He(e)),t}function Ue(e){let t=Zr(e),n=t.matches[t.matches.length-1];return E(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function eo(){return Ue("useRouteId")}function to(){let e=a.useContext(Be),t=Qr("useRouteError"),n=Ue("useRouteError");return e!==void 0?e:t.errors?.[n]}function no(){let{router:e}=Xr("useNavigate"),t=Ue("useNavigate"),n=a.useRef(!1);return Ht(()=>{n.current=!0}),a.useCallback(async(o,i={})=>{N(n.current,Bt),n.current&&(typeof o=="number"?await e.navigate(o):await e.navigate(o,{fromRouteId:t,...i}))},[e,t])}var st={};function Kt(e,t,n){!t&&!st[e]&&(st[e]=!0,N(!1,n))}a.memo(ro);function ro({routes:e,future:t,state:n,onError:r}){return Ut(e,void 0,n,r,t)}function ge(e){E(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function oo({basename:e="/",children:t=null,location:n,navigationType:r="POP",navigator:o,static:i=!1,unstable_useTransitions:s}){E(!le(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let c=e.replace(/^\/*/,"/"),u=a.useMemo(()=>({basename:c,navigator:o,static:i,unstable_useTransitions:s,future:{}}),[c,o,i,s]);typeof n=="string"&&(n=X(n));let{pathname:m="/",search:h="",hash:d="",state:f=null,key:p="default"}=n,g=a.useMemo(()=>{let y=V(m,c);return y==null?null:{location:{pathname:y,search:h,hash:d,state:f,key:p},navigationType:r}},[c,m,h,d,f,p,r]);return N(g!=null,`<Router basename="${c}"> is not able to match the URL "${m}${h}${d}" because it does not start with the basename, so the <Router> won't render anything.`),g==null?null:a.createElement(I.Provider,{value:u},a.createElement(ae.Provider,{children:t,value:g}))}function io({children:e,location:t}){return Ur(Oe(e),t)}function Oe(e,t=[]){let n=[];return a.Children.forEach(e,(r,o)=>{if(!a.isValidElement(r))return;let i=[...t,o];if(r.type===a.Fragment){n.push.apply(n,Oe(r.props.children,i));return}E(r.type===ge,`[${typeof r.type=="string"?r.type:r.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),E(!r.props.index||!r.props.children,"An index route cannot have child routes.");let s={id:r.props.id||i.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(s.children=Oe(r.props.children,i)),n.push(s)}),n}var ve="get",ye="application/x-www-form-urlencoded";function je(e){return typeof HTMLElement<"u"&&e instanceof HTMLElement}function so(e){return je(e)&&e.tagName.toLowerCase()==="button"}function ao(e){return je(e)&&e.tagName.toLowerCase()==="form"}function lo(e){return je(e)&&e.tagName.toLowerCase()==="input"}function co(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function uo(e,t){return e.button===0&&(!t||t==="_self")&&!co(e)}var he=null;function ho(){if(he===null)try{new FormData(document.createElement("form"),0),he=!1}catch{he=!0}return he}var mo=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Te(e){return e!=null&&!mo.has(e)?(N(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${ye}"`),null):e}function fo(e,t){let n,r,o,i,s;if(ao(e)){let c=e.getAttribute("action");r=c?V(c,t):null,n=e.getAttribute("method")||ve,o=Te(e.getAttribute("enctype"))||ye,i=new FormData(e)}else if(so(e)||lo(e)&&(e.type==="submit"||e.type==="image")){let c=e.form;if(c==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let u=e.getAttribute("formaction")||c.getAttribute("action");if(r=u?V(u,t):null,n=e.getAttribute("formmethod")||c.getAttribute("method")||ve,o=Te(e.getAttribute("formenctype"))||Te(c.getAttribute("enctype"))||ye,i=new FormData(c,e),!ho()){let{name:m,type:h,value:d}=e;if(h==="image"){let f=m?`${m}.`:"";i.append(`${f}x`,"0"),i.append(`${f}y`,"0")}else m&&i.append(m,d)}}else{if(je(e))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=ve,r=null,o=ye,s=e}return i&&o==="text/plain"&&(s=i,i=void 0),{action:r,method:n.toLowerCase(),encType:o,formData:i,body:s}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Ge(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function po(e,t,n,r){let o=typeof e=="string"?new URL(e,typeof window>"u"?"server://singlefetch/":window.location.origin):e;return n?o.pathname.endsWith("/")?o.pathname=`${o.pathname}_.${r}`:o.pathname=`${o.pathname}.${r}`:o.pathname==="/"?o.pathname=`_root.${r}`:t&&V(o.pathname,t)==="/"?o.pathname=`${t.replace(/\/$/,"")}/_root.${r}`:o.pathname=`${o.pathname.replace(/\/$/,"")}.${r}`,o}async function go(e,t){if(e.id in t)return t[e.id];try{let n=await import(e.module);return t[e.id]=n,n}catch(n){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function vo(e){return e==null?!1:e.href==null?e.rel==="preload"&&typeof e.imageSrcSet=="string"&&typeof e.imageSizes=="string":typeof e.rel=="string"&&typeof e.href=="string"}async function yo(e,t,n){let r=await Promise.all(e.map(async o=>{let i=t.routes[o.route.id];if(i){let s=await go(i,n);return s.links?s.links():[]}return[]}));return _o(r.flat(1).filter(vo).filter(o=>o.rel==="stylesheet"||o.rel==="preload").map(o=>o.rel==="stylesheet"?{...o,rel:"prefetch",as:"style"}:{...o,rel:"prefetch"}))}function at(e,t,n,r,o,i){let s=(u,m)=>n[m]?u.route.id!==n[m].route.id:!0,c=(u,m)=>n[m].pathname!==u.pathname||n[m].route.path?.endsWith("*")&&n[m].params["*"]!==u.params["*"];return i==="assets"?t.filter((u,m)=>s(u,m)||c(u,m)):i==="data"?t.filter((u,m)=>{let h=r.routes[u.route.id];if(!h||!h.hasLoader)return!1;if(s(u,m)||c(u,m))return!0;if(u.route.shouldRevalidate){let d=u.route.shouldRevalidate({currentUrl:new URL(o.pathname+o.search+o.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:u.params,defaultShouldRevalidate:!0});if(typeof d=="boolean")return d}return!0}):[]}function xo(e,t,{includeHydrateFallback:n}={}){return bo(e.map(r=>{let o=t.routes[r.route.id];if(!o)return[];let i=[o.module];return o.clientActionModule&&(i=i.concat(o.clientActionModule)),o.clientLoaderModule&&(i=i.concat(o.clientLoaderModule)),n&&o.hydrateFallbackModule&&(i=i.concat(o.hydrateFallbackModule)),o.imports&&(i=i.concat(o.imports)),i}).flat(1))}function bo(e){return[...new Set(e)]}function wo(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function _o(e,t){let n=new Set;return new Set(t),e.reduce((r,o)=>{let i=JSON.stringify(wo(o));return n.has(i)||(n.add(i),r.push({key:i,link:o})),r},[])}function qt(){let e=a.useContext(Q);return Ge(e,"You must render this element inside a <DataRouterContext.Provider> element"),e}function Eo(){let e=a.useContext(Ce);return Ge(e,"You must render this element inside a <DataRouterStateContext.Provider> element"),e}var Ke=a.createContext(void 0);Ke.displayName="FrameworkContext";function Yt(){let e=a.useContext(Ke);return Ge(e,"You must render this element inside a <HydratedRouter> element"),e}function Po(e,t){let n=a.useContext(Ke),[r,o]=a.useState(!1),[i,s]=a.useState(!1),{onFocus:c,onBlur:u,onMouseEnter:m,onMouseLeave:h,onTouchStart:d}=t,f=a.useRef(null);a.useEffect(()=>{if(e==="render"&&s(!0),e==="viewport"){let y=b=>{b.forEach(v=>{s(v.isIntersecting)})},x=new IntersectionObserver(y,{threshold:.5});return f.current&&x.observe(f.current),()=>{x.disconnect()}}},[e]),a.useEffect(()=>{if(r){let y=setTimeout(()=>{s(!0)},100);return()=>{clearTimeout(y)}}},[r]);let p=()=>{o(!0)},g=()=>{o(!1),s(!1)};return n?e!=="intent"?[i,f,{}]:[i,f,{onFocus:te(c,p),onBlur:te(u,g),onMouseEnter:te(m,p),onMouseLeave:te(h,g),onTouchStart:te(d,p)}]:[!1,f,{}]}function te(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function So({page:e,...t}){let{router:n}=qt(),r=a.useMemo(()=>It(n.routes,e,n.basename),[n.routes,e,n.basename]);return r?a.createElement(jo,{page:e,matches:r,...t}):null}function Co(e){let{manifest:t,routeModules:n}=Yt(),[r,o]=a.useState([]);return a.useEffect(()=>{let i=!1;return yo(e,t,n).then(s=>{i||o(s)}),()=>{i=!0}},[e,t,n]),r}function jo({page:e,matches:t,...n}){let r=z(),{future:o,manifest:i,routeModules:s}=Yt(),{basename:c}=qt(),{loaderData:u,matches:m}=Eo(),h=a.useMemo(()=>at(e,t,m,i,r,"data"),[e,t,m,i,r]),d=a.useMemo(()=>at(e,t,m,i,r,"assets"),[e,t,m,i,r]),f=a.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let y=new Set,x=!1;if(t.forEach(v=>{let w=i.routes[v.route.id];!w||!w.hasLoader||(!h.some(j=>j.route.id===v.route.id)&&v.route.id in u&&s[v.route.id]?.shouldRevalidate||w.hasClientLoader?x=!0:y.add(v.route.id))}),y.size===0)return[];let b=po(e,c,o.unstable_trailingSlashAwareDataRequests,"data");return x&&y.size>0&&b.searchParams.set("_routes",t.filter(v=>y.has(v.route.id)).map(v=>v.route.id).join(",")),[b.pathname+b.search]},[c,o.unstable_trailingSlashAwareDataRequests,u,r,i,h,t,e,s]),p=a.useMemo(()=>xo(d,i),[d,i]),g=Co(d);return a.createElement(a.Fragment,null,f.map(y=>a.createElement("link",{key:y,rel:"prefetch",as:"fetch",href:y,...n})),p.map(y=>a.createElement("link",{key:y,rel:"modulepreload",href:y,...n})),g.map(({key:y,link:x})=>a.createElement("link",{key:y,nonce:n.nonce,...x})))}function Lo(...e){return t=>{e.forEach(n=>{typeof n=="function"?n(t):n!=null&&(n.current=t)})}}var Ro=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{Ro&&(window.__reactRouterVersion="7.12.0")}catch{}function ko({basename:e,children:t,unstable_useTransitions:n,window:r}){let o=a.useRef();o.current==null&&(o.current=lr({window:r,v5Compat:!0}));let i=o.current,[s,c]=a.useState({action:i.action,location:i.location}),u=a.useCallback(m=>{n===!1?c(m):a.startTransition(()=>c(m))},[n]);return a.useLayoutEffect(()=>i.listen(u),[i,u]),a.createElement(oo,{basename:e,children:t,location:s.location,navigationType:s.action,navigator:i,unstable_useTransitions:n})}var Jt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,J=a.forwardRef(function({onClick:t,discover:n="render",prefetch:r="none",relative:o,reloadDocument:i,replace:s,state:c,target:u,to:m,preventScrollReset:h,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},g){let{basename:y,unstable_useTransitions:x}=a.useContext(I),b=typeof m=="string"&&Jt.test(m),v=Ot(m,y);m=v.to;let w=Wr(m,{relative:o}),[j,R,B]=Po(r,p),H=No(m,{replace:s,state:c,target:u,preventScrollReset:h,relative:o,viewTransition:d,unstable_defaultShouldRevalidate:f,unstable_useTransitions:x});function K(ee){t&&t(ee),ee.defaultPrevented||H(ee)}let q=a.createElement("a",{...p,...B,href:v.absoluteURL||w,onClick:v.isExternal||i?t:K,ref:Lo(g,R),target:u,"data-discover":!b&&n==="render"?"true":void 0});return j&&!b?a.createElement(a.Fragment,null,q,a.createElement(So,{page:w})):q});J.displayName="Link";var To=a.forwardRef(function({"aria-current":t="page",caseSensitive:n=!1,className:r="",end:o=!1,style:i,to:s,viewTransition:c,children:u,...m},h){let d=ce(s,{relative:m.relative}),f=z(),p=a.useContext(Ce),{navigator:g,basename:y}=a.useContext(I),x=p!=null&&Oo(d)&&c===!0,b=g.encodeLocation?g.encodeLocation(d).pathname:d.pathname,v=f.pathname,w=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;n||(v=v.toLowerCase(),w=w?w.toLowerCase():null,b=b.toLowerCase()),w&&y&&(w=V(w,y)||w);const j=b!=="/"&&b.endsWith("/")?b.length-1:b.length;let R=v===b||!o&&v.startsWith(b)&&v.charAt(j)==="/",B=w!=null&&(w===b||!o&&w.startsWith(b)&&w.charAt(b.length)==="/"),H={isActive:R,isPending:B,isTransitioning:x},K=R?t:void 0,q;typeof r=="function"?q=r(H):q=[r,R?"active":null,B?"pending":null,x?"transitioning":null].filter(Boolean).join(" ");let ee=typeof i=="function"?i(H):i;return a.createElement(J,{...m,"aria-current":K,className:q,ref:h,style:ee,to:s,viewTransition:c},typeof u=="function"?u(H):u)});To.displayName="NavLink";var Io=a.forwardRef(({discover:e="render",fetcherKey:t,navigate:n,reloadDocument:r,replace:o,state:i,method:s=ve,action:c,onSubmit:u,relative:m,preventScrollReset:h,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},g)=>{let{unstable_useTransitions:y}=a.useContext(I),x=$o(),b=Vo(c,{relative:m}),v=s.toLowerCase()==="get"?"get":"post",w=typeof c=="string"&&Jt.test(c),j=R=>{if(u&&u(R),R.defaultPrevented)return;R.preventDefault();let B=R.nativeEvent.submitter,H=B?.getAttribute("formmethod")||s,K=()=>x(B||R.currentTarget,{fetcherKey:t,method:H,navigate:n,replace:o,state:i,relative:m,preventScrollReset:h,viewTransition:d,unstable_defaultShouldRevalidate:f});y&&n!==!1?a.startTransition(()=>K()):K()};return a.createElement("form",{ref:g,method:v,action:b,onSubmit:r?u:j,...p,"data-discover":!w&&e==="render"?"true":void 0})});Io.displayName="Form";function Mo(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Xt(e){let t=a.useContext(Q);return E(t,Mo(e)),t}function No(e,{target:t,replace:n,state:r,preventScrollReset:o,relative:i,viewTransition:s,unstable_defaultShouldRevalidate:c,unstable_useTransitions:u}={}){let m=Br(),h=z(),d=ce(e,{relative:i});return a.useCallback(f=>{if(uo(f,t)){f.preventDefault();let p=n!==void 0?n:ie(h)===ie(d),g=()=>m(e,{replace:p,state:r,preventScrollReset:o,relative:i,viewTransition:s,unstable_defaultShouldRevalidate:c});u?a.startTransition(()=>g()):g()}},[h,m,d,n,r,t,e,o,i,s,c,u])}var Do=0,Ao=()=>`__${String(++Do)}__`;function $o(){let{router:e}=Xt("useSubmit"),{basename:t}=a.useContext(I),n=eo(),r=e.fetch,o=e.navigate;return a.useCallback(async(i,s={})=>{let{action:c,method:u,encType:m,formData:h,body:d}=fo(i,t);if(s.navigate===!1){let f=s.fetcherKey||Ao();await r(f,n,s.action||c,{unstable_defaultShouldRevalidate:s.unstable_defaultShouldRevalidate,preventScrollReset:s.preventScrollReset,formData:h,body:d,formMethod:s.method||u,formEncType:s.encType||m,flushSync:s.flushSync})}else await o(s.action||c,{unstable_defaultShouldRevalidate:s.unstable_defaultShouldRevalidate,preventScrollReset:s.preventScrollReset,formData:h,body:d,formMethod:s.method||u,formEncType:s.encType||m,replace:s.replace,state:s.state,fromRouteId:n,flushSync:s.flushSync,viewTransition:s.viewTransition})},[r,o,t,n])}function Vo(e,{relative:t}={}){let{basename:n}=a.useContext(I),r=a.useContext(O);E(r,"useFormAction must be used inside a RouteContext");let[o]=r.matches.slice(-1),i={...ce(e||".",{relative:t})},s=z();if(e==null){i.search=s.search;let c=new URLSearchParams(i.search),u=c.getAll("index");if(u.some(h=>h==="")){c.delete("index"),u.filter(d=>d).forEach(d=>c.append("index",d));let h=c.toString();i.search=h?`?${h}`:""}}return(!e||e===".")&&o.route.index&&(i.search=i.search?i.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(i.pathname=i.pathname==="/"?n:$([n,i.pathname])),ie(i)}function Oo(e,{relative:t}={}){let n=a.useContext(zt);E(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Xt("useViewTransitionState"),o=ce(e,{relative:t});if(!n.isTransitioning)return!1;let i=V(n.currentLocation.pathname,r)||n.currentLocation.pathname,s=V(n.nextLocation.pathname,r)||n.nextLocation.pathname;return _e(o.pathname,s)!=null||_e(o.pathname,i)!=null}const Fo={nav:{home:"Startseite",about:"Über uns",contact:"Kontakt"},hero:{greeting:"Willkommen bei",company:"Ragusa IT-Consulting",tagline:"Ihr Partner für",rotatingWords:["Webentwicklung","IT-Support","Digitale Lösungen","Tech-Beratung"],cta:"Projekt starten",ctaSecondary:"Mehr erfahren",scroll:"Scrollen"},services:{title:"Unsere Leistungen",subtitle:"Professionelle IT-Lösungen für Ihr Unternehmen",items:[{title:"Webentwicklung",description:"Moderne, responsive Websites und Web-Applikationen mit React, TypeScript und aktuellen Technologien.",icon:"code"},{title:"Tech-Support",description:"Schnelle und zuverlässige technische Unterstützung für Hardware und Software vor Ort.",icon:"support"},{title:"IT-Beratung",description:"Strategische Beratung für Ihre IT-Infrastruktur und digitale Transformation.",icon:"consulting"},{title:"Hosting & Wartung",description:"Zuverlässiges Webhosting, regelmäßige Updates und proaktive Wartung Ihrer Systeme.",icon:"hosting"}]},about:{title:"Über uns",subtitle:"Ihr lokaler IT-Partner",intro:"Ragusa IT-Consulting bietet professionelle IT-Dienstleistungen mit persönlichem Service. Wir kombinieren technische Expertise mit einem tiefen Verständnis für die Bedürfnisse unserer Kunden.",experience:"Mit jahrelanger Erfahrung in der Webentwicklung und IT-Beratung unterstützen wir Unternehmen und Privatpersonen dabei, ihre technischen Herausforderungen zu meistern.",skills:{title:"Technologien",subtitle:"Moderne Tools für moderne Lösungen"},values:{title:"Warum Ragusa IT?",items:[{title:"Persönlicher Service",description:"Direkter Ansprechpartner für alle Ihre IT-Anliegen."},{title:"Lokale Präsenz",description:"Vor-Ort-Support und persönliche Beratungsgespräche."},{title:"Faire Preise",description:"Transparente Preisgestaltung ohne versteckte Kosten."},{title:"Schnelle Reaktion",description:"Kurze Reaktionszeiten bei Anfragen und Problemen."}]}},contact:{title:"Kontakt",subtitle:"Lassen Sie uns zusammenarbeiten",intro:"Haben Sie ein Projekt im Sinn oder benötigen Sie technische Unterstützung? Ich freue mich auf Ihre Nachricht!",form:{name:"Name",namePlaceholder:"Ihr Name",email:"E-Mail",emailPlaceholder:"ihre@email.de",subject:"Betreff",subjectPlaceholder:"Worum geht es?",message:"Nachricht",messagePlaceholder:"Ihre Nachricht...",submit:"Nachricht senden",sending:"Wird gesendet...",success:"Nachricht erfolgreich gesendet! Ich melde mich bald bei Ihnen.",error:"Fehler beim Senden. Bitte versuchen Sie es erneut oder kontaktieren Sie mich direkt."},info:{title:"Kontaktdaten",email:"E-Mail",location:"Standort",github:"GitHub"}},footer:{copyright:"© {year} Ragusa IT-Consulting. Alle Rechte vorbehalten.",madeWith:"Entwickelt mit",and:"und"}},zo={nav:{home:"Home",about:"About",contact:"Contact"},hero:{greeting:"Welcome to",company:"Ragusa IT-Consulting",tagline:"Your partner for",rotatingWords:["Web Development","IT Support","Digital Solutions","Tech Consulting"],cta:"Start Project",ctaSecondary:"Learn More",scroll:"Scroll"},services:{title:"Our Services",subtitle:"Professional IT solutions for your business",items:[{title:"Web Development",description:"Modern, responsive websites and web applications built with React, TypeScript, and cutting-edge technologies.",icon:"code"},{title:"Tech Support",description:"Fast and reliable technical support for hardware and software, available on-site.",icon:"support"},{title:"IT Consulting",description:"Strategic consulting for your IT infrastructure and digital transformation.",icon:"consulting"},{title:"Hosting & Maintenance",description:"Reliable web hosting, regular updates, and proactive maintenance of your systems.",icon:"hosting"}]},about:{title:"About Us",subtitle:"Your local IT partner",intro:"Ragusa IT-Consulting provides professional IT services with a personal touch. We combine technical expertise with a deep understanding of our clients' needs.",experience:"With years of experience in web development and IT consulting, we help businesses and individuals overcome their technical challenges.",skills:{title:"Technologies",subtitle:"Modern tools for modern solutions"},values:{title:"Why Ragusa IT?",items:[{title:"Personal Service",description:"Direct point of contact for all your IT needs."},{title:"Local Presence",description:"On-site support and in-person consultations."},{title:"Fair Pricing",description:"Transparent pricing with no hidden costs."},{title:"Quick Response",description:"Short response times for inquiries and issues."}]}},contact:{title:"Contact",subtitle:"Let's work together",intro:"Have a project in mind or need technical support? I look forward to hearing from you!",form:{name:"Name",namePlaceholder:"Your name",email:"Email",emailPlaceholder:"your@email.com",subject:"Subject",subjectPlaceholder:"What is it about?",message:"Message",messagePlaceholder:"Your message...",submit:"Send Message",sending:"Sending...",success:"Message sent successfully! I'll get back to you soon.",error:"Error sending message. Please try again or contact me directly."},info:{title:"Contact Info",email:"Email",location:"Location",github:"GitHub"}},footer:{copyright:"© {year} Ragusa IT-Consulting. All rights reserved.",madeWith:"Built with",and:"and"}},Wo={de:Fo,en:zo},Qt=a.createContext(void 0),Zt="ragusa-it-lang";function Bo(){if(typeof window>"u")return"de";const e=localStorage.getItem(Zt);return e==="de"||e==="en"?e:navigator.language.split("-")[0]==="en"?"en":"de"}function Ho({children:e}){const[t,n]=a.useState("de"),[r,o]=a.useState(!1);a.useEffect(()=>{n(Bo()),o(!0)},[]);const i=c=>{n(c),localStorage.setItem(Zt,c),document.documentElement.lang=c};a.useEffect(()=>{r&&(document.documentElement.lang=t)},[t,r]);const s={language:t,setLanguage:i,t:Wo[t]};return l.jsx(Qt.Provider,{value:s,children:e})}function Z(){const e=a.useContext(Qt);if(!e)throw new Error("useTranslation must be used within a LanguageProvider");return e}const en=a.createContext({});function Uo(e){const t=a.useRef(null);return t.current===null&&(t.current=e()),t.current}const tn=typeof window<"u",Go=tn?a.useLayoutEffect:a.useEffect,qe=a.createContext(null),nn=a.createContext({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});function Ko(e=!0){const t=a.useContext(qe);if(t===null)return[!0,null];const{isPresent:n,onExitComplete:r,register:o}=t,i=a.useId();a.useEffect(()=>{if(e)return o(i)},[e]);const s=a.useCallback(()=>e&&r&&r(i),[i,r,e]);return!n&&r?[!1,s]:[!0]}const rn=a.createContext({strict:!1}),lt={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]};let ct=!1;function qo(){if(ct)return;const e={};for(const t in lt)e[t]={isEnabled:n=>lt[t].some(r=>!!n[r])};St(e),ct=!0}function on(){return qo(),Tn()}function Yo(e){const t=on();for(const n in e)t[n]={...t[n],...e[n]};St(t)}const Jo=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function Ee(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||Jo.has(e)}let sn=e=>!Ee(e);function Xo(e){typeof e=="function"&&(sn=t=>t.startsWith("on")?!Ee(t):e(t))}try{Xo(require("@emotion/is-prop-valid").default)}catch{}function Qo(e,t,n){const r={};for(const o in e)o==="values"&&typeof e.values=="object"||(sn(o)||n===!0&&Ee(o)||!t&&!Ee(o)||e.draggable&&o.startsWith("onDrag"))&&(r[o]=e[o]);return r}const Le=a.createContext({});function Zo(e,t){if(Ct(e)){const{initial:n,animate:r}=e;return{initial:n===!1||Qe(n)?n:void 0,animate:Qe(r)?r:void 0}}return e.inherit!==!1?t:{}}function ei(e){const{initial:t,animate:n}=Zo(e,a.useContext(Le));return a.useMemo(()=>({initial:t,animate:n}),[ut(t),ut(n)])}function ut(e){return Array.isArray(e)?e.join(" "):e}const Ye=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function an(e,t,n){for(const r in t)!jt(t[r])&&!In(r,n)&&(e[r]=t[r])}function ti({transformTemplate:e},t){return a.useMemo(()=>{const n=Ye();return Mn(n,t,e),Object.assign({},n.vars,n.style)},[t])}function ni(e,t){const n=e.style||{},r={};return an(r,n,e),Object.assign(r,ti(e,t)),r}function ri(e,t){const n={},r=ni(e,t);return e.drag&&e.dragListener!==!1&&(n.draggable=!1,r.userSelect=r.WebkitUserSelect=r.WebkitTouchCallout="none",r.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(n.tabIndex=0),n.style=r,n}const ln=()=>({...Ye(),attrs:{}});function oi(e,t,n,r){const o=a.useMemo(()=>{const i=ln();return Nn(i,t,Dn(r),e.transformTemplate,e.style),{...i.attrs,style:{...i.style}}},[t]);if(e.style){const i={};an(i,e.style,e),o.style={...i,...o.style}}return o}const ii=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Je(e){return typeof e!="string"||e.includes("-")?!1:!!(ii.indexOf(e)>-1||/[A-Z]/u.test(e))}function si(e,t,n,{latestValues:r},o,i=!1,s){const u=(s??Je(e)?oi:ri)(t,r,o,e),m=Qo(t,typeof e=="string",i),h=e!==a.Fragment?{...m,...u,ref:n}:{},{children:d}=t,f=a.useMemo(()=>jt(d)?d.get():d,[d]);return a.createElement(e,{...h,children:f})}function ai({scrapeMotionValuesFromProps:e,createRenderState:t},n,r,o){return{latestValues:li(n,r,o,e),renderState:t()}}function li(e,t,n,r){const o={},i=r(e,{});for(const f in i)o[f]=An(i[f]);let{initial:s,animate:c}=e;const u=Ct(e),m=$n(e);t&&m&&!u&&e.inherit!==!1&&(s===void 0&&(s=t.initial),c===void 0&&(c=t.animate));let h=n?n.initial===!1:!1;h=h||s===!1;const d=h?c:s;if(d&&typeof d!="boolean"&&!Lt(d)){const f=Array.isArray(d)?d:[d];for(let p=0;p<f.length;p++){const g=Vn(e,f[p]);if(g){const{transitionEnd:y,transition:x,...b}=g;for(const v in b){let w=b[v];if(Array.isArray(w)){const j=h?w.length-1:0;w=w[j]}w!==null&&(o[v]=w)}for(const v in y)o[v]=y[v]}}}return o}const cn=e=>(t,n)=>{const r=a.useContext(Le),o=a.useContext(qe),i=()=>ai(e,t,r,o);return n?i():Uo(i)},ci=cn({scrapeMotionValuesFromProps:On,createRenderState:Ye}),ui=cn({scrapeMotionValuesFromProps:Fn,createRenderState:ln}),di=Symbol.for("motionComponentSymbol");function hi(e,t,n){const r=a.useRef(n);a.useInsertionEffect(()=>{r.current=n});const o=a.useRef(null);return a.useCallback(i=>{i&&e.onMount?.(i),t&&(i?t.mount(i):t.unmount());const s=r.current;if(typeof s=="function")if(i){const c=s(i);typeof c=="function"&&(o.current=c)}else o.current?(o.current(),o.current=null):s(i);else s&&(s.current=i)},[t])}const un=a.createContext({});function re(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function mi(e,t,n,r,o,i){const{visualElement:s}=a.useContext(Le),c=a.useContext(rn),u=a.useContext(qe),m=a.useContext(nn).reducedMotion,h=a.useRef(null);r=r||c.renderer,!h.current&&r&&(h.current=r(e,{visualState:t,parent:s,props:n,presenceContext:u,blockInitialAnimation:u?u.initial===!1:!1,reducedMotionConfig:m,isSVG:i}));const d=h.current,f=a.useContext(un);d&&!d.projection&&o&&(d.type==="html"||d.type==="svg")&&fi(h.current,n,o,f);const p=a.useRef(!1);a.useInsertionEffect(()=>{d&&p.current&&d.update(n,u)});const g=n[zn],y=a.useRef(!!g&&!window.MotionHandoffIsComplete?.(g)&&window.MotionHasOptimisedAnimation?.(g));return Go(()=>{d&&(p.current=!0,window.MotionIsMounted=!0,d.updateFeatures(),d.scheduleRenderMicrotask(),y.current&&d.animationState&&d.animationState.animateChanges())}),a.useEffect(()=>{d&&(!y.current&&d.animationState&&d.animationState.animateChanges(),y.current&&(queueMicrotask(()=>{window.MotionHandoffMarkAsComplete?.(g)}),y.current=!1),d.enteringChildren=void 0)}),d}function fi(e,t,n,r){const{layoutId:o,layout:i,drag:s,dragConstraints:c,layoutScroll:u,layoutRoot:m,layoutCrossfade:h}=t;e.projection=new n(e.latestValues,t["data-framer-portal-id"]?void 0:dn(e.parent)),e.projection.setOptions({layoutId:o,layout:i,alwaysMeasureLayout:!!s||c&&re(c),visualElement:e,animationType:typeof i=="string"?i:"both",initialPromotionConfig:r,crossfade:h,layoutScroll:u,layoutRoot:m})}function dn(e){if(e)return e.options.allowProjection!==!1?e.projection:dn(e.parent)}function Ie(e,{forwardMotionProps:t=!1,type:n}={},r,o){r&&Yo(r);const i=n?n==="svg":Je(e),s=i?ui:ci;function c(m,h){let d;const f={...a.useContext(nn),...m,layoutId:pi(m)},{isStatic:p}=f,g=ei(m),y=s(m,p);if(!p&&tn){gi();const x=vi(f);d=x.MeasureLayout,g.visualElement=mi(e,y,f,o,x.ProjectionNode,i)}return l.jsxs(Le.Provider,{value:g,children:[d&&g.visualElement?l.jsx(d,{visualElement:g.visualElement,...f}):null,si(e,m,hi(y,g.visualElement,h),y,p,t,i)]})}c.displayName=`motion.${typeof e=="string"?e:`create(${e.displayName??e.name??""})`}`;const u=a.forwardRef(c);return u[di]=e,u}function pi({layoutId:e}){const t=a.useContext(en).id;return t&&e!==void 0?t+"-"+e:e}function gi(e,t){a.useContext(rn).strict}function vi(e){const t=on(),{drag:n,layout:r}=t;if(!n&&!r)return{};const o={...n,...r};return{MeasureLayout:n?.isEnabled(e)||r?.isEnabled(e)?o.MeasureLayout:void 0,ProjectionNode:o.ProjectionNode}}function yi(e,t){if(typeof Proxy>"u")return Ie;const n=new Map,r=(i,s)=>Ie(i,s,e,t),o=(i,s)=>r(i,s);return new Proxy(o,{get:(i,s)=>s==="create"?r:(n.has(s)||n.set(s,Ie(s,void 0,e,t)),n.get(s))})}const xi=(e,t)=>t.isSVG??Je(e)?new Wn(t):new Bn(t,{allowProjection:e!==a.Fragment});class bi extends F{constructor(t){super(t),t.animationState||(t.animationState=Hn(t))}updateAnimationControlsSubscription(){const{animate:t}=this.node.getProps();Lt(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:t}=this.node.getProps(),{animate:n}=this.node.prevProps||{};t!==n&&this.updateAnimationControlsSubscription()}unmount(){this.node.animationState.reset(),this.unmountControls?.()}}let wi=0;class _i extends F{constructor(){super(...arguments),this.id=wi++}update(){if(!this.node.presenceContext)return;const{isPresent:t,onExitComplete:n}=this.node.presenceContext,{isPresent:r}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===r)return;const o=this.node.animationState.setActive("exit",!t);n&&!t&&o.then(()=>{n(this.id)})}mount(){const{register:t,onExitComplete:n}=this.node.presenceContext||{};n&&n(this.id),t&&(this.unmount=t(this.id))}unmount(){}}const Ei={animation:{Feature:bi},exit:{Feature:_i}};function ue(e){return{point:{x:e.pageX,y:e.pageY}}}const Pi=e=>t=>Rt(t)&&e(t,ue(t));function oe(e,t,n,r){return be(e,t,Pi(n),r)}const hn=({current:e})=>e?e.ownerDocument.defaultView:null,dt=new Set(["auto","scroll"]);class mn{constructor(t,n,{transformPagePoint:r,contextWindow:o=window,dragSnapToOrigin:i=!1,distanceThreshold:s=3,element:c}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=p=>{this.handleScroll(p.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const p=Ne(this.lastMoveEventInfo,this.history),g=this.startEvent!==null,y=Un(p.offset,{x:0,y:0})>=this.distanceThreshold;if(!g&&!y)return;const{point:x}=p,{timestamp:b}=Ze;this.history.push({...x,timestamp:b});const{onStart:v,onMove:w}=this.handlers;g||(v&&v(this.lastMoveEvent,p),this.startEvent=this.lastMoveEvent),w&&w(this.lastMoveEvent,p)},this.handlePointerMove=(p,g)=>{this.lastMoveEvent=p,this.lastMoveEventInfo=Me(g,this.transformPagePoint),A.update(this.updatePoint,!0)},this.handlePointerUp=(p,g)=>{this.end();const{onEnd:y,onSessionEnd:x,resumeAnimation:b}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&b&&b(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const v=Ne(p.type==="pointercancel"?this.lastMoveEventInfo:Me(g,this.transformPagePoint),this.history);this.startEvent&&y&&y(p,v),x&&x(p,v)},!Rt(t))return;this.dragSnapToOrigin=i,this.handlers=n,this.transformPagePoint=r,this.distanceThreshold=s,this.contextWindow=o||window;const u=ue(t),m=Me(u,this.transformPagePoint),{point:h}=m,{timestamp:d}=Ze;this.history=[{...h,timestamp:d}];const{onSessionStart:f}=n;f&&f(t,Ne(m,this.history)),this.removeListeners=kt(oe(this.contextWindow,"pointermove",this.handlePointerMove),oe(this.contextWindow,"pointerup",this.handlePointerUp),oe(this.contextWindow,"pointercancel",this.handlePointerUp)),c&&this.startScrollTracking(c)}startScrollTracking(t){let n=t.parentElement;for(;n;){const r=getComputedStyle(n);(dt.has(r.overflowX)||dt.has(r.overflowY))&&this.scrollPositions.set(n,{x:n.scrollLeft,y:n.scrollTop}),n=n.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0,passive:!0}),window.addEventListener("scroll",this.onWindowScroll,{passive:!0}),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){const n=this.scrollPositions.get(t);if(!n)return;const r=t===window,o=r?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},i={x:o.x-n.x,y:o.y-n.y};i.x===0&&i.y===0||(r?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=i.x,this.lastMoveEventInfo.point.y+=i.y):this.history.length>0&&(this.history[0].x-=i.x,this.history[0].y-=i.y),this.scrollPositions.set(t,o),A.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),Gn(this.updatePoint)}}function Me(e,t){return t?{point:t(e.point)}:e}function ht(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Ne({point:e},t){return{point:e,delta:ht(e,fn(t)),offset:ht(e,Si(t)),velocity:Ci(t,.1)}}function Si(e){return e[0]}function fn(e){return e[e.length-1]}function Ci(e,t){if(e.length<2)return{x:0,y:0};let n=e.length-1,r=null;const o=fn(e);for(;n>=0&&(r=e[n],!(o.timestamp-r.timestamp>Kn(t)));)n--;if(!r)return{x:0,y:0};const i=qn(o.timestamp-r.timestamp);if(i===0)return{x:0,y:0};const s={x:(o.x-r.x)/i,y:(o.y-r.y)/i};return s.x===1/0&&(s.x=0),s.y===1/0&&(s.y=0),s}function ji(e,{min:t,max:n},r){return t!==void 0&&e<t?e=r?we(t,e,r.min):Math.max(e,t):n!==void 0&&e>n&&(e=r?we(n,e,r.max):Math.min(e,n)),e}function mt(e,t,n){return{min:t!==void 0?e.min+t:void 0,max:n!==void 0?e.max+n-(e.max-e.min):void 0}}function Li(e,{top:t,left:n,bottom:r,right:o}){return{x:mt(e.x,n,o),y:mt(e.y,t,r)}}function ft(e,t){let n=t.min-e.min,r=t.max-e.max;return t.max-t.min<e.max-e.min&&([n,r]=[r,n]),{min:n,max:r}}function Ri(e,t){return{x:ft(e.x,t.x),y:ft(e.y,t.y)}}function ki(e,t){let n=.5;const r=$e(e),o=$e(t);return o>r?n=et(t.min,t.max-r,e.min):r>o&&(n=et(e.min,e.max-o,t.min)),Yn(0,1,n)}function Ti(e,t){const n={};return t.min!==void 0&&(n.min=t.min-e.min),t.max!==void 0&&(n.max=t.max-e.min),n}const Fe=.35;function Ii(e=Fe){return e===!1?e=0:e===!0&&(e=Fe),{x:pt(e,"left","right"),y:pt(e,"top","bottom")}}function pt(e,t,n){return{min:gt(e,t),max:gt(e,n)}}function gt(e,t){return typeof e=="number"?e:e[t]||0}const Mi=new WeakMap;class Ni{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Jn(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:n=!1,distanceThreshold:r}={}){const{presenceContext:o}=this.visualElement;if(o&&o.isPresent===!1)return;const i=d=>{n?(this.stopAnimation(),this.snapToCursor(ue(d).point)):this.pauseAnimation()},s=(d,f)=>{this.stopAnimation();const{drag:p,dragPropagation:g,onDragStart:y}=this.getProps();if(p&&!g&&(this.openDragLock&&this.openDragLock(),this.openDragLock=tr(p),!this.openDragLock))return;this.latestPointerEvent=d,this.latestPanInfo=f,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),D(b=>{let v=this.getAxisMotionValue(b).get()||0;if(nr.test(v)){const{projection:w}=this.visualElement;if(w&&w.layout){const j=w.layout.layoutBox[b];j&&(v=$e(j)*(parseFloat(v)/100))}}this.originPoint[b]=v}),y&&A.postRender(()=>y(d,f)),tt(this.visualElement,"transform");const{animationState:x}=this.visualElement;x&&x.setActive("whileDrag",!0)},c=(d,f)=>{this.latestPointerEvent=d,this.latestPanInfo=f;const{dragPropagation:p,dragDirectionLock:g,onDirectionLock:y,onDrag:x}=this.getProps();if(!p&&!this.openDragLock)return;const{offset:b}=f;if(g&&this.currentDirection===null){this.currentDirection=Di(b),this.currentDirection!==null&&y&&y(this.currentDirection);return}this.updateAxis("x",f.point,b),this.updateAxis("y",f.point,b),this.visualElement.render(),x&&x(d,f)},u=(d,f)=>{this.latestPointerEvent=d,this.latestPanInfo=f,this.stop(d,f),this.latestPointerEvent=null,this.latestPanInfo=null},m=()=>D(d=>this.getAnimationState(d)==="paused"&&this.getAxisMotionValue(d).animation?.play()),{dragSnapToOrigin:h}=this.getProps();this.panSession=new mn(t,{onSessionStart:i,onStart:s,onMove:c,onSessionEnd:u,resumeAnimation:m},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:h,distanceThreshold:r,contextWindow:hn(this.visualElement),element:this.visualElement.current})}stop(t,n){const r=t||this.latestPointerEvent,o=n||this.latestPanInfo,i=this.isDragging;if(this.cancel(),!i||!o||!r)return;const{velocity:s}=o;this.startAnimation(s);const{onDragEnd:c}=this.getProps();c&&A.postRender(()=>c(r,o))}cancel(){this.isDragging=!1;const{projection:t,animationState:n}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();const{dragPropagation:r}=this.getProps();!r&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),n&&n.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,n,r){const{drag:o}=this.getProps();if(!r||!me(t,o,this.currentDirection))return;const i=this.getAxisMotionValue(t);let s=this.originPoint[t]+r[t];this.constraints&&this.constraints[t]&&(s=ji(s,this.constraints[t],this.elastic[t])),i.set(s)}resolveConstraints(){const{dragConstraints:t,dragElastic:n}=this.getProps(),r=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):this.visualElement.projection?.layout,o=this.constraints;t&&re(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&r?this.constraints=Li(r.layoutBox,t):this.constraints=!1,this.elastic=Ii(n),o!==this.constraints&&r&&this.constraints&&!this.hasMutatedConstraints&&D(i=>{this.constraints!==!1&&this.getAxisMotionValue(i)&&(this.constraints[i]=Ti(r.layoutBox[i],this.constraints[i]))})}resolveRefConstraints(){const{dragConstraints:t,onMeasureDragConstraints:n}=this.getProps();if(!t||!re(t))return!1;const r=t.current,{projection:o}=this.visualElement;if(!o||!o.layout)return!1;const i=Xn(r,o.root,this.visualElement.getTransformPagePoint());let s=Ri(o.layout.layoutBox,i);if(n){const c=n(Qn(s));this.hasMutatedConstraints=!!c,c&&(s=Zn(c))}return s}startAnimation(t){const{drag:n,dragMomentum:r,dragElastic:o,dragTransition:i,dragSnapToOrigin:s,onDragTransitionEnd:c}=this.getProps(),u=this.constraints||{},m=D(h=>{if(!me(h,n,this.currentDirection))return;let d=u&&u[h]||{};s&&(d={min:0,max:0});const f=o?200:1e6,p=o?40:1e7,g={type:"inertia",velocity:r?t[h]:0,bounceStiffness:f,bounceDamping:p,timeConstant:750,restDelta:1,restSpeed:10,...i,...d};return this.startAxisValueAnimation(h,g)});return Promise.all(m).then(c)}startAxisValueAnimation(t,n){const r=this.getAxisMotionValue(t);return tt(this.visualElement,t),r.start(er(t,r,0,n,this.visualElement,!1))}stopAnimation(){D(t=>this.getAxisMotionValue(t).stop())}pauseAnimation(){D(t=>this.getAxisMotionValue(t).animation?.pause())}getAnimationState(t){return this.getAxisMotionValue(t).animation?.state}getAxisMotionValue(t){const n=`_drag${t.toUpperCase()}`,r=this.visualElement.getProps(),o=r[n];return o||this.visualElement.getValue(t,(r.initial?r.initial[t]:void 0)||0)}snapToCursor(t){D(n=>{const{drag:r}=this.getProps();if(!me(n,r,this.currentDirection))return;const{projection:o}=this.visualElement,i=this.getAxisMotionValue(n);if(o&&o.layout){const{min:s,max:c}=o.layout.layoutBox[n],u=i.get()||0;i.set(t[n]-we(s,c,.5)+u)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:t,dragConstraints:n}=this.getProps(),{projection:r}=this.visualElement;if(!re(n)||!r||!this.constraints)return;this.stopAnimation();const o={x:0,y:0};D(s=>{const c=this.getAxisMotionValue(s);if(c&&this.constraints!==!1){const u=c.get();o[s]=ki({min:u,max:u},this.constraints[s])}});const{transformTemplate:i}=this.visualElement.getProps();this.visualElement.current.style.transform=i?i({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.resolveConstraints(),D(s=>{if(!me(s,t,null))return;const c=this.getAxisMotionValue(s),{min:u,max:m}=this.constraints[s];c.set(we(u,m,o[s]))})}addListeners(){if(!this.visualElement.current)return;Mi.set(this.visualElement,this);const t=this.visualElement.current,n=oe(t,"pointerdown",u=>{const{drag:m,dragListener:h=!0}=this.getProps(),d=u.target,f=d!==t&&rr(d);m&&h&&!f&&this.start(u)}),r=()=>{const{dragConstraints:u}=this.getProps();re(u)&&u.current&&(this.constraints=this.resolveRefConstraints())},{projection:o}=this.visualElement,i=o.addEventListener("measure",r);o&&!o.layout&&(o.root&&o.root.updateScroll(),o.updateLayout()),A.read(r);const s=be(window,"resize",()=>this.scalePositionWithinConstraints()),c=o.addEventListener("didUpdate",(({delta:u,hasLayoutChanged:m})=>{this.isDragging&&m&&(D(h=>{const d=this.getAxisMotionValue(h);d&&(this.originPoint[h]+=u[h].translate,d.set(d.get()+u[h].translate))}),this.visualElement.render())}));return()=>{s(),n(),i(),c&&c()}}getProps(){const t=this.visualElement.getProps(),{drag:n=!1,dragDirectionLock:r=!1,dragPropagation:o=!1,dragConstraints:i=!1,dragElastic:s=Fe,dragMomentum:c=!0}=t;return{...t,drag:n,dragDirectionLock:r,dragPropagation:o,dragConstraints:i,dragElastic:s,dragMomentum:c}}}function me(e,t,n){return(t===!0||t===e)&&(n===null||n===e)}function Di(e,t=10){let n=null;return Math.abs(e.y)>t?n="y":Math.abs(e.x)>t&&(n="x"),n}class Ai extends F{constructor(t){super(t),this.removeGroupControls=pe,this.removeListeners=pe,this.controls=new Ni(t)}mount(){const{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||pe}update(){const{dragControls:t}=this.node.getProps(),{dragControls:n}=this.node.prevProps||{};t!==n&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.endPanSession()}}const vt=e=>(t,n)=>{e&&A.postRender(()=>e(t,n))};class $i extends F{constructor(){super(...arguments),this.removePointerDownListener=pe}onPointerDown(t){this.session=new mn(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:hn(this.node)})}createPanHandlers(){const{onPanSessionStart:t,onPanStart:n,onPan:r,onPanEnd:o}=this.node.getProps();return{onSessionStart:vt(t),onStart:vt(n),onMove:r,onEnd:(i,s)=>{delete this.session,o&&A.postRender(()=>o(i,s))}}}mount(){this.removePointerDownListener=oe(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}let De=!1;class Vi extends a.Component{componentDidMount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r,layoutId:o}=this.props,{projection:i}=t;i&&(n.group&&n.group.add(i),r&&r.register&&o&&r.register(i),De&&i.root.didUpdate(),i.addEventListener("animationComplete",()=>{this.safeToRemove()}),i.setOptions({...i.options,onExitComplete:()=>this.safeToRemove()})),or.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){const{layoutDependency:n,visualElement:r,drag:o,isPresent:i}=this.props,{projection:s}=r;return s&&(s.isPresent=i,De=!0,o||t.layoutDependency!==n||n===void 0||t.isPresent!==i?s.willUpdate():this.safeToRemove(),t.isPresent!==i&&(i?s.promote():s.relegate()||A.postRender(()=>{const c=s.getStack();(!c||!c.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:t}=this.props.visualElement;t&&(t.root.didUpdate(),ir.postRender(()=>{!t.currentAnimation&&t.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:t,layoutGroup:n,switchLayoutGroup:r}=this.props,{projection:o}=t;De=!0,o&&(o.scheduleCheckAfterUnmount(),n&&n.group&&n.group.remove(o),r&&r.deregister&&r.deregister(o))}safeToRemove(){const{safeToRemove:t}=this.props;t&&t()}render(){return null}}function pn(e){const[t,n]=Ko(),r=a.useContext(en);return l.jsx(Vi,{...e,layoutGroup:r,switchLayoutGroup:a.useContext(un),isPresent:t,safeToRemove:n})}const Oi={pan:{Feature:$i},drag:{Feature:Ai,ProjectionNode:Tt,MeasureLayout:pn}};function yt(e,t,n){const{props:r}=e;e.animationState&&r.whileHover&&e.animationState.setActive("whileHover",n==="Start");const o="onHover"+n,i=r[o];i&&A.postRender(()=>i(t,ue(t)))}class Fi extends F{mount(){const{current:t}=this.node;t&&(this.unmount=sr(t,(n,r)=>(yt(this.node,r,"Start"),o=>yt(this.node,o,"End"))))}unmount(){}}class zi extends F{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch{t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=kt(be(this.node.current,"focus",()=>this.onFocus()),be(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}function xt(e,t,n){const{props:r}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&r.whileTap&&e.animationState.setActive("whileTap",n==="Start");const o="onTap"+(n==="End"?"":n),i=r[o];i&&A.postRender(()=>i(t,ue(t)))}class Wi extends F{mount(){const{current:t}=this.node;t&&(this.unmount=ar(t,(n,r)=>(xt(this.node,r,"Start"),(o,{success:i})=>xt(this.node,o,i?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const ze=new WeakMap,Ae=new WeakMap,Bi=e=>{const t=ze.get(e.target);t&&t(e)},Hi=e=>{e.forEach(Bi)};function Ui({root:e,...t}){const n=e||document;Ae.has(n)||Ae.set(n,{});const r=Ae.get(n),o=JSON.stringify(t);return r[o]||(r[o]=new IntersectionObserver(Hi,{root:e,...t})),r[o]}function Gi(e,t,n){const r=Ui(t);return ze.set(e,n),r.observe(e),()=>{ze.delete(e),r.unobserve(e)}}const Ki={some:0,all:1};class qi extends F{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:t={}}=this.node.getProps(),{root:n,margin:r,amount:o="some",once:i}=t,s={root:n?n.current:void 0,rootMargin:r,threshold:typeof o=="number"?o:Ki[o]},c=u=>{const{isIntersecting:m}=u;if(this.isInView===m||(this.isInView=m,i&&!m&&this.hasEnteredView))return;m&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",m);const{onViewportEnter:h,onViewportLeave:d}=this.node.getProps(),f=m?h:d;f&&f(u)};return Gi(this.node.current,s,c)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:t,prevProps:n}=this.node;["amount","margin","root"].some(Yi(t,n))&&this.startObserver()}unmount(){}}function Yi({viewport:e={}},{viewport:t={}}={}){return n=>e[n]!==t[n]}const Ji={inView:{Feature:qi},tap:{Feature:Wi},focus:{Feature:zi},hover:{Feature:Fi}},Xi={layout:{ProjectionNode:Tt,MeasureLayout:pn}},Qi={...Ei,...Ji,...Oi,...Xi},_=yi(Qi,xi),Zi="_header_o0ezk_1",es="_scrolled_o0ezk_11",ts="_nav_o0ezk_17",ns="_logo_o0ezk_24",rs="_logoText_o0ezk_34",os="_logoAccent_o0ezk_38",is="_navLinks_o0ezk_42",ss="_navLink_o0ezk_42",as="_active_o0ezk_64",ls="_activeIndicator_o0ezk_69",cs="_actions_o0ezk_80",us="_langToggle_o0ezk_86",ds="_langDivider_o0ezk_106",hs="_activeLang_o0ezk_110",ms="_mobileMenuBtn_o0ezk_114",fs="_hamburger_o0ezk_124",ps="_open_o0ezk_155",S={header:Zi,scrolled:es,nav:ts,logo:ns,logoText:rs,logoAccent:os,navLinks:is,navLink:ss,active:as,activeIndicator:ls,actions:cs,langToggle:us,langDivider:ds,activeLang:hs,mobileMenuBtn:ms,hamburger:fs,open:ps};function gs(){const{t:e,language:t,setLanguage:n}=Z(),r=z(),[o,i]=a.useState(!1),[s,c]=a.useState(!1);a.useEffect(()=>{const h=()=>{i(window.scrollY>20)};return window.addEventListener("scroll",h,{passive:!0}),()=>window.removeEventListener("scroll",h)},[]),a.useEffect(()=>{c(!1)},[r.pathname]);const u=[{path:"/",label:e.nav.home},{path:"/about",label:e.nav.about},{path:"/contact",label:e.nav.contact}],m=()=>{n(t==="de"?"en":"de")};return l.jsx(_.header,{className:`${S.header} ${o?S.scrolled:""}`,initial:{y:-100},animate:{y:0},transition:{duration:.5,ease:"easeOut"},children:l.jsxs("nav",{className:`${S.nav} container`,children:[l.jsxs(J,{to:"/",className:S.logo,children:[l.jsx("span",{className:S.logoText,children:"Ragusa"}),l.jsx("span",{className:S.logoAccent,children:"IT"})]}),l.jsx("div",{className:`${S.navLinks} ${s?S.open:""}`,children:u.map(h=>l.jsxs(J,{to:h.path,className:`${S.navLink} ${r.pathname===h.path?S.active:""}`,children:[h.label,r.pathname===h.path&&l.jsx(_.div,{className:S.activeIndicator,layoutId:"activeNav",transition:{type:"spring",stiffness:380,damping:30}})]},h.path))}),l.jsxs("div",{className:S.actions,children:[l.jsxs("button",{onClick:m,className:S.langToggle,"aria-label":`Switch to ${t==="de"?"English":"German"}`,children:[l.jsx("span",{className:t==="de"?S.activeLang:"",children:"DE"}),l.jsx("span",{className:S.langDivider,children:"/"}),l.jsx("span",{className:t==="en"?S.activeLang:"",children:"EN"})]}),l.jsx("button",{className:S.mobileMenuBtn,onClick:()=>c(!s),"aria-label":"Toggle menu","aria-expanded":s,children:l.jsx("span",{className:`${S.hamburger} ${s?S.open:""}`})})]})]})})}const vs="_footer_ala36_1",ys="_content_ala36_8",xs="_brand_ala36_16",bs="_logo_ala36_22",ws="_logoText_ala36_30",_s="_logoAccent_ala36_34",Es="_copyright_ala36_38",Ps="_links_ala36_44",Ss="_socialLink_ala36_50",Cs="_credit_ala36_68",js="_heart_ala36_74",T={footer:vs,content:ys,brand:xs,logo:bs,logoText:ws,logoAccent:_s,copyright:Es,links:Ps,socialLink:Ss,credit:Cs,heart:js};function Ls(){const{t:e}=Z(),t=new Date().getFullYear();return l.jsx("footer",{className:T.footer,children:l.jsxs("div",{className:`${T.content} container`,children:[l.jsxs("div",{className:T.brand,children:[l.jsxs("span",{className:T.logo,children:[l.jsx("span",{className:T.logoText,children:"Ragusa"}),l.jsx("span",{className:T.logoAccent,children:"IT"})]}),l.jsx("p",{className:T.copyright,children:e.footer.copyright.replace("{year}",String(t))})]}),l.jsx("div",{className:T.links,children:l.jsx("a",{href:"https://github.com/ragusa-it",target:"_blank",rel:"noopener noreferrer",className:T.socialLink,"aria-label":"GitHub",children:l.jsx("svg",{viewBox:"0 0 24 24",width:"24",height:"24",fill:"currentColor","aria-hidden":"true",children:l.jsx("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"})})})}),l.jsx("div",{className:T.credit,children:l.jsxs("p",{children:[e.footer.madeWith," ",l.jsx("span",{className:T.heart,children:"React"})," ",e.footer.and," ",l.jsx("span",{className:T.heart,children:"TypeScript"})]})})]})})}const Rs="_cursor_1b430_1",ks="_cursorDot_1b430_19",Ts="_pointer_1b430_31",Is="_clicking_1b430_38",Ms="_hidden_1b430_44",Y={cursor:Rs,cursorDot:ks,pointer:Ts,clicking:Is,hidden:Ms};function Ns(){const[e,t]=a.useState({x:0,y:0}),[n,r]=a.useState(!1),[o,i]=a.useState(!0),[s,c]=a.useState(!1),u=a.useCallback(p=>{t({x:p.clientX,y:p.clientY}),i(!1);const g=p.target,y=g.tagName==="A"||g.tagName==="BUTTON"||!!g.closest("a")||!!g.closest("button")||window.getComputedStyle(g).cursor==="pointer";r(y)},[]),m=a.useCallback(()=>c(!0),[]),h=a.useCallback(()=>c(!1),[]),d=a.useCallback(()=>i(!0),[]),f=a.useCallback(()=>i(!1),[]);return a.useEffect(()=>{if(!window.matchMedia("(hover: none)").matches)return document.addEventListener("mousemove",u),document.addEventListener("mousedown",m),document.addEventListener("mouseup",h),document.addEventListener("mouseleave",d),document.addEventListener("mouseenter",f),()=>{document.removeEventListener("mousemove",u),document.removeEventListener("mousedown",m),document.removeEventListener("mouseup",h),document.removeEventListener("mouseleave",d),document.removeEventListener("mouseenter",f)}},[u,m,h,d,f]),typeof window<"u"&&window.matchMedia("(hover: none)").matches?null:l.jsxs(l.Fragment,{children:[l.jsx("div",{className:`${Y.cursor} ${n?Y.pointer:""} ${o?Y.hidden:""} ${s?Y.clicking:""}`,style:{left:e.x,top:e.y}}),l.jsx("div",{className:`${Y.cursorDot} ${o?Y.hidden:""}`,style:{left:e.x,top:e.y}})]})}function Ds({words:e,typingSpeed:t=100,deletingSpeed:n=50,pauseDuration:r=2e3}){const[o,i]=a.useState(0),[s,c]=a.useState(""),[u,m]=a.useState(!1),[h,d]=a.useState(!1),f=a.useCallback(()=>{const p=e[o];h||(u?(c(p.substring(0,s.length-1)),s.length===0&&(m(!1),i(g=>(g+1)%e.length))):(c(p.substring(0,s.length+1)),s===p&&(d(!0),setTimeout(()=>{d(!1),m(!0)},r))))},[s,o,u,h,e,r]);return a.useEffect(()=>{const g=setTimeout(f,u?n:t);return()=>clearTimeout(g)},[f,u,t,n]),{text:s,isTyping:!u&&!h,isDeleting:u,currentWordIndex:o}}const As="_container_kqnuj_1",$s={container:As};function Vs(){const e=a.useRef(null);return Pt(t=>{e.current&&(e.current.rotation.x=t.clock.elapsedTime*.1,e.current.rotation.y=t.clock.elapsedTime*.15)}),l.jsx(Ln,{speed:2,rotationIntensity:.5,floatIntensity:1,children:l.jsxs("mesh",{ref:e,scale:2.5,children:[l.jsx("icosahedronGeometry",{args:[1,1]}),l.jsx(Rn,{color:"#7FD998",emissive:"#004D2A",emissiveIntensity:.3,roughness:.4,metalness:.8,distort:.3,speed:2})]})})}function Os(){const t=a.useMemo(()=>{const r=new Float32Array(300);for(let o=0;o<100;o++)r[o*3]=(Math.random()-.5)*20,r[o*3+1]=(Math.random()-.5)*20,r[o*3+2]=(Math.random()-.5)*20;return r},[]),n=a.useRef(null);return Pt(r=>{n.current&&(n.current.rotation.y=r.clock.elapsedTime*.02)}),l.jsxs("points",{ref:n,children:[l.jsx("bufferGeometry",{children:l.jsx("bufferAttribute",{attach:"attributes-position",args:[t,3]})}),l.jsx("pointsMaterial",{size:.05,color:"#7FD998",transparent:!0,opacity:.6,sizeAttenuation:!0})]})}function Fs(){return l.jsx("div",{className:$s.container,children:l.jsxs(jn,{camera:{position:[0,0,8],fov:45},dpr:[1,2],gl:{antialias:!0,alpha:!0},children:[l.jsx("ambientLight",{intensity:.5}),l.jsx("directionalLight",{position:[10,10,5],intensity:1}),l.jsx("pointLight",{position:[-10,-10,-5],intensity:.5,color:"#7FD998"}),l.jsx(Vs,{}),l.jsx(Os,{})]})})}const zs="_button_yjd5k_1",Ws="_sm_yjd5k_23",Bs="_md_yjd5k_28",Hs="_lg_yjd5k_33",Us="_primary_yjd5k_39",Gs="_secondary_yjd5k_49",Ks="_outline_yjd5k_58",qs="_loader_yjd5k_69",Ys="_spin_yjd5k_1",fe={button:zs,sm:Ws,md:Bs,lg:Hs,primary:Us,secondary:Gs,outline:Ks,loader:qs,spin:Ys};function We({variant:e="primary",size:t="md",children:n,isLoading:r,disabled:o,className:i,type:s="button",onClick:c}){return l.jsx(_.button,{type:s,className:`${fe.button} ${fe[e]} ${fe[t]} ${i||""}`,disabled:o||r,whileHover:{scale:1.02},whileTap:{scale:.98},onClick:c,children:r?l.jsx("span",{className:fe.loader}):n})}const Js="_card_mghl3_1",Xs="_hoverable_mghl3_13",Qs="_icon_mghl3_22",Zs="_title_mghl3_39",ea="_description_mghl3_46",se={card:Js,hoverable:Xs,icon:Qs,title:Zs,description:ea};function U({children:e,className:t,hover:n=!0}){return l.jsx(_.div,{className:`${se.card} ${n?se.hoverable:""} ${t||""}`,whileHover:n?{y:-4}:void 0,transition:{duration:.2},children:e})}function ta({children:e}){return l.jsx("div",{className:se.icon,children:e})}function na({children:e}){return l.jsx("h3",{className:se.title,children:e})}function ra({children:e}){return l.jsx("p",{className:se.description,children:e})}U.Icon=ta;U.Title=na;U.Description=ra;const oa="_field_1azqc_1",ia="_label_1azqc_7",sa="_input_1azqc_13",aa="_textarea_1azqc_42",la="_hasError_1azqc_47",ca="_error_1azqc_55",M={field:oa,label:ia,input:sa,textarea:aa,hasError:la,error:ca},xe=a.forwardRef(({label:e,error:t,id:n,className:r,...o},i)=>{const s=n||e.toLowerCase().replace(/\s+/g,"-");return l.jsxs("div",{className:`${M.field} ${t?M.hasError:""} ${r||""}`,children:[l.jsx("label",{htmlFor:s,className:M.label,children:e}),l.jsx("input",{ref:i,id:s,className:M.input,...o}),t&&l.jsx("span",{className:M.error,children:t})]})});xe.displayName="Input";const gn=a.forwardRef(({label:e,error:t,id:n,className:r,...o},i)=>{const s=n||e.toLowerCase().replace(/\s+/g,"-");return l.jsxs("div",{className:`${M.field} ${t?M.hasError:""} ${r||""}`,children:[l.jsx("label",{htmlFor:s,className:M.label,children:e}),l.jsx("textarea",{ref:i,id:s,className:`${M.input} ${M.textarea}`,...o}),t&&l.jsx("span",{className:M.error,children:t})]})});gn.displayName="Textarea";const ua="_hero_1fiuo_1",da="_content_1fiuo_12",ha="_text_1fiuo_20",ma="_greeting_1fiuo_25",fa="_title_1fiuo_34",pa="_tagline_1fiuo_61",ga="_typed_1fiuo_73",va="_cursor_1fiuo_80",ya="_cta_1fiuo_95",xa="_scrollIndicator_1fiuo_103",ba="_scrollMouse_1fiuo_115",wa="_scrollWheel_1fiuo_125",_a="_scrollText_1fiuo_132",k={hero:ua,content:da,text:ha,greeting:ma,title:fa,tagline:pa,typed:ga,cursor:va,cta:ya,scrollIndicator:xa,scrollMouse:ba,scrollWheel:wa,scrollText:_a};function Ea(){const{t:e}=Z(),[t,n]=a.useState(!0);a.useEffect(()=>{const o=()=>{n(window.scrollY<50)};return window.addEventListener("scroll",o,{passive:!0}),()=>window.removeEventListener("scroll",o)},[]);const{text:r}=Ds({words:e.hero.rotatingWords,typingSpeed:80,deletingSpeed:40,pauseDuration:2500});return l.jsxs("section",{className:k.hero,children:[l.jsx(Fs,{}),l.jsx("div",{className:`${k.content} container`,children:l.jsxs(_.div,{className:k.text,initial:{opacity:0,y:30},animate:{opacity:1,y:0},transition:{duration:.6,ease:"easeOut"},children:[l.jsx(_.p,{className:k.greeting,initial:{opacity:0},animate:{opacity:1},transition:{delay:.2},children:e.hero.greeting}),l.jsx(_.h1,{className:k.title,initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.3,duration:.5},children:e.hero.company}),l.jsxs(_.div,{className:k.tagline,initial:{opacity:0},animate:{opacity:1},transition:{delay:.5},children:[l.jsx("span",{children:e.hero.tagline}),l.jsxs("span",{className:k.typed,children:[r,l.jsx("span",{className:k.cursor,children:"|"})]})]}),l.jsxs(_.div,{className:k.cta,initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{delay:.7,duration:.5},children:[l.jsx(J,{to:"/contact",children:l.jsx(We,{variant:"primary",size:"lg",children:e.hero.cta})}),l.jsx(J,{to:"/about",children:l.jsx(We,{variant:"outline",size:"lg",children:e.hero.ctaSecondary})})]})]})}),t&&l.jsxs(_.div,{className:k.scrollIndicator,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.3},children:[l.jsx(_.div,{className:k.scrollMouse,animate:{y:[0,8,0]},transition:{repeat:1/0,duration:1.5,ease:"easeInOut"},children:l.jsx("span",{className:k.scrollWheel})}),l.jsx("span",{className:k.scrollText,children:e.hero.scroll})]})]})}const Pa="_services_1bb0v_1",Sa="_header_1bb0v_6",Ca="_title_1bb0v_11",ja="_subtitle_1bb0v_18",La="_grid_1bb0v_26",ne={services:Pa,header:Sa,title:Ca,subtitle:ja,grid:La},Ra={code:l.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[l.jsx("polyline",{points:"16 18 22 12 16 6"}),l.jsx("polyline",{points:"8 6 2 12 8 18"})]}),support:l.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:l.jsx("path",{d:"M21 12a9 9 0 0 1-9 9m9-9a9 9 0 0 0-9-9m9 9H3m9 9a9 9 0 0 1-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 0 1 9-9"})}),consulting:l.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[l.jsx("path",{d:"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"}),l.jsx("path",{d:"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"})]}),hosting:l.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[l.jsx("rect",{x:"2",y:"2",width:"20",height:"8",rx:"2",ry:"2"}),l.jsx("rect",{x:"2",y:"14",width:"20",height:"8",rx:"2",ry:"2"}),l.jsx("line",{x1:"6",y1:"6",x2:"6.01",y2:"6"}),l.jsx("line",{x1:"6",y1:"18",x2:"6.01",y2:"18"})]})},ka={hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.15}}},Ta={hidden:{opacity:0,y:30},visible:{opacity:1,y:0,transition:{duration:.5,ease:[.4,0,.2,1]}}};function Ia(){const{t:e}=Z();return l.jsx("section",{className:ne.services,children:l.jsxs("div",{className:"container",children:[l.jsxs(_.div,{className:ne.header,initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0,margin:"-100px"},transition:{duration:.5},children:[l.jsx("h2",{className:ne.title,children:e.services.title}),l.jsx("p",{className:ne.subtitle,children:e.services.subtitle})]}),l.jsx(_.div,{className:ne.grid,variants:ka,initial:"hidden",whileInView:"visible",viewport:{once:!0,margin:"-50px"},children:e.services.items.map((t,n)=>l.jsx(_.div,{variants:Ta,children:l.jsxs(U,{children:[l.jsx(U.Icon,{children:Ra[t.icon]}),l.jsx(U.Title,{children:t.title}),l.jsx(U.Description,{children:t.description})]})},n))})]})})}function Ma(){return l.jsxs("main",{children:[l.jsx(Ea,{}),l.jsx(Ia,{})]})}var vn={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},bt=G.createContext&&G.createContext(vn),Na=["attr","size","title"];function Da(e,t){if(e==null)return{};var n=Aa(e,t),r,o;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o<i.length;o++)r=i[o],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Aa(e,t){if(e==null)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function Pe(){return Pe=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Pe.apply(this,arguments)}function wt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Se(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?wt(Object(n),!0).forEach(function(r){$a(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wt(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function $a(e,t,n){return t=Va(t),t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Va(e){var t=Oa(e,"string");return typeof t=="symbol"?t:t+""}function Oa(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function yn(e){return e&&e.map((t,n)=>G.createElement(t.tag,Se({key:n},t.attr),yn(t.child)))}function W(e){return t=>G.createElement(Fa,Pe({attr:Se({},e.attr)},t),yn(e.child))}function Fa(e){var t=n=>{var{attr:r,size:o,title:i}=e,s=Da(e,Na),c=o||n.size||"1em",u;return n.className&&(u=n.className),e.className&&(u=(u?u+" ":"")+e.className),G.createElement("svg",Pe({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},n.attr,r,s,{className:u,style:Se(Se({color:e.color||n.color},n.style),e.style),height:c,width:c,xmlns:"http://www.w3.org/2000/svg"}),i&&G.createElement("title",null,i),e.children)};return bt!==void 0?G.createElement(bt.Consumer,null,n=>t(n)):t(vn)}function za(e){return W({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M13.983 11.078h2.119a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.119a.185.185 0 00-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 00.186-.186V3.574a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 00.186-.186V6.29a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 00.184-.186V6.29a.185.185 0 00-.185-.185H8.1a.185.185 0 00-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 00.185-.186V6.29a.185.185 0 00-.185-.185H5.136a.186.186 0 00-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 00.185-.185V9.006a.185.185 0 00-.184-.186h-2.12a.186.186 0 00-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 00-.75.748 11.376 11.376 0 00.692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 003.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288Z"},child:[]}]})(e)}function Wa(e){return W({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M19.455 8.369c-.538-.748-1.778-2.285-3.681-4.569-.826-.991-1.535-1.832-1.884-2.245a146 146 0 0 0-.488-.576l-.207-.245-.113-.133-.022-.032-.01-.005L12.57 0l-.609.488c-1.555 1.246-2.828 2.851-3.681 4.64-.523 1.064-.864 2.105-1.043 3.176-.047.241-.088.489-.121.738-.209-.017-.421-.028-.632-.033-.018-.001-.035-.002-.059-.003a7.46 7.46 0 0 0-2.28.274l-.317.089-.163.286c-.765 1.342-1.198 2.869-1.252 4.416-.07 2.01.477 3.954 1.583 5.625 1.082 1.633 2.61 2.882 4.42 3.611l.236.095.071.025.003-.001a9.59 9.59 0 0 0 2.941.568q.171.006.342.006c1.273 0 2.513-.249 3.69-.742l.008.004.313-.145a9.63 9.63 0 0 0 3.927-3.335c1.01-1.49 1.577-3.234 1.641-5.042.075-2.161-.643-4.304-2.133-6.371m-7.083 6.695c.328 1.244.264 2.44-.191 3.558-1.135-1.12-1.967-2.352-2.475-3.665-.543-1.404-.87-2.74-.974-3.975.48.157.922.366 1.315.622 1.132.737 1.914 1.902 2.325 3.461zm.207 6.022c.482.368.99.712 1.513 1.028-.771.21-1.565.302-2.369.273a8 8 0 0 1-.373-.022c.458-.394.869-.823 1.228-1.279zm1.347-6.431c-.516-1.957-1.527-3.437-3.002-4.398-.647-.421-1.385-.741-2.194-.95.011-.134.026-.268.043-.4.014-.113.03-.216.046-.313.133-.689.332-1.37.589-2.025.099-.25.206-.499.321-.74l.004-.008c.177-.358.376-.719.61-1.105l.092-.152-.003-.001c.544-.851 1.197-1.627 1.942-2.311l.288.341c.672.796 1.304 1.548 1.878 2.237 1.291 1.549 2.966 3.583 3.612 4.48 1.277 1.771 1.893 3.579 1.83 5.375-.049 1.395-.461 2.755-1.195 3.933-.694 1.116-1.661 2.05-2.8 2.708-.636-.318-1.559-.839-2.539-1.599.79-1.575.952-3.28.479-5.072zm-2.575 5.397c-.725.939-1.587 1.55-2.09 1.856-.081-.029-.163-.06-.243-.093l-.065-.026c-1.49-.616-2.747-1.656-3.635-3.01-.907-1.384-1.356-2.993-1.298-4.653.041-1.19.338-2.327.882-3.379.316-.07.638-.114.96-.131l.084-.002c.162-.003.324-.003.478 0 .227.011.454.035.677.07.073 1.513.445 3.145 1.105 4.852.637 1.644 1.694 3.162 3.144 4.515z"},child:[]}]})(e)}function Ba(e){return W({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M23.546 10.93L13.067.452c-.604-.603-1.582-.603-2.188 0L8.708 2.627l2.76 2.76c.645-.215 1.379-.07 1.889.441.516.515.658 1.258.438 1.9l2.658 2.66c.645-.223 1.387-.078 1.9.435.721.72.721 1.884 0 2.604-.719.719-1.881.719-2.6 0-.539-.541-.674-1.337-.404-1.996L12.86 8.955v6.525c.176.086.342.203.488.348.713.721.713 1.883 0 2.6-.719.721-1.889.721-2.609 0-.719-.719-.719-1.879 0-2.598.182-.18.387-.316.605-.406V8.835c-.217-.091-.424-.222-.6-.401-.545-.545-.676-1.342-.396-2.009L7.636 3.7.45 10.881c-.6.605-.6 1.584 0 2.189l10.48 10.477c.604.604 1.582.604 2.186 0l10.43-10.43c.605-.603.605-1.582 0-2.187"},child:[]}]})(e)}function Ha(e){return W({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M11.998,24c-0.321,0-0.641-0.084-0.922-0.247l-2.936-1.737c-0.438-0.245-0.224-0.332-0.08-0.383 c0.585-0.203,0.703-0.25,1.328-0.604c0.065-0.037,0.151-0.023,0.218,0.017l2.256,1.339c0.082,0.045,0.197,0.045,0.272,0l8.795-5.076 c0.082-0.047,0.134-0.141,0.134-0.238V6.921c0-0.099-0.053-0.192-0.137-0.242l-8.791-5.072c-0.081-0.047-0.189-0.047-0.271,0 L3.075,6.68C2.99,6.729,2.936,6.825,2.936,6.921v10.15c0,0.097,0.054,0.189,0.139,0.235l2.409,1.392 c1.307,0.654,2.108-0.116,2.108-0.89V7.787c0-0.142,0.114-0.253,0.256-0.253h1.115c0.139,0,0.255,0.112,0.255,0.253v10.021 c0,1.745-0.95,2.745-2.604,2.745c-0.508,0-0.909,0-2.026-0.551L2.28,18.675c-0.57-0.329-0.922-0.945-0.922-1.604V6.921 c0-0.659,0.353-1.275,0.922-1.603l8.795-5.082c0.557-0.315,1.296-0.315,1.848,0l8.794,5.082c0.57,0.329,0.924,0.944,0.924,1.603 v10.15c0,0.659-0.354,1.273-0.924,1.604l-8.794,5.078C12.643,23.916,12.324,24,11.998,24z M19.099,13.993 c0-1.9-1.284-2.406-3.987-2.763c-2.731-0.361-3.009-0.548-3.009-1.187c0-0.528,0.235-1.233,2.258-1.233 c1.807,0,2.473,0.389,2.747,1.607c0.024,0.115,0.129,0.199,0.247,0.199h1.141c0.071,0,0.138-0.031,0.186-0.081 c0.048-0.054,0.074-0.123,0.067-0.196c-0.177-2.098-1.571-3.076-4.388-3.076c-2.508,0-4.004,1.058-4.004,2.833 c0,1.925,1.488,2.457,3.895,2.695c2.88,0.282,3.103,0.703,3.103,1.269c0,0.983-0.789,1.402-2.642,1.402 c-2.327,0-2.839-0.584-3.011-1.742c-0.02-0.124-0.126-0.215-0.253-0.215h-1.137c-0.141,0-0.254,0.112-0.254,0.253 c0,1.482,0.806,3.248,4.655,3.248C17.501,17.007,19.099,15.91,19.099,13.993z"},child:[]}]})(e)}function Ua(e){return W({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M23.5594 14.7228a.5269.5269 0 0 0-.0563-.1191c-.139-.2632-.4768-.3418-1.0074-.2321-1.6533.3411-2.2935.1312-2.5256-.0191 1.342-2.0482 2.445-4.522 3.0411-6.8297.2714-1.0507.7982-3.5237.1222-4.7316a1.5641 1.5641 0 0 0-.1509-.235C21.6931.9086 19.8007.0248 17.5099.0005c-1.4947-.0158-2.7705.3461-3.1161.4794a9.449 9.449 0 0 0-.5159-.0816 8.044 8.044 0 0 0-1.3114-.1278c-1.1822-.0184-2.2038.2642-3.0498.8406-.8573-.3211-4.7888-1.645-7.2219.0788C.9359 2.1526.3086 3.8733.4302 6.3043c.0409.818.5069 3.334 1.2423 5.7436.4598 1.5065.9387 2.7019 1.4334 3.582.553.9942 1.1259 1.5933 1.7143 1.7895.4474.1491 1.1327.1441 1.8581-.7279.8012-.9635 1.5903-1.8258 1.9446-2.2069.4351.2355.9064.3625 1.39.3772a.0569.0569 0 0 0 .0004.0041 11.0312 11.0312 0 0 0-.2472.3054c-.3389.4302-.4094.5197-1.5002.7443-.3102.064-1.1344.2339-1.1464.8115-.0025.1224.0329.2309.0919.3268.2269.4231.9216.6097 1.015.6331 1.3345.3335 2.5044.092 3.3714-.6787-.017 2.231.0775 4.4174.3454 5.0874.2212.5529.7618 1.9045 2.4692 1.9043.2505 0 .5263-.0291.8296-.0941 1.7819-.3821 2.5557-1.1696 2.855-2.9059.1503-.8707.4016-2.8753.5388-4.1012.0169-.0703.0357-.1207.057-.1362.0007-.0005.0697-.0471.4272.0307a.3673.3673 0 0 0 .0443.0068l.2539.0223.0149.001c.8468.0384 1.9114-.1426 2.5312-.4308.6438-.2988 1.8057-1.0323 1.5951-1.6698zM2.371 11.8765c-.7435-2.4358-1.1779-4.8851-1.2123-5.5719-.1086-2.1714.4171-3.6829 1.5623-4.4927 1.8367-1.2986 4.8398-.5408 6.108-.13-.0032.0032-.0066.0061-.0098.0094-2.0238 2.044-1.9758 5.536-1.9708 5.7495-.0002.0823.0066.1989.0162.3593.0348.5873.0996 1.6804-.0735 2.9184-.1609 1.1504.1937 2.2764.9728 3.0892.0806.0841.1648.1631.2518.2374-.3468.3714-1.1004 1.1926-1.9025 2.1576-.5677.6825-.9597.5517-1.0886.5087-.3919-.1307-.813-.5871-1.2381-1.3223-.4796-.839-.9635-2.0317-1.4155-3.5126zm6.0072 5.0871c-.1711-.0428-.3271-.1132-.4322-.1772.0889-.0394.2374-.0902.4833-.1409 1.2833-.2641 1.4815-.4506 1.9143-1.0002.0992-.126.2116-.2687.3673-.4426a.3549.3549 0 0 0 .0737-.1298c.1708-.1513.2724-.1099.4369-.0417.156.0646.3078.26.3695.4752.0291.1016.0619.2945-.0452.4444-.9043 1.2658-2.2216 1.2494-3.1676 1.0128zm2.094-3.988-.0525.141c-.133.3566-.2567.6881-.3334 1.003-.6674-.0021-1.3168-.2872-1.8105-.8024-.6279-.6551-.9131-1.5664-.7825-2.5004.1828-1.3079.1153-2.4468.079-3.0586-.005-.0857-.0095-.1607-.0122-.2199.2957-.2621 1.6659-.9962 2.6429-.7724.4459.1022.7176.4057.8305.928.5846 2.7038.0774 3.8307-.3302 4.7363-.084.1866-.1633.3629-.2311.5454zm7.3637 4.5725c-.0169.1768-.0358.376-.0618.5959l-.146.4383a.3547.3547 0 0 0-.0182.1077c-.0059.4747-.054.6489-.115.8693-.0634.2292-.1353.4891-.1794 1.0575-.11 1.4143-.8782 2.2267-2.4172 2.5565-1.5155.3251-1.7843-.4968-2.0212-1.2217a6.5824 6.5824 0 0 0-.0769-.2266c-.2154-.5858-.1911-1.4119-.1574-2.5551.0165-.5612-.0249-1.9013-.3302-2.6462.0044-.2932.0106-.5909.019-.8918a.3529.3529 0 0 0-.0153-.1126 1.4927 1.4927 0 0 0-.0439-.208c-.1226-.4283-.4213-.7866-.7797-.9351-.1424-.059-.4038-.1672-.7178-.0869.067-.276.1831-.5875.309-.9249l.0529-.142c.0595-.16.134-.3257.213-.5012.4265-.9476 1.0106-2.2453.3766-5.1772-.2374-1.0981-1.0304-1.6343-2.2324-1.5098-.7207.0746-1.3799.3654-1.7088.5321a5.6716 5.6716 0 0 0-.1958.1041c.0918-1.1064.4386-3.1741 1.7357-4.4823a4.0306 4.0306 0 0 1 .3033-.276.3532.3532 0 0 0 .1447-.0644c.7524-.5706 1.6945-.8506 2.802-.8325.4091.0067.8017.0339 1.1742.081 1.939.3544 3.2439 1.4468 4.0359 2.3827.8143.9623 1.2552 1.9315 1.4312 2.4543-1.3232-.1346-2.2234.1268-2.6797.779-.9926 1.4189.543 4.1729 1.2811 5.4964.1353.2426.2522.4522.2889.5413.2403.5825.5515.9713.7787 1.2552.0696.087.1372.1714.1885.245-.4008.1155-1.1208.3825-1.0552 1.717-.0123.1563-.0423.4469-.0834.8148-.0461.2077-.0702.4603-.0994.7662zm.8905-1.6211c-.0405-.8316.2691-.9185.5967-1.0105a2.8566 2.8566 0 0 0 .135-.0406 1.202 1.202 0 0 0 .1342.103c.5703.3765 1.5823.4213 3.0068.1344-.2016.1769-.5189.3994-.9533.6011-.4098.1903-1.0957.333-1.7473.3636-.7197.0336-1.0859-.0807-1.1721-.151zm.5695-9.2712c-.0059.3508-.0542.6692-.1054 1.0017-.055.3576-.112.7274-.1264 1.1762-.0142.4368.0404.8909.0932 1.3301.1066.887.216 1.8003-.2075 2.7014a3.5272 3.5272 0 0 1-.1876-.3856c-.0527-.1276-.1669-.3326-.3251-.6162-.6156-1.1041-2.0574-3.6896-1.3193-4.7446.3795-.5427 1.3408-.5661 2.1781-.463zm.2284 7.0137a12.3762 12.3762 0 0 0-.0853-.1074l-.0355-.0444c.7262-1.1995.5842-2.3862.4578-3.4385-.0519-.4318-.1009-.8396-.0885-1.2226.0129-.4061.0666-.7543.1185-1.0911.0639-.415.1288-.8443.1109-1.3505.0134-.0531.0188-.1158.0118-.1902-.0457-.4855-.5999-1.938-1.7294-3.253-.6076-.7073-1.4896-1.4972-2.6889-2.0395.5251-.1066 1.2328-.2035 2.0244-.1859 2.0515.0456 3.6746.8135 4.8242 2.2824a.908.908 0 0 1 .0667.1002c.7231 1.3556-.2762 6.2751-2.9867 10.5405zm-8.8166-6.1162c-.025.1794-.3089.4225-.6211.4225a.5821.5821 0 0 1-.0809-.0056c-.1873-.026-.3765-.144-.5059-.3156-.0458-.0605-.1203-.178-.1055-.2844.0055-.0401.0261-.0985.0925-.1488.1182-.0894.3518-.1226.6096-.0867.3163.0441.6426.1938.6113.4186zm7.9305-.4114c.0111.0792-.049.201-.1531.3102-.0683.0717-.212.1961-.4079.2232a.5456.5456 0 0 1-.075.0052c-.2935 0-.5414-.2344-.5607-.3717-.024-.1765.2641-.3106.5611-.352.297-.0414.6111.0088.6356.1851z"},child:[]}]})(e)}function Ga(e){return W({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z"},child:[]}]})(e)}function Ka(e){return W({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M14.23 12.004a2.236 2.236 0 0 1-2.235 2.236 2.236 2.236 0 0 1-2.236-2.236 2.236 2.236 0 0 1 2.235-2.236 2.236 2.236 0 0 1 2.236 2.236zm2.648-10.69c-1.346 0-3.107.96-4.888 2.622-1.78-1.653-3.542-2.602-4.887-2.602-.41 0-.783.093-1.106.278-1.375.793-1.683 3.264-.973 6.365C1.98 8.917 0 10.42 0 12.004c0 1.59 1.99 3.097 5.043 4.03-.704 3.113-.39 5.588.988 6.38.32.187.69.275 1.102.275 1.345 0 3.107-.96 4.888-2.624 1.78 1.654 3.542 2.603 4.887 2.603.41 0 .783-.09 1.106-.275 1.374-.792 1.683-3.263.973-6.365C22.02 15.096 24 13.59 24 12.004c0-1.59-1.99-3.097-5.043-4.032.704-3.11.39-5.587-.988-6.38-.318-.184-.688-.277-1.092-.278zm-.005 1.09v.006c.225 0 .406.044.558.127.666.382.955 1.835.73 3.704-.054.46-.142.945-.25 1.44-.96-.236-2.006-.417-3.107-.534-.66-.905-1.345-1.727-2.035-2.447 1.592-1.48 3.087-2.292 4.105-2.295zm-9.77.02c1.012 0 2.514.808 4.11 2.28-.686.72-1.37 1.537-2.02 2.442-1.107.117-2.154.298-3.113.538-.112-.49-.195-.964-.254-1.42-.23-1.868.054-3.32.714-3.707.19-.09.4-.127.563-.132zm4.882 3.05c.455.468.91.992 1.36 1.564-.44-.02-.89-.034-1.345-.034-.46 0-.915.01-1.36.034.44-.572.895-1.096 1.345-1.565zM12 8.1c.74 0 1.477.034 2.202.093.406.582.802 1.203 1.183 1.86.372.64.71 1.29 1.018 1.946-.308.655-.646 1.31-1.013 1.95-.38.66-.773 1.288-1.18 1.87-.728.063-1.466.098-2.21.098-.74 0-1.477-.035-2.202-.093-.406-.582-.802-1.204-1.183-1.86-.372-.64-.71-1.29-1.018-1.946.303-.657.646-1.313 1.013-1.954.38-.66.773-1.286 1.18-1.868.728-.064 1.466-.098 2.21-.098zm-3.635.254c-.24.377-.48.763-.704 1.16-.225.39-.435.782-.635 1.174-.265-.656-.49-1.31-.676-1.947.64-.15 1.315-.283 2.015-.386zm7.26 0c.695.103 1.365.23 2.006.387-.18.632-.405 1.282-.66 1.933-.2-.39-.41-.783-.64-1.174-.225-.392-.465-.774-.705-1.146zm3.063.675c.484.15.944.317 1.375.498 1.732.74 2.852 1.708 2.852 2.476-.005.768-1.125 1.74-2.857 2.475-.42.18-.88.342-1.355.493-.28-.958-.646-1.956-1.1-2.98.45-1.017.81-2.01 1.085-2.964zm-13.395.004c.278.96.645 1.957 1.1 2.98-.45 1.017-.812 2.01-1.086 2.964-.484-.15-.944-.318-1.37-.5-1.732-.737-2.852-1.706-2.852-2.474 0-.768 1.12-1.742 2.852-2.476.42-.18.88-.342 1.356-.494zm11.678 4.28c.265.657.49 1.312.676 1.948-.64.157-1.316.29-2.016.39.24-.375.48-.762.705-1.158.225-.39.435-.788.636-1.18zm-9.945.02c.2.392.41.783.64 1.175.23.39.465.772.705 1.143-.695-.102-1.365-.23-2.006-.386.18-.63.406-1.282.66-1.933zM17.92 16.32c.112.493.2.968.254 1.423.23 1.868-.054 3.32-.714 3.708-.147.09-.338.128-.563.128-1.012 0-2.514-.807-4.11-2.28.686-.72 1.37-1.536 2.02-2.44 1.107-.118 2.154-.3 3.113-.54zm-11.83.01c.96.234 2.006.415 3.107.532.66.905 1.345 1.727 2.035 2.446-1.595 1.483-3.092 2.295-4.11 2.295-.22-.005-.406-.05-.553-.132-.666-.38-.955-1.834-.73-3.703.054-.46.142-.944.25-1.438zm4.56.64c.44.02.89.034 1.345.034.46 0 .915-.01 1.36-.034-.44.572-.895 1.095-1.345 1.565-.455-.47-.91-.993-1.36-1.565z"},child:[]}]})(e)}function qa(e){return W({attr:{role:"img",viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M1.125 0C.502 0 0 .502 0 1.125v21.75C0 23.498.502 24 1.125 24h21.75c.623 0 1.125-.502 1.125-1.125V1.125C24 .502 23.498 0 22.875 0zm17.363 9.75c.612 0 1.154.037 1.627.111a6.38 6.38 0 0 1 1.306.34v2.458a3.95 3.95 0 0 0-.643-.361 5.093 5.093 0 0 0-.717-.26 5.453 5.453 0 0 0-1.426-.2c-.3 0-.573.028-.819.086a2.1 2.1 0 0 0-.623.242c-.17.104-.3.229-.393.374a.888.888 0 0 0-.14.49c0 .196.053.373.156.529.104.156.252.304.443.444s.423.276.696.41c.273.135.582.274.926.416.47.197.892.407 1.266.628.374.222.695.473.963.753.268.279.472.598.614.957.142.359.214.776.214 1.253 0 .657-.125 1.21-.373 1.656a3.033 3.033 0 0 1-1.012 1.085 4.38 4.38 0 0 1-1.487.596c-.566.12-1.163.18-1.79.18a9.916 9.916 0 0 1-1.84-.164 5.544 5.544 0 0 1-1.512-.493v-2.63a5.033 5.033 0 0 0 3.237 1.2c.333 0 .624-.03.872-.09.249-.06.456-.144.623-.25.166-.108.29-.234.373-.38a1.023 1.023 0 0 0-.074-1.089 2.12 2.12 0 0 0-.537-.5 5.597 5.597 0 0 0-.807-.444 27.72 27.72 0 0 0-1.007-.436c-.918-.383-1.602-.852-2.053-1.405-.45-.553-.676-1.222-.676-2.005 0-.614.123-1.141.369-1.582.246-.441.58-.804 1.004-1.089a4.494 4.494 0 0 1 1.47-.629 7.536 7.536 0 0 1 1.77-.201zm-15.113.188h9.563v2.166H9.506v9.646H6.789v-9.646H3.375z"},child:[]}]})(e)}const Ya="_about_1n62r_1",Ja="_hero_1n62r_6",Xa="_title_1n62r_16",Qa="_subtitle_1n62r_22",Za="_intro_1n62r_29",el="_introContent_1n62r_33",tl="_introText_1n62r_38",nl="_sectionHeader_1n62r_47",rl="_skills_1n62r_63",ol="_techGrid_1n62r_68",il="_techCard_1n62r_76",sl="_techIcon_1n62r_93",al="_techName_1n62r_97",ll="_values_1n62r_104",cl="_valuesGrid_1n62r_108",ul="_valueCard_1n62r_114",dl="_valueNumber_1n62r_126",hl="_valueTitle_1n62r_134",ml="_valueDescription_1n62r_140",P={about:Ya,hero:Ja,title:Xa,subtitle:Qa,intro:Za,introContent:el,introText:tl,sectionHeader:nl,skills:rl,techGrid:ol,techCard:il,techIcon:sl,techName:al,values:ll,valuesGrid:cl,valueCard:ul,valueNumber:dl,valueTitle:hl,valueDescription:ml},fl=[{name:"React",icon:Ka},{name:"TypeScript",icon:qa},{name:"Node.js",icon:Ha},{name:"Python",icon:Ga},{name:"Firebase",icon:Wa},{name:"PostgreSQL",icon:Ua},{name:"Docker",icon:za},{name:"Git",icon:Ba}],_t={hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.1}}},Et={hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{duration:.4}}};function pl(){const{t:e}=Z();return l.jsxs("main",{className:P.about,children:[l.jsx("section",{className:P.hero,children:l.jsx("div",{className:"container",children:l.jsxs(_.div,{initial:{opacity:0,y:30},animate:{opacity:1,y:0},transition:{duration:.6},children:[l.jsx("h1",{className:P.title,children:e.about.title}),l.jsx("p",{className:P.subtitle,children:e.about.subtitle})]})})}),l.jsx("section",{className:P.intro,children:l.jsx("div",{className:"container",children:l.jsxs(_.div,{className:P.introContent,initial:{opacity:0,y:30},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},children:[l.jsx("p",{className:P.introText,children:e.about.intro}),l.jsx("p",{className:P.introText,children:e.about.experience})]})})}),l.jsx("section",{className:P.skills,children:l.jsxs("div",{className:"container",children:[l.jsxs(_.div,{className:P.sectionHeader,initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},children:[l.jsx("h2",{children:e.about.skills.title}),l.jsx("p",{children:e.about.skills.subtitle})]}),l.jsx(_.div,{className:P.techGrid,variants:_t,initial:"hidden",whileInView:"visible",viewport:{once:!0},children:fl.map(t=>l.jsxs(_.div,{className:P.techCard,variants:Et,whileHover:{scale:1.05,y:-4},children:[l.jsx("span",{className:P.techIcon,children:l.jsx(t.icon,{})}),l.jsx("span",{className:P.techName,children:t.name})]},t.name))})]})}),l.jsx("section",{className:P.values,children:l.jsxs("div",{className:"container",children:[l.jsx(_.div,{className:P.sectionHeader,initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{duration:.5},children:l.jsx("h2",{children:e.about.values.title})}),l.jsx(_.div,{className:P.valuesGrid,variants:_t,initial:"hidden",whileInView:"visible",viewport:{once:!0},children:e.about.values.items.map((t,n)=>l.jsxs(_.div,{className:P.valueCard,variants:Et,children:[l.jsxs("div",{className:P.valueNumber,children:["0",n+1]}),l.jsx("h3",{className:P.valueTitle,children:t.title}),l.jsx("p",{className:P.valueDescription,children:t.description})]},n))})]})})]})}class de{constructor(t=0,n="Network Error"){this.status=t,this.text=n}}const gl=()=>{if(!(typeof localStorage>"u"))return{get:e=>Promise.resolve(localStorage.getItem(e)),set:(e,t)=>Promise.resolve(localStorage.setItem(e,t)),remove:e=>Promise.resolve(localStorage.removeItem(e))}},L={origin:"https://api.emailjs.com",blockHeadless:!1,storageProvider:gl()},Xe=e=>e?typeof e=="string"?{publicKey:e}:e.toString()==="[object Object]"?e:{}:{},vl=(e,t="https://api.emailjs.com")=>{if(!e)return;const n=Xe(e);L.publicKey=n.publicKey,L.blockHeadless=n.blockHeadless,L.storageProvider=n.storageProvider,L.blockList=n.blockList,L.limitRate=n.limitRate,L.origin=n.origin||t},xn=async(e,t,n={})=>{const r=await fetch(L.origin+e,{method:"POST",headers:n,body:t}),o=await r.text(),i=new de(r.status,o);if(r.ok)return i;throw i},bn=(e,t,n)=>{if(!e||typeof e!="string")throw"The public key is required. Visit https://dashboard.emailjs.com/admin/account";if(!t||typeof t!="string")throw"The service ID is required. Visit https://dashboard.emailjs.com/admin";if(!n||typeof n!="string")throw"The template ID is required. Visit https://dashboard.emailjs.com/admin/templates"},yl=e=>{if(e&&e.toString()!=="[object Object]")throw"The template params have to be the object. Visit https://www.emailjs.com/docs/sdk/send/"},wn=e=>e.webdriver||!e.languages||e.languages.length===0,_n=()=>new de(451,"Unavailable For Headless Browser"),xl=(e,t)=>{if(!Array.isArray(e))throw"The BlockList list has to be an array";if(typeof t!="string")throw"The BlockList watchVariable has to be a string"},bl=e=>!e.list?.length||!e.watchVariable,wl=(e,t)=>e instanceof FormData?e.get(t):e[t],En=(e,t)=>{if(bl(e))return!1;xl(e.list,e.watchVariable);const n=wl(t,e.watchVariable);return typeof n!="string"?!1:e.list.includes(n)},Pn=()=>new de(403,"Forbidden"),_l=(e,t)=>{if(typeof e!="number"||e<0)throw"The LimitRate throttle has to be a positive number";if(t&&typeof t!="string")throw"The LimitRate ID has to be a non-empty string"},El=async(e,t,n)=>{const r=Number(await n.get(e)||0);return t-Date.now()+r},Sn=async(e,t,n)=>{if(!t.throttle||!n)return!1;_l(t.throttle,t.id);const r=t.id||e;return await El(r,t.throttle,n)>0?!0:(await n.set(r,Date.now().toString()),!1)},Cn=()=>new de(429,"Too Many Requests"),Pl=async(e,t,n,r)=>{const o=Xe(r),i=o.publicKey||L.publicKey,s=o.blockHeadless||L.blockHeadless,c=o.storageProvider||L.storageProvider,u={...L.blockList,...o.blockList},m={...L.limitRate,...o.limitRate};return s&&wn(navigator)?Promise.reject(_n()):(bn(i,e,t),yl(n),n&&En(u,n)?Promise.reject(Pn()):await Sn(location.pathname,m,c)?Promise.reject(Cn()):xn("/api/v1.0/email/send",JSON.stringify({lib_version:"4.4.1",user_id:i,service_id:e,template_id:t,template_params:n}),{"Content-type":"application/json"}))},Sl=e=>{if(!e||e.nodeName!=="FORM")throw"The 3rd parameter is expected to be the HTML form element or the style selector of the form"},Cl=e=>typeof e=="string"?document.querySelector(e):e,jl=async(e,t,n,r)=>{const o=Xe(r),i=o.publicKey||L.publicKey,s=o.blockHeadless||L.blockHeadless,c=L.storageProvider||o.storageProvider,u={...L.blockList,...o.blockList},m={...L.limitRate,...o.limitRate};if(s&&wn(navigator))return Promise.reject(_n());const h=Cl(n);bn(i,e,t),Sl(h);const d=new FormData(h);return En(u,d)?Promise.reject(Pn()):await Sn(location.pathname,m,c)?Promise.reject(Cn()):(d.append("lib_version","4.4.1"),d.append("service_id",e),d.append("template_id",t),d.append("user_id",i),xn("/api/v1.0/email/send-form",d))},Ll={init:vl,send:Pl,sendForm:jl,EmailJSResponseStatus:de},Rl="_contact_1lm51_1",kl="_hero_1lm51_6",Tl="_title_1lm51_16",Il="_subtitle_1lm51_22",Ml="_content_1lm51_29",Nl="_grid_1lm51_33",Dl="_formSection_1lm51_46",Al="_intro_1lm51_50",$l="_form_1lm51_46",Vl="_success_1lm51_63",Ol="_error_1lm51_72",Fl="_infoSection_1lm51_82",zl="_infoTitle_1lm51_90",Wl="_infoList_1lm51_96",Bl="_infoItem_1lm51_102",Hl="_infoIcon_1lm51_108",C={contact:Rl,hero:kl,title:Tl,subtitle:Il,content:Ml,grid:Nl,formSection:Dl,intro:Al,form:$l,success:Vl,error:Ol,infoSection:Fl,infoTitle:zl,infoList:Wl,infoItem:Bl,infoIcon:Hl},Ul="YOUR_SERVICE_ID",Gl="YOUR_TEMPLATE_ID",Kl="YOUR_PUBLIC_KEY";function ql(){const{t:e}=Z(),[t,n]=a.useState({name:"",email:"",subject:"",message:""}),[r,o]=a.useState({}),[i,s]=a.useState(!1),[c,u]=a.useState("idle"),m=()=>{const f={};return t.name.trim()||(f.name="Required"),t.email.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t.email)||(f.email="Invalid email"):f.email="Required",t.subject.trim()||(f.subject="Required"),t.message.trim()||(f.message="Required"),o(f),Object.keys(f).length===0},h=async f=>{if(f.preventDefault(),!!m()){s(!0),u("idle");try{await Ll.send(Ul,Gl,{from_name:t.name,from_email:t.email,subject:t.subject,message:t.message},Kl),u("success"),n({name:"",email:"",subject:"",message:""})}catch{u("error")}finally{s(!1)}}},d=(f,p)=>{n(g=>({...g,[f]:p})),r[f]&&o(g=>({...g,[f]:void 0}))};return l.jsxs("main",{className:C.contact,children:[l.jsx("section",{className:C.hero,children:l.jsx("div",{className:"container",children:l.jsxs(_.div,{initial:{opacity:0,y:30},animate:{opacity:1,y:0},transition:{duration:.6},children:[l.jsx("h1",{className:C.title,children:e.contact.title}),l.jsx("p",{className:C.subtitle,children:e.contact.subtitle})]})})}),l.jsx("section",{className:C.content,children:l.jsx("div",{className:"container",children:l.jsxs("div",{className:C.grid,children:[l.jsxs(_.div,{className:C.formSection,initial:{opacity:0,x:-30},animate:{opacity:1,x:0},transition:{duration:.5,delay:.2},children:[l.jsx("p",{className:C.intro,children:e.contact.intro}),l.jsxs("form",{onSubmit:h,className:C.form,children:[l.jsx(xe,{label:e.contact.form.name,placeholder:e.contact.form.namePlaceholder,value:t.name,onChange:f=>d("name",f.target.value),error:r.name}),l.jsx(xe,{label:e.contact.form.email,type:"email",placeholder:e.contact.form.emailPlaceholder,value:t.email,onChange:f=>d("email",f.target.value),error:r.email}),l.jsx(xe,{label:e.contact.form.subject,placeholder:e.contact.form.subjectPlaceholder,value:t.subject,onChange:f=>d("subject",f.target.value),error:r.subject}),l.jsx(gn,{label:e.contact.form.message,placeholder:e.contact.form.messagePlaceholder,value:t.message,onChange:f=>d("message",f.target.value),error:r.message,rows:6}),l.jsx(We,{type:"submit",variant:"primary",size:"lg",isLoading:i,disabled:i,children:i?e.contact.form.sending:e.contact.form.submit}),c==="success"&&l.jsx(_.p,{className:C.success,initial:{opacity:0,y:10},animate:{opacity:1,y:0},children:e.contact.form.success}),c==="error"&&l.jsx(_.p,{className:C.error,initial:{opacity:0,y:10},animate:{opacity:1,y:0},children:e.contact.form.error})]})]}),l.jsxs(_.div,{className:C.infoSection,initial:{opacity:0,x:30},animate:{opacity:1,x:0},transition:{duration:.5,delay:.3},children:[l.jsx("h2",{className:C.infoTitle,children:e.contact.info.title}),l.jsxs("div",{className:C.infoList,children:[l.jsxs("div",{className:C.infoItem,children:[l.jsx("div",{className:C.infoIcon,children:l.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[l.jsx("path",{d:"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"}),l.jsx("polyline",{points:"22,6 12,13 2,6"})]})}),l.jsxs("div",{children:[l.jsx("h3",{children:e.contact.info.email}),l.jsx("a",{href:"mailto:info@ragusa-it.dev",children:"info@ragusa-it.dev"})]})]}),l.jsxs("div",{className:C.infoItem,children:[l.jsx("div",{className:C.infoIcon,children:l.jsx("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:l.jsx("path",{d:"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"})})}),l.jsxs("div",{children:[l.jsx("h3",{children:e.contact.info.github}),l.jsx("a",{href:"https://github.com/ragusa-it",target:"_blank",rel:"noopener noreferrer",children:"github.com/ragusa-it"})]})]})]})]})]})})})]})}function Yl(){return l.jsx(Ho,{children:l.jsxs(ko,{children:[l.jsx(Ns,{}),l.jsx(gs,{}),l.jsxs(io,{children:[l.jsx(ge,{path:"/",element:l.jsx(Ma,{})}),l.jsx(ge,{path:"/about",element:l.jsx(pl,{})}),l.jsx(ge,{path:"/contact",element:l.jsx(ql,{})})]}),l.jsx(Ls,{})]})})}kn.createRoot(document.getElementById("root")).render(l.jsx(a.StrictMode,{children:l.jsx(Yl,{})}));