1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,194182,(e,t,r)=>{t.exports=e.r(161457)},531430,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return a}});class n extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class a extends URLSearchParams{append(){throw new n}delete(){throw new n}set(){throw new n}sort(){throw new n}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},563933,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ServerInsertedHTMLContext:function(){return i},useServerInsertedHTML:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(952456)._(e.r(191788)),i=o.default.createContext(null);function s(e){let t=(0,o.useContext)(i);t&&t(e)}},212098,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={UnrecognizedActionError:function(){return o},unstable_isUnrecognizedActionError:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});class o extends Error{constructor(...e){super(...e),this.name="UnrecognizedActionError"}}function i(e){return!!(e&&"object"==typeof e&&e instanceof o)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},456781,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={bindSnapshot:function(){return l},createAsyncLocalStorage:function(){return c},createSnapshot:function(){return u}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class i{disable(){throw o}getStore(){}run(){throw o}exit(){throw o}enterWith(){throw o}static bind(e){return e}}let s="undefined"!=typeof globalThis&&globalThis.AsyncLocalStorage;function c(){return s?new s:new i}function l(e){return s?s.bind(e):i.bind(e)}function u(){return s?s.snapshot():function(e,...t){return e(...t)}}},677292,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"actionAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(456781).createAsyncLocalStorage)()},330324,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"actionAsyncStorage",{enumerable:!0,get:function(){return n.actionAsyncStorageInstance}});let n=e.r(677292)},153656,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getRedirectError:function(){return c},getRedirectStatusCodeFromError:function(){return m},getRedirectTypeFromError:function(){return f},getURLFromRedirectError:function(){return d},permanentRedirect:function(){return u},redirect:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(40184),i=e.r(301939),s="undefined"==typeof window?e.r(330324).actionAsyncStorage:void 0;function c(e,t,r=o.RedirectStatusCode.TemporaryRedirect){let n=Object.defineProperty(Error(i.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n.digest=`${i.REDIRECT_ERROR_CODE};${t};${e};${r};`,n}function l(e,t){throw c(e,t??=s?.getStore()?.isAction?i.RedirectType.push:i.RedirectType.replace,o.RedirectStatusCode.TemporaryRedirect)}function u(e,t=i.RedirectType.replace){throw c(e,t,o.RedirectStatusCode.PermanentRedirect)}function d(e){return(0,i.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function f(e){if(!(0,i.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,
1configurable:!0});return e.digest.split(";",2)[1]}function m(e){if(!(0,i.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(e.digest.split(";").at(-2))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},532075,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"notFound",{enumerable:!0,get:function(){return o}});let n=e.r(991622),a=`${n.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function o(){let e=Object.defineProperty(Error(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw e.digest=a,e}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},569790,(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"forbidden",{enumerable:!0,get:function(){return n}}),e.r(991622).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},4047,(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unauthorized",{enumerable:!0,get:function(){return n}}),e.r(991622).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},396132,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,a.isNextRouterError)(t)||(0,n.isBailoutToCSRError)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let n=e.r(14760),a=e.r(68934);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},924616,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={isHangingPromiseRejectionError:function(){return o},makeDevtoolsIOAwarePromise:function(){return d},makeHangingPromise:function(){return l}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===i}let i="HANGING_PROMISE_REJECTION";class s extends Error{constructor(e,t){super(`During prerendering, ${t} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${t} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${e}".`),this.route=e,this.expression=t,this.digest=i}}let c=new WeakMap;function l(e,t,r){if(e.aborted)return Promise.reject(new s(t,r));{let n=new Promise((n,a)=>{let o=a.bind(null,new s(t,r)),i=c.get(e);if(i)i.push(o);else{let t=[o];c.set(e,t),e.addEventListener("abort",()=>{for(let e=0;e<t.length;e++)t[e]()},{once:!0})}});return n.catch(u),n}}function u(){}function d(e,t,r){return t.stagedRendering?t.stagedRendering.delayUntilStage(r,void 0,e):new Promise(t=>{setTimeout(()=>{t(e)},0)})}},377989,(e,t,r)=>{"use strict";
1Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isPostpone",{enumerable:!0,get:function(){return a}});let n=Symbol.for("react.postpone");function a(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}},893733,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DynamicServerError:function(){return i},isDynamicServerError:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o="DYNAMIC_SERVER_USAGE";class i extends Error{constructor(e){super(`Dynamic server usage: ${e}`),this.description=e,this.digest=o}}function s(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===o}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},984755,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={StaticGenBailoutError:function(){return i},isStaticGenBailoutError:function(){return s}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o="NEXT_STATIC_GEN_BAILOUT";class i extends Error{constructor(...e){super(...e),this.code=o}}function s(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===o}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},561318,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workUnitAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(456781).createAsyncLocalStorage)()},986357,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ACTION_HEADER:function(){return i},FLIGHT_HEADERS:function(){return p},NEXT_ACTION_NOT_FOUND_HEADER:function(){return j},NEXT_DID_POSTPONE_HEADER:function(){return g},NEXT_HMR_REFRESH_HASH_COOKIE:function(){return d},NEXT_HMR_REFRESH_HEADER:function(){return u},NEXT_HTML_REQUEST_ID_HEADER:function(){return _},NEXT_IS_PRERENDER_HEADER:function(){return v},NEXT_REQUEST_ID_HEADER:function(){return w},NEXT_REWRITTEN_PATH_HEADER:function(){return x},NEXT_REWRITTEN_QUERY_HEADER:function(){return b},NEXT_ROUTER_PREFETCH_HEADER:function(){return c},NEXT_ROUTER_SEGMENT_PREFETCH_HEADER:function(){return l},NEXT_ROUTER_STALE_TIME_HEADER:function(){return y},NEXT_ROUTER_STATE_TREE_HEADER:function(){return s},NEXT_RSC_UNION_QUERY:function(){return h},NEXT_URL:function(){return f},RSC_CONTENT_TYPE_HEADER:function(){return m},RSC_HEADER:function(){return o}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o="rsc",i="next-action",s="next-router-state-tree",c="next-router-prefetch",l="next-router-segment-prefetch",u="next-hmr-refresh",d="__next_hmr_refresh_hash__",f="next-url",m="text/x-component",p=[o,s,c,u,l],h="_rsc",y="x-nextjs-stale-time",g="x-nextjs-postponed",x="x-nextjs-rewritten-path",b="x-nextjs-rewritten-query",v="x-nextjs-prerender",j="x-nextjs-action-not-found",w="x-nextjs-request-id",_="x-nextjs-html-request-id";("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},119202,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getCacheSignal:function(){return y},getDraftModeProviderForCacheScope:function(){return h},getHmrRefreshHash:function(){return f},getPrerenderResumeDataCache:function(){return u},getRenderResumeDataCache:function(){return d},getRuntimeStagePromise:function(){return g},getServerComponentsHmrCache:function(){return p},isHmrRefresh:function(){return m},throwForMissingRequestStore:function(){return c},throwInvariantForMissingStore:function(){return l},workUnitAsyncStorage:function(){return o.workUnitAsyncStorageInstance}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(561318),i=e.r(986357),s=e.r(7117);function c(e){throw Object.defineProperty(Error(`\`${e}\` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E251",enumerable:!1,
1configurable:!0})}function l(){throw Object.defineProperty(new s.InvariantError("Expected workUnitAsyncStorage to have a store."),"__NEXT_ERROR_CODE",{value:"E696",enumerable:!1,configurable:!0})}function u(e){switch(e.type){case"prerender":case"prerender-runtime":case"prerender-ppr":case"prerender-client":return e.prerenderResumeDataCache;case"request":if(e.prerenderResumeDataCache)return e.prerenderResumeDataCache;case"prerender-legacy":case"cache":case"private-cache":case"unstable-cache":return null;default:return e}}function d(e){switch(e.type){case"request":case"prerender":case"prerender-runtime":case"prerender-client":if(e.renderResumeDataCache)return e.renderResumeDataCache;case"prerender-ppr":return e.prerenderResumeDataCache??null;case"cache":case"private-cache":case"unstable-cache":case"prerender-legacy":return null;default:return e}}function f(e,t){if(e.dev)switch(t.type){case"cache":case"private-cache":case"prerender":case"prerender-runtime":return t.hmrRefreshHash;case"request":var r;return null==(r=t.cookies.get(i.NEXT_HMR_REFRESH_HASH_COOKIE))?void 0:r.value}}function m(e,t){if(e.dev)switch(t.type){case"cache":case"private-cache":case"request":return t.isHmrRefresh??!1}return!1}function p(e,t){if(e.dev)switch(t.type){case"cache":case"private-cache":case"request":return t.serverComponentsHmrCache}}function h(e,t){if(e.isDraftMode)switch(t.type){case"cache":case"private-cache":case"unstable-cache":case"prerender-runtime":case"request":return t.draftMode}}function y(e){switch(e.type){case"prerender":case"prerender-client":case"prerender-runtime":return e.cacheSignal;case"request":if(e.cacheSignal)return e.cacheSignal;case"prerender-ppr":case"prerender-legacy":case"cache":case"private-cache":case"unstable-cache":return null;default:return e}}function g(e){switch(e.type){case"prerender-runtime":case"private-cache":return e.runtimeStagePromise;case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"unstable-cache":return null;default:return e}}},472536,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,e.r(456781).createAsyncLocalStorage)()},398401,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=e.r(472536)},835361,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={METADATA_BOUNDARY_NAME:function(){return o},OUTLET_BOUNDARY_NAME:function(){return s},ROOT_LAYOUT_BOUNDARY_NAME:function(){return c},VIEWPORT_BOUNDARY_NAME:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o="__next_metadata_boundary__",i="__next_viewport_boundary__",s="__next_outlet_boundary__",c="__next_root_layout_boundary__"},258155,(e,t,r)=>{"use strict";var n=e.i(350461);Object.defineProperty(r,"__esModule",{value:!0});var a={atLeastOneTask:function(){return c},scheduleImmediate:function(){return s},scheduleOnNextTick:function(){return i},waitAtLeastOneReactRenderTask:function(){return l}};for(var o in a)Object.defineProperty(r,o,{enumerable:!0,get:a[o]});let i=e=>{Promise.resolve().then(()=>{n.default.nextTick(e)})},s=e=>{setImmediate(e)};function c(){return new Promise(e=>s(e))}function l(){return new Promise(e=>setImmediate(e))}},69123,(e,t,r)=>{"use strict";function n(){let e,t,r=new Promise((r,n)=>{e=r,t=n});return{resolve:e,reject:t,promise:r}}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createPromiseWithResolvers",{enumerable:!0,get:function(){return n}})},942008,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a={RenderStage:function(){return c},StagedRenderingController:function(){return l}};for(var o in a)Object.defineProperty(r,o,{enumerable:!0,get:a[o]});let i=e.r(7117),s=e.r(69123);var c=((n={})[n.Static=1]="Static",n[n.Runtime=2]="Runtime",n[n.Dynamic=3]="Dynamic",n);
1class l{constructor(e=null){this.abortSignal=e,this.currentStage=1,this.runtimeStagePromise=(0,s.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,s.createPromiseWithResolvers)(),e&&e.addEventListener("abort",()=>{let{reason:t}=e;this.currentStage<2&&(this.runtimeStagePromise.promise.catch(u),this.runtimeStagePromise.reject(t)),this.currentStage<3&&(this.dynamicStagePromise.promise.catch(u),this.dynamicStagePromise.reject(t))},{once:!0})}advanceStage(e){!(this.currentStage>=e)&&(this.currentStage=e,e>=2&&this.runtimeStagePromise.resolve(),e>=3&&this.dynamicStagePromise.resolve())}getStagePromise(e){switch(e){case 2:return this.runtimeStagePromise.promise;case 3:return this.dynamicStagePromise.promise;default:throw Object.defineProperty(new i.InvariantError(`Invalid render stage: ${e}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}}waitForStage(e){return this.getStagePromise(e)}delayUntilStage(e,t,r){var n,a,o;let i,s=(n=this.getStagePromise(e),a=t,o=r,i=new Promise((e,t)=>{n.then(e.bind(null,o),t)}),void 0!==a&&(i.displayName=a),i);return this.abortSignal&&s.catch(u),s}}function u(){}},874571,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n,a,o={Postpone:function(){return C},PreludeState:function(){return Q},abortAndThrowOnSynchronousRequestDataAccess:function(){return P},abortOnSynchronousPlatformIOAccess:function(){return S},accessedDynamicData:function(){return H},annotateDynamicAccess:function(){return B},consumeDynamicAccess:function(){return L},createDynamicTrackingState:function(){return b},createDynamicValidationState:function(){return v},createHangingInputAbortSignal:function(){return F},createRenderInBrowserAbortSignal:function(){return U},delayUntilRuntimeStage:function(){return ee},formatDynamicAPIAccesses:function(){return $},getFirstDynamicReason:function(){return j},isDynamicPostpone:function(){return k},isPrerenderInterruptedError:function(){return I},logDisallowedDynamicError:function(){return J},markCurrentScopeAsDynamic:function(){return w},postponeWithTracking:function(){return N},throwIfDisallowedDynamic:function(){return Z},throwToInterruptStaticGeneration:function(){return _},trackAllowedDynamicAccess:function(){return K},trackDynamicDataInDynamicRender:function(){return E},trackSynchronousPlatformIOAccessInDev:function(){return O},useDynamicRouteParams:function(){return z},useDynamicSearchParams:function(){return X}};for(var i in o)Object.defineProperty(r,i,{enumerable:!0,get:o[i]});let s=(n=e.r(191788))&&n.__esModule?n:{default:n},c=e.r(893733),l=e.r(984755),u=e.r(119202),d=e.r(398401),f=e.r(924616),m=e.r(835361),p=e.r(258155),h=e.r(14760),y=e.r(7117),g=e.r(942008),x="function"==typeof s.default.unstable_postpone;function b(e){return{isDebugDynamicAccesses:e,dynamicAccesses:[],syncDynamicErrorWithStack:null}}function v(){return{hasSuspenseAboveBody:!1,hasDynamicMetadata:!1,hasDynamicViewport:!1,hasAllowedDynamic:!1,dynamicErrors:[]}}function j(e){var t;return null==(t=e.dynamicAccesses[0])?void 0:t.expression}function w(e,t,r){if(t)switch(t.type){case"cache":case"unstable-cache":case"private-cache":return}if(!e.forceDynamic&&!e.forceStatic){if(e.dynamicShouldError)throw Object.defineProperty(new l.StaticGenBailoutError(`Route ${e.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${r}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E553",enumerable:!1,configurable:!0});if(t)switch(t.type){case"prerender-ppr":return N(e.route,r,t.dynamicTracking);case"prerender-legacy":t.revalidate=0;let n=Object.defineProperty(new c.DynamicServerError(`Route ${e.route} couldn't be rendered statically because it used ${r}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E550",enumerable:!1,configurable:!0});throw e.dynamicUsageDescription=r,e.dynamicUsageStack=n.stack,n}}}function _(e,t,r){let n=Object.defineProperty(new c.DynamicServerError(`Route ${t.route} couldn't be rendered statically because it used \`${e}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E558",enumerable:!1,
1configurable:!0});throw r.revalidate=0,t.dynamicUsageDescription=e,t.dynamicUsageStack=n.stack,n}function E(e){switch(e.type){case"cache":case"unstable-cache":case"private-cache":return}}function R(e,t,r){let n=M(`Route ${e} needs to bail out of prerendering at this point because it used ${t}.`);r.controller.abort(n);let a=r.dynamicTracking;a&&a.dynamicAccesses.push({stack:a.isDebugDynamicAccesses?Error().stack:void 0,expression:t})}function S(e,t,r,n){let a=n.dynamicTracking;R(e,t,n),a&&null===a.syncDynamicErrorWithStack&&(a.syncDynamicErrorWithStack=r)}function O(e){e.stagedRendering&&e.stagedRendering.advanceStage(g.RenderStage.Dynamic)}function P(e,t,r,n){if(!1===n.controller.signal.aborted){R(e,t,n);let a=n.dynamicTracking;a&&null===a.syncDynamicErrorWithStack&&(a.syncDynamicErrorWithStack=r)}throw M(`Route ${e} needs to bail out of prerendering at this point because it used ${t}.`)}function C({reason:e,route:t}){let r=u.workUnitAsyncStorage.getStore();N(t,e,r&&"prerender-ppr"===r.type?r.dynamicTracking:null)}function N(e,t,r){(function(){if(!x)throw Object.defineProperty(Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E224",enumerable:!1,configurable:!0})})(),r&&r.dynamicAccesses.push({stack:r.isDebugDynamicAccesses?Error().stack:void 0,expression:t}),s.default.unstable_postpone(T(e,t))}function T(e,t){return`Route ${e} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`}function k(e){return"object"==typeof e&&null!==e&&"string"==typeof e.message&&A(e.message)}function A(e){return e.includes("needs to bail out of prerendering at this point because it used")&&e.includes("Learn more: https://nextjs.org/docs/messages/ppr-caught-error")}if(!1===A(T("%%%","^^^")))throw Object.defineProperty(Error("Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E296",enumerable:!1,configurable:!0});let D="NEXT_PRERENDER_INTERRUPTED";function M(e){let t=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t.digest=D,t}function I(e){return"object"==typeof e&&null!==e&&e.digest===D&&"name"in e&&"message"in e&&e instanceof Error}function H(e){return e.length>0}function L(e,t){return e.dynamicAccesses.push(...t.dynamicAccesses),e.dynamicAccesses}function $(e){return e.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" (<anonymous>)")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: 2${t}`))}function U(){let e=new AbortController;return e.abort(Object.defineProperty(new h.BailoutToCSRError("Render in Browser"),"__NEXT_ERROR_CODE",{value:"E721",enumerable:!1,configurable:!0})),e.signal}function F(e){switch(e.type){case"prerender":case"prerender-runtime":let t=new AbortController;if(e.cacheSignal)e.cacheSignal.inputReady().then(()=>{t.abort()});else{let r=(0,u.getRuntimeStagePromise)(e);r?r.then(()=>(0,p.scheduleOnNextTick)(()=>t.abort())):(0,p.scheduleOnNextTick)(()=>t.abort())}return t.signal;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":return}}function B(e,t){let r=t.dynamicTracking;r&&r.dynamicAccesses.push({stack:r.isDebugDynamicAccesses?Error().stack:void 0,expression:e})}function z(e){let t=d.workAsyncStorage.getStore(),r=u.workUnitAsyncStorage.getStore();if(t&&r)switch(r.type){case"prerender-client":case"prerender":{let n=r.fallbackRouteParams;n&&n.size>0&&s.default.use((0,f.makeHangingPromise)(r.renderSignal,t.route,e));break}case"prerender-ppr":{let n=r.fallbackRouteParams;if(n&&n.size>0)return N(t.route,e,r.dynamicTracking);break}case"prerender-runtime":throw Object.defineProperty(new y.InvariantError(`\`${e}\` was called during a runtime prerender. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E771",enumerable:!1,
2configurable:!0});case"cache":case"private-cache":throw Object.defineProperty(new y.InvariantError(`\`${e}\` was called inside a cache scope. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0})}}function X(e){let t=d.workAsyncStorage.getStore(),r=u.workUnitAsyncStorage.getStore();if(t)switch(!r&&(0,u.throwForMissingRequestStore)(e),r.type){case"prerender-client":s.default.use((0,f.makeHangingPromise)(r.renderSignal,t.route,e));break;case"prerender-legacy":case"prerender-ppr":if(t.forceStatic)return;throw Object.defineProperty(new h.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});case"prerender":case"prerender-runtime":throw Object.defineProperty(new y.InvariantError(`\`${e}\` was called from a Server Component. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E795",enumerable:!1,configurable:!0});case"cache":case"unstable-cache":case"private-cache":throw Object.defineProperty(new y.InvariantError(`\`${e}\` was called inside a cache scope. Next.js should be preventing ${e} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0});case"request":return}}let W=/\n\s+at Suspense \(<anonymous>\)/,q=RegExp(`\\n\\s+at Suspense \\(<anonymous>\\)(?:(?!\\n\\s+at (?:body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6) \\(<anonymous>\\))[\\s\\S])*?\\n\\s+at ${m.ROOT_LAYOUT_BOUNDARY_NAME} \\([^\\n]*\\)`),G=RegExp(`\\n\\s+at ${m.METADATA_BOUNDARY_NAME}[\\n\\s]`),Y=RegExp(`\\n\\s+at ${m.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`),V=RegExp(`\\n\\s+at ${m.OUTLET_BOUNDARY_NAME}[\\n\\s]`);function K(e,t,r,n){if(!V.test(t)){if(G.test(t)){r.hasDynamicMetadata=!0;return}if(Y.test(t)){r.hasDynamicViewport=!0;return}if(q.test(t)){r.hasAllowedDynamic=!0,r.hasSuspenseAboveBody=!0;return}else if(W.test(t)){r.hasAllowedDynamic=!0;return}else{var a,o;let i;if(n.syncDynamicErrorWithStack)return void r.dynamicErrors.push(n.syncDynamicErrorWithStack);let s=(a=`Route "${e.route}": Uncached data was accessed outside of <Suspense>. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`,o=t,(i=Object.defineProperty(Error(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})).stack=i.name+": "+a+o,i);return void r.dynamicErrors.push(s)}}}var Q=((a={})[a.Full=0]="Full",a[a.Empty=1]="Empty",a[a.Errored=2]="Errored",a);function J(e,t){console.error(t),e.dev||(e.hasReadableErrorStacks?console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \`next dev\`, then open "${e.route}" in your browser to investigate the error.`):console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following: 3 - Start the app in development mode by running \`next dev\`, then open "${e.route}" in your browser to investigate the error. 4 - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`))}function Z(e,t,r,n){if(n.syncDynamicErrorWithStack)throw J(e,n.syncDynamicErrorWithStack),new l.StaticGenBailoutError;if(0!==t){if(r.hasSuspenseAboveBody)return;let n=r.dynamicErrors;if(n.length>0){for(let t=0;t<n.length;t++)J(e,n[t]);throw new l.StaticGenBailoutError}if(r.hasDynamicViewport)throw console.error(`Route "${e.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),new l.StaticGenBailoutError;if(1===t)throw console.error(`Route "${e.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`),new l.StaticGenBailoutError}else if(!1===r.hasAllowedDynamic&&r.hasDynamicMetadata)throw console.error(`Route "${e.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),new l.StaticGenBailoutError}function ee(e,t){return e.runtimeStagePromise?e.runtimeStagePromise.then(()=>t):t}},636951,(e,t,r)=>{"use strict";
4Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,i.isNextRouterError)(t)||(0,o.isBailoutToCSRError)(t)||(0,c.isDynamicServerError)(t)||(0,s.isDynamicPostpone)(t)||(0,a.isPostpone)(t)||(0,n.isHangingPromiseRejectionError)(t)||(0,s.isPrerenderInterruptedError)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let n=e.r(924616),a=e.r(377989),o=e.r(14760),i=e.r(68934),s=e.r(874571),c=e.r(893733);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},273210,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_rethrow",{enumerable:!0,get:function(){return n}});let n="undefined"==typeof window?e.r(636951).unstable_rethrow:e.r(396132).unstable_rethrow;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},683531,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ReadonlyURLSearchParams:function(){return o.ReadonlyURLSearchParams},RedirectType:function(){return s.RedirectType},forbidden:function(){return l.forbidden},notFound:function(){return c.notFound},permanentRedirect:function(){return i.permanentRedirect},redirect:function(){return i.redirect},unauthorized:function(){return u.unauthorized},unstable_isUnrecognizedActionError:function(){return f},unstable_rethrow:function(){return d.unstable_rethrow}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(531430),i=e.r(153656),s=e.r(301939),c=e.r(532075),l=e.r(569790),u=e.r(4047),d=e.r(273210);function f(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},829844,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return f.RedirectType},ServerInsertedHTMLContext:function(){return u.ServerInsertedHTMLContext},forbidden:function(){return f.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return f.permanentRedirect},redirect:function(){return f.redirect},unauthorized:function(){return f.unauthorized},unstable_isUnrecognizedActionError:function(){return d.unstable_isUnrecognizedActionError},unstable_rethrow:function(){return f.unstable_rethrow},useParams:function(){return x},usePathname:function(){return y},useRouter:function(){return g},useSearchParams:function(){return h},useSelectedLayoutSegment:function(){return v},useSelectedLayoutSegments:function(){return b},useServerInsertedHTML:function(){return u.useServerInsertedHTML}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(952456)._(e.r(191788)),i=e.r(701085),s=e.r(470008),c=e.r(977915),l=e.r(531430),u=e.r(563933),d=e.r(212098),f=e.r(683531),m="undefined"==typeof window?e.r(874571).useDynamicRouteParams:void 0,p="undefined"==typeof window?e.r(874571).useDynamicSearchParams:void 0;function h(){p?.("useSearchParams()");let e=(0,o.useContext)(s.SearchParamsContext);return(0,o.useMemo)(()=>e?new l.ReadonlyURLSearchParams(e):null,[e])}function y(){return m?.("usePathname()"),(0,o.useContext)(s.PathnameContext)}function g(){let e=(0,o.useContext)(i.AppRouterContext);if(null===e)throw Object.defineProperty(Error("invariant expected app router to be mounted"),"__NEXT_ERROR_CODE",{value:"E238",enumerable:!1,configurable:!0});return e}function x(){return m?.("useParams()"),(0,o.useContext)(s.PathParamsContext)}function b(e="children"){m?.("useSelectedLayoutSegments()");let t=(0,o.useContext)(i.LayoutRouterContext);return t?(0,c.getSelectedLayoutSegmentPath)(t.parentTree,e):null}function v(e="children"){m?.("useSelectedLayoutSegment()"),(0,o.useContext)(s.NavigationPromisesContext);let t=b(e);return(0,c.computeSelectedLayoutSegment)(t,e)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esMo
4dule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},217837,(e,t,r)=>{t.exports=e.r(829844)},360808,722309,276112,541146,620882,774984,236695,e=>{"use strict";var t=e.i(391398),r=e.i(191788),n=e.i(41158),a=e.i(350461);let o=!1;function i(e){let t=e||a.default.env.NEXT_PUBLIC_CLARITY_ID;if(!o&&t){var r,n,i;let e,a;if(document.getElementById("ms-clarity")){o=!0;return}o=!0,r=window,n=document,r[i="clarity"]=r[i]||function(){(r[i].q=r[i].q||[]).push(arguments)},(e=n.createElement("script")).async=!0,e.id="ms-clarity",e.src="https://www.clarity.ms/tag/"+t,(a=n.getElementsByTagName("script")[0]).parentNode.insertBefore(e,a)}}let s="whp-cookie-consent";function c({clarityId:e}){let[a,o]=(0,r.useState)(!1);(0,r.useEffect)(()=>{try{let t=localStorage.getItem(s);"granted"===t?i(e):"denied"!==t&&o(!0)}catch{o(!0)}},[e]),(0,r.useEffect)(()=>{if(!a)return;let e=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=e}},[a]);let c=t=>{let r;try{localStorage.setItem(s,t)}catch{}r=window,r.gtag?.("consent","update",{analytics_storage:"granted"===t?"granted":"denied"}),"granted"===t&&i(e),o(!1)};return a?(0,t.jsx)("div",{className:"fixed inset-0 z-[80] flex items-center justify-center bg-background/50 p-4 backdrop-blur-md",role:"dialog","aria-modal":"true","aria-label":"Cookie consent",children:(0,t.jsxs)("div",{className:"w-full max-w-md rounded-2xl border border-foreground
4/10 bg-background p-7 text-foreground shadow-2xl",children:[(0,t.jsx)("h2",{className:"text-lg font-bold",children:"Cookies"}),(0,t.jsxs)("p",{className:"mt-3 text-sm font-light leading-relaxed",children:["We use cookies to understand how the site is used and improve it. You can accept analytics cookies or continue with only the essentials. See our"," ",(0,t.jsx)(n.default,{href:"/cookies",className:"underline hover:opacity-70",children:"Cookie Policy"})," ","and"," ",(0,t.jsx)(n.default,{href:"/privacy",className:"underline hover:opacity-70",children:"Privacy Policy"}),"."]}),(0,t.jsxs)("div",{className:"mt-6 flex items-center justify-end gap-3",children:[(0,t.jsx)("button",{type:"button",onClick:()=>c("denied"),className:"rounded-lg px-4 py-2 text-sm font-medium text-foreground/70 transition-colors hover:text-foreground",children:"Reject"}),(0,t.jsx)("button",{type:"button",onClick:()=>c("granted"),className:"rounded-lg bg-foreground px-5 py-2 text-sm font-medium text-background transition-all hover:bg-foreground/80",children:"Accept"})]})]})}):null}e.s(["CookieConsent",()=>c],360808);var l=e.i(730943),u=e.i(198311),d=e.i(203828);let f=null,m=new Set;function p(){m.forEach(e=>e())}function h(e){let t={imageUrl:e.imageUrl??"",alt:e.alt??"",title:e.title??"",direction:e.direction??"up",mode:e.mode??"slide"};if(e.projectId){let r=document.querySelector(`#project-image-${e.projectId}`);if(r?.currentSrc){t.imageUrl=r.currentSrc,y(t);return}}if(e.imageUrl){let r=new window.Image;r.src=e.imageUrl,r.onload=()=>{f||y(t)},setTimeout(()=>{f||y(t)},300)}else y(t)}function y(e){f=e,document.querySelectorAll(".right-side").forEach(e=>{let t=e.getBoundingClientRect();e.style.position="absolute";let r=e.offsetParent?.getBoundingClientRect();e.style.top=`${t.top-(r?.top??0)}px`,e.style.left=`${t.left-(r?.left??0)}px`,e.style.right="auto",e.style.bottom="auto",e.style.width=`${t.width}px`,e.style.height=`${t.height}px`});let t=window.ScrollTrigger;t?.getAll().forEach(e=>e.disable(!1));let r=window.scrollY,n=document.querySelector("[data-page-content]");
4n&&(n.style.transformOrigin=`center ${r+window.innerHeight/2}px`),document.body.style.position="fixed",document.body.style.top=`-${r}px`,document.body.style.left="0",document.body.style.right="0",document.body.style.width="100%",document.body.style.overflow="hidden",document.documentElement.setAttribute("data-page-transitioning",""),p()}function g(){return null!==f}function x(){if(null===f)return;f=null;let e=document.documentElement;e.setAttribute("data-page-transition-reset",""),e.removeAttribute("data-page-transitioning"),document.body.style.position="",document.body.style.top="",document.body.style.left="",document.body.style.right="",document.body.style.width="",document.body.style.overflow="";let t=document.querySelector("[data-page-content]");t&&(t.style.transformOrigin=""),window.scrollTo({top:0,behavior:"instant"});let r=window.ScrollTrigger;r?.getAll().forEach(e=>e.enable()),requestAnimationFrame(()=>{requestAnimationFrame(()=>{e.removeAttribute("data-page-transition-reset")})}),p()}function b(e){return m.add(e),()=>m.delete(e)}function v(){return f}function j(){var e;let n=(0,r.useSyncExternalStore)(b,v,()=>null),a=(0,d.useRouter)(),[o,i]=(0,r.useState)(!1);return((0,r.useEffect)(()=>i(!0),[]),(0,r.useEffect)(()=>{let e=()=>{setTimeout(()=>x(),400)},t=()=>{f&&x()};return a.events.on("routeChangeComplete",e),a.events.on("routeChangeError",t),()=>{a.events.off("routeChangeComplete",e),a.events.off("routeChangeError",t)}},[a.events]),o)?(0,l.createPortal)((0,t.jsx)(t.Fragment,{children:n&&(0,t.jsxs)("div",{className:"fixed inset-0 z-40 pointer-events-none",children:[n.title&&(0,t.jsx)("div",{className:"fixed inset-0 z-10 flex items-center justify-center ",children:(0,t.jsx)("div",{className:"text-[6vw] text-center text-white text-balance font-bold pointer-events-none",children:n.title})}),(0,t.jsx)("div",{className:"fixed top-1/2 left-1/2 mt-20 -translate-x-1/2 -translate-y-1/2 z-10",children:(0,t.jsxs)("svg",{className:"size-5 animate-spin text-white mix-blend-difference",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[(0,t.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),(0,t.jsx)("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]})}),(0,t.jsx)(u.motion.div,{className:"w-full h-screen fixed inset-0",initial:function(e){switch(e){case"up":return{marginTop:"100vh"};case"down":return{marginTop:"-100vh"};case"left":return{marginLeft:"100vw"};case"right":return{marginLeft:"-100vw"}}}(n.direction),animate:"left"===(e=n.direction)||"right"===e?{marginLeft:"0vw"}:{marginTop:"0vh"},transition:{ease:"anticipate",duration:.8,delay:.1},children:(0,t.jsxs)("div",{className:"relative w-full h-full flex items-center justify-center",children:[(0,t.jsx)("div",{className:"bg-black/20 inset-0 absolute z-10 "}),(0,t.jsx)("img",{src:n.imageUrl,alt:n.alt,className:"absolute inset-0 w-full h-full object-cover"})]})})]})}),document.body):null}e.s(["TransitionOverlay",()=>j,"isTransitionOverlayActive",()=>g,"showTransitionOverlay",()=>h],722309),e.s(["ContactModal",()=>A],276112);var w=e.i(498817),_=e.i(135598),E=e.i(868462),R=e.i(188478),S=e.i(770084),O=e.i(519491),P=e.i(303115),C=e.i(770534);let N=[{key:"name",label:"What's your name?",placeholder:"Type your name...",type:"text"},{key:"email",label:"What's your email?",placeholder:"[email protected]",type:"email"},{key:"message",label:"Tell us about your project",placeholder:"I'm looking for help with...",type:"textarea"}],T={enter:e=>({y:e>0?40:-40,opacity:0}),center:{y:0,opacity:1},exit:e=>({y:e>0?-40:40,opacity:0})};function k(){let[e,n]=(0,r.useState)(0),[a,o]=(0,r.useState)(1),[i,s]=(0,r.useState)({name:"",email:"",message:""}),[c,l]=(0,r.useState)("idle"),d=(0,r.useRef)(null),f=N[e],m=i[f.key],p=e===N.length-1,h=(e+1)/(N.length+1)*100;(0,r.useEffect)(()=>{let e=setTimeout(()=>d.current?.focus(),350);return()=>clearTimeout(e)},[e]);let y=(0,r.useCallback)(()=>"name"===f.key?m.trim().length>0:"email"===f.key?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(m):"message"===f.key&&m.trim().length>0,[f.key,m]),g=(0,r.useCallback)(async()=>
4{if(y()){if(p){l("sending");try{let e=await fetch("/api/contact",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});l(e.ok?"sent":"error")}catch{l("error")}return}o(1),n(e=>e+1)}},[y,p,i]),x=(0,r.useCallback)(()=>{0!==e&&(o(-1),n(e=>e-1))},[e]),b=(0,r.useCallback)(e=>{"Enter"===e.key&&!e.shiftKey&&("textarea"!==f.type||e.metaKey||e.ctrlKey)&&(e.preventDefault(),g())},[g,f.type]);return"sent"===c?(0,t.jsxs)(u.motion.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,t.jsx)(u.motion.div,{initial:{scale:0},animate:{scale:1},transition:{delay:.2,type:"spring",stiffness:200},className:"w-16 h-16 rounded-full bg-foreground flex items-center justify-center mb-6",children:(0,t.jsx)(S.Check,{className:"w-8 h-8 text-background"})}),(0,t.jsxs)("h3",{className:"text-2xl font-bold text-foreground mb-2",children:["Thanks, ",i.name,"!"]}),(0,t.jsx)("p",{className:"text-foreground/50",children:"We'll be in touch soon."})]}):"error"===c?(0,t.jsxs)(u.motion.div,{initial:{opacity:0}
4,animate:{opacity:1},className:"flex flex-col items-center justify-center py-12 text-center",children:[(0,t.jsx)("h3",{className:"text-2xl font-bold text-foreground mb-2",children:"Something went wrong"}),(0,t.jsx)("p",{className:"text-foreground/50 mb-6",children:"Please try again or email us directly."}),(0,t.jsx)("button",{onClick:()=>l("idle"),className:"text-sm underline text-foreground/70 hover:text-foreground",children:"Try again"})]}):(0,t.jsxs)("div",{className:"relative",children:[(0,t.jsx)("div",{className:"absolute top-0 left-0 right-0 h-0.5 bg-foreground/5 rounded-full overflow-hidden",children:(0,t.jsx)(u.motion.div,{className:"h-full bg-foreground",initial:!1,animate:{width:`${h}%`},transition:{duration:.4,ease:"easeOut"}})}),(0,t.jsxs)("div",{className:"flex items-center justify-between pt-4 pb-2",children:[(0,t.jsx)("button",{onClick:x,disabled:0===e,className:"text-xs text-foreground/30 hover:text-foreground/60 disabled:opacity-0 transition-all",children:"Back"}),(0,t.jsxs)("span",{className:"text-xs text-foreground/30",children:[e+1," / ",N.length]})]}),(0,t.jsx)("div",{className:"min-h-[200px] flex flex-col justify-center",children:(0,t.jsx)(w.AnimatePresence,{mode:"wait",custom:a,children:(0,t.jsxs)(u.motion.div,{custom:a,variants:T,initial:"enter",animate:"center",exit:"exit",transition:{duration:.3,ease:"easeOut"},children:[(0,t.jsx)("label",{className:"block text-2xl font-bold text-foreground mb-6",children:f.label}),"textarea"===f.type?(0,t.jsx)("textarea",{ref:d,value:m,onChange:e=>s({...i,[f.key]:e.target.value}),onKeyDown:b,placeholder:f.placeholder,rows:4,className:"w-full bg-transparent border-b-2 border-foreground
4/10 focus:border-foreground text-lg text-foreground placeholder:text-foreground/20 py-2 outline-none resize-none transition-colors"}):(0,t.jsx)("input",{ref:d,type:f.type,value:m,onChange:e=>s({...i,[f.key]:e.target.value}),onKeyDown:b,placeholder:f.placeholder,className:"w-full bg-transparent border-b-2 border-foreground/10 focus:border-foreground text-lg text-foreground placeholder:text-foreground/20 py-2 outline-none transition-colors"})]},e)})}),(0,t.jsxs)("div",{className:"flex items-center justify-between pt-4",children:[(0,t.jsx)("span",{className:"text-xs text-foreground/20 flex items-center gap-1",children:"textarea"===f.type?(0,t.jsx)(t.Fragment,{children:"Cmd + Enter"}):(0,t.jsxs)(t.Fragment,{children:["Press Enter ",(0,t.jsx)(O.CornerDownLeft,{className:"w-3 h-3"})]})}),(0,t.jsx)("button",{onClick:g,disabled:!y()||"sending"===c,className:"flex items-center gap-2 bg-foreground text-background px-5 py-2.5 rounded-lg text-sm font-medium disabled:opacity-30 hover:bg-foreground/80 transition-all",children:"sending"===c?"Sending...":p?"Send":(0,t.jsxs)(t.Fragment,{children:["OK ",(0,t.jsx)(R.ArrowRight,{className:"w-4 h-4"})]})})]})]})}function A(){let{isContactModalOpen:e,setIsContactModalOpen:n}=(0,r.useContext)(P.FooterCTAContext);return(0,t.jsx)(_.Root,{open:e,onOpenChange:n,children:(0,t.jsx)(w.AnimatePresence,{children:e&&(0,t.jsxs)(_.Portal,{forceMount:!0,children:[(0,t.jsx)(_.Overlay,{asChild:!0,forceMount:!0,children:(0,t.jsx)(u.motion.div,{className:"fixed inset-0 z-[70] bg-background/90 backdrop-blur-sm",initial:{opacity:0}
4,animate:{opacity:1},exit:{opacity:0},transition:{duration:.3,ease:"easeOut"}})}),(0,t.jsx)(_.Content,{asChild:!0,forceMount:!0,children:(0,t.jsx)(u.motion.div,{className:"fixed left-1/2 top-1/2 z-[80] w-[90vw] max-w-lg -translate-x-1/2 -translate-y-1/2 focus:outline-none",initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.3,ease:"easeOut"},children:(0,t.jsx)(C.GlowBorder,{fillColor:"var(--background)",children:(0,t.jsxs)("div",{className:"p-6 md:p-8 text-foreground",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsx)(_.Title,{className:"text-2xl font-bold",children:"Get in touch"}),(0,t.jsxs)(_.Close,{className:"rounded-sm opacity-70 hover:opacity-100 transition-opacity focus:outline-none",children:[(0,t.jsx)(E.X,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]}),(0,t.jsx)(_.Description,{className:"sr-only",children:"Get in touch to discuss your next project."}),(0,t.jsx)(k,{})]})})})})]})})})}var D=e.i(906803),M=e.i(244411),I=e.i(207995);function H(){let{form:e,isOpen:r,closeForm:n}=(0,M.useFormPopup)();return(0,t.jsx)(_.Root,{open:r,onOpenChange:e=>!e&&n(),children:(0,t.jsx)(w.AnimatePresence,{children:r&&e&&(0,t.jsxs)(_.Portal,{forceMount:!0,children:[(0,t.jsx)(_.Overlay,{asChild:!0,forceMount:!0,children:(0,t.jsx)(u.motion.div,{className:"fixed inset-0 z-[70] bg-background/90 backdrop-blur-sm",initial:{opacity:0}
4,animate:{opacity:1},exit:{opacity:0},transition:{duration:.3,ease:"easeOut"}})}),(0,t.jsx)(_.Content,{asChild:!0,forceMount:!0,children:(0,t.jsx)(u.motion.div,{className:"fixed left-1/2 top-1/2 z-[80] w-[90vw] max-w-lg -translate-x-1/2 -translate-y-1/2 focus:outline-none",initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.3,ease:"easeOut"},children:(0,t.jsx)(C.GlowBorder,{fillColor:"var(--background)",children:(0,t.jsxs)("div",{className:"p-6 md:p-8 text-foreground",style:(0,I.typeformVars)("modal"),children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,t.jsx)(_.Title,{className:"text-2xl font-bold",children:e.title||"Get in touch"}),(0,t.jsxs)(_.Close,{className:"rounded-sm opacity-70 hover:opacity-100 transition-opacity focus:outline-none",children:[(0,t.jsx)(E.X,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]}),e.intro?(0,t.jsx)(_.Description,{className:"text-foreground/50 mb-4",children:e.intro}):(0,t.jsx)(_.Description,{className:"sr-only",children:e.title||"Contact form"}),(0,t.jsx)(L,{form:e},e._id)]})})})})]})})})}function L({form:e}){let r=e.fields||[],n=async(t,r)=>{let n=await fetch("/api/form-submit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({formId:(0,D.stegaClean)(e._id),fields:t,website:r.honeypot})});if(!n.ok)throw Error(`form-submit ${n.status}`)},a=(0,I.useTypeform)({fields:r,onSubmit:n,autoFocusFirst:!0});return"sent"===a.status?(0,t.jsx)(I.TypeformSuccess,{title:e.successMessage||"Thanks! We'll be in touch soon."}):"error"===a.status?(0,t.jsx)(I.TypeformError,{onRetry:a.retry}):(0,t.jsx)(I.TypeformStepper,{form:a,submitLabel:e.submitLabel||"Send"})}e.s(["FormPopup",()=>H],541146);let $=(0,r.createContext)({}),U=$.Provider;function F(){return(0,r.useContext)($)}e.s(["SiteSettingsProvider",0,U,"useSiteSettings",()=>F],620882);var B=e.i(17760);function z({children:e}){var n,a;let o,i=(0,d.useRouter)(),s=(0,B.useRouteContext)(),[c,l]=(0,r.useState)(!1),[f,m]=(0,r.useState)(0),p=(0,r.useRef)(!0),h=(0,r.useRef)(null),y=(0,r.useRef)(!1),x=(0,r.useRef)(!1);(0,r.useEffect)(()=>{let e=()=>{l(g()),p.current=!1},t=()=>{h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{document.documentElement.style.overflow="",p.current||y.current||(p.current=!0,x.current||window.scrollTo({top:0,behavior:"instant"}),m(e=>e+1))},1800)};return i.events.on("routeChangeStart",e),i.events.on("routeChangeComplete",t),()=>{i.events.off("routeChangeStart",e),i.events.off("routeChangeComplete",t),h.current&&clearTimeout(h.current)}},[i.events]);let b=(n=i.asPath,a=i.pathname,!!("/"===(o=n.split("?")[0].split("#")[0])||"/work"===o||"/work/[slug]"===a&&o.startsWith("/work/"))),v=!!s.previousRoute&&("home"===s.previousRoute.type||"work-listing"===s.previousRoute.type||"work-detail"===s.previousRoute.type),j=!(!s.previousRoute||s.previousRoute.path===i.asPath)&&(b&&v||b&&c);return(y.current=j,x.current=b,j)?(0,t.jsx)(t.Fragment,{children:e}):(0,t.jsx)(w.AnimatePresence,{mode:"wait",initial:!1,onExitComplete:()=>{p.current=!0},children:b?(0,t.jsx)(u.motion.div,{exit:{opacity:0,transition:{duration:.8,ease:"easeInOut"}},onAnimationStart:()=>{document.documentElement.style.overflow="hidden"},onAnimationComplete:()=>{document.documentElement.style.overflow=""},children:e},i.asPath):(0,t.jsx)(u.motion.div,{initial:{y:"-50px",opacity:0},animate:{y:"0px",opacity:1,transition:{duration:.8,ease:"anticipate"}},exit:{y:"50px",opacity:0,transition:{duration:.8,ease:"anticipate"}},style:{overflow:"clip"},onAnimationStart:e=>{document.documentElement.style.overflow="hidden",e&&"object"==typeof e&&"opacity"in e&&1===e.opacity&&window.scrollTo({top:0,behavior:"instant"})},onAnimationComplete:e=>{document.documentElement.style.overflow="",e&&"object"==typeof e&&"opacity"in e&&1===e.opacity&&(window.ScrollTrigger?.refresh(),window.scrollTo({top:0,behavior:"instant"}))},children:e},i.asPath)},f)}e.s(["PageTransition",()=>z],774984);var X=e.i(217837);function W(){let e=(0,X.useRouter)();return(0,t.jsxs)("div",{className:"fixed bottom-0 left-0 right-0 bg-black text-white px-4 py-2 flex items-center justify-between z-50",children:[(0,t.jsxs)("p",{className:"text-sm",children:["You are in preview mode."," ",(0,t.jsx)("span",{className:"text-yellow-400",children:"Content may not be published."})]}),(0,t.jsx)("button",{className:"bg-white text-black px-4 py-1 rounded-md text-sm hover:bg-gray-200 transition-colors",onClick:()=>{fetch("/api/exit-preview").then(()=>e.refresh()).catch(console.error)},children:"Exit Preview"})]})}e.s(["PreviewBanner",()=>W],236695)},81855,e=>{"use strict";var t=e.i(391398),r=e.i(41158),n=e.i(198311),a=e.i(386547),o=e.i(897607);
4function i({title:e,subtitle:i,description:s,pageCopy:c,breadcrumbTitle:l,breadcrumbLink:u,showTitle:d,eyebrow:f,className:m,animateInView:p=!1}){let h=!0===d,y=e=>((e,t=!1)=>t?{initial:{opacity:0},whileInView:{opacity:1},viewport:{once:!1,amount:.3},transition:{duration:.8,ease:"easeOut",delay:e}}:{initial:{opacity:0},animate:{opacity:1},transition:{duration:.8,ease:"easeOut",delay:e}})(e,p);return(0,t.jsx)("div",{className:(0,a.cn)("container mx-auto px-4 pt-32 md:pt-46",m),children:(0,t.jsxs)("div",{className:"max-w-7xl mx-auto text-center",children:[(0,t.jsxs)(n.motion.span,{...y(.1),className:"flex flex-row items-center justify-center gap-2 font-light",children:[l&&u&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.default,{href:u,children:(0,t.jsx)("span",{className:"opacity-50",children:l})}),(0,t.jsx)("span",{className:"sr-ony",children:"/"})]}),f&&(0,t.jsx)("span",{className:"text-base",children:f}),(0,t.jsx)("h1",{className:"sr-only",children:e})]}),(0,t.jsxs)("div",{className:(0,a.cn)("flex flex-col gap-2 md:gap-4 ",h&&""),children:[h&&(0,t.jsx)(o.AnimatedTextSplit,{content:e,splitOn:" ",separator:"Â ",as:"p",className:"text-4xl md:text-5xl lg:text-6xl font-bold text-balance pt-4",itemClassName:"inline-block",once:!0}),i&&(0,t.jsx)(n.motion.p,{...y(.6),className:"text-xl xl:text-3xl font-light text-balance max-w-4xl mx-auto sr-only",children:i})]}),(s||c)&&(0,t.jsxs)("div",{className:"pt-4",children:[s&&(0,t.jsx)(n.motion.p,{...y(.75),className:"text-4xl md:text-5xl lg:text-6xl font-bold text-balance mb-4",children:s}),c&&c.split(/\n+/).map(e=>e.trim()).filter(Boolean).map((e,r)=>(0,t.jsx)(n.motion.p,{...y(.9+.15*r),className:"text-sm xl:text-lg font-light mt-4 text-balance max-w-5xl mx-auto",children:e},r))]})]})})}e.s(["PageHeader",()=>i])},615927,e=>{"use strict";var t=e.i(391398),r=e.i(41158),n=e.i(198311);function a({items:e,onLinkClick:a}){return e?.length?(0,t.jsx)(t.Fragment,{children:e.map((e,o)=>(0,t.jsx)("div",{className:`${e.small?"text-base font-light opacity-50":"text-4xl font-bold"} overflow-hidden`,children:(0,t.jsx)(n.motion.div,{animate:{opacity:1,y:0},initial:{opacity:0,y:"100%"},transition:{duration:.3,delay:.3+.1*o,ease:"easeOut"},children:e.href?(0,t.jsx)(r.default,{href:e.href,target:e.external?"_blank":void 0,rel:e.external?"noopener noreferrer":void 0,onClick:a,scroll:!1,children:e.text}):e.text})},e._key))}):null}e.s(["Navigation",()=>a])},264942,e=>{"use strict";var t=e.i(127630),r=e.i(369547);let n=(0,r.default)("facebook",[["path",{d:"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z",key:"1jg4f8"}]]),a=(0,r.default)("github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]),o={instagram:(0,r.default)("instagram",[["rect",{width:"20",height:"20",x:"2",y:"2",rx:"5",ry:"5",key:"2e1cvw"}],["path",{d:"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z",key:"9exkf1"}],["line",{x1:"17.5",x2:"17.51",y1:"6.5",y2:"6.5",key:"r4j83e"}]]),linkedin:(0,r.default)("linkedin",[["path",{d:"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z",key:"c2jq9f"}],["rect",{width:"4",height:"12",x:"2",y:"9",key:"mk3on5"}],["circle",{cx:"4",cy:"4",r:"2",key:"bt5ra8"}]]),facebook:n,twitter:(0,r.default)("twitter",[["path",{d:"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z",key:"pff0z6"}]]),youtube:(0,r.default)("youtube",[["path",{d:"M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17",key:"1q2vi4"}],["path",{d:"m10 15 5-3-5-3z",key:"1jp15x"}]]),tiktok:t.ExternalLink,github:a,other:t.ExternalLink},i={instagram:"Instagram",linkedin:"LinkedIn",facebook:"Facebook",twitter:"X",youtube:"YouTube",tiktok:"TikTok",github:"GitHub"};function s(e,t){return t||i[e]||e}e.s(["socialIconMap",0,o,"socialLabel",()=>s],264942)},923421,862135,e=>{"use strict";e.s(["Header",()=>p],923421);var t=e.i(391398),r=e.i(191788),n=e.i(730943),a=e.i(41158),o=e.i(303115),i=e.i(198311),s=e.i(615927),c=e.i(264942),l=e.i(770534),u=e.i(386547),d=e.i(694451),d=d;function f({navigation:e,socialLinks:n}){let f,[m,p]=(0,r.useState)(!1),[h,y]=(0,r.useState)("navigation"),{hoveredImageAlt:g}=(0,r.useContext)(o.ImageAltContext),{actionButton:x,actionButtonHandlerRef:b}=(0,r.useContext)(o.ActionButtonContext),{actionContent:v}=(0,r.useContext)(o.MenuActionContentContext),{isFooterInView:j,setIsContactModalOpen:w}=(0,r.useContext)(o.FooterCTAContext),_=(0,r.useRef)(null),E=(0,r.useRef)(null),[R,S]=(0,r.useState)(!1);(0,r.useEffect)(()=>{let e=_.current;if(!e||m)return void S(!1);let t=g||"Menu",r=document.createElement("canvas").getContext("2d");if(r){let n=getComputedStyle(e);r.font=`${n.fontWeight} ${n.fontSize} ${n.fontFamily}`,S(r.measureText(t).width>e.clientWidth-16)}},[g,m,x]),(0,r.useEffect)(()=>(m?document.documentElement.style.overflow="hidden":document.documentElement.style.overflow="unset",()=>{document.documentElement.style.overflow="unset"}),[m]);let O=(0,r.useRef)(null),[P,C]=(0,r.useState)("none"),N=(0,r.useCallback)(()=>{let e=O.current;if(!e)return;let t=e.scrollTop>2,r=e.scrollTop+e.clientHeight<e.scrollHeight-2;t&&r?C("linear-gradient(to bottom, transparent, black 48px, black calc(100% - 48px), transparent)"):t?C("linear-gradient(to bottom, transparent, black 48px)"):r?C("linear-gradient(to bottom, black calc(100% - 48px), transparent)"):C("none")},[]);return(0,r.useEffect)(()=>{O.current&&(O.current.scrollTop=0),N()},[m,h,N]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"fixed bottom-0 left-0 right-0 h-64 pointer-events-none z-45 bottom-fade"}),(0,t.jsx)("div",{className:`menu-bar-colors fixed cursor-pointer bottom-0 left-[50%] translate-x-[-50%] z-50 mb
4-8 backdrop-blur-lg rounded-3xl transition-colors duration-300 ${m&&"action"===h?"bg-black/40":"bg-black/10"} ${m?"h-[calc(100dvh-64px)] md:w-[600px] w-[360px]":"h-12 md:w-[500px] w-[360px]"} ${j&&!m?"footer-active menu-pop":""}`}),j&&!m&&(0,t.jsx)("div",{className:"fixed bottom-0 left-[50%] translate-x-[-50%] z-46 mb-8 h-12 md:w-[500px] w-[360px] pointer-events-none",children:(0,t.jsx)(l.GlowBorder,{fillColor:"rgba(255,255,255,0.9)",children:(0,t.jsx)("div",{className:"h-12"})})}),(0,t.jsx)("div",{className:`fixed inset-0 z-40 transition-all duration-300 ease-out backdrop-blur-xs ${m?"opacity-100 pointer-events-auto cursor-pointer":"opacity-0 pointer-events-none"}`,onClick:()=>{m&&(p(!1),setTimeout(()=>y("navigation"),300))}}),(0,t.jsxs)("div",{onClick:()=>{m?(p(!1),setTimeout(()=>y("navigation"),300)):j?w(!0):p(!0)},className:` 5 menu-bar-colors fixed 6 bottom-0 7 left-[50%] 8 translate-x-[-50%] 9 border ${j&&!m?"border-transparent":"border-white/30"} 10 text-white 11 z-50 12 cursor-pointer 13 ${j&&!m?"footer-active-text menu-pop":""} 14 rounded-3xl 15 mb-8 16 ${m?"h-[calc(100dvh-64px)] md:w-[600px] w-[360px]":"h-12 md:w-[500px] w-[360px]"} 17 flex 18 flex-col 19 items-center 20 justify-between 21 overflow-hidden 22 `,children:[m?(0,t.jsxs)("div",{className:"flex flex-col items-center justify-between flex-1 min-h-0 w-full",children:[(0,t.jsx)(i.motion.div,{className:"relative h-8 w-auto flex items-center justify-center mt-6 shrink-0",animate:{opacity:1},initial:{opacity:0}
22,transition:{duration:.3,delay:.6,ease:"easeOut"},children:(0,t.jsx)(a.default,{href:"/",className:"",children:(0,t.jsxs)("p",{className:"relative w-auto font-bold text-3xl ",children:["WHP",(0,t.jsx)("span",{className:"hidden",children:"Creative - Where pixels meet purpose"})]})})}),(0,t.jsx)("div",{ref:O,onScroll:N,className:`flex-1 min-h-0 w-full text-center flex flex-col gap-4 overflow-y-auto [&::-webkit-scrollbar]:hidden [scrollbar-width:none] my-4 md:my-8 ${"action"===h?"justify-start":"justify-center"}`,style:{maskImage:"none"!==P?P:void 0,WebkitMaskImage:"none"!==P?P:void 0},children:"navigation"===h?(0,t.jsx)(s.Navigation,{items:e?.items,onLinkClick:()=>p(!1)}):(0,t.jsx)("div",{className:"w-full px-4 py-8 flex items-start justify-center",children:v})}),n&&n.length>0&&(0,t.jsx)(i.motion.div,{className:"flex items-center justify-center gap-4 pb-4",initial:{opacity:0},animate:{opacity:1},transition:{duration:.3,delay:.8,ease:"easeOut"},children:n.map((e,r)=>{let n=c.socialIconMap[e.platform]||d.default;return(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"opacity-50 hover:opacity-100 transition-opacity",onClick:e=>e.stopPropagation(),children:(0,t.jsx)(n,{className:"w-8 h-8"})},r)})})]}):(0,t.jsx)("div",{children:" "}),(0,t.jsxs)("div",{className:"h-12 shrink-0 w-full flex items-stretch justify-between pointer-events-none font-light text-sm ",children:[(0,t.jsx)(i.motion.div,{animate:"visible",initial:"hidden",exit:{y:-10},transition:{ease:"easeOut"},variants:{hidden:{opacity:0},visible:{opacity:1,transition:{staggerChildren:.05,delayChildren:0,ease:"easeOut"}}},ref:_,className:(0,u.cn)("overflow-hidden transition-all duration-300 ease-out",x&&!j?"string"==typeof x?"w-2/3":"w-[calc(100%-3rem)]":"w-full",m?"w-full":"",j&&!m?"font-bold":""),children:(f=m?"Close":j?"Get in touch":g||"Menu",R)?(0,t.jsx)("div",{className:"flex items-center h-full menu-marquee",children:(0,t.jsxs)("div",{ref:E,className:"flex whitespace-nowrap animate-marquee",children:[(0,t.jsx)("span",{className:"px-8",children:f}),(0,t.jsx)("span",{className:"px-8","aria-hidden":!0,children:f})]})}):(0,t.jsx)("div",{className:"flex items-center justify-center h-full",children:f.split(" ").map((e,r,n)=>(0,t.jsx)(i.motion.span,{variants:{hidden:{opacity:0,y:"Menu"===f?"-100%":"100%"},visible:{opacity:1,y:0,transition:{duration:.6}}},className:r<n.length-1?"mr-1":"",children:e},`${e}-${r}`))})},m?"close":j?"footer-cta":"menu"),(0,t.jsx)("div",{className:(0,u.cn)("backdrop-blur-2xl overflow-hidden relative transition-all duration-300 ease-out ",x&&!j?`opacity-100 bg-foreground
22/10 hover:bg-foreground/20 ${"string"==typeof x?"w-1/3":"w-12"}`:"w-0 opacity-0 bg-foreground",m?"w-0 opacity-0":""),children:(0,t.jsx)("div",{className:(0,u.cn)("border-l text-nowrap border-foreground/30 h-full flex items-center justify-center px-4 cursor-pointer pointer-events-auto absolute inset-0 transition-all duration-300 ease-out action-button ",x?"translate-x-0 opacity-100 ":"translate-x-full opacity-0",m?"translate-x-full opacity-0":""),onClick:e=>{e.stopPropagation(),v?(y("action"),p(!0)):b.current&&b.current()},children:x})})]})]})]})}var m=e.i(217837);function p({logo:e,navigation:s,socialLinks:c}){let{previousRoute:l}=(0,r.useContext)(o.PreviousRouteContext),u=(0,m.usePathname)(),[d,p]=(0,r.useState)(!1);(0,r.useEffect)(()=>p(!0),[]);let h=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("header",{className:"absolute top-0 z-50 w-full",children:(0,t.jsx)("div",{className:"absolute top-14 left-0 w-full z-20",children:(0,t.jsx)(i.motion.div,{className:"absolute inset-0",initial:u?.startsWith("/work")?{opacity:0,y:"-30px"}:{y:"0",opacity:1},animate:{y:"0",opacity:1},transition:{type:"spring",bounce:0,duration:.8,delay:.4*!!u?.startsWith("/work")},children:(0,t.jsx)("div",{className:"flex flex-col items-center justify-center ",children:(0,t.jsx)(a.default,{href:"/",className:"flex items-center space-x-2",children:(0,t.jsxs)("p",{className:"relative w-auto font-bold text-3xl siteLogo",children:["WHP",(0,t.jsx)("span",{className:"hidden",children:"Creative - Where pixels meet purpose"})]})})})},u)})}),s&&(0,t.jsx)(f,{navigation:s,socialLinks:c})]});return d?(0,n.createPortal)(h,document.body):h}var h=e.i(958678),y=e.i(203828),g=e.i(378263),x=e.i(377312);function b({title:e,seo:r,siteSettings:n,ogType:a="website",titleOnly:o=!1,locale:i="en_GB",breadcrumbs:s}){let c=(0,y.useRouter)(),l=r?.title||e||n?.title||"Home",u=r?.description||n?.seo?.description||"Welc
22ome to our website",d=n?.title||"Site name",f=r?.ogImage||n?.seo?.ogImage,m=r?.noIndex??!1,p=(n?.siteUrl||x.SITE_URL).replace(/\/+$/,""),b=c.asPath.split(/[?#]/)[0],v=`${p}${b}`,j=o||r?.title?l:`${l} - ${d}`;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(h.default,{children:[(0,t.jsx)("title",{children:j}),(0,t.jsx)("meta",{name:"description",content:u}),v&&(0,t.jsx)("link",{rel:"canonical",href:v}),(0,t.jsx)("meta",{property:"og:type",content:a}),(0,t.jsx)("meta",{property:"og:site_name",content:d}),(0,t.jsx)("meta",{property:"og:title",content:l}),(0,t.jsx)("meta",{property:"og:description",content:u}),(0,t.jsx)("meta",{property:"og:locale",content:i}),v&&(0,t.jsx)("meta",{property:"og:url",content:v}),f&&(0,t.jsx)("meta",{property:"og:image",content:f}),(0,t.jsx)("meta",{name:"twitter:card",content:f?"summary_large_image":"summary"}),(0,t.jsx)("meta",{name:"twitter:title",content:l}),(0,t.jsx)("meta",{name:"twitter:description",content:u}),f&&(0,t.jsx)("meta",{name:"twitter:image",content:f}),(0,t.jsx)("meta",{name:"robots",content:m?"noindex,nofollow":"index,follow"})]}),(0,t.jsx)(g.OrganizationSchema,{awards:n?.awards,socialLinks:n?.socialLinks}),"website"===a&&(0,t.jsx)(g.WebSiteSchema,{}),s&&s.length>0&&(0,t.jsx)(g.BreadcrumbSchema,{items:s})]})}e.s(["PageHead",()=>b],862135)},444234,e=>{"use strict";e.s(["HomeFooter",()=>d]);var t=e.i(391398),r=e.i(191788),n=e.i(41158),a=e.i(303115),o=e.i(897607),i=e.i(620882),s=e.i(264942);let c={hidden:{opacity:0,y:-100},visible:{opacity:1,y:0,transition:{delayChildren:.3,staggerChildren:.3}}},l={hidden:{},visible:{transition:{delayChildren:.6,staggerChildren:.3}}},u=[{label:"Work",href:"/work"},{label:"Services",href:"/services"},{label:"About",href:"/about"},{label:"Contact",href:"/contact"},{label:"FAQs",href:"/faq"},{label:"Hone",href:"/hone"},{label:"Play",href:"/play"}];function d(){let{setIsFooterInView:e}=(0,r.useContext)(a.FooterCTAContext),d=(0,r.useRef)(null),f=((0,i.useSiteSettings)().socialLinks||[]).filter(e=>e.url);return(0,r.useEffect)(()=>{let t=d.current;if(!t)return;let r=new IntersectionObserver(([t])=>e(t.isIntersecting),{threshold:.3});return r.observe(t),()=>{r.disconnect(),e(!1)}},[e]),(0,t.jsx)("div",{ref:d,id:"footer",className:"min-h-screen w-full flex items-center justify-center z-20",children:(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center gap-8 ",children:[(0,t.jsxs)("div",{className:"flex flex-row items-center justify-center text-4xl leading-tight",children:[(0,t.jsx)(o.AnimatedTextSplit,{content:"WHP",splitOn:" ",separator:" ",as:"p",containerVariants:c,amount:0,itemClassName:"inline-block font-bold text-3xl md:text-5xl me-2 pt-3 md:pt-[0.5rem]"}),(0,t.jsx)(o.AnimatedTextSplit,{content:"Work, Hone, Play.",splitOn:" ",separator:" ",as:"p",containerVariants:l,amount:1,itemClassName:"inline-block font-light text-2xl md:text-4xl"})]}),(0,t.jsx)(o.AnimatedTextSplit,{content:`\xa9 WHP Creative ${new Date().getFullYear()}`,splitOn:" ",separator:" ",containerVariants:{hidden:{},visible:{transition:{delayChildren:1.8,staggerChildren:.1}}},itemClassName:"inline-block font-light text-xs opacity-30",once:!1,amount:.3}),(0,t.jsx)("nav",{"aria-label":"Site",className:"flex flex-row flex-wrap items-center justify-center gap-x-3 gap-y-1 text-xs font-light opacity-30",children:u.map((e,r)=>(0,t.jsxs)("span",{className:"flex items-center gap-3",children:[r>0&&(0,t.jsx)("span",{"aria-hidden":"true",children:"·"}),(0,t.jsx)(n.default,{href:e.href,className:"hover:opacity-100 transition-opacity",children:e.label})]},e.href))}),f.length>0&&(0,t.jsx)("ul",{"aria-label":"WHP Creative on social media",className:"flex flex-row items-center justify-center gap-4",children:f.map(e=>{let r=s.socialIconMap[e.platform]||s.socialIconMap.other,n=(0,s.socialLabel)(e.platform,e.label);return(0,t.jsx)("li",{children:(0,t.jsx)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer","aria-label":`WHP Creative on ${n}`,title:n,className:"block opacity-30 hover:opacity-100 transition-opacity",children:(0,t.jsx)(r,{className:"w-5 h-5"})})},e.url)})}),(0,t.jsxs)("address",{className:"not-italic flex flex-row flex-wrap items-center justify-center gap-3 text-xs font-light opacity-30",children:[(0,t.jsx)("a",{href:"tel:+441908319034",className:"hover:opacity-100 transition-opacity",children:"01908 319034"}),(0,t.jsx)("span",{"aria-hidden":"true",children:"·"}),(0,t.jsx)("a",{href:"mailto:[email protected]",className:"hover:opacity-100 transition-opacity",children:"[email protected]"})]}),(0,t.jsxs)("div",{className:"flex flex-row items-center justify-center gap-3 text-xs font-light opacity-30",children:[(0,t.jsx)(n.default,{href:"/privacy",className:"hover:opacity-100 transition-opacity",children:"Privacy Policy"}),(0,t.jsx)("span",{"aria-hidden":"true",children:"·"}),(0,t.jsx)(n.default,{href:"/hone/terms",className:"hover:opacity-100 transition-opacity",children:"Terms"}),(0,t.jsx)("span",{"aria-hidden":"true",children:"·"}),(0,t.jsx)(n.default,{href:"/cookies",className:"hover:opacity-100 transition-opacity",children:"Cookies"})]})]})})}},755102,e=>{"use strict";
22e.s([]),e.i(81855),e.i(923421),e.i(862135),e.i(444234)},303115,e=>{"use strict";e.s(["ActionButtonContext",()=>R,"FooterCTAContext",()=>E,"HeaderNavigationContext",()=>P,"ImageAltContext",()=>_,"MenuActionContentContext",()=>S,"PreviousRouteContext",()=>O,"default",()=>C],303115);var t=e.i(350461),r=e.i(391398),n=e.i(958678),a=e.i(194182),o=e.i(203828),i=e.i(360808),s=e.i(191788),c=e.i(17760),l=e.i(722309),u=e.i(265752),d=e.i(276112),f=e.i(541146),m=e.i(244411),p=e.i(620882),h=e.i(774984),y=e.i(711759),g=e.i(236695);e.i(755102);var x=e.i(923421),b=e.i(444234),v=e.i(261576);e.i(994440);let j=(0,s.lazy)(()=>e.A(699255));function w(e){let t,n=(0,v.c)(2);return n[0]!==e?(t=(0,r.jsx)(s.Suspense,{fallback:null,children:(0,r.jsx)(j,{...e})}),n[0]=e,n[1]=t):t=n[1],t}let _=(0,s.createContext)({hoveredImageAlt:"",setHoveredImageAlt:e=>{}}),E=(0,s.createContext)({isFooterInView:!1,setIsFooterInView:e=>{},isContactModalOpen:!1,setIsContactModalOpen:e=>{}}),R=(0,s.createContext)({actionButton:null,setActionButton:e=>{},actionButtonHandlerRef:{current:null}}),S=(0,s.createContext)({actionContent:null,setActionContent:()=>{}}),O=(0,s.createContext)({previousRoute:""}),P=(0,s.createContext)({isNavigatingHome:!1,triggerHomeNavigation:()=>{}});function C({Component:v,pageProps:j}){let C=(0,o.useRouter)(),N=j.siteSettings||{},T=j.navigation||void 0,k=N?.analytics?.googleAnalyticsId||"G-ED5L131DEL",A=N?.analytics?.microsoftClarityId||t.default.env.NEXT_PUBLIC_CLARITY_ID,[D,M]=(0,s.useState)(""),[I,H]=(0,s.use
22State)(null),L=(0,s.useRef)(null),[$,U]=(0,s.useState)(""),[F,B]=(0,s.useState)(!1),[z,X]=(0,s.useState)(null),[W,q]=(0,s.useState)(!1),[G,Y]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let t=null;return(async()=>{try{let{gsap:r}=await e.A(941121),{ScrollTrigger:n}=await e.A(628517);r.registerPlugin(n),window.gsap=r,window.ScrollTrigger=n,t=()=>n.refresh(),window.addEventListener("load",t)}catch(e){console.warn("Failed to load scroll libraries:",e)}})(),()=>{t&&window.removeEventListener("load",t)}},[]),(0,s.useEffect)(()=>{"scrollRestoration"in window.history&&(window.history.scrollRestoration="manual")},[]),(0,s.useEffect)(()=>{let e=e=>{let t=window;t.gtag?.("event","page_view",{page_path:e,page_location:window.location.href,page_title:document.title})};return C.events.on("routeChangeComplete",e),()=>C.events.off("routeChangeComplete",e)},[C.events,k]),(0,s.useEffect)(()=>{let e=()=>{U(C.asPath),H(null),L.current=null,X(null),M("")};return C.events.on("routeChangeStart",e),()=>{C.events.off("routeChangeStart",e)}},[C.asPath,C.events]),(0,s.useEffect)(()=>{let e=e=>"/"===e.split(/[?#]/)[0],t=e=>{document.documentElement.style.scrollSnapType=e,document.body.style.scrollSnapType=e},r=0,n=n=>{r++,e(n)||t("none"),window.ScrollTrigger?.clearScrollMemory?.(),(0,y.debug)("snap","_app routeChangeStart â",n)},a=n=>{if(!e(n)){t("none"),(0,y.debug)("snap","_app routeChangeComplete â",n);return}(0,u.bumpHomeVisit)();let a=++r,o=()=>{window.scrollTo(0,0),document.documentElement.scrollTop=0,document.body.scrollTop=0},i=0,s=0,c=()=>{if(r===a){if(!document.querySelector(".home-video-wrapper"))return void(i++<100?requestAnimationFrame(c):(0,y.debug)("snap","PIN: gave up waiting for hero"));t("none"),o(),s++<8?requestAnimationFrame(c):(setTimeout(()=>r===a&&o(),250),setTimeout(()=>r===a&&o(),500),(0,y.debug)("snap",`PIN done (waited ${i}f), scrollY=${Math.round(window.scrollY)}`))}};requestAnimationFrame(c)};return C.events.on("routeChangeStart",n),C.events.on("routeChangeComplete",a),()=>{C.events.off("routeChangeStart",n),C.events.off("routeChangeComplete",a)}},[C.events]);let V=N?.brandColors,K=V?{"--color-primary":V.primary?.hex||"#0070f3","--color-secondary":V.secondary?.hex||"#7c3aed","--color-accent":V.accent?.hex||"#f59e0b","--color-muted":V.muted?.hex||"#6b7280"}:{},Q=j.preview;return C.pathname?.startsWith("/studio")?(0,r.jsx)(v,{...j}):C.pathname?.startsWith("/review")||C.pathname?.startsWith("/brand")?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.default,{children:(0,r.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"})}),(0,r.jsxs)("div",{className:"font-mori antialiased bg-background min-h-screen",style:K,children:[(0,r.jsx)(v,{...j}),(0,r.jsx)(b.HomeFooter,{})]})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.default,{children:(0,r.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"})}),k&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.default,{id:"ga-src",src:`https://www.googletagmanager.com/gtag/js?id=${k}`,strategy:"afterInteractive"}),(0,r.jsx)(a.default,{id:"ga-init",strategy:"afterInteractive",children:` 23 window.dataLayer = window.dataLayer || []; 24 function gtag(){dataLayer.push(arguments);} 25 window.gtag = gtag; 26 gtag('consent', 'default', { 27 ad_storage: 'denied', 28 ad_user_data: 'denied', 29 ad_personalization: 'denied', 30 analytics_storage: 'denied' 31 }); 32 try { 33 if (localStorage.getItem('whp-cookie-consent') === 'granted') { 34 gtag('consent', 'update', { analytics_storage: 'granted' }); 35 } 36 } catch (e) {} 37 gtag('js', new Date()); 38 gtag('config', '${k}', { anonymize_ip: true }); 39 `})]}),(0,r.jsx)("div",{className:"font-mori antialiased bg-background",style:K,children:(0,r.jsxs)(c.RouteProvider,{children:[(0,r.jsx)(O.Provider,{value:{previousRoute:$},children:(0,r.jsx)(P.Provider,{value:{isNavigatingHome:F,triggerHomeNavigation:()=>{C.push("/")}},children:(0,r.jsx)(S.Provider,{value:{actionContent:z,setActionContent:X}
39,children:(0,r.jsx)(R.Provider,{value:{actionButton:I,setActionButton:H,actionButtonHandlerRef:L},children:(0,r.jsx)(E.Provider,{value:{isFooterInView:W,setIsFooterInView:q,isContactModalOpen:G,setIsContactModalOpen:Y},children:(0,r.jsx)(_.Provider,{value:{hoveredImageAlt:D,setHoveredImageAlt:M},children:(0,r.jsx)(p.SiteSettingsProvider,{value:N,children:(0,r.jsxs)(m.FormPopupProvider,{children:[(0,r.jsx)(x.Header,{logo:N?.logo,navigation:T,socialLinks:N?.socialLinks}),(0,r.jsx)("div",{"data-page-content":!0,children:(0,r.jsx)(h.PageTransition,{children:(0,r.jsx)(v,{...j})})}),(0,r.jsx)(l.TransitionOverlay,{}),(0,r.jsx)(d.ContactModal,{}),(0,r.jsx)(f.FormPopup,{}),(0,r.jsx)(i.CookieConsent,{clarityId:A})]})})})})})})})}),Q&&(0,r.jsx)(g.PreviewBanner,{}),Q&&(0,r.jsx)(w,{zIndex:999999,refresh:async e=>{"mutation"===e.source&&await C.replace(C.asPath)}})]})})]})}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.